[1/71] build-stamp-cpp _build/git-commit.txt _gen/cpp/build_stamp.h _gen/cpp/build_stamp.cc [2/71] make-pystub _bin/shwrap/asdl_main asdl/asdl_main.py asdl/ast.py asdl/front_end.py asdl/gen_cpp.py asdl/gen_python.py asdl/util.py asdl/visitor.py [3/71] make-pystub _bin/shwrap/optview_gen core/optview_gen.py frontend/option_def.py [4/71] make-pystub _bin/shwrap/consts_gen frontend/consts_gen.py _devbuild/gen/hnode_asdl.py _devbuild/gen/types_asdl.py asdl/ast.py asdl/gen_cpp.py asdl/pybase.py asdl/runtime.py asdl/util.py asdl/visitor.py frontend/builtin_def.py frontend/id_kind_def.py frontend/option_def.py mycpp/mops.py mycpp/mylib.py pylib/collections_.py [5/71] make-pystub _bin/shwrap/embedded_file_gen cpp/embedded_file_gen.py mycpp/mylib.py pylib/collections_.py [6/71] make-pystub _bin/shwrap/flag_gen frontend/flag_gen.py _devbuild/gen/hnode_asdl.py _devbuild/gen/id_kind_asdl.py _devbuild/gen/runtime_asdl.py _devbuild/gen/syntax_asdl.py _devbuild/gen/types_asdl.py _devbuild/gen/value_asdl.py asdl/pybase.py asdl/runtime.py core/error.py core/num.py frontend/args.py frontend/flag_def.py frontend/flag_spec.py frontend/id_kind_def.py frontend/lexer_def.py frontend/match.py frontend/option_def.py mycpp/mops.py mycpp/mylib.py pylib/collections_.py [7/71] make-pystub _bin/shwrap/option_gen frontend/option_gen.py asdl/ast.py frontend/builtin_def.py frontend/option_def.py [8/71] optview_gen > _gen/core/optview.h [9/71] asdl_main cpp --no-pretty-print-methods asdl/hnode.asdl _gen/asdl/hnode.asdl _gen/asdl/hnode.asdl_debug.py [10/71] embedded_file_gen _devbuild/help/data-errors _devbuild/help/data-front-end _devbuild/help/data-j8-notation _devbuild/help/help _devbuild/help/oils-usage _devbuild/help/osh-builtin-cmd _devbuild/help/osh-chapters _devbuild/help/osh-cmd-lang _devbuild/help/osh-front-end _devbuild/help/osh-mini-lang _devbuild/help/osh-option _devbuild/help/osh-osh-assign _devbuild/help/osh-plugin _devbuild/help/osh-special-var _devbuild/help/osh-stdlib _devbuild/help/osh-type-method _devbuild/help/osh-usage _devbuild/help/osh-word-lang _devbuild/help/ysh-builtin-cmd _devbuild/help/ysh-builtin-func _devbuild/help/ysh-chapters _devbuild/help/ysh-cmd-lang _devbuild/help/ysh-expr-lang _devbuild/help/ysh-front-end _devbuild/help/ysh-mini-lang _devbuild/help/ysh-option _devbuild/help/ysh-plugin _devbuild/help/ysh-special-var _devbuild/help/ysh-stdlib _devbuild/help/ysh-type-method _devbuild/help/ysh-usage _devbuild/help/ysh-word-lang _devbuild/help/ysh-ysh-cmd stdlib/methods.ysh stdlib/osh/bash-strict.sh stdlib/osh/byo-server.sh stdlib/osh/no-quotes.sh stdlib/osh/task-five.sh stdlib/osh/two.sh stdlib/prelude.ysh stdlib/ysh/args.ysh stdlib/ysh/def.ysh stdlib/ysh/list.ysh stdlib/ysh/math.ysh stdlib/ysh/stream.ysh stdlib/ysh/table.ysh stdlib/ysh/yblocks.ysh _gen/bin/text_files.cc [11/71] asdl_main cpp core/runtime.asdl _gen/core/runtime.asdl _gen/core/runtime.asdl_debug.py [12/71] asdl_main cpp data_lang/nil8.asdl _gen/data_lang/nil8.asdl _gen/data_lang/nil8.asdl_debug.py [13/71] asdl_main cpp core/value.asdl _gen/core/value.asdl _gen/core/value.asdl_debug.py [14/71] asdl_main cpp display/pretty.asdl _gen/display/pretty.asdl _gen/display/pretty.asdl_debug.py [15/71] make-pystub _bin/shwrap/signal_gen frontend/signal_gen.py frontend/signal_def.py [16/71] consts_gen cpp _gen/frontend/id_kind.asdl [17/71] flag_gen cpp _gen/frontend/arg_types [18/71] asdl_main cpp --no-pretty-print-methods frontend/types.asdl _gen/frontend/types.asdl _gen/frontend/types.asdl_debug.py [19/71] consts_gen cpp _gen/frontend/option.asdl [20/71] make-pystub _bin/shwrap/grammar_gen ysh/grammar_gen.py _devbuild/gen/hnode_asdl.py _devbuild/gen/id_kind_asdl.py _devbuild/gen/runtime_asdl.py _devbuild/gen/syntax_asdl.py _devbuild/gen/types_asdl.py _devbuild/gen/value_asdl.py asdl/pybase.py asdl/runtime.py core/alloc.py core/error.py core/num.py core/optview.py frontend/builtin_def.py frontend/consts.py frontend/id_kind_def.py frontend/lexer.py frontend/lexer_def.py frontend/match.py frontend/option_def.py frontend/reader.py mycpp/mops.py mycpp/mylib.py pgen2/grammar.py pgen2/parse.py pgen2/pgen.py pgen2/pnode.py pgen2/token.py pgen2/tokenize.py pylib/collections_.py [21/71] consts_gen cpp-consts _gen/frontend/consts [22/71] signal_gen cpp _gen/frontend/signal [23/71] make-pystub _bin/shwrap/arith_parse_gen osh/arith_parse_gen.py _devbuild/gen/hnode_asdl.py _devbuild/gen/id_kind_asdl.py _devbuild/gen/nil8_asdl.py _devbuild/gen/pretty_asdl.py _devbuild/gen/runtime_asdl.py _devbuild/gen/syntax_asdl.py _devbuild/gen/types_asdl.py _devbuild/gen/value_asdl.py asdl/format.py asdl/pybase.py asdl/runtime.py core/error.py core/num.py data_lang/j8.py data_lang/j8_lite.py data_lang/pyj8.py display/ansi.py display/pp_value.py display/pretty.py display/ui.py frontend/builtin_def.py frontend/consts.py frontend/id_kind_def.py frontend/lexer.py frontend/lexer_def.py frontend/location.py frontend/match.py frontend/option_def.py mycpp/mops.py mycpp/mylib.py osh/arith_parse.py osh/tdop.py osh/word_.py pylib/cgi.py pylib/collections_.py [24/71] asdl_main cpp frontend/syntax.asdl _gen/frontend/syntax.asdl _gen/frontend/syntax.asdl_debug.py [25/71] grammar_gen cpp ysh/grammar.pgen2 _gen/ysh [26/71] arith-parse-gen > _gen/osh/arith_parse.cc [27/71] cxx opt '' _gen/frontend/id_kind.asdl.cc _build/obj/cxx-opt/_gen/frontend/id_kind.asdl.o [28/71] cxx opt '' cpp/data_lang.cc _build/obj/cxx-opt/cpp/data_lang.o [29/71] cxx opt '' _gen/display/pretty.asdl.cc _build/obj/cxx-opt/_gen/display/pretty.asdl.o [30/71] cxx opt '' mycpp/bump_leak_heap.cc _build/obj/cxx-opt/mycpp/bump_leak_heap.o [31/71] cxx opt '' mycpp/gc_mops.cc _build/obj/cxx-opt/mycpp/gc_mops.o [32/71] cxx opt '' mycpp/gc_builtins.cc _build/obj/cxx-opt/mycpp/gc_builtins.o [33/71] cxx opt '' mycpp/gc_mylib.cc _build/obj/cxx-opt/mycpp/gc_mylib.o [34/71] cxx opt '' mycpp/hash.cc _build/obj/cxx-opt/mycpp/hash.o [35/71] cxx opt '' _gen/core/runtime.asdl.cc _build/obj/cxx-opt/_gen/core/runtime.asdl.o [36/71] cxx opt '' _gen/core/value.asdl.cc _build/obj/cxx-opt/_gen/core/value.asdl.o [37/71] cxx opt '' _gen/cpp/build_stamp.cc _build/obj/cxx-opt/_gen/cpp/build_stamp.o [38/71] cxx opt '' _gen/bin/text_files.cc _build/obj/cxx-opt/_gen/bin/text_files.o [39/71] cxx opt '' cpp/fanos.cc _build/obj/cxx-opt/cpp/fanos.o [40/71] cxx opt '' mycpp/mark_sweep_heap.cc _build/obj/cxx-opt/mycpp/mark_sweep_heap.o [41/71] cxx opt '' cpp/fanos_shared.c _build/obj/cxx-opt/cpp/fanos_shared.o [42/71] cxx opt '' cpp/core.cc _build/obj/cxx-opt/cpp/core.o [43/71] cxx opt '' cpp/frontend_flag_spec.cc _build/obj/cxx-opt/cpp/frontend_flag_spec.o [44/71] cxx opt '' cpp/frontend_pyreadline.cc _build/obj/cxx-opt/cpp/frontend_pyreadline.o [45/71] cxx opt '' cpp/libc.cc _build/obj/cxx-opt/cpp/libc.o [46/71] cxx opt '' cpp/osh.cc _build/obj/cxx-opt/cpp/osh.o [47/71] cxx opt '' cpp/osh_tdop.cc _build/obj/cxx-opt/cpp/osh_tdop.o [48/71] cxx opt '' cpp/pylib.cc _build/obj/cxx-opt/cpp/pylib.o [49/71] cxx opt '' _gen/frontend/syntax.asdl.cc _build/obj/cxx-opt/_gen/frontend/syntax.asdl.o [50/71] cxx opt '' cpp/pgen2.cc _build/obj/cxx-opt/cpp/pgen2.o [51/71] cxx opt '' cpp/frontend_match.cc _build/obj/cxx-opt/cpp/frontend_match.o [52/71] cxx opt '' _gen/frontend/arg_types.cc _build/obj/cxx-opt/_gen/frontend/arg_types.o [53/71] cxx opt '' cpp/stdlib.cc _build/obj/cxx-opt/cpp/stdlib.o [54/71] cxx opt '' _gen/data_lang/nil8.asdl.cc _build/obj/cxx-opt/_gen/data_lang/nil8.asdl.o [55/71] cxx opt '' _gen/frontend/signal.cc _build/obj/cxx-opt/_gen/frontend/signal.o [56/71] cxx opt '' _gen/osh/arith_parse.cc _build/obj/cxx-opt/_gen/osh/arith_parse.o [57/71] cxx opt '' _gen/frontend/consts.cc _build/obj/cxx-opt/_gen/frontend/consts.o [58/71] cxx opt '' mycpp/gc_str.cc _build/obj/cxx-opt/mycpp/gc_str.o [59/71] cxx opt '' _gen/frontend/help_meta.cc _build/obj/cxx-opt/_gen/frontend/help_meta.o [60/71] cxx opt '' _gen/ysh/grammar_tables.cc _build/obj/cxx-opt/_gen/ysh/grammar_tables.o [61/71] cxx opt '-Ivendor -std=c++17' prebuilt/datalog/dataflow.cc _build/obj/datalog/dataflow.o [62/71] LINK cxx opt '-lstdc++fs' _bin/datalog/dataflow _build/obj/datalog/dataflow.o [63/71] make-pystub _bin/shwrap/mycpp_main mycpp/mycpp_main.py mycpp/const_pass.py mycpp/control_flow_pass.py mycpp/cppgen_pass.py mycpp/crash.py mycpp/debug_pass.py mycpp/format_strings.py mycpp/ir_pass.py mycpp/pass_state.py mycpp/util.py mycpp/visitor.py _bin/datalog/dataflow [64/71] gen-oils-for-unix oils_for_unix mycpp-souffle _gen/bin/oils_for_unix.mycpp-souffle cpp/preamble.h --minimize-stack-roots asdl/format.py asdl/runtime.py bin/oils_for_unix.py builtin/assign_osh.py builtin/bracket_osh.py builtin/completion_osh.py builtin/completion_ysh.py builtin/dirs_osh.py builtin/error_ysh.py builtin/func_eggex.py builtin/func_hay.py builtin/func_misc.py builtin/func_reflect.py builtin/hay_ysh.py builtin/io_osh.py builtin/io_ysh.py builtin/json_ysh.py builtin/meta_oils.py builtin/method_dict.py builtin/method_io.py builtin/method_list.py builtin/method_other.py builtin/method_str.py builtin/misc_osh.py builtin/module_ysh.py builtin/printf_osh.py builtin/process_osh.py builtin/pure_osh.py builtin/pure_ysh.py builtin/read_osh.py builtin/readline_osh.py builtin/trap_osh.py core/alloc.py core/comp_ui.py core/completion.py core/dev.py core/error.py core/executor.py core/main_loop.py core/num.py core/process.py core/shell.py core/state.py core/util.py core/vm.py data_lang/j8.py data_lang/j8_lite.py display/ansi.py display/pp_value.py display/pretty.py display/ui.py frontend/args.py frontend/flag_util.py frontend/lexer.py frontend/location.py frontend/parse_lib.py frontend/reader.py frontend/typed_args.py osh/arith_parse.py osh/bool_parse.py osh/braces.py osh/cmd_eval.py osh/cmd_parse.py osh/glob_.py osh/history.py osh/prompt.py osh/sh_expr_eval.py osh/split.py osh/string_ops.py osh/tdop.py osh/word_.py osh/word_compile.py osh/word_eval.py osh/word_parse.py pgen2/parse.py pylib/cgi.py pylib/os_path.py tools/fmt.py tools/ysh_ify.py ysh/expr_eval.py ysh/expr_parse.py ysh/expr_to_ast.py ysh/func_proc.py ysh/regex_translate.py ysh/val_ops.py FAILED: _gen/bin/oils_for_unix.mycpp-souffle.cc _gen/bin/oils_for_unix.mycpp-souffle.h build/ninja-rules-py.sh gen-oils-for-unix oils_for_unix mycpp-souffle _gen/bin/oils_for_unix.mycpp-souffle cpp/preamble.h --minimize-stack-roots asdl/format.py asdl/runtime.py bin/oils_for_unix.py builtin/assign_osh.py builtin/bracket_osh.py builtin/completion_osh.py builtin/completion_ysh.py builtin/dirs_osh.py builtin/error_ysh.py builtin/func_eggex.py builtin/func_hay.py builtin/func_misc.py builtin/func_reflect.py builtin/hay_ysh.py builtin/io_osh.py builtin/io_ysh.py builtin/json_ysh.py builtin/meta_oils.py builtin/method_dict.py builtin/method_io.py builtin/method_list.py builtin/method_other.py builtin/method_str.py builtin/misc_osh.py builtin/module_ysh.py builtin/printf_osh.py builtin/process_osh.py builtin/pure_osh.py builtin/pure_ysh.py builtin/read_osh.py builtin/readline_osh.py builtin/trap_osh.py core/alloc.py core/comp_ui.py core/completion.py core/dev.py core/error.py core/executor.py core/main_loop.py core/num.py core/process.py core/shell.py core/state.py core/util.py core/vm.py data_lang/j8.py data_lang/j8_lite.py display/ansi.py display/pp_value.py display/pretty.py display/ui.py frontend/args.py frontend/flag_util.py frontend/lexer.py frontend/location.py frontend/parse_lib.py frontend/reader.py frontend/typed_args.py osh/arith_parse.py osh/bool_parse.py osh/braces.py osh/cmd_eval.py osh/cmd_parse.py osh/glob_.py osh/history.py osh/prompt.py osh/sh_expr_eval.py osh/split.py osh/string_ops.py osh/tdop.py osh/word_.py osh/word_compile.py osh/word_eval.py osh/word_parse.py pgen2/parse.py pylib/cgi.py pylib/os_path.py tools/fmt.py tools/ysh_ify.py ysh/expr_eval.py ysh/expr_parse.py ysh/expr_to_ast.py ysh/func_proc.py ysh/regex_translate.py ysh/val_ops.py mycpp: LOADING asdl/format.py asdl/runtime.py bin/oils_for_unix.py builtin/assign_osh.py builtin/bracket_osh.py builtin/completion_osh.py builtin/completion_ysh.py builtin/dirs_osh.py builtin/error_ysh.py builtin/func_eggex.py builtin/func_hay.py builtin/func_misc.py builtin/func_reflect.py builtin/hay_ysh.py builtin/io_osh.py builtin/io_ysh.py builtin/json_ysh.py builtin/meta_oils.py builtin/method_dict.py builtin/method_io.py builtin/method_list.py builtin/method_other.py builtin/method_str.py builtin/misc_osh.py builtin/module_ysh.py builtin/printf_osh.py builtin/process_osh.py builtin/pure_osh.py builtin/pure_ysh.py builtin/read_osh.py builtin/readline_osh.py builtin/trap_osh.py core/alloc.py core/comp_ui.py core/completion.py core/dev.py core/error.py core/executor.py core/main_loop.py core/num.py core/process.py core/shell.py core/state.py core/util.py core/vm.py data_lang/j8.py data_lang/j8_lite.py display/ansi.py display/pp_value.py display/pretty.py display/ui.py frontend/args.py frontend/flag_util.py frontend/lexer.py frontend/location.py frontend/parse_lib.py frontend/reader.py frontend/typed_args.py osh/arith_parse.py osh/bool_parse.py osh/braces.py osh/cmd_eval.py osh/cmd_parse.py osh/glob_.py osh/history.py osh/prompt.py osh/sh_expr_eval.py osh/split.py osh/string_ops.py osh/tdop.py osh/word_.py osh/word_compile.py osh/word_eval.py osh/word_parse.py pgen2/parse.py pylib/cgi.py pylib/os_path.py tools/fmt.py tools/ysh_ify.py ysh/expr_eval.py ysh/expr_parse.py ysh/expr_to_ast.py ysh/func_proc.py ysh/regex_translate.py ysh/val_ops.py mycpp pass: IR mycpp pass: CONST mycpp pass: FORWARD DECL mycpp pass: PROTOTYPES builtin/readline_osh.py:48 Use explicit len(obj) or 'obj is not None' for mystr, mylist, mydict mycpp/mycpp_main.py: 1 translation errors (after type checking) [65/71] gen-oils-for-unix oils_for_unix mycpp _gen/bin/oils_for_unix.mycpp cpp/preamble.h asdl/format.py asdl/runtime.py bin/oils_for_unix.py builtin/assign_osh.py builtin/bracket_osh.py builtin/completion_osh.py builtin/completion_ysh.py builtin/dirs_osh.py builtin/error_ysh.py builtin/func_eggex.py builtin/func_hay.py builtin/func_misc.py builtin/func_reflect.py builtin/hay_ysh.py builtin/io_osh.py builtin/io_ysh.py builtin/json_ysh.py builtin/meta_oils.py builtin/method_dict.py builtin/method_io.py builtin/method_list.py builtin/method_other.py builtin/method_str.py builtin/misc_osh.py builtin/module_ysh.py builtin/printf_osh.py builtin/process_osh.py builtin/pure_osh.py builtin/pure_ysh.py builtin/read_osh.py builtin/readline_osh.py builtin/trap_osh.py core/alloc.py core/comp_ui.py core/completion.py core/dev.py core/error.py core/executor.py core/main_loop.py core/num.py core/process.py core/shell.py core/state.py core/util.py core/vm.py data_lang/j8.py data_lang/j8_lite.py display/ansi.py display/pp_value.py display/pretty.py display/ui.py frontend/args.py frontend/flag_util.py frontend/lexer.py frontend/location.py frontend/parse_lib.py frontend/reader.py frontend/typed_args.py osh/arith_parse.py osh/bool_parse.py osh/braces.py osh/cmd_eval.py osh/cmd_parse.py osh/glob_.py osh/history.py osh/prompt.py osh/sh_expr_eval.py osh/split.py osh/string_ops.py osh/tdop.py osh/word_.py osh/word_compile.py osh/word_eval.py osh/word_parse.py pgen2/parse.py pylib/cgi.py pylib/os_path.py tools/fmt.py tools/ysh_ify.py ysh/expr_eval.py ysh/expr_parse.py ysh/expr_to_ast.py ysh/func_proc.py ysh/regex_translate.py ysh/val_ops.py FAILED: _gen/bin/oils_for_unix.mycpp.cc _gen/bin/oils_for_unix.mycpp.h build/ninja-rules-py.sh gen-oils-for-unix oils_for_unix mycpp _gen/bin/oils_for_unix.mycpp cpp/preamble.h asdl/format.py asdl/runtime.py bin/oils_for_unix.py builtin/assign_osh.py builtin/bracket_osh.py builtin/completion_osh.py builtin/completion_ysh.py builtin/dirs_osh.py builtin/error_ysh.py builtin/func_eggex.py builtin/func_hay.py builtin/func_misc.py builtin/func_reflect.py builtin/hay_ysh.py builtin/io_osh.py builtin/io_ysh.py builtin/json_ysh.py builtin/meta_oils.py builtin/method_dict.py builtin/method_io.py builtin/method_list.py builtin/method_other.py builtin/method_str.py builtin/misc_osh.py builtin/module_ysh.py builtin/printf_osh.py builtin/process_osh.py builtin/pure_osh.py builtin/pure_ysh.py builtin/read_osh.py builtin/readline_osh.py builtin/trap_osh.py core/alloc.py core/comp_ui.py core/completion.py core/dev.py core/error.py core/executor.py core/main_loop.py core/num.py core/process.py core/shell.py core/state.py core/util.py core/vm.py data_lang/j8.py data_lang/j8_lite.py display/ansi.py display/pp_value.py display/pretty.py display/ui.py frontend/args.py frontend/flag_util.py frontend/lexer.py frontend/location.py frontend/parse_lib.py frontend/reader.py frontend/typed_args.py osh/arith_parse.py osh/bool_parse.py osh/braces.py osh/cmd_eval.py osh/cmd_parse.py osh/glob_.py osh/history.py osh/prompt.py osh/sh_expr_eval.py osh/split.py osh/string_ops.py osh/tdop.py osh/word_.py osh/word_compile.py osh/word_eval.py osh/word_parse.py pgen2/parse.py pylib/cgi.py pylib/os_path.py tools/fmt.py tools/ysh_ify.py ysh/expr_eval.py ysh/expr_parse.py ysh/expr_to_ast.py ysh/func_proc.py ysh/regex_translate.py ysh/val_ops.py mycpp: LOADING asdl/format.py asdl/runtime.py bin/oils_for_unix.py builtin/assign_osh.py builtin/bracket_osh.py builtin/completion_osh.py builtin/completion_ysh.py builtin/dirs_osh.py builtin/error_ysh.py builtin/func_eggex.py builtin/func_hay.py builtin/func_misc.py builtin/func_reflect.py builtin/hay_ysh.py builtin/io_osh.py builtin/io_ysh.py builtin/json_ysh.py builtin/meta_oils.py builtin/method_dict.py builtin/method_io.py builtin/method_list.py builtin/method_other.py builtin/method_str.py builtin/misc_osh.py builtin/module_ysh.py builtin/printf_osh.py builtin/process_osh.py builtin/pure_osh.py builtin/pure_ysh.py builtin/read_osh.py builtin/readline_osh.py builtin/trap_osh.py core/alloc.py core/comp_ui.py core/completion.py core/dev.py core/error.py core/executor.py core/main_loop.py core/num.py core/process.py core/shell.py core/state.py core/util.py core/vm.py data_lang/j8.py data_lang/j8_lite.py display/ansi.py display/pp_value.py display/pretty.py display/ui.py frontend/args.py frontend/flag_util.py frontend/lexer.py frontend/location.py frontend/parse_lib.py frontend/reader.py frontend/typed_args.py osh/arith_parse.py osh/bool_parse.py osh/braces.py osh/cmd_eval.py osh/cmd_parse.py osh/glob_.py osh/history.py osh/prompt.py osh/sh_expr_eval.py osh/split.py osh/string_ops.py osh/tdop.py osh/word_.py osh/word_compile.py osh/word_eval.py osh/word_parse.py pgen2/parse.py pylib/cgi.py pylib/os_path.py tools/fmt.py tools/ysh_ify.py ysh/expr_eval.py ysh/expr_parse.py ysh/expr_to_ast.py ysh/func_proc.py ysh/regex_translate.py ysh/val_ops.py mycpp pass: IR mycpp pass: CONST mycpp pass: FORWARD DECL mycpp pass: PROTOTYPES builtin/readline_osh.py:48 Use explicit len(obj) or 'obj is not None' for mystr, mylist, mydict mycpp/mycpp_main.py: 1 translation errors (after type checking) ninja: build stopped: subcommand failed.