From eb5837fe9f6685aeb414d780f138f604b75766b2 Mon Sep 17 00:00:00 2001 From: disconcision Date: Fri, 25 Aug 2023 18:25:17 -0400 Subject: [PATCH 01/22] Revert "delete llm and auto changes to make a PR specifically for TyDi + deps" This reverts commit 1d0beec92aa8ab9d6ca44aab231ba5e938f5a88e. --- src/haz3lcore/Hyper.re | 10 + src/haz3lcore/dynamics/Builtins.re | 50 +- src/haz3lcore/dynamics/Elaborator.re | 43 +- src/haz3lcore/dynamics/Evaluator.re | 3 +- src/haz3lcore/dynamics/TestMap.re | 4 +- src/haz3lcore/lang/Form.re | 29 +- src/haz3lcore/lang/Molds.re | 63 +- src/haz3lcore/prog/ModelResults.re | 11 +- src/haz3lcore/statics/Info.re | 13 +- src/haz3lcore/statics/MakeTerm.re | 1 + src/haz3lcore/statics/Statics.re | 12 + src/haz3lcore/statics/TermBase.re | 146 + src/haz3lcore/statics/TypBase.re | 24 + src/haz3lcore/zipper/Zipper.re | 50 +- src/haz3lcore/zipper/action/Action.re | 11 +- src/haz3lcore/zipper/action/Perform.re | 12 +- src/haz3lschool/Exercise.re | 8 +- src/haz3lweb/Auto.re | 187 + src/haz3lweb/Editors.re | 107 +- src/haz3lweb/Init.ml | 28168 +++++++++------- src/haz3lweb/Keyboard.re | 25 +- src/haz3lweb/Log.re | 2 + src/haz3lweb/Main.re | 12 +- src/haz3lweb/Model.re | 9 +- src/haz3lweb/ProgramEvaluator.re | 5 +- src/haz3lweb/Scripter.re | 69 + src/haz3lweb/Update.re | 36 +- src/haz3lweb/UpdateAction.re | 15 +- src/haz3lweb/UpdateAuto.re | 163 + src/haz3lweb/util/API/API.re | 98 + src/haz3lweb/util/API/OpenAI.re | 217 + src/haz3lweb/util/API/WeatherAPI.re | 27 + src/haz3lweb/view/Cell.re | 45 +- src/haz3lweb/view/Code.re | 5 +- src/haz3lweb/view/CursorInspector.re | 12 + src/haz3lweb/view/Deco.re | 29 +- src/haz3lweb/view/ExerciseMode.re | 10 +- src/haz3lweb/view/MVU.re | 372 + src/haz3lweb/view/Page.re | 4 +- src/haz3lweb/view/ScratchMode.re | 2 + src/haz3lweb/view/TestView.re | 2 +- src/haz3lweb/view/assistant/ChatLSP.re | 202 + src/haz3lweb/view/assistant/Filler.re | 368 + src/haz3lweb/view/assistant/FillerOptions.re | 20 + src/haz3lweb/view/assistant/Oracle.re | 41 + .../view/assistant/UpdateAssistant.re | 115 + src/haz3lweb/view/dec/PieceDec.re | 4 +- src/haz3lweb/www/style.css | 46 + 48 files changed, 19105 insertions(+), 11802 deletions(-) create mode 100644 src/haz3lcore/Hyper.re create mode 100644 src/haz3lweb/Auto.re create mode 100644 src/haz3lweb/Scripter.re create mode 100644 src/haz3lweb/UpdateAuto.re create mode 100644 src/haz3lweb/util/API/API.re create mode 100644 src/haz3lweb/util/API/OpenAI.re create mode 100644 src/haz3lweb/util/API/WeatherAPI.re create mode 100644 src/haz3lweb/view/MVU.re create mode 100644 src/haz3lweb/view/assistant/ChatLSP.re create mode 100644 src/haz3lweb/view/assistant/Filler.re create mode 100644 src/haz3lweb/view/assistant/FillerOptions.re create mode 100644 src/haz3lweb/view/assistant/Oracle.re diff --git a/src/haz3lcore/Hyper.re b/src/haz3lcore/Hyper.re new file mode 100644 index 0000000000..5aa1e1861c --- /dev/null +++ b/src/haz3lcore/Hyper.re @@ -0,0 +1,10 @@ +let export_id = + "10000137-0000-0000-0000-000000000000" |> Uuidm.of_string |> Option.get; + +//let export_slide = 1; +let export_str = "EXPORT"; +let _is_export = (==)(export_str); +let regexp = (r, s) => + Js_of_ocaml.Regexp.string_match(Js_of_ocaml.Regexp.regexp(r), s, 0) + |> Option.is_some; +let is_export = regexp("^EXPORT$"); diff --git a/src/haz3lcore/dynamics/Builtins.re b/src/haz3lcore/dynamics/Builtins.re index 85bda5dbe1..30fe6ac080 100644 --- a/src/haz3lcore/dynamics/Builtins.re +++ b/src/haz3lcore/dynamics/Builtins.re @@ -276,12 +276,52 @@ module Pervasives = { |> fn("string_sub", Arrow(Prod([String, Int, Int]), String), string_sub); }; +let styles: Typ.sum_map = + [ + ("AlignItems", Some(Typ.String)), + ("BackgroundColor", Some(String)), + ("Border", Some(String)), + ("BorderRadius", Some(String)), + ("BoxShadow", Some(String)), + ("Color", Some(String)), + ("Cursor", Some(String)), + ("Display", Some(String)), + ("FlexDirection", Some(String)), + ("FontFamily", Some(String)), + ("FontSize", Some(String)), + ("FontStyle", Some(String)), + ("Gap", Some(String)), + ("Height", Some(String)), + ("JustifyContent", Some(String)), + ("Margin", Some(String)), + ("Opacity", Some(String)), + ("Outline", Some(String)), + ("Overflow", Some(String)), + ("Padding", Some(String)), + ("Position", Some(String)), + ("Width", Some(String)), + ("S", Some(Prod([String, String]))), + ] + |> ConstructorMap.of_list; + +let add_alias = (name, ty, ctx: Ctx.t) => + Ctx.extend_alias(ctx, name, Id.invalid, ty); + +let add_constructors = (name, sum_map: Typ.sum_map, ctx: Ctx.t) => + Ctx.add_ctrs(ctx, name, Id.invalid, sum_map); + +let add_sum_alias = (name: string, sum_map: Typ.sum_map, ctx: Ctx.t) => + ctx |> add_alias(name, Sum(sum_map)) |> add_constructors(name, sum_map); + +let mvu_builtins: Ctx.t = add_sum_alias("StyleAttr", styles, []); + let ctx_init: Ctx.t = - List.map( - ((name, Builtin.{typ, _})) => - Ctx.VarEntry({name, typ, id: Id.invalid}), - Pervasives.builtins, - ); + mvu_builtins + @ List.map( + ((name, Builtin.{typ, _})) => + Ctx.VarEntry({name, typ, id: Id.invalid}), + Pervasives.builtins, + ); let forms_init: forms = List.map( diff --git a/src/haz3lcore/dynamics/Elaborator.re b/src/haz3lcore/dynamics/Elaborator.re index b12403d0b6..d2a61f6b61 100644 --- a/src/haz3lcore/dynamics/Elaborator.re +++ b/src/haz3lcore/dynamics/Elaborator.re @@ -126,10 +126,20 @@ let rec dhexp_of_uexp = | Invalid(t) => Some(DHExp.InvalidText(id, 0, t)) | EmptyHole => Some(DHExp.EmptyHole(id, 0)) | MultiHole(_tms) => + let+ ds = + _tms + |> List.map( + fun + | Term.Exp(t) => dhexp_of_uexp(m, t) + | _ => Some(EmptyHole(id, 0)), + ) + |> OptUtil.sequence; + //TODO(andrew): turning this into tuples for now; yolo /* TODO: add a dhexp case and eval logic for multiholes. Make sure new dhexp form is properly considered Indet to avoid casting issues. */ - Some(EmptyHole(id, 0)) + //Some(EmptyHole(id, 0)) + DHExp.Tuple(ds); | Triv => Some(Tuple([])) | Bool(b) => Some(BoolLit(b)) | Int(n) => Some(IntLit(n)) @@ -192,6 +202,8 @@ let rec dhexp_of_uexp = } | Constructor(name) => switch (err_status) { + | _ when Hyper.is_export(name) => + Some(DHExp.Ap(TestLit(Hyper.export_id), Tuple([]))) | InHole(Common(NoType(FreeConstructor(_)))) => Some(FreeVar(id, 0, name)) | _ => Some(Constructor(name)) @@ -274,8 +286,18 @@ let rec dhexp_of_uexp = | TyAlias(_, _, e) => dhexp_of_uexp(m, e) }; wrap(ctx, id, mode, self, d); - | Some(InfoPat(_) | InfoTyp(_) | InfoTPat(_)) - | None => None + | Some((InfoPat(_) | InfoTyp(_) | InfoTPat(_)) as ci) => + Printf.printf( + "Elaborate: Exp: Infomap returned wrong sort: %s\n", + ci |> Info.show, + ); + None; + | None => + Printf.printf( + "Elaborate: Exp: Infomap lookup failed for: %s\n", + Id.to_string(Term.UExp.rep_id(uexp)), + ); + None; }; } and dhpat_of_upat = (m: Statics.Map.t, upat: Term.UPat.t): option(DHPat.t) => { @@ -332,18 +354,23 @@ and dhpat_of_upat = (m: Statics.Map.t, upat: Term.UPat.t): option(DHPat.t) => { let* dp = dhpat_of_upat(m, p); wrap(dp); }; - | Some(InfoExp(_) | InfoTyp(_) | InfoTPat(_)) - | None => None + | Some((InfoExp(_) | InfoTyp(_) | InfoTPat(_)) as ci) => + print_endline("Elaborate: Pat: Infomap returned wrong sort:"); + print_endline(ci |> Info.show); + None; + | None => + print_endline( + "Elaborate: Pat: Infomap lookup failed; id: " + ++ Id.to_string(Term.UPat.rep_id(upat)), + ); + None; }; }; -//let dhexp_of_uexp = Core.Memo.general(~cache_size_bound=1000, dhexp_of_uexp); - let uexp_elab = (m: Statics.Map.t, uexp: Term.UExp.t): ElaborationResult.t => switch (dhexp_of_uexp(m, uexp)) { | None => DoesNotElaborate | Some(d) => - //let d = uexp_elab_wrap_builtins(d); let ty = switch (fixed_exp_typ(m, uexp)) { | Some(ty) => ty diff --git a/src/haz3lcore/dynamics/Evaluator.re b/src/haz3lcore/dynamics/Evaluator.re index 529ca04260..1ae3cb970e 100644 --- a/src/haz3lcore/dynamics/Evaluator.re +++ b/src/haz3lcore/dynamics/Evaluator.re @@ -1244,7 +1244,8 @@ and evaluate_test = | _ => Indet }; - let* _ = add_test(n, (arg_show, test_status)); + let* _ = + add_test(n, (arg_show, test_status, ClosureEnvironment.map_of(env))); let r: EvaluatorResult.t = switch (arg_result) { | BoxedValue(BoolLit(_)) => BoxedValue(Tuple([])) diff --git a/src/haz3lcore/dynamics/TestMap.re b/src/haz3lcore/dynamics/TestMap.re index 0a77e62d21..5e5784cc02 100644 --- a/src/haz3lcore/dynamics/TestMap.re +++ b/src/haz3lcore/dynamics/TestMap.re @@ -2,10 +2,10 @@ open Sexplib.Std; /* FIXME: Make more obvious names. */ [@deriving (show({with_path: false}), sexp, yojson)] -type instance_report = (DHExp.t, TestStatus.t); +type instance_report = (DHExp.t, TestStatus.t, Environment.t); let joint_status: list(instance_report) => TestStatus.t = - reports => TestStatus.join_all(List.map(snd, reports)); + reports => TestStatus.join_all(List.map(((_, x, _)) => x, reports)); [@deriving (show({with_path: false}), sexp, yojson)] type report = (KeywordID.t, list(instance_report)); diff --git a/src/haz3lcore/lang/Form.re b/src/haz3lcore/lang/Form.re index ae61aa66f7..fb53904bd8 100644 --- a/src/haz3lcore/lang/Form.re +++ b/src/haz3lcore/lang/Form.re @@ -112,15 +112,30 @@ let is_keyword = regexp("^(" ++ String.concat("|", keywords) ++ ")$"); let is_reserved_keyword = regexp("^(" ++ String.concat("|", reserved_keywords) ++ ")$"); +//let partial_symbolic_delims = ["\\[", "\\]", "\\(", "\\)", "|"]; +//let exceptional_symbol_delims = ["=", "=>", "->"]; + +/* + TODO(andrew): weird examples + insert '=' in 'let a><|!true' (get bad op '=!') + insert '-' in 1+|1 (get bad op '+-') + should we allow '=>' or '->' or '|' inside operators? currently implictly yes + */ + /* Potential tokens: These are fallthrough classes which determine - * the behavior when inserting a character in contact with a token */ + * the behavior when inserting a character in contact with a token; + * should the character be appended to an existing token or create + * a new one? Basically if there is no other mold, we + * TODO(andrew): finish description + TODO(andrew): ? below is temporary addition to allow ? as explicit hole + */ let is_potential_operand = regexp("^[a-zA-Z0-9_'\\.?]+$"); /* Anything else is considered a potential operator, as long * as it does not contain any whitespace, linebreaks, comment * delimiters, string delimiters, or the instant expanding paired * delimiters: ()[]| */ let is_potential_operator = - regexp("^[^a-zA-Z0-9_'?\"#⏎\\s|\\[\\]\\(\\)]+$"); + regexp("^[^a-zA-Z0-9_'\\.?\"#⏎\\s|\\[\\]\\(\\)]+$"); let is_potential_token = t => is_potential_operand(t) || is_potential_operator(t) @@ -178,6 +193,11 @@ let tuple_lbl = [tuple_start, tuple_end]; let empty_tuple = tuple_start ++ tuple_end; let is_empty_tuple = (==)(empty_tuple); +/* TODO(andrew): docuement */ +let is_filler_prompt = regexp("^\\?\\?$"); +let is_oracle_prompt = regexp("^\".*\\?\\?\"$"); +let is_prompt = str => is_filler_prompt(str) || is_oracle_prompt(str); + /* These functions determine which forms can switch back and forth between mono and duotile forms, like list literals and tuples switching to/from the empty list and empty tuple. Technically this should be derivable from @@ -201,7 +221,8 @@ let const_mono_delims = base_typs @ bools @ [wild, empty_list, empty_tuple, empty_string]; let explicit_hole = "?"; -let is_explicit_hole = t => t == explicit_hole; +let expliciter_hole = "??"; +let is_explicit_hole = t => t == explicit_hole || t == expliciter_hole; let bad_token_cls: string => bad_token_cls = t => switch () { @@ -213,6 +234,7 @@ let bad_token_cls: string => bad_token_cls = Order in this list determines relative remolding priority for forms with overlapping regexps */ let atomic_forms: list((string, (string => bool, list(Mold.t)))) = [ + ("export", (Hyper.is_export, [mk_op(Exp, [])])), ("var", (is_var, [mk_op(Exp, []), mk_op(Pat, [])])), ( "explicit_hole", @@ -333,6 +355,7 @@ let is_atomic = t => atomic_molds(t) != []; let is_delim = t => List.mem(t, delims); let is_valid_token = t => is_atomic(t) || is_secondary(t) || is_delim(t); +let is_valid_nonpoly_token = t => is_valid_token(t) && t != "="; let mk_atomic = (sort: Sort.t, t: Token.t) => { assert(is_atomic(t)); diff --git a/src/haz3lcore/lang/Molds.re b/src/haz3lcore/lang/Molds.re index 8dd7a114ba..b19bece388 100644 --- a/src/haz3lcore/lang/Molds.re +++ b/src/haz3lcore/lang/Molds.re @@ -113,14 +113,71 @@ let instant_expansion: Token.t => (list(Token.t), Direction.t) = let is_delayed = kw => List.length(delayed_expansion(kw) |> fst) > 1; +/* + + TODO(andrew): cleanup + + Maybe more advanced token allow logic: + + Goal: Try to preserve the prefix-validity of tokens as much as possible + when inserting/deleting characters, but allow the creation of prefix- + invalid tokens as a fallthrough. Always be willing to split on insert + to maintain prefix-validity, but allow the creation of prefix-invalid + tokens for deletes which would otherwise be no-ops. + + Or: if insert/delete results in a thing which is no longer a prefix + of a valid token, then we split it into the largest prefix of + a valid token and up to two more tokens; if there are two, one is + a single character (doesn't quite work for delete; we can't guarantee + the existence of such a split eg if lang consists of single "yo", deleting + the "y" leaves no possible prefixes) + + for this to be nice if we could establish that the split + must always occur at the caret; otherwise it might be confusing. + + precondition: caret is either inside a token, or between two tokens + any tokens are prefix-valid + + insert between case: attempt to append to left, then the right, otherwise new + (so everything always prefix-valid) + + insert inside case: attempt to insert. otherwise go to between case + (so everything always prefix-valid) + delete from right: can't effect prefix-validity + delete from left/inside: ??? allow create prefix-invalid ??? + delete-merge (when delete an intervening seg, pushing two tokens together): + if the result is a valid token, great; otherwise ??? allow create prefix-invalid ??? + + + */ + +//let is_instant = kw => List.length(instant_expansion(kw) |> fst) > 1; + +//let append_safe = char => +// !is_instant(char) +// && !Form.is_secondary(char) +// && !(Form.is_string_delim(char) || Form.is_comment_delim(char)); + let allow_merge = (l: Token.t, r: Token.t): bool => Form.is_potential_token(l ++ r); +// Form.is_valid_token(l ++ r) +// || !(Form.is_valid_token(l) && Form.is_valid_token(r)); +// alternatively, require l++r is valid (simpler, more restrictiive) let allow_append_right = (t: Token.t, char: string): bool => - Form.is_potential_token(t ++ char); + Form.is_potential_token(t ++ char); //&& append_safe(char); +/* + Form.is_valid_token(t ++ char) + || ( + !Form.is_valid_token(t ++ char) + && !(Form.is_valid_token(t) && Form.is_valid_token(char)) + ) && append_safe(char)*/ let allow_append_left = (char: string, t: Token.t): bool => - Form.is_potential_token(t ++ char); + Form.is_potential_token(t ++ char); // && append_safe(char); +// Form.is_valid_token(char ++ t) +// || (!Form.is_valid_token(t) && !Form.is_valid_token(char)) && append_safe(char) let allow_insertion = (_char: string, _t: Token.t, new_t: Token.t): bool => - Form.is_potential_token(new_t); + Form.is_potential_token(new_t); // && append_safe(char); +// Form.is_valid_token(new_t) || !Form.is_valid_token(t) && append_safe(char); diff --git a/src/haz3lcore/prog/ModelResults.re b/src/haz3lcore/prog/ModelResults.re index ddcb7514f4..c5b602d2cc 100644 --- a/src/haz3lcore/prog/ModelResults.re +++ b/src/haz3lcore/prog/ModelResults.re @@ -19,15 +19,10 @@ include M; [@deriving (show({with_path: false}), sexp, yojson)] type t = M.t(ModelResult.t); -let init = (~settings, ds: list((Key.t, DHExp.t))): t => +let init = (~settings, ds: list((Key.t, DHExp.t, Environment.t))): t => ds - |> List.map(((key, d)) => - ( - key, - ModelResult.init( - Interface.evaluate(~settings, ~env=Builtins.env_init, d), - ), - ) + |> List.map(((key, d, env)) => + (key, ModelResult.init(Interface.evaluate(~settings, ~env, d))) ) |> List.to_seq |> of_seq; diff --git a/src/haz3lcore/statics/Info.re b/src/haz3lcore/statics/Info.re index 7ddb1a80b1..5397e2c5a5 100644 --- a/src/haz3lcore/statics/Info.re +++ b/src/haz3lcore/statics/Info.re @@ -48,9 +48,9 @@ type error_inconsistent = [@deriving (show({with_path: false}), sexp, yojson)] type error_no_type = + | MultiError /* Invalid expression token, treated as hole */ | BadToken(Token.t) - /* Empty application of function with inconsistent type */ | BadTrivAp(Typ.t) /* Sum constructor neiter bound nor in ana type */ | FreeConstructor(Constructor.t); @@ -268,6 +268,13 @@ let ancestors_of: t => ancestors = | InfoTyp({ancestors, _}) | InfoTPat({ancestors, _}) => ancestors; +let term_string_of: t => string = + fun + | InfoExp({term, _}) => UExp.to_string(term) + | InfoPat({term, _}) => UPat.to_string(term) + | InfoTyp({term, _}) => UTyp.to_string(term) + | InfoTPat({term, _}) => UTPat.to_string(term); + let error_of: t => option(error) = fun | InfoExp({status: NotInHole(_), _}) @@ -312,7 +319,9 @@ let rec status_common = } | (BadToken(name), _) => InHole(NoType(BadToken(name))) | (BadTrivAp(ty), _) => InHole(NoType(BadTrivAp(ty))) - | (IsMulti, _) => NotInHole(Syn(Unknown(Internal))) + | (IsMulti, _) => + // TODO(andrew): making these errors for now for llm purposes + InHole(NoType(MultiError)) | (NoJoin(wrap, tys), Ana(ana)) => let syn: Typ.t = Self.join_of(wrap, Unknown(Internal)); switch (Typ.join_fix(ctx, ana, syn)) { diff --git a/src/haz3lcore/statics/MakeTerm.re b/src/haz3lcore/statics/MakeTerm.re index 962cb31d5f..90175e8c32 100644 --- a/src/haz3lcore/statics/MakeTerm.re +++ b/src/haz3lcore/statics/MakeTerm.re @@ -149,6 +149,7 @@ and exp_term: unsorted => (UExp.term, list(Id.t)) = { // single-tile case | ([(_id, t)], []) => switch (t) { + | ([t], []) when Hyper.is_export(t) => ret(Constructor(t)) | ([t], []) when Form.is_empty_tuple(t) => ret(Triv) | ([t], []) when Form.is_empty_list(t) => ret(ListLit([])) | ([t], []) when Form.is_bool(t) => ret(Bool(bool_of_string(t))) diff --git a/src/haz3lcore/statics/Statics.re b/src/haz3lcore/statics/Statics.re index 5377ba5128..5d41b73a9b 100644 --- a/src/haz3lcore/statics/Statics.re +++ b/src/haz3lcore/statics/Statics.re @@ -234,6 +234,18 @@ and uexp_to_info_map = let (e1, m) = go(~mode=Syn, e1, m); let (e2, m) = go(~mode, e2, m); add(~self=Just(e2.ty), ~co_ctx=CoCtx.union([e1.co_ctx, e2.co_ctx]), m); + | Constructor(ctr) when Hyper.is_export(ctr) => + //TODO(andrew): hack + let info = + Info.derived_exp( + ~uexp, + ~ctx, + ~mode, + ~ancestors, + ~self=Common(Self.of_ctr(ctx, ctr)), + ~co_ctx=[], + ); + (info, add_info([Hyper.export_id] @ ids, InfoExp(info), m)); | Constructor(ctr) => atomic(Self.of_ctr(ctx, ctr)) | Ap(fn, arg) => let fn_mode = Mode.of_ap(ctx, mode, UExp.ctr_name(fn)); diff --git a/src/haz3lcore/statics/TermBase.re b/src/haz3lcore/statics/TermBase.re index ee0280b17c..5c3a1d8aee 100644 --- a/src/haz3lcore/statics/TermBase.re +++ b/src/haz3lcore/statics/TermBase.re @@ -14,6 +14,7 @@ module rec Any: { let is_exp: t => option(UExp.t); let is_pat: t => option(UPat.t); let is_typ: t => option(UTyp.t); + let to_string: t => string; } = { [@deriving (show({with_path: false}), sexp, yojson)] type t = @@ -37,6 +38,17 @@ module rec Any: { fun | Typ(t) => Some(t) | _ => None; + + let to_string = (a: t) => + switch (a) { + | Exp(e) => UExp.to_string(e) + | Pat(p) => UPat.to_string(p) + | Typ(t) => UTyp.to_string(t) + | TPat(tp) => UTPat.to_string(tp) + | Rul(_) => "Rul" + | Nul(_) => "Nul" + | Any(_) => "Any" + }; } and UExp: { [@deriving (show({with_path: false}), sexp, yojson)] @@ -130,6 +142,7 @@ and UExp: { term, }; + let to_string: t => string; let bool_op_to_string: op_bin_bool => string; let int_op_to_string: op_bin_int => string; let float_op_to_string: op_bin_float => string; @@ -271,6 +284,76 @@ and UExp: { | Equals => "$==" }; }; + + let bin_op_to_string = (op: op_bin): string => { + switch (op) { + | Int(op) => int_op_to_string(op) + | Float(op) => float_op_to_string(op) + | Bool(op) => bool_op_to_string(op) + | String(op) => string_op_to_string(op) + }; + }; + + let un_op_to_string = (op: op_un): string => { + switch (op) { + | Int(Minus) => "-" + | Bool(Not) => "!" + }; + }; + + let rec to_string = (e: t): string => { + let s = to_string; + switch (e.term) { + | MultiHole(es) => es |> List.map(Any.to_string) |> String.concat(" ") + | EmptyHole => "?" + | Triv => "()" + | Bool(b) => b ? "true" : "false" + | Invalid(token) + | String(token) + | Var(token) + | Constructor(token) => token + | Int(i) => string_of_int(i) + | Float(f) => string_of_float(f) + | ListLit(es) => es |> List.map(s) |> String.concat(", ") + | Fun(p, e) => + Printf.sprintf("fun %s ->\n %s", UPat.to_string(p), s(e)) + | Tuple(es) => es |> List.map(s) |> String.concat(", ") + | Let(p, e1, e2) => + Printf.sprintf( + "let %s = %s in\n %s", + UPat.to_string(p), + s(e1), + s(e2), + ) + | TyAlias(p, t, e) => + Printf.sprintf( + "type %s = %s in\n %s", + UTPat.to_string(p), + UTyp.to_string(t), + s(e), + ) + | Ap(e1, e2) => s(e1) ++ "(" ++ s(e2) ++ ")" + | If(e1, e2, e3) => + //TODO: linebreaks if over threshold + Printf.sprintf("if %s then %s else %s", s(e1), s(e2), s(e3)) + | Seq(e1, e2) => Printf.sprintf("%s; %s", s(e1), s(e2)) + | Test(e) => Printf.sprintf("test %s end", s(e)) + | Parens(e) => Printf.sprintf("(%s)", s(e)) + | Cons(e1, e2) => Printf.sprintf("%s :: %s", s(e1), s(e2)) + | ListConcat(e1, e2) => Printf.sprintf("%s @ %s", s(e1), s(e2)) + | UnOp(op, e) => un_op_to_string(op) ++ s(e) + | BinOp(op, e1, e2) => + s(e1) ++ " " ++ bin_op_to_string(op) ++ " " ++ s(e2) + | Match(e, rules) => + let rule_to_string = + List.map(((p, e)) => "| " ++ UPat.to_string(p) ++ " => " ++ s(e)); + Printf.sprintf( + "case %s\n %s\nend", + s(e), + rules |> rule_to_string |> String.concat("\n"), + ); + }; + }; } and UPat: { [@deriving (show({with_path: false}), sexp, yojson)] @@ -296,6 +379,7 @@ and UPat: { ids: list(Id.t), term, }; + let to_string: t => string; } = { [@deriving (show({with_path: false}), sexp, yojson)] type term = @@ -320,6 +404,29 @@ and UPat: { ids: list(Id.t), term, }; + let rec to_string = (p: t): string => { + let s = to_string; + switch (p.term) { + | MultiHole(holes) => + holes |> List.map(Any.to_string) |> String.concat(" ") + | EmptyHole => "?" + | Wild => "_" + | Triv => "()" + | Invalid(token) + | Constructor(token) + | Var(token) => token + | String(token) => Form.string_quote(token) + | Int(i) => string_of_int(i) + | Float(f) => string_of_float(f) + | Bool(b) => string_of_bool(b) + | Parens(p) => "(" ++ s(p) ++ ")" + | Ap(p1, p2) => s(p1) ++ "(" ++ s(p2) ++ ")" + | Cons(p1, p2) => s(p1) ++ " :: " ++ s(p2) + | TypeAnn(p, t) => s(p) ++ " : " ++ UTyp.to_string(t) + | Tuple(ps) => "(" ++ (ps |> List.map(s) |> String.concat(", ")) ++ ")" + | ListLit(ps) => "[" ++ (ps |> List.map(s) |> String.concat(", ")) ++ "]" + }; + }; } and UTyp: { [@deriving (show({with_path: false}), sexp, yojson)] @@ -346,6 +453,7 @@ and UTyp: { ids: list(Id.t), term, }; + let to_string: t => string; } = { [@deriving (show({with_path: false}), sexp, yojson)] type term = @@ -371,6 +479,35 @@ and UTyp: { ids: list(Id.t), term, }; + + let rec to_string = (t: t): string => { + let s = to_string; + switch (t.term) { + | MultiHole(tms) => List.map(Any.to_string, tms) |> String.concat(" ") + | EmptyHole => "?" + | Int => "Int" + | Float => "Float" + | Bool => "Bool" + | String => "String" + | Invalid(token) + | Var(token) + | Constructor(token) => token + | Parens(t) => "(" ++ s(t) ++ ")" + | List(t) => "[" ++ s(t) ++ "]" + | Ap(t1, t2) => s(t1) ++ "(" ++ s(t2) ++ ")" + | Arrow(t1, t2) => "(" ++ s(t1) ++ " -> " ++ s(t2) ++ ")" + | Tuple(ts) => "(" ++ (List.map(s, ts) |> String.concat(", ")) ++ ")" + | Sum(ts) => + "(" ++ (List.map(to_string_variant, ts) |> String.concat(" + ")) ++ ")" + }; + } + and to_string_variant = (v: variant): string => { + switch (v) { + | Variant(ctr, _, None) => ctr + | Variant(ctr, _, Some(t)) => ctr ++ "(" ++ to_string(t) ++ ")" + | BadEntry(t) => to_string(t) + }; + }; } and UTPat: { [@deriving (show({with_path: false}), sexp, yojson)] @@ -383,6 +520,7 @@ and UTPat: { ids: list(Id.t), term, }; + let to_string: t => string; } = { [@deriving (show({with_path: false}), sexp, yojson)] type term = @@ -394,6 +532,14 @@ and UTPat: { ids: list(Id.t), term, }; + let to_string = (t: t): string => { + switch (t.term) { + | MultiHole(tms) => List.map(Any.to_string, tms) |> String.concat(" ") + | EmptyHole => "?" + | Invalid(token) + | Var(token) => token + }; + }; } and URul: { [@deriving (show({with_path: false}), sexp, yojson)] diff --git a/src/haz3lcore/statics/TypBase.re b/src/haz3lcore/statics/TypBase.re index c9023b88f9..2759a43d0b 100644 --- a/src/haz3lcore/statics/TypBase.re +++ b/src/haz3lcore/statics/TypBase.re @@ -48,6 +48,7 @@ module rec Typ: { ty: t, }; + let to_string: (~holes: type_provenance => string=?, t) => string; let of_source: list(source) => list(t); let join_type_provenance: (type_provenance, type_provenance) => type_provenance; @@ -102,6 +103,29 @@ module rec Typ: { ty: t, }; + let rec to_string = (~holes=_ => "?", t: t): string => { + let s = to_string(~holes); + switch (t) { + | Int => "Int" + | Float => "Float" + | Bool => "Bool" + | String => "String" + | Unknown(prov) => holes(prov) + | Arrow(t1, t2) => "(" ++ s(t1) ++ " -> " ++ s(t2) ++ ")" + | Prod(tys) => "(" ++ String.concat(", ", List.map(s, tys)) ++ ")" + | Sum(sm) => + let entry = ((ctr, ty)) => + switch (ty) { + | None => ctr + | Some(t) => ctr ++ "(" ++ s(t) ++ ")" + }; + "(" ++ String.concat(" + ", List.map(entry, sm)) ++ ")"; + | Rec(x, ty) => "rec " ++ x ++ ".{" ++ s(ty) ++ "}" + | List(ty) => "[" ++ s(ty) ++ "]" + | Var(x) => x + }; + }; + /* Strip location information from a list of sources */ let of_source = List.map((source: source) => source.ty); diff --git a/src/haz3lcore/zipper/Zipper.re b/src/haz3lcore/zipper/Zipper.re index 547b8c8f0d..d449eaec50 100644 --- a/src/haz3lcore/zipper/Zipper.re +++ b/src/haz3lcore/zipper/Zipper.re @@ -359,17 +359,17 @@ let deserialize = (data: string): t => { Sexplib.Sexp.of_string(data) |> t_of_sexp; }; +let set_buffer = (z: t, ~mode: Selection.buffer, ~content: Segment.t): t => { + ...z, + selection: Selection.mk_buffer(mode, content), +}; + let can_put_down = z => switch (pop_backpack(z)) { | Some(_) => z.caret == Outer | None => false }; -let set_buffer = (z: t, ~mode: Selection.buffer, ~content: Segment.t): t => { - ...z, - selection: Selection.mk_buffer(mode, content), -}; - let is_linebreak_to_right_of_caret = ({relatives: {siblings: (_, r), _}, _}: t): bool => { switch (r) { @@ -377,19 +377,33 @@ let is_linebreak_to_right_of_caret = | _ => false }; }; - -/* Try to complete the syntax to give better semantic feeback. - * This is a best-effort approach focussed on adding new definitions - * as opposed to restructuring; it does not complete the syntax in - * all cases. - * - * NOTE: Setting the caret to outer was necessary to 'get it past' - * string literals, i.e. offer live feeback when typing inside a - * string; not sure if this is a hack or not, it may be compensating - * for the put_down logic not working right with string lits. To test, - * try to look at live evaluation while typing inside a string lit with - * stuff left to drop in backpack with below set: Outer disabled. */ +//TODO(andrew): document +//TODO(andrew): generalize to actually get everything down +//TODO(andrew): for going back and adding lets... maybe incorporate newlines +/* + IDEA: maybe case on situation where there's nothing to the righ of the caret + except whitespace/grout until the next newline. in that case use existing + logic, but if there is something, try to drop as soon as possible? + idea is youre targetting the restructuring case where you just + picked something up + + IDEA: above logic works well for as-you-type, but not restructuring. + for example, if the top of the backpack is a leading delimiter, + which means you must have picked it up. maybe you want to drop those + as soon as possible? + + */ let try_to_dump_backpack = (zipper: t) => { + /*NOTE(andrew): setting caret to outer + was necessary to 'get it past' string literals, i.e. + offer live feeback when typing inside a string; + not sure if this is a hack or not, it may be + compensating with the put_down logic not working + right with string lits or something. to test, + try to look at live evaluation while typing inside a + strring lit with stuff left to drop in backpack + with below set: Outer disabled. + */ switch (zipper.backpack) { | [] => zipper | _ => @@ -436,7 +450,7 @@ let try_to_dump_backpack = (zipper: t) => { }; let smart_seg = (~dump_backpack: bool, ~erase_buffer: bool, z: t) => { - let z = erase_buffer ? clear_unparsed_buffer(z) : z; + let z = erase_buffer ? clear_unparsed_buffer(z) : z; //need to do this before trying to dump backpack let z = dump_backpack ? try_to_dump_backpack(z) : z; unselect_and_zip(~erase_buffer, z); }; diff --git a/src/haz3lcore/zipper/action/Action.re b/src/haz3lcore/zipper/action/Action.re index 1ee8b37380..521a3af900 100644 --- a/src/haz3lcore/zipper/action/Action.re +++ b/src/haz3lcore/zipper/action/Action.re @@ -4,7 +4,11 @@ open Zipper; [@deriving (show({with_path: false}), sexp, yojson)] type piece_goal = - | Grout; + | Grout + | FillMarker; + +//TODO(andrew): cleanup +let fill_marker = "FILL_ME"; let of_piece_goal = fun @@ -12,6 +16,11 @@ let of_piece_goal = fun | Piece.Grout(_) => true | _ => false + ) + | FillMarker => ( + fun + | Piece.Tile({label: [t], _}) => t == fill_marker + | _ => false ); [@deriving (show({with_path: false}), sexp, yojson)] diff --git a/src/haz3lcore/zipper/action/Perform.re b/src/haz3lcore/zipper/action/Perform.re index bac0a0cd09..d572e94220 100644 --- a/src/haz3lcore/zipper/action/Perform.re +++ b/src/haz3lcore/zipper/action/Perform.re @@ -88,6 +88,16 @@ let go_z = | Select(Smart) => /* If the current tile is not coincident with the term, select the term. Otherwise, select the parent term. */ + /* TODO(andrew): Maybe a better logic for this: Next + reasonable enclosure. Define 'enclosures' of a token to + be terms and tiles that include that token. Then for a + given token, itsenclosures are totally ordered by inclusion. + Doubleclicking gives the minimum enclosure, triple-clicking + gives the second-most minimum enclosure, which will be + (check) either the current term, the parent tile, or the + parent term. But would need to be careful to force that + the original tile is included; e.g. in an Ap the parent + tile doesn't include the funpos. */ let tile_is_term = switch (Indicated.index(z)) { | None => false @@ -96,7 +106,7 @@ let go_z = if (!tile_is_term) { select_term_current(z); } else { - //PERF: this is expensive + //TODO: perf let (term, _) = MakeTerm.from_zip_for_view(z); let statics = Interface.Statics.mk_map(settings, term); let target = diff --git a/src/haz3lschool/Exercise.re b/src/haz3lschool/Exercise.re index d02b934c62..d902535d93 100644 --- a/src/haz3lschool/Exercise.re +++ b/src/haz3lschool/Exercise.re @@ -673,7 +673,7 @@ module F = (ExerciseEnv: ExerciseEnv) => { let spliced_elabs = (~settings: CoreSettings.t, state: state) - : list((ModelResults.key, DHExp.t)) => { + : list((ModelResults.key, DHExp.t, Environment.t)) => { let { test_validation, user_impl, @@ -694,18 +694,22 @@ module F = (ExerciseEnv: ExerciseEnv) => { test_validation.info_map, test_validation.term, ), + Environment.empty, ), ( user_impl_key, Interface.elaborate(~settings, user_impl.info_map, user_impl.term), + Environment.empty, ), ( user_tests_key, Interface.elaborate(~settings, user_tests.info_map, user_tests.term), + Environment.empty, ), ( instructor_key, Interface.elaborate(~settings, instructor.info_map, instructor.term), + Environment.empty, ), ( hidden_tests_key, @@ -714,6 +718,7 @@ module F = (ExerciseEnv: ExerciseEnv) => { hidden_tests.info_map, hidden_tests.term, ), + Environment.empty, ), ] @ ( @@ -726,6 +731,7 @@ module F = (ExerciseEnv: ExerciseEnv) => { hidden_bug.info_map, hidden_bug.term, ), + Environment.empty, ) ) ); diff --git a/src/haz3lweb/Auto.re b/src/haz3lweb/Auto.re new file mode 100644 index 0000000000..dd74537c71 --- /dev/null +++ b/src/haz3lweb/Auto.re @@ -0,0 +1,187 @@ +open Sexplib.Std; +open Haz3lcore; + +/* TODO(andrew): document + + To start a run: + 1. reset model to init + (assume for now list stdlib not required; otherwise will need to populate more slides) + 2. go to sketch slide (can be first slide for now) + 3. select all and delete + + + start test: + -1: add a new entry to test_reports + 0. go to sketch slide (can be first slide for now) + 1. select all and delete + 2. paste in sketch (or insert segment as zipper manually to save time) + 3. move caret to immediately after first ?? + 4. schedule_action(PerformAction(Select(Term(Current)))); + schedule_action(Assistant(Prompt(Filler))); + NOTE: will want to parameterize Filler action + 5. after 5, other actions will get scheduled; we + need the last to trigger End test + + end test: + 1. Accept Completion + 2. collate errors + 3. add errors to test_reports + + */ + +[@deriving (show({with_path: false}), yojson, sexp)] +type reports('report) = VarMap.t_('report); + +[@deriving (show({with_path: false}), sexp, yojson)] +type test_results = list(TestStatus.t); + +[@deriving (show({with_path: false}), yojson, sexp)] +type updater = + | Init(FillerOptions.t) + | AddRoundOne(Settings.t, Ctx.t, Mode.t, OpenAI.reply) + | AddRoundTwo(Settings.t, Ctx.t, Mode.t, OpenAI.reply) + | Complete(option(test_results)); + +[@deriving (show({with_path: false}), sexp, yojson)] +type action('report) = + | StartRun(unit) + | StartTest(unit) + | UpdateResult(string, updater) + | LogTest(unit) + | EndTest(unit); + +//TODO(andrew): document +[@deriving (show({with_path: false}), yojson, sexp)] +type t('action, 'report) = { + current_script: option(string), + to_run: list((string, (FillerOptions.t, list('action)))), + reports: reports('report), +}; + +let init: t('action, 'report) = { + current_script: None, + to_run: [], + reports: VarMap.empty, +}; + +[@deriving (show({with_path: false}), yojson, sexp)] +type llm_report = { + options: option(FillerOptions.t), + time_start: option(float), + time_end: option(float), + first_round: option(Filler.round_report), + second_round: option(Filler.round_report), + tests: option(test_results), +}; + +[@deriving (show({with_path: false}), yojson, sexp)] +type llm_reports = VarMap.t_(llm_report); + +[@deriving (show({with_path: false}), yojson, sexp)] +type final_report = { + options: FillerOptions.t, + time_elapsed: float, + rounds: list(Filler.round_report), + tests: test_results, + num_rounds: int, + parse_error: bool, + num_static_errors: int, + num_tests_passing: int, + num_tests_failing: int, + num_tests_indet: int, + total_prompt_tokens: int, +}; + +[@deriving (show({with_path: false}), yojson, sexp)] +type final_status = + | Ok(final_report) + | Error(string); + +[@deriving (show({with_path: false}), yojson, sexp)] +type final_statuses = VarMap.t_(final_status); + +[@deriving (show({with_path: false}), yojson, sexp)] +let blank_llm_report = { + options: None, + time_start: None, + time_end: None, + first_round: None, + second_round: None, + tests: None, +}; + +let init_llm_report = (options, _) => { + options: Some(options), + time_start: Some(Sys.time()), + time_end: None, + first_round: None, + second_round: None, + tests: None, +}; + +let add_first_round_results = (first_round, report: llm_report) => { + ...report, + first_round: Some(first_round), +}; + +let add_second_round_results = (second_round, report: llm_report) => { + ...report, + second_round: Some(second_round), +}; + +let complete_llm_reports = (tests, report: llm_report) => { + ...report, + tests, + time_end: Some(Sys.time()), +}; + +let final_report = + ( + {time_start, time_end, first_round, second_round, tests, options, _}: llm_report, + ) + : final_status => { + switch (time_start, time_end, tests, options) { + | (Some(time_start), Some(time_end), Some(tests), Some(options)) => + //NOTE: head is last round + let rounds = + switch (first_round, second_round) { + | (None, _) => [] + | (Some(first), None) => [first] + | (Some(first), Some(second)) => [second, first] + }; + let total_prompt_tokens = + switch (first_round, second_round) { + | (None, _) => 0 + | (Some(first), None) => first.reply.usage.prompt_tokens + | (Some(first), Some(second)) => + first.reply.usage.prompt_tokens + second.reply.usage.prompt_tokens + }; + let num_rounds = List.length(rounds); + switch (rounds) { + | [] => Error("Incomplete report: No rounds recorded") + | [final_round, ..._] => + let (parse_error, num_static_errors) = + switch (final_round.error_report) { + | ParseError(_) => (true, 0) + | StaticErrors(errors) => (false, errors |> List.length) + }; + Ok({ + options, + rounds, + parse_error, + total_prompt_tokens, + num_rounds, + num_static_errors, + num_tests_passing: + tests |> List.filter((==)(TestStatus.Pass)) |> List.length, + num_tests_failing: + tests |> List.filter((==)(TestStatus.Fail)) |> List.length, + num_tests_indet: + tests |> List.filter((==)(TestStatus.Indet)) |> List.length, + time_elapsed: time_end -. time_start, + tests, + }); + }; + | _ => Error("Incomplete report") + }; +}; diff --git a/src/haz3lweb/Editors.re b/src/haz3lweb/Editors.re index 5c3847f54a..d8e311616d 100644 --- a/src/haz3lweb/Editors.re +++ b/src/haz3lweb/Editors.re @@ -48,16 +48,93 @@ let put_editor = (ed: Editor.t, eds: t): t => let active_zipper = (editors: t): Zipper.t => get_editor(editors).state.zipper; -let get_ctx_init = (~settings as _: Settings.t, editors: t): Ctx.t => +let export_ctx = (~settings: Settings.t, init_ctx: Ctx.t, z: Zipper.t): Ctx.t => { + let info = + z + |> MakeTerm.from_zip_for_sem + |> fst + |> Interface.Statics.mk_map_ctx(settings.core, init_ctx) + |> Id.Map.find_opt(Hyper.export_id); + switch (info) { + | None => init_ctx + | Some(info) => Info.ctx_of(info) + }; +}; + +let export_env = + ( + ~settings: Settings.t, + ctx_init: Ctx.t, + env_init: Environment.t, + z: Zipper.t, + ) => { + let tests = + try( + Interface.eval_z(~settings=settings.core, ~env_init, ~ctx_init, z) + |> ProgramResult.get_state + |> EvaluatorState.get_tests + |> TestMap.lookup(Hyper.export_id) + ) { + | _ => + print_endline("exception in export_env"); + None; + }; + switch (tests) { + | None + | Some([]) => env_init + | Some([(_, _, env), ..._]) => env + }; +}; + +let deps = (fn: ('a, 'b) => 'a, acc_0: 'a, slides, idx) => { + let get = idx => List.nth(slides, idx); + let acc_1 = 1 |> get |> fn(acc_0); + let acc_2 = 2 |> get |> fn(acc_1); + let acc_3 = 3 |> get |> fn(acc_2); + let acc_4 = 4 |> get |> fn(acc_3); + let acc_5 = 5 |> get |> fn(acc_4); + let acc_6 = 6 |> get |> fn(acc_5); + switch (idx) { + | 0 => acc_0 + | 1 => acc_0 + | 2 => acc_1 + | 3 => acc_2 + | 4 => acc_3 + | 5 => acc_4 + | 6 => acc_5 + | _ => acc_6 + }; +}; + +let get_ctx_init_slides = (~settings: Settings.t, editors, idx) => + settings.core.statics + ? deps(export_ctx(~settings), Builtins.ctx_init, editors, idx) + : Builtins.ctx_init; + +let get_env_init_slides = (~settings: Settings.t, ctx_init, editors, idx) => + settings.core.dynamics + ? deps(export_env(~settings, ctx_init), Builtins.env_init, editors, idx) + : Builtins.env_init; + +let get_ctx_init = (~settings: Settings.t, editors: t): Ctx.t => switch (editors) { + | Scratch(idx, slides) when settings.core.statics => + get_ctx_init_slides(~settings, List.map(Editor.get_z, slides), idx) | Scratch(_) | DebugLoad | Exercise(_) | Examples(_) => Builtins.ctx_init }; -let get_env_init = (~settings as _: Settings.t, editors: t): Environment.t => +let get_env_init = (~settings: Settings.t, editors: t): Environment.t => switch (editors) { + | Scratch(idx, slides) when settings.core.dynamics => + get_env_init_slides( + ~settings, + get_ctx_init(~settings, editors), + List.map(Editor.get_z, slides), + idx, + ) | Scratch(_) | DebugLoad | Exercise(_) @@ -72,22 +149,38 @@ let get_env_init = (~settings as _: Settings.t, editors: t): Environment.t => Used in the Update module */ let get_spliced_elabs = - (~settings: Settings.t, editors: t): list((ModelResults.key, DHExp.t)) => { + (~settings: Settings.t, editors: t) + : list((ModelResults.key, DHExp.t, Environment.t)) => { settings.core.dynamics ? { - let ctx_init = get_ctx_init(~settings, editors); + let ctx_init = + try(get_ctx_init(~settings, editors)) { + | _ => + print_endline("exception in get_ctx_init"); + failwith("exception in get_ctx_init"); + }; + let env_init = + try(get_env_init(~settings, editors)) { + | _ => + print_endline("exception in get_env_init"); + failwith("exception in get_env_init"); + }; switch (editors) { | DebugLoad => [] | Scratch(idx, slides) => let current_slide = List.nth(slides, idx); let (key, d) = - ScratchSlide.spliced_elab(~settings, ~ctx_init, current_slide); - [(key, d)]; + try(ScratchSlide.spliced_elab(~settings, ~ctx_init, current_slide)) { + | _ => + print_endline("exception in ScratchSlide.spliced_elab"); + failwith("exception in ScratchSlide.spliced_elab"); + }; + [(key, d, env_init)]; | Examples(name, slides) => let current_slide = List.assoc(name, slides); let (key, d) = ScratchSlide.spliced_elab(~settings, ~ctx_init, current_slide); - [(key, d)]; + [(key, d, env_init)]; | Exercise(_, _, exercise) => Exercise.spliced_elabs(~settings=settings.core, exercise) }; diff --git a/src/haz3lweb/Init.ml b/src/haz3lweb/Init.ml index f76d5959ac..434a806a73 100644 --- a/src/haz3lweb/Init.ml +++ b/src/haz3lweb/Init.ml @@ -9,13971 +9,18731 @@ let startup : PersistentData.t = context_inspector = false; instructor_mode = true; benchmark = false; - mode = Examples; + mode = Scratch; }; scratch = - ( 0, + ( 4, [ { zipper = "((selection((focus Left)(content())(mode \ - Normal)))(backpack())(relatives((siblings(((Secondary((id \ - 81269f55-a66c-48d1-9fbe-83187a492f55)(content(Whitespace\" \ - \"))))(Secondary((id \ - a4e41744-51dc-43bb-b359-47cb9649dcd4)(content(Whitespace\" \ - \")))))((Grout((id ef3fb913-bd26-4ef8-af2f-424a73c5c753)(shape \ + Normal)))(backpack())(relatives((siblings(()((Grout((id \ + 41614242-1996-44cc-96f8-d4a201aa8d39)(shape \ Convex))))))(ancestors())))(caret Outer))"; - backup_text = " "; + backup_text = " "; }; { zipper = "((selection((focus Left)(content())(mode \ - Normal)))(backpack())(relatives((siblings(((Secondary((id \ - 3fd71a3d-9baa-4362-9887-450674850113)(content(Whitespace\" \ + Normal)))(backpack())(relatives((siblings(()((Secondary((id \ + ae93b20c-392c-4d49-9487-8e6b46a63e2b)(content(Comment\"# Slide \ + Index 1: Library #\"))))(Secondary((id \ + 29122e69-1342-4f76-98a5-7831e5be4193)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + b305ee60-acda-4314-b372-229bec32dc58)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 68958297-11e4-4f9c-b665-21f64ddea42c)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + e309decc-7f82-4766-ad85-4b1ab82aeb4c)(content(Whitespace\" \ + \"))))(Tile((id \ + a1ef0ce2-dc05-4ef1-aee2-161e63715d47)(label(Option))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort TPat))))))(shards(0))(children())))(Secondary((id \ + c28d00f5-4480-4344-85af-1f4f0850bfff)(content(Whitespace\" \ + \")))))((Secondary((id \ + eb421d3f-cd9d-4feb-b3c9-8d8d90f95973)(content(Whitespace\" \ + \"))))(Tile((id \ + f4e7262b-76a1-4263-be10-40c37d836ea1)(label(None))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + b7538abe-6b0b-48bb-bf02-a9cf4c2dbff0)(content(Whitespace\" \ + \"))))(Tile((id \ + 8faadc61-500f-4ca7-9765-70e2395cf717)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort Typ))((shape(Concave \ + 10))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + b2232ec9-c30f-4159-8b6d-8f629795a958)(content(Whitespace\" \ + \"))))(Tile((id \ + bd593366-3096-4bb7-8977-a34c13186e63)(label(Some))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 14f9e462-0217-42a0-be20-4dc416be6d81)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 5ac15cce-7391-4d0d-a970-c98daa0a79f2)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 6e7e0af2-cbe8-4d69-afa6-175fb1289a89)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 72d6f6c0-e106-48d8-9ba2-f99ad979ce5c)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + ce410764-ab06-46af-9c45-94a7fe31e822)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 50f38002-db34-4a7b-b56e-a5cc6c8b9fc3)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 089cce14-4379-4d76-b2d5-eba5e77896e9)(content(Whitespace\" \ + \"))))(Tile((id \ + 133558ef-c5f2-47e0-823d-ca5635687bf2)(label(fst))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 3df538e4-aa15-4b0e-ac74-ec9406374226)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + a5067bec-ef9c-4f0a-ac95-b9bc63175f1e)(content(Whitespace\" \ + \"))))(Tile((id \ + 5e23963a-f5dc-48b7-8e03-0e993824e620)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 324d8d5c-b8ad-4cad-95b5-4f6a4404c36d)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 6d92a7b9-764a-444b-b89e-507fec1a9557)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + b0a3831d-f7b7-41a0-b787-cd2c17a8291f)(content(Whitespace\" \ + \"))))(Tile((id \ + df8f2705-9fc3-4460-8f6c-ea41f4eff9b6)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 06ef1003-336c-468a-a310-d4d3db6843d6)(content(Whitespace\" \ + \"))))(Tile((id \ + 4f34794b-3a2f-491a-b144-6cdf967857cc)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + f5eacbd1-b527-427f-a8f4-e9c04141ffb3)(content(Whitespace\" \ + \"))))(Tile((id \ + afcb95f0-1d85-4de4-8be3-5698dc5dfd01)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + a7f0727e-0146-4b90-b018-912cab5f9b6e)(content(Whitespace\" \ + \")))))((Secondary((id \ + e2eb0ebc-33ee-4cc7-afbf-4f503a1faed5)(content(Whitespace\" \ + \"))))(Tile((id fe1ce33f-2ca9-4771-ba63-b635dc549f5d)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 65fb907a-2c3f-4bcf-a30d-d3169a411da7)(content(Whitespace\" \ + \"))))(Tile((id \ + fbe9005e-a506-4f9b-aa91-9e16afb0cb59)(label(a))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + c7b83d74-3742-4876-9b56-7e65fce0ff2a)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + bc6d5cb7-2086-4ca2-abb2-f4fb6b7ce031)(content(Whitespace\" \ + \"))))(Tile((id \ + 73738a75-6a18-4504-9301-864986bc6571)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + ace9781a-a227-4507-b228-9182be2e2244)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + d4c2710a-ef76-4c1c-97db-512eaee4ff2a)(content(Whitespace\" \ + \"))))(Tile((id \ + 7b70dbba-67c9-415f-95e8-fb54fc0ca5c4)(label(a))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 81a329b9-6959-4c57-a1bc-28e8b0c3fb4a)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + a30e6522-9f78-4882-b1ad-75dc1e7f32c5)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 53e865cf-088f-4b2e-9fbd-e075e2df5d0a)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + c48b083e-6f34-4cbf-9854-095f2cfdc727)(content(Whitespace\" \ + \"))))(Tile((id \ + 8e3ecd7c-3578-4625-b437-b161a9f607de)(label(snd))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 32fe9ade-152f-4ae8-bc7b-b06e8380ee75)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 7ac139c8-5f55-46d0-a0ae-9c2f62aff9ad)(content(Whitespace\" \ + \"))))(Tile((id \ + 654c4c4d-22e9-458d-a9ad-ddec45e8d904)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 8b0c9792-b0b2-4f36-892c-0d2c827f9f6f)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 1d5ba41b-bc00-4839-adb2-c9c1818fd0e2)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + c518fa0f-1def-4a66-b812-6082f975cdb3)(content(Whitespace\" \ + \"))))(Tile((id \ + 551add9d-1170-43a4-9b4d-f2cca2312ea1)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 859f8371-eb48-47f3-986c-6cd1e8161d2d)(content(Whitespace\" \ + \"))))(Tile((id \ + 32649e4a-6b70-40e3-95eb-8696e9603d14)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 825fb943-14ac-493c-9bf8-b51cecb62565)(content(Whitespace\" \ + \"))))(Tile((id \ + 50c6bf69-cee6-4711-9c42-dfb39d300465)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 74783bd4-94b3-4bf8-affc-2c9a680e6dae)(content(Whitespace\" \ + \")))))((Secondary((id \ + 878c3790-3eab-447d-944f-3f8d7cf517b9)(content(Whitespace\" \ + \"))))(Tile((id e075a9b3-e42f-4b8f-9caa-3f74d5f26dc9)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 35f8400f-3d3c-47f0-80ba-e6eba394437b)(content(Whitespace\" \ + \"))))(Tile((id \ + 2b6ed790-5441-47fd-9de3-0b2004d43ebb)(label(a))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 884e31e2-268f-4197-a5d5-6cd3ff0d9cae)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 3996a27a-1b78-4edf-a78b-b88f838172a4)(content(Whitespace\" \ + \"))))(Tile((id \ + fb5869b7-cadb-435d-91da-4eeca3bb51a6)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + b9e837b5-e511-4926-9079-178aa746ea14)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 4e597a8d-5ab8-4245-8a24-f89018bba51d)(content(Whitespace\" \ + \"))))(Tile((id \ + d249d76b-ce70-4dfe-a8aa-39e990a016cf)(label(b))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 9baee77d-3b32-4c82-8a80-8ff926e8cad6)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + d139d7db-c542-4808-9754-fe29615af0cc)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 91c1f159-d8ec-4b42-9554-8f7eec3645c1)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 93c41fa9-fd7c-4eb8-ac2b-26c223fae814)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 5ab9a980-fc02-466c-bf85-f1588c67e16f)(content(Whitespace\" \ + \"))))(Tile((id \ + cbb313f2-65a1-4a56-9ae3-f7543013e597)(label(not))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 373ebaef-9184-4126-ad7c-310ba56fd7ed)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 87421879-1770-4477-847e-c666f3b3721c)(content(Whitespace\" \ + \"))))(Tile((id \ + 1ac50117-a28a-4785-a5e2-7ccf83fb1289)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 29b975c2-37bd-470d-a7cb-f519f96b06c3)(content(Whitespace\" \ + \"))))(Tile((id \ + 9f21b9e0-33a8-4ced-a7f5-c26506dab4e2)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 5aace89e-3f79-43b6-b849-29eb2d11a58f)(content(Whitespace\" \ + \"))))(Tile((id \ + f74b95a1-2530-4189-a254-ed4377cdc8b6)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 585b96f7-0352-4199-99ce-e074bc0ef964)(content(Whitespace\" \ + \")))))((Secondary((id \ + a0bf1d37-308b-4122-a763-8432fda30f3c)(content(Whitespace\" \ + \"))))(Tile((id 929c43f1-69c5-4da4-a439-b2a54da4f26d)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + d233f3e3-8613-4027-993a-6e92f52744eb)(content(Whitespace\" \ + \"))))(Tile((id \ + 3e5130f4-02d5-49d9-acf1-9d560892db18)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + ffbd8c3b-834b-4976-be9b-71d8c4c2b6a4)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 1ab8a6a7-305b-4b86-81fa-dd0aba53852d)(content(Whitespace\" \ + \"))))(Tile((id \ + 633120a3-53ad-45b6-8fb1-9f0c0f7a120c)(label(!))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 5))(sort Exp))))))(shards(0))(children())))(Tile((id \ + 757f08ed-6371-4a6a-8c20-cd3934b988c6)(label(b))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 779b5111-f12a-4af6-9b22-1152b324ff50)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + ed9a3862-4b74-4429-aff8-1eb1e496cfe1)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + bf3a8a31-7ae4-43ea-a84e-036d2e7f0e95)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + bcd2a646-6669-4f3f-91a5-3044af72fb74)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + a5887c43-d76f-4fef-aad1-ac72d202d1f5)(content(Whitespace\" \ + \"))))(Tile((id \ + 3f6734d7-ca81-416f-93de-1e2883986126)(label(bool_eq))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + e9bcc2b7-bef4-4929-bb47-99d0d778d43c)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + b08ecc93-708d-44ec-9c62-e9b86f453b93)(content(Whitespace\" \ + \"))))(Tile((id \ + 8c6293d7-3afe-4f32-90e1-37ee8b59fde3)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 8d8eea1f-fd73-4d2d-ac06-fe650802284e)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 41e6ea59-d87d-4c30-95b4-8afede7b789f)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 32a4e8fd-f5c3-4c11-8f3e-07c0108cb8c5)(content(Whitespace\" \ + \"))))(Tile((id \ + b50b2547-1ab8-4507-9a7a-e22bdd2b4007)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 9238f71b-2bb9-4039-8155-f29b06235c87)(content(Whitespace\" \ + \"))))(Tile((id \ + 2473afa8-1208-4a48-92e3-8b9572edb017)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 6767cf0c-e026-4142-ae1c-b7ce2a849242)(content(Whitespace\" \ + \"))))(Tile((id \ + 0cb4cba9-a313-4a33-b65d-bf3ef6d3432f)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 44ae77b8-4e99-47db-b56b-9a9636b413a9)(content(Whitespace\" \ + \")))))((Secondary((id \ + 5791d9e1-eef9-4aae-b59d-6f17bb949c86)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 1662776f-e74d-44ff-a4be-fe68e83022ea)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 0f2d796d-7bdf-4c95-a8bd-b7f0eb9c44ee)(content(Whitespace\" \ + \"))))(Tile((id \ + 7a212aab-fbea-44c3-b464-1817b275a124)(label(a))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + bfc030a7-3cd3-4717-a5f7-d7236f33bb54)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 69d2b5e2-da93-49b5-93a4-16aaae8aa693)(content(Whitespace\" \ + \"))))(Tile((id \ + 6e452a2f-e8d1-414c-b7a5-98c1e1de1b73)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 7633c066-f2b8-43d1-b74a-feba7cfc6f7d)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 18ac33db-575e-40b0-8304-3a39e782926d)(content(Whitespace\" \ + \"))))(Tile((id \ + dcc5a3a9-1105-44e2-9ad8-e253e81a172c)(label(a))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 582cb67d-63c9-47e6-ac18-c40433ce0401)(content(Whitespace\" \ + \"))))(Tile((id \ + 6d0dffdb-e285-421c-b8be-56ef0420f6e2)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort Exp))((shape(Concave \ + 9))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 0507ab3b-7b05-471e-a54f-5b3c9e461593)(content(Whitespace\" \ + \"))))(Tile((id \ + 36f257af-744e-4579-93c4-be677d1fc661)(label(b))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 6b218afa-517d-45a9-b4a7-61ec0e2dc978)(content(Whitespace\" \ + \"))))(Tile((id \ + ac1094ab-974f-4fa9-9c86-1dd5b3e26418)(label(\"\\\\/\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort Exp))((shape(Concave \ + 10))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 039621a8-81b5-4703-a448-080e792725f3)(content(Whitespace\" \ + \"))))(Tile((id \ + fe26fd73-664b-4ecd-b3f0-935280769dee)(label(!))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 5))(sort Exp))))))(shards(0))(children())))(Tile((id \ + 2ab7cc85-7e28-4de8-b281-98759d38b23a)(label(a))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 959a1719-8596-4a17-91f6-44d6ae9b6264)(content(Whitespace\" \ + \"))))(Tile((id \ + 9ece2286-23c3-47e7-86f3-2e9d82af074e)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort Exp))((shape(Concave \ + 9))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 8e421e04-da3e-4d96-9ac7-73c1b5ef94b4)(content(Whitespace\" \ + \"))))(Tile((id \ + 09c0ca0e-544e-45d2-bcfe-95d354e344b9)(label(!))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 5))(sort Exp))))))(shards(0))(children())))(Tile((id \ + 4dda9881-1f79-4515-8e7d-7204765d5a02)(label(b))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 21fceda9-8b39-4612-a236-371cda060c2e)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + e75e363f-e9e7-4b97-9e66-2b5a71b255e7)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 5cc16cc8-6548-4294-bf1c-3b2e63113a6b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 31243b1c-af58-42a4-a62a-e61b710f8d7a)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 1e25bb60-07ea-4673-b94c-11fb1de948e6)(content(Whitespace\" \ + \"))))(Tile((id \ + 9143f3c1-4fc0-44e0-91c0-679357a8bb04)(label(List.cons))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + d4a3a71f-b21b-4bf3-8b8a-6293e1dd2041)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + c9bc207b-3a0b-4b2d-b895-3c6bdbe915d4)(content(Whitespace\" \ + \"))))(Tile((id \ + 43e1aa0b-b604-43ec-a4c9-4b1d4af707dc)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + b8b17b18-3afb-47ba-9fe0-01aa2394b392)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + a56d2bb1-c28f-461c-88a4-4c747ed114d9)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 262cbb77-d24f-49b2-95bf-53cecb7c52cb)(content(Whitespace\" \ + \"))))(Tile((id 3af59bf8-0f8b-49cc-b543-4bfb5a7d9183)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 51e86403-4ce8-44dc-846a-90d5cc671cd8)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 26559337-02b0-4518-94a5-5e9c149328c1)(content(Whitespace\" \ + \"))))(Tile((id \ + 038d887b-f941-4b91-b617-d2bc154cad00)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 4c74cea0-ac35-4d95-a5f4-9a5c68309a56)(content(Whitespace\" \ + \"))))(Tile((id 7139390a-3e84-4afe-b50c-52fbb45974b3)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 46408a38-7d7b-4ffb-a5e9-abd7c07cebaa)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + b5ee59cd-942b-4d4a-ba19-a5f2dcee793f)(content(Whitespace\" \ + \")))))((Secondary((id \ + a655c56b-af4e-47de-8581-ab6b83c57c96)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 0ec0028b-1163-4344-ac57-155640fa50e3)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 08138937-6009-4e02-ab10-048bbc871f8d)(content(Whitespace\" \ + \"))))(Tile((id \ + 671e37de-dde2-4e89-817c-06f12d8ba270)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 826d9bec-4313-4569-a786-fc8f2e445301)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 3d411bdd-06fa-4dba-90c0-1073c633e1c4)(content(Whitespace\" \ + \"))))(Tile((id \ + 70c756bb-cb03-48f0-9ace-9c3a26bb1ff8)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + a7f4c4d7-a29f-4c7c-bf6f-45460e7bc6de)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 04da55b7-3cc4-48f4-88c7-1bc0b6b922ee)(content(Whitespace\" \ + \"))))(Tile((id \ + ad95dab3-1152-4aed-a225-4fa18b15dbd8)(label(x))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + a40fb467-9511-427f-a312-fa6062722350)(label(::))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 6))(sort Exp))((shape(Concave \ + 6))(sort Exp))))))(shards(0))(children())))(Tile((id \ + 823dc370-9854-4fff-8583-1ecf1c54f1bc)(label(xs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + c7a9f152-23ff-40f2-8a41-0b9770873e4b)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 53c942b2-c5cb-4706-aa12-f38bd3f46fdc)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + f35a71a7-d66f-4711-b4c7-f724bcccd899)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + b7d29bed-8e23-447e-af79-6af67f2da443)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 444e2e28-5cca-490e-9ce0-1137e97763de)(content(Whitespace\" \ + \"))))(Tile((id \ + 9e7f7476-5660-46d8-974d-e320e0afe6d4)(label(List.length))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + c22f1c5f-005d-45db-9e78-9081a6e2c0a4)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + c81a994b-73f4-4de5-8919-3d555b5bf83d)(content(Whitespace\" \ + \"))))(Tile((id 8dd45aa5-7b28-4fdd-97ac-0f24b263a70b)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + f1c00681-abf7-4de4-856b-e2bc95c5c757)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + cc6f939a-9b51-4912-8ed0-d16f1b210557)(content(Whitespace\" \ + \"))))(Tile((id \ + 7a384e5c-5b46-4812-9e8b-6333781ce9d3)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + f9ac648a-e088-43b4-8059-d087bfe5c5db)(content(Whitespace\" \ + \"))))(Tile((id \ + afdaf3c7-485f-41b5-afb1-95f6343540dc)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 374f6b8c-01c6-4fcd-b612-83b73605525b)(content(Whitespace\" \ + \")))))((Secondary((id \ + 9a19384c-bae9-4943-b0c9-583bcf61afec)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 34f8caa2-033e-4466-93f6-5cdfd1b0aa76)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + f8df0570-a34b-4f2e-afa3-8b6f4b0d7935)(content(Whitespace\" \ + \"))))(Tile((id \ + 40945809-a296-4a8c-b824-1316690e2b75)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 34bc1a58-87e7-4252-b07d-0ee6789d1263)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 9273474a-86de-4b9e-a095-d8f671d7acd3)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 76b831a0-3d15-43d4-97dd-ef7fdf233a02)(label(case \ + end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 9fdab8f1-3efb-4a0c-bb8f-7d0add5b7713)(content(Whitespace\" \ + \"))))(Tile((id \ + cfec27a0-5326-4678-832b-9d8e3dd00456)(label(xs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + ad2d2a7e-1ac9-4bd5-8d23-7af3d34d6a5a)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 679238c1-9371-4a03-a38b-cea6ef92203c)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 9ddeb6de-9a77-44ee-ade3-d3acb4ce9ced)(content(Whitespace\" \ + \"))))(Tile((id \ + f29c28f2-65ff-4d54-bb11-f8d860da0baa)(label([]))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 734df686-47f6-4a1d-81b9-824f812a9b73)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + b73a3ef4-5b6c-4bce-83f3-292a5f485e03)(content(Whitespace\" \ + \"))))(Tile((id \ + d0136646-b23c-444d-8c61-520157f6caaa)(label(0))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 24889d79-bf5f-4774-9eb7-c17f7d701fc8)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 9fab4541-0aaf-4543-a699-243be6a4efaa)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 4a131833-7714-497a-9d8a-485733701262)(content(Whitespace\" \ + \"))))(Tile((id \ + 971514db-1314-4b2c-b487-06e9251fb814)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + ffe3509f-3910-49af-9d2b-1ef2d838b966)(label(::))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 6))(sort Pat))((shape(Concave \ + 6))(sort Pat))))))(shards(0))(children())))(Tile((id \ + 3b0a3800-1836-4416-b7f7-fe53e2b4f7c4)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + af97214a-f485-4642-9e38-11b514524f1f)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + a9c3d333-4231-4afa-b8a8-988b1d4aa57a)(content(Whitespace\" \ + \"))))(Tile((id \ + ac06fcfc-b8e7-4f4d-b601-2dd1f75d361a)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 9a28bb4a-0a24-434c-8ebd-6a419f5fed9d)(content(Whitespace\" \ + \"))))(Tile((id \ + ceea47bf-d47d-4f1e-a10c-9bec57c84faf)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort Exp))((shape(Concave \ + 5))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + cd62b12b-b66b-4531-9950-1533a35c154e)(content(Whitespace\" \ + \"))))(Tile((id \ + d5cca81c-95a2-4941-9ca5-bc3a9ea098a7)(label(List.length))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + a07ebfc7-0e38-4e9a-a248-3b01f9623158)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + ae618a85-d30b-4b51-bf3d-d6890a3b1c2b)(label(xs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 780906b7-dda6-425e-a657-472454dc7f65)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + aed22f3a-8385-4dd0-9eab-99748e95bcec)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 6912cd9a-38e4-49f6-a892-d79d5d9e31cc)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + eb61fb39-76b8-4d06-9e87-e6200022063a)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + b40b3962-4218-48fe-8f35-381417b44a89)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 1a9c7647-4594-4da0-80f8-90785efb1abf)(content(Whitespace\" \ + \"))))(Tile((id \ + 35fa88d0-faf0-4a47-bd64-e0cd3780668d)(label(List.hd))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 0eec4d86-bf61-427a-816d-c70de4ac6bc4)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 6955f7aa-6307-4884-8e09-df161232da7d)(content(Whitespace\" \ + \"))))(Tile((id ec0e80a0-0e82-4f29-978b-f7a40a840cf9)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 6974b8f4-4e6d-48fc-8d75-423cc4f01e0b)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + e0411a0d-e686-4cc2-898f-2f783a483404)(content(Whitespace\" \ + \"))))(Tile((id \ + dc86e143-37ae-4223-9d35-cad3e143c3ed)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + a61a659b-59d7-42be-80eb-521effc64699)(content(Whitespace\" \ + \"))))(Tile((id \ + ada11fe8-18e4-4e08-a9ed-67efae983117)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 7967af55-56e8-4d88-9c5e-c8e0254576e4)(content(Whitespace\" \ + \")))))((Secondary((id \ + 37829ac9-d1ed-41a2-948d-1aeaa35655d0)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 5133266a-b7a5-41df-b4e4-e18e421985ab)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 15cef23d-073a-4dab-9ccc-4857790fbce7)(content(Whitespace\" \ + \"))))(Tile((id \ + 110991a2-3053-44d0-acd3-18d449c3ef75)(label(l))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 7d274c8b-1e9a-42d0-9dc3-32cb69dee1fb)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 1eb1e15e-f068-47df-8b9d-943be5222edd)(content(Whitespace\" \ \"))))(Secondary((id \ - 140c0376-4f67-40b6-8056-8cac787af42d)(content(Whitespace\" \ - \")))))((Grout((id 35a88970-2d50-43a7-a476-f81f5b36728d)(shape \ - Convex))))))(ancestors())))(caret Outer))"; - backup_text = " "; + 581c325e-a97c-4257-97e7-7ec2e66a7e1f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d34a01be-e9e4-4c63-b421-03a1dbd0dbd4)(label(case \ + end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + eeb93769-5fb9-49d1-b185-dfd7c75cb15a)(content(Whitespace\" \ + \"))))(Tile((id \ + 594fa46c-8212-47ff-8b40-e232bfa94a3e)(label(l))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 348ff84d-4962-4c44-994b-25c236a7e523)(content(Whitespace\" \ + \"))))(Secondary((id \ + 3d89d8be-16bc-4d13-bb8b-67cfcdaa55f6)(content(Whitespace\" \ + \"))))(Secondary((id \ + fd657340-c3e2-44aa-8626-a2fa751128f8)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 3b1bfda4-8383-40c6-a8f0-9c191d9fca1c)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 9aa855a4-28b8-44d3-a3bc-cace1c811321)(content(Whitespace\" \ + \"))))(Tile((id \ + e55a0d47-92cd-431a-91a5-5f8b104375f7)(label([]))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 0a44d2a5-7967-4dab-8a4f-c67c0d9ff1ef)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + c7e57da5-32a1-4f7b-a443-9f4a51d0f933)(content(Whitespace\" \ + \"))))(Tile((id \ + a357a904-0252-4c7b-bfa2-2c5a56d91d1a)(label(?))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 99d8a19c-7c13-4ba4-b37b-1342689cc21b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 3162c741-24d3-42a7-bfe4-742836c8ff82)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 646996de-4049-4363-8d74-66e89054a90a)(content(Whitespace\" \ + \"))))(Tile((id \ + b0302f15-6803-44d3-aa0e-ba4f5685c6dd)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 6cc9fc85-34a5-4665-9fd6-6ce13407e617)(label(::))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 6))(sort Pat))((shape(Concave \ + 6))(sort Pat))))))(shards(0))(children())))(Tile((id \ + 1cb8ede7-d6f7-4d23-8bc4-5d385a934066)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + e6810ab4-2300-4191-a473-dd105ea676c3)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 37c6fbb4-aa73-4dd1-b143-56c7185d1e69)(content(Whitespace\" \ + \"))))(Tile((id \ + 2ce79956-8a2e-4b0e-b2aa-3f1e1014d392)(label(x))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 9acd3b07-1253-4f13-b18a-7c2c48a65d28)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 2e7c2757-b3f9-4bb6-8b21-024ded70554b)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 0940fcf6-9583-40d2-ba8d-57e77b9bd093)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 45d68866-ea93-48fb-b91f-f21a2881e5cb)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + fc43e809-ba4b-47a3-ae3e-04c7bbc69cdd)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 9d13f258-2ff7-42e5-8fea-4f712b1a5cbf)(content(Whitespace\" \ + \"))))(Tile((id \ + 31ce9b90-36bc-4cc4-b3b7-b81796325b8c)(label(List.tl))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 9518b6e1-bde2-4a20-ac2d-f0058066213d)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + b240f01a-8813-425d-bbad-a893ea6977e7)(content(Whitespace\" \ + \"))))(Tile((id 79fe510b-dac8-429c-b905-ff1a85f2ee02)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 57654b4d-2cd3-4d2c-b76a-949aa61a53de)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 9a55892e-b06b-4208-b601-41337d8b8368)(content(Whitespace\" \ + \"))))(Tile((id \ + 3d231040-af6f-4af3-a45b-0c2b972ead2f)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 39d95669-ce4a-475a-86de-6ade2b390975)(content(Whitespace\" \ + \"))))(Tile((id e0fff774-b78f-466e-8207-d64fa154c728)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 0284addf-66d3-407a-ae45-f8003ec9be99)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + b756cd2e-1b65-4aaa-912f-0826c7db51fa)(content(Whitespace\" \ + \")))))((Secondary((id \ + 5952db10-dd6a-4f4f-b4bc-3ccf5ca15261)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + e3274966-3edb-4fcf-afcd-d550b904306f)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + c3af8de1-edf8-4bca-aad7-ef95077713d1)(content(Whitespace\" \ + \"))))(Tile((id \ + df1f3e44-6630-4df2-a832-f0f6d439aca5)(label(l))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + d44131a7-ab62-4d3e-8cdb-93d1d966fef1)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 4abd357e-5a2d-4954-bd0a-7712e933a63b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 0b766d94-f827-41fe-9e30-7aec8e1bcab1)(label(case \ + end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 505f4445-0140-44b4-991d-15d7711aaf93)(content(Whitespace\" \ + \"))))(Tile((id \ + 707f61cb-d211-4ca9-b112-217dfe426494)(label(l))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + a47423e8-5256-4d50-9a6c-85d0627fa72c)(content(Whitespace\" \ + \"))))(Secondary((id \ + 066857e3-d77f-4a39-b57d-20121ab98fce)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d1787ad2-24ac-4680-9dc8-df09233085d5)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 5da3a212-16e1-442e-8457-a9ca62821be4)(content(Whitespace\" \ + \"))))(Tile((id \ + ace97845-75e6-4a06-bf16-bdfe066f6c60)(label([]))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + ec6036f9-9ece-49ec-8de8-0c6c207f355d)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + e7947e14-368e-431a-bfe3-e36cf2cac40c)(content(Whitespace\" \ + \"))))(Tile((id \ + fe44dc20-d5e4-4b74-a588-feb779c16f21)(label(?))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 5bca6b46-ec24-4307-8605-c5b7fbc55b5b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + dec04c05-a927-45b0-8106-3f368b8f0b89)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 5185ee76-646a-45bf-bf4e-8e6a1a16e344)(content(Whitespace\" \ + \"))))(Tile((id \ + d56ebc10-d6e9-428e-bcf4-b589ccbdb5c2)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 42b4a8fd-8e9a-4960-90c4-bf8d16ec19d5)(label(::))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 6))(sort Pat))((shape(Concave \ + 6))(sort Pat))))))(shards(0))(children())))(Tile((id \ + 1e43ee19-eddc-4dad-ac07-b6bfb13ec2e3)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + bbcb6175-35c9-4995-9d25-1af310a4bca9)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + c5afebe7-6bf0-40af-bdc4-fdd0a1836181)(content(Whitespace\" \ + \"))))(Tile((id \ + ca2ae18c-1a1f-46a6-a40c-01e8c567caf2)(label(xs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 05afa814-8e6d-4013-a67c-268f37d8fb95)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 8a94f6f5-b1bc-4504-bdf7-4b8557c9e269)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 29ad0ad6-e453-4d7b-817d-a6dd9ced283f)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 74b66e4c-ddc3-47dc-97a2-5731bd737dd4)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 0f7d65c6-f199-4c85-956e-29f27197fb06)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 18d2b075-92ca-4af6-9607-bc96bded98ee)(content(Whitespace\" \ + \"))))(Tile((id \ + 3e013ad1-ef90-4219-85ee-b1bd763fea7a)(label(List.is_empty))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + c43bff54-1ca2-452f-a581-47a7c827394c)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 137eb9ac-e85b-42b4-8e9b-4052d5ef7acf)(content(Whitespace\" \ + \"))))(Tile((id c1a17ca2-043a-4fc8-9824-1bd7b84d90be)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + b01f8402-5095-4086-bc76-4c8598f5c86a)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 62b16b9a-b565-471a-b5d0-0438e2c32afa)(content(Whitespace\" \ + \"))))(Tile((id \ + 34a497c7-205a-4789-8940-93020e476b0a)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 159f7fd3-9ad8-48f3-a571-812446371171)(content(Whitespace\" \ + \"))))(Tile((id \ + 4663528c-d58c-404d-be48-08e94d35b38e)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + d521088f-4771-4747-acb4-877bde73894e)(content(Whitespace\" \ + \")))))((Secondary((id \ + 3ad42e6b-ad37-499a-996e-dd897129a12b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 5e2d382e-2b91-4527-87d0-73679f0ac699)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + c33282bc-d9ed-4942-b4aa-19b86ecbc9a4)(content(Whitespace\" \ + \"))))(Tile((id \ + 21919ec5-8a72-42bc-908b-2354e083432f)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + cfc86100-a32e-476f-95a1-79b834911088)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + ea384d62-c745-42fd-8b2e-ea9109c97aa6)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 6c29792d-5d0e-4c89-9478-dd234ff49e95)(label(case \ + end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + fc29ecf3-ab50-4d5a-a811-483d2d773a3a)(content(Whitespace\" \ + \"))))(Tile((id \ + ec3b4f9e-8021-4ea4-a3b5-342cbd8971b6)(label(xs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + a64fc726-3432-4beb-ad4a-7fc0fffa127f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + b107d434-b32d-41ef-8584-fdec580d71ce)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + af696873-f38e-4845-a953-1651792dde1e)(content(Whitespace\" \ + \"))))(Tile((id \ + 7ce87257-56d6-41ca-b8fe-8686123b07b8)(label([]))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + e3c07e4e-ea0b-46ed-83d0-14506a528584)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 574356e7-98ed-4e23-ab32-8684d7155772)(content(Whitespace\" \ + \"))))(Tile((id \ + e5c36e8b-52d7-4f52-a9a1-c8755ab164a7)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 454a7fb7-c45d-46a8-b84b-2d4e5144c308)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + a8fedacd-1ea6-47fd-a077-640da5ad2b21)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 2f429910-449c-4acf-a4dd-6e6dad52c918)(content(Whitespace\" \ + \"))))(Tile((id \ + a750c357-defb-4c88-9c43-31def332c3dd)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 7cd63242-6318-4a81-bf50-f87eddacd6bc)(label(::))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 6))(sort Pat))((shape(Concave \ + 6))(sort Pat))))))(shards(0))(children())))(Tile((id \ + a9b0aba7-e8c1-4f87-a5cb-c094e3df055c)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + bb61bc6e-3f75-4122-ba2a-e63b8a869ba3)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 7acc1d23-6b5e-4577-a1d5-173f49aca9d6)(content(Whitespace\" \ + \"))))(Tile((id \ + 028ca38a-190b-4a9f-ab31-83fc390ff5c8)(label(false))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 5ecedd30-d899-477f-aa0b-4b99b40d4222)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 264d5528-ebef-4e53-a604-75fd79be9f07)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 5d1abe7b-9ccf-4c50-9ff8-654f29d770b4)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 3afd3e5f-83c8-47ae-9a5a-2af7a290159b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 4c497f5d-d20c-46b2-b17b-c4ecd2e99c17)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 4a51fcaf-3553-48ee-aa01-ce1280e3f465)(content(Whitespace\" \ + \"))))(Tile((id \ + ac4408b3-e94e-4f8f-959d-1e6506d176ec)(label(List.nth))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 667dbeda-d1dd-4f86-8d4b-606125fe660f)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 5ae9e86a-dbc8-456e-af60-07723e93b9ce)(content(Whitespace\" \ + \"))))(Tile((id \ + 37349641-9b12-4f7f-951e-3e0d9e0d51f8)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + d703aa20-00d0-43d1-a8be-f88a8056575b)(label([ ]))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + aa41e226-3048-40ee-a0e2-b1c7280d78c4)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Tile((id \ + 3f28e04e-a84d-47cf-b362-391743835b6c)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + af787d41-83c8-4bc0-9195-e8f9e93fa288)(content(Whitespace\" \ + \"))))(Tile((id \ + ae37fdc6-1981-406b-b6bc-28d4f23ecc31)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + d6781051-ca28-4318-9bf4-31e76d58cd78)(content(Whitespace\" \ + \"))))(Tile((id \ + c2169c98-722b-4502-8465-c12f6d2ac5cb)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + dcc2f30d-a29b-46d1-b152-c2feb31174a8)(content(Whitespace\" \ + \"))))(Tile((id \ + 9b64479f-4495-49b1-9631-ad15204b31d2)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + a6789f51-be06-4160-bd16-0f367903cd38)(content(Whitespace\" \ + \")))))((Secondary((id \ + 2c01ac86-93ff-4334-bfe6-7205656ea868)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 4f5e1ef9-ad27-4c4e-8bc8-1259630e5158)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 24615112-a351-4dac-9a63-81ee5f06258d)(content(Whitespace\" \ + \"))))(Tile((id \ + e8815a98-1ba0-4024-a373-df5c1bcff40c)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + f9213f8c-ecb8-4a30-8e43-bff350ba36bc)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 259b1539-ec66-454c-88bb-f82cd15725e5)(content(Whitespace\" \ + \"))))(Tile((id \ + 122d37f9-4a00-46fe-81c3-ae3a5f4f6220)(label(n))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 10aec4cf-e768-46c0-a82b-ae95518644de)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 04dcde2a-3241-4d27-9535-ccd4e535e59c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 59bc2378-d1c9-49de-b512-be699c5ab7d7)(label(case \ + end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 5c644f57-2513-42af-9990-14e6b54dedcb)(content(Whitespace\" \ + \"))))(Tile((id \ + 56961038-0d8e-488f-b9f7-3b21b28d1db6)(label(xs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 40d4c576-e013-4afb-9bd2-b533be151c37)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + f0bef1f0-7273-4be9-bd79-93ab82a20850)(content(Whitespace\" \ + \"))))(Tile((id \ + 36454f50-6f7b-4cc4-9d0a-4162fadae7c2)(label(n))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + b1570e9d-5c41-4c61-bd0d-d1b571854081)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + c7f27039-4d65-4bcf-bf65-9cc51317d957)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + f2d1c353-b202-4e2e-9e9c-2e00ca41df4c)(content(Whitespace\" \ + \"))))(Tile((id \ + e2277504-b7e7-4c6c-8c54-1ac3fa0504c0)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + b3ceb7f1-3a73-4bb2-bb84-dc98ebbce99c)(label(::))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 6))(sort Pat))((shape(Concave \ + 6))(sort Pat))))))(shards(0))(children())))(Tile((id \ + 96919382-f8a9-47df-a051-72291e934555)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + a88fa341-98f3-43c0-aeed-59f547ce0d55)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + d855bae9-2f60-49e0-883a-07d84467ecf1)(content(Whitespace\" \ + \"))))(Tile((id \ + b1e4918d-eb76-4281-bc3d-2f26e5206ac6)(label(0))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + ecc2edc1-5722-42fc-a6e8-fd75773b862c)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + ada9e83f-9e2c-4682-b5d6-42d08e129fdd)(content(Whitespace\" \ + \"))))(Tile((id \ + 55d053f3-c7cf-49b0-815e-0d1bec6368be)(label(x))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 25a6c8ab-3599-4f46-8886-4449b611ccec)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d69af711-436f-4763-b614-a4fc25345466)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 3596b240-59e8-4a45-9ca5-2aa0ad7578e8)(content(Whitespace\" \ + \"))))(Tile((id \ + 4ff9903f-dbee-4fab-b6e1-36e187529ff5)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + c9a0badc-71e3-47f2-9556-8e42096db5ff)(label(::))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 6))(sort Pat))((shape(Concave \ + 6))(sort Pat))))))(shards(0))(children())))(Tile((id \ + cb5c33cf-43b7-4ad4-8226-2574414e8764)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + cebd5746-2af3-4062-b498-e98fce687eaf)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + ce95a2b7-1d5b-4c41-8255-78091db05cb1)(content(Whitespace\" \ + \"))))(Tile((id \ + eb33713c-4a69-4d1f-8829-17922ed39f2e)(label(n))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 26b8c106-6cb4-424f-bb77-dba0e6925719)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + f667dc22-85dc-407f-9328-26760f036d19)(content(Whitespace\" \ + \"))))(Tile((id \ + 5dc411ea-c4b1-4749-aa54-357a3b01bcdf)(label(List.nth))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + cd1f3548-30da-4e7f-8509-63336560133d)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 586d5112-c8a0-41ae-b4d7-bafd66a987ca)(label(xs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + a29ee92b-d2a6-4233-9bad-9140f784f971)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 646e9b17-b9a2-48ba-8d1b-d36d6e55c841)(content(Whitespace\" \ + \"))))(Tile((id \ + 62c114cf-8887-4bb5-87ba-b8b0012fefa1)(label(n))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 8c391d69-1c6a-4a64-bac0-9740beffd53e)(content(Whitespace\" \ + \"))))(Tile((id \ + a74d75d5-a00c-4e89-bb95-445e126a26f8)(label(-))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort Exp))((shape(Concave \ + 5))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + bc554d28-9494-456d-a2bc-e5a4a9dcc5f4)(content(Whitespace\" \ + \"))))(Tile((id \ + 8cce8df9-778e-4ed7-a5e3-0ec8f62aa68c)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 8c45dd9a-6151-4937-831b-98174b1e5a74)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + b516b4b8-ccf2-44e5-b935-85e349871908)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 69621aef-6441-466a-a489-79f5acfb976f)(content(Whitespace\" \ + \"))))(Tile((id \ + c64951f3-8bd4-4965-91d5-614a6de0ffca)(label([]))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 430054d6-f5f2-42f6-ade7-649e6a6cbb0a)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 0f998db3-c36e-47ab-8eba-9709b534cd1b)(content(Whitespace\" \ + \"))))(Tile((id \ + f293879a-3952-4314-88d4-761a6fc36787)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 395b5e05-7d72-4205-b849-fa81556840b7)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + f3135dd2-33ab-47de-a98b-ce2cd7fd57e8)(content(Whitespace\" \ + \"))))(Tile((id \ + 3bd69e43-748a-4847-b413-dbe191b3ff9a)(label(?))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 0334d2f7-7da1-49ae-a598-90f58523e7f9)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 40a40cc8-2c59-4aec-b9a6-4499938d0bd6)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + cd37ba73-0cd8-464a-848c-a541f92e9983)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + be6360ee-18c9-477a-a111-8998f3547d40)(label(test \ + end))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + d4900d66-d8d9-4e81-96cc-1b4936eb5d04)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 6b9dad4f-1541-4e5a-948b-a0cfc20c236f)(label(List.nth))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + fbfdb736-151f-46dc-b6b0-833ccdfc8d14)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 88197b94-1865-45c6-ab84-b118c9b5cb57)(label([ ]))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + e9aa8ccf-e351-4a7a-93b8-e11e59260019)(label(7))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 9a49057d-9cb1-4424-adaa-85e0d8f54093)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + dd2e4158-c649-4b72-8037-50c143416021)(content(Whitespace\" \ + \"))))(Tile((id \ + 0d856797-c5af-44dd-931e-d08435705163)(label(8))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 45063de2-c2f8-4443-a7d1-55d0abdb1e31)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + fb3953fa-68ae-4f0f-932c-db1e88e6b0d3)(content(Whitespace\" \ + \"))))(Tile((id \ + 4279b9e1-d3a8-4a96-863d-3cb7d71c5de7)(label(9))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 372398ae-7e5f-40e8-9abe-655029bdcae4)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 766794ce-f6b2-4b45-9fc6-6bee8236b78b)(content(Whitespace\" \ + \"))))(Tile((id \ + be1184e7-cb93-4a56-8381-990d204ca8f2)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 9bddbf0a-84b8-4e1b-b0c1-e9e09e48f5f8)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + f25791fc-d45d-4e8b-8310-f158f2dc217d)(label(==))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 8))(sort Exp))((shape(Concave \ + 8))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + dffc17a3-2197-47aa-a7c2-898473949cc6)(content(Whitespace\" \ + \"))))(Tile((id \ + 2e3d68ab-5f64-4215-8664-dab34fe8fc22)(label(9))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + f1a31eb4-0fef-41f2-b9c1-a85fc4f57293)(content(Whitespace\" \ + \")))))))))(Tile((id \ + 9a10a148-c9c9-44b7-8f00-ebae68b3d9dd)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort Exp))((shape(Concave \ + 10))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 0bff3c4c-27c8-450b-a9bd-f9939fed9ca6)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 95ea67b9-ae10-40be-9df5-00ab564824ba)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + be8684c0-b330-4dc4-bbf2-3f698b619543)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 9600fb9b-a1b9-40c3-83b1-d35894c0efef)(content(Whitespace\" \ + \"))))(Tile((id \ + 67bfe5a0-3ec8-4206-b736-188e18c3efa3)(label(List.rev))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 0e260309-23b1-4991-b84a-487a088b6406)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 11c6d47a-6608-4181-b688-9c8e96b9e16e)(content(Whitespace\" \ + \"))))(Tile((id 253cf2a6-5343-479e-a15d-f5a40f8dd3fe)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 83de3df7-eff1-4004-93fd-b1d6aeb82f83)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 075e64b4-52c9-44a2-80b0-0151e0adc1a1)(content(Whitespace\" \ + \"))))(Tile((id \ + 03c6bb3e-1ac4-4a22-8cff-0d1e9d5152f5)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + def62ff8-99b3-4623-84f1-57675dadcde7)(content(Whitespace\" \ + \"))))(Tile((id cc1bd9f8-9f07-4584-8d54-9abb8e7a17e0)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 45bbe939-ee92-43d4-9713-f3668837785c)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + ceb8a820-23c7-42bb-ad0f-a00787acbed6)(content(Whitespace\" \ + \")))))((Secondary((id \ + 5d9d5121-e45e-492a-b2dc-0e3d6088202a)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 7186bcf2-a6d4-4ed7-bebd-ca9d3fbdfa30)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 338c84de-1350-4d66-9f34-917d034f0df1)(content(Whitespace\" \ + \"))))(Tile((id \ + 6a03841a-a9ef-4430-81ed-493101825849)(label(l))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 48addca0-110a-42b1-bd11-992184d52697)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + bfbbc1d9-1c3a-475f-ba70-6a2e2f844898)(content(Whitespace\" \ + \"))))(Secondary((id \ + 28c46d97-2c8b-42ac-a5e0-1b30ddca0a7d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 9615c530-ed87-4f83-bb84-792c088d1a19)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + a80e1780-2b5b-42b3-a247-e2d7b2ef7c0a)(content(Whitespace\" \ + \"))))(Tile((id \ + e9222ab4-acfd-4098-bd32-0086eb18576c)(label(go))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + deb8d7d0-656e-4231-874c-4785e280009b)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 8f341dfa-c8e3-4b80-be1c-b09ef20977f2)(content(Whitespace\" \ + \"))))(Tile((id \ + 58f82cfe-33a2-4a30-9b27-e154d38b9d50)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + da28278b-9d77-471a-8605-193ea693fdde)(label([ ]))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + e12aa2ff-4eee-449f-8ffb-03e548530052)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Tile((id \ + 2a565ac4-5125-42e9-8dfc-39c666f27492)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 071d238e-9591-4be6-84bf-077b2ee6477f)(content(Whitespace\" \ + \"))))(Tile((id 8e01fd05-fa32-4cb0-8170-66f720b9ffb3)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 35c64e2f-b48c-404b-af02-2c043163c5b5)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 5afc365a-1278-4897-8869-4342c623e258)(content(Whitespace\" \ + \"))))(Tile((id \ + 6f7a1999-9d6f-4767-86c6-aca892609851)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 566f4b53-0079-4230-b885-b704f199eab9)(content(Whitespace\" \ + \"))))(Tile((id 75f34ff7-3eb0-45a2-bcb6-c80dfc4322a8)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 42ff50ab-8c2c-4f3d-af4d-5d2a0bf8add8)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 54f4813c-bd28-4c1c-bce8-37fc823b157d)(content(Whitespace\" \ + \")))))((Secondary((id \ + 1bc4f7e8-5d37-45fb-84a1-164182037d37)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 3a277475-2a5e-4d75-91fe-898d0fe552fb)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 7ffdbb4f-4440-423d-965d-b1cb26f8b5a8)(content(Whitespace\" \ + \"))))(Tile((id \ + e424ef5f-20a9-4600-9017-6135ca8df033)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + b5ba4eea-6c88-4bde-b86a-5a17ae6cda72)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 11bfcb65-ba5d-434f-aa84-aba21b65b95e)(content(Whitespace\" \ + \"))))(Tile((id \ + 364c17a2-7485-46af-8772-f73e829fcee8)(label(acc))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + e7631b93-098f-4a96-aa8a-892885041aa7)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 81ae59d4-9026-461a-9ab9-12b639d1b64d)(content(Whitespace\" \ + \"))))(Secondary((id \ + 7bd04498-e0af-4172-9805-a554da583bb8)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 74b796ff-8ea2-47bc-ba25-b6959b0032af)(label(case \ + end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + e6f86a0c-1bff-462e-b707-7bae9b209fdf)(content(Whitespace\" \ + \"))))(Tile((id \ + e84bab99-072e-4c84-a4b3-32bc1beac7bb)(label(xs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 249628e1-613d-4169-8dc1-2303d71e83f7)(content(Whitespace\" \ + \"))))(Secondary((id \ + f8e3dda2-1e78-4bc5-b0d9-dc40c97d4353)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 1ddf842b-c79f-47d0-812e-7f19fa13b4a3)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + f6902e7d-d3d6-4c53-9b95-36dfd65c6220)(content(Whitespace\" \ + \"))))(Tile((id \ + 4cb8381d-c1f2-42f0-a902-7ff589dc0767)(label([]))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 6b7461d9-d62c-41b0-b39d-1b666bf2c530)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 2203b15b-7eb8-4b87-80f0-c27bd16d418a)(content(Whitespace\" \ + \"))))(Tile((id \ + 85acb14b-bd90-42e0-abb1-451a64fbedcc)(label(acc))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 58139475-6f74-4cad-9483-5a45a8df11d8)(content(Whitespace\" \ + \"))))(Secondary((id \ + 28a257b2-cda8-4c85-bccb-b7158853d432)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 8e103100-57ad-4fcd-8ede-b05d5d81689c)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + adee0183-2d69-456b-be3b-890965c207d1)(content(Whitespace\" \ + \"))))(Tile((id \ + 9e3442f1-33bb-4339-9517-9359d7effde4)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 5b89d595-13f5-4a60-92a1-858d451ec69c)(label(::))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 6))(sort Pat))((shape(Concave \ + 6))(sort Pat))))))(shards(0))(children())))(Tile((id \ + 2649c20c-fafa-4d83-be9c-a8758dbca824)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 7132cbb8-4b95-4f9e-9512-c4c6eb063280)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 3ca8a690-01d5-442d-bce7-b2bbce396132)(content(Whitespace\" \ + \"))))(Tile((id \ + dc2bc1a3-26ff-4084-b75d-c6b5ec0c06d6)(label(go))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 7937bb45-a482-4b50-8c8a-f3bf253aeb09)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + fcb103ba-e395-43d2-b2c1-36349b009a71)(label(xs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 08433747-18a6-455e-a28e-16cd8ca12d3d)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 9ea79cd8-8fcc-4f7e-a6fb-3d685622ffeb)(content(Whitespace\" \ + \"))))(Tile((id \ + ba76e04c-c4a7-4359-b488-c84c02c7da51)(label(x))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 450edf6a-7f36-4b7c-9362-a2d87cf96ed6)(label(::))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 6))(sort Exp))((shape(Concave \ + 6))(sort Exp))))))(shards(0))(children())))(Tile((id \ + 2ef79443-022c-44e5-8cff-136df0e8e62a)(label(acc))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + ce2e7ff7-5983-4b57-85a9-d3a354cd0ff7)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 9d304647-c0a0-46d2-9218-c5fabd3515d2)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 3ca74191-18c2-47ce-b0f9-ac13d3ddb111)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 06db4c7f-c904-45aa-a6f3-0d671ae5011c)(label(go))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + b1c46342-5b86-4f07-ac01-764f9aa65444)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + bb598eb6-58a2-455c-b4a9-082552875559)(label(l))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 99ecd288-aa3f-4c46-b5d8-ebbf7bcd7c6e)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 50192882-caf7-44d3-8784-e38f666223d7)(content(Whitespace\" \ + \"))))(Tile((id \ + 4816c709-5d3b-40f2-ad4a-43d1214be4da)(label([]))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + d0db2970-12ab-47fe-987f-bb2b819dccd7)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 3f8cd1f6-0971-44b4-b5b6-f3672bbd04ba)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 63de51db-d359-424b-bbfe-803ebcd2490a)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d2ed22f0-b1c1-4f76-829d-7e332a99a540)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 9522ff3d-260e-42e0-9d3b-9d6556078b5e)(content(Whitespace\" \ + \"))))(Tile((id \ + cdf00ace-af40-4383-9a06-7ab4a7b01f48)(label(List.init))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + d82dd82e-4a61-4cf8-ba9c-6c92526c20e4)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + f572bf83-9426-4ba0-809b-8a4a69cdfdd3)(content(Whitespace\" \ + \"))))(Tile((id \ + 17b1e674-50fb-4fa2-a133-80a9f93cba6f)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 8a5db8a9-dd74-4281-b5e6-4aa5a66bb499)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 112b3789-d9c5-4918-a059-ad1aa32d396d)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 414e9ed4-ee73-470a-8d1f-32165d6e56a3)(content(Whitespace\" \ + \"))))(Tile((id \ + 2b6dc0a9-23ff-416f-8a42-953f61667fcd)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 8674ace8-321e-452b-ad31-1bde8c49f94b)(content(Whitespace\" \ + \"))))(Tile((id \ + e267ccf7-f84e-4267-86e0-6cd1015fe22b)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 91c0f2c5-efac-47ed-9987-0e21c77843dc)(content(Whitespace\" \ + \"))))(Tile((id \ + a43358c3-b3b9-44e5-8e84-85ae2297b261)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + d93e0d0e-5001-4b1b-bc68-e635143f75c0)(content(Whitespace\" \ + \"))))(Tile((id \ + d45cbd42-5164-49dd-b2ec-1efb178179ac)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 8c44017e-c529-4edf-829f-a0c3ee966980)(content(Whitespace\" \ + \"))))(Tile((id f25122e0-f9ef-4443-a5a3-444dbbfb597b)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + f6d2e016-d0d2-4674-a7ed-20991fb0ae8d)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 8cc25d2c-83b0-4225-97ed-cdcc456410c6)(content(Whitespace\" \ + \")))))((Secondary((id \ + df34dd2a-9d63-4f22-a137-b4202d51b28e)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + b6460797-153f-4671-84dc-1b91e2b7ec5f)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 5566d7bc-8fa6-4b92-bf6b-d04c0da0d751)(content(Whitespace\" \ + \"))))(Tile((id \ + 1691852a-c3a5-4d42-9532-76eda6d8ec44)(label(len))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 36117c8d-b19c-4549-b941-26368e3aa546)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 3cb87da9-5698-4652-bc89-667e8f7cb69d)(content(Whitespace\" \ + \"))))(Tile((id \ + 54bb2a65-423d-471d-b1c0-e246ef1349a7)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 8ecf4330-1a2e-48fc-b77b-485415e7b6ba)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 70b2e4dc-02b3-4100-887c-78c5978188c7)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d89654de-6b82-4dae-9224-954d02a6067e)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + daa688f9-7229-495d-94f5-517b60ecb377)(content(Whitespace\" \ + \"))))(Tile((id \ + e681186a-121c-4a5e-9417-717e80bc5195)(label(go))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 3d79ade2-1ecd-41fc-a965-01a240d3a393)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + b50c755c-5e5a-45e8-9fb7-809f03a2738d)(content(Whitespace\" \ + \"))))(Tile((id \ + 2c167aaf-04b2-4f03-a9e6-aace29485786)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 15bcb599-a08e-4659-9723-065200ba7712)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 64b1a63a-eef3-4615-9ce7-7a9f416b9b22)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 8e44d461-3414-4576-b0f8-0048f6200a3f)(content(Whitespace\" \ + \"))))(Tile((id 57991a6e-02a3-46a8-a131-0a61d1719054)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 2d7da11a-436b-4121-9580-9ab10375b5d6)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 8fee1ce1-efae-4397-b800-bff02f3a311e)(content(Whitespace\" \ + \"))))(Tile((id \ + e4d86daa-6488-4f81-aeac-b0363155b250)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 83bd4579-fbd4-4d03-b135-e35b02a2ea00)(content(Whitespace\" \ + \"))))(Tile((id cf75dbd1-b9be-42a1-9cd0-c965586e2833)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + b69cceff-524d-488b-9dbe-b49aadb0f6e3)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + bab2df60-b074-49d5-bfc8-0595246fe964)(content(Whitespace\" \ + \")))))((Secondary((id \ + 7fa6aeda-9b5b-40b7-8cc5-85b594fe9311)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + b44fd13f-f176-438a-8921-0bbcd762e6e1)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 6167b526-509f-472c-8267-9b22d78ee989)(content(Whitespace\" \ + \"))))(Tile((id \ + 6ff7d919-9aeb-468d-adc2-ac4f574de1fc)(label(idx))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 4b62a39e-8c76-4d4a-a69e-d6852b5267e9)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 6bcb0a23-ab31-42a2-bc36-96187b14285b)(content(Whitespace\" \ + \"))))(Tile((id \ + b12143fd-5d08-4777-92b3-e1c877ac25c6)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 4f53724a-2db2-4fc7-b524-7d64786254cd)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + e43c830c-501c-453f-abd7-a30ee0fa9c4f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 7ef06653-a039-4a6d-9bc0-a40629407ddc)(label(if then \ + else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 12))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + e667270e-7b68-4410-b983-80ba748f6801)(content(Whitespace\" \ + \"))))(Tile((id \ + 4d908db6-447b-4609-aaad-acc0adb5dc66)(label(idx))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + a2206f81-965c-468b-a1d8-942b9936e443)(content(Whitespace\" \ + \"))))(Tile((id \ + fc08c74b-03db-4595-8033-ef742daaa376)(label(<))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort Exp))((shape(Concave \ + 5))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + ed744119-6d7b-457b-9684-6d9b850cadad)(content(Whitespace\" \ + \"))))(Tile((id \ + 1b7a0069-6f8f-447b-b003-fd27803151eb)(label(len))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 092fc056-8708-4854-8ebd-a1a8db981bf1)(content(Whitespace\" \ + \"))))(Secondary((id \ + ccda371f-f067-41b4-81b9-2292b032b525)(content(Whitespace\"\\226\\143\\142\")))))((Secondary((id \ + a0e90769-8d9b-46eb-86f1-18b1fa06f830)(content(Whitespace\" \ + \"))))(Tile((id \ + bd71ccd6-a157-4f49-8fdf-1c7cbfbb39fa)(label(go))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 36908065-2f81-4e5c-98d5-821a4df72e62)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + c7370c4c-7364-4bd8-b21a-ccf776719c63)(label(idx))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + f033fadb-b57d-40ff-b70b-6ecb50bfae14)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort Exp))((shape(Concave \ + 5))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 1e86c27e-f614-4bf5-b87f-3616ea5fde1d)(content(Whitespace\" \ + \"))))(Tile((id \ + f953cff6-8c0b-448b-96ba-1d34d070bb59)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 2be8ba80-e790-4f68-8b6c-0c71378796fd)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 9d184ced-d31c-4bc0-bd4a-0907727ff692)(content(Whitespace\" \ + \"))))(Tile((id \ + 9fd652f3-b4fb-4a3c-926f-60619a28d5ee)(label(xs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + e40011bf-e51c-4614-8cee-b3306844096f)(content(Whitespace\" \ + \"))))(Tile((id \ + 4a5bf7f4-3373-413f-acc0-fb440a220944)(label(@))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort Exp))((shape(Concave \ + 5))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + e701bff0-7c83-417c-b49d-83c0910fcd20)(content(Whitespace\" \ + \"))))(Tile((id a1ac016a-007c-4657-98ee-a774ca53185c)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 031f2a0a-0504-40a5-9840-0cae94a98628)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 25f7fc11-f0d7-4f92-bf97-8a30b2a6b6fa)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + cf47c9e4-24dc-49bd-9fce-f29f71289533)(label(idx))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))))))))))))(Secondary((id \ + 321d0fee-ae88-4a7a-b691-078bdb1bb107)(content(Whitespace\" \ + \"))))(Secondary((id \ + 60b634aa-58ee-4e0d-9e90-c54665eee21d)(content(Whitespace\" \ + \"))))(Secondary((id \ + 15d32806-00a0-4c97-8f2b-036119933a5f)(content(Whitespace\" \ + \"))))(Secondary((id \ + 2d52d1e4-477a-4cd1-a5fc-74611ef5a8bd)(content(Whitespace\"\\226\\143\\142\")))))))))(Secondary((id \ + 1656eb2b-20ed-4f85-87fd-7860ee323f4a)(content(Whitespace\" \ + \"))))(Tile((id \ + 6d8c7b3c-209f-4ba4-9aed-9702988b22b6)(label(xs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + f5525f6d-4f30-4b2f-9cfd-0a8ea8303aa5)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 9958b93c-93a6-43e8-839b-9954604213b5)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 147b368c-461a-4244-b357-73eb05a461f5)(label(go))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 876f8e4a-4e45-49f3-8f3d-2addb0e641a2)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 0ca23d96-1798-40e0-8532-8bd692fad6b3)(label(0))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 4fe18fa3-bff1-4575-b06f-93015ae3553b)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 0cb90707-54c5-4025-a103-af3206524ef5)(content(Whitespace\" \ + \"))))(Tile((id \ + 61b1e80a-5fbd-46bd-b730-b626a14a8d7c)(label([]))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + a14c6a2b-cc94-45d1-87de-44e26a0f4ae3)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 9527d322-e16a-4de7-846b-e114883052d2)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + c5a9978d-67c8-425f-80c8-d8301b121094)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + ea4713f4-225e-46f7-b748-020e8f83d944)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 2a377105-3d95-4a47-b38c-86c76c20c76e)(content(Whitespace\" \ + \"))))(Tile((id \ + 4dc81d60-0d25-4048-aec3-f688be616817)(label(List.equal))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + c65ebb88-58e6-4abd-81f2-6732c2490a10)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + f7628a9f-2699-41df-9e95-1cd4e4c82218)(content(Whitespace\" \ + \"))))(Tile((id \ + 6ac20871-8d4e-42b5-9a93-13d235e415a0)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 28d4f866-0538-47ca-9611-adfa51af5b1b)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 93919c8a-b2dc-4cab-92b6-726fb1b97ec7)(content(Whitespace\" \ + \"))))(Tile((id \ + 0f180db5-ee5b-4bde-b2be-dd75a0e05ea9)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 164ded3c-5fbe-4f80-a231-e41280bed1bd)(content(Whitespace\" \ + \"))))(Tile((id \ + 6aac25b9-a0f7-4372-82a0-859e062465c8)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 7a840a55-8e77-49f9-8665-1f7a17a9924d)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + eeb881ea-6a42-40df-89f7-f763beccb1f0)(content(Whitespace\" \ + \"))))(Tile((id 08c402f0-5582-4c04-83e9-cca6e516dc42)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 62113d59-9b27-4dd9-90c0-66d4f4dcc064)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Tile((id \ + 819c6e5c-d476-465d-9164-9f3917127b19)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 85e058b1-ed51-4bc8-ab53-f9278b3d5a6e)(content(Whitespace\" \ + \"))))(Tile((id afae3bcd-4532-4eb8-b6f8-1e474f135261)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + ce085409-817f-4664-880c-e09b839fc47e)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + ce38923b-bb7f-4a55-adfe-61c330948792)(content(Whitespace\" \ + \"))))(Tile((id \ + 53a57ce5-cc5d-42fa-b7a3-0f765ef0c41c)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + c79c78c6-7a6a-41cd-b323-cbe2f2637a3b)(content(Whitespace\" \ + \"))))(Tile((id \ + 9010619b-93dc-4612-905b-61f61c54ad8f)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 8e3e0546-e3cb-4335-8c32-64dabbba61a4)(content(Whitespace\" \ + \")))))((Secondary((id \ + d769b97c-9df3-4d2d-911c-a565e9953760)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + a65db47d-6d80-4aff-86e6-f442ebc5ab28)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 1fd38048-5628-4ae9-8a7c-40a3738053a9)(content(Whitespace\" \ + \"))))(Tile((id \ + 45c847e3-8cdd-4ed3-90fb-ed96f9f80c56)(label(p))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 3f869e54-e168-4a68-9330-b4a29c1d8f59)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 01c3889e-8ebc-4e93-bb39-c4547a17c8fa)(content(Whitespace\" \ + \"))))(Tile((id \ + 4d179618-9a57-4310-b929-e14a87b102da)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + c9668aa4-8f14-47ff-832e-d9d06bdbf844)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 92e6718d-d55b-486c-8b07-64c236f579d6)(content(Whitespace\" \ + \"))))(Tile((id \ + ea2620a2-c8cc-4747-9e2a-f03c9d375ca0)(label(ys))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 0f722992-7343-4e50-8620-3a2d7b2b1625)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 3f14c99f-3cc8-4fae-925f-041b478c107b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 82e548eb-f2ba-4b90-b54a-9dbdb9633898)(label(case \ + end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + b63d7e77-9dea-4dbd-aedc-c337296cf319)(content(Whitespace\" \ + \"))))(Tile((id \ + 04cf80da-cb45-4ee1-890a-091313446f4d)(label(xs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + b95f4325-2ec4-49f5-b5e1-a33e80062f66)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 48d0f466-ca46-43cd-a14d-1df2ec91f9c4)(content(Whitespace\" \ + \"))))(Tile((id \ + 4605e1ba-0dac-4b9e-b24f-f50c040e76de)(label(ys))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + e09c890b-3be2-4fa3-8939-573c795a6d81)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + e8cc0596-0c2f-4251-988d-9bae654d48c4)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 8f85ccde-6bee-44ae-a9e3-11fd7cd341af)(content(Whitespace\" \ + \"))))(Tile((id \ + 94406503-b66e-4f1c-8957-3f5b6143aa17)(label([]))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + a2d75285-3dcf-4a4b-8b25-110717eaeeec)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + b0cd8fe0-a6dd-4e8b-8453-e3099978204b)(content(Whitespace\" \ + \"))))(Tile((id \ + f3e3e42d-f756-45bf-bfd5-186468d107dd)(label([]))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 537e128d-1e2a-41d7-b80d-33202734c5d6)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + c1639732-ccbf-46a4-ae64-d77a5f84fa30)(content(Whitespace\" \ + \"))))(Tile((id \ + 9157beb3-1229-43c0-9694-7135027842af)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 93555599-2867-406e-821c-aaed13a445c1)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 709bf344-9c8d-4666-882a-3492fc961ee3)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 6501b371-41ca-4f8e-bb8e-82ba8157a8c2)(content(Whitespace\" \ + \"))))(Tile((id \ + 297134c2-865f-47c3-a74d-8c44795a2f4c)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 6c6b68b6-f61e-4614-98c2-17bc8819afed)(label(::))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 6))(sort Pat))((shape(Concave \ + 6))(sort Pat))))))(shards(0))(children())))(Tile((id \ + 12746fa8-8684-473d-8fe2-d80055d05667)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 166b6dcc-712c-4945-92e9-4598a56ae092)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + b855cd4a-2945-410b-a2c3-e4b219db2bfc)(content(Whitespace\" \ + \"))))(Tile((id \ + 53d297dc-5f13-4696-918d-ce7bb57d7ad6)(label(y))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + be4cc474-d8cc-4be6-866a-e9c17f00f470)(label(::))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 6))(sort Pat))((shape(Concave \ + 6))(sort Pat))))))(shards(0))(children())))(Tile((id \ + 36d8093a-5f90-421d-a397-f8fe0b882fd9)(label(ys))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + c4e78854-f871-4bad-80cb-e0e9d46dd6bd)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 22476d1a-e5ce-48d6-9f73-a0b38c835bad)(content(Whitespace\" \ + \"))))(Tile((id \ + dcf8e1da-8048-481d-b565-327e9e77b38c)(label(p))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + da36b180-943c-4cf8-8bbd-37805e490d08)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + b75fa540-89dc-49ef-be61-821771a476e0)(label(x))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 7dd36fc8-ee7d-4e2e-8b4c-606f3a31297a)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 6bbe7eaa-ab7c-4cab-9a5d-4c93114c9c59)(content(Whitespace\" \ + \"))))(Tile((id \ + 06e02d92-a189-44a2-be14-a3fb39e8d1e8)(label(y))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 1377c9ab-bb89-4363-b190-8b65a89b097f)(content(Whitespace\" \ + \"))))(Tile((id \ + 06bba119-24fe-47c5-ac38-eec6ec838cfb)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort Exp))((shape(Concave \ + 9))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + d8b1c1b2-733d-4fa4-bec5-fd30bea56360)(content(Whitespace\" \ + \"))))(Tile((id \ + 77b374b1-385b-45d0-b160-453b901d28df)(label(List.equal))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 0b5c1730-46f5-4a16-877b-d601fd629980)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + e9b274af-5415-48c9-a85f-c1177ed1b644)(label(p))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + d1f69bd3-8adc-4730-81d1-1209d5d945a1)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + c6c7ee3c-1628-463a-9d99-34d4268990f4)(content(Whitespace\" \ + \"))))(Tile((id \ + 070cf058-fe13-4563-810c-727d60cef601)(label(xs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + fae0483e-7dba-4b8c-963b-58f3ad33a213)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 3b1be360-20e6-4c68-880c-5fdc1ef277ff)(content(Whitespace\" \ + \"))))(Tile((id \ + 02346bcf-23bc-4fe1-b230-deb214db55b9)(label(ys))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 9dfe4d3b-ebf6-4de9-b2a2-9a5cfb84a768)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 87a1956a-2d58-4fa9-b2b1-37ef5e51a68f)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + acffddd4-b22a-4361-8f45-bd0fd12f0959)(content(Whitespace\" \ + \"))))(Tile((id \ + ef582fcc-869a-4c0f-a255-bae223cefe1a)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 8b8d85f1-f395-49d3-b462-f7211a00a321)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + cb8b289b-9031-4ef1-bd9f-2a0f04ba770d)(content(Whitespace\" \ + \"))))(Tile((id \ + e0751a61-e77c-4927-9b0f-f1d6441d0d17)(label(false))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 58e6d8dc-1318-4d2e-bfad-a694cc968300)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 88945796-833d-4961-82f0-90c8997966b2)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 79accfb0-cd05-4ebc-8c3c-8841093d6e5d)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 306b17fc-fa7d-4a17-875d-f979a6d23095)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 9b07968a-a2e3-4a60-a1cc-c50c4b7afc02)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 6ec6f96b-c2e3-48d1-a4ed-a24da88dc1a1)(content(Whitespace\" \ + \"))))(Tile((id \ + 759d4a72-4ac3-4029-929e-862bae042914)(label(List.fold_left))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 18a9a1ed-3946-4277-94ca-b85c05dea227)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + fff691eb-c01c-4dd2-831c-17a10170032c)(content(Whitespace\" \ + \"))))(Tile((id \ + 2b5de1e4-c668-4426-ad20-fad6ec7c71fb)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + c475f098-166b-4277-a700-46a8c34ce88a)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 8308c34d-d97c-4f72-a339-ea2f9eebc123)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + dc4d83df-930c-4886-b8d2-62fe272a8301)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + fad2c0f5-2cc2-4a4c-9979-81355588930d)(content(Whitespace\" \ + \"))))(Tile((id \ + a8de5723-0adf-4d56-a1cf-ebbd7c6a251a)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Tile((id \ + ee8b823d-1f6c-4f12-b49a-917790c4a0e3)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 7509608c-b99f-494e-9921-a0f5a4c8b991)(content(Whitespace\" \ + \"))))(Tile((id \ + 475aec39-dec3-41c5-8ef4-f0aebbc892d5)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 4b766337-7ddf-4f8e-8ed3-6b6d9566b84b)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 7f6a810d-6152-4242-8e25-1f164281e6cb)(content(Whitespace\" \ + \"))))(Tile((id \ + c29d5285-24ee-4c86-b6c4-4bec7c418d51)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 5b34f282-556d-4664-9cab-ec6c1e6057f2)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 60635aa6-ea36-476e-aceb-c36de3e79cf1)(content(Whitespace\" \ + \"))))(Tile((id f04dfaca-6fe4-49f6-98fa-c2fe45203ed1)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + eb99e501-56ce-4135-a38d-31a519da0808)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Tile((id \ + 6a134273-0b4f-45b7-b8f7-7567ec7ed8c8)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 5e2e53ee-5590-4726-904a-32c473e0ff1c)(content(Whitespace\" \ + \"))))(Tile((id \ + 543e464c-a67d-4667-908a-baca238d5a14)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 4311ecec-0243-4edd-8829-a084af140932)(content(Whitespace\" \ + \"))))(Secondary((id \ + 01d86f3e-5227-415d-9c1e-807165bb88e7)(content(Whitespace\" \ + \"))))(Secondary((id \ + 1bdc8bad-9443-4a51-85d0-840efbf681bd)(content(Whitespace\" \ + \")))))((Secondary((id \ + 4bffd7c4-d0de-423b-a9b9-bd4bf60c92c8)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + f9be5416-84cd-43d2-ada4-c21817c21367)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 09318fe7-97a2-4649-855a-19c02f5ad731)(content(Whitespace\" \ + \"))))(Tile((id \ + 078f93f6-5b13-4273-9110-7554586a1c8a)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 8706cfcd-bb5d-47d3-be2e-20d554014ace)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 3d48e8d8-ad76-4c5a-993c-94345fef9c82)(content(Whitespace\" \ + \"))))(Tile((id \ + 236299cd-3589-430b-b205-48b18011035d)(label(acc))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 47b9e450-696d-4883-badb-5237b5b3359e)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 2b70b844-1b2b-47ba-99fb-05c70fe74c86)(content(Whitespace\" \ + \"))))(Tile((id \ + 82736238-c574-44e9-8174-78ce30bea95f)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + aba777fa-27c0-4afe-8c59-2ad789b42a97)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 19bad887-5905-4679-8140-f0df1e42ec32)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 441ad9fa-466a-435b-839f-04faba2f2773)(label(case \ + end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 2ddb3bca-4b63-41d1-ac91-ba8d63f9708e)(content(Whitespace\" \ + \"))))(Tile((id \ + 20d4f35e-f33b-4f23-a3aa-7f4225e9761a)(label(xs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + fcc44e94-9843-49ee-bc3c-8b2482ae7a87)(content(Whitespace\" \ + \"))))(Secondary((id \ + 1ffbc47d-3bdd-4a83-8c5d-58a844cf8428)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 590001ef-4333-4f65-879d-5146f017b2a9)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 8e936fff-d96b-4c0f-896c-dc97a1205fe9)(content(Whitespace\" \ + \"))))(Tile((id \ + 73e8fab8-4175-4df1-8d48-93d23a4e7028)(label([]))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + e5fc1733-2d5a-4ce4-8597-6ff5a0f2a223)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 13843c11-0f38-4a33-8fbd-e4bae3910b5c)(content(Whitespace\" \ + \"))))(Tile((id \ + fdacec90-a835-44db-9c77-42caab5d1e73)(label(acc))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 363cc94d-5047-4f02-ad80-87ce52fdaa04)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 3b881cf2-0b7a-47c6-8074-a94248894539)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 9d1e8fbb-0e87-44ae-bb45-af6d579fc608)(content(Whitespace\" \ + \"))))(Tile((id \ + f0999940-1120-4468-8ce5-edb68cdd4b15)(label(hd))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + fd1371a3-0cc3-48f2-97f5-6055077b7b54)(label(::))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 6))(sort Pat))((shape(Concave \ + 6))(sort Pat))))))(shards(0))(children())))(Tile((id \ + 72e84b09-4e13-46f6-afa0-24cfd7e91145)(label(tl))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 6ef13b89-fada-4a76-9024-3fe663616946)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + f62c078a-dcaa-47c0-8f99-30de266ef37f)(content(Whitespace\" \ + \"))))(Tile((id \ + 7ea20e65-d401-4b5e-9e95-5f22b485104e)(label(List.fold_left))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 22997499-65fe-42a8-8192-464acd040e6d)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + dc15a434-21ca-4094-9a56-d2bf20894f15)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 55f295a2-9cd5-4cf2-bfd5-d170bb41193f)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 8c526aa6-d3ec-4150-9b16-4ba4c45deb33)(content(Whitespace\" \ + \"))))(Tile((id \ + 4cb064bc-60b2-49f6-960d-ba165c9596bf)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 079d8a1e-15b4-4f19-9112-70f943c5efa9)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 5c8cb949-8707-4638-86c2-425ef28fddda)(label(acc))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 332155c7-d736-43f2-a8cc-8e9b58844e7f)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 29a5531f-ed12-4808-ad09-2bf5211d3728)(content(Whitespace\" \ + \"))))(Tile((id \ + 2ad10712-5ec2-4358-8497-5d99bc9c8f50)(label(hd))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 738f58ab-ee3c-456b-90d4-afbc2f2e4bcd)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 60f6ff93-c4dc-40b7-8823-4fcb20aba9fd)(content(Whitespace\" \ + \"))))(Tile((id \ + 4c27407e-4cb2-480b-8668-b5d3b6be523c)(label(tl))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 4b434ce9-58d0-406b-acbd-0f3fd270cd8b)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + d2bdda77-4a24-42d0-bb9b-ac0d29b95c36)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + cb1a0a21-5263-4fbb-81e1-40670a992fcf)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 18810ad0-5193-4365-abc4-58d900ed75b4)(label(test \ + end))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 0543e40f-7231-4c7e-a3c3-d30f5fbcf49d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + b33ec56a-11f7-4b4b-a529-84fb05507bd1)(label(List.fold_left))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 588a445b-c069-4dfe-8d1e-c92c98a266e6)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 3a56d226-84c6-45cd-bb34-d11ee69b487a)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 705919d8-223e-4994-aae9-1d180ccbf7bb)(content(Whitespace\" \ + \"))))(Tile((id \ + d379c978-4ff4-4246-8a68-1209a8204c90)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 394d0922-bd87-4077-9653-789bfa060603)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + ba88dcda-e1f4-4d70-ac6e-ee9a3c3e8a8b)(content(Whitespace\" \ + \"))))(Tile((id \ + 00113413-8b98-4c9a-b4b1-664179ebe5b9)(label(acc))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 0c703f33-9902-449a-b0b5-61c261285ba9)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 7946a9d7-3986-40e7-8079-b5c35efb5e6b)(content(Whitespace\" \ + \"))))(Tile((id \ + cd651513-786b-437d-85a9-b9f69029e566)(label(x))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + f3498607-6a46-43d9-bee2-87790e596bb3)(content(Whitespace\" \ + \"))))(Tile((id \ + 947def8a-69d5-4152-8db6-caec2c38d78a)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort Exp))((shape(Concave \ + 5))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 7402f671-116f-42cf-8236-4b01ab084241)(content(Whitespace\" \ + \"))))(Tile((id \ + 83f57558-2745-4c27-8e0e-c4ed577dcd58)(label(acc))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + ba8b3769-0ae7-4d8a-8cb0-505599d9ca91)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 835ce9ce-f6e3-4641-ab4c-dc620508ae17)(content(Whitespace\" \ + \"))))(Tile((id \ + b4e5f854-a653-49f9-a947-76bd76bfe8c7)(label(666))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 099996b9-0a44-447a-b03b-808d23f51a62)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + aa77209f-7087-4fd4-bacc-b95ecfdb1348)(content(Whitespace\" \ + \"))))(Tile((id \ + b32ffefb-6c1b-4b77-b860-4e931d5fe384)(label([]))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + ac5a88fa-b8ef-4269-ab17-6f95dff98275)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 27a43202-03b5-4dae-a825-803273112d6e)(label(==))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 8))(sort Exp))((shape(Concave \ + 8))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 5fb9cb54-377d-4e30-b720-82a573472e05)(content(Whitespace\" \ + \"))))(Tile((id \ + 6a051434-c39b-4907-87af-7d186ff23d94)(label(666))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 474d18a6-ca02-48f3-b14b-25174bafc105)(content(Whitespace\" \ + \")))))))))(Tile((id \ + 6285cb55-5f1e-4478-9b29-5dd80cf132a6)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort Exp))((shape(Concave \ + 10))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + fbbcb556-3761-4714-96d8-df47e906eba8)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 57cb7758-3f0d-40b0-b5be-137520e8ab43)(label(test \ + end))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + e987bd9c-d522-41a4-9cfc-446db7033395)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + f1691739-ac76-4c1a-94d1-a3eff16dfcdf)(label(List.fold_left))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 6247599e-9300-446a-9c7f-9ba35900c51a)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 302492e2-825f-4a7c-b604-19d0b2e8405e)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + cc8fc221-393b-40a2-8e89-7b7ea9bedf2e)(content(Whitespace\" \ + \"))))(Tile((id \ + 2f6f3eb5-4de2-4a2e-87e8-d7507ff8929c)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 3487c43d-acde-401f-a204-7a78f14f4083)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 330914e9-362d-4641-ad71-b919df9c4342)(content(Whitespace\" \ + \"))))(Tile((id \ + 95954891-c028-4894-977f-e4a794a3d335)(label(acc))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 9a41b1d0-e4b0-4555-ac1d-5853c01477d6)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + c88f2a42-388a-41b6-875a-7942ef1dfba5)(content(Whitespace\" \ + \"))))(Tile((id \ + 183c1306-4647-4bfd-843e-fef23d5e5c07)(label(x))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 59075557-36fe-4c79-a90e-35ddeebfc2b1)(content(Whitespace\" \ + \"))))(Tile((id \ + 19e633dc-ae05-4e1a-ae8e-7f60866eb245)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort Exp))((shape(Concave \ + 5))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + bbb98642-8c7a-449e-bb94-632fc6ecafda)(content(Whitespace\" \ + \"))))(Tile((id \ + dd922e79-b5f3-4fc1-ae67-f60df34e7c19)(label(acc))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 2595d043-0fa5-4098-8cfd-51e781074372)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + a9476e32-5257-4413-9077-7884ec2c4012)(content(Whitespace\" \ + \"))))(Tile((id \ + 97822e87-f014-4861-be83-7fcca394ec6d)(label(0))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 4ffa0bdf-f148-4213-a2da-b84947f9249c)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 92cbbb13-80d4-41da-a765-db99f1cfb6bf)(content(Whitespace\" \ + \"))))(Tile((id 14ab559a-506c-4e83-9c1d-53cce482e573)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 7f709423-a13e-4f73-a4f9-e9b1ff91d754)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 9c52e640-c75a-4d63-8c1b-b22c5fddcaa8)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 12d08bde-da4b-4f11-bfe1-970a90075d9c)(content(Whitespace\" \ + \"))))(Tile((id \ + 090f900a-50da-41ad-bc45-578c5703031c)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 058940ec-f2ff-4f46-a54f-3caa1305e6a6)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 548d1b17-ad87-4f0b-b1b0-f3e297758a71)(content(Whitespace\" \ + \"))))(Tile((id \ + 2f34bb29-48be-489b-a3fc-8c1f81b92681)(label(3))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + 394b7c6b-bb17-4278-9b9f-b2ba473be9db)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 263bc234-9143-4d33-8159-4dffa4043655)(label(==))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 8))(sort Exp))((shape(Concave \ + 8))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + e995d998-adb5-4647-9133-3b19c9b2fd99)(content(Whitespace\" \ + \"))))(Tile((id \ + 89c8c835-4c79-4804-81f5-e901a4606fa9)(label(6))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + daee453f-f468-4ac3-8034-b434bf532fe6)(content(Whitespace\" \ + \")))))))))(Tile((id \ + bc912c45-6895-4f8d-82e0-d5cec2cff152)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort Exp))((shape(Concave \ + 10))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 22bd9e58-e8fe-4449-871e-d67daf03ccba)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + ab7736bf-b9ed-49e7-a8a1-8bd25f79e6d2)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 37d1a22b-6891-4614-a099-9a73e2649c37)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 9eb629dc-1220-409e-ad65-b2d2e5960de1)(content(Whitespace\" \ + \"))))(Tile((id \ + c113c27c-0bf8-4074-abba-f8497e91a0c7)(label(List.fold_right))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + b2f73be2-d2c3-4f11-a701-067b656351a8)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + b1d252f7-dbe6-447d-a1e3-ed6bf62fc023)(content(Whitespace\" \ + \"))))(Tile((id \ + abd336ee-0638-40fa-9821-cb65b86d69c0)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 7efbb185-989d-48af-94da-5e4850e9c78e)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + a988146d-f4e4-487c-9d55-baaa5228d6aa)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + daa29dbc-7fcc-47c2-b375-b66410f44388)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 1d72166a-c935-4632-b1f5-3b09e0ff1e2d)(content(Whitespace\" \ + \"))))(Tile((id \ + 73ed7e29-17e5-45fa-b4e9-fbfbe479971b)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Tile((id \ + 66bde5f3-fa20-4926-95f0-e242090e4ee4)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + ecb002de-e103-4323-9ddd-4eba4dfc0c1d)(content(Whitespace\" \ + \"))))(Tile((id \ + f817abb2-ac1c-4504-99c6-0a0b4ccc85bd)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 527b26b7-f5d5-46a0-bb67-0e60a31b8929)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 35d47513-5d33-42df-89f2-2df59a773bf6)(content(Whitespace\" \ + \"))))(Tile((id 0da52621-d5b6-400e-bebe-dd00fe906e9b)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 9f00bb57-2c15-4c07-9eeb-74353d4ad680)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Tile((id \ + c078b9ff-c518-4528-ad79-7207e22c4771)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 0e661771-064b-4a8d-9187-36c8a95d646d)(content(Whitespace\" \ + \"))))(Tile((id \ + e0642d0a-18be-4181-a1fc-10f1b47d71ce)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Tile((id \ + e671e091-9a74-43ea-b890-699b377e701d)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 7bd9e35d-922f-48d9-b7a2-7392a5e8b05f)(content(Whitespace\" \ + \"))))(Tile((id \ + 519ebdcd-d9d6-4589-bd29-1ff914a0b14b)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 3c914306-2ea6-4160-83ee-676c87722d50)(content(Whitespace\" \ + \")))))((Secondary((id \ + 55e9fbea-7168-4d29-91fc-c5f8923060f1)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + c25e68aa-4e96-4585-b6ae-d0f8d83c7458)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 373f618c-9708-4515-9a40-29c68e0d45a5)(content(Whitespace\" \ + \"))))(Tile((id \ + 10f996f3-e848-4dec-8fd0-cb1cb4913bd7)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 39c4c721-7fbc-4851-8c97-a19c371dfc69)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 61f5f7bf-0efd-44bc-9053-a7cbc2acb4a0)(content(Whitespace\" \ + \"))))(Tile((id \ + 36d3dd45-9d9e-4d3b-83e1-93c3533f4c23)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 93e74181-b7a1-40cc-a9c3-635859158bff)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + adc8d3ae-997d-4562-b90f-665f96d82975)(content(Whitespace\" \ + \"))))(Tile((id \ + 7025fc68-cf50-42b1-ad19-1de48de21512)(label(acc))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 143dc07a-d794-4f53-bf5e-4a30eb967f1c)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + ee1a3cd0-b099-42b6-b894-0f9315f93fff)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 93d17ac2-8132-4c13-9b96-d5ef9124c138)(label(case \ + end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 78d5c774-9723-4987-bde0-b1304f63420e)(content(Whitespace\" \ + \"))))(Tile((id \ + 74e46937-4146-4653-b1d8-4d6000d9feab)(label(xs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 203c0ff9-cb43-4808-b1c6-6b0269316bba)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 5b48ff6f-7e98-499c-adc6-3d88106644be)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + f45b01fa-d242-4b70-801c-368f92e79ac3)(content(Whitespace\" \ + \"))))(Tile((id \ + 96ae55fe-557b-44b0-b6d7-12e4e9af78d7)(label([]))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 9564007b-d7f6-4308-b605-625646fecd9f)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 766db611-8c8f-4903-bfde-bf093f71a650)(content(Whitespace\" \ + \"))))(Tile((id \ + 7b1b71ed-924b-4b0c-a091-15228b65ad4b)(label(acc))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 9422ccdb-664a-418c-9ff7-4029a3d36b68)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 48041f5e-1fab-42f8-b506-420c5ecbb0fe)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + d1a750ae-5fed-40b8-99f6-bceb53f442d4)(content(Whitespace\" \ + \"))))(Tile((id \ + a192fa92-0fed-4642-ab7a-4354963a081f)(label(hd))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + c93d436d-4035-418b-8c54-fbadf6f92617)(label(::))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 6))(sort Pat))((shape(Concave \ + 6))(sort Pat))))))(shards(0))(children())))(Tile((id \ + a3af13a3-1a11-403e-ab23-00fe321edb92)(label(tl))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 72388fc2-7613-45b9-9f9c-c3da0014e717)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 0a5b143b-91c0-4b2a-aee9-719491cc7b42)(content(Whitespace\" \ + \"))))(Tile((id \ + df432f2d-62cc-4e8a-98e8-8c173ea669ff)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 0ac54581-804d-487f-9608-e6e991e5667f)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 1e6f7d74-a8a1-4e31-93f4-ee442713ea9a)(label(hd))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + b3bf4add-6bf3-4ee5-8ec2-6a1d7c76815e)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + b735028a-5a30-4477-9494-3355ee3e3397)(content(Whitespace\" \ + \"))))(Tile((id \ + 14bcbd23-38e7-4c70-bf9e-f5c18cb2a8e3)(label(List.fold_right))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + b7179ba3-5b96-4009-8fec-866ab251f275)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 5590d369-9523-4f63-bebe-509a5c435b06)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + ce6e3910-b8cc-4384-9cb9-f1223bf5bfdd)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 2cd207bc-bc7e-4488-b85f-c13d3d9ed2e3)(content(Whitespace\" \ + \"))))(Tile((id \ + c02dea67-ca95-499c-9713-156289206469)(label(tl))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 62efb2ca-cbf9-4e5d-919c-716b791d9cf5)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 0ade3813-fdbf-4eee-bf9d-8af450acdcc1)(content(Whitespace\" \ + \"))))(Tile((id \ + 3ad181a6-339d-409b-971c-d3084f208fc1)(label(acc))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + 21345679-13ef-4de4-adcf-65faea9d3d2d)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 80b338df-8aeb-462d-a3eb-61e55f965181)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + cd920264-284a-4b17-bda6-6724d5d0f44f)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 6ced6f95-37ce-4f0c-a5e1-4a2fa667f635)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + a5c8578e-90ab-4fce-b568-dc5356a6cdc0)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 6102ba0a-63a9-4bb8-857b-fff999bd6307)(content(Whitespace\" \ + \"))))(Tile((id \ + 20342e1d-0905-4dac-bbc7-676129ea46c9)(label(List.fold_left2))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 7bba4f7d-60a5-4307-9ecc-b2b2de6de9a6)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + b7580602-9a42-4c58-860f-bb34018aaba2)(content(Whitespace\" \ + \"))))(Tile((id \ + d53a3798-32a0-47fe-97f5-4200ef2425bf)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + ab1ac38a-66bf-4822-bb49-f498a3e0feb0)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 6e9d1dee-b9dc-40ea-aca7-12dff9506533)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 0dbc3572-a7a7-47fa-9555-66c14d52c1ff)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 380fad65-d746-4b76-adac-0a0af8e0228e)(content(Whitespace\" \ + \"))))(Tile((id \ + 5c4c377d-666e-4900-b5c9-055bb40cc7b6)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + e4ea6ef5-4839-465d-8581-9e6b6e81209c)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 9b6dc628-fd3a-46b5-9cfc-7da036fafb0a)(content(Whitespace\" \ + \"))))(Tile((id \ + a89ed7d3-7f97-4655-8431-301db30d8b9b)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 32dbe90d-87c5-4a8c-b8f4-98a2e9db5f04)(content(Whitespace\" \ + \"))))(Tile((id \ + 80c90791-d835-40e3-b9ff-508da67eb884)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + bf2041cb-8b63-406f-9b7c-d8a401478092)(content(Whitespace\" \ + \"))))(Tile((id \ + 7f5389e9-0be6-4dd0-8ded-97cca183ac2f)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + fc72aa4f-85bb-4027-847f-b265e4e8088b)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 7cd6fb03-285e-4483-8c81-9e1bf9d7665f)(content(Whitespace\" \ + \"))))(Tile((id \ + a2aaf02f-8492-4680-9ed3-58f0388b46d1)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 42a25a23-4ea5-4013-9f63-46ce8cec0122)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + bb86541a-754c-416e-8d67-dc663f4f14e6)(content(Whitespace\" \ + \"))))(Tile((id 11784a19-09ed-42bd-ad6c-bf8984fc54b8)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + d11ab86b-b3a4-4b02-86bc-2e72fd88c623)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Tile((id \ + 877f91f0-5dd1-4809-819d-992cdd003875)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 63f807b0-398e-4bf7-8130-fccadc3393be)(content(Whitespace\" \ + \"))))(Tile((id 269be787-563b-460e-ab22-311aefb69cb8)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 5fb32302-b653-4e4f-92f6-e117954b0698)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + e09f30a2-f166-4901-98dc-2f9285dcdc6a)(content(Whitespace\" \ + \"))))(Tile((id \ + 9c25451f-b7d9-4f9b-a400-6b5ce8a06b21)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 949cc82f-ade8-4d4c-b399-7a2f2841285a)(content(Whitespace\" \ + \"))))(Tile((id 65e26c1f-76fd-4ddc-8e26-92fc0e0ed8f3)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 644e9754-1254-4dd5-ad98-1143b8849664)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + b4ec5d28-6714-4896-8352-04638e3bfda5)(content(Whitespace\" \ + \")))))((Secondary((id \ + 4fc3732d-ec4c-4e50-8636-739abe0514b1)(content(Whitespace\" \ + \"))))(Secondary((id \ + 0e090073-028b-4820-87c6-7bcfb443b60a)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + c1068114-8bd3-412b-978d-cf8d3449d859)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + e7bc5aec-569c-4972-9253-a8fe5afdb8ff)(content(Whitespace\" \ + \"))))(Tile((id \ + eb502ee3-ff45-4316-ae3b-7a80ce65853b)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 3b3124bf-e982-482e-94ec-76c41df292f8)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 6df58f0a-fd6e-4278-9fb8-5e3193137242)(content(Whitespace\" \ + \"))))(Tile((id \ + 370f191c-3047-4165-8802-92298535d4ca)(label(acc))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + c0145998-586e-46de-8c18-4d423f74004a)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 4429ba72-aae8-4a4d-81f2-f925e7e283d2)(content(Whitespace\" \ + \"))))(Tile((id \ + 0ae76c32-3222-4c44-9ee1-1bc4ca5efc76)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + b92a26dc-1147-444c-8d03-b696d6c4a2e5)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + bebc850c-94b3-401d-8e1c-7559933da04d)(content(Whitespace\" \ + \"))))(Tile((id \ + e193b1dc-7bb8-46fd-a75b-c283bd3db855)(label(ys))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 02132e1a-dd6a-4e1a-9c17-e868c1e9c78d)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + b01b9f6d-646c-4f28-8f39-192e66d99768)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 1f64f970-b27c-4cd4-9bd3-6b8068dfeb41)(label(case \ + end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 167eacfb-69a4-4346-8ed9-ea7ae6c2080a)(content(Whitespace\" \ + \"))))(Tile((id \ + e865a619-1b4a-4a16-b529-4227293426b9)(label(xs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + bf8125f1-0fbd-40ad-b2b1-952531f9ec14)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 64a44551-7862-4461-94cb-225dc13d4cb1)(content(Whitespace\" \ + \"))))(Tile((id \ + 1f6c63b4-0419-41ae-a2e3-9a730501199a)(label(ys))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 7d39007e-6b08-417a-98ce-bd975640705a)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 84237c8a-8d57-4cd0-903f-e71e9a2ec128)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + a9061940-af06-473b-9ddc-d7de795dd14a)(content(Whitespace\" \ + \"))))(Tile((id \ + cb60c566-192e-4461-aac1-1acb23b90a69)(label([]))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + fe6a88b4-180a-4e57-8ea7-d4813be1675a)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + c185a8d6-6ca4-4d28-a916-88687ce69e1d)(content(Whitespace\" \ + \"))))(Tile((id \ + a17a10fd-c510-492f-b53c-458593157bf0)(label([]))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + d70452b3-5cea-4760-aca6-e843602de915)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + d7474f43-cb19-4d65-b16e-942895da7494)(content(Whitespace\" \ + \"))))(Tile((id \ + aeccb6d8-663f-478d-8b4a-732d23e51101)(label(acc))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + b5f74de4-c7b8-4b61-a981-704e8b8590e6)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 1ac47be2-ebad-4d7b-b642-4972d9a2561a)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + ae1c565a-df5b-4476-bd1e-ad4e15625f36)(content(Whitespace\" \ + \"))))(Tile((id \ + 3d4c1fbc-62bb-4cb2-8e01-d0b5913142d0)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + f7f02476-ce9a-4ade-b3df-76d7bff0bdf6)(label(::))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 6))(sort Pat))((shape(Concave \ + 6))(sort Pat))))))(shards(0))(children())))(Tile((id \ + f3d74b2f-b46f-42e0-b070-393338c7ed8f)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 8a26707e-f333-437a-a020-97961257e32f)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + e4b93b61-dc4b-4655-bb4f-35f1a2a2ef96)(content(Whitespace\" \ + \"))))(Tile((id \ + 8b5a2ad0-76c5-4040-be60-4aa2b429c1ea)(label(y))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 7d451dae-586b-4536-baf0-707b00318663)(label(::))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 6))(sort Pat))((shape(Concave \ + 6))(sort Pat))))))(shards(0))(children())))(Tile((id \ + dcea6d77-5d6b-4d51-a82f-66d08868b656)(label(ys))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + cb70d741-66e7-4b44-bca3-0ff3c41812fa)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 4f475723-2ec7-4004-b444-71545ade6ad2)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + e2762769-512b-4cdd-a510-6306e19fc041)(label(List.fold_left2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + b4396974-0006-4da8-a497-fecb800d4d23)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 0f5a21ae-2f03-452a-abf7-2072e6570573)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + bd561eac-23b1-4573-8b75-c1501a0971a1)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 7848be46-87d3-4ab0-9f4f-44feeab3cc93)(content(Whitespace\" \ + \"))))(Tile((id \ + 95f2882c-b87d-418f-af6f-6ec9b7a2e60c)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 1eea3433-462a-4f1c-b4d6-282d6248bd49)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + dd7a4fc0-6e69-4a37-8b3a-8e246d98ab0a)(label(acc))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 2c2a60ee-191b-47e3-8acc-cb87723ae569)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 0a35437f-d979-416d-9e3a-12e0894b21ab)(content(Whitespace\" \ + \"))))(Tile((id \ + 2f0f228b-936f-4061-9dcd-6bcd52b70e14)(label(x))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 437c3178-1418-4db1-86f3-c89ba82d9b60)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 315a0588-bb23-4455-8ce0-ceb01f6defc2)(content(Whitespace\" \ + \"))))(Tile((id \ + 40d0f14b-bdd9-4a1a-ad7a-ef188a04f9fa)(label(y))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 7cd5dc0c-b11d-408e-8119-09a5437269e5)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + f2eb6c97-350c-4324-b18a-644d0cc98b16)(content(Whitespace\" \ + \"))))(Tile((id \ + b27214a2-4575-4c07-9814-4d60aea8c5dd)(label(xs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 2232a2fe-078f-40f4-8056-ecf055c1a05e)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + b36c910c-e2c8-4940-af8c-5798164c70d0)(content(Whitespace\" \ + \"))))(Tile((id \ + d3692148-ca69-40b5-8682-a6deff29f74a)(label(ys))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 37098567-12a3-4898-8fe6-008669a889e5)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 6b8bcd74-c8a0-4d0f-95ea-4bb92479b0c0)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 9ace70ad-885a-4099-8d4c-a98a5450efef)(content(Whitespace\" \ + \"))))(Tile((id \ + ea8c0273-fb6b-4053-b52f-ea2ba99b0e66)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 57cb0036-26da-4929-9505-4ddba1b482d7)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 562180c7-60b4-455a-ae1d-d337837acae0)(content(Whitespace\" \ + \"))))(Tile((id \ + 3aac500c-5b28-4570-9050-126d595157e9)(label(?))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + af660ed8-e09e-44e3-88df-3ea41d393c99)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 36b51e1a-6142-471f-8131-5919198fb6b0)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 11c73617-cb65-4a8b-bff8-86d3f8e81eb0)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + ad1a6355-2eef-4618-b651-e3e46afbecc2)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 7728cd24-d991-4f65-9f38-c6f99dc964a9)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + b480e610-73c4-4433-aa7d-12300d4583c8)(content(Whitespace\" \ + \"))))(Tile((id \ + b268f20d-e350-4f92-b7b5-c9c33d9e1af0)(label(List.fold_right2))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 8588bd6c-38f0-4289-b802-2d577fb05273)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + a2dc2e36-9790-425d-8c0e-dde50e0461c4)(content(Whitespace\" \ + \"))))(Tile((id \ + 79d1aba4-160e-409c-8825-2109decad1c8)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 2ddce156-eec4-479b-9a27-a376d302fb0f)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 66c03c38-2f1d-44ec-b238-7e4ebd08f062)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 3db3ba7b-f9fe-4900-8296-0daa1471fbc1)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 91ad9bab-d805-46ef-a2c9-16d221dfce6c)(content(Whitespace\" \ + \"))))(Tile((id \ + 98c36316-e6ca-49a0-8dc8-2e3919d0ee08)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 6f9944a2-bc2d-41df-893e-681d701ccf8f)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 25e2e9b8-c863-46d9-9626-9a56ca4c9d81)(content(Whitespace\" \ + \"))))(Tile((id \ + 690dfc2d-6552-4882-b43a-7e45eaa0e0fb)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 1167b456-96a4-40eb-8dd1-35d2aecca371)(content(Whitespace\" \ + \"))))(Tile((id \ + 4878cd79-1607-45d7-866a-cdeaf18f9041)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 4369d7dd-9b77-42aa-bff8-15c84fa54495)(content(Whitespace\" \ + \"))))(Tile((id \ + 72354c5b-d0a9-44b9-bf92-d645543dc35c)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + a39758df-217b-41e2-b770-853c18bbefe6)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + f2515123-cf7e-4b7c-acde-10495e9a12b9)(content(Whitespace\" \ + \"))))(Tile((id 32ead011-b630-419a-ba9e-59e78a66acf3)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 33722069-ccdd-44e8-b281-71691a3c93dc)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Tile((id \ + a9b1eb92-5785-4878-88b1-4d897ebd1e1c)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + e892cd91-a216-4e5e-946e-53c09692c437)(content(Whitespace\" \ + \"))))(Tile((id 1e725015-286b-4e45-9be5-6542c9141f05)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 39b89eec-712e-4dbd-b80b-e6840577d178)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Tile((id \ + d999d7d7-4448-4215-aa1d-9ddafa1d9e04)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + ad417e54-b328-4cbb-a175-b762e6330f3f)(content(Whitespace\" \ + \"))))(Tile((id \ + a1948435-31a2-4987-8ada-0d05b1b33726)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 1567e96c-74b1-4ce8-962d-5b2480ad8492)(content(Whitespace\" \ + \"))))(Tile((id \ + e9588f85-4953-445a-846f-549f5346ccb4)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + b4f5064d-bc91-453c-9208-e732ac848d24)(content(Whitespace\" \ + \"))))(Tile((id a864765b-fc1f-425b-9a7c-4947298cc729)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 9be87fae-d4cf-45ec-93eb-db1056c53df0)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + bd943691-427a-4b4d-b624-85bca24db907)(content(Whitespace\" \ + \")))))((Secondary((id \ + a03e1ab6-dbb9-4b13-862f-2804b1b47c45)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + caa0627c-1621-4453-8fdd-92bdf8f6191d)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 1acc5325-ef6b-42e9-835d-84ecf32a5751)(content(Whitespace\" \ + \"))))(Tile((id \ + 5b716dd9-e0dd-4ee4-8baa-12152d1fcdb1)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 867e55ba-2247-48b5-b05e-4b1fb48774c9)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 4d9df1b3-5ba0-4511-a2f5-0fcf2a3a6188)(content(Whitespace\" \ + \"))))(Tile((id \ + e573a863-f333-4a4f-b000-a7d929fa0701)(label(acc))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 434e8ec8-f2c2-45e7-94e6-bd745d6bbde2)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + e1384a21-e974-47c8-9dce-d0077634c038)(content(Whitespace\" \ + \"))))(Tile((id \ + fc96fa0e-d6b4-4c6d-8f7b-be478aef2613)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 34c6fdc6-9999-4065-9b59-a285d129759b)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + c5a61e42-19ce-4e9e-91a9-fa7a7c072fe8)(content(Whitespace\" \ + \"))))(Tile((id \ + 59e8e779-a018-4439-8cac-d2a4b8f5bf2f)(label(ys))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 9a8d28ae-0919-48c0-b9eb-8fd9fb80de3a)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 67edc294-7f34-4660-85fc-8461b65f9dba)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 939c57b5-be1b-4966-aa1d-6c24d5ff41b9)(label(case \ + end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 44a1a399-7b84-42b0-aef2-12d2fa41a8cc)(content(Whitespace\" \ + \"))))(Tile((id \ + 394b5823-5859-4761-914c-de5f714e2536)(label(xs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + d311ab61-4786-477a-8b4b-da0942c3dc8e)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 0edb9c8e-95de-4319-846e-93bec62d63cd)(content(Whitespace\" \ + \"))))(Tile((id \ + 80cd1cfc-6c76-4b1b-959d-f2585693263a)(label(ys))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 6f8816a1-37a7-4b33-b985-3ea79d89d1bb)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 80674d0e-96c8-4ab8-9ab0-ea8c134d3c01)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 79896376-d2a4-4c0f-a7de-ecd698e925ee)(content(Whitespace\" \ + \"))))(Tile((id \ + 08afa37e-ba9e-4257-8438-548cffd157a6)(label([]))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 123c6404-b26f-46a6-b29a-92a42af96227)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 65691322-2830-44dc-9c73-f906b0429086)(content(Whitespace\" \ + \"))))(Tile((id \ + 024cb586-37f0-40ae-9c14-6c91e4b09679)(label([]))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 1c050e44-665b-439c-9cb1-80dbef3bd93f)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 07c332ec-b93c-4537-8be5-4e764a178d4c)(content(Whitespace\" \ + \"))))(Tile((id \ + 98520924-698a-4799-af2a-c66f28deab84)(label(acc))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 4178d220-6d05-4449-a864-24aed1446fc7)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 488a10c3-ace6-4703-9079-e19638c7287e)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 1730ae31-79cd-42bb-a73c-6798253aac8b)(content(Whitespace\" \ + \"))))(Tile((id \ + 4c6b7cfa-44e8-4fbe-9d0e-afbed58ccab1)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + d66e42d4-13e7-457a-8659-1fa0523f3669)(label(::))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 6))(sort Pat))((shape(Concave \ + 6))(sort Pat))))))(shards(0))(children())))(Tile((id \ + 37360333-dc26-417d-aa58-af044ae768a6)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 8c0270ae-0703-4254-81c5-872327ad71e3)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + e9c60497-a3f9-4947-b15a-539bf4be476c)(content(Whitespace\" \ + \"))))(Tile((id \ + 93539c0f-6879-4d8f-a4b0-2657a7fbbf69)(label(y))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 760a26f6-1caa-4afc-819a-bf2195ec30a0)(label(::))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 6))(sort Pat))((shape(Concave \ + 6))(sort Pat))))))(shards(0))(children())))(Tile((id \ + 33120237-e8ad-48b1-96f2-6c8f2521e660)(label(ys))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + ea23f4ec-8ecf-4336-9d76-3d44255d511b)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 3d104a7c-3beb-4284-88c5-eb4c5570b448)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 78b7f231-d8d6-4a9d-9711-44f3c9f7ac86)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 449e846b-517c-4b75-b9b3-68c2631a1d98)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 048d0956-2e30-4c13-bbc8-ec0884300256)(label(x))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 6a0ff8c2-d486-4b01-a9f5-f6e957c27f36)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 8a0bc97e-2968-4611-84f9-0f1c6d32479e)(content(Whitespace\" \ + \"))))(Tile((id \ + b90d52fb-0a93-4e9d-9675-1d1f250282a8)(label(y))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 225b0d75-ea94-48e9-83df-f6d91a0bfb57)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + f0e3b862-d496-4b08-99b3-4443dd5aeaf9)(content(Whitespace\" \ + \"))))(Tile((id \ + 112ca488-a0b7-4de6-a175-72d68c3dfec4)(label(List.fold_right2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 58ae05f4-4119-4f12-8be7-11527fb14293)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + b4926aa6-5d61-402e-ab9f-fc9ae5eabf0f)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 3de0ee5c-e497-42f9-8f61-8b96a9b22139)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + bf274319-a882-4b22-8369-da2ff20f9acb)(content(Whitespace\" \ + \"))))(Tile((id \ + 04ef48c3-1596-484b-9dc9-0e28e8cfbd2f)(label(xs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + c0afd3c1-9072-4df3-81c0-49f0282780b1)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + f804e508-cf94-4fb5-8ded-0619baefdcc8)(content(Whitespace\" \ + \"))))(Tile((id \ + 2cdb27b3-baab-4cfb-b2dd-cae062202d31)(label(ys))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + f34a43f9-b5c9-4d93-8603-ee692be03561)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 2aeb0c60-ec89-4b94-8b4e-6ba7dc4de60b)(content(Whitespace\" \ + \"))))(Tile((id \ + c67d2a7f-b256-4f3d-98b2-a048995c0f9d)(label(acc))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + 84f296cd-d5c9-49b7-91ed-da2d0d9fffe0)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + b9382c05-c34e-444f-92c3-52496d0a6a0a)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 053022ea-d35c-4280-906b-e3c1472bd018)(content(Whitespace\" \ + \"))))(Tile((id \ + 59cbb5be-6f62-40b3-89f9-12f2f37f88df)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 3e35a4b5-bfb2-4d55-b591-44c6ca465296)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + ece64bd7-80ff-46f5-9097-6c7930bba5be)(content(Whitespace\" \ + \"))))(Tile((id \ + 4e154390-ea92-4aba-95d3-5adf8d1483a2)(label(?))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + d671be75-ea8e-4466-b79c-7ae925682e5c)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + c6a25699-0d5e-4176-82db-0f79b0dd5b92)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 75c834b8-57b7-47d7-a44e-cca8d7503d67)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 9936dc53-6e8d-42af-a18f-50e8c71d8344)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + ee459bb7-4c5f-44d4-b63a-b8b2ce697815)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 030ea13c-6730-4196-a2c5-208e150104fb)(content(Whitespace\" \ + \"))))(Tile((id \ + dd9d6435-c97f-4278-a910-bda6bd941fdd)(label(List.map))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + b8c99349-619d-48f3-8344-6069fe72149d)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 56eece8e-5782-4e2f-bb35-c8df01a30b62)(content(Whitespace\" \ + \"))))(Tile((id \ + cb406c55-5706-4108-845a-d7ecc890834c)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 0e7e465c-3ffc-4324-be47-161c843e908f)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 7372ed79-3fcd-475c-b059-95210510c0cf)(content(Whitespace\" \ + \"))))(Tile((id \ + 07b13bea-db5d-454c-91b0-cc450b8c2726)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 43d521ab-616e-44c3-a207-ac015f93000c)(content(Whitespace\" \ + \"))))(Tile((id \ + 0404bf00-bd76-438f-86f5-44a23060419a)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + f2dc4d67-d084-4fe3-9aea-2d04f7eb9262)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 03e22d24-6257-4119-80d4-680465c5e7f7)(content(Whitespace\" \ + \"))))(Tile((id e5fd2c6b-8099-4f07-a664-98e133fcfe27)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 97c41d01-fa73-4447-bc4c-2295f7a0be8f)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 2d6004d7-cfca-45c3-b44c-a10879043255)(content(Whitespace\" \ + \"))))(Tile((id \ + 6557588c-2cba-499f-ba21-5810522d5de4)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 8f8c45b4-8d80-40a0-92ac-411210b81695)(content(Whitespace\" \ + \"))))(Tile((id \ + 681b56ae-255c-4c4b-860a-5a0764e64735)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + ef8c58f5-958d-4289-a061-ce0fbf62be82)(content(Whitespace\" \ + \")))))((Secondary((id \ + 907ca291-cccd-48be-968f-2d873bbb2f88)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + fee52af9-bf19-4b58-b84e-ba6c86a79caa)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 6db5dd83-872f-499e-80f6-9b0bc46dc714)(content(Whitespace\" \ + \"))))(Tile((id \ + ff7b7de5-cb8b-4afe-8efd-29f360c2f794)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + d508604f-99ed-4bcb-8894-bab1d3de153f)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 79558989-20eb-454d-9fe0-69bf23aa069e)(content(Whitespace\" \ + \"))))(Tile((id \ + 3d09d6ed-8214-4b3d-bd2a-80c74305c1ff)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 7b65b951-d3f1-4d07-abae-72118869539d)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + a4e8d381-b27c-4c73-9a92-baa42276428c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + a2ff2254-900f-4805-b23f-58b44e5743bb)(label(List.fold_right))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 9ce612aa-2c62-4efe-a339-fbc01fd91b76)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 6f44203c-37e2-463b-ac9b-a66dd68901f3)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 475d76f1-2222-4524-aa60-0bf6997bd7f1)(content(Whitespace\" \ + \"))))(Tile((id \ + 439a3ffa-87aa-496c-8b60-144f9c0d918a)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 53e3acab-0391-486f-b749-398a00d49c44)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 9e945afb-ebd2-4c1d-b1ae-2f8eabaf809e)(content(Whitespace\" \ + \"))))(Tile((id \ + 03d3a953-ad1a-47e9-a0dc-cbb15555af49)(label(acc))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 2b25a136-c9f5-4d39-8a14-c914369a2858)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 634517e7-4819-40d0-bd42-fd1600aad366)(content(Whitespace\" \ + \"))))(Tile((id \ + cbb8004c-6347-414f-b0f2-bd7dd313f6a8)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 2362db5a-527d-4cba-91e0-17ec84be2359)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 310bcf22-0eb4-403d-8686-91dfdb7c03b5)(label(x))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 628e9b5b-e559-43d1-b0fc-7bbec89bce38)(label(::))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 6))(sort Exp))((shape(Concave \ + 6))(sort Exp))))))(shards(0))(children())))(Tile((id \ + a9956684-58b4-497e-9142-59580058ff6c)(label(acc))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + e5b5aa8f-7fcd-495d-b046-a333a6ea0e86)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 7ec54510-497c-47ae-a0bd-abdc7157721e)(content(Whitespace\" \ + \"))))(Tile((id \ + 08294314-ee0a-4852-82eb-9c5d6245a680)(label(xs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + c4a023b2-b8bc-4a18-853a-ad96bd4cff38)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + ead516ed-5bac-4790-b3bb-332656bbbe5e)(content(Whitespace\" \ + \"))))(Tile((id \ + f8917934-1500-4507-9ac6-701bf268620f)(label([]))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 8b4c5c57-8e91-41ea-a0f0-3e509747ac3b)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 700b6b33-68b1-44ce-a9d4-e98877116316)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 97e5ceb0-b1d6-4013-a3ea-b413a102d20f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + a6c5f05d-64c2-4d87-963c-874568b0b597)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 15e171ec-0bc2-41d6-82ea-72b936be8197)(content(Whitespace\" \ + \"))))(Tile((id \ + a5e7e99f-a53b-4ffa-9fc7-43d802a37c3b)(label(List.map2))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 30f70b1a-c199-4ecc-b7cf-77e46d6a3912)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 466db29d-9d3f-4c79-9e38-b3a0f198e0fd)(content(Whitespace\" \ + \"))))(Tile((id \ + 7981430e-dca6-476a-9c02-468a9e46502c)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + ca164ba4-7ab4-4717-9009-a72c596ac767)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 16aa16da-1293-489d-bba6-c5c97c077741)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + ff268502-83ae-4511-afdf-7a317e3e25c9)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Tile((id \ + bf1c0868-8f28-4069-9cd6-a634f2b685de)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 440b090a-ac9e-4925-b690-c46ae8bef5a9)(content(Whitespace\" \ + \"))))(Tile((id \ + 3706947c-a275-4fff-b23b-ba3c1d9a2063)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 1e2ec1d5-2ee2-48fb-9267-7c7fc7d9dda4)(content(Whitespace\" \ + \"))))(Tile((id \ + 664a0daf-c9d6-4ba8-9653-cdf7b39dc6ad)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 04293d20-c5f9-44f7-9536-748899af5c93)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 017d043c-b7b6-4e98-b18f-092ad0c76a9b)(content(Whitespace\" \ + \"))))(Tile((id 1817baea-1ae0-42c9-99fa-0b7d9ab56197)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 132dbb69-934a-4cdb-aad2-147adf985c49)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Tile((id \ + e5581daa-dff8-4bec-bc61-cccc735edde4)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + cff3b487-4963-4ab9-8dae-3b983d622017)(content(Whitespace\" \ + \"))))(Tile((id 788da3b8-f8d3-476a-82ef-89afd5be0cff)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 63f18e0b-1dae-4599-9cdd-fb1c16c03243)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + feeec7f8-088a-4b1c-a64f-f8d7f494d94e)(content(Whitespace\" \ + \"))))(Tile((id \ + b95855c9-1675-44e8-8f1a-f2d9caf2cc88)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + fe5794f2-616b-40be-a03b-892e4a75b5ad)(content(Whitespace\" \ + \"))))(Tile((id 046d67f3-15ea-4efa-8f84-27740fd8bee0)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 5f09b52c-4141-4273-ab84-2cadc4c6b0d9)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + a92a0555-430c-483d-9386-6f4e240f3828)(content(Whitespace\" \ + \")))))((Secondary((id \ + 5e41c0d5-f8f0-4a4d-bc02-7695ce264fe8)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d73579bf-dc16-4296-895a-18b42aeaf02e)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 3d414645-1848-49d2-bb45-ce515064ad81)(content(Whitespace\" \ + \"))))(Tile((id \ + b90599e9-d821-432f-a757-e5ad216ccb0b)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + c993e691-219f-4621-9b43-7111a41feff2)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + d0d77663-e340-4a26-ade1-01e8fbbbba0a)(content(Whitespace\" \ + \"))))(Tile((id \ + 2f2795b4-6563-4c42-b348-83e45a51c745)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 8bded980-ad07-4b90-a2b6-11b04053db16)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + b47f085a-20e3-461e-aec4-9af168b1fb52)(content(Whitespace\" \ + \"))))(Tile((id \ + e3e15cf5-8d5b-4f16-bce6-09eb8daa84c3)(label(ys))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 0496df37-06ad-4629-9c53-b97ec6d06b7b)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + f71104b9-f490-465c-88e8-b4642e9c7c95)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + a72442b2-e248-483f-ad57-ddb72d84afc6)(label(List.fold_left2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 72475256-3299-47f2-838a-e454572ba8df)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 04700a66-88d8-4a73-a4e1-0c44cbcf0d52)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 494e4327-0ea9-449d-93cd-7d8b431e368e)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + f619df20-a3f8-4858-89a8-2e23724b828a)(content(Whitespace\" \ + \"))))(Tile((id \ + 69bf66e1-5bfb-493e-b587-2c83c4a23ce3)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 7e56e555-c017-4c17-8398-5c54fe11ae95)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 52637c2d-f384-46a3-be53-e37a58fe69ef)(content(Whitespace\" \ + \"))))(Tile((id \ + af42ef90-eae1-4bf1-88c7-64a6ced59074)(label(y))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 2f1680ca-d998-4082-88ce-90edf039a872)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 5d23284b-8cd3-48bc-9a1c-9e14d51b1857)(content(Whitespace\" \ + \"))))(Tile((id \ + 7691035f-628c-42ef-aecb-465b3cd22daf)(label(acc))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 64af2b8c-9ff4-422c-9422-1f445e3f2907)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 05fff4f7-a2fc-47d0-bbfe-445cce7248d6)(content(Whitespace\" \ + \"))))(Tile((id \ + bc246c38-a8cf-40de-bd12-ff3735ec4149)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 026d9f93-dd29-4ed4-9322-9c5c2c896b43)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + b9149c3a-4701-4da4-bd4f-12074dcc2167)(label(x))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 7ffef7f8-5bc9-43ae-9d08-dacc853e8c19)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 5a919fc4-3500-475c-ba64-6f7af9208f7b)(content(Whitespace\" \ + \"))))(Tile((id \ + 5fe32af8-f4ca-4fc4-b875-975186cbcfe3)(label(y))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + f78b296f-0b7b-4fc9-bb00-75abac404d02)(label(::))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 6))(sort Exp))((shape(Concave \ + 6))(sort Exp))))))(shards(0))(children())))(Tile((id \ + 3655cd3e-a09a-4f05-bd51-381b078663fd)(label(acc))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + c8fff1a2-a631-4fdc-a937-0f57a41aeaa6)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 362a1ca2-338b-4d78-ae2d-503a5045a1d8)(content(Whitespace\" \ + \"))))(Tile((id \ + 77ae1a4b-ad64-4b04-9b1f-0813694aa92e)(label(xs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 4b3352f9-caad-4ca4-ad49-88cae136030c)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + d31364a6-68e8-4473-95da-b57ee428d642)(content(Whitespace\" \ + \"))))(Tile((id \ + 1ddc2c8f-035a-4862-9ae2-b3bfcc6b6910)(label(ys))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + b20fe2b8-ac42-4186-9c85-040ed6d3e5d9)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + dc2f2d78-815e-483d-95fb-af00fe08975d)(content(Whitespace\" \ + \"))))(Tile((id \ + ff0566cb-941f-4bc5-b853-b664445e9c7c)(label([]))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + df264605-2585-4f36-939c-d871930d45f6)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + b7ba35eb-8ea6-433c-a757-cde192a21a12)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + ece1fe0b-e6d0-4ac7-9d28-3933aa2233f6)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + a6eac3e1-16b8-4f9c-8ea5-502c1fd2e747)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 202910cc-00b3-48af-93d1-73ef11977aca)(content(Whitespace\" \ + \"))))(Tile((id \ + becc90f6-bf85-435c-8b37-9e415083570e)(label(List.filter))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + b7ddc03d-c778-4139-ad74-6df0205a07c4)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 0e0c5752-747f-46e0-aa9f-21ea6acd5ef1)(content(Whitespace\" \ + \"))))(Tile((id \ + 86487b94-28da-4b1b-96d4-a9a7792d22b1)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + a751b606-e459-4048-83fe-bdce15bdafc8)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + a5e74202-cc56-46bf-8ee8-b5a5180dc84f)(content(Whitespace\" \ + \"))))(Tile((id \ + f90e77a4-e7b3-4380-8b29-d3cf4e25843c)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 3a64b90b-c526-4b0d-9f85-072fa0800f7f)(content(Whitespace\" \ + \"))))(Tile((id \ + 0c3c6085-1760-47fe-9d1c-e5e1583024c7)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + c3d2e2be-6532-4157-aa34-c25dcd804a2c)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 41dcc359-d152-42aa-b0a1-d03d953545c7)(content(Whitespace\" \ + \"))))(Tile((id 4c81805f-c91d-4884-b7dc-b48fecaa04e2)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + ee157aff-536d-4156-94a1-e9cd4e19aaba)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 7f04ca54-0907-4f0f-9086-d0f63a715a4d)(content(Whitespace\" \ + \"))))(Tile((id \ + 6ee416f7-764c-4dcd-bc97-671af516c692)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + fc3e4c38-bb7e-41cb-9904-1bc1f7422ed0)(content(Whitespace\" \ + \"))))(Tile((id 7156ea6f-3d23-4fbb-ab3c-beb0bd9b8dba)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + ecd390d4-ba0d-4795-9e34-bf9c0da8a790)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 8fde1ae2-042a-4f53-9b16-03f54a3b8342)(content(Whitespace\" \ + \")))))((Secondary((id \ + 817541df-551c-46bc-8692-7e5145a4269c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + eb1e7b19-bc47-40b2-a90d-65e7c06788b6)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 2b10c988-f067-4717-921c-09a3e9f420f8)(content(Whitespace\" \ + \"))))(Tile((id \ + 9ecd553e-4073-476d-b98f-0818b2f240c3)(label(p))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 55478c1a-fe90-4aa8-b4f7-d9419c143f6e)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 964d56b6-1c47-4058-b649-d9a6128c99fe)(content(Whitespace\" \ + \"))))(Tile((id \ + 4a987b08-a95e-4b3d-9624-045e395b2e56)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 562bd80f-9834-45d1-8774-dbb2832dd901)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + c0fd0487-4e85-47b6-86f8-413da450fff2)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 4d7bfce2-71a8-4c40-b740-da08b774ff93)(label(case \ + end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + cbe9dbfc-27a7-41d0-ba6a-cd6d1bc86e7b)(content(Whitespace\" \ + \"))))(Tile((id \ + 5a063da9-9e98-4b30-a4a8-04224af970d7)(label(xs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 7a6f4899-4557-48df-b353-9f07b5df0db9)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 3c002941-ac53-4ff6-9679-83757b025ce3)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 0716a51a-2273-4273-b52f-20b4da4c5594)(content(Whitespace\" \ + \"))))(Tile((id \ + 79387574-5353-4875-a214-ef5743ef54ef)(label([]))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 85d7c5f8-2dba-417c-828a-5a45936d1658)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 079e0c37-92dc-48da-8a18-1f02390d78c9)(content(Whitespace\" \ + \"))))(Tile((id \ + 2b65b7a2-3970-4689-ac38-76a42e344466)(label([]))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + b9f17947-82a3-464d-8f9a-1a408c12fdb7)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 7fba27b9-d4e9-4e8a-af01-1486701e6086)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 3fd4ba8d-ac86-4e0c-90e6-4a1554efcb01)(content(Whitespace\" \ + \"))))(Tile((id \ + 650803b2-5371-4a9c-b165-b303ab34addf)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + ad10a448-894c-494a-8917-ac4acacbbefc)(label(::))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 6))(sort Pat))((shape(Concave \ + 6))(sort Pat))))))(shards(0))(children())))(Tile((id \ + f01d52da-4ce5-4926-913b-8acd79a519a0)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + aaa276b4-b8d7-419e-80ad-7226e30640d0)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + fed45c8b-df50-42a5-aedd-1e3d17556e6c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 5fb0e055-dbe7-4923-82d8-75fdc72908cb)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 6f38c1d0-aa43-4675-8769-201601e13d7a)(content(Whitespace\" \ + \"))))(Tile((id \ + 6624b6e4-83eb-4edb-a89e-88dec42ab447)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 20068f2a-0ea4-4128-986d-f634f7dde04d)(content(Whitespace\" \ + \")))))((Secondary((id \ + 89fbe451-6ed0-4ae3-8089-aa7f9545d3cb)(content(Whitespace\" \ + \"))))(Tile((id \ + d3246ae3-f16b-46cf-a5ee-409292c335ee)(label(List.filter))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + abfcae7f-1411-41e2-b0fa-c4e0ca9c489c)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 5ffd57e5-b595-46d0-8605-c8c2b8ae916f)(label(p))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 24922012-a09e-41f1-936e-3295c2790e53)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 1ec4a57b-7d43-4f4a-904c-12bf8cd03e43)(content(Whitespace\" \ + \"))))(Tile((id \ + afadda32-8984-4b9e-91ae-389c5cfa841b)(label(xs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + d960d0ff-9371-42d5-973e-163ed31e8719)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 8b82df41-e2b9-4c7f-bd49-aa8abcc3a433)(content(Whitespace\" \ + \"))))(Secondary((id \ + fa8715a3-0321-44ea-83ce-46581ebcb52f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 6e7a52eb-976a-4d85-bc62-5ed81f25892c)(label(if then \ + else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 12))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 247c1217-1c63-4fe8-96c7-a9fa29e01c38)(content(Whitespace\" \ + \"))))(Tile((id \ + a171f9b3-131a-4dd2-8070-e2e4eb3abe8a)(label(p))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + c6b4807d-015d-495a-a4b8-938ac3b507a0)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 50560905-e2cc-4c53-a910-2cfd0043c0ed)(label(x))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + e6aba19c-fb19-4a52-bb4d-0bec46f881fa)(content(Whitespace\" \ + \")))))((Secondary((id \ + a131cf08-6b75-47ec-b588-a6236e9c865e)(content(Whitespace\" \ + \"))))(Tile((id \ + 3b912265-5080-4923-8540-d254ae83b287)(label(x))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 866159cf-5e3b-4c29-ab34-e3668c3ffee6)(content(Whitespace\" \ + \"))))(Tile((id \ + 0f133882-4c06-4bce-893a-e68ff8ec4218)(label(::))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 6))(sort Exp))((shape(Concave \ + 6))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 904ed45f-15ae-4458-a1af-30e9ba0577ce)(content(Whitespace\" \ + \"))))(Tile((id \ + 02aa186a-69a6-49d1-be03-2a3ea3dd4d30)(label(xs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 5f521362-0b83-4e5c-8adc-a9260de0ecd4)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 5e014b65-7630-4a27-ab65-780fd76449df)(content(Whitespace\" \ + \"))))(Tile((id \ + 7ae71747-db99-4074-a8a0-26a1d5b43c54)(label(xs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 26cd3957-cd58-47a3-afcd-ede62afcff39)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 124c2567-2a3d-4889-a57f-fab3c95da91e)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + c655b8a3-f5a6-4597-8faf-b69f09af7c42)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + d8bf6e0b-a751-4256-863e-f6b4a40ffe0b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 47b5c9a6-ce9e-447b-9cc4-971b59115342)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 6428f27d-e626-4c0d-a4f3-426486f29a7c)(content(Whitespace\" \ + \"))))(Tile((id \ + abbf5122-a579-4d5d-b828-168ee5a98e03)(label(List.append))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 2ea40f48-d485-45e4-847c-860d152b3549)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 7d00f3a8-9a7a-4e7e-80f1-0294fe79d37a)(content(Whitespace\" \ + \"))))(Tile((id \ + 3c674b8f-45c2-4224-add6-54035163abcb)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 5f351669-973e-453f-8f08-a06a9c1aecce)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + fc6c0e65-0ce3-4743-9100-ca559b375b82)(label([ ]))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + ffe0a3ed-226a-40cf-a07e-71cf20b80e4b)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Tile((id \ + 42dcfeb6-8811-4d25-89bc-487b3339f2d5)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 5c4ce00d-a506-4b9b-81b8-8557918ae2ae)(content(Whitespace\" \ + \"))))(Tile((id 02abd928-ae49-44fd-a53d-ec9a737241bd)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 79a6b035-9f93-41bc-b6fc-7d7276a3cf64)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 86a105f2-b9a1-4b51-a329-15c2d1a03cd7)(content(Whitespace\" \ + \"))))(Tile((id \ + 01fb5b51-d6e8-40fd-9390-443d470349b8)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 16d38537-b45d-4766-a78f-a1f9e2c73096)(content(Whitespace\" \ + \"))))(Tile((id 5c54240f-d771-4f8a-b8a3-171da4309a40)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + d295bdd2-ed20-4d8d-9502-75997b0f786d)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + f63c7a68-f97e-4a0b-b3ec-60632fb08ebb)(content(Whitespace\" \ + \")))))((Secondary((id \ + ec0efae5-0a2d-4bd2-bf63-d35968ee2071)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 060fccda-014e-4a1a-a5c4-01153c50e96d)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + a6b74df3-829e-4960-916c-72f030a6df13)(content(Whitespace\" \ + \"))))(Tile((id \ + 5f987cab-c3e7-45bf-9957-2fce65ea27c4)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 60158dbe-baee-49ec-a2cf-ee6c49600b51)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 2b680714-989a-4a36-be99-6921d90a9585)(content(Whitespace\" \ + \"))))(Tile((id \ + dadeef53-7c3e-4b4b-9f84-4d4cf3825c18)(label(ys))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 65057194-5de3-46cc-8b64-54aa7f985ead)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 1fd262ec-5b3b-4fe5-8723-38f73b89687c)(content(Whitespace\" \ + \"))))(Tile((id \ + 8420ef90-ecb0-480a-9b3b-01e8b5e60793)(label(List.fold_right))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 63dce935-feb7-42de-b52f-8b6d7eace628)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 30c9889c-66f1-4621-8527-a0b400b04659)(label(List.cons))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + a2e1e176-0b44-40e6-8dc9-d228c71e7cfe)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 53ad50a9-1214-49b7-a1a9-5d0a800a85b2)(content(Whitespace\" \ + \"))))(Tile((id \ + 03805709-2b8b-4086-8fd9-b78a4ba4c88e)(label(xs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 0bdb67c6-99e8-4fa6-bf16-fd774356b37b)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 6a981ead-98ae-410d-80c2-a2a19a0f1ae7)(content(Whitespace\" \ + \"))))(Tile((id \ + 9ed43dd3-fece-4b6b-9f43-172091472cd5)(label(ys))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 94c105f0-4655-4a32-9c85-30bf7f10ebad)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + be41d295-aa52-4af8-9e74-b19b05fd7ec7)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + be151eb8-a661-4310-b769-e5410db33052)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 24363bad-b125-4cb5-a141-25640c4d005f)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + e50a156d-4e8e-415d-a393-c52e95c785a9)(content(Whitespace\" \ + \"))))(Tile((id \ + ae2322bc-888d-43a4-aabc-1e2c06e028f3)(label(List.concat))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 5b893013-64a4-452c-895b-3e3985978db0)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + b309d8b9-303e-4f32-99f4-e3fa8212f99b)(content(Whitespace\" \ + \"))))(Tile((id eae1f995-f011-4dfb-9da8-4f507ec4b177)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 72ff106a-0fed-4473-b7e6-74d84707b884)(label([ ]))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 6ba69801-dbaa-4407-b74e-37b5fcd0b3e0)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 0a0637dd-2b85-4e5c-b7e8-88801a16f174)(content(Whitespace\" \ + \"))))(Tile((id \ + ba4b4ada-93cf-4ceb-a3d9-ceff869f6c4e)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 2fe2882d-dbc9-47fd-a1d7-82fce4051b4c)(content(Whitespace\" \ + \"))))(Tile((id 7b328be3-4dbc-43bd-aca8-dd4b8c6946c4)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 210946fc-ea66-4e98-8fe7-467d8ac89f7c)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 508d85e3-7945-44c5-9d6f-c580b7fe7752)(content(Whitespace\" \ + \")))))((Secondary((id \ + 410010e6-b69e-423c-9c02-355a5d09199d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + a463505c-8291-4abf-a39a-deebbb5cc881)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 626b3b07-892a-4fc7-9bf4-da207dba3212)(content(Whitespace\" \ + \"))))(Tile((id \ + 7781748c-858b-4602-b0a5-56ffed9bb708)(label(xss))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 942d6954-c57c-4f7c-9dc7-1bb0c6f6eaa1)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + f248a45d-8917-455e-86fc-16d7f2a57c83)(content(Whitespace\" \ + \"))))(Tile((id \ + 44f8d160-1ac5-479a-a7e4-8dce8e7cd8bd)(label(List.fold_right))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + aa2148c4-6c43-467e-83f7-894405afd15f)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + e5712179-a13e-4bb2-9e79-b50924ca5bb9)(label(List.append))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 1cdb9628-0663-4122-b12a-a9db6feec738)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + cdb27a75-e0a5-4188-b52c-a2be0ba74cae)(content(Whitespace\" \ + \"))))(Tile((id \ + c710b8d8-5c86-4486-be4d-f2fa4535775b)(label(xss))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 7d9e5920-1a4f-4bbd-88f8-5215a54800e7)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 1f951827-d70e-41cb-8287-489e208b2289)(content(Whitespace\" \ + \"))))(Tile((id \ + 589b071c-02c7-450a-a823-0f0eec664b70)(label([]))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + afa881f2-dc54-4431-a24b-a3db1de5d0bd)(content(Whitespace\" \ + \"))))(Secondary((id \ + f2ada3f0-f645-4ece-930b-5243598b9a47)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + b090933e-dd41-4bcb-b9fa-5cdf808fbb94)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + e30abfe7-d63c-4f47-9a3c-d882eff99c33)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 58c7f448-d3da-4381-a8a9-421c6e6e6de7)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 367f4b6e-91b2-404d-83dc-9d32d6cd1ec9)(content(Whitespace\" \ + \"))))(Tile((id \ + 4c6dd1ea-82b1-432a-8dca-90977abee7b8)(label(List.flatten))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + a706ea3b-51ec-4dad-9adb-f065dfb47e8b)(content(Whitespace\" \ + \")))))((Secondary((id \ + dd7ed164-a265-4c99-9f45-16ac75f7424a)(content(Whitespace\" \ + \"))))(Tile((id \ + 08204eeb-a931-41ab-9207-db2b373a95d3)(label(List.concat))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + bb75b8a7-f9b1-4591-9d94-30576ee0ba35)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + ac05cf29-07ed-40c9-b1e7-f939d2679812)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 9896fcd3-6f1e-467a-b127-dc88edf56fa0)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + b3dfcb6a-af2a-43cd-bdac-adecd076b0ec)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + e0e97d6d-6b41-4202-a4b8-6bb4b2f29547)(content(Whitespace\" \ + \"))))(Tile((id \ + 1b21d0ad-e032-4328-a4ce-8f1f513d151d)(label(List.mapi))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 74c635bc-6237-49b1-a401-43d1edf73400)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + b7793f49-94a1-4a33-81c7-f041abe281eb)(content(Whitespace\" \ + \"))))(Tile((id \ + 4f01f555-9966-4071-a226-756c5d19e9c8)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 3c40bcdd-7478-4f90-9637-e4a43d21a523)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + af3f6c91-1791-45d2-93b4-59e374405b7d)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 34b9f2c4-2fc4-41c8-81c6-5404394b6240)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + cc19220d-b4bd-4697-88b3-49e5bc8679dd)(content(Whitespace\" \ + \"))))(Tile((id \ + 2ed62c84-18e6-4f2a-b886-f29867ea8e8a)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + f9ce0c13-36c5-4faa-84c5-9dcf033c1122)(content(Whitespace\" \ + \"))))(Tile((id \ + 8e9fcc2c-bfee-4d31-8b2c-521c6515016c)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + f692ad24-0c64-4ca3-8111-8d9f69cb9509)(content(Whitespace\" \ + \"))))(Tile((id \ + 625e9457-6d8b-489f-ab1d-75fb672948e6)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + a1915ff7-0ba1-40d3-ad91-f138cd7ba1d4)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 47dbb3b2-38e4-4f27-91c0-047735b4dbb0)(content(Whitespace\" \ + \"))))(Tile((id e0e3ca87-8317-49cd-bb4d-9cb6f7b2cd33)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 4804a405-cd1e-470f-924a-d67b9a52b0a7)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + e6dd0e19-012b-45e2-a0c5-3a25e8e0ac6a)(content(Whitespace\" \ + \"))))(Tile((id \ + 87e55b61-d786-4b4c-a454-d07504b0b70c)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + f9fc13bc-5371-46c8-a3b1-67b94eed473b)(content(Whitespace\" \ + \"))))(Tile((id fcfdd001-fa34-4375-8c72-39c5854aa113)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 8b027222-0f6e-405a-8c1b-913b8d5f5605)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 6fd44600-99de-4753-8e3f-088beac69c61)(content(Whitespace\" \ + \")))))((Secondary((id \ + 0e3dca96-84a1-445b-9baa-fabb4767a778)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 916d8f6a-3117-4c3f-becb-e37ce2baac87)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 24618620-63e2-434a-a9ee-ca955c3cc8a4)(content(Whitespace\" \ + \"))))(Tile((id \ + 00a6a6a3-4bbc-4064-b113-9bed180b86bd)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 0609593a-ef6a-48c7-a697-181f9dcc7b6d)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 7e8f6a17-af6a-4d83-b863-2a98c17b475b)(content(Whitespace\" \ + \"))))(Tile((id \ + 3c9f45fa-20e9-4036-9575-ec788434d7b9)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 761e5a58-51ab-4c02-9bd5-1ffda6106e3a)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + c5257138-09c2-4394-a0a8-158c085326ea)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d2224cb9-09fa-4503-a222-2d57b2f797f4)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + ac1ba892-c81d-47c4-a6cd-f992f3034a18)(content(Whitespace\" \ + \"))))(Tile((id \ + 971b4e5b-8d61-40a1-a256-308908742ae6)(label(go))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 7c6ad1ab-f566-4c74-acf3-38b634a32e76)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 332709ed-90a2-4510-95f3-58ef097cc6c1)(content(Whitespace\" \ + \"))))(Tile((id \ + 9680ec10-2b13-466f-9273-72ed22d00a5e)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + caefabe4-ab1d-4376-91e7-49b08b2cd637)(content(Whitespace\" \ + \"))))(Tile((id \ + ce4bd35f-e142-418d-abf0-1457e7f2e9a5)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + b50adcea-67d6-4169-829c-83530c8f2a35)(content(Whitespace\" \ + \"))))(Tile((id \ + 924643f5-606d-4e13-a179-24a0429a0599)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + e1e19023-6a05-4d8e-9cd7-db862afd65c9)(content(Whitespace\" \ + \")))))((Secondary((id \ + 5089fd21-2854-46c2-acbb-6e3d0398bd40)(content(Whitespace\" \ + \"))))(Tile((id 89a78c11-e672-4bb6-b26c-7fb641a4e7e9)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 71785f84-3151-45f1-bc29-21f991eaa84a)(content(Whitespace\" \ + \"))))(Tile((id \ + 1395e802-634d-4320-93f9-2c1ed373acb4)(label(idx))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + fb062c4e-efa6-4eae-91a3-9126092465d5)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 69cb7b9a-488e-4466-a6a2-394b6c95d7fe)(content(Whitespace\" \ + \"))))(Tile((id \ + 912962e8-4bd2-42d7-9a3b-9e7cd9f99cc8)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + fa72f3f1-1a89-4d44-841c-622757377bbf)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 63050629-6a08-470b-89b3-8d85db54798a)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 0f252c0f-78ef-4331-83d3-7e18f5bea4e5)(label(case \ + end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 7e36b118-ae3b-45e8-b3a6-45f04eec3a01)(content(Whitespace\" \ + \"))))(Tile((id \ + 250e35cc-72b7-4380-837b-761a86856f72)(label(xs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + e5e7cfc7-3291-4f4c-b9e6-0d3aad15f320)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 5258970a-f387-4aa1-8b8f-db266d75ea69)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + b487bac7-d301-4427-b1c2-adca47472744)(content(Whitespace\" \ + \"))))(Tile((id \ + 2ce10087-dca3-4ce6-b294-cd547a19ff43)(label([]))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 35eec052-dc07-41dd-8397-e5c1cfe91c0c)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 1f5c99df-d426-444c-9e90-e892c10a6469)(content(Whitespace\" \ + \"))))(Tile((id \ + c1666862-2650-4856-9036-c292fa89c369)(label([]))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 18cc4ed5-5855-4aeb-a2ed-53d7e54dfc66)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + f18862e5-6de2-4056-bc0c-2424b62dfe58)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 444fee43-1d2d-4a14-8c05-a4a8c511fc7c)(content(Whitespace\" \ + \"))))(Tile((id \ + 500a8c12-7852-4e66-a8ac-272f4862b4e3)(label(hd))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 8a33b412-b399-43ad-8aac-6fb5a493583a)(label(::))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 6))(sort Pat))((shape(Concave \ + 6))(sort Pat))))))(shards(0))(children())))(Tile((id \ + eb5117d3-31e4-4967-9583-22cceab440bb)(label(tl))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + ceae3e9e-e27d-4b67-a03e-5ed1eee19949)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 480f97a1-8c9e-4798-adde-a67794721888)(content(Whitespace\" \ + \"))))(Tile((id \ + a7479209-89ea-4277-8154-ff86f1444610)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 96b8fe22-8872-447c-84ee-38fb39f94be9)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + a4786371-1282-4029-a199-f0491f3847cb)(label(idx))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 7cb4e8f1-1205-41e4-bf69-924ca6245335)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 703360a3-ff8a-4df7-8bf3-a4e4f36c5412)(content(Whitespace\" \ + \"))))(Tile((id \ + 5723dce8-5ec9-4a41-b90b-887af22adee6)(label(hd))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + cb873942-359c-4c1b-bf53-c79e49457db4)(label(::))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 6))(sort Exp))((shape(Concave \ + 6))(sort Exp))))))(shards(0))(children())))(Tile((id \ + 3542f33e-d367-465f-886c-e716a8577ad4)(label(go))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + b38de2b3-f0f4-4c8a-a4dc-b930e71adc54)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 66bcb98f-0768-469a-b86b-9b5addf4bcaa)(label(idx))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 39473391-4877-42d8-899f-9d2808dfeece)(content(Whitespace\" \ + \"))))(Tile((id \ + 6311d616-983e-4d67-9280-e0ac010734a3)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort Exp))((shape(Concave \ + 5))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 55f8efcd-627d-48af-a4df-ae94c0309c96)(content(Whitespace\" \ + \"))))(Tile((id \ + de80c86b-1830-47b8-8cf9-c08aaf5d9623)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 12873f25-2ea3-4d77-84b1-052a8934bc74)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 21f54382-8f17-4023-9e4c-717291bf858b)(content(Whitespace\" \ + \"))))(Tile((id \ + a9d04f12-2cae-45ec-81f8-323c839f9659)(label(tl))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 5cf3770a-2c51-443e-8f90-ccc99e1ae2df)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 51877657-36d2-45df-ab88-b4a375669991)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + bfa6112a-f1c3-4595-95ba-e233b3c47a69)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + f860073f-e7c5-4838-a2f6-7c3078431553)(label(go))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 2a0dbb0f-7934-4128-b2d4-692e3461e639)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 5e8fa8a5-5fc0-4280-9977-e364541df99f)(label(0))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + a3d8ab4f-9e15-4a5a-a750-2417b5a5c9cf)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 611debd1-50de-4987-b149-fbd52940e2ef)(content(Whitespace\" \ + \"))))(Tile((id \ + 427919cb-2696-43d9-babb-615e822331ee)(label(xs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 9447b4c5-6722-4713-8921-579a303056e3)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 6fbac0c7-fd5f-40b9-9ef9-86dd8499ec52)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + c93f732e-7598-4cbb-b0d1-cb017bfc391d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 9f323a38-3c11-4884-a397-9ad632ecc197)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + c59594b3-5284-4cfd-b0a5-1d5e3e2f24f5)(content(Whitespace\" \ + \"))))(Tile((id \ + b5bb8189-1d02-403e-ad1f-bb79f4999575)(label(List.filteri))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + a1a970b2-f8b1-4ad8-88fd-2465fddda32b)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 1be339b4-3e09-4f59-ab9b-c7cd21d3bed1)(content(Whitespace\" \ + \"))))(Tile((id \ + 35505cbc-ed9a-4e92-b6fa-e6e5eedb41e5)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 7f3ec14c-db6c-4ad4-b1f0-2a4fe89b8ad8)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + e11005b2-5761-4883-8df5-a6d9b8eed5eb)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 82df3f76-a1b1-46a0-bc9d-528bcd6670b4)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + d30e6f3b-f3f1-48c8-85a8-2f433863ab61)(content(Whitespace\" \ + \"))))(Tile((id \ + b92d25e3-41a9-4848-bc49-7d2aefcc667b)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + d3e25805-3db4-4f83-a153-7204f76cb6ec)(content(Whitespace\" \ + \"))))(Tile((id \ + b5ca7dfd-bb19-4343-aa5f-c60a65a429b3)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 23163a91-bfbe-4a97-a392-a6fa8b681934)(content(Whitespace\" \ + \"))))(Tile((id \ + bafe9e34-06b7-4e28-80a7-6e993af00d9f)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 331eca23-2684-489c-a8bd-b369da1445cd)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 9bfce038-e7fb-466d-b830-fba007ffbe3b)(content(Whitespace\" \ + \"))))(Tile((id c04d49fa-8771-42cb-a61a-d734d608a113)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 7121ebaa-cb85-4e6a-a096-cd787ee9d360)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 4cb9ab74-53fd-4772-8997-188b1c0fade0)(content(Whitespace\" \ + \"))))(Tile((id \ + 7f10ec25-8699-40db-90ca-f9d2193462c4)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 9cf75ea3-7bdb-4127-a753-1d0d366de212)(content(Whitespace\" \ + \"))))(Tile((id 7c8f7f54-78ea-40fd-9770-929849940e8c)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 5938687d-0264-47eb-abbf-f27719b88517)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 8a9349fe-7de2-4952-8b8a-e6c5777874fb)(content(Whitespace\" \ + \")))))((Secondary((id \ + e3230fbc-c6b6-478e-b3af-aaa248414a8c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 4d81453f-6a6a-4f5f-b2e2-af9a6e021856)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 4c490e01-ccaa-4490-94a1-b7eedc6880a4)(content(Whitespace\" \ + \"))))(Tile((id \ + bd88fbc7-bafb-467d-bbe1-408869988c95)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + ce1f7b45-02e7-462b-a083-739b95d7e9fe)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 65544a70-cbd2-471d-a53b-c4fb963e4484)(content(Whitespace\" \ + \"))))(Tile((id \ + 530cdf38-0a86-42ba-b482-0df55295193b)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 4fc17dc6-ac04-4a5a-b6cb-b6c0a3abd319)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + b86dc991-dd18-4748-bb4e-9ca3b60c7575)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 381817fd-d99b-4010-a673-c31f2674d511)(label(List.concat))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 3721fd70-599c-40a2-b02e-e822a6431980)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 0e280b1b-92c5-4451-acdc-db5b50a17c3d)(label(List.mapi))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + fc3be8ee-8fdf-4100-ac98-15ba60640e28)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + af57a111-2b3d-43e6-932e-566b36cb7653)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 1c8abf15-fe6c-4ed5-8838-47cdbdace81a)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 75873193-0cb7-4b8d-b75e-672529879044)(content(Whitespace\" \ + \"))))(Tile((id \ + cbd58911-4b86-4282-a64d-8715d7223fe1)(label(i))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 62ba7bb3-d8d6-4406-8960-cfe621ae0c63)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 9d7c8c63-20a9-49e7-b234-7f19821541d9)(content(Whitespace\" \ + \"))))(Tile((id \ + f2261649-b834-42c9-a076-08677969047a)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + fe64e4a8-f2a2-4862-907e-ed185e4cdeb9)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + d8deaf9c-483b-4cb0-a7aa-9aba404be3d0)(content(Whitespace\" \ + \"))))(Tile((id 80371ced-ef6b-4cc4-9196-4ae97721d7a8)(label(if \ + then else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 12))(sort Exp))))))(shards(0 \ + 1 2))(children(((Secondary((id \ + e0e9f4c1-106c-415a-822d-c5d5e17981ff)(content(Whitespace\" \ + \"))))(Tile((id \ + 12f6432a-c687-4eef-8f12-773bbf480c0a)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 5dd8b78c-7e0e-4086-8227-5f0e933f2532)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + a83e9ba9-8a32-4fc5-ba98-a8186111b34c)(label(i))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + a75c5655-eba4-4ea6-a642-8a253b20f636)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + c3329d25-be73-4b4c-a0ab-16551d12d49f)(content(Whitespace\" \ + \"))))(Tile((id \ + 6eac63b5-b855-46b1-827a-014843870c53)(label(x))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + b9c445ab-0709-47cf-80ba-29a328312f51)(content(Whitespace\" \ + \")))))((Secondary((id \ + 4a717fd8-0f39-4ef6-8b71-51ff1920cb2e)(content(Whitespace\" \ + \"))))(Tile((id 066ac73f-9bee-48ba-8598-577658a61684)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 4090b3a8-28e2-4f00-88d5-83624755d471)(label(x))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + c2212c6c-e854-4bdb-a7c7-c1ae3827c050)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 967513f2-988f-4662-b46d-585154800d4a)(content(Whitespace\" \ + \"))))(Tile((id \ + f81c323c-234b-499c-8618-b45a7f2d1b22)(label([]))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 56f2bdfb-f2c2-4590-99b9-1f52ec459bd4)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + ee09bfaf-4f3b-4801-80c7-884e168208c0)(content(Whitespace\" \ + \"))))(Tile((id \ + 841dfeb9-628e-4f9c-b147-98b2083eb8da)(label(xs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + 2c4465b4-e59d-46d6-a5d5-0929a2590633)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 2038fd66-2761-43a8-8e9f-bdf173cbfbef)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 9146ab0d-fa72-4207-90ec-9f6c4333f250)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 6d857901-aa22-4330-9825-e09363be1f03)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 0c387df8-b5fc-4832-b871-525a8b01ecb8)(content(Whitespace\" \ + \"))))(Tile((id \ + 3674bc09-197f-4484-9162-5a8322cf1525)(label(List.exists))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + a7decb5c-d5cb-48d1-8ebb-3cdb6ec04b78)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 530d3054-894d-4c98-8630-4ef002ad513c)(content(Whitespace\" \ + \"))))(Tile((id \ + 1c7e9a08-5df3-4713-a24c-3bd3939cf657)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + dab49096-7087-4eb2-95d6-5ac1dc9ea585)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 824cfd71-aecd-4952-abb0-126c9d247cdd)(content(Whitespace\" \ + \"))))(Tile((id \ + 4232162c-f83a-4269-8711-5dfed44eaf93)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + d6b9f0a1-0c50-4dcc-aa57-27f9afb32af1)(content(Whitespace\" \ + \"))))(Tile((id \ + eaf935de-79e1-4d5a-b4ff-f96e6fb9491b)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 8a29ebee-b283-4408-92ed-f6502c375956)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 53bfb707-6238-4cd8-b518-056d5bcf1861)(content(Whitespace\" \ + \"))))(Tile((id 828827f7-00dd-43a1-b949-0e3952636dbb)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 1678eaa0-971b-4409-b664-bd18c3a25c37)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 2b1cf7de-8528-4dc3-896b-bf2f37176167)(content(Whitespace\" \ + \"))))(Tile((id \ + d8c9629f-bd10-4809-af2a-764f585c84fc)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 1b1d5f59-dea4-4981-b0f2-3df5ae727873)(content(Whitespace\" \ + \"))))(Tile((id \ + 879d7425-6f48-4429-86bc-5af50ca72ccc)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + b630995e-d26a-41bd-b196-bb60cd9e3943)(content(Whitespace\" \ + \")))))((Secondary((id \ + 5306c54d-1258-4b3b-aef5-7fe0bb25b7f7)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 06e51cdd-cc61-434a-ab1b-76ecb1f4759d)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + b00b162c-e6cc-4070-bdb2-fbef9ed11083)(content(Whitespace\" \ + \"))))(Tile((id \ + 9c54d83e-f035-4155-9aa6-683ba74c1605)(label(p))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + e8b63ad9-4df9-4e78-94e8-aec8298ba2a0)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 815516c6-7d11-4a0c-b111-171ac6a91733)(content(Whitespace\" \ + \"))))(Tile((id \ + c76f0e70-b7bb-4fb7-9ab8-6e8c3b1081d5)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 5ec8c9a1-bb79-449a-8117-d89641dcc943)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 994119ca-f443-4246-8bf9-f8d70c5401b4)(content(Whitespace\" \ + \"))))(Tile((id \ + 8aea27ad-ef8c-4d2e-8a90-e1886e89fa16)(label(List.exists))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 66e8235c-d865-47ad-91ac-b1658e67c7ee)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 2f97809e-61bc-482d-8009-13b9ee669d2f)(label(p))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + da04d178-108c-4dc0-acbd-6f947b0af73a)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + f6e1bf61-221f-453c-b83b-928eede5dd4e)(content(Whitespace\" \ + \"))))(Tile((id \ + f799b2b2-4c0e-4a9a-b401-8fcf5bd9740c)(label(xs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 2db3f2f4-0dcd-46d7-b14e-7f00a1e7084e)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 87aee5af-5763-4ce6-9d74-473dd7e4ee9f)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 0b3ef075-a544-44a0-9afb-a7cf8558f6d9)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + e480d087-3a84-47eb-b4b1-d929e9c1a14f)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 00016e52-7bfc-4de8-86ec-93589e3e662d)(content(Whitespace\" \ + \"))))(Tile((id \ + 5f15b043-84eb-4b82-be99-896fece8b39c)(label(List.for_all))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 4a8abd50-81b1-473a-b332-b1716fcf2c5a)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + a692960b-3389-4b12-9b40-2b15942136ba)(content(Whitespace\" \ + \"))))(Tile((id \ + 11c86d88-331c-4afe-aa2b-dc754807e6b6)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 8c4c7018-c837-41fa-9b1f-647175e42687)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 45b97ce1-6850-448c-ac3b-25cc1813fee2)(content(Whitespace\" \ + \"))))(Tile((id \ + 7e502c46-e212-4030-b24b-ea0e84656b27)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 2ee765fb-27ba-4005-80c5-4687736cbca2)(content(Whitespace\" \ + \"))))(Tile((id \ + 6490b846-3984-46e8-8068-87bf4f0a2b2a)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 27079e67-9871-43a7-8ad9-f2d801ec5954)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 96e26660-61ab-45cd-9967-23e0aee72bc2)(content(Whitespace\" \ + \"))))(Tile((id 6f54fb4c-e1f3-45ef-98bc-e1d968ff9518)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 9e67bfa1-2322-4647-b3fe-49b0080484b7)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 784d4adc-3b0a-4f4c-97ee-39bf9e84a145)(content(Whitespace\" \ + \"))))(Tile((id \ + f124376b-c982-428c-b859-094446e7f552)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + f0ad36ca-ba88-4862-8b94-872db3effc4d)(content(Whitespace\" \ + \"))))(Tile((id \ + f2dc0529-2a76-4efa-8149-d3c94df38470)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + b72b0497-4ddc-4f35-93da-14538db2bc3f)(content(Whitespace\" \ + \")))))((Secondary((id \ + 2f98a263-ec62-4b2b-aa18-01429f2aa3a7)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 6b480590-91be-4131-a3c5-a3e60b9d6c4e)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + bac44758-8d40-4c83-9f95-01f9d9ce5b41)(content(Whitespace\" \ + \"))))(Tile((id \ + 2f84ce89-ab99-4871-8db6-16a6345672fa)(label(p))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 8298d9ba-fecf-45a9-a136-99aa76063acb)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 8450ca07-f6bc-4b6d-ab8f-d4877258a777)(content(Whitespace\" \ + \"))))(Tile((id \ + 79c5f252-d4c9-4b6a-90fd-96bd2aae3e7a)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 95ef33cc-0aec-44fe-8c3d-2daa3414fd63)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + bbbbe709-bca8-40e8-aed5-838d22d3d5d1)(content(Whitespace\" \ + \"))))(Tile((id \ + 331e9ba3-010f-429d-bc31-65fa9f11d7a1)(label(not))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + a3c20999-a979-4f88-b426-bae93090627c)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + d5928ea8-6036-4376-a64e-40cc2dd4614a)(label(List.exists))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 5f0bb756-7582-42ec-9c82-4d01a4a75c9f)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 93cd47e2-7343-4d46-8ea0-ca81401bc04f)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 9f2eb853-d788-45c2-a0f7-8d4a8cffb7bd)(content(Whitespace\" \ + \"))))(Tile((id \ + 541df254-cdc8-40ef-8a09-9bc4f9e2e038)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + dbebadc4-6718-4b3c-86ab-1d80a93ac264)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + f89614c5-f2a7-4424-b2ae-cc651fe2a9b9)(content(Whitespace\" \ + \"))))(Tile((id \ + c8461c67-783f-4a4d-a737-468b0796e676)(label(not))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 0246cd78-5b88-423a-befd-adbd824fa759)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 2064fea4-b5e5-4f57-b3a3-d428080f9ebc)(label(p))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 684901e0-8211-44bd-867c-05ef06b1a8e4)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 02871e5b-6567-4429-b369-899749bc3102)(label(x))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Tile((id \ + ccfa594a-ff5b-46e8-9052-2d6267367009)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 2d9d606a-fb94-4448-a78b-ce01535feb57)(content(Whitespace\" \ + \"))))(Tile((id \ + 7b0f557f-d11b-4d5a-874b-957a0cc0fc96)(label(xs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + 80d5fd5f-d6fd-41af-8574-a38620ec78d6)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + a0812064-ec8e-43eb-afbc-1364ee35d823)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 7a970b3d-c26d-473d-b237-72087f3e63c6)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 25f136f3-f172-4a2d-84e7-87a8bc18166f)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 9119e925-6468-4aa1-aa60-bb22616fe8e2)(content(Whitespace\" \ + \"))))(Tile((id \ + 9eaa09b2-516e-4ca0-9153-379bf287d8bb)(label(List.mem))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + ad84cf37-5f56-4089-8ff0-7e8afc023208)(content(Whitespace\" \ + \")))))((Secondary((id \ + 230b95a3-6db9-4968-b979-0e0b0f49fb24)(content(Whitespace\" \ + \"))))(Tile((id ff33927c-876b-4ff5-9922-fcc6e2944198)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 50e5486a-97c7-4fab-8dad-582661f3cd5b)(content(Whitespace\" \ + \"))))(Tile((id \ + 416715be-f951-432c-93de-1819d036cd25)(label(eq))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 1171c474-7d36-49a1-808c-360aff03e820)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 0f98a4ab-e80f-4e27-b95a-3043b6f1a5f0)(content(Whitespace\" \ + \"))))(Tile((id \ + d73cc4db-a80e-4d67-a970-2e352aa04efa)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 9b1967a4-fc0a-44f7-8caf-5b7eff034462)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + e3b51a2c-1c9f-4424-8fe1-83efbf087009)(content(Whitespace\" \ + \"))))(Tile((id \ + 992e3c2e-d669-46f4-ad7e-66bb972e3bb0)(label(y))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 9fa031d8-d024-4a75-9101-37fa88f11d21)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + da70b77d-63da-4180-acef-b654abadc163)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 6385e0a5-bfcd-4bcc-b432-d2d68f9e16cd)(label(List.exists))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + d006ad2f-fddd-47b0-9ac9-931667a6ee23)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + d48602ee-0bfe-4bd4-b711-0ec01cd80ff1)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + a9f9b92e-3dc0-49c6-b012-812dcc345ecc)(content(Whitespace\" \ + \"))))(Tile((id \ + 30679e77-d34e-4487-b250-5feb7175629c)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 53cf990b-7891-4779-8e6d-8f62fd190de6)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + de73fd46-2457-4c68-b789-3e276d67e5f6)(content(Whitespace\" \ + \"))))(Tile((id \ + 9bce9b02-01c7-4c53-a985-2b1a77fba17a)(label(eq))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + f93a6bc1-b19e-414c-8b77-0f7dcee39e45)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 736f7907-b0c4-4677-a212-486645fb6773)(label(x))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 8031968c-b800-4539-96a6-a62657353f0f)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 280c5214-4a68-4d03-b466-74b31d95af1f)(content(Whitespace\" \ + \"))))(Tile((id \ + 8a80812b-4291-454f-b821-d00b098b821c)(label(y))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + bdffa34e-bca6-4786-b88a-d386a8b94423)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 05d8afd7-38a5-4a0a-9051-38027e681167)(content(Whitespace\" \ + \"))))(Tile((id \ + 8314c19a-c115-4ec9-a429-c3138454c1d2)(label(xs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + be81bb0c-183f-4f22-adf8-5fb106bd8ad6)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 332b011e-e381-4448-acd2-5781cc315be2)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 20a17837-9f20-4c0b-b728-02d6b3b6dc78)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 476505cb-d7e3-4aac-a004-fbf3eba11ad0)(content(Comment \ + #TODO:#))))(Secondary((id \ + bc7477b4-4801-4136-b4c9-c89311a98d0b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d6a90aae-1874-48aa-ae66-5c6b94cbb485)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 3ceeb4e9-977d-4ec9-ba54-dd428c807181)(content(Whitespace\" \ + \"))))(Tile((id \ + 0e881b81-f2fc-4058-a7d9-bdede42741cb)(label(List.filter_map))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 6e087b5f-bdb6-472a-b671-cc27166d7e13)(content(Whitespace\" \ + \")))))((Secondary((id \ + 0721e380-27a5-4a70-acb6-8235efa68405)(content(Whitespace\" \ + \"))))(Tile((id \ + a1728e2c-4f53-464c-8688-e531b3c06927)(label(?))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 9c69622a-0e01-40da-a7e8-cfd246a8535d)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 4887ebc8-d37b-4245-a1bb-04459f2bd0a8)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 82bbd4ac-38f2-4a7f-95ff-8df216a54652)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + a163de40-99f1-419d-9c81-40979c1508b9)(content(Whitespace\" \ + \"))))(Tile((id \ + 8e105a88-f8a1-42db-b182-0a5efbc3f14a)(label(List.concat_map))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 7a9feb0e-5608-4614-ac00-5805454c15d7)(content(Whitespace\" \ + \")))))((Secondary((id \ + da8b933e-9faf-4a7b-bc8b-105480ab31ef)(content(Whitespace\" \ + \"))))(Tile((id \ + cbca87bb-d0c0-4d17-b7d2-99e742cc9a30)(label(?))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + e0131631-7936-46d7-bbd5-8a2fe27bb7d3)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 0e1260c5-be23-4faf-a057-cd097a338b49)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + c28eaaf9-7f08-4f5b-a46f-aa18a3a89a8f)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + efdb7fbc-87c2-4aee-85fc-3df8f4ee2794)(content(Whitespace\" \ + \"))))(Tile((id \ + d809606d-96f4-4677-a4ce-2b924b43c462)(label(List.for_all2))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + a1b18ff9-863c-49ad-8a98-d6cdd18eadcb)(content(Whitespace\" \ + \")))))((Secondary((id \ + 82857eb8-048e-4946-bd9b-562179009a24)(content(Whitespace\" \ + \"))))(Tile((id \ + 07107b7b-1606-446f-967d-e5e37550be45)(label(?))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + aca80fc4-8cd3-4132-a5b7-034583f01657)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 04d0c9bc-05cb-4983-8a64-f017b2732a52)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + c5aa2eca-21e6-47e5-98e4-4e206b4486fd)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 7f33376c-9189-44a1-a6e9-9c617311b5f6)(content(Whitespace\" \ + \"))))(Tile((id \ + ca0cc289-9730-4f3c-875b-eb09332dd533)(label(List.exists2))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + b5906fef-b7ac-48e1-96ae-353c61bbdd40)(content(Whitespace\" \ + \")))))((Secondary((id \ + ef313c46-4a90-4bc5-b93e-16ca2df2a984)(content(Whitespace\" \ + \"))))(Tile((id \ + 381f8fa3-9d93-40ce-9e45-2d594e02be71)(label(?))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 8eccc50c-7bc3-417a-b35f-85599b4dfc53)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + d015b656-aeb5-4a30-89de-48a9b356d66b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + a8d2a8b2-dc64-4521-8c71-a23fa9bc447a)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + a0eb6713-5e5b-4718-8024-58b2acafaa5a)(content(Whitespace\" \ + \"))))(Tile((id \ + 099ac0ef-d428-47a3-bfdd-8b96402506c8)(label(List.find))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 016e47db-3ae8-4d70-b0dc-f0be7d295d4f)(content(Whitespace\" \ + \")))))((Secondary((id \ + 93b57556-6692-43c1-9487-7d2f10127104)(content(Whitespace\" \ + \"))))(Tile((id \ + 8697695e-46e2-4112-a26d-c6172ef49885)(label(?))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 5c490107-1e76-438b-8657-dfaa00d9ed86)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 199861f3-6265-48bb-af2c-03657b0af5e2)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + f675f580-a388-41d5-808f-bd1b0c4fa824)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + c6d8369e-b8a8-47e6-89a7-ac106b6000d5)(content(Whitespace\" \ + \"))))(Tile((id \ + 0759c7e3-2f04-4e0c-bb8c-3b19748810c2)(label(List.partition))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + f2159f65-b03e-445f-a7af-40092e443a4b)(content(Whitespace\" \ + \")))))((Secondary((id \ + 88e9cac5-d6d6-4f8f-be48-05c183ef0838)(content(Whitespace\" \ + \"))))(Tile((id \ + e818042f-bab5-47d3-8806-a769707bd824)(label(?))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 27205d9a-9792-42b2-b607-8ef5fb6163ad)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + f7473005-c806-4182-8487-7f0217406a24)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + a93c7496-924c-4bee-8400-cc21f62493d9)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 0cf5cc49-1a7d-48c1-a3df-c963565d4b35)(content(Whitespace\" \ + \"))))(Tile((id \ + 310f6304-2cec-43ca-95ee-1e80e20e64da)(label(List.split))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 12b3478b-38b0-40dd-814a-39b56a614ca9)(content(Whitespace\" \ + \")))))((Secondary((id \ + 07aad76b-0f16-4ba0-aa6f-1ef68949ea44)(content(Whitespace\" \ + \"))))(Tile((id \ + ad380ff7-8a99-427a-b503-7fc617e1c474)(label(?))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 2acbf195-318d-436e-92f5-798db18ddbf8)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + d52b8aaa-12b9-4305-8683-04472b73b8d0)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 5b3987d2-47aa-4dcc-bdd1-d4f425c4d5c8)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + bd2f82cd-3a74-4de9-b1d6-1d065aac028f)(content(Whitespace\" \ + \"))))(Tile((id \ + cd7b7ab4-481d-4850-9ad7-3c7ef66ee97f)(label(List.combine))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 40bcc92c-061f-43be-8663-9150a6d6688c)(content(Whitespace\" \ + \")))))((Secondary((id \ + b0dea418-bf38-4e53-b1cc-905fad3ef3f9)(content(Whitespace\" \ + \"))))(Tile((id \ + b6356c7d-cb1c-4f6f-b909-7b6379b9b089)(label(?))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 37859369-688f-4ce7-9ebb-2d4eed0983af)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + bcd2ae8f-dfac-45cf-ae78-e8ec978cbfa1)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 9cc73384-20e6-4992-8ee9-0c007a3d06f7)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 41aef224-9974-40b5-862d-f26ea84bc162)(content(Whitespace\" \ + \"))))(Tile((id \ + f20ea9f5-60af-4ac8-a39b-1ec329814a0d)(label(List.merge))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + c8854435-65e4-4a0f-8b9f-96d1be6c2769)(content(Whitespace\" \ + \")))))((Secondary((id \ + bb89e31f-aa1d-4b97-8109-d65f29b76ff3)(content(Whitespace\" \ + \"))))(Tile((id \ + bccb2496-892d-4efc-a6e4-761d5e3b3059)(label(?))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 4d91b1e3-d6e7-451b-93f9-de7871a0fd5f)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 6f6d88ba-b4c7-4a55-b8b2-fc23b17b5f46)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 88e155a6-9555-4c75-85a6-d4d50faa97d6)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 01265690-a8cc-4a7d-a637-dcce1d7b0d16)(content(Whitespace\" \ + \"))))(Tile((id \ + 2619c944-a1f2-419a-ace6-4906e1997788)(label(List.sort))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 3cf40218-8d43-4406-ad15-0861ed33beed)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 3f0649dd-3b06-4012-ad07-6396886a4859)(content(Whitespace\" \ + \"))))(Tile((id 68d116de-cabf-45a0-bddc-156ef5bcb86b)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 9692d503-0441-4e32-97fa-4168ec9cc4a0)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 76be09a8-02dc-490e-83e3-eff89d2791d5)(content(Whitespace\" \ + \"))))(Tile((id \ + a39b1be9-22c6-4000-b083-a2a723bb9e8b)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 5c9356ec-4ce6-4300-b3e7-2ff19b68c6a4)(content(Whitespace\" \ + \"))))(Tile((id 7f4482e1-062f-4f41-b6eb-b9df6c901301)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + d1ecb72b-7f1c-415c-8113-db3141cc1e42)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 2886ca2a-fb9f-4eb1-ba47-aa1255bc1177)(content(Whitespace\" \ + \")))))((Secondary((id \ + cef216ab-fa94-4f8a-8b54-e8d1bdf9c9dc)(content(Whitespace\" \ + \"))))(Tile((id \ + 09f7c040-ca85-4b22-9a60-0c24100fa379)(label(?))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + fd5ccd8b-3733-4fb2-8e41-1d9ba2bf4dec)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + dae911c1-eeea-413a-9fea-9cc6b616943f)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 328ac9d3-7b31-4bed-904c-4e502dfa4f38)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 7c402b4b-28f7-41a9-92b3-246d938fe52e)(content(Comment\"#TODO: \ + Association Lists#\"))))(Secondary((id \ + 1cd94978-b626-4716-8bf5-afded5635abd)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 7f43d525-d6e5-43c2-8940-969b5b51de53)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + e0b933fe-f707-4240-8f37-bb9e29227f65)(label(EXPORT))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))(ancestors())))(caret \ + Outer))"; + backup_text = + "# Slide Index 1: Library #\n\n\ + type Option = None + Some(?) in\n\n\ + let fst: (?, ?) -> ? = fun a, b -> a in\n\ + let snd: (?, ?) -> ? = fun a, b -> b in\n\n\ + let not: Bool -> Bool = fun b -> !b in\n\n\ + let bool_eq: (Bool, Bool) -> Bool =\n\ + fun a, b -> a && b \\/ !a && !b in\n\n\ + let List.cons: (?, [?]) -> [?] =\n\ + fun x, xs -> x::xs in\n\n\ + let List.length: [?] -> Int =\n\ + fun xs ->\n\ + case xs\n\ + | [] => 0\n\ + | _::xs => 1 + List.length(xs) end in\n\n\ + let List.hd: [?] -> ? =\n\ + fun l -> \n\ + case l \n\ + | [] => ?\n\ + | x::xs => x end in\n\n\ + let List.tl: [?] -> [?] =\n\ + fun l ->\n\ + case l \n\ + | [] => ?\n\ + | x::xs => xs end in\n\n\ + let List.is_empty: [?] -> Bool =\n\ + fun xs ->\n\ + case xs\n\ + | [] => true\n\ + | _::_ => false end in\n\n\ + let List.nth: ([?], Int) -> ? =\n\ + fun xs, n ->\n\ + case xs, n\n\ + | x::_, 0 => x\n\ + | _::xs, n => List.nth(xs, n - 1)\n\ + | [], _ => ? end in\n\ + test\n\ + List.nth([7, 8, 9], 2)\n\ + == 9 end;\n\n\ + let List.rev: [?] -> [?] =\n\ + fun l -> \n\ + let go: ([?], [?]) -> [?] =\n\ + fun xs, acc -> \n\ + case xs \n\ + | [] => acc \n\ + | x::xs => go(xs, x::acc) end in\n\ + go(l, []) in\n\n\ + let List.init: (Int, Int -> ?) -> [?] =\n\ + fun len, f ->\n\ + let go: (Int, [?]) -> [?] =\n\ + fun idx, xs ->\n\ + if idx < len \n\ + then go(idx+ 1, xs @ [f(idx)]) \n\ + else xs in\n\ + go(0, []) in\n\n\ + let List.equal: (? -> Bool, [?], [?]) -> Bool =\n\ + fun p, xs, ys ->\n\ + case xs, ys\n\ + | [], [] => true\n\ + | x::xs, y::ys => p(x, y) && List.equal(p, xs, ys)\n\ + | _ => false end in\n\n\ + let List.fold_left: ((?, ?)-> ?, ?, [?])-> ? =\n\ + fun f, acc, xs ->\n\ + case xs \n\ + | [] => acc\n\ + | hd::tl => List.fold_left(f, f(acc, hd), tl) end in\n\ + test\n\ + List.fold_left(fun x, acc -> x + acc, 666, [])\n\ + == 666 end;\n\ + test\n\ + List.fold_left(fun x, acc -> x + acc, 0, [1, 2, 3])\n\ + == 6 end;\n\n\ + let List.fold_right: ((?, ?)-> ?, [?], ?)-> ? =\n\ + fun f, xs, acc ->\n\ + case xs\n\ + | [] => acc\n\ + | hd::tl => f(hd, List.fold_right(f, tl, acc)) end in\n\n\ + let List.fold_left2: ((?, ?, ?) -> ?, ?, [?], [?]) -> [?] = \n\ + fun f, acc, xs, ys ->\n\ + case xs, ys\n\ + | [], [] => acc\n\ + | x::xs, y::ys =>\n\ + List.fold_left2(f, f(acc, x, y), xs, ys)\n\ + | _ => ? end in\n\n\ + let List.fold_right2: ((?, ?, ?) -> ?, [?], [?], ?) -> [?] =\n\ + fun f, acc, xs, ys ->\n\ + case xs, ys\n\ + | [], [] => acc\n\ + | x::xs, y::ys =>\n\ + f(x, y, List.fold_right2(f, xs, ys, acc))\n\ + | _ => ? end in\n\n\ + let List.map: (? -> ?, [?]) -> ? =\n\ + fun f, xs ->\n\ + List.fold_right(fun x, acc -> f(x)::acc, xs, []) in\n\n\ + let List.map2: ((?,?) -> ?, [?], [?]) -> [?] =\n\ + fun f, xs, ys ->\n\ + List.fold_left2(\n\ + fun x, y, acc -> f(x, y)::acc, xs, ys, []) in\n\n\ + let List.filter: (? -> Bool, [?]) -> [?] =\n\ + fun p, xs ->\n\ + case xs\n\ + | [] => []\n\ + | x::xs =>\n\ + let xs = List.filter(p, xs) in \n\ + if p(x) then x :: xs else xs end in\n\n\ + let List.append: (([?], [?]) -> [?]) =\n\ + fun xs, ys -> List.fold_right(List.cons, xs, ys) in\n\n\ + let List.concat: [[?]] -> [?] =\n\ + fun xss -> List.fold_right(List.append, xss, []) in\n\n\ + let List.flatten = List.concat in\n\n\ + let List.mapi: ((Int, ?) -> ?, [?]) -> [?] =\n\ + fun f, xs ->\n\ + let go: ? -> ? = fun idx, xs ->\n\ + case xs\n\ + | [] => []\n\ + | hd::tl => f(idx, hd)::go(idx + 1, tl) end in\n\ + go(0, xs) in\n\n\ + let List.filteri: ((Int, ?) -> Bool, [?]) -> [?] =\n\ + fun f, xs ->\n\ + List.concat(List.mapi(\n\ + fun i, x -> if f(i, x) then [x] else [], xs)) in\n\n\ + let List.exists: (? -> Bool, [?]) -> Bool =\n\ + fun p, xs -> List.exists(p, xs) in\n\n\ + let List.for_all: (? -> Bool, [?]) -> Bool =\n\ + fun p, xs -> not(List.exists(fun x -> not(p(x)), xs)) in\n\n\ + let List.mem = fun eq, xs, y ->\n\ + List.exists(fun x -> eq(x, y), xs) in\n\n\ + #TODO:#\n\ + let List.filter_map = ? in\n\ + let List.concat_map = ? in\n\ + let List.for_all2 = ? in\n\ + let List.exists2 = ? in\n\ + let List.find = ? in\n\ + let List.partition = ? in\n\ + let List.split = ? in\n\ + let List.combine = ? in\n\ + let List.merge = ? in\n\ + let List.sort: [?] -> [?] = ? in\n\n\ + #TODO: Association Lists#\n\n\ + EXPORT"; }; { zipper = "((selection((focus Left)(content())(mode \ - Normal)))(backpack())(relatives((siblings(((Secondary((id \ - 36ace27f-cd35-4880-b50c-7629d3a8476a)(content(Whitespace\" \ + Normal)))(backpack())(relatives((siblings(()((Secondary((id \ + db0bbd0f-0c87-46c6-b8c8-b7d024dd1923)(content(Comment\"# Slide \ + Index 2: Hidden Prefix #\"))))(Secondary((id \ + b47ebbd4-4c8a-433f-bb9c-cdf7f205ce42)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + bea25f2e-cffa-4163-a61c-7c7dfabecfef)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 42e494a6-5fc2-459d-90a2-b4dd9141d379)(content(Comment\"# A todo \ + has a description and a status #\"))))(Secondary((id \ + 161e6d87-66b4-4314-9ec4-cef308715591)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 7e7eb2c8-c99e-4c8e-8acc-f3129f66b696)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 88f4351b-df1f-4797-8d5a-cb596d76890a)(content(Whitespace\" \ + \"))))(Tile((id \ + 2774ec2c-79db-458f-aef3-ae5b02ddb8cc)(label(Todo))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort TPat))))))(shards(0))(children())))(Secondary((id \ + 1f9d265d-85d1-443d-8530-518eedecf9cb)(content(Whitespace\" \ + \")))))((Secondary((id \ + b72b955b-28cb-4640-bbac-e2f049d13cd1)(content(Whitespace\" \ + \"))))(Tile((id \ + 4ba7acf7-3a14-4156-8e87-df36b10147a2)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 0b2d6951-cf35-44b1-91e6-e2753a2bebb9)(label(String))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + faf01117-96d4-4995-a70e-514ae06e503b)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + e6dc8d35-7bc6-4a81-a57b-60c6e9607a78)(content(Whitespace\" \ + \"))))(Tile((id \ + fa6807ab-4e1a-4631-8d4d-544f1ebff17f)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 49c4bfc9-b9a3-44d0-a9b4-e72b5b4b0157)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + de84ba08-ffff-411c-8b2d-d452cd7df9a7)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 0764b85b-2100-4d22-a9af-932f88d4c4e2)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 49a55103-292d-41fd-948a-85bd818825c9)(content(Comment\"# A \ + description input buffer and a todo list #\"))))(Secondary((id \ + c2e9d232-1c60-4849-abff-b051f6065256)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 5ec4c48b-1dfc-4efe-9029-05dba8513431)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 32a11f5b-34d7-45e4-a3fc-757082a73e65)(content(Whitespace\" \ + \"))))(Tile((id \ + 27896acd-0995-45cf-95ec-f164c90486e5)(label(Model))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort TPat))))))(shards(0))(children())))(Secondary((id \ + 037ead25-620c-44e8-8532-cea0dc3d4a02)(content(Whitespace\" \ + \")))))((Secondary((id \ + 127e3450-3d37-4102-9f71-f1031b56b785)(content(Whitespace\" \ + \"))))(Tile((id \ + 71583984-0cee-4724-baad-50f408e2f189)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + e40b288d-a93b-4a2c-bd7f-140e7461267e)(label(String))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 8e65ece0-dd76-4c8a-aaa8-82b66d225b1c)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 3f6826b1-8ca6-4153-a358-76ab1166d18b)(content(Whitespace\" \ + \"))))(Tile((id e409b76a-ce93-44c1-b7c9-bfd2db9bdad7)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 0d78c0c0-9110-4a7e-9767-248d040bc85a)(label(Todo))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 2b8e3684-7267-4495-a62e-c827f61054c9)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 41d2d14f-f641-4f67-9a99-8394901a2a7d)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 9d7dd754-80bf-443d-aae1-8b240e34abb7)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 8ac79625-f5ac-4bcd-a060-e984c924aec3)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 67cd96f4-5ac0-4011-8d4e-e0b0372f34d8)(content(Whitespace\" \ + \"))))(Tile((id \ + 5bee7921-a6e8-4c10-89e7-ac07f72284b9)(label(Action))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort TPat))))))(shards(0))(children())))(Secondary((id \ + 380d82b1-055d-42ad-983f-86ef3897f1b9)(content(Whitespace\" \ + \")))))((Secondary((id \ + 2792997e-0564-44f7-910c-f4dd8a7ce95c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + e66ac030-8c4c-4e44-8d3c-f024f5fdd5b4)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape(Concave \ + 10))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 0bb5dd36-a219-43fc-b2f7-5caaafc46ef7)(content(Whitespace\" \ + \"))))(Tile((id \ + d993097c-f0e8-4604-a7a9-0b6594cfa9f8)(label(AddTodo))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 612e6d92-db33-4e17-8092-4f867e4661af)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + b3281b90-9ef5-497d-8282-6bf3232bdee6)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort Typ))((shape(Concave \ + 10))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + ec899a32-1725-421d-9bce-a65a2a0295b8)(content(Whitespace\" \ + \"))))(Tile((id \ + bbb9bebd-a61d-4ece-a435-0c49f441f2d8)(label(RemoveTodo))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + b35db48e-7ad7-48f1-a10e-b10da7a84303)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + ae1388be-ae7b-438a-8a38-46fddc18b788)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 62b231a6-9c15-4b7f-bc53-ce841d583fa2)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d8f6e28a-224c-46a8-9de6-fb48139e257e)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort Typ))((shape(Concave \ + 10))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 7f3ac2ce-3cb1-4fd0-bbf3-2b19f8c60713)(content(Whitespace\" \ + \"))))(Tile((id \ + 2549acfc-25de-447f-b015-6ffa5d5acb23)(label(ToggleTodo))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + b5949c3e-f000-431f-ba09-e12afabd9c7b)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + b967d513-b36a-468f-b461-9b4a24bd6f5e)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + cf36fd41-5378-44d4-9f70-bf435a05951f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + a8d846f6-b0d8-4272-8632-2cd7f4cc23aa)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort Typ))((shape(Concave \ + 10))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + f004f48d-4047-4d82-baa9-c047549ae8a0)(content(Whitespace\" \ + \"))))(Tile((id \ + 008ce209-fb5d-4ce3-92af-01d09d70a5af)(label(UpdateBuffer))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + ad3edcb2-e017-42e6-9387-6ef3a9352c3f)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 0f248cb1-67f9-49f9-9614-fa0993805388)(label(String))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + d07e491c-5696-4975-9b54-e848c9f70a86)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 708abe43-0f64-4278-af18-ad041655f833)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + d416f2b2-af0b-4656-ab29-a8f222e25083)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d49a0ba3-d558-49bc-ba65-f6ad40c30eb1)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + ad566eeb-4543-40dc-8d04-a5a9139144ee)(content(Whitespace\" \ + \"))))(Tile((id \ + f5de3077-5464-4667-a7b3-3c2659281299)(label(Update))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort TPat))))))(shards(0))(children())))(Secondary((id \ + aaf36368-9144-4747-8dc2-2e7e8c7680eb)(content(Whitespace\" \ + \")))))((Secondary((id \ + 3230bcca-1e57-424e-8f5f-e8dd716b8b7d)(content(Whitespace\" \ + \"))))(Tile((id \ + e20d74a5-d6fa-4461-bb36-09b13c07dbfa)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + f89d7b2a-ca79-4078-a28b-d7bc59ab295c)(label(Model))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 3edba4a8-b870-4891-9b13-700b5c9865bf)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + e6abae74-98c7-4272-8233-491ebb9e0d74)(content(Whitespace\" \ + \"))))(Tile((id \ + 7e51c574-e060-4830-810a-e203ba044f89)(label(Action))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 56400cbc-3111-40f1-b625-7b5fa37855c9)(content(Whitespace\" \ + \"))))(Tile((id \ + 8fbcf7e5-d216-48fb-8f52-0a9334b5744b)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 5a69ea3e-c20a-4cb4-a1d9-f0532b443ff9)(content(Whitespace\" \ + \"))))(Tile((id \ + 32801c39-1bf4-4942-a5ea-6601f1384864)(label(Model))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + de9fdab0-6dc3-46f2-9925-e77b3730e00a)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 64969910-63a3-42e7-8087-236d90423046)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 5769e699-f53c-44ae-b099-ca20fb3801db)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 5ba13a63-97f6-4299-875f-e9a5f89cfc5b)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 6639e3f6-1464-4720-b44d-32c9ae6a0cad)(content(Whitespace\" \ + \"))))(Tile((id \ + 41ef0ce5-607c-495a-8ef8-1d5fc3306a06)(label(Todo.eq))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 28283cc5-88c2-4d8f-8aa2-c3aae562818d)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + c2fb6afc-6600-4c9e-aaf1-6f86ad565abf)(content(Whitespace\" \ + \"))))(Tile((id \ + 23ee7bfe-02c6-4f60-826e-e150dd4d7e85)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 824d52b4-4531-43cc-93aa-8cf32fbd668c)(label(Todo))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 399b744f-8bd4-4654-a399-1cbab4b664c4)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + aa976cb1-7e02-430a-99de-ed60043e6890)(content(Whitespace\" \ + \"))))(Tile((id \ + c70a1ed1-1ebf-4d6c-a3d1-c988202185f8)(label(Todo))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 797f84b3-135e-4ca8-8d2e-e2cde6eb2044)(content(Whitespace\" \ + \"))))(Tile((id \ + ecc12776-0a14-4f9a-937d-341d25348a5c)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 64477535-0130-41a1-ac3f-8da67e7bf483)(content(Whitespace\" \ + \"))))(Tile((id \ + 5ec72c2f-c774-487d-95cd-e3b0fbed972b)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + b4cc9a6b-4cbe-43f1-811a-75311d417e38)(content(Whitespace\" \ + \")))))((Secondary((id \ + 84510dda-ea20-4550-aef5-b542d4aca220)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 57590dfa-6570-45d6-8336-aef8f0a41cb7)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + d4bc2067-9107-41e5-b8ca-56a2f0c3f0cf)(content(Whitespace\" \ + \"))))(Tile((id \ + 5b71648b-b4eb-49e4-872d-b8db5430dbb2)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ + ba6b951a-454e-49a9-ab68-9cb13cda5c1c)(label(d1))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 69881650-2892-4076-867c-be197bb10131)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + d8142b29-ee3e-47c3-8392-7c24bbd59a23)(content(Whitespace\" \ + \"))))(Tile((id \ + cc80041d-b2dd-43d1-9db8-39332a0fb874)(label(s1))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Tile((id \ + bc14d040-be00-4d07-94fa-e334addbfed2)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 2c807230-14de-4c6b-9a05-55ffcde6b124)(content(Whitespace\" \ + \"))))(Tile((id \ + 807a2c74-8732-4bee-aa4e-d6d344320648)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ + e8f59b25-9837-40d3-bad3-f0d6cf0a12d0)(label(d2))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + dc28a61a-2a25-4bb6-bd93-9846f0b1692e)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 30cdd392-71cb-467c-82bf-508fa4de6ac1)(content(Whitespace\" \ + \"))))(Tile((id \ + dff9614f-c9ec-4be8-9dcd-8643dc6bb8de)(label(s2))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + ebdb6abb-d97a-4eb8-adcf-0ee4ce690096)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 0cd937d0-c736-45f0-916f-bf397f04f7db)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 009e98d6-8275-4091-8bfd-e51239b328d2)(label(d1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 44807b85-77b6-4b25-aa57-82a2ee5bdcb1)(content(Whitespace\" \ + \"))))(Tile((id \ + b0feb633-fabb-4ec4-bf18-8d01672ac9db)(label($==))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 8))(sort Exp))((shape(Concave \ + 8))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + ac13b6df-9640-4dac-a617-0afbe73a143d)(content(Whitespace\" \ + \"))))(Tile((id \ + 63a17162-1b6a-4b2a-8e3e-8a868b7fb0f7)(label(d2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + efc852c5-eeda-40fd-b3f9-b6e263e8465c)(content(Whitespace\" \ + \"))))(Tile((id \ + 068031d8-4520-430f-9a99-1818498b0e85)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort Exp))((shape(Concave \ + 9))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 19f4e99e-40a5-4cdd-9e15-a42683c072c1)(content(Whitespace\" \ + \"))))(Tile((id \ + 9e7cf392-be02-4afb-9c6b-0921e1700e73)(label(bool_eq))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 3d96f42a-dbf3-43a3-aec7-af51022b838f)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 54cd556e-cc91-4eb3-bbcf-758ffeb814ad)(label(s1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 99105c4e-9a6b-4b64-874c-5059d39baa18)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 66f7f48e-72a1-43ff-b903-44c0f2652f63)(content(Whitespace\" \ + \"))))(Tile((id \ + a12d1117-fda0-42eb-8496-c8f348f7c6d5)(label(s2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 66f63f5f-ef69-4e67-9ffd-6bc0ef0c8e59)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 458f2d8a-3c69-400d-93c2-3547fcebd2bf)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + f8bd107e-636e-46c4-9e8d-38adceb1cc34)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 264c60af-8685-4d85-aeed-2f8e7bab1baf)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + cafc1b29-d92f-4b30-b5bf-4b18d510186a)(content(Whitespace\" \ + \"))))(Tile((id \ + 51a5a19a-3153-4f9e-8750-b225527bcdcb)(label(Model.eq))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 3847bf68-1be6-4fe9-80ac-1c3fb66d6042)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 5324c896-08e1-422c-a4ec-a4806a7c5a99)(content(Whitespace\" \ + \"))))(Tile((id \ + c70a751d-c142-48f9-86be-477a13f60a88)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 4890ce9b-2f4d-48f4-a61e-e9c9edb214fb)(label(Model))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 989bd08f-ad48-4903-aec6-0133a4a01391)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 5d44eb93-7556-40db-a6c7-a2a3d7427469)(content(Whitespace\" \ + \"))))(Tile((id \ + c05b05f1-b307-488d-8754-f511dde73422)(label(Model))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 3dead4fe-f25b-4f3f-8e80-bae70c4b0b9c)(content(Whitespace\" \ + \"))))(Tile((id \ + 1e54b066-9dd2-4cb5-8986-9cb6476c2d5e)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 40eb6fdc-924b-4605-a60c-db3ca146f332)(content(Whitespace\" \ + \"))))(Tile((id \ + bf45202a-69f4-4ff8-8e88-ac403bed79d5)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + af59b249-eeb4-442b-8dcc-cad1a7439649)(content(Whitespace\" \ + \")))))((Secondary((id \ + 8ee99adb-d59a-495c-8be4-4409268dea10)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 1b02401f-743c-4eef-aee0-13f1c0a57670)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + bdf0b2af-8462-4f50-9583-99652352d1a1)(content(Whitespace\" \ + \"))))(Tile((id \ + 7f576754-adc3-4292-99fa-df37410d8be7)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ + afb0e960-e94c-41bf-a56a-ab8a8e271ed9)(label(b1))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 1fdf9d01-1f94-4340-9512-8962c114bc14)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 33938380-1bfb-4047-b77f-48652c7d5065)(content(Whitespace\" \ + \"))))(Tile((id \ + be70f082-b74e-4082-81a3-41e1e5d78dc8)(label(ts1))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Tile((id \ + 7ae8b9e1-a60c-4ded-b865-ea12523e0881)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 9c21c3b0-1520-40f0-a3a0-d53c5266be66)(content(Whitespace\" \ + \"))))(Tile((id \ + 6eab6cdd-9eda-476b-bb45-ea7195e4293b)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ + a08390a1-ad96-41a4-92ad-e098420f7822)(label(b2))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 35a17ea1-7856-45ae-9ea8-09539204c794)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + d9bb076c-17c3-463d-be76-45ca048f9a54)(content(Whitespace\" \ + \"))))(Tile((id \ + a4da83da-26c7-4ec1-a5c2-361ca1ca91fa)(label(ts2))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + 34de5985-c2e6-4c1d-b78f-91900975d808)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 90bda923-ea67-42cc-9ec9-054d17d56096)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d8eb17a6-b2db-43df-83d4-117bdfb7aa93)(label(b1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 2934ba5d-8170-44d7-b019-39d381a1889b)(content(Whitespace\" \ + \"))))(Tile((id \ + ee6f6b52-7512-476b-8a1c-7031e746bf12)(label($==))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 8))(sort Exp))((shape(Concave \ + 8))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 05c36305-febe-4364-9c1e-fcae1a2b5e1a)(content(Whitespace\" \ + \"))))(Tile((id \ + 3335eb14-252c-4906-99ba-96c2e17c74d2)(label(b2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + ee18b94e-e25e-497f-be57-81e4e5851533)(content(Whitespace\" \ + \"))))(Tile((id \ + 26911361-d821-4eee-a36f-c23bc123bc08)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort Exp))((shape(Concave \ + 9))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + f228c862-edbd-4875-bb4b-237bb0f6b407)(content(Whitespace\" \ + \"))))(Tile((id \ + 249775bd-a6a8-49a2-9984-1cba2b0d7163)(label(List.equal))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 02e01db4-f584-47b5-8261-1a835e0127b8)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + a129df6f-c176-4afa-9a1e-f172a5abd02c)(label(Todo.eq))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + e964b76d-81a8-4fb5-ba4e-8cbb244d7c54)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 764eda32-6032-4ddc-a985-55ebc19cf0b1)(content(Whitespace\" \ + \"))))(Tile((id \ + c3f7e3d9-59f2-4065-a5f3-cb8f4f4fea6e)(label(ts1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 6edbe39d-1cd0-4362-813f-36d82697fd6b)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + f31419f5-171b-4fda-9ab0-5f3f46d2cb51)(content(Whitespace\" \ + \"))))(Tile((id \ + 5a350656-9de3-49dc-9391-d33ea6271a82)(label(ts2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + d97a788a-ce52-488c-b564-4b71fd617105)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 75d51794-55be-41a0-bdea-e9de6c35fc4a)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + b525f1d1-2bfc-4661-8e03-30d3412d7b39)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 5461b731-e7a6-4f30-ad72-f48155eb72f4)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + fa26a050-e805-49be-bb40-103cf13a54b4)(content(Whitespace\" \ + \"))))(Tile((id \ + 76b20122-b7d3-4aaa-8fea-7780f60c0710)(label(Model.init))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 84b5b33f-8b3a-463d-a5b6-093498146c5a)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + e8892133-2a6f-4af9-ae9d-76d9e582a5d2)(content(Whitespace\" \ + \"))))(Tile((id \ + 5aa59945-6ab1-4d03-aae5-d05fcd53d01c)(label(Model))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + ec952b55-bd15-45de-8962-72bd824f53a8)(content(Whitespace\" \ + \")))))((Secondary((id \ + 9dd8b752-312c-4d6d-a840-6d9acbcddad2)(content(Whitespace\" \ + \"))))(Tile((id \ + 993544b9-e981-48ee-bcc3-93cf4af21a49)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + eef32df1-b354-4b1d-a82d-dbb1e1d60e68)(label(\"\\\"\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + e895088b-dfaa-445c-97c7-fa4a4ff03235)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 66846255-9b1f-4a92-88f5-823cfcc63194)(content(Whitespace\" \ + \"))))(Tile((id \ + a91c2ee7-445d-43f6-91c4-8a46f40c3f3f)(label([]))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 598c9f8a-9ae5-4c2b-9e35-68aa0af27f4d)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 6b360da9-d6f0-4341-9132-1a3c1f9c282b)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 59c3c0e3-9924-45d4-b8b9-71e5f5490cf0)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 668c4f46-aaeb-4cd8-b85c-08a409ae11b9)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + c9e9a4b9-5568-4541-9f0c-5d90013b81cc)(content(Whitespace\" \ + \"))))(Tile((id \ + e2bb9e04-a2ef-47fc-8160-fe57703d55da)(label(Attr))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort TPat))))))(shards(0))(children())))(Secondary((id \ + beb77d8a-68cc-4606-b824-b0c0df1f215e)(content(Whitespace\" \ + \")))))((Secondary((id \ + e5aa80d2-3f26-4dd0-9030-62ecbeaaacbb)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 30f79d12-06d1-4b52-a00e-54711129d55f)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape(Concave \ + 10))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 89489a47-ba12-4b0c-9f77-5f6d6acaff3d)(content(Whitespace\" \ + \"))))(Tile((id \ + a3d40a8d-ad20-4e42-b6ce-ee7c8a9d4745)(label(OnClick))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 883ebedb-f4a6-42c7-8bfe-1636d0d185fb)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 9566a60f-b5fb-4a7e-82f5-5c08ca75a7b5)(label(\"()\"))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + cb50efc8-0af4-4b26-92ad-916d08046c8b)(content(Whitespace\" \ + \"))))(Tile((id \ + 1acc7209-25da-4bb6-8e19-56e2005deac1)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 01c9614b-0956-43d3-9c74-212d34454b69)(content(Whitespace\" \ + \"))))(Tile((id \ + 94709898-46d9-4398-9318-73ba2a48d26d)(label(Action))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + bf8d00d0-f7ad-40db-a6e4-2c447eeeb3e0)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + da54eda9-488f-4238-bcdc-df419aca2f70)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort Typ))((shape(Concave \ + 10))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + a700cef8-7078-4f10-b345-7b378c1349a9)(content(Whitespace\" \ + \"))))(Tile((id \ + 77e84ad7-83f5-4603-ac08-b1d8f20af16f)(label(OnMouseDown))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + a27c311f-c1ba-4a61-b71e-bca12bf1d2cb)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 7646514f-0c6b-4f64-9ab7-3d093124616a)(label(\"()\"))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + f967da46-386d-43ff-8dc1-2614b7530158)(content(Whitespace\" \ + \"))))(Tile((id \ + f9d3a71a-7d3e-4f35-b253-a529733a5b6b)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + f7b361ae-defd-48e0-a0c8-f821dfd139cd)(content(Whitespace\" \ + \"))))(Tile((id \ + 97b7b72d-b3ac-4cf1-a655-dbffc2c27637)(label(Action))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 5d2dada2-809c-438f-a40c-3aeafba0989a)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 3940e981-fbaa-468e-89e6-8960d87d0a3c)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort Typ))((shape(Concave \ + 10))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + b9d2b316-adcc-4908-9eb4-b572cbbeea8d)(content(Whitespace\" \ + \"))))(Tile((id \ + 0bedc237-f870-4bf0-859c-bdc674feb9bf)(label(OnInput))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 85328659-ae90-4cb6-8322-8f2f6f833116)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + f24d2c64-4080-447a-a310-376db7d36896)(label(String))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + c256f64a-5e13-49ec-b981-11537a0d45ba)(content(Whitespace\" \ + \"))))(Tile((id \ + 37e50bf5-0652-4fef-8616-03f594504d22)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 34bced5c-8e68-457a-beb0-c6600e65fe38)(content(Whitespace\" \ + \"))))(Tile((id \ + e239e21e-de4d-4e95-a561-d915b357f340)(label(Action))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 32102c4b-ac76-4f86-bd0a-0c7aa09f595f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + c2cef5c3-c612-4e30-b085-cff25d4b5e28)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort Typ))((shape(Concave \ + 10))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 35e6bbb2-e96d-4a80-9ce9-7e423f8d990c)(content(Whitespace\" \ + \"))))(Tile((id \ + b4a300e1-8a25-4824-b1a2-07f208448872)(label(Create))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + a7566d24-4e66-44c1-a80c-d43681883761)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 6af9f265-41a7-4be8-9365-30c5af2505b6)(label(String))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + a21bb99e-9dd2-4a51-903e-4cb76c48050c)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 24498fba-d7ae-4347-aa61-26e2ade0ebc7)(content(Whitespace\" \ + \"))))(Tile((id \ + f308b973-8c8c-453c-ad18-4872b0db109e)(label(String))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + ba6f6969-8870-483d-be17-6e637630b285)(content(Whitespace\" \ \"))))(Secondary((id \ - 39a56f0c-5214-443b-8bd9-931ac9a7720a)(content(Whitespace\" \ - \")))))((Grout((id cbfc7b9d-7a60-4d4d-9a04-5239fe7008a3)(shape \ - Convex))))))(ancestors())))(caret Outer))"; - backup_text = " "; + 2ffaad22-b3e9-4cad-bcb7-6384b538eac7)(content(Whitespace\" \ + \"))))(Secondary((id \ + 0e4dedfb-036b-4589-9e1b-44e9f8d737a7)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 23483ecb-a139-48ed-84e0-117f29a1f446)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort Typ))((shape(Concave \ + 10))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 77e6048c-8162-4ab4-ab15-88f05e68bb8d)(content(Whitespace\" \ + \"))))(Tile((id \ + 30ceabf1-f841-48a6-9e28-093f90884b56)(label(Style))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 5947bf96-37c9-4a8b-9801-540c95074807)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 1de02f6d-d486-414d-8f9c-79d8b0f7ca5c)(label([ ]))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 591980cb-92bb-49ed-a5f2-1b67cc8c04d8)(label(StyleAttr))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 45cf4748-7a41-4c3e-b338-0bd093091c44)(content(Whitespace\" \ + \"))))(Secondary((id \ + 9039a9e1-854e-472e-b595-250a0812f75e)(content(Whitespace\" \ + \"))))(Secondary((id \ + cfc2458b-254d-4bf3-9603-58f9a903a0c7)(content(Whitespace\" \ + \"))))(Secondary((id \ + ce6d46fd-5751-4779-8fc1-a0db1e4ac3a5)(content(Whitespace\" \ + \"))))(Secondary((id \ + 264d8bfc-9c7c-45c7-aa3f-3fdd8579621d)(content(Whitespace\" \ + \"))))(Secondary((id \ + d1cfab4f-d752-428a-8218-56caf4405e50)(content(Whitespace\" \ + \"))))(Secondary((id \ + e266883a-20aa-4267-ac9d-c4896d87017e)(content(Whitespace\"\\226\\143\\142\")))))))))(Secondary((id \ + 27995a69-73a0-4778-ab5d-ff7fae5b15fa)(content(Whitespace\" \ + \"))))(Secondary((id \ + 5c868efb-8641-4d24-9253-4d5e214ee7bb)(content(Whitespace\" \ + \"))))(Secondary((id \ + 97d4613e-3c86-4743-a0ac-2565dfbaa490)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 4dd4aad2-bb5e-4424-9fb9-368ef5592daa)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + fdb35465-06d0-437b-b00d-04a44e516fc3)(content(Whitespace\" \ + \"))))(Tile((id \ + 4c543c25-1df7-44bb-bf73-59eaf19c3318)(label(Node))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort TPat))))))(shards(0))(children())))(Secondary((id \ + 54f34671-3cf5-4413-99d8-784cde8a134a)(content(Whitespace\" \ + \")))))((Secondary((id \ + e203dca0-a9f4-430e-b866-3e0e2e6a0591)(content(Whitespace\" \ + \"))))(Secondary((id \ + c149b1dd-67f1-4a22-9e2a-6c8d1e5bb3a8)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 48fb36a5-b7bc-4807-9e2e-f5b72d5cf264)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape(Concave \ + 10))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + b452aa63-4084-4707-9737-c514d5bf448b)(content(Whitespace\" \ + \"))))(Tile((id \ + 817ec358-0758-43bf-a7a2-fef8fcc5defc)(label(Div))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + bcf5e879-f3ce-411c-b41d-1ad6181528e5)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + c2e6d34f-29cd-44bf-8bb9-adc77d804c88)(label([ ]))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 3dea0751-789d-411d-b2f7-42da506387f6)(label(Attr))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Tile((id \ + 5baa3fc1-07a0-49b2-b743-37e28087d35d)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 5733b538-f2bc-4017-889f-c0465031b3bb)(content(Whitespace\" \ + \"))))(Tile((id 66e53bb0-86fc-4fbe-8eff-01e5a7df6c66)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 8105e7ca-83ae-48de-a767-a1ab37193f52)(label(Node))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + a367537e-9db3-4459-8580-7da6a2a0e1c6)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 9025989a-33f7-48d9-8678-a17e41d5007a)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort Typ))((shape(Concave \ + 10))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + a9783634-2bed-462a-a570-cb524bdcbb6a)(content(Whitespace\" \ + \"))))(Tile((id \ + 4de39a5a-c529-469c-a110-b1f74b72882e)(label(Text))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 86711a72-2e04-4e7f-8896-e69164f201b5)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 78feec87-f02f-4f27-96f6-7d896e7eac75)(label(String))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 81fee59f-e78c-461e-b112-ff8ccc7d6db5)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 61784faf-8bf8-4ee7-bdeb-97d0cd931a86)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort Typ))((shape(Concave \ + 10))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 05151115-2bd5-44c2-9f8f-b01aa742bcd2)(content(Whitespace\" \ + \"))))(Tile((id \ + 8808fb27-aa52-46bc-bb51-7584aadd983a)(label(Button))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 0a27df55-c617-4c54-90e2-14faefaba776)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 498387f0-a1ae-42a6-b051-c876f3e50597)(label([ ]))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 0924dfc2-ebe3-4efd-ba88-461624f2fa8f)(label(Attr))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Tile((id \ + fabb49ea-d042-4e8c-9ed4-1be1e03d659c)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Tile((id \ + 8cb07952-1ed9-4e54-8c5e-afc837f49ecd)(label([ ]))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 82bccb7c-de5e-49c0-adcb-eec2ce7db5bc)(label(Node))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 500e013a-b606-4703-984d-f657d30f18b5)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 673012f7-e13b-4395-afd8-dddcc2501280)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort Typ))((shape(Concave \ + 10))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 6c508e2d-8b12-4a81-9647-543c44c11d19)(content(Whitespace\" \ + \"))))(Tile((id \ + 8e240316-3ca8-4ac5-9fbb-8db9bc419081)(label(Checkbox))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 39585e6f-767b-49c9-b892-30f77be6c393)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 4710a735-bd2e-425e-bfcc-e54a21f59593)(label([ ]))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + c3062fa9-3ee4-4fd2-93dd-2731fe353d92)(label(Attr))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Tile((id \ + 72aae260-c84d-4746-9ed2-348b4217bd99)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Tile((id \ + 12bc84ed-fb18-4735-bfdc-3a8151f8921e)(label([ ]))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 7762713c-cb98-4ecd-824a-d0714ce3fcce)(label(Node))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 19aa257f-3fc5-477e-971a-ac7999eee722)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 19a96479-e4a3-434e-81cc-b0e88a076407)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort Typ))((shape(Concave \ + 10))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 26ff4579-ea54-4244-a06a-264fae4c9118)(content(Whitespace\" \ + \"))))(Tile((id \ + 4e8e570c-46d5-4e6b-891b-95d523e5d4ae)(label(ColorInput))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 908f796b-fa45-49df-88b7-2bec0dd5be71)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + f6ad8350-0ab4-428a-8d85-b2de30598b65)(label([ ]))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 00f3f6f9-73c0-4b9e-92a2-8f7612d6502c)(label(Attr))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Tile((id \ + ecc177e7-a904-4d89-ba17-cafbf9f44481)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Tile((id \ + 565a58c8-5fbf-4b06-9be8-7fce905cb4c0)(label([ ]))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 6a27fa1b-7eab-415b-93a7-5bd77da355cd)(label(Node))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 4199a9f9-c53f-4cd6-849d-e7405721c8a6)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 99e823be-6571-4243-9c79-3a613fe678ca)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort Typ))((shape(Concave \ + 10))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + e3a05abf-7497-4cc2-99fa-53ef67d93e82)(content(Whitespace\" \ + \"))))(Tile((id \ + f4472bc9-1f4b-4fc0-89a9-c0845b4d610a)(label(DateInput))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + b48a4022-07f3-4255-8881-3e555f0d8958)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + ac76989d-c8c0-47f3-b996-a8fc4a1c27be)(label([ ]))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 9b43a5d5-2fdf-4805-bb26-fd74cb292d2d)(label(Attr))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Tile((id \ + aabdaabc-dfd8-45d1-bd75-849f0c8ad79c)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Tile((id \ + 9fc404d8-2844-4b22-8a15-a2e72329bbeb)(label([ ]))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 9182d317-7b04-4b6f-a36b-ebad1235d467)(label(Node))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + e422254b-0a5f-4a76-95cd-201d5324ee05)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 903b60f0-4243-43ab-a2c9-a9d0dd4986d4)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort Typ))((shape(Concave \ + 10))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 1d4dacef-6b00-4c73-99f7-183913725508)(content(Whitespace\" \ + \"))))(Tile((id \ + 322692f0-a3d4-4380-9bc0-c602f7db9c4b)(label(NumberInput))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 9db87f48-0bb9-4171-90ce-5b7a6e751be6)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 2b29cab6-693a-45f1-b1f3-ec6c877b82d9)(label([ ]))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + d2f8d571-9cac-4f41-b074-fad91090f67f)(label(Attr))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Tile((id \ + da5f8bb2-74c8-4922-a4f7-7a002192d142)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Tile((id \ + 2296f396-e00f-486a-ac8d-7ca59afb52cc)(label([ ]))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 8893d551-1697-4c8a-a078-ffa250686195)(label(Node))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 1e4f9a27-cd03-4b85-986c-1a76fe72923f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 79f0ea27-aea9-4f66-aca1-bb8aa0b78f88)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort Typ))((shape(Concave \ + 10))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + ca0bf5cf-add7-462c-86fe-42e5ec512b78)(content(Whitespace\" \ + \"))))(Tile((id \ + b3ccd020-3f58-4552-9d02-d6e745e3ec15)(label(Radio))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + f6649b12-da6a-4933-9f83-0a1df3163630)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 09268c2f-c2ca-4555-a115-859abda068be)(label([ ]))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 4094857e-a230-417d-b0bb-3cb981dd0eb4)(label(Attr))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Tile((id \ + d15fa10a-97de-4f5a-ba76-93d5c3918374)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Tile((id \ + b44eef82-180a-4516-86a1-09bed77fce3d)(label([ ]))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 91d1ba94-8cdb-4187-b1c1-1bee9b580189)(label(Node))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 74b23a48-1551-405c-a988-72e718b096a5)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + cd8553b2-0318-4b63-b552-b310b2e0e34a)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort Typ))((shape(Concave \ + 10))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + f5146282-ed68-45f7-98d2-dc42e856b0ff)(content(Whitespace\" \ + \"))))(Tile((id \ + 9c643da8-4577-4a59-a268-6554a008490f)(label(Range))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 6aa31524-6368-4a78-ac7f-09fa84e0e841)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + bbec384a-50cc-4aa9-805a-e476c4d85923)(label([ ]))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + e3682c5a-a916-4208-ae6c-d73863da9661)(label(Attr))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Tile((id \ + 678abbe1-73c0-4c72-b8ea-4518006dde87)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Tile((id \ + 5850897e-4558-43fd-82b7-78e64b544dbe)(label([ ]))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 915ac65c-82dc-462b-b00a-226869013dfa)(label(Node))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 4ceaf017-044e-47d7-83d8-024f8173dfe7)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + aa62b99c-3141-4137-aa25-c5e0fa5f4b57)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort Typ))((shape(Concave \ + 10))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 7b2f64d1-10e3-4c94-8de9-e610106f35bf)(content(Whitespace\" \ + \"))))(Tile((id \ + 512119cf-7814-4bdd-9063-fd181a185364)(label(TextInput))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 8b1f2d79-7c33-4a06-b0d1-c9b5d0f2edd7)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 3ff359e2-be9f-4618-9670-a96dfb0cd56e)(label([ ]))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + a2ed7895-a79f-4d6b-9b6e-18c5a9978a29)(label(Attr))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Tile((id \ + c9c33d5e-3f57-44e6-86df-a05b151e1d71)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Tile((id \ + 555103bc-1dfa-4d48-9e0e-cae52adf6b28)(label([ ]))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + b184e7fb-b5a3-429c-86b2-95f92e5d4113)(label(Node))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 4580e292-7c6b-4833-91b9-2d334d55cb14)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + e6baf58b-1d63-439b-85d2-93f0bd1202e0)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort Typ))((shape(Concave \ + 10))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 8bf9f40a-1e5a-4092-8b1f-0db1361e05a9)(content(Whitespace\" \ + \"))))(Tile((id \ + 27919faf-cd79-4614-8b68-167647c67ef3)(label(TimeInput))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + e1924fd2-b6dd-4ce1-a33a-f422a9435dce)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + f632b474-a553-43df-9bc2-45003256c197)(label([ ]))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + aafff480-afab-46cf-bd51-d947c3e34290)(label(Attr))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Tile((id \ + f40c1763-181c-4c18-9246-149ce68bd834)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Tile((id \ + 3c1737a4-fc7c-4335-beb8-e2d628abe333)(label([ ]))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + a437c86b-9db8-4364-97c4-171851252445)(label(Node))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + ed749ddf-bb63-4bec-bd16-df0d4c20a9e5)(content(Whitespace\" \ + \"))))(Secondary((id \ + 41d5d44c-c67a-48f2-84d7-648e507ea2bd)(content(Whitespace\" \ + \"))))(Secondary((id \ + 5b5a47ce-bcc4-47d3-9d2a-1597d88cd30e)(content(Whitespace\" \ + \"))))(Secondary((id \ + 6558ec8f-281d-4783-b586-49bebe4fec05)(content(Whitespace\" \ + \"))))(Secondary((id \ + 44ff2425-ec22-41d2-af5d-3160ee6d9ca4)(content(Whitespace\" \ + \"))))(Secondary((id \ + 6f4a6a00-9261-45db-84f9-ea64d4705f3d)(content(Whitespace\" \ + \"))))(Secondary((id \ + 72975973-2a36-42ed-82aa-b1d7224d9e4f)(content(Whitespace\"\\226\\143\\142\")))))))))(Secondary((id \ + 6be91e46-b222-468c-8437-05f937261f6b)(content(Whitespace\" \ + \"))))(Secondary((id \ + 8a223c10-98e6-4889-b4c1-698b595fe140)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 64a056f8-59af-4cd9-a7df-41daaec8c9e3)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 658c12d5-1a30-478e-ae4e-0d677aa547d3)(content(Whitespace\" \ + \"))))(Tile((id \ + c803521e-4ae7-4614-b3c7-2f7ec6421bbf)(label(View))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort TPat))))))(shards(0))(children())))(Secondary((id \ + d44ce063-307e-4a2b-93cc-b9606af41aff)(content(Whitespace\" \ + \")))))((Secondary((id \ + 4bc46bb5-0263-41b6-a492-a45cd545e55e)(content(Whitespace\" \ + \"))))(Tile((id \ + c4e5d759-c575-4ce5-991f-dd396133f410)(label(Model))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 00c7a1e2-7d27-4ff9-89d4-094ffeaa1be3)(content(Whitespace\" \ + \"))))(Tile((id \ + 552ca227-9676-452f-815d-f92e27554a16)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + dae478c8-414d-4345-a0f5-1dea5f2b56fe)(content(Whitespace\" \ + \"))))(Tile((id \ + c538ab4d-effe-4285-b339-0edef17c2dfa)(label(Node))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 6714e235-46d0-4b9a-a98d-817e7fc1f62b)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + d194cc9e-91ab-476a-be26-f03cfb589b4f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + a26a6c59-ad36-4c53-8d98-0eec167d3438)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + e52a9c9a-76cd-462b-b9e0-2749fd35dfbc)(content(Whitespace\" \ + \"))))(Tile((id \ + 66079e74-82e1-4648-8242-57f1414af921)(label(Render))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort TPat))))))(shards(0))(children())))(Secondary((id \ + f27c13e7-673b-4855-a58d-44adf8acf5f6)(content(Whitespace\" \ + \")))))((Secondary((id \ + f4216e47-dea3-465b-846d-bb916698fea6)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + be342b74-9279-4d36-85d8-1a04c29670f6)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape(Concave \ + 10))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + baeef5f7-16bc-4736-b3e7-67ded0de4a5f)(content(Whitespace\" \ + \"))))(Tile((id \ + 7222d261-94c4-4be0-bb06-06e4b8ff8586)(label(Render))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + b152017c-c01b-4f54-ae77-2afe9cf2619a)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + fffee151-19ce-4c24-9164-39bef51de5ae)(label(String))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 891e47e0-5033-4bae-8ccf-4a5def6ba00a)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + a63eceea-1422-46af-9229-9b62db1f903b)(content(Whitespace\" \ + \"))))(Tile((id \ + 07af8dd2-443e-4831-9f8f-87e446f16d1d)(label(Model))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + f8416600-e9e8-4656-b351-a229807d4c7b)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 484206a5-0f0e-448b-bea4-7c2584e10721)(content(Whitespace\" \ + \"))))(Tile((id \ + f775e303-7f1e-4d3a-af2a-f74cca5a39e2)(label(View))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 300df531-40dc-4b06-a551-96ebfa6624f7)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + ee157f2a-ab1e-45ad-a716-0b9fcc07e2c7)(content(Whitespace\" \ + \"))))(Tile((id \ + 3dd7cfd2-20f2-4032-8edb-900ec28a2713)(label(Update))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + ee7dbee1-4a21-4c49-82b4-b82abce5ed88)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 5e35b7cd-ce1c-499f-87f7-0e10f813ca71)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 7c180e5d-0cf5-4a18-bc8d-bf602bd04460)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 58869f49-14f8-4805-a280-60a2774dd7f1)(label(EXPORT))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))(ancestors())))(caret \ + Outer))"; + backup_text = + "# Slide Index 2: Hidden Prefix #\n\n\ + # A todo has a description and a status #\n\ + type Todo = (String, Bool) in\n\n\ + # A description input buffer and a todo list #\n\ + type Model = (String, [Todo]) in\n\n\ + type Action =\n\ + + AddTodo\n\ + + RemoveTodo(Int)\n\ + + ToggleTodo(Int)\n\ + + UpdateBuffer(String) in\n\n\ + type Update = (Model, Action) -> Model in\n\n\ + let Todo.eq: (Todo, Todo) -> Bool =\n\ + fun (d1, s1), (d2, s2) ->\n\ + d1 $== d2 && bool_eq(s1, s2) in\n\n\ + let Model.eq: (Model, Model) -> Bool =\n\ + fun (b1, ts1), (b2, ts2) ->\n\ + b1 $== b2 && List.equal(Todo.eq, ts1, ts2) in\n\n\ + let Model.init: Model = (\"\", []) in\n\n\ + type Attr =\n\ + + OnClick(() -> Action)\n\ + + OnMouseDown(() -> Action)\n\ + + OnInput(String -> Action)\n\ + + Create(String, String) \n\ + + Style([StyleAttr]) \n\ + in \n\ + type Node = \n\ + + Div([Attr], [Node])\n\ + + Text(String)\n\ + + Button([Attr],[Node])\n\ + + Checkbox([Attr],[Node])\n\ + + ColorInput([Attr],[Node])\n\ + + DateInput([Attr],[Node])\n\ + + NumberInput([Attr],[Node])\n\ + + Radio([Attr],[Node])\n\ + + Range([Attr],[Node])\n\ + + TextInput([Attr],[Node])\n\ + + TimeInput([Attr],[Node]) \n\ + in \n\ + type View = Model -> Node in\n\ + type Render =\n\ + + Render(String, Model, View, Update) in\n\n\ + EXPORT"; + }; + { + zipper = + "((selection((focus Left)(content())(mode \ + Normal)))(backpack())(relatives((siblings(()((Secondary((id \ + 8e5eeb14-6ad3-4db4-a7aa-724e98df853c)(content(Comment\"# Slide \ + Index 3: Included Prefix #\"))))(Secondary((id \ + 97427376-029e-4dde-b864-abb3fe31cb15)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 620ec524-80ab-4f07-b451-449060c1076a)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + ac7b6099-0b86-4f54-bca6-837ed00108e3)(label(EXPORT))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))(ancestors())))(caret \ + Outer))"; + backup_text = "# Slide Index 3: Included Prefix #\n\nEXPORT"; }; { zipper = "((selection((focus Left)(content())(mode \ - Normal)))(backpack())(relatives((siblings(((Secondary((id \ - 83b9a843-4947-43b0-8232-fb9ce31f8628)(content(Whitespace\" \ + Normal)))(backpack())(relatives((siblings(()((Secondary((id \ + 8b516bb0-a91a-4487-bcf0-d3bcc29bbdc2)(content(Comment\"# Slide \ + Index 4: Base Sketch #\"))))(Secondary((id \ + 22caf0f9-54bd-4579-b4cb-49bbf5eca7e7)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 8d498da9-0210-44a6-a9e1-63dff320886e)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 909cbc3c-125e-4591-85a6-d355ccc09d88)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + ce9c5445-d303-42a8-80ce-fdaafd896cd1)(content(Whitespace\" \ + \"))))(Tile((id \ + 96015997-89dc-4405-978c-d18489d15a4c)(label(update))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 6de07445-9709-43ef-b668-4ed3fcfb89e2)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + da1d5869-1823-4ad8-8150-c5d4c0858b6c)(content(Whitespace\" \ + \"))))(Tile((id \ + ac0ca562-3e8e-4388-b156-438e6a82297c)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + f4646c7d-9c4b-4afd-9c3e-5061b2d230e5)(label(Model))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 10defba5-70e5-4e7d-bd7d-90845a3d66f9)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + c8191eb2-2066-43d4-a79e-1a8710d80a36)(content(Whitespace\" \ + \"))))(Tile((id \ + d14c6c47-486e-4f25-8b60-781d2891dad9)(label(Action))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 7ac5c968-07e1-4951-9ceb-e00760316f42)(content(Whitespace\" \ + \"))))(Tile((id \ + 2c62607b-eb53-44ae-bce0-f97d1db0f707)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + a380e5b4-5e87-47bc-960f-626f7fadd5e1)(content(Whitespace\" \ + \"))))(Tile((id \ + 6619988f-f570-402d-8fd8-18b083183bbf)(label(Model))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 60cbe58e-b676-4630-abd1-fdb0da03bbbb)(content(Whitespace\" \ + \")))))((Secondary((id \ + 1e6079ef-2f11-4d11-acb7-89a389097385)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 3e73988d-577c-4368-8481-2ace9b25b544)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + a1510ed7-cdb8-472f-9f80-91290a8be521)(content(Whitespace\" \ + \"))))(Tile((id \ + 849c2311-21b9-4133-a47d-4888b1aafc88)(label(add))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + c067df84-1c35-4eec-aa94-c30b81e32abd)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 4d2f559f-b7f1-4c50-9746-4d64206b5f6b)(content(Whitespace\" \ + \"))))(Tile((id \ + a6fee8fd-b956-4c04-ab65-608b7cae3ffe)(label(Model))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + d467d6c2-e7e0-43e6-9624-a48d819f9a5b)(content(Whitespace\" \ + \"))))(Tile((id \ + cdc4e0bd-4d2f-4ea4-a0b1-62c2df711368)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 4c392cc4-bfdb-43d1-bc96-2e53e2d58952)(content(Whitespace\" \ + \"))))(Tile((id ddba30d5-2e4c-41ce-834e-5b4dd365562e)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + f6fb0bef-ff4a-452e-808d-da5212a4c527)(label(Todo))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 4e3f1d09-82d3-4c4b-9982-8a0422f98ce7)(content(Whitespace\" \ + \")))))((Secondary((id \ + 64ce07e2-e7c9-4c9b-8530-29b42a4365f1)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 784470e5-9d17-47c4-9c63-29d034535bed)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + ae989df0-69da-45e6-96b9-4b29e099b693)(content(Whitespace\" \ + \"))))(Tile((id \ + ab5c0bfc-2234-4261-ba83-96c031f7c8f0)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ + d345afd4-9c81-4064-84ad-2e045cd7f93a)(label(description))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + c6e6a38c-b425-4530-8903-a99081799fe8)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 1bc86a2d-4a6e-460f-9721-c6d412b57976)(content(Whitespace\" \ + \"))))(Tile((id \ + a41f22a2-b74f-41ec-8ece-be29eb1de231)(label(todos))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + 0a8975ce-7118-438c-ace7-ada02f71a7f0)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 18bb1c08-1b1a-4222-9f3f-13e9e535004b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + bb89cc32-92ff-4e05-b8eb-69f201441200)(label(if then \ + else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 12))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 3b5364fc-d9fa-4567-8898-d45d13c2d7bd)(content(Whitespace\" \ + \"))))(Tile((id \ + eb3d78d1-70a9-4c9e-a26a-22c9834297ba)(label(description))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 7acf3e6f-c715-4260-8646-c3794d71a56e)(content(Whitespace\" \ + \"))))(Tile((id \ + a598f9fc-f94b-4f87-b9b1-e95d9510b2ab)(label($==))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 8))(sort Exp))((shape(Concave \ + 8))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 56fd14f5-161c-47c3-8d3a-91fad91981fd)(content(Whitespace\" \ + \"))))(Tile((id \ + d3076404-1fa5-4328-9898-6b57ba2f981f)(label(\"\\\"\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + e79ec6fa-65bb-4450-bdb1-b3535a862de8)(content(Whitespace\" \ \"))))(Secondary((id \ - abca2150-7d0a-4c6c-8502-bdef953a11be)(content(Whitespace\" \ - \")))))((Grout((id f292f825-054d-4023-80f7-5e436bbc25ff)(shape \ - Convex))))))(ancestors())))(caret Outer))"; - backup_text = " "; + f33d362c-d423-47b2-a4a9-bcd7d470ce7d)(content(Whitespace\" \ + \"))))(Secondary((id \ + b54d0ef6-1ba7-44b1-9389-4449a434d0d7)(content(Whitespace\" \ + \"))))(Secondary((id \ + d2608c59-a531-4196-b535-5e23353b389c)(content(Whitespace\"\\226\\143\\142\")))))((Secondary((id \ + c160a2c7-57fe-4bf4-a8df-ab96fabc42a1)(content(Whitespace\" \ + \"))))(Tile((id \ + 7e54b6c8-1b54-4fac-8892-51b0f5bf6701)(label(todos))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 53b52f3d-d474-4f03-9f37-1fc7acdfc18c)(content(Whitespace\" \ + \"))))(Secondary((id \ + 427336a0-6a7f-4665-bbf1-9d719d5a85ee)(content(Whitespace\" \ + \"))))(Secondary((id \ + 31f8fdf6-b613-4291-a69d-260aeb81f94d)(content(Whitespace\"\\226\\143\\142\")))))))))(Secondary((id \ + 8d7e2060-d0f4-4837-af4f-297883aa2c08)(content(Whitespace\" \ + \"))))(Tile((id \ + d497422e-d70b-4b7c-b01d-d7483eb5cd88)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 8b6db75f-654b-44fd-aeb5-a7c058c2eeda)(label(description))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 1109d3ff-e7f2-4615-b081-e1c2afda9081)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + e6bd11b0-2420-431a-a0df-9330cd2590f5)(content(Whitespace\" \ + \"))))(Tile((id \ + 26d1e6cf-70ff-418d-9880-9e10c5df8d54)(label(false))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + f95cf160-6020-426e-b604-d1c21b756043)(content(Whitespace\" \ + \"))))(Tile((id \ + 73243ed8-58c6-42dd-bc95-29c85be36725)(label(::))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 6))(sort Exp))((shape(Concave \ + 6))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 460a662d-f40f-4500-9785-769aa447dea0)(content(Whitespace\" \ + \"))))(Tile((id \ + b38e30f2-9011-41df-8dbb-22d8d3616cd2)(label(todos))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 015350e3-f720-4120-a77b-26d184d12c13)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 7d1d793e-ebc4-4670-bc1b-f235c24a6f62)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 602b1420-4e07-4ad1-96d8-8c22bb2609f4)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + ff591f4b-fd78-4c6e-b1d1-f458d873d176)(content(Whitespace\" \ + \"))))(Tile((id \ + bbe13fc2-5d6e-4629-aa02-708e3a027484)(label(remove))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + a4cccda5-ffd8-4092-a977-f7a71d3b4f98)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + b9b0e40f-c36c-43d9-a745-3c452c1646bc)(content(Whitespace\" \ + \"))))(Tile((id \ + d5bee47c-eaa0-4bee-a380-53a69801b4ae)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 35a817d1-6c68-421f-ac15-e295eba10bd9)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 6d8d7dbf-12f5-46ec-95e2-d0a061583aca)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 785d1f08-2a42-4233-90bb-6c84d1f12239)(content(Whitespace\" \ + \"))))(Tile((id 4022f989-28b1-4ad0-8e35-4e15a53983d4)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 4b55e032-edcb-49c3-b80f-199e4d8a602f)(label(Todo))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 7c9a50be-d12f-4a1d-9dee-c0eb6b48b7a6)(content(Whitespace\" \ + \"))))(Tile((id \ + dba4c8f9-813f-4926-949f-9c420b12e335)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 6fd0e6bb-c748-45f6-a429-a1a5deb465b5)(content(Whitespace\" \ + \"))))(Tile((id 86068c6c-4abd-4d5f-9952-213226d142e4)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 340a58f4-7b99-4592-9eb4-5269f2e25c1c)(label(Todo))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))))))))((Secondary((id \ + 90fb0ec4-26ea-4129-99f6-737a529d1930)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 26159a70-7dad-472a-87b7-ca155687b99d)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 9fb394ab-ed4c-47d4-8ae7-3a1e738aa46f)(content(Whitespace\" \ + \"))))(Tile((id \ + 421ea81f-17d9-4dee-8ded-3f83ed5ef74d)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ + 5ca0664e-b8b3-4a32-ace9-3b3520efcb4b)(label(index))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 8ff05f84-5827-48be-a6e0-4a88e3220f80)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 65898990-eeb2-4a99-945f-6c6b11a84d7b)(content(Whitespace\" \ + \"))))(Tile((id \ + c969bd54-10a0-4e40-b311-3b94a51e1dda)(label(todos))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + 3dd48251-9a34-45e0-ad0b-e7ee18f1f3cb)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 491901d3-f94c-44a9-80a6-45060f1ce5b0)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 1a9ae387-0a86-4111-aff6-0dcbb1f1cfed)(label(List.filteri))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + a6ff740b-4b9d-454b-b8a3-d8a2e02a4f9d)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 68873c7b-0a7f-4831-85fa-32c3c56f7e73)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + ab11053f-02ac-4d14-b198-0009d1174eb6)(content(Whitespace\" \ + \"))))(Tile((id \ + af49379a-a523-4781-a644-20d56a2d0110)(label(i))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 1997d895-a36e-43f6-a6f2-e14f363db08b)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 42c8486a-d9d6-42ac-8b29-fdd6d29db296)(content(Whitespace\" \ + \"))))(Tile((id \ + fdbff6dd-5298-4704-a1ce-e6c642c8a331)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 219350a5-1e28-45d2-b7b6-430d45de7ebd)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 6bf28904-fab7-4217-967b-9c07b4d51d34)(content(Whitespace\" \ + \"))))(Tile((id \ + b4ac2d83-350c-4b67-8637-660b7b279580)(label(i))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 6ee1dce8-dad6-4d5b-8431-e52c5b9fd2ee)(label(!=))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 8))(sort Exp))((shape(Concave \ + 8))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + c0f7feb8-d039-4808-8826-8134f891f1bd)(content(Whitespace\" \ + \"))))(Tile((id \ + aa2d6fa3-76a3-436f-8ab4-5474dad6b7f1)(label(index))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + e3afd40e-525b-457c-9dc4-8434566bc4de)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + dce66910-40eb-4677-8b7a-d91d54f5305d)(content(Whitespace\" \ + \"))))(Tile((id \ + f0fa539b-15a9-4e50-8093-3fc5621ef4f1)(label(todos))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 1be12daf-9f35-44ae-bf95-a7673fb7e69e)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + f329fb75-2555-4a6b-ad52-30c400702988)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 97319995-95a6-4b8a-86dd-0f41f10e2f1e)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 96edf599-551b-4faa-9050-fb3fdcd7748d)(content(Whitespace\" \ + \"))))(Tile((id \ + e56a52af-e7ef-4995-8cd8-1bda0badab53)(label(toggle))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 50dd965d-769d-486e-a739-582b7b77beae)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + ce81ae9a-a9d4-427d-ae96-87385404f778)(content(Whitespace\" \ + \"))))(Tile((id \ + 2619925f-e223-4300-8bb0-747e01c82055)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 819cc698-faf3-4a7f-8aab-df5bc82dbb62)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + ee5bd712-2264-49cd-a6fe-8b3a391a924e)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + f359d574-09ea-4752-a963-1f8d3a2356ee)(content(Whitespace\" \ + \"))))(Tile((id 87b4e31c-758d-4345-81f0-e33efd22fe6f)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 400daf69-a8c4-4fff-bc1a-7bce2c0041e5)(label(Todo))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 168f84f1-8159-4f97-b4b9-87f3f5dce548)(content(Whitespace\" \ + \"))))(Tile((id \ + 3d8d0336-a4b0-4e6d-8b3b-44e069ebdd33)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 2e85a533-e019-448c-9908-0fb75f527826)(content(Whitespace\" \ + \"))))(Tile((id ed669ea3-7a6c-48b8-934f-f3698a7cdf84)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 2d21b9fa-fe98-4e38-bfe6-de10e317d99a)(label(Todo))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))))))))((Secondary((id \ + 3fa9df28-567a-4e76-af77-0ae6819166e8)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + caeb82db-a44d-4081-9bf2-c84fec5ce46d)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + e35543e8-8b4c-468e-b26c-f5d81bd38263)(content(Whitespace\" \ + \"))))(Tile((id \ + 00e65714-9c07-482b-a792-b574244612bb)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ + cc3aab51-fefb-4956-a687-7c673c7c1286)(label(index))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 009d57db-b80c-4793-9f74-64b3b294a302)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 4042795c-178c-480e-af7f-8aac1dc72925)(content(Whitespace\" \ + \"))))(Tile((id \ + 61082654-7f4e-4b31-b022-d2c92855722d)(label(todos))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + 4b394116-ba28-46a4-84f0-97e034310fef)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 16e9b8f9-675d-44bb-b4ad-19abc65f1e5d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + ae30a4d1-d6f5-44fa-8e60-9d6f98667d19)(label(List.mapi))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 8250a491-81af-4ab4-802e-dd9a8a30a891)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + a61da3b5-10ca-48e3-a09a-6c87ece1daeb)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 05318d23-dcb2-4290-ba32-d10b661ff412)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + ab01cb66-a691-4c16-ab75-54ef718700d5)(content(Whitespace\" \ + \"))))(Tile((id \ + 00fe332e-4291-48b4-b540-74647efba867)(label(i))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 21a727c7-b915-4564-9b8d-2abc072a4f6c)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 2d27afd0-bfc1-42ac-be1d-6d46c17aec34)(content(Whitespace\" \ + \"))))(Tile((id \ + 72020535-8af1-49fd-8f6d-6f41b70d2853)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ + 8e49e903-8d7b-4d1f-b020-e27d37aa763b)(label(description))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 71a84046-bd09-47ca-b24f-6a06784ae107)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + b175577a-c362-483a-8450-31736c5c3250)(content(Whitespace\" \ + \"))))(Tile((id \ + 6cb7f62c-edba-4464-a39e-1b6b0fb634b2)(label(done))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + a9146ced-62b2-43a7-9785-5f8829e5ccf9)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + f4bedfb4-a88a-42a5-91d2-d30a26ead926)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 6779e1e1-28d3-4bf0-89af-b58aea16545d)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 399fdc3d-b56b-45d1-9c5b-7f086efb3a8d)(label(description))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + c924f842-c65a-42ff-b766-c03bbde5d3d8)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + f26d3c19-e5c3-486a-9aa1-b8efe48f1688)(content(Whitespace\" \ + \"))))(Tile((id 1ba4fc24-07e0-4101-936f-6748d0d6901a)(label(if \ + then else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 12))(sort Exp))))))(shards(0 \ + 1 2))(children(((Secondary((id \ + 21e60d75-a210-4994-be06-f3f03e8aec3a)(content(Whitespace\" \ + \"))))(Tile((id \ + ca9c5480-5eed-4217-83d9-bc9a62d6059a)(label(i))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 33188906-6434-4304-a744-e4cb9836d337)(content(Whitespace\" \ + \"))))(Tile((id \ + b1928bcb-df55-4f6c-b9ce-27eb31fae173)(label(==))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 8))(sort Exp))((shape(Concave \ + 8))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + eab94ba9-41a8-45a1-a0be-38737eb28351)(content(Whitespace\" \ + \"))))(Tile((id \ + 067fedfd-526e-4813-9e6f-53e3ae1e0c3b)(label(index))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 2dd5529a-dab6-4b11-9508-1cda324e6498)(content(Whitespace\" \ + \")))))((Secondary((id \ + 1e2a3081-1fd4-447d-a769-2b2a7cab0c63)(content(Whitespace\" \ + \"))))(Tile((id \ + daa651d4-d052-4564-89d0-6dc848cad179)(label(!))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 5))(sort Exp))))))(shards(0))(children())))(Tile((id \ + f8074612-5112-448e-8eb2-cee19ddd2142)(label(done))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 6726ef17-aafc-49d0-a1c5-2b3dbcc9ca85)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 5fcb0c98-4b3a-463e-a544-cbc3bde91238)(content(Whitespace\" \ + \"))))(Tile((id \ + b27550bf-a7e4-4700-8bad-b6ec30822e42)(label(done))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + d166ccad-cb33-490a-9371-829694f2f5db)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 3c87040b-236f-4a7e-8383-55da212478ed)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + f77e0323-eebb-4f1d-90f8-39920e7ff08a)(label(todos))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 4475c29c-b3af-4202-8e37-1f99623f5279)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 7156f99c-ed85-4bc4-af4d-c1ed6dac556c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 00ae153b-ce73-4905-8f81-8cd8b042efb8)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 01dfab8d-4176-45c2-819c-85fd963d6bae)(content(Whitespace\" \ + \"))))(Tile((id \ + 945b87fc-a55e-4788-b369-a99e5f21053d)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ + f4f3af2f-6dbc-4ae7-a790-d987141ed364)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ + 6578f551-bc3b-460d-bed8-2cc4ca9c4d29)(label(input))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 79a63a26-2999-48e9-bb49-5a6db86c2b40)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 8c83c8ea-96fd-409c-83f5-abd8879ebd7f)(content(Whitespace\" \ + \"))))(Tile((id \ + 4ea70a4f-5c29-4688-bf42-ff3c790986c5)(label(String))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + ba7e1402-94bc-4777-8299-353734b051ba)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 07e9c6a9-9f4f-49a9-b786-c58ddfdf8829)(content(Whitespace\" \ + \"))))(Tile((id \ + 8a766e05-47d7-4b22-aa56-344a5ff98902)(label(todos))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 60cb6870-45d4-46c9-aa1f-ae061d080f23)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + a1cf45a5-8ad8-4787-8ab8-2eb16c43343c)(content(Whitespace\" \ + \"))))(Tile((id 6d5ccb14-6505-4570-96e8-b89099095d13)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + a7317643-3c0a-42e3-aa29-7649cbc2f6fa)(label(Todo))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Tile((id \ + 2ebe1a89-81c8-4609-ac21-90780bcc6ba1)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 7388e2cd-a365-4de4-a857-04134712bade)(content(Whitespace\" \ + \"))))(Tile((id \ + 7210a0f8-8307-47dd-998e-9dc3ea0f681c)(label(action))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + 01beb6dc-e8ec-4317-b3f4-485aad374dfd)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + d1a906a3-f10d-43d5-aaf4-2e2e4b1ba210)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 849d8965-d9e1-416d-a527-1f2fbfcd3c28)(label(case \ + end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 4973d7e2-04ce-4592-b306-7404fb44f083)(content(Whitespace\" \ + \"))))(Tile((id \ + 72296acc-c20b-4eb8-8062-d1d6f5ff2703)(label(action))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + f8b547b7-604e-4c32-bc08-d468b3e6dd4e)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 616aea6f-3bf5-4da9-8fd6-465d5f858a60)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 34f34639-a2d2-4dd3-8b79-d09bcc20879d)(content(Whitespace\" \ + \"))))(Tile((id \ + 0852ce8a-8159-483a-8f98-31521344ef78)(label(AddTodo))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 671d14a3-5375-4cc8-b480-db967f72c16a)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 3039b6df-9a85-4837-b23b-c9b2bff90ef7)(content(Whitespace\" \ + \"))))(Tile((id \ + 5d12c4d9-95e3-4a91-a1e0-f11ace5bcc67)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 8856f993-fac4-4281-93a9-7e7ebc73df67)(label(\"\\\"\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 64dda8f1-5b36-4cae-8111-76fecce29cca)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 16091b76-3d58-4eae-811a-7dd7a1ff6767)(content(Whitespace\" \ + \"))))(Tile((id \ + ab35917b-042e-4200-9e21-1ed27651181d)(label(add))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 5b45505f-4bd4-4848-8937-66715980277d)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 564f94d3-007a-4123-9ffd-2b6b9715d99a)(label(input))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 323add77-f348-4f5d-b978-25a2436a298d)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 69726ee2-9ff2-4878-9fc8-e2d31637cd19)(content(Whitespace\" \ + \"))))(Tile((id \ + b27111b1-1b67-4e9f-bd1b-facb3068231e)(label(todos))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + e1032def-e76c-4dc5-8820-b6baab8ed5d9)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 5fa70654-eec2-495f-9dc7-96e52ad94734)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 3fd4a4af-e3e7-4b8a-a20b-f19c79d45749)(content(Whitespace\" \ + \"))))(Tile((id \ + c271f207-a22c-4524-823f-7293350bd6ef)(label(ToggleTodo))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + eb35f0fd-4483-4a79-9eb0-38051fabfe6e)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ + 2c93ee3f-d3f4-40d5-943d-40e2460bc123)(label(idx))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + 026a4695-6f34-49e2-98f6-411bcf14f7c1)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 5bab0151-162b-4095-a7ba-ce2cd062bd3c)(content(Whitespace\" \ + \"))))(Tile((id \ + d63a6dc0-c2e7-43dd-9216-ea5c4bfec34b)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 77fe4088-ae7e-47d7-9bbf-b6425753e0cf)(label(input))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 4e3757d5-e18e-4f59-97d0-340199930f31)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + ffbbfe09-799b-4ce8-b5cd-6afb2b9c43f3)(content(Whitespace\" \ + \"))))(Tile((id \ + 0a84f67c-d607-46ef-a334-8c37bcc21125)(label(toggle))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 1046191b-a8a1-4c6e-9f4d-2b86a602f70a)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 6734d602-8515-4195-911e-d9ce55c1efc1)(label(idx))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 02bdff9d-7360-44f9-932f-9aac6d1718d1)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 001bcf8a-fa65-4a97-b826-04356485d886)(content(Whitespace\" \ + \"))))(Tile((id \ + d7567109-4e47-41fd-89d1-661a3d9018e3)(label(todos))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + 889a751e-d1a9-496e-9610-97ee1b1945d9)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 9ced1278-1ef6-4697-b67c-d65485225dd3)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 80671ade-4aa4-4e80-bcd2-55c366f3d1bb)(content(Whitespace\" \ + \"))))(Tile((id \ + ad6dd9c0-f4f5-4e5e-8993-f8e44ac35dfb)(label(RemoveTodo))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + f30cb794-b459-4279-a416-919abc036392)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ + 0c5e22d6-1834-465d-8f3d-e8ec753e881a)(label(idx))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + c88a4fbb-5759-4b1e-9832-6b86022aae78)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 2bbfe5de-0509-4382-9287-6942339a49e6)(content(Whitespace\" \ + \"))))(Tile((id \ + d7aa00ab-17b8-40e6-b81d-eadd11becab7)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + e7617917-b82d-468b-8c15-9c3349dc8edd)(label(input))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 1159c8cf-09d6-4997-8cf9-fe53f2046e2c)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 764d31e5-7a3f-49b1-af6b-15c3e905f8ce)(content(Whitespace\" \ + \"))))(Tile((id \ + fa8cfa08-d7ad-4eb6-8be4-598941ada63d)(label(remove))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + ca9bfd8d-dedc-4ae8-b714-f0da9a1ff9d4)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 383f3e3b-d02b-460e-82a4-43df6129cd7c)(label(idx))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 0f227b59-f3a7-49d0-9634-a5cdda7e0dc6)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 6b941ef6-f035-440e-9b34-9c6c780d0c57)(content(Whitespace\" \ + \"))))(Tile((id \ + e0c459f9-d746-4d8b-a1a3-a8aa3a4c3e2a)(label(todos))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + 3d01237d-d6af-4b08-b5c4-7076beb52aa9)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 3ce6b885-043f-473e-b38d-316145706fe7)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 9f89733d-5af7-4abd-b0c1-3019dcfc9468)(content(Whitespace\" \ + \"))))(Tile((id \ + a002ea32-0bd8-453a-8470-7f6a57a82af6)(label(UpdateBuffer))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 5b74ba93-1ea2-4ac9-8fa1-fd931f472a06)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ + 8bbad1ce-69ce-4c02-b7ef-46958c95cabe)(label(description))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + a67e0431-c290-467c-b0f6-2845e3553dab)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + dc0c20b6-000f-45ad-937a-c76ab9ec6603)(content(Whitespace\" \ + \"))))(Tile((id \ + 0cb6e5cd-b353-4d2a-b5e3-8a9c58bf21d6)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 0a3b777b-2e9f-438b-b9a3-aa68a682cb04)(label(description))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 15b19749-03b4-4c96-8e52-627ea54fb824)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 0433edc2-6323-44ba-9d3f-4dd2ca802f25)(content(Whitespace\" \ + \"))))(Tile((id \ + 8aa12620-c2b9-4fc2-bead-66e07a01be00)(label(todos))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 3410b2b3-6128-400c-b14c-6af4efe49f4e)(content(Whitespace\" \ + \"))))(Secondary((id \ + 1755139d-9e4e-4caf-8727-a78f9b26f6dc)(content(Whitespace\" \ + \"))))(Secondary((id \ + 64b72b43-bbd7-428b-9e29-c975c6391e41)(content(Whitespace\" \ + \"))))(Secondary((id \ + 4ed68b4b-7e26-4186-84f7-1184801cdded)(content(Whitespace\"\\226\\143\\142\")))))))))(Secondary((id \ + d67f0a08-df9c-4ea4-a49b-32d01fc34cd1)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + d75f2701-f707-46de-ad36-d408bca13946)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + aa402639-027a-4ac3-a2c8-463c72310c76)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 6c8fd8d9-d054-444c-b742-3e0fd767508e)(label(EXPORT))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))(ancestors())))(caret \ + Outer))"; + backup_text = + "# Slide Index 4: Base Sketch #\n\n\ + let update: (Model, Action) -> Model =\n\ + let add: Model -> [Todo] =\n\ + fun (description, todos) ->\n\ + if description $== \"\" \n\ + then todos \n\ + else (description, false) :: todos in\n\ + let remove: (Int, [Todo]) -> [Todo]=\n\ + fun (index, todos) ->\n\ + List.filteri(fun i, _ -> i!= index, todos) in\n\ + let toggle: (Int, [Todo]) -> [Todo]=\n\ + fun (index, todos) ->\n\ + List.mapi(\n\ + fun i, (description, done) ->\n\ + (description, if i == index then !done else done),\n\ + todos) in\n\ + fun ((input: String, todos: [Todo]), action) ->\n\ + case action\n\ + | AddTodo => (\"\", add(input, todos))\n\ + | ToggleTodo(idx) => (input, toggle(idx, todos))\n\ + | RemoveTodo(idx) => (input, remove(idx, todos))\n\ + | UpdateBuffer(description) => (description, todos) \n\ + end in\n\n\ + EXPORT"; }; { zipper = "((selection((focus Left)(content())(mode \ - Normal)))(backpack())(relatives((siblings(((Secondary((id \ - 520a7c0c-6bb8-4bdc-a548-5431ef003028)(content(Whitespace\" \ + Normal)))(backpack())(relatives((siblings(()((Secondary((id \ + b4c61aa3-5b24-4331-b959-1f4291540e6a)(content(Comment\"# Slide \ + Index 5: View #\"))))(Secondary((id \ + 17f1a970-484c-4ee0-9615-9885ac438491)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + a94f81f6-5ea3-484d-abf5-01dd7e4fcd34)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 4b669b61-2599-4467-b531-7e78528ae4d3)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + af3a21a6-1984-44fb-963f-75c94426d4e0)(content(Whitespace\" \ + \"))))(Tile((id \ + 0d7adc56-2f41-4b8b-abb7-6f6d6b352327)(label(todo_card))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 82f2a15f-2936-4074-b771-60e5d29f3ada)(content(Whitespace\" \ + \"))))(Tile((id \ + 40e67271-f430-4d30-8f33-c81c90170ac7)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 2d1c67b2-cffe-444b-8e5d-b9e7db3a09de)(content(Whitespace\" \ + \"))))(Tile((id \ + 30a54b5c-5673-4e48-80bb-e248ce1ef385)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + fa7367dd-ba41-4314-8df7-82bec4f24a57)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + fe4410c6-7e25-4918-90cc-837aceb562d0)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort Typ))((shape(Concave \ + 14))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + d86d9ff8-1b80-44df-8342-d963dac3e2ac)(content(Whitespace\" \ + \"))))(Tile((id \ + ff8b81b1-2d97-4bd0-aca6-c77313e5250a)(label(Todo))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + e7398041-d88d-45ff-84fe-df45e4b7a77c)(content(Whitespace\" \ + \"))))(Tile((id \ + 9e11b892-fee7-4e12-8e1f-906357995cdc)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + e279878b-2c80-4f5d-92a0-98dc56b008b4)(content(Whitespace\" \ + \"))))(Tile((id \ + 2ce8a011-ca16-44f0-a70d-d235be11016d)(label(Node))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 1a2a0410-3ce1-4af8-93eb-1700ae827950)(content(Whitespace\" \ + \")))))((Secondary((id \ + 4f4ee93a-3be2-44bc-a1f3-7322cc8b7144)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 6d52451d-4051-4a9f-942d-f812f7f2a849)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + ec5d2a95-b052-4b80-893e-57344a2ef9a2)(content(Whitespace\" \ + \"))))(Tile((id \ + 4a132539-9df2-4b63-b738-5f6fd7638e4c)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ + 7d237426-7e44-48c1-be23-db8a9e97c17d)(label(idx))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 58b00175-92c9-43ba-997e-625a4823c6d9)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + f3e84f6e-7a61-4ccf-a302-78c500f06b4a)(content(Whitespace\" \ + \"))))(Tile((id \ + adcd2300-5988-4f58-ad18-8292b348569f)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ + 719de97c-2ce2-4184-9ec6-87f3ab9f20b9)(label(descr))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 52484658-6d42-4dbe-bcb8-4262ef54a3b1)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + b685c7b7-a37a-4c1b-991f-4ef6c0ba80d9)(content(Whitespace\" \ + \"))))(Tile((id \ + 9e2aa590-5972-4ec1-8249-fbd3391fbf97)(label(String))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 6ac8f9fc-0ea1-4d63-8e4d-f7038a8e5787)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + cf81165c-ba0d-44ab-9014-82b87f1fa6d0)(content(Whitespace\" \ + \"))))(Tile((id \ + 156a7862-9656-4a60-8229-fe52327d7ee2)(label(status))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 3184a3e8-017f-4827-975c-797971e198ae)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 083c9b21-bf8e-4ef2-8083-6791dc6e84d6)(content(Whitespace\" \ + \"))))(Tile((id \ + 1ddea381-e252-4eac-8f1e-67cfbc10e1bb)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 2d7a95af-589c-4862-9aac-6c550c851e1b)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + ab04ac58-5ff9-42bb-9815-f95ababea8ed)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 3ba1a904-8caa-415e-aac7-37f491b974e1)(label(Div))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + a04be25a-927a-45b5-8a61-a01ff4b47a62)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + c52ba3ec-3a81-4d04-b854-c8bfcb9c879a)(label([ ]))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 7d3af97f-e50e-417d-aed6-ead2cd2c3a90)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 2a7c75df-2d06-48c8-95af-abedaa1981ac)(label(Style))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + c4b1bd63-00ab-493c-bc80-296907b74244)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 9f2d9767-b2b7-4fae-91a1-e86d82cccc6f)(label([ ]))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 810c4d93-8117-445a-97a1-9e2521548427)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 95066ad1-c069-42a1-a163-299e87e46f98)(label(Display))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 5da0dc4b-1f9f-45e5-ba5c-8a2f7e21d8a6)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 7a3097cf-e3b5-4d48-92ee-a2ff71cf0c01)(label(\"\\\"flex\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + a4eb46c6-8fdf-4bf1-a752-c23639132301)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + ea31e6bd-a25e-45bb-8bbe-247406f1c6af)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + fc3e385b-9ac5-4cc3-886c-cec51452b1fc)(label(Gap))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 5ada11ee-838a-42ed-bd8a-e673b518bc90)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 57dc86ce-16cd-4635-8421-252cb0c4aac5)(label(\"\\\"1em\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))))))))))))(Tile((id \ + 9812930c-c646-4ee1-adf7-70b59b075786)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 39eb61d3-ce4b-4166-9a74-602d290183c6)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 71814a80-7cac-4eb0-aab3-fa7dfeb554ec)(label(OnClick))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 88042a76-5dd9-4241-a4a3-aabbdd2ce1ee)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 1f2ce04c-2949-4e49-b6a2-77e548a17d4c)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 56e98b7c-d53b-49fe-acbd-5260577511b4)(content(Whitespace\" \ + \"))))(Tile((id \ + 8474b340-6c78-40ab-b15b-2648fcd36880)(label(\"()\"))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 1e1fdf09-6203-4246-9979-82d0ceb3855b)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + bb27fca3-3a70-4e89-933f-ecfb47db5a24)(content(Whitespace\" \ + \"))))(Tile((id \ + a36523f6-a14f-473a-b3ca-9db9cf0b058b)(label(ToggleTodo))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + fb0f18cf-5d24-4da9-8a27-3808453a576c)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 05a6ef1e-fc8a-44f8-aff1-6baccba13687)(label(idx))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))))))))))))(Tile((id \ + 0e2627dd-0383-4614-910c-b81448c34176)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + b0c813d6-4ee8-4298-89c2-5cdd980eff9b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + b47a925a-e6a5-42f0-ae81-36d64cab3e40)(label([ ]))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 0b38ede8-4b77-42fa-9796-a0bfae23ed1e)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + fb7816cc-178e-4b80-b11a-3730ac525645)(label(Checkbox))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + e52c6b41-a7cb-47de-8b49-0343d63741cd)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 0c6e5982-632b-4c3d-91f5-14ce5714fe74)(label([ ]))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + d380190a-6f68-45c1-8ce7-0113c958439c)(label(OnClick))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + d119db33-2a78-489d-817b-e3b9f88c528e)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 160109ce-f0de-4654-ad54-82b6fd6c5b1f)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 7ff26946-9d76-4bd7-a806-cefe00367f63)(content(Whitespace\" \ + \"))))(Tile((id \ + f7324e94-7daa-4e48-92ca-baa6fc525d05)(label(\"()\"))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 2e406e3b-be7a-4b20-be60-90d0b9b7ce77)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 5c8a5e98-8f0c-4cd7-92cc-47950096091c)(content(Whitespace\" \ + \"))))(Tile((id \ + 0e81fc90-3090-47c3-9769-63777d7a71d8)(label(RemoveTodo))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 351d922d-9009-4fad-be23-1134c09dfa4c)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + d82ce5ee-18f5-48c9-84a1-3d158fc0a177)(label(idx))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))))))))))))(Tile((id \ + abf8dcdc-e32d-402e-ac8e-27015383315d)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + d89d21d0-e34c-46e1-91ec-be88700e75a8)(content(Whitespace\" \ + \"))))(Tile((id \ + 6624a2ce-bf2b-4388-b699-7272f985de3e)(label([]))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 208ae3f9-11b2-4715-ab60-186b1bde1925)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 7c35933b-106c-4481-83f1-9000922519b5)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + e8f2ee2c-5a42-4cdd-a671-dd17578e853c)(label(Div))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 5d5df5b2-bd74-4710-a9a4-4bbf6d974cb8)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + a2c25ee7-965e-45c1-96d2-bef1abf134ff)(label([]))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + ce476d68-22d0-4426-9696-d0b4f5e21294)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 8c73c2af-173b-45ab-8c37-e86c43d7f77b)(content(Whitespace\" \ + \"))))(Tile((id abe15b90-114e-40fc-b468-39296fd3183b)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 591700f9-dfe8-4d68-bbd1-d8f9c9e95de0)(label(Text))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 1bafc0a3-96ef-4d6e-9faa-657147eca0b1)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 87930d34-25f3-4b85-8e06-6f9b3209d8d3)(label(descr))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))))))))))))(Tile((id \ + 499dae27-2adf-40ff-b588-a28bea0cfdf2)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 7988d02c-7a6e-4a36-9d27-d8d135f00994)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + c74fb8ff-f168-49fc-b8d0-c398eee2a61c)(label(Text))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 6e75cf6a-d4c5-4659-be1c-f586611661e9)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 93162ccd-1fb1-4ddf-a977-b3c1d734e269)(label(if then \ + else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 12))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 2ba0f48a-a396-4da0-ad44-b64381e1537d)(content(Whitespace\" \ + \"))))(Tile((id \ + 30805e50-87d7-4108-a42c-4547c9c23cdd)(label(status))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + a00afdd6-a1b0-4ec8-8fa7-a096703f1281)(content(Whitespace\" \ + \")))))((Secondary((id \ + 90811f52-5fd3-43b4-92a3-c6ad9d14f593)(content(Whitespace\" \ + \"))))(Tile((id \ + 1b9b5ef5-83df-4891-b397-7ffb302c08bd)(label(\"\\\"Completed\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 829ca0fc-6d1c-48e8-bbe2-3129b375f979)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 77ef2753-2827-462f-9177-c3104306cbe9)(content(Whitespace\" \ + \"))))(Tile((id \ + 369751f0-0eb4-4630-b514-e5d10ff5b359)(label(\"\\\"Pending\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 14d9ddfd-984c-4989-aeae-9e1e2772e1ab)(content(Whitespace\"\\226\\143\\142\"))))))))))))))(Secondary((id \ + fe50fcae-6372-4957-ac03-d12b5f15a6c6)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + c9181ba7-82cd-4f5b-90dc-e8d91d483718)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 195b7931-c6d7-454a-b3be-ecb15bc65cb8)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 80855581-f860-4b0d-8e81-ae3b973deddf)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 80a2a5ff-8a6a-4b5a-9a63-dea48e76778e)(content(Whitespace\" \ + \"))))(Tile((id \ + e4e8eb67-bd2e-40bc-b5f0-3f5e42d74fa9)(label(todos_deck))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + ecc82106-3c97-410f-ba27-ad686c743fa3)(content(Whitespace\" \ + \")))))((Secondary((id \ + c43633ab-74e4-4098-b555-3206fcca610d)(content(Whitespace\" \ + \"))))(Tile((id 3ec72d82-73a8-4e67-a0b4-5ed0fc76f971)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 31334978-8e02-4a6c-9fdd-081d608773b0)(content(Whitespace\" \ + \"))))(Tile((id \ + 3cc56bde-249f-4148-ad10-0c2fc6186475)(label(todos))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 28ab22c5-461b-4f5f-b2b8-cf8c86d77d94)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 984341c1-a07a-459f-ad82-505e189d3ce0)(content(Whitespace\" \ + \"))))(Tile((id f064858e-38f0-415b-aaba-9add918ddfe9)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 69de7eb7-af5c-4c95-8a15-770633a07005)(label(Todo))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 6f9ed968-8609-4da3-8219-a572f178a467)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + bce1732c-b1c2-464d-b367-cbbc1449d382)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d0d6fe7e-8eef-42e7-a375-4795bb2aca3b)(label(if then \ + else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 12))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 497d3ca0-b48e-45fc-b973-c06ffef621ef)(content(Whitespace\" \ + \"))))(Tile((id \ + cecce170-4542-46f7-9ed8-e5a2687213ed)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 524a45e9-71c6-46e6-aebd-c0b09a24cd5f)(label(List.is_empty))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 3d2a2fdb-4bec-43e5-aa4b-3c9ecfdddc1f)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 7d581acd-b396-4e67-8f75-de56b6cf75ba)(label(todos))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + 25e22c6e-8103-43c4-a2d2-67948c51c861)(content(Whitespace\" \ \"))))(Secondary((id \ - dd7c1758-0001-46c0-8ab3-e43a23285e0e)(content(Whitespace\" \ - \")))))((Grout((id 06807411-26c5-493c-8835-258878cb073e)(shape \ - Convex))))))(ancestors())))(caret Outer))"; - backup_text = " "; + 685393ae-a52d-4902-ae2c-ce09416978f5)(content(Whitespace\" \ + \"))))(Secondary((id \ + a6e54e7e-c076-4620-ba2b-429e905288bb)(content(Whitespace\" \ + \"))))(Secondary((id \ + 3d09578f-94ee-4511-ab33-0746fcfbbcd0)(content(Whitespace\" \ + \"))))(Secondary((id \ + 81aeabd6-b199-4487-bc89-400e4d5656f2)(content(Whitespace\" \ + \"))))(Secondary((id \ + 9e595773-7535-4fa5-ac45-940f5913b08d)(content(Whitespace\" \ + \"))))(Secondary((id \ + a5f5a384-a32c-41b6-bea4-e92bce47922b)(content(Whitespace\" \ + \"))))(Secondary((id \ + 90c4b04d-178a-461b-9c4a-8edcc791dd2a)(content(Whitespace\"\\226\\143\\142\")))))((Secondary((id \ + 7a048210-49fd-4883-a492-8c97ab69f44e)(content(Whitespace\" \ + \"))))(Tile((id \ + c568483e-f28b-417b-87e5-de09e095ee24)(label(Text))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 3e463503-e674-497c-b525-ee2e27e3a8f7)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 828fef78-8541-4929-85ab-282e85d21112)(label(\"\\\"You're caught \ + up\\\"\"))(mold((out Exp)(in_())(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 5aa9a706-1035-456e-810b-e55eaf592412)(content(Whitespace\" \ + \"))))(Secondary((id \ + 0116c43c-7a2c-4c4b-a811-70fc735cb669)(content(Whitespace\" \ + \"))))(Secondary((id \ + cf18468b-0e6c-419b-8452-0e1d2441c375)(content(Whitespace\" \ + \"))))(Secondary((id \ + 0ef09604-847a-498d-9242-1b546731cb57)(content(Whitespace\" \ + \"))))(Secondary((id \ + a8f9d3d8-7f21-44ae-a0b8-42a36d5ae9f0)(content(Whitespace\" \ + \"))))(Secondary((id \ + e43df2ee-8649-45cc-82a3-5bece6932489)(content(Whitespace\" \ + \"))))(Secondary((id \ + 50129d49-df56-42f8-a751-89308d59050c)(content(Whitespace\" \ + \"))))(Secondary((id \ + 560a02e7-3c1b-45da-a837-f3654ad48e89)(content(Whitespace\"\\226\\143\\142\")))))))))(Secondary((id \ + 1bb20859-a57b-45a8-b313-eb2720a77b0e)(content(Whitespace\" \ + \"))))(Tile((id \ + 0e2ecebd-f6b9-42b8-9047-024853d91b76)(label(Div))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 4e3907fd-4f12-4af2-b6c7-d5538df1c94f)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 04d858f2-92ae-4436-a9c0-cdbed3f36fe6)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + a57c4922-fdbc-4174-8e7c-d83071fbe9a7)(label([ ]))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 38dea502-39c5-4d92-8ffd-3a2918a7585d)(label(Create))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + f7afc33b-d9a8-4b88-8262-7b9e25636b86)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 14eda5a4-9a38-4f75-8945-280c9c7b944a)(label(\"\\\"class\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + fbd412b3-f59f-4c81-b0f4-4c8b6d0d20de)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 24552ce3-dd0c-497b-95c1-682f7f3226e0)(content(Whitespace\" \ + \"))))(Tile((id \ + eb020147-fdd9-4043-b515-0d6444a861a4)(label(\"\\\"todos\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Tile((id \ + 42d5457c-025b-4eb9-ae70-a37c6bf8877e)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + c714c36e-7bf3-4f38-81ce-2b2d7b451d5a)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 268e2645-6839-4ca5-a2d0-8f8f8d9ad937)(label([ ]))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 8ca9f269-2736-4ae4-afd9-faf14b54883f)(label(Text))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + c09fac82-4fb8-40a1-9e93-7310c228b29b)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 4138cd30-4aa7-4109-89c2-ab4ce0f83b96)(label(\"\\\"todos:\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + e68880b4-5684-43fd-b2a1-fe07afc32902)(content(Whitespace\" \ + \"))))(Tile((id \ + c8696333-5548-40fd-bf30-d6cc1114b0bf)(label(@))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort Exp))((shape(Concave \ + 5))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + d675e067-779b-45ea-a8b2-23f33cbd8ba6)(content(Whitespace\" \ + \"))))(Tile((id \ + 38c6ce88-1e4e-405c-aca5-f49aaf838999)(label(List.mapi))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + cb3c4c2e-6354-4964-9f66-fe6128a06249)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + cbc49a52-1685-4517-a1c4-0cc34fd52c91)(label(todo_card))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 845f40cc-4e38-4607-91c3-1c88cd559297)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 3aae315b-b466-4c63-828b-eeef4f55cc37)(content(Whitespace\" \ + \"))))(Tile((id \ + 71965c9b-1bd3-4d35-a826-7f6ac7482a81)(label(todos))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + 2d58e8ca-5907-47d3-bb58-d7fb9e6f4b85)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 5243fb65-6ac3-4ec8-b123-3585aaf075b2)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 8b1a6785-538c-4648-9c10-ec1a9141d30e)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 5d64ad3f-f1ea-4d1c-9e59-7ccd54377414)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + a29af6cc-a7d5-4191-9607-cdcb3562052a)(content(Whitespace\" \ + \"))))(Tile((id \ + 415a8ea1-aec6-4fbc-a976-ace78f354bab)(label(add_button))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 18a0b5b9-b8a1-48a0-a9c4-fc3eafe7b00a)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + d2a1212a-541d-4f56-b970-d030f0d3be6c)(content(Whitespace\" \ + \"))))(Tile((id \ + b307ffe5-56ec-4d63-9508-a434daed4265)(label(Node))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 8e6bc30d-f1fe-4572-8067-4d44fed8d1eb)(content(Whitespace\" \ + \")))))((Secondary((id \ + 55c534a2-2abe-4c83-b0c5-1012b171609a)(content(Whitespace\" \ + \"))))(Tile((id \ + d23f1cd6-fd00-4ea8-b5c2-fda912f238a2)(label(Div))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 5a3dcd03-b15a-44cc-8b49-087d44936e2e)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + c4253c78-a6ab-40ec-ae22-7e19650642e7)(label([ ]))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + b86b39d3-5680-4440-8118-d25c145d493e)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + c18277a7-7a0b-41f0-b5c4-175ae5853f83)(label(Style))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 7ff6d39d-328f-4031-ab75-7f0cc74fc019)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 04789947-e016-416f-b23d-0a4ce671d1f5)(label([ ]))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 04a1d6cb-4f60-46da-ba8f-4c26d2625233)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 78cd515c-9b58-4ea7-9530-abc50cd9a799)(label(Display))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + a82d4bb7-4340-40a5-80aa-4aaa8d63288a)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 1a4a3c92-96e5-4109-8dbd-3750af683d9a)(label(\"\\\"flex\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 3c7e3259-8716-4975-8069-b2e34210fd59)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + a878f9ad-a054-42c7-9ef8-f2a19bb0ac95)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 698c6bc1-d737-48d1-96d7-beebe2684dce)(label(JustifyContent))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 1b17bea4-db7c-47d1-844f-5728aabd25f6)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 629138c9-039d-42ad-865d-fb2db983cc73)(label(\"\\\"center\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + b3c65015-997b-466f-9fb1-629966bfe486)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 070ec2ed-5a59-4e5d-a511-c968009b969d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 4eb4e8ae-1dd1-46a4-96ba-3534a51c36a7)(label(BackgroundColor))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + ba8ff8aa-7785-44d0-a477-9c785b3ebe28)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 51b3f729-d6ff-4fff-a5b6-c0e42870f1ee)(label(\"\\\"#986\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 407f91d1-ff14-4e5f-a3c2-64622abe4441)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 39dba2d2-cece-4967-9854-0fc4d61cea2a)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 964d4275-b631-4a6b-aada-6d313a46c5a0)(label(BorderRadius))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + b2b6be72-3dba-4239-9539-15116aafd153)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + be9d3beb-239a-4127-bce4-c6902d02bc02)(label(\"\\\"0.3em\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 70c9cd0e-9bb2-4cfa-b66d-0bfc48ee3940)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + e80cfeee-9fbd-4543-be40-73466cd169f2)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + f2fd7520-9e31-42cf-a817-e726ce501fee)(label(Cursor))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 9912aa7a-c985-4cec-b88d-72ac8e9d16ca)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 4debdef5-136e-47d8-8a50-62a278b166f4)(label(\"\\\"pointer\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))))))))))))(Tile((id \ + 6905770a-f7a7-4a0b-b631-71ddfdd1c630)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + b585ee1f-e038-4895-b758-78f9a5fcc344)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + c56056aa-cef3-4a44-8a15-62b64afaf555)(label(OnClick))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + e72b94f4-df32-449e-a8e2-ac0ba5034eb8)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 64e46ee7-ca8d-4b1a-a806-c1dbfdfbe12a)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 1e4cb6b8-78ec-4469-9395-cfce86b2597a)(content(Whitespace\" \ + \"))))(Tile((id \ + 354d1609-ebee-48d5-a9b3-5d279cbc76ff)(label(\"()\"))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + c8565985-11e1-44d0-af7b-96a8779d2e4b)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 29af6d11-1336-4dbf-a1e3-16abe4da85d8)(content(Whitespace\" \ + \"))))(Tile((id \ + 50b8b17e-ebda-4a8b-81d0-fde2e1a46504)(label(AddTodo))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Tile((id \ + c6041d5b-47e4-4037-ad73-c6ed7b3ef667)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 32094506-12ad-4ad4-b30c-07d76e6a7eca)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 6ef531ca-e2f6-47d5-8619-2c04ef9b0059)(label([ ]))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + febc70a6-04e5-4bfb-87ea-0df7a3a08046)(label(Text))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 17c594a1-742a-499f-85d1-aeeedecb0372)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 6063add5-49c8-4331-9ca9-5d77c5de2ebd)(label(\"\\\"Add \ + Todo\\\"\"))(mold((out Exp)(in_())(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))))))))))))(Secondary((id \ + fa854818-050c-4130-835c-d494af1bd57a)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 54d8cc20-86d5-4959-b638-13ebc7eb0151)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + b6a70c5d-20c1-48b7-aace-f7a9dbf227e9)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 3cd754ad-9f68-40a7-8ce2-0ca2b440b90b)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 266e925f-3375-4010-8791-e9045e4d16e8)(content(Whitespace\" \ + \"))))(Tile((id \ + 2c9d09c4-86ab-4789-bdb9-bd9fcf387d2b)(label(buffer))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + ad0dd6ba-ca19-4ce4-b502-acc7478494ca)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + e8b9a283-221b-49b9-933f-2d9ddea77dc3)(content(Whitespace\" \ + \"))))(Tile((id \ + 6aef4f5d-5253-4aaa-b172-fc4eb5233252)(label(Node))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 5793339f-5e47-43dd-94bf-12a650c2c101)(content(Whitespace\" \ + \")))))((Secondary((id \ + 7c89a278-e9cf-4ed9-9043-5933bee7fe7a)(content(Whitespace\" \ + \"))))(Tile((id \ + f8ff5080-ced2-418f-80c1-c952e913c636)(label(Div))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 55b2ed87-88ae-4e30-8fa0-2a294ad40b46)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 17a900d5-f2bd-4a05-af27-154049bcb9b7)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + ac2552ae-2f23-49fa-b4a8-d9a6cc365b86)(label([]))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + ef2f89c5-8de9-445d-bb86-fd4ba5b51040)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 77eef925-1a70-4b04-abea-aeae1fed6cc9)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 223073a1-1642-430d-a925-d4d560fcd11c)(label([ ]))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 96daad16-b200-470c-968e-f3019f2fbd09)(label(TextInput))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + dfb2033b-6ae9-4fe6-af27-6bf5239ee867)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 1ebd207b-1d66-4de9-8201-40b592a68122)(label([ ]))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 20de6a78-3f50-421d-bc45-c09e99817926)(label(OnInput))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 38bd971d-7d33-4430-93fb-4d09ae294fee)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 1f06e41f-4ee9-4d35-bf02-27a8b799496e)(label(UpdateBuffer))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Tile((id \ + b0b4fa38-5336-420f-8923-1aa42e8755e3)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + fe59db3e-7e38-4455-b89a-8a18e0c74f88)(content(Whitespace\" \ + \"))))(Tile((id \ + 53c4b5ab-3cbd-4491-899a-3a92b074f67c)(label([]))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))))))))))))(Secondary((id \ + ec0593c0-1b98-49ba-bb3a-3648d2ca30e2)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + bc809963-a2ea-4c51-a54e-5c121edbbf8f)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 715eb6cc-064d-4e42-a584-1af5d222b6d7)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + c29c90fd-3ee2-4559-97a1-8b37bf92f1d5)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 6f768c08-c4a0-452e-b83a-78e05a3005f1)(content(Whitespace\" \ + \"))))(Tile((id \ + 606be9bc-3ba5-4d8e-b47a-5180bb64add9)(label(view))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 9570fe71-b93b-4e91-9cd6-baf1fc7ba5b7)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 767ea4d7-bc35-4b21-9bde-b91e4423fee1)(content(Whitespace\" \ + \"))))(Tile((id \ + f939b07a-0f89-44c8-bfa3-89c10fd3706d)(label(Model))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 87411b6a-dac2-4119-92d8-66f7375c8c56)(content(Whitespace\" \ + \"))))(Tile((id \ + 18c58df2-beaa-4036-b870-2a5a47b3c0ba)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort Typ))((shape(Concave \ + 6))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 21750198-a8ea-440d-82c7-3c0263ce0d17)(content(Whitespace\" \ + \"))))(Tile((id \ + a53aa9f0-0b28-47cb-b69f-095ed0c0ee53)(label(Node))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 1a76c806-48a3-456d-8d11-91022f26047a)(content(Whitespace\" \ + \")))))((Secondary((id \ + d18e288f-97b2-4542-adcd-cb7658e244ca)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 4d72c75a-8176-4dc4-973d-3412ad20b97c)(label(fun ->))(mold((out \ + Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 13))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 32bc0e3d-d510-4ef4-9679-b3069a517b60)(content(Whitespace\" \ + \"))))(Tile((id \ + 67567f1d-0029-4ac8-b7fc-a22b6b1b844a)(label(input))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 822cfaff-1aa1-4385-8b99-767a01ea2034)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 6473d3a7-202c-4da7-bfd9-55eeaa540afe)(content(Whitespace\" \ + \"))))(Tile((id \ + 3a667c05-bc61-4efa-abb0-338bc62114c4)(label(String))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 2207d8a0-8757-47e8-bc00-4c80e8b70893)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort Pat))((shape(Concave \ + 14))(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 82b9fb86-a91b-4e35-ac39-7a08e7875699)(content(Whitespace\" \ + \"))))(Tile((id \ + 714cc4f6-1962-406d-a33e-d257320454c3)(label(todos))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 93b85a0a-23a2-44be-bc89-9fae5b82ec8a)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + b1deae36-18a9-4c86-a21c-d746cc3909ad)(content(Whitespace\" \ + \"))))(Tile((id 02b1c1b2-e218-49f9-8df1-f624f7a695f2)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + ff9cfe50-1273-4f4e-ab7f-8203f1e4396d)(label(Todo))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 08d0b823-f579-4c36-9c52-44a2fcc6bde3)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 7d820b82-5a00-468e-8bcd-4d555700f959)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d316b831-dd14-41b7-a98c-d343a107f7d1)(label(Div))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 2908de51-b786-44c4-8a1f-013a4117f7b8)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + d08cbaa9-6f67-414c-8b1f-428fa0ec9af8)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 4df9cef2-6967-4aea-9959-4b8d2a32355b)(label([ ]))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + af053ff0-2d2d-4f5d-a3a7-c73df0e42ec9)(label(Style))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 379adecb-d6c6-4813-b20d-7a1b07612db6)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 093894f4-46f6-4219-bc8b-fb6f919d2e95)(label([ ]))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + c9a3160e-864e-45b6-b12b-47660bb22e7d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + acd37c9d-1eb1-43b9-a7fc-d175dd1a431d)(label(BackgroundColor))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 1e1ebc92-9401-4a67-8c4a-5e8fc6226bad)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + cc9ecdb0-4053-4d3b-befa-d1a87d7ea528)(label(\"\\\"#543\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 7ebf6c85-892e-4a7d-9c70-ce1dffcfc587)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + de7c1fcf-14fb-4424-b096-7287040c9156)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + ddd790e4-a5b2-494b-aa43-003d9abb7cd4)(label(BorderRadius))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + ee3308bb-ae31-446d-8026-32d04b8746e7)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + d22779df-73a4-4c1c-8ca3-94414499e1d0)(label(\"\\\"0.3em\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 3900eb3c-d85e-40f0-9cc1-9dde26dc433d)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 20a89db5-00ab-4046-816c-33f1e4dbd112)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + e55a2006-86fc-4f8c-95a4-8d0bf0be8ab4)(label(Color))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 5486a31c-e118-4d70-b758-a14db190f2be)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 881bfd1a-a018-4c47-a133-e71ac9bd78ed)(label(\"\\\"white\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 7ef44913-c3e6-4371-ad19-e6aacf991297)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 91d45a53-c3b3-463a-bf03-a5b04f4af648)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 6008634b-9d72-46bc-94ba-d1c0ceacdc09)(label(Display))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + d3cd9ae8-eac3-4707-988d-18b11b1bb2c6)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + f276e40c-b97d-44bd-a3c5-cf79e65a6c03)(label(\"\\\"flex\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 9143348f-f2fb-4b17-bd01-f07eb8df535d)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 00bd9688-169f-4586-877c-641f8183645f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 46403376-60ff-495b-9b82-29d6712af875)(label(FlexDirection))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 0eec6f47-a48a-41e7-a230-22b09db1fdf3)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 02dde89c-adf8-4ed2-addc-3f5da6e71319)(label(\"\\\"column\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 1347a82a-cc62-4173-88ce-980e77c495cf)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 306558a1-a05b-401a-a48d-71d942b21bb9)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 35b1fab7-b26f-4e15-af74-3615f8841939)(label(Width))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + e2459637-b8e7-4695-8952-0db5dd9012f6)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + cfba1126-a4fc-47e5-bab1-8313a190f964)(label(\"\\\"9.2em\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 3ddae4f0-fc74-46ba-9abd-7c39a0f9e98b)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 26afec39-3d28-41ac-b2b7-5f66fdbdc0f2)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + a3968185-4059-4f32-9ed0-23ec23473fc2)(label(Gap))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 53a2d1f7-e369-4429-a311-a32da0a5d545)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 5add06c2-dbd7-48fd-80a8-fe932cf48012)(label(\"\\\"0.5em\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + d7aac166-a855-442a-a47a-6fecf2de3e9d)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 7c2b2af8-f112-4485-91f8-22844df5a823)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 0f639d2c-1704-4e83-a0f0-95a95cbd4770)(label(Padding))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 90b780a6-12e1-4e3b-9bf8-90c9809e98f3)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 61ccb0b0-629b-4cd7-9aee-5cbd89289488)(label(\"\\\"0.3em\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))))))))))))(Tile((id \ + 3d0df361-373b-4232-a55f-959f02f43a6b)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 2d930f30-13c9-45df-ac04-ce36dff62cfa)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + a941ee5c-f3cd-4fe9-ad60-5ca416d204f0)(label([ ]))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 4013f8dd-94b8-4445-9ada-fe61ae4aae3f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 3f079fe4-5a8e-459e-8021-cc81cd3c15a5)(label(Text))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 71e8b6d8-a1ab-42fb-bce5-96354235296c)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 9c7bd54d-34a8-4cd0-8467-dea8cba3f0e6)(label(\"\\\"Hazel \ + Todos\\\"\"))(mold((out Exp)(in_())(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 1dea6dfa-18bb-4d82-907f-4cac5a0bbdfe)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 8546a556-af05-4a24-9477-1af7ddb4e308)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 7fb1a560-3ef5-4d10-945c-d6535da5b299)(label(buffer))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 6bd08aef-03fb-4b0f-a0d9-dcc324da5c7d)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + a35eb924-57b3-4f0a-934e-af2926937dda)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 1e958fc8-69d2-40a4-b0c7-e6f53b5c10f9)(label(add_button))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + e901be82-f701-4e29-8345-449d7c072d47)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + f8f788b4-946f-44c7-b3fc-0113f3b5d151)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + f8af1079-5665-4eaa-8ac2-0f046a307dc3)(label(todos_deck))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 4f994219-2ab0-4ecf-8958-8f8610c494bb)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + e8d5279b-586f-43ec-8ed5-f7be9d90e42a)(label(todos))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))))))))))))(Secondary((id \ + dd9aa7f9-4125-4f7c-bf64-a0f7ecd5a03c)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 98180249-7b9e-49ee-99a3-a6f4784b7217)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + d5968fa7-2bcb-4476-9a2c-9eff76b86d89)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + f168f5a8-b12d-47dd-adbb-66cba377f00f)(label(Render))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 3cad20cc-fc2a-4491-96d9-b661459897cc)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 63ffba35-2a9f-48f0-ad1c-c2a09ae015c0)(label(\"\\\"todo_app\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 6694e324-a697-4ca2-aa50-f040ba323ad4)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + bee2727b-1a01-482d-8462-aa046c3f9727)(content(Whitespace\" \ + \"))))(Tile((id \ + 5906bfd3-846a-4e93-b0af-75f297c2030e)(label(Model.init))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + b4a2588f-1422-4b4e-992c-d2dedcf0b482)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + dc2249df-3078-4bdb-a446-d2b165f49499)(content(Whitespace\" \ + \"))))(Tile((id \ + 7276d554-5745-4a54-8997-7aa08fbd4731)(label(view))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 7cfcc358-4956-4f8d-8240-03035352d94f)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 7064b6e1-3887-487c-b7cd-528697a50195)(content(Whitespace\" \ + \"))))(Tile((id \ + d353399a-e5a7-4024-86e4-1d6e661a53f4)(label(update))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))(ancestors())))(caret \ + Outer))"; + backup_text = + "# Slide Index 5: View #\n\n\ + let todo_card : (Int, Todo) -> Node =\n\ + fun (idx, (descr: String, status: Bool)) ->\n\ + Div([\n\ + Style([\n\ + Display(\"flex\"),\n\ + Gap(\"1em\")]),\n\ + OnClick(fun () -> ToggleTodo(idx))],\n\ + [\n\ + Checkbox([OnClick(fun () -> RemoveTodo(idx))], []),\n\ + Div([], [Text(descr)]),\n\ + Text(if status then \"Completed\" else \"Pending\")\n\ + ]) in\n\n\ + let todos_deck = fun todos: [Todo] ->\n\ + if (List.is_empty(todos)) \n\ + then Text(\"You're caught up\") \n\ + else Div(\n\ + [Create(\"class\", \"todos\")],\n\ + [Text(\"todos:\")] @ List.mapi(todo_card, todos)) in\n\n\ + let add_button: Node = Div([\n\ + Style([\n\ + Display(\"flex\"),\n\ + JustifyContent(\"center\"),\n\ + BackgroundColor(\"#986\"),\n\ + BorderRadius(\"0.3em\"),\n\ + Cursor(\"pointer\")]),\n\ + OnClick(fun () -> AddTodo)],\n\ + [Text(\"Add Todo\")]) in\n\n\ + let buffer: Node = Div(\n\ + [],\n\ + [TextInput([OnInput(UpdateBuffer)], [])]) in\n\n\ + let view: Model -> Node =\n\ + fun input: String, todos: [Todo] ->\n\ + Div(\n\ + [Style([\n\ + BackgroundColor(\"#543\"),\n\ + BorderRadius(\"0.3em\"),\n\ + Color(\"white\"),\n\ + Display(\"flex\"),\n\ + FlexDirection(\"column\"),\n\ + Width(\"9.2em\"),\n\ + Gap(\"0.5em\"),\n\ + Padding(\"0.3em\")])],\n\ + [\n\ + Text(\"Hazel Todos\"),\n\ + buffer,\n\ + add_button,\n\ + todos_deck(todos)]) in\n\n\ + Render(\"todo_app\", Model.init, view, update)"; }; { zipper = "((selection((focus Left)(content())(mode \ - Normal)))(backpack())(relatives((siblings(((Secondary((id \ - c0748728-2618-4872-881c-ccb38dbd0c58)(content(Whitespace\" \ + Normal)))(backpack())(relatives((siblings(()((Secondary((id \ + f24011f6-6ea1-47d4-8454-2dd6dcad27be)(content(Comment\"# Slide \ + Index 6: Tests #\"))))(Secondary((id \ + bad57dc5-611a-4d15-b3b2-c0af0b9ad7e0)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 53496800-f20b-4c51-a9b3-e440baee67ff)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 1f7d360b-9799-4b51-9f96-ce79f09c0c4f)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + e66029cb-608d-40af-9c1d-eace88e65e07)(content(Whitespace\" \ + \"))))(Tile((id \ + 28a42784-871d-4dbf-b92c-0522e180dd05)(label(eq))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + c8adae37-6e90-4cbc-a714-0a7789f4646e)(content(Whitespace\" \ + \")))))((Secondary((id \ + f544dd93-d85f-4c20-8756-e099e9e16210)(content(Whitespace\" \ + \"))))(Tile((id \ + fdb9f00f-8533-4358-8e73-222fc89f89af)(label(Model.eq))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + dd96a602-b548-45d5-b907-4bc70623ee39)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 9051ee35-ba83-4100-9db1-a69e81b52e51)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 71f70c98-a20d-4287-a3dd-514e20bc3fbe)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + daa6fff9-abdf-49dc-a9b1-580ae158b5fd)(content(Whitespace\" \ + \"))))(Tile((id \ + 2e574e42-b7c0-4a3f-bf4f-50264c1b9751)(label(num_todos))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 503ae51d-1c75-4ff2-b8d2-466dcd2b59b8)(content(Whitespace\" \ + \")))))((Secondary((id \ + ad1cc1e0-6258-4f59-9427-1388ac7de1ed)(content(Whitespace\" \ + \"))))(Tile((id 014409ab-6e07-493d-aeaf-cd28fd9e67ad)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 37e5a889-10ea-4484-acd3-52e62776f707)(content(Whitespace\" \ + \"))))(Tile((id \ + 2d2a8c71-8d32-4e88-9ccc-3625c66e2787)(label(m))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 307dfcd9-7181-483c-bee0-297b58e9a256)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort Pat))((shape(Concave \ + 11))(sort Typ))))))(shards(0))(children())))(Tile((id \ + 697f4f43-04e9-4216-a78f-ef10f2defc91)(label(Model))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 6ced98ce-4a72-4fe9-aae0-c85162ef7ede)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 8aae883c-cbc5-4a85-8cb8-5955030f9ed1)(content(Whitespace\" \ + \"))))(Tile((id \ + 15f012fc-0d1e-4923-8d9d-3dc1f5794a26)(label(List.length))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + cf1d5974-745b-4782-99d4-82112ce0930f)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 267ea7b6-64a0-4dd6-a1e1-2e0d6e4b0478)(label(snd))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 226ee87a-ec62-4247-afa7-d25af1044126)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 6ae49489-00b0-485a-b9d3-2ec1db5a6a4f)(label(m))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + 1427d866-ef62-4383-bb69-e6e1dc6f0b75)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 048434a5-9bc9-4751-b644-3cfdd0d95f59)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + d6464443-4ef4-42eb-b974-7ddac99a21c7)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 67f2d335-2bf6-4b12-9e34-9777d4724618)(label(test \ + end))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 291ccbd3-cf49-473d-bf64-5b11c36fa4f5)(content(Whitespace\" \ + \"))))(Secondary((id \ + 4df1a41f-6f01-4789-9346-2bffacd49fdf)(content(Whitespace\" \ \"))))(Secondary((id \ - ab68e973-bf30-463d-989b-c7e37921aca2)(content(Whitespace\" \ - \")))))((Grout((id a9b8ab49-ba54-46b5-b504-c85c3f615c64)(shape \ + 2f8a79c4-fa2d-4777-a848-826a60d261c3)(content(Comment\"# Add \ + adds #\"))))(Secondary((id \ + b73fa483-8599-4ad5-8869-8346635ebf80)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + a73fec1c-ad6f-42aa-b501-6ca7b7e10995)(label(num_todos))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + f122fa91-bcff-4b70-8a09-b6b3f6269dc9)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + f25c9f13-45f7-4039-8df3-48341153668f)(label(update))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + fee8314c-92ae-4ccc-a8e3-36d7fd27e4f9)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 139da961-07e0-4882-8390-93713c085bb0)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + f1ee7ed2-0411-46e3-95dc-5a1810e1c739)(label(\"\\\"Breath\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 55665351-a4bb-4540-86ba-b310cf10a3c3)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + c1518d48-e8b8-41ff-9aff-b8a998651163)(content(Whitespace\" \ + \"))))(Tile((id \ + 2de2c66e-ac7f-4335-af8d-cfb80bc77c15)(label([]))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 6de0f161-a97d-4318-8a7b-988db04bac9d)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 72b63df2-9ecc-45e5-ab02-f1d480619b14)(content(Whitespace\" \ + \"))))(Tile((id \ + 72194a4e-3b85-4b37-bab7-b0f256eaef15)(label(AddTodo))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + d3f99017-a193-4dc3-8e5a-571911dd2a6c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d0c7c7d5-69d4-4af9-be32-279a6ea14a7b)(label(>))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 8))(sort Exp))((shape(Concave \ + 8))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + d90de3a6-ec5a-4142-8d63-59db0616104a)(content(Whitespace\" \ + \"))))(Tile((id \ + 474b4b03-3a33-4d62-aedf-e92df13dd419)(label(num_todos))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + af8d88a3-e5f3-4b9f-b6dc-206513c72dbf)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + b3ae8063-5743-411c-8b45-540093713281)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 21254bde-50fe-4cc3-b4ea-e7ec9f3383c6)(label(\"\\\"Breath\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 3098c674-f537-4bd1-bcb1-20004c39ff94)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 18633202-9f36-4968-ad4c-c7c580164b98)(content(Whitespace\" \ + \"))))(Tile((id \ + 403efa4d-783a-4642-a2b1-306dcbfee7f7)(label([]))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + 38defa2b-d180-408d-b922-e796b117f968)(content(Whitespace\" \ + \")))))))))(Tile((id \ + 2c42b7f9-ca2c-4e1c-9aba-f57bf76f35bf)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort Exp))((shape(Concave \ + 10))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 7f36e8c3-e466-405b-bb93-24d8e515e9d9)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 10228095-a7f2-4290-98dc-a97c97253f4e)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + b11374fc-f8c1-4ca2-8c03-5f6d0af136de)(label(test \ + end))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 89d77dbc-bebf-40a5-81c6-c538c1d4d561)(content(Whitespace\" \ + \"))))(Secondary((id \ + 346f841f-aa09-48d5-8f6d-fcdf20b34344)(content(Whitespace\" \ + \"))))(Secondary((id \ + a5ea840d-02ba-491e-a22e-c78579338d63)(content(Comment\"# Add \ + uses name, initial status set #\"))))(Secondary((id \ + 3f1d562d-5ec7-4deb-8d28-b757536d7842)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + df7d495b-f58b-4e8a-8e9f-76f26b8a04e7)(label(eq))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 23218874-4c50-4e85-84ee-9d237ccb0807)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 679e39d8-b5ee-4545-a2fa-8fcec15484c9)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 59142d86-a7b1-4af9-89ba-f76c812566f3)(label(update))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 666e92a1-7977-48bf-8b84-8d63857e640a)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + f732fd86-5688-43b8-8969-23477a02f024)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 63eb5b2b-82f6-4afa-bd34-eca3940079e0)(label(\"\\\"Breath\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + a05725d1-2e7f-4e5f-a607-34de96f9bf4a)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 09ec5b9d-9b19-4f94-aa56-4457798760d6)(content(Whitespace\" \ + \"))))(Tile((id \ + e73bbf9b-9a53-4dd6-8da6-032f7b999506)(label([]))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + acd5c49f-49ed-48f6-8221-4bb26cb1b4c8)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 2d1e0745-865a-4b46-8ce1-55fe3123dd33)(content(Whitespace\" \ + \"))))(Tile((id \ + 2f9de32d-5261-400e-8430-7abf71f1d530)(label(AddTodo))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 085066d9-1187-4c1c-b761-957fcca76b72)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 19bb9f55-5faf-4f1f-8a6d-e849cb77087e)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 321126d1-c710-462c-8e70-881105229b6a)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 103fba5f-68cb-410b-8475-f5e97c3574ef)(label(\"\\\"\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 6c58a4e7-f6ef-4dc6-9c0e-5a154e37a565)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 0fd07745-2bde-4c73-9576-1a8adcc57898)(content(Whitespace\" \ + \"))))(Tile((id 99f9716f-0a33-4cb5-a92e-cda7d545d6fa)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 2e52de0d-7c0c-4306-b722-b870130479e9)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 3fd155b4-ab94-41c4-9f78-b9984463c516)(label(\"\\\"Breath\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 36c33ac6-a34e-4bf4-8264-ee0b519dee71)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 3da86b6d-78eb-45f2-89aa-47e17a26dc4c)(content(Whitespace\" \ + \"))))(Tile((id \ + b461ccca-b6a9-4b80-979c-624ea72b9c8f)(label(false))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))))))))))))(Secondary((id \ + 7d8feb67-0838-4ba3-917c-1c334a9b2a8b)(content(Whitespace\" \ + \")))))))))(Tile((id \ + fc1cca46-34c7-4181-8af7-8ecf2c05ddec)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort Exp))((shape(Concave \ + 10))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + bc91ba11-8de2-429a-8e25-a72ead25fe72)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 09bfa094-3136-4487-9305-47edb4083f8f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 3cf5f89e-b86f-44f8-9dfb-1f326f2a62e0)(label(test \ + end))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 1d3c074d-dc35-40d4-9369-b38e59885924)(content(Whitespace\" \ + \"))))(Secondary((id \ + 6186931b-c74a-44be-ad10-2e90e335cb29)(content(Whitespace\" \ + \"))))(Secondary((id \ + e14b5420-e8d9-4651-8ac8-94054f545f55)(content(Comment\"# Add \ + nonempty (too impl spec? test add + remove \ + eqs)#\"))))(Secondary((id \ + f89f4aee-9a8d-4031-b9e9-4e9ebcdfc172)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 4bc107ca-44b1-4800-a583-5f0b1d312a2a)(label(eq))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + ec559c62-ae9c-4207-b5ac-58049bbf3025)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 1ab46a14-5cdb-40e7-8827-3fd7b401186a)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + bc32ea4f-5989-4807-a889-4f8c1849d95c)(label(update))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + a6503684-fab9-443c-b1f5-78c7babe964b)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 2eb69d7a-24a2-4bad-a473-e2981f3cefb9)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 1c4559da-82ef-4cf9-a98d-b8f9fe6de131)(label(\"\\\"Chop \ + wood\\\"\"))(mold((out Exp)(in_())(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + f0768f55-470d-4662-858b-53b79fa6a386)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + a5447d0c-060b-42ba-988c-493a80ce6868)(content(Whitespace\" \ + \"))))(Tile((id 7e47250a-4d5b-4460-a31b-b7c1d1fbcf63)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 0471c554-d74b-4cdb-a1a2-bd0c8d46ee0e)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 69d02e92-2836-4587-882d-7a2f6640c56f)(label(\"\\\"Carry \ + water\\\"\"))(mold((out Exp)(in_())(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 9d730d80-19db-4cf7-9f48-2eddfbdddaa4)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 2ceff0a6-5523-4d62-b60f-cb2be24c1d21)(content(Whitespace\" \ + \"))))(Tile((id \ + c43635a0-f3a0-4bac-9537-7342bc12bea5)(label(false))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))))))))))))(Tile((id \ + 2631d0e0-6fa1-4c6c-bef2-5c864bd90a00)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 0752c62f-7965-436f-8e8b-9c5400fe1b6e)(content(Whitespace\" \ + \"))))(Tile((id \ + 46e1b641-4fa9-4f0b-a11a-6a1885a592ac)(label(AddTodo))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + fb6e2348-f21e-41d0-ab97-e94ee6e53fa6)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 610cdae9-316d-48c2-8087-ddb618bf228d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d8ecd70f-4473-4701-bd5b-9cbb2dc043e6)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + f87658f6-7379-4e0e-b00b-10f41db9b3f4)(label(\"\\\"\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + f346d9b4-41aa-4abd-842a-2e2e53b250e6)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 7667fd2d-72e0-4a94-a769-39d6fb0933d3)(content(Whitespace\" \ + \"))))(Tile((id 71a78274-dcf3-4178-9659-4f51823f2fcb)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + e2e08c4f-8767-4396-9dd4-b0624a9c9bad)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + b03e0e37-1615-44f9-aaed-fe4dc67a8caf)(label(\"\\\"Chop \ + wood\\\"\"))(mold((out Exp)(in_())(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 48da51b5-54ca-40cb-92d4-56fca0caad08)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 4c2f9e08-fbe7-490f-8166-79435b7261dc)(content(Whitespace\" \ + \"))))(Tile((id \ + 70280bae-937d-4bb1-a198-efb03dcca874)(label(false))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 4c615736-522b-4371-8080-b9b61592f1a1)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + f74dc4a7-c004-4e54-b636-16c2e44c7d5b)(content(Whitespace\" \ + \"))))(Tile((id \ + e20c95df-87ca-4472-9c1a-2401363ea902)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + af4f627c-938f-4f64-96f9-803b5c0f7d72)(label(\"\\\"Carry \ + water\\\"\"))(mold((out Exp)(in_())(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 5e26fc30-e36b-4c8a-aee4-3f7731fa28e9)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 4b56b086-8bed-44f6-ad65-4cba3aacb770)(content(Whitespace\" \ + \"))))(Tile((id \ + 0e787521-ac38-4c88-8f6a-d25d6e2acbb7)(label(false))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))))))))))))(Secondary((id \ + 238d90ec-efe2-4122-baf6-8e273e6c7efb)(content(Whitespace\" \ + \")))))))))(Tile((id \ + a324d7a7-945f-4015-a260-08a6c521df66)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort Exp))((shape(Concave \ + 10))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + f1a66f1d-709c-4be8-b075-1aa4ef7d1a8b)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 9530450c-0280-4ac3-a23a-81c3ef8378b9)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 1d717e61-6c7c-43ee-97b4-f9f3d3fe8086)(label(test \ + end))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 42f32ac9-b710-493a-97c1-090009a5cddf)(content(Whitespace\" \ + \"))))(Secondary((id \ + ae1f38cc-5954-48f9-b21c-e606363fb34b)(content(Whitespace\" \ + \"))))(Secondary((id \ + 5e2590d0-19e5-417c-a677-a3e0de307aab)(content(Comment\"# add \ + then remove doesn't change todos #\"))))(Secondary((id \ + 3721ceff-b431-4bfe-a38d-276c16fe007c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 80227b34-29da-494b-a647-9cea56baacce)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 2c48d8fe-ca22-4a75-ae79-dae65cd6843d)(content(Whitespace\" \ + \"))))(Tile((id \ + c00d400f-547b-4d7e-b45a-3e21ae8a61d1)(label(todos))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 1fb6408a-0590-4ca5-931c-d47d2b7277e4)(content(Whitespace\" \ + \")))))((Secondary((id \ + 124a1acc-5cf0-49f1-8b69-43ea9f257d3c)(content(Whitespace\" \ + \"))))(Tile((id 6ac39a64-64c4-417e-88a3-b8558026ca16)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + b410b3a0-3904-43b6-a03a-54dc5f13de27)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 5893035b-8ed6-47ab-b535-9a9424a0a893)(label(\"\\\"Breath\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 59ee2962-ecd3-4edd-aa00-be1009b037ec)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 530243af-b069-420c-9ce3-27b8af4ff493)(content(Whitespace\" \ + \"))))(Tile((id \ + c0be50e9-1a4d-49de-a3dc-686e3779f6d0)(label(false))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + e1171973-17f9-4982-a838-6db762eebe86)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + e4eb95e7-84cd-4de8-8101-33a85e963da7)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 67b0ad57-440d-4457-b2f7-a8e4b15295a2)(label(eq))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + cab53717-68ab-448c-baae-5e7d6c029fe4)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 5a44f859-0676-4fb9-8bd9-f6163812a13b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d14c2ce3-2c93-4c5f-895c-162eb2597dd9)(label(update))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 8f8de63b-039f-48c7-a70f-77d0f732302a)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 85c497ee-be05-401c-9a76-f36c0c2a4f02)(label(update))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 79d3c0dd-6b29-408d-b668-f4ece5104555)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 3eb68bb2-1b70-4de8-a8d4-1fcac9612577)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 0657e63a-0c1c-497f-9a00-1c8d8cd312a1)(label(\"\\\"Remove \ + this\\\"\"))(mold((out Exp)(in_())(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 9700d5b4-75b1-4cae-ae8d-d31278289ef7)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 516f2579-efca-443b-9053-e4d40389cb86)(content(Whitespace\" \ + \"))))(Tile((id \ + a55df189-e844-4899-8a39-b54da2fbf7ef)(label(todos))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 6c277e27-2063-4d40-8920-80bbe8011b87)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + aee31c09-f3de-4274-8f76-6e36efb2aa76)(content(Whitespace\" \ + \"))))(Tile((id \ + 37a3e4c1-a7d8-48a3-b607-16f6585241a7)(label(AddTodo))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + e2901547-9257-46d6-aa48-22f53d168449)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + bacd8654-beca-4e5b-bbd6-748c1192ea18)(content(Whitespace\" \ + \"))))(Tile((id \ + 59bd204f-4568-40c6-891b-03403e4a0424)(label(RemoveTodo))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + f1928e29-25b3-4b42-9170-cd9c3018e507)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + b874f6b5-a21d-4ccc-be74-26d5ac87fd87)(label(0))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Tile((id \ + 9fe6d8f8-2740-48f4-8437-802de7efbcdc)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 0803ad35-aabf-442f-83ed-a14670152f32)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d0fab8c2-d6fb-4d40-8461-b0fbb0529933)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 7b0e39bc-c907-4fb2-a9a8-44a1067fdd87)(label(\"\\\"\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 1c41e482-88c6-486a-8340-1af0adaf7a57)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 4ba8b50a-a381-4831-a978-8bcdebfb1d92)(content(Whitespace\" \ + \"))))(Tile((id \ + 59319574-6367-4bde-bb23-505c68fa1591)(label(todos))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + 97c63d9d-3d2a-4c59-aeee-7bc82b4416cf)(content(Whitespace\" \ + \")))))))))(Tile((id \ + a0c28f0c-ad0d-416a-b4dc-75ce8f0f5360)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort Exp))((shape(Concave \ + 10))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + a246a2a7-10c2-4a7e-a0e7-1b9e8788ba6d)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 3c784aec-2a00-455f-beb6-39480dce07e0)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 5136b962-9ac8-4c56-9c41-2e208899693c)(label(test \ + end))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 423f1147-9e5b-4ddd-835a-f14a277449fa)(content(Whitespace\" \ + \"))))(Secondary((id \ + 6b7817ae-854d-4bb8-885f-c8bb2f5e92db)(content(Whitespace\" \ + \"))))(Secondary((id \ + 0cddc8e3-565e-48ed-bee4-2a38635403aa)(content(Comment\"# Toggle \ + preserves length #\"))))(Secondary((id \ + 5f68ac51-5b50-46cf-9503-700de6f441e1)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 30645c7e-a96f-41d6-bb34-d946f271ca78)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 7c59a233-048f-497e-a69b-f8301cd41b25)(content(Whitespace\" \ + \"))))(Tile((id \ + 1b05cc86-4b5d-4e3a-9673-43d9de5b6945)(label(model))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + a6935703-7378-40f4-a4c2-14a42180f07f)(content(Whitespace\" \ + \")))))((Secondary((id \ + 31c10e49-f518-41f4-b502-c941173d8045)(content(Whitespace\" \ + \"))))(Tile((id \ + 383440b1-78d4-4528-a62a-4540ecfc8571)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 7f15d2d6-ea1a-4cf4-b1e1-2a832cde60a5)(label(\"\\\"\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + fb83f13d-c65d-4f71-9e8f-c9a3a9bc2aea)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 7a0b13ca-c508-4479-858c-664540311c97)(content(Whitespace\" \ + \"))))(Tile((id eb438da1-82b6-47ed-8219-d6f86dcb6a4a)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 6f2a06f1-d2ac-4a61-89bb-930c2d7eed6a)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 4e6ebf5a-cd09-4c9d-aba6-1bb628b71e77)(label(\"\\\"1\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 04892a45-f3e0-4bb8-9785-a8d5d2e3639c)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + d4b00049-9c57-4c0f-98d6-cad5943d2fe2)(content(Whitespace\" \ + \"))))(Tile((id \ + 99626b36-7f92-476c-8371-f3fd35a90877)(label(false))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + e9e296a6-3ea4-44fc-aedb-37b6b349737e)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + a0123d38-660f-4d96-afc4-3fccd0c5514e)(content(Whitespace\" \ + \"))))(Tile((id \ + d929304d-05d0-4e3d-a759-dffaa96d4eaa)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + bb3422ee-0d94-4c82-a410-e4f1fd41623a)(label(\"\\\"2\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + e1a4af34-68a6-4ad3-bc2c-2a1be1e92658)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + cb105c86-e687-4a8f-915a-22863cca620b)(content(Whitespace\" \ + \"))))(Tile((id \ + a713fb7e-523f-4198-b7f0-51b6de9a229e)(label(false))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))))))))))))(Secondary((id \ + c3c6c3c0-219d-4984-955d-3304a3c3d01f)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 7b951c0b-7bba-406d-a102-2d35d71e74f9)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + daf30557-915c-4375-9b28-2a020a57795f)(label(num_todos))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 1f306840-cca8-49db-a429-54003b47a8ad)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + dbcddeae-ad70-4a6d-8548-52a0181b771e)(label(update))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + d7c75c48-ebd4-4d5b-abbc-50f9a7130c2c)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 73ea3fe6-14df-4e9f-868e-c65bff34ddf6)(label(model))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + dac7ce6a-8bb4-4409-8b33-f07e385bd0d1)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + b3b2c5d4-a494-4a72-a9c9-641ae43263ce)(content(Whitespace\" \ + \"))))(Tile((id \ + 4f39f66c-054f-4998-8840-560fabab4cbb)(label(ToggleTodo))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 637e901b-98f5-455c-8e76-bcb5179c7747)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 98220902-7dfc-4307-9fe3-631840ac6e2a)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))))))))))))(Secondary((id \ + 5afbf5f5-72e3-4dbc-ad52-ed6dd5ac3129)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 118eb84e-7a5e-4288-8687-3992440e6049)(label(==))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 8))(sort Exp))((shape(Concave \ + 8))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + ead8a1f1-4048-49cb-9eca-8722f11de7d6)(content(Whitespace\" \ + \"))))(Tile((id \ + 4fcc71ce-0a9e-4574-b444-a1498a690da7)(label(num_todos))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 0fd72070-04c8-470a-8974-a7e2a7f9ac34)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 608c16aa-1351-4032-ab2a-89c3b2059324)(label(model))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 7330b01a-f29b-42a8-80d4-1a4e60597d46)(content(Whitespace\" \ + \")))))))))(Tile((id \ + 99ae63f7-feb0-4066-aa6d-d4a3e9ef02e0)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort Exp))((shape(Concave \ + 10))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 611f102e-ca25-46d6-b6dd-8b03a4e750b0)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 4d28be69-8fc3-41df-bbfb-777bdd269c9c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 0cb66649-1c28-4ea5-b077-2b3a9a9cc1e2)(label(test \ + end))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 995f3891-e609-42af-99ec-03139557a2e6)(content(Whitespace\" \ + \"))))(Secondary((id \ + 2410b8ca-9ed0-48f9-8c20-e75d3347167f)(content(Whitespace\" \ + \"))))(Secondary((id \ + 26373f2d-9f76-4e33-ac65-cdc06189cc19)(content(Comment\"# Toggle \ + toggles right index #\"))))(Secondary((id \ + 8dba83ee-b2ee-4650-b624-b609ef409c2e)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 2cecc297-3d11-4895-8376-0666f3775813)(label(eq))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 44a7e35c-ade5-49bc-9b02-19e3da1907f6)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 416b45b0-2e06-4c1b-a37a-e7a176771e78)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 854092b2-a491-4f61-9a39-b68d6f2d2c4c)(label(update))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + d9420127-07bf-4376-8b88-c673f25a3560)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + d55de1fc-f640-4d6c-a8d2-c06a161deb55)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 47b660df-6d4e-4375-946b-4fb017d32d93)(label(\"\\\"\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + d8ab9c33-d828-49da-8103-6b642d90b4c4)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 5ef8bba6-c3d6-4dcd-8b77-5529ba1d0a23)(content(Whitespace\" \ + \"))))(Tile((id fb9b2fc9-c7e5-482c-bde8-8b7b5cc0c8e6)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + f36b7a13-b783-462d-8ed4-c01cb4693f72)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 4088b644-020a-4b7f-82cc-685b55c3a795)(label(\"\\\"Chop\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + f6cea6be-9bb0-4534-b463-12f89dd81d8c)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + d4016898-44eb-48e1-8eb6-e7ff511c1685)(content(Whitespace\" \ + \"))))(Tile((id \ + cd1541d6-2797-4a19-a5f0-e2b39e577533)(label(false))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 323b1103-839a-4398-afb1-c04b9e99f99e)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 81844b95-298b-4e2a-a084-e264d199544c)(content(Whitespace\" \ + \"))))(Tile((id \ + 3d88b6f4-32c6-4bce-b4a2-adc504e198be)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 1d8bf8ec-161f-4ba0-bbe5-10961f5c6f32)(label(\"\\\"Carry\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + ac78f61d-ec67-48ce-84b1-395f2b829463)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 6f3ef673-0807-4bad-aa4e-6d005dd79652)(content(Whitespace\" \ + \"))))(Tile((id \ + 6a7c1e0a-637a-4292-bfc5-2ae466081234)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))))))))))))(Tile((id \ + 8a36ea40-ca1c-4943-aa27-5801293e831f)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 91ab2492-7fc3-4d43-ba39-59e2dcccc036)(content(Whitespace\" \ + \"))))(Tile((id \ + cb26ef0a-40f1-4e10-956e-4ba920d0ef06)(label(ToggleTodo))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 4d5b7719-8d9b-456c-9f0d-5e79f941264c)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 1301df60-1a09-4129-bc78-caef8856eef4)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Tile((id \ + a4bd2ae3-fa63-4e78-b05d-7aa621062ddd)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + af6ab525-c34b-41a7-a15d-be87ae537357)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 4e033d3f-d3d6-40f8-a86e-1ba2c6038583)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 997dfd0c-0e0a-4b6d-89b3-4e3f347de441)(label(\"\\\"\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + e9cdef8f-2dac-4706-9a99-e7a68803052f)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + c575569d-c994-46d3-87af-4abf7552ee88)(content(Whitespace\" \ + \"))))(Tile((id c3e197c9-1ecd-4fa3-81b2-72fd69436809)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 2ff1fcff-4e58-44ce-8236-3c08a89c775e)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + b6b46318-ec9e-4329-95df-9c7291a2e6dd)(label(\"\\\"Chop\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 04d8ae14-fe42-45bb-ab2b-a28101466483)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 803ede21-ee4d-4b2a-a92e-d09f929ab420)(content(Whitespace\" \ + \"))))(Tile((id \ + 87872210-7b43-439a-8f31-68b466e715d4)(label(false))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + be3f07a7-0b16-4485-9821-a9d6265c5101)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 3dfd4e9e-fa8a-4823-8353-6e95b2868c35)(content(Whitespace\" \ + \"))))(Tile((id \ + c0226045-36ba-4cdd-a740-aa99b9c2aacd)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + f13bdf38-5ccb-433c-9335-8c4ddae21027)(label(\"\\\"Carry\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + f66ebb35-8ae0-4f1e-bf74-6f811695a0b6)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 5f1e6de1-223e-4329-b3e0-451e76194af3)(content(Whitespace\" \ + \"))))(Tile((id \ + bb15a607-1808-490b-9457-47ccdf87d43f)(label(false))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))))))))))))(Secondary((id \ + d6bc03f9-148e-4527-85e0-7fb88cd5d792)(content(Whitespace\" \ + \")))))))))(Tile((id \ + d16b2e3d-4999-4733-9f93-9ea04d94a61c)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort Exp))((shape(Concave \ + 10))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + a8ba2dea-e61e-448c-bafd-1a8dcd649b48)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + e0697b77-4890-45d3-9af2-8404959258ec)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 939ce3ca-ad54-493a-a06c-75e18ef88195)(label(test \ + end))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 580f85d8-eef8-4393-9482-7abeda940194)(content(Whitespace\" \ + \"))))(Secondary((id \ + 6de8d8f1-b327-4a87-940a-41fea1f41dad)(content(Whitespace\" \ + \"))))(Secondary((id \ + 31be7428-5651-40ed-99a4-fd59fd61472e)(content(Comment\"# Toggle \ + out of bounds #\"))))(Secondary((id \ + 3990b451-1958-43f4-b2ce-4b16322f94f9)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + f099ae34-ecfa-4a71-a116-85705ea4ede2)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + aaa14425-9c3d-4177-96f4-acfacde62bec)(content(Whitespace\" \ + \"))))(Tile((id \ + dfd7d75f-3a2a-45d9-bfa2-9fcd8d7398e7)(label(model))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 1a57bc34-b22f-45ef-b65e-63786915bde8)(content(Whitespace\" \ + \")))))((Secondary((id \ + f2aba918-5862-4300-8557-254abdb52263)(content(Whitespace\" \ + \"))))(Tile((id \ + 73d96f96-d751-489c-8f95-2d954cc68525)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + dbc269d5-63dd-422f-8110-80ad06e776e4)(label(\"\\\"\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 107dc422-7b5a-480c-8263-bacaaf85c3cd)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + df9837a4-280c-4b06-a4e3-de7dc6f1e65c)(content(Whitespace\" \ + \"))))(Tile((id 21985c27-953c-4075-90b4-bc2321d4b42f)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + f21359e4-6596-41f7-bb5f-3776c5828d6c)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + b9df0891-f4c5-400f-a6c8-8e459cc4db67)(label(\"\\\"Chop\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 0adda642-7934-4310-8a8c-f5b1d1483340)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 82f55c93-cfac-4ad2-afff-9f024deacacd)(content(Whitespace\" \ + \"))))(Tile((id \ + 8e18152c-9117-492c-ab16-bb7a57e50bc8)(label(false))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + a24eceba-33bd-497a-be94-b2943e18fd91)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 42af8ab8-733d-498e-b6d4-5872b7cc2354)(content(Whitespace\" \ + \"))))(Tile((id \ + 1498fe79-d0ae-40b8-9139-7afe483adf8c)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 80a92f4a-1e80-4e25-80d0-75e6e0c5dca1)(label(\"\\\"Carry\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + dbb2c78d-a757-45d6-ae40-757314c07367)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 056369a1-7490-4900-9ec0-ae5233a6e99f)(content(Whitespace\" \ + \"))))(Tile((id \ + 74187301-5c28-4f9b-b53d-9160097901dc)(label(false))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))))))))))))(Secondary((id \ + 58be85dd-f4ff-4b4a-ac37-94bf4b77c60a)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + c00db925-e03b-4d08-bf04-f61278783f6f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + f862bfd7-4bc9-491e-a28b-2009f726ce80)(label(eq))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + b0042697-0db1-4311-95a5-fbad18ba6c56)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 35202196-bb08-4d73-a244-b298062901c0)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 42e820bd-6c6b-4971-86a7-0b106ba71921)(label(update))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 7d6027f3-c1c8-42dd-a58c-a8c9937c433e)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + d9a93ad3-cc17-4d8c-b608-a8b9d18228e2)(label(model))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 69e8fd37-415c-473b-8aa4-115a7c6ee6fc)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + d67ec7bb-a00a-4e6a-8309-917f6f93aa6c)(content(Whitespace\" \ + \"))))(Tile((id \ + 5a047174-546f-4202-9e34-e311639ec692)(label(ToggleTodo))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + df25b156-8f41-4a71-8282-4d1554094b52)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 1298ff6b-cc48-423e-8ebf-de2161f56bb8)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Tile((id \ + 75aaec8f-eaf7-4481-a020-92cfae5331be)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 2b65dfd6-3fa0-4011-9a9d-31a11f4a2bd9)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 45405d87-9746-4ae4-92ec-b1a7fc8a0e4c)(label(model))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 478e2ab1-98b4-43d9-b855-4c4baa4d8de0)(content(Whitespace\" \ + \")))))))))(Tile((id \ + da02cf3c-483b-43b6-8e36-6089006d22e6)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort Exp))((shape(Concave \ + 10))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 1a354ae7-6c60-4144-9973-1fecd0c88224)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + f74ae291-ac10-4227-a75d-86b32ff26cf3)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 2b43c539-a551-4d90-812a-3e8323257961)(label(test \ + end))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + b4ef5b27-3033-4579-b644-28b3dca1b993)(content(Whitespace\" \ + \"))))(Secondary((id \ + 448f24ed-6ecb-4538-87cb-8027bf2dd440)(content(Whitespace\" \ + \"))))(Secondary((id \ + 783274a6-abdd-4c51-b2cb-d17d6590fb45)(content(Comment\"# Remove \ + removes #\"))))(Secondary((id \ + d8114a2c-41eb-4017-9490-854bbec31dd3)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 221915ed-9e63-416a-b423-dac6c0c212e2)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + d8a9da98-11c7-45af-843c-0b048dcd48b4)(content(Whitespace\" \ + \"))))(Tile((id \ + 8779a629-5cb4-42ae-ba32-9f6e8612fbee)(label(model))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + d2f02c65-8792-4421-aa16-278089a03271)(content(Whitespace\" \ + \")))))((Secondary((id \ + d0aeb08e-41dd-4098-b5f9-80e332d43f44)(content(Whitespace\" \ + \"))))(Tile((id \ + 73e22785-7c2d-48d8-8f72-511d5191894b)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + a518bbb6-ee7a-4ea7-9aed-fdaacc208455)(label(\"\\\"\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 4d2dbf4f-6452-4e28-9bdc-5bb995954273)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + c040cf40-dd36-47e7-92f2-5bacdddb4178)(content(Whitespace\" \ + \"))))(Tile((id d176eb50-9aa7-4cf1-ba61-4d5349ea7d33)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 21d32cb8-074e-4b1c-923a-8f8a7bf5c035)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 91fa0c03-26d8-4800-a197-994f916bd94f)(label(\"\\\"1\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 5cd0bd4b-b2b6-43d5-b35e-4d1c30753da3)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 1baa421b-061e-48b9-8fa5-b1e903475390)(content(Whitespace\" \ + \"))))(Tile((id \ + 4e26ccb9-cad0-49bf-aa1c-93d48ee342ce)(label(false))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))))))))))))(Secondary((id \ + 98a1eb2a-adee-4f7e-a7b5-7e4074fbb461)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 50e4dd43-a0f1-4264-acbc-af0789031ed9)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + f6639688-e21e-43fe-a5b4-f076d78737d3)(label(num_todos))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + db368180-b80b-4f50-b770-c35c2e67d821)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + a27c3337-df4e-4a73-8f4f-2dfe3aaec4e1)(label(update))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 21d463b6-bff8-49e9-9c6e-3d9a789dc23d)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 0ad178d1-5f0b-4453-b1dc-9fb4b2d252b3)(label(model))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 6290d45d-db2a-43a4-849c-b273a9403ff5)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + faa07a3c-edf5-4c3a-9a3e-a463cc08255c)(content(Whitespace\" \ + \"))))(Tile((id \ + e21b189a-d262-47d6-ae1f-017d5d0e73d3)(label(RemoveTodo))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + dc3ca575-1a9e-4e0f-a92d-2ccdf56bd03b)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + b55d40ef-8414-4ec4-8385-fbd21ee4f601)(label(0))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))))))))))))(Secondary((id \ + 4219f369-44de-45e5-8cd6-f8ee1b460a1f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 658d0eda-bf6b-484f-a22c-05d9a771f593)(label(<))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 8))(sort Exp))((shape(Concave \ + 8))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 3b4fef1a-4663-45fb-8ad5-151fc3d5709b)(content(Whitespace\" \ + \"))))(Tile((id \ + 34d0f21e-6cb2-479b-9a72-0f437b65e9de)(label(num_todos))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 1f72a998-0f5d-42b0-a6e2-794db85709b1)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 4993824a-78b0-4d84-bd94-f904a146d4db)(label(model))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + e16f6664-4a09-4236-bbb4-a43bd69fd06e)(content(Whitespace\" \ + \")))))))))(Tile((id \ + 55c56262-66c9-40ea-aa9b-7c7c60db8e5b)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort Exp))((shape(Concave \ + 10))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + b708c314-16f8-40d7-be37-e73e3b3c0337)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 2681411a-2f5c-4294-93d6-137990ab3feb)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + b7f95722-9825-48dc-a910-724c77be7425)(label(test \ + end))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 694fdb56-0067-4758-93a2-a0109569cd86)(content(Whitespace\" \ + \"))))(Secondary((id \ + a5786039-2160-4987-9c0d-971e5ee39d49)(content(Whitespace\" \ + \"))))(Secondary((id \ + 14b0d60a-7330-443d-9b53-563c8a89796d)(content(Comment\"# Remove \ + removes right index #\"))))(Secondary((id \ + b51d8c64-9843-4f1e-8224-4fed2976362c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 6ce290b3-4205-45e7-bbbc-fe3a337c7cc4)(label(eq))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 38f71230-8b4d-4559-a225-d5034d149084)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + ee649dcf-f3ac-47b3-9c10-22470a388a68)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + bef4c05d-676e-45fa-9a32-446fea9c10c1)(label(update))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 8eeb6cdc-bf80-4c6a-a196-71c2bfed5287)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 9a567c65-ec88-4a89-97e6-4519dd92d74c)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + f388bafe-43e4-4b41-952e-bd5e8f05c51f)(label(\"\\\"\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + be67c77f-bd38-4daf-af5d-1382bd4f8f9f)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 58d4d8da-488a-4e75-8013-b96d1bbb7a3f)(content(Whitespace\" \ + \"))))(Tile((id e73b31f6-72f7-479f-bf74-54e4e16cb279)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 241a1425-278a-4851-8852-a8942d1fceae)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + e10be1c7-1778-4743-a806-4992f5cb73d4)(label(\"\\\"1\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + cd712737-0ade-4edf-9e49-13c2a1bbe311)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + b8973338-08f7-47ae-a0d1-801544c7d109)(content(Whitespace\" \ + \"))))(Tile((id \ + 4bb53d23-1488-4016-8cf1-94566d16a9b9)(label(false))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 41ea35aa-9989-4244-a7f3-657d56a0b867)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + b1f93712-76df-48e4-9ae0-f0ad9183c079)(content(Whitespace\" \ + \"))))(Tile((id \ + 67b30d6f-34f0-4ab8-aaa5-8d10681a8551)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 29914512-1dbb-4c1a-b5b8-77d2490e7135)(label(\"\\\"2\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 4492042c-cfc0-4093-b185-bdb6ecf9cf89)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 3c362d21-221b-4a44-a1a6-7d2e9eddd626)(content(Whitespace\" \ + \"))))(Tile((id \ + f9d4914d-1305-4a28-b890-785411390450)(label(false))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))))))))))))(Tile((id \ + 420bb6fc-646f-467d-a475-41ff15fc8d28)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 4beaf154-779b-4bcc-b807-8d176addbc94)(content(Whitespace\" \ + \"))))(Tile((id \ + d7e1000f-852b-4aca-99d5-97b26454eaca)(label(RemoveTodo))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + faa4d86c-83e1-4efa-9bd0-5191c82cd2f3)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 9941a870-7e38-4fa7-9484-166339c028dd)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Tile((id \ + 5b92f7fa-c0d0-4669-9466-23fd658ee8a4)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 60b41a5c-6b16-4bc4-a849-deaebcbdfbe4)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + e7de464e-aae8-41e1-8aec-83bd44ada0d7)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + ea50134d-58df-4cd2-a636-d7e95d3aaa58)(label(\"\\\"\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 676e4f70-51cd-44fd-bd4d-bb69a4cb6404)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 30feeb44-191a-4d8f-a165-ea93f9b96fc9)(content(Whitespace\" \ + \"))))(Tile((id 20012cd6-9570-4c10-8abb-f64b534d1b97)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + cc5fb967-bf50-4083-9883-b49c1e1e76c7)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + f180cb1f-0abc-42ba-89d6-20f24390b58e)(label(\"\\\"1\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + b04d54b8-9386-4bfb-8172-4c57bb5ea4d5)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + cc493839-70db-4e1c-95a0-95abd237a7b0)(content(Whitespace\" \ + \"))))(Tile((id \ + 9c9cafa5-75f3-47ff-8003-3926bb63993c)(label(false))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))))))))))))(Secondary((id \ + 63943fd8-d319-42d2-89dc-fdd846a052b7)(content(Whitespace\" \ + \")))))))))(Tile((id \ + d7156744-8baa-4d21-980c-7fec336f6ef0)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort Exp))((shape(Concave \ + 10))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 33844e10-bf60-46c8-bf32-167be63bfa0e)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + a2e361d0-1d53-4d75-ba53-dcf013e53f24)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 2a8d1b1f-b0f3-4c0d-a51b-de68e938bbbc)(label(test \ + end))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + ff595754-f3a5-4fed-b1f1-c51ccb907e76)(content(Whitespace\" \ + \"))))(Secondary((id \ + 55806493-2812-488f-90fe-a787a15c6f81)(content(Whitespace\" \ + \"))))(Secondary((id \ + b934bb5e-49a7-4765-9950-b9ea3452b6d8)(content(Comment\"# Remove \ + out of bounds #\"))))(Secondary((id \ + b13892a2-4151-466d-bb42-3328fdf781a9)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 98a6e700-35ea-4fa5-b894-aae6fcc96291)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 512eb545-3f91-4eb1-aa0e-7a4f630190dc)(content(Whitespace\" \ + \"))))(Tile((id \ + d1ab544d-4abd-4b76-8a41-ec9afc7f23bc)(label(model))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + b6dbd2aa-1d5c-4f11-bbc3-095e2e95ccfb)(content(Whitespace\" \ + \")))))((Secondary((id \ + 4985aa05-246a-43e7-ab16-4fa03b96ccaf)(content(Whitespace\" \ + \"))))(Tile((id \ + 45692099-aba6-4771-8870-9b33688b2f6c)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + dbac5e84-5813-4305-a6ed-243f1ae674c5)(label(\"\\\"\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + ced3af7f-5561-4af6-a2a0-c1724bcad912)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 606776c9-ca8e-4752-a089-890cf9d05e46)(content(Whitespace\" \ + \"))))(Tile((id ce92e96c-0d8b-47ff-a600-8cb2d67da5a1)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + b0b57ece-5749-4eae-8d81-b661e14cd7fe)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + be27a8cc-1a0c-4553-8044-c1998a6063d1)(label(\"\\\"1\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 371dbfaf-0fcd-4807-a780-35ae302bdf19)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + b36d065e-5ff9-4260-9b8d-f7bc9b52ec16)(content(Whitespace\" \ + \"))))(Tile((id \ + c82f7420-3145-49dc-bf11-2a334afee308)(label(false))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))))))))))))(Secondary((id \ + d2da8cb0-8921-4935-afd1-95a28b238c4a)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + f4e67e0d-1454-466e-915d-d5fce87e8157)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + fee5d736-8e1e-4658-9d81-f13abf87ea55)(label(eq))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + cc5db5fc-644b-4657-a7ac-18c811e45e99)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + fba68fb7-c163-4939-919a-18df20dd50a1)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 26962441-9ec2-429d-bad7-78695da77d9e)(label(update))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 8b8904e7-455c-475d-8185-a4d2e2ae77df)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + fe16a9d4-2464-43a5-ad5c-84591298edbc)(label(model))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 138df1ef-cadf-4364-8473-996ce27fca71)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 7567e4ca-6659-4b2e-a505-688b65e85eeb)(content(Whitespace\" \ + \"))))(Tile((id \ + 1256eb36-05fb-4ed9-ae3c-32ad6e535f14)(label(RemoveTodo))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 2dd94f69-e76f-4ef0-ab40-9214b8db9632)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 4e9aa849-c846-49cb-8477-42683082cee6)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Tile((id \ + 90cfeffd-0c5c-47ad-866f-4c8b787a86d6)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 9e62983f-96b2-4085-9399-bf47bc9b2b0e)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 58bd81fb-aeab-4e7d-9d22-e3b3b81b0b7e)(label(model))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 8af48df4-dd4e-4d93-8712-57fbf8236d2a)(content(Whitespace\" \ + \")))))))))(Tile((id \ + 5a2dee9b-e2ca-4dd9-b614-e02fdbe00c98)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort Exp))((shape(Concave \ + 10))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 6fc01dbd-61c1-4ec8-b8d8-00f55e65f738)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + b962bbec-945c-4550-b34b-d30028a9b83e)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 8ed8e02c-4410-4d33-8934-37f32b6030bf)(label(test \ + end))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 69870335-553f-496c-a43a-df66b85643d3)(content(Whitespace\" \ + \"))))(Secondary((id \ + a6852d91-a12d-41b7-bca4-c9c4f59bd202)(content(Whitespace\" \ + \"))))(Secondary((id \ + ad2cc418-5471-4e74-8b1b-3f07134b7380)(content(Comment\"# Update \ + Input #\"))))(Secondary((id \ + e00a41f2-6657-4aca-859d-08a4022a131c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + e0147a04-e927-4c93-9330-6b7f8f408c14)(label(eq))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + c29f19dd-a7ef-41b0-9a03-f31e90e28045)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + cbee93d7-941f-41b3-9429-8bf233ef91ad)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 25ce8d6d-36d8-42f2-971e-d32cac912453)(label(update))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 3b2dc1b0-6a41-4306-9de9-60e9665a18a0)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 8477ce1c-55cd-4295-aab2-d1d2b9fb9ebe)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 8bc4511f-7f98-4fa6-90a9-0d1b37b1967e)(label(\"\\\"\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 7f523b74-54ef-4c4f-8d5e-1a600dbdd314)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + f379706c-4d89-43d2-8717-fd96874d96a9)(content(Whitespace\" \ + \"))))(Tile((id \ + 26cbaa62-2de4-4337-a9e4-caeffbc4f042)(label([]))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 22957195-7820-4918-95c2-223e24a7efc4)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 78fe5d77-a1c4-4da9-9a0a-ed7ebd43c28a)(content(Whitespace\" \ + \"))))(Tile((id \ + 7ae4511e-bc06-48ad-8632-bef0bf6dfddf)(label(UpdateBuffer))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 3175b05a-960e-4c81-87b8-845e138ed792)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 7fadcda3-4f45-4182-a03d-4b54d1da4997)(label(\"\\\"Breath\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Tile((id \ + 863ec75b-4fba-4e06-924e-d0dce571fb0a)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + fc566e24-12a9-49e0-a31e-6db2316d8774)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + cb216df0-7938-4a01-8534-5b615ac7a60b)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 10d27104-24ed-4c16-9d85-59d9bf34fc91)(label(\"\\\"Breath\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 3a860a0f-fcbe-49fd-919c-a1ca0a478526)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + daba4be7-952e-45f7-8e54-057552eacaf9)(content(Whitespace\" \ + \"))))(Tile((id \ + e588a949-7e9b-407a-a1d8-b1061721ee3f)(label([]))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + 24940cc5-35fc-4e3b-9835-697224e341f3)(content(Whitespace\" \ + \")))))))))(Tile((id \ + 9d5167f0-37f3-4feb-9f61-36a99726c0a7)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort Exp))((shape(Concave \ + 10))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 95805d7d-1f57-4e6b-83a8-4db9bf9be573)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + c57c8233-4b07-4aeb-a1ac-65b5ec8d2ae5)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 7124c0a7-6847-4693-9425-8ef8f46a6b56)(label(test \ + end))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + e74ffe34-a361-41cf-90cb-7d4e888e24af)(content(Whitespace\" \ + \"))))(Secondary((id \ + 4dada440-8e91-47ea-9790-8f552deb9ba9)(content(Whitespace\" \ + \"))))(Secondary((id \ + 24d2d1d4-441f-4eb9-9434-a4d18f7041a3)(content(Comment\"# Don't \ + add blank description #\"))))(Secondary((id \ + dc3c9844-44c9-4533-b514-e9c264a90732)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 63c914a4-f194-4724-bfad-d083d52deab1)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 8ff7864a-4d29-4470-8fff-f1432d7e5d4e)(content(Whitespace\" \ + \"))))(Tile((id \ + f828fb7e-b959-43ec-b458-17e529949b2d)(label(model))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + ee83ea8b-d070-462e-a9e2-d36e445f3cb6)(content(Whitespace\" \ + \")))))((Secondary((id \ + fe19430f-6a06-425a-af8b-d7569e472ccb)(content(Whitespace\" \ + \"))))(Tile((id \ + 07f52679-fa5a-4c2d-aef4-48237d6105c8)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + c65d9975-4d46-47c6-8e44-e741b51f4ac3)(label(\"\\\"\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 60ee6d4a-5c77-4875-933d-916dbfde12a7)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 0293cbfd-cc2a-4765-a74c-65c860c95db3)(content(Whitespace\" \ + \"))))(Tile((id d7252e8b-4d74-466b-bccd-e104a1c37b1b)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 25a57262-0281-4fba-88dd-54c45f1e1e26)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 995f3cc8-be61-40f6-b451-f238c7b3f1ff)(label(\"\\\"1\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 2893fb02-aa78-4fa5-bfae-4afc54581954)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 957d17c5-a303-4973-b18a-33cb56560cf5)(content(Whitespace\" \ + \"))))(Tile((id \ + 64d5ca1f-9116-4cec-b256-120a5ebb8228)(label(false))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))))))))))))(Secondary((id \ + 1dc178ef-9e9b-493b-969d-818b5a8c413b)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 11fa0ebc-0427-400d-bdc1-9032ba69f9da)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + eba0cb7f-ea5b-453f-86cf-435f7244c770)(label(eq))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + a57ba329-2820-472a-8174-99fb3bfbd8df)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + edb38040-f919-4292-bc07-aca263f5a72f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 5da8c0fe-188f-4d69-9136-68735c0d0c44)(label(update))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 6c235920-1896-4b5e-8466-68fb14b79005)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 944a7418-9a02-45b9-a695-3c6713801b66)(label(model))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + b502adbb-fb54-48a8-85f5-c61b58ed0363)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 17222c50-9a8b-4c0b-90b3-be00ebbd7dac)(content(Whitespace\" \ + \"))))(Tile((id \ + 030c710d-bde9-48a4-8d82-c3bfb6e778c9)(label(AddTodo))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 187d9f6f-e281-4455-a8c4-afd4e4d7ccaf)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort Exp))((shape(Concave \ + 14))(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 28419c2c-441c-47a2-b4ad-18f29043c7ce)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 084f523c-8f38-4c61-9c61-14552117618c)(label(model))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 69467a43-9d2b-4c45-a74d-9abd81fff245)(content(Whitespace\" \ + \"))))))))))))(ancestors())))(caret Outer))"; + backup_text = + "# Slide Index 6: Tests #\n\n\ + let eq = Model.eq in\n\ + let num_todos = fun m:Model -> List.length(snd(m)) in\n\n\ + test # Add adds #\n\ + num_todos(update((\"Breath\", []), AddTodo))\n\ + > num_todos((\"Breath\", [])) end;\n\n\ + test # Add uses name, initial status set #\n\ + eq(\n\ + update((\"Breath\", []), AddTodo),\n\ + (\"\", [(\"Breath\", false)])) end;\n\n\ + test # Add nonempty (too impl spec? test add + remove eqs)#\n\ + eq(\n\ + update((\"Chop wood\", [(\"Carry water\", false)]), AddTodo),\n\ + (\"\", [(\"Chop wood\", false), (\"Carry water\", false)])) \ + end;\n\n\ + test # add then remove doesn't change todos #\n\ + let todos = [(\"Breath\", false)] in\n\ + eq(\n\ + update(update((\"Remove this\", todos), AddTodo), RemoveTodo(0)),\n\ + (\"\", todos)) end;\n\n\ + test # Toggle preserves length #\n\ + let model = (\"\", [(\"1\", false), (\"2\", false)]) in\n\ + num_todos(update(model, ToggleTodo(1)))\n\ + == num_todos(model) end;\n\n\ + test # Toggle toggles right index #\n\ + eq(\n\ + update((\"\", [(\"Chop\", false), (\"Carry\", true)]), \ + ToggleTodo(1)),\n\ + (\"\", [(\"Chop\", false), (\"Carry\", false)])) end;\n\n\ + test # Toggle out of bounds #\n\ + let model = (\"\", [(\"Chop\", false), (\"Carry\", false)]) in\n\ + eq(\n\ + update(model, ToggleTodo(2)),\n\ + model) end;\n\n\ + test # Remove removes #\n\ + let model = (\"\", [(\"1\", false)]) in\n\ + num_todos(update(model, RemoveTodo(0)))\n\ + < num_todos(model) end;\n\n\ + test # Remove removes right index #\n\ + eq(\n\ + update((\"\", [(\"1\", false), (\"2\", false)]), RemoveTodo(1)),\n\ + (\"\", [(\"1\", false)])) end;\n\n\ + test # Remove out of bounds #\n\ + let model = (\"\", [(\"1\", false)]) in\n\ + eq(\n\ + update(model, RemoveTodo(2)),\n\ + model) end;\n\n\ + test # Update Input #\n\ + eq(\n\ + update((\"\", []), UpdateBuffer(\"Breath\")),\n\ + (\"Breath\", [])) end;\n\n\ + test # Don't add blank description #\n\ + let model = (\"\", [(\"1\", false)]) in\n\ + eq(\n\ + update(model, AddTodo),\n\ + model) end"; + }; + { + zipper = + "((selection((focus Left)(content())(mode \ + Normal)))(backpack())(relatives((siblings(()((Grout((id \ + fe2acff5-ede5-4841-b198-b7b15ae48a0a)(shape \ Convex))))))(ancestors())))(caret Outer))"; - backup_text = " "; + backup_text = " "; }; { zipper = "((selection((focus Left)(content())(mode \ - Normal)))(backpack())(relatives((siblings(((Secondary((id \ - 53f99ea5-f1e2-4c4b-bb11-8bb270cc563d)(content(Whitespace\" \ - \"))))(Secondary((id \ - 0595315c-7bd1-43dc-8cd5-ef755f9d7538)(content(Whitespace\" \ - \")))))((Grout((id 6ee496e0-c06a-4c46-bfdd-c844017a8bd2)(shape \ + Normal)))(backpack())(relatives((siblings(()((Grout((id \ + cc52fcd0-ffb5-433e-a2f4-1b6642529ed2)(shape \ Convex))))))(ancestors())))(caret Outer))"; - backup_text = " "; + backup_text = " "; }; { zipper = "((selection((focus Left)(content())(mode \ - Normal)))(backpack())(relatives((siblings(((Secondary((id \ - cdc8e64d-6836-4d9f-9353-969397bfe2ab)(content(Whitespace\" \ - \"))))(Secondary((id \ - 82f3fe37-c665-4aeb-af3d-01ad0de37d40)(content(Whitespace\" \ - \"))))(Secondary((id \ - 749ce88d-f0e0-4694-b13a-0831f733b0ed)(content(Whitespace\" \ - \"))))(Secondary((id \ - 4a7e3e85-8563-4160-a121-bc3c0911118b)(content(Whitespace\" \ - \")))))((Grout((id 75ba0150-8d58-4efe-9253-cc2d7f4df1c4)(shape \ + Normal)))(backpack())(relatives((siblings(()((Grout((id \ + 2c860c3b-2150-4367-b546-a165689ff328)(shape \ + Convex))))))(ancestors())))(caret Outer))"; + backup_text = " "; + }; + { + zipper = + "((selection((focus Left)(content())(mode \ + Normal)))(backpack())(relatives((siblings(()((Grout((id \ + a9478cb7-d5f1-4404-bc31-0dcba6d6e2dc)(shape \ Convex))))))(ancestors())))(caret Outer))"; - backup_text = " "; + backup_text = " "; }; ] ); examples = - ( "Introduction", + ( "Todo", [ - ( "Casting", + ( "Empty", { zipper = "((selection((focus Left)(content())(mode \ - Normal)))(backpack())(relatives((siblings(()((Secondary((id \ - 8068a0c4-8131-4ce5-a850-c17e7e7e38a7)(content(Comment\"# \ - Internal Regression Tests: Function literal casting \ - #\"))))(Secondary((id \ - 3be72b01-de96-4cd5-910f-b6f3ab6a172e)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 4d828014-6d8f-434b-abf2-6a662fe33c69)(content(Comment\"# None \ - of the below should trigger runtime exceptions \ - #\"))))(Secondary((id \ - c3af568c-60e3-49fb-b4b6-aceb07a91e97)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - e57439be-1c01-459a-bcf9-cd5f3aa8c65d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - ce9fa5fe-b457-40f2-b69a-1dd30d72b19a)(label(let = \ + Normal)))(backpack())(relatives((siblings(()((Grout((id \ + 9569e178-8fd5-40ad-81f9-2287c47962b7)(shape \ + Convex))))))(ancestors())))(caret Outer))"; + backup_text = " "; + } ); + ( "Void", + { + zipper = + "((selection((focus Left)(content())(mode \ + Normal)))(backpack())(relatives((siblings(()((Grout((id \ + e3ec1720-c10e-4a2e-97cd-90e405809286)(shape \ + Convex))))))(ancestors())))(caret Outer))"; + backup_text = " "; + } ); + ( "Todo", + { + zipper = + "((selection((focus Left)(content())(mode \ + Normal)))(backpack())(relatives((siblings(((Tile((id \ + 68958297-11e4-4f9c-b665-21f64ddea42c)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + e309decc-7f82-4766-ad85-4b1ab82aeb4c)(content(Whitespace\" \ + \"))))(Tile((id \ + a1ef0ce2-dc05-4ef1-aee2-161e63715d47)(label(Option))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + c28d00f5-4480-4344-85af-1f4f0850bfff)(content(Whitespace\" \ + \")))))((Secondary((id \ + eb421d3f-cd9d-4feb-b3c9-8d8d90f95973)(content(Whitespace\" \ + \"))))(Tile((id \ + f4e7262b-76a1-4263-be10-40c37d836ea1)(label(None))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ + b7538abe-6b0b-48bb-bf02-a9cf4c2dbff0)(content(Whitespace\" \ + \"))))(Tile((id \ + 8faadc61-500f-4ca7-9765-70e2395cf717)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + b2232ec9-c30f-4159-8b6d-8f629795a958)(content(Whitespace\" \ + \"))))(Tile((id \ + bd593366-3096-4bb7-8977-a34c13186e63)(label(Some))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + 14f9e462-0217-42a0-be20-4dc416be6d81)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 5ac15cce-7391-4d0d-a970-c98daa0a79f2)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 6e7e0af2-cbe8-4d69-afa6-175fb1289a89)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 72d6f6c0-e106-48d8-9ba2-f99ad979ce5c)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + ce410764-ab06-46af-9c45-94a7fe31e822)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 50f38002-db34-4a7b-b56e-a5cc6c8b9fc3)(label(let = \ in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - cbeba9b0-28a2-4e5f-84d3-1ac692fdadac)(content(Whitespace\" \ + 089cce14-4379-4d76-b2d5-eba5e77896e9)(content(Whitespace\" \ \"))))(Tile((id \ - 5c050101-1fa6-4df8-b20b-b19c253a622d)(label(g))(mold((out \ + 133558ef-c5f2-47e0-823d-ca5635687bf2)(label(fst))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - f9aa410a-67dd-402d-bb0f-4a7681401d98)(label(:))(mold((out \ + 3df538e4-aa15-4b0e-ac74-ec9406374226)(label(:))(mold((out \ Pat)(in_())(nibs(((shape(Concave 11))(sort \ Pat))((shape(Concave 11))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 364edc1f-bb6f-4b64-b3c8-88889944ab35)(content(Whitespace\" \ - \"))))(Secondary((id \ - 8bd22357-2c15-4dcc-92b8-5aa2f6e4762a)(content(Whitespace\" \ - \"))))(Grout((id f20dff97-39f2-4f4d-8f31-684088be69f0)(shape \ - Convex)))(Tile((id \ - ca20cc5f-f628-4149-9310-d59868ecc7a9)(label(->))(mold((out \ + a5067bec-ef9c-4f0a-ac95-b9bc63175f1e)(content(Whitespace\" \ + \"))))(Tile((id \ + 5e23963a-f5dc-48b7-8e03-0e993824e620)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 324d8d5c-b8ad-4cad-95b5-4f6a4404c36d)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + 6d92a7b9-764a-444b-b89e-507fec1a9557)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + b0a3831d-f7b7-41a0-b787-cd2c17a8291f)(content(Whitespace\" \ + \"))))(Tile((id \ + df8f2705-9fc3-4460-8f6c-ea41f4eff9b6)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 06ef1003-336c-468a-a310-d4d3db6843d6)(content(Whitespace\" \ + \"))))(Tile((id \ + 4f34794b-3a2f-491a-b144-6cdf967857cc)(label(->))(mold((out \ Typ)(in_())(nibs(((shape(Concave 6))(sort \ Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 5cb83599-6fff-4fe6-8b1b-fbc0f2b16df6)(shape \ - Convex)))(Secondary((id \ - b6ed15b5-4d03-474f-8079-ff23578cb9c3)(content(Whitespace\" \ - \"))))(Secondary((id \ - 90761b49-64e0-4fa1-b3b8-2baf37151b32)(content(Whitespace\" \ - \"))))(Secondary((id \ - 8784e29d-9fb1-47e6-9833-13964e30a390)(content(Whitespace\" \ + Typ))))))(shards(0))(children())))(Secondary((id \ + f5eacbd1-b527-427f-a8f4-e9c04141ffb3)(content(Whitespace\" \ + \"))))(Tile((id \ + afcb95f0-1d85-4de4-8be3-5698dc5dfd01)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ + a7f0727e-0146-4b90-b018-912cab5f9b6e)(content(Whitespace\" \ \")))))((Secondary((id \ - 881872c6-0d5d-4618-a27f-2d8189d891d3)(content(Whitespace\" \ + e2eb0ebc-33ee-4cc7-afbf-4f503a1faed5)(content(Whitespace\" \ \"))))(Tile((id \ - ec558c21-a417-440e-8649-5d1e471ac938)(label(fun \ + fe1ce33f-2ca9-4771-ba63-b635dc549f5d)(label(fun \ ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - 6cafce86-7cfd-4966-890f-1ff63e7c59d1)(content(Whitespace\" \ + 65fb907a-2c3f-4bcf-a30d-d3169a411da7)(content(Whitespace\" \ + \"))))(Tile((id \ + fbe9005e-a506-4f9b-aa91-9e16afb0cb59)(label(a))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + c7b83d74-3742-4876-9b56-7e65fce0ff2a)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + bc6d5cb7-2086-4ca2-abb2-f4fb6b7ce031)(content(Whitespace\" \ \"))))(Tile((id \ - e6197a04-5d43-457c-b9ac-2863dc99c9aa)(label(_))(mold((out \ + 73738a75-6a18-4504-9301-864986bc6571)(label(b))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 8bc5b8c6-b9f6-4f7f-bdc0-cca1ee17ace0)(content(Whitespace\" \ + ace9781a-a227-4507-b228-9182be2e2244)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 5fa91f17-5b9d-4375-8c21-48ea2a17f79b)(content(Whitespace\" \ + d4c2710a-ef76-4c1c-97db-512eaee4ff2a)(content(Whitespace\" \ \"))))(Tile((id \ - 729bfaa3-4d19-45ab-b2ea-0ee7cbf89f6a)(label(9))(mold((out \ + 7b70dbba-67c9-415f-95e8-fb54fc0ca5c4)(label(a))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - efb902d5-fca7-4ea6-811b-8fa5cacf00a6)(content(Whitespace\" \ + 81a329b9-6959-4c57-a1bc-28e8b0c3fb4a)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 4b388e57-61f6-4c4f-8288-28300d5c63be)(content(Whitespace\" \ - \"))))(Tile((id \ - 54988076-8257-438a-800d-614fed5dbf32)(label(-))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape(Concave \ - 2))(sort Exp))))))(shards(0))(children())))(Tile((id \ - 6760425e-a4f8-4974-8ae4-59d7cb943370)(label(g))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - bfb3339a-8286-43fb-9ba1-28b3ccd4f57c)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - c39698c7-0f2e-4bef-a04f-8a39d9a055d0)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - fa356f00-e672-434b-affe-c17ba6a33b8b)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 7816c92f-1592-4df0-b2c9-079260acf77c)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - eb8b1deb-50e1-4a00-b58c-c1203e082d85)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - c244a67e-156c-4a5b-8976-9c33b02945ab)(label(let = \ + a30e6522-9f78-4882-b1ad-75dc1e7f32c5)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 53e865cf-088f-4b2e-9fbd-e075e2df5d0a)(label(let = \ in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - 058e2ec9-8a44-404c-a984-b5e3fc44526a)(content(Whitespace\" \ + c48b083e-6f34-4cbf-9854-095f2cfdc727)(content(Whitespace\" \ \"))))(Tile((id \ - d9a0395f-eb34-47a7-9962-cc212a342bae)(label(f))(mold((out \ + 8e3ecd7c-3578-4625-b437-b161a9f607de)(label(snd))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 700d354d-c0ce-4a53-b12c-cbee7556a60b)(content(Whitespace\" \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 32fe9ade-152f-4ae8-bc7b-b06e8380ee75)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 7ac139c8-5f55-46d0-a0ae-9c2f62aff9ad)(content(Whitespace\" \ + \"))))(Tile((id \ + 654c4c4d-22e9-458d-a9ad-ddec45e8d904)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 8b0c9792-b0b2-4f36-892c-0d2c827f9f6f)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + 1d5ba41b-bc00-4839-adb2-c9c1818fd0e2)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + c518fa0f-1def-4a66-b812-6082f975cdb3)(content(Whitespace\" \ + \"))))(Tile((id \ + 551add9d-1170-43a4-9b4d-f2cca2312ea1)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 859f8371-eb48-47f3-986c-6cd1e8161d2d)(content(Whitespace\" \ + \"))))(Tile((id \ + 32649e4a-6b70-40e3-95eb-8696e9603d14)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 825fb943-14ac-493c-9bf8-b51cecb62565)(content(Whitespace\" \ + \"))))(Tile((id \ + 50c6bf69-cee6-4711-9c42-dfb39d300465)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 74783bd4-94b3-4bf8-affc-2c9a680e6dae)(content(Whitespace\" \ \")))))((Secondary((id \ - c4653559-da72-40fc-a7e7-bcc45abf19cc)(content(Whitespace\" \ + 878c3790-3eab-447d-944f-3f8d7cf517b9)(content(Whitespace\" \ \"))))(Tile((id \ - bd681a2c-d7c4-4483-af87-fc929dd43eda)(label(fun \ + e075a9b3-e42f-4b8f-9caa-3f74d5f26dc9)(label(fun \ ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - 1a9f798b-6df6-4aac-a512-699c4f0e4914)(content(Whitespace\" \ + 35f8400f-3d3c-47f0-80ba-e6eba394437b)(content(Whitespace\" \ + \"))))(Tile((id \ + 2b6ed790-5441-47fd-9de3-0b2004d43ebb)(label(a))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 884e31e2-268f-4197-a5d5-6cd3ff0d9cae)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 3996a27a-1b78-4edf-a78b-b88f838172a4)(content(Whitespace\" \ \"))))(Tile((id \ - 998f8e6f-d099-444b-9c75-891ab31f1768)(label(b))(mold((out \ + fb5869b7-cadb-435d-91da-4eeca3bb51a6)(label(b))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - a5faaaaa-e2f9-46ad-932a-0289bd5b39ec)(content(Whitespace\" \ + b9e837b5-e511-4926-9079-178aa746ea14)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 5c84c891-35bf-4c68-a116-83e16699136f)(content(Whitespace\" \ - \"))))(Tile((id \ - 74466136-5bab-4a17-af60-4e45651ef15c)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - f9708006-883e-4b2d-bb30-c16eceb968dc)(content(Whitespace\" \ - \"))))(Tile((id \ - 5b08b814-e7df-456c-b93f-0612e8ae5e9a)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - cad35cba-3f46-4c8d-8e95-874ac1cbb84f)(content(Whitespace\" \ + 4e597a8d-5ab8-4245-8a24-f89018bba51d)(content(Whitespace\" \ \"))))(Tile((id \ - f130da22-b535-4868-8c28-bb7d6e114694)(label(true))(mold((out \ + d249d76b-ce70-4dfe-a8aa-39e990a016cf)(label(b))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 6e17c3c4-3b95-4524-abd9-64fb1a179665)(content(Whitespace\" \ + 9baee77d-3b32-4c82-8a80-8ff926e8cad6)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 3d264c86-a12c-4dc2-8d06-9bfc92ff1160)(content(Whitespace\" \ - \"))))(Tile((id \ - 53ac5aaa-2c96-4159-a15c-be816540dcf6)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 3fbf338a-1948-42bd-9d25-93b98002a1a8)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 5a6b4ca1-8b45-43e5-88e7-0df7ab9a8291)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 5b9cad15-2118-48bd-8a90-930a1a14fc34)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - cd49f1aa-27da-42f3-8f0f-02f845ca8cd3)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 4b5a4b1a-c654-4b0c-a3d3-53794844fe64)(label(let = \ + d139d7db-c542-4808-9754-fe29615af0cc)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 91c1f159-d8ec-4b42-9554-8f7eec3645c1)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 93c41fa9-fd7c-4eb8-ac2b-26c223fae814)(label(let = \ in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - 2b4ded00-335f-42d5-af7c-3ddfa436f524)(content(Whitespace\" \ + 5ab9a980-fc02-466c-bf85-f1588c67e16f)(content(Whitespace\" \ \"))))(Tile((id \ - 083512d6-17a6-4288-a83a-faea34192510)(label(f))(mold((out \ + cbb313f2-65a1-4a56-9ae3-f7543013e597)(label(not))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - a5916772-9b05-4c21-a6ee-9ecbd54516be)(content(Whitespace\" \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 373ebaef-9184-4126-ad7c-310ba56fd7ed)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 87421879-1770-4477-847e-c666f3b3721c)(content(Whitespace\" \ + \"))))(Tile((id \ + 1ac50117-a28a-4785-a5e2-7ccf83fb1289)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 29b975c2-37bd-470d-a7cb-f519f96b06c3)(content(Whitespace\" \ + \"))))(Tile((id \ + 9f21b9e0-33a8-4ced-a7f5-c26506dab4e2)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 5aace89e-3f79-43b6-b849-29eb2d11a58f)(content(Whitespace\" \ + \"))))(Tile((id \ + f74b95a1-2530-4189-a254-ed4377cdc8b6)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 585b96f7-0352-4199-99ce-e074bc0ef964)(content(Whitespace\" \ \")))))((Secondary((id \ - 666f67e6-24c9-446f-a7ab-38e2c015f9cf)(content(Whitespace\" \ + a0bf1d37-308b-4122-a763-8432fda30f3c)(content(Whitespace\" \ \"))))(Tile((id \ - f0807ef5-df8e-4eb7-9f78-339003a5b8de)(label(fun \ + 929c43f1-69c5-4da4-a439-b2a54da4f26d)(label(fun \ ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - 106fc984-125d-427f-a0b1-acbe77f0ffba)(content(Whitespace\" \ + d233f3e3-8613-4027-993a-6e92f52744eb)(content(Whitespace\" \ \"))))(Tile((id \ - a049e806-20c5-4b1d-a099-7755a9097b7c)(label(b))(mold((out \ + 3e5130f4-02d5-49d9-acf1-9d560892db18)(label(b))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 43a50e94-546c-4d1a-8dd8-c5b597a73727)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - a2958e5b-2da8-4f25-903f-220583955a32)(shape \ - Convex)))(Secondary((id \ - 2a78f83f-11c1-488f-8e1b-81f27b9d6a73)(content(Whitespace\" \ - \"))))(Secondary((id \ - e24760a0-00f4-411c-bd9e-6ddaafdfa45e)(content(Whitespace\" \ - \"))))(Secondary((id \ - cea3d12d-01b1-4cde-8fab-0249d492ab91)(content(Whitespace\" \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + ffbd8c3b-834b-4976-be9b-71d8c4c2b6a4)(content(Whitespace\" \ \")))))))))(Secondary((id \ - b1651b66-ecf9-40e2-87b6-1467f19c6199)(content(Whitespace\" \ + 1ab8a6a7-305b-4b86-81fa-dd0aba53852d)(content(Whitespace\" \ \"))))(Tile((id \ - 76e9f1a4-edd2-4dcc-ab7d-bb5ce3daa033)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 29b18195-9677-4596-a89c-b9fc61267425)(content(Whitespace\" \ - \"))))(Tile((id \ - 43ab9ff3-2fac-440f-ba6f-67cde6a259fd)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - f48bf544-6b5f-45c8-a4b4-2d2b8b8d62c4)(content(Whitespace\" \ - \"))))(Tile((id \ - c73a3100-a782-46b9-a401-3194788d3ab9)(label(true))(mold((out \ + 633120a3-53ad-45b6-8fb1-9f0c0f7a120c)(label(!))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 5))(sort Exp))))))(shards(0))(children())))(Tile((id \ + 757f08ed-6371-4a6a-8c20-cd3934b988c6)(label(b))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 1755c477-85d2-427c-8240-a91649c21dfa)(content(Whitespace\" \ + 779b5111-f12a-4af6-9b22-1152b324ff50)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 77a083d4-1e8d-46a3-9844-c2a929afae23)(content(Whitespace\" \ + ed9a3862-4b74-4429-aff8-1eb1e496cfe1)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + bf3a8a31-7ae4-43ea-a84e-036d2e7f0e95)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + bcd2a646-6669-4f3f-91a5-3044af72fb74)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + a5887c43-d76f-4fef-aad1-ac72d202d1f5)(content(Whitespace\" \ \"))))(Tile((id \ - a40bdf1f-e175-48aa-b34f-c6c3c2ac61d9)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - a08d599a-5b8d-4b5d-8f5f-8a28646b9e01)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - a7b66a4e-4c88-4a7d-b325-1ef561c8945d)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 506b50ea-1e13-4309-83ed-9e2646874c49)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 08da3a5e-3737-4e5e-9fb3-9b18d8142310)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - d0c3bbff-de90-4c18-bc64-f06637a0c534)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - bd3ce62f-26d4-4583-895c-b1703388b2b2)(content(Whitespace\" \ - \"))))(Tile((id \ - 98686f54-7a2c-4951-b59d-48a861d27aab)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 7d9fa3db-ad61-4696-9c7e-9b897a1bf2b3)(content(Whitespace\" \ - \")))))((Secondary((id \ - c3afe279-39cc-4c43-9185-e19ce5ba31ff)(content(Whitespace\" \ - \"))))(Tile((id \ - 5965539f-7948-4f36-9160-aa18475144e3)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - d7403374-174d-4a55-a4bd-423d6c907a22)(content(Whitespace\" \ - \"))))(Tile((id \ - 9f58bd61-2540-4de4-877a-275ea138c657)(label(b))(mold((out \ + 3f6734d7-ca81-416f-93de-1e2883986126)(label(bool_eq))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 84123ab9-18d0-44aa-98a8-08f1eb3c0b42)(label(:))(mold((out \ + e9bcc2b7-bef4-4929-bb47-99d0d778d43c)(label(:))(mold((out \ Pat)(in_())(nibs(((shape(Concave 11))(sort \ Pat))((shape(Concave 11))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 6134bd22-8950-4612-a5a7-5fff5a16abed)(content(Whitespace\" \ + b08ecc93-708d-44ec-9c62-e9b86f453b93)(content(Whitespace\" \ \"))))(Tile((id \ - 9a1a6bd7-feb2-4476-9be1-81af953c33da)(label(Bool))(mold((out \ + 8c6293d7-3afe-4f32-90e1-37ee8b59fde3)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 8d8eea1f-fd73-4d2d-ac06-fe650802284e)(label(Bool))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - a2a9a9ad-3751-4443-b863-9075a213e282)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 7dd4efd1-b246-4cef-a279-e45029f3f048)(content(Whitespace\" \ - \"))))(Tile((id \ - 50d4bc14-0110-47f1-9ff3-9173fb4c799f)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 1cbbf7f7-82f6-4d5f-8af4-694afddaa340)(content(Whitespace\" \ - \"))))(Tile((id \ - 07740340-432f-404b-a4b4-58c849178faa)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 2f0a5a7a-2a8a-442a-9b42-bb29ace672ba)(content(Whitespace\" \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + 41e6ea59-d87d-4c30-95b4-8afede7b789f)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 32a4e8fd-f5c3-4c11-8f3e-07c0108cb8c5)(content(Whitespace\" \ \"))))(Tile((id \ - 8cfe83fb-95ca-430d-b614-7ad6a1f060fd)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - c49a3f96-09b3-4c92-9d9a-4e0e129bfd4d)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - ccc17a8b-20f6-41ca-aced-8ab1e37b51af)(content(Whitespace\" \ + b50b2547-1ab8-4507-9a7a-e22bdd2b4007)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 9238f71b-2bb9-4039-8155-f29b06235c87)(content(Whitespace\" \ \"))))(Tile((id \ - 9d4cca74-c8be-47b6-aab7-db4a81519644)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - b0b5f605-6c2a-4163-91af-2db67039b026)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - a52dcc6a-5f33-438c-bfa5-f5065c49dd3a)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 823c2d05-bfca-456f-8ea7-3dc327249035)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 6ef23420-91b3-4e62-a6ad-acc727256268)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 812d4f83-80f9-419a-862b-7fbcd5ca14ce)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 74ec9114-7deb-4131-95fa-ef6596f0727f)(content(Whitespace\" \ + 2473afa8-1208-4a48-92e3-8b9572edb017)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 6767cf0c-e026-4142-ae1c-b7ce2a849242)(content(Whitespace\" \ \"))))(Tile((id \ - 9a1e62b2-f5a8-44d6-be05-e543aa063c03)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - f8d525db-5cf3-454e-93f4-dd805dbfece7)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - fe35e44b-a3d8-4d9f-b052-d95ce9dff21c)(shape \ - Convex)))(Secondary((id \ - 68211388-5a88-4811-959f-947ab63a5bcd)(content(Whitespace\" \ - \"))))(Secondary((id \ - 3a3a303f-be27-4df1-9b21-86efdcb6ec46)(content(Whitespace\" \ - \"))))(Secondary((id \ - 442407b8-023a-4380-ba34-3a9d13d031a0)(content(Whitespace\" \ + 0cb4cba9-a313-4a33-b65d-bf3ef6d3432f)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 44ae77b8-4e99-47db-b56b-9a9636b413a9)(content(Whitespace\" \ \")))))((Secondary((id \ - 0fc60cb0-46de-4545-a2fb-4282bd97be44)(content(Whitespace\" \ - \"))))(Tile((id \ - d0c96440-b4ab-4e5f-b547-568097937dcb)(label(fun \ + 5791d9e1-eef9-4aae-b59d-6f17bb949c86)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 1662776f-e74d-44ff-a4be-fe68e83022ea)(label(fun \ ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - fde88b1c-69da-461c-9b0d-6c47f1a9ed6d)(content(Whitespace\" \ + 0f2d796d-7bdf-4c95-a8bd-b7f0eb9c44ee)(content(Whitespace\" \ + \"))))(Tile((id \ + 7a212aab-fbea-44c3-b464-1817b275a124)(label(a))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + bfc030a7-3cd3-4717-a5f7-d7236f33bb54)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 69d2b5e2-da93-49b5-93a4-16aaae8aa693)(content(Whitespace\" \ \"))))(Tile((id \ - 32ff1b3a-0010-4190-9ff8-18086ad6e5d8)(label(b))(mold((out \ + 6e452a2f-e8d1-414c-b7a5-98c1e1de1b73)(label(b))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 10d76632-a4a7-4622-8872-8c5886c49e42)(content(Whitespace\" \ + 7633c066-f2b8-43d1-b74a-feba7cfc6f7d)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 1e546a71-cd49-4ebd-aff1-dd6d1aa7c4a0)(content(Whitespace\" \ + 18ac33db-575e-40b0-8304-3a39e782926d)(content(Whitespace\" \ \"))))(Tile((id \ - 808bf4f2-1a68-415e-b997-01ff2037d799)(label(b))(mold((out \ + dcc5a3a9-1105-44e2-9ad8-e253e81a172c)(label(a))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 05c7644a-7a22-4c20-a812-1fd5b8e02005)(content(Whitespace\" \ + 582cb67d-63c9-47e6-ac18-c40433ce0401)(content(Whitespace\" \ \"))))(Tile((id \ - 5e74bd2d-8a05-4ebf-aee6-6fb3ec824145)(label(&&))(mold((out \ + 6d0dffdb-e285-421c-b8be-56ef0420f6e2)(label(&&))(mold((out \ Exp)(in_())(nibs(((shape(Concave 9))(sort \ Exp))((shape(Concave 9))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - ec28d888-794d-4201-abda-94b6e3f1bbdf)(content(Whitespace\" \ + 0507ab3b-7b05-471e-a54f-5b3c9e461593)(content(Whitespace\" \ \"))))(Tile((id \ - 3ef7de3a-2a14-4188-a55f-51527113ef74)(label(true))(mold((out \ + 36f257af-744e-4579-93c4-be677d1fc661)(label(b))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 9a6d019d-7e68-4607-acda-eba022cdc741)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 5aa34837-e964-4ba3-a34c-ad5fd015a710)(content(Whitespace\" \ + 6b218afa-517d-45a9-b4a7-61ec0e2dc978)(content(Whitespace\" \ \"))))(Tile((id \ - 7632724e-1f20-4d15-ba4e-e01b565bbf4f)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 002d2fdb-a677-4f81-9c2e-1867a5407bbb)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 62820ee1-7863-4a17-90f8-e04dad881c64)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 4dfb1076-524e-4527-9a36-4f2b33913898)(label(\";\"))(mold((out \ + ac1094ab-974f-4fa9-9c86-1dd5b3e26418)(label(\"\\\\/\"))(mold((out \ Exp)(in_())(nibs(((shape(Concave 10))(sort \ Exp))((shape(Concave 10))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - ea549dfd-7437-4aa5-83fc-c59393a44e84)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 3ac5d13b-c645-4a2d-8500-f753ba61e239)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 3772fc52-5d80-49a9-a915-10132f4413a7)(content(Whitespace\" \ - \"))))(Tile((id \ - 88657220-85e6-4449-91d5-4b282ca9468a)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 753a4301-8388-45c4-bd4e-626eeac2f55f)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 30afec45-3066-4a0f-817b-4f99697585e3)(shape \ - Convex)))(Secondary((id \ - e534716b-c249-4bc8-8bdc-c492a72acf60)(content(Whitespace\" \ - \"))))(Secondary((id \ - bf464cbe-a15c-4dc8-9376-f14dafd49ee5)(content(Whitespace\" \ - \"))))(Secondary((id \ - 00da0773-8c3b-44a0-93ee-552d6d00d643)(content(Whitespace\" \ - \")))))((Secondary((id \ - ff437f2e-8a76-4186-857b-56cc23c8cf53)(content(Whitespace\" \ - \"))))(Tile((id \ - 28ba42f0-050b-43dc-a8f4-918c72fa935a)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 868be89d-7e08-463c-8dcb-33e6c8f69e94)(content(Whitespace\" \ - \"))))(Tile((id \ - e7c53b17-975b-4397-b6bb-7f4811d6db82)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - d163d4ea-0f31-47a1-aec4-8ae8015d8b51)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - afab5ad9-7a2b-423d-b78a-79c436c4cbec)(shape \ - Convex)))(Secondary((id \ - daa148af-3377-4878-bc2c-d694b57ffbe3)(content(Whitespace\" \ - \"))))(Secondary((id \ - 090d5f42-f40d-40b3-8852-e3df2288f312)(content(Whitespace\" \ - \"))))(Secondary((id \ - 7de52110-c900-4a11-ba4e-037c4505322b)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 3ea7ec25-bb44-4ba0-a941-ec8f0e78e32b)(content(Whitespace\" \ + 039621a8-81b5-4703-a448-080e792725f3)(content(Whitespace\" \ \"))))(Tile((id \ - 9ccb96b2-2464-4556-9643-4c8f617f7308)(label(b))(mold((out \ + fe26fd73-664b-4ecd-b3f0-935280769dee)(label(!))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 5))(sort Exp))))))(shards(0))(children())))(Tile((id \ + 2ab7cc85-7e28-4de8-b281-98759d38b23a)(label(a))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - b961beb3-fa7b-4fd9-b91c-239f69cbcfc7)(content(Whitespace\" \ + 959a1719-8596-4a17-91f6-44d6ae9b6264)(content(Whitespace\" \ \"))))(Tile((id \ - 93a136c6-b09d-4b15-8b00-d4f06bb96300)(label(&&))(mold((out \ + 9ece2286-23c3-47e7-86f3-2e9d82af074e)(label(&&))(mold((out \ Exp)(in_())(nibs(((shape(Concave 9))(sort \ Exp))((shape(Concave 9))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - fb29a56a-0ef8-4287-bdfb-8b44145f44f5)(content(Whitespace\" \ + 8e421e04-da3e-4d96-9ac7-73c1b5ef94b4)(content(Whitespace\" \ \"))))(Tile((id \ - 88f0e812-40f5-411c-8a59-835cd8fbc13d)(label(true))(mold((out \ + 09c0ca0e-544e-45d2-bcfe-95d354e344b9)(label(!))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 5))(sort Exp))))))(shards(0))(children())))(Tile((id \ + 4dda9881-1f79-4515-8e7d-7204765d5a02)(label(b))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 28d36d6d-a119-43bb-8d70-6906b2dae317)(content(Whitespace\" \ + 21fceda9-8b39-4612-a236-371cda060c2e)(content(Whitespace\" \ \")))))))))(Secondary((id \ - f599939a-5936-40bb-89ba-7d21ec9a5f63)(content(Whitespace\" \ - \"))))(Tile((id \ - 97f492eb-a350-479a-a781-5a08d6abe259)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - aaf0812f-7972-41b6-8eac-ef5929e5c3f8)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 34eaa419-274e-4ff5-bfd0-cce8e39cde76)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - d9380579-9c65-4d68-96bf-3abf614f7fe1)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 5caf86f9-67c6-400a-a3ec-80666f040bce)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - ae9cf20e-e9fd-4972-8cd6-17fe70d28f57)(label(let = \ + e75e363f-e9e7-4b97-9e66-2b5a71b255e7)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 5cc16cc8-6548-4294-bf1c-3b2e63113a6b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 31243b1c-af58-42a4-a62a-e61b710f8d7a)(label(let = \ in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - c7ff1ba0-287d-4225-9e45-8c57f590f6ff)(content(Whitespace\" \ + 1e25bb60-07ea-4673-b94c-11fb1de948e6)(content(Whitespace\" \ \"))))(Tile((id \ - 80f77759-243b-4ab5-937f-081e5b14ffc4)(label(f))(mold((out \ + 9143f3c1-4fc0-44e0-91c0-679357a8bb04)(label(List.cons))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 5a385233-70ca-472f-9efa-868afa2fa920)(label(:))(mold((out \ + d4a3a71f-b21b-4bf3-8b8a-6293e1dd2041)(label(:))(mold((out \ Pat)(in_())(nibs(((shape(Concave 11))(sort \ Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 6796dd02-e021-4bf4-9af1-a07ef4b1bc74)(shape \ - Convex)))(Secondary((id \ - d110d938-d497-4c04-8e89-066a813de449)(content(Whitespace\" \ - \"))))(Secondary((id \ - ffe2143a-7389-4770-a4ba-5b0979fbb22a)(content(Whitespace\" \ - \"))))(Secondary((id \ - 06d75ddd-e9dd-4ea4-85a0-9cb33d5e406a)(content(Whitespace\" \ - \")))))((Secondary((id \ - 834a19b1-916e-4db0-8d77-b31479e219cb)(content(Whitespace\" \ + Typ))))))(shards(0))(children())))(Secondary((id \ + c9bc207b-3a0b-4b2d-b895-3c6bdbe915d4)(content(Whitespace\" \ + \"))))(Tile((id \ + 43e1aa0b-b604-43ec-a4c9-4b1d4af707dc)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + b8b17b18-3afb-47ba-9fe0-01aa2394b392)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + a56d2bb1-c28f-461c-88a4-4c747ed114d9)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 262cbb77-d24f-49b2-95bf-53cecb7c52cb)(content(Whitespace\" \ + \"))))(Tile((id 3af59bf8-0f8b-49cc-b543-4bfb5a7d9183)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 51e86403-4ce8-44dc-846a-90d5cc671cd8)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 26559337-02b0-4518-94a5-5e9c149328c1)(content(Whitespace\" \ \"))))(Tile((id \ - ca32f0d3-79d9-45cb-baab-9a1a818bc52b)(label(fun \ + 038d887b-f941-4b91-b617-d2bc154cad00)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 4c74cea0-ac35-4d95-a5f4-9a5c68309a56)(content(Whitespace\" \ + \"))))(Tile((id 7139390a-3e84-4afe-b50c-52fbb45974b3)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 46408a38-7d7b-4ffb-a5e9-abd7c07cebaa)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + b5ee59cd-942b-4d4a-ba19-a5f2dcee793f)(content(Whitespace\" \ + \")))))((Secondary((id \ + a655c56b-af4e-47de-8581-ab6b83c57c96)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 0ec0028b-1163-4344-ac57-155640fa50e3)(label(fun \ ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - 49378f89-aa16-44d9-aa6f-6e528ad367ca)(content(Whitespace\" \ + 08138937-6009-4e02-ab10-048bbc871f8d)(content(Whitespace\" \ \"))))(Tile((id \ - c2dcb59b-085d-422b-b984-96edb2fe98fa)(label(b))(mold((out \ + 671e37de-dde2-4e89-817c-06f12d8ba270)(label(x))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - dcbe313a-40c0-4155-89fd-6582504c3f81)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - a1b7d325-6d0e-4afd-a524-d1f2f5e082c0)(content(Whitespace\" \ + 826d9bec-4313-4569-a786-fc8f2e445301)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 3d411bdd-06fa-4dba-90c0-1073c633e1c4)(content(Whitespace\" \ \"))))(Tile((id \ - 1dd3c27d-ad8a-4b97-ae84-4a00f750be6b)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 0d8bce72-a5c2-4493-9f8f-b9befeb6d851)(content(Whitespace\" \ + 70c756bb-cb03-48f0-9ace-9c3a26bb1ff8)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + a7f4c4d7-a29f-4c7c-bf6f-45460e7bc6de)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 226181f6-33c1-4475-a7eb-8e4b6d096408)(content(Whitespace\" \ + 04da55b7-3cc4-48f4-88c7-1bc0b6b922ee)(content(Whitespace\" \ \"))))(Tile((id \ - d28519f5-0922-4439-9fa1-c5f0c3ebf346)(label(b))(mold((out \ + ad95dab3-1152-4aed-a225-4fa18b15dbd8)(label(x))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - a1755b32-1b4d-41c7-9f1a-42c71e180ab9)(content(Whitespace\" \ - \"))))(Tile((id \ - e70a5d41-2a81-4b8b-9529-15ada2e2d985)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - a4d0485e-9be2-448b-b811-10012453597e)(content(Whitespace\" \ - \"))))(Tile((id \ - 6c05f4c4-ced6-4bac-a9c1-ff0cca03b949)(label(true))(mold((out \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + a40fb467-9511-427f-a312-fa6062722350)(label(::))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 6))(sort \ + Exp))((shape(Concave 6))(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 823dc370-9854-4fff-8583-1ecf1c54f1bc)(label(xs))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 2052fc4c-45d1-4ebb-bb45-fc58fe231e86)(content(Whitespace\" \ + c7a9f152-23ff-40f2-8a41-0b9770873e4b)(content(Whitespace\" \ \")))))))))(Secondary((id \ - c69713d2-f7da-4b5c-b8e7-8e34eaa355bb)(content(Whitespace\" \ - \"))))(Tile((id \ - bcc0d062-fadd-427a-bbbf-393d2c1453a5)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 73554d67-a033-432c-8893-95c4a1107285)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - f9277e54-1eea-447a-94a2-c46212addbd5)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 1d784b8e-e8e1-4428-9fbd-841578540e06)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - f6e71659-ddb6-407c-a44c-fa8ac8b1a95f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - bf419f2f-1813-4df4-8df1-06b6521e381b)(label(let = \ + 53c942b2-c5cb-4706-aa12-f38bd3f46fdc)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + f35a71a7-d66f-4711-b4c7-f724bcccd899)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + b7d29bed-8e23-447e-af79-6af67f2da443)(label(let = \ in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - 8a12e1d1-a399-476e-9f36-f029c3da0076)(content(Whitespace\" \ + 444e2e28-5cca-490e-9ce0-1137e97763de)(content(Whitespace\" \ \"))))(Tile((id \ - ba5af55f-56ba-4c36-b8b2-4763bd1f8403)(label(f))(mold((out \ + 9e7f7476-5660-46d8-974d-e320e0afe6d4)(label(List.length))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 231d72bf-ffa0-407e-9a80-dac8576384aa)(label(:))(mold((out \ + c22f1c5f-005d-45db-9e78-9081a6e2c0a4)(label(:))(mold((out \ Pat)(in_())(nibs(((shape(Concave 11))(sort \ Pat))((shape(Concave 11))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 6349b04a-89c5-48bc-828b-601385c813ec)(content(Whitespace\" \ - \"))))(Secondary((id \ - 300af8fe-da24-4862-a697-9fda2ccd15ac)(content(Whitespace\" \ - \"))))(Grout((id 2e1cb501-4636-43ae-a721-3b06106ca7f8)(shape \ - Convex)))(Tile((id \ - 7a863ad1-643f-4ace-abcc-4625e9ea7713)(label(->))(mold((out \ + c81a994b-73f4-4de5-8919-3d555b5bf83d)(content(Whitespace\" \ + \"))))(Tile((id 8dd45aa5-7b28-4fdd-97ac-0f24b263a70b)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + f1c00681-abf7-4de4-856b-e2bc95c5c757)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + cc6f939a-9b51-4912-8ed0-d16f1b210557)(content(Whitespace\" \ + \"))))(Tile((id \ + 7a384e5c-5b46-4812-9e8b-6333781ce9d3)(label(->))(mold((out \ Typ)(in_())(nibs(((shape(Concave 6))(sort \ Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 325d83b9-7bd5-4d03-b996-98219a52d07f)(shape \ - Convex)))(Secondary((id \ - 914121e7-476e-4557-9696-e8d677b591cc)(content(Whitespace\" \ - \"))))(Secondary((id \ - 08d4b228-9a88-4fcf-86dd-7581a05b4207)(content(Whitespace\" \ - \"))))(Secondary((id \ - 1662f538-d638-42d6-b647-bf9ae68bb3d1)(content(Whitespace\" \ - \")))))((Secondary((id \ - a5131d05-9af9-48d2-8776-4301cee7e196)(content(Whitespace\" \ + Typ))))))(shards(0))(children())))(Secondary((id \ + f9ac648a-e088-43b4-8059-d087bfe5c5db)(content(Whitespace\" \ \"))))(Tile((id \ - b1ebce05-efb6-4e07-9255-dcf4b9632bc3)(label(fun \ + afdaf3c7-485f-41b5-afb1-95f6343540dc)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 374f6b8c-01c6-4fcd-b612-83b73605525b)(content(Whitespace\" \ + \")))))((Secondary((id \ + 9a19384c-bae9-4943-b0c9-583bcf61afec)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 34f8caa2-033e-4466-93f6-5cdfd1b0aa76)(label(fun \ ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - ee33ac9f-1e5c-499f-b988-c68f182700f8)(content(Whitespace\" \ + f8df0570-a34b-4f2e-afa3-8b6f4b0d7935)(content(Whitespace\" \ \"))))(Tile((id \ - 7b683cf1-7c30-4818-86e1-ad0102609037)(label(b))(mold((out \ + 40945809-a296-4a8c-b824-1316690e2b75)(label(xs))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 7aee4283-eb8d-42f5-bc32-d407f9d046a0)(content(Whitespace\" \ + 34bc1a58-87e7-4252-b07d-0ee6789d1263)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 6ac93f7c-968d-4bb9-8148-f892ae614c3a)(content(Whitespace\" \ + 9273474a-86de-4b9e-a095-d8f671d7acd3)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 76b831a0-3d15-43d4-97dd-ef7fdf233a02)(label(case \ + end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 9fdab8f1-3efb-4a0c-bb8f-7d0add5b7713)(content(Whitespace\" \ \"))))(Tile((id \ - 04ec40c2-edc6-40e1-ac4d-f1a949691806)(label(b))(mold((out \ + cfec27a0-5326-4678-832b-9d8e3dd00456)(label(xs))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 3b678b8d-211a-4fa1-9344-729b448d82bb)(content(Whitespace\" \ + ad2d2a7e-1ac9-4bd5-8d23-7af3d34d6a5a)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 679238c1-9371-4a03-a38b-cea6ef92203c)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 9ddeb6de-9a77-44ee-ade3-d3acb4ce9ced)(content(Whitespace\" \ \"))))(Tile((id \ - 32608e0e-8fe8-4d33-9b37-28e22c243df5)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - a73619dd-e865-4ce1-b758-395688fb1c65)(content(Whitespace\" \ + f29c28f2-65ff-4d54-bb11-f8d860da0baa)(label([]))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 734df686-47f6-4a1d-81b9-824f812a9b73)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + b73a3ef4-5b6c-4bce-83f3-292a5f485e03)(content(Whitespace\" \ \"))))(Tile((id \ - 12a9a007-8459-4b89-83f8-b0786a30babb)(label(true))(mold((out \ + d0136646-b23c-444d-8c61-520157f6caaa)(label(0))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - f1feb2dc-1c4e-4ccd-a46d-9c44fae706bd)(content(Whitespace\" \ + 24889d79-bf5f-4774-9eb7-c17f7d701fc8)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 9fab4541-0aaf-4543-a699-243be6a4efaa)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 4a131833-7714-497a-9d8a-485733701262)(content(Whitespace\" \ + \"))))(Tile((id \ + 971514db-1314-4b2c-b487-06e9251fb814)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + ffe3509f-3910-49af-9d2b-1ef2d838b966)(label(::))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 6))(sort \ + Pat))((shape(Concave 6))(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 3b0a3800-1836-4416-b7f7-fe53e2b4f7c4)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + af97214a-f485-4642-9e38-11b514524f1f)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 377b7b06-2219-44a3-a15a-40eefb2e4132)(content(Whitespace\" \ + a9c3d333-4231-4afa-b8a8-988b1d4aa57a)(content(Whitespace\" \ + \"))))(Tile((id \ + ac06fcfc-b8e7-4f4d-b601-2dd1f75d361a)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 9a28bb4a-0a24-434c-8ebd-6a419f5fed9d)(content(Whitespace\" \ \"))))(Tile((id \ - 37969eef-8b95-4739-b8da-f41e471ccfa9)(label(f))(mold((out \ + ceea47bf-d47d-4f1e-a10c-9bec57c84faf)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + cd62b12b-b66b-4531-9950-1533a35c154e)(content(Whitespace\" \ + \"))))(Tile((id \ + d5cca81c-95a2-4941-9ca5-bc3a9ea098a7)(label(List.length))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 596e83c1-9c00-4fdb-b68d-f9384c7b1110)(label(\"(\"\")\"))(mold((out \ + a07ebfc7-0e38-4e9a-a248-3b01f9623158)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 555b22e7-eb09-4585-977e-99fc324f2db5)(label(true))(mold((out \ + ae618a85-d30b-4b51-bf3d-d6890a3b1c2b)(label(xs))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 9982abb7-950a-4217-be18-20263b12066e)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - b8d5affd-d5a7-464e-a101-458fc8ccbb34)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 52c76936-5dc6-4266-9f1c-50728358a6b0)(label(let = \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 780906b7-dda6-425e-a657-472454dc7f65)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + aed22f3a-8385-4dd0-9eab-99748e95bcec)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 6912cd9a-38e4-49f6-a892-d79d5d9e31cc)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + eb61fb39-76b8-4d06-9e87-e6200022063a)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + b40b3962-4218-48fe-8f35-381417b44a89)(label(let = \ in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - fa9b46a1-4671-445e-ba93-4daf9b41dccd)(content(Whitespace\" \ + 1a9c7647-4594-4da0-80f8-90785efb1abf)(content(Whitespace\" \ \"))))(Tile((id \ - 13fcf121-d1c9-4733-a645-16917683156e)(label(f))(mold((out \ + 35fa88d0-faf0-4a47-bd64-e0cd3780668d)(label(List.hd))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 3e666899-520e-4d5f-a5b9-741b23fac52f)(label(:))(mold((out \ + 0eec4d86-bf61-427a-816d-c70de4ac6bc4)(label(:))(mold((out \ Pat)(in_())(nibs(((shape(Concave 11))(sort \ Pat))((shape(Concave 11))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - e3916692-423e-42e8-aad0-992b23ba6401)(content(Whitespace\" \ - \"))))(Secondary((id \ - 60a5d2b6-b776-416d-a27a-1f38435c44aa)(content(Whitespace\" \ - \"))))(Grout((id 97f80bde-4e54-4773-bfdd-e1e39bb02e30)(shape \ - Convex)))(Tile((id \ - bdd84f49-6015-422b-bf6b-aa51b66be74e)(label(->))(mold((out \ + 6955f7aa-6307-4884-8e09-df161232da7d)(content(Whitespace\" \ + \"))))(Tile((id ec0e80a0-0e82-4f29-978b-f7a40a840cf9)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 6974b8f4-4e6d-48fc-8d75-423cc4f01e0b)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + e0411a0d-e686-4cc2-898f-2f783a483404)(content(Whitespace\" \ + \"))))(Tile((id \ + dc86e143-37ae-4223-9d35-cad3e143c3ed)(label(->))(mold((out \ Typ)(in_())(nibs(((shape(Concave 6))(sort \ Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 53bd85d3-c103-4f9b-8770-a8581176c6ab)(shape \ - Convex)))(Secondary((id \ - 8aef858f-e556-4ad7-b733-17fb07da11f8)(content(Whitespace\" \ - \"))))(Secondary((id \ - 8a80e9ca-c622-425c-9f32-5fe40508e4dc)(content(Whitespace\" \ - \"))))(Secondary((id \ - 959b2dfc-eb6f-4f46-a02d-7fc57321f8c2)(content(Whitespace\" \ - \")))))((Secondary((id \ - 7db316a0-00d5-41f6-a15b-121345f0a3c8)(content(Whitespace\" \ + Typ))))))(shards(0))(children())))(Secondary((id \ + a61a659b-59d7-42be-80eb-521effc64699)(content(Whitespace\" \ \"))))(Tile((id \ - 430e3009-1f1e-4cba-9ad0-67bf501c5d45)(label(fun \ + ada11fe8-18e4-4e08-a9ed-67efae983117)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 7967af55-56e8-4d88-9c5e-c8e0254576e4)(content(Whitespace\" \ + \")))))((Secondary((id \ + 37829ac9-d1ed-41a2-948d-1aeaa35655d0)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 5133266a-b7a5-41df-b4e4-e18e421985ab)(label(fun \ ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - cb8887aa-ab8c-4ae3-9ad8-1bfce8b545b8)(content(Whitespace\" \ + 15cef23d-073a-4dab-9ccc-4857790fbce7)(content(Whitespace\" \ \"))))(Tile((id \ - be8254b4-1db5-41d9-a1d0-024dc2fe54aa)(label(b))(mold((out \ + 110991a2-3053-44d0-acd3-18d449c3ef75)(label(l))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 282800ed-cac0-47b3-83ef-ab6843b4ce6d)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 4bd0c0a8-1496-4877-9cb1-f2b5a1ad6f8c)(shape \ - Convex)))(Secondary((id \ - be99f047-d20f-4b32-8c3b-95ae257327d7)(content(Whitespace\" \ - \"))))(Secondary((id \ - 731bf1cb-a888-486e-a008-52cb805d53c4)(content(Whitespace\" \ - \"))))(Secondary((id \ - d734de9f-b9f4-4799-ba57-85b7bd56763d)(content(Whitespace\" \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 7d274c8b-1e9a-42d0-9dc3-32cb69dee1fb)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 76fe1a22-4d7d-4da9-b93c-723622eb8f52)(content(Whitespace\" \ + 1eb1e15e-f068-47df-8b9d-943be5222edd)(content(Whitespace\" \ + \"))))(Secondary((id \ + 581c325e-a97c-4257-97e7-7ec2e66a7e1f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d34a01be-e9e4-4c63-b421-03a1dbd0dbd4)(label(case \ + end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + eeb93769-5fb9-49d1-b185-dfd7c75cb15a)(content(Whitespace\" \ \"))))(Tile((id \ - db29a378-12ba-4014-88e2-7b1e8788bc21)(label(b))(mold((out \ + 594fa46c-8212-47ff-8b40-e232bfa94a3e)(label(l))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 4e0e88ad-62f0-4f4d-8187-54829cbd9d3a)(content(Whitespace\" \ + 348ff84d-4962-4c44-994b-25c236a7e523)(content(Whitespace\" \ + \"))))(Secondary((id \ + 3d89d8be-16bc-4d13-bb8b-67cfcdaa55f6)(content(Whitespace\" \ + \"))))(Secondary((id \ + fd657340-c3e2-44aa-8626-a2fa751128f8)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 3b1bfda4-8383-40c6-a8f0-9c191d9fca1c)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 9aa855a4-28b8-44d3-a3bc-cace1c811321)(content(Whitespace\" \ \"))))(Tile((id \ - 6b0463f0-e659-45d3-8a5d-478d3eafa552)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 0e2b6a75-5330-4cef-bdf3-c4daba073b70)(content(Whitespace\" \ + e55a0d47-92cd-431a-91a5-5f8b104375f7)(label([]))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 0a44d2a5-7967-4dab-8a4f-c67c0d9ff1ef)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + c7e57da5-32a1-4f7b-a443-9f4a51d0f933)(content(Whitespace\" \ \"))))(Tile((id \ - 690f42b0-20c0-41c2-bc14-21afc8e55342)(label(true))(mold((out \ + a357a904-0252-4c7b-bfa2-2c5a56d91d1a)(label(?))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 07ed1101-e100-4f00-bcb1-351cdb727daf)(content(Whitespace\" \ + 99d8a19c-7c13-4ba4-b37b-1342689cc21b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 3162c741-24d3-42a7-bfe4-742836c8ff82)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 646996de-4049-4363-8d74-66e89054a90a)(content(Whitespace\" \ + \"))))(Tile((id \ + b0302f15-6803-44d3-aa0e-ba4f5685c6dd)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 6cc9fc85-34a5-4665-9fd6-6ce13407e617)(label(::))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 6))(sort \ + Pat))((shape(Concave 6))(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 1cb8ede7-d6f7-4d23-8bc4-5d385a934066)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + e6810ab4-2300-4191-a473-dd105ea676c3)(content(Whitespace\" \ \")))))))))(Secondary((id \ - df7bc075-fd66-4d14-9888-c27d2372de72)(content(Whitespace\" \ + 37c6fbb4-aa73-4dd1-b143-56c7185d1e69)(content(Whitespace\" \ \"))))(Tile((id \ - e2909eca-2597-49d2-9b20-eda5cb3bc6f1)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - d4f0cc4a-52bb-43f0-a22d-c5caa759a828)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 2c0ca6fb-edaf-4087-b530-75f284dce06d)(label(true))(mold((out \ + 2ce79956-8a2e-4b0e-b2aa-3f1e1014d392)(label(x))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - b03435cc-9239-4a01-9877-8cf2ddbb304f)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - b82930a2-7541-4e3d-9d48-14b74043814d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - f764d69c-d357-4aaa-b10b-80245fe61511)(label(let = \ + Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 9acd3b07-1253-4f13-b18a-7c2c48a65d28)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 2e7c2757-b3f9-4bb6-8b21-024ded70554b)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 0940fcf6-9583-40d2-ba8d-57e77b9bd093)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 45d68866-ea93-48fb-b91f-f21a2881e5cb)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + fc43e809-ba4b-47a3-ae3e-04c7bbc69cdd)(label(let = \ in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - e021a7bf-f9fd-49fb-9050-226e8b78077d)(content(Whitespace\" \ + 9d13f258-2ff7-42e5-8fea-4f712b1a5cbf)(content(Whitespace\" \ \"))))(Tile((id \ - b4b3dc4f-bcdc-4b56-b1c8-04580c305741)(label(f))(mold((out \ + 31ce9b90-36bc-4cc4-b3b7-b81796325b8c)(label(List.tl))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - ee00a4a4-6dd7-404b-8403-b041de299a00)(label(:))(mold((out \ + 9518b6e1-bde2-4a20-ac2d-f0058066213d)(label(:))(mold((out \ Pat)(in_())(nibs(((shape(Concave 11))(sort \ Pat))((shape(Concave 11))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 6ee4d23b-cbb3-4c17-9faf-8ac1a858a5e9)(content(Whitespace\" \ - \"))))(Secondary((id \ - 222a12ea-0006-4a36-9e2b-701e74fc101a)(content(Whitespace\" \ - \"))))(Grout((id bfea8648-7604-4e2c-a04c-b701e0bfa12a)(shape \ - Convex)))(Tile((id \ - 3406101e-5b28-4a55-a3ad-b2d2e05fa239)(label(->))(mold((out \ + b240f01a-8813-425d-bbad-a893ea6977e7)(content(Whitespace\" \ + \"))))(Tile((id 79fe510b-dac8-429c-b905-ff1a85f2ee02)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 57654b4d-2cd3-4d2c-b76a-949aa61a53de)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 9a55892e-b06b-4208-b601-41337d8b8368)(content(Whitespace\" \ + \"))))(Tile((id \ + 3d231040-af6f-4af3-a45b-0c2b972ead2f)(label(->))(mold((out \ Typ)(in_())(nibs(((shape(Concave 6))(sort \ Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 3f63a985-4fb1-4411-badb-3a71c88787fd)(shape \ - Convex)))(Secondary((id \ - fd038d1b-0f85-46ac-bfc4-c8936b28fa1e)(content(Whitespace\" \ - \"))))(Secondary((id \ - 061a6f1d-8a6a-437c-958c-ee53dffa6704)(content(Whitespace\" \ - \"))))(Secondary((id \ - e9b8e31f-ef12-4386-ab71-737ecc8bb303)(content(Whitespace\" \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 39d95669-ce4a-475a-86de-6ade2b390975)(content(Whitespace\" \ + \"))))(Tile((id e0fff774-b78f-466e-8207-d64fa154c728)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 0284addf-66d3-407a-ae45-f8003ec9be99)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + b756cd2e-1b65-4aaa-912f-0826c7db51fa)(content(Whitespace\" \ \")))))((Secondary((id \ - 79f92bf1-8162-4a61-a2ce-5dc11b32f5b9)(content(Whitespace\" \ - \"))))(Tile((id \ - ae51cf87-8075-4f34-bc4b-c04a2509c922)(label(fun \ + 5952db10-dd6a-4f4f-b4bc-3ccf5ca15261)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + e3274966-3edb-4fcf-afcd-d550b904306f)(label(fun \ ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - 13f9a6db-c358-467c-b63d-aa80de578827)(content(Whitespace\" \ + c3af8de1-edf8-4bca-aad7-ef95077713d1)(content(Whitespace\" \ \"))))(Tile((id \ - 53cd4541-4855-4b45-9b57-21a5a55e6536)(label(b))(mold((out \ + df1f3e44-6630-4df2-a832-f0f6d439aca5)(label(l))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 419711ed-f234-4d83-a1de-052392ed4f33)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 0a1c5f44-56fb-424c-b8a8-02be82320d0a)(content(Whitespace\" \ - \"))))(Tile((id \ - b454ce6b-f260-450f-8fd1-5b061fb59b7a)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - b1186b20-55a7-46bb-9e3d-0a2597e8ca10)(content(Whitespace\" \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + d44131a7-ab62-4d3e-8cdb-93d1d966fef1)(content(Whitespace\" \ \")))))))))(Secondary((id \ - f025b713-4446-41b8-b8a1-b9deec7170ec)(content(Whitespace\" \ + 4abd357e-5a2d-4954-bd0a-7712e933a63b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 0b766d94-f827-41fe-9e30-7aec8e1bcab1)(label(case \ + end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 505f4445-0140-44b4-991d-15d7711aaf93)(content(Whitespace\" \ \"))))(Tile((id \ - 6b7eb9e1-a57b-42e4-b4c5-f8c8b7559e8b)(label(b))(mold((out \ + 707f61cb-d211-4ca9-b112-217dfe426494)(label(l))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 59076a3b-3dac-452e-bd83-72fddcd63292)(content(Whitespace\" \ + a47423e8-5256-4d50-9a6c-85d0627fa72c)(content(Whitespace\" \ + \"))))(Secondary((id \ + 066857e3-d77f-4a39-b57d-20121ab98fce)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d1787ad2-24ac-4680-9dc8-df09233085d5)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 5da3a212-16e1-442e-8457-a9ca62821be4)(content(Whitespace\" \ \"))))(Tile((id \ - e5460c69-8e8c-4c6a-9764-6c2899686e42)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - f549d916-2c17-452f-94cb-fcd429bd40dc)(content(Whitespace\" \ + ace97845-75e6-4a06-bf16-bdfe066f6c60)(label([]))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + ec6036f9-9ece-49ec-8de8-0c6c207f355d)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + e7947e14-368e-431a-bfe3-e36cf2cac40c)(content(Whitespace\" \ \"))))(Tile((id \ - 54695a1c-ec86-4a5d-a698-c870608f6b81)(label(true))(mold((out \ + fe44dc20-d5e4-4b74-a588-feb779c16f21)(label(?))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - a5db26f2-f9c0-434c-838c-3e798e9aa599)(content(Whitespace\" \ + 5bca6b46-ec24-4307-8605-c5b7fbc55b5b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + dec04c05-a927-45b0-8106-3f368b8f0b89)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 5185ee76-646a-45bf-bf4e-8e6a1a16e344)(content(Whitespace\" \ + \"))))(Tile((id \ + d56ebc10-d6e9-428e-bcf4-b589ccbdb5c2)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 42b4a8fd-8e9a-4960-90c4-bf8d16ec19d5)(label(::))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 6))(sort \ + Pat))((shape(Concave 6))(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 1e43ee19-eddc-4dad-ac07-b6bfb13ec2e3)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + bbcb6175-35c9-4995-9d25-1af310a4bca9)(content(Whitespace\" \ \")))))))))(Secondary((id \ - bfdeadd1-583c-48ff-a3cb-6a1e25de8e27)(content(Whitespace\" \ + c5afebe7-6bf0-40af-bdc4-fdd0a1836181)(content(Whitespace\" \ \"))))(Tile((id \ - b83e4de4-dba2-4277-887d-7e7342cc2d93)(label(f))(mold((out \ + ca2ae18c-1a1f-46a6-a40c-01e8c567caf2)(label(xs))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - fa11dd40-1c46-4ad0-8c2d-cf7714a80450)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 1afd78bb-0f0c-406d-8315-5a73551c079d)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 53a67607-e548-47a7-8ca9-eda64d28b744)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - d3bc7420-82b1-44bf-9f96-8a489511a052)(content(Whitespace\" \ - \"))))(Secondary((id \ - 9fea6b9b-a8d0-40ca-9462-9666163ec246)(content(Comment \ - #ERR#))))(Secondary((id \ - 3c8ad85c-d1e6-42cd-bc0e-8dafcb0ef8d3)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 10450a13-ad0b-479a-8e17-72fc85252260)(label(let = \ + Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 05afa814-8e6d-4013-a67c-268f37d8fb95)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 8a94f6f5-b1bc-4504-bdf7-4b8557c9e269)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 29ad0ad6-e453-4d7b-817d-a6dd9ced283f)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 74b66e4c-ddc3-47dc-97a2-5731bd737dd4)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 0f7d65c6-f199-4c85-956e-29f27197fb06)(label(let = \ in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - 8fbbccd0-369c-47b8-a053-4bf41f8a5f5c)(content(Whitespace\" \ + 18d2b075-92ca-4af6-9607-bc96bded98ee)(content(Whitespace\" \ \"))))(Tile((id \ - 847efb1d-395e-4107-a3f2-f00078659bba)(label(f))(mold((out \ + 3e013ad1-ef90-4219-85ee-b1bd763fea7a)(label(List.is_empty))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - e4ba3265-8220-49a1-b676-e1b0c7b7e91b)(label(:))(mold((out \ + c43bff54-1ca2-452f-a581-47a7c827394c)(label(:))(mold((out \ Pat)(in_())(nibs(((shape(Concave 11))(sort \ Pat))((shape(Concave 11))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 8f0f3df3-dae1-4f53-a9cd-cf0fe15fa5c4)(content(Whitespace\" \ - \"))))(Tile((id \ - 18cc88a3-8cbb-4138-ab0f-e21b7e2556b7)(label(Bool))(mold((out \ + 137eb9ac-e85b-42b4-8e9b-4052d5ef7acf)(content(Whitespace\" \ + \"))))(Tile((id c1a17ca2-043a-4fc8-9824-1bd7b84d90be)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + b01f8402-5095-4086-bc76-4c8598f5c86a)(label(?))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 08f5024b-27a6-4292-b774-150a34a9e35b)(content(Whitespace\" \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 62b16b9a-b565-471a-b5d0-0438e2c32afa)(content(Whitespace\" \ \"))))(Tile((id \ - edd367c7-2d69-4927-a1ca-9de4cac6e1f1)(label(->))(mold((out \ + 34a497c7-205a-4789-8940-93020e476b0a)(label(->))(mold((out \ Typ)(in_())(nibs(((shape(Concave 6))(sort \ Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 12b2b5aa-dfe0-4ed7-a09b-d661786ba319)(shape \ - Convex)))(Secondary((id \ - a030ef24-0415-456a-bc89-543c379922dd)(content(Whitespace\" \ - \"))))(Secondary((id \ - ecf39cd5-ac32-4876-902d-0fc26899d9c6)(content(Whitespace\" \ - \"))))(Secondary((id \ - 9139333d-80e3-41a6-91c8-5048f147651e)(content(Whitespace\" \ - \")))))((Secondary((id \ - 0ed479dd-00cf-48f9-9c9e-3caff02c00ad)(content(Whitespace\" \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 159f7fd3-9ad8-48f3-a571-812446371171)(content(Whitespace\" \ \"))))(Tile((id \ - 973e21b7-9ebd-436b-afc7-0480b31454f8)(label(fun \ + 4663528c-d58c-404d-be48-08e94d35b38e)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ + d521088f-4771-4747-acb4-877bde73894e)(content(Whitespace\" \ + \")))))((Secondary((id \ + 3ad42e6b-ad37-499a-996e-dd897129a12b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 5e2d382e-2b91-4527-87d0-73679f0ac699)(label(fun \ ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - abae88f5-5ff5-4525-8f11-90e09122b78b)(content(Whitespace\" \ + c33282bc-d9ed-4942-b4aa-19b86ecbc9a4)(content(Whitespace\" \ \"))))(Tile((id \ - 4af1e9e8-18d1-4bdf-881d-ad039219bef1)(label(b))(mold((out \ + 21919ec5-8a72-42bc-908b-2354e083432f)(label(xs))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 3de8793a-102c-430d-a326-119e531dfeba)(content(Whitespace\" \ + cfc86100-a32e-476f-95a1-79b834911088)(content(Whitespace\" \ \")))))))))(Secondary((id \ - b5635065-6adb-44ff-baff-849222e1f9ee)(content(Whitespace\" \ + ea384d62-c745-42fd-8b2e-ea9109c97aa6)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 6c29792d-5d0e-4c89-9478-dd234ff49e95)(label(case \ + end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + fc29ecf3-ab50-4d5a-a811-483d2d773a3a)(content(Whitespace\" \ \"))))(Tile((id \ - c57cccfe-f3ea-4ff8-b0d0-5557cb6ecc9f)(label(b))(mold((out \ + ec3b4f9e-8021-4ea4-a3b5-342cbd8971b6)(label(xs))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 33487927-233d-48c9-bfd6-0368813cb10e)(content(Whitespace\" \ + a64fc726-3432-4beb-ad4a-7fc0fffa127f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + b107d434-b32d-41ef-8584-fdec580d71ce)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + af696873-f38e-4845-a953-1651792dde1e)(content(Whitespace\" \ \"))))(Tile((id \ - 33868a11-98b8-47ad-b7ef-cde8b26ed0b5)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - c777cfa2-b327-4842-b6ee-886d567092ce)(content(Whitespace\" \ + 7ce87257-56d6-41ca-b8fe-8686123b07b8)(label([]))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + e3c07e4e-ea0b-46ed-83d0-14506a528584)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 574356e7-98ed-4e23-ab32-8684d7155772)(content(Whitespace\" \ \"))))(Tile((id \ - da697965-271a-468f-a241-d2d182c69bba)(label(true))(mold((out \ + e5c36e8b-52d7-4f52-a9a1-c8755ab164a7)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 7f5f7a01-d759-4f6a-8658-6ef3e240647b)(content(Whitespace\" \ + 454a7fb7-c45d-46a8-b84b-2d4e5144c308)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + a8fedacd-1ea6-47fd-a077-640da5ad2b21)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 2f429910-449c-4acf-a4dd-6e6dad52c918)(content(Whitespace\" \ + \"))))(Tile((id \ + a750c357-defb-4c88-9c43-31def332c3dd)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 7cd63242-6318-4a81-bf50-f87eddacd6bc)(label(::))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 6))(sort \ + Pat))((shape(Concave 6))(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + a9b0aba7-e8c1-4f87-a5cb-c094e3df055c)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + bb61bc6e-3f75-4122-ba2a-e63b8a869ba3)(content(Whitespace\" \ \")))))))))(Secondary((id \ - e45018a7-3a31-4a26-bab5-3dea3da77d2d)(content(Whitespace\" \ + 7acc1d23-6b5e-4577-a1d5-173f49aca9d6)(content(Whitespace\" \ \"))))(Tile((id \ - 9b183ee0-efce-4c3f-9b41-e6395eb534e6)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 91fabbec-4dcb-478d-91a1-617f3c0fec09)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 8ead3805-23d3-4ff4-a827-fcb998b0b815)(label(true))(mold((out \ + 028ca38a-190b-4a9f-ab31-83fc390ff5c8)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - d1051422-7f8c-478e-8cea-291b10007dc3)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - cc586bd6-8b7f-40eb-b338-af3e2832626e)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 002eafbf-5cc8-4b0d-ad74-54a1bd7bed62)(label(let = \ + Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 5ecedd30-d899-477f-aa0b-4b99b40d4222)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 264d5528-ebef-4e53-a604-75fd79be9f07)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 5d1abe7b-9ccf-4c50-9ff8-654f29d770b4)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 3afd3e5f-83c8-47ae-9a5a-2af7a290159b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 4c497f5d-d20c-46b2-b17b-c4ecd2e99c17)(label(let = \ in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - 10def638-b735-41b9-a4b4-44958a75431c)(content(Whitespace\" \ + 4a51fcaf-3553-48ee-aa01-ce1280e3f465)(content(Whitespace\" \ \"))))(Tile((id \ - 34227ecb-5f39-40a3-b527-77e3060fc15f)(label(f))(mold((out \ + ac4408b3-e94e-4f8f-959d-1e6506d176ec)(label(List.nth))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 2e4fe4fb-fe0b-499f-95dd-4c18f2c86746)(label(:))(mold((out \ + 667dbeda-d1dd-4f86-8d4b-606125fe660f)(label(:))(mold((out \ Pat)(in_())(nibs(((shape(Concave 11))(sort \ Pat))((shape(Concave 11))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - cfb7cf79-3941-4e7d-b713-0652acb4798d)(content(Whitespace\" \ + 5ae9e86a-dbc8-456e-af60-07723e93b9ce)(content(Whitespace\" \ + \"))))(Tile((id \ + 37349641-9b12-4f7f-951e-3e0d9e0d51f8)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + d703aa20-00d0-43d1-a8be-f88a8056575b)(label([ ]))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + aa41e226-3048-40ee-a0e2-b1c7280d78c4)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children()))))))))(Tile((id \ + 3f28e04e-a84d-47cf-b362-391743835b6c)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + af787d41-83c8-4bc0-9195-e8f9e93fa288)(content(Whitespace\" \ \"))))(Tile((id \ - adedeb3d-6221-44c5-8f8a-96953097d926)(label(Bool))(mold((out \ + ae37fdc6-1981-406b-b6bc-28d4f23ecc31)(label(Int))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 60eabbf0-6e8f-40b1-9756-c74fb9dfd772)(content(Whitespace\" \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + d6781051-ca28-4318-9bf4-31e76d58cd78)(content(Whitespace\" \ \"))))(Tile((id \ - 2d940b34-55d1-43d2-9651-6229281f850d)(label(->))(mold((out \ + c2169c98-722b-4502-8465-c12f6d2ac5cb)(label(->))(mold((out \ Typ)(in_())(nibs(((shape(Concave 6))(sort \ Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - ccbe068b-76b5-4c11-a5de-02bf5c12511c)(shape \ - Convex)))(Secondary((id \ - 309ba515-2819-477c-9d4a-63a3820fff4d)(content(Whitespace\" \ - \"))))(Secondary((id \ - 7d0ca20b-3b04-4dec-9e51-f68ecf607766)(content(Whitespace\" \ - \"))))(Secondary((id \ - fa6b22ec-4842-44c5-86cc-053bb5676bd7)(content(Whitespace\" \ - \")))))((Secondary((id \ - bc092c89-6f2b-4334-9d03-33fcbf3bcf92)(content(Whitespace\" \ + Typ))))))(shards(0))(children())))(Secondary((id \ + dcc2f30d-a29b-46d1-b152-c2feb31174a8)(content(Whitespace\" \ \"))))(Tile((id \ - f240ac06-da74-44da-b83d-384293baab04)(label(fun \ + 9b64479f-4495-49b1-9631-ad15204b31d2)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ + a6789f51-be06-4160-bd16-0f367903cd38)(content(Whitespace\" \ + \")))))((Secondary((id \ + 2c01ac86-93ff-4334-bfe6-7205656ea868)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 4f5e1ef9-ad27-4c4e-8bc8-1259630e5158)(label(fun \ ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - b510947f-7fe8-436a-9896-e92cfc6e95a8)(content(Whitespace\" \ + 24615112-a351-4dac-9a63-81ee5f06258d)(content(Whitespace\" \ \"))))(Tile((id \ - 79747594-21f5-4d9c-837f-2db67ce70c0e)(label(b))(mold((out \ + e8815a98-1ba0-4024-a373-df5c1bcff40c)(label(xs))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - e534f388-e8b4-43ca-bfc2-9d21ece36b2f)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 356dadee-c7d8-4161-a582-4908e0f40864)(shape \ - Convex)))(Secondary((id \ - 030f1466-5e09-461f-915b-7d8409966d8a)(content(Whitespace\" \ - \"))))(Secondary((id \ - 8a5cbd13-b805-460c-8b27-f403a65f9c49)(content(Whitespace\" \ - \"))))(Secondary((id \ - a7060bf6-c262-43c3-b510-c0d7155c9a77)(content(Whitespace\" \ + f9213f8c-ecb8-4a30-8e43-bff350ba36bc)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 259b1539-ec66-454c-88bb-f82cd15725e5)(content(Whitespace\" \ + \"))))(Tile((id \ + 122d37f9-4a00-46fe-81c3-ae3a5f4f6220)(label(n))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 10aec4cf-e768-46c0-a82b-ae95518644de)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 589cfde4-d192-4a10-8d64-2b696c08e274)(content(Whitespace\" \ + 04dcde2a-3241-4d27-9535-ccd4e535e59c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 59bc2378-d1c9-49de-b512-be699c5ab7d7)(label(case \ + end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 5c644f57-2513-42af-9990-14e6b54dedcb)(content(Whitespace\" \ \"))))(Tile((id \ - 33459de8-1b3b-4b90-9188-34565416cdd3)(label(b))(mold((out \ + 56961038-0d8e-488f-b9f7-3b21b28d1db6)(label(xs))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - cf03ebe5-2c1a-4cda-b22d-8aae648ec611)(content(Whitespace\" \ - \"))))(Tile((id \ - 24f7b13f-5702-4682-9271-d55c54c4c1f5)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 40d4c576-e013-4afb-9bd2-b533be151c37)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - bd2dedb1-8524-4186-b94f-27880af5efb8)(content(Whitespace\" \ + f0bef1f0-7273-4be9-bd79-93ab82a20850)(content(Whitespace\" \ \"))))(Tile((id \ - 65e6daa9-88ec-4bc0-85e6-720617dfd875)(label(true))(mold((out \ + 36454f50-6f7b-4cc4-9d0a-4162fadae7c2)(label(n))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - e9e62ff5-7066-41df-aa7f-ac0045157f1d)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - f4e2682f-8ecc-4221-a1de-9ad09065cc20)(content(Whitespace\" \ - \"))))(Tile((id \ - d8a5286d-e3c6-4032-8fda-676d2c62b47c)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 1feb8b74-da74-437c-a190-1b721dccc0d5)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - b029c2d3-b880-44da-846f-783ef7114058)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 58031230-cd07-4bbc-bbe0-8831a15d1739)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - ef306d3d-51e8-45c5-a2e9-06fb5c51c094)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - ce8b6223-a04a-4fc8-bafe-929344732e75)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 540caf79-e72e-4ee6-aa19-5d937511cefd)(content(Whitespace\" \ + b1570e9d-5c41-4c61-bd0d-d1b571854081)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + c7f27039-4d65-4bcf-bf65-9cc51317d957)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + f2d1c353-b202-4e2e-9e9c-2e00ca41df4c)(content(Whitespace\" \ \"))))(Tile((id \ - cee423a7-829a-462b-9e9c-6358aa538d77)(label(f))(mold((out \ + e2277504-b7e7-4c6c-8c54-1ac3fa0504c0)(label(x))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 5f386074-6bd9-4dad-ad40-d1c0520a00ae)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - de59295a-8148-40fc-ad40-ba710271d679)(content(Whitespace\" \ - \"))))(Tile((id \ - d639b433-4528-4dab-8cae-32118b2788c9)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - abc9163e-b23b-4a34-bf14-356bf63dd72c)(content(Whitespace\" \ - \"))))(Tile((id \ - 23b041df-c458-40d5-9693-d3069569941e)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 96a1c24e-5803-4601-b4c3-1c5dacd7adf4)(shape \ - Convex)))(Secondary((id \ - e07b7063-17c4-40f7-85b9-613e58020174)(content(Whitespace\" \ - \"))))(Secondary((id \ - d7ec1800-e79e-416d-b565-2ba6f602e882)(content(Whitespace\" \ - \"))))(Secondary((id \ - 88e1b34a-9dc5-49a8-aea3-6ccf72a76c14)(content(Whitespace\" \ - \")))))((Secondary((id \ - 03e17ec5-2a7e-4ba7-beaf-06ce0a8c8bf7)(content(Whitespace\" \ - \"))))(Tile((id \ - 52731693-ca1a-44f8-bb49-c956d5eea584)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - e984ac11-b7db-46bc-a73c-e1bfee8ee762)(content(Whitespace\" \ - \"))))(Tile((id \ - b1320a35-0415-4b66-8741-5f9faabdafa4)(label(b))(mold((out \ + b3ceb7f1-3a73-4bb2-bb84-dc98ebbce99c)(label(::))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 6))(sort \ + Pat))((shape(Concave 6))(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 96919382-f8a9-47df-a051-72291e934555)(label(_))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - f4b15672-aa8f-4001-b506-3b0d632e7887)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 78a0d7bc-a7da-4f3a-a46d-2f1ab36651a0)(content(Whitespace\" \ + a88fa341-98f3-43c0-aeed-59f547ce0d55)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + d855bae9-2f60-49e0-883a-07d84467ecf1)(content(Whitespace\" \ \"))))(Tile((id \ - 9c67e498-55aa-4221-94cb-12b4b17cb677)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 4cd8a778-6d6e-496d-8cdc-a91177ec34cc)(content(Whitespace\" \ + b1e4918d-eb76-4281-bc3d-2f26e5206ac6)(label(0))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + ecc2edc1-5722-42fc-a6e8-fd75773b862c)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 1ed08aee-b8c3-46ab-86ef-20c19c1070fd)(content(Whitespace\" \ + ada9e83f-9e2c-4682-b5d6-42d08e129fdd)(content(Whitespace\" \ \"))))(Tile((id \ - 9e461602-eb6f-4837-ba1f-f1c1aae17d5b)(label(b))(mold((out \ + 55d053f3-c7cf-49b0-815e-0d1bec6368be)(label(x))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - e51c2a8d-d47a-4d7b-ba9f-9ce6b11ff755)(content(Whitespace\" \ + 25a6c8ab-3599-4f46-8886-4449b611ccec)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d69af711-436f-4763-b614-a4fc25345466)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 3596b240-59e8-4a45-9ca5-2aa0ad7578e8)(content(Whitespace\" \ \"))))(Tile((id \ - a0a5f279-8b84-4a83-b12a-5398d19d8196)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - f1aae1ab-9373-4309-b756-28aa629b5989)(content(Whitespace\" \ + 4ff9903f-dbee-4fab-b6e1-36e187529ff5)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + c9a0badc-71e3-47f2-9556-8e42096db5ff)(label(::))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 6))(sort \ + Pat))((shape(Concave 6))(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + cb5c33cf-43b7-4ad4-8226-2574414e8764)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + cebd5746-2af3-4062-b498-e98fce687eaf)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + ce95a2b7-1d5b-4c41-8255-78091db05cb1)(content(Whitespace\" \ \"))))(Tile((id \ - 33484890-2dfe-4f33-a4bc-cabc060f846a)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - b932b818-c84b-4ca4-8612-ff0cb53b26ee)(content(Whitespace\" \ + eb33713c-4a69-4d1f-8829-17922ed39f2e)(label(n))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 26b8c106-6cb4-424f-bb77-dba0e6925719)(content(Whitespace\" \ \")))))))))(Secondary((id \ - aa3d6c49-42b2-41cf-b8ac-083b693ca537)(content(Whitespace\" \ + f667dc22-85dc-407f-9328-26760f036d19)(content(Whitespace\" \ \"))))(Tile((id \ - 230c52c7-6470-4756-ae9f-4b9d35485b53)(label(f))(mold((out \ + 5dc411ea-c4b1-4749-aa54-357a3b01bcdf)(label(List.nth))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 807d3924-d03b-445a-b24b-7295b4db0436)(label(\"(\"\")\"))(mold((out \ + cd1f3548-30da-4e7f-8509-63336560133d)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - e8b3278f-6914-46b9-8dca-3dfd5762a5a5)(label(true))(mold((out \ + 586d5112-c8a0-41ae-b4d7-bafd66a987ca)(label(xs))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - a16437a1-ef9f-4168-a489-5024543cf24e)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + a29ee92b-d2a6-4233-9bad-9140f784f971)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 7f71fd7c-ad20-4f09-a306-2153a6870280)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - a5a5c919-1120-49b6-8072-0a6f60656704)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 139f8553-a9fa-4ecd-b51c-5f19d4bdc376)(content(Whitespace\" \ + 646e9b17-b9a2-48ba-8d1b-d36d6e55c841)(content(Whitespace\" \ \"))))(Tile((id \ - eb8399c9-8e9b-4f50-8673-15d764bc7429)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 5786939b-f2d2-4c23-81d9-8851344edd85)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - f780a436-b288-4066-ad25-25539b6a4aad)(content(Whitespace\" \ + 62c114cf-8887-4bb5-87ba-b8b0012fefa1)(label(n))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 8c391d69-1c6a-4a64-bac0-9740beffd53e)(content(Whitespace\" \ \"))))(Tile((id \ - 0e575c01-2cda-486f-a77a-bb3ca218c75a)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 2635219c-ea70-4c49-b775-392873cb7458)(content(Whitespace\" \ - \"))))(Tile((id \ - 49004b33-f151-4e09-8d1f-c8fb71fb8e74)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 1771e8b3-6fd3-4ee1-88fa-eda3484af174)(content(Whitespace\" \ - \"))))(Tile((id \ - d6a736ba-1150-4d21-88d0-08ce100d2e9a)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 3dc11eb9-1c13-4155-88f9-7e404000b193)(content(Whitespace\" \ - \")))))((Secondary((id \ - db87b2bd-43e1-44b3-8982-01e87cce4132)(content(Whitespace\" \ + a74d75d5-a00c-4e89-bb95-445e126a26f8)(label(-))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + bc554d28-9494-456d-a2bc-e5a4a9dcc5f4)(content(Whitespace\" \ \"))))(Tile((id \ - 8be2a7db-bbe3-4d84-afd6-bd4870c8fbac)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ + 8cce8df9-778e-4ed7-a5e3-0ec8f62aa68c)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 8c45dd9a-6151-4937-831b-98174b1e5a74)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + b516b4b8-ccf2-44e5-b935-85e349871908)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - c7f3772f-596e-4e5f-a152-736896e548cb)(content(Whitespace\" \ + 69621aef-6441-466a-a489-79f5acfb976f)(content(Whitespace\" \ + \"))))(Tile((id \ + c64951f3-8bd4-4965-91d5-614a6de0ffca)(label([]))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 430054d6-f5f2-42f6-ade7-649e6a6cbb0a)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 0f998db3-c36e-47ab-8eba-9709b534cd1b)(content(Whitespace\" \ \"))))(Tile((id \ - 8be53eff-63b1-4c09-9265-d4e7b070ca60)(label(b))(mold((out \ + f293879a-3952-4314-88d4-761a6fc36787)(label(_))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 24418b5b-65c1-4a5d-b21b-10a3ede829ea)(content(Whitespace\" \ + 395b5e05-7d72-4205-b849-fa81556840b7)(content(Whitespace\" \ \")))))))))(Secondary((id \ - e5c60fa6-987d-4192-ac64-819873e0e19e)(content(Whitespace\" \ - \"))))(Tile((id \ - 004ff029-4290-4c1a-a043-972e79144369)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 0d8de894-511e-486a-9e68-1348ae2276d0)(content(Whitespace\" \ - \"))))(Tile((id \ - a8b7f3fa-e086-48f0-90c2-fd03eebc1626)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - a8335f03-9b62-408c-8b67-1586b1808b0b)(content(Whitespace\" \ + f3135dd2-33ab-47de-a98b-ce2cd7fd57e8)(content(Whitespace\" \ \"))))(Tile((id \ - 843ff32c-c9f3-47ba-9397-134ca2634b5a)(label(true))(mold((out \ + 3bd69e43-748a-4847-b413-dbe191b3ff9a)(label(?))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 40d5ca79-00bc-4d8d-b1e7-f51ad765aac5)(content(Whitespace\" \ + 0334d2f7-7da1-49ae-a598-90f58523e7f9)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 4c634236-d833-4c55-87a8-10a074115af1)(content(Whitespace\" \ - \"))))(Tile((id \ - cb424cc9-8cf6-4bef-9657-c17e2727bf88)(label(f))(mold((out \ + 40a40cc8-2c59-4aec-b9a6-4499938d0bd6)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + cd37ba73-0cd8-464a-848c-a541f92e9983)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + be6360ee-18c9-477a-a111-8998f3547d40)(label(test \ + end))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + d4900d66-d8d9-4e81-96cc-1b4936eb5d04)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 6b9dad4f-1541-4e5a-948b-a0cfc20c236f)(label(List.nth))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 27795b79-de23-4499-a81d-421966b8dbef)(label(\"(\"\")\"))(mold((out \ + fbfdb736-151f-46dc-b6b0-833ccdfc8d14)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 483d5d5b-e649-4fda-84ca-e6ea2b3f767e)(label(true))(mold((out \ + 88197b94-1865-45c6-ab84-b118c9b5cb57)(label([ ]))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + e9aa8ccf-e351-4a7a-93b8-e11e59260019)(label(7))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 9a49057d-9cb1-4424-adaa-85e0d8f54093)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + dd2e4158-c649-4b72-8037-50c143416021)(content(Whitespace\" \ + \"))))(Tile((id \ + 0d856797-c5af-44dd-931e-d08435705163)(label(8))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 45063de2-c2f8-4443-a7d1-55d0abdb1e31)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + fb3953fa-68ae-4f0f-932c-db1e88e6b0d3)(content(Whitespace\" \ + \"))))(Tile((id \ + 4279b9e1-d3a8-4a96-863d-3cb7d71c5de7)(label(9))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - b2f02c29-b676-4de1-975c-847fe2d569d5)(label(\";\"))(mold((out \ + 372398ae-7e5f-40e8-9abe-655029bdcae4)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 766794ce-f6b2-4b45-9fc6-6bee8236b78b)(content(Whitespace\" \ + \"))))(Tile((id \ + be1184e7-cb93-4a56-8381-990d204ca8f2)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 9bddbf0a-84b8-4e1b-b0c1-e9e09e48f5f8)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + f25791fc-d45d-4e8b-8310-f158f2dc217d)(label(==))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 8))(sort \ + Exp))((shape(Concave 8))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + dffc17a3-2197-47aa-a7c2-898473949cc6)(content(Whitespace\" \ + \"))))(Tile((id \ + 2e3d68ab-5f64-4215-8664-dab34fe8fc22)(label(9))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ + f1a31eb4-0fef-41f2-b9c1-a85fc4f57293)(content(Whitespace\" \ + \")))))))))(Tile((id \ + 9a10a148-c9c9-44b7-8f00-ebae68b3d9dd)(label(\";\"))(mold((out \ Exp)(in_())(nibs(((shape(Concave 10))(sort \ Exp))((shape(Concave 10))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 5bfaf192-0044-460a-bfee-5eb8b975cf4a)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - e9052dcd-8da9-43d4-8645-d6fcac723d17)(label(let = \ + 0bff3c4c-27c8-450b-a9bd-f9939fed9ca6)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 95ea67b9-ae10-40be-9df5-00ab564824ba)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + be8684c0-b330-4dc4-bbf2-3f698b619543)(label(let = \ in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - 353a4ec8-f2ef-4f11-acd3-e00f4f517d0d)(content(Whitespace\" \ + 9600fb9b-a1b9-40c3-83b1-d35894c0efef)(content(Whitespace\" \ \"))))(Tile((id \ - ff603e69-8b64-47fe-bf43-4214de89096e)(label(f))(mold((out \ + 67bfe5a0-3ec8-4206-b736-188e18c3efa3)(label(List.rev))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - a83f0099-fd53-41ef-a4cd-243830c35b16)(label(:))(mold((out \ + 0e260309-23b1-4991-b84a-487a088b6406)(label(:))(mold((out \ Pat)(in_())(nibs(((shape(Concave 11))(sort \ Pat))((shape(Concave 11))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 58c882c8-817c-44e4-9c5b-d02967d09cff)(content(Whitespace\" \ - \"))))(Tile((id \ - 944ae72f-edfa-4c02-bfcf-143ee540a904)(label(Bool))(mold((out \ + 11c6d47a-6608-4181-b688-9c8e96b9e16e)(content(Whitespace\" \ + \"))))(Tile((id 253cf2a6-5343-479e-a15d-f5a40f8dd3fe)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 83de3df7-eff1-4004-93fd-b1d6aeb82f83)(label(?))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 949a8619-56d3-4784-ae02-8e5ae1d73040)(content(Whitespace\" \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 075e64b4-52c9-44a2-80b0-0151e0adc1a1)(content(Whitespace\" \ \"))))(Tile((id \ - f8b627d7-fd7f-4486-b2d0-47a4f59d2973)(label(->))(mold((out \ + 03c6bb3e-1ac4-4a22-8cff-0d1e9d5152f5)(label(->))(mold((out \ Typ)(in_())(nibs(((shape(Concave 6))(sort \ Typ))((shape(Concave 6))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 3ab54a3f-2d2e-4e59-9148-f64309490357)(content(Whitespace\" \ - \"))))(Tile((id \ - 696f179b-9f45-4327-a6d4-878b7d134c8b)(label(Bool))(mold((out \ + def62ff8-99b3-4623-84f1-57675dadcde7)(content(Whitespace\" \ + \"))))(Tile((id cc1bd9f8-9f07-4584-8d54-9abb8e7a17e0)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 45bbe939-ee92-43d4-9713-f3668837785c)(label(?))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - a2435252-6b4b-4121-8341-78e4fbcccca3)(content(Whitespace\" \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + ceb8a820-23c7-42bb-ad0f-a00787acbed6)(content(Whitespace\" \ \")))))((Secondary((id \ - a143f8ac-6c26-4f74-9145-2a74fa041f1b)(content(Whitespace\" \ - \"))))(Tile((id \ - 9ec68868-5105-46e4-9056-5aeb383d4679)(label(fun \ + 5d9d5121-e45e-492a-b2dc-0e3d6088202a)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 7186bcf2-a6d4-4ed7-bebd-ca9d3fbdfa30)(label(fun \ ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - d3048a5e-9bbf-43b7-933d-be81f39adcf4)(content(Whitespace\" \ + 338c84de-1350-4d66-9f34-917d034f0df1)(content(Whitespace\" \ \"))))(Tile((id \ - 210a8714-8e9e-411f-9ae1-5c74bac00093)(label(b))(mold((out \ + 6a03841a-a9ef-4430-81ed-493101825849)(label(l))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 2f5a5a94-c9ad-4824-aacf-1cac8d5361cf)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 2ed40092-401e-4d29-a9a1-1e68171cb073)(shape \ - Convex)))(Secondary((id \ - c63ef644-91e1-4e9d-82c3-4bc7bcde981b)(content(Whitespace\" \ - \"))))(Secondary((id \ - 16217a54-e0f3-4705-a22d-4a19de000394)(content(Whitespace\" \ - \"))))(Secondary((id \ - 36f1e72c-9c4a-4faf-aded-a88a176d4abd)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - eb763170-c55f-47a1-b63b-1e0466b17806)(content(Whitespace\" \ - \"))))(Tile((id \ - d15e3c67-be75-4070-81f8-6293e96755e9)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - da81336e-2f36-4358-a49c-6aa2d5c2a613)(content(Whitespace\" \ - \"))))(Tile((id \ - 79f09050-aa99-4ebd-8195-1e99f7c2c0a1)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - a5af519a-a045-43e7-8dcf-e3557a425bcb)(content(Whitespace\" \ - \"))))(Tile((id \ - 133b8fa7-2c8f-4df8-b7e7-2fc18ebcd2f9)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - bd4db6cf-e8cc-4f0a-97f3-88ab28476947)(content(Whitespace\" \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 48addca0-110a-42b1-bd11-992184d52697)(content(Whitespace\" \ \")))))))))(Secondary((id \ - f7f5dd63-8fe4-4ad1-86be-7fc537a46176)(content(Whitespace\" \ - \"))))(Tile((id \ - ec8aa607-2390-4953-ba7c-2f5afdfbde09)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 9d2ff58e-d2d0-43be-b2c0-583ccae1ae7e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - bbc53dcb-5eb8-42f0-b216-c6000d58ce42)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 4364fd68-68e9-4574-9894-16a3956e95ed)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 36328de6-3b6f-4cfa-8b92-39e50750b06c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - e587d340-f37a-4afd-ba21-2cc57548e22a)(label(let = \ + bfbbc1d9-1c3a-475f-ba70-6a2e2f844898)(content(Whitespace\" \ + \"))))(Secondary((id \ + 28c46d97-2c8b-42ac-a5e0-1b30ddca0a7d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 9615c530-ed87-4f83-bb84-792c088d1a19)(label(let = \ in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - b97a2200-2074-4adb-807f-52356b9fb435)(content(Whitespace\" \ + a80e1780-2b5b-42b3-a247-e2d7b2ef7c0a)(content(Whitespace\" \ \"))))(Tile((id \ - 7b53075c-8209-4948-9ce7-776096b5fd82)(label(f))(mold((out \ + e9222ab4-acfd-4098-bd32-0086eb18576c)(label(go))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 805b9744-3bee-4bdf-b0f2-67b029f95bb5)(label(:))(mold((out \ + deb8d7d0-656e-4231-874c-4785e280009b)(label(:))(mold((out \ Pat)(in_())(nibs(((shape(Concave 11))(sort \ Pat))((shape(Concave 11))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 3058802a-3ce1-4d35-9e01-b66285ba12cc)(content(Whitespace\" \ + 8f341dfa-c8e3-4b80-be1c-b09ef20977f2)(content(Whitespace\" \ \"))))(Tile((id \ - 847c44a3-e6b2-4dc1-b2ac-bb75d953921c)(label(Bool))(mold((out \ + 58f82cfe-33a2-4a30-9b27-e154d38b9d50)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + da28278b-9d77-471a-8605-193ea693fdde)(label([ ]))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + e12aa2ff-4eee-449f-8ffb-03e548530052)(label(?))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - aa2bb2fb-b9a7-4f6f-979c-22d0c33256ab)(content(Whitespace\" \ + Convex)(sort Typ))))))(shards(0))(children()))))))))(Tile((id \ + 2a565ac4-5125-42e9-8dfc-39c666f27492)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 071d238e-9591-4be6-84bf-077b2ee6477f)(content(Whitespace\" \ + \"))))(Tile((id 8e01fd05-fa32-4cb0-8170-66f720b9ffb3)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 35c64e2f-b48c-404b-af02-2c043163c5b5)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 5afc365a-1278-4897-8869-4342c623e258)(content(Whitespace\" \ \"))))(Tile((id \ - 6bdfb38f-de93-4876-bbe8-022c27d3e62b)(label(->))(mold((out \ + 6f7a1999-9d6f-4767-86c6-aca892609851)(label(->))(mold((out \ Typ)(in_())(nibs(((shape(Concave 6))(sort \ Typ))((shape(Concave 6))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 353c26c9-5fe4-4e23-90d2-b1a3afc4dd37)(content(Whitespace\" \ - \"))))(Tile((id \ - 7bb6e07e-5595-4d66-9372-56fdef1c0817)(label(Bool))(mold((out \ + 566f4b53-0079-4230-b885-b704f199eab9)(content(Whitespace\" \ + \"))))(Tile((id 75f34ff7-3eb0-45a2-bcb6-c80dfc4322a8)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 42ff50ab-8c2c-4f3d-af4d-5d2a0bf8add8)(label(?))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - f89ee9c0-d510-4374-822f-9a5eb871a98e)(content(Whitespace\" \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 54f4813c-bd28-4c1c-bce8-37fc823b157d)(content(Whitespace\" \ \")))))((Secondary((id \ - cb72487c-b3a2-4355-973c-eda6e6629972)(content(Whitespace\" \ - \"))))(Tile((id \ - d93e1d3c-1503-4fd4-9265-469568dc7aff)(label(fun \ + 1bc4f7e8-5d37-45fb-84a1-164182037d37)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 3a277475-2a5e-4d75-91fe-898d0fe552fb)(label(fun \ ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - 8e9eaa84-1980-49df-a8eb-375256e3a927)(content(Whitespace\" \ + 7ffdbb4f-4440-423d-965d-b1cb26f8b5a8)(content(Whitespace\" \ \"))))(Tile((id \ - d5a87173-b27e-4664-b6f6-a5ab393bb0bf)(label(b))(mold((out \ + e424ef5f-20a9-4600-9017-6135ca8df033)(label(xs))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 98b23989-7819-4d0e-9568-380f4a50c624)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 35022138-f989-47b3-8f71-79ee5281736a)(content(Whitespace\" \ + b5ba4eea-6c88-4bde-b86a-5a17ae6cda72)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 11bfcb65-ba5d-434f-aa84-aba21b65b95e)(content(Whitespace\" \ \"))))(Tile((id \ - e909e184-ef9c-4329-9dd4-768015c862b5)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - dfc0b1b2-b2e7-427b-b2e0-0c0c3a042bf1)(content(Whitespace\" \ + 364c17a2-7485-46af-8772-f73e829fcee8)(label(acc))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + e7631b93-098f-4a96-aa8a-892885041aa7)(content(Whitespace\" \ \")))))))))(Secondary((id \ - e25285d2-3ef0-4fc1-a72c-db5ddf07f61b)(content(Whitespace\" \ + 81ae59d4-9026-461a-9ab9-12b639d1b64d)(content(Whitespace\" \ + \"))))(Secondary((id \ + 7bd04498-e0af-4172-9805-a554da583bb8)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 74b796ff-8ea2-47bc-ba25-b6959b0032af)(label(case \ + end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + e6f86a0c-1bff-462e-b707-7bae9b209fdf)(content(Whitespace\" \ \"))))(Tile((id \ - 28c7908c-e262-4380-afc4-db24ef5f8d1d)(label(b))(mold((out \ + e84bab99-072e-4c84-a4b3-32bc1beac7bb)(label(xs))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 607388d8-3378-4b51-9a7f-8b7d9668dfe3)(content(Whitespace\" \ + 249628e1-613d-4169-8dc1-2303d71e83f7)(content(Whitespace\" \ + \"))))(Secondary((id \ + f8e3dda2-1e78-4bc5-b0d9-dc40c97d4353)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 1ddf842b-c79f-47d0-812e-7f19fa13b4a3)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + f6902e7d-d3d6-4c53-9b95-36dfd65c6220)(content(Whitespace\" \ \"))))(Tile((id \ - 1e7c7068-6952-4d3a-a24d-cfe1720cd7ac)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 4a80ae70-7a60-42b1-8ee4-906ad68625c6)(content(Whitespace\" \ + 4cb8381d-c1f2-42f0-a902-7ff589dc0767)(label([]))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 6b7461d9-d62c-41b0-b39d-1b666bf2c530)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 2203b15b-7eb8-4b87-80f0-c27bd16d418a)(content(Whitespace\" \ \"))))(Tile((id \ - bb91703d-865e-4da7-b4ea-6ab0168bee00)(label(true))(mold((out \ + 85acb14b-bd90-42e0-abb1-451a64fbedcc)(label(acc))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 87a2590b-ef12-40b8-82cf-831ce54e7605)(content(Whitespace\" \ + 58139475-6f74-4cad-9483-5a45a8df11d8)(content(Whitespace\" \ + \"))))(Secondary((id \ + 28a257b2-cda8-4c85-bccb-b7158853d432)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 8e103100-57ad-4fcd-8ede-b05d5d81689c)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + adee0183-2d69-456b-be3b-890965c207d1)(content(Whitespace\" \ + \"))))(Tile((id \ + 9e3442f1-33bb-4339-9517-9359d7effde4)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 5b89d595-13f5-4a60-92a1-858d451ec69c)(label(::))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 6))(sort \ + Pat))((shape(Concave 6))(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 2649c20c-fafa-4d83-be9c-a8758dbca824)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 7132cbb8-4b95-4f9e-9512-c4c6eb063280)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 519c4134-b611-4e2c-bc61-1ce1fc037a66)(content(Whitespace\" \ + 3ca8a690-01d5-442d-bce7-b2bbce396132)(content(Whitespace\" \ \"))))(Tile((id \ - 480ec920-3cbb-4a57-8c18-4bfb5f7b7585)(label(f))(mold((out \ + dc2bc1a3-26ff-4084-b75d-c6b5ec0c06d6)(label(go))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - e9396887-20a0-467f-ba0e-b3ada37e8000)(label(\"(\"\")\"))(mold((out \ + 7937bb45-a482-4b50-8c8a-f3bf253aeb09)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 4b4482fc-f137-4c88-83e3-14e58f1ccc63)(label(true))(mold((out \ + fcb103ba-e395-43d2-b2c1-36349b009a71)(label(xs))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - f7a9587c-a02d-4cdd-9a8c-4fb3c5713bbf)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 08433747-18a6-455e-a28e-16cd8ca12d3d)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 9ea79cd8-8fcc-4f7e-a6fb-3d685622ffeb)(content(Whitespace\" \ + \"))))(Tile((id \ + ba76e04c-c4a7-4359-b488-c84c02c7da51)(label(x))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 450edf6a-7f36-4b7c-9362-a2d87cf96ed6)(label(::))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 6))(sort \ + Exp))((shape(Concave 6))(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 2ef79443-022c-44e5-8cff-136df0e8e62a)(label(acc))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + ce2e7ff7-5983-4b57-85a9-d3a354cd0ff7)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 9d304647-c0a0-46d2-9218-c5fabd3515d2)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 3ca74191-18c2-47ce-b0f9-ac13d3ddb111)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 06db4c7f-c904-45aa-a6f3-0d671ae5011c)(label(go))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + b1c46342-5b86-4f07-ac01-764f9aa65444)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + bb598eb6-58a2-455c-b4a9-082552875559)(label(l))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 99ecd288-aa3f-4c46-b5d8-ebbf7bcd7c6e)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - e21366f9-7e34-4cc2-91fe-97b547efaf04)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - d3450794-e083-4bc3-8c39-d8bc120cfc52)(label(let = \ + 50192882-caf7-44d3-8784-e38f666223d7)(content(Whitespace\" \ + \"))))(Tile((id \ + 4816c709-5d3b-40f2-ad4a-43d1214be4da)(label([]))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + d0db2970-12ab-47fe-987f-bb2b819dccd7)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 3f8cd1f6-0971-44b4-b5b6-f3672bbd04ba)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 63de51db-d359-424b-bbfe-803ebcd2490a)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d2ed22f0-b1c1-4f76-829d-7e332a99a540)(label(let = \ in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - 08462db6-6625-4c95-8042-c53c96efd1fe)(content(Whitespace\" \ + 9522ff3d-260e-42e0-9d3b-9d6556078b5e)(content(Whitespace\" \ \"))))(Tile((id \ - 2fe1d1ee-8b06-4266-8ebb-498e75a798fc)(label(f))(mold((out \ + cdf00ace-af40-4383-9a06-7ab4a7b01f48)(label(List.init))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 79dde745-c7e1-4a32-96ae-c123339e98f2)(label(:))(mold((out \ + d82dd82e-4a61-4cf8-ba9c-6c92526c20e4)(label(:))(mold((out \ Pat)(in_())(nibs(((shape(Concave 11))(sort \ Pat))((shape(Concave 11))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 22664132-0459-4655-9515-f67ce37b3e07)(content(Whitespace\" \ - \"))))(Secondary((id \ - 75be864f-c108-4c59-bd87-096f8d494334)(content(Whitespace\" \ - \"))))(Grout((id 527d475f-3dd1-402a-840a-d61bb10bb04d)(shape \ - Convex)))(Tile((id \ - b7b6082e-0469-40ec-a80f-a7a34c2aa61d)(label(->))(mold((out \ + f572bf83-9426-4ba0-809b-8a4a69cdfdd3)(content(Whitespace\" \ + \"))))(Tile((id \ + 17b1e674-50fb-4fa2-a133-80a9f93cba6f)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 8a5db8a9-dd74-4281-b5e6-4aa5a66bb499)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + 112b3789-d9c5-4918-a059-ad1aa32d396d)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 414e9ed4-ee73-470a-8d1f-32165d6e56a3)(content(Whitespace\" \ + \"))))(Tile((id \ + 2b6dc0a9-23ff-416f-8a42-953f61667fcd)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 8674ace8-321e-452b-ad31-1bde8c49f94b)(content(Whitespace\" \ + \"))))(Tile((id \ + e267ccf7-f84e-4267-86e0-6cd1015fe22b)(label(->))(mold((out \ Typ)(in_())(nibs(((shape(Concave 6))(sort \ Typ))((shape(Concave 6))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 0b9c3818-d16c-412b-86af-335c4ce351b3)(content(Whitespace\" \ + 91c0f2c5-efac-47ed-9987-0e21c77843dc)(content(Whitespace\" \ \"))))(Tile((id \ - 4da3cd0e-7dd5-46d4-b9b1-d031b7ea89c6)(label(Bool))(mold((out \ + a43358c3-b3b9-44e5-8e84-85ae2297b261)(label(?))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - b0c1483c-8d31-47bf-8f2f-f43aa5884c22)(content(Whitespace\" \ - \")))))((Secondary((id \ - 3eab2831-982a-44e3-a1d8-09b8b659ac3e)(content(Whitespace\" \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + d93e0d0e-5001-4b1b-bc68-e635143f75c0)(content(Whitespace\" \ \"))))(Tile((id \ - 6d4d20a4-a534-49c5-9a32-76e09040eb1a)(label(fun \ + d45cbd42-5164-49dd-b2ec-1efb178179ac)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 8c44017e-c529-4edf-829f-a0c3ee966980)(content(Whitespace\" \ + \"))))(Tile((id f25122e0-f9ef-4443-a5a3-444dbbfb597b)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + f6d2e016-d0d2-4674-a7ed-20991fb0ae8d)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 8cc25d2c-83b0-4225-97ed-cdcc456410c6)(content(Whitespace\" \ + \")))))((Secondary((id \ + df34dd2a-9d63-4f22-a137-b4202d51b28e)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + b6460797-153f-4671-84dc-1b91e2b7ec5f)(label(fun \ ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - 7a04c6e0-2b87-470b-8593-609afeda4b4c)(content(Whitespace\" \ + 5566d7bc-8fa6-4b92-bf6b-d04c0da0d751)(content(Whitespace\" \ \"))))(Tile((id \ - b2dbb36a-f170-4317-9006-bb355cb2f29c)(label(b))(mold((out \ + 1691852a-c3a5-4d42-9532-76eda6d8ec44)(label(len))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 2d891a66-59e5-47bf-8d5d-4e81fd885dec)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 772da6b2-4737-40aa-9814-cf8e6a301175)(content(Whitespace\" \ - \"))))(Tile((id \ - 1b7cf3d2-9b01-4ada-b516-3cb6d7385476)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 379f6e7b-a8c3-4660-8303-9c3b0858d87d)(content(Whitespace\" \ - \"))))(Tile((id \ - 873dff3d-0bea-4edb-ac34-db16ac06ef8d)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - db991128-d193-4847-8938-4f806c8665fe)(content(Whitespace\" \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 36117c8d-b19c-4549-b941-26368e3aa546)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 3cb87da9-5698-4652-bc89-667e8f7cb69d)(content(Whitespace\" \ \"))))(Tile((id \ - b9d56fe7-3f54-4534-8bcd-49e2ef006a26)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 6a81ab4a-7186-474b-beec-0805abdbdbf8)(content(Whitespace\" \ + 54bb2a65-423d-471d-b1c0-e246ef1349a7)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 8ecf4330-1a2e-48fc-b77b-485415e7b6ba)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 1abe8e0c-f549-4125-ba51-5981e8fdc4ec)(content(Whitespace\" \ - \"))))(Tile((id \ - d9596c34-ab5b-4f96-8d74-5858bf8e8152)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 5a4fa3c7-7607-4774-b8a8-18986dc89193)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - e3950884-d2b0-40e7-b32a-01065fd32331)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 4f32e87f-a0e8-405f-a291-e397d64767a3)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 05ddc6cc-87c6-48c0-9626-94a4efa6b933)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 694066b4-70c4-4f4a-b6fa-bb51de900106)(label(let = \ + 70b2e4dc-02b3-4100-887c-78c5978188c7)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d89654de-6b82-4dae-9224-954d02a6067e)(label(let = \ in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - a3cb892d-00ba-4546-ad7b-7a0d789c7d51)(content(Whitespace\" \ + daa688f9-7229-495d-94f5-517b60ecb377)(content(Whitespace\" \ \"))))(Tile((id \ - 97ef53ac-fd0d-4bdc-a808-e9088abeffde)(label(f))(mold((out \ + e681186a-121c-4a5e-9417-717e80bc5195)(label(go))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 56b028aa-38c5-4edd-99f8-79e7759b8a1c)(label(:))(mold((out \ + 3d79ade2-1ecd-41fc-a965-01a240d3a393)(label(:))(mold((out \ Pat)(in_())(nibs(((shape(Concave 11))(sort \ Pat))((shape(Concave 11))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 17052864-ee4c-412e-8183-77ff429eb1b5)(content(Whitespace\" \ - \"))))(Secondary((id \ - e6307017-fc25-4f2c-8c4e-af9eb418e95f)(content(Whitespace\" \ - \"))))(Grout((id d1d34494-d503-42b3-b8a2-7df3e596d360)(shape \ - Convex)))(Tile((id \ - c18f12e6-5888-4299-969b-72b72a2fb3be)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 528c0513-d586-41db-804a-3b2951462da0)(content(Whitespace\" \ + b50c755c-5e5a-45e8-9fb7-809f03a2738d)(content(Whitespace\" \ \"))))(Tile((id \ - bbbfda1e-9479-4d8f-8d81-5e3947c324d9)(label(Bool))(mold((out \ + 2c167aaf-04b2-4f03-a9e6-aace29485786)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 15bcb599-a08e-4659-9723-065200ba7712)(label(Int))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 7558a507-f539-4c5b-a3ac-8549007de485)(content(Whitespace\" \ - \")))))((Secondary((id \ - fbc4b010-7a1a-470c-96f3-aaaad440f714)(content(Whitespace\" \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + 64b1a63a-eef3-4615-9ce7-7a9f416b9b22)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 8e44d461-3414-4576-b0f8-0048f6200a3f)(content(Whitespace\" \ + \"))))(Tile((id 57991a6e-02a3-46a8-a131-0a61d1719054)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 2d7da11a-436b-4121-9580-9ab10375b5d6)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 8fee1ce1-efae-4397-b800-bff02f3a311e)(content(Whitespace\" \ \"))))(Tile((id \ - 61ed8466-1264-49b2-aadd-6908f1a9d1f8)(label(fun \ + e4d86daa-6488-4f81-aeac-b0363155b250)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 83bd4579-fbd4-4d03-b135-e35b02a2ea00)(content(Whitespace\" \ + \"))))(Tile((id cf75dbd1-b9be-42a1-9cd0-c965586e2833)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + b69cceff-524d-488b-9dbe-b49aadb0f6e3)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + bab2df60-b074-49d5-bfc8-0595246fe964)(content(Whitespace\" \ + \")))))((Secondary((id \ + 7fa6aeda-9b5b-40b7-8cc5-85b594fe9311)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + b44fd13f-f176-438a-8921-0bbcd762e6e1)(label(fun \ ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - 1754e748-c92c-4a85-877b-933e6bf784ac)(content(Whitespace\" \ + 6167b526-509f-472c-8267-9b22d78ee989)(content(Whitespace\" \ \"))))(Tile((id \ - f56d749f-e0d7-4a1d-b695-8920cf16663e)(label(b))(mold((out \ + 6ff7d919-9aeb-468d-adc2-ac4f574de1fc)(label(idx))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - aba41e3d-8cc2-4126-8254-0afa3d63c274)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 75a04d71-ee98-4080-b655-0ab4fdab1634)(shape \ - Convex)))(Secondary((id \ - 358eb656-bf64-4f3c-8644-3a3ae97941b0)(content(Whitespace\" \ - \"))))(Secondary((id \ - 133f9e97-f882-4ddb-883b-7ca1638b7c19)(content(Whitespace\" \ - \"))))(Secondary((id \ - 7ac0a147-6efa-4d75-889e-ac486cf80490)(content(Whitespace\" \ + 4b62a39e-8c76-4d4a-a69e-d6852b5267e9)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 6bcb0a23-ab31-42a2-bc36-96187b14285b)(content(Whitespace\" \ + \"))))(Tile((id \ + b12143fd-5d08-4777-92b3-e1c877ac25c6)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 4f53724a-2db2-4fc7-b524-7d64786254cd)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 48cd780a-78aa-41a6-b5ef-b6a4037a943d)(content(Whitespace\" \ + e43c830c-501c-453f-abd7-a30ee0fa9c4f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 7ef06653-a039-4a6d-9bc0-a40629407ddc)(label(if then \ + else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 12))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + e667270e-7b68-4410-b983-80ba748f6801)(content(Whitespace\" \ \"))))(Tile((id \ - 4c72163e-7684-4e80-bbc9-155f9b7267a6)(label(b))(mold((out \ + 4d908db6-447b-4609-aaad-acc0adb5dc66)(label(idx))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - f998ac7b-9b23-464a-9cd9-1af495c9e983)(content(Whitespace\" \ + a2206f81-965c-468b-a1d8-942b9936e443)(content(Whitespace\" \ \"))))(Tile((id \ - f0cba194-e7a6-42ba-b4ba-0b095fff8574)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ + fc08c74b-03db-4595-8033-ef742daaa376)(label(<))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 3d42b016-55e9-4e64-9db0-0f9337180909)(content(Whitespace\" \ + ed744119-6d7b-457b-9684-6d9b850cadad)(content(Whitespace\" \ \"))))(Tile((id \ - 457f8f99-9f11-4c61-9d85-8ceeb02c5973)(label(true))(mold((out \ + 1b7a0069-6f8f-447b-b003-fd27803151eb)(label(len))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - c768e601-28f5-45c3-b14c-e6f70ed32ff5)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 808aff3e-ddc0-4f41-8471-8828d3304850)(content(Whitespace\" \ + 092fc056-8708-4854-8ebd-a1a8db981bf1)(content(Whitespace\" \ + \"))))(Secondary((id \ + ccda371f-f067-41b4-81b9-2292b032b525)(content(Whitespace\"\\226\\143\\142\")))))((Secondary((id \ + a0e90769-8d9b-46eb-86f1-18b1fa06f830)(content(Whitespace\" \ \"))))(Tile((id \ - ca7da666-83be-4b0a-b52a-9d30e756a956)(label(f))(mold((out \ + bd71ccd6-a157-4f49-8fdf-1c7cbfbb39fa)(label(go))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - d154ac67-5709-4d9c-8fb4-b5519a268524)(label(\"(\"\")\"))(mold((out \ + 36908065-2f81-4e5c-98d5-821a4df72e62)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 104ec290-6e09-4845-9b66-1e5dd0a27643)(label(true))(mold((out \ + c7370c4c-7364-4bd8-b21a-ccf776719c63)(label(idx))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 8de6cf6b-df21-42dd-a0a4-a00867eb53c0)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + f033fadb-b57d-40ff-b70b-6ecb50bfae14)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 1e86c27e-f614-4bf5-b87f-3616ea5fde1d)(content(Whitespace\" \ + \"))))(Tile((id \ + f953cff6-8c0b-448b-96ba-1d34d070bb59)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 2be8ba80-e790-4f68-8b6c-0c71378796fd)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 9d184ced-d31c-4bc0-bd4a-0907727ff692)(content(Whitespace\" \ + \"))))(Tile((id \ + 9fd652f3-b4fb-4a3c-926f-60619a28d5ee)(label(xs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ + e40011bf-e51c-4614-8cee-b3306844096f)(content(Whitespace\" \ + \"))))(Tile((id \ + 4a5bf7f4-3373-413f-acc0-fb440a220944)(label(@))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + e701bff0-7c83-417c-b49d-83c0910fcd20)(content(Whitespace\" \ + \"))))(Tile((id a1ac016a-007c-4657-98ee-a774ca53185c)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 031f2a0a-0504-40a5-9840-0cae94a98628)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 25f7fc11-f0d7-4f92-bf97-8a30b2a6b6fa)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + cf47c9e4-24dc-49bd-9fce-f29f71289533)(label(idx))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))))))))))))(Secondary((id \ + 321d0fee-ae88-4a7a-b691-078bdb1bb107)(content(Whitespace\" \ + \"))))(Secondary((id \ + 60b634aa-58ee-4e0d-9e90-c54665eee21d)(content(Whitespace\" \ + \"))))(Secondary((id \ + 15d32806-00a0-4c97-8f2b-036119933a5f)(content(Whitespace\" \ + \"))))(Secondary((id \ + 2d52d1e4-477a-4cd1-a5fc-74611ef5a8bd)(content(Whitespace\"\\226\\143\\142\")))))))))(Secondary((id \ + 1656eb2b-20ed-4f85-87fd-7860ee323f4a)(content(Whitespace\" \ + \"))))(Tile((id \ + 6d8c7b3c-209f-4ba4-9aed-9702988b22b6)(label(xs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ + f5525f6d-4f30-4b2f-9cfd-0a8ea8303aa5)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 9958b93c-93a6-43e8-839b-9954604213b5)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 147b368c-461a-4244-b357-73eb05a461f5)(label(go))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 876f8e4a-4e45-49f3-8f3d-2addb0e641a2)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 0ca23d96-1798-40e0-8532-8bd692fad6b3)(label(0))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 4fe18fa3-bff1-4575-b06f-93015ae3553b)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 9ca66412-77c9-4ecf-96fb-b4a0c7a886cf)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - f3edd654-9d34-46d4-917a-a7913eecdb81)(label(let = \ + 0cb90707-54c5-4025-a103-af3206524ef5)(content(Whitespace\" \ + \"))))(Tile((id \ + 61b1e80a-5fbd-46bd-b730-b626a14a8d7c)(label([]))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + a14c6a2b-cc94-45d1-87de-44e26a0f4ae3)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 9527d322-e16a-4de7-846b-e114883052d2)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + c5a9978d-67c8-425f-80c8-d8301b121094)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + ea4713f4-225e-46f7-b748-020e8f83d944)(label(let = \ in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - 48b45298-851b-47ba-9bbd-886e14b38a6d)(content(Whitespace\" \ + 2a377105-3d95-4a47-b38c-86c76c20c76e)(content(Whitespace\" \ \"))))(Tile((id \ - 0c2cd033-a38f-49bf-8f57-8879c4a74478)(label(f))(mold((out \ + 4dc81d60-0d25-4048-aec3-f688be616817)(label(List.equal))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - dd92c069-4f1d-4349-bbea-0bb3b22c5edd)(label(:))(mold((out \ + c65ebb88-58e6-4abd-81f2-6732c2490a10)(label(:))(mold((out \ Pat)(in_())(nibs(((shape(Concave 11))(sort \ Pat))((shape(Concave 11))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 9492e529-df90-4edd-b524-1d2fb30369a2)(content(Whitespace\" \ - \"))))(Secondary((id \ - 2e2cf058-e06d-4bf7-b828-190af11f6642)(content(Whitespace\" \ - \"))))(Grout((id 15ccf080-e782-45af-84ad-f78c9de1ea15)(shape \ - Convex)))(Tile((id \ - f18005d4-f5ca-4b9c-83ed-283b798c5c98)(label(->))(mold((out \ + f7628a9f-2699-41df-9e95-1cd4e4c82218)(content(Whitespace\" \ + \"))))(Tile((id \ + 6ac20871-8d4e-42b5-9a93-13d235e415a0)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 28d4f866-0538-47ca-9611-adfa51af5b1b)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 93919c8a-b2dc-4cab-92b6-726fb1b97ec7)(content(Whitespace\" \ + \"))))(Tile((id \ + 0f180db5-ee5b-4bde-b2be-dd75a0e05ea9)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 164ded3c-5fbe-4f80-a231-e41280bed1bd)(content(Whitespace\" \ + \"))))(Tile((id \ + 6aac25b9-a0f7-4372-82a0-859e062465c8)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + 7a840a55-8e77-49f9-8665-1f7a17a9924d)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + eeb881ea-6a42-40df-89f7-f763beccb1f0)(content(Whitespace\" \ + \"))))(Tile((id 08c402f0-5582-4c04-83e9-cca6e516dc42)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 62113d59-9b27-4dd9-90c0-66d4f4dcc064)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children()))))))))(Tile((id \ + 819c6e5c-d476-465d-9164-9f3917127b19)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 85e058b1-ed51-4bc8-ab53-f9278b3d5a6e)(content(Whitespace\" \ + \"))))(Tile((id afae3bcd-4532-4eb8-b6f8-1e474f135261)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + ce085409-817f-4664-880c-e09b839fc47e)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + ce38923b-bb7f-4a55-adfe-61c330948792)(content(Whitespace\" \ + \"))))(Tile((id \ + 53a57ce5-cc5d-42fa-b7a3-0f765ef0c41c)(label(->))(mold((out \ Typ)(in_())(nibs(((shape(Concave 6))(sort \ Typ))((shape(Concave 6))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 39c1ad08-f549-4d38-a0b9-9ddbbc2a5f57)(content(Whitespace\" \ + c79c78c6-7a6a-41cd-b323-cbe2f2637a3b)(content(Whitespace\" \ \"))))(Tile((id \ - 35096049-b682-48bf-9450-9fb44612578a)(label(Bool))(mold((out \ + 9010619b-93dc-4612-905b-61f61c54ad8f)(label(Bool))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - e2220176-cec9-4e88-bcc0-acd6bad55f9c)(content(Whitespace\" \ + 8e3e0546-e3cb-4335-8c32-64dabbba61a4)(content(Whitespace\" \ \")))))((Secondary((id \ - 1fdf07c6-0e73-4189-9cce-afc15dd53309)(content(Whitespace\" \ - \"))))(Tile((id \ - 55c8a7f9-eac9-4edb-bf31-adf6688b9c49)(label(fun \ + d769b97c-9df3-4d2d-911c-a565e9953760)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + a65db47d-6d80-4aff-86e6-f442ebc5ab28)(label(fun \ ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - a358e631-40da-40ff-920e-82620cf0e895)(content(Whitespace\" \ + 1fd38048-5628-4ae9-8a7c-40a3738053a9)(content(Whitespace\" \ \"))))(Tile((id \ - 18328c4a-5078-475d-bb8c-d4e90a1b0497)(label(b))(mold((out \ + 45c847e3-8cdd-4ed3-90fb-ed96f9f80c56)(label(p))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 7ce5810b-541f-460d-9476-252c7e65ff28)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 93b31a11-1151-4f2b-8e4e-0a6b37d7d740)(content(Whitespace\" \ + 3f869e54-e168-4a68-9330-b4a29c1d8f59)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 01c3889e-8ebc-4e93-bb39-c4547a17c8fa)(content(Whitespace\" \ \"))))(Tile((id \ - 48f0b576-c989-4659-bb0b-4273c9b9d310)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - e067f2d6-080e-4645-9b29-844db6dee9a8)(content(Whitespace\" \ + 4d179618-9a57-4310-b929-e14a87b102da)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + c9668aa4-8f14-47ff-832e-d9d06bdbf844)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 92e6718d-d55b-486c-8b07-64c236f579d6)(content(Whitespace\" \ + \"))))(Tile((id \ + ea2620a2-c8cc-4747-9e2a-f03c9d375ca0)(label(ys))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 0f722992-7343-4e50-8620-3a2d7b2b1625)(content(Whitespace\" \ \")))))))))(Secondary((id \ - c9253d66-4faa-474e-a6af-b66d3424b61f)(content(Whitespace\" \ + 3f14c99f-3cc8-4fae-925f-041b478c107b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 82e548eb-f2ba-4b90-b54a-9dbdb9633898)(label(case \ + end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + b63d7e77-9dea-4dbd-aedc-c337296cf319)(content(Whitespace\" \ \"))))(Tile((id \ - a72a1cfc-45b0-43ab-9836-b088e976abe9)(label(b))(mold((out \ + 04cf80da-cb45-4ee1-890a-091313446f4d)(label(xs))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 7157f70b-705b-49f8-9d25-ae2f34ec0334)(content(Whitespace\" \ - \"))))(Tile((id \ - 42e8023c-f381-489f-88b7-706cb8eb8f4a)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + b95f4325-2ec4-49f5-b5e1-a33e80062f66)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 638378c9-b559-46ec-b39a-1d3583d613ff)(content(Whitespace\" \ + 48d0f466-ca46-43cd-a14d-1df2ec91f9c4)(content(Whitespace\" \ \"))))(Tile((id \ - c8c3c6ca-c1a6-4cbd-98fc-88970d20e004)(label(true))(mold((out \ + 4605e1ba-0dac-4b9e-b24f-f50c040e76de)(label(ys))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - f5e324ec-914b-44ff-9be2-84edcbbe4e83)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - eb3d2f44-a836-4d7a-9a09-36b6fbbcc3c9)(content(Whitespace\" \ - \"))))(Tile((id \ - d22c1b02-a31c-4df4-a4c2-054a58c409b9)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 71ca34e9-9611-4e2a-821f-ab7b4c75c2fc)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 6eab7e2a-5b54-4189-897a-d703a254dd37)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - c74ac4bf-c8e1-4cb0-aecd-951a46b6f2ed)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 1e4cb0f7-0b78-4ce6-ad15-b3fe169e1eee)(content(Whitespace\" \ - \"))))(Secondary((id \ - 24f901a9-f6da-4a53-a22f-5f05c0e30da9)(content(Comment \ - #ERR#))))(Secondary((id \ - 93a274cd-cbc9-49fd-ae6d-3f87e7f7015c)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 8106b070-02e2-447a-8409-2156ceb7128f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 9edc746b-d54c-4cf0-9576-68bf4e5ca2e0)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - b1972565-5233-4b9f-91c9-a2fae3c6a59e)(content(Whitespace\" \ + e09c890b-3be2-4fa3-8939-573c795a6d81)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + e8cc0596-0c2f-4251-988d-9bae654d48c4)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 8f85ccde-6bee-44ae-a9e3-11fd7cd341af)(content(Whitespace\" \ \"))))(Tile((id \ - f87ffd56-048d-404e-aa36-d0de2fd4e5cc)(label(f))(mold((out \ + 94406503-b66e-4f1c-8957-3f5b6143aa17)(label([]))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - b438fd18-ba07-497f-b4f3-777060017d7f)(content(Whitespace\" \ - \")))))((Secondary((id \ - f5cff6cf-3e3e-4bf3-b5d4-78928ec0b317)(content(Whitespace\" \ - \"))))(Tile((id \ - cbbd8d0c-e584-4c09-b213-894971bc1faf)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 1127e605-9044-46c9-bb28-f6852d7947d7)(content(Whitespace\" \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + a2d75285-3dcf-4a4b-8b25-110717eaeeec)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + b0cd8fe0-a6dd-4e8b-8453-e3099978204b)(content(Whitespace\" \ \"))))(Tile((id \ - 12846edd-8ef2-486f-a3dd-465462fe4a6c)(label(b))(mold((out \ + f3e3e42d-f756-45bf-bfd5-186468d107dd)(label([]))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - f6613404-b691-4a7b-b752-bb166bbdcdb0)(content(Whitespace\" \ + 537e128d-1e2a-41d7-b80d-33202734c5d6)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 00003fe7-fc85-4b35-9f62-18293b2cbda0)(content(Whitespace\" \ + c1639732-ccbf-46a4-ae64-d77a5f84fa30)(content(Whitespace\" \ \"))))(Tile((id \ - b4d0244e-e948-4235-892d-ac5bf023ce66)(label(b))(mold((out \ + 9157beb3-1229-43c0-9694-7135027842af)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - a80b2c39-eb3c-48a0-a2e3-17923969fe44)(content(Whitespace\" \ + 93555599-2867-406e-821c-aaed13a445c1)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 709bf344-9c8d-4666-882a-3492fc961ee3)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 6501b371-41ca-4f8e-bb8e-82ba8157a8c2)(content(Whitespace\" \ \"))))(Tile((id \ - bddcafce-7849-45b1-af50-889c78a390f0)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - aa1221e7-143d-4d1c-b409-a06055fd5761)(content(Whitespace\" \ + 297134c2-865f-47c3-a74d-8c44795a2f4c)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 6c6b68b6-f61e-4614-98c2-17bc8819afed)(label(::))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 6))(sort \ + Pat))((shape(Concave 6))(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 12746fa8-8684-473d-8fe2-d80055d05667)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 166b6dcc-712c-4945-92e9-4598a56ae092)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + b855cd4a-2945-410b-a2c3-e4b219db2bfc)(content(Whitespace\" \ \"))))(Tile((id \ - 5ba03980-b852-4885-a04e-cfa57275e8d9)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - f8bc12af-f910-4824-b77e-366be5909df2)(content(Whitespace\" \ + 53d297dc-5f13-4696-918d-ce7bb57d7ad6)(label(y))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + be4cc474-d8cc-4be6-866a-e9c17f00f470)(label(::))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 6))(sort \ + Pat))((shape(Concave 6))(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 36d8093a-5f90-421d-a397-f8fe0b882fd9)(label(ys))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + c4e78854-f871-4bad-80cb-e0e9d46dd6bd)(content(Whitespace\" \ \")))))))))(Secondary((id \ - fb7af25f-7598-4f40-802e-a8f1d57365c4)(content(Whitespace\" \ + 22476d1a-e5ce-48d6-9f73-a0b38c835bad)(content(Whitespace\" \ \"))))(Tile((id \ - 820cd996-1610-4f5e-a266-540960f4c4dc)(label(f))(mold((out \ + dcf8e1da-8048-481d-b565-327e9e77b38c)(label(p))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 1333bb7c-855b-4a5d-bcd5-827171f09e6e)(label(\"(\"\")\"))(mold((out \ + da36b180-943c-4cf8-8bbd-37805e490d08)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 1afee2ad-9ad4-4767-822d-d87e99720936)(label(true))(mold((out \ + b75fa540-89dc-49ef-be61-821771a476e0)(label(x))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 7dd36fc8-ee7d-4e2e-8b4c-606f3a31297a)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 6bbe7eaa-ab7c-4cab-9a5d-4c93114c9c59)(content(Whitespace\" \ + \"))))(Tile((id \ + 06e02d92-a189-44a2-be14-a3fb39e8d1e8)(label(y))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort \ Exp))))))(shards(0))(children()))))))))(Secondary((id \ - e967f122-900e-4e89-8a01-57ff820ee1b8)(content(Whitespace\" \ + 1377c9ab-bb89-4363-b190-8b65a89b097f)(content(Whitespace\" \ \"))))(Tile((id \ - 232cd412-63a5-4d1c-98e6-c5bb5ffb5eee)(label(&&))(mold((out \ + 06bba119-24fe-47c5-ac38-eec6ec838cfb)(label(&&))(mold((out \ Exp)(in_())(nibs(((shape(Concave 9))(sort \ Exp))((shape(Concave 9))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - c3b0d2f8-eb19-4af3-af20-17633157c84e)(content(Whitespace\" \ + d8b1c1b2-733d-4fa4-bec5-fd30bea56360)(content(Whitespace\" \ \"))))(Tile((id \ - de6ced50-9af1-424e-809e-cbf7e7e7e24b)(label(true))(mold((out \ + 77b374b1-385b-45d0-b160-453b901d28df)(label(List.equal))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - e643707e-b4b7-4f3a-9f1c-e7936f41e676)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ + 0b5c1730-46f5-4a16-877b-d601fd629980)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + e9b274af-5415-48c9-a85f-c1177ed1b644)(label(p))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + d1f69bd3-8adc-4730-81d1-1209d5d945a1)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 883179cf-135d-4b83-8d12-d2409f8a21cf)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 3b2da582-d9f3-4e55-8e2e-1508daa5b3b5)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 0a555ee8-3ee1-4228-bf5b-0d7db686e897)(content(Whitespace\" \ + c6c7ee3c-1628-463a-9d99-34d4268990f4)(content(Whitespace\" \ \"))))(Tile((id \ - 14bd7839-8eee-43ad-a004-dedecf68e840)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 6d5e0294-eb7f-418a-a349-a2bbe3a42a20)(content(Whitespace\" \ - \")))))((Secondary((id \ - 4f240250-1391-4dff-bb8a-1d3f48478741)(content(Whitespace\" \ + 070cf058-fe13-4563-810c-727d60cef601)(label(xs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + fae0483e-7dba-4b8c-963b-58f3ad33a213)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 3b1be360-20e6-4c68-880c-5fdc1ef277ff)(content(Whitespace\" \ \"))))(Tile((id \ - c8f0ad05-abb6-49bd-91cf-d0a16b72fd75)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ + 02346bcf-23bc-4fe1-b230-deb214db55b9)(label(ys))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 9dfe4d3b-ebf6-4de9-b2a2-9a5cfb84a768)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 87a1956a-2d58-4fa9-b2b1-37ef5e51a68f)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - d66d5683-d914-4dc6-b7d5-a19bbc0af995)(content(Whitespace\" \ + acffddd4-b22a-4361-8f45-bd0fd12f0959)(content(Whitespace\" \ \"))))(Tile((id \ - 142a2136-43c7-4518-905a-4a31ef1833db)(label(b))(mold((out \ + ef582fcc-869a-4c0f-a255-bae223cefe1a)(label(_))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 77c57bb0-6a06-474e-bc0d-ee283bb8c8ad)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - bd14c4ae-02a8-42d9-b247-2e5547436b33)(shape \ - Convex)))(Secondary((id \ - 1b30100a-435d-447a-bf76-f4f09d78eec1)(content(Whitespace\" \ - \"))))(Secondary((id \ - d0e81340-778c-4ba5-81bd-7f05a8afdde2)(content(Whitespace\" \ - \"))))(Secondary((id \ - 44d45046-c1de-447a-a6ab-6d6b8d4a854d)(content(Whitespace\" \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 8b8d85f1-f395-49d3-b462-f7211a00a321)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 62fa65ea-81cb-4476-88b8-a4bde7674ceb)(content(Whitespace\" \ - \"))))(Tile((id \ - e43f4d29-9356-4316-9034-81bd15301d71)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 8019195d-613e-4a8e-a0b3-a7c577861ea9)(content(Whitespace\" \ - \"))))(Tile((id \ - b75f7bf5-e751-4ab3-9d71-3937cef6fe1c)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - f48e9313-1406-4f84-846f-03b25a473d67)(content(Whitespace\" \ + cb8b289b-9031-4ef1-bd9f-2a0f04ba770d)(content(Whitespace\" \ \"))))(Tile((id \ - bc344eca-3cf8-4f71-9b80-9cbefd835a21)(label(true))(mold((out \ + e0751a61-e77c-4927-9b0f-f1d6441d0d17)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - fa5b2245-39df-4d97-b5f5-80ccd7615228)(content(Whitespace\" \ + 58e6d8dc-1318-4d2e-bfad-a694cc968300)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 4f2129ef-0318-4ca6-b5e0-655b969854d6)(content(Whitespace\" \ + 88945796-833d-4961-82f0-90c8997966b2)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 79accfb0-cd05-4ebc-8c3c-8841093d6e5d)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 306b17fc-fa7d-4a17-875d-f979a6d23095)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 9b07968a-a2e3-4a60-a1cc-c50c4b7afc02)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 6ec6f96b-c2e3-48d1-a4ed-a24da88dc1a1)(content(Whitespace\" \ \"))))(Tile((id \ - 4a4ed116-ca13-4cfc-b767-a231cd11b1b1)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 5f2b05eb-a2de-41fc-b7d2-9dab487365e7)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - a94f2393-025d-4798-b63c-48934ba349c8)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 2cb9581e-59ac-43e1-8cb7-2556aad2954f)(content(Whitespace\" \ + 759d4a72-4ac3-4029-929e-862bae042914)(label(List.fold_left))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 18a9a1ed-3946-4277-94ca-b85c05dea227)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + fff691eb-c01c-4dd2-831c-17a10170032c)(content(Whitespace\" \ \"))))(Tile((id \ - 1f4903a4-e48f-40a3-bd5b-974a07b9c5f4)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - d8c418aa-ab2d-40a4-90c8-f26b9c337273)(content(Whitespace\" \ + 2b5de1e4-c668-4426-ad20-fad6ec7c71fb)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + c475f098-166b-4277-a700-46a8c34ce88a)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 8308c34d-d97c-4f72-a339-ea2f9eebc123)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + dc4d83df-930c-4886-b8d2-62fe272a8301)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + fad2c0f5-2cc2-4a4c-9979-81355588930d)(content(Whitespace\" \ \"))))(Tile((id \ - 87d4c21c-3df7-4b91-a381-e8ba84591c1d)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 9cf3d798-b10e-45f4-a5b2-7d268897692f)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - e4075d1c-28d4-4166-8291-de1d3af67fb5)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 6f2165dc-3f61-4e1e-8789-0330f088b39d)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 839c814b-e1f0-415d-a7d0-672f3253a2b7)(content(Whitespace\" \ + a8de5723-0adf-4d56-a1cf-ebbd7c6a251a)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children()))))))))(Tile((id \ + ee8b823d-1f6c-4f12-b49a-917790c4a0e3)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 7509608c-b99f-494e-9921-a0f5a4c8b991)(content(Whitespace\" \ \"))))(Tile((id \ - dfc577dd-8a74-4879-adde-0aa4ae95c94d)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - aa3a36cf-6347-4722-a5d1-09711312efd4)(content(Whitespace\" \ - \")))))((Secondary((id \ - 06ddb22b-3499-457f-91ed-05add3c22ee0)(content(Whitespace\" \ + 475aec39-dec3-41c5-8ef4-f0aebbc892d5)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + 4b766337-7ddf-4f8e-8ed3-6b6d9566b84b)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 7f6a810d-6152-4242-8e25-1f164281e6cb)(content(Whitespace\" \ + \"))))(Tile((id \ + c29d5285-24ee-4c86-b6c4-4bec7c418d51)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + 5b34f282-556d-4664-9cab-ec6c1e6057f2)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 60635aa6-ea36-476e-aceb-c36de3e79cf1)(content(Whitespace\" \ + \"))))(Tile((id f04dfaca-6fe4-49f6-98fa-c2fe45203ed1)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + eb99e501-56ce-4135-a38d-31a519da0808)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Tile((id \ + 6a134273-0b4f-45b7-b8f7-7567ec7ed8c8)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 5e2e53ee-5590-4726-904a-32c473e0ff1c)(content(Whitespace\" \ \"))))(Tile((id \ - 29786d68-5467-47af-b47d-0e740f4c9a16)(label(fun \ + 543e464c-a67d-4667-908a-baca238d5a14)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 4311ecec-0243-4edd-8829-a084af140932)(content(Whitespace\" \ + \"))))(Secondary((id \ + 01d86f3e-5227-415d-9c1e-807165bb88e7)(content(Whitespace\" \ + \"))))(Secondary((id \ + 1bdc8bad-9443-4a51-85d0-840efbf681bd)(content(Whitespace\" \ + \")))))((Secondary((id \ + 4bffd7c4-d0de-423b-a9b9-bd4bf60c92c8)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + f9be5416-84cd-43d2-ada4-c21817c21367)(label(fun \ ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - f37e9a6e-4bb1-4e67-8d50-6fb2a14a8bf4)(content(Whitespace\" \ + 09318fe7-97a2-4649-855a-19c02f5ad731)(content(Whitespace\" \ \"))))(Tile((id \ - f3ed678e-f223-4cff-9b59-8b8a7a6b9cd3)(label(b))(mold((out \ + 078f93f6-5b13-4273-9110-7554586a1c8a)(label(f))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - f57a1cef-e80b-40c3-8d30-c57c67d720d0)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - dcdca7df-b2ef-4e82-aded-efcc9fae3b6a)(content(Whitespace\" \ + 8706cfcd-bb5d-47d3-be2e-20d554014ace)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 3d48e8d8-ad76-4c5a-993c-94345fef9c82)(content(Whitespace\" \ \"))))(Tile((id \ - 758f83e9-d647-4d54-a6d1-35deaa585f05)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 0f584200-d83e-4110-aa0c-9e52a2b137c9)(content(Whitespace\" \ + 236299cd-3589-430b-b205-48b18011035d)(label(acc))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 47b9e450-696d-4883-badb-5237b5b3359e)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 2b70b844-1b2b-47ba-99fb-05c70fe74c86)(content(Whitespace\" \ + \"))))(Tile((id \ + 82736238-c574-44e9-8174-78ce30bea95f)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + aba777fa-27c0-4afe-8c59-2ad789b42a97)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 504dec65-6792-43c3-8321-1ab79125297b)(content(Whitespace\" \ + 19bad887-5905-4679-8140-f0df1e42ec32)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 441ad9fa-466a-435b-839f-04faba2f2773)(label(case \ + end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 2ddb3bca-4b63-41d1-ac91-ba8d63f9708e)(content(Whitespace\" \ \"))))(Tile((id \ - 31c5e7ae-c7a9-44a7-ba7a-78bcf230dd5b)(label(b))(mold((out \ + 20d4f35e-f33b-4f23-a3aa-7f4225e9761a)(label(xs))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - feb1b848-deaa-4736-99f0-4beccf61a5bb)(content(Whitespace\" \ + fcc44e94-9843-49ee-bc3c-8b2482ae7a87)(content(Whitespace\" \ + \"))))(Secondary((id \ + 1ffbc47d-3bdd-4a83-8c5d-58a844cf8428)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 590001ef-4333-4f65-879d-5146f017b2a9)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 8e936fff-d96b-4c0f-896c-dc97a1205fe9)(content(Whitespace\" \ \"))))(Tile((id \ - ac41ac6f-2360-481c-9e37-7bf709f793f0)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 353887ee-58db-4778-a1f4-292626241948)(content(Whitespace\" \ + 73e8fab8-4175-4df1-8d48-93d23a4e7028)(label([]))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + e5fc1733-2d5a-4ce4-8597-6ff5a0f2a223)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 13843c11-0f38-4a33-8fbd-e4bae3910b5c)(content(Whitespace\" \ \"))))(Tile((id \ - cee49f88-02ea-419d-b943-5b1d94c2165d)(label(true))(mold((out \ + fdacec90-a835-44db-9c77-42caab5d1e73)(label(acc))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 6c317419-f723-4623-99f0-078dbaeae142)(content(Whitespace\" \ + 363cc94d-5047-4f02-ad80-87ce52fdaa04)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 3b881cf2-0b7a-47c6-8074-a94248894539)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 9d1e8fbb-0e87-44ae-bb45-af6d579fc608)(content(Whitespace\" \ + \"))))(Tile((id \ + f0999940-1120-4468-8ce5-edb68cdd4b15)(label(hd))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + fd1371a3-0cc3-48f2-97f5-6055077b7b54)(label(::))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 6))(sort \ + Pat))((shape(Concave 6))(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 72e84b09-4e13-46f6-afa0-24cfd7e91145)(label(tl))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 6ef13b89-fada-4a76-9024-3fe663616946)(content(Whitespace\" \ \")))))))))(Secondary((id \ - babf0e4d-228d-4726-9a14-ae21b5edc6c0)(content(Whitespace\" \ + f62c078a-dcaa-47c0-8f99-30de266ef37f)(content(Whitespace\" \ \"))))(Tile((id \ - 2e2eea74-5c81-4fe0-b987-f952f86e01ed)(label(f))(mold((out \ + 7ea20e65-d401-4b5e-9e95-5f22b485104e)(label(List.fold_left))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 10511c27-d376-4ed7-a46b-113b5b6a9dfd)(label(\"(\"\")\"))(mold((out \ + 22997499-65fe-42a8-8192-464acd040e6d)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 888ba43d-2657-4274-a150-e3ec98013f10)(label(true))(mold((out \ + dc15a434-21ca-4094-9a56-d2bf20894f15)(label(f))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 50cd1923-dda8-4f7f-8f5b-d320681cc050)(content(Whitespace\" \ - \"))))(Tile((id \ - 5d023581-7000-44d8-902e-884f0ebadeb3)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 55f295a2-9cd5-4cf2-bfd5-d170bb41193f)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - ba1de608-148d-4189-b19b-7f4c638f2685)(content(Whitespace\" \ + 8c526aa6-d3ec-4150-9b16-4ba4c45deb33)(content(Whitespace\" \ \"))))(Tile((id \ - 277903d5-b80a-4d2c-966f-74cf8859bbe1)(label(true))(mold((out \ + 4cb064bc-60b2-49f6-960d-ba165c9596bf)(label(f))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 2355d66a-e991-40e3-bfb0-ba8a19f25b30)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ + 079d8a1e-15b4-4f19-9112-70f943c5efa9)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 5c8cb949-8707-4638-86c2-425ef28fddda)(label(acc))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 332155c7-d736-43f2-a8cc-8e9b58844e7f)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 8cd62e8e-a681-4e84-9392-c4fadbec7779)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - e919bc9e-238e-4e1e-b7a3-b36d823a844a)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - a264266f-c818-4800-987f-8f159a22edd9)(content(Whitespace\" \ + 29a5531f-ed12-4808-ad09-2bf5211d3728)(content(Whitespace\" \ \"))))(Tile((id \ - cb8746e0-8bb3-46c3-abd0-139e174dff49)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - a33ede3e-f25d-4bf2-b792-3b362e7ffe53)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 366cce6a-e675-412a-8dfa-6f649470c506)(shape \ - Convex)))(Secondary((id \ - 08c165cb-2e48-4998-a60e-1cc513301278)(content(Whitespace\" \ - \"))))(Secondary((id \ - da19d4c1-9f19-4e7c-b57e-1e1e3952eab0)(content(Whitespace\" \ - \"))))(Secondary((id \ - 4ccc0f28-a241-4e7f-b2d9-749160995066)(content(Whitespace\" \ - \")))))((Secondary((id \ - 4c9cab9c-b008-4dfc-b736-063873ed49d6)(content(Whitespace\" \ + 2ad10712-5ec2-4358-8497-5d99bc9c8f50)(label(hd))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ + 738f58ab-ee3c-456b-90d4-afbc2f2e4bcd)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 60f6ff93-c4dc-40b7-8823-4fcb20aba9fd)(content(Whitespace\" \ \"))))(Tile((id \ - 1e8b20ae-6b08-4fe5-9f4d-984426b53013)(label(fun \ + 4c27407e-4cb2-480b-8668-b5d3b6be523c)(label(tl))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 4b434ce9-58d0-406b-acbd-0f3fd270cd8b)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + d2bdda77-4a24-42d0-bb9b-ac0d29b95c36)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + cb1a0a21-5263-4fbb-81e1-40670a992fcf)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 18810ad0-5193-4365-abc4-58d900ed75b4)(label(test \ + end))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 0543e40f-7231-4c7e-a3c3-d30f5fbcf49d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + b33ec56a-11f7-4b4b-a529-84fb05507bd1)(label(List.fold_left))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 588a445b-c069-4dfe-8d1e-c92c98a266e6)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 3a56d226-84c6-45cd-bb34-d11ee69b487a)(label(fun \ ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - a5497755-fe99-4b6e-bfa4-2b506ae94ed3)(content(Whitespace\" \ + 705919d8-223e-4994-aae9-1d180ccbf7bb)(content(Whitespace\" \ + \"))))(Tile((id \ + d379c978-4ff4-4246-8a68-1209a8204c90)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 394d0922-bd87-4077-9653-789bfa060603)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + ba88dcda-e1f4-4d70-ac6e-ee9a3c3e8a8b)(content(Whitespace\" \ \"))))(Tile((id \ - 32898186-883f-4598-bf5b-ba99c4fd7441)(label(b))(mold((out \ + 00113413-8b98-4c9a-b4b1-664179ebe5b9)(label(acc))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 31b7f030-673a-46d2-91a5-802c5d5c0050)(content(Whitespace\" \ + 0c703f33-9902-449a-b0b5-61c261285ba9)(content(Whitespace\" \ \")))))))))(Secondary((id \ - e02d502c-b1f9-4ffd-b24e-048db75550fb)(content(Whitespace\" \ + 7946a9d7-3986-40e7-8079-b5c35efb5e6b)(content(Whitespace\" \ \"))))(Tile((id \ - a01655cc-bdbe-453c-a35a-81012be7c308)(label(b))(mold((out \ + cd651513-786b-437d-85a9-b9f69029e566)(label(x))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - c1a0baed-c8a2-429d-833c-6ed12fbebbb2)(content(Whitespace\" \ + f3498607-6a46-43d9-bee2-87790e596bb3)(content(Whitespace\" \ \"))))(Tile((id \ - e57b24c2-2862-4bbd-a3ea-b16447fefea4)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ + 947def8a-69d5-4152-8db6-caec2c38d78a)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - c4a4a8f9-4449-4923-9065-f12099c43b50)(content(Whitespace\" \ + 7402f671-116f-42cf-8236-4b01ab084241)(content(Whitespace\" \ \"))))(Tile((id \ - 479d118a-5d4a-48c6-bf47-03364c601277)(label(true))(mold((out \ + 83f57558-2745-4c27-8e0e-c4ed577dcd58)(label(acc))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 3ed7c3c5-9c9b-4b8c-a6cc-e5d38f0884f7)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - b8b607d6-5e91-4166-9030-e6062c5bdfde)(content(Whitespace\" \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + ba8b3769-0ae7-4d8a-8cb0-505599d9ca91)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 835ce9ce-f6e3-4641-ab4c-dc620508ae17)(content(Whitespace\" \ \"))))(Tile((id \ - 09f543ad-eaf3-4890-8f00-364e65bbeb9c)(label(f))(mold((out \ + b4e5f854-a653-49f9-a947-76bd76bfe8c7)(label(666))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - b1f15536-570c-4dc0-9549-dcb2b230feac)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 064cc832-ce4d-4774-ba20-f8ecf0a48b37)(label(true))(mold((out \ + 099996b9-0a44-447a-b03b-808d23f51a62)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + aa77209f-7087-4fd4-bacc-b95ecfdb1348)(content(Whitespace\" \ + \"))))(Tile((id \ + b32ffefb-6c1b-4b77-b860-4e931d5fe384)(label([]))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort \ Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 4c73ec7c-d01c-41f3-8a0f-11412cd6a732)(content(Whitespace\" \ - \"))))(Tile((id \ - fc65cafe-9149-4468-8ea0-f92ebe2d968a)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ + ac5a88fa-b8ef-4269-ab17-6f95dff98275)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 27a43202-03b5-4dae-a825-803273112d6e)(label(==))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 8))(sort \ + Exp))((shape(Concave 8))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 5c9ee7ae-9db7-4924-93c1-1a8418513aee)(content(Whitespace\" \ + 5fb9cb54-377d-4e30-b720-82a573472e05)(content(Whitespace\" \ \"))))(Tile((id \ - e7cad16e-7d7b-4115-9a8c-af93f221acb9)(label(true))(mold((out \ + 6a051434-c39b-4907-87af-7d186ff23d94)(label(666))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - fa8e5241-13ec-4c4a-8e28-4699b23444a5)(label(\";\"))(mold((out \ + Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 474d18a6-ca02-48f3-b14b-25174bafc105)(content(Whitespace\" \ + \")))))))))(Tile((id \ + 6285cb55-5f1e-4478-9b29-5dd80cf132a6)(label(\";\"))(mold((out \ Exp)(in_())(nibs(((shape(Concave 10))(sort \ Exp))((shape(Concave 10))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - e779d1de-c381-4048-8509-32d2a4fad77d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 78024387-9521-4a53-ae68-0ede50bf3755)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 9b5f8ce4-8a09-4d4f-aac9-3b1669efe5ee)(content(Whitespace\" \ - \"))))(Tile((id \ - 050ad0bc-cd58-4ff3-9517-1d272cfb1dc6)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - fabc0073-2285-41f6-90a3-748f83b2f6fc)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 60502944-c980-4eba-9d89-b341dfaa767a)(shape \ - Convex)))(Secondary((id \ - e3656e85-0260-4a63-9c23-b0fe822eaaf0)(content(Whitespace\" \ - \"))))(Secondary((id \ - a0800885-7858-470d-b5c6-f7350dc5a52b)(content(Whitespace\" \ - \"))))(Secondary((id \ - 22fdd3e9-c9fe-4d4a-96ed-e18661b9f453)(content(Whitespace\" \ - \")))))((Secondary((id \ - a80d307d-9238-49c1-9a6d-114d8cd618b5)(content(Whitespace\" \ - \"))))(Tile((id \ - 3e95229c-1e09-4428-ab3d-778449bfacd6)(label(fun \ + fbbcb556-3761-4714-96d8-df47e906eba8)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 57cb7758-3f0d-40b0-b5be-137520e8ab43)(label(test \ + end))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + e987bd9c-d522-41a4-9cfc-446db7033395)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + f1691739-ac76-4c1a-94d1-a3eff16dfcdf)(label(List.fold_left))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 6247599e-9300-446a-9c7f-9ba35900c51a)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 302492e2-825f-4a7c-b604-19d0b2e8405e)(label(fun \ ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - 345d959c-c0e3-4325-856a-03b451afb788)(content(Whitespace\" \ + cc8fc221-393b-40a2-8e89-7b7ea9bedf2e)(content(Whitespace\" \ \"))))(Tile((id \ - ad7d9601-3b12-4f28-9d0a-4edb752606e8)(label(b))(mold((out \ + 2f6f3eb5-4de2-4a2e-87e8-d7507ff8929c)(label(x))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - dd65c356-1ef7-4512-9ab9-eea9984c1092)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - b0782794-c9d5-4083-baf1-32e183dbeff9)(shape \ - Convex)))(Secondary((id \ - e0c1bec2-69ca-4a42-8a3b-be53a3eee8ef)(content(Whitespace\" \ - \"))))(Secondary((id \ - 4f9a74ca-94d8-473f-8e1f-7d9e81720c6f)(content(Whitespace\" \ - \"))))(Secondary((id \ - bcf86e8b-7f81-45ea-a4af-f991a8286ec4)(content(Whitespace\" \ + 3487c43d-acde-401f-a204-7a78f14f4083)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 330914e9-362d-4641-ad71-b919df9c4342)(content(Whitespace\" \ + \"))))(Tile((id \ + 95954891-c028-4894-977f-e4a794a3d335)(label(acc))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 9a41b1d0-e4b0-4555-ac1d-5853c01477d6)(content(Whitespace\" \ \")))))))))(Secondary((id \ - da2a3eb5-e4cb-4596-ba40-b29ee4fafed7)(content(Whitespace\" \ + c88f2a42-388a-41b6-875a-7942ef1dfba5)(content(Whitespace\" \ \"))))(Tile((id \ - befc9916-b11d-46d5-847a-875ee9a25659)(label(b))(mold((out \ + 183c1306-4647-4bfd-843e-fef23d5e5c07)(label(x))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 419fd78b-a064-4bff-85e5-7a58faec7fe1)(content(Whitespace\" \ + 59075557-36fe-4c79-a90e-35ddeebfc2b1)(content(Whitespace\" \ \"))))(Tile((id \ - e93b830b-4890-490c-82c6-1fc52ab97cea)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ + 19e633dc-ae05-4e1a-ae8e-7f60866eb245)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - a54cd696-f9b0-4928-bba6-ce8d008cf0b8)(content(Whitespace\" \ + bbb98642-8c7a-449e-bb94-632fc6ecafda)(content(Whitespace\" \ \"))))(Tile((id \ - ee86723f-2eb0-4801-b190-3da7822b3246)(label(true))(mold((out \ + dd922e79-b5f3-4fc1-ae67-f60df34e7c19)(label(acc))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - a93e8247-9329-4e31-ab36-bd4fb103c31d)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 6bc7a8f1-a5e1-4c83-95ce-47ab12734e9a)(content(Whitespace\" \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 2595d043-0fa5-4098-8cfd-51e781074372)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + a9476e32-5257-4413-9077-7884ec2c4012)(content(Whitespace\" \ \"))))(Tile((id \ - 922d00aa-39a9-403f-9e2d-9006299c0089)(label(f))(mold((out \ + 97822e87-f014-4861-be83-7fcca394ec6d)(label(0))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 0cbfc86c-62a2-4e35-846c-419445841b20)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 7e1a34cf-d41e-4581-ba52-4bc25e1e3d49)(label(true))(mold((out \ + 4ffa0bdf-f148-4213-a2da-b84947f9249c)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 92cbbb13-80d4-41da-a765-db99f1cfb6bf)(content(Whitespace\" \ + \"))))(Tile((id 14ab559a-506c-4e83-9c1d-53cce482e573)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 7f709423-a13e-4f73-a4f9-e9b1ff91d754)(label(1))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - a949f8fc-26c9-434f-9b99-db5150203e1e)(content(Whitespace\" \ - \"))))(Tile((id \ - 6f9b120a-b758-4553-b9e2-4c0c979ed6d0)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 9c52e640-c75a-4d63-8c1b-b22c5fddcaa8)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 74ff733f-c95f-4053-9369-e5d4bfa47efc)(content(Whitespace\" \ + 12d08bde-da4b-4f11-bfe1-970a90075d9c)(content(Whitespace\" \ \"))))(Tile((id \ - a4713350-3b6a-4c4c-8976-8773fcc47b4d)(label(true))(mold((out \ + 090f900a-50da-41ad-bc45-578c5703031c)(label(2))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 62f78eda-a670-4b8b-a9de-d6804c10abe0)(label(\";\"))(mold((out \ + 058940ec-f2ff-4f46-a54f-3caa1305e6a6)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 548d1b17-ad87-4f0b-b1b0-f3e297758a71)(content(Whitespace\" \ + \"))))(Tile((id \ + 2f34bb29-48be-489b-a3fc-8c1f81b92681)(label(3))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + 394b7c6b-bb17-4278-9b9f-b2ba473be9db)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 263bc234-9143-4d33-8159-4dffa4043655)(label(==))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 8))(sort \ + Exp))((shape(Concave 8))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + e995d998-adb5-4647-9133-3b19c9b2fd99)(content(Whitespace\" \ + \"))))(Tile((id \ + 89c8c835-4c79-4804-81f5-e901a4606fa9)(label(6))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ + daee453f-f468-4ac3-8034-b434bf532fe6)(content(Whitespace\" \ + \")))))))))(Tile((id \ + bc912c45-6895-4f8d-82e0-d5cec2cff152)(label(\";\"))(mold((out \ Exp)(in_())(nibs(((shape(Concave 10))(sort \ Exp))((shape(Concave 10))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 3c34799e-b421-4e12-91b9-8f73492669bc)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - f1cddc20-e71c-4d62-bff2-2c79bb66d03b)(label(let = \ + 22bd9e58-e8fe-4449-871e-d67daf03ccba)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + ab7736bf-b9ed-49e7-a8a1-8bd25f79e6d2)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 37d1a22b-6891-4614-a099-9a73e2649c37)(label(let = \ in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - 9845f59d-6345-444b-b86f-dab9a738fa2e)(content(Whitespace\" \ - \"))))(Tile((id \ - 59cd16e1-b021-48b8-a31a-3eedff49c12f)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - c765c652-21dc-4c5c-bc0a-9e2bf54c8d4c)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 01b55507-fc6e-4f9b-b7fe-2de70d68ae85)(shape \ - Convex)))(Secondary((id \ - 60a8198b-7d3b-4ae5-852b-1b9279a22496)(content(Whitespace\" \ - \"))))(Secondary((id \ - 63db4e70-84e8-4ad7-a912-6a10b549edb6)(content(Whitespace\" \ - \"))))(Secondary((id \ - 67dc3deb-0f65-4199-b01b-c4d08bc2ede9)(content(Whitespace\" \ - \")))))((Secondary((id \ - c91a4785-3400-4d3b-a807-8ec7cca6fe42)(content(Whitespace\" \ - \"))))(Tile((id \ - 4f49d514-2780-4f49-99b5-cdc6c21c42da)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 13abf15a-a4f0-4319-9d0b-77645ad48137)(content(Whitespace\" \ + 9eb629dc-1220-409e-ad65-b2d2e5960de1)(content(Whitespace\" \ \"))))(Tile((id \ - 2f03b79a-01f2-40cc-8619-7ae5d08848d1)(label(b))(mold((out \ + c113c27c-0bf8-4074-abba-f8497e91a0c7)(label(List.fold_right))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 587eb7c5-6cc7-4678-a196-2808537549d8)(label(:))(mold((out \ + b2f73be2-d2c3-4f11-a701-067b656351a8)(label(:))(mold((out \ Pat)(in_())(nibs(((shape(Concave 11))(sort \ Pat))((shape(Concave 11))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 56a345e3-90b2-4bfd-9cb5-9c47541b310a)(content(Whitespace\" \ + b1d252f7-dbe6-447d-a1e3-ed6bf62fc023)(content(Whitespace\" \ \"))))(Tile((id \ - 5553baea-93f2-4356-8029-cdbac97a9fbb)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 454bcfc8-ecab-47c0-ac70-506d96ae1ada)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 218987e9-922f-4609-822c-314279d863bf)(content(Whitespace\" \ - \"))))(Tile((id \ - 7465bb73-9f4b-464a-9f9a-8405eb57c91b)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 369da5af-5f2e-4f1b-a50f-1515222357ca)(content(Whitespace\" \ - \"))))(Tile((id \ - 90512813-86e6-469b-bcac-0267834646e6)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 758cb590-8371-4bff-991d-e69e9dc51bab)(content(Whitespace\" \ - \"))))(Tile((id \ - 97d8cfc9-65e1-4658-957e-8527db8230f8)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - cf1feb8c-9f0c-4fac-8457-ccec09dd7719)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 4a041d67-9016-4ca4-9dce-11ad319cca96)(content(Whitespace\" \ - \"))))(Tile((id \ - c9680e92-4454-4a3c-9e82-23375259b15c)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 4bae0ba8-e49a-4e03-8514-633fe6f9fd1f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - c8aac4c9-6fcf-4edb-999e-a956693ee999)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 549eacb0-6d86-46cf-9249-e243a9a4fdf4)(content(Whitespace\" \ - \"))))(Tile((id \ - e694950f-4597-4e61-b9fd-a05c746abe4e)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 9c2868d5-7874-47b8-93d2-9c506244e763)(content(Whitespace\" \ + abd336ee-0638-40fa-9821-cb65b86d69c0)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 7efbb185-989d-48af-94da-5e4850e9c78e)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + a988146d-f4e4-487c-9d55-baaa5228d6aa)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + daa29dbc-7fcc-47c2-b375-b66410f44388)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 1d72166a-c935-4632-b1f5-3b09e0ff1e2d)(content(Whitespace\" \ \"))))(Tile((id \ - ddfbe440-e3f8-479b-81ff-3080a5c7b70f)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 84d65640-d9d2-419c-aae8-d6b04c12bf7d)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 902afcdb-68b6-47f4-af98-7e843ac1fa0e)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 0559dc24-ae2b-4e1c-9be6-3ac5e82e36a8)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 81499aa1-a36d-4fbe-9411-4d82b5501efb)(content(Whitespace\" \ + 73ed7e29-17e5-45fa-b4e9-fbfbe479971b)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children()))))))))(Tile((id \ + 66bde5f3-fa20-4926-95f0-e242090e4ee4)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + ecb002de-e103-4323-9ddd-4eba4dfc0c1d)(content(Whitespace\" \ \"))))(Tile((id \ - 49a4b0f8-81cf-49d4-9766-a99963214b85)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - a66248b4-bd53-42c6-96d1-0440d70abe68)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ + f817abb2-ac1c-4504-99c6-0a0b4ccc85bd)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + 527b26b7-f5d5-46a0-bb67-0e60a31b8929)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - f8502677-bd6f-44b5-a1cb-ab7912281602)(content(Whitespace\" \ - \"))))(Secondary((id \ - 0ccd9911-9e15-42f8-9efa-2e24bb3f9d9f)(content(Whitespace\" \ - \"))))(Grout((id 334adc6c-9f26-45b0-8561-5045b4d7d5fb)(shape \ - Convex)))(Tile((id \ - b2743f3c-ed5d-4a2b-b554-d08eedad8478)(label(->))(mold((out \ + 35d47513-5d33-42df-89f2-2df59a773bf6)(content(Whitespace\" \ + \"))))(Tile((id 0da52621-d5b6-400e-bebe-dd00fe906e9b)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 9f00bb57-2c15-4c07-9eeb-74353d4ad680)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children()))))))))(Tile((id \ + c078b9ff-c518-4528-ad79-7207e22c4771)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 0e661771-064b-4a8d-9187-36c8a95d646d)(content(Whitespace\" \ + \"))))(Tile((id \ + e0642d0a-18be-4181-a1fc-10f1b47d71ce)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children()))))))))(Tile((id \ + e671e091-9a74-43ea-b890-699b377e701d)(label(->))(mold((out \ Typ)(in_())(nibs(((shape(Concave 6))(sort \ Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 463a0555-bb7a-4506-9009-8854f2e89e34)(shape \ - Convex)))(Secondary((id \ - c7f29ef8-b541-4037-84a5-905e00927df4)(content(Whitespace\" \ - \"))))(Secondary((id \ - 0b2edba7-987e-4278-8767-db5bf683bb2d)(content(Whitespace\" \ - \"))))(Secondary((id \ - b10e02cc-08e1-44da-afc7-c6be0cd97ad6)(content(Whitespace\" \ - \")))))((Secondary((id \ - dda0be53-ad2b-4e53-930b-0cb7e6f7948a)(content(Whitespace\" \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 7bd9e35d-922f-48d9-b7a2-7392a5e8b05f)(content(Whitespace\" \ \"))))(Tile((id \ - 3f616dd7-2e1c-4994-bba7-3ff2ae2d009f)(label(fun \ + 519ebdcd-d9d6-4589-bd29-1ff914a0b14b)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 3c914306-2ea6-4160-83ee-676c87722d50)(content(Whitespace\" \ + \")))))((Secondary((id \ + 55e9fbea-7168-4d29-91fc-c5f8923060f1)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + c25e68aa-4e96-4585-b6ae-d0f8d83c7458)(label(fun \ ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - 0f5af089-9bbc-49cd-9265-ee3ca2cf6ace)(content(Whitespace\" \ + 373f618c-9708-4515-9a40-29c68e0d45a5)(content(Whitespace\" \ + \"))))(Tile((id \ + 10f996f3-e848-4dec-8fd0-cb1cb4913bd7)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 39c4c721-7fbc-4851-8c97-a19c371dfc69)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 61f5f7bf-0efd-44bc-9053-a7cbc2acb4a0)(content(Whitespace\" \ + \"))))(Tile((id \ + 36d3dd45-9d9e-4d3b-83e1-93c3533f4c23)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 93e74181-b7a1-40cc-a9c3-635859158bff)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + adc8d3ae-997d-4562-b90f-665f96d82975)(content(Whitespace\" \ \"))))(Tile((id \ - cb0f9f2d-7e60-4990-ac6f-16760eb105c5)(label(b))(mold((out \ + 7025fc68-cf50-42b1-ad19-1de48de21512)(label(acc))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 6636c11c-4be6-4b48-8c28-aa2a07cc7295)(content(Whitespace\" \ + 143dc07a-d794-4f53-bf5e-4a30eb967f1c)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 7c664c94-7dfc-4767-8ccf-a6e76913edbd)(content(Whitespace\" \ + ee1a3cd0-b099-42b6-b894-0f9315f93fff)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 93d17ac2-8132-4c13-9b96-d5ef9124c138)(label(case \ + end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 78d5c774-9723-4987-bde0-b1304f63420e)(content(Whitespace\" \ \"))))(Tile((id \ - 81eb253a-5e19-4b4d-804b-f3eaae9d08aa)(label(b))(mold((out \ + 74e46937-4146-4653-b1d8-4d6000d9feab)(label(xs))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 4e458e97-f12d-4915-8bde-a822f8d14a49)(content(Whitespace\" \ + 203c0ff9-cb43-4808-b1c6-6b0269316bba)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 5b48ff6f-7e98-499c-adc6-3d88106644be)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + f45b01fa-d242-4b70-801c-368f92e79ac3)(content(Whitespace\" \ \"))))(Tile((id \ - 333b9d71-ac78-4403-830e-fcd058dc6a56)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - deb814fe-e232-4f27-b98d-7a2ea24c082c)(content(Whitespace\" \ + 96ae55fe-557b-44b0-b6d7-12e4e9af78d7)(label([]))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 9564007b-d7f6-4308-b605-625646fecd9f)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 766db611-8c8f-4903-bfde-bf093f71a650)(content(Whitespace\" \ \"))))(Tile((id \ - 5d3b1805-c4bc-4ba8-9706-f5ea459434c7)(label(true))(mold((out \ + 7b1b71ed-924b-4b0c-a091-15228b65ad4b)(label(acc))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 79732f22-2121-474b-9db4-46e01e01e900)(content(Whitespace\" \ + 9422ccdb-664a-418c-9ff7-4029a3d36b68)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 48041f5e-1fab-42f8-b506-420c5ecbb0fe)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + d1a750ae-5fed-40b8-99f6-bceb53f442d4)(content(Whitespace\" \ + \"))))(Tile((id \ + a192fa92-0fed-4642-ab7a-4354963a081f)(label(hd))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + c93d436d-4035-418b-8c54-fbadf6f92617)(label(::))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 6))(sort \ + Pat))((shape(Concave 6))(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + a3af13a3-1a11-403e-ab23-00fe321edb92)(label(tl))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 72388fc2-7613-45b9-9f9c-c3da0014e717)(content(Whitespace\" \ \")))))))))(Secondary((id \ - acc847ff-b677-4327-8def-4345e13297f4)(content(Whitespace\" \ + 0a5b143b-91c0-4b2a-aee9-719491cc7b42)(content(Whitespace\" \ \"))))(Tile((id \ - bdb4ad16-b715-49e7-9594-6630dec245b4)(label(f))(mold((out \ + df432f2d-62cc-4e8a-98e8-8c173ea669ff)(label(f))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 00958786-584d-4a6e-b5c3-61ebb8af0fd8)(label(\"(\"\")\"))(mold((out \ + 0ac54581-804d-487f-9608-e6e991e5667f)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - ca939cd1-4dd9-42ef-9ab4-a4292d3042f5)(label(true))(mold((out \ + 1e6f7d74-a8a1-4e31-93f4-ee442713ea9a)(label(hd))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 196a55c4-004f-4997-9a82-4c116c44f58d)(content(Whitespace\" \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + b3bf4add-6bf3-4ee5-8ec2-6a1d7c76815e)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + b735028a-5a30-4477-9494-3355ee3e3397)(content(Whitespace\" \ \"))))(Tile((id \ - 45530c89-21b9-4da6-a411-be788347ff05)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ + 14bcbd23-38e7-4c70-bf9e-f5c18cb2a8e3)(label(List.fold_right))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + b7179ba3-5b96-4009-8fec-866ab251f275)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 5590d369-9523-4f63-bebe-509a5c435b06)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + ce6e3910-b8cc-4384-9cb9-f1223bf5bfdd)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 19ccad19-db00-4012-8cd9-090e58e34d2f)(content(Whitespace\" \ + 2cd207bc-bc7e-4488-b85f-c13d3d9ed2e3)(content(Whitespace\" \ \"))))(Tile((id \ - 65269777-d11f-44d2-a3a8-2bd0703d931b)(label(true))(mold((out \ + c02dea67-ca95-499c-9713-156289206469)(label(tl))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 1f58078f-b848-4839-bebf-8aae0b139a85)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ + 62efb2ca-cbf9-4e5d-919c-716b791d9cf5)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - e45cc210-7d11-4115-8e0a-19aa91b5cf85)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 95711e32-58c5-494b-b912-0cd1da1944ab)(label(let = \ + 0ade3813-fdbf-4eee-bf9d-8af450acdcc1)(content(Whitespace\" \ + \"))))(Tile((id \ + 3ad181a6-339d-409b-971c-d3084f208fc1)(label(acc))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + 21345679-13ef-4de4-adcf-65faea9d3d2d)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 80b338df-8aeb-462d-a3eb-61e55f965181)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + cd920264-284a-4b17-bda6-6724d5d0f44f)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 6ced6f95-37ce-4f0c-a5e1-4a2fa667f635)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + a5c8578e-90ab-4fce-b568-dc5356a6cdc0)(label(let = \ in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - 05d683a4-b423-4906-b626-95272e089863)(content(Whitespace\" \ + 6102ba0a-63a9-4bb8-857b-fff999bd6307)(content(Whitespace\" \ \"))))(Tile((id \ - 19b1c876-def7-4ff4-a273-83a47cec3faa)(label(f))(mold((out \ + 20342e1d-0905-4dac-bbc7-676129ea46c9)(label(List.fold_left2))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - c80439ea-f422-49be-bb47-44ce041545bc)(label(:))(mold((out \ + 7bba4f7d-60a5-4307-9ecc-b2b2de6de9a6)(label(:))(mold((out \ Pat)(in_())(nibs(((shape(Concave 11))(sort \ Pat))((shape(Concave 11))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 7c5999b8-ed2e-4914-90e7-883585f46fa6)(content(Whitespace\" \ - \"))))(Secondary((id \ - b66ca63f-d073-4e34-b5cb-5c6a50be38c9)(content(Whitespace\" \ - \"))))(Grout((id 92c3c219-ac9f-4f4d-af39-7a87433ee68f)(shape \ - Convex)))(Tile((id \ - d5a45e15-9eca-41ee-bd0e-91cf154473de)(label(->))(mold((out \ + b7580602-9a42-4c58-860f-bb34018aaba2)(content(Whitespace\" \ + \"))))(Tile((id \ + d53a3798-32a0-47fe-97f5-4200ef2425bf)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + ab1ac38a-66bf-4822-bb49-f498a3e0feb0)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 6e9d1dee-b9dc-40ea-aca7-12dff9506533)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + 0dbc3572-a7a7-47fa-9555-66c14d52c1ff)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 380fad65-d746-4b76-adac-0a0af8e0228e)(content(Whitespace\" \ + \"))))(Tile((id \ + 5c4c377d-666e-4900-b5c9-055bb40cc7b6)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + e4ea6ef5-4839-465d-8581-9e6b6e81209c)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 9b6dc628-fd3a-46b5-9cfc-7da036fafb0a)(content(Whitespace\" \ + \"))))(Tile((id \ + a89ed7d3-7f97-4655-8431-301db30d8b9b)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 32dbe90d-87c5-4a8c-b8f4-98a2e9db5f04)(content(Whitespace\" \ + \"))))(Tile((id \ + 80c90791-d835-40e3-b9ff-508da67eb884)(label(->))(mold((out \ Typ)(in_())(nibs(((shape(Concave 6))(sort \ Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 9fd54931-31d4-4074-af43-f92faa65f163)(shape \ - Convex)))(Secondary((id \ - a51d6bbe-db2b-470e-a677-c5d553674981)(content(Whitespace\" \ - \"))))(Secondary((id \ - 70408414-c362-4277-974d-5fd9979c2215)(content(Whitespace\" \ - \"))))(Secondary((id \ - bd381de5-1ece-4e62-a2b9-3bcba8736c27)(content(Whitespace\" \ - \")))))((Secondary((id \ - 6fd64089-30ea-4435-9635-168ceefce138)(content(Whitespace\" \ + Typ))))))(shards(0))(children())))(Secondary((id \ + bf2041cb-8b63-406f-9b7c-d8a401478092)(content(Whitespace\" \ \"))))(Tile((id \ - 199a5e0e-7724-468b-b556-44a91bd42ec3)(label(fun \ + 7f5389e9-0be6-4dd0-8ded-97cca183ac2f)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + fc72aa4f-85bb-4027-847f-b265e4e8088b)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 7cd6fb03-285e-4483-8c81-9e1bf9d7665f)(content(Whitespace\" \ + \"))))(Tile((id \ + a2aaf02f-8492-4680-9ed3-58f0388b46d1)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + 42a25a23-4ea5-4013-9f63-46ce8cec0122)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + bb86541a-754c-416e-8d67-dc663f4f14e6)(content(Whitespace\" \ + \"))))(Tile((id 11784a19-09ed-42bd-ad6c-bf8984fc54b8)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + d11ab86b-b3a4-4b02-86bc-2e72fd88c623)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children()))))))))(Tile((id \ + 877f91f0-5dd1-4809-819d-992cdd003875)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 63f807b0-398e-4bf7-8130-fccadc3393be)(content(Whitespace\" \ + \"))))(Tile((id 269be787-563b-460e-ab22-311aefb69cb8)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 5fb32302-b653-4e4f-92f6-e117954b0698)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + e09f30a2-f166-4901-98dc-2f9285dcdc6a)(content(Whitespace\" \ + \"))))(Tile((id \ + 9c25451f-b7d9-4f9b-a400-6b5ce8a06b21)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 949cc82f-ade8-4d4c-b399-7a2f2841285a)(content(Whitespace\" \ + \"))))(Tile((id 65e26c1f-76fd-4ddc-8e26-92fc0e0ed8f3)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 644e9754-1254-4dd5-ad98-1143b8849664)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + b4ec5d28-6714-4896-8352-04638e3bfda5)(content(Whitespace\" \ + \")))))((Secondary((id \ + 4fc3732d-ec4c-4e50-8636-739abe0514b1)(content(Whitespace\" \ + \"))))(Secondary((id \ + 0e090073-028b-4820-87c6-7bcfb443b60a)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + c1068114-8bd3-412b-978d-cf8d3449d859)(label(fun \ ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - ce3db5ad-adb4-4b1e-aadc-17e112447cfc)(content(Whitespace\" \ + e7bc5aec-569c-4972-9253-a8fe5afdb8ff)(content(Whitespace\" \ \"))))(Tile((id \ - 9579cd24-36b2-4cac-9bbe-c79e73be06de)(label(b))(mold((out \ + eb502ee3-ff45-4316-ae3b-7a80ce65853b)(label(f))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - c47ca04c-8e09-4d04-8690-81d8362a407d)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 514b0fa4-cc73-4f80-958f-7a191a068d88)(shape \ - Convex)))(Secondary((id \ - b7aa5bde-8384-49d2-aff4-ade2cd61d341)(content(Whitespace\" \ - \"))))(Secondary((id \ - f77eaa78-6d27-4e18-b77c-593396192565)(content(Whitespace\" \ - \"))))(Secondary((id \ - 314d6e20-a3cc-4b14-a048-fbd76c4134e9)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - de1bb128-289c-45a2-858b-1b625fb2df55)(content(Whitespace\" \ + 3b3124bf-e982-482e-94ec-76c41df292f8)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 6df58f0a-fd6e-4278-9fb8-5e3193137242)(content(Whitespace\" \ \"))))(Tile((id \ - 53c7c075-ff4e-40c7-83f0-9aef4ece7934)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - c0ac69f0-46de-4ac5-a592-0259cf25c098)(content(Whitespace\" \ + 370f191c-3047-4165-8802-92298535d4ca)(label(acc))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + c0145998-586e-46de-8c18-4d423f74004a)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 4429ba72-aae8-4a4d-81f2-f925e7e283d2)(content(Whitespace\" \ \"))))(Tile((id \ - a72518dd-352d-47a4-b054-3778e2240920)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - cf693380-0cfe-46db-bf12-02c17a2aa5d1)(content(Whitespace\" \ + 0ae76c32-3222-4c44-9ee1-1bc4ca5efc76)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + b92a26dc-1147-444c-8d03-b696d6c4a2e5)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + bebc850c-94b3-401d-8e1c-7559933da04d)(content(Whitespace\" \ \"))))(Tile((id \ - 6df1647e-2f6c-4350-b6be-ee0a149948d0)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 1e5d2feb-aeaf-4b5a-990e-721741af9415)(content(Whitespace\" \ + e193b1dc-7bb8-46fd-a75b-c283bd3db855)(label(ys))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 02132e1a-dd6a-4e1a-9c17-e868c1e9c78d)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 82f4bbc0-c3a7-4905-8bcf-24e6dfd3587e)(content(Whitespace\" \ + b01b9f6d-646c-4f28-8f39-192e66d99768)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 1f64f970-b27c-4cd4-9bd3-6b8068dfeb41)(label(case \ + end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 167eacfb-69a4-4346-8ed9-ea7ae6c2080a)(content(Whitespace\" \ \"))))(Tile((id \ - a602693d-8766-4acc-a621-b6bc94edff92)(label(f))(mold((out \ + e865a619-1b4a-4a16-b529-4227293426b9)(label(xs))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 7efbc47f-66e6-4e95-b592-ca445a855202)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 158da482-bbcc-4b98-abb5-ae7240ca085a)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 32241379-1075-4aca-9656-f326aaae6f99)(content(Whitespace\" \ - \"))))(Tile((id \ - 37f36a46-08be-4e43-9d0b-d0cc4670f173)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ + bf8125f1-0fbd-40ad-b2b1-952531f9ec14)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 33d9fa38-98e4-410f-96ef-3814cda0ca91)(content(Whitespace\" \ + 64a44551-7862-4461-94cb-225dc13d4cb1)(content(Whitespace\" \ \"))))(Tile((id \ - ee9cacdc-1f65-46b1-ace9-c3563f8d198c)(label(true))(mold((out \ + 1f6c63b4-0419-41ae-a2e3-9a730501199a)(label(ys))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 5d7527cc-81a6-4a4a-b0ba-2fe9d9aad62b)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - c4cfa363-28dc-4c07-8388-89511e2b021d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 20243ab7-fdd6-4be4-849e-084f814706a4)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 195a02a3-1cc1-4584-b028-c6adab8678d3)(content(Whitespace\" \ + Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 7d39007e-6b08-417a-98ce-bd975640705a)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 84237c8a-8d57-4cd0-903f-e71e9a2ec128)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + a9061940-af06-473b-9ddc-d7de795dd14a)(content(Whitespace\" \ \"))))(Tile((id \ - 8914e2c3-7ed0-4184-9de9-c8c71bc84ded)(label(f))(mold((out \ + cb60c566-192e-4461-aac1-1acb23b90a69)(label([]))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 45dadb48-ba95-4353-826f-10544c399bac)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - afde939f-0fe4-46cd-9044-7190b86fb63e)(content(Whitespace\" \ - \"))))(Secondary((id \ - 9e5b265f-aaa8-4aad-9014-3f91abd0f1fd)(content(Whitespace\" \ - \"))))(Grout((id f43f1d26-9790-40e6-8c26-d559056442b8)(shape \ - Convex)))(Tile((id \ - e6f2d81e-74cf-46b7-9b72-224b017542f1)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 2c8885b0-9e83-49b0-9bb6-eac06b6b1dc6)(shape \ - Convex)))(Secondary((id \ - 678bd368-85ae-4b6e-8f8a-a2106b84d126)(content(Whitespace\" \ - \"))))(Secondary((id \ - 722a324e-a9e2-4819-bdc3-0aa7b19e1a67)(content(Whitespace\" \ - \"))))(Secondary((id \ - 5940e2d7-b76c-40b8-b3ca-2f4e83d89c10)(content(Whitespace\" \ - \")))))((Secondary((id \ - 6257d75d-660d-4574-abe8-e7af6b9d1b42)(content(Whitespace\" \ + fe6a88b4-180a-4e57-8ea7-d4813be1675a)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + c185a8d6-6ca4-4d28-a916-88687ce69e1d)(content(Whitespace\" \ \"))))(Tile((id \ - d357e807-390d-4e1d-a4c6-a258a74260d3)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ + a17a10fd-c510-492f-b53c-458593157bf0)(label([]))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + d70452b3-5cea-4760-aca6-e843602de915)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + d7474f43-cb19-4d65-b16e-942895da7494)(content(Whitespace\" \ + \"))))(Tile((id \ + aeccb6d8-663f-478d-8b4a-732d23e51101)(label(acc))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ + b5f74de4-c7b8-4b61-a981-704e8b8590e6)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 1ac47be2-ebad-4d7b-b642-4972d9a2561a)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - 53d32836-c517-497a-9c8d-4dd4166d72d2)(content(Whitespace\" \ + ae1c565a-df5b-4476-bd1e-ad4e15625f36)(content(Whitespace\" \ \"))))(Tile((id \ - bc43d610-5d39-422c-90c1-99c19b61185a)(label(b))(mold((out \ + 3d4c1fbc-62bb-4cb2-8e01-d0b5913142d0)(label(x))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - ea17cd76-456c-4f64-865b-97b0809a04e5)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 9db87b7b-1787-4164-ada7-be267ad1c889)(content(Whitespace\" \ + f7f02476-ce9a-4ade-b3df-76d7bff0bdf6)(label(::))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 6))(sort \ + Pat))((shape(Concave 6))(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + f3d74b2f-b46f-42e0-b070-393338c7ed8f)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 8a26707e-f333-437a-a020-97961257e32f)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + e4b93b61-dc4b-4655-bb4f-35f1a2a2ef96)(content(Whitespace\" \ \"))))(Tile((id \ - e7b890a4-c153-4935-86ba-712f9b6fb293)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - f60a55f3-2c3d-4805-b2a5-6aa5180e1634)(content(Whitespace\" \ + 8b5a2ad0-76c5-4040-be60-4aa2b429c1ea)(label(y))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 7d451dae-586b-4536-baf0-707b00318663)(label(::))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 6))(sort \ + Pat))((shape(Concave 6))(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + dcea6d77-5d6b-4d51-a82f-66d08868b656)(label(ys))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + cb70d741-66e7-4b44-bca3-0ff3c41812fa)(content(Whitespace\" \ \")))))))))(Secondary((id \ - a98d7c92-73d5-4dc7-aa1a-698d699c254f)(content(Whitespace\" \ + 4f475723-2ec7-4004-b444-71545ade6ad2)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + e2762769-512b-4cdd-a510-6306e19fc041)(label(List.fold_left2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + b4396974-0006-4da8-a497-fecb800d4d23)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 0f5a21ae-2f03-452a-abf7-2072e6570573)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + bd561eac-23b1-4573-8b75-c1501a0971a1)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 7848be46-87d3-4ab0-9f4f-44feeab3cc93)(content(Whitespace\" \ \"))))(Tile((id \ - 13163b9a-c8a1-4018-ac8b-f82e9aed7a02)(label(b))(mold((out \ + 95f2882c-b87d-418f-af6f-6ec9b7a2e60c)(label(f))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - c379e843-e2e5-44fe-a233-224a671d9cbf)(content(Whitespace\" \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 1eea3433-462a-4f1c-b4d6-282d6248bd49)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + dd7a4fc0-6e69-4a37-8b3a-8e246d98ab0a)(label(acc))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 2c2a60ee-191b-47e3-8acc-cb87723ae569)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 0a35437f-d979-416d-9e3a-12e0894b21ab)(content(Whitespace\" \ \"))))(Tile((id \ - f5eff3f0-1072-4f8d-87bd-624091b2182b)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ + 2f0f228b-936f-4061-9dcd-6bcd52b70e14)(label(x))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 437c3178-1418-4db1-86f3-c89ba82d9b60)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 079d9993-25ab-46e5-ba58-99e1e13d5730)(content(Whitespace\" \ + 315a0588-bb23-4455-8ce0-ceb01f6defc2)(content(Whitespace\" \ \"))))(Tile((id \ - 36d45045-38b3-49fe-ba96-21a0596aef7b)(label(true))(mold((out \ + 40d0f14b-bdd9-4a1a-ad7a-ef188a04f9fa)(label(y))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 57684621-723f-40b5-b736-65f23b7a539f)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 06c16dfe-8fd9-4672-afa3-f1de2f342e30)(content(Whitespace\" \ + Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ + 7cd5dc0c-b11d-408e-8119-09a5437269e5)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + f2eb6c97-350c-4324-b18a-644d0cc98b16)(content(Whitespace\" \ \"))))(Tile((id \ - 0af9c58d-aba1-4edb-9a80-5d2e3d3492e5)(label(f))(mold((out \ + b27214a2-4575-4c07-9814-4d60aea8c5dd)(label(xs))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - f57502b2-6858-4af7-bcd5-d899d462eb36)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - d67bea13-16e7-410e-8473-cc9ebcbeea7e)(label(true))(mold((out \ + 2232a2fe-078f-40f4-8056-ecf055c1a05e)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + b36c910c-e2c8-4940-af8c-5798164c70d0)(content(Whitespace\" \ + \"))))(Tile((id \ + d3692148-ca69-40b5-8682-a6deff29f74a)(label(ys))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort \ Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 2a06fdca-dcc5-492a-a9eb-b51e87a91fb9)(content(Whitespace\" \ + 37098567-12a3-4898-8fe6-008669a889e5)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 6b8bcd74-c8a0-4d0f-95ea-4bb92479b0c0)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 9ace70ad-885a-4099-8d4c-a98a5450efef)(content(Whitespace\" \ \"))))(Tile((id \ - b7ee1179-4557-454f-bb83-05a493d357f8)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - e14b3dc7-b3e6-47a7-a734-fcfedc9ae80b)(content(Whitespace\" \ + ea8c0273-fb6b-4053-b52f-ea2ba99b0e66)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 57cb0036-26da-4929-9505-4ddba1b482d7)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 562180c7-60b4-455a-ae1d-d337837acae0)(content(Whitespace\" \ \"))))(Tile((id \ - fc1a8228-d9a8-4aca-b279-383684bdbe05)(label(true))(mold((out \ + 3aac500c-5b28-4570-9050-126d595157e9)(label(?))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 7867277d-b26c-4ac1-901a-5560bf448222)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 81f3dcd8-5598-45dd-b0ac-dc3aa27ebc1a)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - e5615653-8302-4f02-9aaa-79e7601a810c)(label(let = \ + Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ + af660ed8-e09e-44e3-88df-3ea41d393c99)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 36b51e1a-6142-471f-8131-5919198fb6b0)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 11c73617-cb65-4a8b-bff8-86d3f8e81eb0)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + ad1a6355-2eef-4618-b651-e3e46afbecc2)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 7728cd24-d991-4f65-9f38-c6f99dc964a9)(label(let = \ in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - beb40d29-9522-4c9f-b342-9e626d359fec)(content(Whitespace\" \ + b480e610-73c4-4433-aa7d-12300d4583c8)(content(Whitespace\" \ \"))))(Tile((id \ - d8571f2b-0932-4396-bee6-337d02c5d442)(label(f))(mold((out \ + b268f20d-e350-4f92-b7b5-c9c33d9e1af0)(label(List.fold_right2))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 97fd33a0-7de7-42f3-ab59-ee519aafa0fa)(label(:))(mold((out \ + 8588bd6c-38f0-4289-b802-2d577fb05273)(label(:))(mold((out \ Pat)(in_())(nibs(((shape(Concave 11))(sort \ Pat))((shape(Concave 11))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 2c0875ff-6419-4b2d-989e-35bc2a1a3036)(content(Whitespace\" \ + a2dc2e36-9790-425d-8c0e-dde50e0461c4)(content(Whitespace\" \ \"))))(Tile((id \ - de8c86f9-72b4-41a2-8e49-2ae5bd904c34)(label(Bool))(mold((out \ + 79d1aba4-160e-409c-8825-2109decad1c8)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 2ddce156-eec4-479b-9a27-a376d302fb0f)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 66c03c38-2f1d-44ec-b238-7e4ebd08f062)(label(?))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - f5359fcd-929f-49ac-acd3-cb4e468e95b8)(content(Whitespace\" \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + 3db3ba7b-f9fe-4900-8296-0daa1471fbc1)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 91ad9bab-d805-46ef-a2c9-16d221dfce6c)(content(Whitespace\" \ + \"))))(Tile((id \ + 98c36316-e6ca-49a0-8dc8-2e3919d0ee08)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + 6f9944a2-bc2d-41df-893e-681d701ccf8f)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 25e2e9b8-c863-46d9-9626-9a56ca4c9d81)(content(Whitespace\" \ + \"))))(Tile((id \ + 690dfc2d-6552-4882-b43a-7e45eaa0e0fb)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 1167b456-96a4-40eb-8dd1-35d2aecca371)(content(Whitespace\" \ \"))))(Tile((id \ - cba7e26e-5324-45ee-a040-b99f74a6345b)(label(->))(mold((out \ + 4878cd79-1607-45d7-866a-cdeaf18f9041)(label(->))(mold((out \ Typ)(in_())(nibs(((shape(Concave 6))(sort \ Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 92053cf8-4aca-482b-9a75-feaf27038833)(shape \ - Convex)))(Secondary((id \ - cbedb124-6ad6-4594-8995-48b938280662)(content(Whitespace\" \ - \"))))(Secondary((id \ - 92b22cfa-fcd5-4e64-b1eb-42350efa6005)(content(Whitespace\" \ - \"))))(Secondary((id \ - e92bba3a-02e8-49ce-933e-608106fa1d5d)(content(Whitespace\" \ - \")))))((Secondary((id \ - 20d12cd7-8150-4900-b429-ada033c245c5)(content(Whitespace\" \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 4369d7dd-9b77-42aa-bff8-15c84fa54495)(content(Whitespace\" \ + \"))))(Tile((id \ + 72354c5b-d0a9-44b9-bf92-d645543dc35c)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + a39758df-217b-41e2-b770-853c18bbefe6)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + f2515123-cf7e-4b7c-acde-10495e9a12b9)(content(Whitespace\" \ + \"))))(Tile((id 32ead011-b630-419a-ba9e-59e78a66acf3)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 33722069-ccdd-44e8-b281-71691a3c93dc)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children()))))))))(Tile((id \ + a9b1eb92-5785-4878-88b1-4d897ebd1e1c)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + e892cd91-a216-4e5e-946e-53c09692c437)(content(Whitespace\" \ + \"))))(Tile((id 1e725015-286b-4e45-9be5-6542c9141f05)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 39b89eec-712e-4dbd-b80b-e6840577d178)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children()))))))))(Tile((id \ + d999d7d7-4448-4215-aa1d-9ddafa1d9e04)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + ad417e54-b328-4cbb-a175-b762e6330f3f)(content(Whitespace\" \ + \"))))(Tile((id \ + a1948435-31a2-4987-8ada-0d05b1b33726)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 1567e96c-74b1-4ce8-962d-5b2480ad8492)(content(Whitespace\" \ \"))))(Tile((id \ - e31eafc0-adae-4acb-a0e7-dc70ce82d66e)(label(fun \ + e9588f85-4953-445a-846f-549f5346ccb4)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + b4f5064d-bc91-453c-9208-e732ac848d24)(content(Whitespace\" \ + \"))))(Tile((id a864765b-fc1f-425b-9a7c-4947298cc729)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 9be87fae-d4cf-45ec-93eb-db1056c53df0)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + bd943691-427a-4b4d-b624-85bca24db907)(content(Whitespace\" \ + \")))))((Secondary((id \ + a03e1ab6-dbb9-4b13-862f-2804b1b47c45)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + caa0627c-1621-4453-8fdd-92bdf8f6191d)(label(fun \ ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - 92e6efec-ea3b-4263-bb24-790ccfaadfa1)(content(Whitespace\" \ + 1acc5325-ef6b-42e9-835d-84ecf32a5751)(content(Whitespace\" \ + \"))))(Tile((id \ + 5b716dd9-e0dd-4ee4-8baa-12152d1fcdb1)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 867e55ba-2247-48b5-b05e-4b1fb48774c9)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 4d9df1b3-5ba0-4511-a2f5-0fcf2a3a6188)(content(Whitespace\" \ + \"))))(Tile((id \ + e573a863-f333-4a4f-b000-a7d929fa0701)(label(acc))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 434e8ec8-f2c2-45e7-94e6-bd745d6bbde2)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + e1384a21-e974-47c8-9dce-d0077634c038)(content(Whitespace\" \ + \"))))(Tile((id \ + fc96fa0e-d6b4-4c6d-8f7b-be478aef2613)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 34c6fdc6-9999-4065-9b59-a285d129759b)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + c5a61e42-19ce-4e9e-91a9-fa7a7c072fe8)(content(Whitespace\" \ \"))))(Tile((id \ - 763f4ad4-9606-4a1a-a5e0-92902c767d9f)(label(b))(mold((out \ + 59e8e779-a018-4439-8cac-d2a4b8f5bf2f)(label(ys))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - dd4eec56-8f3a-42f8-883b-617269d33edb)(content(Whitespace\" \ + 9a8d28ae-0919-48c0-b9eb-8fd9fb80de3a)(content(Whitespace\" \ \")))))))))(Secondary((id \ - d587040f-8fdc-44c3-bcaa-a2d3673d573b)(content(Whitespace\" \ + 67edc294-7f34-4660-85fc-8461b65f9dba)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 939c57b5-be1b-4966-aa1d-6c24d5ff41b9)(label(case \ + end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 44a1a399-7b84-42b0-aef2-12d2fa41a8cc)(content(Whitespace\" \ + \"))))(Tile((id \ + 394b5823-5859-4761-914c-de5f714e2536)(label(xs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + d311ab61-4786-477a-8b4b-da0942c3dc8e)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 0edb9c8e-95de-4319-846e-93bec62d63cd)(content(Whitespace\" \ \"))))(Tile((id \ - a8c46661-9b28-4712-8e26-4a5bfd32070c)(label(b))(mold((out \ + 80cd1cfc-6c76-4b1b-959d-f2585693263a)(label(ys))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - a75b25d8-23e0-4a7d-be44-026f8ac16c8b)(content(Whitespace\" \ + 6f8816a1-37a7-4b33-b985-3ea79d89d1bb)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 80674d0e-96c8-4ab8-9ab0-ea8c134d3c01)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 79896376-d2a4-4c0f-a7de-ecd698e925ee)(content(Whitespace\" \ \"))))(Tile((id \ - 3c325158-7e37-4ce7-8851-04b86f9ef104)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - fd54c5ca-e661-4d82-8153-491bdd93efd6)(content(Whitespace\" \ + 08afa37e-ba9e-4257-8438-548cffd157a6)(label([]))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 123c6404-b26f-46a6-b29a-92a42af96227)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 65691322-2830-44dc-9c73-f906b0429086)(content(Whitespace\" \ + \"))))(Tile((id \ + 024cb586-37f0-40ae-9c14-6c91e4b09679)(label([]))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 1c050e44-665b-439c-9cb1-80dbef3bd93f)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 07c332ec-b93c-4537-8be5-4e764a178d4c)(content(Whitespace\" \ \"))))(Tile((id \ - 629d7054-84b0-4df5-827d-a53d1d9fcc3c)(label(true))(mold((out \ + 98520924-698a-4799-af2a-c66f28deab84)(label(acc))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 45157d16-447b-4148-b709-d756534e56d0)(content(Whitespace\" \ + 4178d220-6d05-4449-a864-24aed1446fc7)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 488a10c3-ace6-4703-9079-e19638c7287e)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 1730ae31-79cd-42bb-a73c-6798253aac8b)(content(Whitespace\" \ + \"))))(Tile((id \ + 4c6b7cfa-44e8-4fbe-9d0e-afbed58ccab1)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + d66e42d4-13e7-457a-8659-1fa0523f3669)(label(::))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 6))(sort \ + Pat))((shape(Concave 6))(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 37360333-dc26-417d-aa58-af044ae768a6)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 8c0270ae-0703-4254-81c5-872327ad71e3)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + e9c60497-a3f9-4947-b15a-539bf4be476c)(content(Whitespace\" \ + \"))))(Tile((id \ + 93539c0f-6879-4d8f-a4b0-2657a7fbbf69)(label(y))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 760a26f6-1caa-4afc-819a-bf2195ec30a0)(label(::))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 6))(sort \ + Pat))((shape(Concave 6))(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 33120237-e8ad-48b1-96f2-6c8f2521e660)(label(ys))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + ea23f4ec-8ecf-4336-9d76-3d44255d511b)(content(Whitespace\" \ \")))))))))(Secondary((id \ - d9102e0d-7373-423f-b803-06bd4bbfa12e)(content(Whitespace\" \ + 3d104a7c-3beb-4284-88c5-eb4c5570b448)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 78b7f231-d8d6-4a9d-9711-44f3c9f7ac86)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 449e846b-517c-4b75-b9b3-68c2631a1d98)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 048d0956-2e30-4c13-bbc8-ec0884300256)(label(x))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 6a0ff8c2-d486-4b01-a9f5-f6e957c27f36)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 8a0bc97e-2968-4611-84f9-0f1c6d32479e)(content(Whitespace\" \ + \"))))(Tile((id \ + b90d52fb-0a93-4e9d-9675-1d1f250282a8)(label(y))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 225b0d75-ea94-48e9-83df-f6d91a0bfb57)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + f0e3b862-d496-4b08-99b3-4443dd5aeaf9)(content(Whitespace\" \ \"))))(Tile((id \ - 640ccec8-05de-4d42-8463-99b80258070e)(label(f))(mold((out \ + 112ca488-a0b7-4de6-a175-72d68c3dfec4)(label(List.fold_right2))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 17d54597-59d6-4e72-bddc-544c46818c04)(label(\"(\"\")\"))(mold((out \ + 58ae05f4-4119-4f12-8be7-11527fb14293)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - aa80ef64-4be6-443b-a6f3-1e61ed8069fd)(label(true))(mold((out \ + b4926aa6-5d61-402e-ab9f-fc9ae5eabf0f)(label(f))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 0830394e-ba5d-40e0-98b0-132c96adf0a7)(content(Whitespace\" \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 3de0ee5c-e497-42f9-8f61-8b96a9b22139)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + bf274319-a882-4b22-8369-da2ff20f9acb)(content(Whitespace\" \ \"))))(Tile((id \ - 133b206d-3940-44b1-a424-7f8244505a72)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ + 04ef48c3-1596-484b-9dc9-0e28e8cfbd2f)(label(xs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + c0afd3c1-9072-4df3-81c0-49f0282780b1)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 35a3cfb3-0761-4bbe-b332-25bb83b35310)(content(Whitespace\" \ + f804e508-cf94-4fb5-8ded-0619baefdcc8)(content(Whitespace\" \ \"))))(Tile((id \ - 0e6f463b-c79e-44ed-af9b-544e8e6ee43a)(label(true))(mold((out \ + 2cdb27b3-baab-4cfb-b2dd-cae062202d31)(label(ys))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - d355c1e9-d709-4fbd-9f06-08c518077346)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ + f34a43f9-b5c9-4d93-8603-ee692be03561)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 2ce5c0a5-2431-49c5-9d55-4eed5b2cbd52)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - dc86465f-5c0a-48b5-aef1-51dae9a80e31)(label(let = \ + 2aeb0c60-ec89-4b94-8b4e-6ba7dc4de60b)(content(Whitespace\" \ + \"))))(Tile((id \ + c67d2a7f-b256-4f3d-98b2-a048995c0f9d)(label(acc))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + 84f296cd-d5c9-49b7-91ed-da2d0d9fffe0)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + b9382c05-c34e-444f-92c3-52496d0a6a0a)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 053022ea-d35c-4280-906b-e3c1472bd018)(content(Whitespace\" \ + \"))))(Tile((id \ + 59cbb5be-6f62-40b3-89f9-12f2f37f88df)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 3e35a4b5-bfb2-4d55-b591-44c6ca465296)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + ece64bd7-80ff-46f5-9097-6c7930bba5be)(content(Whitespace\" \ + \"))))(Tile((id \ + 4e154390-ea92-4aba-95d3-5adf8d1483a2)(label(?))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ + d671be75-ea8e-4466-b79c-7ae925682e5c)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + c6a25699-0d5e-4176-82db-0f79b0dd5b92)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 75c834b8-57b7-47d7-a44e-cca8d7503d67)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 9936dc53-6e8d-42af-a18f-50e8c71d8344)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + ee459bb7-4c5f-44d4-b63a-b8b2ce697815)(label(let = \ in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - ea6e7924-e38c-4ba0-8acd-622db92a1d3e)(content(Whitespace\" \ + 030ea13c-6730-4196-a2c5-208e150104fb)(content(Whitespace\" \ \"))))(Tile((id \ - 6546cc92-3d5a-4a40-af7e-f081c2b83470)(label(f))(mold((out \ + dd9d6435-c97f-4278-a910-bda6bd941fdd)(label(List.map))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - eb1aeb12-f9cf-47bb-8a69-c26b20a3779b)(label(:))(mold((out \ + b8c99349-619d-48f3-8344-6069fe72149d)(label(:))(mold((out \ Pat)(in_())(nibs(((shape(Concave 11))(sort \ Pat))((shape(Concave 11))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - c9602d72-4ccd-42b1-8542-7b5c8cb8e7ac)(content(Whitespace\" \ + 56eece8e-5782-4e2f-bb35-c8df01a30b62)(content(Whitespace\" \ \"))))(Tile((id \ - 704a5137-6382-4a53-8776-c36c02b40863)(label(Bool))(mold((out \ + cb406c55-5706-4108-845a-d7ecc890834c)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 0e7e465c-3ffc-4324-be47-161c843e908f)(label(?))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - a90dd745-12b6-452e-a3a9-f052298fd2de)(content(Whitespace\" \ + 7372ed79-3fcd-475c-b059-95210510c0cf)(content(Whitespace\" \ \"))))(Tile((id \ - 4266fd4f-6ea5-4dac-9610-97cae7ebb411)(label(->))(mold((out \ + 07b13bea-db5d-454c-91b0-cc450b8c2726)(label(->))(mold((out \ Typ)(in_())(nibs(((shape(Concave 6))(sort \ Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 9adbdab5-f905-434e-a6bf-791180566e08)(shape \ - Convex)))(Secondary((id \ - d8c438dd-8c59-4c3d-b05f-961580fbacf7)(content(Whitespace\" \ - \"))))(Secondary((id \ - 1004425b-ab5d-474d-93c4-1911af40434b)(content(Whitespace\" \ - \"))))(Secondary((id \ - 368965ce-b2a2-46bc-987e-d30c517601fd)(content(Whitespace\" \ - \")))))((Secondary((id \ - ffd37850-24e1-4703-accc-aca35365a4bd)(content(Whitespace\" \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 43d521ab-616e-44c3-a207-ac015f93000c)(content(Whitespace\" \ + \"))))(Tile((id \ + 0404bf00-bd76-438f-86f5-44a23060419a)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + f2dc4d67-d084-4fe3-9aea-2d04f7eb9262)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 03e22d24-6257-4119-80d4-680465c5e7f7)(content(Whitespace\" \ + \"))))(Tile((id e5fd2c6b-8099-4f07-a664-98e133fcfe27)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 97c41d01-fa73-4447-bc4c-2295f7a0be8f)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 2d6004d7-cfca-45c3-b44c-a10879043255)(content(Whitespace\" \ + \"))))(Tile((id \ + 6557588c-2cba-499f-ba21-5810522d5de4)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 8f8c45b4-8d80-40a0-92ac-411210b81695)(content(Whitespace\" \ \"))))(Tile((id \ - 1f86e198-5228-4a1a-afe3-20887f3b3bcc)(label(fun \ + 681b56ae-255c-4c4b-860a-5a0764e64735)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ + ef8c58f5-958d-4289-a061-ce0fbf62be82)(content(Whitespace\" \ + \")))))((Secondary((id \ + 907ca291-cccd-48be-968f-2d873bbb2f88)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + fee52af9-bf19-4b58-b84e-ba6c86a79caa)(label(fun \ ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - d4a9281e-b622-4a07-83e4-95836388416c)(content(Whitespace\" \ + 6db5dd83-872f-499e-80f6-9b0bc46dc714)(content(Whitespace\" \ \"))))(Tile((id \ - ceaa600f-332a-4512-ae7d-ccd431312463)(label(b))(mold((out \ + ff7b7de5-cb8b-4afe-8efd-29f360c2f794)(label(f))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 0c01a344-f1c9-4c7e-8ad3-573c45ef2a08)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 31b2b80b-fd60-4a15-8201-9fd3775e2356)(shape \ - Convex)))(Secondary((id \ - 3b8d624e-7cbf-4806-88a0-790cc43db5e9)(content(Whitespace\" \ - \"))))(Secondary((id \ - eade9501-66a6-49b4-837b-a005cd7b2674)(content(Whitespace\" \ - \"))))(Secondary((id \ - c0696d59-61ed-46f0-9fab-7577204d5e8a)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - a5b77b0a-dafe-4e5c-ae2b-95b835546eb4)(content(Whitespace\" \ - \"))))(Tile((id \ - 7406966c-01c1-40ae-8438-894d1bd59a01)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 97504d19-0589-43ad-9def-8eefdf693b19)(content(Whitespace\" \ - \"))))(Tile((id \ - b24017a8-1060-45de-8438-0cb0f0c69baf)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - dbe84fb8-9cde-4815-8f5b-68370e14c05a)(content(Whitespace\" \ + d508604f-99ed-4bcb-8894-bab1d3de153f)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 79558989-20eb-454d-9fe0-69bf23aa069e)(content(Whitespace\" \ \"))))(Tile((id \ - 235d8af6-52e2-4b8e-bf91-009e4447eb50)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - a9d0e871-e802-414e-bd30-bbc48f9f6dc9)(content(Whitespace\" \ + 3d09d6ed-8214-4b3d-bd2a-80c74305c1ff)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 7b65b951-d3f1-4d07-abae-72118869539d)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 2a7c5668-e30e-4e8c-b140-dc0e219c3a94)(content(Whitespace\" \ - \"))))(Tile((id \ - 742b6c6f-3db9-4d16-9914-a5d914ad92f9)(label(f))(mold((out \ + a4e8d381-b27c-4c73-9a92-baa42276428c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + a2ff2254-900f-4805-b23f-58b44e5743bb)(label(List.fold_right))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - a0091632-5ca2-4a0a-8693-af46c964b707)(label(\"(\"\")\"))(mold((out \ + 9ce612aa-2c62-4efe-a339-fbc01fd91b76)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 900e40c3-df7f-43de-868e-529a722d69b6)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 7f669310-1611-4150-9484-022033cbbc76)(content(Whitespace\" \ - \"))))(Tile((id \ - aa13d4f2-71e1-4dd8-b9c8-523e1a2cd552)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 906bec45-5fa8-4910-b1eb-0bd172b39cff)(content(Whitespace\" \ - \"))))(Tile((id \ - b493b63b-3673-4cf5-9fc6-bebb42db1396)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 2e133c45-2e48-4006-b0ed-ca719e6d9ddb)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 871541cf-13ed-4348-9a2f-b93f45dca05d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 4d10f655-2634-4c1b-9762-63ed6a7780de)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 45785c6c-5f7a-4373-b7cc-f67910580015)(content(Whitespace\" \ - \"))))(Tile((id \ - bc8d814f-86c6-4f6c-ae4f-3cdf5b2c049c)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 50bc8550-04dc-4d90-a4a9-be8df5d98a3f)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - ee84e1a7-15a8-40db-8a5a-4d9870cb2edd)(content(Whitespace\" \ - \"))))(Tile((id \ - a368cd1a-a7f6-4903-b2f7-d3beb1537bdd)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 3d1c071c-bfda-4037-b178-019b06488b8b)(content(Whitespace\" \ - \"))))(Tile((id \ - 0fe78a55-a7de-4ff0-8787-ecd69bc9e239)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - ec97cc38-d201-44ca-ae64-28806c5d8d48)(shape \ - Convex)))(Secondary((id \ - 369b2741-2397-4f99-acdc-460eb71dcc12)(content(Whitespace\" \ - \"))))(Secondary((id \ - 8d566925-4560-45ce-af57-70d001f7af47)(content(Whitespace\" \ - \"))))(Secondary((id \ - 2f590b5e-aa3b-4967-b0c4-f7cc737b8d5c)(content(Whitespace\" \ - \")))))((Secondary((id \ - 435c918e-b179-42f3-85a8-1c2de3f745a5)(content(Whitespace\" \ - \"))))(Tile((id \ - 162de82e-a946-4fb9-9526-1019b2dc13dd)(label(fun \ + 6f44203c-37e2-463b-ac9b-a66dd68901f3)(label(fun \ ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - 19beca4b-cce6-4ab2-b079-15e467628ba7)(content(Whitespace\" \ + 475d76f1-2222-4524-aa60-0bf6997bd7f1)(content(Whitespace\" \ \"))))(Tile((id \ - 7e2e4f39-845f-4a7b-82cd-571ec45b852d)(label(b))(mold((out \ + 439a3ffa-87aa-496c-8b60-144f9c0d918a)(label(x))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 673c44a7-ac40-4ed6-8b0e-90e7220f4134)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - feceacc8-a63c-48bf-82ab-7b0b97d47a90)(content(Whitespace\" \ - \"))))(Tile((id \ - 9478b03d-b2c3-4714-88cd-76863e56b029)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - feacb768-8686-440a-b28b-9e33df74853a)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - db49bbf6-b497-4ba7-bc17-5a1971908944)(content(Whitespace\" \ - \"))))(Tile((id \ - dfde7bb5-0af1-4d93-bcd2-d90bdf3d04c7)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 1cea4d62-89da-4bdd-b13f-7dcd4608ece3)(content(Whitespace\" \ - \"))))(Tile((id \ - ae82c61c-e474-4d87-9bf1-f9931d692738)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - dd934033-111e-46e7-aaae-b0df65816e53)(content(Whitespace\" \ + 53e3acab-0391-486f-b749-398a00d49c44)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 9e945afb-ebd2-4c1d-b1ae-2f8eabaf809e)(content(Whitespace\" \ \"))))(Tile((id \ - 9a69136a-bcab-4cf0-8da5-f535f7e26d27)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - e90533d0-3cce-4094-92c5-72dfcb56abdd)(content(Whitespace\" \ + 03d3a953-ad1a-47e9-a0dc-cbb15555af49)(label(acc))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 2b25a136-c9f5-4d39-8a14-c914369a2858)(content(Whitespace\" \ \")))))))))(Secondary((id \ - c6226fbd-11f6-4419-85ff-ab3c2498e170)(content(Whitespace\" \ + 634517e7-4819-40d0-bd42-fd1600aad366)(content(Whitespace\" \ \"))))(Tile((id \ - 41bd500b-631c-4c81-9c59-55f283d35d0f)(label(f))(mold((out \ + cbb8004c-6347-414f-b0f2-bd7dd313f6a8)(label(f))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - c5598d7f-05d1-4f6d-bda7-d4418e1a4093)(label(\"(\"\")\"))(mold((out \ + 2362db5a-527d-4cba-91e0-17ec84be2359)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 52536945-61d2-4a8a-b34c-0f97f74678ca)(label(true))(mold((out \ + 310bcf22-0eb4-403d-8686-91dfdb7c03b5)(label(x))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 74bfea44-e314-4b68-aa4e-8624bdc8ce7a)(content(Whitespace\" \ - \"))))(Tile((id \ - a263c68f-6725-4707-b6ad-7dd38477d1ce)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ + Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ + 628e9b5b-e559-43d1-b0fc-7bbec89bce38)(label(::))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 6))(sort \ + Exp))((shape(Concave 6))(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + a9956684-58b4-497e-9142-59580058ff6c)(label(acc))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + e5b5aa8f-7fcd-495d-b046-a333a6ea0e86)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 5fb52d35-62b1-4553-95ec-908a25026114)(content(Whitespace\" \ + 7ec54510-497c-47ae-a0bd-abdc7157721e)(content(Whitespace\" \ \"))))(Tile((id \ - dd524143-3ef6-4d77-a5aa-1d1607996ea3)(label(true))(mold((out \ + 08294314-ee0a-4852-82eb-9c5d6245a680)(label(xs))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 7e8e6138-15f6-4d0a-a1c2-9a8bbc2408f5)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ + c4a023b2-b8bc-4a18-853a-ad96bd4cff38)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 6015d050-9f6f-4c94-aab9-b6beb618f94b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 9271a2da-695c-4a84-a5f1-782b6d1a0aa3)(label(let = \ + ead516ed-5bac-4790-b3bb-332656bbbe5e)(content(Whitespace\" \ + \"))))(Tile((id \ + f8917934-1500-4507-9ac6-701bf268620f)(label([]))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 8b4c5c57-8e91-41ea-a0f0-3e509747ac3b)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 700b6b33-68b1-44ce-a9d4-e98877116316)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 97e5ceb0-b1d6-4013-a3ea-b413a102d20f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + a6c5f05d-64c2-4d87-963c-874568b0b597)(label(let = \ in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - 34844e16-5aed-43ae-a080-46a40717dadc)(content(Whitespace\" \ + 15e171ec-0bc2-41d6-82ea-72b936be8197)(content(Whitespace\" \ \"))))(Tile((id \ - 7dee8226-5eba-4a93-a598-fe1c5f7f7320)(label(f))(mold((out \ + a5e7e99f-a53b-4ffa-9fc7-43d802a37c3b)(label(List.map2))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 2e94a4f6-50ea-417f-bf87-9b38816eb882)(label(:))(mold((out \ + 30f70b1a-c199-4ecc-b7cf-77e46d6a3912)(label(:))(mold((out \ Pat)(in_())(nibs(((shape(Concave 11))(sort \ Pat))((shape(Concave 11))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - ddfb9fe2-8c13-4c32-a518-c81106179548)(content(Whitespace\" \ + 466db29d-9d3f-4c79-9e38-b3a0f198e0fd)(content(Whitespace\" \ \"))))(Tile((id \ - 83327e64-693f-4bb9-b698-87a789323c9a)(label(Bool))(mold((out \ + 7981430e-dca6-476a-9c02-468a9e46502c)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + ca164ba4-7ab4-4717-9009-a72c596ac767)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 16aa16da-1293-489d-bba6-c5c97c077741)(label(?))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - d466c4b0-bfee-4b81-a549-29ff26e5be9d)(content(Whitespace\" \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + ff268502-83ae-4511-afdf-7a317e3e25c9)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + bf1c0868-8f28-4069-9cd6-a634f2b685de)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 440b090a-ac9e-4925-b690-c46ae8bef5a9)(content(Whitespace\" \ \"))))(Tile((id \ - ad3e8603-24bc-42ef-a50c-25f61ba914a7)(label(->))(mold((out \ + 3706947c-a275-4fff-b23b-ba3c1d9a2063)(label(->))(mold((out \ Typ)(in_())(nibs(((shape(Concave 6))(sort \ Typ))((shape(Concave 6))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 7a253466-e174-446b-ac4b-1033e9f6b871)(content(Whitespace\" \ + 1e2ec1d5-2ee2-48fb-9267-7c7fc7d9dda4)(content(Whitespace\" \ \"))))(Tile((id \ - c0fa1d45-e9e0-4a59-9bf7-a5043d8cc002)(label(Bool))(mold((out \ + 664a0daf-c9d6-4ba8-9653-cdf7b39dc6ad)(label(?))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 10fd4c96-baa1-4e8f-a53e-100cb36aee6c)(content(Whitespace\" \ - \")))))((Secondary((id \ - 6aa641dc-56bb-4b33-82e3-1cbb94491d1f)(content(Whitespace\" \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + 04293d20-c5f9-44f7-9536-748899af5c93)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 017d043c-b7b6-4e98-b18f-092ad0c76a9b)(content(Whitespace\" \ + \"))))(Tile((id 1817baea-1ae0-42c9-99fa-0b7d9ab56197)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 132dbb69-934a-4cdb-aad2-147adf985c49)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children()))))))))(Tile((id \ + e5581daa-dff8-4bec-bc61-cccc735edde4)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + cff3b487-4963-4ab9-8dae-3b983d622017)(content(Whitespace\" \ + \"))))(Tile((id 788da3b8-f8d3-476a-82ef-89afd5be0cff)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 63f18e0b-1dae-4599-9cdd-fb1c16c03243)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + feeec7f8-088a-4b1c-a64f-f8d7f494d94e)(content(Whitespace\" \ \"))))(Tile((id \ - 2efa7e74-501b-480d-9be2-0b91ab400b25)(label(fun \ + b95855c9-1675-44e8-8f1a-f2d9caf2cc88)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + fe5794f2-616b-40be-a03b-892e4a75b5ad)(content(Whitespace\" \ + \"))))(Tile((id 046d67f3-15ea-4efa-8f84-27740fd8bee0)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 5f09b52c-4141-4273-ab84-2cadc4c6b0d9)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + a92a0555-430c-483d-9386-6f4e240f3828)(content(Whitespace\" \ + \")))))((Secondary((id \ + 5e41c0d5-f8f0-4a4d-bc02-7695ce264fe8)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d73579bf-dc16-4296-895a-18b42aeaf02e)(label(fun \ ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - bbb4dfea-a227-493d-8320-effb69611423)(content(Whitespace\" \ + 3d414645-1848-49d2-bb45-ce515064ad81)(content(Whitespace\" \ + \"))))(Tile((id \ + b90599e9-d821-432f-a757-e5ad216ccb0b)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + c993e691-219f-4621-9b43-7111a41feff2)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + d0d77663-e340-4a26-ade1-01e8fbbbba0a)(content(Whitespace\" \ \"))))(Tile((id \ - d7d6b45e-36f9-4c77-87cc-9564261d6fff)(label(b))(mold((out \ + 2f2795b4-6563-4c42-b348-83e45a51c745)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 8bded980-ad07-4b90-a2b6-11b04053db16)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + b47f085a-20e3-461e-aec4-9af168b1fb52)(content(Whitespace\" \ + \"))))(Tile((id \ + e3e15cf5-8d5b-4f16-bce6-09eb8daa84c3)(label(ys))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - ac7ab096-53ba-433c-94b6-c05d8703f2cc)(content(Whitespace\" \ + 0496df37-06ad-4629-9c53-b97ec6d06b7b)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 8325b5f5-d41a-4dff-8114-99b59ecd3e85)(content(Whitespace\" \ - \"))))(Tile((id \ - e8f221da-21e6-4912-9914-31697964caa5)(label(b))(mold((out \ + f71104b9-f490-465c-88e8-b4642e9c7c95)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + a72442b2-e248-483f-ad57-ddb72d84afc6)(label(List.fold_left2))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - f5bf4238-4163-4d18-8580-2313d921959c)(content(Whitespace\" \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 72475256-3299-47f2-838a-e454572ba8df)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 04700a66-88d8-4a73-a4e1-0c44cbcf0d52)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 494e4327-0ea9-449d-93cd-7d8b431e368e)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + f619df20-a3f8-4858-89a8-2e23724b828a)(content(Whitespace\" \ \"))))(Tile((id \ - ce6a2eb1-970d-4e35-96e5-ce797fa6aacc)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 59e29b21-17c5-4c1a-8b3c-54189c96e778)(content(Whitespace\" \ + 69bf66e1-5bfb-493e-b587-2c83c4a23ce3)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 7e56e555-c017-4c17-8398-5c54fe11ae95)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 52637c2d-f384-46a3-be53-e37a58fe69ef)(content(Whitespace\" \ \"))))(Tile((id \ - d52afa68-cf8e-4632-a745-24e9d0a5253c)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - e71e9c30-311d-43e3-8dc5-a28b95f9efd6)(content(Whitespace\" \ + af42ef90-eae1-4bf1-88c7-64a6ced59074)(label(y))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 2f1680ca-d998-4082-88ce-90edf039a872)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 5d23284b-8cd3-48bc-9a1c-9e14d51b1857)(content(Whitespace\" \ + \"))))(Tile((id \ + 7691035f-628c-42ef-aecb-465b3cd22daf)(label(acc))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 64af2b8c-9ff4-422c-9422-1f445e3f2907)(content(Whitespace\" \ \")))))))))(Secondary((id \ - a8749f93-4f77-497e-b667-a20333ac73ef)(content(Whitespace\" \ + 05fff4f7-a2fc-47d0-bbfe-445cce7248d6)(content(Whitespace\" \ \"))))(Tile((id \ - 9101bfb6-4ca9-4ff0-94dd-98f16a638608)(label(f))(mold((out \ + bc246c38-a8cf-40de-bd12-ff3735ec4149)(label(f))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 16a464ee-12de-4725-bbfc-30139156c5b2)(label(\"(\"\")\"))(mold((out \ + 026d9f93-dd29-4ed4-9322-9c5c2c896b43)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 026be924-3fc1-4243-ab59-d413f936b923)(label(true))(mold((out \ + b9149c3a-4701-4da4-bd4f-12074dcc2167)(label(x))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - b53dda25-5f7a-4033-bf2a-cf2d81e6335c)(content(Whitespace\" \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 7ffef7f8-5bc9-43ae-9d08-dacc853e8c19)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 5a919fc4-3500-475c-ba64-6f7af9208f7b)(content(Whitespace\" \ \"))))(Tile((id \ - b65ae5ba-d37b-4317-81b0-b9dd36d60103)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ + 5fe32af8-f4ca-4fc4-b875-975186cbcfe3)(label(y))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ + f78b296f-0b7b-4fc9-bb00-75abac404d02)(label(::))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 6))(sort \ + Exp))((shape(Concave 6))(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 3655cd3e-a09a-4f05-bd51-381b078663fd)(label(acc))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + c8fff1a2-a631-4fdc-a937-0f57a41aeaa6)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 9d106574-4e8c-4fae-94b5-2c2464948b43)(content(Whitespace\" \ + 362a1ca2-338b-4d78-ae2d-503a5045a1d8)(content(Whitespace\" \ \"))))(Tile((id \ - a8c8b27e-2262-43a1-ad3e-9ce34e3eeedd)(label(true))(mold((out \ + 77ae1a4b-ad64-4b04-9b1f-0813694aa92e)(label(xs))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - b4e87bb7-2370-4ec5-91a1-e7fba20e2b96)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ + 4b3352f9-caad-4ca4-ad49-88cae136030c)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + d31364a6-68e8-4473-95da-b57ee428d642)(content(Whitespace\" \ + \"))))(Tile((id \ + 1ddc2c8f-035a-4862-9ae2-b3bfcc6b6910)(label(ys))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + b20fe2b8-ac42-4186-9c85-040ed6d3e5d9)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 8ecd5c16-c27b-4db8-841e-7a7d84b56783)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 56f5b307-ccbd-4055-a5d0-e15d2eee7c3b)(label(let = \ + dc2f2d78-815e-483d-95fb-af00fe08975d)(content(Whitespace\" \ + \"))))(Tile((id \ + ff0566cb-941f-4bc5-b853-b664445e9c7c)(label([]))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + df264605-2585-4f36-939c-d871930d45f6)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + b7ba35eb-8ea6-433c-a757-cde192a21a12)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + ece1fe0b-e6d0-4ac7-9d28-3933aa2233f6)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + a6eac3e1-16b8-4f9c-8ea5-502c1fd2e747)(label(let = \ in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - 91762bf5-6066-440f-98de-eedf468d2efc)(content(Whitespace\" \ + 202910cc-00b3-48af-93d1-73ef11977aca)(content(Whitespace\" \ \"))))(Tile((id \ - b10c2aeb-2def-4842-909d-39519641905a)(label(f))(mold((out \ + becc90f6-bf85-435c-8b37-9e415083570e)(label(List.filter))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - b5dfa606-edd8-4917-b5e8-e167cb639daa)(label(:))(mold((out \ + b7ddc03d-c778-4139-ad74-6df0205a07c4)(label(:))(mold((out \ Pat)(in_())(nibs(((shape(Concave 11))(sort \ Pat))((shape(Concave 11))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 70c3fcf2-0d68-4f7b-ab6e-77544c8ec3bb)(content(Whitespace\" \ + 0e0c5752-747f-46e0-aa9f-21ea6acd5ef1)(content(Whitespace\" \ \"))))(Tile((id \ - a8e10085-b0db-442e-8e0e-36280840e81b)(label(Bool))(mold((out \ + 86487b94-28da-4b1b-96d4-a9a7792d22b1)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + a751b606-e459-4048-83fe-bdce15bdafc8)(label(?))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - e333d71d-9fda-41db-8e17-86e23097d28e)(content(Whitespace\" \ + a5e74202-cc56-46bf-8ee8-b5a5180dc84f)(content(Whitespace\" \ \"))))(Tile((id \ - 1404d298-b539-42aa-b1f7-2e3d7d4c24b0)(label(->))(mold((out \ + f90e77a4-e7b3-4380-8b29-d3cf4e25843c)(label(->))(mold((out \ Typ)(in_())(nibs(((shape(Concave 6))(sort \ Typ))((shape(Concave 6))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 1a889cc4-fe72-42d2-bea1-e2f61e37ac87)(content(Whitespace\" \ + 3a64b90b-c526-4b0d-9f85-072fa0800f7f)(content(Whitespace\" \ \"))))(Tile((id \ - 5ecb8198-c2a0-4664-b928-3c703caf0add)(label(Bool))(mold((out \ + 0c3c6085-1760-47fe-9d1c-e5e1583024c7)(label(Bool))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 8ba66779-25d9-48b1-926e-5a34765c312d)(content(Whitespace\" \ - \")))))((Secondary((id \ - bd6d0014-9e77-4225-9ff8-c0a7de2825b7)(content(Whitespace\" \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + c3d2e2be-6532-4157-aa34-c25dcd804a2c)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 41dcc359-d152-42aa-b0a1-d03d953545c7)(content(Whitespace\" \ + \"))))(Tile((id 4c81805f-c91d-4884-b7dc-b48fecaa04e2)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + ee157aff-536d-4156-94a1-e9cd4e19aaba)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 7f04ca54-0907-4f0f-9086-d0f63a715a4d)(content(Whitespace\" \ \"))))(Tile((id \ - 29dfd12a-2d87-4df6-aece-53cf6bba0c52)(label(fun \ + 6ee416f7-764c-4dcd-bc97-671af516c692)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + fc3e4c38-bb7e-41cb-9904-1bc1f7422ed0)(content(Whitespace\" \ + \"))))(Tile((id 7156ea6f-3d23-4fbb-ab3c-beb0bd9b8dba)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + ecd390d4-ba0d-4795-9e34-bf9c0da8a790)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 8fde1ae2-042a-4f53-9b16-03f54a3b8342)(content(Whitespace\" \ + \")))))((Secondary((id \ + 817541df-551c-46bc-8692-7e5145a4269c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + eb1e7b19-bc47-40b2-a90d-65e7c06788b6)(label(fun \ ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - 4294c873-5c21-4a94-bf88-758b5fdf2f7f)(content(Whitespace\" \ + 2b10c988-f067-4717-921c-09a3e9f420f8)(content(Whitespace\" \ \"))))(Tile((id \ - d466322f-a8b5-47c0-9dc6-bbc7a28d284a)(label(b))(mold((out \ + 9ecd553e-4073-476d-b98f-0818b2f240c3)(label(p))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 8b147a7a-1da4-46c6-a28d-091fa16861c1)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - e5d814f6-aa9c-47a9-b63c-42fd335f953f)(shape \ - Convex)))(Secondary((id \ - aaa67ede-7822-4cf7-9f19-303fa33f8aba)(content(Whitespace\" \ - \"))))(Secondary((id \ - 6e552c40-4071-4359-b9e9-37aa5802101e)(content(Whitespace\" \ - \"))))(Secondary((id \ - f5a43ffe-b44b-4887-a2f7-c7ad2c748a8f)(content(Whitespace\" \ + 55478c1a-fe90-4aa8-b4f7-d9419c143f6e)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 964d56b6-1c47-4058-b649-d9a6128c99fe)(content(Whitespace\" \ + \"))))(Tile((id \ + 4a987b08-a95e-4b3d-9624-045e395b2e56)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 562bd80f-9834-45d1-8774-dbb2832dd901)(content(Whitespace\" \ \")))))))))(Secondary((id \ - afb4920e-7c70-4c30-80a8-b59dda228ee5)(content(Whitespace\" \ + c0fd0487-4e85-47b6-86f8-413da450fff2)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 4d7bfce2-71a8-4c40-b740-da08b774ff93)(label(case \ + end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + cbe9dbfc-27a7-41d0-ba6a-cd6d1bc86e7b)(content(Whitespace\" \ \"))))(Tile((id \ - bf7732e5-78e7-40c8-a9c2-a8ecb70093b1)(label(b))(mold((out \ + 5a063da9-9e98-4b30-a4a8-04224af970d7)(label(xs))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - ad412ee5-7ba6-43fc-a25d-326aab9770cc)(content(Whitespace\" \ + 7a6f4899-4557-48df-b353-9f07b5df0db9)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 3c002941-ac53-4ff6-9679-83757b025ce3)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 0716a51a-2273-4273-b52f-20b4da4c5594)(content(Whitespace\" \ \"))))(Tile((id \ - 0ca89b07-36d4-48f6-8290-1c8b24c034be)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - cb3c95fb-ae39-4615-973e-ec79808abb70)(content(Whitespace\" \ + 79387574-5353-4875-a214-ef5743ef54ef)(label([]))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 85d7c5f8-2dba-417c-828a-5a45936d1658)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 079e0c37-92dc-48da-8a18-1f02390d78c9)(content(Whitespace\" \ \"))))(Tile((id \ - a6f26646-3b0d-46ef-bbec-37d88efc98cf)(label(true))(mold((out \ + 2b65b7a2-3970-4689-ac38-76a42e344466)(label([]))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 205acc81-396b-4654-a205-a613a8eec959)(content(Whitespace\" \ + b9f17947-82a3-464d-8f9a-1a408c12fdb7)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 7fba27b9-d4e9-4e8a-af01-1486701e6086)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 3fd4ba8d-ac86-4e0c-90e6-4a1554efcb01)(content(Whitespace\" \ + \"))))(Tile((id \ + 650803b2-5371-4a9c-b165-b303ab34addf)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + ad10a448-894c-494a-8917-ac4acacbbefc)(label(::))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 6))(sort \ + Pat))((shape(Concave 6))(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + f01d52da-4ce5-4926-913b-8acd79a519a0)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + aaa276b4-b8d7-419e-80ad-7226e30640d0)(content(Whitespace\" \ \")))))))))(Secondary((id \ - a47cbbe4-adb2-4be2-aab0-61f00f9562e1)(content(Whitespace\" \ + fed45c8b-df50-42a5-aedd-1e3d17556e6c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 5fb0e055-dbe7-4923-82d8-75fdc72908cb)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 6f38c1d0-aa43-4675-8769-201601e13d7a)(content(Whitespace\" \ + \"))))(Tile((id \ + 6624b6e4-83eb-4edb-a89e-88dec42ab447)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 20068f2a-0ea4-4128-986d-f634f7dde04d)(content(Whitespace\" \ + \")))))((Secondary((id \ + 89fbe451-6ed0-4ae3-8089-aa7f9545d3cb)(content(Whitespace\" \ \"))))(Tile((id \ - cec4d937-3598-40f2-9397-c6a8e97a8685)(label(f))(mold((out \ + d3246ae3-f16b-46cf-a5ee-409292c335ee)(label(List.filter))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 481fb687-e80b-4b1e-ad16-d118f96518d3)(label(\"(\"\")\"))(mold((out \ + abfcae7f-1411-41e2-b0fa-c4e0ca9c489c)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 8bec8bab-36e3-4f51-a0ea-e1c25b102bc4)(label(true))(mold((out \ + 5ffd57e5-b595-46d0-8605-c8c2b8ae916f)(label(p))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 24922012-a09e-41f1-936e-3295c2790e53)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 1ec4a57b-7d43-4f4a-904c-12bf8cd03e43)(content(Whitespace\" \ + \"))))(Tile((id \ + afadda32-8984-4b9e-91ae-389c5cfa841b)(label(xs))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort \ Exp))))))(shards(0))(children()))))))))(Secondary((id \ - c515d61f-d2ee-4687-aa95-d27c345d9124)(content(Whitespace\" \ - \"))))(Tile((id \ - 2987470d-5adb-4c4b-b833-a6053464f507)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 921d2a1d-8b94-416f-9310-896690875100)(content(Whitespace\" \ + d960d0ff-9371-42d5-973e-163ed31e8719)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 8b82df41-e2b9-4c7f-bd49-aa8abcc3a433)(content(Whitespace\" \ + \"))))(Secondary((id \ + fa8715a3-0321-44ea-83ce-46581ebcb52f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 6e7a52eb-976a-4d85-bc62-5ed81f25892c)(label(if then \ + else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 12))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 247c1217-1c63-4fe8-96c7-a9fa29e01c38)(content(Whitespace\" \ \"))))(Tile((id \ - 1e9ee143-0c04-44d7-9377-b00d030d9e8d)(label(true))(mold((out \ + a171f9b3-131a-4dd2-8070-e2e4eb3abe8a)(label(p))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - e0eb56a9-fe68-4c96-a5bb-1d4dd7699c0d)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ + c6b4807d-015d-495a-a4b8-938ac3b507a0)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 50560905-e2cc-4c53-a910-2cfd0043c0ed)(label(x))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + e6aba19c-fb19-4a52-bb4d-0bec46f881fa)(content(Whitespace\" \ + \")))))((Secondary((id \ + a131cf08-6b75-47ec-b588-a6236e9c865e)(content(Whitespace\" \ + \"))))(Tile((id \ + 3b912265-5080-4923-8540-d254ae83b287)(label(x))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 866159cf-5e3b-4c29-ab34-e3668c3ffee6)(content(Whitespace\" \ + \"))))(Tile((id \ + 0f133882-4c06-4bce-893a-e68ff8ec4218)(label(::))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 6))(sort \ + Exp))((shape(Concave 6))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - ce674ccd-c248-497a-be93-2d1827321580)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 77df4c7b-d395-4223-9069-a41ccc5bbcec)(label(let = \ + 904ed45f-15ae-4458-a1af-30e9ba0577ce)(content(Whitespace\" \ + \"))))(Tile((id \ + 02aa186a-69a6-49d1-be03-2a3ea3dd4d30)(label(xs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 5f521362-0b83-4e5c-8adc-a9260de0ecd4)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 5e014b65-7630-4a27-ab65-780fd76449df)(content(Whitespace\" \ + \"))))(Tile((id \ + 7ae71747-db99-4074-a8a0-26a1d5b43c54)(label(xs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 26cd3957-cd58-47a3-afcd-ede62afcff39)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 124c2567-2a3d-4889-a57f-fab3c95da91e)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + c655b8a3-f5a6-4597-8faf-b69f09af7c42)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + d8bf6e0b-a751-4256-863e-f6b4a40ffe0b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 80c04e77-e6c2-4cee-9538-05e216b4d509)(label(let = \ in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - 37e216c7-b5bf-4c84-94e2-809bf6f37566)(content(Whitespace\" \ + db8c1624-640b-4cbe-986f-4a333dbb2910)(content(Whitespace\" \ \"))))(Tile((id \ - 6ba77d63-777a-4ea8-8e2a-b749252fc99e)(label(f))(mold((out \ + ee085d60-c78e-4b6a-b80e-e8cbb5f6c339)(label(List.append))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - e7b23270-f09c-49d9-99c9-63cfb246bf84)(label(:))(mold((out \ + 4626e981-ef8b-45b2-ad53-84a0d8663058)(label(:))(mold((out \ Pat)(in_())(nibs(((shape(Concave 11))(sort \ Pat))((shape(Concave 11))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 0a0f7a4c-5607-4b44-8f2f-7d7fea49ad79)(content(Whitespace\" \ + c0ca21f0-3884-40a9-b67c-302a5148542a)(content(Whitespace\" \ \"))))(Tile((id \ - 43c8c778-7a13-45ca-84b0-7f325e56c3aa)(label(Bool))(mold((out \ + d57e2afa-6ffb-407a-b563-315f867c066f)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + e79226f2-0841-4e4c-b4a8-4efdb9397fd8)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 8fbe0dbb-965f-42b1-a1fe-1ed1dc05fb9f)(label([ ]))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 537894c2-a532-40cc-9bfe-6711c97c28b8)(label(?))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 3d7b8db2-5f04-432b-8e91-08dcb9396fc1)(content(Whitespace\" \ + Convex)(sort Typ))))))(shards(0))(children()))))))))(Tile((id \ + 04c69208-cff4-4cd3-b2e2-84755e44a3b5)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 8efac8b7-39db-4e05-adc5-13b8e814b97d)(content(Whitespace\" \ + \"))))(Tile((id 890f35b6-70fb-42bc-86c5-58a5327c2ed6)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + ac968212-bc4c-406f-9745-6cc24447dd8b)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + c47e3838-f238-4bd4-bf91-595c17956b7d)(content(Whitespace\" \ \"))))(Tile((id \ - 46647b2a-ce9e-433b-b19a-34524e8a3936)(label(->))(mold((out \ + 9bf2770f-8682-4b4b-9579-7abb4b3d9196)(label(->))(mold((out \ Typ)(in_())(nibs(((shape(Concave 6))(sort \ Typ))((shape(Concave 6))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 2948e58b-e983-47f2-99d0-ee3888d9dd2d)(content(Whitespace\" \ - \"))))(Tile((id \ - b321fb83-884e-48ab-9f0d-821af55f2875)(label(Bool))(mold((out \ + 24d162f0-6c3c-44c7-a7e3-1b0db492d2ff)(content(Whitespace\" \ + \"))))(Tile((id 63216f43-2273-417c-b496-acf392f140e5)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 56d8e5fd-9023-4f21-bd8d-e444aac9e7d4)(label(?))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 319dd3f4-27e9-49fc-9cc9-c1061871c35a)(content(Whitespace\" \ + Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 39c053b3-5dc3-419c-9b19-ea12e8e3a5b7)(content(Whitespace\" \ \")))))((Secondary((id \ - 0bd2e23c-685d-4f29-bfe7-a69b36196188)(content(Whitespace\" \ - \"))))(Tile((id \ - acbfef52-103f-477e-bb21-04b4d1bdffa7)(label(fun \ + 2285195a-53ca-4eaf-97eb-2eb70c33ddd0)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 42219c8f-9e2e-4185-aabe-6f138f90a62f)(label(fun \ ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - 41fb3d84-8b61-424e-804d-ec69c303fb6e)(content(Whitespace\" \ + 0a26fcc6-e314-44a6-8232-06e97e2c811b)(content(Whitespace\" \ \"))))(Tile((id \ - 9b5d610f-0469-4739-aca7-5119fecf545b)(label(b))(mold((out \ + 7b094187-3ec1-4c95-9960-393a199f8613)(label(xs))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - c410566c-dabb-4c16-a9d3-529919c4aed7)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - f58d88f3-e73c-4460-af33-c98310bcf84c)(content(Whitespace\" \ - \"))))(Tile((id \ - 74f034a8-1c62-4a1b-949d-3d5d9ab06300)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 457e1f7b-6d2e-4f14-ab9d-ffdd7504178d)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 068412e9-a2c9-453a-9471-5c85ca109a50)(content(Whitespace\" \ - \"))))(Tile((id \ - c9e91907-caf6-439b-a853-daf48c23c644)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - f2c60bb1-7cf7-4e8a-a851-b2777cefe181)(content(Whitespace\" \ - \"))))(Tile((id \ - 377c0269-ab26-471d-82ed-240201592a29)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 9c093f60-be9d-4cb6-a5eb-1da93f0e2024)(content(Whitespace\" \ + ab6e96fe-08ae-415c-8765-f6ade0f0c4fc)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 14646036-81a1-4b70-9868-260dabcba959)(content(Whitespace\" \ \"))))(Tile((id \ - ef606d34-8568-40f3-9202-3c38e4be1b75)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - a4529399-1837-4eec-b112-9938302ef97a)(content(Whitespace\" \ + 4530e869-5e22-4e88-b335-efbbeec47bb4)(label(ys))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + c3c1f5b5-c46f-4759-be11-6fc342eb2ffd)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 22922dfd-dafe-4fda-9d42-5edb7349ef5f)(content(Whitespace\" \ + 7340d5e8-634c-4021-b0e7-58312cc840f2)(content(Whitespace\" \ \"))))(Tile((id \ - d60e887f-7cde-4ee3-bee9-380b0c41f4c8)(label(f))(mold((out \ + 411ebb49-c205-4a24-8c01-ba98e485a741)(label(List.fold_right))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - bebd0d47-8506-427e-bed4-9246a8fa3621)(label(\"(\"\")\"))(mold((out \ + 69dd82b2-9540-479e-9ba7-d90656fa895f)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - e8d45f5f-4215-4eb2-9887-f5ec0c765f36)(label(true))(mold((out \ + 190f2583-3582-457e-9fa9-1a1b16965fa1)(label(List.cons))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - a1fec6ee-8077-4339-bd56-4ad81eb6f9f1)(content(Whitespace\" \ - \"))))(Tile((id \ - a821160b-ec97-4f7a-9998-ff6f05d1ed41)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 53c70321-a0ff-4407-9f06-16d2b8e71bec)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 7f093f83-8c79-4361-ad05-6c8f5abd5b59)(content(Whitespace\" \ + 85601adb-67ea-4784-9da7-1a499db5ea3a)(content(Whitespace\" \ \"))))(Tile((id \ - e1640f07-6616-4e3b-984b-dc450a6bd185)(label(true))(mold((out \ + 82ab2e3b-0fa4-4002-8e3d-bf5ecb14d91b)(label(xs))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 3c27e8eb-4eec-4d0e-a200-069eea15262e)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ + 5836b2cc-67fb-4b92-bef8-03e50859dd8b)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 231b5583-44e9-4949-a331-b28a92cd214b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 454d0a65-bb35-4776-a9ad-eb5f8e46878e)(label(let = \ + 1f065a93-e10c-44e3-bf83-5bd1282d5fe5)(content(Whitespace\" \ + \"))))(Tile((id \ + 3dd0559d-fa14-450a-ac4e-975d26fe2a3f)(label(ys))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 1a5935f7-0ec0-4e4e-9ec9-91a44a6d1b62)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 385b3c14-026c-4967-8dc1-26fb02b7a0f7)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + b73690fb-1dd1-4168-878e-1035aa6a04b3)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 860d2595-85ed-433f-967d-0157277262b0)(label(let = \ in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - eaddf229-c03c-456d-92ba-61829c5734ca)(content(Whitespace\" \ + e32b14bc-a2d7-4852-9be3-83706aaea6f8)(content(Whitespace\" \ \"))))(Tile((id \ - 3ab0bf37-42ac-4125-8e53-97ffa6cfa810)(label(f))(mold((out \ + 56d34730-37db-4263-91bd-2075c7faccd3)(label(List.concat))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 9adba8ee-9969-44f3-8b85-d43128748f9a)(label(:))(mold((out \ + 020c1511-3c41-4fba-ad53-2d2ca3ef29c6)(label(:))(mold((out \ Pat)(in_())(nibs(((shape(Concave 11))(sort \ Pat))((shape(Concave 11))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 98c65d51-bfe5-4013-a0a8-51f782896775)(content(Whitespace\" \ - \"))))(Secondary((id \ - bfd8acf7-a1e9-47a9-8fb2-5c081e0b2792)(content(Whitespace\" \ - \"))))(Grout((id 06b65df5-0379-4b3f-aecb-8bf155c70e95)(shape \ - Convex)))(Tile((id \ - 5cbf5af7-2983-4b7a-b9e2-97d2bd4f0d0c)(label(->))(mold((out \ + 456c6468-6782-435d-99ac-0be7dc384676)(content(Whitespace\" \ + \"))))(Tile((id d46c1eef-8ef1-4358-8f45-ed9050f76b7c)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + b390b066-d9ee-4b2b-b1c4-e6180ee67523)(label([ ]))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 73e4454c-744f-4db6-8e49-a7dff740408f)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + c1337810-134d-4ccf-bb99-6000aa26ca6f)(content(Whitespace\" \ + \"))))(Tile((id \ + 11fe27d8-bb84-4204-a78a-4e68617f21b7)(label(->))(mold((out \ Typ)(in_())(nibs(((shape(Concave 6))(sort \ Typ))((shape(Concave 6))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 80529a17-bc7e-4717-a0f5-aa7139bc6ec0)(content(Whitespace\" \ - \"))))(Tile((id \ - c8ccd9cc-6cfd-4669-80d9-65d5b3366014)(label(Bool))(mold((out \ + 24a176ce-c189-41d3-b698-1a71d7416142)(content(Whitespace\" \ + \"))))(Tile((id 1c0bebc9-6c17-4d90-897d-56e217f53f7f)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + f1028d02-281c-4ea0-803a-9f4cbcfc6cea)(label(?))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - b35aca9b-0125-4534-baf8-a3c52144bbc3)(content(Whitespace\" \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 0837b684-c966-4faf-8d58-aef23e42c6ab)(content(Whitespace\" \ \")))))((Secondary((id \ - 1788e3ac-e9d2-4997-8700-1619e77b4c1b)(content(Whitespace\" \ - \"))))(Tile((id \ - d3debcd2-11b8-4475-820d-10af6ec26e85)(label(fun \ + e271bf7e-4991-46f2-8e54-77204711def7)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 306dfd1d-5638-4967-a025-8f3ad1aa2de4)(label(fun \ ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - 2af4105d-3a26-4ec1-affc-268540239e73)(content(Whitespace\" \ + 1bc77fca-5a7a-442a-a0e1-1d2f16224bdc)(content(Whitespace\" \ \"))))(Tile((id \ - 676d9a2a-d045-4e30-aa75-08aacceaeda3)(label(b))(mold((out \ + 2a984a04-d34c-4ce0-b5fc-ad32ba6910c8)(label(xss))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 7b4b3bb9-0ab2-49bb-9535-13a4dc5aa33a)(content(Whitespace\" \ + 938fed52-9a19-4514-874b-0f5b5d442246)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 2b90b3a2-7992-46d0-85c7-564d7220d786)(content(Whitespace\" \ + f97b9eb1-86d6-4a30-8064-f200f30adc5a)(content(Whitespace\" \ \"))))(Tile((id \ - aff6e94c-0622-4fc0-aef8-d37dd2c054ac)(label(b))(mold((out \ + 871d03ed-9192-4b0f-94ed-7b60949bd009)(label(List.fold_right))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - bee3c868-d07f-4ea9-ac8e-114e44b4238a)(content(Whitespace\" \ - \"))))(Tile((id \ - 57a107f3-350c-4caf-90d2-f9b19caf3dd2)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 92398e33-19dd-42bc-ba65-f748223fdf19)(content(Whitespace\" \ - \"))))(Tile((id \ - 79ba26a3-029e-42ce-a5f6-e608849dfb20)(label(true))(mold((out \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 3ce6adb9-f5d4-4a6b-bcad-43bc21732936)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + a4a307f5-9d19-46da-bbb0-ccd3353f0f08)(label(List.append))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - d275d071-0005-43ff-a9c3-f60932cc73f5)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 69a16adb-2f59-496f-8a9e-a7f9a4778ab6)(content(Whitespace\" \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 9ad747b7-2c45-4eb8-beba-ad3b804608ed)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 3fcf2460-355d-4903-ba18-aca37c6017c7)(content(Whitespace\" \ \"))))(Tile((id \ - 4cddd64b-aad4-4393-a692-1229aad0d708)(label(f))(mold((out \ + 58cb5aa8-c531-4fb0-b0b6-489c34ebd90c)(label(xss))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 31699a11-f0f3-4bbe-835c-2d9a0547c923)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 246914bb-94b5-4385-857d-15a9c726ca94)(label(true))(mold((out \ + 32d0b150-18e5-42cb-8ed0-788d1a65de96)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + faec889d-66f4-4851-bce4-1e51ef66e7ea)(content(Whitespace\" \ + \"))))(Tile((id \ + ebd3b9cf-dc94-4ea6-910a-148db164a741)(label([]))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort \ Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 9ac692e8-fd99-4364-8fa9-d900a79de82b)(content(Whitespace\" \ + 65625ffa-828c-40e1-9b99-d1bb22b052d1)(content(Whitespace\" \ + \"))))(Secondary((id \ + b0a36684-a519-4cf4-85bb-8932d8ba1d9a)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + f5490872-babb-40e9-9834-8e585b7a9b99)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + c90c9439-ad6d-4d7f-843a-543c50de6250)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 05f07b8d-127b-4aa1-905c-b29442a1849a)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + b5bea600-de43-467e-b9f9-882164a213a3)(content(Whitespace\" \ \"))))(Tile((id \ - 56b9fd19-52bb-4f4f-bef4-de4cae06ddc5)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - aad6e147-4ced-4e41-9521-29dd02ca74fb)(content(Whitespace\" \ + f1b40375-3f53-4031-b815-06431367205e)(label(List.flatten))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 0a6bd15f-a8b7-4e2c-a065-c494c9a676cd)(content(Whitespace\" \ + \")))))((Secondary((id \ + 13a65f3c-93a6-4745-ac35-f1484d7d8424)(content(Whitespace\" \ \"))))(Tile((id \ - bee762ec-aa9d-4543-aa94-8780dcee6ceb)(label(true))(mold((out \ + 529e3054-10b6-417d-96ad-268d0ab33cee)(label(List.concat))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 937d88fc-8b2c-486b-9533-462f90c13af9)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 209d44df-86f3-47a7-bde2-71f302b90fd2)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 59d846d3-03cf-452b-9725-f9c2a788049a)(label(let = \ + Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 19c012e3-80eb-4df7-82a9-6b5a411e1a61)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + ae6bd7b0-05d9-4fa4-bdef-2d2d593b08be)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + a0be9622-f401-465d-9bb7-8d62831c3ceb)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 2bbff418-0267-4c82-8f04-797bb60aa89d)(label(let = \ in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - e18f7773-c0d1-4f56-a7a3-595ee339c11c)(content(Whitespace\" \ + b9ba2df5-3b1e-45e9-9731-0315e1de7ddb)(content(Whitespace\" \ \"))))(Tile((id \ - bdcfa538-d94a-474f-bf0d-a59aa8e41531)(label(f))(mold((out \ + e590cc54-1de4-4a72-9272-02cc874cb42c)(label(List.mapi))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 8573f11e-bd23-4638-8864-ab61cc09d5f7)(label(:))(mold((out \ + c602734d-9469-49a5-8c6d-576e22705048)(label(:))(mold((out \ Pat)(in_())(nibs(((shape(Concave 11))(sort \ Pat))((shape(Concave 11))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 2d10e49c-cc56-4a48-ac01-2b7ab70bf0cf)(content(Whitespace\" \ - \"))))(Secondary((id \ - 93713604-8132-4740-bfe2-f91f72612180)(content(Whitespace\" \ - \"))))(Grout((id b2ac825c-c14e-41d5-b475-0af2705abf9f)(shape \ - Convex)))(Tile((id \ - ed7d0ae5-2e08-4d63-998c-316da7727a3a)(label(->))(mold((out \ + e17b8cf7-2cd8-4c46-b2e2-02a6fe8cc7fb)(content(Whitespace\" \ + \"))))(Tile((id \ + c182f86c-40be-469d-ba7f-94da470d6b14)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 367e21a1-f12f-46cf-8836-30352a0d7df4)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 1c6cff3d-193f-4c3b-92b2-57cf160fa193)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + ca9581f1-3ef1-443a-bd4d-f01f3c41d2da)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 0d0a2047-f859-47b4-8b53-d5c7b15a4654)(content(Whitespace\" \ + \"))))(Tile((id \ + 8c913f5d-d090-4625-8ef5-02835a8e9915)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + d8e3df40-0cb2-4a4f-a75f-c3f5624890dd)(content(Whitespace\" \ + \"))))(Tile((id \ + f25a18bf-af33-468a-8dbb-1a2cbfafcf3e)(label(->))(mold((out \ Typ)(in_())(nibs(((shape(Concave 6))(sort \ Typ))((shape(Concave 6))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 6f194494-9a99-4d40-9500-2f07c3f9b9a1)(content(Whitespace\" \ + 36d16a38-5a3a-4d22-ab71-920eae438ac5)(content(Whitespace\" \ \"))))(Tile((id \ - f9578f84-93f2-49ba-9361-184e182cd368)(label(Bool))(mold((out \ + 4f11b795-f198-43ab-8db9-f5c503ffdd3c)(label(?))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - a7b14fde-e4f7-48f0-ba87-cf4519b613be)(content(Whitespace\" \ - \")))))((Secondary((id \ - 16db7155-34e2-4ab2-a55a-21336cbc8ec5)(content(Whitespace\" \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + 2cfba7d3-fe83-495a-b1ce-d71a4eaa44cc)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 52bc30f4-26cf-426b-a760-d0932a8f896b)(content(Whitespace\" \ + \"))))(Tile((id 325a5937-a11a-482b-a7e7-0fd057a3fd0c)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 32a463a2-52cb-48be-8542-3ce720be49cd)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + e133fd8a-0d55-4f78-ad7a-c5453b11885d)(content(Whitespace\" \ \"))))(Tile((id \ - bf9a5376-28d0-4a89-9a35-ff5398c40061)(label(fun \ + 8036e03c-04ce-4a94-a045-28e98b664bd2)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 000a357f-48ec-452d-ac81-0caa26ec4761)(content(Whitespace\" \ + \"))))(Tile((id e5f2584b-40fd-43d5-af6e-e650eafb6c4b)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + aa7ea862-aeac-4d55-a52a-77c0ebdeb25d)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + e886b846-f39b-4123-b2b1-7c138c1e0a9b)(content(Whitespace\" \ + \")))))((Secondary((id \ + 041ac118-a65d-43c8-8873-1d3132db3e14)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 1b9bec7b-5c80-41a6-9ef3-50e14438566a)(label(fun \ ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - fab475ce-6534-45a1-b664-32cacf8ebc4b)(content(Whitespace\" \ + 7a62a739-7364-4a87-9bb9-7dab9a8d57a2)(content(Whitespace\" \ + \"))))(Tile((id \ + b36025f2-e32a-4c18-9f0c-76a3b11e5b66)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 15346d0a-c93d-459c-9532-25cc83149072)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + ce7280d8-317c-4df5-a112-a386f353b69b)(content(Whitespace\" \ + \"))))(Tile((id \ + cbc4131d-9222-45f7-b92b-ce427f3ca996)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 18f61c49-4c9b-4fe3-9153-c46c9b499c0d)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 40f87608-1943-437c-ad66-197ca8c37e6c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 1748716d-8cf0-42da-85e9-723bfaf90187)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 48f26c8d-4faf-43ae-82c2-d7d5a99c7bbb)(content(Whitespace\" \ \"))))(Tile((id \ - eac01f24-a260-421e-9b9d-29de30d8fda8)(label(b))(mold((out \ + a72586c1-398e-42ab-9ec1-e5740c36b2bd)(label(go))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - e8603777-8e85-41b1-98b9-188469481100)(label(:))(mold((out \ + c17b0200-df74-41a6-911e-ebaf4d857790)(label(:))(mold((out \ Pat)(in_())(nibs(((shape(Concave 11))(sort \ Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - b31c69e3-0aee-4628-a3d2-37fc8cc998d2)(shape \ - Convex)))(Secondary((id \ - fc7d961a-a770-42bc-ad2c-0752044409a1)(content(Whitespace\" \ - \"))))(Secondary((id \ - 2af44ecd-cf04-4504-8892-763831adf8c7)(content(Whitespace\" \ - \"))))(Secondary((id \ - 5f47194e-e532-4f25-a499-cb5a5b98f79b)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 4a0ea005-9236-45cd-913b-8e19c02bad26)(content(Whitespace\" \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 1e197f1e-99f4-4f3c-b79b-6fb0426845f4)(content(Whitespace\" \ \"))))(Tile((id \ - 77b9aa74-7611-4159-89bc-55f3a1e036c9)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 3f713165-a7c3-40d2-9a13-10386afc489d)(content(Whitespace\" \ + f58a96d7-abe6-491c-8fea-9b06e8820b7a)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ + d01d3c8d-f4e9-4d81-8629-ed22b8eb457f)(content(Whitespace\" \ \"))))(Tile((id \ - 422853f0-6b86-426a-9b6b-573f627c4314)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - fb69c827-bacd-4b12-a1ec-75aed8dc3c8d)(content(Whitespace\" \ - \"))))(Tile((id \ - 697fcbee-c3e7-4381-b3ba-dadc5121e8ea)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 5e9c4dac-6fcc-465c-b41b-e23c7207a212)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 5137a4dd-0105-466d-a6b1-004906ce67af)(content(Whitespace\" \ - \"))))(Tile((id \ - 87121951-34c8-4ff8-aa35-d1bcf4cbad6c)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 38c7acb0-cc5d-4637-b5ed-4829ba4d553c)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 39add059-c1fd-4ae0-9c04-915ae75755ad)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 6bd28861-5fa4-4c01-ac8e-2cc4bd0ebff7)(content(Whitespace\" \ - \"))))(Tile((id \ - 10cf3a56-0d60-43d9-9f29-472c0a9d0f90)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 20e31d77-bfa3-4c0a-9089-7ddbc5acb42b)(content(Whitespace\" \ - \"))))(Tile((id \ - 11752607-8680-4bb6-918f-9f4facdd03e4)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 7cf700c7-61b1-4da4-9cbe-80dd6b6ea35d)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 32735b5e-86ff-401f-8f0b-465d864fba23)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - a0f39e86-b682-44a7-bb34-187bba6375c4)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - ccfe7ff3-74a4-41b8-a225-ac872f661848)(content(Whitespace\" \ - \"))))(Tile((id \ - 1b827ef7-8ba2-492b-aaff-51d0b08ad64b)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - ea96e86d-1e1d-4f9a-8e0a-e1bbbefede1e)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 13a7fe84-18b7-43c0-85b5-8231c0292f99)(content(Whitespace\" \ - \"))))(Secondary((id \ - cddb13f6-712a-4f37-8118-d9df403cc909)(content(Whitespace\" \ - \"))))(Grout((id 06164e6c-0ca8-4628-97a3-ce5f03f898a8)(shape \ - Convex)))(Tile((id \ - b84ab32d-27ff-4bea-a65b-e1406ec1ff30)(label(->))(mold((out \ + 74d5303d-333a-41f3-9118-27c7ef2cd5a2)(label(->))(mold((out \ Typ)(in_())(nibs(((shape(Concave 6))(sort \ Typ))((shape(Concave 6))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 047ad6e8-8204-43f4-ac8d-f51e5d516363)(content(Whitespace\" \ + b67ceb45-74a5-4bb8-a0e3-30677d88d461)(content(Whitespace\" \ \"))))(Tile((id \ - 189542d6-5784-48e2-9bde-bc3a1ac46935)(label(Bool))(mold((out \ + f5a96539-c614-460b-ac6d-4a3d25bc1acf)(label(?))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 16f3e09a-cd27-4c8a-bae8-8d8dda88b10e)(content(Whitespace\" \ + 42ab1230-bbb6-46c3-9018-f4df79ae6d10)(content(Whitespace\" \ \")))))((Secondary((id \ - d27e1b79-0ff3-4ec6-ad1c-fa91837a5db6)(content(Whitespace\" \ + e7c3c6cd-1e06-458a-9039-06502fbd2d02)(content(Whitespace\" \ \"))))(Tile((id \ - 82eb621e-3141-41bd-b780-54d4fe318d40)(label(fun \ + b7dbe977-5b84-4132-8082-79d23a0a2176)(label(fun \ ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - c30f6128-442c-4625-bd51-6b207dbd2bdb)(content(Whitespace\" \ + db369b3d-fe5c-4fd6-8857-7158171d33d2)(content(Whitespace\" \ \"))))(Tile((id \ - db25fbde-03f0-4fde-a532-fce4ee36c9d3)(label(b))(mold((out \ + 1808506c-e7ef-4591-9057-ba309dbbafa5)(label(idx))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - f0e23317-b8d0-4b14-a5dd-62255e38dba4)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - cbf2e344-bc2b-4988-86f1-ad2ea49ffe74)(content(Whitespace\" \ + 73cc6aa6-e708-412e-96d5-3df208b66c68)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + b60a80d6-5c50-413c-ae33-17fee2e0eff8)(content(Whitespace\" \ \"))))(Tile((id \ - 0a7bf2b0-1e40-4c82-8b80-119f187ddaa6)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 2f1ea14d-6e80-43af-adb0-ba76c9b97f77)(content(Whitespace\" \ + 09731a0d-c25c-4ed2-93b7-09bd00af3cd5)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 025c4aac-e4db-403b-ab53-4da792102605)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 5fa8455c-642a-48ac-8e63-9d6ecaa92e58)(content(Whitespace\" \ + de65ecb9-f1c1-472a-ad7d-ca4174f3c98a)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + a3d082da-971f-4f04-9be3-24340ceed318)(label(case \ + end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 7dc765ee-3ec1-4838-ab35-ef512658cbbb)(content(Whitespace\" \ \"))))(Tile((id \ - 541d68bf-b628-4eae-9209-ea46219eaa14)(label(b))(mold((out \ + 2aeec617-29d0-4b0b-b4eb-3eb02b75944b)(label(xs))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - bedbdee3-8633-46e8-bb14-fcef7a175066)(content(Whitespace\" \ + 09b9fde6-e6ce-4cd1-943a-c6592d259c7b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 606ec844-1c75-44fa-a966-e9412d7766d5)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 0c581efd-55ef-457a-8fe4-e0f96ef3bdee)(content(Whitespace\" \ \"))))(Tile((id \ - 105d38e5-d35a-40a7-afc9-9c3b508a711f)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 70b7a496-5161-4b21-b196-9ae260847a90)(content(Whitespace\" \ + 8863e701-1da3-4cca-8b52-9d60a2f03b9d)(label([]))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 7a593079-1f21-4e73-990f-e7a4ea8ca9dd)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 7adea8ed-0e88-4f75-8dbd-660f869458ed)(content(Whitespace\" \ \"))))(Tile((id \ - 33de37fa-e7a3-46d0-9887-5c970f204d05)(label(true))(mold((out \ + b454564d-e23a-4a8e-88e5-55670561b8f1)(label([]))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - f3222076-490c-48e3-9b8d-f54df590d9ee)(content(Whitespace\" \ + 957f1a32-f6dc-4286-b7d3-fc242ee186a6)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d38c9994-5746-464a-a2b9-653e514dd019)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 170939d9-30f1-41f1-8634-e627e9c7e9e0)(content(Whitespace\" \ + \"))))(Tile((id \ + af7b610b-ff44-4f22-8a79-42f2852270dd)(label(hd))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + b39671ff-0b5e-49e3-bda1-e7d4b8fc1775)(label(::))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 6))(sort \ + Pat))((shape(Concave 6))(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 6127467c-61a8-47a7-9153-edc8eef1a119)(label(tl))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 90d0e22b-1632-4912-8444-2f22fe083845)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 3a2578d7-b939-4ee4-a634-dc8059abede5)(content(Whitespace\" \ + 08af08c0-9774-4eef-9c40-7076fa8d3583)(content(Whitespace\" \ \"))))(Tile((id \ - 4d6390c4-d52d-4204-97a1-30f0e0521f0d)(label(f))(mold((out \ + 711a9845-37c8-4483-9f45-c43233ccbf76)(label(f))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 74708d45-4c6f-4811-93de-4523189e4366)(label(\"(\"\")\"))(mold((out \ + 724c2120-2591-4175-8c0b-604358a39459)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 04dfbcc9-1f39-49c5-969c-eb07e2587306)(label(true))(mold((out \ + 83edf743-c154-4859-9bbe-6ef77959eab6)(label(idx))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - dc6bc0a1-9b0e-4567-b1e3-260aded8f84c)(content(Whitespace\" \ - \"))))(Tile((id \ - 213076fe-ad6d-47f6-9c71-41b1120cfa7d)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + cc7c91c7-a030-42fe-8b84-fb5536a49af0)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 60fb9e75-75ff-405c-be95-45bd10a55acb)(content(Whitespace\" \ + b06df165-3572-4df1-868e-9b341f24d692)(content(Whitespace\" \ \"))))(Tile((id \ - 3460ed7f-7888-49ef-a6c9-0a9880c01706)(label(true))(mold((out \ + b8f1316c-3834-4d51-bdf4-1fdb6531e67f)(label(hd))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ + f225673f-c0e8-41a6-9501-b5b087c92227)(label(::))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 6))(sort \ + Exp))((shape(Concave 6))(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 2a2b93d6-94cc-4085-a95e-57441c82cbd1)(label(go))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - cdbea899-1534-4944-8e68-6205942615bd)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 341dfd2f-b694-419e-82f3-42b57a0ab5c9)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 1fe0bd69-7327-4bfa-a88a-0f435a111ad3)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 58c25d88-386f-4029-a5ce-9a66cd7f3861)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - de4ab77e-dcb1-4e71-86c6-c3beb4dc4402)(content(Whitespace\" \ - \"))))(Tile((id \ - ddbfd7c2-71f2-4287-a290-7b1ddb64c0f6)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 562ba7d0-49f0-433d-90a2-23878c49f43c)(content(Whitespace\" \ - \")))))((Secondary((id \ - d3b4654d-2960-46e0-95c2-257bbb7cf4aa)(content(Whitespace\" \ - \"))))(Tile((id \ - 2e04c8c8-2563-4a75-b537-9148ae8df736)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - b7615011-85f7-44e3-9639-c42a9ffe4770)(content(Whitespace\" \ - \"))))(Tile((id \ - ae6bd94c-e8ad-4d2d-8d91-6f1fcfa88725)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - f5f77bdc-330a-438f-a0f7-c360c0fff8be)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - d9e63c3c-f72f-43a0-b96f-080430114f0e)(content(Whitespace\" \ - \"))))(Tile((id \ - 86d5cf2c-52e7-43f4-9010-0c4c94d70751)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - cdf4c3bb-f419-46e4-a64b-41c4c1333f3d)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - bbe7464b-c3cb-421a-8618-b5aa0d0edab0)(content(Whitespace\" \ - \"))))(Tile((id \ - 3e4b0bdd-3e68-4f12-8bc2-d17f6056ee2d)(label(a))(mold((out \ + 023f027e-6832-433a-828c-6b19bb10baff)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 02d4b5a5-80b6-4986-beca-bc51cb001b18)(label(idx))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 418df9ee-b794-4953-9cbe-f3279474e4b8)(content(Whitespace\" \ + 5857b0ba-76e5-4d8e-b597-3e64d6362254)(content(Whitespace\" \ \"))))(Tile((id \ - 61a97d93-48d8-402b-9f67-5a283b18c5d9)(label(+))(mold((out \ + f0dd7d2f-b88f-4006-9d47-7edde58b53b7)(label(+))(mold((out \ Exp)(in_())(nibs(((shape(Concave 5))(sort \ Exp))((shape(Concave 5))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 09e88407-5edb-4bac-8ee4-1ad7df50e0a6)(content(Whitespace\" \ + 0655c91e-e3c9-480e-bf94-58b6edc72e91)(content(Whitespace\" \ \"))))(Tile((id \ - c61d45ed-cec4-42fb-abcc-f4a5f125950e)(label(1))(mold((out \ + f4a79ada-acd1-4fe7-b898-ceecdf59a1d7)(label(1))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - a917be30-7c5f-4298-aee6-38851c2660cb)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 7b259183-e434-47b2-812b-db9642bd94c5)(content(Whitespace\" \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + aea889b7-e264-4868-a869-a52c787ffc91)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 5cf02b9b-2116-4d90-b998-1f5ede8fcd26)(content(Whitespace\" \ \"))))(Tile((id \ - 9301cf6a-70a8-41bf-a622-49c49fd00754)(label(f))(mold((out \ + fa04c5fc-d8be-4fc7-b73c-7c4c6e0ad7f0)(label(tl))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 453b4aab-8a15-4ae9-a9bd-565be66a8fac)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 3937a8ac-abcc-45d3-a34f-6d3c075ef9af)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + ece47d28-ff18-4f64-aeab-4382a3aa63b9)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 41750223-9c05-49af-b53b-f5d091a20a19)(label(go))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 7b9ee891-5f0f-4a58-a32a-e9db8f1ac4f0)(label(\"(\"\")\"))(mold((out \ + ccb8ffe2-ae8f-4fa4-aed0-f2daea2813c4)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - dda4c579-0408-4a51-b1dc-6f97ccdd2e05)(label(1))(mold((out \ + 5944a7b3-1b19-4689-86d6-1093f023e8eb)(label(0))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 27b1be15-9e4a-43aa-87f5-26de83265103)(label(,))(mold((out \ + 95f36fdc-cb9e-42f7-aaa8-0f73edc41b7e)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 14))(sort \ Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - fd081940-f5aa-43bd-8a30-720800cddeb0)(content(Whitespace\" \ + 933ae5dc-e65b-4b5d-9199-75829176c609)(content(Whitespace\" \ \"))))(Tile((id \ - f6192cc1-0d1f-4ea4-bb9f-3666c704a62c)(label(2))(mold((out \ + 156c14c4-e2fa-4941-b554-ca8263a7798c)(label(xs))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - dff5f94f-934b-4588-8789-dfd06aa0fdb9)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 6a653547-3323-48ae-8e53-9da33293859b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - a18871d7-6f65-4b54-a155-4618c6093206)(label(let = \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + bc65eee0-46bf-49e0-a28b-ce0b749a069a)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 389f0df6-780c-49e9-95c0-9bda3dfaed64)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + f7556769-2ee0-45e9-8c83-d8fd79cdf290)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 33c3e03f-b9a3-4902-a137-eb1ffab4416c)(label(let = \ in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - 21140476-577b-466e-b4d0-34c4817295a8)(content(Whitespace\" \ + b1815bed-dbe0-4c2d-a70b-b792714c8808)(content(Whitespace\" \ \"))))(Tile((id \ - 031c0681-9ef4-416e-9061-b617ef8b6043)(label(f))(mold((out \ + 7d49f344-b7c1-4566-9a37-c324848df4c7)(label(List.filteri))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 1fa066e4-b63b-4947-807e-63ba8187294c)(content(Whitespace\" \ - \")))))((Secondary((id \ - c4cf3db8-07b6-48e9-badf-0fefbd343a40)(content(Whitespace\" \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 6090585e-2c5a-405f-a70b-0921912a62dc)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 88f46743-eefa-4dfb-84ef-f09cd5b0846f)(content(Whitespace\" \ + \"))))(Tile((id \ + 1819a17a-9381-4cd1-8747-ec0308c8fdfb)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 2eb6ca9e-8a0a-4245-8e7e-5ade4614d994)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 217a91bb-6dde-41cf-bc19-fe2ae8c54330)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + 32466c66-1841-4573-a663-bdd228cd2608)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + b37354f6-73d8-4753-9c88-19b91d6ec758)(content(Whitespace\" \ + \"))))(Tile((id \ + 94ac9213-23dc-4279-8b27-62e6f4ca4849)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 7641026e-0349-4f08-8705-3f9819f59f1e)(content(Whitespace\" \ + \"))))(Tile((id \ + 6c55bcc2-61e0-4fdd-b054-44ac35faedbc)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + ed3f94c4-746f-4061-a8ec-a55e41deda24)(content(Whitespace\" \ + \"))))(Tile((id \ + d298edbd-07d6-4e4d-ad36-fcf8a90e0c5b)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + a0b97831-f89d-4741-a7b6-66f1f26dcdf1)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + ebf3bd20-6ed1-4d6f-83ea-2b682b6e83dd)(content(Whitespace\" \ + \"))))(Tile((id f847ae1d-d321-4528-93af-d0af5db5746f)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + aed5ed0b-b7e5-43eb-b994-663e5f1f423f)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + f823dae6-ca67-44d6-9564-f2ec8ac47263)(content(Whitespace\" \ \"))))(Tile((id \ - 8d0afd46-38a8-4d86-ae34-f16e7127521b)(label(fun \ + 32b05bfe-4aa2-4b17-8828-fb2580cddaee)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + fd17bdb0-eacc-4f46-b701-ddc8f8fb1524)(content(Whitespace\" \ + \"))))(Tile((id e90a8f0d-926a-4bf6-a1f8-ad50dc495172)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 10b0062a-3c8e-45e1-942f-c4d9ecf0eb05)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 2573417c-3683-402d-9657-57adc2e91274)(content(Whitespace\" \ + \")))))((Secondary((id \ + 1a6f8647-d37e-445a-837e-eceb3ae54957)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + b92acfca-9784-4600-9bfe-ca6e89fdefba)(label(fun \ ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - 47cc914b-c68b-44e5-abd4-66cf763e18d9)(content(Whitespace\" \ + 6a52581f-7355-45b3-920b-1aa9899baf50)(content(Whitespace\" \ \"))))(Tile((id \ - 35fe143c-210c-4fe4-818b-2b6d2ad67057)(label(a))(mold((out \ + eda6ee05-d164-47e0-84c8-7f0ec3a30480)(label(f))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - bc6a873a-8e9d-4901-970e-4e769873040a)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 2fdf6d92-bf05-497d-b1be-082ae2bfc752)(content(Whitespace\" \ - \"))))(Grout((id 08fd8118-cf68-46df-9f4c-e60d517fcb32)(shape \ - Convex)))(Tile((id \ - 7c634ee5-b6ad-4e60-a1ac-8f56da4145c7)(label(,))(mold((out \ + f57ff963-18d3-4c5d-8900-e373181e7839)(label(,))(mold((out \ Pat)(in_())(nibs(((shape(Concave 14))(sort \ Pat))((shape(Concave 14))(sort \ Pat))))))(shards(0))(children())))(Secondary((id \ - a63a12dc-947d-454c-b1b1-7161215aa674)(content(Whitespace\" \ + 9eb5bcc1-2a4a-4172-a4aa-045d659208a5)(content(Whitespace\" \ \"))))(Tile((id \ - 0f9334ee-1bdc-40cf-9b6f-58fe6bdc93ab)(label(b))(mold((out \ + 6995e41c-c893-4fb1-bebc-a369aae58893)(label(xs))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - df144b08-6d20-4e11-8a10-0af0c509eb9e)(content(Whitespace\" \ - \"))))(Secondary((id \ - 54d73ad5-4629-4898-8a74-12e979918871)(content(Whitespace\" \ + 06dda433-2416-45fd-9cfb-b6279db73cb2)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 31c6a068-93b2-42c9-a71d-b16d3c7f048f)(content(Whitespace\" \ - \"))))(Tile((id \ - 3f505df7-a328-4d45-a811-2c6c355cd953)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 11ee247a-91a9-4169-a85c-0a13c293b2de)(content(Whitespace\" \ - \"))))(Tile((id \ - 34ca9c74-f656-4b8c-8afb-6433b3488aba)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 5))(sort \ - Exp))((shape(Concave 5))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 05af1d13-4d8a-4b67-85d5-501c72bc0d2c)(content(Whitespace\" \ - \"))))(Tile((id \ - 0fd4bd7c-33b0-42ff-ad0e-7b041c6a4854)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 7b8c4ad6-43ea-4219-a589-b62c7573826c)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 9410ff28-6598-4d54-a937-8d528a4d52f5)(content(Whitespace\" \ - \"))))(Tile((id \ - cb3a4fbc-6ac1-4633-9873-5182610424ff)(label(f))(mold((out \ + 84c2f34e-30ae-4de9-b9f0-1e0ec6cd9d1b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 1ef0f009-58e9-4517-9658-65420b4f3e41)(label(List.concat))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 20263dd0-e85b-4840-9b0a-5ea37bf300b5)(label(\"(\"\")\"))(mold((out \ + 3dc3b0da-4f90-4026-b99e-2a3931b264a4)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 8e8285c8-a16e-4c6d-9c58-180436ca454d)(label(1))(mold((out \ + 466858ab-8e08-4e92-9f5a-a03049f27ef3)(label(List.mapi))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 08e08e23-695a-4f12-ace7-e7f27ecb372a)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - f7f40d1f-9c7f-4f5a-8509-4651a853ee11)(content(Whitespace\" \ - \"))))(Tile((id \ - 1a5f1393-c37c-4e56-996e-1b896672296b)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 9ce44ffd-32dc-4159-9f2f-6d71d7fe5657)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 708a3c9e-7292-4e02-a2e2-3debb4ae1184)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - f99b4fc8-4211-4b61-953d-b345391a2dfa)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 79116db3-94b8-4afd-8ed6-c05838975946)(content(Whitespace\" \ - \"))))(Tile((id \ - f4b8b596-cf5c-4544-be05-8f4076334668)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 93fcc7e9-2ccd-4dad-b55b-932bf474735f)(content(Whitespace\" \ - \")))))((Secondary((id \ - 8c38d970-3c9f-4c85-aeb9-48cddfbcf8d8)(content(Whitespace\" \ - \"))))(Tile((id \ - c0cdf1c5-37e0-4f27-9d65-1f7e8b7974b4)(label(fun \ + f8db0f90-ff00-4e80-b772-0d11950af28e)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 789f3969-e4fa-4856-ad0f-93e420819361)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 8c8f333e-23d9-45ff-835e-444967a0ccc8)(label(fun \ ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - a4aaa32d-e542-49c5-af81-0f83b813893f)(content(Whitespace\" \ + 5fbb1dbb-38b0-4c3d-b930-ed738f544db2)(content(Whitespace\" \ \"))))(Tile((id \ - 96f2f3fa-666e-4636-a17d-cf906d747c29)(label(a))(mold((out \ + 761f2ec4-bfa3-42e9-a316-460e6a6245f8)(label(i))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - a2ba97d7-5816-4de0-bfc7-bccecf3f7e1e)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - e90d08d3-4008-47f8-9719-8e5850767521)(content(Whitespace\" \ - \"))))(Tile((id \ - 1df5e4a9-efbc-446f-b348-e2729fa7bbc1)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 9c17b513-e699-4468-b715-e4b3bef16d7a)(label(,))(mold((out \ + ae0b42f1-1ae9-4722-aca5-c80d84c5692f)(label(,))(mold((out \ Pat)(in_())(nibs(((shape(Concave 14))(sort \ Pat))((shape(Concave 14))(sort \ Pat))))))(shards(0))(children())))(Secondary((id \ - dc6fe2ac-0844-4831-a69f-8268fee4cd5d)(content(Whitespace\" \ + e0bfdc0f-1764-46e6-88ac-5e8d3eb98a46)(content(Whitespace\" \ \"))))(Tile((id \ - c7a314cb-ce89-4011-814e-cafb5de89929)(label(b))(mold((out \ + f4f1529e-5764-425b-9f97-d783cd5c7297)(label(x))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - ecd17226-2fde-4fa3-8ac0-3c5f2b26c782)(content(Whitespace\" \ + f66adfd2-d15d-4340-9241-22102afb0282)(content(Whitespace\" \ \")))))))))(Secondary((id \ - f35b75f3-dbcc-48c9-944c-c64cfa85c0cc)(content(Whitespace\" \ - \"))))(Tile((id \ - 399863c2-7096-4af6-bb8b-69906019eb47)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 113a25c0-9431-4175-932c-78c5f11b03af)(content(Whitespace\" \ + 42a26ebd-1b38-490d-b22b-aa0f7a5e03f4)(content(Whitespace\" \ \"))))(Tile((id \ - c9c0de07-5476-464b-8e92-b9a68cb7994e)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 5))(sort \ - Exp))((shape(Concave 5))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - bf427820-4f8e-45f6-8284-73d63c6b617e)(content(Whitespace\" \ - \"))))(Tile((id \ - 359007d5-6cd8-441f-9c23-05b0e723cb23)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 9282171f-8148-467b-ad22-90e959765351)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - e00be104-2058-4558-81be-4c95e7dba78c)(content(Whitespace\" \ + 10730f12-915c-4afd-bcc5-27697cfcb744)(label(if then \ + else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 12))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 32d7be50-45bd-46b4-86e4-7912b3e9dc16)(content(Whitespace\" \ \"))))(Tile((id \ - a58bd02c-1452-4a03-9c84-f6bddd6119dd)(label(f))(mold((out \ + 132c9c93-b6c5-4afe-abb4-c03a9488383d)(label(f))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 2deb153f-02e6-49b0-97a2-7fa27e44684e)(label(\"(\"\")\"))(mold((out \ + 93ce80ed-795f-42a0-a8ea-a73b612e4681)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 08f00ed0-7003-47db-b330-939913302b0a)(label(1))(mold((out \ + 80bf3a09-b351-468d-b2d1-fe0468e8c840)(label(i))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 6e29a81c-3bae-4035-8877-6e2e7c4d1951)(label(,))(mold((out \ + cb89eef7-8c41-4c00-b561-02ad5f390216)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 14))(sort \ Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 596659fb-ee22-4335-b1f4-01f31c811ecb)(content(Whitespace\" \ + 162c5706-192a-40a4-a1fd-4600228e5f47)(content(Whitespace\" \ \"))))(Tile((id \ - 6500abfb-77d1-4b10-8d77-721c7e37c19d)(label(2))(mold((out \ + 6e242b6c-d0e7-4cf7-999d-e99c6ef3a2fc)(label(x))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 51053908-2b8c-4779-b9a4-b02be031e7ea)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 7848509a-c92c-4a57-9092-641c22e63661)(content(Whitespace\" \ + \")))))((Secondary((id \ + 52984544-1c79-4cf0-8413-0c49e1bef634)(content(Whitespace\" \ + \"))))(Tile((id a3c8135c-8fa3-4be2-9578-55d78825de48)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 49de9b89-878d-49cf-bb49-e86d3cd25d11)(label(x))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 34b14f6e-ae97-462d-8cee-7f5635158e68)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 5ed01d7e-30ea-4737-8a07-1b9c53549ef4)(content(Whitespace\" \ + \"))))(Tile((id \ + a7b670da-a4e2-45b0-88d8-f0165f9e9d9c)(label([]))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 70fd9b51-e7a1-40fc-9ce9-6f90802a86b8)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 59c89ff7-2830-4fcc-9d7e-fa6772eada69)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - fe420401-4767-4801-a917-8196ec3b9195)(label(let = \ + cebf1b43-2c47-441f-bbc2-611a75551865)(content(Whitespace\" \ + \"))))(Tile((id \ + 7418a2da-8b17-4b12-a530-f45f562a1b07)(label(xs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + b7a6c998-5668-47bf-9fa1-bbfebc531359)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 8a0e6ee1-0b2f-4f95-99ff-0e843044e0b0)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 9680ab4c-d07b-4cca-82cf-e0f6de1d8d3b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + cd62b89f-5b6e-43ea-84e0-4427cdcf45e4)(label(let = \ in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - 6c023ff7-7387-4969-9430-7a5f358234d2)(content(Whitespace\" \ + 2cbaf57a-5db2-4219-8293-340d4a47a776)(content(Whitespace\" \ \"))))(Tile((id \ - fb4ad5d8-8a71-4cb9-a6bb-e886aafebc1e)(label(f))(mold((out \ + fc8d69f0-1e27-4869-bb84-096770578220)(label(List.exists))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 4e30b722-84f1-4351-9558-3b22b4138087)(content(Whitespace\" \ - \")))))((Secondary((id \ - 07bd7835-aba9-4576-a6b0-5b215203f830)(content(Whitespace\" \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 2e22c55b-e0be-45d9-80dd-d2f907934f2c)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + e06d6823-1661-42cb-a9d7-c043d30079a1)(content(Whitespace\" \ \"))))(Tile((id \ - 734c36fd-3278-44fa-a630-27c45846ad45)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 28c0b0f3-1d07-4291-b94e-84c3edb8411a)(content(Whitespace\" \ - \"))))(Tile((id \ - be3344ab-13f0-4196-a242-d58ddedb4086)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 74bca819-f017-4337-9415-6c7abcde4ccd)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 433b7881-2167-4c49-b41f-34eedd90a1f5)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - c90e84a5-c611-4465-abe0-f4a0f0dad107)(content(Whitespace\" \ + 91beaf39-425a-4e0a-8240-eb3956b1973c)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + f34af4b5-0d79-4ece-8766-030d6d898cf9)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ + a6e6fb94-e537-4946-9cc2-ac845bebf362)(content(Whitespace\" \ \"))))(Tile((id \ - 8a2c42e1-3f6a-4f9a-afa9-d8544edeaeb3)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children()))))))))(Tile((id \ - b2e834b5-ed02-412a-a5ef-34a5c16b9847)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ + dbfcfbef-374d-45f6-9d44-484d793a9a49)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 892d9e90-2a2e-48ec-8487-8695555e6dc3)(content(Whitespace\" \ + 0d2a4e6e-73de-4fe9-8e68-05461f2ee39d)(content(Whitespace\" \ \"))))(Tile((id \ - 1888f269-f7ef-45d2-8512-8d395f78f772)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 2640ea25-cae1-4f62-bfeb-0ee5e6e2429a)(label(Int))(mold((out \ + d8a97e93-a17e-4e58-9648-eb2b47b1af39)(label(Bool))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 66c241fc-9f12-42ec-9efd-d0695cf61f8f)(label(,))(mold((out \ + 4d0daa6a-da77-40b1-b35a-e9454461f35a)(label(,))(mold((out \ Typ)(in_())(nibs(((shape(Concave 14))(sort \ Typ))((shape(Concave 14))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - e70a85e3-9a91-4a5b-8464-6757d36b6cb5)(shape \ - Convex)))(Secondary((id \ - 4a5a880c-1ee3-48ad-912b-5d7ca04bd101)(content(Whitespace\" \ - \"))))(Secondary((id \ - ec8115ee-947b-4f7e-8bf4-9ecc99e9e230)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - e97f099b-5db0-4e16-995e-0e9f35f7d7b1)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 5e268789-9fbc-49bf-a7c8-be69e68b3bdc)(content(Whitespace\" \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 20f9b8eb-51d4-47a2-9581-8b9f2e2a00c8)(content(Whitespace\" \ + \"))))(Tile((id c3c57515-1d9a-46e3-9ab8-75b3e39df31d)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 4a8723a6-7828-48a0-91ef-30b98f6fa04c)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + f4037f63-cd6c-4305-af21-42268e474108)(content(Whitespace\" \ \"))))(Tile((id \ - f96c361c-d526-466b-84c8-7de23fbafafe)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 78de6f1c-120f-4090-a3cf-b6970752ec5e)(content(Whitespace\" \ + e11a6eb6-6b4d-4a49-8724-f97c5f6fb844)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + e3e5f8d7-f43b-416d-8686-8633ad81965b)(content(Whitespace\" \ \"))))(Tile((id \ - e0463001-bf12-421f-b5cb-c2aeb6be4e0a)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 5))(sort \ - Exp))((shape(Concave 5))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 0433e19e-1b31-4c8f-aa0e-bbcdc08ed996)(content(Whitespace\" \ + 5656411e-8312-4b4b-8940-f3ce54f17530)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 0640e9f6-8057-4db5-8a91-53af0def277b)(content(Whitespace\" \ + \")))))((Secondary((id \ + 11105749-9333-4b1e-9daf-8e67663e64c5)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + b36b23e3-101c-4c91-ba19-cb0f2e827de4)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 6aac6b0c-dc09-405b-a7a2-66d4a5d3ca2b)(content(Whitespace\" \ \"))))(Tile((id \ - 21d714f3-d2a5-4ac0-9488-b3db501e68cc)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - a71562c6-dbdd-4ba9-a72a-e27d48aa24bd)(content(Whitespace\" \ + 6dd96c1e-a3ef-4847-bcd9-eb49d3bb77dc)(label(p))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 9b900869-cd22-4c14-a5bd-1614393bb6d3)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + f9da750f-df9a-47c7-bfee-2802637e45cb)(content(Whitespace\" \ + \"))))(Tile((id \ + 335f39e6-4386-4aee-8c91-0c630e09d4bd)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 7a698945-7ebd-42c0-9363-6f006614d0e5)(content(Whitespace\" \ \")))))))))(Secondary((id \ - a8ea80c4-6496-4ce0-a907-98037672582b)(content(Whitespace\" \ + 592856ad-34ad-4702-9207-bc04cdf10aa3)(content(Whitespace\" \ \"))))(Tile((id \ - bef81cac-3090-4851-b59e-4034bf3f7e9e)(label(f))(mold((out \ + 8765495e-7edf-4ed1-9ab8-8558b00c450f)(label(List.exists))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - ac4038f0-7de1-4828-9dea-d81b7ff60c8e)(label(\"(\"\")\"))(mold((out \ + 338ef5bc-82b9-4f69-a9aa-9acc5a3e842d)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - ea845820-5614-4597-b0b8-34e9b1de2e3d)(label(1))(mold((out \ + 88ea70a8-ae71-4520-85d3-a246a170d63d)(label(p))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - f35a801a-8a84-431d-a9df-544c86be377b)(label(,))(mold((out \ + 28b643af-d2dd-49bc-9fdc-befd096311ed)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 14))(sort \ Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 8313aa88-1111-4b7f-a9cd-b56edca2aef1)(content(Whitespace\" \ + 88dce91d-2741-4438-af46-3850e364cdfb)(content(Whitespace\" \ \"))))(Tile((id \ - 5de2a053-2140-4836-8e14-224bbbf67cc0)(label(2))(mold((out \ + 4322be2d-fad9-4ff4-9d6f-0e902889cf0a)(label(xs))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 74dc559d-c97e-41a4-a44d-9ef55f467189)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 4f8e4039-136f-4377-89e5-0de00c9c5cf6)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 4ba7d136-2a5d-414d-955a-8f66fce3bd2d)(label(let = \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 4f589b97-ef57-4e18-8327-32a70a59b0e0)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 168830d7-7757-42ac-abb1-17b118a70b29)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + ed15fd8e-3f89-4136-92c9-4db8afee0f1f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 3574400d-4c30-48ea-baf0-5714e0f0d7d0)(label(let = \ in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - 89151a29-cce6-4e8b-9c00-6faf9e160b4a)(content(Whitespace\" \ + d4a9e7d8-5161-4e58-a0cc-9534558b24d9)(content(Whitespace\" \ \"))))(Tile((id \ - 4dd75df6-e379-4371-9ffa-34f0c9ff7b61)(label(f))(mold((out \ + f17a1a7a-f409-4291-b678-d0c5dfe78ee0)(label(List.for_all))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 514bdbff-46e9-4315-94b4-97783bd08e1b)(label(:))(mold((out \ + 85e6fe93-4988-43ad-8338-89ba090e490d)(label(:))(mold((out \ Pat)(in_())(nibs(((shape(Concave 11))(sort \ Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 48378b91-cc9f-406a-98a4-8d74ac57e788)(shape \ - Convex)))(Secondary((id \ - 67d6ed9b-e49a-439d-b198-b354334ac8ef)(content(Whitespace\" \ - \"))))(Secondary((id \ - d6f626ee-ef80-4947-894a-075e9b008492)(content(Whitespace\" \ - \"))))(Secondary((id \ - 071e4f9e-9bc8-424c-a944-1c5899681627)(content(Whitespace\" \ - \")))))((Secondary((id \ - 5394fd6d-55cb-4d03-985c-02b3d8961366)(content(Whitespace\" \ + Typ))))))(shards(0))(children())))(Secondary((id \ + b719d637-76b1-47e2-891a-5380f02a98ac)(content(Whitespace\" \ + \"))))(Tile((id \ + 46f891fb-f05f-4ed3-85ec-9d8863faad3d)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 71c00a44-ea20-4a12-ab2f-a67ff586181e)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 6b0d267c-59ce-4d4f-a660-ee2cd789b00c)(content(Whitespace\" \ + \"))))(Tile((id \ + 2f3da339-b45d-4b3f-9020-cb53ceb0aa82)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 4b19251a-c53f-4776-a438-14995820b93a)(content(Whitespace\" \ + \"))))(Tile((id \ + f87108e8-962c-4834-b146-bacb565bac63)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + 1777e3b8-7337-494e-8870-275e3ece4b6e)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 08a0a0a4-1eea-4633-9115-169d47f249fa)(content(Whitespace\" \ + \"))))(Tile((id 1066154c-69bd-43f1-919a-2a996cf76fb7)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 15cd42e1-9b7b-4dcb-9e7e-881d9a878c1f)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 402851eb-8355-457d-982c-11673bd10c4d)(content(Whitespace\" \ \"))))(Tile((id \ - a0186f29-bd0a-43f1-a0f2-22d73a560b5d)(label(fun \ + 7a1838dd-6a02-4cca-90a5-6e5ec338fc87)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 312c02a7-5cdd-4be2-a6bb-220dfdd5ca86)(content(Whitespace\" \ + \"))))(Tile((id \ + c6546f1d-544e-4bc2-92aa-f1caae5f26b5)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 35270b9e-9cbb-4e12-879a-42333345145b)(content(Whitespace\" \ + \")))))((Secondary((id \ + 9d430ded-140a-4ad7-b39b-bd787419def3)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d10eb0f0-6f7e-4d3c-990e-e0cda4673729)(label(fun \ ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - 7c2b3512-7912-44e7-ac9a-799ca399e4d2)(content(Whitespace\" \ + 3fd09411-64f9-4c37-853f-cef0cac8a40a)(content(Whitespace\" \ \"))))(Tile((id \ - c1f22398-3f61-47eb-9d20-ba339a9a8d2c)(label(a))(mold((out \ + 7376fac8-ad8d-4c03-9da6-828f9312a0cf)(label(p))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - c4bba7fb-230c-4b77-9cef-718a198e2327)(label(,))(mold((out \ + 264cdd48-b4e9-4872-9991-fe13a8625e95)(label(,))(mold((out \ Pat)(in_())(nibs(((shape(Concave 14))(sort \ Pat))((shape(Concave 14))(sort \ Pat))))))(shards(0))(children())))(Secondary((id \ - d1c3d11f-29f6-4d60-8b8c-c11cf055c178)(content(Whitespace\" \ + cfa99509-6ca3-4fb6-83da-b5f4dfeb28dc)(content(Whitespace\" \ \"))))(Tile((id \ - 4f933492-4ade-4884-a3f1-4ba1eee9297f)(label(b))(mold((out \ + 59fa562b-2a61-4786-9717-31969dc76452)(label(xs))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 5680848b-ce89-44dc-8028-81bd8dfe6e45)(content(Whitespace\" \ + 128052f1-3f94-4bf6-ad49-44de7bd4d8ab)(content(Whitespace\" \ \")))))))))(Secondary((id \ - df436f74-5947-456b-9981-9e3018118299)(content(Whitespace\" \ + df2499a3-9242-4b4e-9e82-b68432176388)(content(Whitespace\" \ \"))))(Tile((id \ - fa6a29ae-3613-4579-bacf-2e07389c09fb)(label(a))(mold((out \ + d0ec2f01-7c24-4dcb-9085-b807d2a5537d)(label(not))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 6e6f3ba2-8ead-4042-b51f-c7bcdaa4c458)(content(Whitespace\" \ - \"))))(Tile((id \ - e56f5829-3e0e-4a9d-9631-85f007248a66)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 5))(sort \ - Exp))((shape(Concave 5))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - a327b0a0-b24b-466f-82fe-4ea35b4b617b)(content(Whitespace\" \ - \"))))(Tile((id \ - 3c4f6c56-8f8f-4d2c-911f-958798355c0d)(label(1))(mold((out \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 8f5904e2-be99-4940-9953-ae9a9e7cd68e)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + de47cf50-21c4-49b4-9313-d34223a35e1f)(label(List.exists))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 981d6f5a-a9e0-466f-a4c0-d4618c137a0f)(content(Whitespace\" \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 9e6c1050-1885-4eaa-a297-dc5f8162302d)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + bc82cdc7-fc89-4b07-b463-d730446848fe)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 7181e676-7d53-438c-b044-c6240b381ef1)(content(Whitespace\" \ + \"))))(Tile((id \ + ac9f8398-e98a-4c77-9e47-60d2ff40b90a)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 247939b6-7fc5-4b96-9ca5-310ca4d6a09a)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 9b237eee-32e0-4ad3-8e5e-5f3f4d7d5f6d)(content(Whitespace\" \ + 615ad5e9-bba2-4987-8817-a26702a183f0)(content(Whitespace\" \ \"))))(Tile((id \ - c758ecb8-91ae-4cf2-b482-eb2c61f6a4d5)(label(f))(mold((out \ + e32171d3-999a-4c21-a9fe-9bad9b67f021)(label(not))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 7c826751-a5ac-49ea-925d-a49796671502)(label(\"(\"\")\"))(mold((out \ + 563c4570-b28e-44de-b976-c7257797e1f2)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 78c75c87-1bf3-49ef-a53a-efe6fd959f51)(label(1))(mold((out \ + 2f3c55c3-313a-4ba1-9321-105c5d1f83c2)(label(p))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 4a884c1f-cf71-47bf-a614-19d345ffd1ca)(label(,))(mold((out \ + 9a6b08fb-77ff-4974-b790-d8a02b6b27cf)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 943728e2-4e23-4cea-8073-650a42fab811)(label(x))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Tile((id \ + f6635afe-bb39-4b26-b230-40dbafa8267e)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 14))(sort \ Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 160f714e-76b5-4219-8495-8bbeb9896f8a)(content(Whitespace\" \ + 0b0d241e-b226-4c0e-9a23-55657b102fcb)(content(Whitespace\" \ \"))))(Tile((id \ - 3b8fcb74-e9f0-4169-b6d8-b695a45fdcae)(label(2))(mold((out \ + 7e88a8c7-8427-4344-8b62-2e3f64a45dd0)(label(xs))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 0e13eb73-fcf5-4568-a51e-5a41c56a73f8)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - cc9fccbc-dc1c-46fa-9aae-36da349cdff1)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 2664e9ba-80c0-46ef-ab8c-05c6eb8d2ba9)(label(let = \ + Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + e218a95f-c58a-4a05-92df-41371d5de818)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 6952cb59-539a-43a6-81ec-64f2a9ef07c9)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 8f69a8a3-3fd4-4ebf-9b49-b417c378a703)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 0c89e746-747f-4877-87ab-3dfd4c55fb2d)(label(let = \ in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - 886f81a1-cd66-4790-992a-faef2daf7824)(content(Whitespace\" \ + 1283100b-53ae-4fee-925d-db0ce3e5ebcd)(content(Whitespace\" \ \"))))(Tile((id \ - e91fdad4-82bd-47f7-a425-881b8b422fce)(label(f))(mold((out \ + 186fdaef-eb79-4768-af18-293be81432fb)(label(List.mem))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 68599205-45d7-4614-94a9-ac84b48fc937)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 59c65e10-9a81-4070-ae86-44ff5b9ce289)(shape \ - Convex)))(Secondary((id \ - 5fe21479-94f2-414c-92ac-a938e4fb0062)(content(Whitespace\" \ - \"))))(Secondary((id \ - ccafed6f-a493-4e20-9dc6-d8e2669a5ac1)(content(Whitespace\" \ - \"))))(Secondary((id \ - 1dd7b3fe-4b2d-4933-8ca4-ccaed398f740)(content(Whitespace\" \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 87e8dfb3-3cb2-414e-b355-ec1b957db780)(content(Whitespace\" \ \")))))((Secondary((id \ - 51e9905b-6f53-4cf3-8ca6-52fda987cb48)(content(Whitespace\" \ + e4c3e489-6d2d-473b-a098-0acd7e3127c9)(content(Whitespace\" \ \"))))(Tile((id \ - 94630f19-e1be-401f-9b44-076440cb1a9e)(label(fun \ + 634e1122-964c-4ec4-8403-667738b94962)(label(fun \ ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - f44f94cb-b2a0-49fb-b71c-b9baf92c9f24)(content(Whitespace\" \ + e0210a74-6ba4-44da-92d4-f2935c5c262e)(content(Whitespace\" \ \"))))(Tile((id \ - 4622dd39-aba3-4668-adaa-654ed961417b)(label(a))(mold((out \ + 2e9e49d4-0b42-4d54-882f-12df409decbb)(label(eq))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - ec32b24b-c1f6-483b-b5d5-fd06024a933e)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 5ce24499-96ae-4a74-b2a9-13cddb41f580)(content(Whitespace\" \ - \"))))(Grout((id b08c9fee-9e36-4b3b-b30c-b0cf238462ee)(shape \ - Convex)))(Tile((id \ - c003c497-f096-493f-9b4a-9c7b547de3b9)(label(,))(mold((out \ + 942cea95-a392-4788-a439-a6e0fab0e282)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 189b6021-8dc8-463f-a23b-801ea1e15e07)(content(Whitespace\" \ + \"))))(Tile((id \ + acfc4d6a-c63e-4564-a98a-4a42dd7b6f97)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 5a1e5c4f-2dbb-4ea7-9a66-e4370835f00c)(label(,))(mold((out \ Pat)(in_())(nibs(((shape(Concave 14))(sort \ Pat))((shape(Concave 14))(sort \ Pat))))))(shards(0))(children())))(Secondary((id \ - 6ff0b2a2-3cf4-44e5-9db4-5dd98f4f9ca7)(content(Whitespace\" \ + 017ce2d7-50f0-4f6c-b91c-d8d359c99d42)(content(Whitespace\" \ \"))))(Tile((id \ - 34f536d8-c020-4dbc-a269-1f7f0ecfd398)(label(b))(mold((out \ + 11fe0706-f9b2-4391-a5fe-86287f20941b)(label(y))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 13599e43-14f1-445b-840e-51d3be3f6e7b)(content(Whitespace\" \ - \"))))(Secondary((id \ - 3fd11cea-d5c4-4ef9-b938-6d0d036ee281)(content(Whitespace\" \ + 515a1856-3389-4dd0-aa2c-4a01155dcb96)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 1b3b4787-4bb2-4274-9835-95747fd0f36d)(content(Whitespace\" \ - \"))))(Tile((id \ - 577ef5ff-24ed-488b-ab2b-9047226f4990)(label(a))(mold((out \ + 49c1c19d-0dcc-43d8-b161-4a14182d7e5a)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + ab3ca2fc-0056-41a8-8ce9-acc0d080c9b0)(label(List.exists))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 51fdd1b6-69bb-4df6-aa37-b305c5876e34)(content(Whitespace\" \ - \"))))(Tile((id \ - 15ab0441-624a-4370-8461-c15ff7c5aa2b)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 5))(sort \ - Exp))((shape(Concave 5))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 6a0db09c-6038-4b14-9689-ea0e3e922284)(content(Whitespace\" \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 3e9a46be-406a-45e8-bf30-a89c8a205309)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 243f947d-2723-44da-98dc-7a01010a7fd2)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + a72e7dcc-d48a-4853-a8fe-8b70154cba1f)(content(Whitespace\" \ \"))))(Tile((id \ - 53b13857-d843-47ff-a268-05d4b137f48b)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 6ffb31b7-7893-468c-be10-c1ca3aeec81b)(content(Whitespace\" \ + 74fcac5b-86d9-4b3e-a330-a226b2bcc653)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 845f8375-cee6-4869-bbf8-24499f802c30)(content(Whitespace\" \ \")))))))))(Secondary((id \ - aaac161f-e37b-458c-8db6-fb176d656910)(content(Whitespace\" \ + a0eb12a5-8963-4125-9242-682916f73500)(content(Whitespace\" \ \"))))(Tile((id \ - 1a524a9b-dd67-429b-845d-e3eebc20f9d3)(label(f))(mold((out \ + cc57fd1c-34d0-4307-8df6-d41cc98ced65)(label(eq))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - d52eafd1-b439-4155-a06f-af8fa57c3c01)(label(\"(\"\")\"))(mold((out \ + 8b815049-5113-4405-acf2-ac8291a9ed01)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 8806bed7-7e74-4ad7-bd03-908bb6b92d3a)(label(1))(mold((out \ + bbecf133-2c9d-4ce4-9a5e-8d9b78ad60aa)(label(x))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 8d70c9ef-3c5f-4ce8-8852-c887d0df6bbd)(label(,))(mold((out \ + 47526aa2-31b7-41af-80b8-8b1a12791d3c)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 14))(sort \ Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 588413c7-9a41-4dcd-a663-ce8a71232787)(content(Whitespace\" \ + 1aa70f12-67c2-41df-8242-2c49694ddbce)(content(Whitespace\" \ \"))))(Tile((id \ - 0918c04c-58ce-4b4a-b674-ddd13bdc9088)(label(2))(mold((out \ + 843ce6e4-a571-4140-aec3-425ce151c351)(label(y))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - f2fdd943-38a4-49be-868f-551b5e4e8a62)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ + ab68613a-e856-4727-8ce5-95006edaf344)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - ff95314a-2a59-448a-91cb-1ea41665a5c8)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 46068684-be56-47ea-8364-a9470099dad6)(label(let = \ + 4f77d247-133d-4193-8fd9-49efd410ffe3)(content(Whitespace\" \ + \"))))(Tile((id \ + 1845c19d-ee61-40d6-ac89-c504e32f7fc9)(label(xs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 33b3d1cf-6e40-4f8a-8ace-052b1b684f48)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 52220f6f-cc6e-4859-9994-f10d351bc230)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 41d2db6f-fc68-4b54-b73a-ab15090b94cb)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + b0a4319c-2474-4514-b33e-cf37b31f1340)(content(Comment \ + #TODO:#))))(Secondary((id \ + 8d3adcca-b5f4-419e-88e8-a99cbd72bbf8)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + e464665d-2b7f-44fb-8742-c28eb3fdd1a1)(label(let = \ in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - fb5080a6-f268-4d34-b2b3-cf14ee08ee6f)(content(Whitespace\" \ + 0cf1abcc-b425-48f2-afd2-187b55722083)(content(Whitespace\" \ \"))))(Tile((id \ - de1823a7-a2f1-4a51-9b4e-8912840e67ef)(label(f))(mold((out \ + 2fed0730-f853-4bf3-871a-f719f0fa7eb3)(label(List.filter_map))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - b0c9f1c9-5a83-45b2-8431-4d761a9a398a)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - f52d917a-eebb-4dc1-9a76-ec3ac7e334c8)(shape \ - Convex)))(Secondary((id \ - e1ad7bdd-d270-490f-9393-e6788840d8b3)(content(Whitespace\" \ - \"))))(Secondary((id \ - 1949e9c6-c52c-439e-bfbc-3b7e841d9d2d)(content(Whitespace\" \ - \"))))(Secondary((id \ - 769bfcb9-ccc4-487d-bf49-c06aaf82ee64)(content(Whitespace\" \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + fb31cf62-b7be-477b-a291-adef942a1228)(content(Whitespace\" \ \")))))((Secondary((id \ - f9524197-e261-4db8-9fb6-7d93bb19b088)(content(Whitespace\" \ + c035f0dc-2d38-4fb0-bbba-7013a29ac72e)(content(Whitespace\" \ \"))))(Tile((id \ - db72b634-32b9-43e7-98c2-6184a6c83281)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 547ecae3-5664-4e03-9bff-75a7af435cca)(content(Whitespace\" \ + 9b9b83ec-d733-45b9-9856-363f71a27ecb)(label(?))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 398cff59-041f-4cd7-a5cb-ff29d966bad2)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 62127aba-98da-4c31-b267-3e0b751535ea)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 1adde670-42d5-4688-b3b7-cf940c5ab11a)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + dea86a6b-e807-4e42-8efc-6c1077b2ee10)(content(Whitespace\" \ \"))))(Tile((id \ - e8a65c89-9c1e-4ad4-af3f-4a337006262b)(label(a))(mold((out \ + bcd78c86-0d2c-451b-b5cb-534f36c67ee6)(label(List.concat_map))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 22e73070-01e2-446b-94b8-41464ff24175)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - d5481b05-3f3f-4592-b1cc-7ca6727dc526)(content(Whitespace\" \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 0e7f137f-4093-4e29-862b-dafd8e900287)(content(Whitespace\" \ + \")))))((Secondary((id \ + 6e9db0d1-fc89-41f0-9af0-96c76075367c)(content(Whitespace\" \ \"))))(Tile((id \ - 6bdc3740-20b1-4041-b82d-db05a12f27fa)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - a41d0624-2d7a-4ce4-9b2c-00f5ab93b6a3)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - c54283cd-ab5a-4296-a20c-668605ffd54c)(content(Whitespace\" \ + 4efd4ae1-5853-4600-a9a6-d509218faf42)(label(?))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 30f33d95-06d1-49d6-ace6-3d3a016507d1)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 76178f36-fbf7-40e6-8eed-7584dc0362a5)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 70218857-fa59-4eeb-919b-e9b4e9a72236)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 5bd65136-7635-42b2-bf7b-ac11abbce141)(content(Whitespace\" \ \"))))(Tile((id \ - 38ad3d7c-9721-4a26-a60b-a480602c2ba0)(label(b))(mold((out \ + 65105496-dc5a-4703-9556-abef2da4d088)(label(List.for_all2))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 26a95aa0-4916-41c0-9f6e-bdd8b5dd2517)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - c587fda8-04cf-48be-be91-f59793b2a1b3)(content(Whitespace\" \ + 8d40e84b-f2a8-4c40-a632-91bf0e2ad846)(content(Whitespace\" \ + \")))))((Secondary((id \ + e8637262-8f45-451d-9cd4-3161e7300de2)(content(Whitespace\" \ \"))))(Tile((id \ - 5e438c36-f9b9-4a1a-bd1f-a951182bd756)(label(a))(mold((out \ + c692022b-eb9e-4b90-9919-a019b46d6955)(label(?))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 2ad47140-867e-4613-907f-b7238c41b8ad)(content(Whitespace\" \ + 4eace684-a070-4e9b-b363-13678f790050)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + f0655d3c-f94f-46cd-8d02-b332926e0b30)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + fb057577-8067-4ffe-805a-6e429ebfed5a)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + c9d2ef84-5e76-4a14-8056-487a5ad59a7a)(content(Whitespace\" \ \"))))(Tile((id \ - 1305879a-485e-408b-ae05-1ab69c10e83c)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 5))(sort \ - Exp))((shape(Concave 5))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 223dc1e1-8647-4ce7-8e0e-87e75c67b413)(content(Whitespace\" \ + 593372f4-683d-4f36-bd0e-b1f42473d91e)(label(List.exists2))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + c3872fe8-08f3-4681-a508-f755deeabc39)(content(Whitespace\" \ + \")))))((Secondary((id \ + 72fefbd8-92a8-4eb8-bee5-b86d2251b157)(content(Whitespace\" \ \"))))(Tile((id \ - b2669416-0e2b-46be-b416-3df1ad01ae8a)(label(1))(mold((out \ + 03ca9972-5eac-4f71-97c6-0f44571da3e6)(label(?))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - f3d88687-5683-46f0-bb0e-e675637a38ab)(content(Whitespace\" \ + 0955c86e-0400-40c2-87aa-8b538f108df3)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 00f23ebe-6645-4707-a8d3-a068bafc36cd)(content(Whitespace\" \ + 6cca2a18-f704-4d60-a6a1-9f304e68938c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + c526345c-494c-4160-9553-00eb3ee184ae)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + f516fc6e-18f5-4bdf-a615-39df8730b22a)(content(Whitespace\" \ \"))))(Tile((id \ - 6a4c26e1-181d-4001-8334-582e4251021a)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - f5254ea2-ae5a-49da-965c-354479138abb)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - e14346e0-4390-48d6-8257-df82e4c47054)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 395462c3-38fa-43c9-8436-8ea9f4b3ef97)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 8530fc8b-b0d6-4dae-9ec4-c4734ef4f3ba)(content(Whitespace\" \ + 1ae711ff-15c5-4d79-b809-c45eba86eeab)(label(List.find))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + f8890e51-60b7-4c4d-acbf-3159fcbdaefe)(content(Whitespace\" \ + \")))))((Secondary((id \ + b51aa614-35d5-4513-af47-11806312f0c9)(content(Whitespace\" \ \"))))(Tile((id \ - b4f9b65e-c96c-4453-9ee5-c4c7f4d56ac5)(label(2))(mold((out \ + f692d488-4611-4fef-9d3f-6d3e2c63236f)(label(?))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 7c160907-2dd9-4ae2-8995-8aa6880e79bf)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - eab922a5-0028-4211-a2c4-4abeae1b9db1)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 12674297-fbe5-4c49-9e96-2abf3ec9640e)(label(let = \ + Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ + c0ec89c8-416f-4232-86d7-9641b5deff4a)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 59a1c719-7fa8-4916-a0a8-f1c37ae06cfa)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 546479da-79bd-455b-aac2-829fc864c2c5)(label(let = \ in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - b2dc47f3-8ae7-4d5c-ba85-f3e34b255a2c)(content(Whitespace\" \ + 68a8b22a-571e-41ad-bfd0-46b258183695)(content(Whitespace\" \ \"))))(Tile((id \ - 806579a2-5f5c-4db4-bb44-c9b1e47cdbdd)(label(f))(mold((out \ + bf9ef340-0bdf-4ba2-bb19-a133a1b4f2c0)(label(List.partition))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 7ad3b972-787b-4d59-beee-cc1e3c4f9488)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 2841681d-6b54-4be4-95ec-4616f4efcfa3)(shape \ - Convex)))(Secondary((id \ - 04ead003-9194-4751-8ae8-b1cf86b01ae5)(content(Whitespace\" \ - \"))))(Secondary((id \ - 9a86e8e2-094c-449d-81a8-63e0b970d42f)(content(Whitespace\" \ - \"))))(Secondary((id \ - 969a0f33-e384-4ac0-aeb0-5feaf54ba650)(content(Whitespace\" \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 4c560229-0520-4f9a-a669-7923585ced1e)(content(Whitespace\" \ \")))))((Secondary((id \ - a7e7f5cc-cdf7-4fc9-8f2c-f0e7d777928c)(content(Whitespace\" \ + 4a6f99a3-2435-4bf3-bed7-e1f9ccf2283f)(content(Whitespace\" \ \"))))(Tile((id \ - 302b82b5-b847-4354-a263-83cafbaade46)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 54fde547-0723-484e-a2c0-cfca6293af04)(content(Whitespace\" \ + ddb29ecd-e868-4df6-865f-574ce2d8bb6e)(label(?))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 754cd440-b984-4169-a30e-0b1d1ee826e4)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 4024c066-c53b-48e6-bbd1-4af2df4e2b86)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 751fa299-cfd6-4af8-aab4-b57370d33512)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + ac90e91a-2374-4309-a8bb-6bad79dcd446)(content(Whitespace\" \ \"))))(Tile((id \ - 080384ee-1937-4627-b9c3-1d44a1039bad)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - fe621d18-a199-4044-99a8-9e5af1cd5c5f)(label(a))(mold((out \ + 06a17b1a-2d74-4ce3-a13f-08bf2ef382ab)(label(List.split))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - bddd4394-5867-4787-ad0f-6bc42af709f1)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - e9e027f3-f9b2-4dbb-8013-00e9c9e7f64f)(content(Whitespace\" \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + c0f72c57-abe2-4d3e-9222-20c3241d0b4c)(content(Whitespace\" \ + \")))))((Secondary((id \ + 0eb1759d-5fff-4400-9601-0a2790919293)(content(Whitespace\" \ \"))))(Tile((id \ - 8879a754-5312-42b7-8a5b-611b7606e66e)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children()))))))))(Tile((id \ - 034fedcf-7741-4990-b024-1b18224cab51)(label(:))(mold((out \ + 9f8ed212-d470-4766-8ca6-0b67aa1220b4)(label(?))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ + ee74632b-ace6-46b1-bb4b-e153128e5b0e)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 9d2c5ff0-96de-4d29-ad42-21845b5a70fa)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 38f9e682-fb6a-48ee-bbda-8a54c001cace)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 483bbb33-56a7-429b-965f-e72b74ac4738)(content(Whitespace\" \ + \"))))(Tile((id \ + abe40ac4-cb94-484d-9032-21cffea3977a)(label(List.combine))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + cb28bbc2-d3e7-4e5d-88d5-879e2dc099ec)(content(Whitespace\" \ + \")))))((Secondary((id \ + 2a8797df-82eb-4078-b837-98a85409d864)(content(Whitespace\" \ + \"))))(Tile((id \ + 4a44e330-5d62-4b11-be29-9f708632b971)(label(?))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ + b4a6c24d-8688-4bd3-a3ed-ec3252412205)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + f74044d5-c76f-48c1-a87a-ed30469061b5)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + b37309f7-6ee8-4ce8-88e5-bd424e4fa62e)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 0fac026d-e55e-4552-8c20-d6cb1977e675)(content(Whitespace\" \ + \"))))(Tile((id \ + 4a2a7277-24b4-4911-829b-299074b0a105)(label(List.merge))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 06e78328-2859-4dbc-9216-56720e4f2ddf)(content(Whitespace\" \ + \")))))((Secondary((id \ + 36911781-b66e-4a9e-836d-31cef67f6153)(content(Whitespace\" \ + \"))))(Tile((id \ + 4b8fbe3a-1bd2-480a-85cd-995b5f1086a3)(label(?))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 14d4adc2-edec-499f-a751-bd111b3591a2)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + c1eb7be8-c7ee-4cdf-8591-11ccc0546767)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 75ae7669-af51-495b-8b43-2a6d712613ed)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + f9d25d75-3887-4f92-a5f6-e5b1bb38bfb9)(content(Whitespace\" \ + \"))))(Tile((id \ + 0bd197f9-bade-4872-98ef-6d5fc85aa5f3)(label(List.sort))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + fb139c34-b296-46e3-a877-5a3922755c0f)(label(:))(mold((out \ Pat)(in_())(nibs(((shape(Concave 11))(sort \ Pat))((shape(Concave 11))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 9462a388-8f09-4d9e-8d8d-5320871f0948)(content(Whitespace\" \ + c7bf215c-24bb-47c0-8c45-f4e846a7bde3)(content(Whitespace\" \ + \"))))(Tile((id 555c833d-0ddf-4414-97a7-bf5a1640e566)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + ab25f59f-bc74-4d14-81b8-c9e1b07cfff6)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + f4eb30e6-6629-407a-8130-d424c90241f5)(content(Whitespace\" \ + \"))))(Tile((id \ + 18a41bea-3f8f-4ecb-b7c7-c30654b817e8)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + ddd9824b-dfd8-4f64-a792-6ff9c77a2b95)(content(Whitespace\" \ + \"))))(Tile((id 2461e4ad-e119-4bea-8e46-487ad4baf900)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 4fc702cd-03c1-4fba-8b41-7087f3696b4b)(label(?))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + f6d01969-5293-43c2-99bc-98bdf860dcc2)(content(Whitespace\" \ + \")))))((Secondary((id \ + 2227c1fc-ff4a-45a6-9717-d37589a5939c)(content(Whitespace\" \ \"))))(Tile((id \ - 120a403b-e816-4400-8da5-17a770d9b144)(label(\"(\"\")\"))(mold((out \ + c5ee8f1c-fe0f-4a6d-8cfe-55b35da876f9)(label(?))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 8528bd6f-f5a1-4309-87bc-814614a5e1b5)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + ee04ad5a-b396-4b94-a3f4-d838b8840bef)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 07453b9d-d4d2-430f-a4e8-4ef55c79aa4c)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 6d9ba4c0-0c75-42cc-afb6-f0ebe9feb912)(content(Comment\"#TODO: \ + Association Lists#\"))))(Secondary((id \ + e44954d5-c7e6-47ca-b7ff-89f2e8c142ab)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 0f0bc0ef-75de-4add-b314-c9af708c8979)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 12fe71a4-81a0-4070-a46b-e228e63d2242)(content(Comment\"# A \ + todo has a description and a status #\"))))(Secondary((id \ + 020369a9-0df2-4fae-9779-bb2ba133042d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 1ce45f9d-7651-419b-874d-74045f617e2c)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + efbb0e62-08fc-415b-bd54-7e975510db31)(content(Whitespace\" \ + \"))))(Tile((id \ + eabe2d5b-aee3-4ee6-bd35-b865485b3575)(label(Todo))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + da950f21-dcc7-4911-861e-2a56ef1ba80f)(content(Whitespace\" \ + \")))))((Secondary((id \ + 47ca0871-36b3-4c90-b988-17cc1900b14f)(content(Whitespace\" \ + \"))))(Tile((id \ + 607138fb-767e-49f0-80f7-810c401f590b)(label(\"(\"\")\"))(mold((out \ Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - b46908ca-f7a4-44f9-90e0-bed59a3f4438)(label(Int))(mold((out \ + 9ee26fce-a669-41c3-852d-91c72c988224)(label(String))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 6f9cf9da-85a7-4b98-b51a-bbcdbfaf3472)(label(,))(mold((out \ + c7fc83c0-8e39-490e-ad72-be3c48a579cd)(label(,))(mold((out \ Typ)(in_())(nibs(((shape(Concave 14))(sort \ Typ))((shape(Concave 14))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 49e768ef-d4fe-4182-bf9c-32fb501c9006)(shape \ - Convex)))(Secondary((id \ - c3b1e2a1-420c-4b3d-89da-c590b7d57cba)(content(Whitespace\" \ - \"))))(Secondary((id \ - fa5c7b61-fe69-4f7d-a85f-408d2c19f2d7)(content(Whitespace\" \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 68792e37-91ba-432b-a25f-2e25ff370b1e)(content(Whitespace\" \ + \"))))(Tile((id \ + 9ae5f62e-1832-45b3-b28b-2434a458993d)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 1fbe836c-c522-44ad-a5f1-2bc6b8da4202)(content(Whitespace\" \ \")))))))))(Secondary((id \ - a712a55d-a172-4460-a2e3-de391f93009a)(content(Whitespace\" \ + 54d9cfa7-3d70-42b2-bf89-1f5ad55c2347)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 62e76ddc-6eb9-4ac4-b22e-6217af4f7255)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 4423067c-ffd0-4038-ad07-4fd5fdb80480)(content(Comment\"# A \ + description input buffer and a todo list \ + #\"))))(Secondary((id \ + c0ab8fd7-fa58-4aad-b887-d931955a399b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + e299f497-8c9f-4bed-86a2-b81be26e88ed)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 133a5840-ed68-4e34-848f-fd4b4acdb282)(content(Whitespace\" \ + \"))))(Tile((id \ + 0c797c2d-c3df-4fbc-84d6-f8b1ebb59532)(label(Model))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + f0953749-8b00-48b1-9648-918505926e6b)(content(Whitespace\" \ + \")))))((Secondary((id \ + b2454b5d-d580-4c93-86a2-9550ecc23f35)(content(Whitespace\" \ + \"))))(Tile((id \ + e8482bac-5c02-4043-a5b9-395b8c89f92e)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 1d908bfd-94f3-4b63-bf74-e51022966994)(label(String))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + 990e4ef3-2284-4bf5-bf2c-415cf0a3a889)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 26d2905e-d5f7-4bdd-aad8-2013b186916e)(content(Whitespace\" \ + \"))))(Tile((id a11cb1ca-8927-4e4b-bb15-6420c8965e60)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 6e23db87-80da-496b-9cae-bf6b7e04fb3e)(label(Todo))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 4eda0af4-288a-4400-99da-3b0bdbd0f95c)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 3c1ccce6-3740-41a7-9714-61494d59a8f4)(content(Whitespace\" \ + 717a325f-0e51-4c7e-8dc7-108f1259403e)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 3190e6d0-e99f-4806-ba0b-ce82062d3ed4)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 41a978db-6b08-40e9-8246-62aa44a8ef0c)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + afab26bb-87e6-4709-843c-2a683a94ce8e)(content(Whitespace\" \ \"))))(Tile((id \ - 8c08f5b8-a312-4d43-94b3-e8f41d64ea56)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 6006a74c-f6b1-4c70-8106-51763d2b8a88)(content(Whitespace\" \ + fd1237e4-4cd6-427c-957b-2a878d2f55cb)(label(Action))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + 1c53ff3b-bb0b-4a3f-b709-89ec789ae6bb)(content(Whitespace\" \ + \")))))((Secondary((id \ + 61626dbe-ed94-41ed-b451-826424913867)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 98f829a7-a485-46a9-86ad-992e65beb109)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape(Concave \ + 10))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 2e5d4831-2cac-4bcf-a504-057454b894ef)(content(Whitespace\" \ \"))))(Tile((id \ - d2e37fa9-dbfe-4597-9805-ab213a208b41)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 5))(sort \ - Exp))((shape(Concave 5))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 3756b5a0-2564-41b4-aa59-612c18b37f73)(content(Whitespace\" \ + c0e791a4-4c3a-4303-83e2-0d18c2adc7db)(label(AddTodo))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 78dca52b-d330-411b-8691-e1606a06b690)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 305013be-ba89-4bcd-ab36-7d51f1941f2d)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + ddd9a8c0-2fe9-46b2-b1be-aa50e4f5417f)(content(Whitespace\" \ \"))))(Tile((id \ - e46d27fa-0dae-4f5b-a5af-9a39e5fc86cb)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - e228e125-3501-4076-b6e4-ba2680d12417)(content(Whitespace\" \ + 5de7405e-6601-45c4-8055-7cf38dc95c41)(label(RemoveTodo))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + e551333c-72e5-4eff-b610-659b7087386d)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 4cd388c3-709b-4ed8-bda4-4f54f5e08f10)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 5ef15bd4-242e-49e7-84c2-978c3b050afd)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + cebaa8f7-2552-4326-b277-1120ab0b9fbd)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 69fa97da-ac9d-417b-9261-cbc2c0b1e463)(content(Whitespace\" \ + \"))))(Tile((id \ + d5a65ba5-65f4-4770-9fd8-eb305815a080)(label(ToggleTodo))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + adc3e1f7-95e2-430d-ae7d-ed825d56e2a7)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 709adf84-988d-4a0f-902f-62e9ce2928fe)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + adeaeb9e-cdfd-40cd-9632-e11729af61de)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 3e92034b-0570-46f4-9885-ad32a731900c)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 510f1244-5317-4116-92da-98276667f71f)(content(Whitespace\" \ + \"))))(Tile((id \ + f577004d-c414-4dcf-95c8-8a318551f476)(label(UpdateBuffer))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + 97bbcbb7-1f73-49f7-bf1c-64a9526dfb0e)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + b9f72b1e-fd56-4338-84be-42875cc5f0ac)(label(String))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 1ce73800-2016-4067-8f5e-b97dcfd592a0)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 22ae36c3-b80f-4728-bd82-928629215942)(content(Whitespace\" \ + 92f6007e-d126-4ceb-87ec-318da15349a8)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + ca4eb547-8ea2-41e6-8999-0d27e8a722be)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + cdf31232-dc63-4dcb-a106-7f076d32e473)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + e00dbee8-2b75-41c4-a8c2-03dc9bc08c02)(content(Whitespace\" \ \"))))(Tile((id \ - 71a4157f-8ce9-469a-bab7-65f5c72f6b01)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 64af3b09-a5a3-4800-bbe8-eca9cb2fda11)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 8f1813e0-521d-46b1-9881-4d4b34f153ed)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 92484a79-9c21-4583-b55d-bca83fb35382)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - ec4c1a18-6700-4f65-81b1-1746daf0050b)(content(Whitespace\" \ + a275a069-c97f-4213-ab70-f4477bb462f8)(label(Update))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + db587ead-190e-49ae-bcc1-98d51821cd94)(content(Whitespace\" \ + \")))))((Secondary((id \ + f320d482-a44c-4371-9cab-a732e30cb9f5)(content(Whitespace\" \ \"))))(Tile((id \ - 7effe18c-56ea-40b4-8fb4-a18108acbeb6)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 849cbcf1-5025-45ce-bccf-acf86d3d0c8f)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 445a7d03-d6eb-4fcc-a222-038aed01e048)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 5d926892-1a99-4f8b-ae7d-2ba3a482fc9d)(label(let = \ + faf7fcbe-1c51-4811-80dd-4fc1ece377a5)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 93763c82-2252-4ad1-a79d-8e1541e74a20)(label(Model))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + 7781dc45-d39e-46df-bcf2-907932cc8532)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + a466c82f-3298-4641-a0d5-6e5f5912e3a0)(content(Whitespace\" \ + \"))))(Tile((id \ + a975c701-79de-4fb6-849c-23fd8a5cfe2a)(label(Action))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 3ce4c268-9a31-45ad-828b-310c54e59c38)(content(Whitespace\" \ + \"))))(Tile((id \ + 89988850-6097-4fb9-b055-47da7d81b05b)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 033b4e84-d4a3-429e-b495-92aa52b727e7)(content(Whitespace\" \ + \"))))(Tile((id \ + 42825b86-9378-46bb-8785-31f6fb2fc622)(label(Model))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ + e735ecc3-9b5b-44a8-b61e-f65f8d00fb83)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + ada6da43-f9df-4c63-b269-f3cb97be3146)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 563cb487-d7a8-4fd3-80a2-2bd9efc215fd)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d34d4cde-5c2a-40bf-ba7a-840d47d8212d)(label(let = \ in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - 78227439-828d-48e7-aa75-2576047cce62)(content(Whitespace\" \ + 18cdeaba-cf72-4124-b4c1-44f229772c84)(content(Whitespace\" \ \"))))(Tile((id \ - 73d41a68-3175-4104-9c11-356b5278aa3c)(label(f))(mold((out \ + 80434adc-e7a7-4057-9b98-8cccf6ce19a7)(label(Todo.eq))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 6bf2d999-641f-4ea7-9688-d338adc5d4b5)(label(:))(mold((out \ + 5ec9db37-481b-4a63-ba5a-4260244b19ba)(label(:))(mold((out \ Pat)(in_())(nibs(((shape(Concave 11))(sort \ Pat))((shape(Concave 11))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 2167d358-4a0f-4a69-b711-d2d00fd6b460)(content(Whitespace\" \ - \"))))(Secondary((id \ - bf4be0e0-b6b7-40a2-9936-5b30c72c55af)(content(Whitespace\" \ - \"))))(Grout((id 4abf0c94-cc8d-4cf6-9a4f-596b77886b83)(shape \ - Convex)))(Tile((id \ - 080e0fba-f3b4-406a-bc52-1fc9790f8247)(label(->))(mold((out \ + ceac6e56-dca5-4fef-8954-d0cd83a73569)(content(Whitespace\" \ + \"))))(Tile((id \ + 3ce8301f-7de1-4d01-9e32-b2dd45c594fc)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 40bd81fe-829c-450d-ab25-aa77ffe7f3f7)(label(Todo))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + 6edb52a2-3f14-4f53-9ad6-b261274eb844)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + d745acc2-dbe3-41f1-bea8-80342a9e2cc6)(content(Whitespace\" \ + \"))))(Tile((id \ + 79e422b6-ed88-4931-9184-a6200ae9fad1)(label(Todo))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 3058fd6a-2e65-4500-b78b-5f6db40b3939)(content(Whitespace\" \ + \"))))(Tile((id \ + bd80a9fa-8e3e-4a07-a988-08132107f22d)(label(->))(mold((out \ Typ)(in_())(nibs(((shape(Concave 6))(sort \ Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - fcd27852-8867-4366-82ab-8a86f14df4d7)(shape \ - Convex)))(Secondary((id \ - 71c84ce2-707c-4eef-9331-2e42187d70d0)(content(Whitespace\" \ - \"))))(Secondary((id \ - 649ff12d-0f5c-4c94-a545-c0d935d5cfff)(content(Whitespace\" \ - \"))))(Secondary((id \ - f3019b50-c74f-4a23-8e00-9ac6b6b1de53)(content(Whitespace\" \ - \")))))((Secondary((id \ - 3d97d579-5011-4e31-8694-1e5e76b459db)(content(Whitespace\" \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 6ac1d021-6f90-4b97-8945-2e1b38c137c1)(content(Whitespace\" \ \"))))(Tile((id \ - 8b7e5e00-3489-460a-aab3-c9a458041674)(label(fun \ + fff0e605-fbbc-4450-8e60-cee87ae36db2)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 91947a72-72b9-4d77-9cac-66769f41e580)(content(Whitespace\" \ + \")))))((Secondary((id \ + bdbd3098-050b-4a06-ad96-715cc8e2696d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + fb08283d-a398-4082-8e2d-43aed6988c35)(label(fun \ ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - 49ac90da-d790-4480-bd4c-33bc5d4fa016)(content(Whitespace\" \ + 9b28a918-b680-4b33-9f59-66b0b98a32ba)(content(Whitespace\" \ \"))))(Tile((id \ - d6c67aab-bb93-4805-ae55-37c283d8ad7b)(label(a))(mold((out \ + 077b08bf-caab-4ff5-95b3-34f8e67ee1f6)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ + fe18df3b-6ba0-4030-9d8d-ec42ec1a6e18)(label(d1))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - fdd53596-ea98-4510-b997-f2d53ce4561e)(label(,))(mold((out \ + 5d43bde5-7616-427a-921d-d62b6646e804)(label(,))(mold((out \ Pat)(in_())(nibs(((shape(Concave 14))(sort \ Pat))((shape(Concave 14))(sort \ Pat))))))(shards(0))(children())))(Secondary((id \ - af47a325-997d-4f97-a611-c82df473381f)(content(Whitespace\" \ + 5c1292e3-1ac1-413f-91d6-05e150af10f3)(content(Whitespace\" \ \"))))(Tile((id \ - fb2b1f51-3298-4121-8cbb-134507d84091)(label(b))(mold((out \ + 58da195e-e099-4735-94cc-d6909c3d07e3)(label(s1))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 541cef2f-c9df-496a-a353-876f96bce8b4)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 69bd9432-f733-4df0-af4e-07e6ea9825be)(content(Whitespace\" \ + Convex)(sort Pat))))))(shards(0))(children()))))))))(Tile((id \ + 66f05b82-4ce0-4475-ac82-57591ef96c88)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 195f8d22-789d-4340-8480-f1658f2e3d48)(content(Whitespace\" \ \"))))(Tile((id \ - 25fe1452-68e8-4b6c-ad91-87bef4266c69)(label(a))(mold((out \ + d7c01c9e-39b0-454b-8ffa-eee47c700714)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ + 94bdb301-38fa-4a3b-befe-b4e4750a60d2)(label(d2))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 3442ecc5-7f72-445d-8b5b-25fa3a9ed270)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + fad715cc-c7d0-4575-b7b7-9ccdd6313b6b)(content(Whitespace\" \ + \"))))(Tile((id \ + e1a53b0e-bfb3-478a-9694-9c467960fd45)(label(s2))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + ad35fee1-ba70-4ea3-86bc-caa5d264d63d)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + d91f511f-c189-4ec9-ab36-9000077d1cfc)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 3b7060b3-dc6c-46c9-bd6a-ceff26473e1a)(label(d1))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - f6cef768-dc51-4ae4-b5f5-69f1026a3731)(content(Whitespace\" \ + a535d53c-4a80-447f-ad57-d910f287bfac)(content(Whitespace\" \ \"))))(Tile((id \ - a31e74e4-30f0-4328-85d1-686cd2954c91)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 5))(sort \ - Exp))((shape(Concave 5))(sort \ + 90698453-b387-4181-9bfc-9370403a6eb0)(label($==))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 8))(sort \ + Exp))((shape(Concave 8))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - b3f5a747-7a61-4393-9da4-953a89ea697b)(content(Whitespace\" \ + 1806d69d-ec70-4650-a701-a0de0e21b916)(content(Whitespace\" \ \"))))(Tile((id \ - 130d4823-80b7-4e70-b9c1-53c8464cc96e)(label(1))(mold((out \ + 11e2a0e6-4cd5-4a32-84f2-e260a7598249)(label(d2))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 3a0a21b0-0441-4afd-9bd9-d2883ea6985b)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 92d3dc42-f5f0-4df8-98e0-5473fab1b249)(content(Whitespace\" \ + 459a6a3a-7c96-4a31-b708-f5a306209117)(content(Whitespace\" \ + \"))))(Tile((id \ + d828c867-f5ee-4ff7-b2ce-961702841c2c)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + f41eeda1-578b-42da-8839-2debd4b10349)(content(Whitespace\" \ \"))))(Tile((id \ - 79b45272-de5b-4471-b893-b71f6a38e306)(label(f))(mold((out \ + 34ceeeba-e9a3-440e-8d15-3b9bd1eb129a)(label(bool_eq))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 9e3a1f40-64cc-4ce2-ac49-3679b5fe35e2)(label(\"(\"\")\"))(mold((out \ + 46df38b7-ab46-48a6-891e-005707db9f53)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - ae29e4d4-7dd9-4765-b2c5-b286db3e9ca1)(label(1))(mold((out \ + 9d49d13c-38cb-4b7e-9b90-cf075425e0cd)(label(s1))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 501efae8-0d02-403a-b43d-4b96c6cd5cdc)(label(,))(mold((out \ + 91232582-7878-4560-a65c-1b69c2db044e)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 14))(sort \ Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 45db7ca5-2d7d-478d-b678-71059ee0bf82)(content(Whitespace\" \ + 11d9b5db-9674-4df1-a2d2-0a508705cd00)(content(Whitespace\" \ \"))))(Tile((id \ - b0be5df8-cfa0-4dd2-9833-b0154c70dfc8)(label(2))(mold((out \ + a94656c0-39dc-42be-9b63-6111dec66520)(label(s2))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - ea02bd03-e77a-46ce-9402-3d18a13500a1)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 61fc7047-e4b5-41ab-9349-51804a5dad2b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - d625be96-fb0f-4ec1-965b-b36a310356c5)(label(let = \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + b2defede-78a8-43c9-a50f-84a70f853203)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 6cf04fad-ea84-4888-8925-9060f638172b)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + b2aae803-1123-4029-9278-3db21a311b62)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 3199205c-0710-4a7d-90f5-50c696ae1eca)(label(let = \ in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - 3346918c-5de4-4380-b7bf-983770dbdf55)(content(Whitespace\" \ + b8b11210-2999-4b2f-a938-9a83603f8e58)(content(Whitespace\" \ \"))))(Tile((id \ - 86a0461f-0286-495d-a979-f9a153bf440b)(label(f))(mold((out \ + 68535ae2-8d93-4a93-b839-f161828fdf8a)(label(Model.eq))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - dd7fe18a-ecee-471f-a879-b26e3d233dc2)(label(:))(mold((out \ + 6a8bd088-b00f-42ff-898f-36af7b71b018)(label(:))(mold((out \ Pat)(in_())(nibs(((shape(Concave 11))(sort \ Pat))((shape(Concave 11))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 015a5ce2-d221-4141-9119-a9dd23ce66b5)(content(Whitespace\" \ - \"))))(Secondary((id \ - 3748be85-000f-4b4e-ae7b-eae258f8cec8)(content(Whitespace\" \ - \"))))(Grout((id 84a4dbd8-f6a2-40ee-934a-0c4b2fa73545)(shape \ - Convex)))(Tile((id \ - 40f12435-4cb3-4ada-881d-eb1bd59e1677)(label(->))(mold((out \ + d3b739c8-0247-4f70-ad8b-34e6d09494b2)(content(Whitespace\" \ + \"))))(Tile((id \ + 913ab038-49fe-4368-9c1f-c9f48280a3e3)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 4a7f5905-171c-4378-a996-66a6baf68729)(label(Model))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + ba328193-1f1c-4cbe-a224-64a7a8854d52)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + c2c0e88d-4848-46d6-b93f-2176fe516d8c)(content(Whitespace\" \ + \"))))(Tile((id \ + ccd4bd7a-952d-4a54-a662-f9591afd4df7)(label(Model))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + bac8f841-17d4-4508-b38e-72d94310110e)(content(Whitespace\" \ + \"))))(Tile((id \ + 241ae88c-bf5d-40de-915a-9b516ee8b9f6)(label(->))(mold((out \ Typ)(in_())(nibs(((shape(Concave 6))(sort \ Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - f09063ab-291a-4d0c-9357-5bf017bd4ad1)(shape \ - Convex)))(Secondary((id \ - 697f6c93-47fc-4e43-a210-699c5a91ae1e)(content(Whitespace\" \ - \"))))(Secondary((id \ - a8cff37f-d20d-47c2-8c42-6dcbbb58ebec)(content(Whitespace\" \ - \"))))(Secondary((id \ - 19748f4f-bff1-46b2-9a5a-3a398b5e8e04)(content(Whitespace\" \ - \")))))((Secondary((id \ - 9f778a0c-0fce-4deb-935f-7c8a5f4ed963)(content(Whitespace\" \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 01781faf-fd61-4a8f-9f8d-5ce8e213930b)(content(Whitespace\" \ \"))))(Tile((id \ - 239d2509-e0db-4696-950d-a17acd4746e4)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ + a74060ab-221f-4f61-bb8c-9c0045e07c35)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 0ebb4650-7435-4478-be31-be0f17c1efdd)(content(Whitespace\" \ + \")))))((Secondary((id \ + c33daf97-ffb5-44ea-b045-edaaedd440d3)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 14e6e154-7ed9-440f-9501-a8a7f329f767)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - 2b87fc41-faf5-4f43-a5ae-3a953f6bb3c8)(content(Whitespace\" \ + 42ffb82b-5482-442d-91eb-ca7d4795d9d4)(content(Whitespace\" \ \"))))(Tile((id \ - 170ed6f3-180d-422f-9ec3-1fe79a017bac)(label(a))(mold((out \ + 952d09b5-4289-4025-8d90-98ddf38c637c)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ + 688d0305-4fc8-4a82-a975-a862c64be6ad)(label(b1))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - c403741c-61e1-4a7d-bf8f-aab2714035fb)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - a456d165-1014-4ece-8ff3-65d980754c5d)(content(Whitespace\" \ - \"))))(Secondary((id \ - a5dd89a3-6bfe-473d-be59-2d8510084b87)(content(Whitespace\" \ - \"))))(Grout((id 9a5a57ba-7fd1-419e-88c9-9d678c421528)(shape \ - Convex)))(Tile((id \ - 4b72b557-625f-4bd0-a3e6-1d893a913fe2)(label(,))(mold((out \ + 79555928-78e6-4627-bf63-363896aa14ac)(label(,))(mold((out \ Pat)(in_())(nibs(((shape(Concave 14))(sort \ Pat))((shape(Concave 14))(sort \ Pat))))))(shards(0))(children())))(Secondary((id \ - ea5dad31-fa71-4ed0-bb9b-3729cc6c60e8)(content(Whitespace\" \ + 0907e4e2-df81-4106-b856-e2bb983e7b1a)(content(Whitespace\" \ \"))))(Tile((id \ - 2f75b5d2-dac8-4e96-b1fe-fb20661e815d)(label(b))(mold((out \ + d307f59e-fd69-412c-b31d-727d37cac710)(label(ts1))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 293b37af-4fe1-4822-9640-41696a0d5dcb)(content(Whitespace\" \ - \"))))(Secondary((id \ - 1c542d7d-962f-4558-a39d-a666ad67bf44)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - fe71147b-6655-46ab-b0a7-845eb47fa595)(content(Whitespace\" \ + Convex)(sort Pat))))))(shards(0))(children()))))))))(Tile((id \ + 9c2a4d54-4cf4-473e-873b-893a709cdcd5)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + f7484a19-6d62-42d1-a516-b5bb4bdb3c3f)(content(Whitespace\" \ + \"))))(Tile((id \ + 98bcef6c-f8fe-4981-9118-748cf337d396)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ + 23586211-2228-4119-9efc-ba6fc8e09ab7)(label(b2))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + bc4a52f2-f15e-40c1-af11-2dba3578122c)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + ce6c5096-b0a1-4831-a5f4-7909433619a3)(content(Whitespace\" \ \"))))(Tile((id \ - 9261fb87-4189-4b5f-a4e6-1e21b0b4729a)(label(a))(mold((out \ + fe333452-6ffb-4065-939a-e9ecaf1b6895)(label(ts2))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + 7fb38ce9-5cdc-418c-97f1-8110776232c1)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 844757c3-6ece-4051-ac49-f49b62644b34)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 971ff516-5f4f-4860-9e41-b5251ce08ff9)(label(b1))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 8eb5744b-358f-41d3-a484-9d1be69a6fe7)(content(Whitespace\" \ + 301f54dc-2210-4024-b12e-47374af9a924)(content(Whitespace\" \ \"))))(Tile((id \ - e0b93445-c49e-4af2-bae9-7260f5f0494c)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 5))(sort \ - Exp))((shape(Concave 5))(sort \ + 8272c54a-cce8-4222-8317-ad840d5e9586)(label($==))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 8))(sort \ + Exp))((shape(Concave 8))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - d403496b-ccbb-48b1-8a6a-79994e331142)(content(Whitespace\" \ + 2ecbc13d-4bac-4038-b63d-121863b413ea)(content(Whitespace\" \ \"))))(Tile((id \ - 628d219b-3844-497d-acf3-d6906e71ad5e)(label(1))(mold((out \ + 0da279a1-de9e-4af3-8af2-f0f4a4580cab)(label(b2))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - a3a0da08-2979-4421-9acc-fc8c9f1bf9bf)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 906625c3-05ce-4adb-b987-bc3931798668)(content(Whitespace\" \ + e53a9944-5069-4bff-b3f1-483e25040afc)(content(Whitespace\" \ + \"))))(Tile((id \ + 7d06f62e-5943-411f-b42b-ca570f313a99)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 8877041f-5e35-44ff-9f2c-a621427d4244)(content(Whitespace\" \ \"))))(Tile((id \ - 2d5f3fc3-72f2-4e4c-b3d8-8e34e966ee17)(label(f))(mold((out \ + 9023c926-5f82-4e69-89a2-9c7bf598f471)(label(List.equal))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 62c113a4-2abd-47ee-9cb1-49dc00f1ba0d)(label(\"(\"\")\"))(mold((out \ + 9cc23d5b-95ab-448e-a428-3fb9f46b58db)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - c1ac6161-d471-4523-9b42-1a39ed0a18bc)(label(1))(mold((out \ + eb25e2fd-3fbe-41dc-9193-e6eaa32896b3)(label(Todo.eq))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - af1131ee-b56f-4503-978e-1c5fa6af9e9c)(label(,))(mold((out \ + 63437c71-95aa-4aa1-bb49-940157967690)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 14))(sort \ Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 5ac33347-e517-4b9f-84c0-ba3a3201b496)(content(Whitespace\" \ + 66149587-4382-42c4-8e5f-7ab0f0fba510)(content(Whitespace\" \ \"))))(Tile((id \ - 51ee0c63-a223-4cf4-9335-585535f92f12)(label(2))(mold((out \ + 17011e6b-5f86-4ef1-8b4b-003df55bb6f4)(label(ts1))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 0081d95b-b438-4f2e-adeb-b7b797627447)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 10600e1d-6c6e-4649-857d-5071d53022e2)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - e14f57ab-f267-45c0-85b3-b07e5d856269)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 295028a2-3ce4-49c3-91f4-8421256d5aac)(label(let = \ + d105f265-6cbf-49af-9dc8-7450caf160bf)(content(Whitespace\" \ + \"))))(Tile((id \ + d7e71b7e-79cd-4d95-9394-274b3271f260)(label(ts2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + c9a84ccb-0930-40a4-a1f4-2c7d764bab65)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + dc8982cb-b48a-4092-a003-eaf3fd889e71)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 652bfc69-a995-44f1-8c56-bb5ee8864583)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + cab646f4-e8ec-4407-a067-04069f6b6e92)(label(let = \ in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - 193e459a-6a83-4d20-a445-d0ca3e0aa711)(content(Whitespace\" \ - \"))))(Tile((id \ - c1eabaf8-2eb6-4f07-a16b-7e0321ab34f6)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - dd895c62-5adb-4ce0-88ed-7db656306bbf)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 4690664a-f922-4620-99c0-a13c45a973ae)(content(Whitespace\" \ - \"))))(Secondary((id \ - 123a2b5b-b75f-4e75-a50f-4e049db0a787)(content(Whitespace\" \ - \"))))(Grout((id a2e478ba-36a7-41d9-9a39-7831ceb93168)(shape \ - Convex)))(Tile((id \ - c4842cac-e5e1-4b12-8190-ae237261948a)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 11b87ab0-b173-4c7f-904c-3f0f6cd38a6c)(shape \ - Convex)))(Secondary((id \ - a5e5e515-0398-4227-bae3-7e1d3ab4088d)(content(Whitespace\" \ - \"))))(Secondary((id \ - 78675615-c06b-493c-bdc7-31c9e1a71f64)(content(Whitespace\" \ - \"))))(Secondary((id \ - 0f12b2f5-a0a3-42eb-9841-65fcd4b17622)(content(Whitespace\" \ - \")))))((Secondary((id \ - ef873d46-5e64-4393-b815-f85d09aaf097)(content(Whitespace\" \ - \"))))(Tile((id \ - adeaa9a8-f7c0-491f-a86f-6f4e573119fa)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 480cbf26-7bf1-4dde-a11d-cd9a3c784307)(content(Whitespace\" \ + c060877f-ffea-4d65-ad15-78f4c186d7af)(content(Whitespace\" \ \"))))(Tile((id \ - 7685fb4c-98c5-4cc2-a8af-0333ec41b51f)(label(a))(mold((out \ + ccee1537-36f7-492f-aea6-10bf23b16917)(label(Model.init))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 7d960d16-91c6-4d23-8e9a-ed26f4be9801)(label(:))(mold((out \ + 7ef8802d-c224-4bf2-98ec-326569b911d8)(label(:))(mold((out \ Pat)(in_())(nibs(((shape(Concave 11))(sort \ Pat))((shape(Concave 11))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 4f83eecc-b187-45f8-9784-877665a45a90)(content(Whitespace\" \ + 10b2d1b0-c996-4286-a13e-6d1865a6482b)(content(Whitespace\" \ \"))))(Tile((id \ - d0eaf2fb-0ce0-4a2a-a7e7-5129fb36a9ae)(label(Int))(mold((out \ + 8ec82e24-58da-444d-8d65-4034131c110c)(label(Model))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 13616c24-d14e-4503-9f2d-24311f7142c5)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 08c5bfc2-9989-4ba5-b33d-83c0ad686d8e)(content(Whitespace\" \ - \"))))(Tile((id \ - f34dc9f4-43f7-4b4d-b87a-2280cb6e68c8)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - bdac8a5e-eb25-4418-b076-6d20660bf23a)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - a65a5fb4-f650-4b44-b6e7-65d69db483e7)(content(Whitespace\" \ - \"))))(Tile((id \ - 36735ffe-8a40-429d-aef1-f28220fc9548)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 62fae7b1-a85f-406f-b42a-c9d23e11f27a)(content(Whitespace\" \ - \"))))(Tile((id \ - 942bad54-7d36-40c8-b83b-89559a6ce004)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 5))(sort \ - Exp))((shape(Concave 5))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - e7baa58c-aae7-4e4b-9b8a-912d761cb415)(content(Whitespace\" \ - \"))))(Tile((id \ - 05f965cd-de14-4e61-9afe-eafa91fb6526)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 73625cb6-76b2-40ea-ad68-cd5b1ddf9c5c)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 34985849-d438-4551-9962-d8076805220c)(content(Whitespace\" \ + Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ + cfb4116f-a3c5-4896-8ac2-20bda4908ee0)(content(Whitespace\" \ + \")))))((Secondary((id \ + 5929994f-0bb7-4e96-895b-123b0c187022)(content(Whitespace\" \ \"))))(Tile((id \ - ba2667af-5b5f-4cdf-bf28-b2ec7d910143)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 74d59911-c7fb-445c-b808-f8f6ca292a0f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + 9a04537b-7d78-48b0-8918-0ae4feec68fa)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - ae7b522f-710f-4ee0-89ba-4d7656b7a569)(label(1))(mold((out \ + 6e2a57c1-fc0b-4ff6-ac94-c1aff4544962)(label(\"\\\"\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - d8ceb537-4e43-498f-ad8a-aa8018986ddd)(label(,))(mold((out \ + 15553d74-1a68-469f-a890-7523e615c5ba)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 14))(sort \ Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 075edc4a-286d-450b-8e34-ad506c9a8e24)(content(Whitespace\" \ + be5e13ce-8548-4d1b-917e-c62a64858b1f)(content(Whitespace\" \ \"))))(Tile((id \ - a6a5be6d-b11e-4492-9297-b076924e611c)(label(2))(mold((out \ + 5bebe9e9-55a9-416c-8aed-043e1e5c5a51)(label([]))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 1b91d7d4-689d-4758-9ab4-849c73a95988)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 5801334c-7b19-43ec-9a23-a57cd91dfef5)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 4784be6b-aac8-4074-8fb5-c2d56d922642)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 8180179c-afd7-44ce-99d3-04ccd408bc6a)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + be3d30bb-f4cb-41bf-90c0-206c154f2745)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + d5262000-576f-4e6e-bc1b-5f8e22870777)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 0c6ef63f-b93f-4679-92d4-d3bbed4666c3)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - 01ac6af9-3fd8-457a-8309-02eedc9357fa)(content(Whitespace\" \ + bacd8838-709c-4a5e-a64e-8b61d65dea06)(content(Whitespace\" \ \"))))(Tile((id \ - e81fa8bd-0208-4d16-b5c2-070574775b37)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 16792ef2-b245-4c35-af9d-b850563dd853)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - dea95d53-1e5a-4435-9ee9-8b5ea379d672)(content(Whitespace\" \ - \"))))(Secondary((id \ - 1087164e-19c8-498a-9049-80f5b349f791)(content(Whitespace\" \ - \"))))(Grout((id 20e37104-d952-4bbc-b6be-4c2f6e5ed58f)(shape \ - Convex)))(Tile((id \ - f32cf633-09b0-4ea7-8a54-0137c0af4835)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - e03c3ca9-0c90-494b-9f41-23bce1b882b5)(shape \ - Convex)))(Secondary((id \ - 216f6702-fc94-4f2d-b957-95df48f24ffa)(content(Whitespace\" \ - \"))))(Secondary((id \ - a68f2ba2-b02f-4e2d-9ff3-59db489401c5)(content(Whitespace\" \ - \"))))(Secondary((id \ - 0824765b-7b74-4ff7-bbd9-60471f543c4f)(content(Whitespace\" \ + e508e0e2-1a3c-469d-891f-e45c9f48100d)(label(Attr))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + 87724781-408f-4628-acdc-e5e983d4f538)(content(Whitespace\" \ \")))))((Secondary((id \ - 3f96ff97-8384-4e35-b711-43f834e66941)(content(Whitespace\" \ + 76953f0a-c549-4848-b287-46fb77035055)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 7ea85463-1d32-4657-8295-986f361fdef5)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape(Concave \ + 10))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 3598fbe1-4633-4582-9449-114ebd6d0aba)(content(Whitespace\" \ \"))))(Tile((id \ - 677b6530-a329-41cc-8731-9c2b8695cf3f)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 65182407-4ede-4942-8b97-6d5c3a15dade)(content(Whitespace\" \ + c41554cc-4997-481d-97a0-f7ea4d6284ec)(label(OnClick))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + 6650a1cd-f379-4dae-8981-63fb9083faa3)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 002be1be-9f4e-4e7a-a7a6-407616772927)(label(\"()\"))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 95a8b283-0b7a-4624-95f1-d469adb96308)(content(Whitespace\" \ \"))))(Tile((id \ - 71de9629-e701-4c79-99a4-8ba69db8431b)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 4c07c419-2a10-4668-96fc-aa784e388c59)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - e9af1d9a-0b31-4c71-80c3-6013787e024b)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 904078a4-049c-4047-b96c-e66b938e76b7)(content(Whitespace\" \ + 6fcb0cf7-7a8f-4512-a517-5a42d36a5702)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 39236fe5-bb60-48a2-a0cd-0a45de65ebb8)(content(Whitespace\" \ \"))))(Tile((id \ - 63fdef68-cc87-4060-a166-fa2108be6d90)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children()))))))))(Tile((id \ - d46777a3-c613-450a-a8d2-0381e4387950)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ + a867056a-2dc8-4f77-b020-053145c8f99c)(label(Action))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 0a34006b-0335-4884-9ca8-ccde55794fed)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d7ea511d-e179-40aa-9dd1-d3a9856d46a2)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort \ + Typ))((shape(Concave 10))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 6f206cdb-a76a-46a1-af12-e859c5584980)(content(Whitespace\" \ + 36496e26-38e2-48bd-9840-c4cc8fc606a9)(content(Whitespace\" \ \"))))(Tile((id \ - 087add82-77eb-44bf-800b-a0c4d350fd3b)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 638a72da-e2f0-40f2-b9f9-b3e0177663e5)(label(Int))(mold((out \ + 79332294-ab5b-4339-8534-f4535e49e753)(label(OnMouseDown))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - a02e4530-703e-4392-8b25-a63a6116c984)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 14))(sort \ - Typ))((shape(Concave 14))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - bf5dc96f-2fba-4b50-a441-2b201a061500)(shape \ - Convex)))(Secondary((id \ - 653c65da-53be-45cb-9da4-dd484fd7a703)(content(Whitespace\" \ - \"))))(Secondary((id \ - eea31b95-8506-481f-92a6-cba41a19247d)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - bc23a34e-bb24-4dcc-9fd5-16531dcd2f43)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 77374c90-5488-4be8-a13d-5ada491fd096)(content(Whitespace\" \ - \"))))(Tile((id \ - 171572bb-446f-4e67-ab14-9a757706f5f2)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 3705eb7f-991a-402c-a12c-333b9f8e83df)(content(Whitespace\" \ + ebdd7e5c-5969-4c74-8d36-cb17d246ca20)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + fbf87b03-8547-40e6-8bb0-b63bf3578e17)(label(\"()\"))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ + e1174e29-2528-4e7b-be98-6ff2d151ea4c)(content(Whitespace\" \ \"))))(Tile((id \ - ec6e4dbc-4b5a-4547-9792-342b79568cd0)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 5))(sort \ - Exp))((shape(Concave 5))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 72eec4ad-1779-468b-98d9-11e9dffbddc2)(content(Whitespace\" \ + 5c72d27c-2611-4d22-a3aa-f719082e2a8a)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 0a34d8ad-0ae3-4e34-82de-ee424bc77400)(content(Whitespace\" \ \"))))(Tile((id \ - 51ba0778-4c11-46f3-b6d8-c72feb736cfe)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - cb88c4ba-1178-46e8-9221-9fd4f4f4dc45)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - e8f4ded3-3731-4656-951a-ec3e8d4bc07e)(content(Whitespace\" \ + 4dd6e727-07c1-421e-b02e-1e900a9a8a22)(label(Action))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + e7f60286-4969-4b5a-b183-456470aede64)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 81ec343d-b7a1-4654-95a4-b9e08e451ba8)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + f88e2db1-fac2-4c36-827e-d2c7ad54e4fe)(content(Whitespace\" \ \"))))(Tile((id \ - 557d9194-e948-4d44-a147-26245b0841f4)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 4ab0085b-ae43-4a0b-a5bb-82fcc89d1c16)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 44811b93-d85d-4822-9c16-3fd0a0557bff)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 33d8f49e-8b26-4bbb-84fe-64b520a6c7d1)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 8a8ce6d2-f2a8-4e34-8c20-42bf2ffa68c9)(content(Whitespace\" \ + 646da493-bd12-473b-a632-b1bee9f498dd)(label(OnInput))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + 43e2e615-9a22-48a3-b0d0-16b8b59cb72b)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 557d88fe-67ab-41cf-bc29-72a30ca255ef)(label(String))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 885a572d-0643-4881-bfd3-004a4653f9a3)(content(Whitespace\" \ \"))))(Tile((id \ - 7a4c3917-381e-4fa2-b933-65b610b9faf7)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 578f4bbf-4d56-4507-81c5-0c21160d6d73)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 5a31cbd0-f9a4-4038-a7de-cffb1628f225)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - e91ab766-2e5e-47df-9880-416186f304e5)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 6448c51f-80d6-4afe-a297-c75b7e468a99)(content(Whitespace\" \ + c6a91148-1756-4b87-9c4b-c35af4e58dae)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 69788536-2812-4842-9f93-93f345f6d79c)(content(Whitespace\" \ \"))))(Tile((id \ - a46da087-3433-4654-88e3-4a7f6d422821)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 072d6af1-94a4-4032-a8f7-3def69d0a07c)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ + ee2dda9a-c643-4b2d-895e-0338a031120a)(label(Action))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + c4562e24-8f39-4a35-a47d-9bb6ff4f870b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + bec8b300-4aaa-4667-95c9-567b92f6a22a)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort \ + Typ))((shape(Concave 10))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 3038b770-0df1-4212-b762-95cbde5f327e)(content(Whitespace\" \ + 2ce69729-c851-4272-a6c8-3bc40344fbd9)(content(Whitespace\" \ \"))))(Tile((id \ - 6fb025a5-c0c1-4613-a067-3866714cbf40)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Grout((id \ - abb26a18-8364-4e16-90df-6547f7cffe5d)(shape \ - Convex)))(Tile((id \ - 914d5f5d-efc8-4fe5-9986-2388663820a1)(label(,))(mold((out \ + 6148d259-e7a4-4e28-a5b7-5b219aee65a9)(label(Create))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + 361830b3-261d-430f-a31e-ec05255f7ef8)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 5bd7294c-7bad-4ade-afde-5e95e759e27d)(label(String))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + 4b786190-3911-4747-94ed-7b7ee9dafc03)(label(,))(mold((out \ Typ)(in_())(nibs(((shape(Concave 14))(sort \ Typ))((shape(Concave 14))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 061bb903-58e8-456f-938f-739acda10415)(shape \ - Convex)))(Secondary((id \ - d1fac0d0-8273-4b40-bd3c-80540dbb49bf)(content(Whitespace\" \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 6877269f-faf0-460e-a7cc-ae798be34c10)(content(Whitespace\" \ + \"))))(Tile((id \ + 1ad9374d-112b-438c-ba1a-188072e788b4)(label(String))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 9706da68-b8e8-4453-9efc-a0a551da07da)(content(Whitespace\" \ \"))))(Secondary((id \ - 10e3fb0e-9faf-4a89-b2e8-ee95afebf1ba)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - af376a6f-dfde-49d7-af95-47925e3f6206)(content(Whitespace\" \ + f6e5c205-09b9-4022-ad65-2948b4fb879a)(content(Whitespace\" \ + \"))))(Secondary((id \ + 42130af4-f05c-4751-92f0-6f778980dee2)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + c9dba0be-424a-4006-a6cc-356661840232)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 1ff7b04d-3d6a-4abf-84e0-fa2d339876af)(content(Whitespace\" \ \"))))(Tile((id \ - 6f68afc5-fee7-49d2-a36c-3a47f8b3ac2f)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 9613b237-74cc-45ea-b5c8-2b17bdd9618f)(shape \ - Convex)))(Secondary((id \ - 0b31ee1d-0ad9-474b-bddf-00154d216769)(content(Whitespace\" \ + a1a979da-5e17-495d-acfc-77a3e44dcc86)(label(Style))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + e49c698a-03b1-401e-8260-092c007fd615)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 93bf74c4-4380-44ef-a5c7-1611f86ad607)(label([ ]))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + b1c24f97-a106-4a8a-8628-9cdc85f98af5)(label(StyleAttr))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 08655ecf-5fcc-48f6-8c8d-9b1f19b68830)(content(Whitespace\" \ \"))))(Secondary((id \ - b410dbb1-fabd-41ca-b784-b99cdcfc5eba)(content(Whitespace\" \ + 03920458-e9a1-4fbe-92a5-e2e13339422c)(content(Whitespace\" \ \"))))(Secondary((id \ - 8fd5f496-31bd-4e3f-b51f-0b6a51ca2dcd)(content(Whitespace\" \ - \")))))((Secondary((id \ - 3282d800-60dd-4de9-a28e-bf7e684d9b8a)(content(Whitespace\" \ + 3e3d9dba-bb6f-4d84-bdb7-f792900b5540)(content(Whitespace\" \ + \"))))(Secondary((id \ + a034e18b-c470-4324-bb9f-fc3d9644d713)(content(Whitespace\" \ + \"))))(Secondary((id \ + 9b9dc04e-590a-401c-9d94-d4312b11e312)(content(Whitespace\" \ + \"))))(Secondary((id \ + 1c74905d-947d-4d80-b5a5-7b232b5c3731)(content(Whitespace\" \ + \"))))(Secondary((id \ + 5a8b7a01-dd38-4cf6-a79a-dea30ecdfcb2)(content(Whitespace\" \ + \"))))(Secondary((id \ + 11588e51-ad2b-4ff2-a190-dc92662cb959)(content(Whitespace\"\\226\\143\\142\")))))))))(Secondary((id \ + 950a9871-8efe-4849-b971-d5d8bc69fd7a)(content(Whitespace\" \ + \"))))(Secondary((id \ + 59684745-5da9-416f-8a89-a6b0c4026f24)(content(Whitespace\" \ + \"))))(Secondary((id \ + 0230e421-e8ad-4ac3-87ea-13fa049931d2)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + fb97638b-83fe-47a4-8a71-1b4b4913bbe0)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 8dfc8c11-550a-4c6a-b773-dafab394c9d7)(content(Whitespace\" \ \"))))(Tile((id \ - e7f2229a-768a-4ad8-b720-4dc50f88daca)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 5b0edbcc-38ea-4108-9bdc-4c6b8394ac8b)(content(Whitespace\" \ + 3d5f4c10-93ad-4e5f-b415-a482719de77f)(label(Node))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + 9d4d9ed6-4f05-4f7f-b9be-cbd6492ceac1)(content(Whitespace\" \ + \")))))((Secondary((id \ + 9d4b44fb-6ea3-4448-b207-66af8e17a8bf)(content(Whitespace\" \ + \"))))(Secondary((id \ + e08c5248-4551-43fc-a99c-3e91f4a102cf)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d098a69f-20e2-4327-a03c-336644759038)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape(Concave \ + 10))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + e254d359-fdee-433b-bd44-42e8f61900d7)(content(Whitespace\" \ \"))))(Tile((id \ - 9c9f5baf-4414-4d97-8160-774712d7f699)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 8a3ef432-cd29-4937-b9bd-312829df51e5)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - e83f627b-0105-41ab-aa9b-980231731d2b)(content(Whitespace\" \ - \"))))(Tile((id \ - 9751b2c6-b35d-43cb-b986-c3c138ffc44d)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - e8b29464-2ce0-47c4-97d1-045478b68af4)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - c4caee35-a182-46b0-8c31-ab1f14865df3)(content(Whitespace\" \ - \"))))(Tile((id \ - f89c6f23-2126-47bc-bfbf-03a141f18881)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - c8b42539-e3db-4527-92ca-a28898cc31a0)(content(Whitespace\" \ - \"))))(Tile((id \ - 793e3c7f-1a50-4f0e-9e3d-a954b62ebb3b)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 5))(sort \ - Exp))((shape(Concave 5))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 506ee6ac-f965-4695-86fa-4b6f65c40880)(content(Whitespace\" \ - \"))))(Tile((id \ - cf41bcdc-fdb1-4fba-9c9d-d9a095157908)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - a2fcc73f-c20e-46ba-a083-d59bf02a54be)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 01c8a13d-464f-493d-b285-b6884c9cfe6e)(content(Whitespace\" \ - \"))))(Tile((id \ - 27fa1b9e-1c83-4366-813b-59aaf302a5ef)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - de6c5fd3-529b-4805-83d9-5b123615c295)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 32184568-a8fb-4504-ad5f-4e79abb70bc1)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 7625ed65-dc23-481d-8cf4-7bec9ce2d61b)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 2d64477d-0af4-4e4b-9fc5-6759029362a4)(content(Whitespace\" \ - \"))))(Tile((id \ - eac776ea-6d34-4d5f-8b0a-a5bc742778da)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - fb93ade1-a5bb-4e65-9f2a-f7ce945af7ae)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - b48b8eae-4690-4248-a8a9-e00392cc76a3)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 249e737b-7462-4cda-987f-dbd1c040a305)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - ab2e61f8-918a-4a8e-804b-6b8258d068ea)(content(Whitespace\" \ - \"))))(Tile((id \ - 239b9b3a-655b-40e0-ba7b-21e7731d12a8)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - bcb33fbd-3493-4e9f-8a95-362ec76b082a)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 855d053d-78ea-4ebc-b206-5d5400dfee1c)(content(Whitespace\" \ - \"))))(Tile((id \ - 5a9ac697-149d-4cbf-b476-aab022ee05e1)(label(\"(\"\")\"))(mold((out \ + f8964f72-944e-4629-8662-3192dbd03136)(label(Div))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + 100648f9-0f06-49a4-a078-f2ef85d3ef28)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 643dfdaa-d9e7-4f0a-80cf-532a97692fce)(label([ ]))(mold((out \ Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Grout((id \ - 8f5dd867-a41e-4363-926f-c989367cd3bf)(shape \ - Convex)))(Tile((id \ - a6c7aebb-51f2-4b36-ac15-be1668105a95)(label(,))(mold((out \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + f9179875-1592-44ad-80a1-2fcc39e40238)(label(Attr))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children()))))))))(Tile((id \ + 7be8b434-888d-43d2-a055-552c1b4fb195)(label(,))(mold((out \ Typ)(in_())(nibs(((shape(Concave 14))(sort \ Typ))((shape(Concave 14))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - e4d0ad35-d7d6-4bf1-8ee3-f5e39a905fe8)(shape \ - Convex)))(Secondary((id \ - ab7b2100-5e43-4d55-b7bb-f742bb65f8ab)(content(Whitespace\" \ - \"))))(Secondary((id \ - b393f5db-c3c4-4e85-86ff-0fb0662bc978)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - f9757c3e-4bc4-449e-822c-9035e2e36eb8)(content(Whitespace\" \ - \"))))(Tile((id \ - 74f56b23-6fb8-4e03-96b2-06ea9e7040ed)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 6d983f70-23d1-463d-adc0-a3709a640952)(shape \ - Convex)))(Secondary((id \ - 196b58a4-63de-4642-85bb-175c2ea9fd1a)(content(Whitespace\" \ - \"))))(Secondary((id \ - 1329bb91-6f9f-4c47-9109-da58bb468bee)(content(Whitespace\" \ - \"))))(Secondary((id \ - ffada2ab-fc36-4533-86ab-de10f916869f)(content(Whitespace\" \ - \")))))((Secondary((id \ - f40d6acc-e229-4f0e-9184-83d9349dcf7b)(content(Whitespace\" \ - \"))))(Tile((id \ - 4c338a43-8850-43e6-afc9-be37ae180fdc)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 534da083-b8ce-459b-b75f-88af8447cd42)(content(Whitespace\" \ - \"))))(Tile((id \ - 6ba8154a-1771-4256-b396-678df94f8799)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - b1250a41-9d06-4016-936a-951599368c67)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 776456c4-5444-4a55-841e-3c9ad0e0620b)(content(Whitespace\" \ - \"))))(Grout((id 0ed1f5e7-1207-4b48-bde6-af2b757e9f71)(shape \ - Convex)))(Tile((id \ - 649ce7e2-8418-495d-a672-b758cdece86d)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - fff13e2a-4465-4e20-b5ba-25100a3b1c34)(content(Whitespace\" \ - \"))))(Tile((id \ - 820aa7a6-d0ef-4680-845e-05ae7b496bd1)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 43a7d8c9-79c2-4a16-8504-4ce744835909)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 072b6626-4224-438a-8153-083b3b5cf909)(content(Whitespace\" \ - \"))))(Tile((id \ - 7d4ca940-d58b-4a51-b2a4-6c46f63bb321)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 61afc556-4ad7-44f8-aa2f-a9ccf2777603)(content(Whitespace\" \ - \"))))(Tile((id \ - aaad6f7a-5f9c-4d97-93f3-60736e0e1b34)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 5))(sort \ - Exp))((shape(Concave 5))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 9d2e0609-d39c-42d6-9115-6f55f381ae68)(content(Whitespace\" \ - \"))))(Tile((id \ - 10dbe8de-b23d-4d56-a5bd-195980d3e27e)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 2681e2bf-4a97-4b26-adba-f80d88129390)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - bfb0bc27-e706-49ed-bed3-343d8fe52c92)(content(Whitespace\" \ - \"))))(Tile((id \ - 4c2b5934-01d6-4447-8b62-e1243765a918)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - c312395a-d53e-4841-973c-2f70d81bd841)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 31a6bc96-cfde-4df5-b3fb-b35b53bb45f3)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - d773d0fe-76f2-4e64-b241-48a9802190c1)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - bf8dd4e7-b0b1-4926-8d19-b6cdea0b4c4a)(content(Whitespace\" \ - \"))))(Tile((id \ - 52c87b39-533a-41a5-b2d3-ecb7b7e09b9d)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 77fc0afc-64b0-4b62-9923-01c233655640)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 3d4f21cb-318b-44eb-8f72-efddcfe42c3f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - c497a148-10d9-400f-803c-e5548b970239)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 4e5f892c-5624-4ba0-877c-ccf641e44ada)(content(Whitespace\" \ + ba00eb24-5263-479f-8e0a-c65c76761ffa)(content(Whitespace\" \ + \"))))(Tile((id 33923840-bdf1-41cb-ace9-5938e3f7a7e2)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 0b851d3a-acb7-4e45-9d18-0c53891217a0)(label(Node))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 7a742c7e-9f3c-4f3f-b5df-3a6259546542)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 40484914-d4dd-4a16-9216-de497dfda1ae)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + c6f494d1-3a12-4d0f-b462-38b1c57b74b3)(content(Whitespace\" \ \"))))(Tile((id \ - 87f24316-5f4e-414a-a979-eae897c60f04)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 020719c3-8271-4308-924e-17d12fc562dd)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ + fbc7ea1b-fcda-4f7d-9cf0-a5ced170993c)(label(Text))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + 82dca9b8-a231-4e44-aaec-423ad91afea2)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 252b09e7-00c3-4280-9d4c-ea3ecd6ec33f)(label(String))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 4d2bf3ef-a8ae-4641-9cf9-e3698edcc190)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + f7b4804c-4177-4c5f-89de-573a17bbbed5)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort \ + Typ))((shape(Concave 10))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 901e7b31-f793-4763-af03-e436ea2169ba)(content(Whitespace\" \ + 310fbe2b-75de-4502-86ad-cb9af11914ab)(content(Whitespace\" \ \"))))(Tile((id \ - 856c69d4-5ede-4311-a698-b6f151ed6b92)(label(\"(\"\")\"))(mold((out \ + 0b81a4e0-2e53-42ff-b78c-f92bee887750)(label(Button))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + d1b6e6a2-bd33-4cce-b961-927845fa8ab6)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + fba5df4d-2bd0-4a48-9871-09b174e5c2fc)(label([ ]))(mold((out \ Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Grout((id \ - aa044aed-35a7-41fd-9251-d9e3b1964b62)(shape \ - Convex)))(Tile((id \ - f34cf6f7-bbfc-48de-b5bb-a95a084b32e2)(label(,))(mold((out \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 7e540ae9-93f4-43ac-b087-32737f999d85)(label(Attr))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children()))))))))(Tile((id \ + 93b2f0f8-0e26-47f7-8a6e-7c57dfd4d50f)(label(,))(mold((out \ Typ)(in_())(nibs(((shape(Concave 14))(sort \ Typ))((shape(Concave 14))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 35351958-a081-4ba3-8102-519ceaa460dd)(shape \ - Convex)))(Secondary((id \ - fbb9e319-e64d-482b-bd3b-daef1c8e800a)(content(Whitespace\" \ - \"))))(Secondary((id \ - b6383ff0-91b5-40e4-a7e2-c6b5c46e4890)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - a0e9f0c3-86c5-401d-b475-59d17c414966)(content(Whitespace\" \ - \"))))(Tile((id \ - 72657097-7b58-4dff-bc2c-83d73f538d45)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 9bfde24d-4ef0-4dc2-ab96-ac55fb65de8f)(shape \ - Convex)))(Secondary((id \ - aa2494e4-13cd-4758-8a46-2597daf09c41)(content(Whitespace\" \ - \"))))(Secondary((id \ - bfe5e1c9-9c69-43ca-ba16-ae36fe57904b)(content(Whitespace\" \ - \"))))(Secondary((id \ - 04cbb703-fe6a-431d-a7c2-326e4e6fe519)(content(Whitespace\" \ - \")))))((Secondary((id \ - 9fda2313-41ed-4929-b39d-d2e819057b01)(content(Whitespace\" \ - \"))))(Tile((id \ - 93bc7e43-afa4-4f4c-9862-e580158dc828)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 0ac577f5-b8b5-40ef-9d08-173792993634)(content(Whitespace\" \ - \"))))(Tile((id \ - ae0d121d-1143-436a-9741-a763b0dfdf00)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 6aaea59d-b0a5-4e34-996c-5a21aa20bc76)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 5d533a01-4822-4b46-b7a0-bed2519ddbd2)(label([ ]))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 28d7e1f9-7e98-4aaa-92c3-80db18f89e38)(label(Node))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 39643b47-de56-47b1-a511-8f8cbf2c2180)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 60318f32-f412-46a2-9fbe-712f56e2fe57)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort \ + Typ))((shape(Concave 10))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 33f126bd-42a9-4371-b630-847dc42755b9)(content(Whitespace\" \ + 04308de1-c13f-4128-8610-d04164d79461)(content(Whitespace\" \ \"))))(Tile((id \ - 493f02cf-9ceb-4e21-afab-d3b601c47b18)(label(Int))(mold((out \ + 26ee2741-794c-44eb-97d8-4377a36a0243)(label(Checkbox))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 6b92ff6d-971c-4992-9f64-bc8c4451b443)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - cc01eba7-de02-448e-ada4-74122754b6cc)(content(Whitespace\" \ - \"))))(Tile((id \ - 0d10179e-353f-4668-829d-d7f9efaa9009)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 39136aae-8579-4a60-b784-83b9564d6ad5)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 8fdf301d-12bc-4cda-8a96-b655327d22e3)(content(Whitespace\" \ - \"))))(Tile((id \ - 06316225-a915-46a7-8a46-2c2a41ab5c6e)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - b1f396df-c42b-426a-af63-e32ad23c66b6)(content(Whitespace\" \ - \"))))(Tile((id \ - 393997ef-d898-41b1-8ea5-77ccb7688570)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 5))(sort \ - Exp))((shape(Concave 5))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 3ea85289-f845-48d3-9215-1e6c6deaea89)(content(Whitespace\" \ - \"))))(Tile((id \ - c8ccff99-0b00-41a4-a306-5035cddb3693)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - ce407ed0-d44c-4e84-ad83-8934db80e6a4)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 90af6c58-0b3d-4556-b921-12f1eb895618)(content(Whitespace\" \ - \"))))(Tile((id \ - 3668e811-b918-4386-b78d-2dd800c9c0b2)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 680d3017-66a5-49d4-9337-35bfd56d9c42)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 21cdc7d6-400b-422f-b6d8-87863509eda8)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 4db36db2-d937-469e-8501-5c4a6627a282)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - d5fb6cf3-2516-43dd-881a-a13c85df28b2)(content(Whitespace\" \ - \"))))(Tile((id \ - 76602b5a-9369-4d20-90b5-1eebb367c4bb)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - c243a46a-10bd-4f86-a80b-3b6f94db9b89)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 90b1ad9e-a0ab-4b09-b59d-50124a8a9b0e)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - def5d21f-6b1e-458e-a61c-3839eaa2df48)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 63279d89-32a6-4c9f-a91c-b5707e335bd9)(content(Whitespace\" \ - \"))))(Tile((id \ - 6ad6b968-b933-424b-b840-581a0165cc98)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 9bc7a73f-aa25-496c-b777-e0b11ab6159d)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 13760f56-38e7-4641-8187-d77e1462bf17)(content(Whitespace\" \ - \"))))(Tile((id \ - da0c998e-d726-4174-ba68-20936cf2f251)(label(\"(\"\")\"))(mold((out \ + 7de6ef90-6a27-4279-bd24-d03b1e0a08a3)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + e6ff00c1-f12a-4537-8822-104933923569)(label([ ]))(mold((out \ Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Grout((id \ - 3669c5a2-0c11-469a-b91a-93575fa3afba)(shape \ - Convex)))(Tile((id \ - 5a694cf5-1c13-49af-8fd5-876c64002b6c)(label(,))(mold((out \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 10dc2757-4ad9-4a8a-b5b8-b8db9ec153d3)(label(Attr))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children()))))))))(Tile((id \ + 4de3a82a-7abd-470b-b0a6-30495e45fd4b)(label(,))(mold((out \ Typ)(in_())(nibs(((shape(Concave 14))(sort \ Typ))((shape(Concave 14))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 24a8484f-e471-4bdd-93a5-4aaf6f44e9d2)(shape \ - Convex)))(Secondary((id \ - f04be29f-40d3-4bf5-b424-99c06bf3095d)(content(Whitespace\" \ - \"))))(Secondary((id \ - e18df519-621d-428b-955a-28f5648c3d42)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - fa73b247-4f0b-4fd8-9690-51f0249d4144)(content(Whitespace\" \ - \"))))(Tile((id \ - de246edd-2272-4f7c-af68-19bc4414c199)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 22631d33-fb4c-4978-816c-e2af9acfef79)(shape \ - Convex)))(Secondary((id \ - cfded247-2e57-4a79-b472-95d5a8600d15)(content(Whitespace\" \ - \"))))(Secondary((id \ - 3cfbb36c-12b8-4430-a2a4-b133cfc3974f)(content(Whitespace\" \ - \"))))(Secondary((id \ - bfaab898-1775-450f-882a-3dd08f985489)(content(Whitespace\" \ - \")))))((Secondary((id \ - c7e883b3-42e3-46b1-9dfc-97656d7be54a)(content(Whitespace\" \ - \"))))(Tile((id \ - b3140d37-9cea-4dbf-93ba-6134296486ce)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 7c4a3fc1-3a07-4ccd-9faa-908668202e26)(content(Whitespace\" \ - \"))))(Tile((id \ - 1d0414eb-36be-4862-a175-e4d6a7cec02f)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 369c17c8-794d-4aab-8bc6-8a7c7ba854b5)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - ab148e68-bafa-4082-b20f-b4163ff35892)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - c07e8d76-a161-4583-b953-ca7d9bf2a0c0)(content(Whitespace\" \ - \"))))(Tile((id \ - 7a7bfb79-5e3c-4591-88f6-22e5df3e33ef)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children()))))))))(Tile((id \ - acb3da75-9cd4-4baf-b2d9-45c8ec3b39e1)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 4eda329a-815d-449b-a815-33c5fefc6f8b)(label([ ]))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 1e3b3eab-8e21-4fa0-8396-cb2b55abf0a2)(label(Node))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + a1c1c41f-eb4e-4d74-86ce-fd7ee923ab33)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 4294bcd5-5236-465d-b691-b273defad96c)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort \ + Typ))((shape(Concave 10))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - bcb74525-4b49-4270-aac7-7aa74cf41f67)(content(Whitespace\" \ + 288eb332-2b56-4795-911d-f486640ddfc9)(content(Whitespace\" \ \"))))(Tile((id \ - 600185b8-e4f6-4983-b503-5c67dbfb394f)(label(\"(\"\")\"))(mold((out \ + d8a4f76e-de76-4d47-94b4-7346dd77b0f9)(label(ColorInput))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + 0953308d-c7fa-46a1-8fa9-c134bf0220b5)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 60682d77-c97c-41d2-8407-064d1d46b2cd)(label([ ]))(mold((out \ Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 825efdd7-2e52-4613-8ea0-23f1f08a5c8f)(label(Int))(mold((out \ + 7244faf6-6f4b-4597-851e-00f0018b3b85)(label(Attr))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 416a3ca4-5560-488a-a774-be822a2a7e32)(label(,))(mold((out \ + Convex)(sort Typ))))))(shards(0))(children()))))))))(Tile((id \ + dc0b590d-ac4e-4e9f-864d-6d214aa0bc53)(label(,))(mold((out \ Typ)(in_())(nibs(((shape(Concave 14))(sort \ Typ))((shape(Concave 14))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 15708ed5-f452-4958-a896-ea9fae8491b0)(shape \ - Convex)))(Secondary((id \ - 37fb9d0d-9315-4c67-987c-236d46a1b702)(content(Whitespace\" \ - \"))))(Secondary((id \ - 9e538009-4c7e-4c7f-b695-3bdc6befaffd)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - e0631ef1-e8ca-444d-baf8-463265173097)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - eba08687-8d35-4697-af6b-2812d6461973)(content(Whitespace\" \ - \"))))(Tile((id \ - 7c5b8c16-96d3-46da-b8ea-afceae9437d5)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - b91ff2ee-f8ee-4c61-b0f5-9115f6c0f230)(content(Whitespace\" \ - \"))))(Tile((id \ - a006a807-6a04-4f10-87ec-54487587aadd)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 5))(sort \ - Exp))((shape(Concave 5))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - ba3ef35c-d7ea-4e3d-a353-5715c665edbb)(content(Whitespace\" \ - \"))))(Tile((id \ - 08f3255f-fb50-4034-b5b3-9de9e8a1375b)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 8628da55-6d68-428d-8067-26879297a915)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - abf3eb4d-ca65-45a5-9113-fefba16ac490)(content(Whitespace\" \ - \"))))(Tile((id \ - 97122918-d74c-4094-b55f-07f8f9d3fb5b)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 3007137a-f275-4b2d-aeba-fdc5c734e34d)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - da501029-8b89-483d-b62a-1035209f21ae)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - fb3441c0-a2d6-45b3-ba4a-fad65d2cffcf)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 6974d029-9697-4cb9-aee8-8a2fc801adad)(content(Whitespace\" \ - \"))))(Tile((id \ - 6f02e6fe-3354-42ce-af69-36f1c2411215)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 915fbcf2-5371-450c-9b2e-67e891528a3a)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - d9be22e1-cbbe-4821-bd9f-26608d605971)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - bf560209-22f4-4ee0-bd63-569256e742e7)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 80ac1a50-c17b-4403-a0a6-bcb3b464e877)(content(Whitespace\" \ - \"))))(Tile((id \ - b36b16ef-cf98-44f2-a266-72ad615a819d)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 54b60b1b-fb9b-4159-9699-b283f3c8b73d)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + bf1745bd-a290-4c5e-a7fe-e31fb2c03819)(label([ ]))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + ad87eaf8-6ba4-44ee-bc39-b5fca4608b84)(label(Node))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 037b2ffb-a86b-4a64-a5b3-0c7cf178404c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + cc2ab6fc-767a-4d9f-b348-76120fb60dd2)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort \ + Typ))((shape(Concave 10))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - ad030d34-b50d-4247-8c95-ee49be92279c)(content(Whitespace\" \ + 6b512633-3e87-4a8b-8af4-1cbe349c196a)(content(Whitespace\" \ \"))))(Tile((id \ - bd41a1f4-e654-41f1-a9aa-44c2caf97687)(label(\"(\"\")\"))(mold((out \ + 9baf4e6e-5534-4100-8152-d481d0168abf)(label(DateInput))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + eb8ae719-a7c0-4f07-9095-b42b66ac9948)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + ec1bb242-e88f-49a9-8a4a-e005116e893c)(label([ ]))(mold((out \ Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 1602a4a2-e4cb-4f9c-91cf-99fdfed14c92)(label(Int))(mold((out \ + e3a02995-a631-4de7-9a45-7b2b9a29d3fe)(label(Attr))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 0d544688-8378-4763-973d-0142b040ef3c)(label(,))(mold((out \ + Convex)(sort Typ))))))(shards(0))(children()))))))))(Tile((id \ + 092dc4ae-ce5c-4482-9464-784037a93d66)(label(,))(mold((out \ Typ)(in_())(nibs(((shape(Concave 14))(sort \ Typ))((shape(Concave 14))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - d9d067c7-ae3e-46cf-9520-f92e45e3bd90)(shape \ - Convex)))(Secondary((id \ - 607a5271-42e8-4f70-8d7d-7265f5a37e11)(content(Whitespace\" \ - \"))))(Secondary((id \ - 425cbee2-8599-4d9b-9bb8-7d4b74e07400)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 31e910a3-4e72-4adf-b897-e52c3b081c11)(content(Whitespace\" \ - \"))))(Tile((id \ - b7a4ac2c-7706-4377-8143-58a9c0dddc05)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 13c642f2-d87b-455a-9803-fa66c8f68c70)(shape \ - Convex)))(Secondary((id \ - 620216db-24ef-41a9-93e5-7f4c86674e2d)(content(Whitespace\" \ - \"))))(Secondary((id \ - 2e0af26d-3f9a-492d-9511-120e00c895f9)(content(Whitespace\" \ - \"))))(Secondary((id \ - af907e4b-a3a9-487e-bb69-6c6bcfae8c26)(content(Whitespace\" \ - \")))))((Secondary((id \ - a07a4037-3c49-444e-9406-ac293aa962ae)(content(Whitespace\" \ - \"))))(Tile((id \ - f01f6941-3084-4711-9593-85eaadad4101)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - e4e8a34f-56f5-4bd6-a10a-3e6b46fa24e2)(content(Whitespace\" \ - \"))))(Tile((id \ - 32161cc2-6f99-4954-bdd7-34cf8f0ca2d2)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 9274b0d6-af2f-4ae2-8cdf-fe3678efa264)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - b7ca123b-74f0-4d2e-9c29-8284e2afe6b7)(content(Whitespace\" \ - \"))))(Tile((id \ - 0575a076-e79c-411e-83ef-a100b0917804)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 37f0e61d-c395-44f7-ab59-bdb9b162b1f0)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - f1640ff3-9870-48f8-800e-ca5f4ec1ad9e)(content(Whitespace\" \ - \"))))(Tile((id \ - 38d71e64-e6cd-4040-a7f9-4342a7632a7d)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - d2ceb287-f66b-4499-9b64-445ef3f32c07)(content(Whitespace\" \ - \"))))(Tile((id \ - 04053ae5-9986-43e7-8081-c00a8f699105)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 5))(sort \ - Exp))((shape(Concave 5))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - e16a258f-cac7-4e38-b790-a7e57addc69a)(content(Whitespace\" \ - \"))))(Tile((id \ - 788d35a7-8e52-4b3d-ae51-82e464d5815b)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 219ca7c2-32c3-46c4-88c8-c07a44f70546)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 69ed07ee-5be8-4064-84fe-b37022365ea7)(content(Whitespace\" \ - \"))))(Tile((id \ - a17a73c2-0f68-49f7-bbb7-550085684c5f)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - b1ae580a-12f9-4106-a59c-86c97ac196ef)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - d1409192-3c6e-4276-820c-5ac263859192)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - ee65c7d4-9367-480f-bc8a-42714e9e771a)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 9f0c9bf1-ec71-460b-92fe-7d6f8ae80037)(content(Whitespace\" \ - \"))))(Tile((id \ - 391c7891-6ee0-413e-b61d-ff4b533485a1)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - bf8fa20c-d917-47ce-916d-b4ad8a624d01)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 26afcff3-cf21-480b-b10f-11b60d0f7314)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 859b9124-2bd1-4ef0-a9b0-440c5346fc51)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - a4fa0510-6ae2-48e6-8b02-0443d33bddce)(content(Whitespace\" \ - \"))))(Tile((id \ - c29e4914-8d49-4e69-be7a-c07f72f9de4f)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - c015d488-3679-442b-a2f0-fb95ec525321)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 5e9828eb-96cc-448a-ac88-c47430a014cf)(label([ ]))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + fab86ab1-1898-421b-9ea9-411c6868cc69)(label(Node))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + e53fa843-7f1e-4321-8ff0-d991306dc72a)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 89e54c42-acbb-4e0b-bf59-e966555f1a54)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort \ + Typ))((shape(Concave 10))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 15c2b6b0-297e-4582-97d3-369dc2a80d7e)(content(Whitespace\" \ + c6bf6d61-bc2a-4385-985a-e3cc3cbbf7b1)(content(Whitespace\" \ \"))))(Tile((id \ - 2bc80c4d-768e-433b-926e-c1e6f16c2e40)(label(\"(\"\")\"))(mold((out \ + 1cd380f2-abd4-4c70-96fb-61e8a57c8541)(label(NumberInput))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + 6a107450-162e-4729-a9bb-cbf961a17072)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + efb77586-1854-41a7-91cf-3de12887cb4c)(label([ ]))(mold((out \ Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - bfd24439-663d-4705-8273-e29b751604f3)(label(Int))(mold((out \ + 4275f11f-2a31-4b9c-b246-795daa3a9062)(label(Attr))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 09a3fdf8-a96b-48a3-9ed6-eda73c65a277)(label(,))(mold((out \ + Convex)(sort Typ))))))(shards(0))(children()))))))))(Tile((id \ + 64c1ed68-88bb-418f-b48f-5d714147e46b)(label(,))(mold((out \ Typ)(in_())(nibs(((shape(Concave 14))(sort \ Typ))((shape(Concave 14))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - dff36c0a-c494-4773-85d3-22dc40828194)(shape \ - Convex)))(Secondary((id \ - 82a71844-313e-46dc-ab39-2168277862cf)(content(Whitespace\" \ - \"))))(Secondary((id \ - 8d216058-fbf1-496d-9743-0c5e0cd76feb)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 14415fb7-a422-4548-819e-44934a15fbaf)(content(Whitespace\" \ - \"))))(Tile((id \ - 2bf97cb3-fa08-4a66-af35-19f80ebbf18c)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 361a98e7-250c-4a8a-894d-3c142b544a3c)(shape \ - Convex)))(Secondary((id \ - afdf67f8-ca10-4975-a82b-cee627045d6c)(content(Whitespace\" \ - \"))))(Secondary((id \ - 1d7ea360-85de-41a0-8d28-2560fce817d2)(content(Whitespace\" \ - \"))))(Secondary((id \ - cc3932d6-ddb5-4b38-bed5-0f804b30c249)(content(Whitespace\" \ - \")))))((Secondary((id \ - 0646a454-d94c-4a32-86e5-e945b7ba3281)(content(Whitespace\" \ - \"))))(Tile((id \ - 1376e637-b0fe-4c0a-ab2e-2e3668294b2a)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 00d6aabb-0632-418a-991d-3244cbac05f3)(content(Whitespace\" \ - \"))))(Tile((id \ - bc3da52c-3df7-4024-bbed-ccfbc627a7b0)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 2a8f19a0-cfc7-40af-b6b9-3348b68b8339)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 4cfe3f48-eb7e-40ee-847f-54a9c230d7e3)(label([ ]))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 5cef2fc2-7236-4f03-8287-89559ed81c57)(label(Node))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + dc351322-c91d-4df6-8537-2087db987e9f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + e1a8e647-f966-413d-b1d6-045aa8aae876)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort \ + Typ))((shape(Concave 10))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 9f76cd87-b09e-4a77-ace3-b7b950b35b5a)(content(Whitespace\" \ - \"))))(Grout((id ba54939c-0b30-45f6-b043-9b78bfc61ccc)(shape \ - Convex)))(Tile((id \ - a3d1bf28-0582-4434-8016-7e16d9c49168)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 5224a37d-a8cb-434c-8296-c6848f946521)(content(Whitespace\" \ - \"))))(Tile((id \ - 4a059766-ec30-4672-8936-beb7b9222bd6)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - c1602bc9-19c5-4170-82e8-577d85ed7754)(content(Whitespace\" \ - \"))))(Secondary((id \ - 8d33d61f-552b-4d9f-8ee8-be0441e23a97)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 890ff4a2-a745-448b-8115-b2934cc0b80e)(content(Whitespace\" \ - \"))))(Tile((id \ - bf14169f-746b-4146-8c4e-e59d02155bbd)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 0df42a3a-eda0-4448-89eb-767d22428d00)(content(Whitespace\" \ - \"))))(Tile((id \ - 33cd3314-9af9-4322-97aa-077b7aee80b8)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 5))(sort \ - Exp))((shape(Concave 5))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 36b0afb8-4162-465a-ba53-dadc8ea48eec)(content(Whitespace\" \ - \"))))(Tile((id \ - 7acfd26d-e427-4492-8b93-486f2ef7056e)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - f7e38c4e-9f89-4a5d-9d29-8fc5c23f2cad)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - fb9d57c8-fe4b-4cc1-acbc-0d1a9892bab8)(content(Whitespace\" \ + 1980085e-17a8-48c8-9a51-e295f9963a01)(content(Whitespace\" \ \"))))(Tile((id \ - ef1b1b01-cf68-4b48-b7b9-46acb5e163b2)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 6e190c88-1aee-4ec5-8e4e-8a19928c9bd1)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 78705e87-a0b1-4251-8446-d6b43ef044ce)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 690f7619-8921-4e38-b639-16560567cb1e)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - eca2e22d-e738-4f42-a208-0ee61aa75be9)(content(Whitespace\" \ - \"))))(Tile((id \ - 0acc0b7b-5590-4de1-8ebf-ce7ce50f99c0)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 5e7aa6a5-67db-452b-bc45-bc6613713567)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - c4a2663f-7fea-4727-8ac4-10ef3933c70b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - f85f8f98-196c-4aea-a519-ea1002fea7d2)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 7a1d296d-ddf2-4800-b920-f4116eb01eb2)(content(Whitespace\" \ - \"))))(Tile((id \ - 9897f8ff-41ce-4364-a5d7-b366ec0bb8bc)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - ce2d263e-6278-465a-8f81-e831b766b1e5)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ + 75179e2a-a7dc-45f3-93a8-8e1e93ff2908)(label(Radio))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + 64d6cab8-c5ab-4638-9b5f-834ba8b560cf)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + cc5e5aa3-be4b-4603-844b-644a8d57ed4b)(label([ ]))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 1e8e5733-55e1-48ba-bf88-0d78c2a69a37)(label(Attr))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children()))))))))(Tile((id \ + 8b78c5f7-94b0-452b-a49f-a2e762becf17)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + a29140bc-cbb9-490b-8ead-22e739c5e617)(label([ ]))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + b09db194-15fc-448c-9e47-a60e6d72954b)(label(Node))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 51b66388-04f5-470f-9df7-aff8c2f64365)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 47e38be8-58e3-481d-bdee-a4396fcd5eb9)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort \ + Typ))((shape(Concave 10))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 967f4497-6a86-4dd7-a089-2f18712a0d67)(content(Whitespace\" \ + dbeba05d-a1ae-4f1b-a6e3-0664fecef75f)(content(Whitespace\" \ \"))))(Tile((id \ - 416de460-73cd-4105-9a1d-676283260d75)(label(\"(\"\")\"))(mold((out \ + 6d69b4f4-8077-427c-adce-d0dd63fdd8cc)(label(Range))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + 3a2ade05-f451-48e6-8ddd-97c027e263ec)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 80e090bb-34e2-4f64-86f1-79f242728ed5)(label([ ]))(mold((out \ Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 38e4b386-735b-48c4-8a0b-ff4cfdd52bcb)(label(Int))(mold((out \ + 28508580-3679-4982-a0f7-d81c34d0dc66)(label(Attr))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 51976577-6ffd-4315-bc7b-cd2d54f8a710)(label(,))(mold((out \ + Convex)(sort Typ))))))(shards(0))(children()))))))))(Tile((id \ + 75fdc242-34f6-4c41-84a4-03667eee5c4e)(label(,))(mold((out \ Typ)(in_())(nibs(((shape(Concave 14))(sort \ Typ))((shape(Concave 14))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - fa144b5b-e12d-4105-af0b-621f0d0ab9ae)(shape \ - Convex)))(Secondary((id \ - 37d11023-6ee0-42b2-aa34-e0c2821a1f46)(content(Whitespace\" \ - \"))))(Secondary((id \ - e3009bd1-94cc-4f72-9d97-3a936ddd965b)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 78c11afd-7779-41ba-847b-bf00b2cd0e23)(content(Whitespace\" \ - \"))))(Tile((id \ - 0ab478a8-af38-4bdd-91bc-b042c8fc1a28)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - ac0f5375-8a7f-45fa-883f-22598fb49e4f)(shape \ - Convex)))(Secondary((id \ - 71e88bb0-162f-4acf-b4cd-2d8dfcb98676)(content(Whitespace\" \ - \"))))(Secondary((id \ - 16f969cb-615e-4d0c-a454-9ab748dd889c)(content(Whitespace\" \ - \"))))(Secondary((id \ - 30bd0a7e-1b39-403d-9d29-314fa4015d6f)(content(Whitespace\" \ - \")))))((Secondary((id \ - 63214078-2ba6-41de-ba10-3e4c34a44258)(content(Whitespace\" \ - \"))))(Tile((id \ - 09178b2f-ef8f-4ad9-a4e7-832c67204695)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - d5cf9139-9af8-4179-9e1c-7d101750015c)(content(Whitespace\" \ - \"))))(Tile((id \ - 3cbc7411-534c-4f04-ad2f-4c62642f92bd)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 2712059c-cdcf-41d9-868f-3b47a023519c)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + d738c0dd-5185-4936-89ac-86b9ea8f4dbc)(label([ ]))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 9b91d9b1-7ec7-41b5-b814-6a8df813d981)(label(Node))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 92fd6374-eb7b-4fc3-bade-dce4514d4ba0)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 0e9eb616-7b9f-4cc6-895a-00d8ecc667b0)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort \ + Typ))((shape(Concave 10))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 357f64ca-739e-452c-ac34-6e86af829339)(content(Whitespace\" \ + 916a5af1-c409-4f9f-a846-7160261d9b14)(content(Whitespace\" \ \"))))(Tile((id \ - 1ef6e3ed-b83d-40d9-80c6-ce7bd066a3cf)(label(Int))(mold((out \ + dbe099af-d6a0-4f45-a7ac-e30fb5054773)(label(TextInput))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 714e50f1-382c-4b30-ad8f-14a29d00eed9)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 0eeed07e-8ecc-4400-a0f8-648a08060a9c)(content(Whitespace\" \ - \"))))(Tile((id \ - d0ad4dfb-81fd-4ea6-9436-34e9aa10d2e0)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - c11d7f64-46a7-4dbb-9ce6-d5e65854762e)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 4196328d-f970-4e72-89de-d3dc5a3b800f)(content(Whitespace\" \ + 4ba7fc61-21a6-4bb8-9a89-2a311ac3be94)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 4c300186-bbfd-4881-b1b9-ce28e5c59aad)(label([ ]))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + fa72052d-7544-44fd-a3fa-f27e95953ef5)(label(Attr))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children()))))))))(Tile((id \ + 84732364-67cb-4f2c-bef2-5ca198c74a91)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 272eb936-ef8b-4963-89c4-fb138e54269a)(label([ ]))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + ce94bacc-3b75-4940-bb19-c31db433c96c)(label(Node))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 2fbed9bb-abdc-4adc-8972-50955169da90)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 40e3cbeb-1e7b-4754-947a-4767b7b58695)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 3422f4a6-7bab-4d98-b6db-9008aedac652)(content(Whitespace\" \ \"))))(Tile((id \ - 0ac8ba99-28b0-4c20-b6dc-fdda5208130c)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 2701275f-0054-49cc-a806-e50b5a1d9407)(content(Whitespace\" \ - \"))))(Tile((id \ - 5c928d16-9a42-44a8-9599-e9a2ef7cb4a9)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 5))(sort \ - Exp))((shape(Concave 5))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 3992ab52-0322-4a10-8993-9bbc73b4a47d)(content(Whitespace\" \ - \"))))(Tile((id \ - c7dee409-5099-439b-9479-cb196bf85da9)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 7f472026-0d8e-44fc-bf53-183b363fab7f)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 93ca28dc-c1ad-4310-8917-b968a2a3ba0b)(content(Whitespace\" \ - \"))))(Tile((id \ - d8799670-d6a5-49df-a740-89c175fdb36f)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 14eb48a9-3e23-4e76-92bc-3c43c7fff444)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 997a2997-4ad4-4248-b9f1-c96ff5941789)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 43a93d20-b827-4f0c-a3ee-c695e5df9e95)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - bcb0c02d-7357-4984-9fbc-f93897b4492b)(content(Whitespace\" \ - \"))))(Tile((id \ - 4736d2f7-5fa5-4544-b6b0-30cbda4b5b62)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 3ab4ec30-9a09-4644-8841-92e7f6cb8847)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 487472ef-1212-4ed3-88f2-63c4ab35afbe)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 3d02d2c6-650e-4442-b1c7-67b32cf9b8ad)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 6191f40e-7c16-452e-8c76-6f33eba1d329)(content(Whitespace\" \ - \"))))(Tile((id \ - fa4b8668-df61-4e1b-8cec-341034c7a3a7)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - ec67395c-ef7f-4eff-83d1-feb53acd6054)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 466da28c-9cf0-4722-8957-eaf632a6cd98)(content(Whitespace\" \ - \"))))(Tile((id \ - 7f79e5b3-e434-4b06-9b0b-3877b56986f4)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - a79ba610-804c-4e2e-994a-155e1833c2c3)(label(Int))(mold((out \ + 052aa9f5-ecd3-4a7e-bed0-51b94afb35e8)(label(TimeInput))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 64a932ef-9cd4-45ae-af2f-390ae7392104)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 14))(sort \ - Typ))((shape(Concave 14))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 8b753d04-627b-46e9-8d0e-98d66a31dd4c)(shape \ - Convex)))(Secondary((id \ - 600dac5a-52dd-4c54-8858-a4c872fa3317)(content(Whitespace\" \ - \"))))(Secondary((id \ - a800be14-da4c-403d-907c-b550055bc6c9)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - fa75fd51-22af-47fe-b374-4bf058b6aeab)(content(Whitespace\" \ - \"))))(Tile((id \ - 5f527de5-501f-4c14-b543-a9512e1869ae)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 053b4322-a3a3-42e2-9188-0287bd43e17b)(shape \ - Convex)))(Secondary((id \ - d85d2f27-47ea-4ad0-bd9b-cf6d50ae2b89)(content(Whitespace\" \ - \"))))(Secondary((id \ - 8029ce44-a191-477b-9785-fa6eb2dc427d)(content(Whitespace\" \ - \"))))(Secondary((id \ - d9665998-b692-44b5-8d1b-97ed7eebd24c)(content(Whitespace\" \ - \")))))((Secondary((id \ - 3cfeee66-ca95-4f7c-8969-dd92161cde90)(content(Whitespace\" \ - \"))))(Tile((id \ - 1203feeb-b475-4294-ba3a-71af647f676f)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 25158f94-7af8-4d68-9abb-4a365a130b55)(content(Whitespace\" \ - \"))))(Tile((id \ - 4b7d5c04-3e4c-4369-8917-f6bd1d93c9dd)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - db0db77e-bbb1-4738-b207-c118cced483e)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - ff1961f4-9798-4200-b14d-fa9ed8c23a3e)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 73fdb448-3691-42ae-ab3c-c35be7f073d1)(content(Whitespace\" \ - \"))))(Tile((id \ - 4ab4a56a-4cc3-40cc-9609-3dfa2e644314)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children()))))))))(Tile((id \ - 50cbfb20-0b9a-4cfd-b962-0e061a417c0f)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - ff8c1605-b9e3-419a-9aab-f66d51fb7478)(content(Whitespace\" \ - \"))))(Tile((id \ - 8e68bb74-bf64-44f9-9385-d1f66367770e)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + adb999ce-cf10-4d4f-b7a5-4390347999b9)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 857912e5-bd11-4c26-b394-dd2cd928636b)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 7b50ab67-1a8d-4cb2-bae8-1ec785e3c8f4)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 14))(sort \ - Typ))((shape(Concave 14))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 4ccb8f1c-c712-445f-96f9-7f746b28e6d8)(shape \ - Convex)))(Secondary((id \ - a90928e0-4dc2-4a78-af9b-e03da908d2f3)(content(Whitespace\" \ - \"))))(Secondary((id \ - 677fa960-7bed-4e08-ba47-baed1f64c898)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 187239a0-573c-4dd4-a576-2c9b9f5663cb)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - eaed48a1-3bee-459b-b7d6-a039e99046a2)(content(Whitespace\" \ - \"))))(Tile((id \ - b925b8b3-6174-407c-8d0a-2c403a01379a)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 314d702f-4312-443a-ab9e-57da31954acc)(content(Whitespace\" \ - \"))))(Tile((id \ - 79584246-2c43-4cdd-a2a1-3ff950621fb5)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 5))(sort \ - Exp))((shape(Concave 5))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - eb20decf-03e9-4149-82e6-d53e2798b851)(content(Whitespace\" \ - \"))))(Tile((id \ - 26e66a82-4bd0-4c87-bd53-fc3ab14145cf)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - db3c2d25-3ecd-4d1e-8a7f-0cb819336a6e)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 78255577-7358-4a9f-b7dc-bcbbc258d278)(content(Whitespace\" \ - \"))))(Tile((id \ - bd3c7ccb-c3a8-400b-bbe3-3b97a27bf604)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - b0902f59-30f9-453f-a11c-f9e0a116cc65)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - c22f8cf5-6891-4ec6-bf3f-d8006cdf2c86)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - c33216ef-f39a-4f55-a05e-5301d5c8d934)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 29bc4824-fa3c-4e22-a1d3-c0f603df933c)(content(Whitespace\" \ - \"))))(Tile((id \ - e8dd7c29-5f0d-4c00-82a0-711e5bacd6f5)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - da788c99-cf8c-425b-9960-ba7e8d1b3ce4)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 2e1ed404-00e5-4130-bd00-654f0cc85eba)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 41a5d82c-8d38-4453-bf1b-0daa6ee4fc98)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - fc64a15a-4665-41bf-8ed8-9f586450d3e4)(content(Whitespace\" \ - \"))))(Tile((id \ - df06f73a-d19f-41f0-a65e-85f120aaa148)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 17834340-4fe8-46df-833b-c36aa06f86ec)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 7f43728c-3ef8-4792-b7e1-d5bf79a8f422)(content(Whitespace\" \ - \"))))(Tile((id \ - 6983e2cd-73a9-44b8-afaa-a3889253a938)(label(\"(\"\")\"))(mold((out \ + cdef49ff-55fe-40e2-9ee9-3fe37707a7c6)(label([ ]))(mold((out \ Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - d26b4c0c-a3f0-46dd-96ca-790b4589772a)(label(Int))(mold((out \ + d34c8e15-d9a8-40a6-a09d-7eba9cc274b4)(label(Attr))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 156f371f-f261-412b-a0be-cd01f8a543fb)(label(,))(mold((out \ + Convex)(sort Typ))))))(shards(0))(children()))))))))(Tile((id \ + 4cafff73-02a5-4ca2-81de-77cb41755dd1)(label(,))(mold((out \ Typ)(in_())(nibs(((shape(Concave 14))(sort \ Typ))((shape(Concave 14))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 88a30c1e-2bd2-4106-b502-ab0183a76da1)(shape \ - Convex)))(Secondary((id \ - 655329c9-8f7d-4667-b71e-dd487c4298ad)(content(Whitespace\" \ - \"))))(Secondary((id \ - ab32ae5e-ca30-489f-be79-3265e7e1ed7c)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 431d79db-199d-4e48-8ff3-b61ac052050d)(content(Whitespace\" \ - \"))))(Tile((id \ - 6ac15623-b03a-4c10-990b-f31481532ee8)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - b3f6b8e8-5b1e-4f84-8891-d5591f5696a4)(content(Whitespace\" \ - \"))))(Tile((id \ - 107bc734-b12c-4d40-91a3-132fcc830136)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 5a9b1828-9af8-4675-a9b9-c056ba86fae3)(content(Whitespace\" \ - \")))))((Secondary((id \ - 1a0fd972-a9c4-419f-964a-8a2b633f33dd)(content(Whitespace\" \ - \"))))(Tile((id \ - bd8afcd8-74a2-4004-8b4a-7026fef058ed)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - c63a1bee-7e32-4ecb-afd0-a724aef0b98c)(content(Whitespace\" \ - \"))))(Tile((id \ - 850fb734-647f-4343-8fbe-52636f374c6e)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - c04c80f3-4064-4c68-acc1-ca5c299bbd77)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - dd4462f2-7949-4878-a142-a2283001ad6c)(content(Whitespace\" \ - \"))))(Tile((id \ - 2cb05f48-5922-48e6-9256-e013f5793cf1)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 339ee181-b96d-46bb-8a43-f3ff8229c30d)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 2061e785-5a18-4a0c-a4de-c1492b30e278)(content(Whitespace\" \ - \"))))(Tile((id \ - c811f868-2b43-468b-94c7-bf3bf1456409)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 1a797da7-7c1d-441f-a6e9-5e4d028213d1)(content(Whitespace\" \ - \"))))(Tile((id \ - b099d96b-e2de-41e8-bf2d-58c1d7f0f0e4)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 5))(sort \ - Exp))((shape(Concave 5))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 584a877b-b2ac-4742-a979-3005537901fb)(content(Whitespace\" \ - \"))))(Tile((id \ - c6077bfc-7116-4a05-ace0-ad4834261381)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - f9963f7f-6ae9-4027-9ede-0b3e538aecbf)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 3f2145ac-3415-4d74-9576-5563fe64e77e)(content(Whitespace\" \ - \"))))(Tile((id \ - 59a6b6f1-80d8-45e4-9b6d-67fb47835905)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - b2efdfc0-231d-41cd-8358-d88497d7c6ce)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - ac6c8e5d-e4f5-4d7d-b0cb-199a2d89e8c3)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 47d49893-385d-47eb-8f79-932412df8120)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 1dffae48-7e03-4120-8147-e8e1c71f051d)(content(Whitespace\" \ - \"))))(Tile((id \ - 4407083a-71c2-4a70-be60-1415bf0a1c57)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - f8cafdb9-5115-454f-8301-cadc935954e6)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 186a5f65-820e-4718-9aaf-89d16d38edb1)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 9bc20274-fb1c-4393-ac92-808ff1b94a79)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 13991968-82b9-4964-90e5-0359a90e47fd)(content(Whitespace\" \ - \"))))(Tile((id \ - 5b8c99b5-3e5a-4934-944a-ffd97749442f)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 80a93c7e-384b-4dd1-b4bb-d9a3911a3ae5)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 1d9f52b1-a850-490f-a292-b47fb7a96138)(content(Whitespace\" \ - \"))))(Tile((id \ - 0816d375-1b2a-460a-a84c-4c5aefa58e81)(label(\"(\"\")\"))(mold((out \ + Typ))))))(shards(0))(children())))(Tile((id \ + 3245988d-5bcc-463b-8dd7-c8f3b58cbf5a)(label([ ]))(mold((out \ Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - e5f9862a-51f0-4e5d-8ae3-dfb0d14e36ac)(label(Int))(mold((out \ + 9988ee4f-99ac-4cb2-b3a5-7fa5e9099f74)(label(Node))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - b758d84b-d213-4a78-9b35-18bf57006721)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 14))(sort \ - Typ))((shape(Concave 14))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 7f9a1bde-138c-48a0-a74d-66c75ed7ab5d)(shape \ - Convex)))(Secondary((id \ - f872865f-46a1-4c40-880e-77586055f9ab)(content(Whitespace\" \ + Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 255cc9f9-6f4c-4cde-8ba7-cf296013756e)(content(Whitespace\" \ \"))))(Secondary((id \ - 8b11e4a1-23b7-4cdc-8cfd-403715695b01)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 8eec57c4-abb0-4311-b0cf-e092c09d06e4)(content(Whitespace\" \ - \"))))(Tile((id \ - 2b6083c1-baec-4672-8a01-f6c99b160e64)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 036ccb48-b246-4a19-9742-35c7ad061176)(content(Whitespace\" \ - \"))))(Tile((id \ - 76481d4c-d3b4-40be-8cea-2cadfe14df89)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - e5c48255-c736-4d2d-891e-fef414217d00)(content(Whitespace\" \ - \")))))((Secondary((id \ - fe4cc3df-ecf8-406c-b9be-0a377d0d7813)(content(Whitespace\" \ - \"))))(Tile((id \ - 8502085a-73f8-4d1e-8e33-1dc2223a63fd)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 1dc44d66-5a48-4ec9-924f-411b68da14c0)(content(Whitespace\" \ - \"))))(Tile((id \ - e3962dae-fd33-47b5-bdf0-82c72409aa11)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 5dd93d5d-b656-45b5-ad37-d49fe0ea23ec)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - a10f02bb-a200-4a01-89a1-39e27bb8162b)(content(Whitespace\" \ - \"))))(Grout((id 281e77a2-ba43-482c-a93e-cfe10259989d)(shape \ - Convex)))(Tile((id \ - 23de4bdc-0af1-497e-83e0-cc5bca1b3855)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - e64bc015-5917-4465-904f-8af5124b9bcd)(content(Whitespace\" \ - \"))))(Tile((id \ - 95ce2ef8-d860-4f18-85d3-9822fc8d459a)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 21cd3096-d858-4ec9-9007-2b1ace927c03)(content(Whitespace\" \ + c3285dd4-5aae-4771-a5a2-c6726306e29e)(content(Whitespace\" \ \"))))(Secondary((id \ - 005f8b6e-a906-429e-beb9-439d29d3a76f)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 7cb7b539-3bb6-4782-a60e-b06fe71c43ac)(content(Whitespace\" \ - \"))))(Tile((id \ - 5be6ea6d-0754-467b-9327-5f1578911f06)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 8698ee48-48d4-4696-994e-17077bb11986)(content(Whitespace\" \ - \"))))(Tile((id \ - c360a076-4dd9-45c7-9db2-2b3c60c0303e)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 5))(sort \ - Exp))((shape(Concave 5))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 6e979b62-9763-4e7d-bdae-d0ffb58c60d8)(content(Whitespace\" \ - \"))))(Tile((id \ - afa9df4b-9fa9-44bc-8ba3-f77e81e75310)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 79d79ed8-f8cf-4f3a-9a1b-475b14198afa)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 27f19fbb-97a5-4ed4-8afc-6de00791df62)(content(Whitespace\" \ - \"))))(Tile((id \ - 3c514af7-2182-4b0a-a4ea-19e14d9fae32)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 88dcb230-1f6b-423b-a117-d05d9d446f3f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 690e9897-85c7-4922-991e-0f942c89dc0b)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 70533e9b-4c3e-4ce6-a86e-384267c022b3)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 8730d036-9d20-45ec-b09c-daaaec74ce03)(content(Whitespace\" \ - \"))))(Tile((id \ - 9f0be8c9-658a-421f-baa1-8a502712cd2c)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 5719931b-6b7d-4eb4-b867-e9eabb4db935)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 4bdc2209-c2eb-4db7-aa63-043d96e5686e)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - a872ee48-4669-43c4-bec3-1186db91148b)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 17434130-d1d1-413e-afa1-6998cc68025d)(content(Whitespace\" \ - \"))))(Tile((id \ - 1bec817d-8b8a-478a-af31-abd16028b864)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - c25eea0b-ab19-4c02-8578-87a0d9ab7f31)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 8e40e986-1715-4e9f-8fa2-8473bf0d1468)(content(Whitespace\" \ - \"))))(Tile((id \ - d634c2c3-b754-4067-b7e2-0f8207ced53c)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - b04350a6-808a-49f8-9e1c-fdc388772171)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - fda74513-a1b9-432a-82b8-e3544b49cb04)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 14))(sort \ - Typ))((shape(Concave 14))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 6fe3a505-3d3a-4db2-a2a0-d6c3be91ca71)(shape \ - Convex)))(Secondary((id \ - 4b53b9aa-7664-41ae-a400-e0dd16b62509)(content(Whitespace\" \ + e8c853d9-daf1-4c21-b04c-4aeb884bb111)(content(Whitespace\" \ \"))))(Secondary((id \ - 92b30817-375a-433b-915a-1c006150cf4c)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 9de55cbb-b6bd-4c57-ae4b-fdad96a970cf)(content(Whitespace\" \ - \"))))(Tile((id \ - afda7489-fbc7-4d45-9a54-ff7dc065dcf0)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - da2edaf2-06f9-49b0-9c52-0692d36feb1e)(content(Whitespace\" \ - \"))))(Tile((id \ - fe5903b2-837a-4bcd-9ef5-1c2428f8a2f1)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - d0cfffab-e8d2-47c3-a805-8674d049622b)(content(Whitespace\" \ - \")))))((Secondary((id \ - dc042fb4-d72a-4240-828f-dd621adbc20b)(content(Whitespace\" \ - \"))))(Tile((id \ - fa4a9b14-7e47-493b-b496-b6e38e830ad8)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - cd361305-ba60-4635-9bfc-33eb27e07c44)(content(Whitespace\" \ - \"))))(Tile((id \ - b14bc419-8dce-4fcf-b8bb-82dd99c04dd2)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 8a72a69a-b947-4054-8244-0388911347f5)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - d44000e9-2c1d-4260-af86-dbef475879a8)(content(Whitespace\" \ - \"))))(Tile((id \ - 6b3a34ab-f687-410d-b155-b117acda0886)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 07f3c1ff-5677-4ba5-bbb2-a9eea1932cd8)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 2b485099-40a8-4b37-991c-c13947cfdcf4)(content(Whitespace\" \ - \"))))(Tile((id \ - cb881fc9-3ea5-4207-aa2b-e23e634e7bc1)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - a415c809-2799-4852-bffa-0cf66d2afaa0)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 45e22326-9dac-4eb5-8835-9da95894cb0b)(content(Whitespace\" \ - \"))))(Tile((id \ - 4b9ba7f3-6159-4020-960c-6c725c45c9c6)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - ce206ee6-866e-4bc8-96d6-ad8a58194a73)(content(Whitespace\" \ - \"))))(Tile((id \ - 1112cc54-8977-49a9-896c-f45d78bc0c01)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 5))(sort \ - Exp))((shape(Concave 5))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 53909189-4422-49c1-863d-60707bf196ae)(content(Whitespace\" \ - \"))))(Tile((id \ - f76561a1-0b5a-4482-8716-e7bb3a4745ea)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - fbe2251e-9b29-4a4f-8f50-eef65cd19f3c)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 4386e434-302f-4fcd-8350-8b97d76d32b0)(content(Whitespace\" \ - \"))))(Tile((id \ - d0b49131-03e8-4b32-a97f-d8903d8b8248)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 0348cc19-de1e-4a2b-ac72-fde8ea77dcf7)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 0d196b4e-3689-4ee2-a64b-0115793d6302)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - a428c920-3772-4cd4-a9c2-9bfeb9e2954a)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 43ffb69a-14e6-40ed-9038-8fd652c5e9f3)(content(Whitespace\" \ - \"))))(Tile((id \ - 6a1223e4-df11-4025-9411-567efebb5f3a)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - d44c175b-4647-4a1d-92b2-95084289ba26)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 3896cd69-a0f5-4781-ae0f-7b90b3924dee)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 0c77a664-2b94-4237-83c2-e3eea15490e0)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 7c706dfb-7bc0-4154-a062-491cdd811036)(content(Whitespace\" \ - \"))))(Tile((id \ - f63ce723-9ddd-41ef-986b-97f097c7bd89)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 74336659-23c4-483a-9d57-8661f8289701)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 6b4a8b16-3250-4f2a-a66f-2c63da6f26ed)(content(Whitespace\" \ - \"))))(Tile((id \ - 5c0e2f73-2e73-48d1-8b68-6c7b20076c9c)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - f9dacf8a-5014-47ce-ad50-8c8deddfc5e4)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 9bed43c0-a447-4aa8-b21f-50da595d633b)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 14))(sort \ - Typ))((shape(Concave 14))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 613b9ada-fe18-4369-b5d9-70d3f1e53514)(shape \ - Convex)))(Secondary((id \ - c1b1ee36-9ce6-47da-95df-3bd2fabb54c7)(content(Whitespace\" \ - \"))))(Secondary((id \ - 3f8dd0d4-b5c3-4a00-be38-632c75924975)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 210586ad-11cb-4fdc-8598-b61597743070)(content(Whitespace\" \ - \"))))(Tile((id \ - 2411959f-40b1-45a2-9a26-78b2966fe759)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 8468a458-1d6e-4688-b961-30b672c7b784)(content(Whitespace\" \ - \"))))(Tile((id \ - 9636cf6a-c36b-4a1a-ae3a-088c1fa1a615)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - af7b6ff1-4b4e-4353-a76a-34423b12789c)(content(Whitespace\" \ - \")))))((Secondary((id \ - df973686-43a2-49e2-afee-a50d321ec924)(content(Whitespace\" \ - \"))))(Tile((id \ - 7b0dc971-354a-4109-8088-cbcb76976b4a)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 2a59225e-0206-442c-8cb7-d473bdefa5f4)(content(Whitespace\" \ - \"))))(Tile((id \ - f035d365-b3db-4c44-b821-75267fa9e43a)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 3e446bad-6497-4089-a3df-cd18e6bf487e)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - d31d780d-e1f7-484a-a4df-948428a8be88)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - c9906747-28ce-448c-b32c-460c1fbfcba0)(content(Whitespace\" \ - \"))))(Tile((id \ - f26eca5e-f6f6-488d-bb10-84359f8cfff6)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children()))))))))(Tile((id \ - f6304be2-2391-41f4-b07c-8577d6723ea6)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - a97d9656-ba87-48a5-9236-16057c6c8db9)(content(Whitespace\" \ - \"))))(Tile((id \ - 668b47f7-32b3-41da-aee9-67e935ad47ce)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 4a6eb5c5-2492-4036-ab60-2ec5236e63c9)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - d59e589c-fe70-49e1-a8d7-616b473740c0)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 14))(sort \ - Typ))((shape(Concave 14))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 4ad3a1e2-6569-4caa-afe4-da4da9fe3d1a)(shape \ - Convex)))(Secondary((id \ - d796506c-840e-408b-a08d-0ad475707e48)(content(Whitespace\" \ - \"))))(Secondary((id \ - 8b2e5ede-ec8b-4884-a35c-bfc00af45040)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 95f218f6-5291-4bb1-939a-d2c9c8dce1c0)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 25d47725-d6db-4a27-adf3-41610dd615b4)(content(Whitespace\" \ - \"))))(Tile((id \ - e450962c-c9cd-4836-af1d-53fa57875af1)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - fd4721fa-fa6f-4ed2-bb0f-54c0a151fec6)(content(Whitespace\" \ - \"))))(Tile((id \ - ff6dbec8-5267-488a-b3b5-80ab0d700c44)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 5))(sort \ - Exp))((shape(Concave 5))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - e5be275a-a1bc-4ade-b700-b97349739cb9)(content(Whitespace\" \ - \"))))(Tile((id \ - 033a3db3-6138-4464-a9b4-c4869961146c)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 94eda17a-ad4c-4393-ae10-8302b53e2d7c)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - c7067830-b673-4dd0-8655-5f4d97c2aabc)(content(Whitespace\" \ - \"))))(Tile((id \ - 4f724995-67b6-4b4b-bb5f-fcf1893a916d)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 67493c89-eb02-46da-a207-711ea889fdd5)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 6e16ad8d-fbee-4c7b-8fe3-80c0dc66454e)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 52bb5578-b1f3-4d68-a8b0-9dab84317f20)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - fd6ae394-4a3b-412c-bc4e-281e3aaeb2f5)(content(Whitespace\" \ - \"))))(Tile((id \ - 894d7f45-79e1-4d32-a6bf-b51d97b102b8)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 25bf6d42-5a8f-4449-a3bc-ad9bbfbde8f3)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 65967ee6-68c2-4430-bc4f-4fe243a7f89c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - bf5cdf3f-9ed1-4e43-bd7a-833e2c043ab4)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - b6207fe7-e2ff-440f-b49d-f772f54a8a4d)(content(Whitespace\" \ - \"))))(Tile((id \ - c5fd7629-2245-4de3-ad4a-e43577f378d4)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 8b77b9a3-da5a-49d3-89d9-2389716d38a9)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - da6cf85e-784b-4688-b4bb-a5de6895cb9e)(content(Whitespace\" \ - \"))))(Secondary((id \ - c9436d2f-9525-4014-81e0-13627c84fed3)(content(Whitespace\" \ - \"))))(Grout((id f72daea4-0e1c-46d4-a577-11dc663c4c3c)(shape \ - Convex)))(Tile((id \ - 3f04215c-9c0b-418a-9fed-5a345edc51ae)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 4505142a-ee63-4255-b9a1-45967d536e7d)(content(Whitespace\" \ - \"))))(Tile((id \ - 850f1156-171d-450d-a697-2d7426fef890)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 4c43eaeb-6058-41ea-9175-5593ce489446)(content(Whitespace\" \ - \")))))((Secondary((id \ - 4ac2e2d2-5e2c-483a-8419-90979d2acb87)(content(Whitespace\" \ - \"))))(Tile((id \ - 45721068-5191-41c0-97d7-0ecec60d398c)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - a10f8fd9-bcf7-44d9-aeef-b09b800ef4e5)(content(Whitespace\" \ - \"))))(Tile((id \ - 72f6c14b-dbe3-4b2a-bc68-c3b77326634e)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 9a531af1-8ffc-43f1-b926-4dc9f2c11e75)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 1e8944ec-aed0-4ae0-9f09-dcadc92e3a1e)(content(Whitespace\" \ - \"))))(Tile((id \ - ef3da217-434a-4bd8-8fe9-d314eeebd0b2)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 8fd1e860-a469-4bbb-9ba0-a21f39f8a73a)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 34aea284-bd45-4f35-a7ca-dabfac1a7c40)(content(Whitespace\" \ - \"))))(Tile((id \ - 9b3e623d-741c-4c2c-8792-9e1cb669ec9b)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 7ea12851-27c9-438a-a64e-60d23f7d2fdb)(content(Whitespace\" \ - \"))))(Tile((id \ - 68c7ad7c-cb45-4e5e-95fb-62e8b057459a)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 5))(sort \ - Exp))((shape(Concave 5))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 4b02ca6c-e206-4d48-ac79-e586dacf95c2)(content(Whitespace\" \ - \"))))(Tile((id \ - 590fbd3a-dc13-4b98-8b16-cff8ede68c0c)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 855f8c1d-1b60-4b7d-b241-00508971446a)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 6d3a220e-5996-4892-8c80-3a1a2f0db1f2)(content(Whitespace\" \ - \"))))(Tile((id \ - 93989e5e-b66c-4af9-b823-b4c08c5f4fc5)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 424566f7-fea8-497b-be94-cecbf4bad21f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 870675ce-55e5-49ca-a65b-dddca83a5ae6)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 1187b178-0c2a-43d5-a21d-e143d9341953)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 0cb654fb-692c-45d3-ad49-91eb6b083f7f)(content(Whitespace\" \ - \"))))(Tile((id \ - 40aacc49-f016-4522-8928-3acda44d7542)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - a2a6aadf-7f5b-41f7-8171-6779ec582301)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - a8d850ee-6980-4d7b-92f3-36da569100ce)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 61c23189-a6bd-423f-80d0-1835a313ccf1)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - db64bd98-a11e-4305-b7f3-b452b1888ba7)(content(Whitespace\" \ - \"))))(Tile((id \ - d67f7404-2ac5-4079-ae12-a9ed9fb85d31)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - f69341bf-96a7-4961-9a5c-2d3f200f22fc)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 20e3841b-6918-428c-a2af-1bad8782d4bf)(content(Whitespace\" \ - \"))))(Secondary((id \ - b724bbf3-7f25-4669-ad55-bb9bbf4e8115)(content(Whitespace\" \ - \"))))(Grout((id cf84f16e-f166-4b51-b4e6-049b1ce1dec9)(shape \ - Convex)))(Tile((id \ - 0abbf0b4-2348-4efb-aacb-52012081dc37)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - d46fa747-5e85-489d-9d69-059a7f07f977)(content(Whitespace\" \ - \"))))(Tile((id \ - a0a02c22-c092-4ceb-b17a-450331c8d17f)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 639db5f8-2ee5-4660-b6d4-5852f63d6b99)(content(Whitespace\" \ - \")))))((Secondary((id \ - 6fa1692e-f4dc-47f6-904a-f6efc37a65b2)(content(Whitespace\" \ - \"))))(Tile((id \ - cdf83aa5-2b6b-4e42-97ab-f6c922a3b3f6)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 3fe95f8a-f9d1-40c6-bb91-d31bea6aafcc)(content(Whitespace\" \ - \"))))(Tile((id \ - a1ebc17b-a578-4ebd-bda3-8fcdaa59d3eb)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 9d1ddd32-a36a-4514-970b-4d6651f8c4ba)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 51f2df2f-b75e-44fe-abdf-5f5e0179e334)(content(Whitespace\" \ - \"))))(Secondary((id \ - 67fb4d36-10b1-44d6-a3e7-21dd1060c696)(content(Whitespace\" \ - \"))))(Grout((id a7fb5a73-2ad4-45be-9217-a15421b94b51)(shape \ - Convex)))(Tile((id \ - 17a41687-b08f-4ff2-98af-2fea47f95f24)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - c406ea25-c689-4fc6-9a0b-a86d384636bf)(content(Whitespace\" \ - \"))))(Tile((id \ - 16ca4023-75c3-4218-878c-8f629b0dedd4)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - d926a732-ae87-4767-a100-e9858bd52605)(content(Whitespace\" \ - \"))))(Secondary((id \ - b640f897-88a9-4dce-b9e3-7473d6e85e22)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - f0f645d4-8e99-42a1-ac9e-69bd4f9cd1b5)(content(Whitespace\" \ - \"))))(Tile((id \ - 35053850-23f5-4acd-bf45-2f1258d00b66)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - ce99772e-caa1-4d3f-ac59-6d4ad3a887dd)(content(Whitespace\" \ - \"))))(Tile((id \ - 963ab1b4-4cfb-4718-bb45-9dabf362279b)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 5))(sort \ - Exp))((shape(Concave 5))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - e58ebe60-aa42-4470-925b-062afaa8f755)(content(Whitespace\" \ - \"))))(Tile((id \ - f9dc59ff-5f53-4d2b-8633-516f300f2be5)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - d66d2f4c-5c43-4cbe-9fcc-b9839b8c81b3)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 357f7de3-fa55-47cf-a63e-546895193402)(content(Whitespace\" \ - \"))))(Tile((id \ - d85833ba-41c6-4a25-9b63-4b8b3a2fc33c)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 09900b61-5baf-4d89-a9d0-a211fcdbaf30)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 3a620d4b-f98c-4e09-90e2-edc51467b958)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 54ed2b3a-d7ed-46a5-b5e9-6062e3d706b4)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - fa59e47e-78df-4f99-9887-513007871ab6)(content(Whitespace\" \ - \"))))(Tile((id \ - 20aed684-0a33-4837-9c91-b6f388a392a4)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - c3ec9096-55e5-4952-a2dc-c38d9a1934e3)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 4a957aeb-2c1f-4f0a-8186-0e897c718626)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 0068b781-4219-4451-8db5-cae8ea87da2d)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 7748ffc0-75ef-428d-9b58-4580dd7c3b78)(content(Whitespace\" \ - \"))))(Tile((id \ - 5b1744c1-7cc5-4cab-95c6-c805bfb455bd)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - a9b7c3da-34fd-4c13-ba76-8d12eaf8b013)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 668fe660-3748-42f2-8750-1d9233647860)(content(Whitespace\" \ - \"))))(Secondary((id \ - 792a7fe1-914a-41ec-8e3c-6946087ccb17)(content(Whitespace\" \ - \"))))(Grout((id 09163549-d4c0-4420-8fde-0ee1b95a3e00)(shape \ - Convex)))(Tile((id \ - f21a218e-97b1-4cb9-a0a5-e5f1548d6c1f)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 1b95ea63-2f0a-4cd3-80ae-4e148633c82c)(content(Whitespace\" \ - \"))))(Tile((id \ - c1b4fac6-c1d1-42b0-b94e-1f77eef60360)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 661f88ef-101a-4467-875d-74cc19f532ff)(content(Whitespace\" \ - \")))))((Secondary((id \ - 0c5f4384-d374-490e-baf6-73c6fba62014)(content(Whitespace\" \ - \"))))(Tile((id \ - b0a61c54-5ce1-4d07-b2aa-0c24d8d47304)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 03c97a1e-5e63-43ff-9f90-9fb5071cefc4)(content(Whitespace\" \ - \"))))(Tile((id \ - a269e135-5e34-40cd-bbaf-5d7ca7264d07)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 7085914d-118c-4596-8040-01e10f0c7a3b)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 38face3d-4e38-4679-b334-0641b60b839c)(content(Whitespace\" \ - \"))))(Tile((id \ - 21029f89-c5b9-4076-aa4c-f2dcfcd21835)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 705b9a88-adf6-46d4-b9a8-5bbc2648d9aa)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 75f847fe-c467-438e-b118-f885dfe12d11)(content(Whitespace\" \ - \"))))(Tile((id \ - 48befa9f-1d82-43a0-8a9f-b4a551b4f538)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - f8e72f0b-089c-4495-a457-0d036c53b27d)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - b6019a27-ed9d-46e4-a071-aac0a9f7c1fa)(content(Whitespace\" \ - \"))))(Tile((id \ - ee76ee53-6f9c-4531-92ff-d337918caa29)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 776ef91f-ca17-4184-a363-23134f2301f2)(content(Whitespace\" \ - \"))))(Tile((id \ - 7f03b0d0-5251-4546-ae2d-c920f979d361)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 5))(sort \ - Exp))((shape(Concave 5))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - a84bf77d-1b35-4af4-99e4-57dd207e2da7)(content(Whitespace\" \ - \"))))(Tile((id \ - 8d0a816c-0467-461b-addc-9f0d300a86bb)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 7e60b9c4-2c25-4122-9031-34457a0806ff)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - ddbb24ed-5566-4c35-95b5-860a12dd5248)(content(Whitespace\" \ - \"))))(Tile((id \ - 0cf8366e-ca71-475b-8399-e9d2a34c9a0f)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - a0c66c4d-d74c-4be8-b2e4-964ebf05472e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 44160bdc-9ad4-44a8-89c4-6f50038919a0)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - b34e08c3-7662-496c-96df-e9111bd1f643)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 4853538d-a2c9-4fbd-ad15-1d72ee2b3cc4)(content(Whitespace\" \ - \"))))(Tile((id \ - 56533393-9f93-4caa-80e8-59db930e67e1)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - d2ca34fe-412e-47e4-b04a-41ad670be882)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 94500cf2-356a-48b2-ac6b-86ccaab5b10a)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 36893a4d-0c01-4b09-a92c-59fc51e0fe57)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - ebd1fe9e-621b-49d5-a3a1-fd8d35b79b76)(content(Whitespace\" \ - \"))))(Tile((id \ - 46873372-79aa-46af-8ad8-a39a129c39e0)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 54a7084b-48ee-4a0f-8ef8-147037d2a9c7)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 40a726b4-63f5-477b-a0bd-e2b03a68185c)(content(Whitespace\" \ - \"))))(Secondary((id \ - e2bb9e20-2b1a-4334-960e-72614d04a5a4)(content(Whitespace\" \ - \"))))(Secondary((id \ - 38119e9c-e593-47bd-88f3-c67c7f07eada)(content(Whitespace\" \ - \"))))(Grout((id 1039458f-6394-4c7f-b3fa-21bf51f0f87f)(shape \ - Convex)))(Tile((id \ - 6dc643c3-18a1-437f-88ae-150eb3ac249f)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - ec6c3bba-8579-42ad-b386-2c2ce60b5abf)(content(Whitespace\" \ - \"))))(Tile((id \ - f95ad0a8-1d39-4985-9d77-a9a93b7efeb8)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 689ea5ce-5b0e-4a75-b13f-b09246c6a669)(content(Whitespace\" \ - \")))))((Secondary((id \ - e920b192-de5e-4855-ace7-75ba3208fddc)(content(Whitespace\" \ - \"))))(Tile((id \ - b6495520-5564-40e9-bbea-d38a193c72ac)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 0e052a09-7aba-466c-bfb4-81468b12f9fc)(content(Whitespace\" \ - \"))))(Tile((id \ - 2daa0ef8-d29d-48ae-a138-61fc401ad950)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - be490e19-a602-45dc-b654-6715e590f251)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 22e34140-165f-4fac-9ec4-d8e7ab2a3c6f)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - e768b6ff-d460-4807-8e1a-576f981d6fe0)(content(Whitespace\" \ - \"))))(Tile((id \ - 76dde3d8-37bc-4d08-adad-a0c2bb6ca9b9)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children()))))))))(Tile((id \ - 7e067617-dee0-4e7e-9bef-685a9c58dd46)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 28a0ef59-40cb-436c-b2f4-ca6fcfcaa5db)(content(Whitespace\" \ - \"))))(Tile((id \ - 8da29f2d-2d2b-46e2-94b6-aabbaf1d97ae)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - f5353b7f-ffe4-4905-a0dc-1ccd0ae837d1)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - f30a6544-8281-4ce8-84f0-74b01fee295e)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 14))(sort \ - Typ))((shape(Concave 14))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - 36b63b80-40b3-4279-9a52-c4ebc96ef1b9)(shape \ - Convex)))(Secondary((id \ - 90dac9a3-cfd2-40e8-bc28-60071381900c)(content(Whitespace\" \ - \"))))(Secondary((id \ - 763d28e2-674b-430d-b1c0-542d17ea7b09)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - a8eed44c-5714-46bd-8ba6-e588a046a98e)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 5a58bc3a-ca4b-4d00-81bd-45b88acc6ab8)(content(Whitespace\" \ - \"))))(Tile((id \ - 92f7f67d-26e0-425d-8322-757c09aa842f)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 2d14adb7-a543-4fbe-8716-dde2b18f1cb5)(content(Whitespace\" \ - \"))))(Tile((id \ - 0a8920a0-6a21-4b0d-af8b-b051f64a1706)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 5))(sort \ - Exp))((shape(Concave 5))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 60571abd-7342-438a-bd31-f359378027cd)(content(Whitespace\" \ - \"))))(Tile((id \ - c8fda687-4976-4c47-a208-15ebb62dffdb)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 0b01d85b-d751-4392-824d-6b52b3b6aea1)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 7860cae2-6f31-4aa9-b131-39cec4057ea0)(content(Whitespace\" \ - \"))))(Tile((id \ - 0ca76690-1cf4-41c4-8da5-d4360b4f861f)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 1fe1d913-15ab-4a15-a3f3-81ea684b4397)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - ff2435e9-c2e0-4316-ac4c-5fe3d2fb687e)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 6d0b606c-d057-42b3-9d3d-33679988a5a0)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 617a93e3-6dd3-46e4-9def-86803cd285d2)(content(Whitespace\" \ - \"))))(Tile((id \ - b7f7bb7b-95dd-4cb0-9f3d-b119c4e00b2f)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - c9999f9e-81e5-457f-bcf4-6fe7400c3e28)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 726577bf-09ce-4f2e-beae-8218ea89f6ef)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 52fbcb6c-95d9-4124-85d3-f3ce3a042329)(content(Whitespace\" \ - \"))))(Secondary((id \ - 177b5c85-7c56-4a83-a5f7-51cdd52cbba7)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 12f1f2ad-fae3-4ca3-a8fe-fa6fe4b1b167)(content(Whitespace\" \ - \"))))(Grout((id 2b4b41a7-f15e-4558-a584-c0cdce779d18)(shape \ - Convex))))))(ancestors())))(caret Outer))"; - backup_text = - "# Internal Regression Tests: Function literal casting #\n\ - # None of the below should trigger runtime exceptions #\n\n\ - let g: -> = fun _ -> 9 in -g(1);\n\n\ - let f = fun b -> b && true in f(true);\n\ - let f = fun b: -> b && true in f(true);\n\ - let f = fun b: Bool -> b && true in f(true);\n\ - let f: = fun b -> b && true in f(true);\n\ - let f: = fun b: -> b && true in f(true);\n\ - let f: = fun b: Bool -> b && true in f(true);\n\ - let f: -> = fun b -> b && true in f(true);\n\ - let f: -> = fun b: -> b && true in f(true);\n\ - let f: -> = fun b: Bool -> b && true in f(true); #ERR#\n\ - let f: Bool -> = fun b -> b && true in f(true);\n\ - let f: Bool -> = fun b: -> b && true in f(true);\n\ - let f: Bool -> = fun b: Bool -> b && true in f(true);\n\ - let f: Bool -> Bool = fun b -> b && true in f(true);\n\ - let f: Bool -> Bool = fun b: -> b && true in f(true);\n\ - let f: Bool -> Bool = fun b: Bool -> b && true in f(true);\n\ - let f: -> Bool = fun b -> b && true in f(true);\n\ - let f: -> Bool = fun b: -> b && true in f(true);\n\ - let f: -> Bool = fun b: Bool -> b && true in f(true); #ERR#\n\n\ - let f = fun b -> b && true in f(true) && true;\n\ - let f = fun b: -> b && true in f(true) && true;\n\ - let f = fun b: Bool -> b && true in f(true) && true;\n\ - let f: = fun b -> b && true in f(true) && true;\n\ - let f: = fun b: -> b && true in f(true) && true;\n\ - let f: = fun b: Bool -> b && true in f(true) && true;\n\ - let f: -> = fun b -> b && true in f(true) && true;\n\ - let f: -> = fun b: -> b && true in f(true) && true;\n\ - let f: -> = fun b: Bool -> b && true in f(true) && true;\n\ - let f: Bool -> = fun b -> b && true in f(true) && true;\n\ - let f: Bool -> = fun b: -> b && true in f(true) && true;\n\ - let f: Bool -> = fun b: Bool -> b && true in f(true) && \ - true;\n\ - let f: Bool -> Bool = fun b -> b && true in f(true) && true;\n\ - let f: Bool -> Bool = fun b: -> b && true in f(true) && \ - true;\n\ - let f: Bool -> Bool = fun b: Bool -> b && true in f(true) && \ - true;\n\ - let f: -> Bool = fun b -> b && true in f(true) && true;\n\ - let f: -> Bool = fun b: -> b && true in f(true) && true;\n\ - let f: -> Bool = fun b: Bool -> b && true in f(true) && \ - true;\n\n\ - let f = fun a, b -> a + 1 in f(1, 2);\n\ - let f = fun a: , b -> a + 1 in f(1, 2);\n\ - let f = fun a: Int, b -> a + 1 in f(1, 2);\n\ - let f = fun (a, b): (Int, ) -> a + 1 in f(1, 2);\n\ - let f: = fun a, b -> a + 1 in f(1, 2);\n\ - let f: = fun a: , b -> a + 1 in f(1, 2);\n\ - let f: = fun a: Int, b -> a + 1 in f(1, 2);\n\ - let f: = fun (a, b): (Int, ) -> a + 1 in f(1, 2);\n\ - let f: -> = fun a, b -> a + 1 in f(1, 2);\n\ - let f: -> = fun a: , b -> a + 1 in f(1, 2);\n\ - let f: -> = fun a: Int, b -> a + 1 in f(1, 2);\n\ - let f: -> = fun (a, b): (Int, ) -> a + 1 in f(1, 2);\n\ - let f: ( , ) -> = fun a, b -> a + 1 in f(1, 2);\n\ - let f: ( , ) -> = fun a: , b -> a + 1 in f(1, 2);\n\ - let f: ( , ) -> = fun a: Int, b -> a + 1 in f(1, 2);\n\ - let f: ( , ) -> = fun (a, b): (Int, ) -> a + 1 in f(1, \ - 2);\n\ - let f: (Int, ) -> = fun a, b -> a + 1 in f(1, 2);\n\ - let f: (Int, ) -> = fun a: , b -> a + 1 in f(1, 2);\n\ - let f: (Int, ) -> = fun a: Int, b -> a + 1 in f(1, 2);\n\ - let f: (Int, ) -> = fun (a, b): (Int, ) -> a + 1 in \ - f(1, 2);\n\ - let f: (Int, ) -> Int = fun a, b -> a + 1 in f(1, 2);\n\ - let f: (Int, ) -> Int = fun a: , b -> a + 1 in f(1, 2);\n\ - let f: (Int, ) -> Int = fun a: Int, b -> a + 1 in f(1, 2);\n\ - let f: (Int, ) -> Int = fun (a, b): (Int, ) -> a + 1 in \ - f(1, 2);\n\ - let f: -> Int = fun a, b -> a + 1 in f(1, 2);\n\ - let f: -> Int = fun a: , b -> a + 1 in f(1, 2);\n\ - let f: -> Int = fun a: Int, b -> a + 1 in f(1, 2);\n\ - let f: -> Int = fun (a, b): (Int, ) -> a + 1 in f(1, 2);\n\ - \ \n\ - \ "; - } ); - ( "ADT Statics", - { - zipper = - "((selection((focus Left)(content())(mode \ - Normal)))(backpack())(relatives((siblings(()((Secondary((id \ - 28357f24-0bee-423a-8233-69bbb2cfd787)(content(Comment\"# \ - Internal Regression Tests: ADT Statics #\"))))(Secondary((id \ - da7d803e-5f91-4afc-b529-fbd0ec0eaafd)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 505df48d-38fb-4b63-8962-c4aa88f70e50)(content(Comment\"# All \ - commented lines should show errors as described \ - #\"))))(Secondary((id \ - 70e54a1b-8e3f-4e8a-a0f2-f132102dcca2)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 0c97d2fe-e4fa-4699-889c-26f406fc97b7)(content(Comment\"# No \ - other lines should show errors #\"))))(Secondary((id \ - d99dce2d-ee04-4e13-bcef-375f0608d8c9)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - e13aaf5d-7c93-429f-93ff-47ddd45609b7)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 545d83f6-f159-4fe2-9fb6-f9514dd064b8)(content(Comment\"#type \ - definitions: no errors#\"))))(Secondary((id \ - b8fe9b8a-9e2e-4774-8e8d-c5202e4d567c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 54e23d33-2b44-4416-baa9-b82dd9d49fcb)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - db084c97-20fe-487e-8d52-80bc76bd2ede)(content(Whitespace\" \ - \"))))(Grout((id 7273a907-7f31-458a-b84a-ea0a5f3bcab0)(shape \ - Convex)))(Secondary((id \ - 1b874263-3f04-4e50-8ea6-a6a6631c789d)(content(Whitespace\" \ - \")))))((Secondary((id \ - 540a9dc5-a060-46f2-987e-8c45d8a3d040)(content(Whitespace\" \ - \"))))(Grout((id 99c6cef7-771c-4b30-afc6-648a2a9b52eb)(shape \ - Convex)))(Secondary((id \ - 67a07a9c-618f-4947-87a0-229733d058e4)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - e7b21ff9-855f-4af8-b136-61cdf82cb732)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - bbd37bb2-75f6-4660-bc03-060f3fcb88d3)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 28baacf9-b184-4689-89d2-5898e15b4425)(content(Whitespace\" \ - \"))))(Tile((id \ - a215e8bc-91aa-4d2a-864f-8779cd29c147)(label(SingleNull))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 5f8c6a8b-efdc-4ae1-a9e1-34ce7faad82f)(content(Whitespace\" \ - \")))))((Secondary((id \ - 6689bd94-617b-47c9-807e-08b9cf84b8c5)(content(Whitespace\" \ - \"))))(Tile((id \ - f98d916f-8631-461e-a64e-95d75cccc6fe)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape(Concave \ - 10))(sort Typ))))))(shards(0))(children())))(Tile((id \ - ae3f938a-935c-46ea-b4ca-e8fb41f6e001)(label(One))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 50a7b73d-2fc8-4357-ae31-b83c1f5bd467)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 41b177e8-90f3-4af9-8186-cda93d46bc46)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 5d191c2c-9036-42a0-bdcb-92b382e55d8d)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 7a6b25d9-e7d3-4b55-b5e5-404c4c2ae4f5)(content(Whitespace\" \ - \"))))(Tile((id \ - a7de9e4b-174d-4958-9e7f-7d36445348e0)(label(Single))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - d45238b2-8b1d-4f18-a077-3827151dc45e)(content(Whitespace\" \ - \")))))((Secondary((id \ - 0425820e-04bd-4c29-8adb-4124b681d57f)(content(Whitespace\" \ - \"))))(Tile((id \ - 01b63189-aee2-41a6-aa07-ffd4bddc1a49)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape(Concave \ - 10))(sort Typ))))))(shards(0))(children())))(Tile((id \ - 0f58b71b-37d1-4270-8ce3-21eeb577bfb7)(label(F))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - fa9a4146-4da4-469f-a26e-81cf3f45b2ae)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - d110cf17-d811-464f-8726-e6dfc9f8b6bb)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - a109dce3-009c-4f4c-aefe-7cab4536d392)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - b7cdb552-04a7-48b4-9cfb-998bf9d18055)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - f54c8ce4-d565-4704-b224-8e252cb8cbd3)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - cfdef333-8e4e-4e5e-8fa9-58da5cb2bbdd)(content(Whitespace\" \ - \"))))(Tile((id \ - e0846c5c-ed48-4e17-8047-68e9d0bfd72d)(label(GoodSum))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 16a4fa3b-9c47-432b-baa5-e268c973baf5)(content(Whitespace\" \ - \")))))((Secondary((id \ - 967321aa-0d95-49e6-89e0-9d388d6da469)(content(Whitespace\" \ - \"))))(Tile((id \ - 149bf644-2adc-49e6-8d53-81b03ecf4d49)(label(A))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 6c0d12c7-17a4-44f0-a149-19aa3f780d21)(content(Whitespace\" \ - \"))))(Tile((id \ - 7294404d-be7d-4cb7-ab89-fa2b0d214512)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 10))(sort \ - Typ))((shape(Concave 10))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - faac7e2c-4caa-46ff-b72c-fd1b78b76f75)(content(Whitespace\" \ - \"))))(Tile((id \ - 4e5dcc2f-b3f6-43fb-a906-5184199c86df)(label(B))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 37516c52-36a1-4c80-99b1-a0d857c1dda7)(content(Whitespace\" \ - \"))))(Tile((id \ - 86c8fa45-1c54-4752-9ffc-c889dc6a8e52)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 10))(sort \ - Typ))((shape(Concave 10))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 45cd1be9-10c7-48e1-979e-6549e563f9b9)(content(Whitespace\" \ - \"))))(Tile((id \ - 2a3ba33f-56e2-4b87-99c7-733ca87a6dce)(label(C))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - ee980372-17e2-419f-bb0f-a575cf8e7fc2)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - d95d1829-297a-4db4-8e52-fea95862c74a)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 6bc9a1c5-257c-4cd4-80b8-236a3ae60b01)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - ca4f5031-e534-43f7-87b2-d78f8cda1acf)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - e7ed2a86-c44c-4a31-ba4b-608de76fd6a2)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 69656e33-f418-48a4-a438-00db04b42210)(content(Whitespace\" \ - \"))))(Tile((id \ - 3218a5c6-c361-4146-be25-3bfb3d172ea3)(label(Partial))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 0e2357e6-9d96-42ef-bef6-f72319502c77)(content(Whitespace\" \ - \")))))((Secondary((id \ - 2b2cdc66-752f-428d-965f-1a79b080ea98)(content(Whitespace\" \ - \"))))(Tile((id \ - b8972117-909f-48c0-8f59-7a51b7cf5db7)(label(Ok))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - febdbbdb-4585-4803-9e84-bcd3304ffb1f)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Grout((id \ - c7b12338-0a19-4fe2-820d-1cb076b6dca3)(shape \ - Convex))))))))(Secondary((id \ - eab5c8f9-998a-4cc3-b3d7-f453b90dbe8e)(content(Whitespace\" \ - \"))))(Tile((id \ - 319b516d-0c4c-4a26-976b-bf76cd5c0ada)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 10))(sort \ - Typ))((shape(Concave 10))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 24ae6999-d0e6-426f-86d6-dc39fa14c86a)(content(Whitespace\" \ - \"))))(Grout((id 5fd021dd-31d5-4767-8e92-1c1526e9d3c0)(shape \ - Convex)))(Secondary((id \ - 7448de20-a1c9-4b99-8495-60e37df82175)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - ed8aed8b-a1d6-438b-a7a4-ed310d325dbb)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 10a6df79-02e4-412b-b1d7-f4690c81ccbf)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - d77a36ab-5548-4eca-8db5-66b91ba8b3f3)(content(Whitespace\" \ - \"))))(Tile((id \ - 8a111ed2-1c78-4c10-bac2-2e855f655112)(label(DoubleAlias))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 1b510d24-fb50-4d72-982c-3b584ef54135)(content(Whitespace\" \ - \")))))((Secondary((id \ - 8c5b5b7c-6f48-4730-a1cd-23ad4911baae)(content(Whitespace\" \ - \"))))(Tile((id \ - 765c6668-f5f8-4fa6-8c23-46cbf50a2169)(label(GoodSum))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 8ab02e4d-1f40-4182-b669-3002e91971d8)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 2f94abb3-22ba-49ed-b336-378757f564dc)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 8d517f36-a20a-4cd2-a280-8a24d56a2b25)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 9ed73f0a-2269-4eb6-a371-a8710e4f9a1e)(content(Whitespace\" \ - \"))))(Tile((id \ - d78a7e50-97e1-4487-94c5-7620f7057b62)(label(VerticalLeading))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - d0fa2c86-1a80-4489-8dad-0864eac411ce)(content(Whitespace\" \ - \")))))((Secondary((id \ - c550f4d9-2252-459d-881c-1ea2d5113920)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 48ec824c-86ef-419c-bea4-01af75ab209c)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape(Concave \ - 10))(sort Typ))))))(shards(0))(children())))(Secondary((id \ - a3f051cd-9ac0-4f5e-a687-7436f35311fa)(content(Whitespace\" \ - \"))))(Tile((id \ - 110f994d-9f94-435a-a662-650195526a66)(label(A))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - de227626-c88d-4f8e-9b7d-8d239bc6b7a2)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - b7b57d94-9f0b-41ff-8805-383757288c54)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 10))(sort \ - Typ))((shape(Concave 10))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - e76c4cf4-6b52-4f61-8613-8418c2b54e04)(content(Whitespace\" \ - \"))))(Tile((id \ - 4de6fd61-26fa-4770-842d-f6c40b502f33)(label(B))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - e0d70e07-aba6-40e3-897f-ac02915c5454)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 375f169b-7f67-4190-b980-3292822c286a)(label(GoodSum))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 226a9d4c-109f-4813-aee7-94e2ad45fae2)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - a38444fb-d2c4-470c-b660-47c92bb89991)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 10))(sort \ - Typ))((shape(Concave 10))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - c587c505-748c-41c1-8279-71522de8cec6)(content(Whitespace\" \ - \"))))(Tile((id \ - 974020d7-e351-4812-9397-5018920e0a45)(label(C))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - d080e933-5349-49b7-b35b-2e5f24d3b007)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 78af8147-201f-46f3-b58d-4bcf7bfdf0bf)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - d873c642-102b-4997-bac4-f1f0b75a1624)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Tile((id \ - 3676c2d8-c573-497e-b7cb-d61cae5b5da6)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - f1e2ccb2-8186-4934-a292-57abb525d91d)(content(Whitespace\" \ - \"))))(Secondary((id \ - 546c1a20-e58f-4db5-88be-c29ff7e117e2)(content(Whitespace\" \ - \"))))(Secondary((id \ - 2f7eeab0-c2c0-462f-8a7f-6dce1a9479ec)(content(Whitespace\" \ - \"))))(Secondary((id \ - cc3e6a4c-73de-4450-97b7-d622e501a65d)(content(Whitespace\"\\226\\143\\142\")))))))))(Secondary((id \ - 50745623-8820-453c-bc0f-62ef453d38f0)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - f71ed59f-f6c7-4b69-a8c4-e12a77a9b82e)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - dec0a291-91c0-413e-942e-2cf40b652dcf)(content(Comment\"#incorrect \ - or incomplete type definitions#\"))))(Secondary((id \ - ff85a206-092e-4b47-8496-75171a46cb21)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 2a29b5e5-296b-423e-8876-ea638cf99c39)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 88097564-6cb6-40df-9dbf-8726f15e8023)(content(Whitespace\" \ - \"))))(Tile((id \ - bc56b1af-baac-4afa-927b-5b260ef9528d)(label(badTypeName))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 06bec89d-de70-42d6-85ac-73cd1ddc86c7)(content(Whitespace\" \ - \")))))((Secondary((id \ - 46400187-d912-4ba4-a220-7326db747f86)(content(Whitespace\" \ - \"))))(Grout((id 71cde0f8-e7ce-4994-9f73-381e4eeb7e3d)(shape \ - Convex)))(Secondary((id \ - bbd999fc-99d6-4022-beec-290ae2883829)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 06fea02f-7527-4678-b8d4-23eb2895fced)(content(Whitespace\" \ - \"))))(Secondary((id \ - b76fdcc0-e6df-4bc1-a494-6c22207a0088)(content(Comment\"#err: \ - invalid type name#\"))))(Secondary((id \ - 8557100e-b121-44a6-9904-88d04e14afe2)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 037ed10b-ec8f-4e74-91ab-8b5ac06d43e4)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - d07a788d-e8bd-4292-815c-c1b2aeb50ce8)(content(Whitespace\" \ - \"))))(Tile((id \ - 0fbc61fe-ea41-465c-8229-5c191b82ad22)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Grout((id \ - bd55016e-8768-4ffa-9206-24cd3b8ea73b)(shape \ - Convex)))(Tile((id \ - 5e281346-8c28-4270-9131-df8eadaa2d7a)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - d70d0656-a8c7-4daa-9f47-f63a09e7581a)(content(Whitespace\" \ - \"))))(Grout((id f61afea0-f3fd-4f9c-8917-0aa5e600782e)(shape \ - Convex))))))))(Secondary((id \ - 6f6d1712-ed54-43e9-bfcc-2aca0a93ceca)(content(Whitespace\" \ - \")))))((Secondary((id \ - d2d9a292-469b-401f-b5bc-525561ca82da)(content(Whitespace\" \ - \"))))(Grout((id 18cb0921-300c-4001-8c45-e4950ce6b20b)(shape \ - Convex)))(Secondary((id \ - 4dec9e0d-5df5-4954-8107-2d3a56728db3)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - e16bf39c-26cb-47fe-89f4-33a1a9970651)(content(Whitespace\" \ - \"))))(Secondary((id \ - d950efef-1383-4e50-a303-aff3be6cfa78)(content(Comment\"#err: \ - invalid type name#\"))))(Secondary((id \ - df4aa51e-b18e-4cd1-98f1-446b1c9d721d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - e93edd08-38c1-4e34-afd9-33525f28d292)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - e3a09bfa-b86c-4849-be8b-7c9929b754ed)(content(Whitespace\" \ - \"))))(Grout((id bb1bee1a-abe7-47aa-993f-85fa842b6fbd)(shape \ - Convex)))(Secondary((id \ - e5a4c884-61e0-46e0-ba51-aa8027c03b75)(content(Whitespace\" \ - \")))))((Secondary((id \ - b245fa5f-585b-4a67-94e2-2510e636670e)(content(Whitespace\" \ - \"))))(Tile((id \ - 52ac5bf6-1b0b-4acf-9c46-e099e018c4ee)(label(badTypeToken))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 7c99b199-bb9f-42d3-b28e-3940e92a3533)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 248b83b9-3ed2-4889-b3a9-4728d8345ad7)(content(Whitespace\" \ - \"))))(Secondary((id \ - a561938e-1e8d-485f-92f5-0976d7377be1)(content(Comment\"#err: \ - invalid type token#\"))))(Secondary((id \ - d7d0d95b-1e27-492f-91a5-97176f237c71)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - bbc7927d-aa81-4f04-8190-92349f23e545)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 5c927f79-7c3e-49bc-afc5-355081fc688e)(content(Whitespace\" \ - \"))))(Tile((id \ - 4f7eda69-8e88-46f6-af92-18e977fc4e57)(label(NotASum))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 514b34b5-fae2-434a-b5ad-3c180fc704e1)(content(Whitespace\" \ - \")))))((Secondary((id \ - 2158eae1-2f2a-4df9-a342-b5fa191925cf)(content(Whitespace\" \ - \"))))(Tile((id \ - ad1bd59c-b07c-4854-878b-fb73b714bb34)(label(NotInSum))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - acb6b1d5-bda5-45c2-aab3-b9bc747ceb49)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 553dfa61-d24d-4394-ac50-4aa83e07bb21)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - c55a91f3-69b1-4505-b31c-ac9db253b5f2)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 51fb312c-cdcd-4db6-9a97-c06f9349262f)(content(Whitespace\" \ - \"))))(Secondary((id \ - bdcdee76-a147-457c-bdc5-911d1b51a26a)(content(Comment\"#err: \ - cons not in sum#\"))))(Secondary((id \ - f2cd045f-7c64-4ea8-8452-c4ab758dec7a)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 4221a1d8-bcd9-4132-9916-5bec3de4a625)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 9d96a3ba-2e82-4741-a739-916745c2095a)(content(Whitespace\" \ - \"))))(Tile((id \ - 1fe95f07-86f7-4ba0-83ca-ecfcca5215f8)(label(Bool))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 7fe1273d-e45b-4e86-ad79-a9a30cf0afd6)(content(Whitespace\" \ - \")))))((Secondary((id \ - 290c38f5-c4da-4a8e-b556-8503adc36c8a)(content(Whitespace\" \ - \"))))(Grout((id c27057f8-540d-448e-855e-692824076cb2)(shape \ - Convex)))(Secondary((id \ - c77c2cb7-8f94-4093-9dc1-3dc1c76202b0)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - e93265b2-2163-4c24-a77b-75e0743fdefc)(content(Whitespace\" \ - \"))))(Secondary((id \ - cd8907a9-81d2-40cf-a12f-cdf75f85ecae)(content(Comment\"#err: \ - shadows base type#\"))))(Secondary((id \ - ce97e91b-7183-4964-9dad-5248b847cb2b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 524585ce-43ab-4dc4-a476-d2be15591182)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 033bf566-1b52-4a6c-966d-45efa4175c0d)(content(Whitespace\" \ - \"))))(Tile((id \ - 41911e97-fb92-4173-b3cf-f5d4eed85938)(label(Dupes))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - ff3b3be2-040d-47a2-b628-d957c263c18f)(content(Whitespace\" \ - \")))))((Secondary((id \ - de16dd5e-f90f-4941-b9b8-232e569d9078)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 94ecd3bc-97eb-403e-9563-421273cac80f)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape(Concave \ - 10))(sort Typ))))))(shards(0))(children())))(Secondary((id \ - adef1e3d-eab2-4810-9a16-263d1a6d36bf)(content(Whitespace\" \ - \"))))(Tile((id \ - 4d3a0426-5dbe-4845-a282-d11a40094d78)(label(Guy))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - b710d3be-0810-42a3-89d3-358051f7013b)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - c9d5f791-f9bf-4844-9869-3c064b839810)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 9058a038-a0f4-48ee-b778-3fc60e5c9fb7)(content(Whitespace\" \ - \"))))(Secondary((id \ - afea3bbf-04a5-4e37-972b-6c9f976e7a4d)(content(Comment\"#no \ - err#\"))))(Secondary((id \ - f837183a-06ad-4583-b423-4d17dbbc4aae)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - cfde56dd-4d78-48db-b5b9-e3349e8ba3dc)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 10))(sort \ - Typ))((shape(Concave 10))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - d81137df-f2cf-49dc-bb0e-fe21538e3a64)(content(Whitespace\" \ - \"))))(Tile((id \ - 02201697-1922-4a2e-9180-4dcea7428a5c)(label(Guy))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 4868483e-5f32-49c6-adc4-6630dbe6ced7)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - fc54a64a-a135-44c8-9cf6-a7ce8a527315)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - fadea698-7c37-48a8-8c95-2787e6e3b20a)(content(Whitespace\" \ - \"))))(Secondary((id \ - 9571f9ca-05e9-4a77-accb-b92d6f3b5368)(content(Comment\"#err: \ - already used#\"))))(Secondary((id \ - 55aa05ad-0b6a-4f64-ac40-113f79ffe7f1)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 8c570671-41ed-4e52-a50b-3cf2809fbbe0)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 10))(sort \ - Typ))((shape(Concave 10))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - de416faa-f1fa-4900-9ad2-f32009445925)(content(Whitespace\" \ - \"))))(Tile((id \ - 7feec638-5149-4401-92cc-65748cf149ff)(label(Guy))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 1e3d16ab-a72d-4342-b2f9-0b8b1fe14657)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 5a84c480-9a4b-47c7-9d5f-cf03b1112f4b)(content(Whitespace\" \ - \"))))(Secondary((id \ - 79a4e032-0c92-41ac-b21f-198802c8ed00)(content(Comment\"#err: \ - already used#\"))))(Secondary((id \ - 3c76eb37-d0d6-4e5d-8b6d-fe3e0a29815d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - dc4a691d-60ff-4962-96b6-9f50d0fee6d7)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 6f82cfca-5b64-4104-8719-e56652b83ca8)(content(Whitespace\" \ - \"))))(Tile((id \ - 55211581-d61b-4ea6-8c0e-43853ab7088e)(label(BadCons))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 541a269d-3b0c-4c6b-b421-cf2757f096d6)(content(Whitespace\" \ - \")))))((Secondary((id \ - f24cb71c-259a-4d1f-8a4b-04e51ed80b23)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - a034eadb-e82a-4983-b0da-52deba544b92)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape(Concave \ - 10))(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 0ae1f486-6b64-49f1-9839-a3071a4d5e26)(content(Whitespace\" \ - \"))))(Tile((id \ - 576f5861-9df1-465d-aa6a-02b20f6e63c4)(label(Um))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 8b8364bd-ddbd-470d-95ca-8d3eca892887)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 327a32a4-b4b8-4537-a4a4-ff819776b7d8)(label(Unbound))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 4f4387fc-fbdc-41b3-90ad-1def00e5713c)(content(Whitespace\" \ - \"))))(Secondary((id \ - 8892cd2c-0885-4957-80ab-3e2675f4bb75)(content(Comment\"#err: \ - unbound type var#\"))))(Secondary((id \ - 80d01050-b2ce-4ac8-9ec6-0170deda3533)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 2b1798d7-13de-432e-95a5-48bf480f4831)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 10))(sort \ - Typ))((shape(Concave 10))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 469c772a-6cdc-4419-bb66-aaee9d260caf)(content(Whitespace\" \ - \"))))(Tile((id \ - 18f0f427-bf66-4c29-8220-dce417a0dad5)(label(notvalid))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - c1667cf8-ac3a-4b57-a1af-5add1cadbdec)(content(Whitespace\" \ - \"))))(Secondary((id \ - 7a66d06b-fdbc-4a07-8f9c-fb0cab06be80)(content(Comment\"#err: \ - invalid#\"))))(Secondary((id \ - 9b1ca2ba-300f-4f4a-a664-85b57811b1c6)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 78cee115-8bb2-4e76-b6c6-3f104bfe0764)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 10))(sort \ - Typ))((shape(Concave 10))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - d54d1a84-8d14-486b-a4e7-a47e9a71bbe8)(content(Whitespace\" \ - \"))))(Tile((id \ - 688f920e-c2a2-442b-b6be-4fd3aaa2bfe9)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 42a13800-3507-4688-b610-92bd8f40b64a)(content(Whitespace\" \ - \"))))(Secondary((id \ - 3f5bc604-c1a1-4b28-b62a-f379cb00bf13)(content(Comment\"#err: \ - expected cons found type#\"))))(Secondary((id \ - fac092ba-b3ca-4bfe-b67f-7b1712db8cf6)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - a34b8831-ac9c-4b15-9f36-bad3a9623bea)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 10))(sort \ - Typ))((shape(Concave 10))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - a744ef23-572f-40e9-835f-814d1ced928f)(content(Whitespace\" \ - \"))))(Tile((id \ - 0658f89a-28ce-4de6-a50b-dae44302c439)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 98717293-02df-4aa6-9b0c-0c4adee6cf7d)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 57276d63-e061-4585-9e5f-3c0a07471900)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 32f93082-70cc-490a-bd9a-8b1b863ea1c4)(content(Whitespace\" \ - \"))))(Secondary((id \ - e4902f69-d522-4a3d-9480-c4bf75b44cba)(content(Comment\"#err: \ - expected cons found type#\"))))(Secondary((id \ - 5df67ca1-51f1-4f0a-9e42-60b4955d7370)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 3723b143-134a-4d1b-9482-e3db9ca2b754)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 10))(sort \ - Typ))((shape(Concave 10))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 4c7b2401-fc05-4a9a-8005-5a731405d897)(content(Whitespace\" \ - \"))))(Tile((id \ - ee423a74-19f5-4331-96ec-32fbec96ac1f)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Grout((id \ - 69b680ca-10e8-4999-a9ac-cd35c530f38e)(shape \ - Convex))))))))(Tile((id \ - 4127b3bf-d6f0-4328-a943-09f3937d4335)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 4b70551f-8d18-404c-abc2-7be85297eaeb)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - c162b951-60e2-40c5-b2ce-7fcf5abb6129)(content(Whitespace\" \ - \"))))(Secondary((id \ - 1f35f928-4a5e-4d0f-83f0-f92ad23e37e8)(content(Comment\"#err: \ - expected cons found type#\"))))(Secondary((id \ - e11318ea-b24e-4c36-bc1e-48f0cf45a6ab)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - bb584618-cce6-4fde-9fd5-d7664d50a6ac)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 10))(sort \ - Typ))((shape(Concave 10))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - e3341aa8-5447-4345-b26e-771ef6594422)(content(Whitespace\" \ - \"))))(Tile((id \ - a89f44e0-6c1b-4392-aa86-a40eb1ad7d60)(label(A))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - cf28523c-f133-4218-ae35-7036d973c1d5)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - d5667e50-e604-4129-a70f-12d796a23781)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children()))))))))(Tile((id \ - 1e352928-e4c6-4fca-ba2e-11cef32fefe4)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 1ed09b61-a337-4e8a-a34d-2ab888561c24)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 7da994bf-6340-45c4-8599-a03ca2341769)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 671e969b-0148-4345-b52f-d953506f9225)(content(Whitespace\" \ - \"))))(Secondary((id \ - a99ba882-d549-424a-8bbb-e6bb6cc14f5b)(content(Comment\"#err: \ - expected cons found app#\"))))(Secondary((id \ - dafc64b1-0620-41c6-88cc-4d3700a91400)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 63fd0ca5-5526-4d63-8602-7dc819005e93)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 56d28a0f-2244-4055-97e7-d87e504f59e6)(content(Comment\"#sums \ - in compound aliases dont add ctrs to \ - scope#\"))))(Secondary((id \ - a292fd1c-d0c3-4aff-aea6-54fb47db6aad)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 4df5e4d4-8390-4158-a53e-ff75907deb30)(content(Comment\"#but \ - compound alias types should propagate \ - analytically#\"))))(Secondary((id \ - 3fda8862-fca6-41ca-a9e4-bc4154218455)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - c6539017-bac8-4921-b1a2-dbd7686fd99a)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - c9219eb3-0e7a-447a-8e35-254101e3dd24)(content(Whitespace\" \ - \"))))(Tile((id \ - db95f67d-acf2-475a-ab91-4fa87ab97edd)(label(CompoundAlias))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - e6628e78-f477-4bab-a09a-929b617b2083)(content(Whitespace\" \ - \")))))((Secondary((id \ - 4a64ac40-4679-4366-91a0-b89dca268279)(content(Whitespace\" \ - \"))))(Tile((id \ - 34933335-7008-497f-9d8c-b31135833d16)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - c218a674-f28d-4146-930b-eb6f796111e0)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 76077180-868e-4535-9870-6f45077f1279)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 14))(sort \ - Typ))((shape(Concave 14))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 2fdfc791-1dbd-4794-ac3d-acb08e108b1d)(content(Whitespace\" \ - \"))))(Tile((id \ - 660b1ff5-f543-4a94-9e0b-040501cb6950)(label(Anonymous))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - ca0b24b7-26e4-4f18-a5ac-03da0194292a)(content(Whitespace\" \ - \"))))(Tile((id \ - e54319f0-eba4-46ba-8904-e80e9db0b1da)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 10))(sort \ - Typ))((shape(Concave 10))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - b5119751-b957-4a65-a4c2-ccdc1ab2bc89)(content(Whitespace\" \ - \"))))(Tile((id \ - 148914d3-99cc-446c-8bb2-3422cc4a553a)(label(Sum))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - a3295e9c-3446-4e30-81b6-f9ea31d00099)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 85cfca79-ca13-4d16-82c1-5f9b090483d0)(content(Whitespace\" \ - \"))))(Secondary((id \ - 3addc8b5-77a2-4d3f-b240-a42a1bdbacea)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 4250cef5-a35d-47b8-97c5-c92a48b1c8db)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - f2a63b3a-1ebe-4375-9749-4f12edd18d35)(content(Whitespace\" \ - \"))))(Tile((id \ - 714cbc78-0a5e-42e9-a83d-41a301f4dd1d)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 6724882b-9190-4687-9383-cacd82d63928)(content(Whitespace\" \ - \")))))((Secondary((id \ - fd8b2b27-0be7-4768-a187-fe62a0a02300)(content(Whitespace\" \ - \"))))(Tile((id \ - 2da8f63b-a4ba-4fe2-9e78-af2a352f2036)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 503e30a9-aeeb-42d7-a42f-c02ef125b0e2)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 0d92f21e-fd16-4b4b-a512-afae726117e3)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 0fd5bd23-a708-4b48-98a0-4e4b9fa05c32)(content(Whitespace\" \ - \"))))(Tile((id \ - f9d77557-184b-4f52-acde-16f41d4166fe)(label(Sum))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 0f2dbf7a-c881-4050-ad37-0ad7f6d6a7b2)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 917c166d-0721-45a6-bed2-681f750485ca)(content(Whitespace\" \ - \"))))(Secondary((id \ - bbefa4fc-0966-4f39-835f-64d3516e5f53)(content(Comment\"#err: \ - not defined#\"))))(Secondary((id \ - 60bc2aa4-0b81-4356-943c-e68f7ac510ad)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - c01847f6-15bb-44ff-9f05-209367f03f7d)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 591380d8-d43c-47cc-94ca-249f078a157e)(content(Whitespace\" \ - \"))))(Tile((id \ - 3fd95373-6092-40e3-b2bf-8f178061f9c0)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 4fdc4342-3d28-4d46-a063-da90e9b4d7bc)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - cd43dede-f632-4f59-9e54-d8ad47755667)(content(Whitespace\" \ - \"))))(Tile((id \ - e1c2481f-fa45-4215-8081-d2eef4f8e8b5)(label(CompoundAlias))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 6188a6f5-c684-4af8-ab9e-3256c23b7c1d)(content(Whitespace\" \ - \")))))((Secondary((id \ - 016923aa-5b98-4d44-9372-e16836d64f36)(content(Whitespace\" \ - \"))))(Tile((id \ - f705a020-a72d-4355-a982-13faad65a8ec)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - eefcbd7f-aec0-4db9-a17a-b9ff21d5bc95)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - cbdd1550-c48b-4dcd-95f4-bce1f98a6d1d)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 98a3cc68-afee-4809-aba5-75e733c673cd)(content(Whitespace\" \ - \"))))(Tile((id \ - 37d16e1e-6da9-47f9-a9fa-50cdc3cd94a5)(label(Sum))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 4ae0a91d-b46b-4c3b-8f85-52bd7748fedf)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 40bb855c-6b45-4476-adb8-20151c081ee9)(content(Whitespace\" \ - \"))))(Secondary((id \ - 39500a9e-b189-468f-9103-b24cf76f040d)(content(Comment\"#no \ - error#\"))))(Secondary((id \ - e7eb628c-3fa7-495a-a51b-e110980554fe)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - a1406680-cf51-4b14-8f13-9a43b73fba46)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - f98204ac-7408-40ef-8189-a32946d1c192)(content(Whitespace\" \ - \"))))(Tile((id \ - cbc36712-eb03-4be1-919b-c80e5bf9822a)(label(Yorp))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - fc7c8c66-f357-43de-9b25-a108f59d2910)(content(Whitespace\" \ - \")))))((Secondary((id \ - 14ab2d99-a891-4eb9-b55c-0b38ab4fcb0c)(content(Whitespace\" \ - \"))))(Tile((id \ - 20f829db-22e2-431e-ab11-8eddaa088129)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 4fce041b-ac8c-434e-af8e-391e3ae60d74)(content(Whitespace\" \ - \"))))(Tile((id \ - a301e74b-6e03-4455-9cc3-2e325e942fa2)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 839e1f10-a8d2-40f4-9bc9-3dd5941cd664)(content(Whitespace\" \ - \"))))(Tile((id \ - 4630be6e-eca5-4718-a71e-239de5a48d4e)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 697f3706-b9ac-42b0-917b-2b57ad0f1c95)(label(Inside))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 8399b277-7d98-453b-a117-a188b78a2f7b)(content(Whitespace\" \ - \"))))(Tile((id \ - bb39161b-72ad-42c8-bbcc-2011a7bb0927)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 10))(sort \ - Typ))((shape(Concave 10))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 0ca22f75-e67e-4179-8574-0251182b7355)(content(Whitespace\" \ - \"))))(Tile((id \ - 11752147-f120-4116-9aa3-c51df039f52e)(label(Ouside))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 3890ca6c-f213-4520-9198-cdb016151871)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 3ee55537-d8e2-4bc6-9bbf-fbf18d98d1e5)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 7a297494-386f-44f7-b248-19650fadbab5)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - d826df8a-e45f-4b11-b7ef-a6180ef6a475)(content(Whitespace\" \ - \"))))(Tile((id \ - 2d440fcf-b0de-4f95-a41f-cf7c6458ce03)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 3aa15bb2-877d-414f-afc3-ae075ea7d51c)(content(Whitespace\" \ - \")))))((Secondary((id \ - 6892ff00-0519-4456-89cd-7592ef4f1bfc)(content(Whitespace\" \ - \"))))(Tile((id \ - 83e43479-5702-4249-a6b3-9715fb2223e9)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 56a67b30-cab3-4c6f-beb6-a0624c4fe56e)(content(Whitespace\" \ - \"))))(Tile((id \ - e1100f99-f60d-4b5d-9df2-c8aa54744ac9)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 943e41f1-b39e-46b1-a484-115aca74a68a)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 79623b4d-7d1a-4db8-bd72-22f39a30e159)(content(Whitespace\" \ - \"))))(Tile((id \ - 2cf9dd1c-d6f8-4592-80e2-2deb9c8e0d22)(label(Inside))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - f295d8a6-6d2d-4b4e-86b3-38c9846765e3)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 9f125b81-04ab-4719-9aa9-32ad8fddb18c)(content(Whitespace\" \ - \"))))(Secondary((id \ - 2e22a04a-a6fb-4372-a13b-f2ef4f66411b)(content(Comment\"#err: \ - not defined#\"))))(Secondary((id \ - aa6021c3-7440-4d98-ab16-742f2f2233a3)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 712b71b1-7293-47bd-900c-abe487b15154)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - f833c960-f1ea-4226-8132-55f684151f32)(content(Whitespace\" \ - \"))))(Tile((id \ - 44154061-c60e-475b-b9e5-23afba0699d2)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 6ab2c025-ed6a-4bf4-b339-28982ccf8ee5)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - aa8f8cbf-d98e-4dc1-b9a0-841b244cfb78)(content(Whitespace\" \ - \"))))(Tile((id \ - 7046ff8f-5b8a-4d57-a39d-f5bd20916f68)(label(Yorp))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - f14c92c8-9975-4598-baad-febacbc66ced)(content(Whitespace\" \ - \")))))((Secondary((id \ - 65eef072-dfab-48aa-a0bb-9f35dc517f96)(content(Whitespace\" \ - \"))))(Tile((id \ - 1d7f6f4d-2b5c-42c6-8fd5-e6e978b7da18)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 89ddccbf-2594-4e32-ad8b-9f360d7b2de3)(content(Whitespace\" \ - \"))))(Tile((id \ - 30add1cd-018c-4a6d-b28a-ef0301b8f0e2)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - b0884aed-306d-4f86-adca-5545e9d2cae5)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - ff752faf-57fc-4b58-a8c3-d6739562f516)(content(Whitespace\" \ - \"))))(Tile((id \ - 7281c949-f27a-4bb8-b84f-50a2d364a4ce)(label(Inside))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - fd023a10-7c70-40dd-9b9f-0d0e60a6118a)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - ee8c6a7c-5bfc-4974-8e61-edbefe26b78d)(content(Whitespace\" \ - \"))))(Secondary((id \ - 5202ef3d-18f0-420e-9931-73e28fb1fe38)(content(Comment\"#no \ - error#\"))))(Secondary((id \ - 1efcebbb-8780-4255-a3f8-d175f1ee073e)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - e1e7b69d-469b-4ba0-a495-e75b857b3f20)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 99a1a829-4099-40b8-bd35-b503867a2c46)(content(Whitespace\" \ - \"))))(Tile((id \ - 36788d6a-dbb4-4e09-9fb8-2b47e13d425b)(label(Gargs))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - aa5ad82a-3e90-49f0-8d2e-a906d1993166)(content(Whitespace\" \ - \")))))((Secondary((id \ - 1975dae3-c37c-4e2e-87ef-3e34676c43e4)(content(Whitespace\" \ - \"))))(Tile((id 9a270162-b5c3-4967-9e80-4500ba8315f6)(label([ \ - ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ - Typ))((shape Convex)(sort Typ))))))(shards(0 \ - 1))(children(((Tile((id \ - cf62e16d-8837-43bc-9925-2b62630a4d2e)(label(BigGuy))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 67a6ef6f-0833-4b56-9cfa-dc35a26e5267)(content(Whitespace\" \ - \"))))(Tile((id \ - 3e5b4c41-f8a7-464c-aa35-0497b093c87e)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 10))(sort \ - Typ))((shape(Concave 10))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 33950ea1-db28-4d4c-80fd-5d9458c01376)(content(Whitespace\" \ - \"))))(Tile((id \ - a7d579a3-3c20-42ee-84bc-fd774067d9c6)(label(Small))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 57f96072-51dd-45a6-8a75-1e3c5b61f249)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 01577e64-bf58-4a7f-bd69-f78e1fc244b0)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - d898b799-4ca6-4d0f-ba7a-05f5457b1f3a)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 8f4217dd-d8cc-4ebc-a8be-6681e68928c9)(content(Whitespace\" \ - \"))))(Tile((id \ - d68dff3e-1a30-4cf7-a591-82353680b3a2)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - dabef24a-a341-4bb6-ac2b-11634c79d0f4)(content(Whitespace\" \ - \")))))((Secondary((id \ - 98584257-10e7-42b6-a45e-7c7e92a94153)(content(Whitespace\" \ - \"))))(Tile((id \ - 19c2c0cd-dc53-49d2-ac55-69c81f10a046)(label(BigGuy))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 4c7017d0-6c48-4ee3-9e52-333862ef0c21)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 440e44c5-ed6e-4921-b99f-f2595612e93c)(content(Whitespace\" \ - \"))))(Secondary((id \ - 0f6e0333-dac5-452f-b3a4-d45adad5af85)(content(Comment\"#err: \ - not defined#\"))))(Secondary((id \ - 90807928-26cf-4f5f-806a-9164725c1556)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 0e8a3461-af04-4423-b651-9fe8c006f323)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 50404f5d-c653-41c6-bba8-42e228222987)(content(Whitespace\" \ - \"))))(Tile((id \ - d96dca89-99af-4d53-a42c-c655ff25b297)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 0ba9f9c6-47c4-4b3a-a90d-60ee56bee461)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - c6f76877-8139-4175-b824-ea94b3c86e5e)(content(Whitespace\" \ - \"))))(Tile((id \ - 6f6c6001-5a0b-47e4-aa39-5153f95cf4a5)(label(Gargs))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - dfab673a-1f3e-4652-9586-549617a9401b)(content(Whitespace\" \ - \")))))((Secondary((id \ - 41d055f1-a91f-45cf-9c01-c3b1e2db1161)(content(Whitespace\" \ - \"))))(Tile((id 8c8bac84-8384-448a-9df0-cfa8bce1af0f)(label([ \ - ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Tile((id \ - 1acf9314-5f5b-4fb5-872d-0343ea92d419)(label(BigGuy))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 08897f29-c87f-481a-8c6f-a22edb0788ba)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 92cfe191-ff9d-442c-955f-5f995271f866)(content(Whitespace\" \ - \"))))(Secondary((id \ - 9810fba7-a0fb-4af2-9cb0-dd4b84e377ae)(content(Comment\"#no \ - error#\"))))(Secondary((id \ - 66ceb841-6611-4337-a31a-12a5cbd24089)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 9c2b5104-6ccd-4899-bd24-18b19dc8ca1a)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - ff106bd8-3e77-44e0-8776-98534a59abe1)(content(Whitespace\" \ - \"))))(Tile((id \ - ca8e9c0b-34b4-4bce-bc7a-b389e315ddae)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 37b16295-00a0-4622-a632-7147c389de04)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 0c26e47f-4c09-43f2-850c-54878337e8b1)(content(Whitespace\" \ - \"))))(Tile((id \ - 89c04f2d-1440-4140-98ed-728ab5007f3c)(label(Gargs))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 374242b0-7851-4223-bf66-05a4ec39e3f4)(content(Whitespace\" \ - \")))))((Secondary((id \ - c8c6ece6-9625-47ac-8268-fd5b088022fb)(content(Whitespace\" \ - \"))))(Tile((id \ - 23a2160b-4511-4bf4-93b4-1f683c8ea3e0)(label(BigGuy))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 0fcfb4cb-206c-4271-8e01-21b8f8b8a829)(content(Whitespace\" \ - \"))))(Tile((id \ - 2231f476-155a-4eb4-95b4-2ffd29b80a7c)(label(::))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 487db073-d8c5-48e5-b123-ba3a2f6db6e2)(content(Whitespace\" \ - \"))))(Tile((id c76ec439-420a-4861-b42a-8e79930609d1)(label([ \ - ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Tile((id \ - e5b75fe3-89f4-40c4-b9a4-b5cb51fac788)(label(BigGuy))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - d3dd54fc-7ffc-4d0c-8dd0-bf7ef6457b44)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - e339ef99-da83-4e07-b97c-0ea6eb0bf0d2)(content(Whitespace\" \ - \"))))(Secondary((id \ - 07b8ca66-0b3b-4ff9-96a7-1b6c3d1ee2e2)(content(Comment\"#no \ - error#\"))))(Secondary((id \ - f4fbbeba-e830-4d0f-bc01-c7fcf2c72149)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 798f7692-dcd9-4a69-b8d4-d864b81d9e46)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - ccb10986-e1c2-4717-9e40-f483a023fe77)(content(Comment\"#unbound \ - tyvars treated as unknown-typehole#\"))))(Secondary((id \ - 8fbfacd7-4f4c-447c-8cee-8b8389804820)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 219161a8-500b-4644-96ca-3cc60f837891)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 4d5a6229-7faf-48de-947a-95bf207cae81)(content(Whitespace\" \ - \"))))(Tile((id \ - fda91126-1717-4aa9-80d9-eccc25f22d69)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 2404d77c-60d3-405f-b281-1780231f4fcb)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Tile((id \ - afd302f2-0780-438b-aa2e-cc8d650057da)(label(Bad))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 74226087-3a3d-4492-94e3-6e9eec279213)(content(Whitespace\" \ - \")))))((Secondary((id \ - 87c77f09-c937-4d5b-b4fc-af4cde8e96c6)(content(Whitespace\" \ - \"))))(Tile((id \ - 44d53111-ae73-4baa-bc1e-21b2bcdab066)(label(0))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - b6420725-968b-47e3-8088-b6f9ad69191d)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - d1463fc7-e198-4505-bde2-3194a4b9f059)(content(Whitespace\" \ - \"))))(Tile((id \ - a40251c7-b8fe-4d13-88ab-7099f374f1ea)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - a67ce1eb-c586-427f-8760-73d05c4a0868)(content(Whitespace\" \ - \"))))(Tile((id \ - 5c6ac5ea-9314-44bd-b505-3555f3fda0c6)(label(==))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 8))(sort \ - Exp))((shape(Concave 8))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - f27a6e17-4598-4c77-97aa-b23ad5c57c30)(content(Whitespace\" \ - \"))))(Tile((id \ - 5f4aa276-21ab-4df9-837d-47fc7f5c2329)(label(0))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 790d9673-2597-46f1-a7a8-ca126695ca31)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - be418afa-4704-4ff2-8fa7-518de2ea1b7b)(content(Whitespace\" \ - \"))))(Secondary((id \ - 1163438f-7bc2-45f0-ab80-d831fe6e89e9)(content(Comment\"#err: \ - not bound#\"))))(Secondary((id \ - 96b31255-b1fe-4de1-9617-e368995784f0)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 25e19ea7-ad9a-4c94-ad6f-afa03f50fd1a)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 7199f788-c3e2-4104-957d-9773562d080a)(content(Comment\"#non-sum-types \ - cant be recursive#\"))))(Secondary((id \ - 93fdc15b-1031-418d-843d-6337df2d79a5)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 89d68700-afb1-4562-838e-9db767e0c312)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - a4301ab5-ef0c-44b6-a261-a7d4e497d257)(content(Whitespace\" \ - \"))))(Tile((id \ - f0e88a3a-e5bb-42d0-a432-76e6acaf6d68)(label(Lol))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 47321d59-c948-4d9b-bc9d-3275566f8c45)(content(Whitespace\" \ - \")))))((Secondary((id \ - d19fa033-9912-429a-9ca4-5dd4838bac64)(content(Whitespace\" \ - \"))))(Tile((id \ - ab3fb279-a3ca-4074-81dd-0ae7c80527e8)(label(Lol))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - c293d6ff-8104-4f4f-acc5-12d691fb5ac9)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - f93712dc-73e7-40ae-8a21-42d313da2ff0)(content(Whitespace\" \ - \"))))(Secondary((id \ - 6f1c746b-deaa-4270-bf25-4c85957dc2a5)(content(Comment\"#err: \ - not bound#\"))))(Secondary((id \ - 405eced9-cd91-478f-b4e2-de6e57f425ba)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - b5021224-ac6e-4754-9f51-a2bddece86e6)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 29d254a0-4e1b-49a3-a099-668728f1c89c)(content(Comment\"#no \ - errors: analytic shadowing#\"))))(Secondary((id \ - 686f7f49-42c4-4b2a-9a23-ee4512165db0)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 1ff64461-15b5-446b-a76c-24c13d5d444a)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 8edfaff4-4919-49e7-9e15-8520f5b09f76)(content(Whitespace\" \ - \"))))(Tile((id \ - 1becea0c-d28f-4f43-b256-9ae031247317)(label(Tork1))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 3f451423-322f-4a03-803c-a9fe4469059d)(content(Whitespace\" \ - \")))))((Secondary((id \ - 149cde0a-a955-4583-bf00-ba75531fb9a8)(content(Whitespace\" \ - \"))))(Tile((id \ - 525b3590-dec9-42c1-a039-3a89cec2c3a3)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape(Concave \ - 10))(sort Typ))))))(shards(0))(children())))(Tile((id \ - 9f71a0e6-300e-4185-9579-11f23a8c84be)(label(Blob))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - fd7ac165-1225-4f0a-a44e-9e63673f88ee)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 25c9763d-04cc-4384-8fa3-1b7bd69ed0e5)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 16d2afaf-e258-4525-b753-8c2bf7f491ff)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - a83010c6-6c5a-462c-82c0-61ae9e2321a6)(content(Whitespace\" \ - \"))))(Tile((id \ - 30177813-493b-425d-b6b9-0882ddc5599a)(label(Tork2))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 2990e467-ad88-4071-be30-5931c90b96d2)(content(Whitespace\" \ - \")))))((Secondary((id \ - d591a449-b5a5-4b2c-9816-7b60f1319af0)(content(Whitespace\" \ - \"))))(Tile((id \ - 2572cd15-f6fb-4b7a-8d0c-3359281fc897)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape(Concave \ - 10))(sort Typ))))))(shards(0))(children())))(Tile((id \ - daba6aeb-2bd4-4768-9c28-a5197ed2e69d)(label(Blob))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 7c56b1d3-71b0-421b-9093-f54733ab5a14)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 0a54f1bb-05ab-474b-894c-0b29d1449cce)(content(Whitespace\" \ - \"))))(Secondary((id \ - 30114535-b613-4192-b939-eef1e5ccb79c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 2a304f33-da99-4aa3-979c-e747ef575d92)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 81d70396-09a7-49cf-b791-a13e263e658e)(content(Whitespace\" \ - \"))))(Tile((id \ - 35f31cae-e178-4ee3-b131-a2e4e9d05c3c)(label(x))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 21d5be43-0bd5-4b04-9451-cd49e298eb43)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Tile((id \ - 8c464058-23fd-4d6d-8989-199cd73fc794)(label(Tork1))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - f917dbed-94bb-4c09-9661-5869bd3c2f73)(content(Whitespace\" \ - \")))))((Secondary((id \ - 8c883f5c-19c0-4005-8d64-7b957c3875e6)(content(Whitespace\" \ - \"))))(Tile((id \ - 29ec207b-0631-4208-95c3-fbafcfd0b834)(label(Blob))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - ded79c28-cd8f-43e0-a245-7b07826d1f68)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 9c15d35c-6b79-4da6-94be-31c638ff9d74)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 4221f40f-9932-4357-9991-6036e9995b01)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - fd3ef32c-2c79-4426-ae9f-fc1167b82b4b)(content(Comment\"#exp \ - tests: happy#\"))))(Secondary((id \ - adf5313e-1df5-4df1-864d-9b7c5a812667)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - d4348036-dc0a-4680-bb8e-cf0047c0940e)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 8086acf0-34a1-4686-be8f-26863527daee)(content(Whitespace\" \ - \"))))(Tile((id \ - c5aecbc7-c328-4ba8-8cd9-9d7a00e0cb21)(label(YoDawg))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 7b2e209a-0ea1-4915-9cf2-f3c2be5a2879)(content(Whitespace\" \ - \")))))((Secondary((id \ - 820a2676-823e-4bc6-b300-5214aa0789f1)(content(Whitespace\" \ - \"))))(Secondary((id \ - d15001dd-0eae-4e73-afd4-482ab7a3162f)(content(Whitespace\" \ - \"))))(Tile((id \ - 0d01ffdf-6b97-4486-8ff9-044f5a9b3022)(label(Yo))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - ac7e5081-6998-4cb3-9c1a-c40837a12f5c)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 99b838e7-8c34-4a56-b293-1b1ae38a1049)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 0c38c8bc-db43-480a-841e-10779cde50a6)(content(Whitespace\" \ - \"))))(Tile((id \ - b0edf54b-6bef-45ba-838d-7403aadd4f27)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 10))(sort \ - Typ))((shape(Concave 10))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 5cab4b3c-9cb4-4ab2-9d42-924eba8f3aa8)(content(Whitespace\" \ - \"))))(Tile((id \ - e51124be-f1a0-49e6-8574-38bc09feb291)(label(Bo))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 64254a44-0afb-4267-b67e-45209d5fd9e5)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 5ef14ff0-0634-4e9e-bb53-8288e942193c)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children()))))))))(Tile((id \ - e9ac6fe6-8a71-45a7-8da8-1f5f90f28133)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 10))(sort \ - Typ))((shape(Concave 10))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 155ba47c-7565-4213-8397-d934baca7e3d)(content(Whitespace\" \ - \"))))(Tile((id \ - 4037ef97-2006-4a44-8e3f-52e9f386789e)(label(Dawg))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - c29d5af2-a7e7-4eae-80be-e02c08500412)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - f193a595-7f99-4b7d-9d65-7d8e43ec39be)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 72564c9c-d9d3-427d-afd2-4ac8076568c3)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 3f1708db-324e-4323-b079-049b8b24bf4d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 39838558-510b-43f5-94ea-1123d44a4893)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - a9543098-44f2-4343-a935-103e66129cd6)(content(Whitespace\" \ - \"))))(Tile((id \ - a4bb3cc6-2f5c-4aa4-b759-64f98efebc6e)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - a952baf6-5bcc-4bb5-9b5f-ec904f22493d)(content(Whitespace\" \ - \")))))((Secondary((id \ - c05f234d-1302-4f88-a783-8cdf34d3d40c)(content(Whitespace\" \ - \"))))(Tile((id \ - 41e38c8d-fb14-449f-b631-c92243735859)(label(Yo))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 2af715e2-01fd-43a7-b51f-11eb8b512622)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 7bc5dec7-96f1-4cf0-b1c0-4656eaea8caa)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - acc97d46-0081-47cb-8390-cf07cd221dfd)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - faafe673-8162-4792-9f78-ef39ad8711d9)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - e440a940-5e6f-41d0-b461-d2623f941031)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 108659a4-8b68-4b8c-b7b5-6b789ceef204)(content(Whitespace\" \ - \"))))(Tile((id \ - 4c444ede-7a17-4cc4-b1cf-a5c908b81294)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 73c083d3-7732-4eb4-8805-320031e221c9)(content(Whitespace\" \ - \"))))(Tile((id \ - 55113fea-afb6-4ce4-86f8-2eaeea055cb9)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 75cc1d9e-47cd-4b09-a995-76d799797482)(content(Whitespace\" \ - \"))))(Tile((id \ - 66fde9e3-e01f-4432-ac18-3514f5d420e2)(label(YoDawg))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - ad6b6fa0-0ed3-43e5-bc22-33ff5e4474d1)(content(Whitespace\" \ - \")))))((Secondary((id \ - 8c87c560-68ee-4aa6-ae62-b51025662c41)(content(Whitespace\" \ - \"))))(Tile((id \ - 7c917f3c-12da-47df-bce7-dcaef2e9d144)(label(Yo))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - dfc92cba-547f-46e3-a1ce-33d261945c01)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 6ce99c4d-452a-407b-a6ad-9ee8c8b794bf)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 5cb5dc92-6dc9-4099-8240-b068232de661)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 8d2d26b3-42ba-435e-a638-b38b16e28cbb)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - e09c21c8-8a84-496d-813a-f55700f64d96)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - dd2a10c9-a86b-4cc6-9a2f-8b27d8d75b11)(content(Whitespace\" \ - \"))))(Tile((id \ - af04d0da-9208-45b3-addc-a29c293f6f40)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 35ccdacb-fc30-4f21-b258-7f69e627d7e2)(content(Whitespace\" \ - \"))))(Tile((id \ - f558961c-a720-4e29-a7ce-0c632b872292)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - ca42123c-25ad-4a5a-b973-594607c93d58)(content(Whitespace\" \ - \"))))(Tile((id \ - f52df601-dcc7-48bf-b6fe-b341c76aaa8b)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape(Concave \ - 10))(sort Typ))))))(shards(0))(children())))(Tile((id \ - 147816da-20b4-427b-9dc1-ede6c2110c6c)(label(Yo))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 357b2aa0-b570-468d-92d2-6875660183dc)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 20b39e9a-6f5b-44b1-8ddf-ce4dcfa8026b)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - c8716d17-a9b6-41be-995d-ef7e42e6f73b)(content(Whitespace\" \ - \")))))((Secondary((id \ - ab2471b5-5cda-4a87-98c4-de2f8dabc2de)(content(Whitespace\" \ - \"))))(Tile((id \ - f845997e-ab21-4c3b-92af-c65664ab5dad)(label(Yo))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 377ba38f-d98e-40ba-ac48-e4fda0ca1581)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 7d3a00c2-3da9-4479-a008-90b827278327)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - ee221f24-9e4c-4268-a868-bffb24fcadaf)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 68ca6027-bc33-4fcd-a466-07a44cdd968d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - a70b3bf3-5204-4dd0-acbe-760d495de0bc)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 297e5d36-9fb0-425f-9580-d5fffbb4cc1b)(content(Whitespace\" \ - \"))))(Tile((id \ - 9d07da15-bb00-4575-ad9f-2cdce9a942e7)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - a2a2fd58-2ac5-4b0b-a55b-01646a3b4dde)(content(Whitespace\" \ - \"))))(Tile((id \ - 34107bf2-3ea5-46b6-aae0-89f6cd092b45)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 113c2063-7bd7-481e-87b9-2aa4059e6231)(content(Whitespace\" \ - \"))))(Tile((id \ - b5dc00aa-d47c-4504-b69f-17fb572dfdb3)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - f55ed323-bad7-4e71-b23a-4e6453806221)(label(Yo))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 2149c166-a141-457c-b055-391325a4286a)(content(Whitespace\" \ - \"))))(Tile((id \ - b9604112-c199-4512-809b-c28949c61ec6)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 10))(sort \ - Typ))((shape(Concave 10))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - db69385d-7e0f-43f1-b596-64d0716e89cd)(content(Whitespace\" \ - \"))))(Tile((id \ - ed502769-4b80-4bcf-90ea-7475b3465f16)(label(Dawg))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 5c5a7f0e-8ec1-47d0-aa25-88b1a5d2240d)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 14))(sort \ - Typ))((shape(Concave 14))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - f786b8df-f704-401c-8f06-03146741d04b)(content(Whitespace\" \ - \"))))(Tile((id \ - 408c24ca-b6ed-43f8-b6cb-d173502ce7a4)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - f6263446-35b6-41a1-b626-78f8b2081d88)(content(Whitespace\" \ - \")))))((Secondary((id \ - 9240e351-39af-4a2d-a743-047f38fd4264)(content(Whitespace\" \ - \"))))(Tile((id \ - 44e42610-d59f-41f1-9fec-349064f14fa8)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 9b5de60d-6b0f-4263-8c72-4400bfa1ca8c)(label(Dawg))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 7f9eb770-d68a-4627-ace4-c65c6b0ab48d)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Tile((id \ - 2eff9e96-1453-4d9c-ae1c-bf2556b1d509)(label(5))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 18fdf605-7889-4a62-80ae-2690a3eba6fe)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 17c91e4a-08af-484b-9e62-38bed1629b38)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - daf02719-0436-46e2-9554-1cc670d63753)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - cc5f08f2-7e67-4773-b6ed-089380bd1fcb)(content(Whitespace\" \ - \"))))(Tile((id \ - 5a84271a-4bd5-44fb-aaa1-91f75980da76)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - dcabb994-94a1-4658-873c-3f4e26f8e8f2)(content(Whitespace\" \ - \"))))(Tile((id \ - e45f5970-56f9-4229-ab5d-2eb80e7c7289)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - e1af6915-c79d-4580-b3bf-2ec99966c111)(content(Whitespace\" \ - \"))))(Tile((id \ - 2eaeb051-8993-404a-8188-3f1f0e0d4d28)(label(DoubleAlias))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 4c25bfa1-4b04-4d21-b44a-0f03571f90e4)(content(Whitespace\" \ - \")))))((Secondary((id \ - da448888-f8a0-4e10-8564-68af9da9e873)(content(Whitespace\" \ - \"))))(Tile((id \ - 71f1c710-a5db-4a42-89af-ca5f7b12e3be)(label(C))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 63858904-cc65-4fd1-a40d-500f743980dd)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 3876d9ab-2ce6-449e-8b16-33ff4191f02d)(label(4))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 23806cf2-01ce-4bea-9d88-13e6981f1bb0)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 387918c2-75b1-4cef-bd48-acf19e9e2f38)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - f1e04837-231f-41a2-99ea-bdfc6e060045)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 52bd8fd8-f689-4946-891c-2291dc031ac1)(content(Comment\"#exp \ - tests: errors#\"))))(Secondary((id \ - b2be6e9d-fc09-46bd-aa5b-b4390c4ef179)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 4214db3a-ee62-4418-80f2-85552aceee58)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 09711721-4aa6-44e0-bbca-862af2e9ccad)(content(Whitespace\" \ - \"))))(Tile((id \ - a3bcab3e-81d4-44f5-a4b8-e3a2f9e02b1b)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - b028f571-25be-4657-80f6-de23b1a02bd3)(content(Whitespace\" \ - \")))))((Secondary((id \ - 2c29cefe-10a5-4367-ad6e-d6db9b69f8f2)(content(Whitespace\" \ - \"))))(Tile((id \ - da5545a4-8e25-4438-be2d-1138f4cddee1)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 19964660-f5a3-4d24-a945-ceb4ae1e444d)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 502113ba-b30b-48e6-a02b-8916e4099f10)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 923b8dd5-2b03-49c1-b375-c3bd8a5be1cb)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 08f65795-5f41-4555-8738-a9d7ba8f4db1)(content(Whitespace\" \ - \"))))(Secondary((id \ - 4ac9fda9-dc04-420c-8de4-71f715a8e8ce)(content(Comment\"#err: \ - incons with arrow#\"))))(Secondary((id \ - 9cc1e342-4765-424f-8588-b2da5a3c8812)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 7f83fafe-e3fd-4d48-b9bd-c981ab1ec228)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 2ed49797-a540-4383-a55f-7f997769fcf8)(content(Whitespace\" \ - \"))))(Tile((id \ - b0d6c8d9-0f55-4622-8540-ad3ec40e8dcc)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 931434c2-9bfd-47fb-b860-4f94fb56abc6)(content(Whitespace\" \ - \")))))((Secondary((id \ - 0c45d1da-dca6-4bcf-824e-086ff3619e11)(content(Whitespace\" \ - \"))))(Tile((id \ - eeec54a7-e110-4085-9e20-e2587dd419b5)(label(Undefined))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 6dfa2802-7123-4ecc-af5c-d24ab138e89b)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 4871baec-a321-43d7-99d5-c51059493083)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 74f30173-b867-483a-bf32-5b5649f34e00)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - f489bf80-e026-44ed-9f51-b40da91947bf)(content(Whitespace\" \ - \"))))(Secondary((id \ - bdda38c1-44fa-4426-a68d-90e1e3f577a8)(content(Comment\"#err: \ - cons undefined#\"))))(Secondary((id \ - fa273c71-3434-46da-a671-626cc6049caa)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 7dca8b6c-989c-4741-a4a4-f1ae62408a90)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 9cb2acad-feff-4672-8d7c-43c467f8e391)(content(Whitespace\" \ - \"))))(Tile((id \ - 75506b66-e182-491d-b788-99a377d7e3d6)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - d53d0f49-aebd-470e-9c65-7d77561bfd5a)(content(Whitespace\" \ - \")))))((Secondary((id \ - 32bfdb59-116b-4f75-82fb-7b7a7a9ee1fc)(content(Whitespace\" \ - \"))))(Tile((id \ - 7a5c1b27-7917-43cc-96b7-68c9a0aa125a)(label(B))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 6d2f6d4d-5b34-440c-99ef-1b173e491ca2)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 4265c52b-55ce-4fb0-917e-79f99b4545c6)(label(\"\\\"lol\\\"\"))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 126bad8c-fff3-4a21-85ff-3a93fc73af37)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - acc21816-6762-458e-b052-98fb57fcd6e8)(content(Whitespace\" \ - \"))))(Secondary((id \ - 2e7148d4-ec87-4c83-a879-b1cb5a5ed1df)(content(Comment\"#err: \ - type incons#\"))))(Secondary((id \ - 29738cc2-dd27-4ee6-bf83-f0d00a16d47a)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - c9c142a0-b9d1-423e-afa6-950070639487)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 9ca198f1-a4ab-4e6a-b9ee-7af24b2b0ddb)(content(Whitespace\" \ - \"))))(Tile((id \ - 17ff72b2-b93a-4051-b699-dbcdae7307c6)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - bc97a62f-b7e1-4ec3-81bf-83184a4c8c87)(content(Whitespace\" \ - \"))))(Tile((id \ - fec091dd-0e47-4833-ae00-53762c786ab6)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 62922425-2203-4454-9523-f8fcbeb03c9c)(content(Whitespace\" \ - \"))))(Tile((id \ - f82a5fb1-5509-44b0-bd40-44313f75c4c1)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape(Concave \ - 10))(sort Typ))))))(shards(0))(children())))(Tile((id \ - 3161a5c3-aab6-4b37-abdd-0b4545799278)(label(Yo))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 8b7427f3-fa5b-436f-92b8-7d8c6cc0d036)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 89074e55-142d-4e4a-a5e8-7a442c699a0f)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - a0d5f29a-cd3a-4686-a1b5-09113a40195c)(content(Whitespace\" \ - \")))))((Secondary((id \ - af4c6438-89a1-4132-9ad5-c4ffac91fd1d)(content(Whitespace\" \ - \"))))(Tile((id \ - c580e9e7-7d6e-4e80-82be-25aaca79b942)(label(Yo))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - a8c5832b-cebb-4c6a-92e6-07b5e552505e)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 631f4c3c-a5f4-4edc-ba88-8af7bac59d7d)(content(Whitespace\" \ - \"))))(Secondary((id \ - c75d5e54-515d-42cd-953e-a5b2af960eff)(content(Comment\"#err: \ - type incons#\"))))(Secondary((id \ - 8e89e058-3e4f-4213-b1b5-21b75a12b3b0)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 092d401d-4681-45ca-a417-469e1b9521fd)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 1f09dee4-0e3a-4be6-95dd-bbe0e77c4996)(content(Whitespace\" \ - \"))))(Tile((id \ - bba1db7b-a310-4067-a50d-809d39548a5f)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 5d32cae1-d451-4c5e-827e-5452b099b557)(content(Whitespace\" \ - \"))))(Tile((id \ - 44e0dc21-fd90-4f29-a33d-2939e59e8c1b)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 947af2f6-7b71-4b9c-9fa8-0dad02fbe631)(content(Whitespace\" \ - \"))))(Tile((id \ - 33d7eb57-0fa1-4227-a093-3c10974b72e5)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape(Concave \ - 10))(sort Typ))))))(shards(0))(children())))(Tile((id \ - a1bb260f-f11d-456c-8bfc-75d85af29ea0)(label(Yo))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - a80caa08-c6d5-409c-9047-32909e2a96c8)(content(Whitespace\" \ - \")))))((Secondary((id \ - 10e0b8c8-f01c-4ea6-9a00-1da27c35bc5d)(content(Whitespace\" \ - \"))))(Tile((id \ - d4b9fb5f-a627-4acd-99da-4ff3a79d4782)(label(Yo))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 58f18f4d-3c5c-4dc8-9cf7-eb7aca80bcfc)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 0e6f2c44-e90d-4caf-9e77-11d74a519530)(label(\"\\\"lol\\\"\"))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 49e4c7bf-e9e2-41bb-8f89-52a403aabc6a)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - d8476ff7-c2bf-441a-8010-64bc558158dd)(content(Whitespace\" \ - \"))))(Secondary((id \ - e0afd264-4a2a-4076-a01d-578a8ec5cf5b)(content(Comment\"#err: \ - type incons#\"))))(Secondary((id \ - 7f48028e-59f6-4128-ac3a-07f1fc61b14a)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 76de4e86-0d10-4065-938f-690716ff4bff)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 6a975e3b-202a-47e0-84d8-ab9d28b36ccc)(content(Whitespace\" \ - \"))))(Tile((id \ - 775aba62-6b92-4402-a930-1a8b15b99f76)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 43f8939b-a9a3-47c2-919b-c24b285fd642)(content(Whitespace\" \ - \"))))(Tile((id \ - 9c4ae5b8-87ef-4f46-9482-cae3eb81109c)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 316d061f-b6d3-4f58-812e-b7e4e2e1b221)(content(Whitespace\" \ - \"))))(Tile((id \ - 07bd9186-3e71-43d9-beb6-397adeb4ed79)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape(Concave \ - 10))(sort Typ))))))(shards(0))(children())))(Tile((id \ - 982bbf83-da17-4f60-a07a-69b6caca0038)(label(One))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - a61b9df0-6312-4630-b350-b179a7a9a30f)(content(Whitespace\" \ - \")))))((Secondary((id \ - f6598e2d-13a0-48aa-98ad-3bba23c0d16c)(content(Whitespace\" \ - \"))))(Tile((id \ - 030259ed-1473-41ff-a554-df49181075a9)(label(Yo))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 6015f8df-0de0-4ab4-a83e-5846c4f017b5)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 84f01a2b-fcb7-47fb-a22f-d967376f38e1)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 83aeee2b-8f73-42cc-8897-cca9982f73a1)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 81bcef3f-ffc3-415a-8b6c-a91f427a7934)(content(Whitespace\" \ - \"))))(Secondary((id \ - 3ae4dd0c-cdda-4e6f-9ddc-7b71bf749d81)(content(Comment\"#err: \ - type incons#\"))))(Secondary((id \ - 5b4942b1-ead9-41cf-83e9-330b23a2c28d)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 7a0bde0e-fe2e-4c7a-8fa9-7c59d491a73d)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - facdf460-efbd-4a8f-bda7-5328fbb74d3f)(content(Comment\"#pat \ - tests: happy (but refutable patterns so \ - weird)#\"))))(Secondary((id \ - 9672874a-6ef2-4808-9a41-030964442d7c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 87478aa3-bc82-40d0-a792-6c51cf93c3d8)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 19b5021a-5029-4545-a177-18d27abb34f6)(content(Whitespace\" \ - \"))))(Tile((id \ - ebea4bf6-feaf-4db6-a7fa-3147fdb83b21)(label(Yo))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 3ab932af-9e52-4585-bb64-81ed59f509c1)(content(Whitespace\" \ - \")))))((Secondary((id \ - 6e6d5123-a846-4667-8ec0-1b27e6e2ec6b)(content(Whitespace\" \ - \"))))(Tile((id \ - 028c9ff6-4c62-4be3-ba26-494728ae1efe)(label(Bo))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 61354972-9371-4232-86a2-e92f1d27a98f)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - e83fe24d-38d2-44d1-aa05-3817739b773d)(content(Whitespace\" \ - \"))))(Secondary((id \ - 2b7f6a39-b9e4-4cb2-99cc-d42e1e4b4aaf)(content(Comment\"#kind \ - of a weird edge#\"))))(Secondary((id \ - b56d91c3-10bd-449c-871d-be476400ea3f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 9da4f6bf-678f-4b02-9ac2-4925236ac534)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 8a332dfe-bd12-4417-8093-292b405b2b78)(content(Whitespace\" \ - \"))))(Tile((id \ - 4934e3fa-894a-4c64-b751-47e621d2a0bc)(label(Yo))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 32edf020-9d2c-424a-b69e-2bffa87a176d)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - ac0a556b-6a81-4ca3-9d80-1110548c7c60)(label(1))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - ddbf95e4-acdf-4db1-8a31-a52f98d75fb8)(content(Whitespace\" \ - \")))))((Secondary((id \ - a4ca8e82-2d64-46dd-ae43-dfd45f37faaf)(content(Whitespace\" \ - \"))))(Tile((id \ - 285005da-5608-4b20-ad60-34aa36ded1a5)(label(Dawg))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 89b853be-6ea8-4173-8737-247ec8f3dd37)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - cf4b208d-9082-4bb6-9f2f-3868800212d4)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 9b875fb6-0c4c-468d-aa82-18749ecbe1a9)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - bb1cdf42-36d6-4749-8f12-26f768697db7)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - f2f1e474-be18-47e5-a81f-ede837a58503)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 37471869-cff9-4e2c-99c0-cbbe41031313)(content(Whitespace\" \ - \"))))(Tile((id \ - 17306267-01f4-422b-86f6-e90290fc8340)(label(Yo))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 5a398483-25d9-4d05-af57-c3add5818c4e)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 743a1786-64d1-4319-a7db-e5def2b888e5)(label(1))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children()))))))))(Tile((id \ - f4913a6b-385a-4d2e-bdb5-902204fc96bd)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 0e0c4ecc-2cd0-4d3c-afd4-479780fdf901)(content(Whitespace\" \ - \"))))(Tile((id \ - bfca73b7-2533-4426-8b6d-967344d52775)(label(YoDawg))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - ae231901-3e7e-4334-954e-be65ef71da82)(content(Whitespace\" \ - \")))))((Secondary((id \ - 048dc25c-8c5d-4fc6-8674-b2b85230ef7c)(content(Whitespace\" \ - \"))))(Tile((id \ - 04b01334-7bd7-44ae-875e-f4d004293df4)(label(Yo))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 470e3d11-7f3b-40ba-8882-9ecbef346aa3)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 1120437b-69c0-4271-b846-5560a4c64ce2)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - c00fd96f-d9b4-4d7d-946a-794a850b31f5)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 603225be-d862-42fa-bca2-d3d5898f15d8)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 8d653abc-56e0-4e76-976a-e8abc021d345)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - ba4a7022-18d2-48fb-a0b5-8624b0252a05)(content(Whitespace\" \ - \"))))(Tile((id \ - 87220d72-4069-495a-a94c-a2a1e6c3f80e)(label(Yo))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - ea68f412-bb42-4e52-8533-e2b2876392fe)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 7d1323f8-b578-4b93-91ec-2273541b966d)(label(1))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children()))))))))(Tile((id \ - a7042e19-faef-466b-949d-be90992ec96e)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - dcd5a0ab-43fa-4aed-96b0-4a704f143233)(content(Whitespace\" \ - \"))))(Tile((id \ - 6829f579-c85b-430c-9d47-307edf992813)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape(Concave \ - 10))(sort Typ))))))(shards(0))(children())))(Tile((id \ - d9f466fe-3676-4684-aee6-870eb758fee7)(label(Yo))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - c9302141-725b-4f6d-bf9d-b3fb3f237e0a)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - d2b79cb8-a093-4f5f-b1cd-e8a4e3f5e3ac)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 6fc2c1ef-de22-4fa2-a5ca-eaae9a0dbd60)(content(Whitespace\" \ - \")))))((Secondary((id \ - 8956dc3f-1f16-415a-9565-91cf792b6a31)(content(Whitespace\" \ - \"))))(Tile((id \ - 34979d88-fd64-447c-ba5f-c90d9e1be29a)(label(Yo))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - d6145fb8-ec69-414e-99b4-d1bb527f22d1)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - b3bb92a7-8f3c-49c7-955f-adbac8cd5a34)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 74397f51-da57-40e2-bb99-f9e9c241666a)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 99ee253c-d3d3-4ac9-b37f-a5ccceb64cd7)(content(Whitespace\" \ - \"))))(Secondary((id \ - 69ee0c5a-b23f-44d0-8bfb-62b8267da47f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 0d21753e-2df4-473a-bbc9-12b716724f3f)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 0ef0fe1f-8d88-474a-b172-3b5ec3cb2473)(content(Whitespace\" \ - \"))))(Tile((id \ - 38ca55d1-d269-487a-a9f5-8e7a0b7e5446)(label(Yo))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - f1d45f10-46ee-4276-96e5-903c3d4b6b3f)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 59227245-38f5-43b2-b1b9-29434daf00f9)(content(Whitespace\" \ - \"))))(Tile((id \ - b59a80b2-6ed7-4ba5-bb10-8dce157ceeca)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape(Concave \ - 10))(sort Typ))))))(shards(0))(children())))(Tile((id \ - 99f4dc6e-ecf1-4532-8203-078a97d19f10)(label(Yo))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 27761368-5a50-4e8e-b8f0-41259759a1a2)(content(Whitespace\" \ - \")))))((Secondary((id \ - e5fe4f26-2152-4c3f-846c-711489198670)(content(Whitespace\" \ - \"))))(Tile((id \ - 2f85b493-700c-459d-8626-bc8f043093a8)(label(Yo))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 42b17dfc-8cb7-4156-94e6-ef3f49b5388f)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 0005e1fb-699c-4d2d-ac84-3967e4c3b4c9)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 99be389b-359b-4e3a-b5f1-434da0700342)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - dcd15daf-e021-4d15-af44-137ce8d9bdf3)(content(Comment\"#pat \ - tests: errors#\"))))(Secondary((id \ - c1d20c23-9d73-428f-9de4-d2ce26b62ad3)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - f7043c28-61f8-4276-a523-22734fe2ccf0)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 16ce1daa-556e-492a-a19d-6a7d6c4f2e40)(content(Whitespace\" \ - \"))))(Tile((id \ - 3e134eb5-90ed-4db7-8884-b94ec7e43566)(label(2))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - d0b3234b-c864-461a-9860-dcf461d1b332)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 0ba9f9c2-a06f-4d45-9fa9-52f59e56e3cf)(label(1))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - 5ccb3070-1bff-480b-83b5-976c5b0ddebb)(content(Whitespace\" \ - \")))))((Secondary((id \ - 627509dd-1b5b-4b67-b157-8ff4a6c7bd79)(content(Whitespace\" \ - \"))))(Tile((id \ - 2c8b196b-845e-4d71-98fc-c11abb4fe871)(label(3))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 232ebf71-0266-4aae-b171-c3d7291da09f)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 0db41a09-1502-49f5-9212-3418316cddf3)(content(Whitespace\" \ - \"))))(Secondary((id \ - 6e676ae9-c84d-4607-ac2d-b39dce08c6a0)(content(Comment\"#err: \ - incons with arrow#\"))))(Secondary((id \ - a5d07dd2-c839-4a86-a27e-ac069da4196b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 2261eb15-0137-4a31-a46d-5043f25d2af4)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - e85ffc30-fd07-4215-97f6-cff1b2ecadd9)(content(Whitespace\" \ - \"))))(Tile((id \ - 0f625d9f-3a8c-4801-b7f8-02f3bc063e60)(label(NotDefined))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - e273c063-be34-4fd4-9a35-b903acc3a802)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 1a6295b6-34f2-4fb9-bef6-651891713eef)(label(1))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - 0f61bbef-58f7-4b51-a327-0bcc1a98908d)(content(Whitespace\" \ - \")))))((Secondary((id \ - 9cb5a580-8a59-48ff-9d23-87f89f52c545)(content(Whitespace\" \ - \"))))(Tile((id \ - c2dd289b-773f-4558-89d3-c71533b1918e)(label(3))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 8711ef21-fb8f-4896-ac90-d8e807c603d6)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 9ddcfd63-e8f9-4897-906a-ce1835a858b5)(content(Whitespace\" \ - \"))))(Secondary((id \ - 225f955d-f886-449c-9169-21343059976d)(content(Comment\"#err: \ - cons undefined#\"))))(Secondary((id \ - a0f66cdc-ced3-42af-bc8b-95ded65e92cb)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - fc859cc5-5a32-4e42-82be-7ffba942d78a)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 6ee1493e-7726-4647-96d9-e324c567637f)(content(Whitespace\" \ - \"))))(Tile((id \ - dd9d06db-d1b0-4ff4-be65-eb761215eeba)(label(Yo))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 9dd81776-5dcc-4238-b329-d0e580eb7fd4)(content(Whitespace\" \ - \")))))((Secondary((id \ - 919d5599-af66-4117-9e83-75d41dcfd62b)(content(Whitespace\" \ - \"))))(Tile((id \ - 6da4a8d0-c40a-433d-9cde-44badc3f8c39)(label(Dawg))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - a9d80421-dfb3-4924-b95f-f6a7ee7088cb)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 40ef07ac-93a1-4395-9330-c4e072117398)(content(Whitespace\" \ - \"))))(Secondary((id \ - 309c082b-63a8-4b11-8aba-2285ab9d193f)(content(Comment\"#err: \ - type incons#\"))))(Secondary((id \ - 0ae6873f-533a-40ff-a569-7ce95ca44dd2)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - faaa3700-62e3-48e8-a99e-e02391eb2d1b)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 04510299-1775-44ea-a1cc-92023d978c25)(content(Whitespace\" \ - \"))))(Tile((id \ - 31056011-4c43-4c4e-9e3b-fd949414c4ba)(label(Yo))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - c47761a7-9949-48f4-8e22-1815b341ef77)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - cb6a6a22-b518-40ad-9e76-8cda4bad6e5a)(label(true))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - f47230bf-0ec9-465d-acb3-436f7d3ac327)(content(Whitespace\" \ - \")))))((Secondary((id \ - d44997ac-687e-49bf-9dad-b882ecc68087)(content(Whitespace\" \ - \"))))(Tile((id \ - a0377840-0185-4f2c-a48d-864237d3ac9e)(label(Dawg))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 93552a27-48fd-484d-86f8-b30e33acc3eb)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - fe0ec8d9-e77e-445c-8535-556c6adf09a2)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 44532396-e223-4a97-9bd0-005fc9dd24e5)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 2a27fa8d-a1fa-40c1-a553-5a6f8b9a530e)(content(Whitespace\" \ - \"))))(Secondary((id \ - 006c55f2-7a22-4df0-9914-a74f44528b25)(content(Comment\"#err: \ - type incons#\"))))(Secondary((id \ - ff7e8d0d-1807-42b3-8e01-33cc58484288)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - c5929ebf-a9b9-4639-97d7-d45df8ce563d)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 14377e51-1ceb-4217-ba71-24186a229e16)(content(Whitespace\" \ - \"))))(Tile((id \ - b7ca14d5-2c58-4ed1-b454-d77b649a3f72)(label(Yo))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 73942125-9603-4035-b063-cc8f9ce8e8b3)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - bf2e76ca-ac2d-43c0-a4a5-32e199987375)(content(Whitespace\" \ - \"))))(Tile((id \ - c1fd18bd-1abc-4a6c-8cfc-957b3167497a)(label(YoDawg))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - e1bd4b1c-a5a5-4b76-a8b2-c51089b8635f)(content(Whitespace\" \ - \")))))((Secondary((id \ - 19c5cc34-ee6d-4ad6-81c8-02a31d41368e)(content(Whitespace\" \ - \"))))(Tile((id \ - c6a966cc-66bd-4799-9f6e-16b8efa36237)(label(Yo))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - b57f4012-d255-4bb8-bc8f-c0ca8ed64c7b)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 69b99e6b-7806-4f7d-a721-c4aeac388080)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 56b02ec3-8d51-4298-88f0-5572b396b603)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 1ba0434f-fdad-40ce-b432-f91c01300a1f)(content(Whitespace\" \ - \"))))(Secondary((id \ - 01433e43-66b8-477b-acfe-f3101dd678b2)(content(Comment\"#err: \ - type incons#\"))))(Secondary((id \ - 43c8e876-a506-476f-a6f7-0e9ce18b22c7)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 01a1d3e7-079b-410e-81e4-6c0b19bcecf4)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 2539a505-366f-4f35-bc49-dd92fa17035a)(content(Whitespace\" \ - \"))))(Tile((id \ - 9c8d4db8-d8cb-469d-a818-8f06c6a65576)(label(Yo))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 2e124a6c-1a98-416e-9c2d-a31b456af5c9)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 06aa313a-1705-4684-88c3-0959c3456677)(label(1))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children()))))))))(Tile((id \ - c0eb07fc-ca46-4c7b-bbe1-b437ed8e4f82)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 3cbd9746-08e3-461f-8e59-bf1188c06a79)(content(Whitespace\" \ - \"))))(Tile((id \ - 4295854d-6f35-4530-87ad-d5056108d538)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape(Concave \ - 10))(sort Typ))))))(shards(0))(children())))(Tile((id \ - f83eeec3-4a42-4349-9f82-9a23e4661390)(label(Yo))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 56ce20b5-fc60-4b53-98af-baa07854f2ae)(content(Whitespace\" \ - \")))))((Secondary((id \ - 5e99023e-fb6b-48ee-afb3-b79638d7fb38)(content(Whitespace\" \ - \"))))(Tile((id \ - abdf3b80-2a39-4b01-a168-20c5e1b62e3b)(label(Yo))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - ec5f0ad6-fe8e-4470-9a18-2aaf51bbfba3)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 89289d11-4938-45b7-93c1-8f10c467ac12)(content(Whitespace\" \ - \"))))(Secondary((id \ - 7b8f1c99-37f4-4758-95a0-daf1c8f99266)(content(Comment\"#err: \ - type incons#\"))))(Secondary((id \ - 02b2a52a-b5f4-4e41-80b7-a58fe6ea9585)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 500da527-7942-4a58-8238-b0c358ce8b91)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 7f530aaa-806f-408a-b53e-c4f023e17eb2)(content(Whitespace\" \ - \"))))(Tile((id \ - f89111c8-e5bd-42bb-8a23-4692cab1d8df)(label(Yo))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 758ce654-335a-43bf-87e1-4cc3ef54f7a6)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 8b69bf15-b0cf-4810-846a-29593e01dd15)(label(1))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children()))))))))(Tile((id \ - 9d1bab07-4373-4f1f-a03c-25097e994811)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - cc5e2c3c-0713-4cfe-9344-a925edd6c853)(content(Whitespace\" \ - \"))))(Tile((id \ - 1084ff97-4032-4a02-be04-a951d295cb8a)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape(Concave \ - 10))(sort Typ))))))(shards(0))(children())))(Tile((id \ - 085cf9ea-0a85-4760-a949-dc22490dce25)(label(Yo))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - c8a2b1f6-e183-4841-ae4e-b609d91b7a3c)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 930f5a73-f1c0-476a-ba8c-8a113bc9669a)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - a5b78531-9d59-4865-a4f0-23232aaad93d)(content(Whitespace\" \ - \")))))((Secondary((id \ - ec7248c7-90ca-447f-8192-89917f308bfd)(content(Whitespace\" \ - \"))))(Tile((id \ - 6ea16184-54d7-4ec4-b8c1-0a7146937b23)(label(Yo))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 161d2a9b-370b-426a-a206-fbbaf8959b85)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - cc4bb669-3a95-4bd9-bf9f-8290ae158a85)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 1a9b1b31-8fc5-4c30-b7a8-f4842dd8e199)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - eb20e134-9a53-4f56-ae7d-269ee258279c)(content(Whitespace\" \ - \"))))(Secondary((id \ - c248cce3-ba8f-435d-8a74-cf066d9e31be)(content(Comment\"#err: \ - type incons#\"))))(Secondary((id \ - 13e9a30a-2b86-4f35-8b75-a70f09c615d8)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 5a2fdd2d-99ff-4488-9a13-d03a37eb4f65)(label(\"\\\"Thats all, \ - folks\\\"\"))(mold((out Exp)(in_())(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 54a6e50e-2bf0-4f4d-a156-5746fe45d59e)(content(Whitespace\"\\226\\143\\142\")))))))(ancestors())))(caret \ - Outer))"; - backup_text = - "# Internal Regression Tests: ADT Statics #\n\ - # All commented lines should show errors as described #\n\ - # No other lines should show errors #\n\n\ - #type definitions: no errors#\n\ - type = in\n\ - type SingleNull = +One in\n\ - type Single = +F(Int) in\n\ - type GoodSum = A + B + C(Int) in\n\ - type Partial = Ok( ) + in\n\ - type DoubleAlias = GoodSum in\n\ - type VerticalLeading =\n\ - + A\n\ - + B(GoodSum)\n\ - + C(Bool->Bool) \n\ - in\n\n\ - #incorrect or incomplete type definitions#\n\ - type badTypeName = in #err: invalid type name#\n\ - type ( , ) = in #err: invalid type name#\n\ - type = badTypeToken in #err: invalid type token#\n\ - type NotASum = NotInSum(Bool) in #err: cons not in sum#\n\ - type Bool = in #err: shadows base type#\n\ - type Dupes =\n\ - + Guy(Bool) #no err#\n\ - + Guy(Int) #err: already used#\n\ - + Guy in #err: already used#\n\ - type BadCons =\n\ - + Um(Unbound) #err: unbound type var#\n\ - + notvalid #err: invalid#\n\ - + Bool #err: expected cons found type#\n\ - + Int(Int) #err: expected cons found type#\n\ - + ( )(Int) #err: expected cons found type#\n\ - + A(Bool)(Int) in #err: expected cons found app#\n\n\ - #sums in compound aliases dont add ctrs to scope#\n\ - #but compound alias types should propagate analytically#\n\ - type CompoundAlias = (Int, Anonymous + Sum) in \n\ - let _ = (1, Sum) in #err: not defined#\n\ - let _: CompoundAlias = (1, Sum) in #no error#\n\ - type Yorp = Int -> (Inside + Ouside) in\n\ - let _ = fun _ -> Inside in #err: not defined#\n\ - let _: Yorp = fun _ -> Inside in #no error#\n\ - type Gargs = [BigGuy + Small] in\n\ - let _ = BigGuy in #err: not defined#\n\ - let _: Gargs = [BigGuy] in #no error#\n\ - let _: Gargs = BigGuy :: [BigGuy] in #no error#\n\n\ - #unbound tyvars treated as unknown-typehole#\n\ - let a:Bad = 0 in a == 0; #err: not bound#\n\n\ - #non-sum-types cant be recursive#\n\ - type Lol = Lol in #err: not bound#\n\n\ - #no errors: analytic shadowing#\n\ - type Tork1 = +Blob in\n\ - type Tork2 = +Blob in \n\ - let x:Tork1 = Blob in\n\n\ - #exp tests: happy#\n\ - type YoDawg = Yo(Int) + Bo(Int)+ Dawg(Bool) in\n\ - let _ = Yo(1) in\n\ - let _ : YoDawg = Yo(2) in\n\ - let _ : +Yo(Bool) = Yo(true) in\n\ - let _ : (Yo + Dawg, Int) = (Dawg,5) in\n\ - let _ : DoubleAlias = C(4) in\n\n\ - #exp tests: errors#\n\ - let _ = 2(1) in #err: incons with arrow#\n\ - let _ = Undefined(1) in #err: cons undefined#\n\ - let _ = B(\"lol\") in #err: type incons#\n\ - let _ : +Yo(Bool) = Yo in #err: type incons#\n\ - let _ : +Yo = Yo(\"lol\") in #err: type incons#\n\ - let _ : +One = Yo(1) in #err: type incons#\n\n\ - #pat tests: happy (but refutable patterns so weird)#\n\ - let Yo = Bo in #kind of a weird edge#\n\ - let Yo(1) = Dawg(true) in\n\ - let Yo(1): YoDawg = Yo(1) in\n\ - let Yo(1): +Yo(Int) = Yo(1) in \n\ - let Yo: +Yo = Yo in\n\n\ - #pat tests: errors#\n\ - let 2(1) = 3 in #err: incons with arrow#\n\ - let NotDefined(1) = 3 in #err: cons undefined#\n\ - let Yo = Dawg in #err: type incons#\n\ - let Yo(true) = Dawg(true) in #err: type incons#\n\ - let Yo: YoDawg = Yo(1) in #err: type incons#\n\ - let Yo(1): +Yo = Yo in #err: type incons#\n\ - let Yo(1): +Yo(Bool) = Yo(true) in #err: type incons#\n\ - \"Thats all, folks\"\n"; - } ); - ( "Basic Reference", - { - zipper = - "((selection((focus Left)(content())(mode \ - Normal)))(backpack())(relatives((siblings(()((Secondary((id \ - c02465e1-d580-455a-aa60-b6aeb9216493)(content(Comment\"# \ - Hazel Language Quick Reference #\"))))(Secondary((id \ - eac6ad58-e3bb-434f-9db0-2e8fd6072393)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 8a5b7f9a-b19d-4d34-9d0c-c880eebb5d39)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 33151d9c-2446-45f8-a398-c06e4328a468)(content(Comment\"# \ - Empty holes stand for missing expressions, patterns, or types \ - #\"))))(Secondary((id \ - c8cc13c9-440e-4c52-a8ef-429a39de48d6)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 2fffac84-5d83-47ae-b058-6d237944ec5f)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - ca102bc0-c98e-4779-a3d0-29482db11528)(content(Whitespace\" \ - \"))))(Tile((id \ - 23d28c28-f709-48fd-80a2-91a1261c65a9)(label(empty_hole))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - a19670da-602a-43b1-98dc-be30daf8027d)(content(Whitespace\" \ - \")))))((Grout((id \ - 10150851-d9f1-4c1b-88c1-6eb9cc5ef8b3)(shape \ - Convex)))(Secondary((id \ - b445ae22-b778-40c7-a8e1-4ecf1f7586b9)(content(Whitespace\" \ - \"))))(Secondary((id \ - b7497d6b-e8ee-4441-8040-7756d9f0cb5a)(content(Whitespace\" \ - \"))))(Secondary((id \ - 2826cf66-55bb-4b97-8e94-d11a05b82536)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - f1ca0924-2102-4d29-a917-84ed940bed3a)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - f8475082-76c2-4eb8-a3fb-647d9045149b)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 23d2e2a0-ff71-4ff1-b0a7-97f7ca53bfde)(content(Comment\"# \ - Integers #\"))))(Secondary((id \ - c0b7cecc-18fa-4e0b-a69f-1f1fd0f4bc77)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 1a5bb703-4fc2-4a12-956f-28017ffd7729)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 6fb983fb-2e59-46ca-968c-ca1e8977e0eb)(content(Whitespace\" \ - \"))))(Tile((id \ - acbb1a16-353e-40fc-b2cd-1e1e5fbf323d)(label(int_lits))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - cd520e4a-49ec-4ba0-aefa-29ea494ce3f1)(content(Whitespace\" \ - \"))))(Tile((id \ - aad44b6d-55b1-4e71-9a3b-0dd9a5398b50)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 58477ce1-301d-412b-b1f7-1ac9f7aba4bb)(content(Whitespace\" \ - \"))))(Tile((id \ - ee9010f8-c67e-43e5-965b-e4532e62cbdc)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 0a73b46a-1d11-402c-b8d0-f9fec6af22ea)(content(Whitespace\" \ - \")))))((Secondary((id \ - 586e8fad-120e-4a52-929e-85b9d8f28b1e)(content(Whitespace\" \ - \"))))(Tile((id \ - 062a379e-884f-422c-aa61-721b97b3e20a)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 425a6af2-5fc0-47ea-96f9-b5f92c2c0957)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - d1e0b19c-3d09-4eee-970c-3b50fea7d15f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - aba91b6f-c7b4-4dd4-a962-0954aeb11b3a)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 5942a084-27cb-41c8-8048-c0c4c6fd2532)(content(Whitespace\" \ - \"))))(Tile((id \ - 753c2bc1-4dd7-413d-b35d-754a16eb667e)(label(negation))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 1d10b712-3445-44e6-ab94-6502ef325682)(content(Whitespace\" \ - \")))))((Secondary((id \ - 7ae5f68d-af34-4e15-8764-257a5a4d685f)(content(Whitespace\" \ - \"))))(Tile((id \ - 91a73ee8-d7c2-4390-af1f-5e8b8f74c4ab)(label(-))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape(Concave \ - 2))(sort Exp))))))(shards(0))(children())))(Tile((id \ - 52032473-7237-4de7-aaef-1572d21778d4)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 9fd2d207-8aef-4b51-985e-6b4b0f85cd50)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 35e9fd97-0dfa-4760-94f4-54a56efc7bc6)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 994e8699-eae6-4f4a-89e4-e8ad228936d2)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - a90dbe49-f009-4b7b-9c2a-1c67ebfa886f)(content(Whitespace\" \ - \"))))(Tile((id \ - fe5e28ce-5530-4c62-a241-5d8069f21e4e)(label(arithmetic))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - d5090a02-9928-482a-948f-1b616daa5209)(content(Whitespace\" \ - \")))))((Secondary((id \ - ef75cb3f-3312-4415-92ff-8a8b8cbb4912)(content(Whitespace\" \ - \"))))(Tile((id \ - 688e886f-8b0d-4a1d-b344-f53a8d213f33)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 696aa524-06f5-4717-b164-62e42ae4b9bf)(label(*))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 4))(sort \ - Exp))((shape(Concave 4))(sort \ - Exp))))))(shards(0))(children())))(Tile((id \ - fca66189-a9ff-441f-a9ff-b9a343fa1ef5)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - cd9d89ee-03af-481e-8578-4ada75839252)(content(Whitespace\" \ - \"))))(Tile((id \ - 2baadfe4-7246-4cf1-81a9-3185efc1f88a)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 5))(sort \ - Exp))((shape(Concave 5))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 34ef2209-3967-4fd8-bdf8-1d1d4ea84fb6)(content(Whitespace\" \ - \"))))(Tile((id \ - 772bfc49-b7cc-49de-b663-5c1ad40e7cd7)(label(8))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - f3898cfd-cbc8-45c7-92ad-e5324a4fed11)(label(/))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 4))(sort \ - Exp))((shape(Concave 4))(sort \ - Exp))))))(shards(0))(children())))(Tile((id \ - 37791357-7f10-4c88-a855-cf12f41d6a2e)(label(4))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 79f7ba83-5c4e-4cf1-9a37-730a65fb8efa)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 233fa61a-b3a1-44d1-ac9d-468a4da6bc52)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 28c99e4c-2557-4b6a-9148-6dc1ba8ccbbd)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 3fa533d1-50c5-4996-b74d-deef2a46df2f)(content(Whitespace\" \ - \"))))(Tile((id \ - 3ad542ed-202c-4fde-aa12-d66033759eac)(label(int_comparison))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - a59ad00c-eca6-4f06-bc76-8502bc1f09cd)(content(Whitespace\" \ - \")))))((Secondary((id \ - e545925d-3d0d-4ec0-93b5-23ca30e74756)(content(Whitespace\" \ - \"))))(Tile((id \ - ca563165-e29e-43f4-9be9-194fa465c401)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 1305e5ea-5a8d-4d44-8f20-3e61da4b9ce7)(label(10))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - b9ef2359-069b-414e-8799-eb98bc569f00)(content(Whitespace\" \ - \"))))(Tile((id \ - 0175b8c1-ec18-4b46-9155-bf421c7f2b6d)(label(==))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 8))(sort \ - Exp))((shape(Concave 8))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - e71af419-adc4-45be-b7dc-0e7dabc8bb7a)(content(Whitespace\" \ - \"))))(Tile((id \ - ca973cd7-e43d-473a-9d3f-575739c51abc)(label(10))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 5497f005-b6a0-41c4-802b-a270309d38bb)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - ee4f26c1-cb5f-4576-a06e-777c650fb863)(content(Whitespace\" \ - \"))))(Tile((id \ - dfa9b54e-06b1-411c-bb4d-cc17c9c15c42)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 98a978e5-494a-45d6-a857-9f8a1120cac7)(content(Whitespace\" \ - \"))))(Tile((id \ - e47da472-40dc-4850-b65d-c0ecac9b7cbb)(label(<))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 8))(sort \ - Exp))((shape(Concave 8))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 1d349a92-ca96-49eb-9e9a-a69c0776b1df)(content(Whitespace\" \ - \"))))(Tile((id \ - 477c7f95-29af-4c05-9c3c-9158c1de4fda)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - c8480c5d-ff1d-43ab-ae22-43754f3a7deb)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 269b997c-d282-41e5-8dab-d322d6d58255)(content(Whitespace\" \ - \"))))(Tile((id \ - 0d107bec-b49c-41b9-81ab-e15c5742796b)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 16314a7a-c788-43dc-8f24-2bbbbc00aed1)(content(Whitespace\" \ - \"))))(Tile((id \ - 289a01fc-7255-4354-b855-42270b1af4d4)(label(<=))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 8))(sort \ - Exp))((shape(Concave 8))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 07533539-c3a0-460b-a50a-cfacd93b624d)(content(Whitespace\" \ - \"))))(Tile((id \ - d451038b-964a-4f8c-8535-2ff829bf5e8f)(label(3))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - dcf1dbdc-44c6-4b1c-a7ca-a3a6fed31a92)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 9a1479e1-d046-42ae-b275-121dcb765884)(content(Whitespace\" \ - \"))))(Tile((id \ - 9fc4fae9-20d6-4a61-8da4-5336cb74d4e2)(label(3))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 1afdbff4-96e9-42e7-876d-5051adc8fa27)(content(Whitespace\" \ - \"))))(Tile((id \ - d57fd5e4-cbdd-47c9-ab11-527b431d5bf3)(label(>))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 8))(sort \ - Exp))((shape(Concave 8))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 39eb1a82-8220-442d-85a8-ffac84f969ad)(content(Whitespace\" \ - \"))))(Tile((id \ - 089c2640-84cf-436f-95b9-d54450d8b6d4)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - ce10a8eb-da2c-40eb-aeb4-28663f03871f)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - cedc559c-d11a-4f5a-bfa0-bade4341794b)(content(Whitespace\" \ - \"))))(Tile((id \ - 8bed2e43-0314-4f22-acc3-acc4d3e8ffb4)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 29d534fa-5a4a-43ae-8f66-3a185856c570)(content(Whitespace\" \ - \"))))(Tile((id \ - 257e50c9-e66c-4246-9e28-3006b1ebc81b)(label(>=))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 8))(sort \ - Exp))((shape(Concave 8))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 559b5241-a336-4121-823b-1d7dcf167fa5)(content(Whitespace\" \ - \"))))(Tile((id \ - 8c70323e-6c0d-4073-a23d-0d3a2d8fdcdc)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 8cecb774-93ed-4a93-8c1c-98ce749d0554)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 13fdc7ae-e70e-4da7-b6a2-9666dbaca4d1)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - f73cb689-d184-4dde-9be8-3a0f61d1d46b)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 7b53cf5e-1184-49ed-9d7c-4726c8e0b117)(content(Comment\"# \ - Floating Point Numbers #\"))))(Secondary((id \ - e12f8c8d-b356-463e-9d35-3f289845d9d4)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 10aa8ea5-d891-4d07-97ae-684f3cc0989e)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 8021f30a-9d89-44ee-8ffd-b1d995c1d518)(content(Whitespace\" \ - \"))))(Tile((id \ - f7b293e6-340a-4681-b019-c5124e45c0ff)(label(float_lits))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 2f6ed6ae-11a1-4e72-839d-12ca19cd93d5)(content(Whitespace\" \ - \"))))(Tile((id \ - e432a2f9-7792-4f40-9493-eeab3c60da34)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 3ce58267-880a-4f6f-b440-68864aa1efb8)(content(Whitespace\" \ - \"))))(Tile((id \ - 8055bb96-c5a4-421c-bcf2-ccd8c3bd4173)(label(Float))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 0bec24d1-5e30-478b-bcef-3ae4772e8a8b)(content(Whitespace\" \ - \")))))((Secondary((id \ - e49338a9-9ae8-41d9-b647-51bcfc609b03)(content(Whitespace\" \ - \"))))(Tile((id \ - 4c9483f1-3795-4998-aab9-c3511077b5e6)(label(1.5))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - ceefb970-0cda-476b-928a-c7d6cda446b5)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - fc5cd16d-6e3c-4a63-97db-b428ae944398)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - b8131072-fa39-467c-b055-ec955668d644)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 7a9ce07b-0aaf-4199-93f1-8e736cc615a9)(content(Whitespace\" \ - \"))))(Tile((id \ - ed296500-3bbe-479a-ba87-1e336133d935)(label(float_artih))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 5d42b5fb-391d-4afb-9d9a-9584ab3c05da)(content(Whitespace\" \ - \")))))((Secondary((id \ - 3659a1fd-5038-4106-851f-99f679d91e4e)(content(Whitespace\" \ - \"))))(Tile((id \ - 3e918251-1956-47e4-b049-5ad8ccc7a2f7)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 97dfebff-d305-433e-ad00-96a6efc718b8)(content(Whitespace\" \ - \"))))(Tile((id \ - d5b59097-6064-4f40-9a09-f3d44cd5215b)(label(*.))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 4))(sort \ - Exp))((shape(Concave 4))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - ca8d362f-94a6-4df6-a803-5f248e528219)(content(Whitespace\" \ - \"))))(Tile((id \ - 7d99d9a9-d2cf-422b-891d-616f124b2112)(label(2.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 377e3e95-982f-4470-b6dd-c5e8132e5e5d)(content(Whitespace\" \ - \"))))(Tile((id \ - b3ce0733-8039-4f1a-b19c-b2e643a6f4ef)(label(+.))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 5))(sort \ - Exp))((shape(Concave 5))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - be550181-cebb-4e2c-88f4-56e9ac3f8d06)(content(Whitespace\" \ - \"))))(Tile((id \ - 9720963b-38c5-44f8-ade5-28d3b93ac28e)(label(8.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 79327816-38f3-4b35-9c61-64d67c0dc8d8)(content(Whitespace\" \ - \"))))(Tile((id \ - 87e5293d-5940-49d8-b964-46507d81b79f)(label(/.))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 4))(sort \ - Exp))((shape(Concave 4))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - a9072680-b79c-4a15-a3ef-3448e283709d)(content(Whitespace\" \ - \"))))(Tile((id \ - 2af4956c-32e2-434e-8b23-9ff35fcbb97b)(label(4.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 7741c9e4-a581-44bf-b1f3-196699159b85)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - b1bcbfbb-4588-45f3-b5c1-6e622a6c22f7)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 13c0ef1d-f81e-4a02-aa26-e2c91e94ee5a)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 9fc6b971-83c4-4ee5-8432-112dacb86695)(content(Whitespace\" \ - \"))))(Tile((id \ - 5bc77122-3aef-4f4e-89d3-01002a1696ed)(label(float_comparison))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 06f39d6b-8ef0-4e11-9a45-369cdacf2998)(content(Whitespace\" \ - \")))))((Secondary((id \ - 46124981-91e7-4f5e-ae47-7fc33e3e4858)(content(Whitespace\" \ - \"))))(Tile((id \ - 6ea34e57-cb97-4450-9d60-df6a6524e2af)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 4545c34b-9969-4077-96b2-3898dba2acad)(label(10.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - dcf22383-1322-49f0-9596-48309d4bb77b)(content(Whitespace\" \ - \"))))(Tile((id \ - cbbf25af-750f-4abb-b1f6-f521816cb828)(label(==.))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 8))(sort \ - Exp))((shape(Concave 8))(sort \ - Exp))))))(shards(0))(children())))(Tile((id \ - 91f1f6e6-c035-4020-a9d2-8c2f419c7338)(label(10.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - caeb3fc4-872c-4dcc-83ac-803b54a46463)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - cfd3c907-699d-48d2-a60f-bad9adebba48)(content(Whitespace\" \ - \"))))(Tile((id \ - f5bb85ce-27c0-4351-a71c-51a88ece8ca1)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 51283b8c-c360-4468-a559-45cbe3454d72)(content(Whitespace\" \ - \"))))(Tile((id \ - 8da7e8a9-a288-45db-9dd8-aead3ec13f8d)(label(<.))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 8))(sort \ - Exp))((shape(Concave 8))(sort \ - Exp))))))(shards(0))(children())))(Tile((id \ - 10048c15-f857-4c9b-a89c-509462d60f7c)(label(2.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 525c7176-b079-467c-9aaa-c8dfa4d5fc28)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - ccb3dbb2-65af-45c6-a35a-dbdb2de55eb0)(content(Whitespace\" \ - \"))))(Tile((id \ - 882890e3-6922-4f01-adb2-3849a28c6068)(label(2.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 0d952e96-5ece-4b36-bbf0-23fb298da825)(content(Whitespace\" \ - \"))))(Tile((id \ - edb705d3-f107-42cb-ab2e-27b45622c9a3)(label(<=.))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 8))(sort \ - Exp))((shape(Concave 8))(sort \ - Exp))))))(shards(0))(children())))(Tile((id \ - d845e2bd-f60b-4a23-84cb-d9557b04db16)(label(3.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 6c24749c-9a0d-46d7-b509-290abf75f7c6)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 9d2432cd-b491-457d-8d3a-ead7face4508)(content(Whitespace\" \ - \"))))(Tile((id \ - 68b23073-d57f-4327-bb1e-66a2c4a98c01)(label(3.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 944dfcc5-247e-42ee-9a23-be664c184d68)(content(Whitespace\" \ - \"))))(Tile((id \ - f32aa2cb-9347-4346-ac24-4c432d04de80)(label(>.))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 8))(sort \ - Exp))((shape(Concave 8))(sort \ - Exp))))))(shards(0))(children())))(Tile((id \ - 4438a2e6-cbcc-435b-ab93-71426659fb2d)(label(2.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 915dae41-1a85-4e35-9f83-837aefb453fa)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - e5370413-5b1e-4ec5-856a-635c8b100507)(content(Whitespace\" \ - \"))))(Tile((id \ - a2e396ff-220b-4fad-af54-5f40174f68c8)(label(2.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 1e3874d4-1503-4342-aa07-2c1f6c40798c)(content(Whitespace\" \ - \"))))(Tile((id \ - 517b75ee-a1bf-46f7-8c0b-1bb226a37c27)(label(>=.))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 8))(sort \ - Exp))((shape(Concave 8))(sort \ - Exp))))))(shards(0))(children())))(Tile((id \ - c2729f80-24a7-4f7c-bc80-deccb52dabc0)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 6c5b7ee8-f5bc-4286-bb44-b2fd976670d7)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - dd1eda4c-8e3f-481e-a7f7-b4df78bd7f0e)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 48792ba6-48c5-4e97-a8e7-5ad2456a4012)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 4701234f-7f8b-4288-a974-74493d1a47aa)(content(Comment\"# \ - Booleans #\"))))(Secondary((id \ - b29f594f-41ca-42bf-beae-4c366fc6db0d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - b89ffb32-c3e9-4d29-adeb-3403b1e7c886)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - d2218c04-1f82-4248-a3bf-94f5563410f3)(content(Whitespace\" \ - \"))))(Tile((id \ - 06ebaa5e-ac57-4ee9-b32d-68006232ac5f)(label(booleans))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - a9eabb41-480f-4fd8-b5ce-a2b8132102aa)(content(Whitespace\" \ - \"))))(Tile((id \ - 11525367-baeb-4cb8-b43c-ec0dee35fc86)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - bc65dad5-9674-4e00-8b83-5d53c42f3f1d)(content(Whitespace\" \ - \"))))(Tile((id \ - 0017b84a-a249-4b4b-a9c6-ef0e21976328)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - bf457a18-2af1-4715-a4df-7481611d0eb5)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 2632699b-a021-4bc3-a548-16d4c315fba7)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 14))(sort \ - Typ))((shape(Concave 14))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 6e417997-cea7-483e-92ed-d3e875bd3c3d)(content(Whitespace\" \ - \"))))(Tile((id \ - 17c1c64a-dccb-4902-bf6a-1a2849ce66df)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 7f2b15c2-2a1d-4cef-9313-60fb2a87cdd1)(content(Whitespace\" \ - \")))))((Secondary((id \ - f39ac63f-d80e-4669-bf62-fd97661c0065)(content(Whitespace\" \ - \"))))(Tile((id \ - 5389dc89-11fe-4bd4-bfce-50920c3c0310)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - c8ab23c2-f2ad-43c0-ba6b-2ca69043a1f0)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 78255f29-5055-4f97-9433-0c7b0a4c6d2e)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 3a58111e-8c4f-4516-90b0-999ba0db4cfa)(content(Whitespace\" \ - \"))))(Tile((id \ - b9dcd9c2-f7fe-48c3-a94e-1849355867e5)(label(false))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 13ddd06c-da67-4e37-8486-85ddeeb8a98b)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - a09e6f3d-bd02-416b-9948-6ab04eb17da1)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 06ae542d-6ca1-4225-9e6c-d8cd47fea13d)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 5ff510c7-a2e9-4b2d-aea8-4bbdd5622502)(content(Whitespace\" \ - \"))))(Tile((id \ - 25019522-ee88-47bb-98dc-21be74263f85)(label(conditionals))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - d186c457-dfa8-49bd-a338-7cd988da6112)(content(Whitespace\" \ - \")))))((Secondary((id \ - a39c092f-c169-43a0-b94d-7fe57db457da)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - ba62a4d9-9cd3-46f4-8add-960015a5b252)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - bb015ac9-1e95-47e1-b42c-dbf3babd1fb2)(content(Whitespace\" \ - \"))))(Tile((id \ - 75aa8a68-196d-4751-a3f3-28526299fad2)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - e92cd801-e46f-491c-90f9-61aa20887bdb)(label(x))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - b220a3ab-eda0-4504-bd78-c8aa5a72c2da)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - de75ac47-32b5-466a-a94f-73665f45f35f)(content(Whitespace\" \ - \"))))(Tile((id \ - 55c42244-25d6-4091-9a4b-5f964b6f7f7f)(label(y))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - a8c611d6-6b7e-4741-9aff-c6f4966ef5d7)(content(Whitespace\" \ - \")))))((Secondary((id \ - 1115e119-2ff6-4b0f-b5f4-a6489526c495)(content(Whitespace\" \ - \"))))(Tile((id \ - d5b01572-55be-4c94-af8a-59e2cc585251)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - e1e9c08a-7fc0-4039-ad1f-f70055edf2f1)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 1350068b-2330-4bdc-bcee-27854fc5b571)(content(Whitespace\" \ - \"))))(Tile((id \ - 38855989-1b25-413c-b04e-dc83ab9f7412)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 5))(sort \ - Exp))((shape(Concave 5))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - a7c39806-2f69-4b06-bd77-743bdd88df3d)(content(Whitespace\" \ - \"))))(Tile((id \ - a604aac2-13bf-4599-94ee-f03612813c7a)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - a9b89e7c-7281-4b13-b482-479e2e604067)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - dfee5ecb-7620-42dc-9521-7db3a7e87a90)(content(Whitespace\" \ - \"))))(Tile((id \ - dfe1ed00-63ff-49a9-9768-5e484279aee4)(label(3))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 165809d9-9678-486d-a22e-b11f342f3ef3)(content(Whitespace\" \ - \"))))(Tile((id \ - db753586-baa7-4352-9397-9e5da9231c8d)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 5))(sort \ - Exp))((shape(Concave 5))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 481882af-2b8c-4841-b809-5f2b37790bea)(content(Whitespace\" \ - \"))))(Tile((id \ - d9d12b04-5369-4361-94e2-6bee82e2a455)(label(3))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 37ddd62d-1e25-4f9b-9295-4546f4c6e3d1)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - f08346b3-1795-4f8d-85b1-2d956b4780ae)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 859845dc-92ed-4678-b675-6eb12df4fb73)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 12))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 229d1f1b-c9ba-4442-9d3a-de760c44278b)(content(Whitespace\" \ - \"))))(Tile((id \ - 970099b8-4c8b-4899-8116-1650ef88e17f)(label(y))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 712518bb-722d-4c72-ad7f-d5fc8f25d36f)(content(Whitespace\" \ - \"))))(Tile((id \ - e762e87d-b774-4252-a1ab-c34bea3b6b15)(label(>))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 8))(sort \ - Exp))((shape(Concave 8))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - f3bb6def-0e7b-4c50-8b25-69bcb18bf3c6)(content(Whitespace\" \ - \"))))(Tile((id \ - 19dbccf6-f10a-4ab5-a593-ae02caead949)(label(x))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 5c33a7b6-45c7-4c06-b2ba-2b911215afb9)(content(Whitespace\" \ - \")))))((Secondary((id \ - b09f12cc-5e07-4817-9453-eda2f17d0de8)(content(Whitespace\" \ - \"))))(Tile((id \ - e34a2a9e-3a4b-493e-842b-6660b9f9660f)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - bb9847c6-bc3d-466a-95bd-f94dfacb9c43)(content(Whitespace\" \ - \"))))(Secondary((id \ - fa051acc-9c99-4009-b372-d32b0a60f9d2)(content(Whitespace\" \ - \"))))(Secondary((id \ - b284bb01-020b-45b9-a925-a1321f840637)(content(Whitespace\" \ - \"))))(Secondary((id \ - 70482e7f-5c1b-4d86-aa01-0c25112c7680)(content(Whitespace\" \ - \"))))(Secondary((id \ - 7e1b8771-bc5f-4113-bd94-5205a20f29b4)(content(Whitespace\" \ - \"))))(Secondary((id \ - 4698ffa7-5be7-4a30-bafc-9173a684345d)(content(Whitespace\"\\226\\143\\142\")))))))))(Secondary((id \ - fa20e15d-c1c7-4a2a-b289-4e2e63224c51)(content(Whitespace\" \ - \"))))(Tile((id \ - 769479d5-4a41-4fb3-b311-9694b67ecdac)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 90ac269a-0a3a-4fa0-bb72-74c3660df025)(content(Whitespace\" \ - \"))))(Secondary((id \ - b41554b7-372f-4068-93ee-e02bdba3d3a7)(content(Whitespace\" \ - \"))))(Secondary((id \ - 2a824dfd-8863-4fc5-97da-d7e6be64e4b9)(content(Whitespace\" \ - \"))))(Secondary((id \ - 0d86f763-4fd6-4635-a246-80857cfcd5f6)(content(Whitespace\" \ - \"))))(Secondary((id \ - 3206c0eb-4ee3-40d6-97e4-8c2e218b4bc9)(content(Whitespace\" \ - \"))))(Secondary((id \ - e5771d07-cff9-438b-b15a-bfac4e7fb62a)(content(Whitespace\"\\226\\143\\142\")))))))))(Secondary((id \ - 6bebf9b7-d402-42d1-832e-d9655757744e)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - c81e9cc0-f7ee-4f8a-a423-ccb229c01d90)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 994e1938-e562-4bfe-ac53-ee9870827b80)(content(Comment\"# \ - Tuples #\"))))(Secondary((id \ - bd4094ad-28ee-45ac-b9a6-f41706a255b6)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 5d821910-ebb1-42da-a79c-eee1368d6e03)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 82843ab0-2415-4a11-bc88-1b633c52f922)(content(Whitespace\" \ - \"))))(Tile((id \ - c93c847c-7ab8-494c-a6e9-422662c7e8d4)(label(tuples))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 9eaf76ed-8964-409d-b6af-3b95c6e5dfe1)(content(Whitespace\" \ - \"))))(Tile((id \ - cd39681a-c09e-482d-8097-b460aba0d9b6)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 5be55fff-5bcb-4702-a9f4-b7268e24df06)(content(Whitespace\" \ - \"))))(Tile((id \ - d321c385-1d0a-4b0c-aaa3-08219a0f753e)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - b3335759-3082-40c4-96a7-0bb91ec4b5a5)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 078e0901-8966-4b75-8c49-a4b7538e3c52)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 14))(sort \ - Typ))((shape(Concave 14))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 2f09e9ed-8d04-4886-9132-62f7016141ee)(content(Whitespace\" \ - \"))))(Tile((id \ - e840f2c5-8cf7-4c2a-8205-6721b3fdcaf8)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 9a0d92f9-ce88-4739-9542-96da69513ed4)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 14))(sort \ - Typ))((shape(Concave 14))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 84d5437c-c902-4e56-a124-15eb74f4186a)(content(Whitespace\" \ - \"))))(Tile((id \ - 0af23744-9cab-4df9-81d9-6215876eedc3)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - f0ead96e-cb4c-4764-99fa-796245a2abca)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - efd7ba45-af47-47e7-880e-3a64aeb9eb04)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 14))(sort \ - Typ))((shape(Concave 14))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - b01501a6-df97-4345-bc78-4f0315501c31)(content(Whitespace\" \ - \"))))(Tile((id \ - b9b464cd-b0e1-476c-8b2c-6c633e1e483a)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ - 8ac7fc3f-a8b1-43fc-824c-4b6c18070fee)(content(Whitespace\" \ - \")))))((Secondary((id \ - a575cd4e-ecea-4688-b661-02d63708740c)(content(Whitespace\" \ - \"))))(Tile((id \ - c7f190a0-f72b-4072-8eb1-8b5c77540988)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 9142de4e-e8df-44a9-8fca-6d04fc13158c)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 166ef475-8dff-4bb3-b595-1e84944625ab)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - fe4aeee1-32e1-4274-bf64-103e3491570c)(content(Whitespace\" \ - \"))))(Tile((id \ - 5b8af094-0994-4401-ae76-a1332b3af9e3)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - a09e402e-92a6-4f6b-b855-cd8d34161442)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - eea23743-15f8-4d76-8892-b00491dd662e)(content(Whitespace\" \ - \"))))(Tile((id \ - e6659b71-12a7-46bd-bf69-a700d2abc4cb)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 11784350-3981-454d-b66c-1232d578b152)(label(false))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 578571ed-ad92-4f0f-af8f-99bb5511beed)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 1043854d-79a4-4a87-b984-1a51ba60810d)(content(Whitespace\" \ - \"))))(Tile((id \ - e380669f-f318-4d4d-aab5-661105700301)(label(3))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ - b1beeeac-1210-4341-bcb7-e5ecea396dc6)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 1394f1e7-0251-4c39-a51f-8d7151035854)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 0a24e707-5aeb-48d5-bea0-c72c22a1feff)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 730775b2-ed6e-4cda-9058-2ab2e381ce55)(content(Whitespace\" \ - \"))))(Tile((id \ - 8c838d69-2f5f-4144-bc7e-d386d25d4f35)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - d587513e-d54c-4c85-98ba-e861d28f5bd9)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - ee1e68b8-37dc-4ddb-ae70-11fcf5d15929)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 0f0080da-d789-478e-8e4a-6628b9f1bf9e)(content(Whitespace\" \ - \"))))(Tile((id \ - 554496e6-8ef3-4843-a4c9-8e2def5c7244)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - bd865f8f-6aa7-4c07-a96f-1bf7a35d2f87)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 91807c7d-746d-4d3b-887b-11e3d0ab95c8)(content(Whitespace\" \ - \"))))(Tile((id \ - 3300f21b-c939-418d-80e0-c2258d21bc03)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 0c7ee6f1-5cc8-439b-b6b9-42c27efa173a)(label(c))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 2e8d812b-b09d-4791-89cd-0254d2ad937e)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - a3651e80-e491-4606-a7a8-3f61793c7f50)(content(Whitespace\" \ - \"))))(Tile((id \ - e16ad8c4-62ec-472f-99ee-e63f1f5eb4d2)(label(d))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children())))))))))))))(Secondary((id \ - 25012974-8c3e-48a9-9788-c95fa9403027)(content(Whitespace\" \ - \")))))((Secondary((id \ - 400972a1-6061-49cd-8081-fb56d05fec71)(content(Whitespace\" \ - \"))))(Tile((id \ - 16396d07-b06f-42a8-81f2-d6492bd1f4a1)(label(tuples))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - df60af23-f967-4ff9-bdc4-860afaa2d598)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 89e15fb4-911c-45d4-82b2-69b6c5f841d0)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 25dc978f-32eb-4bd5-98bb-9f285f419bbe)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - aaba7119-46ab-4f2d-a84f-7592bef45bc6)(content(Comment\"# \ - Functions #\"))))(Secondary((id \ - f44d3b93-1361-4bf0-b905-8a299258389c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 78d576a7-23ef-4ec3-bc22-fc278b11000d)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 4e1855ef-e374-47ec-97d4-ccfd78d8ac2a)(content(Whitespace\" \ - \"))))(Tile((id \ - 018babaa-c3ed-4ec9-98fc-465dcafb8798)(label(y))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - e11491b9-4080-4101-bfb4-e494f2143143)(content(Whitespace\" \ - \"))))(Tile((id \ - f78cd590-2607-4e10-b542-d8146cde96d1)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 0173a2d5-2e2f-41f8-bfd6-a073f7748090)(content(Whitespace\" \ - \"))))(Tile((id \ - 19468059-8f7d-4c76-8c90-85749aa5d436)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - f1a3b0cf-b00f-4c14-96a7-8938cb74a2e7)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - ec2c7da3-499d-46eb-98b1-acd76e907036)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 14))(sort \ - Typ))((shape(Concave 14))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 2d50fd9a-ce13-41f3-876e-8d02f1f38930)(content(Whitespace\" \ - \"))))(Tile((id \ - 64af5514-8356-4031-a08e-cc595e5dadeb)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 7b4a7722-e9d5-4003-b838-4bdefa5caedf)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 14))(sort \ - Typ))((shape(Concave 14))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 34751550-07ce-4ec8-90af-554af3376aea)(content(Whitespace\" \ - \"))))(Tile((id \ - 2f20e50f-8b20-4330-9bb9-b19e8ca65a2c)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 85852b82-d059-4b20-842c-4901f989b8d3)(content(Whitespace\" \ - \"))))(Tile((id \ - 84eda9d6-e032-4d41-be2d-d60a116697c2)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - e812ed1e-cde2-4588-b818-e214db723b0b)(content(Whitespace\" \ - \"))))(Tile((id \ - 14d6d02c-a6e5-4151-a161-01f262720c99)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 6d90b837-9847-4018-9cf0-788ea8b1e643)(content(Whitespace\" \ - \")))))((Secondary((id \ - 7ac2f5e0-a88f-4974-9438-3b26b3637730)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - ed89344a-b7bb-4ec3-83b8-3ef8d8348fc9)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 2ec9cd63-1606-4c15-9d51-c385430e1aab)(content(Whitespace\" \ - \"))))(Tile((id \ - b19e4e41-705f-4abb-a2fd-9478598ccf65)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - c97b3392-0c6f-4392-9dca-37e9bfedf333)(label(m))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 12a742d5-f2ab-4986-ab82-2f77bce7b302)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 28403564-8d15-4a83-8372-bcba2aef2b62)(content(Whitespace\" \ - \"))))(Tile((id \ - 2c37665c-5b98-4ebf-bdbc-04754f00ede7)(label(x))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - bfb06ed6-3467-4b99-81ca-47c3bc03479b)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 9b2fe42c-e350-48ac-9916-7ce10c6a18f3)(content(Whitespace\" \ - \"))))(Tile((id \ - 8df94600-730b-4e93-8c03-3023049b1d62)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - 21a86c61-9700-47ca-b83a-6988d5fbb78b)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 8891190b-2c30-4763-9b83-da5a512f0497)(content(Whitespace\" \ - \"))))(Tile((id \ - ab616f81-d96b-48e2-8413-d5de88522b8d)(label(m))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 5c095f11-6a61-4769-87b2-7296227ab352)(content(Whitespace\" \ - \"))))(Tile((id \ - d1527394-e012-41b5-b514-99e3b2f442be)(label(*))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 4))(sort \ - Exp))((shape(Concave 4))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - e17038d2-e745-4544-82f9-edd70afbe263)(content(Whitespace\" \ - \"))))(Tile((id \ - bd895bb2-9b48-436f-80df-69d110ca0e59)(label(x))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 3cf62237-e7a6-4a53-bb9e-136fa5da1a41)(content(Whitespace\" \ - \"))))(Tile((id \ - b79be3d6-b663-471a-86ab-afa3d5b6106c)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 5))(sort \ - Exp))((shape(Concave 5))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 6d877ae4-a7c6-4a3e-ab2b-9a0aa7c1541f)(content(Whitespace\" \ - \"))))(Tile((id \ - 93c6ff12-7ff0-4130-9f29-5a4aa4e48a60)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - c894944f-a62f-47d4-b207-831c8203c6a6)(content(Whitespace\" \ - \"))))(Secondary((id \ - dca52907-fcae-440f-a461-3c1d71dcd76d)(content(Whitespace\" \ - \"))))(Secondary((id \ - 1954f6d4-a423-4f09-8335-ac1746fe8b03)(content(Whitespace\" \ - \"))))(Secondary((id \ - 3016d8f3-c36f-43f5-9267-54ef1e55e59c)(content(Whitespace\" \ - \"))))(Secondary((id \ - fd5c3324-2769-4c8f-bc39-2301805b91d5)(content(Whitespace\" \ - \"))))(Secondary((id \ - 77c5849e-5dd2-49d3-a2de-64f3110d7d62)(content(Whitespace\"\\226\\143\\142\")))))))))(Secondary((id \ - 65cb9542-9565-465f-90bf-d34da80fefb5)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 5008fbd3-bdd1-4c2a-a1a2-93157ae9ea18)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - eb863a3e-f0e7-4ec4-8532-4372ac9aea38)(content(Comment\"# \ - Recursive Functions (arrow type annotation required) \ - #\"))))(Secondary((id \ - fe6f4241-8508-4c6a-809f-09e529aeb12c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 6021d47f-f9c3-456b-af3f-21beb230e9e5)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 71af5914-9062-4019-a727-cf8107020c6f)(content(Whitespace\" \ - \"))))(Tile((id \ - 1e80ee10-eac1-47f4-ad70-3607d85a55ee)(label(double_recursively))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 2c8f5d4d-3967-43a6-8188-9bf00878a5d6)(content(Whitespace\" \ - \"))))(Tile((id \ - ba2859cc-929a-43ef-a37f-8d5a4abbffb7)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 77c87eca-53b2-423e-a8a5-f15b6a9cc983)(content(Whitespace\" \ - \"))))(Tile((id \ - 35b83201-eeca-4c96-a14d-054a17a6c158)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 30326705-2cc8-40b0-a555-ae8fd88f3c33)(content(Whitespace\" \ - \"))))(Tile((id \ - 3471cacc-1f76-4cb7-ad52-c7ebf4b898c2)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - d3d4d1ac-3d65-495d-bedd-8da3b3959647)(content(Whitespace\" \ - \"))))(Tile((id \ - 5a5068f9-6f81-4922-98bf-d341ae555940)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 7e9e7b9a-3565-4ab3-a609-d03ea47e1b09)(content(Whitespace\" \ - \")))))((Secondary((id \ - a7a33cba-40ab-4ad7-9f7a-fcde3444a5bb)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - d6bda773-e64c-4bc6-bda6-e5052186143a)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - c00e394a-ec9a-4b6d-83ef-402c2249f362)(content(Whitespace\" \ - \"))))(Tile((id \ - a0306582-db7b-4c38-898e-bce7b292eddb)(label(n))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 1fc1b0df-dce7-417f-a5f4-d5ea3f46583c)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - c93de8ec-faad-4636-a415-eeaf61a0ab8d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - ff02cd1d-7545-495c-80c6-042df0a797e4)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 12))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 9eb7bd90-5172-47a7-bbe9-195f35ed72c5)(content(Whitespace\" \ - \"))))(Tile((id \ - f2054b2c-e699-41a9-9fb3-0ee0fdeff49b)(label(n))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - cbc67dc2-bb04-4f84-8461-14c0629fbbdc)(content(Whitespace\" \ - \"))))(Tile((id \ - b6785035-f1fb-4420-bb00-3ef83c5d893d)(label(==))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 8))(sort \ - Exp))((shape(Concave 8))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 10646012-b57b-4e19-8c89-a668b16c98f0)(content(Whitespace\" \ - \"))))(Tile((id \ - 397b06df-1410-467c-88f2-e6cb0c6160b6)(label(0))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - b65c10ff-2e33-4490-bb73-66a08244d442)(content(Whitespace\" \ - \")))))((Secondary((id \ - b519ba78-08c5-4912-9d83-0c0ca0723291)(content(Whitespace\" \ - \"))))(Tile((id \ - 587a6001-8bb6-4534-a871-85fa11ba1f88)(label(0))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 81cd76f6-013f-4ec5-92c8-e85e72e7904b)(content(Whitespace\" \ - \"))))(Secondary((id \ - 62fbaead-3370-4884-97c3-fb3423d12c53)(content(Whitespace\" \ - \"))))(Secondary((id \ - 8236b87a-af05-47ba-8b13-9decacceb05a)(content(Whitespace\" \ - \"))))(Secondary((id \ - a016ae22-fac0-4601-8289-e7886600e52e)(content(Whitespace\" \ - \"))))(Secondary((id \ - f7451539-ecae-4d7d-9311-308a07af4153)(content(Whitespace\" \ - \"))))(Secondary((id \ - 782d7a46-80b6-4ad1-be96-4f3150fadb1c)(content(Whitespace\"\\226\\143\\142\")))))))))(Secondary((id \ - 66237ba5-bceb-48e5-8397-3344adb5931c)(content(Whitespace\" \ - \"))))(Tile((id \ - 4eb3b54a-f436-4d6d-9b9f-bf2a67de99d2)(label(double_recursively))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - cd795135-261a-4008-bbe8-5c6e68da52ed)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 79419365-8519-415b-b6dc-1adad6e01c38)(label(n))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - c3cfc0aa-8f1a-4bc8-83ee-3b56b065912f)(content(Whitespace\" \ - \"))))(Tile((id \ - a3bee0aa-8e39-41c0-868b-2c65354a9477)(label(-))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 5))(sort \ - Exp))((shape(Concave 5))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 02f993e6-62c6-4ca2-a70d-94da454ef05b)(content(Whitespace\" \ - \"))))(Tile((id \ - 5f2b5629-2925-4b3c-992e-b597a799436f)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 76a93d87-c2e4-4b20-b682-29d9c26874f0)(content(Whitespace\" \ - \"))))(Tile((id \ - 3e684fb6-d094-4b83-a1f6-cf691595c0e8)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 5))(sort \ - Exp))((shape(Concave 5))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - d5a052ff-f03b-4776-86c7-0e467b007971)(content(Whitespace\" \ - \"))))(Tile((id \ - 8d7620cd-9920-4a3e-8866-49a03e1897a9)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - ffe92905-41fe-4870-9203-f6d3c0007ff6)(content(Whitespace\" \ - \"))))(Secondary((id \ - d11652a2-177a-44a4-ae0a-f3ba4bfcad16)(content(Whitespace\" \ - \"))))(Secondary((id \ - 4bbec8f4-8d6b-448f-a4af-77bf88bc7414)(content(Whitespace\" \ - \"))))(Secondary((id \ - c94b58e8-b42b-4671-a2ac-38aa144cddea)(content(Whitespace\" \ - \"))))(Secondary((id \ - d3882402-bbf4-46e8-a5e4-3bf81fd9a615)(content(Whitespace\" \ - \"))))(Secondary((id \ - 209e7f6a-02eb-46a9-ad71-0d1ff589ea18)(content(Whitespace\"\\226\\143\\142\")))))))))(Secondary((id \ - bac0da86-7b99-4039-a855-e71423c4e243)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 961a93f1-32c1-495b-b2b2-2ace1f642b17)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 78e100cd-53af-4229-ba9e-3ee7e6d32bf2)(content(Comment\"# \ - Lists #\"))))(Secondary((id \ - 35c19804-5897-4218-ad2e-faf7f4b6eb3d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - b4ee3364-3899-4aac-a842-68fbcd05b78f)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - e96e6634-c77a-4fa5-8d7f-a15284bcda36)(content(Whitespace\" \ - \"))))(Tile((id \ - 17c3ca0b-431f-431d-9995-32b54a17970f)(label(empty_list))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 79d3a3df-8b56-4076-ace5-4126ded2d025)(content(Whitespace\" \ - \"))))(Tile((id \ - bd6cf356-7705-4477-af1b-2a93bc4c00e8)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 7a6009a2-c76e-49ec-9c69-5885da3b52c5)(content(Whitespace\" \ - \"))))(Tile((id 60c043b0-a18c-4078-9ab4-61163d201924)(label([ \ - ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ - Typ))((shape Convex)(sort Typ))))))(shards(0 \ - 1))(children(((Tile((id \ - fc97d9f0-c37a-4edf-b433-1965717eb972)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 5470966b-c43d-4f14-88f8-742ff48e9cbe)(content(Whitespace\" \ - \")))))((Secondary((id \ - 9795d258-7fa5-4deb-ab7c-ab4ba14eceae)(content(Whitespace\" \ - \"))))(Tile((id \ - 047d638a-8dc9-49ff-be48-26179ed85615)(label([]))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 5b8cc8bf-7895-49f0-ba87-36395960d433)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - d6c76a6f-5bc3-44cd-b72a-e8d8d6055d77)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 0cfaa336-d277-4057-b392-b932d0590ff3)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - c7fe2de7-957c-4f58-ace2-e05f7e40b246)(content(Whitespace\" \ - \"))))(Tile((id \ - 9c9971c6-9ce6-4ff0-bd8d-6d9964896089)(label(non_empty_list))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 56c6a900-7672-4584-b42a-8420648405e4)(content(Whitespace\" \ - \"))))(Tile((id \ - c4331229-6241-4bc7-87c6-b6023d075304)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 9c7fd3be-8e4a-4293-8ac3-ab7fd54268b0)(content(Whitespace\" \ - \"))))(Tile((id 6aba9166-b530-4f2f-9765-dd9d7396454d)(label([ \ - ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ - Typ))((shape Convex)(sort Typ))))))(shards(0 \ - 1))(children(((Tile((id \ - b4bc8dab-fcf3-4a45-acc9-e8ebaa90ef54)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 91d78a6c-d6bb-4ae2-93cb-3872465754a7)(content(Whitespace\" \ - \")))))((Secondary((id \ - f01f5411-0591-44bd-8710-d2911c719d57)(content(Whitespace\" \ - \"))))(Tile((id \ - de00ac61-5f29-4b64-a60b-07be2fbe3180)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - c9caec2e-1b27-4e12-8c2f-b951aecd87c1)(label(::))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Tile((id \ - ed93c8a1-82c2-48fe-85a3-7a86bdca69e2)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 032bea77-674f-4dea-8ac1-559fe947f6bf)(label(::))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Tile((id \ - b2942d52-aa7b-4f8b-b705-6a3c57a67cdc)(label(3))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - d19ebc20-bfff-48db-ae95-185f3efdd46b)(label(::))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Tile((id \ - 9c33b3af-b95e-45ac-b165-77038efb602a)(label([]))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - ded4f5c7-72ae-4476-98d7-6906325de4e1)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 715a03d5-5d58-4eaa-9ab5-5b33da845f14)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - cf2e40c8-e04b-4711-bcdd-38513d108052)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 11b3cdb3-3362-4f2b-93c8-593710a60c2c)(content(Whitespace\" \ - \"))))(Tile((id \ - 2cae279a-a22d-4cea-990b-dee583b7b675)(label(list_literals))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 04b8fa4d-70eb-4ce5-b35f-c33276ff9a91)(content(Whitespace\" \ - \"))))(Tile((id \ - a23c17e2-0be0-45c5-afc0-45ad662c2367)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 3ea34ae2-086e-4424-9508-3498891ff06a)(content(Whitespace\" \ - \"))))(Tile((id 2007e421-be10-45e2-ada6-742bc2819b21)(label([ \ - ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ - Typ))((shape Convex)(sort Typ))))))(shards(0 \ - 1))(children(((Tile((id \ - b53a9bf8-7a7a-4fbd-abff-e14d83c48701)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 1d386def-e315-447e-b24f-4b86314e0c08)(content(Whitespace\" \ - \")))))((Secondary((id \ - 57a10c26-224b-4820-b1fe-fe61df094fda)(content(Whitespace\" \ - \"))))(Tile((id 54d0e0b2-3c9b-439c-8b7f-d8b524bc69e5)(label([ \ - ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Tile((id \ - 920d4b0f-1b4d-4f04-88e6-3fe87e7a65a2)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 5f69d188-7d03-473c-9140-a15f2499c561)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - eec2c6b0-f47b-429a-aaec-d1ef320ee675)(content(Whitespace\" \ - \"))))(Tile((id \ - 1dfd11d6-3b87-4c62-b2a3-96c4b524bffc)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 4ffefd84-9e8e-41fc-80da-263bcf450a35)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 967333b4-fff6-44d1-938e-f7de598266ad)(content(Whitespace\" \ - \"))))(Tile((id \ - db5d965d-a45f-4e3d-977d-56ae69bf0ff6)(label(3))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - c5d264bf-7f1b-472a-ab12-33b1e9c1651e)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 15882211-ecd0-4ab8-ab58-6579fc6dfefb)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 4d1c6d2c-5fda-40ec-a1ef-6cccf71fb769)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 99522f41-83e8-445f-9c64-5888fcd99a41)(content(Whitespace\" \ - \"))))(Tile((id \ - 3b19f467-00f9-4ec9-a59b-b3783d9c480b)(label(length))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 438c2f11-7687-40f1-ac6c-77b52b5ae19a)(content(Whitespace\" \ - \"))))(Tile((id \ - 0a57c206-20f1-4e10-b9f3-bbb7d7586800)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 4ece4618-8d70-48be-9c3f-9da04343855b)(content(Whitespace\" \ - \"))))(Tile((id 06de5f69-5c47-4c4b-a8e9-e412a85b5490)(label([ \ - ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ - Typ))((shape Convex)(sort Typ))))))(shards(0 \ - 1))(children(((Tile((id \ - 7ca778cc-b87e-48e8-911c-958b79e1cf92)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 4e580f3c-fb6c-4eff-ab45-b6d665f917b4)(content(Whitespace\" \ - \"))))(Tile((id \ - a4e7f377-5905-4d1d-854a-81a7a8dedaaa)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 6dc204ae-c92d-465e-b046-db7ad394938e)(content(Whitespace\" \ - \"))))(Tile((id \ - d2f90cec-a6b8-41c5-83d3-2f145cc05f99)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 6058204c-92a8-4b46-b823-4ebd9aeabd24)(content(Whitespace\" \ - \")))))((Secondary((id \ - 164bd788-aaf3-437a-8206-647a2bc132eb)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 18c66069-7229-4d7b-a013-74ec2d67d237)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 1946d033-a508-4a4c-9b22-6233aec311ea)(content(Whitespace\" \ - \"))))(Tile((id \ - 644d0e44-e2fc-4fd7-a6bb-eb3306f49eeb)(label(xs))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 3710885e-498b-4047-a332-fb855a982b84)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 5e52c8bc-9c27-4755-9107-de2867a85244)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 486ec00c-6ff6-4523-9def-90ab86bf90c3)(label(case \ - end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - e5fdbc48-7e48-4c89-8909-31cf2b62cdc0)(content(Whitespace\" \ - \"))))(Tile((id \ - 7f1d7ec1-01a6-4fa4-ba9d-85db637c553f)(label(xs))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - ce6cdbcb-93c7-43d5-9714-092ea2630cd4)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - efe768d5-5682-4768-bf10-c756fad7a038)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ - Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - e132ee92-6f29-44f3-bcd2-0a21689ea8bf)(content(Whitespace\" \ - \"))))(Tile((id \ - 017ead53-406a-412d-a23d-d21c6313a0a6)(label([]))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - d229c1dc-26a2-468a-b36a-d5eb92d7535d)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 36244853-42a8-4b21-8fab-6447580622f5)(content(Whitespace\" \ - \"))))(Tile((id \ - 1919b6f6-63b4-4a2f-8411-a49d2b0de0e9)(label(0))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 117345cb-4180-49d8-81cf-5720bc09a76c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 0b0c160b-a1ee-45e1-b330-44150a7f263b)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ - Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 61f79bfd-9396-40f4-ba0f-cce78ebb2ca4)(content(Whitespace\" \ - \"))))(Tile((id \ - e59f2cf1-4e84-449f-9cb6-b003d07605cd)(label(hd))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 80c95d1a-b038-48d5-8413-249df02caf5c)(label(::))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 6))(sort \ - Pat))((shape(Concave 6))(sort \ - Pat))))))(shards(0))(children())))(Tile((id \ - 4ffa0ea7-c3d0-48f4-89e1-d508d974d9a6)(label(tl))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - c086568f-d41a-4696-ac05-f33a13a3d612)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 28b2008b-39bd-48ab-803d-e3e00d69f67e)(content(Whitespace\" \ - \"))))(Tile((id \ - 7df6c8b5-9636-42a4-9bc0-42d61b5f4631)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 56c79884-7a1e-49d6-a659-ef07c7383eba)(content(Whitespace\" \ - \"))))(Tile((id \ - d293b8a7-037d-406a-be45-fd9ef543e423)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 5))(sort \ - Exp))((shape(Concave 5))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 2fcc2671-4432-40ab-bc0c-085df34a1034)(content(Whitespace\" \ - \"))))(Tile((id \ - 3cbc29ae-1f9f-49cd-ad81-21cdd6154572)(label(length))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - ca76747e-a814-428b-ba6a-d6e88d0b3a94)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 483daf30-152e-4a61-960b-ea2e34e399d8)(label(tl))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - a191cf7b-f477-4064-9c81-eeed31cdb12e)(content(Whitespace\" \ - \"))))(Secondary((id \ - d95e09c9-f6ba-45f6-a42a-07039d5780f4)(content(Whitespace\" \ - \"))))(Secondary((id \ - 0b868e0b-e1e4-4ff7-bf91-0fdd16adf9a5)(content(Whitespace\" \ - \"))))(Secondary((id \ - d5824218-661d-4526-99fa-1b195dbd0a7b)(content(Whitespace\" \ - \"))))(Secondary((id \ - fccf51d0-1ab5-4f82-a218-e924c212937a)(content(Whitespace\" \ - \"))))(Secondary((id \ - 947e47dd-107c-436b-8f20-6fc2f7fad6c2)(content(Whitespace\"\\226\\143\\142\")))))))))(Secondary((id \ - 71506d92-5300-4e79-be2d-085b671d58ab)(content(Whitespace\" \ - \"))))(Secondary((id \ - a5d67ee9-fb1c-49c0-b906-636b1a872d0e)(content(Whitespace\" \ - \"))))(Secondary((id \ - 12f4f0d2-f691-4cf6-ad22-eed1b96203c6)(content(Whitespace\" \ - \"))))(Secondary((id \ - 4d33e811-b6e0-42b3-8f89-061c7b0f718e)(content(Whitespace\" \ - \"))))(Secondary((id \ - aa058dbb-02d0-467e-9422-8554e9b07741)(content(Whitespace\" \ - \"))))(Secondary((id \ - f210e7bc-619c-4848-847b-8cd228c43340)(content(Whitespace\"\\226\\143\\142\")))))))))(Secondary((id \ - e8ccaf1d-bb31-4062-b2df-cce7f5a3b7dc)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 75d95dc0-f522-4943-ae54-90856201704f)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 78c38d95-74fa-4054-93ba-118df77e2a80)(content(Whitespace\" \ - \"))))(Tile((id \ - 68dc4a80-94b7-45d3-b317-3ce1931ee52d)(label(has_at_least_two_elements))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 42441ccd-6ea2-4579-bf36-6eb359bbd275)(content(Whitespace\" \ - \"))))(Tile((id \ - 1ef2f1b0-58cf-434d-ba60-e84b082c7bf7)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - e5c0d335-dbd4-47bd-af72-43b9c782cc1e)(content(Whitespace\" \ - \"))))(Tile((id 4721add5-b41c-46d4-9ff3-b44b1bd24770)(label([ \ - ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ - Typ))((shape Convex)(sort Typ))))))(shards(0 \ - 1))(children(((Tile((id \ - fdb7d4f9-dd01-4919-b227-f0d3fffc1cd7)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - e14c1521-9da3-4cf3-95d8-59b32257b662)(content(Whitespace\" \ - \"))))(Tile((id \ - 08920087-d272-4ba6-bdf3-93edaeb021bb)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 0c620183-6b6e-4605-8c7d-a07c526a86be)(content(Whitespace\" \ - \"))))(Tile((id \ - 16612644-16a2-4fa7-b22d-b74db2ad9333)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 74a3ee2d-ac2f-4712-9110-ce522f9851ec)(content(Whitespace\" \ - \")))))((Secondary((id \ - a44e9372-c563-470b-a735-1109ac1dd743)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 961459a6-7b3b-4efd-ae2d-f0e7b724fb6c)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 9ee89b19-5be4-41b8-b870-75d5903eee7f)(content(Whitespace\" \ - \"))))(Tile((id \ - e2b8680f-34ae-41d7-9885-125463b8ccb6)(label(xs))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 81ee8032-53c6-4792-a186-53e68c504c80)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 81159f4d-fcb2-4c97-bd22-9696c01c3e9c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - d183c63d-aa0c-486a-9b47-82d275f02ae2)(label(case \ - end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 6526e4c6-356b-4e5b-82f0-d2f9534c1f1b)(content(Whitespace\" \ - \"))))(Tile((id \ - 0389bee6-2ab8-4792-a69a-821b4f610819)(label(xs))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 200c3e5d-86cd-4317-983e-fa56aaab1870)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - e44bb1a9-af82-438c-bd25-08eb88f89a2d)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ - Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 28c01c20-ac76-400e-ac3f-327a19705d0e)(content(Whitespace\" \ - \"))))(Tile((id \ - 470c6bd2-f5fc-4523-8a8a-3e77d2ae7466)(label([]))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 1dd29e31-4b83-47aa-a6e0-0e5629837f2e)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - a2b392fb-58d6-4ae9-850f-7278730f70d1)(content(Whitespace\" \ - \"))))(Tile((id \ - d77b6106-b354-4c67-bccb-4e91e2f4a9df)(label(false))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 6532c791-0e40-41c6-8bb3-5816c36a1919)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 1cc4d6e3-777a-44c3-bde5-35748d34caad)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ - Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - f2709538-ddb1-4c95-a2d4-04f93bcd8825)(content(Whitespace\" \ - \"))))(Tile((id \ - c3dda5a5-bf3c-4312-921b-2c15dfd824db)(label(hd))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - e14d689e-6556-4bbc-a7a9-7e57e71e4f6a)(label(::))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 6))(sort \ - Pat))((shape(Concave 6))(sort \ - Pat))))))(shards(0))(children())))(Tile((id \ - aae8d9a7-16f3-4a05-b3c9-2cf987bce74f)(label([]))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 894e780d-dffe-46bc-9d20-1f46b3d20f22)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 22c0fd84-c1e7-4c44-8d24-32d783b04658)(content(Whitespace\" \ - \"))))(Tile((id \ - aa21c0b5-6f37-4332-bea8-ce5f16b8b1b0)(label(false))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - eab907d2-1671-47b7-a390-850ad7261f77)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 3e3d0450-5fa6-457a-9ec0-0a3673c9edfb)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ - Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 930b7c09-b500-482f-a897-2046cc8df242)(content(Whitespace\" \ - \"))))(Tile((id \ - 7001fdd3-9677-4c8e-8aee-8584ad908830)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - a2758538-2825-47fa-8c26-03d79f0dc609)(label(::))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 6))(sort \ - Pat))((shape(Concave 6))(sort \ - Pat))))))(shards(0))(children())))(Tile((id \ - b38f41fa-3940-4c03-91ad-6835f8b61c55)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 01869da0-f0c2-4280-92cf-9006f82beaf7)(label(::))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 6))(sort \ - Pat))((shape(Concave 6))(sort \ - Pat))))))(shards(0))(children())))(Tile((id \ - acfc3a3a-6e41-498a-8c13-ea99fc347d7e)(label([]))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 0dab81fa-5f4e-402b-a32f-f536b7919b90)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 0e6808c3-004e-4a9c-8de2-dfa7d8cc2983)(content(Whitespace\" \ - \"))))(Tile((id \ - 5f515da4-5076-436a-bcc6-3f7eafb1ec57)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - e9889fed-8b2a-4c88-ab41-a5090959af3a)(content(Whitespace\" \ - \"))))(Secondary((id \ - e26de303-8012-41b2-b4ea-220f9af7ea76)(content(Whitespace\" \ - \"))))(Secondary((id \ - 91c4cba3-5758-4231-8a47-289da8a1df17)(content(Whitespace\" \ - \"))))(Secondary((id \ - 8cade609-6be5-4ee9-9b21-4447c6ef69c4)(content(Whitespace\" \ - \"))))(Secondary((id \ - 9c89af83-7b53-4adb-8cb7-0907b7734acd)(content(Whitespace\" \ - \"))))(Secondary((id \ - ba102ddc-ef92-487c-b01f-3e1dc2efa6c2)(content(Whitespace\"\\226\\143\\142\")))))))))(Secondary((id \ - 7a3de49c-f20e-4af0-b41d-785495eb6a72)(content(Whitespace\" \ - \"))))(Secondary((id \ - e81f0fc6-f40c-4cd3-bf98-e2fcf701d8bc)(content(Whitespace\" \ - \"))))(Secondary((id \ - 0bdac05c-55d5-4cbd-93bb-2dca79d9093c)(content(Whitespace\" \ - \"))))(Secondary((id \ - 0ff7ab9c-bbd8-4024-b0eb-c7a99fed2cda)(content(Whitespace\" \ - \"))))(Secondary((id \ - 329bf03b-159c-40b3-9b9d-a6c088dc82d8)(content(Whitespace\" \ - \"))))(Secondary((id \ - 33dd8e04-138e-4c10-a0d3-21170aac493f)(content(Whitespace\"\\226\\143\\142\")))))))))(Secondary((id \ - d74ffc8b-d059-4d7a-9e68-c03ea87db97d)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 325d816c-fcaf-4734-a327-3c7e241b7d9c)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 272ef5a0-043b-451d-a6e4-3f18571d2c60)(content(Comment\"# \ - Strings #\"))))(Secondary((id \ - 4d0dd9cb-c943-4384-a682-8884ac792b31)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 26109999-748a-492d-8991-dedcf22f3c8f)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 4b4ec423-bdf0-4f77-9cff-633eca5eb8f6)(content(Whitespace\" \ - \"))))(Tile((id \ - 8f2bf699-8a6e-4a4a-acce-4a801b081fc5)(label(string_lits))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 76fa4320-9686-418b-bae1-2e16981ef6df)(content(Whitespace\" \ - \")))))((Secondary((id \ - dc5fbac0-a612-4966-b776-a5b222ee2837)(content(Whitespace\" \ - \"))))(Tile((id \ - eb0ff38c-7c16-49f9-9547-019753f2f677)(label(\"\\\"Hello, \ - world!\\\"\"))(mold((out Exp)(in_())(nibs(((shape \ - Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 4561c14d-dc9c-4e62-9c83-2258ba03da27)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 8387e074-4d46-46a6-a37c-d10aab222c02)(content(Whitespace\" \ - \"))))(Secondary((id \ - a6f7d9a5-1f93-42a7-9365-fb6f3beb8c74)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - d573bc1e-fc6e-4c9b-bd47-b21d74a42b50)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 0a7aab63-f372-4baf-863a-99f536c5764c)(content(Whitespace\" \ - \"))))(Tile((id \ - 41148c0d-9e2b-49b5-be97-c798c36ec89a)(label(string_equality))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - fdbb6a30-47a8-4665-bd2b-709aad04126a)(content(Whitespace\" \ - \")))))((Secondary((id \ - bfb84ac4-7973-473c-b655-71b846366ae4)(content(Whitespace\" \ - \"))))(Tile((id \ - d2e0ac51-b1d5-47c5-9d9e-28671583db5c)(label(string_lits))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - c14d9212-5436-4359-aed1-4c12bc651145)(content(Whitespace\" \ - \"))))(Tile((id \ - 479deac9-99cd-44c2-afd7-83aa87dc31c3)(label($==))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 8))(sort \ - Exp))((shape(Concave 8))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 92d22bfe-5056-482f-ad46-5ed1c4787fa1)(content(Whitespace\" \ - \"))))(Tile((id \ - dec5173c-0001-412c-acec-9d1dc2ca4424)(label(\"\\\"Hello, \ - world!\\\"\"))(mold((out Exp)(in_())(nibs(((shape \ - Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 242b38cc-9ec3-496b-a61b-180d2dab6eee)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 2fcdc646-7a16-44a7-bdbd-2db157c25c29)(content(Whitespace\" \ - \"))))(Secondary((id \ - 0916a810-eeaa-4b3b-a5d3-3750e01e4ec9)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 3f1d1253-4e0e-4331-bf9c-180e141079b2)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 29d208e1-0c45-44d2-9d94-99224e7b7bae)(content(Comment\"# \ - Non-empty holes are the red dotted boxes around errors \ - #\"))))(Secondary((id \ - 394efbca-78fe-4391-aed8-7cf3e9954cff)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 5501da01-0362-43bd-90d2-2f73051ebd5d)(content(Comment\"# (you \ - can still run programs with non-empty holes) \ - #\"))))(Secondary((id \ - 83366e95-3f7a-43c0-b6dd-b8b856c15bff)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 8ff64362-463c-4a28-b9fb-c5874d923bb7)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 907bcaba-6a39-4298-be9c-a9933d6bb965)(content(Whitespace\" \ - \"))))(Tile((id \ - e3cc5308-0a4a-486b-8505-50d4759fadea)(label(non_empty_hole))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 3869b181-7c6a-4947-8188-34ac4be2e935)(content(Whitespace\" \ - \"))))(Tile((id \ - 6116797d-7f61-4299-8d03-b3b55489807f)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 2c2c4658-b792-43a5-8414-1cb5aae4c7c1)(content(Whitespace\" \ - \"))))(Tile((id \ - 3778ca66-6e86-4b5a-984e-de82e05a54e1)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 7406cf71-6145-4be2-80b9-c2a2a292175b)(content(Whitespace\" \ - \")))))((Secondary((id \ - 3d632ecf-da09-4334-8577-c8b9ede604d0)(content(Whitespace\" \ - \"))))(Tile((id \ - f5fb9f60-65fd-4b86-ac03-f79a42e79876)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - d9032067-95b2-4bc6-8813-402fb0516108)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 1add6c79-d411-4ab9-b51d-581ef672ed1d)(content(Whitespace\" \ - \"))))(Secondary((id \ - f59bc277-d399-48e3-8d1b-72164b9e13bb)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 446ce379-8fef-47e5-85d4-f7d3fc16dd6c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 31a81066-ecfa-49ce-a762-34904947da99)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 77d8a251-42c9-4631-a941-094827a503c4)(content(Whitespace\" \ - \"))))(Tile((id \ - 546b42b3-2f6a-4f08-9e69-854b8e88b1be)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 5))(sort \ - Exp))((shape(Concave 5))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 28d8c0a0-4515-4637-98ca-22e78630cf20)(content(Whitespace\" \ - \"))))(Tile((id \ - 09d04b4d-2f29-4aef-a73b-badd00299b3b)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))(ancestors())))(caret \ - Outer))"; - backup_text = - "# Hazel Language Quick Reference #\n\n\ - # Empty holes stand for missing expressions, patterns, or \ - types #\n\ - let empty_hole = in\n\n\ - # Integers #\n\ - let int_lits : Int = 1 in\n\ - let negation = -1 in\n\ - let arithmetic = 1*2 + 8/4 in\n\ - let int_comparison = (10 == 10, 1 < 2, 2 <= 3, 3 > 2, 2 >= 1) \ - in\n\n\ - # Floating Point Numbers #\n\ - let float_lits : Float = 1.5 in\n\ - let float_artih = 1. *. 2. +. 8. /. 4. in\n\ - let float_comparison = (10. ==.10., 1. <.2., 2. <=.3., 3. \ - >.2., 2. >=.1.) in\n\n\ - # Booleans #\n\ - let booleans : (Bool, Bool) = (true, false) in\n\ - let conditionals =\n\ - let (x, y) = (2 + 2, 3 + 3) in\n\ - if y > x then 1 \n\ - else 2 \n\ - in\n\n\ - # Tuples #\n\ - let tuples : (Int, Bool, (Bool, Int)) = (1, true, (false, 3)) \ - in\n\ - let (a, b, (c, d)) = tuples in\n\n\ - # Functions #\n\ - let y : (Int, Int, Int) -> Int =\n\ - fun (m, x, b) -> m * x + b \n\ - in\n\n\ - # Recursive Functions (arrow type annotation required) #\n\ - let double_recursively : Int -> Int =\n\ - fun n ->\n\ - if n == 0 then 0 \n\ - else double_recursively(n - 1) + 2 \n\ - in\n\n\ - # Lists #\n\ - let empty_list : [Int] = [] in\n\ - let non_empty_list : [Int] = 1::2::3::[] in\n\ - let list_literals : [Int] = [1, 2, 3] in\n\ - let length : [Int] -> Int =\n\ - fun xs ->\n\ - case xs\n\ - | [] => 0\n\ - | hd::tl => 1 + length(tl) \n\ - end \n\ - in\n\ - let has_at_least_two_elements : [Int] -> Bool =\n\ - fun xs ->\n\ - case xs\n\ - | [] => false\n\ - | hd::[] => false\n\ - | a::b::[] => true \n\ - end \n\ - in\n\n\ - # Strings #\n\ - let string_lits = \"Hello, world!\" in \n\ - let string_equality = string_lits $== \"Hello, world!\" in \n\n\ - # Non-empty holes are the red dotted boxes around errors #\n\ - # (you can still run programs with non-empty holes) #\n\ - let non_empty_hole : Int = true in \n\n\ - 2 + 2"; - } ); - ( "Types & static errors", - { - zipper = - "((selection((focus Left)(content())(mode \ - Normal)))(backpack())(relatives((siblings(()((Secondary((id \ - c2890a35-b3f1-4653-9767-8d5f9752ead5)(content(Comment\"# \ - Internal Regression Tests: Type errors #\"))))(Secondary((id \ - 090c5ddf-5c26-4a14-a1b9-eab92cb073c4)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 5a4d6644-ce5b-4818-a4c6-2905ca7b9d43)(content(Comment\"# Each \ - line should show errors or not as indicated \ - #\"))))(Secondary((id \ - 49670809-d955-4be4-8de7-a13e0c26ec98)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 8b8ae6b5-2df0-42a9-a2e7-d53e2e0517fe)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - d69298b9-16ce-48c6-a813-04d4c6acbb6f)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 87784971-c398-4a3f-9537-9a2eba847372)(content(Whitespace\" \ - \"))))(Tile((id \ - 9cc5b09c-65a4-4a8e-853d-62d8f15d4e24)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 1e775429-5e8e-4b11-b66c-9cc3c1324739)(content(Whitespace\" \ - \")))))((Secondary((id \ - 04d76c28-7577-41c5-964a-fc54eeae9062)(content(Whitespace\" \ - \"))))(Tile((id \ - 51f991bb-2c1f-435a-920a-a20148cbc2dd)(label(unbound))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - bf68d8ff-145a-4e77-a735-120746818a4b)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 4491f5f7-9ada-4420-acb7-fa9e6ec73fe9)(content(Whitespace\" \ - \"))))(Secondary((id \ - 474b7d65-a3a0-4c3e-b0f8-cf2a0ad43887)(content(Comment \ - #err#))))(Secondary((id \ - ffe1df31-0a25-4513-97c2-c36fc135468b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - ff782a2c-aef7-4a7d-9ae0-848429b11fbd)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - e2eca969-e0a4-4a91-a89e-878e09aec2f6)(content(Whitespace\" \ - \"))))(Tile((id \ - 3c035ee1-6d4f-47fc-a76f-94f51898e718)(label(Undefined))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - dc02b1d3-06fa-4b3e-aa76-9766d01c3bc2)(content(Whitespace\" \ - \")))))((Secondary((id \ - 1d42290f-3641-4c65-a280-94551377a573)(content(Whitespace\" \ - \"))))(Tile((id \ - 0b3c4696-05af-4c34-8ab1-515fbae5550f)(label(Undefined))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - b56b3924-e775-41ca-9e61-ac4112c6d40b)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - c2c7deac-19e5-41d8-9cc2-fe9e73a29960)(content(Whitespace\" \ - \"))))(Secondary((id \ - fec4e3ce-5421-40fb-96fa-8474e5a9fab3)(content(Comment\"# 2x \ - err#\"))))(Secondary((id \ - 02f65251-ccbd-4e70-b60e-cbe1e13adc6c)(content(Whitespace\" \ - \"))))(Secondary((id \ - cadfcea7-7c09-433f-8e03-df9e89dfd9e2)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 6c52236e-4a4a-4b7e-b318-84bd95c543ed)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 557dc615-9e1c-4a9e-a00f-15234e53a953)(content(Whitespace\" \ - \"))))(Tile((id \ - 13897887-613e-408c-b120-59b8666fc0b6)(label(true))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 34fd4c5a-2433-40a8-9ded-9c6500142356)(content(Whitespace\" \ - \")))))((Secondary((id \ - 83207004-3161-4071-a526-cf9459533d67)(content(Whitespace\" \ - \"))))(Tile((id \ - 2f5a444b-0006-47ac-bd94-14c9ffd80548)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 503d2940-fcd4-4a54-879d-81d129596ad1)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - e425406e-6252-47b9-8a4c-c8870d3c1376)(content(Whitespace\" \ - \"))))(Secondary((id \ - 13255468-04e2-4816-9461-74dce40c9b27)(content(Comment \ - #err#))))(Secondary((id \ - 9d763cf1-1e07-4c47-b8ef-2b6435de5a49)(content(Whitespace\" \ - \"))))(Secondary((id \ - d2541b33-1f10-4474-9939-cd2e164493c2)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 26b81a4e-e0a8-4a8b-8b59-e0278cb81758)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - f412044b-ae99-40e1-ac43-a8785e7a2ce1)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 96732395-1218-4909-b454-484f2dc33583)(content(Whitespace\" \ - \"))))(Grout((id fdd65dce-3851-4173-8c0d-a8ac07ced2b6)(shape \ - Convex)))(Secondary((id \ - 3dae5dc2-012e-4f8a-b54a-3562c4f88afc)(content(Whitespace\" \ - \")))))((Secondary((id \ - ba4613e8-5288-4f23-a6d1-7e3206f398d6)(content(Whitespace\" \ - \"))))(Tile((id \ - c873fdfc-ead5-4cab-bbf9-f319e65eb545)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 12))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 4fc68723-e8b9-4d8e-ac28-3066739c26f9)(content(Whitespace\" \ - \"))))(Tile((id \ - f36c50b4-776a-44c5-b033-a70e463f1813)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 537690ac-06c0-4b1d-84c1-6d4acc73e474)(content(Whitespace\" \ - \")))))((Secondary((id \ - a1d0648d-8c62-4713-b170-bc7db0c20504)(content(Whitespace\" \ - \"))))(Tile((id \ - 5247456c-6550-4072-8cc9-980f61c699d1)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 2acd1b5f-7510-4a74-a56f-36267b0a512b)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 7616aa0a-4eeb-4db8-865f-5b61dc1263b8)(content(Whitespace\" \ - \"))))(Tile((id \ - 81bfcb19-79c1-4bf5-b34c-3dcc7cfd192c)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 4b260629-7c2f-4a27-9081-844c47be8ff3)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - c71f0361-b8aa-41a1-8b35-ac1d81df2bda)(content(Whitespace\" \ - \"))))(Secondary((id \ - abe0800b-ccae-4935-b9f1-0db885b79a53)(content(Comment \ - #err#))))(Secondary((id \ - a6632e31-7765-49e2-8b18-3359f88183b2)(content(Whitespace\" \ + cf2ba54a-15d3-4a76-92df-c6e79386085d)(content(Whitespace\" \ \"))))(Secondary((id \ - 890064f6-db5c-48da-b11e-79a014c051cc)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 9c0e9437-19f4-4071-aada-9b464e0479f2)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - d821f513-71c8-47e0-91f0-012fd7269dd2)(content(Whitespace\" \ - \"))))(Tile((id \ - 81c8a5e4-c8b9-444b-b66b-29dd2bd98f39)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 955b5d47-5dfe-4140-8ebe-f1cdb5d166df)(content(Whitespace\" \ - \")))))((Secondary((id \ - 60ba9fd8-2ae1-4031-aab1-0d31582db521)(content(Whitespace\" \ - \"))))(Tile((id \ - 09d1e608-b3e5-43c8-b5bd-f3986790dd19)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 12))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - d0d97c16-df70-43e7-8c19-4b2618e3df63)(content(Whitespace\" \ - \"))))(Tile((id \ - 67304d61-8d7a-4779-84f0-e4d60a495118)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - da91c6a5-b71d-4e9b-8206-f9b83d98dd89)(content(Whitespace\" \ - \")))))((Secondary((id \ - 979e7fce-a579-46b9-995b-464e1d6d5210)(content(Whitespace\" \ - \"))))(Tile((id \ - 4728443e-07bd-46eb-a07a-876ab64a9b5f)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 317643ae-3383-413d-9708-f183ee4971f1)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 0dac4f18-67d7-4bca-acf1-50183a763e9d)(content(Whitespace\" \ - \"))))(Tile((id \ - 6e4f414a-719a-4eda-93c0-baab66a8296e)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 2f303db8-f575-4235-8ccd-dca273aae20c)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 526338c8-55fc-432a-9c0a-b9b6f877b413)(content(Whitespace\" \ - \"))))(Secondary((id \ - a9d1100b-abd6-4d20-be7d-a58c5ed507b5)(content(Comment \ - #err#))))(Secondary((id \ - a3580f56-6d80-4396-9869-c50ee7735d62)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 50e8b8e5-6ce5-4536-bda6-3ddf728ea643)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - a5e847c7-5a2d-400b-8328-943165b1db2b)(content(Whitespace\" \ - \"))))(Tile((id \ - a4e3d9e1-8d16-4e74-b645-9e9c10b71d13)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - fa1d3aa3-edea-4d2d-afed-e613ec30dab2)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Grout((id \ - a2bb9040-1c54-4168-9f49-8716cbc12dfd)(shape \ - Convex)))(Secondary((id \ - ded9718d-58e0-44cf-83fd-1b6c5a46562d)(content(Whitespace\" \ + 2a4ddee3-9d5b-42f2-aa09-c89b40933c77)(content(Whitespace\" \ \"))))(Secondary((id \ - 5acbe062-4da5-47a8-a6c0-4f2ead2bbdb6)(content(Whitespace\" \ + 6720ddd6-d000-455a-82cd-07d9d966d101)(content(Whitespace\" \ \"))))(Secondary((id \ - 36a49252-eb7f-4210-b283-24e08b053000)(content(Whitespace\" \ - \")))))((Secondary((id \ - e648f5f6-a693-42fa-8995-b4a20961ba07)(content(Whitespace\" \ - \"))))(Tile((id \ - 46b21c79-7191-46bf-94e9-4fb884c21526)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 12))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 7d306a94-ff74-4f62-be10-af0f06529c21)(content(Whitespace\" \ - \"))))(Tile((id \ - 7276eb67-791c-48e7-94b2-240b9d7e3fe6)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 8ad575d3-bede-46e4-a4d7-f942c2aa8640)(content(Whitespace\" \ - \")))))((Secondary((id \ - b32b622a-da19-48f3-af59-95accf570e1f)(content(Whitespace\" \ - \"))))(Tile((id \ - 275151f6-414f-46ff-8927-653979248dc5)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 9ba58510-58c1-479a-a9f6-6a70a07df983)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 78eed0fa-3bcb-41a4-b6e7-fa15bbf05d29)(content(Whitespace\" \ - \"))))(Tile((id \ - 5513e260-636a-402a-94c7-c2a8cce3d454)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 0ed17b54-7b3a-45d8-bd6e-1604f8af3da3)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 72fe8d09-0a4c-4c0d-8ca0-50d5057a9eeb)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - d95a7a94-7e7d-4841-b9d1-fd772e2d80dd)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + 5247d53b-a736-4699-ab8f-b2a4a74765ff)(content(Whitespace\" \ + \"))))(Secondary((id \ + 54dba052-af65-4bc1-a51d-9400ca8f476e)(content(Whitespace\"\\226\\143\\142\")))))))))(Secondary((id \ + e1c0c511-a930-41e5-9f2d-4230f9a223e0)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + c52edd9b-56b5-4768-bd8f-643dd4e07795)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 72faa0c7-2e6e-4441-9c94-1d160e7a1a01)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - d8e95474-b6f1-44e0-85a7-ed0cc7dbde42)(content(Whitespace\" \ + 4b545f30-c673-4f88-8893-f20a68d14365)(content(Whitespace\" \ \"))))(Tile((id \ - 73906d81-9d17-41e3-9632-7bf31280bc99)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - c556f619-c3cd-4aed-8ee2-92848aece57c)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 260c4a39-fa49-4a42-8ca5-f6bfd86d705c)(content(Whitespace\" \ + 3947beb7-d620-4571-af3c-75532f9ba81c)(label(View))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + 07c7db6f-3c1b-4d30-b8b2-e6ae71ed518d)(content(Whitespace\" \ + \")))))((Secondary((id \ + 1bd92736-166f-4646-89ce-fa133f98b426)(content(Whitespace\" \ \"))))(Tile((id \ - c3e638a7-2c00-4098-94cd-05563acab569)(label(Int))(mold((out \ + 24b860ac-82c7-414a-a31e-5528a450c4fb)(label(Model))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - cd497267-e360-4eb6-8b8e-7384fc549dbd)(content(Whitespace\" \ - \")))))((Secondary((id \ - d696e851-3001-4a34-ac58-cc213ab1f833)(content(Whitespace\" \ - \"))))(Tile((id \ - b5f73e45-81d0-44c7-b1b5-39f0ed28d790)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 12))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 895d56e8-04dc-4c2a-8edb-aa307da44814)(content(Whitespace\" \ - \"))))(Tile((id \ - 7bdc158c-09c4-4303-98a2-95ac217c0d7b)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 7f09b95b-c5ab-4274-8803-eece59459312)(content(Whitespace\" \ - \")))))((Secondary((id \ - bc2998b3-bf64-4a57-aa06-33d6e3f57b29)(content(Whitespace\" \ - \"))))(Tile((id \ - 503aa496-5d44-4876-b72c-22f53e38841e)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 0c5a8275-a28a-4f93-817b-4dad704c3671)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - bee57263-7e8b-4736-bc4b-177652f48018)(content(Whitespace\" \ - \"))))(Tile((id \ - 24bd3d9e-ef99-4acf-b267-51739222ba13)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 5c7038c0-6b3f-4f97-905f-2ac8a826a9a1)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 79209500-88d2-4efb-ae12-36961422af5f)(content(Whitespace\" \ - \"))))(Secondary((id \ - c15476f2-b945-4bd3-9d0d-b56187d74ac0)(content(Comment \ - #err#))))(Secondary((id \ - 9d3164ad-7956-48c7-9060-1585f2263536)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 8f8e5371-c0a9-4882-abab-4793d534ae95)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 5171b496-42b3-4ad6-afbd-734e7dfab18a)(content(Whitespace\" \ + bc639f7a-d894-41b9-a81a-28956adffbe9)(content(Whitespace\" \ \"))))(Tile((id \ - 597937bb-e437-4f79-8336-62f0bfe633b7)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 93961230-3aeb-4fe0-aa51-724650152a86)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ + d1127775-cb7e-4cc7-ab8f-372c5f6f649d)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - bad1b945-64ed-46ba-b27f-6e6ec46b3207)(content(Whitespace\" \ + 36845be2-d2dd-4b4f-9747-5fea79ec3db8)(content(Whitespace\" \ \"))))(Tile((id \ - 936b28c1-68b5-4e53-88b7-838ee7cbbcd5)(label(Fake))(mold((out \ + c03cb3e0-8376-463d-bd68-9a329c6f2125)(label(Node))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - f1a2e20b-212c-4dae-88d4-fd0e86aa2998)(content(Whitespace\" \ - \")))))((Secondary((id \ - 660312dd-2c63-4eb7-a6c0-ab34eae4ae85)(content(Whitespace\" \ - \"))))(Tile((id \ - 8520a1ed-7cc4-43e2-8a2b-66821f37871f)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 12))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - c65d4f9e-96fe-4c50-af8a-0acd2f008513)(content(Whitespace\" \ - \"))))(Tile((id \ - 1f09612d-cdf3-4a5a-8634-b7e7f4edd704)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - fc30bcc8-3a0a-4801-bbe4-54e44fef77e5)(content(Whitespace\" \ - \")))))((Secondary((id \ - 19280f06-f9c1-4ecd-a813-9783f1377a5d)(content(Whitespace\" \ - \"))))(Tile((id \ - ed3868a2-eeb4-4028-b399-7170800c18dd)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - e180c714-6f53-42f0-a7bc-c014691ea0a7)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 862e99a5-2143-4e3f-bfa7-fec564a23095)(content(Whitespace\" \ - \"))))(Tile((id \ - 5f88e61d-db92-494f-8b44-fa1fe0518da0)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 412a6380-f0a9-495b-a742-f8c4600f6638)(content(Whitespace\" \ + 340e02be-76a3-4f81-bd85-764fe627c8e8)(content(Whitespace\" \ \")))))))))(Secondary((id \ - d030eb4f-0f88-41d1-a12e-1a8aa9d7c4c6)(content(Whitespace\" \ - \"))))(Secondary((id \ - 472d7373-2de2-4699-ab83-06dbf689e446)(content(Comment \ - #err#))))(Secondary((id \ - 5946e251-b954-444b-8571-73a07f028d0f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 7c9b44aa-0b0c-4493-b4d1-b596ccfb5860)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + 856aa85b-4f70-44c3-ad9a-91fc1bded849)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 1ec49bdb-7daf-4ec7-bc33-ef3fdd142c78)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 445d7df8-8335-4959-a5e4-26a44fa7230f)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - 3d187f37-a8db-44b9-b5eb-79988c3e2c5a)(content(Whitespace\" \ - \"))))(Tile((id \ - 5f4e0850-7a82-4784-a8c1-e0cdb072b720)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 37ec8304-8678-40ac-a78c-e1564cf1096a)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 5e98976c-354d-4f26-86f2-cefb7a80ee5c)(content(Whitespace\" \ + 16ba65f0-d4f1-4c3d-a2db-f30ac1e087b4)(content(Whitespace\" \ \"))))(Tile((id \ - 79281c40-1b91-4475-8293-ffdb3420f211)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 3dc98b9e-8880-4035-a61f-346a23cb05e8)(content(Whitespace\" \ + c2c2db86-f635-4c69-87f9-168d5f848c99)(label(Render))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + 0eb1f2cd-95c5-44e7-9555-1b8c7cb94630)(content(Whitespace\" \ \")))))((Secondary((id \ - 4cfd5f82-9500-4f00-9fbf-de9d15dcb2c5)(content(Whitespace\" \ + b30789e5-7032-4a20-af8c-9bfbc9f34a4c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 875e5d63-a683-499f-a301-6a63e5a3781b)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape(Concave \ + 10))(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 686f108b-ba11-4d99-9982-06343d18abc7)(content(Whitespace\" \ \"))))(Tile((id \ - 78fe5eeb-03df-4ff0-b565-41e9c49c239f)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 12))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - ede7a6c1-c15f-4648-9310-48732cd24e51)(content(Whitespace\" \ + e2cfc3bd-c963-4e59-b77c-57441591866b)(label(Render))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + 8a337208-f2fe-4fc1-b5b7-974726d5aadb)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 33efe129-43a3-4180-a109-b80d883df94c)(label(String))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + 8f6c2a49-3f63-4c1a-bfe3-c4e2f348b267)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + d0b033eb-269e-48fd-b918-304c8541c814)(content(Whitespace\" \ \"))))(Tile((id \ - 0db9775e-926b-43b2-b3f5-d078c14cf73a)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - b03a6005-6308-475e-8f5e-4eff52656710)(content(Whitespace\" \ - \")))))((Secondary((id \ - 9a9b8d8b-d056-4aab-9156-470737187412)(content(Whitespace\" \ + a382228f-d653-4293-b7fa-51142e6ef70c)(label(Model))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + 47a82536-fa8e-463f-bf41-ce92256c4d13)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + db7bab7a-4543-4f1d-89d7-f6c18ab45bf6)(content(Whitespace\" \ \"))))(Tile((id \ - cb245d33-d282-4db3-a227-b645e9b75790)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 2cd250fd-dc35-4a9a-bc4f-9426959354e8)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 787ba6f3-84b1-4f93-b5dc-a8b870e9ba4c)(content(Whitespace\" \ + 54fe7bbe-afaa-4e81-ad7c-edac2045dc52)(label(View))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + 93c4cc54-2d50-421c-941e-312546b89735)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 635b623a-68e9-4e22-9b21-acea88ebd7a0)(content(Whitespace\" \ \"))))(Tile((id \ - 9a45395d-bcf2-41c3-b21b-cedec3e6a113)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 3105b687-fd5e-473d-b967-9da7c0647341)(content(Whitespace\" \ + 1ef9d630-9995-453b-a3d9-e6367559c3e3)(label(Update))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 0e2d406a-5ea8-4296-9da8-7f587527e91d)(content(Whitespace\" \ \")))))))))(Secondary((id \ - db3f8bb1-72d2-4aca-a6c4-c7c554a879ef)(content(Whitespace\" \ - \"))))(Secondary((id \ - f0d098d6-5609-4f15-a04e-0ede743aeb94)(content(Comment\"#2x \ - err#\"))))(Secondary((id \ - 4d693f72-81cb-4c75-bde0-23592716a92f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - d8b04ba0-8b64-4a94-9a97-70c2920e2530)(label(let = \ + ce087a68-3170-4d23-a592-e3a870e7f0f3)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + d0f81732-19d2-424d-afdd-6c9c774662e4)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 60f091b2-2274-41cf-9db0-246917dd2575)(label(let = \ in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - 2a8bf909-8ac9-434a-956d-cf4efbcc8af8)(content(Whitespace\" \ + 70acf074-7a9d-4dfd-ae59-06c4fa7f621a)(content(Whitespace\" \ \"))))(Tile((id \ - f6d6e84d-8550-473e-853d-b77f12bbefae)(label(_))(mold((out \ + 0edad2f4-2cdf-465a-aaf9-870290d38150)(label(update))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 02f88e70-2821-4de0-b7a6-73287b575c61)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - a1648162-6ae8-4d24-8b93-6c537e8aabcf)(content(Whitespace\" \ - \"))))(Tile((id \ - 253ac0e4-fd26-4abc-aa21-1149fad7d43b)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 0ba56612-4438-4f63-9617-78d3c4ffa5bc)(content(Whitespace\" \ - \")))))((Secondary((id \ - ad6af5c1-5817-4b0c-ba82-321f042705f2)(content(Whitespace\" \ + 4cac5767-836e-432e-97c8-18161126538c)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + da5ce959-5954-4371-bd92-066a08fea0c8)(content(Whitespace\" \ \"))))(Tile((id \ - 0ba4458d-bee8-48e6-933a-18d06c343a42)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 608bb807-8d6c-4844-8d59-d3efe58d3843)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 12))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 77d36a72-5ba6-4ed4-aa9a-12b37970424c)(content(Whitespace\" \ + 3ded4b48-1863-4ed1-8e59-b169eef7ad67)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 6995b2ae-1a44-4c6d-9fd7-a13914555fab)(label(Model))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + cae2e273-4cd2-463d-8f30-4ff241528f3d)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + da16a642-7c24-45ce-b91f-210e23ecc457)(content(Whitespace\" \ \"))))(Tile((id \ - 5af082f1-4d3e-4854-8ff1-1ffdaad55851)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - d48e22a5-f65a-4767-a9d0-1a40cc32b3d9)(content(Whitespace\" \ - \")))))((Secondary((id \ - 9609e0a9-f5f0-4fa6-b677-3a82f5b3c887)(content(Whitespace\" \ + b89f9a3e-31c8-4b8b-a0ae-0b96941dda81)(label(Action))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 068ed1ff-4afd-4533-bc32-16d3ed0a24ed)(content(Whitespace\" \ \"))))(Tile((id \ - ff4f682c-091a-45ea-ac96-feb28081efc3)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 2cce8860-ee1b-4ec9-a66d-c8a748a30290)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 324ceb15-0215-4d88-8cf2-060903955c6f)(content(Whitespace\" \ + f01105fc-966f-4224-a615-c58f9f7fbb96)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + ed924a35-93b5-46b3-b564-7049226f564c)(content(Whitespace\" \ \"))))(Tile((id \ - e9a7860c-6db8-4a81-8ae4-bfdd79d70282)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 275a0228-3bff-48ff-a304-8f6edc108009)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Grout((id \ - 17047b05-1174-4151-937d-b4833dfd6d1a)(shape \ - Convex)))(Secondary((id \ - 13edcba8-486c-44b4-93d8-c1bf41f98fc5)(content(Whitespace\" \ - \"))))(Secondary((id \ - 1bdbf758-cf85-4d57-9d74-41588be677bf)(content(Whitespace\" \ - \"))))(Secondary((id \ - 3a70753f-0da6-4a2a-bd04-12907709acb1)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - aa17c661-b339-4613-87f5-9cc5ab23d5cf)(content(Whitespace\" \ - \"))))(Secondary((id \ - 80b2cb6c-da1b-4a39-8396-bbcb94900dbc)(content(Comment \ - #err#))))(Secondary((id \ - d1468a7b-ca13-4ee5-be11-c9d8ee744a90)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 11a94a5f-356a-4c36-855d-dbb81005f92d)(label(let = \ + fd257d6b-57a8-4113-b6ee-edcbf9971ee0)(label(Model))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 6fa19c3d-d0e2-49b3-bdcd-085c733b7457)(content(Whitespace\" \ + \")))))((Secondary((id \ + f60b0cf8-f5cd-4ab3-9998-8d1383b3c537)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 628685ed-d12f-49d8-9d32-43c60c5e3e3b)(label(let = \ in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - bd717dc5-9699-42e4-819e-a605ae33c705)(content(Whitespace\" \ + e0922fb9-b6d8-450e-addc-4688c314568a)(content(Whitespace\" \ \"))))(Tile((id \ - 90b78761-c7bf-40e4-a659-a899afa81b5c)(label(_))(mold((out \ + e39c98e1-95c6-473e-ba76-4a7e926065cc)(label(add))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 1c9d9db0-dd3d-42eb-b038-aaf42bd3b7d6)(label(:))(mold((out \ + 6020375d-e212-4244-91dd-3688b042a105)(label(:))(mold((out \ Pat)(in_())(nibs(((shape(Concave 11))(sort \ Pat))((shape(Concave 11))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 9fca87f4-9b31-4e5c-8982-03f73b8d1b00)(content(Whitespace\" \ - \"))))(Grout((id 29f35a2c-4d0e-46f3-a17d-cdb6f0b58159)(shape \ - Convex)))(Tile((id \ - 3d63fe1d-8723-4fc2-96a7-579952450f50)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 8cff05d8-1ceb-4dc5-abd5-601a0737609e)(content(Whitespace\" \ - \"))))(Tile((id \ - ae9cbd45-3c84-4a8e-8580-4fae57ee8c20)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 25aaeff6-8269-4919-a321-5ae18d116be9)(content(Whitespace\" \ - \")))))((Secondary((id \ - eaacbf10-9ca6-47d5-8f8f-e286b53ce6ce)(content(Whitespace\" \ - \"))))(Tile((id \ - 1c286055-6c42-4648-b43e-330a792f075b)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 4db679dd-6f17-4ff2-b8f1-2a08acc594a6)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 12))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - d22f9463-63f4-451c-9850-be72b1d06b56)(content(Whitespace\" \ - \"))))(Tile((id \ - c5d62b24-fd05-404d-a7c0-21cdfeacd1f4)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 2336603c-c334-408f-a1e6-5f61132d0687)(content(Whitespace\" \ - \")))))((Secondary((id \ - bed23ec7-8aa3-4470-8236-81e76586c7a4)(content(Whitespace\" \ + 937af6be-b6dd-4ca1-b6c8-1e7c117cb381)(content(Whitespace\" \ \"))))(Tile((id \ - 6fc53068-7615-432a-a026-eb54d842336f)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - ffd73edf-b438-446a-990e-1b05534f81c4)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - ee921cb7-b3fb-4dd1-a280-c91d2d9223d6)(content(Whitespace\" \ + 183201f8-802f-4637-8c3c-8c9e400ef6c7)(label(Model))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 6c895ae7-75cb-409a-9831-0ab1d5465eea)(content(Whitespace\" \ \"))))(Tile((id \ - 3d27f98b-ba04-4145-98ff-501bc97c9b23)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - a9ae7e4e-dcaa-45cc-823f-edcb1cbdf947)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Grout((id \ - 4e543e67-9133-4e9d-b1ff-b835632a681a)(shape \ - Convex)))(Secondary((id \ - c39d6789-d1f4-4a6b-a29c-c8c25b5a0838)(content(Whitespace\" \ - \"))))(Secondary((id \ - 92e67be4-ea93-497b-a2ea-45c9966fea4e)(content(Whitespace\" \ - \"))))(Secondary((id \ - 110afdaf-1fde-4e5c-ac9b-6e0bbb6d1d30)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 5189f641-bafa-420d-b91a-204be24e470a)(content(Whitespace\" \ - \"))))(Secondary((id \ - c3c3b2ea-b824-40df-a919-9a4e441d8759)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - f9090b6a-5094-4660-a053-22404727e172)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 12e87a6a-048e-48da-82ea-382dc457ceac)(content(Whitespace\" \ - \"))))(Tile((id 8e8628df-8459-456b-84d6-2cb36af4b9e7)(label([ \ - ]))(mold((out Pat)(in_(Pat))(nibs(((shape Convex)(sort \ - Pat))((shape Convex)(sort Pat))))))(shards(0 \ + b1cf9777-c123-48d2-a57e-d66381475699)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + d1778d24-e3d7-4d96-a165-e1ea5d386eaf)(content(Whitespace\" \ + \"))))(Tile((id a46a0453-0209-44cc-a920-81d0e3e14fcc)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ 1))(children(((Tile((id \ - cf25941f-eaa9-4a1a-b357-8c5b117c95ee)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + 41109722-4e2e-49d9-a931-230651db52a9)(label(Todo))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - 3a1a98da-cf5a-4fcf-aa2c-548aef9e0b9e)(content(Whitespace\" \ - \")))))((Secondary((id \ - 67cc35c8-7838-4a4e-ad76-367c9369ab0e)(content(Whitespace\" \ - \"))))(Tile((id e262c9fa-ae87-4fc8-9057-a9461bfd9bd5)(label([ \ - ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Tile((id \ - a7254a23-019e-4314-af62-6d9c7bfb672b)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 10ec1999-7398-48f7-863d-d1d5e36f3d2f)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 12))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - c7ac74b1-6e15-4e71-a746-39bc1efc8c27)(content(Whitespace\" \ - \"))))(Tile((id \ - ba2f5cb7-3230-4ec9-a771-b691c357108a)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - b7fc917b-738e-423c-904d-05a96059bced)(content(Whitespace\" \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 35163cb8-8902-4a59-95dc-c9936c1b441f)(content(Whitespace\" \ \")))))((Secondary((id \ - dd935528-15f2-4c7d-8804-a4d472b14489)(content(Whitespace\" \ - \"))))(Tile((id \ - ff4d570b-28f6-4b30-a316-3a409235447b)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 1fb75734-2d7a-4769-9753-b17b1592087b)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - eed1455f-cad2-4bae-8f40-ea91ebc25208)(content(Whitespace\" \ + 9eaf455c-d4ae-4fea-ab28-59e77dbecf08)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 68c978ae-dab0-45c5-af6b-aae9c49f4d2c)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + be686fe6-3295-4778-a84d-03ceeab9d75c)(content(Whitespace\" \ \"))))(Tile((id \ - 2371b8a3-f2d4-46ec-bbc4-a60cbf89ef6d)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ - f1e569ab-92b8-47e3-a64f-35fdc0407aa3)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 342903af-c89d-49a7-bc25-5de96ac97281)(content(Whitespace\" \ - \"))))(Secondary((id \ - 2836626f-426e-4d0f-abb8-e947f32132f5)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 3d735aba-e54e-400b-8573-7e839a3b9594)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 1855f1ad-a3ba-4224-99f2-d575807cf9f4)(content(Whitespace\" \ - \"))))(Tile((id 9e393b21-55dc-4ce9-ad66-de202a408331)(label([ \ - ]))(mold((out Pat)(in_(Pat))(nibs(((shape Convex)(sort \ - Pat))((shape Convex)(sort Pat))))))(shards(0 \ - 1))(children(((Tile((id \ - ea98ca45-1496-4863-93f8-3c2332b1b479)(label(_))(mold((out \ + 188e16f7-d713-4d0a-9927-68ed3ae09103)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ + 8c4a968d-01d7-4d65-8bfa-c7529b630335)(label(description))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - f2df6024-92a9-49a5-88aa-39ffdfe6dd94)(content(Whitespace\" \ - \")))))((Secondary((id \ - 62c5a63b-cd57-4076-9551-1ae18d2b5025)(content(Whitespace\" \ - \"))))(Tile((id \ - e6e249a9-c461-4c0f-acce-c5fb18660415)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 28e5f8e2-b712-4c28-98f0-be264ed0d9d9)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 12))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - e243b1c2-c613-4578-be3c-c3a352c1b602)(content(Whitespace\" \ - \"))))(Tile((id \ - e155439a-5123-4b48-891e-d66bd6c15636)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 2fbc7089-202c-447c-ae1f-0befd34a6f25)(content(Whitespace\" \ - \")))))((Secondary((id \ - 457ce868-2756-43d6-85fd-3dbd77b0bf43)(content(Whitespace\" \ - \"))))(Tile((id \ - aa2b1a04-2234-4c8d-bf1f-dde6283f8c6e)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 4cb364cd-2ae7-44b0-9e42-20c673269007)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 84e6798d-a1d4-4688-83bc-941ceb1f1eca)(content(Whitespace\" \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 12ff3b9a-f05c-460b-8a53-de241a869ba3)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 33bc7bb6-bea7-46af-9536-a61e11a2f61d)(content(Whitespace\" \ \"))))(Tile((id \ - 9e910694-b45d-4b2e-9f3b-6f3e92f40280)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + fab1fc47-16d0-408e-a02f-7f999e243901)(label(todos))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 6e1b78c6-08fb-4eea-ad24-8a25bb546292)(content(Whitespace\" \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + 47182dd9-6231-48f7-9943-ef6cee96049e)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 60c6c426-b0f5-4c23-b7ad-2d2599c327bf)(content(Whitespace\" \ - \"))))(Secondary((id \ - e0a7fd21-7379-4620-be7d-9fc89c0748c5)(content(Comment\"#2x \ - err#\"))))(Secondary((id \ - f50e71ce-8170-4aba-ad79-d299d2f91a57)(content(Whitespace\" \ - \"))))(Secondary((id \ - 4dd92573-6d7c-4296-9208-937e7a2aa82a)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - d77b580d-b094-478f-9565-14ce2c48c3cd)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - f042fe33-b554-4f20-b618-2fa3c8e72461)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Grout((id \ - da5f7a94-d56f-419d-81a4-e90f5e4ad103)(shape \ - Convex))))))))(Tile((id \ - c005aa0c-43a6-4084-8b73-db752bd727db)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 597ecf17-421a-4853-9600-eb6e87ad1fc1)(label(if then \ + 729eb62a-bc20-4d0d-9bd5-da3f4ece8100)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 10013354-b9fd-4557-9d27-9d6955ae9063)(label(if then \ else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 12))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - c6d281a5-7366-4fc6-b93f-a5b506a71e24)(content(Whitespace\" \ - \"))))(Tile((id \ - 565daa13-0e6f-484d-9db2-c2c4412a54a7)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 0606bb3b-03a8-4d74-beb9-0d8fc732f979)(content(Whitespace\" \ - \")))))((Secondary((id \ - cf5c6a9f-abe1-4fb9-b6dc-a9dbd6d7dba8)(content(Whitespace\" \ + bdfa5641-e0c0-4d99-af19-797692e96ae7)(content(Whitespace\" \ \"))))(Tile((id \ - 1998792d-d014-4ac8-9359-2a97c35a8f4d)(label(1))(mold((out \ + c6727158-b680-4a2e-91a0-4da3314f20f4)(label(description))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - d55d2bae-a087-4fd1-8d06-bc046516f54f)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - bce25bdc-97f5-4167-b0a5-28a7838bebdf)(content(Whitespace\" \ + 62bc76a0-d996-46b5-a5bb-310ad22667b9)(content(Whitespace\" \ \"))))(Tile((id \ - a37487be-086a-4d06-9e37-f4a6e0c74f15)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 0dd1749c-08c8-463b-8c08-d7540b7fd5f1)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ + b7773fa0-ba3c-43b3-b06d-8d1793a6c07b)(label($==))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 8))(sort \ + Exp))((shape(Concave 8))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 570a141b-ab07-4691-840a-ea9e46b4aa3d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 387cc421-9cee-4b2e-b8c9-64420e4e3e0c)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 8000090f-6960-4cc4-8972-4b3b4934bbdf)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 21e644ea-f7ec-4444-be5f-6a628e76b1a5)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 12))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 9dd67d89-f568-45ca-a855-b39658cf456c)(content(Whitespace\" \ + 1d2e754f-df70-4e8f-a089-e3f8078b36c9)(content(Whitespace\" \ \"))))(Tile((id \ - 87fdc732-9c35-45c0-b05d-841c3f76fcb7)(label(true))(mold((out \ + e3de949f-efe9-447a-b242-baa06c6241c6)(label(\"\\\"\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - e426f078-9c62-4ab7-b8e5-f3846f02e372)(content(Whitespace\" \ - \")))))((Secondary((id \ - 9eaced5b-63a5-43e5-9f9b-65877c1e2646)(content(Whitespace\" \ + cf9f6dfc-972e-4b80-99d5-617075ab7de6)(content(Whitespace\" \ + \"))))(Secondary((id \ + ab2771d6-2242-4e18-a384-311e5cf23aeb)(content(Whitespace\" \ + \"))))(Secondary((id \ + 14cbb492-9834-4777-a8d4-052d4da9f236)(content(Whitespace\" \ + \"))))(Secondary((id \ + 95b43b96-5f6b-4f37-8dca-353b5091db47)(content(Whitespace\" \ + \"))))(Secondary((id \ + c721b706-a788-4360-b42f-0b497e1d1aa6)(content(Whitespace\" \ + \"))))(Secondary((id \ + 6f1299b1-12c0-4097-8e3f-821151dc7784)(content(Whitespace\" \ + \"))))(Secondary((id \ + 57e47bc0-ad30-498b-850b-41daa0a719a6)(content(Whitespace\"\\226\\143\\142\")))))((Secondary((id \ + 2024edf4-797d-45c3-a62a-1a7b174a081c)(content(Whitespace\" \ \"))))(Tile((id \ - 93aea0bc-7454-4307-bddc-19b83469ac2f)(label(1))(mold((out \ + bf6703bd-d3a9-4056-a575-3f81e6ad07ab)(label(todos))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 00645620-caec-4675-8b29-deddb545f394)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - f38ed27d-79ac-4416-893c-56aa5b086d7d)(content(Whitespace\" \ - \"))))(Tile((id \ - 56d55ff8-a6c7-499a-9c41-e7249a9f2789)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 92403899-717e-4808-ac3e-3767e0eac20d)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 0f4bf478-ad4e-4543-867d-48080fbacb3c)(content(Whitespace\" \ + 8c80a604-c218-4677-87e9-94a96a73e97b)(content(Whitespace\" \ + \"))))(Secondary((id \ + 3d9d9de6-d4b4-441b-b392-694671bef7ec)(content(Whitespace\" \ + \"))))(Secondary((id \ + 54d3a040-32fc-472e-927c-c9e6b8019c78)(content(Whitespace\" \ + \"))))(Secondary((id \ + a0278074-e75d-4a7b-b9ca-caebefd9a473)(content(Whitespace\" \ \"))))(Secondary((id \ - 634ebd5a-061f-426d-8278-caf13efe2fcf)(content(Comment \ - #err#))))(Secondary((id \ - 6341373a-1b18-4f9e-a516-25b97197b5b6)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 91b8fd2b-50d5-46f3-9e2a-f4114ad5d08e)(label(\"(\"\")\"))(mold((out \ + 4d86cb86-231d-4357-ab7f-c0404e47c1fa)(content(Whitespace\" \ + \"))))(Secondary((id \ + 5fefcbed-4570-4033-b253-278caadd96ae)(content(Whitespace\"\\226\\143\\142\")))))))))(Secondary((id \ + d25dfdfd-2966-4263-add8-b515edcb5cba)(content(Whitespace\" \ + \"))))(Tile((id \ + f8f6e822-5583-4e82-b8a9-21e48599d5be)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 35bef15d-fb86-4914-aea9-f26da914d8b5)(label(1))(mold((out \ + 92b064ab-858b-4a1b-8ccb-831aa1243d6e)(label(description))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 55037480-08df-43b7-885d-c02860217f6d)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 66791c1d-5fd9-4219-96fb-4bd8ba9165e6)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 12))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 4534c71d-fbf2-49b3-8733-70c5c53f9fb6)(content(Whitespace\" \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + cb1e70f2-e3b9-4e12-8897-fe4da9ad874b)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 01a9944d-a8b1-4908-9b2e-e81b23012480)(content(Whitespace\" \ \"))))(Tile((id \ - 5936b2bb-c495-41ac-915b-84720407aa82)(label(true))(mold((out \ + 183f4959-4c65-44c5-bc22-be916ac89c4b)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - dd27ba1f-0e47-47dc-8a19-b1ab49ddc6ae)(content(Whitespace\" \ - \")))))((Secondary((id \ - a8d6513a-d522-478e-a64e-ed20e95ced90)(content(Whitespace\" \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + e85c1d4d-9b90-4263-b653-45374217f73c)(content(Whitespace\" \ \"))))(Tile((id \ - 6b75f592-c667-4990-b872-45254ae84f58)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 7d563839-85f2-4636-99f5-0e0eab764be6)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - bb0e52cd-b00d-42d8-9697-52cda117a7be)(content(Whitespace\" \ + ecb9c608-8f68-4a8c-856d-f4fdc54e8986)(label(::))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 6))(sort \ + Exp))((shape(Concave 6))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + c08f3a2e-54c8-403b-bde0-18669b6141e1)(content(Whitespace\" \ \"))))(Tile((id \ - 11b0bba6-2add-46c0-80ea-eaae5fe2a612)(label(1.))(mold((out \ + c3284247-fdd5-411b-9b59-04461186c316)(label(todos))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - d4989258-1177-43cc-85c8-0dece96af223)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - bde6f2f6-7dee-41fb-8ec8-7ce0a8d5de20)(content(Whitespace\" \ - \"))))(Secondary((id \ - 1da33e8c-40ca-40fe-8e25-c58069bda77c)(content(Comment \ - #err#))))(Secondary((id \ - f7d18d01-968b-40cf-a368-ecc331878420)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - c84b88f4-3ab1-449c-bac0-1788f3910edd)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - fd353163-012c-4c4d-a5c5-e394ecd16ae2)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 048898ab-996f-4b90-b66c-bff87aa60b61)(content(Whitespace\" \ - \"))))(Grout((id 859388a0-5d8a-48a1-b60d-d1a89e219d08)(shape \ - Convex)))(Secondary((id \ - 10d220ad-0935-4d34-a650-a3cd9d04f606)(content(Whitespace\" \ + Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 4a04ffb9-7d69-4a51-ba3b-f61f6778725c)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 9e5262aa-2218-4b3c-a2ae-81123cf669d7)(content(Whitespace\" \ - \"))))(Grout((id 64517fe7-e255-4bc2-8834-b72704af952f)(shape \ - Convex))))))))(Tile((id \ - 783434d2-9a4d-4a4f-879d-214deb152945)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 33189c28-075e-45a0-b322-bf95b999fe4a)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 12))(sort Exp))))))(shards(0 1 \ + 3c1543ca-9d8d-410d-90c0-42990f204c1a)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 35f3232d-b56f-4cc6-9bf9-eecae8a8ae2e)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - a56657fc-4b1f-46f8-882c-ddfa6b681f37)(content(Whitespace\" \ + e4a63b88-eb1c-4a74-a8ea-a6f6c733685a)(content(Whitespace\" \ \"))))(Tile((id \ - 7c2df4aa-19e5-4677-bacd-5b7a724798a5)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - a336b9e2-f9a1-416a-982f-96e525d7a097)(content(Whitespace\" \ - \")))))((Secondary((id \ - fa4494a5-f20c-4f3c-bdac-93367e9f675d)(content(Whitespace\" \ + 2723478d-7b84-4c22-b874-743b05a1de21)(label(remove))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + c2246a64-3b0a-45f7-87e1-c355519f9ae9)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 1df83e19-3283-429b-af89-a7ef2e19a64d)(content(Whitespace\" \ \"))))(Tile((id \ - becfa6ad-81a4-4043-b34f-f9cd6968bdd4)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - e636ba9d-f4f0-4b6a-a857-f72272703edd)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - c4907dc5-0d6b-4f19-876e-2a7d837d2526)(content(Whitespace\" \ + 96c265eb-72fa-42e7-866a-2869bbfd3558)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 9a19e2bb-25e5-424e-bec4-e71109cd299e)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + b140359f-733e-4a26-b767-cda1e62023d1)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + a4b46f06-de96-4fb5-a2bc-bcded20dca60)(content(Whitespace\" \ + \"))))(Tile((id 45575455-d90a-41bb-b1a9-d2fa3930329b)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 86fcf5a2-ab65-42f5-a973-814ee5e7277f)(label(Todo))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + e3a57329-d624-4cfa-99eb-2eafb94205c5)(content(Whitespace\" \ \"))))(Tile((id \ - afea6b91-26f2-4c46-b1ea-15e893de8d44)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - a4226d0f-0630-440b-b925-355c4323e26d)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 01ff0dc7-27f6-4bb5-a4fa-018d7296f307)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 953c3984-84f7-4724-b92a-a9a829788351)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 38407f72-07a5-493b-af4a-23ddcba9b306)(label(fun \ + 07516e59-bad7-43d1-b1ed-706388f1ba9d)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 2d7e6f04-43af-45ae-9399-bd98e616f963)(content(Whitespace\" \ + \"))))(Tile((id ac9748f7-cd4a-4943-a00d-0b04b3157dec)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 70218da2-a5b2-41a7-8796-a6b6bca92fd2)(label(Todo))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))))))))((Secondary((id \ + a0a1ddf9-8405-4e94-be94-16c38ca62b36)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 121d7ee6-6af6-4ae6-9c4a-74c1f5769a86)(label(fun \ ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - 808ba58b-c96b-4222-996e-d20bc439b39d)(content(Whitespace\" \ + 7513ccc3-757d-4a65-87e1-8b9394ea9eb6)(content(Whitespace\" \ \"))))(Tile((id \ - 71431cc7-a1ba-42a6-9e18-048bf7ed09ca)(label(_))(mold((out \ + 4de6ff7e-2261-4922-9cb8-7df8ff06310a)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ + cbee801f-6e21-4ca8-b59e-1d50f7af32cd)(label(index))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 2b68db99-6d3c-4256-bc00-252ced2dd688)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - a0235b54-2e45-4d56-b677-baf460eeb39d)(content(Whitespace\" \ - \"))))(Grout((id 30ecd689-7fdd-4a7e-b180-65fd090457c9)(shape \ - Convex))))))))(Tile((id \ - c57eb10b-f7b5-47af-8678-f6ea4067c6f7)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 3ddcb139-95a9-4888-ba0f-5442df48f9a7)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 12))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - e695ba82-cf68-46ce-925e-31249261cd8c)(content(Whitespace\" \ - \"))))(Tile((id \ - 0486935e-9996-4670-9f7d-c454f07554a0)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 528c71f4-4aa9-4397-b56a-b3fa05d26e80)(content(Whitespace\" \ - \")))))((Secondary((id \ - fd2ee037-5c94-450e-9bb0-00783b2adda9)(content(Whitespace\" \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 374e6491-a689-4552-b58d-7048dab41a59)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + cf81a51f-2ae4-473c-972c-71a19e95309e)(content(Whitespace\" \ \"))))(Tile((id \ - fc17fe9b-be91-40f4-b6d8-334ae02cf696)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 28ac697b-72c1-4380-a4ac-77a6d620ce07)(content(Whitespace\" \ + f8b60014-ebec-40b0-86db-3b2ecad0ca02)(label(todos))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + 78575b9e-2265-4c55-b173-404c0207c9ab)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 5d6063b7-7b37-4a0a-b94e-2d416668609e)(content(Whitespace\" \ - \"))))(Tile((id \ - 62e9e671-3419-4b81-ab5d-370a5a394aa9)(label(1.))(mold((out \ + 3464842d-3c67-452c-ba86-c69a62612f33)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + b751d5e5-203d-4830-bece-b2275a10a3b3)(label(List.filteri))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 055bba99-c1db-48af-9aa6-4ba45f916bd5)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 12c3e8d4-f091-46c0-9755-5635c4f2b5b6)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - a331d7b3-e0e5-4503-8eda-98fb4017d7b8)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + ccf0b0f4-3b5a-4009-ad0a-e4f7fa94db4d)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 93dd678e-5279-495a-aa88-2fa862389909)(label(fun \ + 0a2c27fd-72f3-4b47-9190-670abc4a32b6)(label(fun \ ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - 4597f735-731c-4066-9851-cd52d6542cee)(content(Whitespace\" \ + f9af305d-ff04-4e9c-8bd2-ebc9972fe982)(content(Whitespace\" \ \"))))(Tile((id \ - 87294766-b061-4b33-84e7-b820bc4fb3cf)(label(_))(mold((out \ + 5daaacbf-01f7-46db-ba2d-5cffbbd97809)(label(i))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 394ec58a-fb30-407f-b376-432f454bc179)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 41c4021b-e111-4501-8940-762c147bfc82)(content(Whitespace\" \ - \"))))(Grout((id c347ce4a-b918-4de4-8400-cf7174b04eec)(shape \ - Convex)))(Secondary((id \ - 092d4568-73e7-4dab-aeb2-a96ba06aad7c)(content(Whitespace\" \ + dd41d54a-950f-4bb4-a6e9-6a80ba1f9952)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + ed3cc752-2f4b-4684-b4c6-cc11d44931ff)(content(Whitespace\" \ + \"))))(Tile((id \ + bfb27cae-52e7-49d3-a778-28e39a754861)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 07fa2b3f-55f3-4ba1-9c6c-c5253d5897b8)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 89f8d64f-4dca-452f-a5e5-405b0dd06197)(content(Whitespace\" \ - \"))))(Grout((id 3fcdc9aa-d3ea-48dc-aa4e-50d47fe5def0)(shape \ - Convex))))))))(Tile((id \ - 0affb0e4-3f8f-4a78-b155-9cf118ca8eb7)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - bffb5f4a-a206-4568-b182-a633e4b7d67e)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 12))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 7da6ae55-bd62-4139-8b5c-b3467b28d15e)(content(Whitespace\" \ + 94082e83-0ee1-4107-88bb-0879a3bb0f1a)(content(Whitespace\" \ \"))))(Tile((id \ - a38e5299-1158-4600-a4db-05d26b529068)(label(true))(mold((out \ + 675de631-10b2-4a83-a545-cf109303a41e)(label(i))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 56db0b7d-70ce-482f-8bdd-f261e4bb033a)(content(Whitespace\" \ - \")))))((Secondary((id \ - 366cc558-76f6-4454-ac7d-a42dd3da2584)(content(Whitespace\" \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 408ea217-76e0-4cba-bbf7-c774b42d50ed)(label(!=))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 8))(sort \ + Exp))((shape(Concave 8))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + cf350a0d-d878-4eb9-9fec-8b4b0600c807)(content(Whitespace\" \ \"))))(Tile((id \ - 9d875eaf-40a4-4826-95ea-ba72c0cd2c81)(label(1))(mold((out \ + c6e5eaa5-b5f2-436f-ad1e-659749625e99)(label(index))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 5d888c4a-19d5-4e34-9401-04e577bc1c48)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 85c80d5f-538f-40d0-b5d6-e235a7f5141f)(content(Whitespace\" \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + c0a58d21-fbe5-4d35-83fd-fd5818b58904)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 925be73b-c250-4230-82f2-9bb93d7610bc)(content(Whitespace\" \ \"))))(Tile((id \ - 74612f3f-3d30-472f-86a4-fbc1857c058a)(label(1.))(mold((out \ + f3505c71-f399-4ee7-9857-ef73d9d43828)(label(todos))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 470469dc-d8c3-469b-9c18-3d8e008b193b)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - d1dc00cb-ccae-41d1-bddb-107de0e308be)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 6c61507f-9013-45f0-aa48-1a3d015573cd)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 84bef4da-1203-478f-85ca-9ee88c6f3beb)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 6a9d6562-d5e6-4b2b-a031-11739b0c2c3e)(content(Whitespace\" \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + bd927742-b3e3-4b23-8e51-722b94a83a85)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + d1c8ed4f-ee05-4896-9fea-f72017846ccc)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 39a9ca9f-926a-432e-8e22-3d6e7fc35032)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + a115bf66-5129-4ba1-9a7b-a9d3b68e203c)(content(Whitespace\" \ \"))))(Tile((id \ - 33442197-55d4-4dbd-9138-5e50ff98d573)(label(_))(mold((out \ + d3fb1a2e-7beb-4d01-a1c2-5f765ecd5b54)(label(toggle))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 8cb1eae4-c597-4b00-a2eb-5b57a125a194)(label(:))(mold((out \ + dee1c821-0609-4c12-b4c1-76f582d4c04a)(label(:))(mold((out \ Pat)(in_())(nibs(((shape(Concave 11))(sort \ Pat))((shape(Concave 11))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 6465c91e-5f51-4910-918f-9d204e1bcbd3)(content(Whitespace\" \ + 336326f2-923e-4482-9d20-2a1fb602f4bb)(content(Whitespace\" \ \"))))(Tile((id \ - 55757bfd-ff22-42bb-9cd6-5608f5f015ff)(label(Int))(mold((out \ + 08835b4b-d5a4-4d13-84a1-442f6db0a2e5)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ + 48536548-2181-4c23-b7aa-6250123fe581)(label(Int))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - f99eed79-6ba7-4182-ac8a-299afd43bbe9)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 420ac88a-4caa-46b4-9d0a-0bb5b1b14db6)(content(Whitespace\" \ - \"))))(Grout((id bc42c4d1-dd82-433f-b065-ac7de6dde15b)(shape \ - Convex))))))))(Tile((id \ - d9dfdd76-ecde-417a-ba68-8cfb016ab80f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - ea8ee01c-941d-4c66-a647-7918eefbb221)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 12))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - eb92a4a6-8137-46ff-8763-0f1c1cce4e0f)(content(Whitespace\" \ - \"))))(Tile((id \ - 3d6f8955-5d58-4093-9901-4cb799e4da68)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 5c39d9d8-1353-4c82-95aa-cfd3c710d2ef)(content(Whitespace\" \ - \")))))((Secondary((id \ - dbd5746c-73d2-4bfd-b1d4-9bb4ddee1844)(content(Whitespace\" \ - \"))))(Tile((id \ - c3b3c0c4-46c1-4190-9173-0ba09eb387a3)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - e8ee62da-8d62-4ef9-97b9-159f1b4a212a)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 50dac4a7-2903-4ad4-a0ba-647854776727)(content(Whitespace\" \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + e8bfdab3-db22-4cea-9679-8c31f372712f)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + b84b37ae-3545-46be-90f3-f11425577223)(content(Whitespace\" \ + \"))))(Tile((id aef9658c-1c53-4ef9-a1fa-51029b18ad2e)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + f4ddfee8-66eb-45ea-aa62-e3d58703ddb3)(label(Todo))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 1022ceca-b149-46f5-9a4a-c9e1cb785ab3)(content(Whitespace\" \ \"))))(Tile((id \ - 6c624d4a-3555-428a-954b-a312f3029cab)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - a73dcc1e-7ade-4348-a466-c52a96e93884)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 9f00a5ef-4f7a-40d8-befd-c7c0d3c8a9ea)(content(Whitespace\" \ - \"))))(Secondary((id \ - e8ad89fd-898f-4e2b-a3eb-f1220739d5ee)(content(Comment \ - #err#))))(Secondary((id \ - 0d081213-9d46-42ee-b251-c3833afa9268)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - d38dbc1a-10d5-43bf-9b21-c0fb792ff103)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 35f80ac8-05d2-47c0-96b0-fe39ffa828ba)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 3ff96410-6cde-468e-b92e-60c5dbcdbb1a)(content(Whitespace\" \ + 8ddde841-89d6-4f46-9dad-eca5002f004b)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 9b14575c-b5e0-4d31-b364-e8288fabb185)(content(Whitespace\" \ + \"))))(Tile((id e63ca16c-1f0e-4499-979d-fcd8b566b1e7)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + e5a3ea55-af11-4d8b-8c33-a174f77645e6)(label(Todo))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))))))))((Secondary((id \ + 97a04318-714c-4707-8963-d499409c55e4)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + ec301659-7144-4be8-af13-2056ca2b2736)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 11fb646b-3ea8-49b2-ac09-86fd5c532990)(content(Whitespace\" \ \"))))(Tile((id \ - cd0d9dc1-2890-40ad-bb56-9bff2cd214d9)(label(_))(mold((out \ + bca59986-30db-4f09-89c3-22d412fe04af)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ + c4c188ad-67d1-4c6c-a5e8-f53b18e2f6ac)(label(index))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 09519fa6-8a8d-49a7-b97b-9446691ac068)(content(Whitespace\" \ - \")))))((Secondary((id \ - 7d48115d-4ed4-49d3-9026-f7ad7b3258dc)(content(Whitespace\" \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + a72541ed-05ab-4a20-afd3-0ad97aeeba62)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + d15890e6-3a24-4636-9e5a-f6eda8682f82)(content(Whitespace\" \ \"))))(Tile((id \ - 8438b733-c653-40e7-bbff-5d4b99a40808)(label(fun \ + 0634f86a-0f44-40f9-b835-902e76eaf2e7)(label(todos))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + b4cbe550-0143-4e41-93f6-c797e498574b)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + f418f767-f2d4-45cc-a6dd-c12d835715c9)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 8297295a-a589-4b07-b05e-7531b4ff9538)(label(List.mapi))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 24e51f67-a99f-4df1-9683-4158be78b3a1)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 5fa8e798-976f-44bb-95fe-4e7b9f1f4142)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + bb058211-7229-4569-a2e9-0b464434b109)(label(fun \ ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - 103b9289-b28a-4c91-b38b-16ddba0518b5)(content(Whitespace\" \ + 2e312b92-6b14-40b6-9f88-9832fe65bcb5)(content(Whitespace\" \ \"))))(Tile((id \ - 673dd059-8cdc-4b7e-a624-2f4006e16b66)(label(x))(mold((out \ + eb1e395c-984f-42e0-84e4-17b88405870e)(label(i))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 4d32ab0e-aa4c-4440-a471-858d48f0649e)(content(Whitespace\" \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 5260b590-cc5b-43d6-95f8-1ee4738ec7bd)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 0913830b-704e-4a56-b852-9816466f486d)(content(Whitespace\" \ + \"))))(Tile((id \ + d549ef31-5706-4355-9230-a509f88a2ed7)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ + 49fa3927-eca2-417d-8160-bdf287a615e1)(label(description))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 79924882-dc0b-4e49-9894-b75302564f45)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + b20d1957-8c8f-4f0d-8117-5e3fe9e75b0a)(content(Whitespace\" \ + \"))))(Tile((id \ + 69c493d3-5da5-4327-97e8-050f77c53bec)(label(done))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + 41e61ae4-733d-4316-9018-70de268b1b6e)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 76eb013f-ee4d-4f01-958d-945f5cdc1b0a)(content(Whitespace\" \ + abec6b30-6e2b-4c0a-a5eb-53c614e6497a)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 1f17eaa7-f4e5-41d9-81ae-d685c19e68b3)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + a4516057-ffad-46c0-b9ba-ee5d30e885bf)(label(description))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 8ad88e43-fed7-438f-a1b9-896ee203f05e)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 5a39663e-a385-4e20-ac34-5bd8df3a796b)(content(Whitespace\" \ \"))))(Tile((id \ - f2867227-a84e-48c0-aefd-0a6d27dffd3f)(label(if then \ + cf6c151e-a7e4-4d48-9d42-2e15a74e41af)(label(if then \ else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 12))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - 536f6d84-2485-4700-856a-629a00f30c51)(content(Whitespace\" \ + 2ab0eb0a-15c4-452b-9db9-dec08f90a01d)(content(Whitespace\" \ + \"))))(Tile((id \ + e14abec6-d1e1-423b-aa65-735f66f107ce)(label(i))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 7482aaf0-e7e3-4a10-b1e7-b91832fb8399)(content(Whitespace\" \ + \"))))(Tile((id \ + 409f43ff-7793-4dc4-9a1b-a742a7129909)(label(==))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 8))(sort \ + Exp))((shape(Concave 8))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 3683512a-8c1c-453a-b4c0-a35e05c4d1ea)(content(Whitespace\" \ \"))))(Tile((id \ - fb05cdc7-856b-413c-9130-26a7b33fb7a6)(label(true))(mold((out \ + 90f37c16-ab45-4159-b660-0116e59c29d3)(label(index))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - d3cb1bb1-3557-4483-b9ef-8df266b162c2)(content(Whitespace\" \ + 9e50b619-05a5-4f56-b5f2-c58cc1cea3f2)(content(Whitespace\" \ \")))))((Secondary((id \ - 277e68f0-754d-4e80-8a7b-d56b9b9aa9f4)(content(Whitespace\" \ + 2678840c-7874-476a-8a81-d0e7f2958260)(content(Whitespace\" \ \"))))(Tile((id \ - a9256755-3fd2-4341-8307-7806781ac7ac)(label(1))(mold((out \ + bce0f49c-8bf0-4a01-914f-13c96deb5209)(label(!))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape(Concave \ + 5))(sort Exp))))))(shards(0))(children())))(Tile((id \ + 35066928-913c-49cc-97a9-213faac2d726)(label(done))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - dce7ceae-84ee-4d61-8c22-b695f164af14)(content(Whitespace\" \ + 36ae3d68-0583-4347-8b3c-ed1d91d72712)(content(Whitespace\" \ \")))))))))(Secondary((id \ - fb80563f-83de-49db-8e2a-a9211d8c0b0a)(content(Whitespace\" \ + cd2896c6-896c-4187-befb-e3a683d08184)(content(Whitespace\" \ \"))))(Tile((id \ - ce8523a7-3bf0-46ed-9e10-c06b9cbb72a7)(label(1.))(mold((out \ + edb19cd1-4bee-4320-bc19-e410cd252125)(label(done))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - ff99f97c-f2ff-400a-bfc8-0c9a6bcff924)(content(Whitespace\" \ + Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ + f77b81f8-0c2f-4b1d-ad8e-5b66f28397fe)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 4a4cdb6b-e148-4c2b-8c58-3d30f85440c3)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 0de38a17-da18-48b8-98fd-81a9f8843182)(label(todos))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + c3ca87ea-3349-405b-8751-0bc65052c3c2)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 695a14e2-4ca6-46fd-99eb-862ef7629ffe)(content(Whitespace\" \ - \"))))(Secondary((id \ - 592c2ffd-79a2-45c3-bc3d-283cb6aa7a76)(content(Comment \ - #err#))))(Secondary((id \ - bcb2d205-cf7c-43ef-acc3-978957fecbe9)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 25ed166a-87e0-4172-818b-2b62a8bda24c)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 9868c377-1e5e-4a84-a575-cc38ab948866)(content(Whitespace\" \ + 469cac5a-519e-42e3-bd14-a71dcff6ffc5)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + ff6a5373-2044-4210-9e55-007d260e5f98)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 39446419-5930-4cc6-8c11-5604fe3b90bf)(content(Whitespace\" \ \"))))(Tile((id \ - 4918c91e-8e50-4735-883b-a356720ea9d2)(label(_))(mold((out \ + b0236103-3d9d-4ce1-a9c2-4904179bba37)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ + 2f1e4a60-fabb-40f3-8bbe-9c7f28e46809)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ + 048c6d31-79f9-4566-b456-0598705ca096)(label(input))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - a52427c4-8fad-4952-9ce2-071dbbab89d9)(label(:))(mold((out \ + 969aed28-00ef-46fa-9904-1d6aa634e1d4)(label(:))(mold((out \ Pat)(in_())(nibs(((shape(Concave 11))(sort \ Pat))((shape(Concave 11))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 8fe334cd-5fa8-4d94-84d3-34385126ca98)(content(Whitespace\" \ - \"))))(Grout((id 653091cf-f907-4593-90a5-0f8c07a68006)(shape \ - Convex)))(Secondary((id \ - 991a094b-7379-4445-a8ee-87b39301f44b)(content(Whitespace\" \ - \")))))((Secondary((id \ - c7ba46b9-2795-4e23-9257-c980fa33f40a)(content(Whitespace\" \ - \"))))(Tile((id \ - 4839dfee-a097-40eb-b968-4762751a00cf)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - fb185c7a-882a-4d4d-a696-b835827a067e)(content(Whitespace\" \ - \"))))(Tile((id \ - 3386719d-5ae9-466e-bcbb-76c10b1a7cd9)(label(x))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - cf81b859-0f34-44cb-84c4-ee0a294618b3)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - f0a26556-e334-473c-8cf8-c57092e4f36a)(content(Whitespace\" \ + 791f11c4-35b7-41e8-9479-99dddbf51de1)(content(Whitespace\" \ \"))))(Tile((id \ - d5d5e598-a807-4bf5-bfec-fe007c7b3a22)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 12))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - c8e619cc-2d91-4991-85d5-546da420b09d)(content(Whitespace\" \ - \"))))(Tile((id \ - 3a199739-00ab-427d-868a-d401e27d83fe)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - ac76f6fa-c89a-483b-bf41-4593f9f1b21f)(content(Whitespace\" \ - \")))))((Secondary((id \ - be7ef864-67a0-4fe0-9bf6-4f882754dc82)(content(Whitespace\" \ - \"))))(Tile((id \ - dfa24cb1-5893-41e9-a062-bd4ec11e605e)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 50514c7a-0b13-4c44-80d5-a3357fcc0012)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 490e8e38-b288-4122-bc9f-ec6882b9ff61)(content(Whitespace\" \ - \"))))(Tile((id \ - af9ae9a8-74b0-4d58-8107-7dba40c5e153)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - d8cbf47c-8aa1-4f01-b414-892b1512aa51)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 0083e628-0325-46bf-a55f-b2d9673a1778)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 6c7603d2-1f45-46e9-9fc4-477dc7140cca)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 37df505f-e3b7-483b-85e1-99d1a420a9b6)(content(Whitespace\" \ + bba0aaf0-ce02-48b3-8363-0a505e4a8bfc)(label(String))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + 2dfa82cb-a0ad-43cd-80f8-12250a0d8604)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 35cb466e-66f5-4d30-b2cf-ab2ccfcd9f06)(content(Whitespace\" \ \"))))(Tile((id \ - 35390017-9451-4508-a83b-7524bad86fc4)(label(_))(mold((out \ + 20a1de30-606d-4663-aba2-49a751268111)(label(todos))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - a3206d48-65ee-4b0e-b65c-addfe0e9c62e)(label(:))(mold((out \ + 406393bc-9711-43a0-97cb-51c78b391ca0)(label(:))(mold((out \ Pat)(in_())(nibs(((shape(Concave 11))(sort \ Pat))((shape(Concave 11))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - b7ecddd6-8846-4963-a461-1f0b9bd84979)(content(Whitespace\" \ - \"))))(Grout((id 4da9fa71-62ee-4931-bcd1-1a33bb41840d)(shape \ - Convex)))(Secondary((id \ - b3f4fb40-e05d-466c-ab85-39d6e23e0767)(content(Whitespace\" \ + 525a645b-c2cf-401e-ba48-5def7f5cf82e)(content(Whitespace\" \ + \"))))(Tile((id 206b48b5-170d-415f-b3ed-e4c050d7d2dc)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + b1def723-a529-4de4-bef7-f2ac9f7880d4)(label(Todo))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Tile((id \ + a5ab52f2-c763-4c6c-8767-2f0816257801)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 51f83b75-975a-4cc2-b319-51d16135487c)(content(Whitespace\" \ \"))))(Tile((id \ - def384f8-b29b-4dfb-a36d-85a809641dbc)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 3bf09644-328a-4419-8c85-f02f99efb9d2)(content(Whitespace\" \ - \"))))(Grout((id a95b9978-19ec-48f9-ba13-6d458ca30443)(shape \ - Convex)))(Secondary((id \ - ec61c941-3afd-4226-8ffc-fc1b54122412)(content(Whitespace\" \ - \")))))((Secondary((id \ - b5fd0857-94d1-45a2-8ac0-41c72af48c00)(content(Whitespace\" \ + b3af6713-b8f0-45b6-b64c-c06f86e97b17)(label(action))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + 694aff0f-685d-43a6-bc8a-c8b427b64fca)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 525082c2-93c3-4827-8080-bcec056624f1)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 2304bbec-64f3-41fb-8ed5-0fb52b5d2e63)(label(case \ + end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + e4739d7e-61dc-4f4b-94a2-079a793d9067)(content(Whitespace\" \ \"))))(Tile((id \ - a3677a6f-6aa9-44e8-a44e-f4643498eec4)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ + c393d927-4ad4-4dae-9c3d-53d90b5c7c6f)(label(action))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ + bcce69a0-0fcd-4c73-ab67-62726259b446)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 6c213037-c878-4f5b-a20a-2f1a983c334b)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - 17fcc7ed-aa0e-493b-97a8-aa78cf51b2fe)(content(Whitespace\" \ + c5063bde-8770-4708-b536-e35816f65c69)(content(Whitespace\" \ \"))))(Tile((id \ - a25707f6-8e51-420a-aa12-05df1b5b9152)(label(x))(mold((out \ + 748e14e5-2641-427a-812c-0cfe674bdcda)(label(AddTodo))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - d22d1ad5-68bc-4ff3-ab87-1eadd3a003ec)(content(Whitespace\" \ + 2967663e-c0a1-4186-b2b7-a3adfbb8ec65)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 90fdd949-668d-4977-a390-869262719fab)(content(Whitespace\" \ + cd8d5dc6-bee3-430c-8d3e-93b47f2172d1)(content(Whitespace\" \ \"))))(Tile((id \ - 0557157c-33b3-43b4-a046-c7b881d19216)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 12))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 755a7811-722a-41f6-9b56-80cdfda1b034)(content(Whitespace\" \ - \"))))(Tile((id \ - 7b63343b-a942-4302-9ce3-56ef30b62d39)(label(true))(mold((out \ + 6ea6b972-420c-4fdc-b021-b3efc96f74e6)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 6d4bc76a-68a9-4cea-ac72-d7d29971243d)(label(\"\\\"\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - ffbc6847-3a7e-4b9e-9514-92e5d8b3e277)(content(Whitespace\" \ - \")))))((Secondary((id \ - bc4fee4b-bfc4-4d8d-a21c-32ddd20d4115)(content(Whitespace\" \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 99835be8-5113-4067-8d9b-ab8805df67e9)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 60ebe427-337a-4413-84d4-9678c2318af3)(content(Whitespace\" \ \"))))(Tile((id \ - 61ef3fd6-dc5e-4173-a46c-21a4e9e903b7)(label(1))(mold((out \ + 38ee203c-f7ea-4dff-bcee-089bf48fdec2)(label(add))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 1a42a366-5df3-4b08-b9b8-ddc50e9fa073)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - d36add28-c6d6-4d4a-ae6b-3b53f65a813c)(content(Whitespace\" \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 5a89eddd-7727-4026-9ffa-70011dd63bc1)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 39fd87f2-c09d-47ce-9114-8ba2efea2ab3)(label(input))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 394932b8-7385-4fa6-a5f3-6b1a5104a1e6)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 4254da34-387d-4f2b-a5e2-63eca84c70a7)(content(Whitespace\" \ \"))))(Tile((id \ - e6fb11d1-572b-4992-bb6f-c3ce42c31a5b)(label(1.))(mold((out \ + f5e1d2c4-d876-4a5c-b6a5-2b4a213337de)(label(todos))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - a1564a6d-ddcd-4382-b57e-1852880686af)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 4c9de5ed-d3f5-40ab-957a-ab2b7ebacf82)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - e9a91bdd-1b8a-4628-805f-0a21e5b22197)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 2d6fed2a-48c6-4b44-b0c2-ab7d7f51af72)(content(Whitespace\" \ + Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + 73985fd5-0c48-48fd-b7c9-ef9175b64ad9)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 16e80d2d-f1a7-44d8-9cba-74fb85dd46d4)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 4a1e7d9a-ab03-47be-9233-5ef5d0d18d05)(content(Whitespace\" \ \"))))(Tile((id \ - b2cdc1f9-3351-483c-9638-f771257810d1)(label(_))(mold((out \ + d5a87c02-7e04-433f-a60b-b31b8e67ab46)(label(ToggleTodo))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 8e161d9b-fe98-4adb-846d-3183117c15fc)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - d7e9e9af-16d9-4be7-b772-47fe800aa248)(content(Whitespace\" \ - \"))))(Grout((id cf9694be-3b9f-4fd3-ad55-858faa4e5f02)(shape \ - Convex)))(Secondary((id \ - de591d6c-a4d8-4591-9c3d-016e28ab0985)(content(Whitespace\" \ + 142c66ab-898b-4e9b-bf0c-dd300c902148)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ + 4578a55a-80a1-4a01-b2ad-58b3377d2f70)(label(idx))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + b3aef523-12b1-45af-b1ef-82316e5d26c1)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 6e3bb251-89c1-4c8b-ac0b-96868f2376c9)(content(Whitespace\" \ \"))))(Tile((id \ - 57226fd7-6fe7-4284-a58e-3e828da4c10b)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 0d276a95-1daa-457d-ab45-dd7874086238)(content(Whitespace\" \ + 4bb540b6-83e9-4a8b-94c2-bae15fc21a47)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + d912f379-0a0d-403e-adbe-058d1409794d)(label(input))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 75210b0c-2a47-4759-9274-7cf29db6f0c6)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + bdc825c6-7a43-4e1d-b7c4-5dfeed624e28)(content(Whitespace\" \ \"))))(Tile((id \ - 2c187a0a-a6d7-4dbd-bf2f-1254faf967c8)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - c5305727-7034-47c4-9b13-76e2ac8b158f)(content(Whitespace\" \ - \")))))((Secondary((id \ - 66945bb7-c5c7-4a6a-bb95-9ab4a4096aca)(content(Whitespace\" \ + 3f0c816e-7168-4d40-a83e-84871d2238b5)(label(toggle))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 49d9cb0c-2ad8-4e39-b226-5ff324512bdd)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + d6d7fa85-ad6e-4053-b818-a99ad0d151f2)(label(idx))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + b03932d2-84d2-4e8f-bcf6-eeb14b0b7683)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + f9749c38-53fa-424d-af40-fad61ac3ea16)(content(Whitespace\" \ \"))))(Tile((id \ - dcf922aa-beb1-4e2b-8b31-79696c1ba35e)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ + b3d58985-cef5-4b61-a3ad-0eecd6badcec)(label(todos))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + 60ef8acb-b170-4ef7-8530-ccdf620aa65e)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 84ca1a08-7a0e-42b9-96f9-a467de969b6f)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - b86c3ae2-f820-4b20-8f4d-c8cd2d034d4c)(content(Whitespace\" \ + c84c0c37-6188-48be-b975-e3acea37d6a8)(content(Whitespace\" \ \"))))(Tile((id \ - 78164bbb-a765-4907-a883-0b43f38c8f40)(label(x))(mold((out \ + c2ab860b-ef26-4644-95d2-9acefc4fd588)(label(RemoveTodo))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 7c476086-ecce-47b4-b7e0-6eda1e7f99ce)(content(Whitespace\" \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 1a022cfc-e9e6-4bba-9827-088cd381b2f1)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ + 0f0c9816-c036-49ea-8c4b-9293f5531d6f)(label(idx))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + 572aa09b-0646-45c3-a490-e72f6e8a4862)(content(Whitespace\" \ \")))))))))(Secondary((id \ - bc736e1b-63f4-4e30-b612-8cce38bb2f4f)(content(Whitespace\" \ + 7c96bf2f-2e2f-4491-b120-ccbf6b6d9cc6)(content(Whitespace\" \ \"))))(Tile((id \ - 774faf15-02ca-49db-aa2c-ed9951c7e422)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 12))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - dec59fd4-6edc-4055-a1e8-db02398bd11e)(content(Whitespace\" \ + 6a19e9ea-c0b1-4c65-9084-8981f57479be)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 66f4ba8e-eec8-4997-9816-8c4c4806c12c)(label(input))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + bd6b4e25-a98b-4bc3-9752-125ebb7446bc)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 8b2a4566-b7e6-44d2-a043-d7a747ddec24)(content(Whitespace\" \ \"))))(Tile((id \ - 66dc2eb8-49b8-4770-a380-03ecb1c39654)(label(true))(mold((out \ + 81fb1ab5-5760-4263-a7cf-12ff84ac368f)(label(remove))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - a6da3ecb-cbbf-4467-b699-f33c2e198794)(content(Whitespace\" \ - \")))))((Secondary((id \ - 97c06b6c-f2fc-4f85-8233-e1e24f55f183)(content(Whitespace\" \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 8317ed61-ac18-4add-bc6c-ae6a0addca6d)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 19cb4087-d473-478f-b536-d463f7ccfbf6)(label(idx))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 55cc3a31-5885-4c23-a611-dcee3899750d)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 6db478d1-eb29-4773-95aa-f961b9aec548)(content(Whitespace\" \ \"))))(Tile((id \ - 49f69120-67f3-4f12-8473-25854331d0a7)(label(1))(mold((out \ + 2ad831e9-5cfc-4ad7-87c1-860229e94272)(label(todos))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - e7adea10-9083-4988-afcf-d748d5c83dc0)(content(Whitespace\" \ + Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + 4e912624-bb33-4104-9c11-52e8b12f2592)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 91df5b24-b842-4f31-b071-33fafda1505c)(label(| =>))(mold((out \ + Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ + Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 46be18d9-3081-46b5-a47d-6c2fe9930471)(content(Whitespace\" \ + \"))))(Tile((id \ + 9008e557-e055-4747-81d4-84e3cbc73109)(label(UpdateBuffer))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 85e6f179-f9fc-4bfd-84cb-c83aa1d43a6d)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ + 54d587c6-bb7e-4968-a3f4-8b45731c01a1)(label(description))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + 0c5d5365-d5ac-4335-8dde-e13c1c21ae8e)(content(Whitespace\" \ \")))))))))(Secondary((id \ - c4bf9155-bdf3-4583-810d-7fbc5963d1a4)(content(Whitespace\" \ + 6c02d9d1-fcb7-4a34-b19d-7d43e4aef005)(content(Whitespace\" \ + \"))))(Tile((id \ + f4a5872d-cadc-4847-ba9d-c2363092f7f2)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + c8182bb3-b2d6-4d3e-abaa-998dfea36dea)(label(description))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 61bd8b47-4f45-4c27-95de-f003113c3bc5)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + fd7f0e07-bf7a-4ebf-ba77-8cd5ac670bbf)(content(Whitespace\" \ \"))))(Tile((id \ - 736d66cf-946f-4560-89b4-3fc126888dc1)(label(1.))(mold((out \ + 84f7c41b-87aa-436e-8409-64468e666ed3)(label(todos))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 4492e518-d63e-4b85-91c2-26cb60446eb3)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 1e2692c3-306c-409d-b336-cef082edcd8c)(content(Whitespace\" \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + f11fb643-62ef-4116-beb3-9726d3ad19ed)(content(Whitespace\" \ + \"))))(Secondary((id \ + 53ea88cc-74f7-412b-aef9-313d84ceb571)(content(Whitespace\" \ + \"))))(Secondary((id \ + 0d2a7206-4a5d-4573-a811-e2bd94972cf9)(content(Whitespace\" \ + \"))))(Secondary((id \ + b22b0771-a9e0-4c69-bfe2-fdc5d055a693)(content(Whitespace\" \ + \"))))(Secondary((id \ + 1aaed8fe-969f-4675-a5ef-4295e5f88e7b)(content(Whitespace\" \ + \"))))(Secondary((id \ + 902087b7-1843-4f92-9647-caac0d305e2d)(content(Whitespace\" \ \"))))(Secondary((id \ - ae09d83c-ae42-4b0e-8765-8aee441f0616)(content(Comment \ - #err#))))(Secondary((id \ - 03b03c43-459d-491b-ad03-a72757614270)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 092b9051-f708-4479-9166-d6161e6b254f)(label(let = \ + 6f1be59b-b641-48ed-ab24-b3fada3b3107)(content(Whitespace\"\\226\\143\\142\")))))))))(Secondary((id \ + ad6f4228-769f-46af-a14b-4266a863229d)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + cb13bd32-ec5c-49a6-ac3c-929e055f9b15)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + d3561025-a5ee-418f-95c3-78080582fa54)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 19a85bee-1a79-4f17-80d4-7f23fae05f25)(content(Comment\"# \ + update tests #\"))))(Secondary((id \ + 6dbf169a-f605-496f-a06f-665ecf9d3aed)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 5dda4ec3-9592-42d1-8429-fa5acab18bb1)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 435a6003-1644-4834-8e82-8b604443c9ec)(label(let = \ in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - bd68afd2-4abd-43b7-b370-539fc05fc7f5)(content(Whitespace\" \ + 859f7c6f-4fd1-43d6-91fd-8822ff1cbae0)(content(Whitespace\" \ \"))))(Tile((id \ - b4ed8e27-adb1-4436-b2d2-fe1faf8d36f1)(label(_))(mold((out \ + aeed9c18-ff4f-40f7-9f35-0f907ff245d2)(label(eq))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - c21f3089-a8fa-414a-b6f4-d07fc101fccc)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 583749a3-eba6-4e91-9cfe-36ff52355aca)(content(Whitespace\" \ - \"))))(Grout((id 4e5cdbcf-6fc5-48e0-abf0-2fc5054d3574)(shape \ - Convex)))(Secondary((id \ - 5a84df8d-23ef-4dac-8388-201f94248eb4)(content(Whitespace\" \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 9c5e4976-bae0-4f83-8249-15e866ec9852)(content(Whitespace\" \ + \")))))((Secondary((id \ + bac52056-7e23-4773-951d-db53738bc5c0)(content(Whitespace\" \ \"))))(Tile((id \ - edb29728-1267-4abc-9081-195f6663856f)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 8a308706-b82c-4215-a4bd-c8cf8fbd1a8d)(content(Whitespace\" \ - \"))))(Tile((id 6bfd0ba4-08a4-4f77-8b64-126378c1907e)(label([ \ - ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ - Typ))((shape Convex)(sort Typ))))))(shards(0 \ - 1))(children(((Grout((id \ - e89b84de-7ab4-46de-a7d5-94abf6588ec0)(shape \ - Convex))))))))(Secondary((id \ - f7dde1a7-74ac-4b68-bf6a-812a666fd963)(content(Whitespace\" \ + 8e132d78-0a18-4b92-8d4b-9ad93b5987f5)(label(Model.eq))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ + 0cb04ce5-6724-4800-8b7b-540122eb3ca7)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 54040fe5-6f52-405b-8737-26bad4d24b23)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d359e4a9-034b-464c-9ef6-2a79846942e6)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + d633510f-3832-4f46-9ab1-af4ebe7e6464)(content(Whitespace\" \ + \"))))(Tile((id \ + 2b2c772b-b144-47e5-bb9a-7124b6ac138f)(label(num_todos))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 0da9ee8c-0725-4c5e-813e-c787f46bf388)(content(Whitespace\" \ \")))))((Secondary((id \ - 4ee83851-34f6-4867-a055-ca51562dfb48)(content(Whitespace\" \ + bb4c27bb-8ae9-4489-a124-a51632bf3b7e)(content(Whitespace\" \ \"))))(Tile((id \ - bba577e3-68f9-4353-ae2d-e24914773aa9)(label(fun \ + 4fd04598-60d0-4f68-9e0e-a4857a88c6b5)(label(fun \ ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - 342ca27b-4acf-4a91-aef6-2426ae0200a6)(content(Whitespace\" \ + 8e1906dc-f1d7-4739-9522-3344698f67c1)(content(Whitespace\" \ \"))))(Tile((id \ - 6271d837-e1af-407a-8f42-902f46019fdb)(label(x))(mold((out \ + 5fe94a46-4cfd-44c1-b2c2-931db6290a2c)(label(m))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 3857a916-2ca2-4b91-9ce3-08bdcea49694)(content(Whitespace\" \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 3f704c6c-66bb-48dd-a2f2-9990201f3c28)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 85dd0b44-e67b-4a37-9f7e-a4879cbbf913)(label(Model))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 134b3616-e751-4d45-a716-c94b46ec856a)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 830c1a4e-d2eb-4d27-b5af-9edfe71db503)(content(Whitespace\" \ - \"))))(Tile((id \ - 5c18044e-489b-458e-ab15-649911a03030)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 12))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 389ce73f-f26f-4be2-a221-dc4713f67f29)(content(Whitespace\" \ + 319f7af1-b6cd-4db9-b8b9-234cba1a4e3e)(content(Whitespace\" \ \"))))(Tile((id \ - 1c4d1edf-c38e-4a8b-a654-eda7ac54fbfc)(label(true))(mold((out \ + a305481a-3662-486b-96ee-95b7904d66c5)(label(List.length))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 5e8c1968-ee4f-426a-a161-a578efb13975)(content(Whitespace\" \ - \")))))((Secondary((id \ - 802b0b26-b087-4fc5-b422-fd7727778899)(content(Whitespace\" \ - \"))))(Tile((id \ - db1691b5-be53-42ea-a42b-48615ce08542)(label(1))(mold((out \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + e9fba76d-3150-49ed-80bf-9284e08de6bd)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + e757731f-0ead-451f-a779-15883fdb8030)(label(snd))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 3815c49c-0867-467f-9881-1ebb7e272bbc)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 90d59c52-5f6a-4dd5-a008-08a674362dd2)(content(Whitespace\" \ - \"))))(Tile((id \ - 77a1c18c-e388-464c-8a96-99d509f09a60)(label(1.))(mold((out \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 7e87eef1-0848-4ec1-a100-6384d23dccc1)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + dda42290-e80d-4eb8-bae1-c2028bec77b9)(label(m))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - c4b13785-8b02-4432-98b3-734f7f00dee5)(content(Whitespace\" \ + Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + c09a8779-0daa-43d8-9171-66e09a6461e8)(content(Whitespace\" \ \")))))))))(Secondary((id \ - c4f76c84-7f32-4d47-b5f1-81bf03e05f9d)(content(Whitespace\" \ + b55c1662-aaec-43da-86be-18525cc471ef)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + e3f3d866-5f21-4c50-8070-59979a8bb80b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 936f4555-455d-4b2e-b70f-7b26bfc4ccef)(label(test \ + end))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + aa6beb34-1b51-42a6-987a-972bfc52fdaa)(content(Whitespace\" \ \"))))(Secondary((id \ - f791a637-6547-4952-b2af-2df75636a400)(content(Comment\"#2x \ - err#\"))))(Secondary((id \ - b280e9ea-b425-4fed-a57a-3299273288d4)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 12f499da-76c3-4ae2-93d0-5ca9e69753b2)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 232006c7-a8ef-48b8-9a78-3cf60d23ceaf)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Grout((id \ - c4738729-fba4-45b6-8020-a79d3a26c31f)(shape \ - Convex))))))))(Tile((id \ - cffc0f76-df2f-4dae-a3ce-3d509789faf9)(label(::))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Tile((id \ - f6e93383-434a-48e3-a0b9-9186037e3047)(label([ ]))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + a2f74908-6408-4dcb-8897-433bda2df3a3)(content(Whitespace\" \ + \"))))(Secondary((id \ + fb6ef08e-3904-4bd7-ada8-3c81a5f853c0)(content(Comment\"# Add \ + adds #\"))))(Secondary((id \ + 37ebfa4a-60fd-4394-b34d-60471b5191bd)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 807fcea6-7001-4953-9855-92ad9af402d5)(label(num_todos))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 1d1d537d-ec18-4602-9583-40eb41c1d7b2)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + d4ac4ced-cfee-4050-abae-0df6dd6c8408)(label(update))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + bc82f7b3-7ace-48a6-8d3c-b88374605be6)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - a9cda473-0dbe-410f-b9ad-521eb61cf321)(label(\"(\"\")\"))(mold((out \ + f69b7278-df3f-4ec0-bcf7-b353581e2611)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - cb5da907-a7ee-4650-9c61-27b4e3d65121)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 12))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - b6fc370c-918a-434d-b3b6-cdd8eabff95e)(content(Whitespace\" \ + 4abc704e-fae0-4cdc-8d33-7238f9ccde09)(label(\"\\\"Breath\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + dfc1988c-7836-41c9-91bf-58101c7994a0)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + f5808bbc-fb2f-4499-8966-d8ed70837fdf)(content(Whitespace\" \ \"))))(Tile((id \ - ed44da3d-79ac-4881-98a4-e782ba366300)(label(true))(mold((out \ + c0d57d44-06ab-45d5-8fef-4c39697d97ff)(label([]))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - fba985da-7e06-4f50-a970-38d7c6ae21a7)(content(Whitespace\" \ - \")))))((Secondary((id \ - 651eb65f-6715-43ac-812c-f1f48bd31f4f)(content(Whitespace\" \ + Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ + d1c0bf62-2880-4c83-b597-2b9ed7c2ec9b)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 8eaa58a6-15c8-4494-b4d7-f973ad901db0)(content(Whitespace\" \ \"))))(Tile((id \ - 5866ac7e-9854-4845-86a3-02fb42bb4d6e)(label(1))(mold((out \ + ada7eff9-8923-4f31-864d-c144f15bc533)(label(AddTodo))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 955402bf-b94d-4e9a-b95f-440e8a942c04)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - d4fe1496-194e-4abb-b7ab-7f0aab65d877)(content(Whitespace\" \ + Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + 39eb0cc1-b436-445f-830d-512650839ce4)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 99000cac-a3c8-4b8d-b57c-f0bcfd46027c)(label(>))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 6c6b8ec4-6b63-4ee6-bfcb-4e2ee1170829)(content(Whitespace\" \ + \"))))(Tile((id \ + 747aa4f8-41b6-425b-a0c9-cebfd204670f)(label(num_todos))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + f8d8be1b-0013-4be3-8d18-db479b2f7cc8)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + fec78d5d-fd3a-41f3-bda0-096ce5a2fa31)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 75aa25f9-6029-40f7-8f48-397930c254f8)(label(\"\\\"Breath\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + c1cbf7e1-31ef-4fff-8338-c702581fe722)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 69a79b95-e3fd-403f-9f09-bbaf0962c7c4)(content(Whitespace\" \ \"))))(Tile((id \ - a3157ede-51e6-4eb4-a998-15ec007ca8fe)(label(1.))(mold((out \ + 2ba9c756-a3ea-48f6-aa2c-39319a088141)(label([]))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort \ - Exp))))))(shards(0))(children())))))))))))))(Tile((id \ - d5ae6ad5-5f2a-4934-9fa7-ffb96b15e9ce)(label(\";\"))(mold((out \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + 609491c2-2ea4-48c0-86a9-49d4c62e80d1)(content(Whitespace\" \ + \")))))))))(Tile((id \ + 5297fe99-c319-42cf-91e9-ff01831afe2b)(label(\";\"))(mold((out \ Exp)(in_())(nibs(((shape(Concave 10))(sort \ Exp))((shape(Concave 10))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 2e1b0250-b0cb-438a-addf-8604f846c3af)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - a3a9866e-fb72-4fc0-aa55-e54dc312fd45)(label(1))(mold((out \ + efb1510b-7552-479d-b2bc-02086b1b8025)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + b1c75072-3f81-43f2-8fd2-84f3eafa2112)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 30e20928-60ad-432a-ac92-7ed8f7bd1190)(label(test \ + end))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 668a95fe-8db3-4159-a437-048dc828110a)(content(Whitespace\" \ + \"))))(Secondary((id \ + 0a3d11c2-7d0e-4d16-846e-8fafc0f78ea9)(content(Whitespace\" \ + \"))))(Secondary((id \ + 6acca731-38e0-4d84-a1ad-fffc3352abb6)(content(Comment\"# Add \ + uses name, initial status set #\"))))(Secondary((id \ + c057310f-e6a6-49c8-b3f3-f5e7ad989652)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + eb44954b-494e-44c6-a448-009da7308bc7)(label(eq))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 6367200c-4fd9-412c-be16-02b8bebead75)(label(::))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Tile((id \ - a56c9c39-7aea-4e94-ad02-25c9017c06ee)(label([ ]))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + 25a053b4-8584-4cad-90e8-4fca349730f4)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 0294c160-54eb-40c6-a07a-45cba7cf7f0e)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 8464547c-47ef-4493-b707-96d692c70934)(label(update))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + d818a730-44bd-4218-bc25-749e09a1a792)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - aaa9b7f2-0032-48e3-8658-07f826c0a19c)(label(\"(\"\")\"))(mold((out \ + e22fc208-3381-4df8-98b9-c3382aab1311)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - accb22c4-cf7b-4bc2-a1f1-4d0c80a4635d)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 12))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - e1b1486e-f426-4623-869f-be7d4b147b6c)(content(Whitespace\" \ + c27ca0ec-af76-4b09-a2ba-d197879fc18d)(label(\"\\\"Breath\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + b05be6fe-b462-4e52-b832-2c1ac304ad39)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 9515685e-7db8-4e45-9289-911332722d82)(content(Whitespace\" \ \"))))(Tile((id \ - 9a4bed25-55cc-4951-9efa-027aa0216064)(label(true))(mold((out \ + 3de82659-bdf5-433c-aa3a-905d87b104d2)(label([]))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 63eebaad-cc2d-4899-bc2b-22fbf548c4dc)(content(Whitespace\" \ - \")))))((Secondary((id \ - 4f914036-bad1-4d1b-b8cd-01000178c611)(content(Whitespace\" \ + Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ + c921f222-5e3d-49e3-bf04-1a11cebac7d8)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 8e8e9a7e-5634-4ba1-8948-3c99619a2483)(content(Whitespace\" \ \"))))(Tile((id \ - a07cee91-fc9a-4f3c-aae3-5e82cca71f06)(label(1))(mold((out \ + f13fff3f-b1f7-45fa-9b33-66b6a6d7b777)(label(AddTodo))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 33c9f869-287f-4ebe-8bdf-f8e1e03558a2)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - e5ef7784-cd98-410c-b653-22ab8af2b11a)(content(Whitespace\" \ + Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ + 73bee231-3c83-4865-8f83-972acf7d947e)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 05e923f2-37f2-4b33-a0d6-269d7a9079d9)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + b6fbc1f5-632d-4ab0-a708-b25b95baf2a0)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 939dc6f2-2015-46ad-aaaf-9cc5909427b8)(label(\"\\\"\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + bf5914f3-1ff4-4647-ab0d-d8f93544bfbe)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + e608a0a0-55e3-4232-a50d-7ed0d541eb9f)(content(Whitespace\" \ + \"))))(Tile((id 388f6fe4-6979-475e-8d7d-c271a9d6a32e)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + eff3ff31-d86d-4bf7-b5c1-1015837904c8)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + f6c07457-e1d1-4ee2-a7c2-8c31c50ec292)(label(\"\\\"Breath\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + df25a16d-da3a-4f46-b335-3dddeb4a9222)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 9a157171-e47e-461b-bc59-22c9eb5274cb)(content(Whitespace\" \ \"))))(Tile((id \ - 3ab4da6a-7aed-487d-b0fb-3113913c693a)(label(1.))(mold((out \ + d084f36d-15e4-4d48-b28b-244cc425e29f)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort \ - Exp))))))(shards(0))(children())))))))))))))(Tile((id \ - 09efe17e-bc3a-44ac-99a7-a868e3452897)(label(\";\"))(mold((out \ + Exp))))))(shards(0))(children())))))))))))))))))))))))(Secondary((id \ + f39c603e-7855-4aa4-8538-ee82fdaa24a6)(content(Whitespace\" \ + \")))))))))(Tile((id \ + 85bd232d-a1e8-4be1-800b-70ffb03a8022)(label(\";\"))(mold((out \ Exp)(in_())(nibs(((shape(Concave 10))(sort \ Exp))((shape(Concave 10))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - af722baf-632d-4d28-92d3-c2f914bd31cc)(content(Whitespace\" \ + 0979d6bb-b4f0-4898-8c6f-d6e5c3b1f776)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 5ddf4259-56c1-4c27-9da5-b42754851f56)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 461074a0-8be5-4fd8-94e2-3ac63b1b8a0b)(label(test \ + end))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 4482bba7-1e23-4165-a884-20cf6ca90266)(content(Whitespace\" \ \"))))(Secondary((id \ - f2e03598-6017-43f2-be61-b8442de25fce)(content(Comment \ - #err#))))(Secondary((id \ - 88af9827-b2be-471c-add1-70a096838b49)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - e01b6ac4-8715-4662-9fc1-87aeb2060bf9)(label(\"(\"\")\"))(mold((out \ + 479d531e-1adf-46a6-9261-b0f87f51b011)(content(Whitespace\" \ + \"))))(Secondary((id \ + 26299701-752a-48dd-9788-5f244614f125)(content(Comment\"# Add \ + nonempty (too impl spec? test add + remove \ + eqs)#\"))))(Secondary((id \ + f43c4ad4-936b-4ec8-babb-4a526dfbf9c5)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + e4697f7f-86ad-4648-8d09-70573e1ff04d)(label(eq))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + ee9269e0-d28f-4ac7-b9af-dde63c1845e8)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 09c5c48f-27a6-4992-a206-4d17bbfcee5d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 9d508c33-b90d-4724-acfa-27cdf6964379)(label(update))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 32a41f99-7bf6-4058-91e5-77c731f7ef70)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + e4a49c64-bfda-425a-aac1-fe6aef97a606)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + e8829831-3f5a-4643-b761-31b636bd5ab0)(label(\"\\\"Chop \ + wood\\\"\"))(mold((out Exp)(in_())(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + c81cf014-4fc2-4fd1-9cd8-1d0468233f9e)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 3f42a96a-0de3-4e34-a275-417422f43e85)(content(Whitespace\" \ + \"))))(Tile((id 4e058c49-687f-4bf1-9b54-4089004daf09)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 6924f57c-2c5e-4b26-9c7d-2949c382611d)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 6ada54c0-de79-4600-bdd5-f42f2f4744f8)(label(1))(mold((out \ + a498e725-8dac-4f60-be44-20df216fda72)(label(\"\\\"Carry \ + water\\\"\"))(mold((out Exp)(in_())(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 1e0b93be-71af-47d7-b825-73e49d0ff24b)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 81cab5b2-a4b2-4ef1-8ab3-ea19f04c48aa)(content(Whitespace\" \ + \"))))(Tile((id \ + 1f3255ef-58d3-416c-8451-fa9d3a2a2cf1)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 54ec4955-7647-4737-87d4-8e21a18943b9)(label(,))(mold((out \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))))))))))))(Tile((id \ + e291ba5f-5104-4e2e-aa2c-1e05c6ddb0a9)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 14))(sort \ Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 5c6fe323-e200-4fe9-8e5e-3a890b129f68)(content(Whitespace\" \ + efcb4e1f-e504-4358-8f11-2ae77d8afd09)(content(Whitespace\" \ \"))))(Tile((id \ - 3157b120-93b8-4d06-bc3e-cfde87fe9690)(label(1))(mold((out \ + 87ee0880-8de4-4536-8b03-b79df095afbd)(label(AddTodo))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - d4a9bddb-e237-4100-b2ed-305e25afd150)(label(::))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Tile((id \ - 065b6501-e20b-48af-94f3-9265d968d3c3)(label([ ]))(mold((out \ + 686a466e-cc71-4ae1-be87-e8131820a86a)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 8c6c330b-fe6e-48bd-a3e2-54f5f7e396c8)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + f64d248d-4517-456a-8b17-644b433bb2c3)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 5e4eb96a-5665-41e1-8b9c-b4cc34bf0c0c)(label(\"(\"\")\"))(mold((out \ + 7950a7a5-3060-4669-9009-491c6395afc5)(label(\"\\\"\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + d5d717ed-5610-4a3f-aa04-a505ac82b3ee)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + cc2e2a00-567a-45d0-a3a9-1ccdf41672e7)(content(Whitespace\" \ + \"))))(Tile((id 245aa9bc-fa8d-4bdf-bcea-c6231fbe30a9)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 3e7dd227-9821-40f3-ba7b-4f0ecfc7b7cf)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - a56978d8-b5e0-491b-8a2b-7648e836e8fd)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 12))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - f9c291e7-47a6-4d4a-8554-85853d267d7a)(content(Whitespace\" \ + edc19559-add2-49cf-9694-ced0d2b56ff1)(label(\"\\\"Chop \ + wood\\\"\"))(mold((out Exp)(in_())(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + c51e6be2-0845-4531-acfa-36646f1604ef)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 3cc224a7-1602-42fc-b676-dbeec83e3099)(content(Whitespace\" \ \"))))(Tile((id \ - 230c9d16-397a-415e-863d-3da8904b8bdf)(label(true))(mold((out \ + aa65618f-b7a2-4ce2-a013-3d31dd3ce66d)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 23eee358-279b-4887-acd9-be029dc2a7d2)(content(Whitespace\" \ - \")))))((Secondary((id \ - 388b2fee-7809-4967-9e99-ad49f557a9f4)(content(Whitespace\" \ + Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ + 4f16c95b-fa74-4046-a1ca-9682089c06c6)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 3270b473-5b1d-4638-9b18-828cdd8be9a4)(content(Whitespace\" \ \"))))(Tile((id \ - ec0c9439-18fa-47c6-89f4-68e8bfd33cb3)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - d15453c9-318b-447a-a077-6c85578cde91)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - b3fd18c7-e008-4eea-8532-ac140f0fe666)(content(Whitespace\" \ + b7ccb37f-7657-463f-b6d3-8775ed9e0600)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 901c84c2-307a-4f78-af64-7dd0c8bf5b4f)(label(\"\\\"Carry \ + water\\\"\"))(mold((out Exp)(in_())(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 5dfbdcdd-901d-4323-8ad4-08e6c03ae3de)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + af8fa4ed-2d4f-412c-8221-4b8d9dc557cf)(content(Whitespace\" \ \"))))(Tile((id \ - b89d7d7f-95fe-42a5-8136-dbcfdaffe43b)(label(1.))(mold((out \ + 905ddeb0-14b9-4cf1-8e89-893ad77f4327)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort \ - Exp))))))(shards(0))(children())))))))))))))(Tile((id \ - adff873a-7d51-4403-aa11-d637d7c536b5)(label(\";\"))(mold((out \ + Exp))))))(shards(0))(children())))))))))))))))))))))))(Secondary((id \ + 6a3f7925-ef68-4c43-8bc3-02b01324da16)(content(Whitespace\" \ + \")))))))))(Tile((id \ + 54d7bb05-7464-46f9-86cb-418ba09564e0)(label(\";\"))(mold((out \ Exp)(in_())(nibs(((shape(Concave 10))(sort \ Exp))((shape(Concave 10))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 692d2d7a-9aab-4a1e-8ea0-024c787bd0f2)(content(Whitespace\" \ + 6257a4d0-50f4-427c-9338-eedf005f366c)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 7d8ed7f1-bc04-4fa8-9168-007af944dcfb)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 0b57c6e5-11dc-4a68-b7a4-2bdf1c25c479)(label(test \ + end))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 565d7e06-f4dc-4aef-ac49-a6f55da72add)(content(Whitespace\" \ \"))))(Secondary((id \ - b2bb1ffd-3dbe-4c43-83ee-d0e2f9cbbdab)(content(Comment\"#2x \ - err#\"))))(Secondary((id \ - 47be2cd3-b03b-45a8-b26f-f92060bc3004)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 5d198806-3a30-42ac-95c0-1df2acdffadb)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 82dc0544-9ae9-488a-a338-819aed1a7c66)(label(let = \ + 50540af4-2413-463e-bf9a-da4917f334a7)(content(Whitespace\" \ + \"))))(Secondary((id \ + c3f84ee9-9b15-4cbf-b762-2a46419f52e3)(content(Comment\"# add \ + then remove doesn't change todos #\"))))(Secondary((id \ + 1d3a9986-5999-4a23-ae09-b25e51f19b1c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 7df07a19-4a24-4d83-8da5-4e9c5fe464ee)(label(let = \ in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - a1005730-3689-4276-af36-eed9216be5cb)(content(Whitespace\" \ - \"))))(Grout((id 700bdac9-76cf-4be6-98b1-c032587de447)(shape \ - Convex)))(Secondary((id \ - c5844890-0517-4035-9bf9-160b2dd905c6)(content(Whitespace\" \ + 0c5ab8f8-4516-4fc8-9768-368518ee4057)(content(Whitespace\" \ + \"))))(Tile((id \ + d4e6fc5e-18a9-4810-8dfa-5adc9097f9e6)(label(todos))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + d9cdbb28-5d86-4dc6-9837-4b07dff3f162)(content(Whitespace\" \ \")))))((Secondary((id \ - 4d4ba1e9-1383-4ca6-b828-421d145b1214)(content(Whitespace\" \ - \"))))(Tile((id bf7c57c8-0bc0-447a-86fd-455f1f8de839)(label([ \ + 5aef4c9d-ec16-4866-b34c-862320825fa0)(content(Whitespace\" \ + \"))))(Tile((id b0b2461c-c3c4-45a8-ace5-85fb089ec2e9)(label([ \ ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ Exp))((shape Convex)(sort Exp))))))(shards(0 \ 1))(children(((Tile((id \ - e47fffd1-3404-4eec-8a0c-bb44253a8a3f)(label(1))(mold((out \ + 8dce7343-5b81-43e5-a4fc-e6e0bfcc5d1f)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + fa0e0dbc-723b-4fd8-852f-36f2245a92a2)(label(\"\\\"Breath\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 9dd9e624-583a-441c-8649-338da0a92678)(label(,))(mold((out \ + 12ad311e-1cb1-4b36-a25c-d5d53f9e5853)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 14))(sort \ Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - a2b0087b-2c53-4d62-b2b3-e1222c73f72c)(content(Whitespace\" \ + 2ba07718-f31e-4e0a-a020-6bc926f84a1d)(content(Whitespace\" \ \"))))(Tile((id \ - db8f24f1-e424-4ecf-819a-384144315f5d)(label(1.))(mold((out \ + 990e94c0-ecde-4975-8089-164bce2ee707)(label(false))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + f056281f-5437-418e-ba68-415b276fa158)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 9e8b4f74-613f-4dc2-8551-cc1e0672e51e)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 4097db81-6117-4808-b02c-b45ad281a522)(label(eq))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 7c1a036c-a6d1-43ba-9a92-06164eacc5a9)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 01c1c487-7488-4a32-8212-910e73780ecf)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + de500b02-8bdf-446f-8863-e9a00435b766)(label(update))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 529cf9a0-8537-4944-929c-8413b2ebf625)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 986e7f6c-42bf-4260-ac80-3da5acbd88bc)(label(update))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 94ff5cbb-c5ba-4d24-8db0-06a3ac347599)(label(,))(mold((out \ + a50a6f4c-2d24-4d22-b67a-4496be909d51)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + bba73888-7daf-437f-a8de-87330e78ec4b)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 5ead63d1-cb10-47a1-a08e-ad55c8ab5b7d)(label(\"\\\"Remove \ + this\\\"\"))(mold((out Exp)(in_())(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 7f65269a-33fc-427e-a1a9-666c864c508d)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 14))(sort \ Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - c0f8eeaf-068f-4d16-bb5d-b7453ed807a9)(content(Whitespace\" \ + a601ee98-f263-4eb4-9aca-51d70fd12c8c)(content(Whitespace\" \ \"))))(Tile((id \ - 1ce9a10c-7085-4b41-9ce1-c17cf835b689)(label(true))(mold((out \ + 63bdc620-d0c2-4892-925c-e733882445d2)(label(todos))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 3f19f742-2f54-4c88-9157-76e4fde5317e)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - a9ca07b3-0f93-4e17-aae0-418f77d6cf01)(content(Whitespace\" \ - \"))))(Secondary((id \ - 029b56d4-87bc-422d-9b26-05af5d126a65)(content(Comment\"#err: \ - inconsistent#\"))))(Secondary((id \ - 09dd70d6-502d-48b2-846e-c5f8efd647fd)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 52f2c094-8b57-407b-80cb-925fe808963a)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - f57dce69-2cf4-4a2d-ad9d-7d40490ba01d)(content(Whitespace\" \ + Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ + db7e1a84-5d0d-4d29-9851-e25589d15163)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + a2efd36e-bcc2-47c1-9a9f-d5c96c9faa9e)(content(Whitespace\" \ \"))))(Tile((id \ - 73fab713-03ee-4900-93aa-2c247ab1693b)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - f0653d97-c095-44b2-8384-aa7ce7488e3f)(content(Whitespace\" \ - \")))))((Secondary((id \ - 47df5f2e-3a90-4ccf-b553-316fddb81a57)(content(Whitespace\" \ - \"))))(Tile((id fc2dc4d9-a9e5-45bd-a9d1-6507d203d663)(label([ \ - ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Tile((id \ - 0b59e204-0333-401e-8afc-d6b4c63394c5)(label(1))(mold((out \ + cedf7151-49e3-49b9-8925-0277fcd78a54)(label(AddTodo))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ + 8601592c-28fd-41eb-b319-baa2952c8f72)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 869bbbd0-9318-4714-8329-b6ea669147fe)(content(Whitespace\" \ + \"))))(Tile((id \ + e7412a4e-6877-4d5e-9a34-4283b55d5f4c)(label(RemoveTodo))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 034534be-8504-4e02-918d-d368e0fddce7)(label(,))(mold((out \ + 0360033d-65e0-4ed2-946f-39831ed7662d)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + bc015e99-6742-42b5-88f4-9849cb6a4a9b)(label(0))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Tile((id \ + 506382b2-2517-43cc-8f47-6df3662620b9)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 14))(sort \ Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 2b1f1e0e-b99e-4c62-a294-ff9dcf4b5520)(content(Whitespace\" \ - \"))))(Tile((id \ - 1ea91616-8aec-412d-82f9-4e9351bbd291)(label(1.))(mold((out \ + f22215de-a18f-4a87-8d15-0ea74c72e3d3)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 534c38b4-cab9-4508-8260-9471b03a6ebe)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 7a122b3e-bbd0-4b22-a3d4-2fad351849d3)(label(\"\\\"\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - fbe8cbf8-4245-4ba8-a68a-b03eb53c3399)(label(,))(mold((out \ + 7f82231d-3c73-486b-9340-e8ccbe4d3e52)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 14))(sort \ Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 007fb3dc-eaa2-4910-b467-287968ed26d3)(content(Whitespace\" \ + 0327966b-f188-43fd-8982-5296c911deb7)(content(Whitespace\" \ \"))))(Tile((id \ - e77e5eff-3894-43f6-96e4-13961e664183)(label(true))(mold((out \ + 165edd4d-c1bd-48b4-a4c9-5e67d6a28390)(label(todos))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - d4ed2f71-1740-4928-81d2-b0c0151b5a7d)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 1943c974-3ce2-4578-940a-728197ec1ec3)(content(Whitespace\" \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + dc67713a-5299-4c7c-a36b-8c1d35cf5549)(content(Whitespace\" \ + \")))))))))(Tile((id \ + 26ded21d-0709-4fc6-bd69-4b66ce17c419)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + b85af62a-e8ec-4493-bf3d-ae47c0fe9827)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 7fb94caf-ab52-4149-8b35-df3821ec6fc0)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 48588c6a-6b5a-49f5-a6dd-3c9b6d7e8f61)(label(test \ + end))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 1677d127-f0c3-4226-8da9-c945c38bce25)(content(Whitespace\" \ + \"))))(Secondary((id \ + 40a0d15a-14b4-4dd9-9e99-4e5378ae61cd)(content(Whitespace\" \ \"))))(Secondary((id \ - 48c7f1ad-35cc-4f97-95e7-c68ffe8023f7)(content(Comment\"#err: \ - inconsistent#\"))))(Secondary((id \ - 0f0be7c3-2c77-4e05-aba3-ae8405f61d16)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 03a920d7-95a2-4754-8416-1123bd6f2f11)(label(let = \ + 827f3e77-d0c9-4401-9239-0f6fe389f6e8)(content(Comment\"# \ + Toggle preserves length #\"))))(Secondary((id \ + 5c44dc30-3959-4940-8491-25e53694cb3a)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 79a37bcc-fc04-4dbc-b91b-732a7d31571c)(label(let = \ in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - 826ad200-168b-4a5f-af94-df033e42e4b7)(content(Whitespace\" \ + 3cb3d116-6c31-4742-80a3-9ca704dcafc9)(content(Whitespace\" \ \"))))(Tile((id \ - ca9ddb7f-5f91-4956-ba30-44aa1648f245)(label(_))(mold((out \ + c51e7014-fc27-4d9b-b8f6-73c7d81488ed)(label(model))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 6dc24ff9-bf61-4a92-8f2f-b7c3f67217c2)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 1499fbd3-ca66-47ba-8411-7500ca3fe394)(content(Whitespace\" \ - \"))))(Grout((id e6ddec97-cd3c-422a-b214-ca8fd61c2331)(shape \ - Convex)))(Secondary((id \ - 8d2a046f-1546-4749-858d-626905d77eff)(content(Whitespace\" \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + f8c233ca-bbdb-4d43-ae17-8e15c31ec168)(content(Whitespace\" \ \")))))((Secondary((id \ - ae4808bb-0f13-4a47-8d93-7dc155ad32bb)(content(Whitespace\" \ - \"))))(Tile((id 32ae3fb5-4544-4cd4-a792-f9256875488c)(label([ \ - ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Tile((id \ - ff441609-be5e-4d1b-b544-9799d7a3011b)(label(1))(mold((out \ + 66a6a9d9-db6f-47b2-bb42-570534bf966c)(content(Whitespace\" \ + \"))))(Tile((id \ + 3d9da54b-fd63-4e9d-81af-b62d83cc5494)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 810bd583-7f59-4097-ab76-3622dc866485)(label(\"\\\"\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - b6463e8d-e7b5-4545-9fc7-4924aa2693a6)(label(,))(mold((out \ + b7f5d0d5-85ff-4437-a430-5bc688392aee)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 14))(sort \ Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - cd358f94-2daf-4f24-8548-3d5bce3213c0)(content(Whitespace\" \ - \"))))(Tile((id \ - c5e0a263-a161-49ed-91c8-598982eab8ce)(label(1.))(mold((out \ + 2d56c2db-8934-4eef-a585-34d54464ae34)(content(Whitespace\" \ + \"))))(Tile((id d1ea0b9a-5559-4fe0-a930-9c5bd0b7333b)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 7afdbfbb-3bcb-4668-8a08-56f134f0d65a)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 6ada6435-3a08-4048-9068-628a75bec913)(label(\"\\\"1\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 1f911b96-1c72-4e92-92a6-7f2d5a352c90)(label(,))(mold((out \ + f19aff79-0698-43fd-8711-9252c1f6e5aa)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 14))(sort \ Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 5b6d3a14-25dc-405b-8f4a-c0577ded0d7c)(content(Whitespace\" \ - \"))))(Tile((id \ - 433e239a-9d57-4e8d-88d4-3d051553fc95)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - b8f71dee-301b-4173-8fd6-f5daf5c8c00d)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 534a6cef-6e24-4f16-a7ba-2edbd118aab9)(content(Whitespace\" \ - \"))))(Secondary((id \ - 0051a088-619a-4934-8f53-0219031c1bb2)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 3df4acfd-98e9-4fce-9853-95fb92574871)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 1cfe8911-f9b5-4422-95bb-443dae0d0105)(content(Whitespace\" \ + 6affa70d-0b29-48d7-bb1a-7e1f939c2765)(content(Whitespace\" \ \"))))(Tile((id \ - 25d47a4e-06ae-48dc-99d6-32a41983492b)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 3959b315-bd21-4c0d-8385-3dc34326cdb5)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 41cd46f9-c78b-483e-bc9d-5ba5248ce0c8)(content(Whitespace\" \ - \"))))(Tile((id 33511225-301f-493f-9ac5-0c48a3b2301e)(label([ \ - ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ - Typ))((shape Convex)(sort Typ))))))(shards(0 \ - 1))(children(((Grout((id \ - a7219f30-6814-4af1-9fb1-560e9131e0d9)(shape \ - Convex))))))))(Secondary((id \ - 09487b14-597f-48f5-bf3a-5f01ce9e2bed)(content(Whitespace\" \ - \")))))((Secondary((id \ - 5370e5d1-290d-4e66-9ba7-4c03e6723ff9)(content(Whitespace\" \ - \"))))(Tile((id 6b62996f-8ade-4ed9-817a-6b538a6918eb)(label([ \ - ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Tile((id \ - 9a080685-90e3-41d1-8f92-e7d253dc7245)(label(1))(mold((out \ + a1bdd618-eb92-4104-8ab0-fbe0daf84643)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 369a1435-3a95-444a-9322-4055172d6863)(label(,))(mold((out \ + Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ + 0a7e5de7-209c-4671-87fc-9cd01930bf2d)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 14))(sort \ Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - d6a5c2d1-aed3-4c53-a454-2d3922735b2f)(content(Whitespace\" \ + db1f0afb-a6ee-471e-8235-d7acd6345719)(content(Whitespace\" \ \"))))(Tile((id \ - d58190ee-5471-4175-8fef-aceb5596ec09)(label(1.))(mold((out \ + 77c084b9-8f8e-4254-b547-704fc009cfb4)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 3040d3db-4066-4c8f-a9cc-ccdad69018c8)(label(\"\\\"2\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - d8eac610-d479-4c9e-9577-cb9989ee9e8c)(label(,))(mold((out \ + 3bcb77f7-8657-4643-8b1d-44327c0d5fc4)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 14))(sort \ Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 03e22831-29ab-4096-8d75-455d5c164e84)(content(Whitespace\" \ + a7d51101-186e-4e49-b862-edb709f59303)(content(Whitespace\" \ \"))))(Tile((id \ - 782f78ca-f815-4a62-a570-fcaf036f954d)(label(true))(mold((out \ + ec35c9c0-94e3-4b8d-97a4-a0422db0e610)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 2797e94b-90e6-4c45-8cb7-e069a6e5c16b)(content(Whitespace\" \ + Exp))))))(shards(0))(children()))))))))))))))))))(Secondary((id \ + 3400763b-1c30-414b-8ad4-c4918990b231)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 72fe75f0-3e31-4113-8f25-fce1dfafcf1e)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - fc4a0da5-2b7f-467b-9d51-c79d28bbd2ce)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 663ff7ee-c38f-43fe-9615-7c4489dfa541)(content(Whitespace\" \ - \"))))(Tile((id \ - 66a49fc3-2189-451d-8f5b-87a4e7a4a1fd)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 4ede6a03-d0d7-4332-8382-c88b3e0c2d11)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 2bf08639-ade9-4636-bb33-b789e670937e)(content(Whitespace\" \ - \"))))(Tile((id 971f3ba1-d70d-47d7-a9a1-dc52bc83fd36)(label([ \ - ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ - Typ))((shape Convex)(sort Typ))))))(shards(0 \ - 1))(children(((Tile((id \ - 5632be0d-1afc-4c45-9fba-7b815246c884)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - e016ef9f-b73f-4ca5-87c0-6e1b9d52fb73)(content(Whitespace\" \ - \")))))((Secondary((id \ - 40558f24-ca8d-4dda-a0b3-13a39b1927f3)(content(Whitespace\" \ - \"))))(Tile((id a949b592-988a-46d0-ac9f-176609db6dde)(label([ \ - ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Tile((id \ - 06fa3969-d9ca-442b-825e-dc407e6f6723)(label(1))(mold((out \ + a2f45ae0-584e-4eb7-b0e0-d14537cb9909)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 20423d26-e060-45ed-ab37-cd77617daad5)(label(num_todos))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 2bb73b05-ca08-4c0a-a04c-dadb433de26a)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 0f424bab-a2f3-4fe0-8a09-8f2cd90c3a07)(content(Whitespace\" \ - \"))))(Tile((id \ - 5a87620b-a433-4fb9-9d1a-09c9b3beab6a)(label(1.))(mold((out \ + 5993268e-953f-4485-84e7-10d9a63277e5)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + c8e2a23c-2656-40ea-b9ad-0dcf4d4242df)(label(update))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 53ac8d2d-1cda-4635-919a-c0a605068d02)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 8251b1fe-bd81-451e-839b-5596ad643b88)(label(model))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 512129f6-6a3c-49fa-bf77-83e9e10f4705)(label(,))(mold((out \ + 1a9c7914-ced6-4f3e-9b0a-330a467170ac)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 14))(sort \ Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 3ce93584-77cc-4b97-a406-c4462d511dcf)(content(Whitespace\" \ - \"))))(Tile((id \ - 37022cb4-317b-4348-a086-5283db30d7b9)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 67645fa7-6a97-4584-8064-fa31c7466741)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - a8ae0eb5-666a-43ff-a24c-b8f82ebd4e9c)(content(Whitespace\" \ - \"))))(Secondary((id \ - c1852265-6f47-40cd-83ef-8fe57cae7e70)(content(Comment\"#2x \ - err#\"))))(Secondary((id \ - ce5d18a4-9cc3-4438-a7f3-431f8d3a2461)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - dac99d0f-a7ce-4629-9f71-f49bd6a718c6)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 440becc1-96de-4739-b860-ca47255d3d93)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - d4ab6143-0bfc-4c9e-9bfb-b9ee50bd5289)(content(Whitespace\" \ - \"))))(Tile((id \ - 620340ff-4a97-4b5f-b39b-76f560bf58db)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - e7ff297f-b0a7-4c0d-9772-47acfe9a6d9c)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 6f00d686-a3ff-4431-b4c2-b70d3b4eca14)(content(Whitespace\" \ - \"))))(Tile((id 00df244e-2507-40cf-a767-3a29432ad8fe)(label([ \ - ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ - Typ))((shape Convex)(sort Typ))))))(shards(0 \ - 1))(children(((Tile((id \ - 130f2a32-39da-49cf-a550-754622dc404a)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 1eab60a0-5c07-4a92-82db-5971b1db666a)(content(Whitespace\" \ - \")))))((Secondary((id \ - f10579e0-e416-410d-8ae3-12925c91671a)(content(Whitespace\" \ + 96aabf5a-f88c-4286-a56a-7a3f7f5fceae)(content(Whitespace\" \ \"))))(Tile((id \ - 16944a0f-57f1-4e24-a573-1d9231d16e57)(label(1))(mold((out \ + 2285ba3e-d31b-4c7f-8d06-a1a5572d8222)(label(ToggleTodo))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 317f017d-a9c9-467d-8cb9-e56c0495a060)(label(::))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Tile((id \ - 6aa18463-de32-445c-8338-c11780d4d4d0)(label([ ]))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + f9401c08-5d68-471b-a56c-bdd264fef7c3)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 4a870256-b389-4bbb-95bd-47834fae994b)(label(2))(mold((out \ + b872010e-d200-4758-b8b8-c783bf106e15)(label(1))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 369ea7b7-0d09-42c6-8b54-6cb084d8270f)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 5c3c92c6-a066-49fb-ba63-589c5b309625)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 6dbcf6a1-4176-46e9-802a-b16c71d040ab)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 9ef098ad-fe36-44f2-9487-6d9ff6656d48)(content(Whitespace\" \ - \"))))(Tile((id \ - 1d8fcf7b-fa79-4de7-a9f4-55fff3ada3bc)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - cca7629b-c4d5-4045-a00e-197b16dffc60)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 7eaffe3b-5b20-4937-a693-400f5a3d7987)(content(Whitespace\" \ - \"))))(Tile((id d1ce8a09-d6e6-443e-8fb6-77904043ba41)(label([ \ - ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ - Typ))((shape Convex)(sort Typ))))))(shards(0 \ - 1))(children(((Tile((id \ - f2827f6e-aef6-40eb-9e99-959cbeb8f626)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - a5a96d03-071f-4595-bb82-1f287d604bb3)(content(Whitespace\" \ - \")))))((Secondary((id \ - aa9f6dd4-afc8-432f-9060-c140c31c2b5b)(content(Whitespace\" \ + Exp))))))(shards(0))(children()))))))))))))))))))(Secondary((id \ + 6a0f5263-d7cc-498b-b76d-2f2d400fd7cb)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 7d220eed-c069-4119-abf4-ec6219956096)(label(==))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 8))(sort \ + Exp))((shape(Concave 8))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 87026526-13cf-4311-9d60-99d1bd8dacac)(content(Whitespace\" \ \"))))(Tile((id \ - 9c1620d9-ae11-41e1-ad5e-663b10aa1c56)(label(1.0))(mold((out \ + 3d8825eb-f701-46b9-a82b-18bdeee79c7f)(label(num_todos))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 4c545fe6-4860-489f-aaed-de76ee3722c2)(label(::))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Tile((id \ - 90f05b86-6ed6-4da8-a1da-5bc842610088)(label([ ]))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + a101c728-c7d0-4a83-9c90-1b337dbabf41)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 357ac56b-6008-46c3-823c-f71e965f9072)(label(2))(mold((out \ + 7830afb2-1c29-4c51-bfc0-76d3cd065bf2)(label(model))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort \ Exp))))))(shards(0))(children()))))))))(Secondary((id \ - ef444fb8-d541-400d-9576-a500ff7bea51)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 125ff66a-6b89-4566-98fd-2a802fd970b5)(content(Whitespace\" \ + 07d67396-eace-453c-a591-ed758d2c28c2)(content(Whitespace\" \ + \")))))))))(Tile((id \ + 679d822b-de53-4ecd-a241-fada164dddd6)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + f44ce806-b50f-4c41-a07f-042e7ba08803)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 2f6eb60a-cda1-43ca-bcca-2817ca753cd2)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 5c3b9d1c-a258-4ecb-800d-87487908c2c1)(label(test \ + end))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + aa2f530c-7350-48d1-9f58-31ad8ec94354)(content(Whitespace\" \ \"))))(Secondary((id \ - 5939a641-eb88-4f4f-a322-69b1571271b5)(content(Comment \ - #err#))))(Secondary((id \ - 7baecabf-72e3-4455-9cfb-16777b0057ac)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - bd06e95c-6b0f-4708-b642-e09aec6b32ef)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - bff70791-8893-4e8b-9f92-e0ac69a6e939)(content(Whitespace\" \ - \"))))(Tile((id \ - 34216c66-e05e-4f03-91a9-61f892a850f8)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - f7733b0c-dd77-44b7-b56e-d0c1a6636b6c)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 8f04892c-18d2-404b-9894-3e9aecc981e2)(content(Whitespace\" \ - \"))))(Tile((id b48afdf7-f131-4d9f-b829-0bb01434f348)(label([ \ - ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ - Typ))((shape Convex)(sort Typ))))))(shards(0 \ - 1))(children(((Tile((id \ - 2546b193-bb89-4e2c-a1e1-c0c3aa775d8a)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 925587ff-8973-457c-853a-0f6c71cd9c4a)(content(Whitespace\" \ - \")))))((Secondary((id \ - 5ca988e2-330d-4e80-91b9-e9031eba4cef)(content(Whitespace\" \ - \"))))(Tile((id \ - ed424387-c3f5-4d4e-a276-ae526e114f39)(label(1))(mold((out \ + dd67a618-d483-47f7-add2-403d7df665d3)(content(Whitespace\" \ + \"))))(Secondary((id \ + 7f9268cd-424d-4bad-9520-a86355a74924)(content(Comment\"# \ + Toggle toggles right index #\"))))(Secondary((id \ + e68b5284-d3dd-4af0-b415-64849557350c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 35c2b34a-4c57-4972-af81-41dbf3bcbb1a)(label(eq))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 41bdc089-5d46-461e-91f0-3c4d5c8c975c)(label(::))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Tile((id \ - 75eaeaea-6d82-4f4f-8ff2-c3d0163c6017)(label([ ]))(mold((out \ + 74e3f4ad-a6a1-43f2-80c4-db6ef2a29b51)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + bb332d59-eaa0-4f79-90b4-7429009de57a)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + ac955919-f01c-4c94-b5fc-3c9b781e8a20)(label(update))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + ed87e104-4645-41fe-8596-ece72eb7125f)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 6d0b32ea-8104-4615-a5c2-341f695b0b3d)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 4516c234-075e-4464-965c-666a0de1e8cd)(label(2.0))(mold((out \ + cae0d9eb-de85-419b-a890-a2490aeaf22c)(label(\"\\\"\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - cb0e4361-9db0-45cf-9b66-9f1812a87332)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 1be9f5d9-ceb5-4b89-811d-6975be2757f4)(content(Whitespace\" \ - \"))))(Secondary((id \ - 8cd1685f-b46f-4d3e-81e3-632df69a6af7)(content(Comment \ - #err#))))(Secondary((id \ - 0193a545-1ce2-4a17-94b8-be94999b8a06)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - b5361ea7-4e12-48c1-8444-5e38cbb19a59)(label(\"\\\"BYE\\\"\"))(mold((out \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 78971900-11f7-4fd2-9bcc-db1835e0d5aa)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + f06c00db-9799-4264-961b-317fd8b12bc4)(content(Whitespace\" \ + \"))))(Tile((id 7e6fdebe-f11b-4a81-9b27-1bac7fa8101f)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 474d4ec9-400f-479b-87fa-fdbce89ef47c)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 24db51ba-0ecb-4fc9-a18d-6829a6236f09)(label(\"\\\"Chop\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))(ancestors())))(caret \ - Outer))"; - backup_text = - "# Internal Regression Tests: Type errors #\n\ - # Each line should show errors or not as indicated #\n\n\ - let _ = unbound in #err#\n\ - let Undefined = Undefined in # 2x err# \n\ - let true = 2 in #err# \n\n\ - let = if true then 1 else 1. in #err# \n\ - let _ = if true then 1 else 1. in #err#\n\ - let _: = if true then 1 else 1. in\n\ - let _: Int = if true then 1 else 1. in #err#\n\ - let _: Fake = if true then 1 else true in #err#\n\ - let _, _ = if true then 1 else 1. in #2x err#\n\ - let _, _ = (if true then 1 else 1.), in #err#\n\ - let _: , _ = (if true then 1 else 1.), in \n\ - let [_] = [(if true then 1 else 1.)] in \n\ - let [_] = (if true then 1 else 1.) in #2x err# \n\n\ - ( )(if true then 1 else 1.);\n\ - 1(if true then 1 else 1.); #err#\n\ - (1)(if true then 1 else 1.); #err#\n\ - (fun -> )(if true then 1 else 1.);\n\ - (fun _ -> )(if true then 1 else 1.);\n\ - (fun _: -> )(if true then 1 else 1.);\n\ - (fun _: Int -> )(if true then 1 else 1.); #err#\n\n\ - let _ = fun x -> if true then 1 else 1. in #err#\n\ - let _: = fun x -> if true then 1 else 1. in\n\ - let _: -> = fun x -> if true then 1 else 1. in\n\ - let _: -> Int = fun x -> if true then 1 else 1. in #err#\n\ - let _: -> [ ] = fun x -> if true then 1 else 1. in #2x err#\n\n\ - ( )::[(if true then 1 else 1.)];\n\ - 1::[(if true then 1 else 1.)]; #err#\n\ - (1, 1)::[(if true then 1 else 1.)]; #2x err#\n\n\ - let = [1, 1., true] in #err: inconsistent#\n\ - let _ = [1, 1., true] in #err: inconsistent#\n\ - let _: = [1, 1., true] in \n\ - let _: [ ] = [1, 1., true] in\n\ - let _: [Int] = [1, 1., true] in #2x err#\n\n\ - let _: [Int] = 1::[2] in\n\ - let _: [Int] = 1.0::[2] in #err#\n\ - let _: [Int] = 1::[2.0] in #err#\n\ - \"BYE\""; - } ); - ( "ADT Dynamics", - { - zipper = - "((selection((focus Left)(content())(mode \ - Normal)))(backpack())(relatives((siblings(()((Secondary((id \ - 1f7bcab0-da00-4299-b43a-3ca1ef8ca2f5)(content(Comment\"# \ - Lambda Calculus via evaluation by substitution \ - #\"))))(Secondary((id \ - a927feba-9938-45cc-88da-4ca88fbace46)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 59554d6d-5be9-43cb-a4d6-1edf55e3c098)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 41573bf5-78b0-4f95-b6e2-3c4ce9dbd6d5)(content(Comment\"# An \ - Expression is a variable, function, or application \ - #\"))))(Secondary((id \ - 5e7af976-9c1e-4841-847a-70c966af0583)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - a76c3b61-221f-4e94-b8fd-5b45183df229)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 40bbb356-6987-428c-a8ed-2a6b99066f39)(content(Whitespace\" \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 3e41ab9a-b7b4-49b9-8668-88814e3eca5a)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 115f0068-9692-4113-8d3c-6e625ad8fecf)(content(Whitespace\" \ \"))))(Tile((id \ - 5b4a5ae1-4e37-4f29-abcf-0ce0108de2c0)(label(Exp))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 1cc38bcf-e0a0-416f-8cc3-1655722f05a4)(content(Whitespace\" \ - \")))))((Secondary((id \ - 09d316ec-a283-4c84-a902-cdb1b0d8fcc7)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 5c00fca1-9f11-4ed9-bb7b-507bdcb1fae8)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape(Concave \ - 10))(sort Typ))))))(shards(0))(children())))(Secondary((id \ - f097f93b-c8d3-423f-8301-953e7fa560a6)(content(Whitespace\" \ + 8d1a0abf-297f-438c-9706-9685c00fba59)(label(false))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ + ff521367-bb57-4a6d-a709-d00e4f97ce30)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 0f59afac-cd47-4782-a543-fda24c441a79)(content(Whitespace\" \ \"))))(Tile((id \ - f02ccc58-351d-499c-87ed-687857f5aafa)(label(Var))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 8096ab83-dd0c-47c0-bb76-b0e811b0c1bf)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - a375c863-da66-4010-a25f-778944a6db48)(label(String))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 8ee1d2e1-06c2-441c-8fc4-138532d469d2)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - bc72ff0d-8a9d-4ee4-ae45-b2c94f67eca9)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 10))(sort \ - Typ))((shape(Concave 10))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - c7ed4279-1d9d-44bf-af67-23ca84632b04)(content(Whitespace\" \ + 0ee34a0e-023b-4e60-83b2-6f0caa182bc6)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 8bb19708-b3d8-4e4e-a84b-f0bf50b6fb20)(label(\"\\\"Carry\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + b9d4d348-c254-4f8a-a1bb-bda4d2276342)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + f913e557-03e9-4aef-a425-bc5efe821fc3)(content(Whitespace\" \ \"))))(Tile((id \ - e2c11b78-0c54-448e-9cca-e4c8bfc8bbb2)(label(Lam))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 4d2df657-924d-4f14-9eec-0ecd7f5c21c9)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - a64e19fe-5bc6-4139-8b40-96e3583fa4fc)(label(String))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - f3daa7e8-f243-4222-8ee4-ddc0f9155c46)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 14))(sort \ - Typ))((shape(Concave 14))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 447e6442-bdde-46f7-8882-6bb1f68d67d7)(content(Whitespace\" \ + ad1ca28d-ca86-4120-9998-5f98ec63df67)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))))))))))))(Tile((id \ + da40fe05-a14e-43f9-b572-7604c636fea0)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 920f4115-7bbe-4ada-b7db-ed3ff706569f)(content(Whitespace\" \ \"))))(Tile((id \ - 15875387-e3ed-4473-9c6a-453a68e8b117)(label(Exp))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + 0eff66df-74d6-4211-9143-35bd1bfd5811)(label(ToggleTodo))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + d86cb9fe-68ce-401a-ad89-2f3641a52d66)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + d87c5254-396e-42be-96af-564c0862abd4)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 0f46618b-71ec-4bf5-88ca-75d3bf0a549e)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - cd1bd397-be90-494c-9ea6-17847e56b805)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 10))(sort \ - Typ))((shape(Concave 10))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 04185bae-3d12-4049-affc-da427e740d6b)(content(Whitespace\" \ + Exp))))))(shards(0))(children())))))))))))))(Tile((id \ + bc91e250-93ce-44b5-aaa7-ea60c284ba3b)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 3415d954-b5cb-4c84-b0a4-3c4bf645a581)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 82d62269-0892-4e0e-bb69-7f19202aa92e)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 4ae41444-f8b9-4b8e-88f1-221e194a692b)(label(\"\\\"\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 0f08e41a-ec79-48a6-9e03-847e70da9844)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 6e69aa2d-f817-4d09-9071-5befa99108ad)(content(Whitespace\" \ + \"))))(Tile((id edd9035c-7953-48a9-a493-615018f5a9c6)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + ef2db0d6-7433-4c96-aa65-f9463258f3a2)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 9f86cb4a-60c4-4f49-b70a-fd29044fd759)(label(\"\\\"Chop\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 50aa1d24-91ee-404d-9fad-edf17e292cce)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 3bd28571-d5ed-486e-bb63-f8f644952cd3)(content(Whitespace\" \ \"))))(Tile((id \ - 559ea70c-729f-4295-a48a-c27dd9fad885)(label(Ap))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 2e0537e7-5ee1-499d-9edf-c2eae0b53264)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 2bbfcd7d-a9a0-41f5-9f2b-65e6f4f0fc50)(label(Exp))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 40bda1cf-399a-4368-9a93-1b34120aafac)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 14))(sort \ - Typ))((shape(Concave 14))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 4f27a6c1-9f31-4f48-9f67-81fb4bdb8815)(content(Whitespace\" \ + d6beb96e-5eba-46a1-8c8a-93993d732f90)(label(false))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ + 83f6a98a-a15c-481c-81c2-3a4728f197bd)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 98556e49-5cc5-4801-9577-8e668ab06374)(content(Whitespace\" \ \"))))(Tile((id \ - f9b126eb-6ecb-42a4-9b11-255fcea67577)(label(Exp))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + 0bec8dda-dc57-4136-827e-55f6351a6077)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 58ee11a4-2626-4ed3-b586-d669230e9399)(label(\"\\\"Carry\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 3ec59acb-1e43-4570-9586-3919bda5cf44)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 7a4f70ee-e7de-4259-96f6-7e145e4cb934)(content(Whitespace\" \ + \"))))(Tile((id \ + 08fb355b-885e-481b-b93a-9158e609dc3f)(label(false))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 297a96d2-948f-4fdd-9884-8e547ed933a8)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 60f3914c-75d8-45b9-91c8-408f8d99eded)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 0a6f99c3-1727-45b2-a08f-1194554cea5f)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - dfed049c-1560-40ad-adef-7de21ec01615)(content(Comment\"# \ - Syntatic Equality of Expressions #\"))))(Secondary((id \ - 02c2cda8-cd30-4c87-8633-79f6279f2923)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - d1c59a7b-15de-49ae-aaf5-056c65738d18)(label(let = \ + Exp))))))(shards(0))(children())))))))))))))))))))))))(Secondary((id \ + 5edd0d03-5ef5-40ac-8dd7-b59c9f67d97e)(content(Whitespace\" \ + \")))))))))(Tile((id \ + c1bb4a3a-ac2d-495f-94e9-990948e4428f)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + d389b642-98e2-43a6-9aba-558a0dab5c49)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + d4107dbb-a64a-4ef6-bf75-a78dd02d6435)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 23c0d4f9-6583-413b-b02b-a768b2d90137)(label(test \ + end))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 08df66c1-905d-4114-8851-c27a5eae36ae)(content(Whitespace\" \ + \"))))(Secondary((id \ + b73e36e6-e643-4bda-b501-de1c5d6d832b)(content(Whitespace\" \ + \"))))(Secondary((id \ + e9302cd8-ea2a-4a3d-abe1-b6ffc35a1bd4)(content(Comment\"# \ + Toggle out of bounds #\"))))(Secondary((id \ + 0876923a-8d01-47fd-8051-beeba1ed8d68)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + bdb9b492-d53d-4923-9e33-60bb6e74196a)(label(let = \ in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - 321c3b7f-71b6-433f-8ba5-3a176f503ee2)(content(Whitespace\" \ + e924d93d-a98b-4d49-8593-987b0cadc469)(content(Whitespace\" \ \"))))(Tile((id \ - 20a41284-a854-463e-8f08-880a85b83d3c)(label(exp_equal))(mold((out \ + 2c00d613-044e-4a1e-b37a-39ff997e75e8)(label(model))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 78495729-2b1d-4e8e-8f1d-c9d28f6a7a60)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - dbee2db7-3f10-4979-9024-bc34f7453770)(content(Whitespace\" \ - \"))))(Tile((id \ - 72d5e73e-ff5a-4bbc-9d1d-7e6e1581e413)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - cf35fc7b-7318-4d81-8163-b650fd7de4f0)(label(Exp))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 3907ffc4-af80-403a-839d-82b1232395f2)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 14))(sort \ - Typ))((shape(Concave 14))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - d7aca28b-65fd-473a-9fb6-65ea96ef78d6)(content(Whitespace\" \ - \"))))(Tile((id \ - 22f01e9c-afbb-4e08-8acc-d315f402817b)(label(Exp))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 4ab91533-0de3-4d84-b8b2-7fbe33be34a4)(content(Whitespace\" \ - \"))))(Tile((id \ - c59e6b78-fc5b-47bb-b830-9d4fe67c0b13)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 7b30dd6b-c498-4637-ae4a-f6afea955a90)(content(Whitespace\" \ - \"))))(Tile((id \ - d000d521-0821-47e0-b655-52db20eb828a)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - af54a209-ee0b-4c7b-961a-d2565352172e)(content(Whitespace\" \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 2dc26aa7-cb08-4610-b5b0-5b98749456c6)(content(Whitespace\" \ \")))))((Secondary((id \ - 5668d661-45f0-4cfc-bfb1-264fca05b8d8)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 2b529252-636b-410b-8ff5-c917ee8e8b64)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 64120593-aefa-4317-bd9d-7901b0b718dc)(content(Whitespace\" \ + 45e623dc-e996-4ae1-8f6a-70fc06b78a99)(content(Whitespace\" \ \"))))(Tile((id \ - 24182c8a-50a3-4da8-be1b-25521534c38f)(label(es))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - db377abb-9d27-4f80-aaee-29019fe3fbee)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - b6e75de0-9f67-4707-b9c0-c1728ae46b3b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 42e957de-23fb-4f1d-b783-5e0467dae1bb)(label(case \ - end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ + c40b49c3-a118-4383-843f-f9d98538e5cb)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 2935579b-9341-4504-a1a5-740998d861f1)(label(\"\\\"\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 09afe34f-d8e1-47ef-a324-881301099be8)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 3e336698-935f-439b-8310-1581d5d7783a)(content(Whitespace\" \ + \"))))(Tile((id f985121c-f50d-45ff-8fca-302a32c652a8)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 41b2af43-6a43-4d11-a81e-d9d17f4bbfd9)(content(Whitespace\" \ + 1))(children(((Tile((id \ + 40c1ac82-a867-42a8-9d68-7282d2732dcc)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 7b3692cc-83d4-4e64-a6a7-0099f4a47c4c)(label(\"\\\"Chop\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + dd550b5b-cfff-4cee-842c-bdc3f3c07565)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 63229dd2-a119-47e1-847d-8a67ccf1ac29)(content(Whitespace\" \ \"))))(Tile((id \ - f8796638-2f86-4f8a-b536-31faba9bb8ac)(label(es))(mold((out \ + e770121c-f1d9-4870-9eff-2ac4844f4316)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 31770179-3d0d-4744-81af-ca2b9883eab1)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 2c2de1f3-9f64-4731-b40b-2ae4c85c9487)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ - Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - e616366b-7709-4c52-9c3e-b4b841ec4de0)(content(Whitespace\" \ + Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ + ffe790b1-5712-4a5a-b417-888ae74c242d)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + c6371ebf-89dc-4ffa-94e0-d6517102df35)(content(Whitespace\" \ \"))))(Tile((id \ - 26d3098a-59f8-4a5c-8b5c-e0fa8621fcbd)(label(Var))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - ef5324c2-ee25-4eeb-a37b-cfc90fcd42e0)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 15ec3550-c2c7-4ea0-97c4-367815d9b5b7)(label(x))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children()))))))))(Tile((id \ - cf5cc86d-6091-4092-99b1-2fe5cf19e552)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 583b25e8-f45f-40d9-b4c5-cb84f2061a99)(content(Whitespace\" \ + cb95c94b-5d67-4195-94ff-5c70680f0224)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + e9821bd6-0833-47ac-a820-4d7a4e87f0e3)(label(\"\\\"Carry\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 913fca99-77d3-4ac9-a127-3a9ff3b5cbe1)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 5eb3c5cd-b642-45ee-b992-bf594a025de0)(content(Whitespace\" \ \"))))(Tile((id \ - ec7b427c-4313-43f3-bf80-c847e66f65b6)(label(Var))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 257f3750-3762-4685-b1a6-6a6fa861007a)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 8006ee75-37d1-4341-8dcf-5a7bcb32460e)(label(y))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + 47ec0435-b8a7-4db4-a18f-42abb1b9509a)(label(false))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - d57b3841-3010-4604-b2fc-c1f1d0aef0e8)(content(Whitespace\" \ + Exp))))))(shards(0))(children()))))))))))))))))))(Secondary((id \ + 25ec59a4-4233-4ef2-8fd7-c4396e0a4804)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 65d17c9e-a107-4192-9068-c0b205c0069a)(content(Whitespace\" \ - \"))))(Tile((id \ - 7be050aa-cbc5-42cb-8922-53e6e6b12824)(label(x))(mold((out \ + 6579774a-8920-43a6-ab09-186550b8729f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 9a8a405c-a0f6-4bd1-b14d-2ad05931d973)(label(eq))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 318d3c65-2497-491f-96f7-cfe6394a8b79)(content(Whitespace\" \ - \"))))(Tile((id \ - 853da4a6-5aed-44d8-ab43-75333dd82023)(label($==))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 8))(sort \ - Exp))((shape(Concave 8))(sort \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 19e4e75a-e638-4878-84a9-117e25df34b9)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 26a50af7-40f9-4c21-96ea-22278bf208d7)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 504ff50a-a861-4df7-a8dd-fdf17115ee49)(label(update))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + cf7e14c2-0cfb-427f-8d5f-5d62fe146625)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 2f5e5704-3b9c-40c0-9a78-cf28ea5dd7f1)(label(model))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + db375b4a-e7d3-469c-9499-d45b0b6e27f8)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - cea85df5-b3bd-4017-a952-d64ad8459841)(content(Whitespace\" \ + ca5fdefe-8f81-41cb-b350-68ddc66420c6)(content(Whitespace\" \ \"))))(Tile((id \ - e7c511c7-5050-44da-b175-da1e4ff92d52)(label(y))(mold((out \ + 00168421-dd51-4ddd-b4da-e6707db09165)(label(ToggleTodo))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 4f3a5193-c3ac-4370-9c9e-c8df5a37167d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - eb08f193-8966-4277-bc08-9e79add2cde8)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ - Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 221d5070-8757-43cb-9edb-8f7994229fee)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 61dd15cb-927c-4560-a059-07358e8187b6)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Tile((id \ + 369c3460-5ee1-427e-ab36-0fb5a03bc2d4)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 9ead5197-02ea-488d-aa9a-f96a4b138644)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + e14885ff-866c-46b3-b17b-66b7c904e7c0)(label(model))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 2fb32c28-a5da-4de0-9ae7-79fbf58b13f7)(content(Whitespace\" \ + \")))))))))(Tile((id \ + 438823de-2bf4-4358-b7cb-0f78813ac8c7)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 37ddd29c-4fe8-4be4-865b-d6e83610bde6)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 3236de4a-dd58-49f7-b4d8-2bd1fc5f89fe)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + e93d67ea-6f54-43b2-a354-3d5cf3963c53)(label(test \ + end))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - 09f89651-2b39-4c39-b0ca-b69b08429670)(content(Whitespace\" \ - \"))))(Tile((id \ - 81672889-56c2-48d7-b53e-bad5b4d1df31)(label(Lam))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - e4c0cf87-1985-4aa9-b4be-8abb8278e176)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - ce2d28c7-d1d1-4ad5-909e-6421f2f39739)(label(x1))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - b279ac2d-53a0-4899-a3e7-29e45637f1d3)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 54c7c5cc-5009-4243-baec-df198852f9e8)(content(Whitespace\" \ + b8db8740-cd83-4a27-8d69-9a64dff6a5fc)(content(Whitespace\" \ + \"))))(Secondary((id \ + c374f5d6-9ea4-4cec-9403-df99cd237fc2)(content(Whitespace\" \ + \"))))(Secondary((id \ + f3b1dcbc-ede7-474f-9cb6-f4e39af0f8bb)(content(Comment\"# \ + Remove removes #\"))))(Secondary((id \ + 185abe04-dcbf-4e36-9097-0badae9a0792)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 9fbb2898-7e44-4065-a788-debf441f6b86)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 3234c1fd-dd07-4a43-a4c6-68acd3372856)(content(Whitespace\" \ \"))))(Tile((id \ - 64075130-f088-457a-82f6-ebe5d0be8451)(label(e1))(mold((out \ + 3ddf2bcf-fd68-4d72-a3f3-0fe50307fe0e)(label(model))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children()))))))))(Tile((id \ - e094bdef-fc38-445e-92b7-a730961c8fdf)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - e88a31af-6149-4000-b8e2-94f31e45d5fe)(content(Whitespace\" \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + f1be3d9f-194b-41a6-b86f-2286533b201b)(content(Whitespace\" \ + \")))))((Secondary((id \ + fd73040b-cb61-43b2-ad43-856b84ad785b)(content(Whitespace\" \ \"))))(Tile((id \ - f1ce5a32-e138-43d5-8775-e6f75efe37d1)(label(Lam))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - c6bf010d-869d-4271-b2b7-828dd4f1b553)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - bb0a3fd6-4dff-422b-bdf1-8460c7d43829)(label(x2))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - ea64a246-122f-41e6-8284-a7b00542c4de)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 6a6b2ec6-56a9-4ad4-8497-ae680f9b1118)(content(Whitespace\" \ + cfb10402-9548-4058-a21f-530a43c1e15a)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 1c5b15b1-a775-4539-a3e4-10f1a3781747)(label(\"\\\"\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 97820409-b419-4418-b6cf-75f2ae1385fc)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 691390e0-a434-489e-b399-bb08ce94c4de)(content(Whitespace\" \ + \"))))(Tile((id 4a6025cc-dfe8-4970-82c1-ef0070040c1f)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 1d2dc290-5e46-494e-ad20-e305307b76b6)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 956a28e6-caac-4a0d-9a68-7410a7c8ac14)(label(\"\\\"1\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 1dbd1817-39e3-44c2-aeef-f1ab2dcc0164)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 482845fe-7a27-49e2-956f-765ee8cda0f4)(content(Whitespace\" \ \"))))(Tile((id \ - e17d1a0c-3041-4aae-8312-2164ad00b76a)(label(e2))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + ac915398-12d8-41f8-8296-92bb2cb4e496)(label(false))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - d3650922-ea7a-4f27-89d3-b919d15786be)(content(Whitespace\" \ + Exp))))))(shards(0))(children()))))))))))))))))))(Secondary((id \ + 6826c9fc-7020-4396-9386-faae87915ab7)(content(Whitespace\" \ \")))))))))(Secondary((id \ - cd0e2d13-9e19-4cf8-b896-32cf152976ce)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - c948dec9-9f62-48db-a69b-7c4734cb8e9a)(content(Whitespace\" \ - \"))))(Secondary((id \ - 8820244d-86e7-467b-b6ee-412309891bf5)(content(Whitespace\" \ - \"))))(Tile((id \ - 6ad0085e-1640-4bcc-966c-63535c4dcb4e)(label(x1))(mold((out \ + 023dc091-c3ef-4b6d-bfb8-0659cc1f8fab)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 4cbffc0f-e48a-41ff-8769-23fbf428daf2)(label(num_todos))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 6a3c75e8-867f-43b4-af30-e3c33700b8ca)(content(Whitespace\" \ - \"))))(Tile((id \ - 98252b63-4ae7-4104-81db-be1b271d1b20)(label($==))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 8))(sort \ - Exp))((shape(Concave 8))(sort \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + c5b6d22f-d636-40f2-bd3a-b1f7eea1fa1d)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 2c809074-e3e6-4a73-b633-3beee249cf4a)(label(update))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 11be1acc-f8df-43eb-9e04-40aa50970d1c)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 5424d651-49fc-4411-b0ff-3ae80fa484b5)(label(model))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 2b40c973-99c1-4a01-b7ef-aea6f7bfa0b5)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - e85acee5-ac98-4fdb-9b7e-3da31e9a1cdb)(content(Whitespace\" \ + f20eb4e6-822d-4480-bf75-873dbaffd9b9)(content(Whitespace\" \ \"))))(Tile((id \ - 517d59c6-6e8a-48e6-9810-deff80d4837b)(label(x2))(mold((out \ + 38fa5358-ba24-4451-9834-f89afd1eb67c)(label(RemoveTodo))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 64892ab9-5f46-41ec-83ec-830a3771bda2)(content(Whitespace\" \ - \"))))(Tile((id \ - 654196e6-5c40-464b-882e-f000185256ae)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + f48f9bb9-72bc-456c-a5a4-af39946b994b)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 12f50228-5edc-4c90-a937-6f13c3e0faa9)(label(0))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))))))))))))(Secondary((id \ + 2d9a6b52-59ad-464b-9991-ab819b9b5754)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + affc885a-4099-4dd3-a295-4efd79af6569)(label(<))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 358e8514-a640-4e35-adc2-89e552b48f63)(content(Whitespace\" \ + e3d279fc-3b96-4855-a8c9-de2581f65326)(content(Whitespace\" \ \"))))(Tile((id \ - e7e712ff-e6a4-4736-a2a9-1051368e4621)(label(exp_equal))(mold((out \ + f2c12dc0-2ed8-4b39-b683-0f2218ab7400)(label(num_todos))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - be1cd4d0-77ec-4b24-806a-d44ab9406dff)(label(\"(\"\")\"))(mold((out \ + 0fdaa885-6ef5-4c6b-a08a-b2d82108d772)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 2b9171e1-b36a-4b4d-ba94-b1b383e3d876)(label(e1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - ee427415-9cbb-40bb-be41-483d6b055dde)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - c2233df3-e617-438d-a3f3-9764587db421)(content(Whitespace\" \ - \"))))(Tile((id \ - c9f2177c-7b5b-458f-a2c8-f1e5e4b6e938)(label(e2))(mold((out \ + c0fecd2a-56c7-4594-9b2d-bc81fcb1d78b)(label(model))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort \ Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 9350c7fe-fcd8-4395-b2a5-51f3b4bc28d0)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 4565265b-2b39-4e9d-b8e5-4eac2118eaf5)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ - Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 0e31b883-7a38-484a-b111-6e754e128e9a)(content(Whitespace\" \ + \")))))))))(Tile((id \ + 8168ca91-5909-4682-82ee-a21651f31499)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 55e87502-4795-4a62-8f20-a45be8ca64af)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 4ef7aed0-1f46-4d09-bb11-8d1272120fcf)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + c598e5a8-bcbd-4529-94af-8b24b60e7095)(label(test \ + end))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - 7982873e-6820-415f-a686-58b3b38f3af7)(content(Whitespace\" \ - \"))))(Tile((id \ - fc624d2e-62e9-42ea-a935-f0e009fffbc6)(label(Ap))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 39ebe962-9adf-45d0-8874-8bc30d5d4c9f)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - c3628f0d-0cb8-4954-a16a-e791d0f9a30f)(label(e1))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 4cabbfa5-38b7-45e5-962d-6310e522dc2c)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 9c108b07-27cd-4d7e-b2e4-6ae975db2eb9)(content(Whitespace\" \ - \"))))(Tile((id \ - 7e8c0903-e399-43b6-ba2c-f014879fc966)(label(e2))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children()))))))))(Tile((id \ - ad3766ab-7abe-4e5a-b44f-9a9cb6badf3b)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 3170e2a0-ebdc-4b38-b2b7-a09434ec3f1c)(content(Whitespace\" \ - \"))))(Tile((id \ - 545a9cc8-240b-4267-adc8-0b2bbfe70a91)(label(Ap))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - dbc20a7c-0050-4672-bd5b-b298221a315d)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 1a06a7c6-f321-428e-b28c-a4f24b3ab556)(label(e3))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - ec1e7e19-8acc-4a77-8ef5-0b9907518462)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - bba30512-7bbc-4930-b198-d12e690a5b93)(content(Whitespace\" \ - \"))))(Tile((id \ - 0d36e488-3e41-46f9-a972-23750bcece8f)(label(e4))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - 4b4d9e3e-ac05-4a5f-b08f-d5563460b5c7)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - f282b2b5-5c36-472a-8375-d1a36a8649ae)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - f3bd6390-5a54-48a1-9640-ccfa45160df0)(content(Whitespace\" \ + 900ae74c-7f89-4648-8771-c18dc588012f)(content(Whitespace\" \ \"))))(Secondary((id \ - 7df542d2-05f3-4e21-8c5f-64955731be10)(content(Whitespace\" \ - \"))))(Tile((id \ - f60edbaa-954f-42fe-b431-b9bcc014a9c6)(label(exp_equal))(mold((out \ + e120d2eb-24d7-4f64-bb77-19a3e1ae8104)(content(Whitespace\" \ + \"))))(Secondary((id \ + 06e0555e-2a18-4719-b283-cc89ef874e2d)(content(Comment\"# \ + Remove removes right index #\"))))(Secondary((id \ + e0145c55-eae0-4638-9392-c4a748ec8170)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 66ba0a2a-aaea-407c-b7be-2529c2352981)(label(eq))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - b1f04c3d-547f-44e7-8e7a-8a39c04667eb)(label(\"(\"\")\"))(mold((out \ + 368401c9-9076-4efc-b62d-867f04b8d6a2)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 97b71b45-ee85-49f6-8299-60e24af64760)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 2b816555-c060-4a96-bf02-85378a368e01)(label(update))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 3d1bf5f9-5d4a-4acc-a16b-880afb401381)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 2160680f-45c4-41e1-9603-3437aac80d1d)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 0dd24d65-dbaf-4528-ac71-b1b87007586a)(label(\"\\\"\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 4f37ff90-b577-4693-a48c-3ecefc858bcc)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 70a00825-f817-45d5-a9bd-8bbd498ae89a)(content(Whitespace\" \ + \"))))(Tile((id ea1d5627-5458-4c1d-98de-563c0c39f167)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 5945e687-b366-4709-8959-8a1865eb995d)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 194d5a82-cc1f-4a18-8b5c-c61c904af17e)(label(e1))(mold((out \ + d25f6566-0872-41e2-b2ad-6f2f7aea5c4a)(label(\"\\\"1\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 75f2818f-2f9c-4049-878f-c81085700db4)(label(,))(mold((out \ + 7295282f-1172-438a-afa6-dbf99b058cb1)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 14))(sort \ Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 7b3280d2-d974-4cf6-9bb0-516576217085)(content(Whitespace\" \ + b3e915a6-a8de-476b-a8bc-6ef670116a47)(content(Whitespace\" \ \"))))(Tile((id \ - 4b4990b5-c883-44de-baa5-6298bdcd9c6c)(label(e3))(mold((out \ + 1259a448-2109-49f7-a012-7c50ae439fb5)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - e67b82f1-96e5-4d33-b100-3bfe9707c8c6)(content(Whitespace\" \ + Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ + 8ae9b9a2-238c-4a5b-ae50-713b9b50f5ce)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + e02be2ee-af0e-4aeb-9446-bb28d0c2caf2)(content(Whitespace\" \ \"))))(Tile((id \ - bc816646-333d-45c6-87de-126307d9157f)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ + 067ebc6d-8a23-47f8-9328-f74d8cf7e9ad)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 7a76d004-e61b-481a-9be6-03d5b2b0823d)(label(\"\\\"2\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + c7ae960d-5fb8-450e-b9a6-0ee6f69e3929)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + e68f0919-944a-40f8-9671-536ece432795)(content(Whitespace\" \ + \"))))(Tile((id \ + c4a7e23d-822b-429f-88ca-119f5598a210)(label(false))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))))))))))))(Tile((id \ + 35af80f3-c2bb-415c-be1e-3782b9b88d53)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - cda90ee2-15a7-475b-a7b7-b58f95ac0541)(content(Whitespace\" \ + 9b88af6c-b0bd-49d5-a4dd-bf75ead12801)(content(Whitespace\" \ \"))))(Tile((id \ - c6cca4d7-4919-46de-8ffb-52071913367e)(label(exp_equal))(mold((out \ + 62515f56-3fe1-4e63-880c-249b966a912b)(label(RemoveTodo))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 46608290-3577-4831-b399-c80d5d767d86)(label(\"(\"\")\"))(mold((out \ + 140783bd-652f-468e-a4b6-23163bbbd258)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - cea40954-b0f5-4ea0-abdb-8f3a0a210bcd)(label(e2))(mold((out \ + 41d05b7f-eea9-4f3c-9c6a-b3fe302967e2)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Tile((id \ + d3204341-1d02-42b3-a1c6-7d43417bbf77)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + ade114fb-b2f3-4a3e-a335-4a5fad25109a)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + cabb36a7-0083-4db4-aad7-1b6333fad189)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 879e45dc-811a-46bb-98b7-9b2b87423ce2)(label(\"\\\"\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + b38fa680-847f-4cf6-9941-5627d535fa04)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 7fa7b957-336b-4b5b-8001-9069a846fd09)(content(Whitespace\" \ + \"))))(Tile((id 4ee790eb-66af-4572-979f-d7f1f7215d44)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 279cd487-500d-405a-9ad3-091e9e2f111f)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 71cd0297-b0e2-4da6-ae29-37679c88754d)(label(\"\\\"1\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 5d251e7a-9910-4012-9c61-96c776587f87)(label(,))(mold((out \ + 5edea54c-f3c0-4caa-bb4c-83758fc585ed)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 14))(sort \ Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - ad817f3f-75bc-46fa-ab0a-86718ad8e04e)(content(Whitespace\" \ + dce193f9-64cf-40fd-a48f-76201c623bcb)(content(Whitespace\" \ \"))))(Tile((id \ - 2c9c3dcc-3d6c-463e-bcd7-fba48da6ecac)(label(e4))(mold((out \ + a924db34-b493-4711-8aab-3f0e6a054586)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - a58fe0b7-4a35-4a50-97be-441d4274c616)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - e7572e91-07c2-4d65-abca-dd76ec42dbbf)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ - Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + Exp))))))(shards(0))(children())))))))))))))))))))))))(Secondary((id \ + 18605536-0b3d-41b6-826d-37d8839dfc0e)(content(Whitespace\" \ + \")))))))))(Tile((id \ + ea7596d2-adb6-4eea-95ff-45a751ec5cdc)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 4bae6198-fae3-4b89-897d-9ba4bec97e45)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + f238a107-a43b-465e-a209-79d6841aad48)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 7e3c4bcd-d71f-4f96-b55d-79ee9d431700)(label(test \ + end))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - c7d795b0-3d34-4bde-aebd-a6712a065da1)(content(Whitespace\" \ - \"))))(Tile((id \ - 68ab1574-8fff-4c61-b8dd-81e4b42bfad5)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 6ee1936d-6b0e-4790-b4fa-a3ec667659a9)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 109c64f2-39ac-480c-b33e-96b08c515ffc)(content(Whitespace\" \ - \"))))(Tile((id \ - 215955f2-8a04-40c6-9f1f-14652d8f2637)(label(false))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 16e0c010-73cd-4dac-ac53-2536fa7068ca)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 4f239c3f-102e-4227-9388-89983d93b887)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 8172db9a-32d5-4ceb-a908-3837509edd80)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - d3329425-9616-473c-9f10-82c062d01611)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 5ed2278f-50d0-4255-94cb-f201169e5a88)(content(Comment\"# \ - Substitute Exp v for variable name in Exp e \ - #\"))))(Secondary((id \ - fdf34800-63c7-4baa-a41e-ec2517696344)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 980a0de3-6dc8-466c-9fc5-57c0161c32ed)(label(let = \ + f14193bf-186a-42fa-8f90-94dfbbd4da6e)(content(Whitespace\" \ + \"))))(Secondary((id \ + 4d8878dd-6f67-4c90-8689-eee78a043962)(content(Whitespace\" \ + \"))))(Secondary((id \ + 75a5ac03-2ec4-4572-872b-2ef43c0cda70)(content(Comment\"# \ + Remove out of bounds #\"))))(Secondary((id \ + 26e3c1a5-3f24-40da-948a-027c6e3164c1)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 75a65d87-3e07-49c9-8b70-6d17702e3552)(label(let = \ in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - 968f19d7-ca3c-4318-a56c-ddaded903c52)(content(Whitespace\" \ - \"))))(Tile((id \ - a5a4093b-3f2f-4543-a9e6-d915edb78d16)(label(subst))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - bf012f47-7904-4b04-b435-261c6898a74f)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 292ae481-93fe-4e75-b4d1-85a12c13d583)(content(Whitespace\" \ - \"))))(Tile((id \ - 365f62b2-81b6-4a77-aa1a-c14fafc129f1)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 54243b79-d02b-4ca1-a5ea-b6136ac1bba8)(label(Exp))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 15ef7894-18f2-4632-8549-55d65bd68d5e)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 14))(sort \ - Typ))((shape(Concave 14))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 04d28679-49cd-4169-90ac-3ba15295a145)(content(Whitespace\" \ - \"))))(Tile((id \ - 61e87e55-f097-4946-a07e-9608191e9e8d)(label(String))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - fbbe13a3-aa6d-4dd8-b425-66d31fa6ab5c)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 14))(sort \ - Typ))((shape(Concave 14))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 76d1a094-2cfc-4b1b-8491-faa073126a50)(content(Whitespace\" \ - \"))))(Tile((id \ - 11012759-a911-472b-92c4-13c296f014dd)(label(Exp))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 36c53e8b-58b4-4b29-90c7-bcd8283d021a)(content(Whitespace\" \ - \"))))(Tile((id \ - 337cc1de-7007-44a8-b7c0-e2d62dfe038d)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 2cbdefda-74b9-4e12-bb77-968981f48d24)(content(Whitespace\" \ - \"))))(Tile((id \ - 6669c981-844e-4bdb-80e8-49f63a37c170)(label(Exp))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))((Secondary((id \ - c9570d59-780b-491a-84f6-f38720034df1)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - cd3956e2-872a-48d0-b61b-49c9627f7da0)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - d889bd03-eae8-466d-8ab2-6a37b228101b)(content(Whitespace\" \ - \"))))(Tile((id \ - 6f2f5c27-b0c6-4d64-bec4-f59a3d62907e)(label(v))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - b1a377a9-9f1f-46ea-b9c8-4a735177c681)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 4e8b2929-daa4-4997-a50c-41215cd5dc97)(content(Whitespace\" \ - \"))))(Tile((id \ - c6e2f602-5f94-4779-9f7d-6150753e387d)(label(name))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - aa15bace-4f95-4777-ae5a-86efcb21d80b)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 13bc3e73-cc08-426f-b842-8f326d5e06fd)(content(Whitespace\" \ + a6536023-fc66-4756-bbcb-c7dfb28361a7)(content(Whitespace\" \ \"))))(Tile((id \ - 70cea4ed-3f34-4564-b948-5b37698e0059)(label(e))(mold((out \ + 7941f10f-c92c-40bd-a937-c185a9acb2ec)(label(model))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 6fd33e5b-3792-4bb2-9d66-e7c7cfd82c09)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 90f64cae-e6b1-4c17-a7e8-f843bc7533d8)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 419ebed6-b5b2-4540-a431-3096df690104)(label(case \ - end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 7f57f5da-29d7-4afe-af81-9ba4cdb84290)(content(Whitespace\" \ + 5b0c90b7-5877-4b53-80f6-066630a337de)(content(Whitespace\" \ + \")))))((Secondary((id \ + 7d21db63-d6d4-44e7-865e-f37db73dd42d)(content(Whitespace\" \ \"))))(Tile((id \ - 84bee910-aedb-4d4c-baff-a4571eabd806)(label(e))(mold((out \ + b21dfde2-8790-4927-9b40-97bc90e987ac)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 02678d2f-017a-4ebb-b89f-672c0fb4640d)(label(\"\\\"\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 75df8104-bdda-4020-aa34-461d8ef9a61c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - f680450c-a013-4374-a0d9-3b7395b2d291)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ - Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 5ba10a8b-3767-4f49-ad59-b4d685b3e8d1)(content(Whitespace\" \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + f54bc104-9238-419c-844a-8c51d7274d19)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + ef7eaf56-354f-453e-b725-9cc49b120b1f)(content(Whitespace\" \ + \"))))(Tile((id 018b7dd2-c06e-4053-9c1a-23012b697362)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + e0b4eaaf-86a5-4184-8420-1d1adf5437e0)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 1da46c38-ee30-471c-b78d-9a51fda48829)(label(\"\\\"1\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + dd3340d8-56e8-43e7-bc73-ce05f2ddca84)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 4d2ea3c7-17df-4db6-bbd8-9d67b933f40f)(content(Whitespace\" \ \"))))(Tile((id \ - c85b62c4-519c-4ff6-b53d-084bfc4b3a4a)(label(Var))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - cbe676ad-d210-4614-a6f4-f1288961392a)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - b3d931dd-62c9-49d1-9c23-57e51491e2fd)(label(n))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + b3573b75-f2f0-46b3-bd07-3f1c4c590bef)(label(false))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - 39dcfa1c-d518-4072-925b-5a857363d84a)(content(Whitespace\" \ + Exp))))))(shards(0))(children()))))))))))))))))))(Secondary((id \ + 5a984eb4-c46f-46f1-acef-4fe10ef79eb3)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 28da4de0-f438-42e7-8193-7123c709da52)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - de7081b2-0362-4667-be82-f6b027b192fd)(content(Whitespace\" \ - \"))))(Secondary((id \ - 185f0a9a-db51-48ac-9671-7308af2566a6)(content(Whitespace\" \ - \"))))(Tile((id \ - 94fb704e-4ce9-42e6-ae34-d1b88af3c424)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + 004927a7-286a-486c-9f4e-06c8ef5da899)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 14c3dd55-1221-4fc1-972b-f2f8998cd6ab)(label(eq))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + d0f5354a-687d-4e4d-af9c-df26311adc2a)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + f5aa92d1-8cbf-4822-a79e-3758e6bc4977)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 442f9db6-fc50-4664-9b63-e2015410235d)(label(update))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 372b7e22-8564-4784-8878-7362e0de83a5)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 9298a278-bffd-4a4c-baf9-1aed6d1562dd)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 12))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 1b07d13e-1cc4-4476-b7aa-1d947539db97)(content(Whitespace\" \ - \"))))(Tile((id \ - 18e2d5d1-c566-4eb6-85a9-8185ac89e46b)(label(n))(mold((out \ + a0e71c4d-eda8-4353-9fe7-9eaad6fb5a82)(label(model))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 3487f0ad-8f80-41de-905f-5c7681cab87f)(content(Whitespace\" \ - \"))))(Tile((id \ - 53fc5638-04b6-4552-82f6-17a089316a9c)(label($==))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 8))(sort \ - Exp))((shape(Concave 8))(sort \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 7cc88dde-1721-40f3-91d2-7fecd335be48)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 955e949d-0d06-4724-bd32-3869a60d1509)(content(Whitespace\" \ + cc836a18-d741-481c-8761-576a64e2a820)(content(Whitespace\" \ \"))))(Tile((id \ - 714480e4-4cc9-4f0a-bb16-fa5eddae8ba7)(label(name))(mold((out \ + 372c5eca-f7cd-47f7-921f-1603c47ae9f9)(label(RemoveTodo))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - cff5290a-3b75-4adc-a07f-57162f45e70a)(content(Whitespace\" \ - \")))))((Secondary((id \ - fd1933b0-7135-44ad-9295-1cdff91a4700)(content(Whitespace\" \ - \"))))(Tile((id \ - f54eda3c-4175-4cdd-a22a-bd44d64754db)(label(v))(mold((out \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 92317f4e-33d4-48b8-aa16-b172f15b22ea)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 9e1d8984-2365-4f75-9c68-6016530315c7)(label(2))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 80942fdd-f28f-467c-be15-f40257293d0f)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 59fe67c4-9e46-41da-80c5-94a08d421127)(content(Whitespace\" \ - \"))))(Tile((id \ - 053268f5-aa5f-47d4-bc35-7dd044c4d016)(label(e))(mold((out \ + Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Tile((id \ + 3df03cd2-af38-4ee0-b78b-eafc14f71bb3)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + b96a1961-b5ed-47d6-b812-a1ec1b684c35)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 34887978-e017-414b-9d8e-d4dbdd7a4327)(label(model))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort \ Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 48783eb9-b6b0-4995-98f9-9dea00a51ea6)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 446ff674-42cd-4716-9ec5-caedd30229e1)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ - Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 026fbda4-70e7-4982-966e-131e89f8b063)(content(Whitespace\" \ - \"))))(Tile((id \ - 970904cf-54f0-4476-949e-6bff04296230)(label(Lam))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 1c58d46b-701f-4fdd-8122-3a8b6b717fd1)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 8ee0764c-6ae1-4a7f-a43a-da8e9e2ef1ff)(label(x))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 139f7e26-a096-45dc-b86c-b1759995e640)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 584fe536-95b9-467b-9d45-8ff79f932322)(content(Whitespace\" \ - \"))))(Tile((id \ - 44b651bc-58e2-4d0f-8fe7-f9f4ef2df975)(label(body))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - d8b7e4b6-2830-4ae4-8765-ad8787599005)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - df1a1724-1680-4c13-86c4-cf1739d1f2f5)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - b12dc4f1-3584-4d70-9df4-56748637b5d9)(content(Whitespace\" \ + aa113a05-d0a7-46f9-b06e-ca506e42e440)(content(Whitespace\" \ + \")))))))))(Tile((id \ + 7321fbf9-50ec-4047-97f0-08a4725ea005)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 54027df6-3e61-4419-b089-08b522f3cf99)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + c6e7cd9a-76aa-47d1-b85e-4b0bc4120994)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 853f064e-7ab3-459c-a620-90ac1c8e743d)(label(test \ + end))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + dccf0053-7641-478c-98b3-1d470d741f53)(content(Whitespace\" \ \"))))(Secondary((id \ - 789ee2e2-b17f-46d2-a729-97747b3d3b3c)(content(Whitespace\" \ - \"))))(Tile((id \ - eb31c313-cfaf-4a04-97be-5d02a39afa8e)(label(Lam))(mold((out \ + ab6a18c6-99b6-4ca6-b0d7-0199581398f6)(content(Whitespace\" \ + \"))))(Secondary((id \ + 22e60b85-da6c-4bd9-9a40-a5d6a7b2e3b5)(content(Comment\"# \ + Update Input #\"))))(Secondary((id \ + f5e0a641-9664-4cc2-a22c-571f3c0df1a8)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 7a14a9f5-2410-4d27-a58d-00f42332ad45)(label(eq))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 13540b62-e26e-4f35-9fd5-fe8be97c0dc2)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 994baff1-ae22-420b-b9e2-a79f28b3e9d7)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + ca77dfcb-b658-4cf9-af1e-e0b8233a147c)(label(update))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - ebcd5284-9b96-4e09-9e05-1c856050c226)(label(\"(\"\")\"))(mold((out \ + c0ee333a-8b46-4d51-b3cd-9b1ba5bd68a2)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 33d26cbb-f822-4b7d-a3a9-a76ae159a0c1)(label(x))(mold((out \ + f6bb60d9-a52e-4da4-92c3-daf61637867d)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + b6975876-6e96-4159-92b1-b3fc75aa3daa)(label(\"\\\"\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - f688d2b2-b8c9-4203-ac30-acb9b78b218b)(label(,))(mold((out \ + 153ac81d-21c2-41c9-adb9-691fe59b2e82)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 2e29fd02-082a-48f7-8bf0-d070f6945528)(content(Whitespace\" \ + \"))))(Tile((id \ + cb765ac8-e13c-48b5-acd2-b0501d0f24d6)(label([]))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ + ec4de888-8f83-4183-9134-ee84b73fcbd7)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 14))(sort \ Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 47729e37-9963-4286-9683-323f9b87bceb)(content(Whitespace\" \ + 485c65ea-56e3-4e56-8a48-813fe3a28178)(content(Whitespace\" \ \"))))(Tile((id \ - e5b9286e-a2d4-475c-bbc6-6a0ec96cfa1e)(label(subst))(mold((out \ + 67bb7857-da99-4692-8c14-c76c37606b5d)(label(UpdateBuffer))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - cec07007-77a6-4c7c-9ba7-4d851d46afab)(label(\"(\"\")\"))(mold((out \ + c9c94644-b45c-4f4c-9a63-002dccb22c04)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - cc33ccf8-2ba7-420b-b2c6-21aea451a89e)(label(v))(mold((out \ + 71c16e41-effc-48ab-9fc7-75b98de18290)(label(\"\\\"Breath\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 7d8a5934-f197-4252-a244-ab397fd8f6a5)(label(,))(mold((out \ + Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Tile((id \ + 62302096-4906-4bbf-897d-ffe02cc92e7e)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 14))(sort \ Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Tile((id \ - cc112f0c-4bf7-4662-917e-846de267fe34)(label(name))(mold((out \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 4331c154-2e92-494b-81f5-712aea1dbb7a)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + f99907df-1996-47da-9508-609baa144a26)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 246b26e3-1f6d-43e1-b26b-cf60b644e7c4)(label(\"\\\"Breath\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - b02b84ec-218c-452a-bf1e-9617cef8490d)(label(,))(mold((out \ + cc5f931c-2a49-4bbd-ab8d-8c56c3416af9)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 14))(sort \ Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - ed7443d9-4404-44fd-a4e0-3f6559f33e82)(content(Whitespace\" \ + c586717f-3e66-40e4-b829-1e8eaa02575d)(content(Whitespace\" \ \"))))(Tile((id \ - ddac8323-ba4e-4d64-b5cc-7e69c920435a)(label(body))(mold((out \ + 3865eccc-7d0f-4cc3-906f-c968798d86a2)(label([]))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort \ Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ - a26fdd56-19a1-4583-96b1-b2e6f4dce75b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 4a409d0b-c2f8-4b1c-b160-ff917085bf6e)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ - Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + 56a6ab04-166b-4482-886a-e83ae6575892)(content(Whitespace\" \ + \")))))))))(Tile((id \ + 7ceae194-b49a-4e0b-9bce-9fa8af1bc7d5)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + bcb1e00b-febc-430c-a934-a83332617acc)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 2259b761-e37c-40e6-a7b3-640f60bd5a15)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 4a70e8c7-a682-42bf-a858-9f12d2c9b267)(label(test \ + end))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - da613248-93ad-4ad8-8958-3b005c4c4629)(content(Whitespace\" \ + 387ecdc2-5080-4e5e-b626-6a7c898c654f)(content(Whitespace\" \ + \"))))(Secondary((id \ + f832e5d6-fe69-4a30-bd40-44fb5891aba4)(content(Whitespace\" \ + \"))))(Secondary((id \ + c653a985-2748-4452-84da-a8e870e3051e)(content(Comment\"# \ + Don't add blank description #\"))))(Secondary((id \ + 6f93342a-8a0c-4992-908a-93fbf6a026e9)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 140e38f5-f4e3-460b-bd8e-42761de6b4d8)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + b6be875c-a544-4cb1-b97f-fae6e0db9a8d)(content(Whitespace\" \ \"))))(Tile((id \ - de5333b3-77bf-44f1-a7b6-64378045d95c)(label(Ap))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - b29c0da4-d842-4d39-93ea-68ad05af9261)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 1e386e4c-0118-4aaa-a61b-7c459652561e)(label(e1))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - ff5111c7-24e2-441c-ba22-b00b9570b868)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Tile((id \ - a5e422b7-f453-4fb9-bf2e-d8fbb0f1fc19)(label(e2))(mold((out \ + ab7c3436-f5f9-48ce-ab71-574c832c8903)(label(model))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - 2bb31630-3fbf-41d5-a19f-37006e884723)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 334192b2-d1f8-4e50-84a9-f63119f5ea66)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 5cdcd943-3223-4e31-a4c9-230ddd7cadbc)(content(Whitespace\" \ - \"))))(Secondary((id \ - 04ea99ba-c0d4-4f96-8514-512d2679d38b)(content(Whitespace\" \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + a078c745-50b9-469b-a1c2-5b78b850f14e)(content(Whitespace\" \ + \")))))((Secondary((id \ + 7cfe2009-7678-4988-adfe-877c7ee662c6)(content(Whitespace\" \ \"))))(Tile((id \ - 6698f873-dfec-429f-aa2e-5b753a0e0b13)(label(Ap))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - fd041cbd-11e7-483f-9894-149d647575df)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 9b6f0264-1a4e-436d-a922-f0325bc2e4db)(label(subst))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 7a495fb0-7163-4e39-9013-81f4b1b49d70)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + 09e32716-c96e-411b-b1c3-0a91368003bc)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 54fc8758-e83a-451d-bb69-409eb19c6735)(label(v))(mold((out \ + 54791271-319d-4b63-bf28-56ab62d024a2)(label(\"\\\"\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - c3e19a5a-f9b6-4f24-8f7b-64f099967f9f)(label(,))(mold((out \ + 761da41b-5c68-49ee-bc9f-0d1fa3ccafc4)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 14))(sort \ Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 71fca11a-3419-4757-b711-fdd18405d97c)(content(Whitespace\" \ - \"))))(Tile((id \ - a763abee-d9b7-45b1-8424-3ef1a0a271e5)(label(name))(mold((out \ + 7fede0f8-defd-4c94-b67d-121cda04f327)(content(Whitespace\" \ + \"))))(Tile((id f25583df-4275-41a9-8b6d-1b47201b81e4)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 335d0224-a27f-4e5e-816a-045f370443e7)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 6c59256b-0d05-446a-b16c-aa06382331be)(label(\"\\\"1\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 4faf4138-d473-4173-95a6-eea2542573f7)(label(,))(mold((out \ + 3ab0b443-7192-49de-bc10-789e28416f6f)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 14))(sort \ Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 9e46b718-8343-46e5-8691-99218fd48457)(content(Whitespace\" \ + 148a124c-a29a-42dd-af83-f2e1f11d365c)(content(Whitespace\" \ \"))))(Tile((id \ - 2a42a695-0600-4732-b130-fdb906e39384)(label(e1))(mold((out \ + d22e0fc5-1643-48e7-b3bd-d489ef2092e6)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 9346f2a0-c777-409b-91ae-ac99409e69dd)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 175d0889-9c8a-40ce-a0d3-9e16bd3e343a)(content(Whitespace\" \ - \"))))(Tile((id \ - 0c57d2e8-6a01-4794-9165-25cbc0175a5e)(label(subst))(mold((out \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))))))))))))(Secondary((id \ + 0c66e525-1796-4dd3-9008-855bfead022d)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 72f115bd-502a-4a6e-9eab-8d80b366d1c5)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 89639205-70f7-4f3a-9d49-4d937f13e7bf)(label(eq))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 05e92bb7-9ba7-4796-bac6-4208b3e20c10)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 8e3e7c70-d87f-4b78-9f0c-214186adbe90)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 4d3dc7a3-4f1d-43be-976b-c5b12fd24603)(label(update))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 05ee19ae-081d-4fb0-affb-ecad3fc03096)(label(\"(\"\")\"))(mold((out \ + ca34b484-ac06-4694-b24c-0004ecf1d469)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 7c14b792-807c-4156-af95-90f4cce11fba)(label(v))(mold((out \ + 77614224-6655-4815-8420-f0ad661ea0aa)(label(model))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 3341286f-c3ba-4879-a6f4-24cc00343cee)(label(,))(mold((out \ + 6b2dc4c7-b83a-426f-8b31-196d65d22a16)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 14))(sort \ Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 80da2600-590e-496c-9670-31ea4bc2e302)(content(Whitespace\" \ + ba6d2460-b517-4d2b-b92c-d21cb0a97e9c)(content(Whitespace\" \ \"))))(Tile((id \ - 5a0ea697-f4c2-4fca-879b-a4b7ac213c8e)(label(name))(mold((out \ + ea2c490a-84bf-4afd-a864-75e6fca5f7ed)(label(AddTodo))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 2d9420c7-44dc-4781-8c4f-fabd96d95ad4)(label(,))(mold((out \ + Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ + 83ecdc9c-b348-4ecb-90fb-64606969e11a)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 14))(sort \ Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 7bf8c927-0575-470b-b3c5-a29a553b6830)(content(Whitespace\" \ - \"))))(Tile((id \ - 5739b8d1-04a1-4835-8688-50bb5a0929dc)(label(e2))(mold((out \ + d4ab5473-bcf3-4202-872a-c3ecd481c029)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 60df881c-9fc2-4c7c-aa3a-6911590bc66c)(label(model))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort \ - Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ - cf9ea30f-5bce-4d8f-bcf1-f47ab170f0a6)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 140b4e40-9a69-4603-a8ff-f54f43833aea)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 83a2646d-03af-4380-950e-4ffbec2efecc)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 60a803a0-45dd-4d26-9e50-9d41b42e060b)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 55f117b1-90ee-4043-97a5-eaad60fbf8d8)(content(Comment\"# \ - Evaluation can result in either an Exp or an Error \ - #\"))))(Secondary((id \ - 75edeef0-b93a-4e52-8eb7-956406120f02)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - d9758f2e-b154-4d74-9d8d-ddb629f96371)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 4e0f5968-053b-43c6-8ee7-f9e839b0d176)(content(Whitespace\" \ - \"))))(Tile((id \ - 0ee7d546-e23e-4b2c-808e-01af4f749706)(label(Result))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - bd8a61cf-b940-40b0-9fbd-c698a60e9df6)(content(Whitespace\" \ - \")))))((Secondary((id \ - 8a5beda5-5224-4e5c-8dc0-79e6db7f1fd3)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 91cccf23-4d44-46e7-a81e-a046a2566144)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape(Concave \ - 10))(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 24bf5ab5-af15-4566-9884-a2061fb39d79)(content(Whitespace\" \ - \"))))(Tile((id \ - 4d58cbe8-1f96-4129-a6bc-5fa73566b2cf)(label(Error))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - a9b509d2-8f56-48d1-8e5f-3fdafc9415e5)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 9f7a0898-680d-4868-a84c-5bb556f1612c)(label(String))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 689974ef-89e4-498f-bd4e-34a6720427d3)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 52b2d13f-c806-4877-84fe-6d32ab1182b6)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 10))(sort \ - Typ))((shape(Concave 10))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - ecf58e9e-0efb-4e01-ae05-1fe9b21d03b3)(content(Whitespace\" \ - \"))))(Tile((id \ - afce6860-9293-4f8e-9ef7-dd0c60ca95ab)(label(Ok))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - aea698dd-d63d-4fe2-9fcf-7f224c41a59c)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 40472e30-a169-465e-af55-751ecf617aa0)(label(Exp))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 2cf73080-004a-4f90-b789-9221717f6081)(content(Whitespace\" \ - \"))))(Secondary((id \ - b27f5376-58b7-4974-beaf-4de3558d93bf)(content(Whitespace\" \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 2e6650b8-4703-4c02-982b-a1c5343d166b)(content(Whitespace\" \ + \")))))))))(Tile((id \ + 83616a1a-beed-4d5f-b6b4-36f34f71d434)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + e27487a4-61c2-44ee-92ed-265a4fb10992)(content(Whitespace\" \ \"))))(Secondary((id \ - f43fd6da-318e-4965-a2a5-42ed801cc41f)(content(Whitespace\"\\226\\143\\142\")))))))))(Secondary((id \ - 82677a8a-59a2-49cb-845a-3c3876b5b300)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 4f966c26-0371-4ef8-a075-127d1f0321f7)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 621fd573-caa6-4583-87f9-b5825e167918)(label(let = \ + b0455a0a-dddd-4d69-8154-55eb989b0d90)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + c3301188-6f92-4be6-911c-9110fc6d5390)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + e664bc62-7384-4410-ad9f-ac261ceb8bf0)(label(let = \ in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - cfd16b5f-c56a-49a9-a7f2-44b0be14f475)(content(Whitespace\" \ + c1681c0d-3d85-46a3-ae7a-232b8ed2f4ba)(content(Whitespace\" \ \"))))(Tile((id \ - 8581c765-76a3-422c-9479-8eb2cf7c104a)(label(result_equal))(mold((out \ + 1028add4-2255-43e0-a9ab-f83b0c4eb572)(label(todo_card))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 125cc189-7080-41e8-a196-b7ab8ad54f77)(label(:))(mold((out \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + b8514958-5bb9-460b-bad2-de372da807d6)(content(Whitespace\" \ + \"))))(Tile((id \ + fa87d81a-5db7-419e-8a90-e4faa9e06842)(label(:))(mold((out \ Pat)(in_())(nibs(((shape(Concave 11))(sort \ Pat))((shape(Concave 11))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - db9bdbd0-7b2e-478c-bd6e-8f8b5c508ecc)(content(Whitespace\" \ + 67b229d2-d35b-42f0-8006-fdc72804af7c)(content(Whitespace\" \ \"))))(Tile((id \ - 1041388d-9c06-4d8a-a535-05b540bff54d)(label(\"(\"\")\"))(mold((out \ + 67203ba7-1b68-43a5-95c0-892992bf7e1a)(label(\"(\"\")\"))(mold((out \ Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 2ed6f843-67da-461a-80ca-5d01c34c12c5)(label(Result))(mold((out \ + ba9b6e2d-df61-4782-af72-d33c6f2df66e)(label(Int))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - a73ace3b-2a20-43c9-8697-861ce8173c07)(label(,))(mold((out \ + d543b839-7836-4343-a431-1413d91adf60)(label(,))(mold((out \ Typ)(in_())(nibs(((shape(Concave 14))(sort \ Typ))((shape(Concave 14))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 320fb96f-b4ff-4d76-a951-a09df19091e0)(content(Whitespace\" \ + d1c8a014-4866-4406-a41a-a1235d8ffbcf)(content(Whitespace\" \ \"))))(Tile((id \ - cd4f3152-7c7f-4a71-be23-f9d7c0388c9d)(label(Result))(mold((out \ + 9041fa85-2e65-4bf6-b912-d602de77f82d)(label(Todo))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ Convex)(sort \ Typ))))))(shards(0))(children()))))))))(Secondary((id \ - a92c9445-e047-476f-a541-5edeeeb864ee)(content(Whitespace\" \ + bcdafac7-140c-41e2-9267-bacc76eedc24)(content(Whitespace\" \ \"))))(Tile((id \ - ca0ae608-6978-4d91-a8cf-9103dc0e87c6)(label(->))(mold((out \ + cc1dabf9-172a-47ab-8415-2eb5b71cbd3e)(label(->))(mold((out \ Typ)(in_())(nibs(((shape(Concave 6))(sort \ Typ))((shape(Concave 6))(sort \ Typ))))))(shards(0))(children())))(Secondary((id \ - 6b67160f-a805-4eab-a904-5786bc35aa7d)(content(Whitespace\" \ + 4c0e8b59-be49-4f1e-82c6-86176af3d466)(content(Whitespace\" \ \"))))(Tile((id \ - cbd87072-37ba-47ef-b34d-4d2da770afe3)(label(Bool))(mold((out \ + 5a9dd536-9719-4039-8eba-9f6348fd4871)(label(Node))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 7c817c8f-ce88-4e4b-b96a-e26c7da1c387)(content(Whitespace\" \ + bf68f8f6-df8e-4c48-9d67-4493f6b591c4)(content(Whitespace\" \ \")))))((Secondary((id \ - 64f3bd36-89a3-46b3-bc72-98972d735233)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 5f64f54c-d03a-4e99-b8e8-cf42d0043c9e)(label(fun \ + 8f8d7ba5-6b8f-4ff2-aa54-d5cbe1f1bf7c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 1b37aa42-9c05-45bb-a911-c5334bd55cb1)(label(fun \ ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - 0286c456-4807-4a6f-91d4-10e73c6aa351)(content(Whitespace\" \ - \"))))(Tile((id \ - 075698c5-49d1-4818-a2a0-925e47ebb73c)(label(rs))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 79fb8f75-8463-4067-bc1f-8a01459d9cd4)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 055d2b42-baca-4a18-94a8-2dd4163c3cf9)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 4666bb19-2d4f-4d4e-acd4-3b375a5d357c)(label(case \ - end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 53c9f8b8-bc8b-4251-ba44-04c921e86785)(content(Whitespace\" \ - \"))))(Tile((id \ - a21b674d-34f5-4d6d-9f85-144377e105c3)(label(rs))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 36300ef2-f0a3-4e40-99de-9e3d54bfcfe0)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 7d884095-55c3-4b3c-add1-d24317fc7080)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ - Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 9a9b1e20-4bc2-496c-8619-b0a889a7aef8)(content(Whitespace\" \ + d7fb670c-79d6-49ce-b9dc-0e1c3f39a5ed)(content(Whitespace\" \ \"))))(Tile((id \ - 262fd22c-29f4-48cc-9b52-e7176e683b94)(label(Ok))(mold((out \ + 0c7a3117-dcea-41c4-a93c-15340cb08216)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ + 225d05c0-6a34-4d7c-976a-8b276d857861)(label(idx))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - f8074977-f93a-463b-98e4-d69bfc55307b)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort Pat))((shape \ + 06d08f4f-9bb6-4b6e-a70e-8ff92c2255be)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 53eec351-3623-4a16-95c1-375864503073)(content(Whitespace\" \ + \"))))(Tile((id \ + 177261ad-4cf9-4922-babb-d37d3901a084)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 9bb655c2-b54d-4741-a1ab-0addfd13c98f)(label(e1))(mold((out \ + 078c298b-d9e9-4c2d-82a1-54630f9155fe)(label(descr))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children()))))))))(Tile((id \ - f9451c6a-d4bd-4b58-b077-397aaa290272)(label(,))(mold((out \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 6ef281e2-801d-4989-b7a4-96fdf3d8de6d)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 795a5504-8d32-41fd-adc5-083cc05ddada)(content(Whitespace\" \ + \"))))(Tile((id \ + bed54dd2-3231-4db0-a56c-44387bd9f4a8)(label(String))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + 8007a858-8905-4ff3-af0d-a05313ede81c)(label(,))(mold((out \ Pat)(in_())(nibs(((shape(Concave 14))(sort \ Pat))((shape(Concave 14))(sort \ Pat))))))(shards(0))(children())))(Secondary((id \ - 6f3b3236-cdce-41a4-9232-0006322b7b57)(content(Whitespace\" \ + 3c613611-4e6c-4f78-9dc4-05a8c436cd25)(content(Whitespace\" \ \"))))(Tile((id \ - e2d471ef-1c46-4a9c-a54a-fe1ef3cbb19b)(label(Ok))(mold((out \ + 43cd0fdf-1f4a-4d51-8702-c714b5ab4897)(label(status))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 60028cb7-d928-4ee8-aa7b-9dc38e3a7e18)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 3a1ad870-b7bc-43d0-b716-12cb9c23597d)(label(e2))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + 9c35b0c9-074e-4c68-a7f0-ccf4880bc0fd)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + c8a93a6a-211f-4293-9289-3e41ad4da6cf)(content(Whitespace\" \ + \"))))(Tile((id \ + 572c3e3b-bf9c-42c9-b9c8-0f99a666e7fa)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - c50a22f8-4eb0-49cd-8144-2300c10e107a)(content(Whitespace\" \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 5fdf53eb-c53a-4d81-88be-c90d5e95c3f1)(content(Whitespace\" \ \")))))))))(Secondary((id \ - fbb838b6-e6e9-4dff-a09c-523e350c630d)(content(Whitespace\" \ - \"))))(Tile((id \ - 00557cb6-1130-4a7d-8368-3412f00d393d)(label(exp_equal))(mold((out \ + bd3ad833-c48e-447f-adf7-fd155e918791)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 58b3c620-b5d5-4564-b42b-1f771dceaee3)(label(Div))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 44c05772-5510-4929-b570-e82889849614)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 20266501-2d94-49fb-acde-acddb0429fe7)(label([ ]))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 700a1d64-4804-4b95-b101-df304687daef)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 98079f7e-ece0-4ce6-b929-970961fbd473)(label(Style))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - ba4eb367-ef3f-4525-93f9-bfa92d9d7c97)(label(\"(\"\")\"))(mold((out \ + a9e4ac7d-2339-4371-a407-c17ee572c7b1)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 2502b290-8870-4d81-8f5d-76609e24860d)(label(e1))(mold((out \ + c8544d88-3e8f-49ab-a647-dd1ad2598e2f)(label([ ]))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + d1af99d0-d40f-4c85-bf1f-08baafa399bf)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + c0ec3b5c-9d75-44b6-9e4c-cd379c933b20)(label(Display))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - f484106b-41ee-4800-9a7a-a6a885e60b45)(label(,))(mold((out \ + 95b59c68-4165-4169-90a4-24e7dc385565)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 3eb02f55-544e-4955-be84-55638900a303)(label(\"\\\"flex\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ + 43cab805-e740-4c59-92b8-e2e067e9af4e)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 14))(sort \ Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 96e06e4d-be79-4633-a71a-a32b52a6153b)(content(Whitespace\" \ - \"))))(Tile((id \ - e4b1e526-e611-443f-b5aa-6be2f7aa6253)(label(e2))(mold((out \ + c98b02bb-a068-4f6c-abc3-be405ce5bf7b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 62708921-fade-49c9-a504-5f70ab44f2fa)(label(Gap))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + c87ad564-6558-402a-9774-71a2793c7897)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 9ed1342b-9676-4b0e-99a9-6603d36efc0a)(label(\"\\\"1em\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 73ddc6f1-7d14-4b25-9602-96415acda0e6)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 5f5c67e0-4040-410e-92f6-62a141252bd0)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ - Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + Exp))))))(shards(0))(children()))))))))))))))))))(Tile((id \ + 5a3e5b18-34df-4e52-8300-e9be29d04f31)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 469fe9f4-5176-4a53-978b-c47121c8b907)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 09ee7089-da9d-4432-9316-ef7003d82b6e)(label(OnClick))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + c75fd611-e4a9-4cb0-986e-0749fc5978a8)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 5d1067ae-f616-4dcb-927f-154e6c79ee05)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - ab885d68-e990-49bb-a610-a53b37d77456)(content(Whitespace\" \ + 6b28388a-9433-46d3-91e4-90aafd4d3324)(content(Whitespace\" \ \"))))(Tile((id \ - cfa1b087-0510-4b36-ac15-5a61f8aafa38)(label(Error))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 74c5a935-852f-4da5-878c-887bc26c98e9)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 3ff6542d-a8bb-4716-99da-9367ecbd49a9)(label(e1))(mold((out \ + b0f7243f-aeaa-43e7-a247-98b43cb36ec5)(label(\"()\"))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children()))))))))(Tile((id \ - 58f2f26d-e37e-41cd-b13f-8d7e74228172)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 1e2b816e-7642-4f4e-b95f-adf12abbc8ae)(content(Whitespace\" \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 14e3bdf7-424d-42b1-88bc-a2a717fea0d2)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 9da3b19f-b40b-4b1c-a260-1c385efc9cd0)(content(Whitespace\" \ \"))))(Tile((id \ - 8416cd9f-2529-4db1-9035-20229b62df28)(label(Error))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - dff4702f-08b6-447d-98c5-0f1fd993e456)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - ace2fdc0-80dc-4300-97ea-843487707e22)(label(e2))(mold((out \ + d744d70a-ba81-4e5f-9a3c-676c3884e9d8)(label(ToggleTodo))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 960db6ae-b068-49c6-bdc9-e3fc7ef50f69)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + c0272fd1-743d-440d-bf39-f681360fc5a5)(label(idx))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))))))))))))(Tile((id \ + 2987ecbb-e24f-4d09-adb2-20583e6cd6e7)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 0f064d00-58ba-4a90-b11b-b157f21e4346)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 2a76b476-a1bc-48ae-ad16-7009553481d1)(label([ ]))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + d7920f1e-fa9f-4b55-9a1b-2b7eafc68324)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 6e65b069-1445-4c33-9758-4097d97aaa7f)(label(Checkbox))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + a9bb95a8-64f3-45a9-92f6-44ece28f435f)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 76a6022b-02db-46f5-b3df-ade06225bc89)(label([ ]))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + f13a3ab3-3b51-425c-b4ef-e61313eb9389)(label(OnClick))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + e2318db7-4775-4b69-972f-6e8e3c08249e)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 33a0865d-f032-452c-8fe4-e28d1634adde)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 732b3f1e-af7e-4c16-8050-61e06634e77a)(content(Whitespace\" \ + \"))))(Tile((id \ + ae910722-5edc-4358-bc25-c54d91b7005e)(label(\"()\"))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 2e741116-8139-40f5-a95e-59549638267a)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 1749cf2f-53ee-4bae-b5d7-8256249c6f0e)(content(Whitespace\" \ + \"))))(Tile((id \ + f73abd0a-2348-4faa-b6bd-0c844ad3cfad)(label(RemoveTodo))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 3fc0a626-4449-4b19-8c1b-2fb696ae37cf)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 71bf91f8-e623-474d-a55e-469592924ed9)(label(idx))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))))))))))))(Tile((id \ + 6c41e40a-5655-47c3-a8ad-6407031aba3c)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 7e9b0d03-6f1a-401b-a5f3-2658c30d66ae)(content(Whitespace\" \ + \"))))(Tile((id \ + 4ead866d-c5a9-47a5-8d5b-289a6a5fb41a)(label([]))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ + 15ffb2bd-76ce-4197-90fe-a1e42f0ff761)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 4b13b1af-048f-4472-9e0d-ca08af0ee195)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 2cc76218-d0b9-4bd9-9143-48c854e63419)(label(Div))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 2573c2f3-d22c-4072-a92e-97428a9cd5a4)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + f3fac411-7442-4798-bca5-0cec82e7a0bc)(label([]))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 9f235eb4-9f18-4768-b35b-cd0abcac4fc6)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + f9686fae-5817-4f70-acb3-d653507a55fd)(content(Whitespace\" \ + \"))))(Tile((id 10a0b834-316c-4292-b4b5-f1a2ea4df1aa)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 5f490fa5-54e6-44f0-bc24-279e5dad66e0)(label(Text))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 3d41ff8a-97ab-463a-823b-0bd5488e204e)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 2e20001a-e5dd-4a8d-ae5a-bfbbf7014048)(label(descr))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - 21a5a76f-b56e-4eab-bc27-4365a8a5c5fe)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 987928b6-2cd7-4cd8-92c5-dca894fee268)(content(Whitespace\" \ + Exp))))))(shards(0))(children()))))))))))))))))))(Tile((id \ + b1ae9f13-7a05-4ac6-951e-22172d622b10)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + c1e9dd9c-c616-49d6-bf06-9ec050e5364b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + b9beb5c7-1434-4a61-984f-bb5ff94bab41)(label(Text))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + c6989103-a0a1-4cab-8e64-5e0d35950eea)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + e3cb81e1-ae79-40e6-be41-00497d686432)(label(if then \ + else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 12))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + a099c585-659c-4902-97b9-11d87ed4fd74)(content(Whitespace\" \ \"))))(Tile((id \ - 39426536-b6ae-4d23-b940-c09166c487f3)(label(e1))(mold((out \ + 398eb775-0944-4a61-a51b-13fedb5e85dc)(label(status))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - ddc21c27-b545-4704-9b83-73a54e7f97c5)(content(Whitespace\" \ - \"))))(Tile((id \ - b46541b7-7399-43b2-acee-ef0325e8909d)(label($==))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 8))(sort \ - Exp))((shape(Concave 8))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - c9a08e3b-dc53-4576-b101-94199ea10081)(content(Whitespace\" \ + 1ee4e981-6499-4cf7-8b92-b897bf28e40b)(content(Whitespace\" \ + \")))))((Secondary((id \ + c4ebfd46-1dfc-499c-a697-4c6d4161e088)(content(Whitespace\" \ \"))))(Tile((id \ - 4aae0476-095c-4045-843a-f7dd32925cdd)(label(e2))(mold((out \ + 1b1d32cf-cb23-47af-b27b-bb593d5a8984)(label(\"\\\"Completed\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 0606e959-ddcf-4d32-b61d-68b1bf791355)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 70cb209e-2fbd-4019-8a9c-f55ae2b12881)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ - Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - ea405901-ebf8-4432-9bc9-2ff5ee8500f1)(content(Whitespace\" \ - \"))))(Tile((id \ - bbc620b9-6f94-49ea-8ed2-4c7b6bb323ea)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 460c3b9c-9811-4fe0-a6a3-453ffaf1290e)(content(Whitespace\" \ + fcec4206-56a6-4b4c-85db-a0a862eb3e37)(content(Whitespace\" \ \")))))))))(Secondary((id \ - e36568cc-f82c-438a-9b67-2098c7bfb269)(content(Whitespace\" \ + 69479ab4-ad18-43b5-9151-6f5c8320d81c)(content(Whitespace\" \ \"))))(Tile((id \ - 1c3d6b48-108a-431c-817f-138af3f8a50d)(label(false))(mold((out \ + 7892e313-8e9c-4d4a-9b27-27f4c127b118)(label(\"\\\"Pending\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - a61bcd07-c82b-4dd6-838f-f4d9762a0a2e)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 0e699793-d7c9-477d-834f-c62eb4458558)(content(Whitespace\" \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 3b5ac6ea-6e34-46e4-aaf1-4d483b769026)(content(Whitespace\"\\226\\143\\142\"))))))))))))))(Secondary((id \ + 91ab7025-a0f1-460b-aef6-3b56e4eed093)(content(Whitespace\" \ \")))))))))(Secondary((id \ - e06c3270-8e19-4c45-8888-e9301f3629cf)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 88cd77a5-2e10-4d67-86dc-c0acddaf3a7f)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 1f1fecf6-bddb-4813-9c11-306183d4da10)(content(Comment\"# \ - Evaluation by substitution #\"))))(Secondary((id \ - 5ea9e27d-1731-4316-8506-fc45c5e70003)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 5fb6f0e7-3581-4553-95f8-a84bd4161861)(label(let = \ + 3de9f284-9e8f-4482-b526-e1571a10e910)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 1d2f0448-8815-4dd0-9497-d6bf5462061c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + e4022ae8-cdcc-40b8-af8d-2b5975144cc2)(label(let = \ in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ 2))(children(((Secondary((id \ - 1af286e3-978a-4ff8-a94f-5f2891068195)(content(Whitespace\" \ + 1b4da506-cf7d-49bc-b305-93ca6beb8274)(content(Whitespace\" \ \"))))(Tile((id \ - e1e44354-cb44-4d2b-8560-e8ad5adb5dd3)(label(eval))(mold((out \ + c7f6297b-dbef-4925-b4b5-8997702283d6)(label(todos_deck))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 25a60777-31c2-4b6b-b06d-cf6d67d61e3f)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 11))(sort \ - Pat))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - b3f75514-9770-47c1-9545-9e19f15df048)(content(Whitespace\" \ - \"))))(Tile((id \ - 62603e3e-6bba-44d5-bc4a-206542a22f33)(label(Exp))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 4f14df0f-7731-4364-9efe-7a353e852f82)(content(Whitespace\" \ - \"))))(Tile((id \ - 202553fc-31fa-4c18-afc4-2ebca2469d9b)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 846d17c4-4bc7-44c0-8167-cb7b5f7338a9)(content(Whitespace\" \ - \"))))(Tile((id \ - fc4991bd-f326-428d-a8cc-44bd3c40b891)(label(Result))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 90e6f91f-19c9-4e74-9ece-c08e8cfdb26c)(content(Whitespace\" \ + Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ + 22bea488-c7d3-426f-b08b-1e9d93d45c70)(content(Whitespace\" \ \")))))((Secondary((id \ - 2916646c-3df4-49f6-86de-25e96dfaa42f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 070d68c0-e8a6-4ccc-80df-51fd8782e5e9)(label(fun \ + ac73a511-4628-42ca-9e94-f79b735d8f65)(content(Whitespace\" \ + \"))))(Tile((id \ + 2736a54f-035c-4a40-936d-ded6ee1d5147)(label(fun \ ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - 10982210-ebae-46dd-8fa5-34a0e418a12a)(content(Whitespace\" \ + 0589600e-4aa4-4215-88da-ea1a84ebf16d)(content(Whitespace\" \ \"))))(Tile((id \ - 083a4aba-2a8a-4bd0-a272-ac89effa0f9c)(label(e))(mold((out \ + 39c8a213-a50f-484f-bc43-132b35086408)(label(todos))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - e2da86a1-b62f-4be6-ad50-bf10dfe5e93c)(content(Whitespace\" \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 7ba97a4e-23a9-4374-a4c4-02e9413bffc3)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + f49118cc-9a6b-4712-9e70-608eb378a9c9)(content(Whitespace\" \ + \"))))(Tile((id ba31fd4e-c2e8-4f1a-9650-286c56ea0cf8)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 990ccb82-6318-4b5f-9fa2-fc2c6e99467b)(label(Todo))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 77b13dc3-7836-40c3-b0ca-e01a953ac7cc)(content(Whitespace\" \ \")))))))))(Secondary((id \ - f4abddd0-6c1e-4227-beba-dc836f87d938)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - dc129b5a-7dc2-4b69-8c7f-28ba0e70a587)(label(case \ - end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 6c3d599d-67f7-4278-ace2-e76739314f6d)(content(Whitespace\" \ + f7ccfe06-4022-46fe-a40b-e18bc891818e)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 053d35f8-a49c-4e64-88d9-503380928da5)(label(if then \ + else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 12))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 1af068da-7a00-4133-ba2f-9e59e9ce13b4)(content(Whitespace\" \ \"))))(Tile((id \ - fbdd7d29-dde8-4fe5-944f-cb29f3309bf4)(label(e))(mold((out \ + 9d16c3c7-f8e2-4730-9b7a-b411acfecc29)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + e44c8422-7f8e-4640-9009-3cbf891db342)(label(List.is_empty))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 0a7c746d-72c5-48b8-a6ca-e8ca6a672fee)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 807e02eb-abbf-441f-beb5-946066580336)(label(todos))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - e4b8056b-10eb-4155-a896-24716bd904a9)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - ac689c9a-3569-4419-8081-5276776f7435)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ - Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 4244d236-5133-45aa-8b62-20cca6dc5a77)(content(Whitespace\" \ - \"))))(Tile((id \ - cef34e10-3604-4ce6-910b-2fa21cd6d2f2)(label(Var))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 3cb54504-edb9-4812-be0f-bea0fdc875e0)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 3e8b501d-9a2e-4a7d-833d-89a526a5fb8c)(label(n))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - 191e6fef-b0be-4e08-a147-64ae2537fdf7)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 1de92859-2011-4c76-866f-c882d0c1cc38)(content(Whitespace\" \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + 7ad942be-9de7-40f6-821e-293cf41a9c8a)(content(Whitespace\" \ + \"))))(Secondary((id \ + db02d7d8-ed7d-475f-ba18-b18e767ea189)(content(Whitespace\" \ + \"))))(Secondary((id \ + 1a9b1c6e-59a6-4108-b17d-ac0b6d225d4b)(content(Whitespace\" \ + \"))))(Secondary((id \ + 31964636-2b70-4b92-a3be-bb8a4ac2a32c)(content(Whitespace\" \ + \"))))(Secondary((id \ + 7451cf02-369f-4b3a-90e3-9c77f2582a78)(content(Whitespace\" \ + \"))))(Secondary((id \ + bf31b085-6fbd-4983-9cd8-dce9a31eeb27)(content(Whitespace\" \ + \"))))(Secondary((id \ + 3698b075-7c31-45e4-9101-f18672a3b8df)(content(Whitespace\" \ + \"))))(Secondary((id \ + afed206b-2afb-4bd7-a634-a3d859ddefe2)(content(Whitespace\" \ + \"))))(Secondary((id \ + 41256a12-bdb4-4d1f-8928-b4fa7bcc4291)(content(Whitespace\" \ + \"))))(Secondary((id \ + 976f139f-9695-4051-a8fa-9b3fe04bb253)(content(Whitespace\" \ + \"))))(Secondary((id \ + ada8a40c-7c88-44da-83dd-e5ada277e927)(content(Whitespace\" \ + \"))))(Secondary((id \ + 865c9934-5bb1-4e31-8df2-b3e856dbf5ca)(content(Whitespace\"\\226\\143\\142\")))))((Secondary((id \ + 3ae0d3a0-3a6f-4942-b39e-7883b7dd8853)(content(Whitespace\" \ \"))))(Tile((id \ - d00194a9-72cc-45ca-9c73-5d46869f610a)(label(Error))(mold((out \ + 5095dfc8-2d50-45f5-8c80-2e271cae57b1)(label(Text))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - c0a0ce90-81d8-4b09-ba8a-98934dd238bb)(label(\"(\"\")\"))(mold((out \ + 1b3c545a-353e-437f-b636-587b5d68aaf3)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 17469555-3ef2-4223-81a3-3e09a59f7c61)(label(\"\\\"Free \ - Variable\\\"\"))(mold((out Exp)(in_())(nibs(((shape \ + 4ec8938b-d536-453d-8ac0-db037d08627a)(label(\"\\\"You're \ + caught up\\\"\"))(mold((out Exp)(in_())(nibs(((shape \ Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0))(children()))))))))(Secondary((id \ - f5ae48cd-7b58-4b89-99d0-ae90a87cfba8)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 28d4ec8f-4748-49f2-8af0-aed3a76b2701)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ - Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 52fc7222-801f-4ff1-9367-4021e1a8cc1f)(content(Whitespace\" \ - \"))))(Tile((id \ - 82301ff9-b986-49ee-a14d-eed128b05b7b)(label(Lam))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 13384c5c-89b2-4e49-9c29-ff28cdb24c5f)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 2e67fc4b-20fb-48fd-aec5-5c5e6a3c9cf2)(label(x))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 117717d0-9155-4b0f-8082-a371cc2d3555)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 9ab8747c-aee4-46b5-855f-07d5c1188b32)(content(Whitespace\" \ - \"))))(Tile((id \ - ce6325f6-7892-4116-acbf-aa92206a96b0)(label(body))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - 89c70863-8308-4aee-9a98-28d74dd74526)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - d38b5a87-d86d-4461-8ee3-e4b504aea6ac)(content(Whitespace\" \ + 9982e801-d5d9-4838-86f4-ec731b172954)(content(Whitespace\" \ + \"))))(Secondary((id \ + 3ab5438a-8078-41cb-8f19-f84c4204d9da)(content(Whitespace\" \ + \"))))(Secondary((id \ + bf2c89b9-bfee-4a58-b959-de4d0ab05333)(content(Whitespace\" \ + \"))))(Secondary((id \ + afe9e6d4-dd67-4ae4-9723-5ccb8eeef5f5)(content(Whitespace\" \ + \"))))(Secondary((id \ + 6f2d5165-b32d-443f-984d-280e3d918b77)(content(Whitespace\" \ + \"))))(Secondary((id \ + 380d3950-a018-4879-ad09-2cecfaf8ba6a)(content(Whitespace\" \ + \"))))(Secondary((id \ + 82851c1d-4472-44a3-b791-cdfce15f1a00)(content(Whitespace\" \ + \"))))(Secondary((id \ + 7e0ac59d-c8e4-4f73-ac03-ce1ffa714cae)(content(Whitespace\" \ + \"))))(Secondary((id \ + 65a3e998-707a-44f0-b8e7-c46fae23f908)(content(Whitespace\" \ + \"))))(Secondary((id \ + cf3e3f22-012a-42f8-8689-471d4c445a1c)(content(Whitespace\" \ + \"))))(Secondary((id \ + 4f2bcc04-1099-4119-95ef-440b5b6e19e5)(content(Whitespace\" \ + \"))))(Secondary((id \ + 149c97b7-0ca7-4cc0-81bf-1432e087a52f)(content(Whitespace\"\\226\\143\\142\")))))))))(Secondary((id \ + 3a9db25c-3595-46fb-bc53-2ddeb8b1d91c)(content(Whitespace\" \ \"))))(Tile((id \ - c0309d83-842f-4163-ba0c-00274c4c765a)(label(Ok))(mold((out \ + 439b5b24-3523-4d49-af04-1a89a91da5bc)(label(Div))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - a168e86f-de75-4996-b05a-b76c84dc9c83)(label(\"(\"\")\"))(mold((out \ + d9d112eb-0a11-4746-854b-02d8c9f4d6b0)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 94fbe50c-1a03-4f98-8585-fd6bc54060bc)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 7ba46f97-3a19-428d-a4d5-6e62953ddb91)(label([ ]))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 37b7507b-be1a-4d12-a966-9ad509579bca)(label(Lam))(mold((out \ + bfedc7e5-2676-4c96-9a13-0cdaa209c934)(label(Create))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - ae281f5e-25e5-4970-86f2-1ddbca9b48d9)(label(\"(\"\")\"))(mold((out \ + b0796872-aefd-4b1f-a478-60a850704ebc)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - f83349a9-1cb1-445b-9d8b-0cb26cf0b432)(label(x))(mold((out \ + 742c660b-e043-42b3-8ade-e6be47ff879f)(label(\"\\\"class\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 5315a959-83e9-4805-9bc4-dc227d30c63f)(label(,))(mold((out \ + 01266fdc-bb03-41ea-85ab-7c5c59c182c9)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 14))(sort \ Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 7a01c28d-bc24-4523-af0f-a19527a9d15e)(content(Whitespace\" \ + 64e7e466-6548-4e66-b9c3-3bb139e2b912)(content(Whitespace\" \ \"))))(Tile((id \ - c658b71e-92ce-427a-99dd-d14e07d4b579)(label(body))(mold((out \ + dd6195b4-8433-4cd0-8dc1-a43f67d7122d)(label(\"\\\"todos\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Tile((id \ + 90ffa55b-4c1e-474b-a69d-dc0285e37700)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + c15ae466-a238-43a0-ae82-833d536547a2)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 5f57056d-50e1-4121-aef4-707e1919ef62)(label([ ]))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 7b796c36-7ff7-4283-af00-7622211b2d66)(label(Text))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 76791d62-585e-4d8b-8a1d-9565387cbb34)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 269db3b7-f787-40af-8218-9234c4f2a4f5)(label(\"\\\"todos:\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort \ Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ - 2ce50808-b44c-435e-87f2-a277c5be92aa)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 1380b225-c096-4d8e-a111-39f805c15707)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ - Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - f0c7a241-6ee1-4097-bdd8-d39550de3ad8)(content(Whitespace\" \ + 0a458938-e2d8-413e-8411-1b6c233bb3a8)(content(Whitespace\" \ \"))))(Tile((id \ - d41bc9fb-4280-4c3a-86fe-724f87ca056c)(label(Ap))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - b63a9734-7644-4072-a5bb-d8b2397a7dd8)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 2aa0a5e0-c746-4ee7-af22-61de73933464)(label(e1))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - b1308751-e597-4f83-8bdd-f11a6cd7c646)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Tile((id \ - df669107-279b-4daa-a84f-0749a93573c7)(label(e2))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - 26880146-1ff6-4797-8c69-313cd096525b)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 2fcf5303-c991-46fe-92b1-8dc91a89f05e)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 8067ba50-823f-4583-b983-fe007004442b)(label(case \ - end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - c2900d76-5805-4b52-b24f-2f09d3078093)(content(Whitespace\" \ + e9991aca-aa34-4a4b-9eeb-59249f8f1f07)(label(@))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + a7513315-dbb6-4dc9-a39b-80b4d2c26d46)(content(Whitespace\" \ \"))))(Tile((id \ - 3b19a74d-4f02-4bb0-a68b-0f2b9459060a)(label(eval))(mold((out \ + 04521714-3810-47c6-b79f-6db9f7378e9f)(label(List.mapi))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 0443a8d6-3210-49a2-bd1a-43350c73bc6f)(label(\"(\"\")\"))(mold((out \ + 57cb1c37-8693-424c-96c8-117f3e8f8dc0)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 966493b6-5a35-434e-ae30-f28eaf26ac7a)(label(e1))(mold((out \ + 419fcfb4-bdaf-44c4-9825-912d72724616)(label(todo_card))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + a16d7a32-eb30-479c-a455-dc94a8561776)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 85c05cdc-d4e6-4351-b0d4-523c628876b5)(content(Whitespace\" \ + \"))))(Tile((id \ + f6e4f31a-2886-4028-9ca3-a8c47325039d)(label(todos))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 18904f6e-8219-42b7-bc23-a52869c83453)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - fb1b10f7-a7aa-4b2a-b1e1-868c9cf6700d)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ - Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - aef8a32d-571e-4aef-92fe-a133e61561df)(content(Whitespace\" \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + a471033f-c517-4fc1-a431-5693106e665e)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 4ca30e6c-58ad-46a5-828c-65f347778b44)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 0bb3972f-e716-4be9-b37b-2592bced0945)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 66138bf6-cc41-471b-b7da-aea6e05de5e5)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + 206b51c0-167a-411e-9584-98c69bbfbb22)(content(Whitespace\" \ \"))))(Tile((id \ - 1622c6b0-1aa1-4a9f-9ad1-0ee2f44e440c)(label(Ok))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 53c740db-a127-4286-bbaa-fc1f6bfd897e)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 86981a7b-1855-493a-bb5b-bd50acbb393b)(label(Lam))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 5e484724-9f82-4027-82b8-3b9c2201e4bf)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 8b69eb6e-d632-45a7-84b8-c2f552f1cb2e)(label(x))(mold((out \ + f654021f-1d10-41d4-8ed7-6c77b1027580)(label(add_button))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 516a2ade-2d02-46f6-b79e-6f262e8774c8)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 14))(sort \ - Pat))((shape(Concave 14))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 94ecff3b-c7f6-47a8-88d5-26fbb6602902)(content(Whitespace\" \ + 85f74390-d73f-4523-8c3a-eb762fcd5162)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 309e7890-a033-4c93-840d-2703176fbeb8)(content(Whitespace\" \ \"))))(Tile((id \ - 88490ba8-3f86-411b-a6e9-817f4f662690)(label(body))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children()))))))))))))))))))(Secondary((id \ - 6ef6102d-78b5-418d-84e5-9349d627fbfa)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - e35cd324-d16a-4d68-a97a-b6ca15cfe3f3)(label(case \ - end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 446fdd16-d54b-4be9-9b0c-0d8eeafc0543)(content(Whitespace\" \ + 5ef3de13-789a-485a-91ea-5e49ad143d6f)(label(Node))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 543e7f8a-bad4-4d2a-83f4-196a60964c45)(content(Whitespace\" \ + \")))))((Secondary((id \ + 6379da78-ce8a-4044-a019-6ff601562cd7)(content(Whitespace\" \ \"))))(Tile((id \ - 2cd4a45a-528f-4945-998a-3c0b9cf9c2c6)(label(eval))(mold((out \ + d74f3f64-21f1-4f9d-8aa5-2311fd62a1d0)(label(Div))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 3c39677a-03f1-428f-b295-7a33f2fe9466)(label(\"(\"\")\"))(mold((out \ + b92c12bc-2180-456f-8ee2-61140bcd917c)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 1aec83cb-0253-4eab-8bfc-73f5c6ddc33b)(label(e2))(mold((out \ + bcfa5a78-4d8a-452c-bd75-d60d9c0fc76b)(label([ ]))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 709f7609-930f-4115-97c5-9a51baad9082)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 7e6f23ad-ee52-44f1-8f6c-aef14273cfc0)(label(Style))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - b0b29140-8d63-441e-a576-1a3ab3f24521)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - c15d05bf-8519-455a-b0be-d1b096b074df)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ - Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 4d0f5b8e-1a10-409e-b434-2bdff88856df)(content(Whitespace\" \ - \"))))(Tile((id \ - 136333af-71db-4b8f-bf85-bf623512b58b)(label(Error))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - f0793b56-f2cb-4a53-823a-49dd57145a53)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 9456aff2-b841-41a0-b360-ba6adf6af864)(label(err))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - cb066a61-a29e-4636-9e26-a15ca426b0b5)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 4ee95925-905e-459a-8bb5-b39ec5767d45)(content(Whitespace\" \ - \"))))(Tile((id \ - 3c2afa8d-cc20-4d23-a6fc-64fc225fe1c1)(label(Error))(mold((out \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + f3d692e3-f71f-4c34-bba3-e5f4ec886c2f)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 95405a36-ee6e-411a-b059-bae8603ca489)(label([ ]))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 2de97701-b47e-4164-8490-ae4bf9dfa501)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + b6705567-8da5-44da-afc8-ebd8fb11c404)(label(Display))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 9e259835-32b3-4d25-b557-fd1b9308b451)(label(\"(\"\")\"))(mold((out \ + c8ec55c4-2b3a-46d3-bb61-46712f26c0b4)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - e6c214e7-1c90-4ac4-9d87-82c9c3f5f71e)(label(err))(mold((out \ + 3785148a-18a1-472a-89e5-353460ceb9b7)(label(\"\\\"flex\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - e2d4aebb-8638-43d4-a0a9-b7dfaf103905)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - c79c0790-1bae-4fb9-8d15-28b090a7bc01)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ - Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 9c30c747-f0e7-4cc7-a456-7dfe67178cf9)(content(Whitespace\" \ - \"))))(Tile((id \ - 1ec5195e-9152-40f7-8116-ccc26b2c8209)(label(Ok))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 3ababe4d-2781-429f-98a9-f502d9dded33)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 49228f0b-a42b-4651-a72b-1517623527be)(label(arg))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - a42e030d-5e30-45ca-8417-58a64f6ff13c)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 7b39247b-9eb3-4eae-b44f-90edd3df62f1)(content(Whitespace\" \ - \"))))(Tile((id \ - 0595a373-e5e2-4e31-a669-95d86097e70b)(label(eval))(mold((out \ + Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ + 49ab9d78-0e36-457d-94b6-134705b8c502)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 0fd60239-2ac4-4232-8470-fb287a09085a)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 7926108a-553f-4d79-82d5-ba8bd493020c)(label(JustifyContent))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + c87bce0f-1c56-4751-95bf-4e908b836df3)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + d8cf3a12-c69e-4d97-a586-0ee63f85df95)(label(\"\\\"center\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ + 62045b00-c2fa-4874-b8a0-edad8e63e8b4)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + c66b8c5a-288f-45ba-886d-a0d30ce1eeb0)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 87ca04f2-daa1-4a54-80e3-4bab3070133c)(label(BackgroundColor))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 82a478f5-4725-472b-a5dd-6cfe2e76f11c)(label(\"(\"\")\"))(mold((out \ + ab3c0c68-c4eb-40a9-98a7-b77fabdab1cf)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - b6be841c-aaf7-4070-a3e5-a726db8865d9)(label(subst))(mold((out \ + d7ca128c-b0e5-4cf8-926a-41551c968a1b)(label(\"\\\"#986\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ + 34479fcb-fd69-4786-b800-00816e9cf1b2)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 69fcbcde-f34d-4b65-aae6-bc4eb88903b9)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 2ffaddf8-85f8-46b7-b97b-cde84468e124)(label(BorderRadius))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 144a7fbf-4378-46bb-89ac-79cb25a98c3f)(label(\"(\"\")\"))(mold((out \ + b0a9a342-fbba-408e-b510-d4d1a0b981a3)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - e30e8889-ff79-4ebd-8fbb-9402f15aa19b)(label(arg))(mold((out \ + 73af22f0-824c-42e6-89db-ec10ec85c92a)(label(\"\\\"0.3em\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 7d914adc-3684-411e-af89-b4e8071ec029)(label(,))(mold((out \ + Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ + e6fdf232-d441-4e1a-916f-3fe7ed8093f1)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 14))(sort \ Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 1a41d8cd-22a5-40e7-844a-ab4a97c3bcfe)(content(Whitespace\" \ - \"))))(Tile((id \ - a5480aef-5c47-4ace-b998-5be13ee9629b)(label(x))(mold((out \ + f4a98f5c-5288-40a6-89ef-8e1a5a0d7e42)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + f8478ded-6213-4d60-91cc-450f47d5016f)(label(Cursor))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - a78fb2be-cb85-4ead-af7f-55cce846673f)(label(,))(mold((out \ + ffbf088c-aee1-4507-b19e-2583fa63cb8d)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 8c0f0d4e-bf42-4533-bf84-5f0564f50e41)(label(\"\\\"pointer\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))))))))))))(Tile((id \ + a426f1f0-011f-4ef2-a34e-58093390a6ad)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 14))(sort \ Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 6bcb096a-7abc-451c-a5a9-ab38b4af844c)(content(Whitespace\" \ - \"))))(Tile((id \ - 079f72b2-aba6-494b-9058-3e20faa9d8e2)(label(body))(mold((out \ + d849432f-e31e-4126-8d33-6af390420923)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + f188bfe3-b740-411b-9b1f-8bcebb1ed185)(label(OnClick))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ - 13b45363-8f7a-4f40-8523-60c70ae7c46c)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 83893eed-46bd-447e-b7bd-83d79a38dbb4)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 2d63cd2a-1308-4775-a9bf-061a4d2fea11)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 19))(sort \ - Exp))((shape(Concave 19))(sort Exp))))))(shards(0 \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 9d71c0ef-7896-4191-8768-af3336ca1cfb)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 6986ec88-1f86-4cdf-a4a1-9fec6b93769d)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - 401c3082-3f59-414b-be4e-a13645eb647d)(content(Whitespace\" \ + fd846261-ba7f-414a-a748-40b43ffe54a1)(content(Whitespace\" \ \"))))(Tile((id \ - cb0c360a-dec4-4a40-a1aa-24869a58fc13)(label(_))(mold((out \ + 628775c3-2a36-4d30-bf1b-1571403ab579)(label(\"()\"))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 898f50b1-2368-4f52-a9c6-cd969565f49a)(content(Whitespace\" \ + e361efa8-6110-4ac8-a06d-0cd86dd45781)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 9798505e-5af9-4e57-93c7-6f71648ff0c0)(content(Whitespace\" \ + d076c3f0-bbbf-4aa7-9dc2-a27741f8659f)(content(Whitespace\" \ \"))))(Tile((id \ - ef2d1259-52ef-4da0-94ec-570086258675)(label(Error))(mold((out \ + eb73b52e-170c-481e-a40d-b81cea237d61)(label(AddTodo))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Tile((id \ + a2b3286a-8f69-4863-8365-22d45ca6339e)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + a417870e-ce7b-4f4b-a5dd-a632bb1f5364)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d7146a41-e265-4383-a41e-c8c6e416d0f7)(label([ ]))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 344a6082-53f2-4706-846d-47da680748c0)(label(Text))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 5aada76e-7e1f-4ca7-b2c6-8dd086becf92)(label(\"(\"\")\"))(mold((out \ + b5e41f10-ab7f-40af-a931-42ff7d1c7f6a)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 01634b4c-d027-4844-9f86-dadd64218852)(label(\"\\\"Not a \ - Function\\\"\"))(mold((out Exp)(in_())(nibs(((shape \ - Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - c9b5cbea-1cf6-464c-8cf4-0ed77a1e18f5)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 3d67d23c-c9c3-4c4a-b56f-a16e505ce1a6)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - ff921f44-34e5-46e7-993c-6f7dff22bf38)(content(Whitespace\" \ + 34e09245-1976-475a-bc3e-6a6ed19b8eda)(label(\"\\\"Add \ + Todo\\\"\"))(mold((out Exp)(in_())(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))))))))))))(Secondary((id \ + b5e853fa-490e-4f4c-a297-865386e83365)(content(Whitespace\" \ \")))))))))(Secondary((id \ - 3fc86b20-6a2b-43b4-8034-94d052a0df3d)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 673e832f-5fc1-4af6-bc50-4cd857d08c52)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - f3613090-1dfd-4946-bbfd-3d652d389e93)(label(test \ - end))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 3447e25a-ee47-4222-8bb1-828d0830b231)(content(Whitespace\" \ + ce07079f-96fb-4700-a818-4e20c5e51d2a)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 2a017c68-013e-468e-a336-8b32807872e2)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 08c70708-c67f-4e52-abe3-df52bc5659a3)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + f03d9856-057f-4beb-8b51-42162bf6a9de)(content(Whitespace\" \ + \"))))(Tile((id \ + df4bf9ae-55a8-4845-9766-3b4f3a42bad5)(label(buffer))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 10767c24-749b-4aa0-a52e-afab31ba25aa)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 2b441933-fc1e-4eec-afaa-84cea3fcfd19)(content(Whitespace\" \ + \"))))(Tile((id \ + b00b8a4d-850f-47c6-92f9-d43eff578aad)(label(Node))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 35b8bfff-18b7-4009-936f-49940a9035b6)(content(Whitespace\" \ + \")))))((Secondary((id \ + 69d2a16e-0da3-4ef5-b3b7-9c112f715af3)(content(Whitespace\" \ \"))))(Tile((id \ - a0e96ed0-2f67-4271-904c-07744c73b7c6)(label(result_equal))(mold((out \ + d9085884-d86b-489f-8be3-41ff474eae84)(label(Div))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 95ba3fae-6bf1-479a-b63a-6035111e0ebe)(label(\"(\"\")\"))(mold((out \ + 02c6be89-996f-4d64-984a-8db08c731ce6)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ - d846ac6d-a212-4661-a1ed-2bf31f39fd8f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 798271d1-e065-4eb1-8e4d-908ab5f140fe)(label(eval))(mold((out \ + b716a4f4-e0e7-4660-bbe0-fb19fe44c07c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 89b85619-4263-4a29-98d6-2aa4c679741a)(label([]))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - adb0fce9-0053-4a86-8b79-6784f476c68b)(label(\"(\"\")\"))(mold((out \ + f00cd2c8-f0a7-48f6-aef1-82f2e4d92b85)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 74af01da-c68d-4bf1-8391-bf33c4f8ae29)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + c9c7e480-a3ea-4156-8dfb-dd297e888e02)(label([ ]))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 2333ade5-3f05-4771-9250-dcbb139c4b11)(label(TextInput))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ + 52009e68-59e8-40f5-889b-f47b1bd4ad5f)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - ca7069de-be87-454c-9b0c-3d643c480ed4)(label(Var))(mold((out \ + 3a9a6614-05c3-4764-9ec6-c28f2ed81b40)(label([ ]))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ + 33fce8cd-76ed-4e60-9694-a8418d5adfa2)(label(OnInput))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - ff999918-31f2-4bfa-b172-5a905e962eba)(label(\"(\"\")\"))(mold((out \ + d55cf33e-3639-42bb-866f-fde8995988c9)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 607cbd1d-522a-40d0-bb3d-b8b45de732df)(label(\"\\\"yo\\\"\"))(mold((out \ + b8573dc0-7307-4274-865a-d303fcf29f49)(label(UpdateBuffer))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort \ Exp))))))(shards(0))(children())))))))))))))(Tile((id \ - 6e383875-6c3a-4f2c-a401-91ec7bc58276)(label(,))(mold((out \ + dcd10401-2973-4af9-82f6-518444fedf45)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 14))(sort \ Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - aa7b31b1-3aef-45b3-ad22-0e5d7059a49e)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - f7b206f6-d2a5-480a-abc0-b9cacabb4689)(label(Error))(mold((out \ + 499801ca-6fb2-4558-8bf9-e9092489f531)(content(Whitespace\" \ + \"))))(Tile((id \ + 9f254b96-3552-4297-802f-66662b6cb573)(label([]))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 8945a9d0-81eb-4b24-966f-a818217214ef)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 8794ac1c-4080-48ff-8840-6e796567dd87)(label(\"\\\"Free \ - Variable\\\"\"))(mold((out Exp)(in_())(nibs(((shape \ - Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ - 70900efe-dc3a-48d5-9f91-c70edcedaa33)(content(Whitespace\" \ - \")))))))))(Tile((id \ - e3c9daf5-57f5-47ef-9b24-a7e6d6936805)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - bad9600b-50a3-4377-8ac7-da71b362083c)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - a6e44360-03aa-490d-9e69-7783234649f9)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 64a486fe-c95c-4d78-862e-b0d2cc480928)(label(test \ - end))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))))))))))))(Secondary((id \ + 2155d1fe-9363-4fb1-91bb-a8de64f73cae)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + d3f23081-ede6-48fa-9588-c0f69e8d5a41)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 14da2204-b394-481a-90c7-7b5997a82db3)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + c99c74ee-f511-4cf9-9424-fcca5897cae0)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 16))(sort Exp))))))(shards(0 1 \ + 2))(children(((Secondary((id \ + b753326f-ecaf-4956-b478-b380e17bb6e6)(content(Whitespace\" \ + \"))))(Tile((id \ + 5dcf71ab-a119-4726-8c90-30634d5e2fd9)(label(view))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + aa69aa8b-4d2d-4737-b880-74646e217361)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + a903859d-8819-462d-9400-3fcd643540fd)(content(Whitespace\" \ + \"))))(Tile((id \ + e6407c64-8791-4834-8b07-ef2f9d4606f6)(label(Model))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 2ec4f592-ba2f-4884-88ce-02ef269e20ed)(content(Whitespace\" \ + \"))))(Tile((id \ + 06549658-6d9a-446f-b15f-0080186e5474)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + d1c37f79-3c7a-4476-91ae-59e32bfd5205)(content(Whitespace\" \ + \"))))(Tile((id \ + c5f08885-e547-4d45-a772-3d9c491982d2)(label(Node))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ + 18e7e851-a06c-4d13-9adf-45dbe885c265)(content(Whitespace\" \ + \")))))((Secondary((id \ + fff35b79-9d62-448c-8a81-a77ab7da29a0)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + b9876875-5234-4ea5-b48b-680546c21c5b)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 13))(sort Exp))))))(shards(0 \ 1))(children(((Secondary((id \ - 931264d4-b6f4-4c62-92e1-0196ed942eb2)(content(Whitespace\" \ + fe8d711b-6db2-47b9-82f7-5c4ab6578b8d)(content(Whitespace\" \ + \"))))(Tile((id \ + e70301ca-0fc0-4bb6-b760-e9fdb89628f1)(label(input))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 8f657195-9a81-4ee8-98f3-d5deb755b3c0)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + b56799b6-b79d-4573-a72b-8542494f291b)(content(Whitespace\" \ + \"))))(Tile((id \ + 05c094e2-b23c-46ea-aa1b-4f4c3944b2c0)(label(String))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ + 2c0d6641-fb8e-4e04-8ec3-eff28c453460)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 09697150-1a2e-4140-b228-621e26f679b1)(content(Whitespace\" \ \"))))(Tile((id \ - 1c9eda3f-b714-4c05-9c74-506bd14f6fb5)(label(result_equal))(mold((out \ + 5a7f41df-484b-4012-8667-1d081a0bd72b)(label(todos))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ + 9897108a-d0dd-4a56-8ffd-7ea4e680b8e7)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 7de0a256-ee35-496b-951d-a0f9bb971cd2)(content(Whitespace\" \ + \"))))(Tile((id 2338d7e1-dc7c-4d66-ac27-38396b5a7c15)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 3765b649-0394-461a-bc16-343c6948adbc)(label(Todo))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + fb7a2682-6093-43fc-8e63-07363ae3c722)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 3cfbb664-6f76-4187-90a0-28e111b361e4)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 02651152-afb7-4f42-aece-5ad1174fc87c)(label(Div))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 4cd76acd-9533-406c-ab10-13cd09fbfe12)(label(\"(\"\")\"))(mold((out \ + 6f21e0be-2caf-4549-bf9b-03c71ca234f9)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ - afdaeff5-0984-4feb-9862-b326d63da2c0)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 93745552-a939-4d1a-94a8-0b642e9da80b)(label(eval))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - e0aa7d92-c7cf-416d-98c2-737ed6338a36)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + 19d4b8b4-f58d-44d4-9882-ba5301f0b635)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d8405f11-7c36-4c38-8fd7-9832a16aea29)(label([ ]))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - ab486f19-c1ed-4a4b-9604-4be2afe0b0d4)(label(Ap))(mold((out \ + 4720d275-fa88-40fb-b242-77d24a2ad8fc)(label(Style))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - b233e5b7-65d7-4be3-af87-c80e69046876)(label(\"(\"\")\"))(mold((out \ + bf09e484-e55d-43b2-9f30-7e230e405c91)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - f414241f-8fdc-40a3-a775-3d8b903ac358)(label(Var))(mold((out \ + 4e8b7bd3-69cd-41c6-945a-384ed98bc30e)(label([ ]))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ + 16673e0d-1f6f-4799-9ed3-a45446745d2b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 08d5cdee-6224-4b34-ba9e-29218677562a)(label(BackgroundColor))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 395ceecd-3b18-4153-9800-e329c7a5598e)(label(\"(\"\")\"))(mold((out \ + b841d8e9-42e7-406d-bd73-974b0b28de07)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - b9ea6977-82ae-4e10-8f43-f3ebe314826e)(label(\"\\\"no\\\"\"))(mold((out \ + fb8c1bdd-5c0f-4222-a318-05544a839e20)(label(\"\\\"#543\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - ec9c2830-8c19-4483-8b29-90f246a6067a)(label(,))(mold((out \ + 29091fff-aa74-4190-8b31-2486a394d21d)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 14))(sort \ Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 83f58d35-a260-4168-a7c9-ac3f29f9d5af)(content(Whitespace\" \ - \"))))(Tile((id \ - 7e9ce79a-243d-41bb-a607-18a5b570fc7a)(label(Lam))(mold((out \ + 262aae18-9ba0-4029-93b4-d1cc361d7643)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 92fff4fb-1c1d-4357-b410-8ef4c5fe77cf)(label(BorderRadius))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - c121d549-80c7-4b6b-aed9-f6652df7d1a9)(label(\"(\"\")\"))(mold((out \ + 4d1507cd-0816-46d4-bee2-3046266482d1)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 7b74c555-9efd-4351-8d0e-d6bd96f522c5)(label(\"\\\"bro\\\"\"))(mold((out \ + 1d1489ae-de42-47bb-842a-e4329cde1eaa)(label(\"\\\"0.3em\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - ed288520-0baa-4871-b514-49e06f702b9f)(label(,))(mold((out \ + Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ + 642019ef-f444-4cf8-9112-b8e66f8bf734)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 14))(sort \ Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - aa546db0-cfa4-4049-8ade-00c91c2d9a55)(content(Whitespace\" \ - \"))))(Tile((id \ - cd5050cd-9f89-440b-a764-46510d8a918d)(label(Var))(mold((out \ + 23697103-22fc-4af6-ae2d-ec64de06b814)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 2ead04a6-0c37-4f0f-9297-2f61667841af)(label(Color))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - dd639cdd-c2ab-48d9-b7c1-bf7d1e5359e6)(label(\"(\"\")\"))(mold((out \ + 8e85ae6f-5b87-4702-9a00-ec2f8e2188d8)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 78ea24ff-db16-4799-941c-563b8f536566)(label(\"\\\"bro\\\"\"))(mold((out \ + f1aab49b-41ec-4222-8dbf-237edfae59cf)(label(\"\\\"white\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children())))))))))))))))))))))))(Tile((id \ - 65acf282-5b10-4c18-9d05-ccc5b7a17286)(label(,))(mold((out \ + Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ + b4d5790c-f587-4f3c-8e9c-17bb762ed73a)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 14))(sort \ Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - bbba711a-f484-4101-9aaf-286054cc8f2e)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 9fcc45ca-c64f-45d4-9ff7-13acf6aaaf73)(label(Error))(mold((out \ + ea04939c-2b0f-40b1-af03-4ac145a04820)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 95ba2882-64fe-4432-8ad1-ecb3e775ccc0)(label(Display))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - a361013a-f8c8-4887-9a10-26b954165ab2)(label(\"(\"\")\"))(mold((out \ + 3b7942b2-82a8-4b18-865c-34e6bdb4c23f)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 2a3a4f6b-dc4f-47a2-abcd-10af0387e047)(label(\"\\\"Not a \ - Function\\\"\"))(mold((out Exp)(in_())(nibs(((shape \ - Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ - 8cb6eac9-4e2a-44ea-aa95-e39f67531832)(content(Whitespace\" \ - \")))))))))(Tile((id \ - 9bd804ee-2b9a-432d-a097-988afb9b59c2)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 18dcc81d-619c-4b42-af2e-4056040039d4)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - bce6c1d2-113d-40e3-a191-b64c2935564d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 6e8df04b-e852-4d0e-8f1d-fbc121575946)(label(test \ - end))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - edcaf4e5-eb6e-4180-8a6d-0cc69001dbc3)(content(Whitespace\" \ - \"))))(Tile((id \ - 27acf41b-ea89-4ff0-899c-8c3d9be0b3ba)(label(result_equal))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - d6debeb0-6fb3-4ab0-86cb-d4bb187c8c63)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ - 4030662c-5407-4ffc-9c27-e4b3e8d5ccfa)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 0ab33bc9-c61e-474c-bd64-1a4650e90b3d)(label(eval))(mold((out \ + 8f9cb508-fcbd-4949-ae50-9f11f75fdb91)(label(\"\\\"flex\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - be5d6f5f-2e9e-4c55-82e7-0f2950749625)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 6ec85bf2-374e-4ad4-82c9-9394b268f779)(label(Lam))(mold((out \ + Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ + 53f1edf2-ad26-4f55-a174-046903e04664)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + daee9250-c79b-4fcd-9ced-dda8be56f61f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + ee647c13-4f13-4da9-b118-1e487f5a8a9d)(label(FlexDirection))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - b618b7e5-b03e-4014-b091-604e08e9eda0)(label(\"(\"\")\"))(mold((out \ + 84c14c82-b493-4dce-b9d5-310650a097a6)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - f856cd2d-583e-4b89-80e4-77bfe5bafa3b)(label(\"\\\"yo\\\"\"))(mold((out \ + d59c1449-f378-4af1-888a-0474731f473f)(label(\"\\\"column\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 62e293ef-5518-40f7-8782-404f25940817)(label(,))(mold((out \ + Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ + bcdd2252-a4d2-4ed2-9bb6-5f22b094743f)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 14))(sort \ Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 04647702-4dbf-4851-a845-ef76cea684a8)(content(Whitespace\" \ - \"))))(Tile((id \ - b75e01ef-ee6c-421c-8599-991fe24e1e13)(label(Var))(mold((out \ + bd90f3c2-d06d-4639-b5c4-58540ac1f357)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d0b8a940-3e59-4572-b84d-da1fcf2d522b)(label(Width))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 002b0979-7e4e-4e55-964d-634f97797462)(label(\"(\"\")\"))(mold((out \ + c65d0574-bf2f-4335-aec5-91704733c5f1)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 7566c730-a883-4559-aafd-36ea07e85266)(label(\"\\\"yo\\\"\"))(mold((out \ + d90089b4-6277-4d8b-9168-aec96e9ae23b)(label(\"\\\"9.2em\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))))))))))))(Tile((id \ - 87489b74-6fea-4bb7-b188-cc0f293f1501)(label(,))(mold((out \ + Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ + 3044c0f2-0ba5-4a5e-9285-257b12427ef0)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 14))(sort \ Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 5f9cb66a-3c69-44fc-98f9-8d33c2242e62)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 305c178a-7da5-485c-9212-97518172660b)(label(Ok))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - b9c49a17-ddb8-4412-ab2d-e84a31674c1e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 6d928f5a-76ba-432f-84c9-8985bdfbae21)(label(Lam))(mold((out \ + 1b344b12-204f-445f-8e0e-5e9740a27216)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 4795ffea-5506-4883-9ce2-e9016a27445a)(label(Gap))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - dd04ac7f-c000-46e2-9346-68de5ccb2c37)(label(\"(\"\")\"))(mold((out \ + 340179c2-f407-4787-a433-6e83705e373e)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 09183f09-b197-4dab-9712-2ad6ec8053c1)(label(\"\\\"yo\\\"\"))(mold((out \ + 2d89a726-8339-4cce-a06d-5fdeb7c94c15)(label(\"\\\"0.5em\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 2bac98eb-578c-4187-8d5d-0e428872fabe)(label(,))(mold((out \ + Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ + 9d65d459-fd57-46b2-906d-f8106e5d758e)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 14))(sort \ Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 2f510267-53e4-441f-8c4e-164a43cb1d76)(content(Whitespace\" \ - \"))))(Tile((id \ - 9f53f3e1-50c4-41f6-9e69-d60a4bac4562)(label(Var))(mold((out \ + 975e60b9-76d0-42f2-98a5-cc25febdb4ce)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 7ddf177d-798c-4f6d-a217-e16280473a24)(label(Padding))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 37e690bc-a872-42fb-a204-ac507f930218)(label(\"(\"\")\"))(mold((out \ + 31192a55-92e5-40b7-869f-0ccd31306a20)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - bfa62c97-6b4f-485c-91a5-f28b7d3429dc)(label(\"\\\"yo\\\"\"))(mold((out \ + 3fe54045-e2d2-48bd-9c04-e6f2a6ccaa01)(label(\"\\\"0.3em\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort \ - Exp))))))(shards(0))(children())))))))))))))))))))))))(Secondary((id \ - 4c3b2e45-d2b9-42a4-9096-00e583a9d66d)(content(Whitespace\" \ - \")))))))))(Tile((id \ - 2fe2dd64-bbdc-483d-a33c-8607a5a74f99)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))))))))))))))))))))))(Tile((id \ + 9646ed7c-c831-4670-9778-7b63c9571c08)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - ad91ebe7-fd4d-4455-bd38-c279a70de5d3)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 461d55f6-6f2e-457a-b986-ba720f4d3dd4)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - ab21e019-9c01-4fa7-a20b-de67b02612f4)(label(test \ - end))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - fed3fa2c-11a4-4564-8eff-e7704b696268)(content(Whitespace\" \ - \"))))(Tile((id \ - 1fc38e53-5324-4b3b-8a05-04211a30616e)(label(result_equal))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - e63a04ff-39de-4da8-af96-438a294a9c92)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ + d74f91b5-3709-449f-821c-548e7bc4ccef)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 2eb8b9fc-5bbf-4280-bb4e-bdd8ad6a7d55)(label([ ]))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ - 22edf468-f96f-4297-bae1-f1db449a5712)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - dd1f6a2a-39be-4937-9dca-ea18760871ce)(label(eval))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 3ce8a7ac-fd0d-48ae-b434-59ee497324c1)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 567af97e-40c4-4b66-b5c0-c7dde61131a2)(label(Ap))(mold((out \ + 09720505-0735-490f-b141-9289d6c6b537)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 7ef68d39-930d-4928-a040-20651b59314e)(label(Text))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 3a8e1695-9c19-4860-be5a-b2bf92046582)(label(\"(\"\")\"))(mold((out \ + 4558042b-02c7-4772-a015-1677e4316d5b)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 5c422f00-d26f-46d5-92b4-849556a6cffd)(label(Lam))(mold((out \ + 0f92457e-9889-4a60-830f-5d80d4e5200e)(label(\"\\\"Hazel \ + Todos\\\"\"))(mold((out Exp)(in_())(nibs(((shape Convex)(sort \ + Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 0676c9c0-ef65-4664-a7e5-c84fc06bb7d9)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 35e4b9f0-071c-44a9-81f6-c216fa56dc2c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 80e324d7-76be-4125-83c2-8e5e7adfb05d)(label(buffer))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 2eeb6db0-38aa-4479-bcfe-197543180463)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 84ff238e-dcf0-4449-b9b7-8d1ecd08d65c)(label(\"\\\"yo\\\"\"))(mold((out \ + 63452754-f327-41dc-b464-1a966e640901)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 43dfe901-a057-4b02-9872-1002d9db3a9f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + f4ec2c36-9625-439a-b7f8-5b68c72bbdc7)(label(add_button))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 5eef209e-e9e3-46fd-a7d2-ee1d841fdfd1)(label(,))(mold((out \ + c6ad031f-3317-4fb8-a602-c00b0ffae5ce)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 14))(sort \ Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 627c15eb-037b-461e-a999-b5c720c0c27b)(content(Whitespace\" \ - \"))))(Tile((id \ - e329ba5b-ff65-4a54-bd79-11119d2456b3)(label(Var))(mold((out \ + 1f1e2bb5-c136-4fa6-8ce2-5a58b0d3483a)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 97ad7bbd-cd9d-489b-a5e6-930b9e69564a)(label(todos_deck))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - e07b3d06-1fec-4d51-9424-4863f3d93d4d)(label(\"(\"\")\"))(mold((out \ + e0d60352-47fe-47f1-be38-52976771ecb0)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - f029b961-fcc9-4f8b-899a-0e7fa1cf11d1)(label(\"\\\"yo\\\"\"))(mold((out \ + 0aa93234-f9a7-44f2-9d1c-9c3a9b0cc699)(label(todos))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort \ - Exp))))))(shards(0))(children())))))))))))))(Tile((id \ - 729a33c6-6475-485d-a8ae-d48ac1c2bf6c)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 14))(sort \ - Exp))((shape(Concave 14))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 87f21d69-952d-449f-84d7-1ee2ab05d40b)(content(Whitespace\" \ - \"))))(Tile((id \ - 075b586b-fb78-4d80-8704-b63a67e7cd3b)(label(Lam))(mold((out \ + Exp))))))(shards(0))(children()))))))))))))))))))(Secondary((id \ + 04eb081e-f418-40ba-83e2-f3febf3d1880)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 44c7eb04-51d5-46b9-a3f7-804f1970a428)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 63ab1026-cca9-4398-b367-97d4d85eb23d)(content(Whitespace\"\\226\\143\\142\")))))((Tile((id \ + 85e2a267-562e-4064-8651-b95cac72cfaf)(label(Render))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 94246c4e-444f-4b3e-bf20-fd2a13fc27ef)(label(\"(\"\")\"))(mold((out \ + 3dae7a9a-95ca-4b67-817d-29b2250cabec)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 208a8991-100f-4cef-b433-eca8159ac882)(label(\"\\\"bro\\\"\"))(mold((out \ + 61c352a1-98ef-4eab-9f41-c9d251273b3a)(label(\"\\\"todo_app\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 53653980-ea4f-40b8-9d29-d359d33fa7bf)(label(,))(mold((out \ + 72694214-64b5-4b87-bf53-c7ab15f09f97)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 14))(sort \ Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - ae6269c2-ff33-4f78-83c0-cdf02b2cdc28)(content(Whitespace\" \ + 50474ce3-0085-4a6e-82af-c9b321cfe674)(content(Whitespace\" \ \"))))(Tile((id \ - 5d26a17d-feb7-4d81-b23c-d80ae50d9dd6)(label(Var))(mold((out \ + 2913e75b-30ae-4775-b697-209fc30c9af3)(label(Model.init))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 71b62601-4be1-4205-8377-9ea8c5bd26c5)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - ed958ead-78f6-4f5a-bd6c-94d57f8393f7)(label(\"\\\"bro\\\"\"))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children())))))))))))))))))))))))(Tile((id \ - 15383e63-cf89-4209-a0bf-6c3d86d862d6)(label(,))(mold((out \ + 18ff728c-49ef-4111-892b-738ebc35edfc)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 14))(sort \ Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - fd335c92-161b-4e37-988d-acfd90066a8e)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 0a5045cb-aada-489d-ab45-dbacd4fe44ed)(label(Ok))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - aa0170f4-3445-4a3c-bfd6-9dd4bc5349ff)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - d68e6fef-70ce-4b20-b210-e41015a4027a)(label(Lam))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - cda0a2c8-1d02-4e25-ba06-7fb9900cab81)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 36f04861-35cc-4eb9-83d0-01085dcf7656)(label(\"\\\"bro\\\"\"))(mold((out \ + 96187fc9-c9e0-4e26-a8df-23ee1dd72f61)(content(Whitespace\" \ + \"))))(Tile((id \ + d0e25a9d-00fd-4b29-8824-da245d1925ea)(label(view))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - e502a97c-aa0c-4e34-a1c9-9d86454fe1c5)(label(,))(mold((out \ + b2cfbd55-eee1-47ba-905a-bf572935841d)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 14))(sort \ Exp))((shape(Concave 14))(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - 62eb476d-c91c-4c67-bd46-be123833cbdf)(content(Whitespace\" \ + 8859318b-c14c-47a1-9d35-24f65983d261)(content(Whitespace\" \ \"))))(Tile((id \ - 1ff88e88-1e7c-4117-8cfa-6431b1c60b5e)(label(Var))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 4e3e4ddd-946c-4afa-ad49-4dc4096d8f9d)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - e9180871-be73-4a92-a949-010ae5b1a3f8)(label(\"\\\"bro\\\"\"))(mold((out \ + c1f2e92f-3e73-40db-9b82-1540586e9229)(label(update))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ Convex)(sort \ - Exp))))))(shards(0))(children())))))))))))))))))))))))(Secondary((id \ - 88a4c943-608e-454a-94ad-7dcc08046493)(content(Whitespace\" \ - \"))))))))))))(ancestors())))(caret Outer))"; + Exp))))))(shards(0))(children())))))))))))(ancestors())))(caret \ + Outer))"; backup_text = - "# Lambda Calculus via evaluation by substitution #\n\n\ - # An Expression is a variable, function, or application #\n\ - type Exp =\n\ - + Var(String)\n\ - + Lam(String, Exp)\n\ - + Ap(Exp, Exp) in\n\n\ - # Syntatic Equality of Expressions #\n\ - let exp_equal: (Exp, Exp) -> Bool =\n\ - fun es ->\n\ - case es\n\ - | Var(x), Var(y) => x $== y\n\ - | Lam(x1, e1), Lam(x2, e2) =>\n\ - \ x1 $== x2 && exp_equal(e1, e2)\n\ - | Ap(e1, e2), Ap(e3, e4) =>\n\ - \ exp_equal(e1, e3) && exp_equal(e2, e4)\n\ + "type Option = None + Some(?) in\n\n\ + let fst: (?, ?) -> ? = fun a, b -> a in\n\ + let snd: (?, ?) -> ? = fun a, b -> b in\n\n\ + let not: Bool -> Bool = fun b -> !b in\n\n\ + let bool_eq: (Bool, Bool) -> Bool =\n\ + fun a, b -> a && b \\/ !a && !b in\n\n\ + let List.cons: (?, [?]) -> [?] =\n\ + fun x, xs -> x::xs in\n\n\ + let List.length: [?] -> Int =\n\ + fun xs ->\n\ + case xs\n\ + | [] => 0\n\ + | _::xs => 1 + List.length(xs) end in\n\n\ + let List.hd: [?] -> ? =\n\ + fun l -> \n\ + case l \n\ + | [] => ?\n\ + | x::xs => x end in\n\n\ + let List.tl: [?] -> [?] =\n\ + fun l ->\n\ + case l \n\ + | [] => ?\n\ + | x::xs => xs end in\n\n\ + let List.is_empty: [?] -> Bool =\n\ + fun xs ->\n\ + case xs\n\ + | [] => true\n\ + | _::_ => false end in\n\n\ + let List.nth: ([?], Int) -> ? =\n\ + fun xs, n ->\n\ + case xs, n\n\ + | x::_, 0 => x\n\ + | _::xs, n => List.nth(xs, n - 1)\n\ + | [], _ => ? end in\n\ + test\n\ + List.nth([7, 8, 9], 2)\n\ + == 9 end;\n\n\ + let List.rev: [?] -> [?] =\n\ + fun l -> \n\ + let go: ([?], [?]) -> [?] =\n\ + fun xs, acc -> \n\ + case xs \n\ + | [] => acc \n\ + | x::xs => go(xs, x::acc) end in\n\ + go(l, []) in\n\n\ + let List.init: (Int, Int -> ?) -> [?] =\n\ + fun len, f ->\n\ + let go: (Int, [?]) -> [?] =\n\ + fun idx, xs ->\n\ + if idx < len \n\ + then go(idx+ 1, xs @ [f(idx)]) \n\ + else xs in\n\ + go(0, []) in\n\n\ + let List.equal: (? -> Bool, [?], [?]) -> Bool =\n\ + fun p, xs, ys ->\n\ + case xs, ys\n\ + | [], [] => true\n\ + | x::xs, y::ys => p(x, y) && List.equal(p, xs, ys)\n\ | _ => false end in\n\n\ - # Substitute Exp v for variable name in Exp e #\n\ - let subst: (Exp, String, Exp) -> Exp=\n\ - fun v, name, e ->\n\ - case e\n\ - | Var(n) =>\n\ - \ (if n $== name then v else e)\n\ - | Lam(x, body) =>\n\ - \ Lam(x, subst(v,name, body))\n\ - | Ap(e1,e2) =>\n\ - \ Ap(subst(v, name, e1), subst(v, name, e2)) end in\n\n\ - # Evaluation can result in either an Exp or an Error #\n\ - type Result =\n\ - + Error(String)\n\ - + Ok(Exp) \n\ + let List.fold_left: ((?, ?)-> ?, ?, [?])-> ? =\n\ + fun f, acc, xs ->\n\ + case xs \n\ + | [] => acc\n\ + | hd::tl => List.fold_left(f, f(acc, hd), tl) end in\n\ + test\n\ + List.fold_left(fun x, acc -> x + acc, 666, [])\n\ + == 666 end;\n\ + test\n\ + List.fold_left(fun x, acc -> x + acc, 0, [1, 2, 3])\n\ + == 6 end;\n\n\ + let List.fold_right: ((?, ?)-> ?, [?], ?)-> ? =\n\ + fun f, xs, acc ->\n\ + case xs\n\ + | [] => acc\n\ + | hd::tl => f(hd, List.fold_right(f, tl, acc)) end in\n\n\ + let List.fold_left2: ((?, ?, ?) -> ?, ?, [?], [?]) -> [?] = \n\ + fun f, acc, xs, ys ->\n\ + case xs, ys\n\ + | [], [] => acc\n\ + | x::xs, y::ys =>\n\ + List.fold_left2(f, f(acc, x, y), xs, ys)\n\ + | _ => ? end in\n\n\ + let List.fold_right2: ((?, ?, ?) -> ?, [?], [?], ?) -> [?] =\n\ + fun f, acc, xs, ys ->\n\ + case xs, ys\n\ + | [], [] => acc\n\ + | x::xs, y::ys =>\n\ + f(x, y, List.fold_right2(f, xs, ys, acc))\n\ + | _ => ? end in\n\n\ + let List.map: (? -> ?, [?]) -> ? =\n\ + fun f, xs ->\n\ + List.fold_right(fun x, acc -> f(x)::acc, xs, []) in\n\n\ + let List.map2: ((?,?) -> ?, [?], [?]) -> [?] =\n\ + fun f, xs, ys ->\n\ + List.fold_left2(\n\ + fun x, y, acc -> f(x, y)::acc, xs, ys, []) in\n\n\ + let List.filter: (? -> Bool, [?]) -> [?] =\n\ + fun p, xs ->\n\ + case xs\n\ + | [] => []\n\ + | x::xs =>\n\ + let xs = List.filter(p, xs) in \n\ + if p(x) then x :: xs else xs end in\n\n\ + let List.append: (([?], [?]) -> [?]) =\n\ + fun xs, ys -> List.fold_right(List.cons, xs, ys) in\n\n\ + let List.concat: [[?]] -> [?] =\n\ + fun xss -> List.fold_right(List.append, xss, []) in\n\n\ + let List.flatten = List.concat in\n\n\ + let List.mapi: ((Int, ?) -> ?, [?]) -> [?] =\n\ + fun f, xs ->\n\ + let go: ? -> ? = fun idx, xs ->\n\ + case xs\n\ + | [] => []\n\ + | hd::tl => f(idx, hd)::go(idx + 1, tl) end in\n\ + go(0, xs) in\n\n\ + let List.filteri: ((Int, ?) -> Bool, [?]) -> [?] =\n\ + fun f, xs ->\n\ + List.concat(List.mapi(\n\ + fun i, x -> if f(i, x) then [x] else [], xs)) in\n\n\ + let List.exists: (? -> Bool, [?]) -> Bool =\n\ + fun p, xs -> List.exists(p, xs) in\n\n\ + let List.for_all: (? -> Bool, [?]) -> Bool =\n\ + fun p, xs -> not(List.exists(fun x -> not(p(x)), xs)) in\n\n\ + let List.mem = fun eq, xs, y ->\n\ + List.exists(fun x -> eq(x, y), xs) in\n\n\ + #TODO:#\n\ + let List.filter_map = ? in\n\ + let List.concat_map = ? in\n\ + let List.for_all2 = ? in\n\ + let List.exists2 = ? in\n\ + let List.find = ? in\n\ + let List.partition = ? in\n\ + let List.split = ? in\n\ + let List.combine = ? in\n\ + let List.merge = ? in\n\ + let List.sort: [?] -> [?] = ? in\n\n\ + #TODO: Association Lists#\n\n\ + # A todo has a description and a status #\n\ + type Todo = (String, Bool) in\n\n\ + # A description input buffer and a todo list #\n\ + type Model = (String, [Todo]) in\n\n\ + type Action =\n\ + + AddTodo\n\ + + RemoveTodo(Int)\n\ + + ToggleTodo(Int)\n\ + + UpdateBuffer(String) in\n\n\ + type Update = (Model, Action) -> Model in\n\n\ + let Todo.eq: (Todo, Todo) -> Bool =\n\ + fun (d1, s1), (d2, s2) ->\n\ + d1 $== d2 && bool_eq(s1, s2) in\n\n\ + let Model.eq: (Model, Model) -> Bool =\n\ + fun (b1, ts1), (b2, ts2) ->\n\ + b1 $== b2 && List.equal(Todo.eq, ts1, ts2) in\n\n\ + let Model.init: Model = (\"\", []) in\n\n\ + type Attr =\n\ + + OnClick(() -> Action)\n\ + + OnMouseDown(() -> Action)\n\ + + OnInput(String -> Action)\n\ + + Create(String, String) \n\ + + Style([StyleAttr]) \n\ + in \n\ + type Node = \n\ + + Div([Attr], [Node])\n\ + + Text(String)\n\ + + Button([Attr],[Node])\n\ + + Checkbox([Attr],[Node])\n\ + + ColorInput([Attr],[Node])\n\ + + DateInput([Attr],[Node])\n\ + + NumberInput([Attr],[Node])\n\ + + Radio([Attr],[Node])\n\ + + Range([Attr],[Node])\n\ + + TextInput([Attr],[Node])\n\ + + TimeInput([Attr],[Node]) \n\ in\n\n\ - let result_equal: (Result, Result) -> Bool =\n\ - fun rs ->\n\ - case rs\n\ - | Ok(e1), Ok(e2) => exp_equal(e1, e2)\n\ - | Error(e1), Error(e2) => e1 $== e2\n\ - | _ => false end in\n\n\ - # Evaluation by substitution #\n\ - let eval: Exp -> Result =\n\ - fun e ->\n\ - case e\n\ - | Var(n) => Error(\"Free Variable\")\n\ - | Lam(x, body) => Ok(Lam(x, body))\n\ - | Ap(e1,e2) =>\n\ - case eval(e1)\n\ - | Ok(Lam(x, body))=>\n\ - case eval(e2)\n\ - | Error(err) => Error(err)\n\ - | Ok(arg) => eval(subst(arg, x, body)) end\n\ - | _ => Error(\"Not a Function\") end end in\n\n\ - test result_equal(\n\ - eval(Var(\"yo\")),\n\ - Error(\"Free Variable\")) end;\n\n\ - test result_equal(\n\ - eval(Ap(Var(\"no\"), Lam(\"bro\", Var(\"bro\")))),\n\ - Error(\"Not a Function\")) end;\n\n\ - test result_equal(\n\ - eval(Lam(\"yo\", Var(\"yo\"))),\n\ - Ok(Lam(\"yo\", Var(\"yo\")))) end;\n\n\ - test result_equal(\n\ - eval(Ap(Lam(\"yo\", Var(\"yo\")), Lam(\"bro\", Var(\"bro\")))),\n\ - Ok(Lam(\"bro\", Var(\"bro\")))) end"; - } ); - ( "Introduction", - { - zipper = - "((selection((focus Left)(content())(mode \ - Normal)))(backpack())(relatives((siblings(((Secondary((id \ - a74105fa-7e1d-4ebf-a5d2-2ca7738db2e9)(content(Comment\"# \ - Welcome to Hazel! #\"))))(Secondary((id \ - ae96e703-aa27-4c8b-8d2d-5655f82573fd)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 534ab578-af26-4590-91ad-b41d9fe1aa32)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - dd18c1c2-7b79-45df-93c9-3d0df3cffd7e)(content(Comment\"# To \ - get started, type 2 * 3 + 4 into the hole below, \ - #\"))))(Secondary((id \ - 8ec6cc02-b3dd-479a-982d-c59ff48b3bfc)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - c4cd2a21-e300-4ba9-896f-161b07843130)(content(Comment\"# \ - stopping between each character to observe how holes \ - #\"))))(Secondary((id \ - 8c341fbd-314c-4791-970e-a0ff79477ed0)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 6b66713a-1650-4509-a5ec-a34557616ebf)(content(Comment\"# \ - appear at each step to ensure that every editor state \ - #\"))))(Secondary((id \ - b0d0bfa2-a8a3-4853-b414-b9d56c718475)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 1da69959-d7cd-4d92-9218-c7c0b68a29d1)(content(Comment\"# is \ - meaningful. #\"))))(Secondary((id \ - 76c8fcbe-f994-4976-a957-da42136a4a21)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - c297f7fa-8b11-41a7-90ec-e663b13ca871)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ - 3f8aa464-6195-4d59-88fe-f3b1b7bf99af)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - dca6a71f-4a1d-4334-8495-c442b0d449fd)(content(Whitespace\" \ - \"))))(Tile((id \ - 54392010-bf2b-44c5-bf64-1ffffcb89f70)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 5))(sort \ - Exp))((shape(Concave 5))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 5558a956-147b-4e71-a6c4-761d8360d0e3)(content(Whitespace\" \ - \")))))((Grout((id \ - a06c6ec9-b6f5-44d6-97ec-d64bc07168a6)(shape \ - Convex)))(Secondary((id \ - b8d9a0fe-1172-455e-a083-9bd2bebe6672)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 3ca611b4-d0f7-4e36-87ae-03d286519182)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - eb90bd50-c85e-461f-b4f1-f9304222ef74)(content(Comment\"# Once \ - you are finished, navigate the menu in the top bar \ - #\"))))(Secondary((id \ - 944c2529-9a86-464e-979c-fb89639104d5)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 7138238a-1897-4c40-9361-79abf418d970)(content(Comment\"# to \ - see other examples, enter Scratch mode to play with \ - #\"))))(Secondary((id \ - 5d74dc8f-e13e-4397-af3a-866aab823c4a)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 6cf73953-4728-49d3-9c05-eae696375f9a)(content(Comment\"# \ - Hazel, or enter Exercises mode to do some introductory \ - #\"))))(Secondary((id \ - 7adbd1c5-9171-4733-b458-79f2bcea219b)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 81776275-d07b-4334-a190-e30a2ce678a0)(content(Comment\"# \ - exercises. Hazel is a work-in-progress research project, \ - #\"))))(Secondary((id \ - b3ee4319-e4fb-42a5-bb32-956a8d4380df)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 979279e3-4545-4edf-ad55-bd89cf19d111)(content(Comment\"# so \ - there is not much public educational material yet. \ - #\"))))(Secondary((id \ - ea95ea96-c730-4327-8ea4-dd19de042f10)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - bf896e4a-cbbd-42ba-ba75-093716915b1a)(content(Comment\"# \ - Check out the research papers at hazel.org for more on \ - #\"))))(Secondary((id \ - 73066a1f-6ab9-4195-bd6e-fa3a78ecbe48)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ - 40bc0153-30e3-4f98-bfe1-834d6adec36d)(content(Comment\"# how \ - Hazel works. #\")))))))(ancestors())))(caret Outer))"; - backup_text = - "# Welcome to Hazel! #\n\n\ - # To get started, type 2 * 3 + 4 into the hole below, #\n\ - # stopping between each character to observe how holes #\n\ - # appear at each step to ensure that every editor state #\n\ - # is meaningful. #\n\n\ - 2 + \n\n\ - # Once you are finished, navigate the menu in the top bar #\n\ - # to see other examples, enter Scratch mode to play with #\n\ - # Hazel, or enter Exercises mode to do some introductory #\n\ - # exercises. Hazel is a work-in-progress research project, #\n\ - # so there is not much public educational material yet. #\n\ - # Check out the research papers at hazel.org for more on #\n\ - # how Hazel works. #"; + type View = Model -> Node in\n\n\ + type Render =\n\ + + Render(String, Model, View, Update) in\n\n\ + let update: (Model, Action) -> Model =\n\ + let add: Model -> [Todo] =\n\ + fun (description, todos) ->\n\ + if description $== \"\" \n\ + then todos \n\ + else (description, false) :: todos in\n\ + let remove: (Int, [Todo]) -> [Todo]=\n\ + fun (index, todos) ->\n\ + List.filteri(fun i, _ -> i!= index, todos) in\n\ + let toggle: (Int, [Todo]) -> [Todo]=\n\ + fun (index, todos) ->\n\ + List.mapi(\n\ + fun i, (description, done) ->\n\ + (description, if i == index then !done else done),\n\ + todos) in\n\ + fun ((input: String, todos: [Todo]), action) ->\n\ + case action\n\ + | AddTodo => (\"\", add(input, todos))\n\ + | ToggleTodo(idx) => (input, toggle(idx, todos))\n\ + | RemoveTodo(idx) => (input, remove(idx, todos))\n\ + | UpdateBuffer(description) => (description, todos) \n\ + end in\n\n\ + # update tests #\n\n\ + let eq = Model.eq in\n\ + let num_todos = fun m:Model -> List.length(snd(m)) in\n\n\ + test # Add adds #\n\ + num_todos(update((\"Breath\", []), AddTodo))\n\ + > num_todos((\"Breath\", [])) end;\n\n\ + test # Add uses name, initial status set #\n\ + eq(\n\ + update((\"Breath\", []), AddTodo),\n\ + (\"\", [(\"Breath\", false)])) end;\n\n\ + test # Add nonempty (too impl spec? test add + remove eqs)#\n\ + eq(\n\ + update((\"Chop wood\", [(\"Carry water\", false)]), AddTodo),\n\ + (\"\", [(\"Chop wood\", false), (\"Carry water\", false)])) \ + end;\n\n\ + test # add then remove doesn't change todos #\n\ + let todos = [(\"Breath\", false)] in\n\ + eq(\n\ + update(update((\"Remove this\", todos), AddTodo), \ + RemoveTodo(0)),\n\ + (\"\", todos)) end;\n\n\ + test # Toggle preserves length #\n\ + let model = (\"\", [(\"1\", false), (\"2\", false)]) in\n\ + num_todos(update(model, ToggleTodo(1)))\n\ + == num_todos(model) end;\n\n\ + test # Toggle toggles right index #\n\ + eq(\n\ + update((\"\", [(\"Chop\", false), (\"Carry\", true)]), \ + ToggleTodo(1)),\n\ + (\"\", [(\"Chop\", false), (\"Carry\", false)])) end;\n\n\ + test # Toggle out of bounds #\n\ + let model = (\"\", [(\"Chop\", false), (\"Carry\", false)]) in\n\ + eq(\n\ + update(model, ToggleTodo(2)),\n\ + model) end;\n\n\ + test # Remove removes #\n\ + let model = (\"\", [(\"1\", false)]) in\n\ + num_todos(update(model, RemoveTodo(0)))\n\ + < num_todos(model) end;\n\n\ + test # Remove removes right index #\n\ + eq(\n\ + update((\"\", [(\"1\", false), (\"2\", false)]), \ + RemoveTodo(1)),\n\ + (\"\", [(\"1\", false)])) end;\n\n\ + test # Remove out of bounds #\n\ + let model = (\"\", [(\"1\", false)]) in\n\ + eq(\n\ + update(model, RemoveTodo(2)),\n\ + model) end;\n\n\ + test # Update Input #\n\ + eq(\n\ + update((\"\", []), UpdateBuffer(\"Breath\")),\n\ + (\"Breath\", [])) end;\n\n\ + test # Don't add blank description #\n\ + let model = (\"\", [(\"1\", false)]) in\n\ + eq(\n\ + update(model, AddTodo),\n\ + model) end; \n\n\ + let todo_card : (Int, Todo) -> Node =\n\ + fun (idx, (descr: String, status: Bool)) ->\n\ + Div([\n\ + Style([\n\ + Display(\"flex\"),\n\ + Gap(\"1em\")]),\n\ + OnClick(fun () -> ToggleTodo(idx))],\n\ + [\n\ + Checkbox([OnClick(fun () -> RemoveTodo(idx))], []),\n\ + Div([], [Text(descr)]),\n\ + Text(if status then \"Completed\" else \"Pending\")\n\ + ]) in\n\n\ + let todos_deck = fun todos: [Todo] ->\n\ + if (List.is_empty(todos)) \n\ + then Text(\"You're caught up\") \n\ + else Div(\n\ + [Create(\"class\", \"todos\")],\n\ + [Text(\"todos:\")] @ List.mapi(todo_card, todos)) in\n\n\ + let add_button: Node = Div([\n\ + Style([\n\ + Display(\"flex\"),\n\ + JustifyContent(\"center\"),\n\ + BackgroundColor(\"#986\"),\n\ + BorderRadius(\"0.3em\"),\n\ + Cursor(\"pointer\")]),\n\ + OnClick(fun () -> AddTodo)],\n\ + [Text(\"Add Todo\")]) in\n\n\ + let buffer: Node = Div(\n\ + [],\n\ + [TextInput([OnInput(UpdateBuffer)], [])]) in\n\n\ + let view: Model -> Node =\n\ + fun input: String, todos: [Todo] ->\n\ + Div(\n\ + [Style([\n\ + BackgroundColor(\"#543\"),\n\ + BorderRadius(\"0.3em\"),\n\ + Color(\"white\"),\n\ + Display(\"flex\"),\n\ + FlexDirection(\"column\"),\n\ + Width(\"9.2em\"),\n\ + Gap(\"0.5em\"),\n\ + Padding(\"0.3em\")])],\n\ + [\n\ + Text(\"Hazel Todos\"),\n\ + buffer,\n\ + add_button,\n\ + todos_deck(todos)]) in\n\n\ + Render(\"todo_app\", Model.init, view, update)"; } ); ] ); } diff --git a/src/haz3lweb/Keyboard.re b/src/haz3lweb/Keyboard.re index 3768cc6277..c228f72399 100644 --- a/src/haz3lweb/Keyboard.re +++ b/src/haz3lweb/Keyboard.re @@ -7,6 +7,7 @@ let is_f_key = s => Re.Str.(string_match(regexp("^F[0-9][0-9]*$"), s, 0)); let handle_key_event = (k: Key.t, ~model: Model.t): option(Update.t) => { let settings = model.settings; let zipper = Editors.active_zipper(model.editors); + let restricted = Backpack.restricted(zipper.backpack); let now = (a: Action.t): option(UpdateAction.t) => Some(PerformAction(a)); let print = str => str |> print_endline |> (_ => None); @@ -21,6 +22,9 @@ let handle_key_event = (k: Key.t, ~model: Model.t): option(Update.t) => { } | {key: D(key), sys: _, shift: Down, meta: Up, ctrl: Up, alt: Up} when is_f_key(key) => + //TODO(andrew): clarify when we drop and show buffer + let get_term = z => z |> MakeTerm.from_zip_for_view |> fst; + switch (key) { | "F1" => zipper |> Zipper.show |> print | "F2" => zipper |> Zipper.unselect_and_zip |> Segment.show |> print @@ -33,12 +37,12 @@ let handle_key_event = (k: Key.t, ~model: Model.t): option(Update.t) => { | "F4" => let ctx_init = Editors.get_ctx_init(~settings, model.editors); zipper - |> MakeTerm.from_zip_for_view - |> fst + |> get_term |> Interface.Statics.mk_map_ctx(settings.core, ctx_init) |> Statics.Map.show |> print; | "F5" => + //TODO(andrew): simplify below let ctx_init = Editors.get_ctx_init(~settings, model.editors); let env_init = Editors.get_env_init(~settings, model.editors); Interface.eval_z(~settings=settings.core, ~env_init, ~ctx_init, zipper) @@ -49,8 +53,7 @@ let handle_key_event = (k: Key.t, ~model: Model.t): option(Update.t) => { let ctx_init = Editors.get_ctx_init(~settings, model.editors); let map = zipper - |> MakeTerm.from_zip_for_view - |> fst + |> get_term |> Interface.Statics.mk_map_ctx(settings.core, ctx_init); switch (index) { | Some(index) => @@ -61,8 +64,15 @@ let handle_key_event = (k: Key.t, ~model: Model.t): option(Update.t) => { | _ => print("DEBUG: No indicated index") }; | "F7" => Some(Benchmark(Start)) + | "F8" => Some(SetMeta(Auto(StartTest()))) + | "F9" => Some(SetMeta(Auto(StartRun()))) + | "F10" => + print_endline( + "DEBUG: F10: Zipper with dump_backpack=true, erase_buffer=false", + ); + zipper |> Zipper.seg_for_sem |> Segment.show |> print; | _ => None - } + }; | {key: D(key), sys: _, shift, meta: Up, ctrl: Up, alt: Up} => switch (shift, key) { | (Up, "ArrowLeft") => now(Move(Local(Left(ByChar)))) @@ -131,6 +141,7 @@ let handle_key_event = (k: Key.t, ~model: Model.t): option(Update.t) => { | "p" => Some(PerformAction(Pick_up)) | "a" => now(Select(All)) | "k" => Some(ReparseCurrentEditor) + | "e" => Some(Execute) | "/" => Some(Assistant(Prompt(TyDi))) | _ when is_digit(key) => Some(SwitchScratchSlide(int_of_string(key))) | "ArrowLeft" => now(Move(Extreme(Left(ByToken)))) @@ -146,6 +157,7 @@ let handle_key_event = (k: Key.t, ~model: Model.t): option(Update.t) => { | "p" => Some(PerformAction(Pick_up)) | "a" => now(Select(All)) | "k" => Some(ReparseCurrentEditor) + | "e" => Some(Execute) | "/" => Some(Assistant(Prompt(TyDi))) | _ when is_digit(key) => Some(SwitchScratchSlide(int_of_string(key))) | "ArrowLeft" => now(Move(Local(Left(ByToken)))) @@ -161,7 +173,6 @@ let handle_key_event = (k: Key.t, ~model: Model.t): option(Update.t) => { | _ => None } | {key: D(key), sys, shift: Up, meta: Up, ctrl: Up, alt: Down} => - let restricted = Backpack.restricted(zipper.backpack); switch (sys, key) { | (_, "ArrowLeft") when restricted => now(MoveToBackpackTarget(Left(ByToken))) @@ -173,7 +184,7 @@ let handle_key_event = (k: Key.t, ~model: Model.t): option(Update.t) => { | (_, "ArrowUp") => now(MoveToBackpackTarget(Up)) | (_, "ArrowDown") => now(MoveToBackpackTarget(Down)) | _ => None - }; + } | _ => None }; }; diff --git a/src/haz3lweb/Log.re b/src/haz3lweb/Log.re index 84267061d4..395e2a7c41 100644 --- a/src/haz3lweb/Log.re +++ b/src/haz3lweb/Log.re @@ -16,7 +16,9 @@ let is_action_logged: UpdateAction.t => bool = | InitImportScratchpad(_) | DebugAction(_) | ExportPersistentData => false + | StoreKey(_) | Reset + | Execute | ResetCurrentEditor | Benchmark(_) => false | ReparseCurrentEditor diff --git a/src/haz3lweb/Main.re b/src/haz3lweb/Main.re index bd121490bc..b959c7f6a1 100644 --- a/src/haz3lweb/Main.re +++ b/src/haz3lweb/Main.re @@ -51,10 +51,7 @@ let apply = (model, action, state, ~schedule_action): Model.t => { new_model; }) { | exc => - Printf.printf( - "ERROR: Exception during apply: %s\n", - Printexc.to_string(exc), - ); + print_endline("ERROR: Exception during apply:"); Error(Exception(Printexc.to_string(exc))); } ) { @@ -131,6 +128,13 @@ module App = { ) >= 0; + switch (JsUtil.Fragment.get_current()) { + | Some("auto") => + print_endline("AUTO: Starting script"); + schedule_action(SetMeta(Auto(StartRun()))); + | _ => () + }; + Async_kernel.Deferred.return(state); }; diff --git a/src/haz3lweb/Model.re b/src/haz3lweb/Model.re index 1858fcb53e..57d80981c1 100644 --- a/src/haz3lweb/Model.re +++ b/src/haz3lweb/Model.re @@ -37,9 +37,16 @@ let ui_state_init = { type meta = { ui_state, results: ModelResults.t, + auto: UpdateAction.auto_llm, + mvu_states: VarMap.t_(DHExp.t), }; -let meta_init = {ui_state: ui_state_init, results: ModelResults.empty}; +let meta_init = { + ui_state: ui_state_init, + results: ModelResults.empty, + mvu_states: VarMap.empty, + auto: Auto.init, +}; type t = { editors: Editors.t, diff --git a/src/haz3lweb/ProgramEvaluator.re b/src/haz3lweb/ProgramEvaluator.re index b23300f39b..15fc53a129 100644 --- a/src/haz3lweb/ProgramEvaluator.re +++ b/src/haz3lweb/ProgramEvaluator.re @@ -38,9 +38,10 @@ module Sync: M with type response = response = { let init = () => (); let get_response = ((): t, (key, d): request) => { + /* NOTE(andrew): I'm not sure how to properly route settings + through the abstractions here; this should be done if this is renabled + */ let lwt = { - /* NOTE(andrew): I'm not sure how to properly route settings - through the abstractions here; this should be done if this is renabled */ let+ r = Lwt.wrap(() => d |> Interface.evaluate(~settings=CoreSettings.on)); let res = diff --git a/src/haz3lweb/Scripter.re b/src/haz3lweb/Scripter.re new file mode 100644 index 0000000000..bef93f0284 --- /dev/null +++ b/src/haz3lweb/Scripter.re @@ -0,0 +1,69 @@ +open Haz3lcore; +open Sexplib.Std; + +[@deriving (show({with_path: false}), sexp, yojson)] +type test = { + name: string, + sketch: string, + options: FillerOptions.t, +}; + +let sketch_one = {|let update: (Model, Action) -> Model = + FILL_ME +in +EXPORT|}; + +let opt = (~expected_type): FillerOptions.t => { + llm: Azure_GPT4, + instructions: true, + syntax_notes: true, + num_examples: 9, + expected_type, + error_round: true, +}; + +let tests_raw: list(test) = [ + {name: "1", sketch: sketch_one, options: opt(~expected_type=true)}, + {name: "2", sketch: sketch_one, options: opt(~expected_type=true)}, + {name: "3", sketch: sketch_one, options: opt(~expected_type=true)}, + {name: "4", sketch: sketch_one, options: opt(~expected_type=true)}, + {name: "5", sketch: sketch_one, options: opt(~expected_type=false)}, + {name: "6", sketch: sketch_one, options: opt(~expected_type=false)}, + {name: "7", sketch: sketch_one, options: opt(~expected_type=false)}, + {name: "8", sketch: sketch_one, options: opt(~expected_type=false)}, +]; + +[@deriving (show({with_path: false}), sexp, yojson)] +type single_run = (FillerOptions.t, list(UpdateAction.t)); + +let mk_script = (~options, ~sketch: string): single_run => { + let sketch_slide = 4; + ( + options, + [ + Reset, + SwitchScratchSlide(sketch_slide), + PerformAction(Move(Extreme(Up))), + PerformAction(Select(Resize(Extreme(Down)))), + Paste(sketch), + PerformAction(Move(Goal(Piece(FillMarker, Left)))), + PerformAction(Select(Term(Current))), + Paste(Form.expliciter_hole), + PerformAction(Select(Term(Current))), + Assistant(Prompt(Filler(options))), + ], + ); +}; + +let test_scripts: list((string, single_run)) = + List.map( + ({name, sketch, options}) => (name, mk_script(~sketch, ~options)), + tests_raw, + ); + +/* + TODO(andrew): + - log if we send errors back + - backup to localstore + + */ diff --git a/src/haz3lweb/Update.re b/src/haz3lweb/Update.re index c73b540834..299b626059 100644 --- a/src/haz3lweb/Update.re +++ b/src/haz3lweb/Update.re @@ -110,6 +110,8 @@ let reevaluate_post_update = (settings: Settings.t) => | ShowBackpackTargets(_) | FontMetrics(_) | Result(_) => false + | MVU(_) + | Auto(_) => true } | PerformAction( Move(_) | MoveToNextHole(_) | Select(_) | Unselect(_) | RotateBackpack | @@ -122,7 +124,8 @@ let reevaluate_post_update = (settings: Settings.t) => | InitImportAll(_) | InitImportScratchpad(_) | UpdateLangDocMessages(_) - | DebugAction(_) => false + | DebugAction(_) + | StoreKey(_) => false | ExportPersistentData => false | Benchmark(_) // may not be necessary on all of these @@ -138,6 +141,7 @@ let reevaluate_post_update = (settings: Settings.t) => | Cut | Paste(_) | Assistant(_) + | Execute | Undo | Redo | Reset => true; @@ -262,7 +266,7 @@ let rec apply = | Set(s_action) => let model = update_settings(s_action, model); Model.save(model); - // NOTE: Load here necessary to load editors on switching mode + // TODO(andrew): hacky; loading here to load editors if switch Ok(Model.load(model)); | SetMeta(action) => Ok({...model, meta: meta_update(model, action, ~schedule_action)}) @@ -273,6 +277,20 @@ let rec apply = | DebugAction(a) => DebugAction.perform(a); Ok(model); + | StoreKey(k, v) => + Store.Generic.save(k, v); + Ok(model); + | Execute => + let editor = model.editors |> Editors.get_editor; + let str = Printer.to_string_selection(editor); + print_endline("Execute: Parsing action: " ++ str); + let update: UpdateAction.t = + try(str |> Sexplib.Sexp.of_string |> t_of_sexp) { + | _ => + print_endline("Execute: Action not recognized"); + Save; + }; + apply(model, update, state, ~schedule_action); | Save => Model.save_and_return(model) | InitImportAll(file) => JsUtil.read_file(file, data => schedule_action(FinishImportAll(data))); @@ -316,10 +334,17 @@ let rec apply = | None => Error(FailedToSwitch) | Some(editors) => Model.save_and_return({...model, editors}) }; + | PerformAction(Insert("?") as a) => + let editor = model.editors |> Editors.get_editor; + /*let ctx_init = + Editors.get_ctx_init(~settings=model.settings, model.editors);*/ + UpdateAssistant.schedule_prompt(editor.state.zipper, ~schedule_action); + perform_action(model, a); | PerformAction(a) when model.settings.core.statics => let model = UpdateAssistant.reset_buffer(model); switch (perform_action(model, a)) { | Ok(model) when Action.is_edit(a) => + //TODO(andrew): cleanup, document UpdateAssistant.apply( model, Prompt(TyDi), @@ -398,7 +423,7 @@ let rec apply = ? m |> Result.map(~f=evaluate_and_schedule(state, ~schedule_action)) : m; } and meta_update = - (model: Model.t, update: set_meta, ~schedule_action as _): Model.meta => { + (model: Model.t, update: set_meta, ~schedule_action): Model.meta => { switch (update) { | Mousedown => { ...model.meta, @@ -428,6 +453,10 @@ and meta_update = font_metrics, }, } + | MVU(name, dh) => { + ...model.meta, + mvu_states: VarMap.extend(model.meta.mvu_states, (name, dh)), + } | Result(key, res) => /* If error, print a message. */ switch (res) { @@ -447,5 +476,6 @@ and meta_update = |> ModelResult.update_current(res); let results = model.meta.results |> ModelResults.add(key, r); {...model.meta, results}; + | Auto(action) => UpdateAuto.go(model, action, ~schedule_action) }; }; diff --git a/src/haz3lweb/UpdateAction.re b/src/haz3lweb/UpdateAction.re index 331307fd42..be99f9db35 100644 --- a/src/haz3lweb/UpdateAction.re +++ b/src/haz3lweb/UpdateAction.re @@ -16,11 +16,15 @@ type settings_action = [@deriving (show({with_path: false}), sexp, yojson)] type agent = - | TyDi; + | TyDi + | Weather + | Oracle + | Filler(FillerOptions.t); [@deriving (show({with_path: false}), sexp, yojson)] type agent_action = | Prompt(agent) + | SetBuffer(string) | AcceptSuggestion; [@deriving (show({with_path: false}), sexp, yojson)] @@ -29,7 +33,9 @@ type set_meta = | Mouseup | ShowBackpackTargets(bool) | FontMetrics(FontMetrics.t) - | Result(ModelResults.Key.t, ModelResult.current); + | MVU(string, DHExp.t) + | Result(ModelResults.Key.t, ModelResult.current) + | Auto(Auto.action(Auto.llm_report)); [@deriving (show({with_path: false}), sexp, yojson)] type benchmark_action = @@ -44,6 +50,8 @@ type t = | SetMeta(set_meta) | UpdateLangDocMessages(LangDocMessages.update) | DebugAction(DebugAction.t) + | StoreKey(string, string) + | Execute /* Attempt to parse selection as sexp UpdateAction */ | ExportPersistentData /* editors */ | ResetCurrentEditor @@ -68,6 +76,9 @@ type t = | Benchmark(benchmark_action) | Assistant(agent_action); +[@deriving (show({with_path: false}), sexp, yojson)] +type auto_llm = Auto.t(t, Auto.llm_report); + module Failure = { [@deriving (show({with_path: false}), sexp, yojson)] type t = diff --git a/src/haz3lweb/UpdateAuto.re b/src/haz3lweb/UpdateAuto.re new file mode 100644 index 0000000000..992993f368 --- /dev/null +++ b/src/haz3lweb/UpdateAuto.re @@ -0,0 +1,163 @@ +open Haz3lcore; + +let get_test_results = + (model: Model.t, ~test_slide: int): option(Auto.test_results) => + switch (model.editors) { + | Scratch(_idx, slides) => + let settings = model.settings; + let editors = Editors.Scratch(test_slide, slides); + let ctx_init = Editors.get_ctx_init(~settings, editors); + let env_init = Editors.get_env_init(~settings, editors); + let editor = Editors.get_editor(editors); + try( + Interface.eval_z( + ~settings=settings.core, + ~env_init, + ~ctx_init, + editor.state.zipper, + ) + |> ProgramResult.get_state + |> EvaluatorState.get_tests + |> List.map(((_id, instance_report)) => + switch (instance_report) { + | [] => TestStatus.Indet + | [(_, status, _), ..._] => status + } + ) + |> Option.some + ) { + | _ => + print_endline( + "AUTO: ERROR: get_test_results: exception during evaluation", + ); + None; + }; + | _ => None + }; + +let go = + ( + {meta, _} as model: Model.t, + action: Auto.action(Auto.llm_report), + ~schedule_action: UpdateAction.t => unit, + ) => { + switch (action) { + | StartRun () => + print_endline("AUTO: StartRun"); + switch (meta.auto) { + | {current_script: Some(_), _} + | {to_run: [_, ..._], _} => + print_endline("AUTO: StartRun: Error: run already in progress"); + meta; + | _ => + schedule_action(SetMeta(Auto(StartTest()))); //TODO: which test? + //let ctx_init = Editors.get_ctx_init(~settings, model.editors); + let auto: UpdateAction.auto_llm = { + current_script: None, + to_run: Scripter.test_scripts, + reports: VarMap.empty, + }; + print_endline( + "AUTO: StartRun: Number of scripts to run: " + ++ (auto.to_run |> List.length |> string_of_int), + ); + {...meta, auto}; + }; + | StartTest () => + switch (meta.auto) { + | {current_script: Some(_), _} => + print_endline( + "AUTO: StartTest: Error: previous test still in progress", + ); + meta; + | {to_run: [], reports, _} => + print_endline("AUTO: StartTest: Finished all tests. Results:"); + //print_endline(Auto.show_reports(Auto.pp_llm_report, reports)); + let statuses = + reports |> VarMap.map(((_name, guy)) => Auto.final_report(guy)); + let json_report = Auto.yojson_of_final_statuses(statuses); + JsUtil.download_json("hazel-llm-auto-results", json_report); + meta; + | {to_run: [(name, (options, actions)), ...to_run], reports, _} => + print_endline("AUTO: StartTest: Starting script: " ++ name); + List.iter(schedule_action, actions); + let auto: UpdateAction.auto_llm = { + current_script: Some(name), + to_run, + reports, + }; + schedule_action(SetMeta(Auto(UpdateResult(name, Init(options))))); + {...meta, auto}; + } + | EndTest () => + switch (meta.auto.current_script) { + | None => + print_endline("AUTO: EndTest: Error: no test in progress"); + meta; + | Some(name) => + print_endline("AUTO: EndTest: Ending script: " ++ name); + //TODO(andrew): abstract this script into cleanup function + schedule_action(Assistant(AcceptSuggestion)); + schedule_action(SetMeta(Auto(LogTest()))); + meta; + } + | UpdateResult(name, updater) => + let updater = + switch (updater) { + | Init(options) => Auto.init_llm_report(options) + | Complete(tests) => Auto.complete_llm_reports(tests) + | AddRoundOne(settings, init_ctx, mode, reply) => + Auto.add_first_round_results( + Filler.mk_round_report(~settings, ~init_ctx, ~mode, reply), + ) + | AddRoundTwo(settings, init_ctx, mode, reply) => + Auto.add_second_round_results( + Filler.mk_round_report(~settings, ~init_ctx, ~mode, reply), + ) + }; + let reports = + switch (VarMap.lookup(meta.auto.reports, name)) { + | None => + print_endline( + "AUTO: UpdateResult: Creating new report entry for: " ++ name, + ); + VarMap.extend( + meta.auto.reports, + (name, updater(Auto.blank_llm_report)), + ); + | Some(_) => + print_endline( + "AUTO: UpdateResult: Updating existing report entry for: " ++ name, + ); + VarMap.update(meta.auto.reports, name, updater); + }; + { + ...meta, + auto: { + ...meta.auto, + reports, + }, + }; + | LogTest () => + switch (meta.auto) { + | {current_script: Some(name), to_run, reports, _} => + print_endline("AUTO: LogTest: Logging script: " ++ name); + let test_slide = 6; //TODO(andrew): put somewhere better + let tests = get_test_results(model, ~test_slide); + //TODO(andrew): use Printer.selection at an opportune time to get just the completion? or could diff it out + schedule_action(SetMeta(Auto(UpdateResult(name, Complete(tests))))); + schedule_action(SetMeta(Auto(StartTest()))); + { + ...meta, + auto: { + current_script: None, + to_run, + reports, + }, + }; + | {current_script: None, _} => + print_endline("AUTO: LogTest: Error: no test in progress"); + meta; + } + }; +}; diff --git a/src/haz3lweb/util/API/API.re b/src/haz3lweb/util/API/API.re new file mode 100644 index 0000000000..2555afd35e --- /dev/null +++ b/src/haz3lweb/util/API/API.re @@ -0,0 +1,98 @@ +open Js_of_ocaml; +open Util.OptUtil.Syntax; + +let opt = Util.OptUtil.and_then; + +type request = Js.t(XmlHttpRequest.xmlHttpRequest); + +type method = + | GET + | POST + | PUT + | DELETE; + +let string_of_method = + fun + | GET => "GET" + | POST => "POST" + | PUT => "PUT" + | DELETE => "DELETE"; + +module Json = { + type t = Yojson.Safe.t; + let to_string = Yojson.Safe.to_string; + let from_string = Yojson.Safe.from_string; + let bool = (json: t): option(bool) => + switch (json) { + | `Bool(b) => Some(b) + | _ => None + }; + let int = (json: t): option(int) => + switch (json) { + | `Int(n) => Some(n) + | _ => None + }; + let float = (json: t): option(float) => + switch (json) { + | `Float(f) => Some(f) + | _ => None + }; + let str = (json: t): option(string) => + switch (json) { + | `String(str) => Some(str) + | _ => None + }; + let list = (json: t): option(list(t)) => + switch (json) { + | `List(xs) => Some(xs) + | _ => None + }; + let get_kvs = (json: t): option(list((string, t))) => + switch (json) { + | `Assoc(pairs) => Some(pairs) + | _ => None + }; + let dot = (key: string, json: t): option(t) => { + let* pairs = get_kvs(json); + List.assoc_opt(key, pairs); + }; +}; + +let request = + ( + ~debug=false, + ~with_credentials=false, + ~method: method, + ~url: string, + ~headers: list((string, string))=[], + ~body: Json.t=`Null, + handler: request => unit, + ) + : unit => { + debug ? Yojson.Safe.pp(Format.std_formatter, body) : (); + let request = XmlHttpRequest.create(); + request##.onreadystatechange := Js.wrap_callback(_ => handler(request)); + request##.withCredentials := with_credentials |> Js.bool; + request##_open( + method |> string_of_method |> Js.string, + url |> Js.string, + true |> Js.bool, + ); + for (i in 0 to List.length(headers) - 1) { + let (key, value) = List.nth(headers, i); + request##setRequestHeader(Js.string(key), Js.string(value)); + }; + request##send(body |> Json.to_string |> Js.string |> Js.Opt.return); +}; + +let receive = (~debug=true, request: request): option(Json.t) => + switch (request##.readyState) { + | XmlHttpRequest.DONE => + debug ? Firebug.console##log(request##.responseText) : (); + Js.Opt.case( + request##.responseText, + () => None, + x => Some(x |> Js.to_string |> Json.from_string), + ); + | _ => None + }; diff --git a/src/haz3lweb/util/API/OpenAI.re b/src/haz3lweb/util/API/OpenAI.re new file mode 100644 index 0000000000..b1c445faf4 --- /dev/null +++ b/src/haz3lweb/util/API/OpenAI.re @@ -0,0 +1,217 @@ +open API; +open Util.OptUtil.Syntax; +open Sexplib.Std; + +[@deriving (show({with_path: false}), sexp, yojson)] +type chat_models = + | GPT4 + | GPT3_5Turbo + | Azure_GPT4 + | Azure_GPT3_5Turbo; + +[@deriving (show({with_path: false}), sexp, yojson)] +type role = + | System + | User + | Assistant + | Function; + +[@deriving (show({with_path: false}), sexp, yojson)] +type message = { + role, + content: string, +}; + +[@deriving (show({with_path: false}), sexp, yojson)] +type prompt = list(message); + +[@deriving (show({with_path: false}), sexp, yojson)] +type usage = { + prompt_tokens: int, + completion_tokens: int, + total_tokens: int, +}; + +[@deriving (show({with_path: false}), sexp, yojson)] +type reply = { + content: string, + usage, +}; + +[@deriving (show({with_path: false}), sexp, yojson)] +let string_of_chat_model = + fun + | GPT4 => "gpt-4" + | GPT3_5Turbo => "gpt-3.5-turbo" + | Azure_GPT4 => "azure-gpt-4" + | Azure_GPT3_5Turbo => "azure-gpt-3.5-turbo"; + +let string_of_role = + fun + | System => "system" + | User => "user" + | Assistant => "assistant" + | Function => "function"; + +let mk_message = ({role, content}) => + `Assoc([ + ("role", `String(string_of_role(role))), + ("content", `String(content)), + ]); + +let body = (~llm, messages: prompt): Json.t => { + `Assoc([ + ("model", `String(string_of_chat_model(llm))), + ("messages", `List(List.map(mk_message, messages))), + ]); +}; + +/* SAMPLE OPENAI CHAT RESPONSE: + { + "id":"chatcmpl-6y5167eYM6ovo5yVThXzr5CB8oVIO", + "object":"chat.completion", + "created":1679776984, + "model":"gpt-3.5-turbo-0301", + "usage":{ + "prompt_tokens":25, + "completion_tokens":1, + "total_tokens":26 + }, + "choices":[ + { + "message":{ + "role":"assistant", + "content":"576" + }, + "finish_reason":"stop", + "index":0 + } + ] + }*/ + +let chat = (~body, ~handler): unit => + switch (Store.Generic.load("OpenAI")) { + | None => print_endline("API: OpenAI KEY NOT FOUND") + | Some(api_key) => + print_endline("API: POSTing OpenAI request"); + request( + ~method=POST, + ~url="https://api.openai.com/v1/chat/completions", + ~headers=[ + ("Content-Type", "application/json"), + ("Authorization", "Bearer " ++ api_key), + ], + ~body, + handler, + ); + }; + +module Azure = { + let chat = + (~key, ~resource, ~deployment, ~api_version, ~body, ~handler): unit => + switch (Store.Generic.load(key)) { + | None => print_endline("API: KEY '" ++ key ++ "' NOT FOUND") + | Some(api_key) => + print_endline("API: POSTing Azure request"); + request( + ~method=POST, + ~url= + Printf.sprintf( + "https://%s.openai.azure.com/openai/deployments/%s/chat/completions?api-version=%s", + resource, + deployment, + api_version, + ), + ~headers=[ + ("Content-Type", "application/json"), + ("api-key", api_key), + ], + ~body, + handler, + ); + }; +}; + +module AzureGPT3_5 = { + let chat = (~body, ~handler): unit => + Azure.chat( + ~key="AZURE", + ~resource="hazel", + ~deployment="gpt35turbo", + ~api_version="2023-05-15", + ~body, + ~handler, + ); +}; + +module AzureGPT4 = { + let chat = (~body, ~handler): unit => + Azure.chat( + ~key="AZURE4", + ~resource="hazel2", + ~deployment="hazel-gpt-4", + ~api_version="2023-05-15", + ~body, + ~handler, + ); +}; + +//let body_simple = (~llm, prompt) => body(~llm, [(User, prompt)]); + +let start_chat = (~llm, prompt: prompt, handler): unit => { + let body = body(~llm, prompt); + switch (llm) { + | Azure_GPT3_5Turbo => AzureGPT3_5.chat(~body, ~handler) + | Azure_GPT4 => AzureGPT4.chat(~body, ~handler) + | GPT3_5Turbo + | GPT4 => chat(~body, ~handler) + }; +}; + +let reply_chat = (~llm, prompt: prompt, ~assistant, ~user, handler): unit => { + let body = + body( + ~llm, + prompt + @ [{role: Assistant, content: assistant}, {role: User, content: user}], + ); + switch (llm) { + | Azure_GPT3_5Turbo => AzureGPT3_5.chat(~body, ~handler) + | Azure_GPT4 => AzureGPT4.chat(~body, ~handler) + | GPT3_5Turbo + | GPT4 => chat(~body, ~handler) + }; +}; + +let int_field = (json: Json.t, field: string) => { + let* num = Json.dot(field, json); + Json.int(num); +}; + +let of_usage = (choices: Json.t): option(usage) => { + let* prompt_tokens = int_field(choices, "prompt_tokens"); + let* completion_tokens = int_field(choices, "completion_tokens"); + let+ total_tokens = int_field(choices, "total_tokens"); + {prompt_tokens, completion_tokens, total_tokens}; +}; + +let first_message_content = (choices: Json.t): option(string) => { + let* choices = Json.list(choices); + let* hd = Util.ListUtil.hd_opt(choices); + let* message = Json.dot("message", hd); + let* content = Json.dot("content", message); + Json.str(content); +}; + +let handle_chat = (request: request): option(reply) => + switch (receive(request)) { + | Some(json) => + let* choices = Json.dot("choices", json); + let* usage = Json.dot("usage", json); + let* content = first_message_content(choices); + let+ usage = of_usage(usage); + {content, usage}; + | _ => + print_endline("API: handle_chat: no response"); + None; + }; diff --git a/src/haz3lweb/util/API/WeatherAPI.re b/src/haz3lweb/util/API/WeatherAPI.re new file mode 100644 index 0000000000..1c69406231 --- /dev/null +++ b/src/haz3lweb/util/API/WeatherAPI.re @@ -0,0 +1,27 @@ +open API; + +let request = handler => + request( + ~with_credentials=true, + ~method=GET, + ~url="https://weatherapi-com.p.rapidapi.com/current.json?q=Ann%20arbor", + ~headers=[ + ( + "X-RapidAPI-Key", + "50adacef2cmsh8f5a12552751084p108b3fjsn4fb9ac1dab1d", + ), + ("X-RapidAPI-Host", "weatherapi-com.p.rapidapi.com"), + ], + handler, + ); + +let handle = (request: request): option(string) => + switch (receive(request)) { + | Some(json) => + json + |> Json.dot("current") + |> opt(Json.dot("condition")) + |> opt(Json.dot("text")) + |> opt(Json.str) + | _ => None + }; diff --git a/src/haz3lweb/view/Cell.re b/src/haz3lweb/view/Cell.re index 349b63c4e7..e34dc3c76f 100644 --- a/src/haz3lweb/view/Cell.re +++ b/src/haz3lweb/view/Cell.re @@ -40,6 +40,21 @@ let mousedown_handler = ~mousedown_updates, evt, ) => + /* + new behavior concept: + for atomic forms: + doubleclick: select term ie token + tripleclick: select parent term (e.g. ap for fnpos token) + for non-atomic concave/convex forms: + doubleclick: select token + tripleclick: select term + for chevron forms: + doubleclick: select tile (eg. {let _ = _ in} _) + tripleclick: select term + + possibly additional level if already indicated: + singleclick: select individual token always + */ switch (JsUtil.ctrl_held(evt), JsUtil.num_clicks(evt)) { | (true, _) => let goal = get_goal(~font_metrics, ~target_id, evt); @@ -63,6 +78,7 @@ let mousedown_handler = ); | (false, 2) => inject(PerformAction(Select(Tile(Current)))) | (false, 3 | _) => inject(PerformAction(Select(Smart))) + //| (false, 4 | _) => inject(PerformAction(Select(All))) }; let narrative_cell = (content: Node.t) => @@ -212,8 +228,9 @@ let deco = let eval_result_footer_view = ( - ~settings as _: Settings.t, - ~inject as _, + ~settings: Settings.t, + ~mvu_states, + ~inject, ~font_metrics, ~elab, results: ModelResult.simple, @@ -231,6 +248,24 @@ let eval_result_footer_view = Node.text("Evaluation disabled. Elaboration follows:"), dhcode_view(~show_casts=true, elab), ] + | Some({ + eval_result: + Ap( + Constructor("Render"), + Tuple([StringLit(name), init_model, view, update]), + ), + _, + }) => + MVU.go( + ~settings, + ~mvu_states, + ~name, + ~init_model, + ~inject, + ~view, + ~update, + ~font_metrics, + ) | Some({eval_result, _}) => /* Disabling casts in this case as large casts * can blow up UI perf unexpectedly */ @@ -271,9 +306,7 @@ let editor_view = let unselected = Zipper.unselect_and_zip(zipper); let measured = editor.state.meta.measured; let buffer_ids: list(Uuidm.t) = { - /* Collect ids of tokens in buffer for styling purposes. This is - * currently necessary as the selection is not persisted through - * unzipping for display */ + //TODO(andrew): document or improve let buffer = Selection.is_buffer(zipper.selection) ? zipper.selection.content : []; Id.Map.bindings(Measured.of_segment(buffer).tiles) |> List.map(fst); @@ -323,6 +356,7 @@ let editor_view = let editor_with_result_view = ( + ~mvu_states, ~inject, ~font_metrics, ~show_backpack_targets, @@ -343,6 +377,7 @@ let editor_with_result_view = settings.core.statics ? eval_result_footer_view( ~settings, + ~mvu_states, ~inject, ~font_metrics, ~elab= diff --git a/src/haz3lweb/view/Code.re b/src/haz3lweb/view/Code.re index d5e9ab086d..8a06bea5c2 100644 --- a/src/haz3lweb/view/Code.re +++ b/src/haz3lweb/view/Code.re @@ -6,7 +6,7 @@ open Util.Web; let of_delim' = Core.Memo.general( - ~cache_size_bound=10000, + ~cache_size_bound=100000, ((is_in_buffer, sort, is_consistent, is_complete, label, i)) => { let cls = switch (label) { @@ -14,6 +14,7 @@ let of_delim' = | _ when !is_consistent => "sort-inconsistent" | _ when !is_complete => "incomplete" | [s] when s == Form.explicit_hole => "explicit-hole" + | [s] when Form.is_prompt(s) => "active-prompt" | [s] when Form.is_string(s) => "string-lit" | _ => "default" }; @@ -68,7 +69,7 @@ let of_secondary = This means that if there are data dependencies on the functor argument values, they will need to be explictly encoded in the key. - TODO: Consider setting a limit for the hashtbl size */ + TODO(andrew): Consider setting a limit for the hashtbl size */ let piece_hash: Hashtbl.t((list(Uuidm.t), Sort.t, Piece.t, int, Settings.t), list(t)) = Hashtbl.create(10000); diff --git a/src/haz3lweb/view/CursorInspector.re b/src/haz3lweb/view/CursorInspector.re index 0401876823..f5ff3d44a4 100644 --- a/src/haz3lweb/view/CursorInspector.re +++ b/src/haz3lweb/view/CursorInspector.re @@ -65,6 +65,11 @@ let elements_noun: Term.Cls.t => string = let common_err_view = (cls: Term.Cls.t, err: Info.error_common) => switch (err) { + | NoType(MultiError) => [ + text( + "Incomplete syntax (possible cause: remember that function application is c-style and requires parentheses around the argument)", + ), + ] | NoType(BadToken(token)) => switch (Form.bad_token_cls(token)) { | BadInt => [text("Integer is too large or too small")] @@ -235,6 +240,7 @@ let view = ), ]); switch (zipper.backpack, Indicated.index(zipper)) { + //| ([_, ..._], _) => err_view("No information while backpack in use") | _ when !settings.core.statics => div_empty | _ when Id.Map.is_empty(info_map) => err_view("No Static information available") @@ -243,6 +249,12 @@ let view = switch (Id.Map.find_opt(id, info_map)) { | None => err_view("Whitespace or Comment") | Some(ci) => + /*if (zipper.backpack != []) { + print_endline("TESTING: ChatLSP.Errors backpack not empty:"); + print_endline( + ChatLSP.Errors.collect_static(info_map) |> String.concat("\n"), + ); + };*/ bar_view([ inspector_view(~inject, ~settings, ~show_lang_doc, ci), div( diff --git a/src/haz3lweb/view/Deco.re b/src/haz3lweb/view/Deco.re index 7c1560e1e4..c539e72992 100644 --- a/src/haz3lweb/view/Deco.re +++ b/src/haz3lweb/view/Deco.re @@ -55,7 +55,8 @@ module Deco = let caret = (id, (-1)); let style: PieceDec.Profile.style = buffer - ? SelectedBuffer((id, l), (id, r)) : Selected((id, l), (id, r)); + ? SelectedEphemeral((id, l), (id, r)) + : Selected((id, l), (id, r)); PieceDec.Profile.{tiles, caret, style}; }; @@ -271,6 +272,11 @@ module Deco = let is_err = (id: Id.t) => switch (Id.Map.find_opt(id, M.info_map)) { | None => false + //TODO(andrew): supress drawing holes for multis + | Some(InfoExp({status: InHole(Common(NoType(MultiError))), _})) => + false + | Some(InfoPat({status: InHole(Common(NoType(MultiError))), _})) => + false | Some(info) => Info.is_error(info) }; let is_rep = (id: Id.t) => @@ -311,15 +317,24 @@ module Deco = Id.Map.fold( (id, info: Info.t, acc) => ( - switch (Id.Map.find_opt(id, M.term_ranges)) { - | None => - /*Printf.printf( + switch (info) { + //TODO(andrew): supress drawing holes for multis + | InfoExp({status: InHole(Common(NoType(MultiError))), _}) + | InfoPat({status: InHole(Common(NoType(MultiError))), _}) => + false + | _ => + //TODO(andrew): figure out why this fails for some multihole situations + switch (Id.Map.find_opt(id, M.term_ranges)) { + | None => + Printf.printf( "WARN: err_holes: No term range %s\n", Id.to_string(id), ); - Printf.printf("info: %s\n",Info.show(info));*/ - false - | Some(_) => Info.is_error(info) + //Printf.printf("info: %s\n",Info.show(info)); + false; + + | Some(_) => Info.is_error(info) + } } ) ? [term_highlight(~clss=["err-hole"], id), ...acc] : acc, diff --git a/src/haz3lweb/view/ExerciseMode.re b/src/haz3lweb/view/ExerciseMode.re index d16d4fae5b..68b40cc38c 100644 --- a/src/haz3lweb/view/ExerciseMode.re +++ b/src/haz3lweb/view/ExerciseMode.re @@ -53,7 +53,14 @@ let render_cells = (settings: Settings.t, v: list(vis_marked(Node.t))) => { }; let view = - (~inject, ~font_metrics, ~show_backpack_targets, ~mousedown, self: t) => { + ( + ~mvu_states, + ~inject, + ~font_metrics, + ~show_backpack_targets, + ~mousedown, + self: t, + ) => { let { exercise, results: _, @@ -260,6 +267,7 @@ let view = Some( Cell.eval_result_footer_view( ~settings, + ~mvu_states, ~inject, ~font_metrics, ~elab=Haz3lcore.DHExp.Tuple([]), //TODO: placeholder diff --git a/src/haz3lweb/view/MVU.re b/src/haz3lweb/view/MVU.re new file mode 100644 index 0000000000..0700214664 --- /dev/null +++ b/src/haz3lweb/view/MVU.re @@ -0,0 +1,372 @@ +open Haz3lcore; +open Virtual_dom.Vdom; + +type t = { + settings: Settings.t, + name: string, // key to store model state + inject: UpdateAction.t => Ui_effect.t(unit), + update: DHExp.t, + model: DHExp.t, + font_metrics: FontMetrics.t, +}; + +let dhexp_view = (~font_metrics, d) => + DHCode.view( + ~settings=Settings.Evaluation.init, + ~selected_hole_instance=None, + ~font_metrics, + ~width=80, + d, + ); + +let render_style_attr: DHExp.t => string = + fun + | Ap(Constructor("AccentColor"), StringLit(s)) => "accent-color: " ++ s + | Ap(Constructor("AlignContent"), StringLit(s)) => "align-content: " ++ s + | Ap(Constructor("AlignItems"), StringLit(s)) => "align-items: " ++ s + | Ap(Constructor("AlignSelf"), StringLit(s)) => "align-self: " ++ s + | Ap(Constructor("All"), StringLit(s)) => "all: " ++ s + | Ap(Constructor("Animation"), StringLit(s)) => "animation: " ++ s + | Ap(Constructor("AnimationDelay"), StringLit(s)) => + "animation-delay: " ++ s + | Ap(Constructor("AnimationDirection"), StringLit(s)) => + "animation-direction: " ++ s + | Ap(Constructor("AnimationDuration"), StringLit(s)) => + "animation-duration: " ++ s + | Ap(Constructor("AnimationFillMode"), StringLit(s)) => + "animation-fill-mode: " ++ s + | Ap(Constructor("AnimationIterationCount"), StringLit(s)) => + "animation-iteration-count: " ++ s + | Ap(Constructor("AnimationName"), StringLit(s)) => "animation-name: " ++ s + | Ap(Constructor("AnimationPlayState"), StringLit(s)) => + "animation-play-state: " ++ s + | Ap(Constructor("AnimationTimingFunction"), StringLit(s)) => + "animation-timing-function: " ++ s + | Ap(Constructor("BackfaceVisibility"), StringLit(s)) => + "backface-visibility: " ++ s + | Ap(Constructor("Background"), StringLit(s)) => "background: " ++ s + | Ap(Constructor("BackgroundAttachment"), StringLit(s)) => + "background-attachment: " ++ s + | Ap(Constructor("BackgroundClip"), StringLit(s)) => + "background-clip: " ++ s + | Ap(Constructor("BackgroundColor"), StringLit(s)) => + "background-color: " ++ s + | Ap(Constructor("BackgroundImage"), StringLit(s)) => + "background-image: " ++ s + | Ap(Constructor("BackgroundOrigin"), StringLit(s)) => + "background-origin: " ++ s + | Ap(Constructor("BackgroundPosition"), StringLit(s)) => + "background-position: " ++ s + | Ap(Constructor("BackgroundRepeat"), StringLit(s)) => + "background-repeat: " ++ s + | Ap(Constructor("BackgroundSize"), StringLit(s)) => + "background-size: " ++ s + | Ap(Constructor("Border"), StringLit(s)) => "border: " ++ s + | Ap(Constructor("BorderBottom"), StringLit(s)) => "border-bottom: " ++ s + | Ap(Constructor("BorderBottomColor"), StringLit(s)) => + "border-bottom-color: " ++ s + | Ap(Constructor("BorderBottomLeftRadius"), StringLit(s)) => + "border-bottom-left-radius: " ++ s + | Ap(Constructor("BorderBottomRightRadius"), StringLit(s)) => + "border-bottom-right-radius: " ++ s + | Ap(Constructor("BorderBottomStyle"), StringLit(s)) => + "border-bottom-style: " ++ s + | Ap(Constructor("BorderBottomWidth"), StringLit(s)) => + "border-bottom-width: " ++ s + | Ap(Constructor("BorderCollapse"), StringLit(s)) => + "border-collapse: " ++ s + | Ap(Constructor("BorderColor"), StringLit(s)) => "border-color: " ++ s + | Ap(Constructor("BorderImage"), StringLit(s)) => "border-image: " ++ s + | Ap(Constructor("BorderImageOutset"), StringLit(s)) => + "border-image-outset: " ++ s + | Ap(Constructor("BorderImageRepeat"), StringLit(s)) => + "border-image-repeat: " ++ s + | Ap(Constructor("BorderImageSlice"), StringLit(s)) => + "border-image-slice: " ++ s + | Ap(Constructor("BorderImageSource"), StringLit(s)) => + "border-image-source: " ++ s + | Ap(Constructor("BorderImageWidth"), StringLit(s)) => + "border-image-width: " ++ s + | Ap(Constructor("BorderLeft"), StringLit(s)) => "border-left: " ++ s + | Ap(Constructor("BorderLeftColor"), StringLit(s)) => + "border-left-color: " ++ s + | Ap(Constructor("BorderLeftStyle"), StringLit(s)) => + "border-left-style: " ++ s + | Ap(Constructor("BorderLeftWidth"), StringLit(s)) => + "border-left-width: " ++ s + | Ap(Constructor("BorderRadius"), StringLit(s)) => "border-radius: " ++ s + | Ap(Constructor("BorderRight"), StringLit(s)) => "border-right: " ++ s + | Ap(Constructor("BorderRightColor"), StringLit(s)) => + "border-right-color: " ++ s + | Ap(Constructor("BorderRightStyle"), StringLit(s)) => + "border-right-style: " ++ s + | Ap(Constructor("BorderRightWidth"), StringLit(s)) => + "border-right-width: " ++ s + | Ap(Constructor("BorderSpacing"), StringLit(s)) => "border-spacing: " ++ s + | Ap(Constructor("BorderStyle"), StringLit(s)) => "border-style: " ++ s + | Ap(Constructor("BorderTop"), StringLit(s)) => "border-top: " ++ s + | Ap(Constructor("BorderTopColor"), StringLit(s)) => + "border-top-color: " ++ s + | Ap(Constructor("BorderTopLeftRadius"), StringLit(s)) => + "border-top-left-radius: " ++ s + | Ap(Constructor("BorderTopRightRadius"), StringLit(s)) => + "border-top-right-radius: " ++ s + | Ap(Constructor("BorderTopStyle"), StringLit(s)) => + "border-top-style: " ++ s + | Ap(Constructor("BorderTopWidth"), StringLit(s)) => + "border-top-width: " ++ s + | Ap(Constructor("BorderWidth"), StringLit(s)) => "border-width: " ++ s + | Ap(Constructor("Bottom"), StringLit(s)) => "bottom: " ++ s + | Ap(Constructor("BoxShadow"), StringLit(s)) => "box-shadow: " ++ s + | Ap(Constructor("BoxSizing"), StringLit(s)) => "box-sizing: " ++ s + | Ap(Constructor("CaptionSide"), StringLit(s)) => "caption-side: " ++ s + | Ap(Constructor("Clear"), StringLit(s)) => "clear: " ++ s + | Ap(Constructor("Clip"), StringLit(s)) => "clip: " ++ s + | Ap(Constructor("Color"), StringLit(s)) => "color: " ++ s + | Ap(Constructor("Content"), StringLit(s)) => "content: " ++ s + | Ap(Constructor("CounterIncrement"), StringLit(s)) => + "counter-increment: " ++ s + | Ap(Constructor("CounterReset"), StringLit(s)) => "counter-reset: " ++ s + | Ap(Constructor("Cursor"), StringLit(s)) => "cursor: " ++ s + | Ap(Constructor("Direction"), StringLit(s)) => "direction: " ++ s + | Ap(Constructor("Display"), StringLit(s)) => "display: " ++ s + | Ap(Constructor("EmptyCells"), StringLit(s)) => "empty-cells: " ++ s + | Ap(Constructor("Float"), StringLit(s)) => "float: " ++ s + | Ap(Constructor("FlexDirection"), StringLit(s)) => "flex-direction: " ++ s + | Ap(Constructor("Font"), StringLit(s)) => "font: " ++ s + | Ap(Constructor("FontFamily"), StringLit(s)) => "font-family: " ++ s + | Ap(Constructor("FontSize"), StringLit(s)) => "font-size: " ++ s + | Ap(Constructor("FontSizeAdjust"), StringLit(s)) => + "font-size-adjust: " ++ s + | Ap(Constructor("FontStretch"), StringLit(s)) => "font-stretch: " ++ s + | Ap(Constructor("FontStyle"), StringLit(s)) => "font-style: " ++ s + | Ap(Constructor("FontVariant"), StringLit(s)) => "font-variant: " ++ s + | Ap(Constructor("FontWeight"), StringLit(s)) => "font-weight: " ++ s + | Ap(Constructor("Gap"), StringLit(s)) => "gap: " ++ s + | Ap(Constructor("Height"), StringLit(s)) => "height: " ++ s + | Ap(Constructor("JustifyContent"), StringLit(s)) => + "justify-content: " ++ s + | Ap(Constructor("Left"), StringLit(s)) => "left: " ++ s + | Ap(Constructor("LetterSpacing"), StringLit(s)) => "letter-spacing: " ++ s + | Ap(Constructor("LineHeight"), StringLit(s)) => "line-height: " ++ s + | Ap(Constructor("ListStyle"), StringLit(s)) => "list-style: " ++ s + | Ap(Constructor("ListStyleImage"), StringLit(s)) => + "list-style-image: " ++ s + | Ap(Constructor("ListStylePosition"), StringLit(s)) => + "list-style-position: " ++ s + | Ap(Constructor("ListStyleType"), StringLit(s)) => + "list-style-type: " ++ s + | Ap(Constructor("Margin"), StringLit(s)) => "margin: " ++ s + | Ap(Constructor("MarginBottom"), StringLit(s)) => "margin-bottom: " ++ s + | Ap(Constructor("MarginLeft"), StringLit(s)) => "margin-left: " ++ s + | Ap(Constructor("MarginRight"), StringLit(s)) => "margin-right: " ++ s + | Ap(Constructor("MarginTop"), StringLit(s)) => "margin-top: " ++ s + | Ap(Constructor("MaxHeight"), StringLit(s)) => "max-height: " ++ s + | Ap(Constructor("MaxWidth"), StringLit(s)) => "max-width: " ++ s + | Ap(Constructor("MinHeight"), StringLit(s)) => "min-height: " ++ s + | Ap(Constructor("MinWidth"), StringLit(s)) => "min-width: " ++ s + | Ap(Constructor("Opacity"), StringLit(s)) => "opacity: " ++ s + | Ap(Constructor("Orphans"), StringLit(s)) => "orphans: " ++ s + | Ap(Constructor("Outline"), StringLit(s)) => "outline: " ++ s + | Ap(Constructor("OutlineColor"), StringLit(s)) => "outline-color: " ++ s + | Ap(Constructor("OutlineStyle"), StringLit(s)) => "outline-style: " ++ s + | Ap(Constructor("OutlineWidth"), StringLit(s)) => "outline-width: " ++ s + | Ap(Constructor("Overflow"), StringLit(s)) => "overflow: " ++ s + | Ap(Constructor("OverflowX"), StringLit(s)) => "overflow-x: " ++ s + | Ap(Constructor("OverflowY"), StringLit(s)) => "overflow-y: " ++ s + | Ap(Constructor("Padding"), StringLit(s)) => "padding: " ++ s + | Ap(Constructor("PaddingBottom"), StringLit(s)) => "padding-bottom: " ++ s + | Ap(Constructor("PaddingLeft"), StringLit(s)) => "padding-left: " ++ s + | Ap(Constructor("PaddingRight"), StringLit(s)) => "padding-right: " ++ s + | Ap(Constructor("PaddingTop"), StringLit(s)) => "padding-top: " ++ s + | Ap(Constructor("PageBreakAfter"), StringLit(s)) => + "page-break-after: " ++ s + | Ap(Constructor("PageBreakBefore"), StringLit(s)) => + "page-break-before: " ++ s + | Ap(Constructor("PageBreakInside"), StringLit(s)) => + "page-break-inside: " ++ s + | Ap(Constructor("Position"), StringLit(s)) => "position: " ++ s + | Ap(Constructor("Quotes"), StringLit(s)) => "quotes: " ++ s + | Ap(Constructor("Right"), StringLit(s)) => "right: " ++ s + | Ap(Constructor("TableLayout"), StringLit(s)) => "table-layout: " ++ s + | Ap(Constructor("TextAlign"), StringLit(s)) => "text-align: " ++ s + | Ap(Constructor("TextDecoration"), StringLit(s)) => + "text-decoration: " ++ s + | Ap(Constructor("TextIndent"), StringLit(s)) => "text-indent: " ++ s + | Ap(Constructor("TextTransform"), StringLit(s)) => "text-transform: " ++ s + | Ap(Constructor("Top"), StringLit(s)) => "top: " ++ s + | Ap(Constructor("UnicodeBidi"), StringLit(s)) => "unicode-bidi: " ++ s + | Ap(Constructor("VerticalAlign"), StringLit(s)) => "vertical-align: " ++ s + | Ap(Constructor("Visibility"), StringLit(s)) => "visibility: " ++ s + | Ap(Constructor("WhiteSpace"), StringLit(s)) => "white-space: " ++ s + | Ap(Constructor("Widows"), StringLit(s)) => "widows: " ++ s + | Ap(Constructor("Width"), StringLit(s)) => "width: " ++ s + | Ap(Constructor("WordSpacing"), StringLit(s)) => "word-spacing: " ++ s + | Ap(Constructor("ZIndex"), StringLit(s)) => "z-index: " ++ s + | _ => ""; + +/* + + TODO: Event types to support: + + Dom_html.mouseEvent + detail: int + method clientX : int + method clientY : int + method ctrlKey : bool + method shiftKey : bool + method altKey : bool + method metaKey : bool + + Dom_html.keyboardEvent + key: string + method ctrlKey : bool + method shiftKey : bool + method altKey : bool + method metaKey : bool + + Effects to support: + + Stop_propagaton + Prevent_default + */ + +/* TODO: Handlers to implement: + + on_dblclick + on_mousedown + on_mouseup + on_mousemove + + on_keydown + on_keyup + on_keypress + */ + +let render_styles = styles => + styles + |> List.map(render_style_attr) + |> String.concat(";") + |> Attr.create("style"); + +let update = + ({name, update, model, settings, _}: t, handler, arg): UpdateAction.t => { + let model = + Interface.eval_d2d( + ~settings=settings.core, + Ap(update, Tuple([model, Ap(handler, arg)])), + ); + SetMeta(MVU(name, model)); +}; + +let on_ = (mvu: t, handler, arg) => + Effect.Many([ + Effect.Stop_propagation, + mvu.inject(update(mvu, handler, arg)), + ]); + +let render_attr = (mvu: t, d: DHExp.t): Attr.t => { + switch (d) { + | Ap(Constructor("Create"), Tuple([StringLit(name), StringLit(value)])) => + Attr.create(name, value) + | Ap(Constructor("Style"), ListLit(_, _, _, styles)) => + render_styles(styles) + | Ap(Constructor("OnClick"), handler) => + Attr.on_click(_evt => on_(mvu, handler, Tuple([]))) + | Ap(Constructor("OnMouseDown"), handler) => + Attr.on_mousedown(_evt => on_(mvu, handler, Tuple([]))) + | Ap(Constructor("OnInput"), handler) => + Attr.on_input((_evt, input_str) => + on_(mvu, handler, StringLit(input_str)) + ) + | _ => + //print_endline("ERROR: render_attr: " ++ DHExp.show(d)); + Attr.create("error", "error") + }; +}; + +let rec render_div = (~elide_errors=false, context: t, d: DHExp.t): Node.t => + switch (d) { + | Ap(Constructor("Text"), StringLit(str)) => Node.text(str) + | Ap(Constructor("Bool"), BoolLit(b)) => Node.text(string_of_bool(b)) + | Ap(Constructor("Num" | "Int"), IntLit(n)) => + Node.text(string_of_int(n)) + | Ap(Constructor("Float"), FloatLit(f)) => Node.text(string_of_float(f)) + | Ap(Constructor("Div"), body) => + let (attrs, divs) = attrs_and_divs(context, body); + Node.div(~attr=Attr.many(attrs), divs); + | Ap(Constructor("Button"), body) => input_of("button", context, body) + | Ap(Constructor("Checkbox"), body) => input_of("checkbox", context, body) + | Ap(Constructor("ColorInput"), body) => input_of("color", context, body) + | Ap(Constructor("DateInput"), body) => input_of("date", context, body) + | Ap(Constructor("DateTimeLocal"), body) => + input_of("datetime-local", context, body) + | Ap(Constructor("EmailInput"), body) => input_of("email", context, body) + | Ap(Constructor("FileInput"), body) => input_of("file", context, body) + | Ap(Constructor("HiddenInput"), body) => + input_of("hidden", context, body) + | Ap(Constructor("ImageInput"), body) => input_of("image", context, body) + | Ap(Constructor("MonthInput"), body) => input_of("month", context, body) + | Ap(Constructor("NumberInput"), body) => + input_of("number", context, body) + | Ap(Constructor("PasswordInput"), body) => + input_of("password", context, body) + | Ap(Constructor("Radio"), body) => input_of("radio", context, body) + | Ap(Constructor("Range"), body) => input_of("range", context, body) + | Ap(Constructor("ResetInput"), body) => input_of("reset", context, body) + | Ap(Constructor("SearchInput"), body) => + input_of("search", context, body) + | Ap(Constructor("SubmitInput"), body) => + input_of("submit", context, body) + | Ap(Constructor("TelInput"), body) => input_of("tel", context, body) + | Ap(Constructor("TextInput"), body) => input_of("text", context, body) + | Ap(Constructor("TimeInput"), body) => input_of("time", context, body) + | Ap(Constructor("UrlInput"), body) => input_of("url", context, body) + | Ap(Constructor("WeekInput"), body) => input_of("week", context, body) + | _ => + //print_endline("ERROR: render_div: " ++ DHExp.show(d)); + let d = elide_errors ? DHExp.EmptyHole(Id.invalid, 0) : d; + dhexp_view(~font_metrics=context.font_metrics, d); + } +and input_of = (input_type: string, mvu: t, body: DHExp.t) => { + let (attrs, divs) = attrs_and_divs(mvu, body); + Node.input( + ~attr=Attr.many([Attr.create("type", input_type)] @ attrs), + divs, + ); +} +and attrs_and_divs = (mvu: t, body: DHExp.t): (list(Attr.t), list(Node.t)) => + switch (body) { + | Tuple([ListLit(_, _, _, attrs), ListLit(_, _, _, divs)]) => ( + List.map(render_attr(mvu), attrs), + List.map(render_div(mvu), divs), + ) + | _ => ([], []) + }; + +let go = + ( + ~settings, + ~mvu_states, + ~init_model, + ~name, + ~inject, + ~view, + ~update, + ~font_metrics, + ) => { + let model = + switch (VarMap.lookup(mvu_states, name)) { + | Some(d) => d + | _ => init_model + }; + let mvu = {settings, name, model, update, inject, font_metrics}; + //TODO(andrew): casting in ap? + let result = + Ap(view, mvu.model) + |> Interface.eval_d2d(~settings=settings.core) + |> DHExp.strip_casts; + [ + Node.div(~attr=Attr.classes(["mvu-render"]), [render_div(mvu, result)]), + ]; +}; diff --git a/src/haz3lweb/view/Page.re b/src/haz3lweb/view/Page.re index ff25b07db9..28c66db5bb 100644 --- a/src/haz3lweb/view/Page.re +++ b/src/haz3lweb/view/Page.re @@ -128,6 +128,7 @@ let exercises_view = meta: { ui_state: {font_metrics, show_backpack_targets, mousedown, _}, results, + mvu_states, _, }, _, @@ -137,7 +138,7 @@ let exercises_view = ExerciseMode.mk( ~settings, ~exercise, - ~results=settings.core.dynamics ? Some(results) : None, + ~results=settings.core.dynamics ? Some(results) : None, //TODO(andrew) ~langDocMessages, ); let toolbar_buttons = @@ -151,6 +152,7 @@ let exercises_view = ~font_metrics, ~mousedown, ~show_backpack_targets, + ~mvu_states, exercise_mode, ); }; diff --git a/src/haz3lweb/view/ScratchMode.re b/src/haz3lweb/view/ScratchMode.re index 40d62b8fe7..2bcc7626c4 100644 --- a/src/haz3lweb/view/ScratchMode.re +++ b/src/haz3lweb/view/ScratchMode.re @@ -16,6 +16,7 @@ let view = langDocMessages, meta: { results, + mvu_states, ui_state: {font_metrics, show_backpack_targets, mousedown, _}, _, }, @@ -39,6 +40,7 @@ let view = let code_id = "code-container"; let editor_view = Cell.editor_with_result_view( + ~mvu_states, ~inject, ~font_metrics, ~show_backpack_targets, diff --git a/src/haz3lweb/view/TestView.re b/src/haz3lweb/view/TestView.re index 208a95c3d1..5235eed290 100644 --- a/src/haz3lweb/view/TestView.re +++ b/src/haz3lweb/view/TestView.re @@ -8,7 +8,7 @@ module TestResults = Haz3lcore.TestResults; module Interface = Haz3lcore.Interface; let test_instance_view = - (~font_metrics, (d, status): TestMap.instance_report) => + (~font_metrics, (d, status, _env): TestMap.instance_report) => div( ~attr= Attr.many([clss(["test-instance", TestStatus.to_string(status)])]), diff --git a/src/haz3lweb/view/assistant/ChatLSP.re b/src/haz3lweb/view/assistant/ChatLSP.re new file mode 100644 index 0000000000..e92b27b998 --- /dev/null +++ b/src/haz3lweb/view/assistant/ChatLSP.re @@ -0,0 +1,202 @@ +open Haz3lcore; + +//TODO(andrew): calculate this in a more principled way +let get_info_from_zipper = + (~settings: Settings.t, ~ctx_init, z: Zipper.t): Statics.Map.t => { + z + |> MakeTerm.from_zip_for_sem + |> fst + |> Interface.Statics.mk_map_ctx(settings.core, ctx_init); +}; +let get_info_and_top_ci_from_zipper = + (~settings: Settings.t, ~ctx, z: Zipper.t) + : (option(Info.exp), Statics.Map.t) => { + z + |> MakeTerm.from_zip_for_sem + |> fst + |> Interface.Statics.mk_map_and_info_ctx(settings.core, ctx); +}; + +let get_ci = + (~settings: Settings.t, ~ctx_init, editor: Editor.t): option(Info.t) => { + let z = editor.state.zipper; + let index = Indicated.index(z); + switch (index) { + | Some(index) => + let map = get_info_from_zipper(~settings, ~ctx_init, z); + Haz3lcore.Id.Map.find_opt(index, map); + | _ => None + }; +}; + +module Type = { + let mode = + (~settings: Settings.t, ~ctx_init, editor: Editor.t): option(Mode.t) => + switch (get_ci(~settings, ~ctx_init, editor)) { + | Some(InfoExp({mode, _})) => Some(mode) + | Some(InfoPat({mode, _})) => Some(mode) + | _ => None + }; + + let ctx = + (~settings: Settings.t, ~ctx_init, editor: Editor.t): option(Ctx.t) => + switch (get_ci(~settings, ~ctx_init, editor)) { + | Some(ci) => Some(Info.ctx_of(ci)) + | _ => None + }; + + let expected_ty = (~ctx, mode: option(Mode.t)): Typ.t => { + switch (mode) { + | Some(Ana(Var(name) as _ty)) when Ctx.lookup_alias(ctx, name) != None => + let ty_expanded = Ctx.lookup_alias(ctx, name) |> Option.get; + ty_expanded; + | Some(Ana(ty)) => ty + | Some(SynFun) => Arrow(Unknown(Internal), Unknown(Internal)) + | Some(Syn) + | None => Unknown(SynSwitch) + //| _ => "Not applicable" + }; + }; + + let expected = (~ctx, mode: option(Mode.t)): string => { + /* + TODO(andrew): maybe include more than just the immediate type. + like for example, when inside a fn(s), include + argument types. + like basically to benefit maximally from included type info, + want to make sure we're including the full expansion of any type + we might want to either case on or construct. + expected type should mostly(?) give us the latter, + but not always the former + */ + let prefix = "Hole ?? can be filled by an expression with "; + switch (mode) { + | Some(Ana(Var(name) as ty)) when Ctx.lookup_alias(ctx, name) != None => + let ty_expanded = Typ.normalize(ctx, ty); + prefix + ++ "a type consistent with " + ++ Typ.to_string(ty) + ++ " which is a type alias for " + ++ Typ.to_string(ty_expanded); + | Some(Ana(ty)) => + let ty_expanded = Typ.normalize(ctx, ty); + prefix + ++ "a type consistent with " + ++ Typ.to_string(ty) + ++ " which expands to " + ++ Typ.to_string(ty_expanded); + | Some(SynFun) => + prefix + ++ "a type consistent with " + ++ Typ.to_string(Arrow(Unknown(Internal), Unknown(Internal))) + | Some(Syn) => prefix ++ "any type" + | _ => "Not applicable" + }; + }; +}; + +/* + ERRORS TODO: + make multihole an error (say something about ap) + do a completeness check + */ + +module Errors = { + let prn = Printf.sprintf; + + let common_error: Info.error_common => string = + fun + | NoType(MultiError) => + /* NOTE: possible cause explanation actually helps. + e.g. when generating + "if i == index then (description, not(done)) else (description, done)" + it would tend not to parethesize the argument to not + */ + prn( + "Incomplete syntax (possible cause: remember that function application is c-style and requires parentheses around the argument)", + ) + + | NoType(BadToken(token)) => prn("\"%s\" isn't a valid token", token) + | NoType(BadTrivAp(ty)) => + prn( + "Function argument type \"%s\" inconsistent with ()", + Typ.to_string(ty), + ) + | Inconsistent(WithArrow(ty)) => + prn("type %s is not consistent with arrow type", Typ.to_string(ty)) + | NoType(FreeConstructor(_name)) => prn("Constructor is not defined") + | Inconsistent(Internal(tys)) => + prn( + "Expecting branches to have consistent types but got types: %s", + List.map(Typ.to_string, tys) |> String.concat(", "), + ) + | Inconsistent(Expectation({ana, syn})) => + prn( + "Expecting type %s but got inconsistent type %s", + Typ.to_string(ana), + Typ.to_string(syn), + ); + + let exp_error: Info.error_exp => string = + fun + | FreeVariable(name) => "Variable " ++ name ++ " is not bound" + | Common(error) => common_error(error); + + let pat_error: Info.error_pat => string = + fun + | ExpectedConstructor => "Expected a constructor" + | Common(error) => common_error(error); + + let typ_error: Info.error_typ => string = + fun + | FreeTypeVariable(name) => prn("Type variable %s is not bound", name) + | BadToken(token) => prn("\"%s\" isn't a valid type token", token) + | WantConstructorFoundAp => "Expected a constructor, found application" + | WantConstructorFoundType(ty) => + prn("Expected a constructor, found type %s", Typ.to_string(ty)) + | WantTypeFoundAp => "Constructor application must be in sum" + | DuplicateConstructor(name) => + prn("Constructor %s already used in this sum", name); + + let tpat_error: Info.error_tpat => string = + fun + | NotAVar(_) => "Not a valid type name" + | ShadowsType(name) => "Can't shadow base type " ++ name; + + let string_of: Info.error => string = + fun + | Exp(error) => exp_error(error) + | Pat(error) => pat_error(error) + | Typ(error) => typ_error(error) + | TPat(error) => tpat_error(error); + + let format_error = (term, error) => + prn("Error in term:\n %s\nNature of error: %s", term, error); + + let collect_static = (info_map: Statics.Map.t) => { + let errors = Statics.collect_errors(info_map); + List.map( + ((id: Id.t, error: Info.error)) => + switch (Id.Map.find_opt(id, info_map)) { + | None => "Can't report error: Id lookup failed" + | Some(info) => + let term = Info.term_string_of(info); + format_error(term, string_of(error)); + }, + errors, + ); + }; + /* + Id.Map.fold( + (_id, info: Info.t, acc) => { + switch (Info.error_of(info)) { + | Some(error) => + let term = Info.term_string_of(info); + List.cons(format_error(term, string_of(error)), acc); + | None => acc + } + }, + info_map, + [], + );*/ +}; diff --git a/src/haz3lweb/view/assistant/Filler.re b/src/haz3lweb/view/assistant/Filler.re new file mode 100644 index 0000000000..2c9c9821fa --- /dev/null +++ b/src/haz3lweb/view/assistant/Filler.re @@ -0,0 +1,368 @@ +open Haz3lcore; +open ChatLSP; +open Util.OptUtil.Syntax; +open Sexplib.Std; + +[@deriving (show({with_path: false}), yojson, sexp)] +type parse_error = option(string); + +[@deriving (show({with_path: false}), yojson, sexp)] +type static_errors = list(string); + +[@deriving (show({with_path: false}), yojson, sexp)] +type error_report = + | ParseError(string) + | StaticErrors(static_errors); + +[@deriving (show({with_path: false}), yojson, sexp)] +type round_report = { + reply: OpenAI.reply, + error_report, +}; + +type samples = list((string, string, string)); + +//TODO(andrew): include ctx in examples to get more precise expected_ty + +let samples = [ + ( + {| +let List.length: [(String, Bool)]-> Int = + fun xs -> + ?? end in +|}, + Type.expected(Some(Ana(Int)), ~ctx=[]), + {| +case xs +| [] => 0 +| _::xs => 1 + List.length(xs)|}, + ), + ( + {| +let List.mapi: ((Int, Bool) -> Bool, [Bool]) -> [Bool]= + fun f, xs -> + let go: (Int, [Bool])-> [Bool] = fun idx, xs -> + ?? end in + go(0, xs) in +|}, + Type.expected(Some(Ana(List(Bool))), ~ctx=[]), + {| +case xs +| [] => [] +| hd::tl => f(idx, hd)::go(idx + 1, tl) +|}, + ), + ( + {| +type Container = + + Pod(Int) + + CapsuleCluster(Int, Int) in +let total_capacity: Container -> Int = + ?? +in +|}, + Type.expected(Some(Ana(Arrow(Var("Container"), Int))), ~ctx=[]), + {| +fun c -> + case c + | Pod(x) => x + | CapsuleCluster(x, y) => x * y + end +|}, + ), + ( + "let f = ?? in f(5)", + Type.expected(Some(Syn), ~ctx=[]), + "fun x:Int -> ??", + ), + ( + "case Foo(5) | Foo(x) => ?? | Bar => 6", + Type.expected(Some(Ana(Int)), ~ctx=[]), + "x", + ), + ( + "let num_or_zero = fun maybe_num -> case maybe_num | Some(num) => ?? | None => 0", + Type.expected(Some(Syn), ~ctx=[]), + "num", + ), + ( + "let merge_sort: [Int]->[Int] =\n??\nin\nmerge_sort([4,1,3,7,2])", + Type.expected(Some(Ana(Arrow(Int, Int))), ~ctx=[]), + "fun list ->\nlet split: [Int]->([Int],[Int]) = fun left, right -> ?\nin\nlet merge: ([Int],[Int])->[Int]= ?\nin\nlet merge_sort_helper: [Int]->[Int]= ?\nin\nmerge_sort_helper(list)", + ), + ( + "type MenuItem =\n+ Breakfast(Int, Int)\n+ Lunch(Float)\nin\nlet per_lunch_unit = 0.95 in\nlet price: MenuItem-> Float = fun m ->\ncase m\n| Breakfast(x, y) => ??\n| Lunch(f) => f *. per_lunch_unit\nend\nin price(Breakfast(1,2))/.3.", + Type.expected(Some(Ana(Var("MenuItem"))), ~ctx=[]), + "fun m ->\ncase m\n| Breakfast(x, y) => ??\n| Lunch(f) => f *. per_lunch_unit\nend", + ), + ( + {| +let List.merge: (( , )->Bool,[ ], [ ]) -> [ ] = fun cmp,left, right -> +case left, right +| [], _ => right +| _, [] => left +| h1::t1, h2::t2 => +if cmp(h1, h2) +then h1 :: List.merge(cmp, t1, right) +else h2 :: List.merge(cmp,left, t2) +end +in + +let List.sort: ((?, ?) -> Bool, [?]) -> [?] = +fun cmp, list -> +let merge_sort_helper: [?] -> [?] = fun l -> +case l +| [] => ? +| [x] => [x] +| _ => ?? +end +in merge_sort_helper(list) +in +test 2 == List.nth(List.sort(fun a, b -> a '. DO NOT use spaces to separate function arguments.", + "- There is no dot accessor notation for tuples; DO NOT use tuple.field. use pattern matching for destructuring: let (field, _) = tuple in ...", + "- The following ARE NOT Hazel keywords. DO NOT use these keywords: switch, with, of, rec. ALWAYS omit these keywords", + "- Pattern matching is ALWAYS written a 'case ... end' expression. Cases MUST END in an 'end' keyword. DO NOT USE any other keyword besides 'case' to do pattern matching. DO NOT USE a 'with' or 'of' keyword with 'case', just start the list of rules. Pattern matching rules use syntax '| pattern => expression'. Note the '=>' arrow.", + "- The ONLY way to define a named function is by using a function expression nested in a let expression like 'let = fun -> in { + /* If expected_ty not unknown, filter ctx to only include vars consistent with that type, + or of arrow type where return type is consistent with that type. convert the var names and types + to strings and seperte with commas. + */ + switch (expected_ty) { + | Unknown(_) => "LSP: No variables in scope are obviously relevant here\n" + | expected_ty => + let nontrivially_consistent = + (ctx: Ctx.t, ty_expect: Typ.t, ty_given: Typ.t): bool => + switch (ty_expect, ty_given) { + //| (Unknown(_), _) + | (_, Unknown(_)) => false + | _ => Typ.is_consistent(ctx, ty_expect, ty_given) + }; + let ctx' = + List.filter_map( + fun + | Ctx.VarEntry({name, typ: Arrow(_, typ), _}) + | Ctx.ConstructorEntry({name, typ: Arrow(_, typ), _}) + when nontrivially_consistent(ctx, expected_ty, typ) => + Some(name ++ ": " ++ Typ.to_string(typ)) + | Ctx.VarEntry({name, typ, _}) + | Ctx.ConstructorEntry({name, typ, _}) + when nontrivially_consistent(ctx, expected_ty, typ) => + Some(name ++ ":" ++ Typ.to_string(typ)) + | _ => None, + ctx, + ); + "LSP: Consider using the following functions and constructors relevant to the expected type:\n " + ++ String.concat(",\n ", ctx') + ++ "\n"; + }; +}; + +let mk_user_message = (~expected_ty, sketch: string): string => + "{\n" + ++ String.concat( + ",\n", + List.filter_map( + Fun.id, + [ + Some("sketch: " ++ sketch), + Option.map(Printf.sprintf("expected_ty: %s"), expected_ty), + ], + ), + ) + ++ ",\n}"; + +let init_prompt = (~expected_ty, ~sketch, samples, system_prompt) => + OpenAI.[{role: System, content: String.concat("\n", system_prompt)}] + @ Util.ListUtil.flat_map( + ((sketch, expected_ty, completion)): list(OpenAI.message) => + [ + {role: User, content: mk_user_message(sketch, ~expected_ty)}, + {role: Assistant, content: completion}, + ], + samples, + ) + @ [{role: User, content: mk_user_message(sketch, ~expected_ty)}]; + +let get_samples = (num_examples, samples) => + switch (Util.ListUtil.split_n_opt(num_examples, samples)) { + | Some(samples) => + samples |> fst |> List.map(((s, t, u)) => (s, Some(t), u)) + | None => [] + }; + +let prompt = + ( + {instructions, syntax_notes, num_examples, expected_type, _}: FillerOptions.t, + ~settings: Settings.t, + ~ctx_init, + editor: Editor.t, + ) + : option(OpenAI.prompt) => { + let* ctx = editor |> ChatLSP.Type.ctx(~settings, ~ctx_init); + let mode = editor |> ChatLSP.Type.mode(~settings, ~ctx_init); + let sketch = editor |> Printer.to_string_editor(~holes=Some("?")); + let+ () = String.trim(sketch) == "" ? None : Some(); + let system_prompt = + (instructions ? main_prompt : []) + @ (syntax_notes ? hazel_syntax_notes : []); + let samples = get_samples(num_examples, samples); + let expected_ty = + expected_type ? Some(ChatLSP.Type.expected(~ctx, mode)) : None; + //let _selected_ctx = ctx_prompt(ctx, ChatLSP.Type.expected_ty(~ctx, mode)); + let prompt = init_prompt(~expected_ty, ~sketch, samples, system_prompt); + prompt; +}; + +let get_top_level_errs = (init_ctx, mode, top_ci: option(Info.exp)) => { + let self: Self.t = + switch (top_ci) { + | Some({self: Common(self), _}) => self + | Some({self: Free(_), _}) => Just(Unknown(Internal)) + | None => Just(Unknown(Internal)) + }; + let status = Info.status_common(init_ctx, mode, self); + switch (status) { + | InHole(Inconsistent(Expectation({ana, syn}))) => [ + "The suggested filling has the wrong expected type: expected " + ++ Typ.to_string(ana) + ++ ", but got " + ++ Typ.to_string(syn) + ++ ".", + ] + | _ => [] + }; +}; + +let get_parse_err = (filling): Result.t(Zipper.t, string) => + switch (Printer.paste_into_zip(Zipper.init(), filling)) { + | None => Error("Undocumented parse error, no feedback available") + | Some(filling_z) => + //TODO(andrew): for syntax errors, also collect bad syntax eg % operator + switch (Printer.of_backpack(filling_z)) { + | [_, ..._] as orphans => + Error( + "The parser has detected the following unmatched delimiters:. The presence of a '=>' in the list likely indicates that a '->' was mistakingly used in a case expression: " + ++ String.concat(", ", orphans), + ) + | [] => Ok(filling_z) + } + }; + +let mk_round_report = + (~settings, ~init_ctx, ~mode, reply: OpenAI.reply): round_report => + switch (get_parse_err(reply.content)) { + | Error(err) => {reply, error_report: ParseError(err)} + | Ok(filling_z) => + let (top_ci, info_map) = + ChatLSP.get_info_and_top_ci_from_zipper( + ~settings, + ~ctx=init_ctx, + filling_z, + ); + { + reply, + error_report: + StaticErrors( + get_top_level_errs(init_ctx, mode, top_ci) + @ ChatLSP.Errors.collect_static(info_map), + ), + }; + }; + +let error_reply = + ( + ~settings: Settings.t, + ~init_ctx: Ctx.t, + ~mode: Mode.t, + reply: OpenAI.reply, + ) + : option(string) => { + //TODO(andrew): this is implictly specialized for exp only + let wrap = (intro, errs) => + Some( + [intro] + @ errs + @ [ + "Please try to address the error(s) by updating your previous code suggestion", + "Please respond ONLY with the update suggestion", + ] + |> String.concat("\n"), + ); + switch (mk_round_report(~settings, ~init_ctx, ~mode, reply).error_report) { + | ParseError(err) => wrap("The following parse error occured:", [err]) + | StaticErrors(errs) => + wrap("The following static errors were discovered:", errs) + }; +}; + +/* + + TODO(andrew): incorporate this into syntax error reporting + levels of syntax error: + + general checks: + a. get list of all backpack items (use label + shards to get actual delim) + b. check if exist unbound kw: if, then, else, let, in, fun, case, test, end + c. check if exist unbound false kws: match, of, with + d. check if exist multiholes + + heuristics: + if rule (|,=>) in backpack, suggest => instead of -> (check for ->?) + if case, test in backpack, suggest end might be missing/unrecognized + if let, type in backpack, suggest in might be missing/unrecognized + if ( or [: suggest ) or ] might be missing + + // check if these exist unbound + reserved: if, then, else, let, in, fun, case, test, end + + + 1: backpack empty, but exist multiholes: + 1a check for reserved/ false reserved + 1b suggest function application syntax + + */ +/*print_endline("TESTING: ChatLSP.Errors.collect:"); + print_endline( + ChatLSP.Errors.collect_static(info_map) |> String.concat("\n"), + );*/ diff --git a/src/haz3lweb/view/assistant/FillerOptions.re b/src/haz3lweb/view/assistant/FillerOptions.re new file mode 100644 index 0000000000..fcdd5013f5 --- /dev/null +++ b/src/haz3lweb/view/assistant/FillerOptions.re @@ -0,0 +1,20 @@ +open Sexplib.Std; + +[@deriving (show({with_path: false}), sexp, yojson)] +type t = { + llm: OpenAI.chat_models, + instructions: bool, + syntax_notes: bool, + num_examples: int, + expected_type: bool, + error_round: bool, +}; + +let init: t = { + llm: Azure_GPT4, + instructions: true, + syntax_notes: true, + num_examples: 9, + expected_type: true, + error_round: true, +}; diff --git a/src/haz3lweb/view/assistant/Oracle.re b/src/haz3lweb/view/assistant/Oracle.re new file mode 100644 index 0000000000..d8b3ac7b97 --- /dev/null +++ b/src/haz3lweb/view/assistant/Oracle.re @@ -0,0 +1,41 @@ +open Haz3lcore; + +let sanitize_prompt = (prompt: string): string => { + //HACK: replacement of ?? below + let prompt = Str.global_replace(Str.regexp("\\?\\?"), "", prompt); + let prompt = + if (Str.string_match(Str.regexp("^\".*\"$"), prompt, 0)) { + String.sub(prompt, 1, String.length(prompt) - 2); + } else { + prompt; + }; + prompt; +}; + +let ask = (model: Model.t): option(OpenAI.prompt) => { + let editor = model.editors |> Editors.get_editor; + let system_prompt = [ + "Respond as minimally as possible", + "Do not include a period at the end of your response", + ]; + let body = Printer.to_string_selection(editor); + let body = sanitize_prompt(body); + switch (String.trim(body)) { + | "" => None + | _ => + let prompt = + [OpenAI.{role: System, content: String.concat("\n", system_prompt)}] + @ [{role: User, content: body}]; + Some(prompt); + }; +}; + +let sanitize_response: string => string = + Str.global_replace(Str.regexp("\""), "'"); + +let quote = s => "\"" ++ s ++ "\""; + +let react = (response: string): UpdateAction.t => { + let response = response |> sanitize_response |> quote; + Paste(response); +}; diff --git a/src/haz3lweb/view/assistant/UpdateAssistant.re b/src/haz3lweb/view/assistant/UpdateAssistant.re index ce17660501..565d608dbc 100644 --- a/src/haz3lweb/view/assistant/UpdateAssistant.re +++ b/src/haz3lweb/view/assistant/UpdateAssistant.re @@ -1,6 +1,13 @@ open Haz3lcore; include UpdateAction; +let trim_indents = s => + Js_of_ocaml.Regexp.global_replace( + Js_of_ocaml.Regexp.regexp("\n(\\s)*"), + s, + "\n", + ); + /* NOTE: this is duplicated from Update */ let perform_action = (model: Model.t, a: Action.t): Result.t(Model.t) => { let ed_init = Editors.get_editor(model.editors); @@ -10,6 +17,26 @@ let perform_action = (model: Model.t, a: Action.t): Result.t(Model.t) => { }; }; +let schedule_prompt = (zipper: Zipper.t, ~schedule_action): unit => + switch ( + zipper.caret, + zipper.relatives.siblings |> snd, + zipper.relatives.siblings |> fst |> List.rev, + ) { + | (Inner(_, c), [Tile({label: [s], _}), ..._], _) + when + Str.string_match(Str.regexp("^\".*\\?\"$"), s, 0) + && c == String.length(s) + - 2 => + schedule_action(PerformAction(Select(Term(Current)))); + schedule_action(Assistant(Prompt(Oracle))); + | (Outer, _, [Tile({label: [s], _}), ..._]) + when Str.string_match(Str.regexp("^\\?$"), s, 0) => + schedule_action(PerformAction(Select(Term(Current)))); + schedule_action(Assistant(Prompt(Filler(FillerOptions.init)))); + | _ => () + }; + let reset_buffer = (model: Model.t) => { let ed = model.editors |> Editors.get_editor; let z = ed.state.zipper; @@ -38,6 +65,83 @@ let apply = let editor = model.editors |> Editors.get_editor; let z = editor.state.zipper; switch (update) { + | Prompt(Weather) => + WeatherAPI.request(req => + switch (WeatherAPI.handle(req)) { + | Some(str) => schedule_action(Paste(Form.string_quote(str))) + | None => print_endline("WeatherAPI: response parse failed") + } + ); + Ok(model); + | Prompt(Oracle) => + switch (Oracle.ask(model)) { + | None => print_endline("Oracle: prompt generation failed") + | Some(prompt) => + OpenAI.start_chat(~llm=Azure_GPT4, prompt, req => + switch (OpenAI.handle_chat(req)) { + | Some({content, _}) => schedule_action(Oracle.react(content)) + | None => print_endline("Assistant: response parse failed") + } + ) + }; + Ok(model); + | Prompt(Filler({llm, _} as filter_otions)) => + let schedule_if_auto = action => + switch (model.meta.auto.current_script) { + | None => () + | Some(name) => schedule_action(SetMeta(Auto(action(name)))) + }; + let ctx_init = Editors.get_ctx_init(~settings, model.editors); + let add_round = add => schedule_if_auto(name => UpdateResult(name, add)); + switch (Filler.prompt(filter_otions, ~settings, ~ctx_init, editor)) { + | None => print_endline("Filler: prompt generation failed") + | Some(prompt) => + print_endline("GENERATED PROMPT:\n " ++ OpenAI.show_prompt(prompt)); + OpenAI.start_chat(~llm, prompt, req => + switch (OpenAI.handle_chat(req)) { + | Some(reply) => + switch ( + ChatLSP.Type.ctx(~settings, ~ctx_init, editor), + ChatLSP.Type.mode(~settings, ~ctx_init, editor), + ) { + | (Some(init_ctx), Some(mode)) => + add_round(AddRoundOne(settings, init_ctx, mode, reply)); + switch (Filler.error_reply(~settings, ~init_ctx, ~mode, reply)) { + | None => + print_endline("first round response:\n " ++ reply.content); + schedule_action( + Assistant(SetBuffer(trim_indents(reply.content))), + ); + schedule_if_auto(_ => EndTest()); + | Some(err_msg) => + print_endline("first round: errors detected:" ++ err_msg); + OpenAI.reply_chat( + ~llm, prompt, ~assistant=reply.content, ~user=err_msg, req => + switch (OpenAI.handle_chat(req)) { + | Some(reply2) => + add_round(AddRoundTwo(settings, init_ctx, mode, reply2)); + print_endline( + "second round response:\n " ++ reply2.content, + ); + schedule_action( + Assistant(SetBuffer(trim_indents(reply2.content))), + ); + schedule_if_auto(_ => EndTest()); + | None => print_endline("Filler: handler failed") + } + ); + }; + | _ => + print_endline( + "ERROR: UpdateAssistant: Filler: prompt generation failed", + ); + (); + } + | None => print_endline("Filler: handler failed") + } + ); + }; + Ok(model); | Prompt(TyDi) => let ctx_init = Editors.get_ctx_init(~settings, model.editors); switch (TyDi.set_buffer(~settings=settings.core, ~ctx=ctx_init, z)) { @@ -91,5 +195,16 @@ let apply = main(model, Paste(completion), state, ~schedule_action) } } + | SetBuffer(response) => + switch (Printer.paste_into_zip(Zipper.init(), response)) { + | None => Error(CantSuggest) + | Some(response_z) => + let content = Zipper.unselect_and_zip(response_z); + let z = Zipper.set_buffer(editor.state.zipper, ~content, ~mode=Parsed); + //HACK(andrew): below is not strictly a insert action... + let editor = Editor.new_state(Insert(response), z, editor); + let editors = Editors.put_editor(editor, model.editors); + Ok({...model, editors}); + } }; }; diff --git a/src/haz3lweb/view/dec/PieceDec.re b/src/haz3lweb/view/dec/PieceDec.re index e726352671..f6dfd27134 100644 --- a/src/haz3lweb/view/dec/PieceDec.re +++ b/src/haz3lweb/view/dec/PieceDec.re @@ -11,7 +11,7 @@ module Profile = { type style = | Root(Measured.Point.t, Measured.Point.t) | Selected(shard, shard) - | SelectedBuffer(shard, shard); + | SelectedEphemeral(shard, shard); type t = { style, @@ -416,7 +416,7 @@ let view = tiles, ), ] - | SelectedBuffer(i, j) => [ + | SelectedEphemeral(i, j) => [ chunky_shard( ~style_cls="selected-buffer", ~font_metrics, diff --git a/src/haz3lweb/www/style.css b/src/haz3lweb/www/style.css index 1689eb6cbc..278f9b0da2 100644 --- a/src/haz3lweb/www/style.css +++ b/src/haz3lweb/www/style.css @@ -179,6 +179,7 @@ 17px 33.9px 42.7px -2.1px hsl(var(--shadow-color) / 0.34), 25px 50px 62.9px -2.5px hsl(var(--shadow-color) / 0.34); + --link-gradient: linear-gradient(-90deg, #ee7752 0%, #e73c7e 10%, #23a6d5 30%, #23d5ab 50%, #23a6d5 70%, #e73c7e 90%, #ee7752 100%); } /* BASE ELEMENTS */ @@ -738,6 +739,14 @@ select { color: var(--code-emphasis) !important; } +.code .token.active-prompt { + background: var(--link-gradient); + background-size: 800% 800%; + animation: gradient 12s linear infinite alternate; + color: white !important; + text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.9); +} + .code .token.explicit-hole { color: #ffd04f !important; text-shadow: 1px 1px 0px rgb(45, 34, 6), -0.5px -0.5px 0 #ff9b00; @@ -1942,3 +1951,40 @@ svg.expandable path { top: -1em; left: -1em; } + +/* Assistant */ + +@keyframes gradient { + 0% { + background-position: 0% 0%; + } + 100% { + background-position: 400% 0%; + } +} + +.mvu-render .DHCode { + /*TODO(andrew):unhardcode*/ + display: inline-flex; + background-color: #fffcf3; + color: #586e75; + border-radius: 0.2em; +} + +@keyframes backgroundColorPalette { + 0% { + background: #ee6055; + } + 25% { + background: #60d394; + } + 50% { + background: #aaf683; + } + 75% { + background: #ffd97d; + } + 100% { + background: #f785ff; + } +} From 5c1dd799a4590b11b7e8d9a0752fb1bf029705e1 Mon Sep 17 00:00:00 2001 From: disconcision Date: Fri, 25 Aug 2023 18:30:04 -0400 Subject: [PATCH 02/22] fix operator bug with . --- src/haz3lcore/lang/Form.re | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/haz3lcore/lang/Form.re b/src/haz3lcore/lang/Form.re index fb53904bd8..39fa44e30e 100644 --- a/src/haz3lcore/lang/Form.re +++ b/src/haz3lcore/lang/Form.re @@ -135,7 +135,7 @@ let is_potential_operand = regexp("^[a-zA-Z0-9_'\\.?]+$"); * delimiters, string delimiters, or the instant expanding paired * delimiters: ()[]| */ let is_potential_operator = - regexp("^[^a-zA-Z0-9_'\\.?\"#⏎\\s|\\[\\]\\(\\)]+$"); + regexp("^[^a-zA-Z0-9_'?\"#⏎\\s|\\[\\]\\(\\)]+$"); let is_potential_token = t => is_potential_operand(t) || is_potential_operator(t) From 6083114177d6cbec34cab66ec1fc3a4e415c224f Mon Sep 17 00:00:00 2001 From: disconcision Date: Fri, 25 Aug 2023 18:38:06 -0400 Subject: [PATCH 03/22] restore accidentally deleted fns; cleanup --- src/haz3lcore/Hyper.re | 7 +------ src/haz3lcore/dynamics/Elaborator.re | 14 ++++++++------ src/haz3lcore/zipper/Editor.re | 2 ++ src/haz3lcore/zipper/Printer.re | 7 +++++++ 4 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/haz3lcore/Hyper.re b/src/haz3lcore/Hyper.re index 5aa1e1861c..a9113c2b56 100644 --- a/src/haz3lcore/Hyper.re +++ b/src/haz3lcore/Hyper.re @@ -1,10 +1,5 @@ let export_id = "10000137-0000-0000-0000-000000000000" |> Uuidm.of_string |> Option.get; -//let export_slide = 1; let export_str = "EXPORT"; -let _is_export = (==)(export_str); -let regexp = (r, s) => - Js_of_ocaml.Regexp.string_match(Js_of_ocaml.Regexp.regexp(r), s, 0) - |> Option.is_some; -let is_export = regexp("^EXPORT$"); +let is_export = (==)(export_str); diff --git a/src/haz3lcore/dynamics/Elaborator.re b/src/haz3lcore/dynamics/Elaborator.re index d2a61f6b61..ebc7c0f03d 100644 --- a/src/haz3lcore/dynamics/Elaborator.re +++ b/src/haz3lcore/dynamics/Elaborator.re @@ -289,7 +289,7 @@ let rec dhexp_of_uexp = | Some((InfoPat(_) | InfoTyp(_) | InfoTPat(_)) as ci) => Printf.printf( "Elaborate: Exp: Infomap returned wrong sort: %s\n", - ci |> Info.show, + Info.show(ci), ); None; | None => @@ -355,13 +355,15 @@ and dhpat_of_upat = (m: Statics.Map.t, upat: Term.UPat.t): option(DHPat.t) => { wrap(dp); }; | Some((InfoExp(_) | InfoTyp(_) | InfoTPat(_)) as ci) => - print_endline("Elaborate: Pat: Infomap returned wrong sort:"); - print_endline(ci |> Info.show); + Printf.printf( + "Elaborate: Pat: Infomap returned wrong sort: %s\n", + Info.show(ci), + ); None; | None => - print_endline( - "Elaborate: Pat: Infomap lookup failed; id: " - ++ Id.to_string(Term.UPat.rep_id(upat)), + Printf.printf( + "Elaborate: Pat: Infomap lookup failed for: %s\n", + Id.to_string(Term.UPat.rep_id(upat)), ); None; }; diff --git a/src/haz3lcore/zipper/Editor.re b/src/haz3lcore/zipper/Editor.re index 802b7b5052..06e7399a01 100644 --- a/src/haz3lcore/zipper/Editor.re +++ b/src/haz3lcore/zipper/Editor.re @@ -110,6 +110,8 @@ let update_z = (f: Zipper.t => Zipper.t, ed: t) => { }; let put_z = (z: Zipper.t) => update_z(_ => z); +let get_z = ed => ed.state.zipper; + let update_z_opt = (f: Zipper.t => option(Zipper.t), ed: t) => { open OptUtil.Syntax; let+ z = f(ed.state.zipper); diff --git a/src/haz3lcore/zipper/Printer.re b/src/haz3lcore/zipper/Printer.re index e9b88508b7..15b29c0f35 100644 --- a/src/haz3lcore/zipper/Printer.re +++ b/src/haz3lcore/zipper/Printer.re @@ -152,3 +152,10 @@ let paste_into_zip = (z: Zipper.t, str: string): option(Zipper.t) => { } }; }; + +let of_backpack = (z: Zipper.t): list(string) => { + let to_string = (s: Selection.t): string => { + s.content |> of_segment(~holes=None); + }; + List.map(to_string, z.backpack); +}; From af1d0a225a1760a9a2a7d234843f1b09ac1768df Mon Sep 17 00:00:00 2001 From: disconcision Date: Fri, 25 Aug 2023 18:55:36 -0400 Subject: [PATCH 04/22] cleanup --- src/haz3lcore/lang/Form.re | 20 +------- src/haz3lcore/lang/Molds.re | 63 ++------------------------ src/haz3lcore/statics/Info.re | 1 + src/haz3lcore/zipper/Zipper.re | 40 ++++++---------- src/haz3lcore/zipper/action/Perform.re | 12 +---- src/haz3lweb/Editors.re | 20 ++------ src/haz3lweb/Keyboard.re | 11 ++--- src/haz3lweb/Main.re | 5 +- src/haz3lweb/ProgramEvaluator.re | 5 +- src/haz3lweb/Update.re | 5 +- src/haz3lweb/view/Cell.re | 20 ++------ src/haz3lweb/view/Code.re | 4 +- src/haz3lweb/view/CursorInspector.re | 7 --- src/haz3lweb/view/Deco.re | 3 +- src/haz3lweb/view/Page.re | 2 +- src/haz3lweb/view/dec/PieceDec.re | 4 +- 16 files changed, 44 insertions(+), 178 deletions(-) diff --git a/src/haz3lcore/lang/Form.re b/src/haz3lcore/lang/Form.re index 39fa44e30e..a4852f9bbb 100644 --- a/src/haz3lcore/lang/Form.re +++ b/src/haz3lcore/lang/Form.re @@ -112,23 +112,8 @@ let is_keyword = regexp("^(" ++ String.concat("|", keywords) ++ ")$"); let is_reserved_keyword = regexp("^(" ++ String.concat("|", reserved_keywords) ++ ")$"); -//let partial_symbolic_delims = ["\\[", "\\]", "\\(", "\\)", "|"]; -//let exceptional_symbol_delims = ["=", "=>", "->"]; - -/* - TODO(andrew): weird examples - insert '=' in 'let a><|!true' (get bad op '=!') - insert '-' in 1+|1 (get bad op '+-') - should we allow '=>' or '->' or '|' inside operators? currently implictly yes - */ - /* Potential tokens: These are fallthrough classes which determine - * the behavior when inserting a character in contact with a token; - * should the character be appended to an existing token or create - * a new one? Basically if there is no other mold, we - * TODO(andrew): finish description - TODO(andrew): ? below is temporary addition to allow ? as explicit hole - */ + * the behavior when inserting a character in contact with a token */ let is_potential_operand = regexp("^[a-zA-Z0-9_'\\.?]+$"); /* Anything else is considered a potential operator, as long * as it does not contain any whitespace, linebreaks, comment @@ -193,7 +178,7 @@ let tuple_lbl = [tuple_start, tuple_end]; let empty_tuple = tuple_start ++ tuple_end; let is_empty_tuple = (==)(empty_tuple); -/* TODO(andrew): docuement */ +/* TODO(andrew): document or remove */ let is_filler_prompt = regexp("^\\?\\?$"); let is_oracle_prompt = regexp("^\".*\\?\\?\"$"); let is_prompt = str => is_filler_prompt(str) || is_oracle_prompt(str); @@ -355,7 +340,6 @@ let is_atomic = t => atomic_molds(t) != []; let is_delim = t => List.mem(t, delims); let is_valid_token = t => is_atomic(t) || is_secondary(t) || is_delim(t); -let is_valid_nonpoly_token = t => is_valid_token(t) && t != "="; let mk_atomic = (sort: Sort.t, t: Token.t) => { assert(is_atomic(t)); diff --git a/src/haz3lcore/lang/Molds.re b/src/haz3lcore/lang/Molds.re index b19bece388..8dd7a114ba 100644 --- a/src/haz3lcore/lang/Molds.re +++ b/src/haz3lcore/lang/Molds.re @@ -113,71 +113,14 @@ let instant_expansion: Token.t => (list(Token.t), Direction.t) = let is_delayed = kw => List.length(delayed_expansion(kw) |> fst) > 1; -/* - - TODO(andrew): cleanup - - Maybe more advanced token allow logic: - - Goal: Try to preserve the prefix-validity of tokens as much as possible - when inserting/deleting characters, but allow the creation of prefix- - invalid tokens as a fallthrough. Always be willing to split on insert - to maintain prefix-validity, but allow the creation of prefix-invalid - tokens for deletes which would otherwise be no-ops. - - Or: if insert/delete results in a thing which is no longer a prefix - of a valid token, then we split it into the largest prefix of - a valid token and up to two more tokens; if there are two, one is - a single character (doesn't quite work for delete; we can't guarantee - the existence of such a split eg if lang consists of single "yo", deleting - the "y" leaves no possible prefixes) - - for this to be nice if we could establish that the split - must always occur at the caret; otherwise it might be confusing. - - precondition: caret is either inside a token, or between two tokens - any tokens are prefix-valid - - insert between case: attempt to append to left, then the right, otherwise new - (so everything always prefix-valid) - - insert inside case: attempt to insert. otherwise go to between case - (so everything always prefix-valid) - delete from right: can't effect prefix-validity - delete from left/inside: ??? allow create prefix-invalid ??? - delete-merge (when delete an intervening seg, pushing two tokens together): - if the result is a valid token, great; otherwise ??? allow create prefix-invalid ??? - - - */ - -//let is_instant = kw => List.length(instant_expansion(kw) |> fst) > 1; - -//let append_safe = char => -// !is_instant(char) -// && !Form.is_secondary(char) -// && !(Form.is_string_delim(char) || Form.is_comment_delim(char)); - let allow_merge = (l: Token.t, r: Token.t): bool => Form.is_potential_token(l ++ r); -// Form.is_valid_token(l ++ r) -// || !(Form.is_valid_token(l) && Form.is_valid_token(r)); -// alternatively, require l++r is valid (simpler, more restrictiive) let allow_append_right = (t: Token.t, char: string): bool => - Form.is_potential_token(t ++ char); //&& append_safe(char); -/* - Form.is_valid_token(t ++ char) - || ( - !Form.is_valid_token(t ++ char) - && !(Form.is_valid_token(t) && Form.is_valid_token(char)) - ) && append_safe(char)*/ + Form.is_potential_token(t ++ char); let allow_append_left = (char: string, t: Token.t): bool => - Form.is_potential_token(t ++ char); // && append_safe(char); -// Form.is_valid_token(char ++ t) -// || (!Form.is_valid_token(t) && !Form.is_valid_token(char)) && append_safe(char) + Form.is_potential_token(t ++ char); let allow_insertion = (_char: string, _t: Token.t, new_t: Token.t): bool => - Form.is_potential_token(new_t); // && append_safe(char); -// Form.is_valid_token(new_t) || !Form.is_valid_token(t) && append_safe(char); + Form.is_potential_token(new_t); diff --git a/src/haz3lcore/statics/Info.re b/src/haz3lcore/statics/Info.re index 5397e2c5a5..6d108493f7 100644 --- a/src/haz3lcore/statics/Info.re +++ b/src/haz3lcore/statics/Info.re @@ -51,6 +51,7 @@ type error_no_type = | MultiError /* Invalid expression token, treated as hole */ | BadToken(Token.t) + /* Empty application of function with inconsistent type */ | BadTrivAp(Typ.t) /* Sum constructor neiter bound nor in ana type */ | FreeConstructor(Constructor.t); diff --git a/src/haz3lcore/zipper/Zipper.re b/src/haz3lcore/zipper/Zipper.re index d449eaec50..4ba3f800d4 100644 --- a/src/haz3lcore/zipper/Zipper.re +++ b/src/haz3lcore/zipper/Zipper.re @@ -377,33 +377,19 @@ let is_linebreak_to_right_of_caret = | _ => false }; }; -//TODO(andrew): document -//TODO(andrew): generalize to actually get everything down -//TODO(andrew): for going back and adding lets... maybe incorporate newlines -/* - IDEA: maybe case on situation where there's nothing to the righ of the caret - except whitespace/grout until the next newline. in that case use existing - logic, but if there is something, try to drop as soon as possible? - idea is youre targetting the restructuring case where you just - picked something up - - IDEA: above logic works well for as-you-type, but not restructuring. - for example, if the top of the backpack is a leading delimiter, - which means you must have picked it up. maybe you want to drop those - as soon as possible? - - */ + +/* Try to complete the syntax to give better semantic feeback. + * This is a best-effort approach focussed on adding new definitions + * as opposed to restructuring; it does not complete the syntax in + * all cases. + * + * NOTE: Setting the caret to outer was necessary to 'get it past' + * string literals, i.e. offer live feeback when typing inside a + * string; not sure if this is a hack or not, it may be compensating + * for the put_down logic not working right with string lits. To test, + * try to look at live evaluation while typing inside a string lit with + * stuff left to drop in backpack with below set: Outer disabled. */ let try_to_dump_backpack = (zipper: t) => { - /*NOTE(andrew): setting caret to outer - was necessary to 'get it past' string literals, i.e. - offer live feeback when typing inside a string; - not sure if this is a hack or not, it may be - compensating with the put_down logic not working - right with string lits or something. to test, - try to look at live evaluation while typing inside a - strring lit with stuff left to drop in backpack - with below set: Outer disabled. - */ switch (zipper.backpack) { | [] => zipper | _ => @@ -450,7 +436,7 @@ let try_to_dump_backpack = (zipper: t) => { }; let smart_seg = (~dump_backpack: bool, ~erase_buffer: bool, z: t) => { - let z = erase_buffer ? clear_unparsed_buffer(z) : z; //need to do this before trying to dump backpack + let z = erase_buffer ? clear_unparsed_buffer(z) : z; let z = dump_backpack ? try_to_dump_backpack(z) : z; unselect_and_zip(~erase_buffer, z); }; diff --git a/src/haz3lcore/zipper/action/Perform.re b/src/haz3lcore/zipper/action/Perform.re index d572e94220..bac0a0cd09 100644 --- a/src/haz3lcore/zipper/action/Perform.re +++ b/src/haz3lcore/zipper/action/Perform.re @@ -88,16 +88,6 @@ let go_z = | Select(Smart) => /* If the current tile is not coincident with the term, select the term. Otherwise, select the parent term. */ - /* TODO(andrew): Maybe a better logic for this: Next - reasonable enclosure. Define 'enclosures' of a token to - be terms and tiles that include that token. Then for a - given token, itsenclosures are totally ordered by inclusion. - Doubleclicking gives the minimum enclosure, triple-clicking - gives the second-most minimum enclosure, which will be - (check) either the current term, the parent tile, or the - parent term. But would need to be careful to force that - the original tile is included; e.g. in an Ap the parent - tile doesn't include the funpos. */ let tile_is_term = switch (Indicated.index(z)) { | None => false @@ -106,7 +96,7 @@ let go_z = if (!tile_is_term) { select_term_current(z); } else { - //TODO: perf + //PERF: this is expensive let (term, _) = MakeTerm.from_zip_for_view(z); let statics = Interface.Statics.mk_map(settings, term); let target = diff --git a/src/haz3lweb/Editors.re b/src/haz3lweb/Editors.re index d8e311616d..cfdaff6206 100644 --- a/src/haz3lweb/Editors.re +++ b/src/haz3lweb/Editors.re @@ -153,28 +153,14 @@ let get_spliced_elabs = : list((ModelResults.key, DHExp.t, Environment.t)) => { settings.core.dynamics ? { - let ctx_init = - try(get_ctx_init(~settings, editors)) { - | _ => - print_endline("exception in get_ctx_init"); - failwith("exception in get_ctx_init"); - }; - let env_init = - try(get_env_init(~settings, editors)) { - | _ => - print_endline("exception in get_env_init"); - failwith("exception in get_env_init"); - }; + let ctx_init = get_ctx_init(~settings, editors); + let env_init = get_env_init(~settings, editors); switch (editors) { | DebugLoad => [] | Scratch(idx, slides) => let current_slide = List.nth(slides, idx); let (key, d) = - try(ScratchSlide.spliced_elab(~settings, ~ctx_init, current_slide)) { - | _ => - print_endline("exception in ScratchSlide.spliced_elab"); - failwith("exception in ScratchSlide.spliced_elab"); - }; + ScratchSlide.spliced_elab(~settings, ~ctx_init, current_slide); [(key, d, env_init)]; | Examples(name, slides) => let current_slide = List.assoc(name, slides); diff --git a/src/haz3lweb/Keyboard.re b/src/haz3lweb/Keyboard.re index c228f72399..a9387bc1a4 100644 --- a/src/haz3lweb/Keyboard.re +++ b/src/haz3lweb/Keyboard.re @@ -22,9 +22,6 @@ let handle_key_event = (k: Key.t, ~model: Model.t): option(Update.t) => { } | {key: D(key), sys: _, shift: Down, meta: Up, ctrl: Up, alt: Up} when is_f_key(key) => - //TODO(andrew): clarify when we drop and show buffer - let get_term = z => z |> MakeTerm.from_zip_for_view |> fst; - switch (key) { | "F1" => zipper |> Zipper.show |> print | "F2" => zipper |> Zipper.unselect_and_zip |> Segment.show |> print @@ -37,7 +34,8 @@ let handle_key_event = (k: Key.t, ~model: Model.t): option(Update.t) => { | "F4" => let ctx_init = Editors.get_ctx_init(~settings, model.editors); zipper - |> get_term + |> MakeTerm.from_zip_for_view + |> fst |> Interface.Statics.mk_map_ctx(settings.core, ctx_init) |> Statics.Map.show |> print; @@ -53,7 +51,8 @@ let handle_key_event = (k: Key.t, ~model: Model.t): option(Update.t) => { let ctx_init = Editors.get_ctx_init(~settings, model.editors); let map = zipper - |> get_term + |> MakeTerm.from_zip_for_view + |> fst |> Interface.Statics.mk_map_ctx(settings.core, ctx_init); switch (index) { | Some(index) => @@ -72,7 +71,7 @@ let handle_key_event = (k: Key.t, ~model: Model.t): option(Update.t) => { ); zipper |> Zipper.seg_for_sem |> Segment.show |> print; | _ => None - }; + } | {key: D(key), sys: _, shift, meta: Up, ctrl: Up, alt: Up} => switch (shift, key) { | (Up, "ArrowLeft") => now(Move(Local(Left(ByChar)))) diff --git a/src/haz3lweb/Main.re b/src/haz3lweb/Main.re index b959c7f6a1..a0dc5643b4 100644 --- a/src/haz3lweb/Main.re +++ b/src/haz3lweb/Main.re @@ -51,7 +51,10 @@ let apply = (model, action, state, ~schedule_action): Model.t => { new_model; }) { | exc => - print_endline("ERROR: Exception during apply:"); + Printf.printf( + "ERROR: Exception during apply: %s\n", + Printexc.to_string(exc), + ); Error(Exception(Printexc.to_string(exc))); } ) { diff --git a/src/haz3lweb/ProgramEvaluator.re b/src/haz3lweb/ProgramEvaluator.re index 15fc53a129..b23300f39b 100644 --- a/src/haz3lweb/ProgramEvaluator.re +++ b/src/haz3lweb/ProgramEvaluator.re @@ -38,10 +38,9 @@ module Sync: M with type response = response = { let init = () => (); let get_response = ((): t, (key, d): request) => { - /* NOTE(andrew): I'm not sure how to properly route settings - through the abstractions here; this should be done if this is renabled - */ let lwt = { + /* NOTE(andrew): I'm not sure how to properly route settings + through the abstractions here; this should be done if this is renabled */ let+ r = Lwt.wrap(() => d |> Interface.evaluate(~settings=CoreSettings.on)); let res = diff --git a/src/haz3lweb/Update.re b/src/haz3lweb/Update.re index 299b626059..9b22b7f3f1 100644 --- a/src/haz3lweb/Update.re +++ b/src/haz3lweb/Update.re @@ -266,7 +266,7 @@ let rec apply = | Set(s_action) => let model = update_settings(s_action, model); Model.save(model); - // TODO(andrew): hacky; loading here to load editors if switch + // NOTE: Load here necessary to load editors on switching mode Ok(Model.load(model)); | SetMeta(action) => Ok({...model, meta: meta_update(model, action, ~schedule_action)}) @@ -336,15 +336,12 @@ let rec apply = }; | PerformAction(Insert("?") as a) => let editor = model.editors |> Editors.get_editor; - /*let ctx_init = - Editors.get_ctx_init(~settings=model.settings, model.editors);*/ UpdateAssistant.schedule_prompt(editor.state.zipper, ~schedule_action); perform_action(model, a); | PerformAction(a) when model.settings.core.statics => let model = UpdateAssistant.reset_buffer(model); switch (perform_action(model, a)) { | Ok(model) when Action.is_edit(a) => - //TODO(andrew): cleanup, document UpdateAssistant.apply( model, Prompt(TyDi), diff --git a/src/haz3lweb/view/Cell.re b/src/haz3lweb/view/Cell.re index e34dc3c76f..48792d3b7b 100644 --- a/src/haz3lweb/view/Cell.re +++ b/src/haz3lweb/view/Cell.re @@ -40,21 +40,6 @@ let mousedown_handler = ~mousedown_updates, evt, ) => - /* - new behavior concept: - for atomic forms: - doubleclick: select term ie token - tripleclick: select parent term (e.g. ap for fnpos token) - for non-atomic concave/convex forms: - doubleclick: select token - tripleclick: select term - for chevron forms: - doubleclick: select tile (eg. {let _ = _ in} _) - tripleclick: select term - - possibly additional level if already indicated: - singleclick: select individual token always - */ switch (JsUtil.ctrl_held(evt), JsUtil.num_clicks(evt)) { | (true, _) => let goal = get_goal(~font_metrics, ~target_id, evt); @@ -78,7 +63,6 @@ let mousedown_handler = ); | (false, 2) => inject(PerformAction(Select(Tile(Current)))) | (false, 3 | _) => inject(PerformAction(Select(Smart))) - //| (false, 4 | _) => inject(PerformAction(Select(All))) }; let narrative_cell = (content: Node.t) => @@ -306,7 +290,9 @@ let editor_view = let unselected = Zipper.unselect_and_zip(zipper); let measured = editor.state.meta.measured; let buffer_ids: list(Uuidm.t) = { - //TODO(andrew): document or improve + /* Collect ids of tokens in buffer for styling purposes. This is + * currently necessary as the selection is not persisted through + * unzipping for display */ let buffer = Selection.is_buffer(zipper.selection) ? zipper.selection.content : []; Id.Map.bindings(Measured.of_segment(buffer).tiles) |> List.map(fst); diff --git a/src/haz3lweb/view/Code.re b/src/haz3lweb/view/Code.re index 8a06bea5c2..3a47c4f9f7 100644 --- a/src/haz3lweb/view/Code.re +++ b/src/haz3lweb/view/Code.re @@ -6,7 +6,7 @@ open Util.Web; let of_delim' = Core.Memo.general( - ~cache_size_bound=100000, + ~cache_size_bound=10000, ((is_in_buffer, sort, is_consistent, is_complete, label, i)) => { let cls = switch (label) { @@ -69,7 +69,7 @@ let of_secondary = This means that if there are data dependencies on the functor argument values, they will need to be explictly encoded in the key. - TODO(andrew): Consider setting a limit for the hashtbl size */ + TODO: Consider setting a limit for the hashtbl size */ let piece_hash: Hashtbl.t((list(Uuidm.t), Sort.t, Piece.t, int, Settings.t), list(t)) = Hashtbl.create(10000); diff --git a/src/haz3lweb/view/CursorInspector.re b/src/haz3lweb/view/CursorInspector.re index f5ff3d44a4..330af3a9c0 100644 --- a/src/haz3lweb/view/CursorInspector.re +++ b/src/haz3lweb/view/CursorInspector.re @@ -240,7 +240,6 @@ let view = ), ]); switch (zipper.backpack, Indicated.index(zipper)) { - //| ([_, ..._], _) => err_view("No information while backpack in use") | _ when !settings.core.statics => div_empty | _ when Id.Map.is_empty(info_map) => err_view("No Static information available") @@ -249,12 +248,6 @@ let view = switch (Id.Map.find_opt(id, info_map)) { | None => err_view("Whitespace or Comment") | Some(ci) => - /*if (zipper.backpack != []) { - print_endline("TESTING: ChatLSP.Errors backpack not empty:"); - print_endline( - ChatLSP.Errors.collect_static(info_map) |> String.concat("\n"), - ); - };*/ bar_view([ inspector_view(~inject, ~settings, ~show_lang_doc, ci), div( diff --git a/src/haz3lweb/view/Deco.re b/src/haz3lweb/view/Deco.re index c539e72992..e9aa012952 100644 --- a/src/haz3lweb/view/Deco.re +++ b/src/haz3lweb/view/Deco.re @@ -55,8 +55,7 @@ module Deco = let caret = (id, (-1)); let style: PieceDec.Profile.style = buffer - ? SelectedEphemeral((id, l), (id, r)) - : Selected((id, l), (id, r)); + ? SelectedBuffer((id, l), (id, r)) : Selected((id, l), (id, r)); PieceDec.Profile.{tiles, caret, style}; }; diff --git a/src/haz3lweb/view/Page.re b/src/haz3lweb/view/Page.re index 28c66db5bb..8d6dca6298 100644 --- a/src/haz3lweb/view/Page.re +++ b/src/haz3lweb/view/Page.re @@ -138,7 +138,7 @@ let exercises_view = ExerciseMode.mk( ~settings, ~exercise, - ~results=settings.core.dynamics ? Some(results) : None, //TODO(andrew) + ~results=settings.core.dynamics ? Some(results) : None, ~langDocMessages, ); let toolbar_buttons = diff --git a/src/haz3lweb/view/dec/PieceDec.re b/src/haz3lweb/view/dec/PieceDec.re index f6dfd27134..e726352671 100644 --- a/src/haz3lweb/view/dec/PieceDec.re +++ b/src/haz3lweb/view/dec/PieceDec.re @@ -11,7 +11,7 @@ module Profile = { type style = | Root(Measured.Point.t, Measured.Point.t) | Selected(shard, shard) - | SelectedEphemeral(shard, shard); + | SelectedBuffer(shard, shard); type t = { style, @@ -416,7 +416,7 @@ let view = tiles, ), ] - | SelectedEphemeral(i, j) => [ + | SelectedBuffer(i, j) => [ chunky_shard( ~style_cls="selected-buffer", ~font_metrics, From f961cc71e1e42db02b933905ca2226cdb2284365 Mon Sep 17 00:00:00 2001 From: disconcision Date: Sat, 2 Sep 2023 17:44:46 -0400 Subject: [PATCH 05/22] DHExp to Segment conversion --- src/haz3lweb/DHExpToSeg.re | 206 ++++++++++++++++++ src/haz3lweb/view/Cell.re | 13 +- src/haz3lweb/view/dhcode/layout/DHDoc_Exp.rei | 11 - src/haz3lweb/view/dhcode/layout/DHDoc_Pat.rei | 5 - 4 files changed, 218 insertions(+), 17 deletions(-) create mode 100644 src/haz3lweb/DHExpToSeg.re delete mode 100644 src/haz3lweb/view/dhcode/layout/DHDoc_Exp.rei delete mode 100644 src/haz3lweb/view/dhcode/layout/DHDoc_Pat.rei diff --git a/src/haz3lweb/DHExpToSeg.re b/src/haz3lweb/DHExpToSeg.re new file mode 100644 index 0000000000..41a2f92cbe --- /dev/null +++ b/src/haz3lweb/DHExpToSeg.re @@ -0,0 +1,206 @@ +open Haz3lcore; + +let ws = _ => Base.Secondary({id: Id.mk(), content: Whitespace(Form.space)}); +let hole = _ => Base.Grout({id: Id.mk(), shape: Convex}); + +let pad_r = child => child @ [ws()]; +let pad_l = child => [ws()] @ child; +let pad = child => [ws()] @ child @ [ws()]; + +let atomic_operand = (sort: Sort.t, s: string): Piece.t => { + let label = [s]; + let mold = + switch (Molds.get(label) |> List.filter((m: Mold.t) => m.out == sort)) { + | [] => failwith("ERROR: DHExpToSeg: x:" ++ s) + | [hd, ..._] => hd + }; + Piece.Tile({id: Id.mk(), label, mold, shards: [0], children: []}); +}; + +let atomic_operator = (s: string, p: Precedence.t, sort: Sort.t) => { + let label = [s]; + let mold = Mold.mk_bin(p, sort, []); + Piece.Tile({id: Id.mk(), label, mold, shards: [0], children: []}); +}; + +let commas = (sort: Sort.t, n): list(Segment.t) => + List.init(n, _ => [atomic_operator(",", Precedence.prod, sort), ws()]); + +let parens_tile = (sort: Sort.t, child: Segment.t): Piece.t => + Tile({ + id: Id.mk(), + label: ["(", ")"], + mold: Mold.mk_op(sort, [sort]), + shards: [0, 1], + children: [child], + }); + +let listlit_tile = (child: Segment.t): Piece.t => + Tile({ + id: Id.mk(), + label: ["[", "]"], + mold: Mold.mk_op(Exp, [Exp]), + shards: [0, 1], + children: [child], + }); + +let ap_tile = (sort: Sort.t, child: Segment.t): Piece.t => + Tile({ + id: Id.mk(), + label: ["(", ")"], + mold: Mold.mk_post(Precedence.ap, sort, [sort]), + shards: [0, 1], + children: [child], + }); + +let fun_tile = (pat: Segment.t): Piece.t => + Tile({ + id: Id.mk(), + label: ["fun", "->"], + mold: Mold.mk_pre(Precedence.fun_, Exp, [Pat]), + shards: [0, 1], + children: [pad(pat)], + }); + +let let_tile = (pat: Segment.t, def: Segment.t): Piece.t => + Tile({ + id: Id.mk(), + label: ["let", "=", "in"], + mold: Mold.mk_pre(Precedence.let_, Exp, [Pat, Exp]), + shards: [0, 1, 2], + children: [pad(pat), pad(def)], + }); + +let test_tile = (child: Segment.t): Piece.t => + Tile({ + id: Id.mk(), + label: ["test", "end"], + mold: Mold.mk_op(Exp, [Exp]), + shards: [0, 1], + children: [pad(child)], + }); + +let case_tile = (child: Segment.t): Piece.t => + Tile({ + id: Id.mk(), + label: ["case", "end"], + mold: Mold.mk_op(Exp, [Rul]), + shards: [0, 1], + children: [pad(child)], + }); + +let rule_tile = (pat: Segment.t): Piece.t => + Tile({ + id: Id.mk(), + label: ["|", "=>"], + mold: Mold.mk_bin'(Precedence.rule_sep, Rul, Exp, [Pat], Exp), + shards: [0, 1], + children: [pad(pat)], + }); + +let rec mk_infix = (d1, s, d2, p) => + go(d1) @ [atomic_operator(s, p, Exp)] @ go(d2) +and mk_infix_pad = (d1, s, d2, p) => + go(d1) @ [ws(), atomic_operator(s, p, Exp), ws()] @ go(d2) +and commas_between = (ds: list(DHExp.t)) => + Util.ListUtil.interleave( + List.map(go, ds), + commas(Exp, List.length(ds) - 1), + ) + |> List.flatten +and go = (d: DHExp.t): Segment.t => { + let prec = DHDoc_Exp.precedence(~show_casts=false, d); + switch (d) { + // Ignore these wrappers + | NonEmptyHole(_, _, _, d) => go(d) + | Cast(d, _, _) => go(d) + | FailedCast(d, _, _) => go(d) + | InvalidOperation(d, _) => go(d) + | Closure(_, d) => go(d) + | FixF(_, _, d) => go(d) + // Atomic operands + | EmptyHole(_) => [hole()] + | ExpandingKeyword(_, _, kw) => [ + atomic_operand(Exp, ExpandingKeyword.to_string(kw)), + ] + | BoolLit(b) => [atomic_operand(Exp, string_of_bool(b))] + | IntLit(i) => [atomic_operand(Exp, string_of_int(i))] + | FloatLit(f) => [atomic_operand(Exp, string_of_float(f))] + | StringLit(s) + | BoundVar(s) + | Constructor(s) + | FreeVar(_, _, s) + | InvalidText(_, _, s) => [atomic_operand(Exp, s)] + // Composite value forms + | Ap(TestLit(_), d2) => [test_tile(go(d2))] + | Ap(d1, d2) => go(d1) @ [ap_tile(Exp, go(d2))] + | Tuple([]) => [atomic_operand(Exp, "()")] + | Tuple(ds) => + //TODO: only parenthesize selectively? + [parens_tile(Exp, commas_between(ds))] + | ListLit(_, _, _, []) => [atomic_operand(Exp, "[]")] + | ListLit(_, _, _, ds) => [listlit_tile(commas_between(ds))] + // Composite infix operators + // TODO(andrew): parenthesization + | Cons(d1, d2) => mk_infix(d1, "::", d2, prec) + | Sequence(d1, d2) => mk_infix(d1, ";", d2, prec) + | ListConcat(d1, d2) => mk_infix_pad(d1, "@", d2, prec) + | BinBoolOp(op, d1, d2) => + mk_infix_pad(d1, Term.UExp.bool_op_to_string(op), d2, prec) + | BinIntOp(op, d1, d2) => + mk_infix_pad(d1, Term.UExp.int_op_to_string(op), d2, prec) + | BinFloatOp(op, d1, d2) => + mk_infix_pad(d1, Term.UExp.float_op_to_string(op), d2, prec) + | BinStringOp(op, d1, d2) => + mk_infix_pad(d1, Term.UExp.string_op_to_string(op), d2, prec) + // Other Composites + | ApBuiltin(s, ds) => + [atomic_operand(Exp, s)] @ [ap_tile(Exp, commas_between(ds))] + | Fun(p, _, d, _) => [fun_tile(go_pat(p))] @ pad_l(go(d)) + | Let(p, d1, d2) => [let_tile(go_pat(p), go(d1))] @ pad_l(go(d2)) + | ConsistentCase(Case(d, rs, _)) + | InconsistentBranches(_, _, Case(d, rs, _)) => + let child = + List.map( + (Rule(p, d): DHExp.rule) => + pad_l([rule_tile(go_pat(p))]) @ pad_l(go(d)), + rs, + ) + |> List.flatten; + [case_tile(go(d) @ child)]; + // Hacky support + | TestLit(_) => [] // Shouldn't occur + | Prj(d, i) => go(ApBuiltin("prj", [IntLit(i), d])) + }; +} +and commas_between_pat = (ds: list(DHPat.t)) => + Util.ListUtil.interleave( + List.map(go_pat, ds), + commas(Pat, List.length(ds) - 1), + ) + |> List.flatten +and mk_infix_pat = (d1, s, d2, p) => + go_pat(d1) @ [atomic_operator(s, p, Pat)] @ go_pat(d2) +and go_pat = (p: DHPat.t) => { + switch (p) { + | EmptyHole(_) => [hole()] + | NonEmptyHole(_, _, _, d) => go_pat(d) + | Wild => [atomic_operand(Pat, "_")] + | ExpandingKeyword(_, _, kw) => [ + atomic_operand(Pat, ExpandingKeyword.to_string(kw)), + ] + | BoolLit(b) => [atomic_operand(Pat, string_of_bool(b))] + | IntLit(i) => [atomic_operand(Pat, string_of_int(i))] + | FloatLit(f) => [atomic_operand(Pat, string_of_float(f))] + | StringLit(s) + | Var(s) + | Constructor(s) + | BadConstructor(_, _, s) + | InvalidText(_, _, s) => [atomic_operand(Pat, s)] + | Ap(d1, d2) => go_pat(d1) @ [ap_tile(Pat, go_pat(d2))] + | ListLit(_, []) => [atomic_operand(Pat, "[]")] + | ListLit(_, ds) => [listlit_tile(commas_between_pat(ds))] + | Cons(d1, d2) => mk_infix_pat(d1, "::", d2, DHDoc_Pat.precedence(p)) + | Tuple(ps) => [parens_tile(Pat, commas_between_pat(ps))] + }; +}; diff --git a/src/haz3lweb/view/Cell.re b/src/haz3lweb/view/Cell.re index 48792d3b7b..13d9252cf4 100644 --- a/src/haz3lweb/view/Cell.re +++ b/src/haz3lweb/view/Cell.re @@ -251,9 +251,20 @@ let eval_result_footer_view = ~font_metrics, ) | Some({eval_result, _}) => + let segment = DHExpToSeg.go(eval_result); + let experiemental_code_view = + Code.view( + ~sort=Exp, + ~font_metrics, + ~buffer_ids=[], + ~segment, + ~unselected=segment, + ~measured=Measured.of_segment(segment), + ~settings, + ); /* Disabling casts in this case as large casts * can blow up UI perf unexpectedly */ - [dhcode_view(~show_casts=false, eval_result)] + [dhcode_view(~show_casts=false, eval_result), experiemental_code_view]; }; Node.( div( diff --git a/src/haz3lweb/view/dhcode/layout/DHDoc_Exp.rei b/src/haz3lweb/view/dhcode/layout/DHDoc_Exp.rei deleted file mode 100644 index 6cc15e956a..0000000000 --- a/src/haz3lweb/view/dhcode/layout/DHDoc_Exp.rei +++ /dev/null @@ -1,11 +0,0 @@ -open Haz3lcore; - -let mk: - ( - ~settings: Settings.Evaluation.t, - ~parenthesize: bool=?, - ~enforce_inline: bool, - ~selected_hole_instance: option(HoleInstance.t), - DHExp.t - ) => - DHDoc.t; diff --git a/src/haz3lweb/view/dhcode/layout/DHDoc_Pat.rei b/src/haz3lweb/view/dhcode/layout/DHDoc_Pat.rei deleted file mode 100644 index 33c37b6092..0000000000 --- a/src/haz3lweb/view/dhcode/layout/DHDoc_Pat.rei +++ /dev/null @@ -1,5 +0,0 @@ -open Haz3lcore; - -let precedence: DHPat.t => int; - -let mk: (~parenthesize: bool=?, ~enforce_inline: bool, DHPat.t) => DHDoc.t; From a7399a9b6946078717012723338ab25f21f9ff17 Mon Sep 17 00:00:00 2001 From: disconcision Date: Sun, 3 Sep 2023 14:19:06 -0400 Subject: [PATCH 06/22] defauly linebreaks in DHExp to seg conversion --- src/haz3lweb/DHExpToSeg.re | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/haz3lweb/DHExpToSeg.re b/src/haz3lweb/DHExpToSeg.re index 41a2f92cbe..1b25029ac4 100644 --- a/src/haz3lweb/DHExpToSeg.re +++ b/src/haz3lweb/DHExpToSeg.re @@ -1,6 +1,8 @@ open Haz3lcore; let ws = _ => Base.Secondary({id: Id.mk(), content: Whitespace(Form.space)}); +let lb = _ => + Base.Secondary({id: Id.mk(), content: Whitespace(Form.linebreak)}); let hole = _ => Base.Grout({id: Id.mk(), shape: Convex}); let pad_r = child => child @ [ws()]; @@ -157,17 +159,17 @@ and go = (d: DHExp.t): Segment.t => { | ApBuiltin(s, ds) => [atomic_operand(Exp, s)] @ [ap_tile(Exp, commas_between(ds))] | Fun(p, _, d, _) => [fun_tile(go_pat(p))] @ pad_l(go(d)) - | Let(p, d1, d2) => [let_tile(go_pat(p), go(d1))] @ pad_l(go(d2)) + | Let(p, d1, d2) => [let_tile(go_pat(p), go(d1))] @ [lb()] @ go(d2) | ConsistentCase(Case(d, rs, _)) | InconsistentBranches(_, _, Case(d, rs, _)) => let child = List.map( - (Rule(p, d): DHExp.rule) => - pad_l([rule_tile(go_pat(p))]) @ pad_l(go(d)), + (DHExp.Rule(p, d)) => + pad_l([rule_tile(go_pat(p))]) @ pad_l(go(d)) @ [lb()], rs, ) |> List.flatten; - [case_tile(go(d) @ child)]; + [case_tile(go(d) @ [lb()] @ child)]; // Hacky support | TestLit(_) => [] // Shouldn't occur | Prj(d, i) => go(ApBuiltin("prj", [IntLit(i), d])) From 2f93ecf1774bb396f7d928fc38abc0e82475b65f Mon Sep 17 00:00:00 2001 From: disconcision Date: Sun, 3 Sep 2023 16:29:06 -0400 Subject: [PATCH 07/22] jump to id unzip version --- src/haz3lcore/Measured.re | 33 +++++++++++++++ src/haz3lcore/zipper/Zipper.re | 57 ++++++++++++++++++++++++++ src/haz3lcore/zipper/action/Perform.re | 13 ++++++ 3 files changed, 103 insertions(+) diff --git a/src/haz3lcore/Measured.re b/src/haz3lcore/Measured.re index 3f8eaca483..43961d86e8 100644 --- a/src/haz3lcore/Measured.re +++ b/src/haz3lcore/Measured.re @@ -431,3 +431,36 @@ let segment_width = (seg: Segment.t): int => of_segment(seg).rows, 0, ); + +[@deriving (show({with_path: false}), sexp, yojson)] +type piece_path = list(int); + +let fold_lefti = (f, acc, seg) => + List.fold_left2(f, acc, seg, List.init(List.length(seg), Fun.id)); + +[@deriving (show({with_path: false}), sexp, yojson)] +let path_map = (seg: Segment.t): Id.Map.t(piece_path) => { + //NOTE: paths will be in reverse order + let rec go = (path: piece_path, map: Id.Map.t(piece_path), seg: Segment.t) => + fold_lefti( + (map, p: Piece.t, idx: int) => { + let path = [idx, ...path]; + let map = Id.Map.add(Piece.id(p), path, map); + let map = + switch (p) { + | Secondary(_) + | Grout(_) => map + | Tile(t) => + fold_lefti( + (map, child, idx) => go([idx, ...path], map, child), + map, + t.children, + ) + }; + map; + }, + map, + seg, + ); + go([], Id.Map.empty, seg); +}; diff --git a/src/haz3lcore/zipper/Zipper.re b/src/haz3lcore/zipper/Zipper.re index 4ba3f800d4..9af1f2e497 100644 --- a/src/haz3lcore/zipper/Zipper.re +++ b/src/haz3lcore/zipper/Zipper.re @@ -445,3 +445,60 @@ let seg_for_view = smart_seg(~erase_buffer=false, ~dump_backpack=false); let seg_for_sem = smart_seg(~erase_buffer=true, ~dump_backpack=true); let seg_without_buffer = smart_seg(~erase_buffer=true, ~dump_backpack=false); + +let fold_lefti = (f, acc, seg) => + List.fold_left2(f, acc, seg, List.init(List.length(seg), Fun.id)); + +/* fold_lefti( + ((goal_path, s_a), p: Piece.t, idx: int) => { + let s_a = + switch (p) { + | Secondary(_) + | Grout(_) => s_a + | Tile(t) => + fold_lefti( + (map, child, idx) => zip_to_path'([idx, ...goal_path], map, child), + s_a, + t.children, + ) + }; + (goal_path, s_a); + }, + (goal_path, s_a), + seg, + ) + |> snd;*/ + +let rec zip_to_path_piece = + (path: Measured.piece_path, {siblings, ancestors}: Relatives.t) + : Relatives.t => + switch (path, siblings) { + | ([], _) => {siblings, ancestors} + | ( + [idx, ...path], + (seg_l, [Tile({id, label, mold, shards, children}), ...seg_r]), + ) => + let shards = ListUtil.split_n(idx + 1, shards); + let (l, seg, r) = ListUtil.split_nth(idx, children); + let ancestor = Ancestor.{id, label, mold, shards, children: (l, r)}; + let ancestors = [(ancestor, (seg_l, seg_r)), ...ancestors]; + zip_to_path_seg(seg, ancestors, path); + | _ => failwith("zip_to_path_piece: invalid input") + } +and zip_to_path_seg = + (seg: Segment.t, ancestors, path: Measured.piece_path): Relatives.t => + switch (path) { + | [] => {ancestors, siblings: ([], seg)} + | [idx, ...path] => + zip_to_path_piece(path, {ancestors, siblings: Siblings.unzip(idx, seg)}) + }; + +let zip_to_path = + (seg: Segment.t, path: Measured.piece_path, caret: Caret.t): t => + /*NOTE: Path must be reversed as it is gathered by consing */ + { + selection: Selection.mk([]), + backpack: [], + relatives: zip_to_path_seg(seg, Ancestors.empty, List.rev(path)), + caret, + }; diff --git a/src/haz3lcore/zipper/action/Perform.re b/src/haz3lcore/zipper/action/Perform.re index bac0a0cd09..fbd8497d9e 100644 --- a/src/haz3lcore/zipper/action/Perform.re +++ b/src/haz3lcore/zipper/action/Perform.re @@ -50,6 +50,19 @@ let go_z = | MoveToNextHole(d) => Move.go(Goal(Piece(Grout, d)), z) |> Result.of_option(~error=Action.Failure.Cant_move) + | Jump(TileId(id)) => + //TODO(andrew): cleanup/remove + //print_endline("path test starting!"); + let segment = Zipper.unselect_and_zip(z); + //print_endline("path test unselect_and_zip done!"); + let map = Measured.path_map(segment); + //print_endline("path test path_map done!"); + let path = Id.Map.find(id, map); + //print_endline(Measured.show_piece_path(path)); + //print_endline("path test path_map done!"); + let z = Zipper.zip_to_path(segment, path, z.caret); + //print_endline("path test zip_to_path done!"); + Ok(z); | Jump(jump_target) => open OptUtil.Syntax; From 1f924aa3d67bb2090c3b9a98dfce5ccb9cb89ccc Mon Sep 17 00:00:00 2001 From: disconcision Date: Sun, 3 Sep 2023 19:19:10 -0400 Subject: [PATCH 08/22] cleanup --- src/haz3lcore/zipper/action/Action.re | 1 + src/haz3lweb/DHExpToSeg.re | 59 +++++++++++++-------------- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/src/haz3lcore/zipper/action/Action.re b/src/haz3lcore/zipper/action/Action.re index 521a3af900..9a22e34d7a 100644 --- a/src/haz3lcore/zipper/action/Action.re +++ b/src/haz3lcore/zipper/action/Action.re @@ -61,6 +61,7 @@ type t = | Unselect(option(Direction.t)) | Destruct(Direction.t) | Insert(string) + | Remote(Id.t, t) | RotateBackpack | MoveToBackpackTarget(planar) | Pick_up diff --git a/src/haz3lweb/DHExpToSeg.re b/src/haz3lweb/DHExpToSeg.re index 1b25029ac4..abea68ac54 100644 --- a/src/haz3lweb/DHExpToSeg.re +++ b/src/haz3lweb/DHExpToSeg.re @@ -28,6 +28,15 @@ let atomic_operator = (s: string, p: Precedence.t, sort: Sort.t) => { let commas = (sort: Sort.t, n): list(Segment.t) => List.init(n, _ => [atomic_operator(",", Precedence.prod, sort), ws()]); +let tuple = (sort: Sort.t, go: 'a => Segment.t, ds: list('a)): Segment.t => + Util.ListUtil.interleave( + List.map(go, ds), + List.init(List.length(ds) - 1, _ => + [atomic_operator(",", Precedence.prod, sort), ws()] + ), + ) + |> List.flatten; + let parens_tile = (sort: Sort.t, child: Segment.t): Piece.t => Tile({ id: Id.mk(), @@ -100,16 +109,10 @@ let rule_tile = (pat: Segment.t): Piece.t => children: [pad(pat)], }); -let rec mk_infix = (d1, s, d2, p) => +let rec infix_exp = (d1, s, d2, p) => go(d1) @ [atomic_operator(s, p, Exp)] @ go(d2) -and mk_infix_pad = (d1, s, d2, p) => +and infix_exp_pad = (d1, s, d2, p) => go(d1) @ [ws(), atomic_operator(s, p, Exp), ws()] @ go(d2) -and commas_between = (ds: list(DHExp.t)) => - Util.ListUtil.interleave( - List.map(go, ds), - commas(Exp, List.length(ds) - 1), - ) - |> List.flatten and go = (d: DHExp.t): Segment.t => { let prec = DHDoc_Exp.precedence(~show_casts=false, d); switch (d) { @@ -139,25 +142,25 @@ and go = (d: DHExp.t): Segment.t => { | Tuple([]) => [atomic_operand(Exp, "()")] | Tuple(ds) => //TODO: only parenthesize selectively? - [parens_tile(Exp, commas_between(ds))] + [parens_tile(Exp, tuple(Exp, go, ds))] | ListLit(_, _, _, []) => [atomic_operand(Exp, "[]")] - | ListLit(_, _, _, ds) => [listlit_tile(commas_between(ds))] + | ListLit(_, _, _, ds) => [listlit_tile(tuple(Exp, go, ds))] // Composite infix operators // TODO(andrew): parenthesization - | Cons(d1, d2) => mk_infix(d1, "::", d2, prec) - | Sequence(d1, d2) => mk_infix(d1, ";", d2, prec) - | ListConcat(d1, d2) => mk_infix_pad(d1, "@", d2, prec) + | Cons(d1, d2) => infix_exp(d1, "::", d2, prec) + | Sequence(d1, d2) => infix_exp(d1, ";", d2, prec) + | ListConcat(d1, d2) => infix_exp_pad(d1, "@", d2, prec) | BinBoolOp(op, d1, d2) => - mk_infix_pad(d1, Term.UExp.bool_op_to_string(op), d2, prec) + infix_exp_pad(d1, Term.UExp.bool_op_to_string(op), d2, prec) | BinIntOp(op, d1, d2) => - mk_infix_pad(d1, Term.UExp.int_op_to_string(op), d2, prec) + infix_exp_pad(d1, Term.UExp.int_op_to_string(op), d2, prec) | BinFloatOp(op, d1, d2) => - mk_infix_pad(d1, Term.UExp.float_op_to_string(op), d2, prec) + infix_exp_pad(d1, Term.UExp.float_op_to_string(op), d2, prec) | BinStringOp(op, d1, d2) => - mk_infix_pad(d1, Term.UExp.string_op_to_string(op), d2, prec) + infix_exp_pad(d1, Term.UExp.string_op_to_string(op), d2, prec) // Other Composites | ApBuiltin(s, ds) => - [atomic_operand(Exp, s)] @ [ap_tile(Exp, commas_between(ds))] + [atomic_operand(Exp, s)] @ [ap_tile(Exp, tuple(Exp, go, ds))] | Fun(p, _, d, _) => [fun_tile(go_pat(p))] @ pad_l(go(d)) | Let(p, d1, d2) => [let_tile(go_pat(p), go(d1))] @ [lb()] @ go(d2) | ConsistentCase(Case(d, rs, _)) @@ -175,18 +178,13 @@ and go = (d: DHExp.t): Segment.t => { | Prj(d, i) => go(ApBuiltin("prj", [IntLit(i), d])) }; } -and commas_between_pat = (ds: list(DHPat.t)) => - Util.ListUtil.interleave( - List.map(go_pat, ds), - commas(Pat, List.length(ds) - 1), - ) - |> List.flatten -and mk_infix_pat = (d1, s, d2, p) => +and infix_pat = (d1, s, d2, p) => go_pat(d1) @ [atomic_operator(s, p, Pat)] @ go_pat(d2) and go_pat = (p: DHPat.t) => { + let prec = DHDoc_Pat.precedence(p); switch (p) { | EmptyHole(_) => [hole()] - | NonEmptyHole(_, _, _, d) => go_pat(d) + | NonEmptyHole(_, _, _, p) => go_pat(p) | Wild => [atomic_operand(Pat, "_")] | ExpandingKeyword(_, _, kw) => [ atomic_operand(Pat, ExpandingKeyword.to_string(kw)), @@ -199,10 +197,11 @@ and go_pat = (p: DHPat.t) => { | Constructor(s) | BadConstructor(_, _, s) | InvalidText(_, _, s) => [atomic_operand(Pat, s)] - | Ap(d1, d2) => go_pat(d1) @ [ap_tile(Pat, go_pat(d2))] + | Ap(p1, p2) => go_pat(p1) @ [ap_tile(Pat, go_pat(p2))] | ListLit(_, []) => [atomic_operand(Pat, "[]")] - | ListLit(_, ds) => [listlit_tile(commas_between_pat(ds))] - | Cons(d1, d2) => mk_infix_pat(d1, "::", d2, DHDoc_Pat.precedence(p)) - | Tuple(ps) => [parens_tile(Pat, commas_between_pat(ps))] + | ListLit(_, ps) => [listlit_tile(tuple(Pat, go_pat, ps))] + | Cons(p1, p2) => + go_pat(p1) @ [atomic_operator("::", prec, Pat)] @ go_pat(p2) + | Tuple(ps) => [parens_tile(Pat, tuple(Pat, go_pat, ps))] }; }; From 5a203613dc9c1bff7c1b874cd667075d4159f8da Mon Sep 17 00:00:00 2001 From: disconcision Date: Sun, 3 Sep 2023 23:36:07 -0400 Subject: [PATCH 09/22] added remote action. focus works for MUV. style fun --- src/haz3lcore/zipper/action/Perform.re | 60 +++++++++++++++++--------- src/haz3lweb/DHExpToSeg.re | 6 +-- src/haz3lweb/Main.re | 30 +++++++++---- src/haz3lweb/Model.re | 2 + src/haz3lweb/Update.re | 8 +++- src/haz3lweb/UpdateAction.re | 6 +++ src/haz3lweb/util/JsUtil.re | 27 ++++++++++++ src/haz3lweb/view/Code.re | 2 + src/haz3lweb/view/MVU.re | 41 ++++++++++++++++-- src/haz3lweb/view/Page.re | 8 ++-- src/haz3lweb/www/style.css | 14 ++++++ 11 files changed, 162 insertions(+), 42 deletions(-) diff --git a/src/haz3lcore/zipper/action/Perform.re b/src/haz3lcore/zipper/action/Perform.re index fbd8497d9e..4e37b54cf4 100644 --- a/src/haz3lcore/zipper/action/Perform.re +++ b/src/haz3lcore/zipper/action/Perform.re @@ -8,6 +8,7 @@ let is_write_action = (a: Action.t) => { | Unselect(_) | Jump(_) | Select(_) => false + | Remote(_) | Destruct(_) | Insert(_) | Pick_up @@ -17,14 +18,14 @@ let is_write_action = (a: Action.t) => { }; }; -let go_z = - ( - ~meta: option(Editor.Meta.t)=?, - ~settings: CoreSettings.t, - a: Action.t, - z: Zipper.t, - ) - : Action.Result.t(Zipper.t) => { +let rec go_z = + ( + ~meta: option(Editor.Meta.t)=?, + ~settings: CoreSettings.t, + a: Action.t, + z: Zipper.t, + ) + : Action.Result.t(Zipper.t) => { let meta = switch (meta) { | Some(m) => m @@ -50,19 +51,36 @@ let go_z = | MoveToNextHole(d) => Move.go(Goal(Piece(Grout, d)), z) |> Result.of_option(~error=Action.Failure.Cant_move) - | Jump(TileId(id)) => - //TODO(andrew): cleanup/remove - //print_endline("path test starting!"); - let segment = Zipper.unselect_and_zip(z); - //print_endline("path test unselect_and_zip done!"); - let map = Measured.path_map(segment); - //print_endline("path test path_map done!"); - let path = Id.Map.find(id, map); - //print_endline(Measured.show_piece_path(path)); - //print_endline("path test path_map done!"); - let z = Zipper.zip_to_path(segment, path, z.caret); - //print_endline("path test zip_to_path done!"); - Ok(z); + | Remote(id, action) => + switch (Indicated.index(z)) { + | None => Error(Action.Failure.Cant_move) + | Some(old_id) => + let old_caret = z.caret; + let segment = Zipper.unselect_and_zip(z); + //print_endline("path test unselect_and_zip done!"); + //TODO(andrew): perf below + let map = Measured.path_map(segment); + //print_endline("path test path_map done!"); + let path = Id.Map.find(id, map); + //print_endline(Measured.show_piece_path(path)); + //print_endline("path test path_map done!"); + let z = Zipper.zip_to_path(segment, path, Outer); + //print_endline("path test zip_to_path done!"); + switch (go_z(~meta, ~settings, action, z)) { + | Error(_) => Error(Action.Failure.Cant_move) + | Ok(z) => + let segment = Zipper.unselect_and_zip(z); + //print_endline("path test unselect_and_zip done!"); + //TODO(andrew): perf below + let map = Measured.path_map(segment); + //print_endline("path test path_map done!"); + let path = Id.Map.find(old_id, map); + //print_endline(Measured.show_piece_path(path)); + //print_endline("path test path_map done!"); + let z = Zipper.zip_to_path(segment, path, old_caret); + Ok(z); + }; + } | Jump(jump_target) => open OptUtil.Syntax; diff --git a/src/haz3lweb/DHExpToSeg.re b/src/haz3lweb/DHExpToSeg.re index abea68ac54..1731c972c5 100644 --- a/src/haz3lweb/DHExpToSeg.re +++ b/src/haz3lweb/DHExpToSeg.re @@ -13,7 +13,7 @@ let atomic_operand = (sort: Sort.t, s: string): Piece.t => { let label = [s]; let mold = switch (Molds.get(label) |> List.filter((m: Mold.t) => m.out == sort)) { - | [] => failwith("ERROR: DHExpToSeg: x:" ++ s) + | [] => Mold.mk_op(Any, []) | [hd, ..._] => hd }; Piece.Tile({id: Id.mk(), label, mold, shards: [0], children: []}); @@ -131,7 +131,7 @@ and go = (d: DHExp.t): Segment.t => { | BoolLit(b) => [atomic_operand(Exp, string_of_bool(b))] | IntLit(i) => [atomic_operand(Exp, string_of_int(i))] | FloatLit(f) => [atomic_operand(Exp, string_of_float(f))] - | StringLit(s) + | StringLit(s) => [atomic_operand(Exp, Form.string_quote(s))] | BoundVar(s) | Constructor(s) | FreeVar(_, _, s) @@ -192,7 +192,7 @@ and go_pat = (p: DHPat.t) => { | BoolLit(b) => [atomic_operand(Pat, string_of_bool(b))] | IntLit(i) => [atomic_operand(Pat, string_of_int(i))] | FloatLit(f) => [atomic_operand(Pat, string_of_float(f))] - | StringLit(s) + | StringLit(s) => [atomic_operand(Pat, Form.string_quote(s))] | Var(s) | Constructor(s) | BadConstructor(_, _, s) diff --git a/src/haz3lweb/Main.re b/src/haz3lweb/Main.re index a0dc5643b4..78ceea66cb 100644 --- a/src/haz3lweb/Main.re +++ b/src/haz3lweb/Main.re @@ -79,19 +79,31 @@ let update_handler = ) : Effect.t(unit) => Effect.( - switch (Keyboard.handle_key_event(Key.mk(dir, evt), ~model)) { - | None => Ignore - | Some(action) => + switch ( + model.meta.ui_state.focus, + Keyboard.handle_key_event(Key.mk(dir, evt), ~model), + ) { + | (MVU, _) + | (Editor, None) => Ignore + | (Editor, Some(action)) => Many([Prevent_default, Stop_propagation, inject(action)]) } ); let handlers = - (~inject: UpdateAction.t => Ui_effect.t(unit), ~model: Model.t) => [ - Attr.on_keypress(_ => Effect.Prevent_default), - Attr.on_keyup(update_handler(~inject, ~model, ~dir=KeyUp)), - Attr.on_keydown(update_handler(~inject, ~model, ~dir=KeyDown)), -]; + (~inject: UpdateAction.t => Ui_effect.t(unit), ~model: Model.t) => + switch (model.meta.ui_state.focus) { + | MVU => + print_endline("Adding MVU handlers"); + []; + | Editor => + print_endline("Adding editor handlers"); + [ + Attr.on_keypress(_ => Effect.Prevent_default), + Attr.on_keyup(update_handler(~inject, ~model, ~dir=KeyUp)), + Attr.on_keydown(update_handler(~inject, ~model, ~dir=KeyDown)), + ]; + }; module App = { module Model = Model; @@ -165,7 +177,7 @@ module App = { print_endline("Saving..."); schedule_action(Update.Save); }; - if (action_applied.contents) { + if (action_applied.contents && model.meta.ui_state.focus == Editor) { action_applied := false; JsUtil.scroll_cursor_into_view_if_needed(); }; diff --git a/src/haz3lweb/Model.re b/src/haz3lweb/Model.re index 57d80981c1..80a016331b 100644 --- a/src/haz3lweb/Model.re +++ b/src/haz3lweb/Model.re @@ -24,12 +24,14 @@ type ui_state = { font_metrics: FontMetrics.t, show_backpack_targets: bool, mousedown: bool, + focus: UpdateAction.focus, }; let ui_state_init = { font_metrics: FontMetrics.init, show_backpack_targets: false, mousedown: false, + focus: Editor, }; /* Non-persistent application state */ diff --git a/src/haz3lweb/Update.re b/src/haz3lweb/Update.re index 9b22b7f3f1..fa9c37c840 100644 --- a/src/haz3lweb/Update.re +++ b/src/haz3lweb/Update.re @@ -109,7 +109,8 @@ let reevaluate_post_update = (settings: Settings.t) => | Mouseup | ShowBackpackTargets(_) | FontMetrics(_) - | Result(_) => false + | Result(_) + | Focus(_) => false | MVU(_) | Auto(_) => true } @@ -131,7 +132,7 @@ let reevaluate_post_update = (settings: Settings.t) => // may not be necessary on all of these // TODO review and prune | ReparseCurrentEditor - | PerformAction(Destruct(_) | Insert(_) | Pick_up | Put_down) + | PerformAction(Destruct(_) | Insert(_) | Pick_up | Put_down | Remote(_)) | FinishImportAll(_) | FinishImportScratchpad(_) | ResetCurrentEditor @@ -454,6 +455,9 @@ and meta_update = ...model.meta, mvu_states: VarMap.extend(model.meta.mvu_states, (name, dh)), } + | Focus(focus) => + let ui_state = {...model.meta.ui_state, focus}; + {...model.meta, ui_state}; | Result(key, res) => /* If error, print a message. */ switch (res) { diff --git a/src/haz3lweb/UpdateAction.re b/src/haz3lweb/UpdateAction.re index be99f9db35..8dc1375b42 100644 --- a/src/haz3lweb/UpdateAction.re +++ b/src/haz3lweb/UpdateAction.re @@ -27,6 +27,11 @@ type agent_action = | SetBuffer(string) | AcceptSuggestion; +[@deriving (show({with_path: false}), yojson, sexp)] +type focus = + | Editor + | MVU; + [@deriving (show({with_path: false}), sexp, yojson)] type set_meta = | Mousedown @@ -34,6 +39,7 @@ type set_meta = | ShowBackpackTargets(bool) | FontMetrics(FontMetrics.t) | MVU(string, DHExp.t) + | Focus(focus) | Result(ModelResults.Key.t, ModelResult.current) | Auto(Auto.action(Auto.llm_report)); diff --git a/src/haz3lweb/util/JsUtil.re b/src/haz3lweb/util/JsUtil.re index 87501bbcc1..7a3852ff1e 100644 --- a/src/haz3lweb/util/JsUtil.re +++ b/src/haz3lweb/util/JsUtil.re @@ -156,3 +156,30 @@ module Fragment = { Url.Current.get() |> Option.map(fragment_of_url); }; }; + +let contains = + (rt: Js.t(Dom_html.element), ct: Js.t(Dom_html.element)): bool => + try( + Js_of_ocaml.Js.Unsafe.meth_call( + ct, + "contains", + [|Js_of_ocaml.Js.Unsafe.coerce(rt)|], + ) + |> Js_of_ocaml.Js.to_bool + ) { + | _ => false + }; + +let is_refocus_on_child = + (evt: Js_of_ocaml.Js.t(Js_of_ocaml.Dom_html.focusEvent)): bool => + try( + contains( + Js.Opt.get( + Js.Optdef.get(evt##.relatedTarget, () => failwith("lol")), () => + failwith("lol") + ), + Js_of_ocaml.Js.Opt.get(evt##.currentTarget, () => failwith("lol")), + ) + ) { + | _ => false + }; diff --git a/src/haz3lweb/view/Code.re b/src/haz3lweb/view/Code.re index 3a47c4f9f7..b9d0dc8fd3 100644 --- a/src/haz3lweb/view/Code.re +++ b/src/haz3lweb/view/Code.re @@ -16,6 +16,8 @@ let of_delim' = | [s] when s == Form.explicit_hole => "explicit-hole" | [s] when Form.is_prompt(s) => "active-prompt" | [s] when Form.is_string(s) => "string-lit" + | ["(", ")"] /*| ["[", "]"] | ["{", "}"]*/ => "parens" + | ["[", "]"] /*| ["[", "]"] | ["{", "}"]*/ => "parens" | _ => "default" }; let plurality = List.length(label) == 1 ? "mono" : "poly"; diff --git a/src/haz3lweb/view/MVU.re b/src/haz3lweb/view/MVU.re index 0700214664..634a53ba31 100644 --- a/src/haz3lweb/view/MVU.re +++ b/src/haz3lweb/view/MVU.re @@ -330,8 +330,19 @@ let rec render_div = (~elide_errors=false, context: t, d: DHExp.t): Node.t => } and input_of = (input_type: string, mvu: t, body: DHExp.t) => { let (attrs, divs) = attrs_and_divs(mvu, body); + //TODO(andrew): Do I actually need to do this on_focus for every subcomponent? Node.input( - ~attr=Attr.many([Attr.create("type", input_type)] @ attrs), + ~attr= + Attr.many( + [ + Attr.on_focus(_evt => { + print_endline("focus: MVU.input_of"); + Effect.Many([mvu.inject(SetMeta(Focus(MVU)))]); + }), + Attr.create("type", input_type), + ] + @ attrs, + ), divs, ); } @@ -366,7 +377,29 @@ let go = Ap(view, mvu.model) |> Interface.eval_d2d(~settings=settings.core) |> DHExp.strip_casts; - [ - Node.div(~attr=Attr.classes(["mvu-render"]), [render_div(mvu, result)]), - ]; + let attr = + Attr.many([ + Attr.tabindex(2), + Attr.create("style", "display: inline-block;"), + Attr.classes(["mvu-render"]), + Attr.on_focus(_evt => { + print_endline("focus: mvu.go"); + Effect.Many([inject(SetMeta(Focus(MVU)))]); + }), + //TODO(andrew): cleanup + /*Attr.on_blur(focus_evt => { + print_endline( + "BLUR: " ++ string_of_bool(JsUtil.is_refocus_on_child(focus_evt)), + ); + print_endline("Blur: if true MVU else Editor"); + Effect.Many([ + inject( + SetMeta( + Focus(JsUtil.is_refocus_on_child(focus_evt) ? MVU : Editor), + ), + ), + ]); + }),*/ + ]); + [Node.div(~attr, [render_div(mvu, result)])]; }; diff --git a/src/haz3lweb/view/Page.re b/src/haz3lweb/view/Page.re index 8d6dca6298..6b57a681e4 100644 --- a/src/haz3lweb/view/Page.re +++ b/src/haz3lweb/view/Page.re @@ -185,6 +185,7 @@ let view = (~inject, ~handlers, model: Model.t) => Attr.many( Attr.[ id("page"), + Attr.tabindex(1), // safety handler in case mousedown overlay doesn't catch it on_mouseup(_ => inject(Update.SetMeta(Mouseup))), on_blur(_ => { @@ -193,7 +194,8 @@ let view = (~inject, ~handlers, model: Model.t) => }), on_focus(_ => { JsUtil.focus_clipboard_shim(); - Virtual_dom.Vdom.Effect.Ignore; + print_endline("focus: editor (Page.view)"); + Virtual_dom.Vdom.Effect.Many([inject(SetMeta(Focus(Editor)))]); }), on_copy(_ => { JsUtil.copy(get_selection(model)); @@ -201,14 +203,14 @@ let view = (~inject, ~handlers, model: Model.t) => }), on_cut(_ => { JsUtil.copy(get_selection(model)); - inject(UpdateAction.PerformAction(Destruct(Left))); + inject(PerformAction(Destruct(Left))); }), on_paste(evt => { let pasted_text = Js.to_string(evt##.clipboardData##getData(Js.string("text"))) |> Str.global_replace(Str.regexp("\n[ ]*"), "\n"); Dom.preventDefault(evt); - inject(UpdateAction.Paste(pasted_text)); + inject(Paste(pasted_text)); }), ...handlers(~inject, ~model), ], diff --git a/src/haz3lweb/www/style.css b/src/haz3lweb/www/style.css index 278f9b0da2..22f54620a3 100644 --- a/src/haz3lweb/www/style.css +++ b/src/haz3lweb/www/style.css @@ -718,8 +718,22 @@ select { } .code .token.poly { + +} +.code .token.poly.default { + /*text-transform: uppercase;*/ + color: #c9bfa0; + /*opacity: 80%;*/ font-weight: bold; } +.code .token.poly.parens { + color: #b0a37b; + display: inline-block; + transform: scale(0.6); + /*opacity: 90%;*/ +} +.code .token.poly.square { +} .code .token.mono.string-lit { color: var(--string-lit-color); From f61712251fda62b4f59c14eea4723520d6cc5ff4 Mon Sep 17 00:00:00 2001 From: disconcision Date: Mon, 4 Sep 2023 12:54:03 -0400 Subject: [PATCH 10/22] partial work on stage form --- src/haz3lcore/dynamics/Elaborator.re | 17 +++++++++++++++++ src/haz3lweb/view/MVU.re | 7 +++++++ 2 files changed, 24 insertions(+) diff --git a/src/haz3lcore/dynamics/Elaborator.re b/src/haz3lcore/dynamics/Elaborator.re index ebc7c0f03d..b60c5659ee 100644 --- a/src/haz3lcore/dynamics/Elaborator.re +++ b/src/haz3lcore/dynamics/Elaborator.re @@ -249,6 +249,23 @@ let rec dhexp_of_uexp = ); Let(dp, FixF(self_id, ty_body, substituted_def), dbody); }; + | Ap( + {term: Constructor("Stage"), _}, + {term: Tuple([update, model]), _}, + ) => + //TODO(andrew): casting + //(, fun (action:Action) -> Inject(Int(.uuid), , action) + let* update = dhexp_of_uexp(m, update); + let+ model = dhexp_of_uexp(m, model); + let id_str = Term.UExp.rep_id(uexp) |> Id.to_string; + let body = + DHExp.Ap( + Constructor("Inject"), + Tuple([StringLit(id_str), update, BoundVar("action")]), + ); + let inject = + DHExp.Fun(Var("action"), Unknown(Internal), body, None); + DHExp.Tuple([model, inject]); | Ap(fn, arg) => let* c_fn = dhexp_of_uexp(m, fn); let+ c_arg = dhexp_of_uexp(m, arg); diff --git a/src/haz3lweb/view/MVU.re b/src/haz3lweb/view/MVU.re index 634a53ba31..12b48bfef9 100644 --- a/src/haz3lweb/view/MVU.re +++ b/src/haz3lweb/view/MVU.re @@ -260,6 +260,13 @@ let update = }; let on_ = (mvu: t, handler, arg) => + /* + alternatively: do the Ap(handler, arg) eval as above, but if + the resulting dhext has shape Inject(Int(id), update, action), + then still do Ap(update, Tuple([model, action])), but instead of + SetMetating that, do new action ReplaceAtId(id, model) which will + call RemoteAction and use DHExpToSegment to replace the model + */ Effect.Many([ Effect.Stop_propagation, mvu.inject(update(mvu, handler, arg)), From 34bf9091c04dd1687f44d7c7e65939fbea9a0b1a Mon Sep 17 00:00:00 2001 From: disconcision Date: Tue, 5 Sep 2023 13:55:36 -0400 Subject: [PATCH 11/22] partial work on syntax-update --- src/haz3lweb/DHExpToSeg.re | 20 ++++++--- src/haz3lweb/view/Cell.re | 3 ++ src/haz3lweb/view/MVU.re | 87 ++++++++++++++++++++++++++++++++------ 3 files changed, 90 insertions(+), 20 deletions(-) diff --git a/src/haz3lweb/DHExpToSeg.re b/src/haz3lweb/DHExpToSeg.re index 1731c972c5..62f513e282 100644 --- a/src/haz3lweb/DHExpToSeg.re +++ b/src/haz3lweb/DHExpToSeg.re @@ -29,13 +29,15 @@ let commas = (sort: Sort.t, n): list(Segment.t) => List.init(n, _ => [atomic_operator(",", Precedence.prod, sort), ws()]); let tuple = (sort: Sort.t, go: 'a => Segment.t, ds: list('a)): Segment.t => - Util.ListUtil.interleave( - List.map(go, ds), - List.init(List.length(ds) - 1, _ => - [atomic_operator(",", Precedence.prod, sort), ws()] - ), - ) - |> List.flatten; + ds == [] + ? [] + : Util.ListUtil.interleave( + List.map(go, ds), + List.init(List.length(ds) - 1, _ => + [atomic_operator(",", Precedence.prod, sort), ws()] + ), + ) + |> List.flatten; let parens_tile = (sort: Sort.t, child: Segment.t): Piece.t => Tile({ @@ -159,6 +161,9 @@ and go = (d: DHExp.t): Segment.t => { | BinStringOp(op, d1, d2) => infix_exp_pad(d1, Term.UExp.string_op_to_string(op), d2, prec) // Other Composites + | ApBuiltin(s, []) => + [atomic_operand(Exp, s)] + @ [ap_tile(Exp, [atomic_operand(Exp, "()")])] | ApBuiltin(s, ds) => [atomic_operand(Exp, s)] @ [ap_tile(Exp, tuple(Exp, go, ds))] | Fun(p, _, d, _) => [fun_tile(go_pat(p))] @ pad_l(go(d)) @@ -202,6 +207,7 @@ and go_pat = (p: DHPat.t) => { | ListLit(_, ps) => [listlit_tile(tuple(Pat, go_pat, ps))] | Cons(p1, p2) => go_pat(p1) @ [atomic_operator("::", prec, Pat)] @ go_pat(p2) + | Tuple([]) => [atomic_operand(Pat, "()")] | Tuple(ps) => [parens_tile(Pat, tuple(Pat, go_pat, ps))] }; }; diff --git a/src/haz3lweb/view/Cell.re b/src/haz3lweb/view/Cell.re index 13d9252cf4..72a34a00a7 100644 --- a/src/haz3lweb/view/Cell.re +++ b/src/haz3lweb/view/Cell.re @@ -232,6 +232,9 @@ let eval_result_footer_view = Node.text("Evaluation disabled. Elaboration follows:"), dhcode_view(~show_casts=true, elab), ] + | Some({eval_result: Ap(Constructor("Div"), _) as node, _}) => + //TODO(andrew): more general constructor catch + MVU.go2(~settings, ~inject, ~font_metrics, ~node) | Some({ eval_result: Ap( diff --git a/src/haz3lweb/view/MVU.re b/src/haz3lweb/view/MVU.re index 12b48bfef9..34205233d4 100644 --- a/src/haz3lweb/view/MVU.re +++ b/src/haz3lweb/view/MVU.re @@ -250,23 +250,48 @@ let render_styles = styles => |> Attr.create("style"); let update = - ({name, update, model, settings, _}: t, handler, arg): UpdateAction.t => { - let model = - Interface.eval_d2d( - ~settings=settings.core, - Ap(update, Tuple([model, Ap(handler, arg)])), + ({name, update, model, settings, _}: t, handler, arg): UpdateAction.t => + //TODO(andrew): betterfy this trash + if (update == Tuple([]) && model == Tuple([])) { + /* TODO: + + 0. let Inject(id, action, update) = Ap(handler, arg) + 0.1. let target_id = Stage 2nd child id + + A. IMPL InsertSegment + B. IMPL ApplyToSyntax + C. IMPL get stage 2nd child id + + ApplyToSyntax(id, update, action): + 1. Move to stage 2nd child id + 1.1. let term = from ci... + 1.2. let model = elab(term) + 1.3. let res = eval(Ap(update, Tuple([model, action])) + 1.4. let seg = DHExpToSegment(res) + 2. Select term + 3. InsertSegment(seg) (clobbering term) + */ + SetMeta( + MVU(name, model), ); - SetMeta(MVU(name, model)); -}; + } else { + let model = + Interface.eval_d2d( + ~settings=settings.core, + Ap(update, Tuple([model, Ap(handler, arg)])), + ); + SetMeta(MVU(name, model)); + }; let on_ = (mvu: t, handler, arg) => /* - alternatively: do the Ap(handler, arg) eval as above, but if - the resulting dhext has shape Inject(Int(id), update, action), - then still do Ap(update, Tuple([model, action])), but instead of - SetMetating that, do new action ReplaceAtId(id, model) which will - call RemoteAction and use DHExpToSegment to replace the model - */ + TODO(andrew): + alternatively: do the Ap(handler, arg) eval as above, but if + the resulting dhext has shape Inject(Int(id), update, action), + then still do Ap(update, Tuple([model, action])), but instead of + SetMetating that, do new action ReplaceAtId(id, model) which will + call RemoteAction and use DHExpToSegment to replace the model + */ Effect.Many([ Effect.Stop_propagation, mvu.inject(update(mvu, handler, arg)), @@ -410,3 +435,39 @@ let go = ]); [Node.div(~attr, [render_div(mvu, result)])]; }; + +let go2 = (~settings, ~inject, ~font_metrics, ~node) => { + let mvu = { + settings, + name: "", + model: Tuple([]), + update: Tuple([]), + inject, + font_metrics, + }; + let attr = + Attr.many([ + Attr.tabindex(2), + Attr.create("style", "display: inline-block;"), + Attr.classes(["mvu-render"]), + Attr.on_focus(_evt => { + print_endline("focus: mvu.go"); + Effect.Many([inject(SetMeta(Focus(MVU)))]); + }), + //TODO(andrew): cleanup + /*Attr.on_blur(focus_evt => { + print_endline( + "BLUR: " ++ string_of_bool(JsUtil.is_refocus_on_child(focus_evt)), + ); + print_endline("Blur: if true MVU else Editor"); + Effect.Many([ + inject( + SetMeta( + Focus(JsUtil.is_refocus_on_child(focus_evt) ? MVU : Editor), + ), + ), + ]); + }),*/ + ]); + [Node.div(~attr, [render_div(mvu, node)])]; +}; From 0ae800d68c0aea9805d142371906e69992781636 Mon Sep 17 00:00:00 2001 From: disconcision Date: Sun, 10 Sep 2023 22:02:31 -0400 Subject: [PATCH 12/22] planning --- src/haz3lweb/view/Cell.re | 1 + src/haz3lweb/view/MVU.re | 14 +++++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/haz3lweb/view/Cell.re b/src/haz3lweb/view/Cell.re index 72a34a00a7..7df2e711f9 100644 --- a/src/haz3lweb/view/Cell.re +++ b/src/haz3lweb/view/Cell.re @@ -235,6 +235,7 @@ let eval_result_footer_view = | Some({eval_result: Ap(Constructor("Div"), _) as node, _}) => //TODO(andrew): more general constructor catch MVU.go2(~settings, ~inject, ~font_metrics, ~node) + @ [dhcode_view(~show_casts=false, node)] | Some({ eval_result: Ap( diff --git a/src/haz3lweb/view/MVU.re b/src/haz3lweb/view/MVU.re index 34205233d4..3ee3334a9f 100644 --- a/src/haz3lweb/view/MVU.re +++ b/src/haz3lweb/view/MVU.re @@ -264,12 +264,18 @@ let update = ApplyToSyntax(id, update, action): 1. Move to stage 2nd child id - 1.1. let term = from ci... - 1.2. let model = elab(term) + 1.0. let ci = from current id + 1.1. let term = ci.term + 1.2. let model = elab(term, info) 1.3. let res = eval(Ap(update, Tuple([model, action])) 1.4. let seg = DHExpToSegment(res) 2. Select term 3. InsertSegment(seg) (clobbering term) + + wait... step 1.2 makes assumptions about the term being closed + could for now make it a static error on the stage if the model + child has nonempty co-ctx. or simply require it to be a value + Q: how to canonically to check if its a value? */ SetMeta( MVU(name, model), @@ -384,7 +390,9 @@ and attrs_and_divs = (mvu: t, body: DHExp.t): (list(Attr.t), list(Node.t)) => List.map(render_attr(mvu), attrs), List.map(render_div(mvu), divs), ) - | _ => ([], []) + | _ => + print_endline("ERROR: attrs_and_divs"); + ([], []); }; let go = From 90635ec37b28582493ccb6be795ea824e1393c36 Mon Sep 17 00:00:00 2001 From: disconcision Date: Sun, 10 Sep 2023 23:05:05 -0400 Subject: [PATCH 13/22] patched in live-aid --- src/haz3lcore/Measured.re | 30 +--- src/haz3lcore/dynamics/DH.re | 21 ++- src/haz3lcore/dynamics/Elaborator.re | 23 ++- src/haz3lcore/dynamics/Evaluator.re | 19 ++- src/haz3lcore/dynamics/EvaluatorMonad.re | 3 + src/haz3lcore/dynamics/EvaluatorMonad.rei | 27 --- src/haz3lcore/dynamics/EvaluatorPost.re | 6 +- src/haz3lcore/dynamics/EvaluatorState.re | 11 ++ src/haz3lcore/dynamics/EvaluatorState.rei | 8 +- src/haz3lcore/dynamics/KeywordID.re | 2 - src/haz3lcore/dynamics/Substitution.re | 2 +- src/haz3lcore/dynamics/TestMap.re | 2 +- src/haz3lcore/prog/Interface.re | 16 +- src/haz3lcore/zipper/Editor.re | 3 + src/haz3lweb/DHExpToSeg.re | 4 +- src/haz3lweb/Init.ml | 1 + src/haz3lweb/Keyboard.re | 11 ++ src/haz3lweb/Settings.re | 21 +++ src/haz3lweb/Update.re | 30 +++- src/haz3lweb/UpdateAction.re | 10 ++ src/haz3lweb/view/Cell.re | 11 +- src/haz3lweb/view/Deco.re | 160 +++++++++++++++++- src/haz3lweb/view/LangDoc.re | 1 + src/haz3lweb/view/Page.re | 4 + src/haz3lweb/view/dec/DecUtil.re | 19 +++ src/haz3lweb/view/dhcode/layout/DHDoc_Exp.re | 5 +- .../view/dhcode/layout/DHDoc_common.re | 2 - .../view/dhcode/layout/DHDoc_common.rei | 2 - src/haz3lweb/www/style.css | 37 ++++ src/util/ListUtil.re | 6 + 30 files changed, 396 insertions(+), 101 deletions(-) delete mode 100644 src/haz3lcore/dynamics/EvaluatorMonad.rei delete mode 100644 src/haz3lcore/dynamics/KeywordID.re diff --git a/src/haz3lcore/Measured.re b/src/haz3lcore/Measured.re index 43961d86e8..1c358d7b3f 100644 --- a/src/haz3lcore/Measured.re +++ b/src/haz3lcore/Measured.re @@ -407,30 +407,14 @@ let length = (seg: Segment.t, map: t): int => last.last.col - first.origin.col; }; -let segment_origin = (seg: Segment.t): option(Point.t) => - Option.map( - first => find_p(first, of_segment(seg)).origin, - ListUtil.hd_opt(seg), - ); - -let segment_last = (seg: Segment.t): option(Point.t) => - Option.map( - last => find_p(last, of_segment(seg)).last, - ListUtil.last_opt(seg), - ); - -let segment_height = (seg: Segment.t) => - switch (segment_last(seg), segment_origin(seg)) { - | (Some(last), Some(first)) => 1 + last.row - first.row - | _ => 0 - }; +let height = (m: t): int => IntMap.cardinal(m.rows); + +let width = (m: t): int => + IntMap.fold((_, {max_col, _}: Rows.shape) => max(max_col), m.rows, 0); + +let segment_height = (seg: Segment.t) => seg |> of_segment |> height; -let segment_width = (seg: Segment.t): int => - IntMap.fold( - (_, {max_col, _}: Rows.shape, acc) => max(max_col, acc), - of_segment(seg).rows, - 0, - ); +let segment_width = (seg: Segment.t): int => seg |> of_segment |> width; [@deriving (show({with_path: false}), sexp, yojson)] type piece_path = list(int); diff --git a/src/haz3lcore/dynamics/DH.re b/src/haz3lcore/dynamics/DH.re index 61d7483930..b3e59e6a08 100644 --- a/src/haz3lcore/dynamics/DH.re +++ b/src/haz3lcore/dynamics/DH.re @@ -1,6 +1,11 @@ open Sexplib.Std; module rec DHExp: { + [@deriving (show({with_path: false}), sexp, yojson)] + type monitor = + | Test + | Probe; + [@deriving (show({with_path: false}), sexp, yojson)] type t = | EmptyHole(MetaVar.t, HoleInstanceId.t) @@ -17,7 +22,7 @@ module rec DHExp: { | Fun(DHPat.t, Typ.t, t, option(Var.t)) | Ap(t, t) | ApBuiltin(string, list(t)) - | TestLit(KeywordID.t) + | Monitor(monitor, Id.t) | BoolLit(bool) | IntLit(int) | FloatLit(float) @@ -52,6 +57,11 @@ module rec DHExp: { let fast_equal: (t, t) => bool; } = { + [@deriving (show({with_path: false}), sexp, yojson)] + type monitor = + | Test + | Probe; + [@deriving (show({with_path: false}), sexp, yojson)] type t = /* Hole types */ @@ -71,7 +81,7 @@ module rec DHExp: { | Fun(DHPat.t, Typ.t, t, option(Var.t)) | Ap(t, t) | ApBuiltin(string, list(t)) - | TestLit(KeywordID.t) + | Monitor(monitor, Id.t) | BoolLit(bool) | IntLit(int) | FloatLit(float) @@ -110,7 +120,8 @@ module rec DHExp: { | Closure(_, _) => "Closure" | Ap(_, _) => "Ap" | ApBuiltin(_, _) => "ApBuiltin" - | TestLit(_) => "TestLit" + | Monitor(Test, _) => "TestLit" + | Monitor(Probe, _) => "Probe" | BoolLit(_) => "BoolLit" | IntLit(_) => "IntLit" | FloatLit(_) => "FloatLit" @@ -185,7 +196,7 @@ module rec DHExp: { | FreeVar(_) as d | InvalidText(_) as d | BoundVar(_) as d - | TestLit(_) as d + | Monitor(_) as d | BoolLit(_) as d | IntLit(_) as d | FloatLit(_) as d @@ -199,7 +210,7 @@ module rec DHExp: { /* Primitive forms: regular structural equality */ | (BoundVar(_), _) /* TODO: Not sure if this is right... */ - | (TestLit(_), _) + | (Monitor(_), _) | (BoolLit(_), _) | (IntLit(_), _) | (FloatLit(_), _) diff --git a/src/haz3lcore/dynamics/Elaborator.re b/src/haz3lcore/dynamics/Elaborator.re index 25f8b75238..7744025494 100644 --- a/src/haz3lcore/dynamics/Elaborator.re +++ b/src/haz3lcore/dynamics/Elaborator.re @@ -97,7 +97,7 @@ let cast = (ctx: Ctx.t, mode: Mode.t, self_ty: Typ.t, d: DHExp.t) => | BinIntOp(_) | BinFloatOp(_) | BinStringOp(_) - | TestLit(_) => DHExp.cast(d, self_ty, ana_ty) + | Monitor(_) => DHExp.cast(d, self_ty, ana_ty) }; }; @@ -116,7 +116,8 @@ let wrap = (ctx: Ctx.t, u: Id.t, mode: Mode.t, self, d: DHExp.t): DHExp.t => }; let rec dhexp_of_uexp = - (m: Statics.Map.t, uexp: Term.UExp.t): option(DHExp.t) => { + (~probe_ids, m: Statics.Map.t, uexp: Term.UExp.t): option(DHExp.t) => { + let dhexp_of_uexp = dhexp_of_uexp(~probe_ids); switch (Id.Map.find_opt(Term.UExp.rep_id(uexp), m)) { | Some(InfoExp({mode, self, ctx, _})) => let err_status = Info.status_exp(ctx, mode, self); @@ -194,7 +195,7 @@ let rec dhexp_of_uexp = DHExp.Sequence(d1, d2); | Test(test) => let+ dtest = dhexp_of_uexp(m, test); - DHExp.Ap(TestLit(id), dtest); + DHExp.Ap(Monitor(Test, id), dtest); | Var(name) => switch (err_status) { | InHole(FreeVariable(_)) => Some(FreeVar(id, 0, name)) @@ -203,7 +204,7 @@ let rec dhexp_of_uexp = | Constructor(name) => switch (err_status) { | _ when Hyper.is_export(name) => - Some(DHExp.Ap(TestLit(Hyper.export_id), Tuple([]))) + Some(DHExp.Ap(Monitor(Test, Hyper.export_id), Tuple([]))) | InHole(Common(NoType(FreeConstructor(_)))) => Some(FreeVar(id, 0, name)) | _ => Some(Constructor(name)) @@ -302,7 +303,9 @@ let rec dhexp_of_uexp = }; | TyAlias(_, _, e) => dhexp_of_uexp(m, e) }; - wrap(ctx, id, mode, self, d); + let d = wrap(ctx, id, mode, self, d); + /* Wrap with probe if indicated by id */ + List.mem(id, probe_ids) ? DHExp.Ap(Monitor(Probe, id), d) : d; | Some((InfoPat(_) | InfoTyp(_) | InfoTPat(_)) as ci) => Printf.printf( "Elaborate: Exp: Infomap returned wrong sort: %s\n", @@ -386,8 +389,9 @@ and dhpat_of_upat = (m: Statics.Map.t, upat: Term.UPat.t): option(DHPat.t) => { }; }; -let uexp_elab = (m: Statics.Map.t, uexp: Term.UExp.t): ElaborationResult.t => - switch (dhexp_of_uexp(m, uexp)) { +let uexp_elab = + (~probe_ids=[], m: Statics.Map.t, uexp: Term.UExp.t): ElaborationResult.t => + switch (dhexp_of_uexp(~probe_ids, m, uexp)) { | None => DoesNotElaborate | Some(d) => let ty = @@ -397,3 +401,8 @@ let uexp_elab = (m: Statics.Map.t, uexp: Term.UExp.t): ElaborationResult.t => }; Elaborates(d, ty, Delta.empty); }; + +//TODO(andrew): cleanup +let uexp_elab' = + (probe_ids, m: Statics.Map.t, uexp: Term.UExp.t): ElaborationResult.t => + uexp_elab(~probe_ids, m, uexp); diff --git a/src/haz3lcore/dynamics/Evaluator.re b/src/haz3lcore/dynamics/Evaluator.re index 1ae3cb970e..11e6ec8653 100644 --- a/src/haz3lcore/dynamics/Evaluator.re +++ b/src/haz3lcore/dynamics/Evaluator.re @@ -322,7 +322,7 @@ and matches_cast_Sum = | ConsistentCase(_) | Sequence(_, _) | Closure(_) - | TestLit(_) + | Monitor(_) | Cons(_) | ListConcat(_) => DoesNotMatch } @@ -400,7 +400,7 @@ and matches_cast_Tuple = | BoolLit(_) => DoesNotMatch | IntLit(_) => DoesNotMatch | Sequence(_) - | TestLit(_) => DoesNotMatch + | Monitor(_) => DoesNotMatch | FloatLit(_) => DoesNotMatch | StringLit(_) => DoesNotMatch | ListLit(_) => DoesNotMatch @@ -537,7 +537,7 @@ and matches_cast_Cons = | BoolLit(_) => DoesNotMatch | IntLit(_) => DoesNotMatch | Sequence(_) - | TestLit(_) => DoesNotMatch + | Monitor(_) => DoesNotMatch | FloatLit(_) => DoesNotMatch | StringLit(_) => DoesNotMatch | Tuple(_) => DoesNotMatch @@ -676,7 +676,11 @@ let rec evaluate: (ClosureEnvironment.t, DHExp.t) => m(EvaluatorResult.t) = | Ap(d1, d2) => let* r1 = evaluate(env, d1); switch (r1) { - | BoxedValue(TestLit(id)) => evaluate_test(env, id, d2) + | BoxedValue(Monitor(Test, id)) => evaluate_test(env, id, d2) + | BoxedValue(Monitor(Probe, id)) => + let* res = evaluate(env, d2); + let+ _ = add_probe(id, {env, res}); + res; | BoxedValue(Constructor(_)) => let* r2 = evaluate(env, d2); switch (r2) { @@ -720,7 +724,7 @@ let rec evaluate: (ClosureEnvironment.t, DHExp.t) => m(EvaluatorResult.t) = | ApBuiltin(ident, args) => evaluate_ap_builtin(env, ident, args) - | TestLit(_) + | Monitor(_) | BoolLit(_) | IntLit(_) | FloatLit(_) @@ -1194,8 +1198,7 @@ and evaluate_ap_builtin = } and evaluate_test = - (env: ClosureEnvironment.t, n: KeywordID.t, arg: DHExp.t) - : m(EvaluatorResult.t) => { + (env: ClosureEnvironment.t, n: Id.t, arg: DHExp.t): m(EvaluatorResult.t) => { let* (arg_show, arg_result) = switch (DHExp.strip_casts(arg)) { | BinBoolOp(op, arg_d1, arg_d2) => @@ -1250,7 +1253,7 @@ and evaluate_test = switch (arg_result) { | BoxedValue(BoolLit(_)) => BoxedValue(Tuple([])) | BoxedValue(arg) - | Indet(arg) => Indet(Ap(TestLit(n), arg)) + | Indet(arg) => Indet(Ap(Monitor(Test, n), arg)) }; r |> return; } diff --git a/src/haz3lcore/dynamics/EvaluatorMonad.re b/src/haz3lcore/dynamics/EvaluatorMonad.re index 42989f65dc..a5602ed9c3 100644 --- a/src/haz3lcore/dynamics/EvaluatorMonad.re +++ b/src/haz3lcore/dynamics/EvaluatorMonad.re @@ -10,3 +10,6 @@ let take_step = get >>= (state => put(EvaluatorState.take_step(state))); let add_test = (id, report) => get >>= (state => put(EvaluatorState.add_test(state, id, report))); + +let add_probe = (id, instance) => + get >>= (state => put(EvaluatorState.add_probe(state, id, instance))); diff --git a/src/haz3lcore/dynamics/EvaluatorMonad.rei b/src/haz3lcore/dynamics/EvaluatorMonad.rei deleted file mode 100644 index 262a899b6e..0000000000 --- a/src/haz3lcore/dynamics/EvaluatorMonad.rei +++ /dev/null @@ -1,27 +0,0 @@ -/** - Monad for the evaluator. - */ - -include Util.StateMonad.S with type state = EvaluatorState.t; - -/** - See {!val:EvaluatorState.get_eig}. - */ -let get_eig: t(EnvironmentIdGen.t); - -/** - See {!val:EvaluatorState.put_eig}. - */ -let put_eig: EnvironmentIdGen.t => t(unit); - -/** - See {!val:EvaluatorState.with_eig}. - */ -let with_eig: (EnvironmentIdGen.t => ('a, EnvironmentIdGen.t)) => t('a); - -/** - See {!val:EvaluatorState.take_step} - */ -let take_step: t(unit); - -let add_test: (KeywordID.t, TestMap.instance_report) => t(unit); diff --git a/src/haz3lcore/dynamics/EvaluatorPost.re b/src/haz3lcore/dynamics/EvaluatorPost.re index 18d4ea2b44..f0f493b91f 100644 --- a/src/haz3lcore/dynamics/EvaluatorPost.re +++ b/src/haz3lcore/dynamics/EvaluatorPost.re @@ -53,7 +53,7 @@ exception Exception(error); let rec pp_eval = (d: DHExp.t): m(DHExp.t) => switch (d) { /* Non-hole expressions: recurse through subexpressions */ - | TestLit(_) + | Monitor(_) | BoolLit(_) | IntLit(_) | FloatLit(_) @@ -267,7 +267,7 @@ and pp_uneval = (env: ClosureEnvironment.t, d: DHExp.t): m(DHExp.t) => } /* Non-hole expressions: expand recursively */ - | TestLit(_) + | Monitor(_) | BoolLit(_) | IntLit(_) | FloatLit(_) @@ -441,7 +441,7 @@ let rec track_children_of_hole = : HoleInstanceInfo.t => switch (d) { | Constructor(_) - | TestLit(_) + | Monitor(_) | BoolLit(_) | IntLit(_) | FloatLit(_) diff --git a/src/haz3lcore/dynamics/EvaluatorState.re b/src/haz3lcore/dynamics/EvaluatorState.re index c2bff80641..fe8f5b8181 100644 --- a/src/haz3lcore/dynamics/EvaluatorState.re +++ b/src/haz3lcore/dynamics/EvaluatorState.re @@ -3,12 +3,14 @@ type t = { eig: EnvironmentIdGen.t, stats: EvaluatorStats.t, tests: TestMap.t, + probes: ProbeMap.t, }; let init = { eig: EnvironmentIdGen.init, stats: EvaluatorStats.initial, tests: TestMap.empty, + probes: ProbeMap.empty, }; let get_eig = ({eig, _}) => eig; @@ -33,3 +35,12 @@ let add_test = ({tests, _} as es, id, report) => { let get_tests = ({tests, _}) => tests; let put_tests = (tests, es) => {...es, tests}; + +let add_probe = ({probes, _} as es, id, instance) => { + let probes = probes |> ProbeMap.extend(id, instance); + {...es, probes}; +}; + +let get_probes = ({probes, _}) => probes; + +let put_probes = (probes, es) => {...es, probes}; diff --git a/src/haz3lcore/dynamics/EvaluatorState.rei b/src/haz3lcore/dynamics/EvaluatorState.rei index 3774c7e718..63d43628c4 100644 --- a/src/haz3lcore/dynamics/EvaluatorState.rei +++ b/src/haz3lcore/dynamics/EvaluatorState.rei @@ -42,8 +42,14 @@ let take_step: t => t; */ let get_step: t => int; -let add_test: (t, KeywordID.t, TestMap.instance_report) => t; +let add_test: (t, Id.t, TestMap.instance_report) => t; let get_tests: t => TestMap.t; let put_tests: (TestMap.t, t) => t; + +let add_probe: (t, Id.t, ProbeMap.instance) => t; + +let get_probes: t => ProbeMap.t; + +let put_probes: (ProbeMap.t, t) => t; diff --git a/src/haz3lcore/dynamics/KeywordID.re b/src/haz3lcore/dynamics/KeywordID.re deleted file mode 100644 index d176549da7..0000000000 --- a/src/haz3lcore/dynamics/KeywordID.re +++ /dev/null @@ -1,2 +0,0 @@ -[@deriving (show({with_path: false}), sexp, yojson)] -type t = Id.t; diff --git a/src/haz3lcore/dynamics/Substitution.re b/src/haz3lcore/dynamics/Substitution.re index 92f8cff0fe..0f1a140004 100644 --- a/src/haz3lcore/dynamics/Substitution.re +++ b/src/haz3lcore/dynamics/Substitution.re @@ -51,7 +51,7 @@ let rec subst_var = (d1: DHExp.t, x: Var.t, d2: DHExp.t): DHExp.t => | ApBuiltin(ident, args) => let args = List.map(subst_var(d1, x), args); ApBuiltin(ident, args); - | TestLit(_) + | Monitor(_) | BoolLit(_) | IntLit(_) | FloatLit(_) diff --git a/src/haz3lcore/dynamics/TestMap.re b/src/haz3lcore/dynamics/TestMap.re index 5e5784cc02..02a5675d74 100644 --- a/src/haz3lcore/dynamics/TestMap.re +++ b/src/haz3lcore/dynamics/TestMap.re @@ -8,7 +8,7 @@ let joint_status: list(instance_report) => TestStatus.t = reports => TestStatus.join_all(List.map(((_, x, _)) => x, reports)); [@deriving (show({with_path: false}), sexp, yojson)] -type report = (KeywordID.t, list(instance_report)); +type report = (Id.t, list(instance_report)); [@deriving (show({with_path: false}), sexp, yojson)] type t = list(report); diff --git a/src/haz3lcore/prog/Interface.re b/src/haz3lcore/prog/Interface.re index 0897f5517f..1ff09be427 100644 --- a/src/haz3lcore/prog/Interface.re +++ b/src/haz3lcore/prog/Interface.re @@ -36,24 +36,30 @@ let dh_err = (error: string): DHExp.t => InvalidText(Id.invalid, -666, error); let elaborate = - Core.Memo.general(~cache_size_bound=1000, Elaborator.uexp_elab); + Core.Memo.general(~cache_size_bound=1000, Elaborator.uexp_elab'); exception DoesNotElaborate; -let elaborate = (~settings: CoreSettings.t, map, term): DHExp.t => +let elaborate = (~probe_ids=[], ~settings: CoreSettings.t, map, term): DHExp.t => switch (settings.statics) { | false => dh_err("Statics disabled: No elaboration") | true => - switch (elaborate(map, term)) { + switch (elaborate(probe_ids, map, term)) { | DoesNotElaborate => dh_err("Internal error: Elaboration returns None") | Elaborates(d, _, _) => d } }; let elaborate_editor = - (~settings: CoreSettings.t, ~ctx_init: Ctx.t, editor: Editor.t): DHExp.t => { + ( + ~probe_ids=[], + ~settings: CoreSettings.t, + ~ctx_init: Ctx.t, + editor: Editor.t, + ) + : DHExp.t => { let (term, _) = MakeTerm.from_zip_for_sem(editor.state.zipper); let info_map = Statics.mk_map_ctx(settings, ctx_init, term); - elaborate(~settings, info_map, term); + elaborate(~probe_ids, ~settings, info_map, term); }; exception EvalError(EvaluatorError.t); diff --git a/src/haz3lcore/zipper/Editor.re b/src/haz3lcore/zipper/Editor.re index 06e7399a01..0f5fc1a55e 100644 --- a/src/haz3lcore/zipper/Editor.re +++ b/src/haz3lcore/zipper/Editor.re @@ -101,6 +101,9 @@ let init = (~read_only=false, z) => { }; let empty = id => init(~read_only=false, Zipper.init(id)); +let get_indicated = (ed: t): option(Id.t) => + Indicated.index(ed.state.zipper); + let update_z = (f: Zipper.t => Zipper.t, ed: t) => { ...ed, state: { diff --git a/src/haz3lweb/DHExpToSeg.re b/src/haz3lweb/DHExpToSeg.re index 62f513e282..3b92ec632a 100644 --- a/src/haz3lweb/DHExpToSeg.re +++ b/src/haz3lweb/DHExpToSeg.re @@ -139,7 +139,7 @@ and go = (d: DHExp.t): Segment.t => { | FreeVar(_, _, s) | InvalidText(_, _, s) => [atomic_operand(Exp, s)] // Composite value forms - | Ap(TestLit(_), d2) => [test_tile(go(d2))] + | Ap(Monitor(_), d2) => [test_tile(go(d2))] | Ap(d1, d2) => go(d1) @ [ap_tile(Exp, go(d2))] | Tuple([]) => [atomic_operand(Exp, "()")] | Tuple(ds) => @@ -179,7 +179,7 @@ and go = (d: DHExp.t): Segment.t => { |> List.flatten; [case_tile(go(d) @ [lb()] @ child)]; // Hacky support - | TestLit(_) => [] // Shouldn't occur + | Monitor(_) => [] // Shouldn't occur | Prj(d, i) => go(ApBuiltin("prj", [IntLit(i), d])) }; } diff --git a/src/haz3lweb/Init.ml b/src/haz3lweb/Init.ml index 3c7784555d..2a32e99a7c 100644 --- a/src/haz3lweb/Init.ml +++ b/src/haz3lweb/Init.ml @@ -8,6 +8,7 @@ let startup : PersistentData.t = { statics = true; elaborate = false; assist = true; dynamics = true }; async_evaluation = false; context_inspector = false; + live_inspector = Settings.live_inspector_init; instructor_mode = true; benchmark = false; mode = Scratch; diff --git a/src/haz3lweb/Keyboard.re b/src/haz3lweb/Keyboard.re index b0979aa173..9d1ef081b1 100644 --- a/src/haz3lweb/Keyboard.re +++ b/src/haz3lweb/Keyboard.re @@ -70,6 +70,17 @@ let handle_key_event = (k: Key.t, ~model: Model.t): option(Update.t) => { "DEBUG: F10: Zipper with dump_backpack=true, erase_buffer=false", ); zipper |> Zipper.seg_for_sem |> Segment.show |> print; + | "F11" => + /* TODO(andrew): cleanup. testing for probe */ + /*zipper + |> get_elab + |> Interface.evaluate + |> ProgramResult.get_state + |> EvaluatorState.get_probes + |> ProbeMap.process + |> ProbeMap.show_processed_map + |> print*/ + None | _ => None }; | {key: D(key), sys: _, shift, meta: Up, ctrl: Up, alt: Up} => diff --git a/src/haz3lweb/Settings.re b/src/haz3lweb/Settings.re index 56072fab8e..c70f9c2e93 100644 --- a/src/haz3lweb/Settings.re +++ b/src/haz3lweb/Settings.re @@ -1,4 +1,24 @@ open Sexplib.Std; +open Haz3lcore; + +[@deriving (show({with_path: false}), sexp, yojson)] +type live_inspector = { + on: bool, + use_cursor: bool, + show_fns_in_env: bool, + ids: list(Id.t), + cur_env_idx: int, + cur_env: Haz3lcore.ProbeMap.dhexp_env, +}; + +let live_inspector_init = { + on: false, + use_cursor: true, + show_fns_in_env: false, + ids: [], + cur_env_idx: 0, + cur_env: [], +}; [@deriving (show({with_path: false}), sexp, yojson)] type mode = @@ -17,6 +37,7 @@ let mode_of_string = (s: string): mode => [@deriving (show({with_path: false}), sexp, yojson)] type t = { + live_inspector, captions: bool, secondary_icons: bool, core: Haz3lcore.CoreSettings.t, diff --git a/src/haz3lweb/Update.re b/src/haz3lweb/Update.re index 38a79e54ea..21b6eae0e1 100644 --- a/src/haz3lweb/Update.re +++ b/src/haz3lweb/Update.re @@ -5,6 +5,33 @@ include UpdateAction; // to prevent circularity let update_settings = (a: settings_action, {settings, _} as model: Model.t): Model.t => switch (a) { + | LiveInspector(a) => + let live_inspector = settings.live_inspector; + let live_inspector = + switch (a) { + | ToggleOn => {...live_inspector, on: !live_inspector.on} + | ToggleCursor => { + ...live_inspector, + use_cursor: !live_inspector.use_cursor, + } + | ToggleShowFnsInEnv => { + ...live_inspector, + show_fns_in_env: !live_inspector.show_fns_in_env, + } + | UpdateIds(f) => {...live_inspector, ids: f(live_inspector.ids)} + | SetCurrentEnvIdx(i) => {...live_inspector, cur_env_idx: i} + | UpdateCurrentEnv(f) => { + ...live_inspector, + cur_env: f(live_inspector.cur_env), + } + }; + { + ...model, + settings: { + ...settings, + live_inspector, + }, + }; | Statics => /* NOTE: dynamics depends on statics, so if dynamics is on and we're turning statics off, turn dynamics off as well */ @@ -117,7 +144,8 @@ let reevaluate_post_update = (settings: Settings.t) => | Dynamics | InstructorMode | ContextInspector - | Mode(_) => true + | Mode(_) + | LiveInspector(_) => true } | SetMeta(meta_action) => switch (meta_action) { diff --git a/src/haz3lweb/UpdateAction.re b/src/haz3lweb/UpdateAction.re index 87c460ff36..177bd85357 100644 --- a/src/haz3lweb/UpdateAction.re +++ b/src/haz3lweb/UpdateAction.re @@ -2,6 +2,15 @@ open Sexplib.Std; open Util; open Haz3lcore; +[@deriving (show({with_path: false}), sexp, yojson)] +type live_inspector_action = + | ToggleOn + | ToggleCursor + | ToggleShowFnsInEnv + | UpdateIds(list(Id.t) => list(Id.t)) + | SetCurrentEnvIdx(int) + | UpdateCurrentEnv(ProbeMap.dhexp_env => ProbeMap.dhexp_env); + [@deriving (show({with_path: false}), sexp, yojson)] type settings_action = | Captions @@ -12,6 +21,7 @@ type settings_action = | Dynamics | Benchmark | ContextInspector + | LiveInspector(live_inspector_action) | InstructorMode | Mode(Settings.mode); diff --git a/src/haz3lweb/view/Cell.re b/src/haz3lweb/view/Cell.re index 7df2e711f9..fe389f9773 100644 --- a/src/haz3lweb/view/Cell.re +++ b/src/haz3lweb/view/Cell.re @@ -175,6 +175,7 @@ let test_result_layer = let deco = ( ~zipper, + ~settings, ~measured, ~term_ranges, ~unselected, @@ -188,6 +189,7 @@ let deco = ) => { module Deco = Deco.Deco({ + let settings = settings; let font_metrics = font_metrics; let map = measured; let show_backpack_targets = show_backpack_targets; @@ -325,6 +327,7 @@ let editor_view = let deco_view = deco( ~zipper, + ~settings, ~unselected, ~measured, ~term_ranges, @@ -343,6 +346,7 @@ let editor_view = ); code_cell_view( ~inject, + //~settings, ~font_metrics, ~clss, ~selected, @@ -383,7 +387,12 @@ let editor_with_result_view = ~font_metrics, ~elab= settings.core.elaborate - ? Interface.elaborate(~settings=settings.core, info_map, term) + ? Interface.elaborate( + ~probe_ids=editor |> Editor.get_indicated |> Option.to_list, + ~settings=settings.core, + info_map, + term, + ) : Interface.dh_err("Elaboration disabled"), result, ) diff --git a/src/haz3lweb/view/Deco.re b/src/haz3lweb/view/Deco.re index bfaba97850..6f7d1c2354 100644 --- a/src/haz3lweb/view/Deco.re +++ b/src/haz3lweb/view/Deco.re @@ -1,10 +1,12 @@ open Virtual_dom.Vdom; open Util; open Haz3lcore; +open OptUtil.Syntax; module Deco = ( M: { + let settings: Settings.t; let font_metrics: FontMetrics.t; let map: Measured.t; let show_backpack_targets: bool; @@ -15,6 +17,7 @@ module Deco = }, ) => { let font_metrics = M.font_metrics; + let settings = M.settings; let tile = id => Id.Map.find(id, M.tiles); @@ -347,13 +350,154 @@ module Deco = ); }; + let live_aid_target_data = + (zipper: Zipper.t): option((Id.t, Measured.measurement)) => { + let* index = Indicated.index(zipper); + let+ measurement = Measured.find_by_id(index, M.map); + (index, measurement); + }; + + let live_aid_data = + (zipper: Zipper.t): option(list(ProbeMap.processed_instance)) => { + Printf.printf( + "program metrics: %d %d\n", + Measured.height(M.map), + Measured.width(M.map), + ); + let* index = Indicated.index(zipper); + //TODO: ask d how to get term from terms? + //let term = Id.Map.find(what_id, M.terms); + let term = zipper |> Zipper.unselect_and_zip |> MakeTerm.go |> fst; + let* up_index = index |> Probe.get_exp_parent(M.info_map); + let elab = + Interface.elaborate( + ~settings=M.settings.core, + ~probe_ids=[up_index], + M.info_map, + term, + ); + let eval_result = Interface.evaluate(~settings=M.settings.core, elab); + let* index_info = Id.Map.find_opt(index, M.info_map); + let processed_map = + eval_result + |> ProgramResult.get_state + |> EvaluatorState.get_probes + |> ProbeMap.process(index_info, M.map); + Id.Map.find_opt(up_index, processed_map); //return entry for cursor + }; + + let live_aid_val_view = (~env, ~width, d: DHExp.t) => + Node.div( + ~attr=Attr.classes(["env-entry"] @ (env ? ["env"] : ["res"])), + [ + DHCode.view( + ~settings={ + show_case_clauses: true, + show_fn_bodies: false, + show_casts: false, + }, + ~selected_hole_instance=None, + ~font_metrics, + ~width, + d, + ), + ], + ); + + let env_entries_row = (m, ns: list(Node.t)) => { + Node.div( + ~attr= + Attr.many([ + Attr.classes(["env-entries-row"]), + DecUtil.pos_abs_basic(~font_metrics, m), + ]), + ns, + ); + }; + + open Sexplib.Std; + [@deriving (show({with_path: false}), sexp, yojson)] + type entry = ProbeMap.final_env_entry; + [@deriving (show({with_path: false}), sexp, yojson)] + type env_layout = list((int, list(entry))); + + let layout_env = (env: ProbeMap.dhexp_env) => { + let m = IntMap.empty; + let add_entry = (entry, es) => + switch (es) { + | Some(es) => Some([entry, ...es]) + | None => Some([entry]) + }; + let sort_by_col = + List.sort((e1: entry, e2: entry) => + e1.measurement.origin.col - e2.measurement.origin.col + ); + let env_layout = + List.fold_right( + ((_, e: entry)) => + IntMap.update(e.measurement.origin.row, add_entry(e)), + env, + m, + ) + |> IntMap.bindings + |> List.map(((row, es)) => (row, sort_by_col(es))) + |> List.sort(((r1, _), (r2, _)) => compare(r1, r2)); + print_endline("ENV_LAYOUT:"); + env_layout |> show_env_layout |> print_endline; + env_layout; + }; + + let get_extremes = (e: env_layout): (int, int) => + /* Preconsition: e is nonempty */ + (e |> List.hd |> fst, e |> List.rev |> List.hd |> fst); + + let live_aid = (zipper: Zipper.t) => { + let col = Measured.width(M.map) + 2; + let width = 40; + switch (live_aid_target_data(zipper), live_aid_data(zipper)) { + | (Some((res_id, res_m)), Some([{res, env}, ..._])) => + let layout_env = + layout_env( + env @ [("RES", {v: res, measurement: res_m, binding_id: res_id})], + ); + let (fst_row, lst_row) = get_extremes(layout_env); + Printf.printf("LIVE AID: fst_row: %d, lst_row: %d\n", fst_row, lst_row); + layout_env + |> List.map(((row, es)) => + env_entries_row( + {row, col}, + List.map( + (entry: entry) => + live_aid_val_view( + ~width, + ~env=entry.binding_id != res_id, + entry.v, + ), + es, + ) + |> ( + xs => + ListUtil.interleave( + xs, + List.init(List.length(xs) - 1, _ => Node.text(",")), + ) + ), + ) + ); + | _ => [Node.text("no live aid")] + }; + }; + let all = (zipper, sel_seg) => - List.concat([ - caret(zipper), - indicated_piece_deco(zipper), - selected_pieces(zipper), - backback(zipper), - targets'(zipper.backpack, sel_seg), - err_holes(zipper), - ]); + List.concat( + [ + caret(zipper), + indicated_piece_deco(zipper), + selected_pieces(zipper), + backback(zipper), + targets'(zipper.backpack, sel_seg), + err_holes(zipper), + ] + @ (settings.live_inspector.on ? [live_aid(zipper)] : []), + ); }; diff --git a/src/haz3lweb/view/LangDoc.re b/src/haz3lweb/view/LangDoc.re index 8fdb9444c3..c42a0a1643 100644 --- a/src/haz3lweb/view/LangDoc.re +++ b/src/haz3lweb/view/LangDoc.re @@ -223,6 +223,7 @@ let deco = ) => { module Deco = Deco.Deco({ + let settings = settings; let font_metrics = font_metrics; let map = map; let show_backpack_targets = false; diff --git a/src/haz3lweb/view/Page.re b/src/haz3lweb/view/Page.re index b85c463960..7ec03df49a 100644 --- a/src/haz3lweb/view/Page.re +++ b/src/haz3lweb/view/Page.re @@ -46,6 +46,7 @@ let nut_menu = core: {statics, elaborate, assist, dynamics}, benchmark, instructor_mode, + live_inspector, _, }: Settings.t, ) => [ @@ -65,6 +66,9 @@ let nut_menu = toggle("𝑒", ~tooltip="Show Elaboration", elaborate, _ => inject(Set(Elaborate)) ), + toggle("L", ~tooltip="Toggle Live Inspector", live_inspector.on, _ => + inject(Set(LiveInspector(ToggleOn))) + ), toggle("b", ~tooltip="Toggle Performance Benchmark", benchmark, _ => inject(Set(Benchmark)) ), diff --git a/src/haz3lweb/view/dec/DecUtil.re b/src/haz3lweb/view/dec/DecUtil.re index c34c727aef..646539a10a 100644 --- a/src/haz3lweb/view/dec/DecUtil.re +++ b/src/haz3lweb/view/dec/DecUtil.re @@ -34,6 +34,25 @@ let jagged_edge_w = child_border_thickness /. 1.; let short_tip_width = (1. -. t) *. tip_width; +let pos_abs_basic = + ( + ~style="", + ~left_fudge=0.0, + ~top_fudge=0.0, + ~font_metrics: FontMetrics.t, + origin: Haz3lcore.Measured.Point.t, + ) => + Attr.create( + "style", + style + ++ ";" + ++ Printf.sprintf( + "position: absolute; left: %fpx; top: %fpx;", + Float.of_int(origin.col) *. font_metrics.col_width +. left_fudge, + Float.of_int(origin.row) *. font_metrics.row_height +. top_fudge, + ), + ); + type dims = { width: int, height: int, diff --git a/src/haz3lweb/view/dhcode/layout/DHDoc_Exp.re b/src/haz3lweb/view/dhcode/layout/DHDoc_Exp.re index 2dc53757b5..1560603a76 100644 --- a/src/haz3lweb/view/dhcode/layout/DHDoc_Exp.re +++ b/src/haz3lweb/view/dhcode/layout/DHDoc_Exp.re @@ -50,7 +50,7 @@ let rec precedence = (~show_casts: bool, d: DHExp.t) => { | BoolLit(_) | IntLit(_) | Sequence(_) - | TestLit(_) + | Monitor(_) | FloatLit(_) | StringLit(_) | ListLit(_) @@ -180,7 +180,8 @@ let rec mk = | IntLit(n) => DHDoc_common.mk_IntLit(n) | FloatLit(f) => DHDoc_common.mk_FloatLit(f) | StringLit(s) => DHDoc_common.mk_StringLit(s) - | TestLit(_) => Doc.text(ExpandingKeyword.to_string(Test)) + | Monitor(Test, id) => Doc.text("test-" ++ Id.to_string(id)) + | Monitor(Probe, id) => Doc.text("probe-" ++ Id.to_string(id)) | Sequence(d1, d2) => let (doc1, doc2) = (go'(d1), go'(d2)); DHDoc_common.mk_Sequence(mk_cast(doc1), mk_cast(doc2)); diff --git a/src/haz3lweb/view/dhcode/layout/DHDoc_common.re b/src/haz3lweb/view/dhcode/layout/DHDoc_common.re index 8b8ec43794..1384a0e6a1 100644 --- a/src/haz3lweb/view/dhcode/layout/DHDoc_common.re +++ b/src/haz3lweb/view/dhcode/layout/DHDoc_common.re @@ -100,8 +100,6 @@ let mk_InvalidText = (t, hc) => let mk_Sequence = (doc1, doc2) => Doc.(hcats([doc1, linebreak(), doc2])); -let mk_TestLit = _n => Doc.text(ExpandingKeyword.to_string(Test)); - let mk_IntLit = n => Doc.text(string_of_int(n)); let mk_StringLit = s => Doc.text(Form.string_quote(s)); diff --git a/src/haz3lweb/view/dhcode/layout/DHDoc_common.rei b/src/haz3lweb/view/dhcode/layout/DHDoc_common.rei index f842b32548..49b42ce53d 100644 --- a/src/haz3lweb/view/dhcode/layout/DHDoc_common.rei +++ b/src/haz3lweb/view/dhcode/layout/DHDoc_common.rei @@ -73,8 +73,6 @@ let mk_InvalidText: (string, HoleInstance.t) => Pretty.Doc.t(DHAnnot.t); let mk_Sequence: (Pretty.Doc.t('a), Pretty.Doc.t('a)) => Pretty.Doc.t('a); -let mk_TestLit: KeywordID.t => Pretty.Doc.t('a); - let mk_IntLit: int => Pretty.Doc.t('a); let mk_FloatLit: float => Pretty.Doc.t('a); diff --git a/src/haz3lweb/www/style.css b/src/haz3lweb/www/style.css index 22f54620a3..8feb107610 100644 --- a/src/haz3lweb/www/style.css +++ b/src/haz3lweb/www/style.css @@ -2002,3 +2002,40 @@ svg.expandable path { background: #f785ff; } } + +/* live aid */ + +.env-entries-row { + position: absolute; + display: flex; + gap: 0.2em; + color: #c7b480; +} + +.env-entry { + -webkit-mask-image: linear-gradient(to right, black 6.5em, transparent); + overflow: hidden; + max-width: 8em; + height: 1.4em; + border-bottom: 1px solid #0000; + border-top: 1px solid #0000; +} +.env-entry.res { + color: #7a6219 !important; +} +.env-entry.env { + color: #169fdc !important; +} + +.env-entry:hover { + -webkit-mask-image: none; + position: relative; + background: rgb(240 231 214); + box-shadow: 0px 6px 14px #e2d9c4; + border-radius: 0.3em; + overflow: visible; + max-width: fit-content; + height: auto; + border-bottom: 1px solid #baac84; + border-top: 1px solid white; +} \ No newline at end of file diff --git a/src/util/ListUtil.re b/src/util/ListUtil.re index 7d15427aa9..e5b74262e2 100644 --- a/src/util/ListUtil.re +++ b/src/util/ListUtil.re @@ -436,3 +436,9 @@ let assoc_err = (x, xs, err: string) => | None => failwith(err) | Some(y) => y }; + +let all_eq = (~eq=(==), xs: list('a)): bool => + switch (xs) { + | [] => true + | [x, ...xs] => List.for_all(eq(x), xs) + }; From eae242bf24c100f9a32715b8d7744478cd3d4e7e Mon Sep 17 00:00:00 2001 From: disconcision Date: Mon, 11 Sep 2023 12:58:31 -0400 Subject: [PATCH 14/22] accidentally some liveaid files --- src/haz3lcore/dynamics/ProbeMap.re | 101 +++++++++++++++++++++++++++++ src/haz3lcore/statics/Probe.re | 44 +++++++++++++ 2 files changed, 145 insertions(+) create mode 100644 src/haz3lcore/dynamics/ProbeMap.re create mode 100644 src/haz3lcore/statics/Probe.re diff --git a/src/haz3lcore/dynamics/ProbeMap.re b/src/haz3lcore/dynamics/ProbeMap.re new file mode 100644 index 0000000000..5354bdcc10 --- /dev/null +++ b/src/haz3lcore/dynamics/ProbeMap.re @@ -0,0 +1,101 @@ +open Sexplib.Std; +open Util.OptUtil.Syntax; + +[@deriving (show({with_path: false}), sexp, yojson)] +type instance = { + env: ClosureEnvironment.t, //what is ClosureEnvironment vs Environment? + res: EvaluatorResult.t, +}; + +[@deriving (show({with_path: false}), sexp, yojson)] +type entry = list(instance); + +[@deriving (show({with_path: false}), sexp, yojson)] +type t = Id.Map.t(entry); +let empty: t = Id.Map.empty; + +let get: (Id.t, t) => option(entry) = Id.Map.find_opt; + +let to_list: t => list((Id.t, entry)) = Id.Map.bindings; + +let extend = (id: Id.t, instance: instance, t: t): t => { + let instances = + switch (get(id, t)) { + | Some(instances) => instances + | None => [] + }; + Id.Map.add(id, [instance, ...instances], t); +}; + +[@deriving (show({with_path: false}), sexp, yojson)] +type init_env_entry = (string, DHExp.t); + +[@deriving (show({with_path: false}), sexp, yojson)] +type final_env_entry = { + v: DHExp.t, + binding_id: Id.t, // id of the binding + measurement: Measured.measurement // location of binding +}; + +[@deriving (show({with_path: false}), sexp, yojson)] +type dhexp_env = list((string, final_env_entry)); + +[@deriving (show({with_path: false}), sexp, yojson)] +type processed_instance = { + res: DHExp.t, + env: dhexp_env, +}; +[@deriving (show({with_path: false}), sexp, yojson)] +type processed_instances = list(processed_instance); + +[@deriving (show({with_path: false}), sexp, yojson)] +type processed_map = Id.Map.t(processed_instances); + +let process_d: DHExp.t => DHExp.t = + fun + | Closure(_) => BoundVar("fun") + | DHExp.FixF(_) => BoundVar("fix") + | d => DHExp.strip_casts(d); + +let add_derived = + (indicated_info: Info.t, measured: Measured.t, (name, d): init_env_entry) + : option(final_env_entry) => { + let ctx = Info.ctx_of(indicated_info); + let* {id, typ: _, _} = Ctx.lookup_var(ctx, name); + let+ measurement = Measured.find_by_id(id, measured); + {v: process_d(d), binding_id: id, measurement}; +}; + +let process_entry = (index_info, measured, (name, d)) => + switch (d) { + /* Note builtins are implictly filtered + because their id lookup fails */ + //| _ when name == "pi" => None + | DHExp.Closure(_) => None + | DHExp.FixF(_) => None + | _ => + let+ b = add_derived(index_info, measured, (name, d)); + (name, b); + }; + +let process_res = (res: EvaluatorResult.t) => + switch (res) { + | BoxedValue(res) => process_d(res) + | Indet(res) => process_d(res) + //| Indet(_res) => BoundVar("indet") + }; + +let fuckin_n_truckin = + (index_info, measured, {env, res}: instance): processed_instance => { + env: + env + |> ClosureEnvironment.to_list + |> List.filter_map(process_entry(index_info, measured)), + res: process_res(res), +}; + +let process = (index_info, measured, probemap: t): processed_map => + Id.Map.map( + instances => List.map(fuckin_n_truckin(index_info, measured), instances), + probemap, + ); diff --git a/src/haz3lcore/statics/Probe.re b/src/haz3lcore/statics/Probe.re new file mode 100644 index 0000000000..1376ef551c --- /dev/null +++ b/src/haz3lcore/statics/Probe.re @@ -0,0 +1,44 @@ +open Util; + +[@deriving (show({with_path: false}), sexp, yojson)] +type binding_tree_frame' = + | Single + | Fork; +[@deriving (show({with_path: false}), sexp, yojson)] +type binding_tree_frame = { + id: Id.t, + frame: binding_tree_frame', +}; +let info_to_frame = (info: Info.t): option(binding_tree_frame') => + switch (Info.cls_of(info)) { + | Exp(Let) => Some(Single) + | Exp(Match) => Some(Single) + | Exp(Fun) => Some(Fork) + | _ => None + }; + +let get_binding_stack = + (id: Id.t, map: Statics.Map.t): list(binding_tree_frame) => + switch (Id.Map.find_opt(id, map) |> Option.map(Info.ancestors_of)) { + | Some(ancestors) => + ancestors + |> List.map(id => (id, Id.Map.find_opt(id, map))) + |> List.map(((id, x)) => + x + |> OptUtil.and_then(info_to_frame) + |> Option.map(frame => {id, frame}) + ) + |> List.filter_map(x => x) + | None => [] + }; + +let rec get_exp_parent = (map: Statics.Map.t, id: Id.t): option(Id.t) => + switch (Id.Map.find_opt(id, map)) { + | None => None + | Some(InfoExp(_)) => Some(id) + | Some(info) => + switch (Info.ancestors_of(info)) { + | [] => None + | [pid, ..._] => get_exp_parent(map, pid) + } + }; From 9183074d55371fff6f0b753f0e81470eb18fc7a1 Mon Sep 17 00:00:00 2001 From: disconcision Date: Tue, 12 Sep 2023 13:40:40 -0400 Subject: [PATCH 15/22] partial work on mvu statics and elab --- src/haz3lcore/dynamics/Elaborator.re | 65 +++++++++++++++++++++++----- src/haz3lcore/statics/Statics.re | 14 ++++++ src/haz3lweb/view/MVU.re | 1 + 3 files changed, 68 insertions(+), 12 deletions(-) diff --git a/src/haz3lcore/dynamics/Elaborator.re b/src/haz3lcore/dynamics/Elaborator.re index 7744025494..17fd92a505 100644 --- a/src/haz3lcore/dynamics/Elaborator.re +++ b/src/haz3lcore/dynamics/Elaborator.re @@ -119,7 +119,7 @@ let rec dhexp_of_uexp = (~probe_ids, m: Statics.Map.t, uexp: Term.UExp.t): option(DHExp.t) => { let dhexp_of_uexp = dhexp_of_uexp(~probe_ids); switch (Id.Map.find_opt(Term.UExp.rep_id(uexp), m)) { - | Some(InfoExp({mode, self, ctx, _})) => + | Some(InfoExp({mode, self, ctx, ancestors, _})) => let err_status = Info.status_exp(ctx, mode, self); let id = Term.UExp.rep_id(uexp); /* NOTE: using term uids for hole ids */ let+ d: DHExp.t = @@ -254,19 +254,60 @@ let rec dhexp_of_uexp = {term: Constructor("Stage"), _}, {term: Tuple([update, model]), _}, ) => - //TODO(andrew): casting - //(, fun (action:Action) -> Inject(Int(.uuid), , action) - let* update = dhexp_of_uexp(m, update); - let+ model = dhexp_of_uexp(m, model); let id_str = Term.UExp.rep_id(uexp) |> Id.to_string; - let body = - DHExp.Ap( - Constructor("Inject"), - Tuple([StringLit(id_str), update, BoundVar("action")]), + let body: Term.UExp.t = { + term: + Ap( + {term: Constructor("Inject"), ids: [Id.mk()]}, + { + term: + Tuple([ + {term: String(id_str), ids: [Id.mk()]}, + update, + {term: Var("action"), ids: [Id.mk()]}, + ]), + ids: [Id.mk()], + }, + ), + ids: [Id.mk()], + }; + let inject: Term.UExp.t = { + term: Fun({term: Var("action"), ids: [Id.mk()]}, body), + ids: [Id.mk()], + }; + //TODO(andrew): include actual stage ids / ana type somewhere? + let ret: Term.UExp.t = { + term: Tuple([model, inject]), + ids: [Id.mk()], + }; + let inject_typ: Typ.t = + Arrow( + Prod([ + String, + Arrow(Prod([Var("Model"), Var("Action")]), Var("Model")), + Var("Action"), + ]), + Var("Event"), + ); + let ctx = + Ctx.extend( + ctx, + ConstructorEntry({name: "Inject", id: Id.mk(), typ: inject_typ}), ); - let inject = - DHExp.Fun(Var("action"), Unknown(Internal), body, None); - DHExp.Tuple([model, inject]); + //(, fun (action:Action) -> Inject(Int(.uuid), , action) + /*let* update = dhexp_of_uexp(m, update); + let+ model = dhexp_of_uexp(m, model); + let body = + DHExp.Ap( + Constructor("Inject"), + Tuple([StringLit(id_str), update, BoundVar("action")]), + ); + let inject = + DHExp.Fun(Var("action"), Unknown(Internal), body, None); + DHExp.Tuple([model, inject]);*/ + let (_, m_new) = + Statics.uexp_to_info_map(~ctx, ~mode, ~ancestors, ret, m); + dhexp_of_uexp(m_new, ret); | Ap(fn, arg) => let* c_fn = dhexp_of_uexp(m, fn); let+ c_arg = dhexp_of_uexp(m, arg); diff --git a/src/haz3lcore/statics/Statics.re b/src/haz3lcore/statics/Statics.re index d4e10a2cdd..bec5a6a017 100644 --- a/src/haz3lcore/statics/Statics.re +++ b/src/haz3lcore/statics/Statics.re @@ -247,6 +247,20 @@ and uexp_to_info_map = ); (info, add_info([Hyper.export_id] @ ids, InfoExp(info), m)); | Constructor(ctr) => atomic(Self.of_ctr(ctx, ctr)) + | Ap({term: Constructor("Stage"), ids: _constructor_ids}, arg) => + let (ty_self, ty_arg) = + switch (mode) { + | Syn + | SynFun => (Typ.Unknown(SynSwitch), Typ.Unknown(SynSwitch)) + | Ana(Prod([model, Arrow(action, event)])) => ( + Prod([model, Arrow(action, event)]), + Prod([Arrow(Prod([model, action]), model), model]), + ) + | _ => (Unknown(Internal), Unknown(Internal)) + }; + let (arg, m) = go(~mode=Ana(ty_arg), arg, m); + let self: Self.t = Just(ty_self); + add(~self, ~co_ctx=arg.co_ctx, m); | Ap(fn, arg) => let fn_mode = Mode.of_ap(ctx, mode, UExp.ctr_name(fn)); let (fn, m) = go(~mode=fn_mode, fn, m); diff --git a/src/haz3lweb/view/MVU.re b/src/haz3lweb/view/MVU.re index 3ee3334a9f..f64a53f9ad 100644 --- a/src/haz3lweb/view/MVU.re +++ b/src/haz3lweb/view/MVU.re @@ -392,6 +392,7 @@ and attrs_and_divs = (mvu: t, body: DHExp.t): (list(Attr.t), list(Node.t)) => ) | _ => print_endline("ERROR: attrs_and_divs"); + print_endline(DHExp.show(body)); ([], []); }; From fd96adc1a4086296c4175aa233e7555c7ad157c4 Mon Sep 17 00:00:00 2001 From: disconcision Date: Tue, 12 Sep 2023 14:14:41 -0400 Subject: [PATCH 16/22] workaround mvu casting bug --- src/haz3lcore/dynamics/Elaborator.re | 14 -------------- src/haz3lweb/view/MVU.re | 8 +++++--- 2 files changed, 5 insertions(+), 17 deletions(-) diff --git a/src/haz3lcore/dynamics/Elaborator.re b/src/haz3lcore/dynamics/Elaborator.re index 17fd92a505..188cd9e12c 100644 --- a/src/haz3lcore/dynamics/Elaborator.re +++ b/src/haz3lcore/dynamics/Elaborator.re @@ -280,20 +280,6 @@ let rec dhexp_of_uexp = term: Tuple([model, inject]), ids: [Id.mk()], }; - let inject_typ: Typ.t = - Arrow( - Prod([ - String, - Arrow(Prod([Var("Model"), Var("Action")]), Var("Model")), - Var("Action"), - ]), - Var("Event"), - ); - let ctx = - Ctx.extend( - ctx, - ConstructorEntry({name: "Inject", id: Id.mk(), typ: inject_typ}), - ); //(, fun (action:Action) -> Inject(Int(.uuid), , action) /*let* update = dhexp_of_uexp(m, update); let+ model = dhexp_of_uexp(m, model); diff --git a/src/haz3lweb/view/MVU.re b/src/haz3lweb/view/MVU.re index f64a53f9ad..7e1bd5f482 100644 --- a/src/haz3lweb/view/MVU.re +++ b/src/haz3lweb/view/MVU.re @@ -384,8 +384,9 @@ and input_of = (input_type: string, mvu: t, body: DHExp.t) => { divs, ); } -and attrs_and_divs = (mvu: t, body: DHExp.t): (list(Attr.t), list(Node.t)) => - switch (body) { +and attrs_and_divs = (mvu: t, body: DHExp.t): (list(Attr.t), list(Node.t)) => { + //TODO(andrew): not sure why other strip casts is necessary here? + switch (DHExp.strip_casts(body)) { | Tuple([ListLit(_, _, _, attrs), ListLit(_, _, _, divs)]) => ( List.map(render_attr(mvu), attrs), List.map(render_div(mvu), divs), @@ -393,8 +394,9 @@ and attrs_and_divs = (mvu: t, body: DHExp.t): (list(Attr.t), list(Node.t)) => | _ => print_endline("ERROR: attrs_and_divs"); print_endline(DHExp.show(body)); - ([], []); + ([], [dhexp_view(~font_metrics=mvu.font_metrics, body)]); }; +}; let go = ( From 0bcb4b4a06af7655ee29324e25e02f1ec023e796 Mon Sep 17 00:00:00 2001 From: disconcision Date: Tue, 12 Sep 2023 15:45:08 -0400 Subject: [PATCH 17/22] basic syntax update working --- src/haz3lcore/zipper/action/Action.re | 1 + src/haz3lcore/zipper/action/Perform.re | 11 ++++++ src/haz3lweb/Log.re | 3 +- src/haz3lweb/Update.re | 47 +++++++++++++++++++++++++- src/haz3lweb/UpdateAction.re | 1 + src/haz3lweb/view/MVU.re | 16 +++++++-- 6 files changed, 74 insertions(+), 5 deletions(-) diff --git a/src/haz3lcore/zipper/action/Action.re b/src/haz3lcore/zipper/action/Action.re index 9a22e34d7a..895f021294 100644 --- a/src/haz3lcore/zipper/action/Action.re +++ b/src/haz3lcore/zipper/action/Action.re @@ -62,6 +62,7 @@ type t = | Destruct(Direction.t) | Insert(string) | Remote(Id.t, t) + | InsertSegment(Segment.t) | RotateBackpack | MoveToBackpackTarget(planar) | Pick_up diff --git a/src/haz3lcore/zipper/action/Perform.re b/src/haz3lcore/zipper/action/Perform.re index 4e37b54cf4..1f179cb396 100644 --- a/src/haz3lcore/zipper/action/Perform.re +++ b/src/haz3lcore/zipper/action/Perform.re @@ -9,6 +9,7 @@ let is_write_action = (a: Action.t) => { | Jump(_) | Select(_) => false | Remote(_) + | InsertSegment(_) | Destruct(_) | Insert(_) | Pick_up @@ -81,6 +82,16 @@ let rec go_z = Ok(z); }; } + | InsertSegment(segment) => + switch (go_z(~meta, ~settings, Select(Term(Current)), z)) { + | Error(e) => Error(e) + | Ok(z) => + let z = {...z, selection: Selection.mk(segment)}; + switch (go_z(~meta, ~settings, Unselect(Some(Left)), z)) { + | Error(e) => Error(e) + | Ok(z) => Ok(z) + }; + } | Jump(jump_target) => open OptUtil.Syntax; diff --git a/src/haz3lweb/Log.re b/src/haz3lweb/Log.re index 0c34fbba89..b43b948307 100644 --- a/src/haz3lweb/Log.re +++ b/src/haz3lweb/Log.re @@ -12,7 +12,8 @@ let is_action_logged: UpdateAction.t => bool = | ExportPersistentData | FinishImportAll(_) | FinishImportScratchpad(_) - | Benchmark(_) => false + | Benchmark(_) + | MUVSyntax(_) => false | Execute | StoreKey(_) | Reset diff --git a/src/haz3lweb/Update.re b/src/haz3lweb/Update.re index 21b6eae0e1..e25560a3a9 100644 --- a/src/haz3lweb/Update.re +++ b/src/haz3lweb/Update.re @@ -173,11 +173,15 @@ let reevaluate_post_update = (settings: Settings.t) => | DoTheThing | StoreKey(_) | ExportPersistentData => false + | MUVSyntax(_) | Benchmark(_) // may not be necessary on all of these // TODO review and prune | ReparseCurrentEditor - | PerformAction(Destruct(_) | Insert(_) | Pick_up | Put_down | Remote(_)) + | PerformAction( + Destruct(_) | Insert(_) | Pick_up | Put_down | Remote(_) | + InsertSegment(_), + ) | FinishImportAll(_) | FinishImportScratchpad(_) | ResetCurrentEditor @@ -479,6 +483,47 @@ let rec apply = | Benchmark(Finish) => Benchmark.finish(); Ok(model); + | MUVSyntax(id, update, action) => + let settings = model.settings; + let ctx = Editors.get_ctx_init(~settings, model.editors); + let map = + model.editors + |> Editors.active_zipper + |> MakeTerm.from_zip_for_sem + |> fst + |> Interface.Statics.mk_map_ctx(settings.core, ctx); + let ci = Id.Map.find_opt(id, map); + //get id of end child of stage + switch (ci) { + | Some( + InfoExp({ + term: { + term: + Ap( + _, + { + term: Tuple([_, {ids: [id, ..._], _} as model_uexp]), + _, + }, + ), + _, + }, + _, + }), + ) => + let init_model = + Interface.elaborate(~settings=settings.core, map, model_uexp); + let res = + Interface.eval_d2d( + ~settings=settings.core, + Ap(update, Tuple([init_model, action])), + ); + print_endline("id:" ++ Id.to_string(id)); + let seg = DHExpToSeg.go(res); + let action: Action.t = Remote(id, InsertSegment(seg)); + perform_action(model, action); + | _ => Ok(model) + }; }; reevaluate_post_update(model.settings, update) ? m |> Result.map(~f=evaluate_and_schedule(state, ~schedule_action)) : m; diff --git a/src/haz3lweb/UpdateAction.re b/src/haz3lweb/UpdateAction.re index 177bd85357..e4d75479ea 100644 --- a/src/haz3lweb/UpdateAction.re +++ b/src/haz3lweb/UpdateAction.re @@ -81,6 +81,7 @@ type t = | FinishImportScratchpad(option(string)) | SwitchScratchSlide(int) /* editor */ + | MUVSyntax(Id.t, DHExp.t, DHExp.t) | DoTheThing | Save | PerformAction(Action.t) diff --git a/src/haz3lweb/view/MVU.re b/src/haz3lweb/view/MVU.re index 7e1bd5f482..7ad00aab9f 100644 --- a/src/haz3lweb/view/MVU.re +++ b/src/haz3lweb/view/MVU.re @@ -249,10 +249,23 @@ let render_styles = styles => |> String.concat(";") |> Attr.create("style"); +let syntax_action = (id, _update, _action): Action.t => { + let a: Action.t = Pick_up; //TODO(andrew) + Remote(id, a); +}; + let update = ({name, update, model, settings, _}: t, handler, arg): UpdateAction.t => //TODO(andrew): betterfy this trash if (update == Tuple([]) && model == Tuple([])) { + let inj = Interface.eval_d2d(~settings=settings.core, Ap(handler, arg)); + switch (inj) { + | Ap(Constructor("Inject"), Tuple([StringLit(id), update, action])) => + MUVSyntax(id |> Id.of_string |> Option.get, update, action) + | _ => + //TODO: better error handling + SetMeta(MVU(name, model)) + }; /* TODO: 0. let Inject(id, action, update) = Ap(handler, arg) @@ -277,9 +290,6 @@ let update = child has nonempty co-ctx. or simply require it to be a value Q: how to canonically to check if its a value? */ - SetMeta( - MVU(name, model), - ); } else { let model = Interface.eval_d2d( From 5ba5135d4bb990edd760e586cf82f57dfc1fc2f7 Mon Sep 17 00:00:00 2001 From: disconcision Date: Tue, 12 Sep 2023 17:23:13 -0400 Subject: [PATCH 18/22] disable dhcode display for mvu for now --- src/haz3lweb/view/Cell.re | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/haz3lweb/view/Cell.re b/src/haz3lweb/view/Cell.re index fe389f9773..0ee18c15fc 100644 --- a/src/haz3lweb/view/Cell.re +++ b/src/haz3lweb/view/Cell.re @@ -237,7 +237,7 @@ let eval_result_footer_view = | Some({eval_result: Ap(Constructor("Div"), _) as node, _}) => //TODO(andrew): more general constructor catch MVU.go2(~settings, ~inject, ~font_metrics, ~node) - @ [dhcode_view(~show_casts=false, node)] + // @ [dhcode_view(~show_casts=false, node)] | Some({ eval_result: Ap( From 1401b19fa41ded06fd92f5fb951fafe09925e77e Mon Sep 17 00:00:00 2001 From: disconcision Date: Wed, 13 Sep 2023 22:28:16 -0400 Subject: [PATCH 19/22] cleanup --- src/haz3lcore/zipper/Zipper.re | 2 +- src/haz3lcore/zipper/action/Perform.re | 55 +++++++++++++++++++------- src/haz3lweb/Update.re | 23 ++--------- src/haz3lweb/view/MVU.re | 20 ++++++++++ 4 files changed, 65 insertions(+), 35 deletions(-) diff --git a/src/haz3lcore/zipper/Zipper.re b/src/haz3lcore/zipper/Zipper.re index 9af1f2e497..ba29a3cdce 100644 --- a/src/haz3lcore/zipper/Zipper.re +++ b/src/haz3lcore/zipper/Zipper.re @@ -497,7 +497,7 @@ let zip_to_path = (seg: Segment.t, path: Measured.piece_path, caret: Caret.t): t => /*NOTE: Path must be reversed as it is gathered by consing */ { - selection: Selection.mk([]), + selection: Selection.empty, backpack: [], relatives: zip_to_path_seg(seg, Ancestors.empty, List.rev(path)), caret, diff --git a/src/haz3lcore/zipper/action/Perform.re b/src/haz3lcore/zipper/action/Perform.re index 1f179cb396..25dea0f2af 100644 --- a/src/haz3lcore/zipper/action/Perform.re +++ b/src/haz3lcore/zipper/action/Perform.re @@ -46,6 +46,32 @@ let rec go_z = } }; + //TODO(andrew): make better + let init_pos = (z: Zipper.t): option((Id.t, Zipper.t => Zipper.t)) => { + /* We need to decide where we are initially. If there's a token to + our right, use its id as our initial position. We use the rightward + token because by our convention caret=Outer coincides with being 'on' + that token. If there is no token rightward, use the leftward token + id. But in this case, if caret=Outer, we're going to end up repositioned + to the left of the leftward token, so we need to move one token right. */ + let {relatives: {siblings: (l, r), ancestors: _}, _} = z; + switch (ListUtil.hd_opt(r), ListUtil.last_opt(l)) { + | (Some(p), _) => Some((Piece.id(p), (z => z))) + | (_, Some(p)) => + Some(( + Piece.id(p), + ( + z => + switch (Zipper.move(Right, z)) { + | None => z + | Some(z) => z + } + ), + )) + | _ => None + }; + }; + switch (a) { | Move(d) => Move.go(d, z) |> Result.of_option(~error=Action.Failure.Cant_move) @@ -53,32 +79,31 @@ let rec go_z = Move.go(Goal(Piece(Grout, d)), z) |> Result.of_option(~error=Action.Failure.Cant_move) | Remote(id, action) => - switch (Indicated.index(z)) { + switch (init_pos(z)) { | None => Error(Action.Failure.Cant_move) - | Some(old_id) => + | Some((old_id, position_adjustment)) => let old_caret = z.caret; let segment = Zipper.unselect_and_zip(z); - //print_endline("path test unselect_and_zip done!"); //TODO(andrew): perf below let map = Measured.path_map(segment); - //print_endline("path test path_map done!"); - let path = Id.Map.find(id, map); - //print_endline(Measured.show_piece_path(path)); - //print_endline("path test path_map done!"); - let z = Zipper.zip_to_path(segment, path, Outer); - //print_endline("path test zip_to_path done!"); + let old_path = Id.Map.find(id, map); //TODO: catch or opt + let z = Zipper.zip_to_path(segment, old_path, Outer); switch (go_z(~meta, ~settings, action, z)) { | Error(_) => Error(Action.Failure.Cant_move) | Ok(z) => let segment = Zipper.unselect_and_zip(z); - //print_endline("path test unselect_and_zip done!"); //TODO(andrew): perf below let map = Measured.path_map(segment); - //print_endline("path test path_map done!"); - let path = Id.Map.find(old_id, map); - //print_endline(Measured.show_piece_path(path)); - //print_endline("path test path_map done!"); - let z = Zipper.zip_to_path(segment, path, old_caret); + let z = + switch (Id.Map.find_opt(old_id, map)) { + | Some(path) => + let z = Zipper.zip_to_path(segment, path, old_caret); + position_adjustment(z); + | None => + /* This case occurs if we're inside the syntax being replaced */ + Zipper.zip_to_path(segment, old_path, Outer) + }; + Ok(z); }; } diff --git a/src/haz3lweb/Update.re b/src/haz3lweb/Update.re index e25560a3a9..804682c202 100644 --- a/src/haz3lweb/Update.re +++ b/src/haz3lweb/Update.re @@ -484,6 +484,7 @@ let rec apply = Benchmark.finish(); Ok(model); | MUVSyntax(id, update, action) => + //TODO(andrew): perf, cleanup let settings = model.settings; let ctx = Editors.get_ctx_init(~settings, model.editors); let map = @@ -493,24 +494,9 @@ let rec apply = |> fst |> Interface.Statics.mk_map_ctx(settings.core, ctx); let ci = Id.Map.find_opt(id, map); - //get id of end child of stage - switch (ci) { - | Some( - InfoExp({ - term: { - term: - Ap( - _, - { - term: Tuple([_, {ids: [id, ..._], _} as model_uexp]), - _, - }, - ), - _, - }, - _, - }), - ) => + switch (MVU.get_stage_child(ci)) { + | Some((id, model_uexp)) => + /* NOTE: This assumes that the stage term is closed! */ let init_model = Interface.elaborate(~settings=settings.core, map, model_uexp); let res = @@ -518,7 +504,6 @@ let rec apply = ~settings=settings.core, Ap(update, Tuple([init_model, action])), ); - print_endline("id:" ++ Id.to_string(id)); let seg = DHExpToSeg.go(res); let action: Action.t = Remote(id, InsertSegment(seg)); perform_action(model, action); diff --git a/src/haz3lweb/view/MVU.re b/src/haz3lweb/view/MVU.re index 7ad00aab9f..3d4645084f 100644 --- a/src/haz3lweb/view/MVU.re +++ b/src/haz3lweb/view/MVU.re @@ -492,3 +492,23 @@ let go2 = (~settings, ~inject, ~font_metrics, ~node) => { ]); [Node.div(~attr, [render_div(mvu, node)])]; }; + +//TODO(andrew): cleanup, document +let get_stage_child = (ci: option(Info.t)): option((Id.t, Term.UExp.t)) => + switch (ci) { + | Some( + InfoExp({ + term: { + term: + Ap( + {term: Constructor("Stage"), _}, + {term: Tuple([_, {ids: [id, ..._], _} as model_uexp]), _}, + ), + _, + }, + _, + }), + ) => + Some((id, model_uexp)) + | _ => None + }; From 41153014a5179c02815ad4eff135ff9aaff19273 Mon Sep 17 00:00:00 2001 From: disconcision Date: Sun, 8 Oct 2023 13:52:53 -0400 Subject: [PATCH 20/22] dunno lol lots of things --- src/haz3lcore/dynamics/Evaluator.re | 3 +- src/haz3lcore/dynamics/Evaluator.rei | 3 +- src/haz3lcore/prog/Interface.re | 17 +++- src/haz3lweb/Scripter.re | 139 ++++++++++++++++++++++++-- src/haz3lweb/view/Cell.re | 5 +- src/haz3lweb/view/Deco.re | 46 +++++---- src/haz3lweb/view/MVU.re | 2 +- src/haz3lweb/view/assistant/Filler.re | 23 ++++- 8 files changed, 201 insertions(+), 37 deletions(-) diff --git a/src/haz3lcore/dynamics/Evaluator.re b/src/haz3lcore/dynamics/Evaluator.re index 11e6ec8653..a35dea4b72 100644 --- a/src/haz3lcore/dynamics/Evaluator.re +++ b/src/haz3lcore/dynamics/Evaluator.re @@ -1276,8 +1276,7 @@ and evaluate_test_eq = (arg_show, arg_result) |> return; }; -let evaluate = (env, d) => { - let es = EvaluatorState.init; +let evaluate = (~es=EvaluatorState.init, env, d) => { let (env, es) = es |> EvaluatorState.with_eig(ClosureEnvironment.of_environment(env)); evaluate(env, d, es); diff --git a/src/haz3lcore/dynamics/Evaluator.rei b/src/haz3lcore/dynamics/Evaluator.rei index 07f1b6c2bc..78613788c0 100644 --- a/src/haz3lcore/dynamics/Evaluator.rei +++ b/src/haz3lcore/dynamics/Evaluator.rei @@ -9,4 +9,5 @@ type ground_cases = [es] is the accumulated state. */ let evaluate: - (Environment.t, DHExp.t) => (EvaluatorState.t, EvaluatorResult.t); + (~es: EvaluatorState.t=?, Environment.t, DHExp.t) => + (EvaluatorState.t, EvaluatorResult.t); diff --git a/src/haz3lcore/prog/Interface.re b/src/haz3lcore/prog/Interface.re index 1ff09be427..7e3b2c29c8 100644 --- a/src/haz3lcore/prog/Interface.re +++ b/src/haz3lcore/prog/Interface.re @@ -105,7 +105,12 @@ exception PostprocessError(EvaluatorPost.error); // }; let evaluate = - (~settings: CoreSettings.t, ~env=Builtins.env_init, d: DHExp.t) + ( + ~settings: CoreSettings.t, + ~es=EvaluatorState.init, + ~env=Builtins.env_init, + d: DHExp.t, + ) : ProgramResult.t => { let err_wrap = (error): (EvaluatorState.t, EvaluatorResult.t) => ( EvaluatorState.init, @@ -118,7 +123,7 @@ let evaluate = | _ when !settings.dynamics => err_wrap("Dynamics disabled: No evaluation") | _ => - try(Evaluator.evaluate(env, d)) { + try(Evaluator.evaluate(~es, env, d)) { | EvaluatorError.Exception(reason) => err_wrap("Internal exception: " ++ EvaluatorError.show(reason)) | exn => err_wrap("System exception: " ++ Printexc.to_string(exn)) @@ -153,6 +158,14 @@ let eval_d2d = (~settings: CoreSettings.t, d: DHExp.t): DHExp.t => | (result, _, _) => EvaluatorResult.unbox(result) }; +let eval_e2e = + (~settings: CoreSettings.t, es: EvaluatorState.t, d: DHExp.t) + : (EvaluatorState.t, DHExp.t) => { + //NOTE: assumes empty init ctx, env + let (result, es, _) = evaluate(~es, ~settings, d); + (es, EvaluatorResult.unbox(result)); +}; + let eval_u2d = (~settings: CoreSettings.t, map, term): DHExp.t => //NOTE: assumes empty init ctx, env term |> elaborate(~settings, map) |> eval_d2d(~settings); diff --git a/src/haz3lweb/Scripter.re b/src/haz3lweb/Scripter.re index bef93f0284..57dfa30987 100644 --- a/src/haz3lweb/Scripter.re +++ b/src/haz3lweb/Scripter.re @@ -13,6 +13,26 @@ let sketch_one = {|let update: (Model, Action) -> Model = in EXPORT|}; +let sketch_two = {|let add: Model -> [Todo] = +fun (description, todos) -> +if description $== "" + then todos + else (description, false) :: todos in + let remove: (Int, [Todo]) -> [Todo]= +fun (index, todos) -> +List.filteri(fun i, _ -> i!= index, todos) in + let toggle: (Int, [Todo]) -> [Todo]= +fun (index, todos) -> +List.mapi( + fun i, (description, done) -> + (description, if i == index then !done else done), + todos) in + +let update: (Model, Action) -> Model = + FILL_ME + in +EXPORT|}; + let opt = (~expected_type): FillerOptions.t => { llm: Azure_GPT4, instructions: true, @@ -22,15 +42,118 @@ let opt = (~expected_type): FillerOptions.t => { error_round: true, }; +let opt2 = (~instructions, ~syntax_notes, ~num_examples): FillerOptions.t => { + llm: Azure_GPT4, + instructions, + syntax_notes, + num_examples, + expected_type: true, + error_round: true, +}; + +let common_sketch = sketch_one; + let tests_raw: list(test) = [ - {name: "1", sketch: sketch_one, options: opt(~expected_type=true)}, - {name: "2", sketch: sketch_one, options: opt(~expected_type=true)}, - {name: "3", sketch: sketch_one, options: opt(~expected_type=true)}, - {name: "4", sketch: sketch_one, options: opt(~expected_type=true)}, - {name: "5", sketch: sketch_one, options: opt(~expected_type=false)}, - {name: "6", sketch: sketch_one, options: opt(~expected_type=false)}, - {name: "7", sketch: sketch_one, options: opt(~expected_type=false)}, - {name: "8", sketch: sketch_one, options: opt(~expected_type=false)}, + { + name: "1a", + sketch: common_sketch, + options: opt2(~instructions=true, ~syntax_notes=true, ~num_examples=9), + }, + { + name: "1b", + sketch: common_sketch, + options: opt2(~instructions=true, ~syntax_notes=true, ~num_examples=9), + }, + { + name: "1c", + sketch: common_sketch, + options: opt2(~instructions=true, ~syntax_notes=true, ~num_examples=9), + }, + { + name: "1d", + sketch: common_sketch, + options: opt2(~instructions=true, ~syntax_notes=true, ~num_examples=9), + }, + { + name: "1e", + sketch: common_sketch, + options: opt2(~instructions=true, ~syntax_notes=true, ~num_examples=9), + }, + { + name: "1f", + sketch: common_sketch, + options: opt2(~instructions=true, ~syntax_notes=true, ~num_examples=9), + }, + { + name: "1g", + sketch: common_sketch, + options: opt2(~instructions=true, ~syntax_notes=true, ~num_examples=9), + }, + { + name: "1h", + sketch: common_sketch, + options: opt2(~instructions=true, ~syntax_notes=true, ~num_examples=9), + }, + { + name: "1i", + sketch: common_sketch, + options: opt2(~instructions=true, ~syntax_notes=true, ~num_examples=9), + }, + { + name: "1j", + sketch: common_sketch, + options: opt2(~instructions=true, ~syntax_notes=true, ~num_examples=9), + }, + { + name: "2a", + sketch: common_sketch, + options: opt2(~instructions=false, ~syntax_notes=true, ~num_examples=9), + }, + { + name: "2b", + sketch: common_sketch, + options: opt2(~instructions=false, ~syntax_notes=true, ~num_examples=9), + }, + { + name: "2c", + sketch: common_sketch, + options: opt2(~instructions=false, ~syntax_notes=true, ~num_examples=9), + }, + { + name: "2d", + sketch: common_sketch, + options: opt2(~instructions=false, ~syntax_notes=true, ~num_examples=9), + }, + { + name: "2e", + sketch: common_sketch, + options: opt2(~instructions=false, ~syntax_notes=true, ~num_examples=9), + }, + { + name: "2f", + sketch: common_sketch, + options: opt2(~instructions=false, ~syntax_notes=true, ~num_examples=9), + }, + { + name: "2g", + sketch: common_sketch, + options: opt2(~instructions=false, ~syntax_notes=true, ~num_examples=9), + }, + { + name: "2h", + sketch: common_sketch, + options: opt2(~instructions=false, ~syntax_notes=true, ~num_examples=9), + }, + { + name: "2i", + sketch: common_sketch, + options: opt2(~instructions=false, ~syntax_notes=true, ~num_examples=9), + }, + { + name: "2j", + sketch: common_sketch, + options: opt2(~instructions=false, ~syntax_notes=true, ~num_examples=9), + }, ]; [@deriving (show({with_path: false}), sexp, yojson)] diff --git a/src/haz3lweb/view/Cell.re b/src/haz3lweb/view/Cell.re index 0ee18c15fc..45586498ea 100644 --- a/src/haz3lweb/view/Cell.re +++ b/src/haz3lweb/view/Cell.re @@ -174,6 +174,7 @@ let test_result_layer = let deco = ( + ~inject, ~zipper, ~settings, ~measured, @@ -198,7 +199,8 @@ let deco = let term_ranges = term_ranges; let tiles = TileMap.mk(unselected); }); - let decos = selected ? Deco.all(zipper, segment) : Deco.err_holes(zipper); + let decos = + selected ? Deco.all(zipper, segment, ~inject) : Deco.err_holes(zipper); let decos = switch (test_results) { | None => decos @@ -326,6 +328,7 @@ let editor_view = ); let deco_view = deco( + ~inject, ~zipper, ~settings, ~unselected, diff --git a/src/haz3lweb/view/Deco.re b/src/haz3lweb/view/Deco.re index 6f7d1c2354..8accf92b84 100644 --- a/src/haz3lweb/view/Deco.re +++ b/src/haz3lweb/view/Deco.re @@ -386,23 +386,28 @@ module Deco = Id.Map.find_opt(up_index, processed_map); //return entry for cursor }; - let live_aid_val_view = (~env, ~width, d: DHExp.t) => - Node.div( - ~attr=Attr.classes(["env-entry"] @ (env ? ["env"] : ["res"])), - [ - DHCode.view( - ~settings={ - show_case_clauses: true, - show_fn_bodies: false, - show_casts: false, - }, - ~selected_hole_instance=None, - ~font_metrics, - ~width, - d, - ), - ], - ); + let live_aid_val_view = (~env, ~width, ~inject, d: DHExp.t) => + switch (d) { + | Ap(Constructor("Div"), _) => + Node.div(MVU.go2(~settings, ~inject, ~font_metrics, ~node=d)) + | _ => + Node.div( + ~attr=Attr.classes(["env-entry"] @ (env ? ["env"] : ["res"])), + [ + DHCode.view( + ~settings={ + show_case_clauses: true, + show_fn_bodies: false, + show_casts: false, + }, + ~selected_hole_instance=None, + ~font_metrics, + ~width, + d, + ), + ], + ) + }; let env_entries_row = (m, ns: list(Node.t)) => { Node.div( @@ -451,7 +456,7 @@ module Deco = /* Preconsition: e is nonempty */ (e |> List.hd |> fst, e |> List.rev |> List.hd |> fst); - let live_aid = (zipper: Zipper.t) => { + let live_aid = (zipper: Zipper.t, ~inject) => { let col = Measured.width(M.map) + 2; let width = 40; switch (live_aid_target_data(zipper), live_aid_data(zipper)) { @@ -469,6 +474,7 @@ module Deco = List.map( (entry: entry) => live_aid_val_view( + ~inject, ~width, ~env=entry.binding_id != res_id, entry.v, @@ -488,7 +494,7 @@ module Deco = }; }; - let all = (zipper, sel_seg) => + let all = (zipper, sel_seg, ~inject) => List.concat( [ caret(zipper), @@ -498,6 +504,6 @@ module Deco = targets'(zipper.backpack, sel_seg), err_holes(zipper), ] - @ (settings.live_inspector.on ? [live_aid(zipper)] : []), + @ (settings.live_inspector.on ? [live_aid(zipper, ~inject)] : []), ); }; diff --git a/src/haz3lweb/view/MVU.re b/src/haz3lweb/view/MVU.re index 3d4645084f..7f8cd4af1d 100644 --- a/src/haz3lweb/view/MVU.re +++ b/src/haz3lweb/view/MVU.re @@ -288,7 +288,7 @@ let update = wait... step 1.2 makes assumptions about the term being closed could for now make it a static error on the stage if the model child has nonempty co-ctx. or simply require it to be a value - Q: how to canonically to check if its a value? + Q: how to canonica lly to check if its a value? */ } else { let model = diff --git a/src/haz3lweb/view/assistant/Filler.re b/src/haz3lweb/view/assistant/Filler.re index 2c9c9821fa..aee0d8d267 100644 --- a/src/haz3lweb/view/assistant/Filler.re +++ b/src/haz3lweb/view/assistant/Filler.re @@ -76,12 +76,15 @@ fun c -> "fun x:Int -> ??", ), ( - "case Foo(5) | Foo(x) => ?? | Bar => 6", + "let get: Option_int => Int =\n" + ++ " case Some(5)\n" + ++ " | Some(x) => ??\n" + ++ " | None => 0 end", Type.expected(Some(Ana(Int)), ~ctx=[]), "x", ), ( - "let num_or_zero = fun maybe_num -> case maybe_num | Some(num) => ?? | None => 0", + "let num_or_zero = fun maybe_num ->\n case maybe_num\n | Some(num) => ?? \n| None => 0 end", Type.expected(Some(Syn), ~ctx=[]), "num", ), @@ -198,6 +201,22 @@ let ctx_prompt = (ctx: Ctx.t, expected_ty: Typ.t): string => { }; }; +//TODO(andrew): softcode this hack +let relevant_aliases = {| + Relevant Aliases: + # A todo has a description and a status # +type Todo = (String, Bool) in + +# A description input buffer and a todo list # +type Model = (String, [Todo]) in + +type Action = ++ AddTodo ++ RemoveTodo(Int) + + ToggleTodo(Int) + + UpdateBuffer(String) in + |}; + let mk_user_message = (~expected_ty, sketch: string): string => "{\n" ++ String.concat( From 044354e331e68089e9f3dc36a3fe926c018853b1 Mon Sep 17 00:00:00 2001 From: disconcision Date: Thu, 26 Oct 2023 15:24:20 -0400 Subject: [PATCH 21/22] print sugs to console for llama integration --- src/haz3lcore/assistant/TyDi.re | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/haz3lcore/assistant/TyDi.re b/src/haz3lcore/assistant/TyDi.re index 0832e76075..2ae6f90e2f 100644 --- a/src/haz3lcore/assistant/TyDi.re +++ b/src/haz3lcore/assistant/TyDi.re @@ -91,6 +91,12 @@ let set_buffer = (~settings, ~ctx: Ctx.t, z: Zipper.t): option(Zipper.t) => { let* tok_to_left = token_to_left(z); let* ci = z_to_ci(~settings, ~ctx, z); let suggestions = suggest(ci, z); + /*print_endline("suggestions:"); + print_endline( + suggestions + |> List.map((s: Suggestion.t) => s.content) + |> String.concat(", "), + );*/ let suggestions = suggestions |> List.filter(({content, _}: Suggestion.t) => From 75d0e7338c294276000933ece522fbc923104baf Mon Sep 17 00:00:00 2001 From: disconcision Date: Wed, 17 Jan 2024 16:32:13 -0500 Subject: [PATCH 22/22] llm: refine prettyprinting of type definitions in expected type --- src/haz3lcore/assistant/TyDi.re | 10 ++-- src/haz3lcore/statics/TypBase.re | 46 +++++++++++++++ src/haz3lweb/view/assistant/ChatLSP.re | 56 +++++++++++++------ src/haz3lweb/view/assistant/Filler.re | 12 ++-- .../view/assistant/UpdateAssistant.re | 4 +- 5 files changed, 96 insertions(+), 32 deletions(-) diff --git a/src/haz3lcore/assistant/TyDi.re b/src/haz3lcore/assistant/TyDi.re index 2ae6f90e2f..ffcd4d98ea 100644 --- a/src/haz3lcore/assistant/TyDi.re +++ b/src/haz3lcore/assistant/TyDi.re @@ -92,11 +92,11 @@ let set_buffer = (~settings, ~ctx: Ctx.t, z: Zipper.t): option(Zipper.t) => { let* ci = z_to_ci(~settings, ~ctx, z); let suggestions = suggest(ci, z); /*print_endline("suggestions:"); - print_endline( - suggestions - |> List.map((s: Suggestion.t) => s.content) - |> String.concat(", "), - );*/ + print_endline( + suggestions + |> List.map((s: Suggestion.t) => s.content) + |> String.concat(", "), + );*/ let suggestions = suggestions |> List.filter(({content, _}: Suggestion.t) => diff --git a/src/haz3lcore/statics/TypBase.re b/src/haz3lcore/statics/TypBase.re index f01a458863..8e30d9c206 100644 --- a/src/haz3lcore/statics/TypBase.re +++ b/src/haz3lcore/statics/TypBase.re @@ -69,6 +69,7 @@ module rec Typ: { let sum_entry: (Constructor.t, sum_map) => option(sum_entry); let get_sum_constructors: (Ctx.t, t) => option(sum_map); let is_unknown: t => bool; + let get_vars: t => list(TypVar.t); } = { [@deriving (show({with_path: false}), sexp, yojson)] type type_provenance = @@ -125,6 +126,29 @@ module rec Typ: { }; }; + let rec get_vars = (ty: t): list(TypVar.t) => + switch (ty) { + | Int + | Float + | Bool + | String + | Unknown(_) => [] + | Var(x) => [x] + | Arrow(ty1, ty2) => get_vars(ty1) @ get_vars(ty2) + | Prod(tys) => ListUtil.flat_map(get_vars, tys) + | Sum(sm) => + ListUtil.flat_map( + fun + | None => [] + | Some(typ) => get_vars(typ), + List.map(snd, sm), + ) + | Rec(x, ty) => + /* Remove recursive type references */ + get_vars(ty) |> List.filter(x' => x' != x) + | List(ty) => get_vars(ty) + }; + /* Strip location information from a list of sources */ let of_source = List.map((source: source) => source.ty); @@ -471,6 +495,7 @@ and Ctx: { let added_bindings: (t, t) => t; let filter_duplicates: t => t; let shadows_typ: (t, TypVar.t) => bool; + let collect_aliases_deep: (t, Typ.t) => list((TypVar.t, Typ.t)); } = { [@deriving (show({with_path: false}), sexp, yojson)] type var_entry = { @@ -614,6 +639,27 @@ and Ctx: { let shadows_typ = (ctx: t, name: TypVar.t): bool => Form.is_base_typ(name) || lookup_alias(ctx, name) != None; + + let rec collect_aliases_deep = + (ctx: t, ty: Typ.t): list((TypVar.t, Typ.t)) => { + let ty_vars = Typ.get_vars(ty); + let defs = + ListUtil.flat_map( + var => + switch (Ctx.lookup_alias(ctx, var)) { + | Some(ty) => [(var, ty)] + | None => [(var, Unknown(Internal))] + }, + ty_vars, + ) + |> List.sort_uniq(((x, _), (y, _)) => compare(x, y)); + let rec_calls = + ListUtil.flat_map( + ((_, ty')) => collect_aliases_deep(ctx, ty'), + defs, + ); + rec_calls @ defs; + }; } and Kind: { [@deriving (show({with_path: false}), sexp, yojson)] diff --git a/src/haz3lweb/view/assistant/ChatLSP.re b/src/haz3lweb/view/assistant/ChatLSP.re index e92b27b998..4ac944f51f 100644 --- a/src/haz3lweb/view/assistant/ChatLSP.re +++ b/src/haz3lweb/view/assistant/ChatLSP.re @@ -45,16 +45,43 @@ module Type = { | _ => None }; - let expected_ty = (~ctx, mode: option(Mode.t)): Typ.t => { + let expected_ty_no_lookup = (mode: option(Mode.t)): Typ.t => { switch (mode) { - | Some(Ana(Var(name) as _ty)) when Ctx.lookup_alias(ctx, name) != None => - let ty_expanded = Ctx.lookup_alias(ctx, name) |> Option.get; - ty_expanded; | Some(Ana(ty)) => ty | Some(SynFun) => Arrow(Unknown(Internal), Unknown(Internal)) | Some(Syn) | None => Unknown(SynSwitch) - //| _ => "Not applicable" + }; + }; + + let expected_ty = (~ctx, mode: option(Mode.t)): Typ.t => { + switch (mode) { + | Some(Ana(Var(name) as _ty)) when Ctx.lookup_alias(ctx, name) != None => + let ty_expanded = Ctx.lookup_alias(ctx, name) |> Option.get; + ty_expanded; + | _ => expected_ty_no_lookup(mode) + }; + }; + + let format_def = (alias: string, ty: Typ.t): string => { + Printf.sprintf("type %s = %s in", alias, Typ.to_string(ty)); + }; + + let subst_if_rec = ((name: TypVar.t, ty: Typ.t)) => { + switch (ty) { + | Rec(name', ty') => (name, Typ.subst(Var(name), name', ty')) + | _ => (name, ty) + }; + }; + + let collate_aliases = (ctx, expected_ty'): option(string) => { + let defs = + Ctx.collect_aliases_deep(ctx, expected_ty') + |> List.map(subst_if_rec) + |> List.map(((alias, ty)) => format_def(alias, ty)); + switch (defs) { + | [] => None + | _ => Some(defs |> String.concat("\n")) }; }; @@ -71,20 +98,13 @@ module Type = { */ let prefix = "Hole ?? can be filled by an expression with "; switch (mode) { - | Some(Ana(Var(name) as ty)) when Ctx.lookup_alias(ctx, name) != None => - let ty_expanded = Typ.normalize(ctx, ty); - prefix - ++ "a type consistent with " - ++ Typ.to_string(ty) - ++ " which is a type alias for " - ++ Typ.to_string(ty_expanded); | Some(Ana(ty)) => - let ty_expanded = Typ.normalize(ctx, ty); - prefix - ++ "a type consistent with " - ++ Typ.to_string(ty) - ++ " which expands to " - ++ Typ.to_string(ty_expanded); + let defs = + switch (collate_aliases(ctx, expected_ty_no_lookup(mode))) { + | Some(defs) => " which references the following definitions:\n" ++ defs + | None => "\n" + }; + prefix ++ "a type consistent with " ++ Typ.to_string(ty) ++ defs; | Some(SynFun) => prefix ++ "a type consistent with " diff --git a/src/haz3lweb/view/assistant/Filler.re b/src/haz3lweb/view/assistant/Filler.re index aee0d8d267..5d595c1ca6 100644 --- a/src/haz3lweb/view/assistant/Filler.re +++ b/src/haz3lweb/view/assistant/Filler.re @@ -319,14 +319,10 @@ let mk_round_report = ~ctx=init_ctx, filling_z, ); - { - reply, - error_report: - StaticErrors( - get_top_level_errs(init_ctx, mode, top_ci) - @ ChatLSP.Errors.collect_static(info_map), - ), - }; + let static_errs = + get_top_level_errs(init_ctx, mode, top_ci) + @ ChatLSP.Errors.collect_static(info_map); + {reply, error_report: StaticErrors(static_errs)}; }; let error_reply = diff --git a/src/haz3lweb/view/assistant/UpdateAssistant.re b/src/haz3lweb/view/assistant/UpdateAssistant.re index 565d608dbc..4600925b3f 100644 --- a/src/haz3lweb/view/assistant/UpdateAssistant.re +++ b/src/haz3lweb/view/assistant/UpdateAssistant.re @@ -107,7 +107,9 @@ let apply = | (Some(init_ctx), Some(mode)) => add_round(AddRoundOne(settings, init_ctx, mode, reply)); switch (Filler.error_reply(~settings, ~init_ctx, ~mode, reply)) { - | None => + | None + | Some("") => + /* TODO(andrew): empty string kinda hacky here; refactor */ print_endline("first round response:\n " ++ reply.content); schedule_action( Assistant(SetBuffer(trim_indents(reply.content))),