#include "gec.h"

#ifdef __cplusplus
extern "C" {
#endif

void GE_init_const19()
{
	ge1525ov24986001 = (GE_ms8("VDRD-3", 6));
	ge1525ov24985650 = (GE_ms8("feature `$7\' is redeclared but its postconditions do not begin with \'ensure then\'.", 82));
	ge1525ov24986197 = (GE_ms8("vdrd3a", 6));
	ge1525ov24985649 = (GE_ms8("feature `$7\' is redeclared but its preconditions do not begin with \'require else\'.", 82));
	ge1525ov24986203 = (GE_ms8("vdrd6a", 6));
	ge1525ov24985655 = (GE_ms8("attribute `$7\' inherited from $8 is not redeclared into an attribute.", 69));
	ge1525ov24986200 = (GE_ms8("vdrd4b", 6));
	ge1525ov24986002 = (GE_ms8("VDRD-4", 6));
	ge1525ov24985652 = (GE_ms8("effective feature `$7\' inherited from $8 is redefined but is not listed in the Redefine subclause.", 98));
	ge1525ov24986201 = (GE_ms8("vdrd4c", 6));
	ge1525ov24985653 = (GE_ms8("effective feature `$8\' inherited from $9 is redefined into a deferred one but is not listed in the Undefine and Redefine subclauses.", 132));
	ge1525ov24986351 = (GE_ms8("vmfn0b", 6));
	ge1525ov24985800 = (GE_ms8("two features with the same name `$7\' in current class and `$8\' inherited from $9.", 81));
	ge1525ov24986199 = (GE_ms8("vdrd4a", 6));
	ge1525ov24985651 = (GE_ms8("deferred feature `$7\' inherited from $8 is redefined but is not listed in the Redefine subclause.", 97));
	ge1525ov24986213 = (GE_ms8("vdrs4b", 6));
	ge1525ov24985665 = (GE_ms8("redeclaration of feature `$7\' from $8 is an effecting and should not appear in the Redefine subclause.", 102));
	ge1525ov24986202 = (GE_ms8("vdrd5a", 6));
	ge1525ov24986003 = (GE_ms8("VDRD-5", 6));
	ge1525ov24985654 = (GE_ms8("effective feature `$7\' inherited from $8 is redefined into a deferred one.", 74));
	ge1525ov24986207 = (GE_ms8("vdrd7c", 6));
	ge1525ov24986005 = (GE_ms8("VDRD-7", 6));
	ge1525ov24985659 = (GE_ms8("feature `$7\' inherited from $9 has an alias `$8\' but its redeclared version has a different one `$11\'.", 102));
	ge1525ov24986205 = (GE_ms8("vdrd7a", 6));
	ge1525ov24985657 = (GE_ms8("feature `$7\' inherited from $8 has no alias but its redeclared version has one `$10\'.", 85));
	ge1525ov24986206 = (GE_ms8("vdrd7b", 6));
	ge1525ov24985658 = (GE_ms8("feature `$7\' inherited from $9 has an alias `$8\' but its redeclared version has none.", 85));
	ge1525ov24986359 = (GE_ms8("vmss3a", 6));
	ge1525ov24986066 = (GE_ms8("VMSS-3", 6));
	ge1525ov24985808 = (GE_ms8("feature name `$7\' appears in the Select subclause of parent $8 but is not replicated.", 85));
	ge1525ov24986328 = (GE_ms8("vhpr1a", 6));
	ge1525ov24986033 = (GE_ms8("VHPR-1", 6));
	ge1525ov24985777 = (GE_ms8("inheritance cycle $7.", 21));
	ge1525ov24986177 = (GE_ms8("vcfg2a", 6));
	ge1525ov24985992 = (GE_ms8("VCFG-2", 6));
	ge1525ov24985629 = (GE_ms8("formal generic parameters #$8 and #$9 have the same name \'$7\'.", 62));
	ge1525ov24986176 = (GE_ms8("vcfg1a", 6));
	ge1525ov24985991 = (GE_ms8("VCFG-1", 6));
	ge1525ov24985628 = (GE_ms8("formal generic parameter \'$7\' has the same name as a class in the surrounding universe.", 87));
	ge1525ov24986486 = (GE_ms8("gvagp0a", 7));
	ge1525ov24986125 = (GE_ms8("GVAGP", 5));
	ge1525ov24985933 = (GE_ms8("ancestors with generic parameter mismatch: \'$7\' and \'$8\'.", 57));
	ge1525ov24986330 = (GE_ms8("vhpr2a", 6));
	ge1525ov24986034 = (GE_ms8("VHPR-2", 6));
	ge1525ov24985779 = (GE_ms8("conforming inheritance from frozen class $7.", 44));
	ge1525ov24986489 = (GE_ms8("gvhso2a", 7));
	ge1525ov24986129 = (GE_ms8("GVHSO-2", 7));
	ge1525ov24985936 = (GE_ms8("implicitly inherits from class SYSTEM_OBJECT but SYSTEM_OBJECT is not a .NET class.", 83));
	ge1525ov24986488 = (GE_ms8("gvhso1a", 7));
	ge1525ov24986128 = (GE_ms8("GVHSO-1", 7));
	ge1525ov24985935 = (GE_ms8("implicitly inherits from unknown class SYSTEM_OBJECT.", 53));
	ge1525ov24986327 = (GE_ms8("vhay0a", 6));
	ge1525ov24986047 = (GE_ms8("VHAY", 4));
	ge1525ov24985776 = (GE_ms8("implicitly inherits from unknown class ANY.", 43));
	ge1525ov24986329 = (GE_ms8("vhpr1b", 6));
	ge1525ov24985778 = (GE_ms8("inheritance cycle when inheriting from $7.", 42));
	ge1515ov24821774 = (GE_ms8("gcdep", 5));
	ge1515ov24821769 = (GE_ms8("GCDEP", 5));
	ge1515ov24821764 = (GE_ms8("[$1] cluster $2: class $3 (from cluster $4) is a provider of class $5 (from cluster $6) which is not contained in any of the clusters $7.", 137));
	ge1515ov24821775 = (GE_ms8("gcpro", 5));
	ge1515ov24821770 = (GE_ms8("GCPRO", 5));
	ge1515ov24821765 = (GE_ms8("[$1] cluster $2: class $3 (from cluster $4) depends on class $5 (from cluster $6) which is not contained in any of the clusters $7.", 131));
	ge865ov14172185 = (GE_ms8("library_root", 12));
	ge1525ov24986317 = (GE_ms8("vggc3b", 6));
	ge1525ov24986045 = (GE_ms8("VGGC-3", 6));
	ge1525ov24985766 = (GE_ms8("`$7\' is not the final name of a procedure in the base class of any of generic constraints $8.", 93));
	ge1525ov24986316 = (GE_ms8("vggc3a", 6));
	ge1525ov24985765 = (GE_ms8("`$7\' is not the final name of a procedure in generic constraint\'s base class $8.", 80));
	ge1525ov24986318 = (GE_ms8("vggc3c", 6));
	ge1525ov24985767 = (GE_ms8("feature `$9\' in $8 appearing as creator `$7\' in the generic constraint is not a procedure.", 90));
	ge1525ov24986319 = (GE_ms8("vggc3d", 6));
	ge1525ov24985768 = (GE_ms8("features `$9\' in \'$8\' and `$11\' in \'$10\' appear both as creator `$7\' in the generic constraint.", 95));
	ge1525ov24986307 = (GE_ms8("vgcp3c", 6));
	ge1525ov24985757 = (GE_ms8("procedure name `$7\' appears twice in creation clause of generic constraint.", 75));
	ge1525ov24986260 = (GE_ms8("vfav1t", 6));
	ge1525ov24985712 = (GE_ms8("`$7\' is already the binary Operator alias of feature `$8\' in generic constraint $9.", 83));
	ge1525ov24986259 = (GE_ms8("vfav1s", 6));
	ge1525ov24985711 = (GE_ms8("`$7\' is already the unary Operator alias of feature `$8\' in generic constraint $9.", 82));
	ge1525ov24986274 = (GE_ms8("vfav3g", 6));
	ge1525ov24985726 = (GE_ms8("`$7\' is already the Parenthesis alias of feature `$8\' in generic constraint $9.", 79));
	ge1525ov24986267 = (GE_ms8("vfav2g", 6));
	ge1525ov24985719 = (GE_ms8("`$7\' is already the Bracket alias of feature `$8\' in generic constraint $9.", 75));
	ge1525ov24986314 = (GE_ms8("vggc2f", 6));
	ge1525ov24986044 = (GE_ms8("VGGC-2", 6));
	ge1525ov24985764 = (GE_ms8("`$7\' is already the final name of a feature in generic constraint $8.", 69));
	ge1525ov24986313 = (GE_ms8("vggc2e", 6));
	ge1525ov24985763 = (GE_ms8("feature name `$7\' appears on the right-hand-side of more than once rename pair in generic constraint $8.", 104));
	ge1525ov24986258 = (GE_ms8("vfav1r", 6));
	ge1525ov24985710 = (GE_ms8("binary Operator alias `$7\' appears on the right-hand-side of more than once rename pair in generic constraint $8.", 113));
	ge1525ov24986286 = (GE_ms8("vfav4l", 6));
	ge1525ov24985738 = (GE_ms8("binary Operator alias `$7\' appears more than once on the right-hand-side of the rename pair in generic constraint $8.", 117));
	ge1525ov24986257 = (GE_ms8("vfav1q", 6));
	ge1525ov24985709 = (GE_ms8("unary Operator alias `$7\' appears on the right-hand-side of more than once rename pair in generic constraint $8.", 112));
	ge1525ov24986285 = (GE_ms8("vfav4k", 6));
	ge1525ov24985737 = (GE_ms8("unary Operator alias `$7\' appears more than once on the right-hand-side of the rename pair in generic constraint $8.", 116));
	ge1525ov24986273 = (GE_ms8("vfav3f", 6));
	ge1525ov24985725 = (GE_ms8("Parenthesis alias `$7\' appears on the right-hand-side of more than once rename pair in generic constraint $8.", 109));
	ge1525ov24986284 = (GE_ms8("vfav4j", 6));
	ge1525ov24985736 = (GE_ms8("Parenthesis alias `$7\' appears more than once on the right-hand-side of the rename pair in generic constraint $8.", 113));
	ge1525ov24986266 = (GE_ms8("vfav2f", 6));
	ge1525ov24985718 = (GE_ms8("Bracket alias `$7\' appears on the right-hand-side of more than once rename pair in generic constraint $8.", 105));
}

void GE_init_const20()
{
	ge1525ov24986283 = (GE_ms8("vfav4i", 6));
	ge1525ov24985735 = (GE_ms8("Bracket alias `$7\' appears more than once on the right-hand-side of the rename pair in generic constraint $8.", 109));
	ge1525ov24986309 = (GE_ms8("vggc2a", 6));
	ge1525ov24985759 = (GE_ms8("`$7\' is not the final name of a feature in generic constraint $8.", 65));
	ge1525ov24986312 = (GE_ms8("vggc2d", 6));
	ge1525ov24985762 = (GE_ms8("feature name `$7\' appears on the left-hand-side of more than once rename pair in generic constraint $8.", 103));
	ge1525ov24986311 = (GE_ms8("vggc2c", 6));
	ge1525ov24985761 = (GE_ms8("generic constraint $7 cannot have a rename clause.", 50));
	ge1525ov24986310 = (GE_ms8("vggc2b", 6));
	ge1525ov24985760 = (GE_ms8("generic constraint $7 is a formal generic parameter and therefore cannot have a rename clause.", 94));
	ge1526ov25002427 = (GE_ms8("GE_new_context", 14));
	ge1526ov25002428 = (GE_ms8("GE_new_exception_manager", 24));
	ge1526ov25002366 = (GE_ms8("GE_init_exception_manager", 25));
	ge1526ov25002398 = (GE_ms8("GE_last_exception", 17));
	ge1526ov25002449 = (GE_ms8("GE_once_raise", 13));
	ge1526ov25002531 = (GE_ms8("GE_set_exception_data", 21));
	ge1526ov25002409 = (GE_ms8("GE_mutex_create", 15));
	ge1526ov25002561 = (GE_ms8("GE_thread_onces_set_counts", 26));
	ge1526ov25002367 = (GE_ms8("GE_init_scoop", 13));
	ge1526ov25002364 = (GE_ms8("GE_increment_scoop_sessions_count", 33));
	ge1526ov25002324 = (GE_ms8("GE_decrement_scoop_sessions_count", 33));
	ge1526ov25002510 = (GE_ms8("GE_scoop_processor_run", 22));
	ge1526ov25002556 = (GE_ms8("GE_show_console", 15));
	ge1526ov25002579 = (GE_ms8("GE_TYPE_FLAG_SPECIAL", 20));
	ge1526ov25002580 = (GE_ms8("GE_TYPE_FLAG_TUPLE", 18));
	ge1526ov25002575 = (GE_ms8("GE_TYPE_FLAG_NONE", 17));
	ge1526ov25002562 = (GE_ms8("GE_TYPE_FLAG_BOOLEAN", 20));
	ge1526ov25002563 = (GE_ms8("GE_TYPE_FLAG_CHARACTER_8", 24));
	ge1526ov25002564 = (GE_ms8("GE_TYPE_FLAG_CHARACTER_32", 25));
	ge1526ov25002567 = (GE_ms8("GE_TYPE_FLAG_INTEGER_8", 22));
	ge1526ov25002568 = (GE_ms8("GE_TYPE_FLAG_INTEGER_16", 23));
	ge1526ov25002569 = (GE_ms8("GE_TYPE_FLAG_INTEGER_32", 23));
	ge1526ov25002570 = (GE_ms8("GE_TYPE_FLAG_INTEGER_64", 23));
	ge1526ov25002571 = (GE_ms8("GE_TYPE_FLAG_NATURAL_8", 22));
	ge1526ov25002572 = (GE_ms8("GE_TYPE_FLAG_NATURAL_16", 23));
	ge1526ov25002573 = (GE_ms8("GE_TYPE_FLAG_NATURAL_32", 23));
	ge1526ov25002574 = (GE_ms8("GE_TYPE_FLAG_NATURAL_64", 23));
	ge1526ov25002576 = (GE_ms8("GE_TYPE_FLAG_POINTER", 20));
	ge1526ov25002577 = (GE_ms8("GE_TYPE_FLAG_REAL_32", 20));
	ge1526ov25002578 = (GE_ms8("GE_TYPE_FLAG_REAL_64", 20));
	ge1526ov25002565 = (GE_ms8("GE_TYPE_FLAG_DEFERRED", 21));
	ge1526ov25002274 = (GE_ms8("EIF_TYPE_INDEX", 14));
	ge1526ov25002365 = (GE_ms8("GE_init_const", 13));
	ge1526ov25002325 = (GE_ms8("GE_deep", 7));
	ge1526ov25002329 = (GE_ms8("GE_dispose_once_per_object_data", 31));
	ge1526ov25002410 = (GE_ms8("GE_mutex_destroy", 16));
	ge1526ov25002301 = (GE_ms8("GE_calloc", 9));
	ge1526ov25002465 = (GE_ms8("GE_register_dispose_once_per_object_data", 40));
	ge1526ov25002610 = (GE_ms8("initialize", 10));
	ge1526ov25002641 = (GE_ms8("size_t", 6));
	ge1526ov25002302 = (GE_ms8("GE_calloc_atomic", 16));
	ge1526ov25002464 = (GE_ms8("GE_register_dispose", 19));
	ge1526ov25002558 = (GE_ms8("GE_sp32_base_address", 20));
	ge1526ov25002557 = (GE_ms8("GE_sp8_base_address", 19));
	ge1526ov25002431 = (GE_ms8("GE_new_istr32", 13));
	ge1526ov25002430 = (GE_ms8("GE_new_istr8", 12));
	ge1526ov25002438 = (GE_ms8("GE_new_str32", 12));
	ge1526ov25002437 = (GE_ms8("GE_new_str8", 11));
	ge414ov6307841 = (GE_ms8("\n", 1));
	ge1526ov25002664 = (GE_ms8(".c", 2));
	ge1526ov25002238 = (GE_ms8("EIF_ANY", 7));
	ge1526ov25002657 = (GE_ms8("unsigned", 8));
	ge1526ov25002269 = (GE_ms8("EIF_REFERENCE", 13));
	ge1526ov25002654 = (GE_ms8("uint16_t", 8));
	ge1526ov25002263 = (GE_ms8("EIF_NATURAL_64", 14));
	ge1526ov25002262 = (GE_ms8("EIF_NATURAL_32", 14));
	ge1526ov25002261 = (GE_ms8("EIF_NATURAL_16", 14));
	ge1526ov25002260 = (GE_ms8("EIF_NATURAL_8", 13));
	ge1526ov25002250 = (GE_ms8("EIF_INTEGER_64", 14));
	ge1526ov25002248 = (GE_ms8("EIF_INTEGER_16", 14));
	ge1526ov25002247 = (GE_ms8("EIF_INTEGER_8", 13));
	ge1526ov25002243 = (GE_ms8("EIF_DOUBLE", 10));
	ge1526ov25002266 = (GE_ms8("EIF_REAL", 8));
	ge1526ov25002259 = (GE_ms8("EIF_NATURAL", 11));
	ge1526ov25002246 = (GE_ms8("EIF_INTEGER", 11));
	ge1526ov25002276 = (GE_ms8("EIF_WIDE_CHAR", 13));
	ge1526ov25002656 = (GE_ms8("#undef", 6));
	ge1526ov25002277 = (GE_ms8("EIF_WINDOWS", 11));
	ge1526ov25002605 = (GE_ms8("#ifndef", 7));
	ge1526ov25002665 = (GE_ms8(".cfg", 4));
	ge1526ov25002256 = (GE_ms8("EIF_LINUX", 9));
	ge411ov6193159 = (GE_ms8("stdin", 5));
	ge1869ov30621751 = (GE_ms8("GOBO_CLI_GC", 11));
	ge1869ov30621752 = (GE_ms8("GOBO_DEFAULT_GC", 15));
	ge1523ov24952849 = (GE_ms8("gvsrc5a", 7));
	ge1523ov24952843 = (GE_ms8("GVSRC5", 6));
	ge1523ov24952837 = (GE_ms8("[$1] root creation procedure `$3\' is not a feature of root class $2.", 68));
	ge1523ov24952845 = (GE_ms8("vsrc1a", 6));
	ge1523ov24952839 = (GE_ms8("VSRC1", 5));
	ge1523ov24952833 = (GE_ms8("[$1] root class $2 should not be generic.", 41));
	ge1523ov24952848 = (GE_ms8("gvsrc4a", 7));
	ge1523ov24952842 = (GE_ms8("GVSRC4", 6));
	ge1523ov24952836 = (GE_ms8("[$1] unknown root class $2.", 27));
	ge1523ov24952850 = (GE_ms8("gvsrc6a", 7));
	ge1523ov24952844 = (GE_ms8("GVSRC6", 6));
	ge1523ov24952838 = (GE_ms8("[$1] root creation procedure `$3\' is not declared as publicly available creation procedure in root class $2.", 108));
	ge1523ov24952847 = (GE_ms8("gvsrc3a", 7));
	ge1523ov24952841 = (GE_ms8("GVSRC3", 6));
	ge1523ov24952835 = (GE_ms8("[$1] missing root class.", 24));
	ge1525ov24986497 = (GE_ms8("gvkfe6a", 7));
	ge1525ov24986137 = (GE_ms8("GVKFE-6", 7));
}

void GE_init_const21()
{
	ge1525ov24985944 = (GE_ms8("routine `$7\' in kernel class $5 has not the expected signature \'$8\'.", 68));
	ge1525ov24986494 = (GE_ms8("gvkfe3a", 7));
	ge1525ov24986134 = (GE_ms8("GVKFE-3", 7));
	ge1525ov24985941 = (GE_ms8("attribute `$7\' in kernel class $5 has not the expected type \'$8\'.", 65));
	ge1525ov24986493 = (GE_ms8("gvkfe2a", 7));
	ge1525ov24986133 = (GE_ms8("GVKFE-2", 7));
	ge1525ov24985940 = (GE_ms8("feature `$7\' in kernel class $5 is not an attribute.", 52));
	ge1523ov24952846 = (GE_ms8("gvknl1a", 7));
	ge1523ov24952840 = (GE_ms8("GVKNL1", 6));
	ge1523ov24952834 = (GE_ms8("[$1] missing kernel class $2.", 29));
	ge1524ov24969226 = (GE_ms8("vscn0d", 6));
	ge1524ov24969222 = (GE_ms8("VSCN", 4));
	ge1524ov24969221 = (GE_ms8("[$1] $2 $3: class $4 cannot be overridden both by class $5 in $6 \'$7\' and by class $8 in $9 \'$10\'.", 98));
	ge1524ov24969225 = (GE_ms8("vscn0c", 6));
	ge1524ov24969220 = (GE_ms8("[$1] $2 $3: assembly class $4 appearing as class $5 in assembly \'$6\' cannot be overridden by class $8 in $9 \'$10\'$11.", 117));
	ge1524ov24969224 = (GE_ms8("vscn0b", 6));
	ge1524ov24969219 = (GE_ms8("[$1] $2 $3: built-in class NONE cannot be overridden by class $5 in $6 \'$7\'$8.", 78));
	ge1524ov24969223 = (GE_ms8("vscn0a", 6));
	ge1524ov24969218 = (GE_ms8("[$1] $2 $3: class $4 name clash between class $5 in $6 \'$7\'$8 and class $9 in $10 \'$11\'$12.", 91));
	ge1688ov27656209 = (GE_ms8("standard input", 14));
	ge1696ov27787287 = (GE_ms32_from_utf32le("", 0));
	ge542ov8880132 = (GE_ms8(" \t\r\n", 4));
	ge1515ov24821772 = (GE_ms8("gcaaa", 5));
	ge1515ov24821767 = (GE_ms8("GCAAA", 5));
	ge1515ov24821762 = (GE_ms8("[$1] cluster $2: cannot read cluster directory \'$3\'.", 52));
	ge1181ov19349555 = (GE_ms8(".", 1));
	ge1181ov19349556 = (GE_ms8("..", 2));
	ge856ov14024714 = (GE_ms8("is_attached_by_default", 22));
	ge856ov14024715 = (GE_ms8("is_obsolete_iteration", 21));
	ge856ov14024716 = (GE_ms8("is_obsolete_routine_type", 24));
	ge856ov14024725 = (GE_ms8("trace", 5));
	ge810ov13271042 = (GE_ms8("concurrency", 11));
	ge810ov13271049 = (GE_ms8("thread", 6));
	ge810ov13271048 = (GE_ms8("scoop", 5));
	ge810ov13271043 = (GE_ms8("void_safety", 11));
	ge810ov13271047 = (GE_ms8("none", 4));
	ge810ov13271044 = (GE_ms8("all", 3));
	ge810ov13271050 = (GE_ms8("transitional", 12));
	ge865ov14172170 = (GE_ms8("console_application", 19));
	ge865ov14172165 = (GE_ms8("check_for_void_target", 21));
	ge865ov14172175 = (GE_ms8("exception_trace", 15));
	ge865ov14172176 = (GE_ms8("executable_name", 15));
	ge865ov14172202 = (GE_ms8("total_order_on_reals", 20));
	ge865ov14172186 = (GE_ms8("line_generation", 15));
	ge865ov14172182 = (GE_ms8("inlining", 8));
	ge865ov14172183 = (GE_ms8("inlining_size", 13));
	ge884ov14483543 = (GE_ms8("uuid", 4));
	ge884ov14483513 = (GE_ms8("name", 4));
	ge884ov14483479 = (GE_ms8("description", 11));
	ge884ov14483516 = (GE_ms8("note", 4));
	ge884ov14483537 = (GE_ms8("target", 6));
	ge884ov14483502 = (GE_ms8("library_target", 14));
	ge884ov14483527 = (GE_ms8("readonly", 8));
	ge878ov14385218 = (GE_ms8("ELTM", 4));
	ge878ov14385183 = (GE_ms8("attribute \'library_target\' with value \"$5\" in element \'system\' is not the name of an existing target.", 101));
	ge878ov14385227 = (GE_ms8("ETAM", 4));
	ge878ov14385192 = (GE_ms8("no \'target\' element found in element \'system\'.", 46));
	ge878ov14385210 = (GE_ms8("EATB", 4));
	ge878ov14385175 = (GE_ms8("attribute \'$5\' with value \"$6\" in element \'$7\' should be a boolean.", 67));
	ge887ov14532679 = (GE_ms8("false", 5));
	ge887ov14532678 = (GE_ms8("true", 4));
	ge884ov14483486 = (GE_ms8("extends", 7));
	ge884ov14483487 = (GE_ms8("extends_location", 16));
	ge884ov14483459 = (GE_ms8("assembly", 8));
	ge884ov14483466 = (GE_ms8("capability", 10));
	ge884ov14483470 = (GE_ms8("cluster", 7));
	ge884ov14483514 = (GE_ms8("namespace", 9));
	ge884ov14483488 = (GE_ms8("external_cflag", 14));
	ge884ov14483489 = (GE_ms8("external_include", 16));
	ge884ov14483490 = (GE_ms8("external_library", 16));
	ge884ov14483491 = (GE_ms8("external_linker_flag", 20));
	ge884ov14483492 = (GE_ms8("external_make", 13));
	ge884ov14483493 = (GE_ms8("external_object", 15));
	ge884ov14483494 = (GE_ms8("external_resource", 17));
	ge884ov14483497 = (GE_ms8("file_rule", 9));
	ge884ov14483519 = (GE_ms8("override", 8));
	ge884ov14483501 = (GE_ms8("library", 7));
	ge884ov14483505 = (GE_ms8("mapping", 7));
	ge884ov14483518 = (GE_ms8("option", 6));
	ge884ov14483522 = (GE_ms8("post_compile_action", 19));
	ge884ov14483523 = (GE_ms8("pre_compile_action", 18));
	ge884ov14483524 = (GE_ms8("precompile", 10));
	ge884ov14483532 = (GE_ms8("root", 4));
	ge884ov14483533 = (GE_ms8("setting", 7));
	ge884ov14483545 = (GE_ms8("variable", 8));
	ge884ov14483546 = (GE_ms8("version", 7));
	ge884ov14483457 = (GE_ms8("abstract", 8));
	ge865ov14172180 = (GE_ms8("full_type_checking", 18));
	ge856ov14024713 = (GE_ms8("full_class_checking", 19));
	ge856ov14024724 = (GE_ms8("syntax_level", 12));
	ge856ov14024723 = (GE_ms8("syntax", 6));
	ge856ov14024751 = (GE_ms8("obsolete", 8));
	ge856ov14024754 = (GE_ms8("transitional", 12));
	ge856ov14024753 = (GE_ms8("standard", 8));
	ge856ov14024726 = (GE_ms8("void_safety", 11));
	ge856ov14024742 = (GE_ms8("all", 3));
	ge856ov14024717 = (GE_ms8("is_void_safe", 12));
	ge856ov14024711 = (GE_ms8("cat_call_detection", 18));
	ge810ov13271041 = (GE_ms8("catcall_detection", 17));
	ge865ov14172169 = (GE_ms8("concurrency", 11));
	ge865ov14172197 = (GE_ms8("multithreaded", 13));
}

void GE_init_const22()
{
	ge884ov14483504 = (GE_ms8("major", 5));
	ge884ov14483510 = (GE_ms8("minor", 5));
	ge884ov14483530 = (GE_ms8("release", 7));
	ge884ov14483465 = (GE_ms8("build", 5));
	ge884ov14483526 = (GE_ms8("product", 7));
	ge884ov14483472 = (GE_ms8("company", 7));
	ge884ov14483476 = (GE_ms8("copyright", 9));
	ge884ov14483538 = (GE_ms8("trademark", 9));
	ge878ov14385216 = (GE_ms8("EATS", 4));
	ge878ov14385181 = (GE_ms8("attribute \'$6\' specified in element \'$7\' but \'$5\' is missing.", 61));
	ge878ov14385213 = (GE_ms8("EATI", 4));
	ge878ov14385178 = (GE_ms8("attribute \'$5\' with value \"$6\" in element \'$7\' should be an unsigned integer.", 77));
	ge884ov14483544 = (GE_ms8("value", 5));
	ge865ov14172171 = (GE_ms8("dead_code_removal", 17));
	ge865ov14172209 = (GE_ms8("false", 5));
	ge865ov14172215 = (GE_ms8("none", 4));
	ge865ov14172219 = (GE_ms8("true", 4));
	ge865ov14172210 = (GE_ms8("feature", 7));
	ge884ov14483458 = (GE_ms8("all_classes", 11));
	ge884ov14483467 = (GE_ms8("class", 5));
	ge884ov14483495 = (GE_ms8("feature", 7));
	ge884ov14483503 = (GE_ms8("location", 8));
	ge884ov14483475 = (GE_ms8("condition", 9));
	ge884ov14483468 = (GE_ms8("class_option", 12));
	ge884ov14483531 = (GE_ms8("renaming", 8));
	ge884ov14483547 = (GE_ms8("visible", 7));
	ge884ov14483482 = (GE_ms8("eifgens_location", 16));
	ge884ov14483525 = (GE_ms8("prefix", 6));
	ge884ov14483541 = (GE_ms8("use_application_options", 23));
	ge884ov14483469 = (GE_ms8("class_rename", 12));
	ge884ov14483496 = (GE_ms8("feature_rename", 14));
	ge884ov14483517 = (GE_ms8("old_name", 8));
	ge884ov14483515 = (GE_ms8("new_name", 8));
	ge878ov14385211 = (GE_ms8("EATD", 4));
	ge878ov14385176 = (GE_ms8("attribute \'$5\' with value \"$6\" already appears in another element \'$7\'.", 71));
	ge884ov14483474 = (GE_ms8("concurrency", 11));
	ge884ov14483548 = (GE_ms8("void_safety", 11));
	ge884ov14483477 = (GE_ms8("custom", 6));
	ge884ov14483480 = (GE_ms8("dotnet", 6));
	ge884ov14483481 = (GE_ms8("dynamic_runtime", 15));
	ge884ov14483512 = (GE_ms8("multithreaded", 13));
	ge884ov14483521 = (GE_ms8("platform", 8));
	ge884ov14483509 = (GE_ms8("min", 3));
	ge884ov14483507 = (GE_ms8("max", 3));
	ge884ov14483539 = (GE_ms8("type", 4));
	ge884ov14483473 = (GE_ms8("compiler", 8));
	ge884ov14483511 = (GE_ms8("msil_clr", 8));
	ge878ov14385200 = (GE_ms8("EABJ", 4));
	ge878ov14385165 = (GE_ms8("\'type\' attribute \"$5\" in \'version\' condition should be either \"compiler\" or \"msil_clr\".", 87));
	ge878ov14385199 = (GE_ms8("EABI", 4));
	ge878ov14385164 = (GE_ms8("\'type\' attribute is missing in \'version\' condition.", 51));
	ge878ov14385198 = (GE_ms8("EABH", 4));
	ge878ov14385163 = (GE_ms8("\'max\' attribute \"$6\" should be greater than or equal to \'min\' attribute \"$5\" in \'version\' condition.", 100));
	ge878ov14385197 = (GE_ms8("EABG", 4));
	ge878ov14385162 = (GE_ms8("\'max\' attribute \"$5\" in \'version\' condition should be of the form \"N.N.N.N\".", 76));
	ge878ov14385196 = (GE_ms8("EABF", 4));
	ge878ov14385161 = (GE_ms8("\'min\' attribute \"$5\" in \'version\' condition should be of the form \"N.N.N.N\".", 76));
	ge884ov14483485 = (GE_ms8("excluded_value", 14));
	ge878ov14385215 = (GE_ms8("EATN", 4));
	ge878ov14385180 = (GE_ms8("attribute \'$5\' or \'$6\' is missing in element \'$7\'.", 50));
	ge878ov14385217 = (GE_ms8("EATX", 4));
	ge878ov14385182 = (GE_ms8("cannot have both attributes \'$5\' and \'$6\' in element \'$7\'.", 58));
	ge884ov14483506 = (GE_ms8("match", 5));
	ge884ov14483471 = (GE_ms8("command", 7));
	ge884ov14483534 = (GE_ms8("succeed", 7));
	ge884ov14483550 = (GE_ms8("working_directory", 17));
	ge884ov14483464 = (GE_ms8("assertions", 10));
	ge884ov14483478 = (GE_ms8("debug", 5));
	ge884ov14483549 = (GE_ms8("warning", 7));
	ge856ov14024727 = (GE_ms8("warning", 7));
	ge856ov14024746 = (GE_ms8("false", 5));
	ge856ov14024750 = (GE_ms8("none", 4));
	ge856ov14024755 = (GE_ms8("true", 4));
	ge856ov14024756 = (GE_ms8("warning", 7));
	ge856ov14024731 = (GE_ms8("obsolete_feature", 16));
	ge884ov14483483 = (GE_ms8("enabled", 7));
	ge856ov14024744 = (GE_ms8("current", 7));
	ge884ov14483520 = (GE_ms8("overrides", 9));
	ge884ov14483542 = (GE_ms8("uses", 4));
	ge884ov14483499 = (GE_ms8("hidden", 6));
	ge884ov14483528 = (GE_ms8("recursive", 9));
	ge884ov14483498 = (GE_ms8("group", 5));
	ge884ov14483484 = (GE_ms8("exclude", 7));
	ge884ov14483500 = (GE_ms8("include", 7));
	ge884ov14483535 = (GE_ms8("support", 7));
	ge884ov14483540 = (GE_ms8("use", 3));
	ge884ov14483460 = (GE_ms8("assembly_culture", 16));
	ge884ov14483461 = (GE_ms8("assembly_key", 12));
	ge884ov14483462 = (GE_ms8("assembly_name", 13));
	ge884ov14483463 = (GE_ms8("assembly_version", 16));
	ge856ov14024718 = (GE_ms8("manifest_array_type", 19));
	ge856ov14024749 = (GE_ms8("mismatch_warning", 16));
	ge856ov14024729 = (GE_ms8("manifest_array_type", 19));
	ge856ov14024712 = (GE_ms8("debug", 5));
	ge856ov14024719 = (GE_ms8("msil_application_optimize", 25));
	ge856ov14024721 = (GE_ms8("optimize", 8));
	ge856ov14024722 = (GE_ms8("profile", 7));
	ge856ov14024728 = (GE_ms8("export_class_missing", 20));
	ge856ov14024730 = (GE_ms8("obsolete_class", 14));
	ge856ov14024732 = (GE_ms8("old_verbatim_strings", 20));
	ge856ov14024733 = (GE_ms8("once_in_generic", 15));
}

void GE_init_const23()
{
	ge856ov14024734 = (GE_ms8("option_unknown_class", 20));
	ge856ov14024735 = (GE_ms8("renaming_unknown_class", 22));
	ge856ov14024736 = (GE_ms8("same_uuid", 9));
	ge856ov14024737 = (GE_ms8("syntax", 6));
	ge856ov14024738 = (GE_ms8("unused_local", 12));
	ge856ov14024739 = (GE_ms8("vjrv", 4));
	ge856ov14024740 = (GE_ms8("vwab", 4));
	ge856ov14024741 = (GE_ms8("vweq", 4));
	ge865ov14172161 = (GE_ms8("absent_explicit_assertion", 25));
	ge865ov14172162 = (GE_ms8("address_expression", 18));
	ge865ov14172163 = (GE_ms8("array_optimization", 18));
	ge865ov14172164 = (GE_ms8("automatic_backup", 16));
	ge865ov14172166 = (GE_ms8("check_generic_creation_constraint", 33));
	ge865ov14172167 = (GE_ms8("check_vape", 10));
	ge865ov14172168 = (GE_ms8("cls_compliant", 13));
	ge865ov14172205 = (GE_ms8("all", 3));
	ge865ov14172172 = (GE_ms8("dotnet_naming_convention", 24));
	ge865ov14172173 = (GE_ms8("dynamic_runtime", 15));
	ge865ov14172174 = (GE_ms8("enforce_unique_class_names", 26));
	ge865ov14172179 = (GE_ms8("force_32bits", 12));
	ge865ov14172181 = (GE_ms8("il_verifiable", 13));
	ge865ov14172184 = (GE_ms8("java_generation", 15));
	ge865ov14172187 = (GE_ms8("manifest_array_type", 19));
	ge865ov14172206 = (GE_ms8("default", 7));
	ge865ov14172193 = (GE_ms8("msil_generation", 15));
	ge865ov14172194 = (GE_ms8("msil_generation_type", 20));
	ge865ov14172208 = (GE_ms8("exe", 3));
	ge865ov14172196 = (GE_ms8("msil_use_optimized_precompile", 29));
	ge865ov14172198 = (GE_ms8("old_feature_replication", 23));
	ge865ov14172199 = (GE_ms8("old_verbatim_strings", 20));
	ge865ov14172203 = (GE_ms8("use_all_cluster_name_as_namespace", 33));
	ge865ov14172204 = (GE_ms8("use_cluster_name_as_namespace", 29));
	ge878ov14385212 = (GE_ms8("EATE", 4));
	ge878ov14385177 = (GE_ms8("attribute \'$5\' is empty in element \'$6\'.", 40));
	ge878ov14385214 = (GE_ms8("EATM", 4));
	ge878ov14385179 = (GE_ms8("attribute \'$5\' is missing in element \'$6\'.", 42));
	ge878ov14385208 = (GE_ms8("EADP", 4));
	ge878ov14385173 = (GE_ms8("value \'$6\' for capability \'$5\' not supported by library \'$7\'.", 61));
	ge810ov13271052 = (GE_ms8(" ", 1));
	ge810ov13271045 = (GE_ms8("conformance", 11));
	ge810ov13271046 = (GE_ms8("initialization", 14));
	ge878ov14385202 = (GE_ms8("EABW", 4));
	ge878ov14385167 = (GE_ms8("no library target specified in library ECF file \"$5\".", 53));
	ge878ov14385201 = (GE_ms8("EABV", 4));
	ge878ov14385166 = (GE_ms8("cannot open library ECF file \"$5\".", 34));
	ge884ov14483536 = (GE_ms8("system", 6));
	ge884ov14483508 = (GE_ms8("message", 7));
	ge865ov14172222 = (GE_ms8("windows", 7));
	ge865ov14172220 = (GE_ms8("unix", 4));
	ge820ov13434885 = (GE_ms8("case-insensitive", 16));
	ge820ov13434886 = (GE_ms8("wildcard", 8));
	ge820ov13434887 = (GE_ms8("regexp", 6));
	ge865ov14172178 = (GE_ms8("finalize", 8));
	ge865ov14172211 = (GE_ms8("finalize", 8));
	ge865ov14172223 = (GE_ms8("workbench", 9));
	ge878ov14385219 = (GE_ms8("EPCD", 4));
	ge878ov14385184 = (GE_ms8("value \'$6\' for capability \'$5\' not supported by library target \'$7\' from parent ECF file \"$8\".", 94));
	ge878ov14385220 = (GE_ms8("EPCL", 4));
	ge878ov14385185 = (GE_ms8("value \'$6\' for capability \'$5\' not supported by parent target \'$7\'.", 67));
	ge878ov14385221 = (GE_ms8("EPCR", 4));
	ge878ov14385186 = (GE_ms8("value \'$6\' for capability \'$5\' not supported by target \'$7\' from parent ECF file \"$8\".", 86));
	ge878ov14385209 = (GE_ms8("EADQ", 4));
	ge878ov14385174 = (GE_ms8("value \'$6\' for capability \'$5\' not supported by current target.", 63));
	ge878ov14385222 = (GE_ms8("EPCY", 4));
	ge878ov14385187 = (GE_ms8("cycle in target parents:\n\t$5", 28));
	ge878ov14385195 = (GE_ms8("EINT", 4));
	ge878ov14385160 = (GE_ms8("Internal error", 14));
	ge878ov14385224 = (GE_ms8("EPUD", 4));
	ge878ov14385189 = (GE_ms8("no library target specified in parent ECF file \"$5\".", 52));
	ge878ov14385225 = (GE_ms8("EPUL", 4));
	ge878ov14385190 = (GE_ms8("unknown target parent \'$5\'.", 27));
	ge878ov14385226 = (GE_ms8("EPUR", 4));
	ge878ov14385191 = (GE_ms8("no target \'$5\' found in parent ECF file \"$6\".", 45));
	ge878ov14385223 = (GE_ms8("EPFE", 4));
	ge878ov14385188 = (GE_ms8("cannot open target parent ECF file \"$5\".", 40));
	ge884ov14483529 = (GE_ms8("redirection", 11));
	ge878ov14385194 = (GE_ms8("ESYN", 4));
	ge878ov14385159 = (GE_ms8("$5", 2));
	ge878ov14385203 = (GE_ms8("EABX", 4));
	ge878ov14385168 = (GE_ms8("root element of ECF file should be \'system\' and not \'$5\'.", 57));
	ge878ov14385204 = (GE_ms8("EADF", 4));
	ge878ov14385169 = (GE_ms8("cannot open redirected ECF file \"$5\".", 37));
	ge878ov14385207 = (GE_ms8("EADI", 4));
	ge878ov14385172 = (GE_ms8("cycle in ECF file redirections:\n\t$5", 35));
	ge878ov14385206 = (GE_ms8("EADH", 4));
	ge878ov14385171 = (GE_ms8("\'location\' attribute in element \'redirection\' is empty.", 55));
	ge878ov14385205 = (GE_ms8("EADG", 4));
	ge878ov14385170 = (GE_ms8("\'location\' attribute is missing in element \'redirection\'.", 57));
	ge1792ov29360170 = (GE_ms8("PE reference only allowed in DTD", 32));
	ge1792ov29360132 = (GE_ms8("< not allowed in attribute value", 32));
	ge1792ov29360130 = (GE_ms8("-- not allowed in comment", 25));
	ge1792ov29360171 = (GE_ms8("xml prefix reserved in processing instruction", 45));
	ge1792ov29360143 = (GE_ms8("Misformed XML Declaration", 25));
	ge1792ov29360142 = (GE_ms8("Misplaced markup declaration", 28));
	ge1792ov29360153 = (GE_ms8("End tag does not match start tag", 32));
	ge1792ov29360147 = (GE_ms8("Missing element end tag", 23));
	ge1792ov29360146 = (GE_ms8("Error in element content", 24));
	ge1792ov29360145 = (GE_ms8("Misformed start tag", 19));
	ge1792ov29360151 = (GE_ms8("Attribute declared twice", 24));
	ge1792ov29360150 = (GE_ms8("Misformed attribute in tag", 26));
	ge1792ov29360152 = (GE_ms8("Error in end tag", 16));
}

void GE_init_const24()
{
	ge1792ov29360129 = (GE_ms8("]]> not allowed in content", 26));
	ge1792ov29360155 = (GE_ms8("Error in XML declaration", 24));
	ge1792ov29360164 = (GE_ms8("Misformed element type declaration", 34));
	ge1795ov29409307 = (GE_ms8("*", 1));
	ge1795ov29409305 = (GE_ms8("+", 1));
	ge1795ov29409306 = (GE_ms8("\?", 1));
	ge1792ov29360165 = (GE_ms8("Misformed attribute list declaration", 36));
	ge1792ov29360166 = (GE_ms8("Misformed attribute definition declaration", 42));
	ge1792ov29360169 = (GE_ms8("Misformed conditional section", 29));
	ge1792ov29360167 = (GE_ms8("Misformed entity declaration", 28));
	ge1792ov29360168 = (GE_ms8("Misformed entity notation", 25));
	ge1759ov28819469 = (GE_ms8("Namespace declared twice", 24));
	ge1759ov28819468 = (GE_ms8("Undeclared namespace error", 26));
	ge1792ov29360162 = (GE_ms8("Parser is not configured to support external DTDs", 49));
	ge1788ov29294593 = (GE_ms8("1.0", 3));
	ge1788ov29294594 = (GE_ms8("utf-8", 5));
	ge1792ov29360135 = (GE_ms8("unsupported character encoding", 30));
	ge1790ov29327364 = (GE_ms8("iso-8859-1", 10));
	ge1790ov29327366 = (GE_ms8("utf-16", 6));
	ge1790ov29327363 = (GE_ms8("us-ascii", 8));
	ge1790ov29327365 = (GE_ms8("utf-8", 5));
	ge1792ov29360158 = (GE_ms8("External reference in quoted value", 34));
	ge1803ov29540369 = (GE_ms8("undefined", 9));
	ge1803ov29540368 = (GE_ms8("(TRUNCATED)", 11));
	ge1792ov29360178 = (GE_ms8("Unexpected non-ASCII character in ASCII-only mode", 49));
	ge1792ov29360179 = (GE_ms8("Unexpected non-latin1 character in latin1-only mode", 51));
	ge1792ov29360180 = (GE_ms8("Invalid UTF8 character sequence", 31));
	ge1792ov29360173 = (GE_ms8("Name misformed", 14));
	ge1792ov29360156 = (GE_ms8("Literal entity expected in attribute", 36));
	ge1792ov29360157 = (GE_ms8("Entity is not defined", 21));
	ge1792ov29360159 = (GE_ms8("Entity cannot be recursively included", 37));
	ge1792ov29360163 = (GE_ms8("Undefined PE entity", 19));
	ge1799ov29474836 = (GE_ms8("  ", 2));
	ge1799ov29474835 = (GE_ms8(" ", 1));
	ge1847ov30261249 = (GE_ms8("root", 4));
	ge1869ov30621750 = (GE_ms8("GOBO_DEFAULT_CAPABILITY", 23));
	ge1869ov30621749 = (GE_ms8("GOBO_CLI_CAPABILITY", 19));
	ge1869ov30621748 = (GE_ms8("GOBO_DEFAULT_SETTING", 20));
	ge1869ov30621747 = (GE_ms8("GOBO_CLI_SETTING", 16));
	ge749ov12271625 = (GE_ms8("ISE_C_COMPILER", 14));
	ge749ov12271621 = (GE_ms8("EIFFEL_LIBRARY", 14));
	ge749ov12271617 = (GE_ms8("ISE_EIFFEL", 10));
	ge749ov12271619 = (GE_ms8("ISE_LIBRARY", 11));
	ge747ov12238851 = (GE_ms8("GOBO_LIBRARY", 12));
	geic25001985 = (GE_ms8(" (label on item #", 17));
	geic25001986 = (GE_ms8(" with a manifest tuple argument of type ", 40));
	geic13287425 = (GE_ms8("|/\\", 3));
}

void GE_init_const()
{
	GE_init_const1();
	GE_init_const2();
	GE_init_const3();
	GE_init_const4();
	GE_init_const5();
	GE_init_const6();
	GE_init_const7();
	GE_init_const8();
	GE_init_const9();
	GE_init_const10();
	GE_init_const11();
	GE_init_const12();
	GE_init_const13();
	GE_init_const14();
	GE_init_const15();
	GE_init_const16();
	GE_init_const17();
	GE_init_const18();
	GE_init_const19();
	GE_init_const20();
	GE_init_const21();
	GE_init_const22();
	GE_init_const23();
	GE_init_const24();
}

EIF_TYPE_OBJ GE_types[2352][2] = {
{{0, 0, 0, EIF_FALSE, 0, 0, 0},{0, 0, 0, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1, EIF_FALSE, 0, 0, 0},{0, 0, 65537, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2, EIF_FALSE, 0, 0, 0},{0, 0, 65538, EIF_FALSE, 0, 0, 0}},
{{0, 0, 3, EIF_FALSE, 0, 0, 0},{0, 0, 65539, EIF_FALSE, 0, 0, 0}},
{{0, 0, 4, EIF_FALSE, 0, 0, 0},{0, 0, 65540, EIF_FALSE, 0, 0, 0}},
{{0, 0, 5, EIF_FALSE, 0, 0, 0},{0, 0, 65541, EIF_FALSE, 0, 0, 0}},
{{1411, 0, 6, EIF_FALSE, 0, 0, 0},{0, 0, 65542, EIF_FALSE, 0, 0, 0}},
{{0, 0, 7, EIF_FALSE, 0, 0, 0},{0, 0, 65543, EIF_FALSE, 0, 0, 0}},
{{0, 0, 8, EIF_FALSE, 0, 0, 0},{0, 0, 65544, EIF_FALSE, 0, 0, 0}},
{{0, 0, 9, EIF_FALSE, 0, 0, 0},{0, 0, 65545, EIF_FALSE, 0, 0, 0}},
{{1812, 0, 10, EIF_FALSE, 0, 0, 0},{0, 0, 65546, EIF_FALSE, 0, 0, 0}},
{{1811, 0, 11, EIF_FALSE, 0, 0, 0},{0, 0, 65547, EIF_FALSE, 0, 0, 0}},
{{0, 0, 12, EIF_FALSE, 0, 0, 0},{0, 0, 65548, EIF_FALSE, 0, 0, 0}},
{{0, 0, 13, EIF_FALSE, 0, 0, 0},{0, 0, 65549, EIF_FALSE, 0, 0, 0}},
{{0, 0, 14, EIF_FALSE, 0, 0, 0},{0, 0, 65550, EIF_FALSE, 0, 0, 0}},
{{0, 0, 15, EIF_TRUE, 0, 0, 0},{0, 0, 65551, EIF_TRUE, 0, 0, 0}},
{{0, 0, 16, EIF_TRUE, 0, 0, 0},{0, 0, 65552, EIF_TRUE, 0, 0, 0}},
{{1987, 0, 17, EIF_FALSE, 0, 0, 0},{861, 0, 65553, EIF_FALSE, 0, 0, 0}},
{{0, 0, 18, EIF_FALSE, 0, 0, 0},{0, 0, 65554, EIF_FALSE, 0, 0, 0}},
{{0, 0, 19, EIF_FALSE, 0, 0, 0},{0, 0, 65555, EIF_FALSE, 0, 0, 0}},
{{0, 0, 20, EIF_FALSE, 0, 0, 0},{0, 0, 65556, EIF_FALSE, 0, 0, 0}},
{{0, 0, 21, EIF_FALSE, 0, 0, 0},{0, 0, 65557, EIF_FALSE, 0, 0, 0}},
{{2059, 0, 22, EIF_FALSE, 0, 0, 0},{0, 0, 65558, EIF_FALSE, 0, 0, 0}},
{{0, 0, 23, EIF_FALSE, 0, 0, 0},{24, 0, 65559, EIF_FALSE, 0, 0, 0}},
{{0, 0, 24, EIF_FALSE, 0, 0, 0},{0, 0, 65560, EIF_FALSE, 0, 0, 0}},
{{0, 0, 25, EIF_FALSE, 0, 0, 0},{0, 0, 65561, EIF_FALSE, 0, 0, 0}},
{{0, 0, 26, EIF_FALSE, 0, 0, 0},{0, 0, 65562, EIF_FALSE, 0, 0, 0}},
{{0, 0, 27, EIF_FALSE, 0, 0, 0},{0, 0, 65563, EIF_FALSE, 0, 0, 0}},
{{0, 0, 28, EIF_FALSE, 0, 0, 0},{0, 0, 65564, EIF_FALSE, 0, 0, 0}},
{{0, 0, 29, EIF_FALSE, 0, 0, 0},{0, 0, 65565, EIF_FALSE, 0, 0, 0}},
{{0, 0, 30, EIF_FALSE, 0, 0, 0},{0, 0, 65566, EIF_FALSE, 0, 0, 0}},
{{0, 0, 31, EIF_FALSE, 0, 0, 0},{0, 0, 65567, EIF_FALSE, 0, 0, 0}},
{{0, 0, 32, EIF_FALSE, 0, 0, 0},{0, 0, 65568, EIF_FALSE, 0, 0, 0}},
{{0, 0, 33, EIF_FALSE, 0, 0, 0},{0, 0, 65569, EIF_FALSE, 0, 0, 0}},
{{0, 0, 34, EIF_FALSE, 0, 0, 0},{0, 0, 65570, EIF_FALSE, 0, 0, 0}},
{{0, 0, 35, EIF_TRUE, 0, 0, 0},{0, 0, 65571, EIF_TRUE, 0, 0, 0}},
{{0, 0, 36, EIF_FALSE, 0, 0, 0},{0, 0, 65572, EIF_FALSE, 0, 0, 0}},
{{0, 0, 37, EIF_FALSE, 0, 0, 0},{0, 0, 65573, EIF_FALSE, 0, 0, 0}},
{{0, 0, 38, EIF_FALSE, 0, 0, 0},{0, 0, 65574, EIF_FALSE, 0, 0, 0}},
{{0, 0, 39, EIF_FALSE, 0, 0, 0},{0, 0, 65575, EIF_FALSE, 0, 0, 0}},
{{0, 0, 40, EIF_FALSE, 0, 0, 0},{0, 0, 65576, EIF_FALSE, 0, 0, 0}},
{{0, 0, 41, EIF_FALSE, 0, 0, 0},{0, 0, 65577, EIF_FALSE, 0, 0, 0}},
{{0, 0, 42, EIF_FALSE, 0, 0, 0},{0, 0, 65578, EIF_FALSE, 0, 0, 0}},
{{0, 0, 43, EIF_FALSE, &T43f60, 0, 0},{0, 0, 65579, EIF_FALSE, &T43f60, 0, 0}},
{{0, 0, 44, EIF_FALSE, 0, 0, 0},{0, 0, 65580, EIF_FALSE, 0, 0, 0}},
{{0, 0, 45, EIF_FALSE, 0, 0, 0},{0, 0, 65581, EIF_FALSE, 0, 0, 0}},
{{0, 0, 46, EIF_FALSE, 0, 0, 0},{0, 0, 65582, EIF_FALSE, 0, 0, 0}},
{{0, 0, 47, EIF_FALSE, 0, 0, 0},{0, 0, 65583, EIF_FALSE, 0, 0, 0}},
{{0, 0, 48, EIF_FALSE, 0, 0, 0},{0, 0, 65584, EIF_FALSE, 0, 0, 0}},
{{0, 0, 49, EIF_FALSE, 0, 0, 0},{0, 0, 65585, EIF_FALSE, 0, 0, 0}},
{{0, 0, 50, EIF_FALSE, 0, 0, 0},{0, 0, 65586, EIF_FALSE, 0, 0, 0}},
{{0, 0, 51, EIF_FALSE, 0, 0, 0},{0, 0, 65587, EIF_FALSE, 0, 0, 0}},
{{0, 0, 52, EIF_FALSE, 0, 0, 0},{0, 0, 65588, EIF_FALSE, 0, 0, 0}},
{{0, 0, 53, EIF_FALSE, 0, 0, 0},{0, 0, 65589, EIF_FALSE, 0, 0, 0}},
{{0, 0, 54, EIF_FALSE, 0, 0, 0},{0, 0, 65590, EIF_FALSE, 0, 0, 0}},
{{0, 0, 55, EIF_FALSE, 0, 0, 0},{0, 0, 65591, EIF_FALSE, 0, 0, 0}},
{{0, 0, 56, EIF_FALSE, 0, 0, 0},{0, 0, 65592, EIF_FALSE, 0, 0, 0}},
{{0, 0, 57, EIF_FALSE, 0, 0, 0},{0, 0, 65593, EIF_FALSE, 0, 0, 0}},
{{0, 0, 58, EIF_FALSE, 0, 0, 0},{0, 0, 65594, EIF_FALSE, 0, 0, 0}},
{{0, 0, 59, EIF_FALSE, 0, 0, 0},{0, 0, 65595, EIF_FALSE, 0, 0, 0}},
{{0, 0, 60, EIF_FALSE, 0, 0, 0},{0, 0, 65596, EIF_FALSE, 0, 0, 0}},
{{0, 0, 61, EIF_FALSE, 0, 0, 0},{0, 0, 65597, EIF_FALSE, 0, 0, 0}},
{{0, 0, 62, EIF_FALSE, 0, 0, 0},{0, 0, 65598, EIF_FALSE, 0, 0, 0}},
{{0, 0, 63, EIF_FALSE, 0, 0, 0},{0, 0, 65599, EIF_FALSE, 0, 0, 0}},
{{0, 0, 64, EIF_FALSE, 0, 0, 0},{0, 0, 65600, EIF_FALSE, 0, 0, 0}},
{{0, 0, 65, EIF_FALSE, 0, 0, 0},{0, 0, 65601, EIF_FALSE, 0, 0, 0}},
{{0, 0, 66, EIF_FALSE, 0, 0, 0},{0, 0, 65602, EIF_FALSE, 0, 0, 0}},
{{0, 0, 67, EIF_FALSE, 0, 0, 0},{0, 0, 65603, EIF_FALSE, 0, 0, 0}},
{{0, 0, 68, EIF_FALSE, 0, 0, 0},{0, 0, 65604, EIF_FALSE, 0, 0, 0}},
{{0, 0, 69, EIF_FALSE, 0, 0, 0},{0, 0, 65605, EIF_FALSE, 0, 0, 0}},
{{0, 0, 70, EIF_FALSE, 0, 0, 0},{1735, 0, 65606, EIF_FALSE, 0, 0, 0}},
{{0, 0, 71, EIF_FALSE, 0, 0, 0},{1742, 0, 65607, EIF_FALSE, 0, 0, 0}},
{{0, 0, 72, EIF_FALSE, 0, 0, 0},{0, 0, 65608, EIF_FALSE, 0, 0, 0}},
{{0, 0, 73, EIF_FALSE, 0, 0, 0},{0, 0, 65609, EIF_FALSE, 0, 0, 0}},
{{0, 0, 74, EIF_FALSE, 0, 0, 0},{0, 0, 65610, EIF_FALSE, 0, 0, 0}},
{{0, 0, 75, EIF_FALSE, 0, 0, 0},{0, 0, 65611, EIF_FALSE, 0, 0, 0}},
{{0, 0, 76, EIF_FALSE, 0, 0, 0},{0, 0, 65612, EIF_FALSE, 0, 0, 0}},
{{0, 0, 77, EIF_FALSE, 0, 0, 0},{0, 0, 65613, EIF_FALSE, 0, 0, 0}},
{{0, 0, 78, EIF_FALSE, 0, 0, 0},{0, 0, 65614, EIF_FALSE, 0, 0, 0}},
{{0, 0, 79, EIF_FALSE, 0, 0, 0},{0, 0, 65615, EIF_FALSE, 0, 0, 0}},
{{0, 0, 80, EIF_FALSE, 0, 0, 0},{0, 0, 65616, EIF_FALSE, 0, 0, 0}},
{{0, 0, 81, EIF_FALSE, 0, 0, 0},{0, 0, 65617, EIF_FALSE, 0, 0, 0}},
{{0, 0, 82, EIF_FALSE, 0, 0, 0},{0, 0, 65618, EIF_FALSE, 0, 0, 0}},
{{0, 0, 83, EIF_FALSE, 0, 0, 0},{0, 0, 65619, EIF_FALSE, 0, 0, 0}},
{{0, 0, 84, EIF_FALSE, 0, 0, 0},{0, 0, 65620, EIF_FALSE, 0, 0, 0}},
{{0, 0, 85, EIF_FALSE, 0, 0, 0},{0, 0, 65621, EIF_FALSE, 0, 0, 0}},
{{0, 0, 86, EIF_FALSE, 0, 0, 0},{0, 0, 65622, EIF_FALSE, 0, 0, 0}},
{{0, 0, 87, EIF_FALSE, 0, 0, 0},{0, 0, 65623, EIF_FALSE, 0, 0, 0}},
{{0, 0, 88, EIF_FALSE, 0, 0, 0},{0, 0, 65624, EIF_FALSE, 0, 0, 0}},
{{0, 0, 89, EIF_FALSE, 0, 0, 0},{0, 0, 65625, EIF_FALSE, 0, 0, 0}},
{{0, 0, 90, EIF_FALSE, 0, 0, 0},{0, 0, 65626, EIF_FALSE, 0, 0, 0}},
{{0, 0, 91, EIF_FALSE, 0, 0, 0},{0, 0, 65627, EIF_FALSE, 0, 0, 0}},
{{0, 0, 92, EIF_FALSE, 0, 0, 0},{0, 0, 65628, EIF_FALSE, 0, 0, 0}},
{{0, 0, 93, EIF_FALSE, 0, 0, 0},{0, 0, 65629, EIF_FALSE, 0, 0, 0}},
{{0, 0, 94, EIF_FALSE, 0, 0, 0},{0, 0, 65630, EIF_FALSE, 0, 0, 0}},
{{0, 0, 95, EIF_FALSE, 0, 0, 0},{0, 0, 65631, EIF_FALSE, 0, 0, 0}},
{{0, 0, 96, EIF_FALSE, 0, 0, 0},{0, 0, 65632, EIF_FALSE, 0, 0, 0}},
{{0, 0, 97, EIF_FALSE, 0, 0, 0},{0, 0, 65633, EIF_FALSE, 0, 0, 0}},
{{0, 0, 98, EIF_FALSE, 0, 0, 0},{0, 0, 65634, EIF_FALSE, 0, 0, 0}},
{{0, 0, 99, EIF_FALSE, 0, 0, 0},{0, 0, 65635, EIF_FALSE, 0, 0, 0}},
{{0, 0, 100, EIF_FALSE, 0, 0, 0},{0, 0, 65636, EIF_FALSE, 0, 0, 0}},
{{0, 0, 101, EIF_FALSE, 0, 0, 0},{0, 0, 65637, EIF_FALSE, 0, 0, 0}},
{{0, 0, 102, EIF_FALSE, 0, 0, 0},{0, 0, 65638, EIF_FALSE, 0, 0, 0}},
{{0, 0, 103, EIF_FALSE, 0, 0, 0},{0, 0, 65639, EIF_FALSE, 0, 0, 0}},
{{0, 0, 104, EIF_FALSE, 0, 0, 0},{0, 0, 65640, EIF_FALSE, 0, 0, 0}},
{{0, 0, 105, EIF_FALSE, 0, 0, 0},{0, 0, 65641, EIF_FALSE, 0, 0, 0}},
{{0, 0, 106, EIF_FALSE, 0, 0, 0},{0, 0, 65642, EIF_FALSE, 0, 0, 0}},
{{0, 0, 107, EIF_FALSE, 0, 0, 0},{0, 0, 65643, EIF_FALSE, 0, 0, 0}},
{{0, 0, 108, EIF_FALSE, 0, 0, 0},{0, 0, 65644, EIF_FALSE, 0, 0, 0}},
{{0, 0, 109, EIF_FALSE, 0, 0, 0},{0, 0, 65645, EIF_FALSE, 0, 0, 0}},
{{0, 0, 110, EIF_FALSE, 0, 0, 0},{0, 0, 65646, EIF_FALSE, 0, 0, 0}},
{{0, 0, 111, EIF_FALSE, 0, 0, 0},{0, 0, 65647, EIF_FALSE, 0, 0, 0}},
{{0, 0, 112, EIF_FALSE, 0, 0, 0},{0, 0, 65648, EIF_FALSE, 0, 0, 0}},
{{0, 0, 113, EIF_FALSE, 0, 0, 0},{0, 0, 65649, EIF_FALSE, 0, 0, 0}},
{{0, 0, 114, EIF_FALSE, 0, 0, 0},{0, 0, 65650, EIF_FALSE, 0, 0, 0}},
{{0, 0, 115, EIF_FALSE, 0, 0, 0},{0, 0, 65651, EIF_FALSE, 0, 0, 0}},
{{0, 0, 116, EIF_FALSE, 0, 0, 0},{0, 0, 65652, EIF_FALSE, 0, 0, 0}},
{{0, 0, 117, EIF_FALSE, 0, 0, 0},{0, 0, 65653, EIF_FALSE, 0, 0, 0}},
{{0, 0, 118, EIF_FALSE, 0, 0, 0},{0, 0, 65654, EIF_FALSE, 0, 0, 0}},
{{0, 0, 119, EIF_FALSE, 0, 0, 0},{0, 0, 65655, EIF_FALSE, 0, 0, 0}},
{{0, 0, 120, EIF_FALSE, 0, 0, 0},{121, 0, 65656, EIF_FALSE, 0, 0, 0}},
{{0, 0, 121, EIF_FALSE, 0, 0, 0},{0, 0, 65657, EIF_FALSE, 0, 0, 0}},
{{0, 0, 122, EIF_FALSE, 0, 0, 0},{123, 0, 65658, EIF_FALSE, 0, 0, 0}},
{{0, 0, 123, EIF_FALSE, 0, 0, 0},{0, 0, 65659, EIF_FALSE, 0, 0, 0}},
{{0, 0, 124, EIF_FALSE, 0, 0, 0},{125, 0, 65660, EIF_FALSE, 0, 0, 0}},
{{0, 0, 125, EIF_FALSE, 0, 0, 0},{0, 0, 65661, EIF_FALSE, 0, 0, 0}},
{{0, 0, 126, EIF_FALSE, 0, 0, 0},{0, 0, 65662, EIF_FALSE, 0, 0, 0}},
{{0, 0, 127, EIF_FALSE, 0, 0, 0},{0, 0, 65663, EIF_FALSE, 0, 0, 0}},
{{0, 0, 128, EIF_FALSE, 0, 0, 0},{0, 0, 65664, EIF_FALSE, 0, 0, 0}},
{{0, 0, 129, EIF_FALSE, 0, 0, 0},{0, 0, 65665, EIF_FALSE, 0, 0, 0}},
{{0, 0, 130, EIF_FALSE, 0, 0, 0},{0, 0, 65666, EIF_FALSE, 0, 0, 0}},
{{0, 0, 131, EIF_FALSE, 0, 0, 0},{0, 0, 65667, EIF_FALSE, 0, 0, 0}},
{{0, 0, 132, EIF_FALSE, 0, 0, 0},{0, 0, 65668, EIF_FALSE, 0, 0, 0}},
{{0, 0, 133, EIF_FALSE, 0, 0, 0},{0, 0, 65669, EIF_FALSE, 0, 0, 0}},
{{0, 0, 134, EIF_FALSE, 0, 0, 0},{0, 0, 65670, EIF_FALSE, 0, 0, 0}},
{{0, 0, 135, EIF_FALSE, 0, 0, 0},{0, 0, 65671, EIF_FALSE, 0, 0, 0}},
{{0, 0, 136, EIF_FALSE, 0, 0, 0},{0, 0, 65672, EIF_FALSE, 0, 0, 0}},
{{0, 0, 137, EIF_FALSE, 0, 0, 0},{0, 0, 65673, EIF_FALSE, 0, 0, 0}},
{{0, 0, 138, EIF_FALSE, 0, 0, 0},{0, 0, 65674, EIF_FALSE, 0, 0, 0}},
{{0, 0, 139, EIF_FALSE, 0, 0, 0},{0, 0, 65675, EIF_FALSE, 0, 0, 0}},
{{0, 0, 140, EIF_FALSE, 0, 0, 0},{0, 0, 65676, EIF_FALSE, 0, 0, 0}},
{{0, 0, 141, EIF_FALSE, 0, 0, 0},{0, 0, 65677, EIF_FALSE, 0, 0, 0}},
{{0, 0, 142, EIF_FALSE, 0, 0, 0},{0, 0, 65678, EIF_FALSE, 0, 0, 0}},
{{0, 0, 143, EIF_FALSE, 0, 0, 0},{0, 0, 65679, EIF_FALSE, 0, 0, 0}},
{{0, 0, 144, EIF_FALSE, 0, 0, 0},{0, 0, 65680, EIF_FALSE, 0, 0, 0}},
{{0, 0, 145, EIF_FALSE, 0, 0, 0},{0, 0, 65681, EIF_FALSE, 0, 0, 0}},
{{0, 0, 146, EIF_FALSE, 0, 0, 0},{0, 0, 65682, EIF_FALSE, 0, 0, 0}},
{{0, 0, 147, EIF_FALSE, 0, 0, 0},{0, 0, 65683, EIF_FALSE, 0, 0, 0}},
{{2058, 0, 148, EIF_FALSE, 0, 0, 0},{0, 0, 65684, EIF_FALSE, 0, 0, 0}},
{{0, 0, 149, EIF_FALSE, 0, 0, 0},{0, 0, 65685, EIF_FALSE, 0, 0, 0}},
{{0, 0, 150, EIF_FALSE, 0, 0, 0},{0, 0, 65686, EIF_FALSE, 0, 0, 0}},
{{0, 0, 151, EIF_FALSE, 0, 0, 0},{0, 0, 65687, EIF_FALSE, 0, 0, 0}},
{{0, 0, 152, EIF_FALSE, 0, 0, 0},{0, 0, 65688, EIF_FALSE, 0, 0, 0}},
{{0, 0, 153, EIF_FALSE, 0, 0, 0},{0, 0, 65689, EIF_FALSE, 0, 0, 0}},
{{0, 0, 154, EIF_TRUE, 0, 0, 0},{0, 0, 65690, EIF_TRUE, 0, 0, 0}},
{{0, 0, 155, EIF_TRUE, 0, 0, 0},{0, 0, 65691, EIF_TRUE, 0, 0, 0}},
{{0, 0, 156, EIF_FALSE, 0, 0, 0},{0, 0, 65692, EIF_FALSE, 0, 0, 0}},
{{0, 0, 157, EIF_FALSE, 0, 0, 0},{0, 0, 65693, EIF_FALSE, 0, 0, 0}},
{{0, 0, 158, EIF_FALSE, 0, 0, 0},{0, 0, 65694, EIF_FALSE, 0, 0, 0}},
{{0, 0, 159, EIF_FALSE, &T159f9, 0, 0},{0, 0, 65695, EIF_FALSE, &T159f9, 0, 0}},
{{0, 0, 160, EIF_FALSE, 0, 0, 0},{0, 0, 65696, EIF_FALSE, 0, 0, 0}},
{{0, 0, 161, EIF_FALSE, 0, 0, 0},{0, 0, 65697, EIF_FALSE, 0, 0, 0}},
{{0, 0, 162, EIF_FALSE, &T162f9, 0, 0},{0, 0, 65698, EIF_FALSE, &T162f9, 0, 0}},
{{0, 0, 163, EIF_FALSE, 0, 0, 0},{0, 0, 65699, EIF_FALSE, 0, 0, 0}},
{{0, 0, 164, EIF_FALSE, 0, 0, 0},{0, 0, 65700, EIF_FALSE, 0, 0, 0}},
{{0, 0, 165, EIF_FALSE, 0, 0, 0},{0, 0, 65701, EIF_FALSE, 0, 0, 0}},
{{0, 0, 166, EIF_FALSE, 0, 0, 0},{0, 0, 65702, EIF_FALSE, 0, 0, 0}},
{{0, 0, 167, EIF_FALSE, &T167f36, 0, 0},{0, 0, 65703, EIF_FALSE, &T167f36, 0, 0}},
{{0, 0, 168, EIF_FALSE, 0, 0, 0},{0, 0, 65704, EIF_FALSE, 0, 0, 0}},
{{0, 0, 169, EIF_FALSE, 0, 0, 0},{0, 0, 65705, EIF_FALSE, 0, 0, 0}},
{{0, 0, 170, EIF_FALSE, 0, 0, 0},{0, 0, 65706, EIF_FALSE, 0, 0, 0}},
{{0, 0, 171, EIF_FALSE, 0, 0, 0},{0, 0, 65707, EIF_FALSE, 0, 0, 0}},
{{0, 0, 172, EIF_FALSE, 0, 0, 0},{0, 0, 65708, EIF_FALSE, 0, 0, 0}},
{{0, 0, 173, EIF_FALSE, 0, 0, 0},{0, 0, 65709, EIF_FALSE, 0, 0, 0}},
{{0, 0, 174, EIF_FALSE, 0, 0, 0},{0, 0, 65710, EIF_FALSE, 0, 0, 0}},
{{0, 0, 175, EIF_FALSE, 0, 0, 0},{0, 0, 65711, EIF_FALSE, 0, 0, 0}},
{{0, 0, 176, EIF_FALSE, 0, 0, 0},{0, 0, 65712, EIF_FALSE, 0, 0, 0}},
{{0, 0, 177, EIF_FALSE, 0, 0, 0},{0, 0, 65713, EIF_FALSE, 0, 0, 0}},
{{0, 0, 178, EIF_FALSE, 0, 0, 0},{0, 0, 65714, EIF_FALSE, 0, 0, 0}},
{{0, 0, 179, EIF_FALSE, 0, 0, 0},{0, 0, 65715, EIF_FALSE, 0, 0, 0}},
{{0, 0, 180, EIF_FALSE, 0, 0, 0},{0, 0, 65716, EIF_FALSE, 0, 0, 0}},
{{0, 0, 181, EIF_FALSE, 0, 0, 0},{0, 0, 65717, EIF_FALSE, 0, 0, 0}},
{{0, 0, 182, EIF_FALSE, 0, 0, 0},{0, 0, 65718, EIF_FALSE, 0, 0, 0}},
{{0, 0, 183, EIF_FALSE, 0, 0, 0},{0, 0, 65719, EIF_FALSE, 0, 0, 0}},
{{0, 0, 184, EIF_FALSE, 0, 0, 0},{0, 0, 65720, EIF_FALSE, 0, 0, 0}},
{{0, 0, 185, EIF_FALSE, 0, 0, 0},{0, 0, 65721, EIF_FALSE, 0, 0, 0}},
{{0, 0, 186, EIF_FALSE, 0, 0, 0},{0, 0, 65722, EIF_FALSE, 0, 0, 0}},
{{0, 0, 187, EIF_FALSE, 0, 0, 0},{0, 0, 65723, EIF_FALSE, 0, 0, 0}},
{{0, 0, 188, EIF_FALSE, 0, 0, 0},{0, 0, 65724, EIF_FALSE, 0, 0, 0}},
{{0, 0, 189, EIF_FALSE, 0, 0, 0},{0, 0, 65725, EIF_FALSE, 0, 0, 0}},
{{0, 0, 190, EIF_FALSE, 0, 0, 0},{0, 0, 65726, EIF_FALSE, 0, 0, 0}},
{{0, 0, 191, EIF_FALSE, 0, 0, 0},{0, 0, 65727, EIF_FALSE, 0, 0, 0}},
{{0, 0, 192, EIF_FALSE, 0, 0, 0},{0, 0, 65728, EIF_FALSE, 0, 0, 0}},
{{0, 0, 193, EIF_FALSE, 0, 0, 0},{0, 0, 65729, EIF_FALSE, 0, 0, 0}},
{{0, 0, 194, EIF_FALSE, 0, 0, 0},{0, 0, 65730, EIF_FALSE, 0, 0, 0}},
{{0, 0, 195, EIF_FALSE, 0, 0, 0},{0, 0, 65731, EIF_FALSE, 0, 0, 0}},
{{0, 0, 196, EIF_FALSE, 0, 0, 0},{0, 0, 65732, EIF_FALSE, 0, 0, 0}},
{{0, 0, 197, EIF_FALSE, 0, 0, 0},{0, 0, 65733, EIF_FALSE, 0, 0, 0}},
{{0, 0, 198, EIF_FALSE, 0, 0, 0},{0, 0, 65734, EIF_FALSE, 0, 0, 0}},
{{0, 0, 199, EIF_FALSE, 0, 0, 0},{0, 0, 65735, EIF_FALSE, 0, 0, 0}},
{{0, 0, 200, EIF_FALSE, 0, 0, 0},{0, 0, 65736, EIF_FALSE, 0, 0, 0}},
{{0, 0, 201, EIF_FALSE, 0, 0, 0},{0, 0, 65737, EIF_FALSE, 0, 0, 0}},
{{0, 0, 202, EIF_FALSE, 0, 0, 0},{0, 0, 65738, EIF_FALSE, 0, 0, 0}},
{{0, 0, 203, EIF_FALSE, 0, 0, 0},{0, 0, 65739, EIF_FALSE, 0, 0, 0}},
{{0, 0, 204, EIF_FALSE, 0, 0, 0},{0, 0, 65740, EIF_FALSE, 0, 0, 0}},
{{0, 0, 205, EIF_FALSE, 0, 0, 0},{0, 0, 65741, EIF_FALSE, 0, 0, 0}},
{{0, 0, 206, EIF_FALSE, 0, 0, 0},{0, 0, 65742, EIF_FALSE, 0, 0, 0}},
{{0, 0, 207, EIF_FALSE, 0, 0, 0},{0, 0, 65743, EIF_FALSE, 0, 0, 0}},
{{0, 0, 208, EIF_FALSE, 0, 0, 0},{0, 0, 65744, EIF_FALSE, 0, 0, 0}},
{{0, 0, 209, EIF_FALSE, 0, 0, 0},{0, 0, 65745, EIF_FALSE, 0, 0, 0}},
{{0, 0, 210, EIF_FALSE, 0, 0, 0},{0, 0, 65746, EIF_FALSE, 0, 0, 0}},
{{0, 0, 211, EIF_FALSE, 0, 0, 0},{0, 0, 65747, EIF_FALSE, 0, 0, 0}},
{{0, 0, 212, EIF_FALSE, 0, 0, 0},{0, 0, 65748, EIF_FALSE, 0, 0, 0}},
{{0, 0, 213, EIF_FALSE, 0, 0, 0},{0, 0, 65749, EIF_FALSE, 0, 0, 0}},
{{0, 0, 214, EIF_FALSE, 0, 0, 0},{0, 0, 65750, EIF_FALSE, 0, 0, 0}},
{{0, 0, 215, EIF_FALSE, 0, 0, 0},{0, 0, 65751, EIF_FALSE, 0, 0, 0}},
{{0, 0, 216, EIF_FALSE, 0, 0, 0},{0, 0, 65752, EIF_FALSE, 0, 0, 0}},
{{0, 0, 217, EIF_FALSE, 0, 0, 0},{0, 0, 65753, EIF_FALSE, 0, 0, 0}},
{{0, 0, 218, EIF_FALSE, 0, 0, 0},{0, 0, 65754, EIF_FALSE, 0, 0, 0}},
{{0, 0, 219, EIF_FALSE, 0, 0, 0},{0, 0, 65755, EIF_FALSE, 0, 0, 0}},
{{0, 0, 220, EIF_FALSE, 0, 0, 0},{0, 0, 65756, EIF_FALSE, 0, 0, 0}},
{{0, 0, 221, EIF_FALSE, 0, 0, 0},{0, 0, 65757, EIF_FALSE, 0, 0, 0}},
{{0, 0, 222, EIF_FALSE, 0, 0, 0},{0, 0, 65758, EIF_FALSE, 0, 0, 0}},
{{0, 0, 223, EIF_FALSE, 0, 0, 0},{0, 0, 65759, EIF_FALSE, 0, 0, 0}},
{{0, 0, 224, EIF_FALSE, 0, 0, 0},{0, 0, 65760, EIF_FALSE, 0, 0, 0}},
{{0, 0, 225, EIF_FALSE, 0, 0, 0},{0, 0, 65761, EIF_FALSE, 0, 0, 0}},
{{0, 0, 226, EIF_FALSE, 0, 0, 0},{0, 0, 65762, EIF_FALSE, 0, 0, 0}},
{{0, 0, 227, EIF_FALSE, 0, 0, 0},{0, 0, 65763, EIF_FALSE, 0, 0, 0}},
{{0, 0, 228, EIF_FALSE, 0, 0, 0},{0, 0, 65764, EIF_FALSE, 0, 0, 0}},
{{0, 0, 229, EIF_FALSE, 0, 0, 0},{0, 0, 65765, EIF_FALSE, 0, 0, 0}},
{{0, 0, 230, EIF_FALSE, 0, 0, 0},{0, 0, 65766, EIF_FALSE, 0, 0, 0}},
{{0, 0, 231, EIF_FALSE, 0, 0, 0},{0, 0, 65767, EIF_FALSE, 0, 0, 0}},
{{0, 0, 232, EIF_FALSE, 0, 0, 0},{0, 0, 65768, EIF_FALSE, 0, 0, 0}},
{{0, 0, 233, EIF_FALSE, 0, 0, 0},{0, 0, 65769, EIF_FALSE, 0, 0, 0}},
{{0, 0, 234, EIF_FALSE, 0, 0, 0},{0, 0, 65770, EIF_FALSE, 0, 0, 0}},
{{0, 0, 235, EIF_FALSE, 0, 0, 0},{0, 0, 65771, EIF_FALSE, 0, 0, 0}},
{{0, 0, 236, EIF_FALSE, 0, 0, 0},{0, 0, 65772, EIF_FALSE, 0, 0, 0}},
{{0, 0, 237, EIF_FALSE, 0, 0, 0},{0, 0, 65773, EIF_FALSE, 0, 0, 0}},
{{0, 0, 238, EIF_FALSE, 0, 0, 0},{0, 0, 65774, EIF_FALSE, 0, 0, 0}},
{{0, 0, 239, EIF_FALSE, 0, 0, 0},{0, 0, 65775, EIF_FALSE, 0, 0, 0}},
{{0, 0, 240, EIF_FALSE, 0, 0, 0},{0, 0, 65776, EIF_FALSE, 0, 0, 0}},
{{0, 0, 241, EIF_FALSE, 0, 0, 0},{0, 0, 65777, EIF_FALSE, 0, 0, 0}},
{{0, 0, 242, EIF_FALSE, 0, 0, 0},{0, 0, 65778, EIF_FALSE, 0, 0, 0}},
{{0, 0, 243, EIF_FALSE, 0, 0, 0},{0, 0, 65779, EIF_FALSE, 0, 0, 0}},
{{0, 0, 244, EIF_FALSE, 0, 0, 0},{0, 0, 65780, EIF_FALSE, 0, 0, 0}},
{{0, 0, 245, EIF_FALSE, 0, 0, 0},{0, 0, 65781, EIF_FALSE, 0, 0, 0}},
{{0, 0, 246, EIF_FALSE, 0, 0, 0},{0, 0, 65782, EIF_FALSE, 0, 0, 0}},
{{0, 0, 247, EIF_FALSE, 0, 0, 0},{0, 0, 65783, EIF_FALSE, 0, 0, 0}},
{{0, 0, 248, EIF_FALSE, 0, 0, 0},{0, 0, 65784, EIF_FALSE, 0, 0, 0}},
{{0, 0, 249, EIF_FALSE, 0, 0, 0},{0, 0, 65785, EIF_FALSE, 0, 0, 0}},
{{0, 0, 250, EIF_FALSE, 0, 0, 0},{0, 0, 65786, EIF_FALSE, 0, 0, 0}},
{{0, 0, 251, EIF_FALSE, 0, 0, 0},{0, 0, 65787, EIF_FALSE, 0, 0, 0}},
{{0, 0, 252, EIF_FALSE, 0, 0, 0},{0, 0, 65788, EIF_FALSE, 0, 0, 0}},
{{0, 0, 253, EIF_FALSE, 0, 0, 0},{0, 0, 65789, EIF_FALSE, 0, 0, 0}},
{{0, 0, 254, EIF_FALSE, 0, 0, 0},{0, 0, 65790, EIF_FALSE, 0, 0, 0}},
{{0, 0, 255, EIF_FALSE, 0, 0, 0},{0, 0, 65791, EIF_FALSE, 0, 0, 0}},
{{0, 0, 256, EIF_FALSE, 0, 0, 0},{0, 0, 65792, EIF_FALSE, 0, 0, 0}},
{{0, 0, 257, EIF_FALSE, 0, 0, 0},{0, 0, 65793, EIF_FALSE, 0, 0, 0}},
{{0, 0, 258, EIF_FALSE, 0, 0, 0},{0, 0, 65794, EIF_FALSE, 0, 0, 0}},
{{0, 0, 259, EIF_FALSE, 0, 0, 0},{0, 0, 65795, EIF_FALSE, 0, 0, 0}},
{{0, 0, 260, EIF_FALSE, 0, 0, 0},{0, 0, 65796, EIF_FALSE, 0, 0, 0}},
{{0, 0, 261, EIF_FALSE, 0, 0, 0},{0, 0, 65797, EIF_FALSE, 0, 0, 0}},
{{0, 0, 262, EIF_FALSE, 0, 0, 0},{0, 0, 65798, EIF_FALSE, 0, 0, 0}},
{{0, 0, 263, EIF_FALSE, 0, 0, 0},{0, 0, 65799, EIF_FALSE, 0, 0, 0}},
{{0, 0, 264, EIF_FALSE, 0, 0, 0},{0, 0, 65800, EIF_FALSE, 0, 0, 0}},
{{0, 0, 265, EIF_FALSE, 0, 0, 0},{0, 0, 65801, EIF_FALSE, 0, 0, 0}},
{{0, 0, 266, EIF_FALSE, 0, 0, 0},{0, 0, 65802, EIF_FALSE, 0, 0, 0}},
{{0, 0, 267, EIF_FALSE, 0, 0, 0},{0, 0, 65803, EIF_FALSE, 0, 0, 0}},
{{0, 0, 268, EIF_FALSE, 0, 0, 0},{0, 0, 65804, EIF_FALSE, 0, 0, 0}},
{{0, 0, 269, EIF_FALSE, 0, 0, 0},{0, 0, 65805, EIF_FALSE, 0, 0, 0}},
{{0, 0, 270, EIF_FALSE, 0, 0, 0},{0, 0, 65806, EIF_FALSE, 0, 0, 0}},
{{0, 0, 271, EIF_FALSE, 0, 0, 0},{0, 0, 65807, EIF_FALSE, 0, 0, 0}},
{{0, 0, 272, EIF_FALSE, 0, 0, 0},{0, 0, 65808, EIF_FALSE, 0, 0, 0}},
{{0, 0, 273, EIF_TRUE, 0, 0, 0},{0, 0, 65809, EIF_TRUE, 0, 0, 0}},
{{0, 0, 274, EIF_FALSE, 0, 0, 0},{0, 0, 65810, EIF_FALSE, 0, 0, 0}},
{{0, 0, 275, EIF_TRUE, 0, 0, 0},{0, 0, 65811, EIF_TRUE, 0, 0, 0}},
{{0, 0, 276, EIF_FALSE, 0, 0, 0},{0, 0, 65812, EIF_FALSE, 0, 0, 0}},
{{0, 0, 277, EIF_FALSE, 0, 0, 0},{0, 0, 65813, EIF_FALSE, 0, 0, 0}},
{{0, 0, 278, EIF_TRUE, 0, 0, 0},{0, 0, 65814, EIF_TRUE, 0, 0, 0}},
{{0, 0, 279, EIF_FALSE, 0, 0, 0},{0, 0, 65815, EIF_FALSE, 0, 0, 0}},
{{0, 0, 280, EIF_FALSE, 0, 0, 0},{0, 0, 65816, EIF_FALSE, 0, 0, 0}},
{{0, 0, 281, EIF_TRUE, 0, 0, 0},{0, 0, 65817, EIF_TRUE, 0, 0, 0}},
{{0, 0, 282, EIF_FALSE, 0, 0, 0},{0, 0, 65818, EIF_FALSE, 0, 0, 0}},
{{0, 0, 283, EIF_FALSE, 0, 0, 0},{0, 0, 65819, EIF_FALSE, 0, 0, 0}},
{{0, 0, 284, EIF_TRUE, 0, 0, 0},{0, 0, 65820, EIF_TRUE, 0, 0, 0}},
{{0, 0, 285, EIF_FALSE, 0, 0, 0},{0, 0, 65821, EIF_FALSE, 0, 0, 0}},
{{0, 0, 286, EIF_FALSE, 0, 0, 0},{0, 0, 65822, EIF_FALSE, 0, 0, 0}},
{{0, 0, 287, EIF_TRUE, 0, 0, 0},{0, 0, 65823, EIF_TRUE, 0, 0, 0}},
{{0, 0, 288, EIF_FALSE, 0, 0, 0},{0, 0, 65824, EIF_FALSE, 0, 0, 0}},
{{0, 0, 289, EIF_FALSE, 0, 0, 0},{0, 0, 65825, EIF_FALSE, 0, 0, 0}},
{{0, 0, 290, EIF_TRUE, 0, 0, 0},{0, 0, 65826, EIF_TRUE, 0, 0, 0}},
{{0, 0, 291, EIF_FALSE, 0, 0, 0},{0, 0, 65827, EIF_FALSE, 0, 0, 0}},
{{0, 0, 292, EIF_FALSE, 0, 0, 0},{0, 0, 65828, EIF_FALSE, 0, 0, 0}},
{{0, 0, 293, EIF_TRUE, 0, 0, 0},{0, 0, 65829, EIF_TRUE, 0, 0, 0}},
{{0, 0, 294, EIF_FALSE, 0, 0, 0},{0, 0, 65830, EIF_FALSE, 0, 0, 0}},
{{0, 0, 295, EIF_FALSE, 0, 0, 0},{0, 0, 65831, EIF_FALSE, 0, 0, 0}},
{{0, 0, 296, EIF_TRUE, 0, 0, 0},{0, 0, 65832, EIF_TRUE, 0, 0, 0}},
{{0, 0, 297, EIF_FALSE, 0, 0, 0},{0, 0, 65833, EIF_FALSE, 0, 0, 0}},
{{0, 0, 298, EIF_FALSE, 0, 0, 0},{0, 0, 65834, EIF_FALSE, 0, 0, 0}},
{{0, 0, 299, EIF_TRUE, 0, 0, 0},{0, 0, 65835, EIF_TRUE, 0, 0, 0}},
{{0, 0, 300, EIF_FALSE, 0, 0, 0},{0, 0, 65836, EIF_FALSE, 0, 0, 0}},
{{0, 0, 301, EIF_FALSE, 0, 0, 0},{0, 0, 65837, EIF_FALSE, 0, 0, 0}},
{{0, 0, 302, EIF_TRUE, 0, 0, 0},{0, 0, 65838, EIF_TRUE, 0, 0, 0}},
{{0, 0, 303, EIF_FALSE, 0, 0, 0},{0, 0, 65839, EIF_FALSE, 0, 0, 0}},
{{0, 0, 304, EIF_FALSE, 0, 0, 0},{0, 0, 65840, EIF_FALSE, 0, 0, 0}},
{{0, 0, 305, EIF_TRUE, 0, 0, 0},{0, 0, 65841, EIF_TRUE, 0, 0, 0}},
{{0, 0, 306, EIF_FALSE, 0, 0, 0},{0, 0, 65842, EIF_FALSE, 0, 0, 0}},
{{0, 0, 307, EIF_FALSE, 0, 0, 0},{0, 0, 65843, EIF_FALSE, 0, 0, 0}},
{{0, 0, 308, EIF_TRUE, 0, 0, 0},{0, 0, 65844, EIF_TRUE, 0, 0, 0}},
{{0, 0, 309, EIF_FALSE, 0, 0, 0},{0, 0, 65845, EIF_FALSE, 0, 0, 0}},
{{0, 0, 310, EIF_FALSE, 0, 0, 0},{0, 0, 65846, EIF_FALSE, 0, 0, 0}},
{{0, 0, 311, EIF_TRUE, 0, 0, 0},{0, 0, 65847, EIF_TRUE, 0, 0, 0}},
{{0, 0, 312, EIF_FALSE, 0, 0, 0},{0, 0, 65848, EIF_FALSE, 0, 0, 0}},
{{0, 0, 313, EIF_FALSE, 0, 0, 0},{0, 0, 65849, EIF_FALSE, 0, 0, 0}},
{{0, 0, 314, EIF_TRUE, 0, 0, 0},{0, 0, 65850, EIF_TRUE, 0, 0, 0}},
{{0, 0, 315, EIF_FALSE, 0, 0, 0},{0, 0, 65851, EIF_FALSE, 0, 0, 0}},
{{0, 0, 316, EIF_FALSE, 0, 0, 0},{0, 0, 65852, EIF_FALSE, 0, 0, 0}},
{{0, 0, 317, EIF_TRUE, 0, 0, 0},{0, 0, 65853, EIF_TRUE, 0, 0, 0}},
{{0, 0, 318, EIF_FALSE, 0, 0, 0},{0, 0, 65854, EIF_FALSE, 0, 0, 0}},
{{0, 0, 319, EIF_FALSE, 0, 0, 0},{0, 0, 65855, EIF_FALSE, 0, 0, 0}},
{{0, 0, 320, EIF_TRUE, 0, 0, 0},{0, 0, 65856, EIF_TRUE, 0, 0, 0}},
{{0, 0, 321, EIF_FALSE, 0, 0, 0},{0, 0, 65857, EIF_FALSE, 0, 0, 0}},
{{0, 0, 322, EIF_FALSE, 0, 0, 0},{0, 0, 65858, EIF_FALSE, 0, 0, 0}},
{{0, 0, 323, EIF_TRUE, 0, 0, 0},{0, 0, 65859, EIF_TRUE, 0, 0, 0}},
{{0, 0, 324, EIF_FALSE, 0, 0, 0},{0, 0, 65860, EIF_FALSE, 0, 0, 0}},
{{0, 0, 325, EIF_FALSE, 0, 0, 0},{0, 0, 65861, EIF_FALSE, 0, 0, 0}},
{{0, 0, 326, EIF_TRUE, 0, 0, 0},{0, 0, 65862, EIF_TRUE, 0, 0, 0}},
{{0, 0, 327, EIF_FALSE, 0, 0, 0},{0, 0, 65863, EIF_FALSE, 0, 0, 0}},
{{0, 0, 328, EIF_FALSE, 0, 0, 0},{0, 0, 65864, EIF_FALSE, 0, 0, 0}},
{{0, 0, 329, EIF_TRUE, 0, 0, 0},{0, 0, 65865, EIF_TRUE, 0, 0, 0}},
{{0, 0, 330, EIF_FALSE, 0, 0, 0},{0, 0, 65866, EIF_FALSE, 0, 0, 0}},
{{0, 0, 331, EIF_FALSE, 0, 0, 0},{0, 0, 65867, EIF_FALSE, 0, 0, 0}},
{{0, 0, 332, EIF_TRUE, 0, 0, 0},{0, 0, 65868, EIF_TRUE, 0, 0, 0}},
{{0, 0, 333, EIF_FALSE, 0, 0, 0},{0, 0, 65869, EIF_FALSE, 0, 0, 0}},
{{0, 0, 334, EIF_FALSE, 0, 0, 0},{0, 0, 65870, EIF_FALSE, 0, 0, 0}},
{{0, 0, 335, EIF_TRUE, 0, 0, 0},{0, 0, 65871, EIF_TRUE, 0, 0, 0}},
{{0, 0, 336, EIF_FALSE, 0, 0, 0},{0, 0, 65872, EIF_FALSE, 0, 0, 0}},
{{0, 0, 337, EIF_FALSE, 0, 0, 0},{0, 0, 65873, EIF_FALSE, 0, 0, 0}},
{{0, 0, 338, EIF_TRUE, 0, 0, 0},{0, 0, 65874, EIF_TRUE, 0, 0, 0}},
{{0, 0, 339, EIF_FALSE, 0, 0, 0},{0, 0, 65875, EIF_FALSE, 0, 0, 0}},
{{0, 0, 340, EIF_FALSE, 0, 0, 0},{0, 0, 65876, EIF_FALSE, 0, 0, 0}},
{{0, 0, 341, EIF_TRUE, 0, 0, 0},{0, 0, 65877, EIF_TRUE, 0, 0, 0}},
{{0, 0, 342, EIF_FALSE, 0, 0, 0},{0, 0, 65878, EIF_FALSE, 0, 0, 0}},
{{0, 0, 343, EIF_FALSE, 0, 0, 0},{0, 0, 65879, EIF_FALSE, 0, 0, 0}},
{{0, 0, 344, EIF_TRUE, 0, 0, 0},{0, 0, 65880, EIF_TRUE, 0, 0, 0}},
{{0, 0, 345, EIF_FALSE, 0, 0, 0},{0, 0, 65881, EIF_FALSE, 0, 0, 0}},
{{0, 0, 346, EIF_FALSE, 0, 0, 0},{0, 0, 65882, EIF_FALSE, 0, 0, 0}},
{{0, 0, 347, EIF_TRUE, 0, 0, 0},{0, 0, 65883, EIF_TRUE, 0, 0, 0}},
{{0, 0, 348, EIF_FALSE, 0, 0, 0},{0, 0, 65884, EIF_FALSE, 0, 0, 0}},
{{0, 0, 349, EIF_FALSE, 0, 0, 0},{0, 0, 65885, EIF_FALSE, 0, 0, 0}},
{{0, 0, 350, EIF_TRUE, 0, 0, 0},{0, 0, 65886, EIF_TRUE, 0, 0, 0}},
{{0, 0, 351, EIF_FALSE, 0, 0, 0},{0, 0, 65887, EIF_FALSE, 0, 0, 0}},
{{0, 0, 352, EIF_TRUE, 0, 0, 0},{0, 0, 65888, EIF_TRUE, 0, 0, 0}},
{{0, 0, 353, EIF_FALSE, 0, 0, 0},{0, 0, 65889, EIF_FALSE, 0, 0, 0}},
{{0, 0, 354, EIF_TRUE, 0, 0, 0},{0, 0, 65890, EIF_TRUE, 0, 0, 0}},
{{0, 0, 355, EIF_FALSE, 0, 0, 0},{0, 0, 65891, EIF_FALSE, 0, 0, 0}},
{{0, 0, 356, EIF_FALSE, 0, 0, 0},{0, 0, 65892, EIF_FALSE, 0, 0, 0}},
{{0, 0, 357, EIF_TRUE, 0, 0, 0},{0, 0, 65893, EIF_TRUE, 0, 0, 0}},
{{0, 0, 358, EIF_FALSE, 0, 0, 0},{0, 0, 65894, EIF_FALSE, 0, 0, 0}},
{{0, 0, 359, EIF_FALSE, 0, 0, 0},{0, 0, 65895, EIF_FALSE, 0, 0, 0}},
{{0, 0, 360, EIF_TRUE, 0, 0, 0},{0, 0, 65896, EIF_TRUE, 0, 0, 0}},
{{0, 0, 361, EIF_FALSE, 0, 0, 0},{0, 0, 65897, EIF_FALSE, 0, 0, 0}},
{{0, 0, 362, EIF_FALSE, 0, 0, 0},{0, 0, 65898, EIF_FALSE, 0, 0, 0}},
{{0, 0, 363, EIF_TRUE, 0, 0, 0},{0, 0, 65899, EIF_TRUE, 0, 0, 0}},
{{0, 0, 364, EIF_FALSE, 0, 0, 0},{0, 0, 65900, EIF_FALSE, 0, 0, 0}},
{{0, 0, 365, EIF_FALSE, 0, 0, 0},{0, 0, 65901, EIF_FALSE, 0, 0, 0}},
{{0, 0, 366, EIF_TRUE, 0, 0, 0},{0, 0, 65902, EIF_TRUE, 0, 0, 0}},
{{0, 0, 367, EIF_FALSE, 0, 0, 0},{0, 0, 65903, EIF_FALSE, 0, 0, 0}},
{{0, 0, 368, EIF_FALSE, 0, 0, 0},{0, 0, 65904, EIF_FALSE, 0, 0, 0}},
{{0, 0, 369, EIF_TRUE, 0, 0, 0},{0, 0, 65905, EIF_TRUE, 0, 0, 0}},
{{0, 0, 370, EIF_FALSE, 0, 0, 0},{0, 0, 65906, EIF_FALSE, 0, 0, 0}},
{{0, 0, 371, EIF_FALSE, 0, 0, 0},{0, 0, 65907, EIF_FALSE, 0, 0, 0}},
{{0, 0, 372, EIF_TRUE, 0, 0, 0},{0, 0, 65908, EIF_TRUE, 0, 0, 0}},
{{0, 0, 373, EIF_FALSE, 0, 0, 0},{0, 0, 65909, EIF_FALSE, 0, 0, 0}},
{{0, 0, 374, EIF_FALSE, 0, 0, 0},{0, 0, 65910, EIF_FALSE, 0, 0, 0}},
{{0, 0, 375, EIF_TRUE, 0, 0, 0},{0, 0, 65911, EIF_TRUE, 0, 0, 0}},
{{0, 0, 376, EIF_FALSE, 0, 0, 0},{0, 0, 65912, EIF_FALSE, 0, 0, 0}},
{{0, 0, 377, EIF_FALSE, 0, 0, 0},{0, 0, 65913, EIF_FALSE, 0, 0, 0}},
{{0, 0, 378, EIF_TRUE, 0, 0, 0},{0, 0, 65914, EIF_TRUE, 0, 0, 0}},
{{0, 0, 379, EIF_FALSE, 0, 0, 0},{0, 0, 65915, EIF_FALSE, 0, 0, 0}},
{{0, 0, 380, EIF_FALSE, 0, 0, 0},{0, 0, 65916, EIF_FALSE, 0, 0, 0}},
{{0, 0, 381, EIF_TRUE, 0, 0, 0},{0, 0, 65917, EIF_TRUE, 0, 0, 0}},
{{0, 0, 382, EIF_FALSE, 0, 0, 0},{0, 0, 65918, EIF_FALSE, 0, 0, 0}},
{{0, 0, 383, EIF_FALSE, 0, 0, 0},{0, 0, 65919, EIF_FALSE, 0, 0, 0}},
{{0, 0, 384, EIF_TRUE, 0, 0, 0},{0, 0, 65920, EIF_TRUE, 0, 0, 0}},
{{0, 0, 385, EIF_FALSE, 0, 0, 0},{0, 0, 65921, EIF_FALSE, 0, 0, 0}},
{{0, 0, 386, EIF_FALSE, 0, 0, 0},{0, 0, 65922, EIF_FALSE, 0, 0, 0}},
{{0, 0, 387, EIF_TRUE, 0, 0, 0},{0, 0, 65923, EIF_TRUE, 0, 0, 0}},
{{0, 0, 388, EIF_FALSE, 0, 0, 0},{0, 0, 65924, EIF_FALSE, 0, 0, 0}},
{{0, 0, 389, EIF_FALSE, 0, 0, 0},{0, 0, 65925, EIF_FALSE, 0, 0, 0}},
{{0, 0, 390, EIF_TRUE, 0, 0, 0},{0, 0, 65926, EIF_TRUE, 0, 0, 0}},
{{0, 0, 391, EIF_FALSE, 0, 0, 0},{0, 0, 65927, EIF_FALSE, 0, 0, 0}},
{{0, 0, 392, EIF_FALSE, 0, 0, 0},{0, 0, 65928, EIF_FALSE, 0, 0, 0}},
{{0, 0, 393, EIF_TRUE, 0, 0, 0},{0, 0, 65929, EIF_TRUE, 0, 0, 0}},
{{0, 0, 394, EIF_FALSE, 0, 0, 0},{0, 0, 65930, EIF_FALSE, 0, 0, 0}},
{{0, 0, 395, EIF_FALSE, 0, 0, 0},{0, 0, 65931, EIF_FALSE, 0, 0, 0}},
{{0, 0, 396, EIF_TRUE, 0, 0, 0},{0, 0, 65932, EIF_TRUE, 0, 0, 0}},
{{0, 0, 397, EIF_FALSE, 0, 0, 0},{0, 0, 65933, EIF_FALSE, 0, 0, 0}},
{{0, 0, 398, EIF_FALSE, 0, 0, 0},{0, 0, 65934, EIF_FALSE, 0, 0, 0}},
{{0, 0, 399, EIF_TRUE, 0, 0, 0},{0, 0, 65935, EIF_TRUE, 0, 0, 0}},
{{0, 0, 400, EIF_FALSE, 0, 0, 0},{0, 0, 65936, EIF_FALSE, 0, 0, 0}},
{{0, 0, 401, EIF_TRUE, 0, 0, 0},{0, 0, 65937, EIF_TRUE, 0, 0, 0}},
{{0, 0, 402, EIF_FALSE, 0, 0, 0},{0, 0, 65938, EIF_FALSE, 0, 0, 0}},
{{0, 0, 403, EIF_TRUE, 0, 0, 0},{0, 0, 65939, EIF_TRUE, 0, 0, 0}},
{{0, 0, 404, EIF_FALSE, 0, 0, 0},{0, 0, 65940, EIF_FALSE, 0, 0, 0}},
{{0, 0, 405, EIF_TRUE, 0, 0, 0},{0, 0, 65941, EIF_TRUE, 0, 0, 0}},
{{0, 0, 406, EIF_FALSE, 0, 0, 0},{0, 0, 65942, EIF_FALSE, 0, 0, 0}},
{{0, 0, 407, EIF_FALSE, 0, 0, 0},{0, 0, 65943, EIF_FALSE, 0, 0, 0}},
{{0, 0, 408, EIF_TRUE, 0, 0, 0},{0, 0, 65944, EIF_TRUE, 0, 0, 0}},
{{0, 0, 409, EIF_FALSE, 0, 0, 0},{0, 0, 65945, EIF_FALSE, 0, 0, 0}},
{{0, 0, 410, EIF_FALSE, 0, 0, 0},{0, 0, 65946, EIF_FALSE, 0, 0, 0}},
{{0, 0, 411, EIF_TRUE, 0, 0, 0},{0, 0, 65947, EIF_TRUE, 0, 0, 0}},
{{0, 0, 412, EIF_FALSE, 0, 0, 0},{0, 0, 65948, EIF_FALSE, 0, 0, 0}},
{{0, 0, 413, EIF_FALSE, 0, 0, 0},{0, 0, 65949, EIF_FALSE, 0, 0, 0}},
{{0, 0, 414, EIF_TRUE, 0, 0, 0},{0, 0, 65950, EIF_TRUE, 0, 0, 0}},
{{0, 0, 415, EIF_FALSE, 0, 0, 0},{0, 0, 65951, EIF_FALSE, 0, 0, 0}},
{{0, 0, 416, EIF_FALSE, 0, 0, 0},{0, 0, 65952, EIF_FALSE, 0, 0, 0}},
{{0, 0, 417, EIF_TRUE, 0, 0, 0},{0, 0, 65953, EIF_TRUE, 0, 0, 0}},
{{0, 0, 418, EIF_FALSE, 0, 0, 0},{0, 0, 65954, EIF_FALSE, 0, 0, 0}},
{{0, 0, 419, EIF_FALSE, 0, 0, 0},{0, 0, 65955, EIF_FALSE, 0, 0, 0}},
{{0, 0, 420, EIF_TRUE, 0, 0, 0},{0, 0, 65956, EIF_TRUE, 0, 0, 0}},
{{0, 0, 421, EIF_FALSE, 0, 0, 0},{0, 0, 65957, EIF_FALSE, 0, 0, 0}},
{{0, 0, 422, EIF_FALSE, 0, 0, 0},{0, 0, 65958, EIF_FALSE, 0, 0, 0}},
{{0, 0, 423, EIF_TRUE, 0, 0, 0},{0, 0, 65959, EIF_TRUE, 0, 0, 0}},
{{0, 0, 424, EIF_FALSE, 0, 0, 0},{0, 0, 65960, EIF_FALSE, 0, 0, 0}},
{{0, 0, 425, EIF_FALSE, 0, 0, 0},{0, 0, 65961, EIF_FALSE, 0, 0, 0}},
{{0, 0, 426, EIF_TRUE, 0, 0, 0},{0, 0, 65962, EIF_TRUE, 0, 0, 0}},
{{0, 0, 427, EIF_FALSE, 0, 0, 0},{0, 0, 65963, EIF_FALSE, 0, 0, 0}},
{{0, 0, 428, EIF_FALSE, 0, 0, 0},{0, 0, 65964, EIF_FALSE, 0, 0, 0}},
{{0, 0, 429, EIF_TRUE, 0, 0, 0},{0, 0, 65965, EIF_TRUE, 0, 0, 0}},
{{0, 0, 430, EIF_FALSE, 0, 0, 0},{0, 0, 65966, EIF_FALSE, 0, 0, 0}},
{{0, 0, 431, EIF_FALSE, 0, 0, 0},{0, 0, 65967, EIF_FALSE, 0, 0, 0}},
{{0, 0, 432, EIF_TRUE, 0, 0, 0},{0, 0, 65968, EIF_TRUE, 0, 0, 0}},
{{0, 0, 433, EIF_FALSE, 0, 0, 0},{0, 0, 65969, EIF_FALSE, 0, 0, 0}},
{{0, 0, 434, EIF_FALSE, 0, 0, 0},{0, 0, 65970, EIF_FALSE, 0, 0, 0}},
{{0, 0, 435, EIF_TRUE, 0, 0, 0},{0, 0, 65971, EIF_TRUE, 0, 0, 0}},
{{0, 0, 436, EIF_FALSE, 0, 0, 0},{0, 0, 65972, EIF_FALSE, 0, 0, 0}},
{{0, 0, 437, EIF_FALSE, 0, 0, 0},{0, 0, 65973, EIF_FALSE, 0, 0, 0}},
{{0, 0, 438, EIF_TRUE, 0, 0, 0},{0, 0, 65974, EIF_TRUE, 0, 0, 0}},
{{0, 0, 439, EIF_FALSE, 0, 0, 0},{0, 0, 65975, EIF_FALSE, 0, 0, 0}},
{{0, 0, 440, EIF_FALSE, 0, 0, 0},{0, 0, 65976, EIF_FALSE, 0, 0, 0}},
{{0, 0, 441, EIF_TRUE, 0, 0, 0},{0, 0, 65977, EIF_TRUE, 0, 0, 0}},
{{0, 0, 442, EIF_FALSE, 0, 0, 0},{0, 0, 65978, EIF_FALSE, 0, 0, 0}},
{{0, 0, 443, EIF_FALSE, 0, 0, 0},{0, 0, 65979, EIF_FALSE, 0, 0, 0}},
{{0, 0, 444, EIF_TRUE, 0, 0, 0},{0, 0, 65980, EIF_TRUE, 0, 0, 0}},
{{0, 0, 445, EIF_FALSE, 0, 0, 0},{0, 0, 65981, EIF_FALSE, 0, 0, 0}},
{{0, 0, 446, EIF_TRUE, 0, 0, 0},{0, 0, 65982, EIF_TRUE, 0, 0, 0}},
{{0, 0, 447, EIF_FALSE, 0, 0, 0},{0, 0, 65983, EIF_FALSE, 0, 0, 0}},
{{0, 0, 448, EIF_TRUE, 0, 0, 0},{0, 0, 65984, EIF_TRUE, 0, 0, 0}},
{{0, 0, 449, EIF_FALSE, 0, 0, 0},{0, 0, 65985, EIF_FALSE, 0, 0, 0}},
{{0, 0, 450, EIF_FALSE, 0, 0, 0},{0, 0, 65986, EIF_FALSE, 0, 0, 0}},
{{0, 0, 451, EIF_TRUE, 0, 0, 0},{0, 0, 65987, EIF_TRUE, 0, 0, 0}},
{{0, 0, 452, EIF_FALSE, 0, 0, 0},{0, 0, 65988, EIF_FALSE, 0, 0, 0}},
{{0, 0, 453, EIF_FALSE, 0, 0, 0},{0, 0, 65989, EIF_FALSE, 0, 0, 0}},
{{0, 0, 454, EIF_TRUE, 0, 0, 0},{0, 0, 65990, EIF_TRUE, 0, 0, 0}},
{{0, 0, 455, EIF_FALSE, 0, 0, 0},{0, 0, 65991, EIF_FALSE, 0, 0, 0}},
{{0, 0, 456, EIF_FALSE, 0, 0, 0},{0, 0, 65992, EIF_FALSE, 0, 0, 0}},
{{0, 0, 457, EIF_TRUE, 0, 0, 0},{0, 0, 65993, EIF_TRUE, 0, 0, 0}},
{{0, 0, 458, EIF_FALSE, 0, 0, 0},{0, 0, 65994, EIF_FALSE, 0, 0, 0}},
{{0, 0, 459, EIF_FALSE, 0, 0, 0},{0, 0, 65995, EIF_FALSE, 0, 0, 0}},
{{0, 0, 460, EIF_TRUE, 0, 0, 0},{0, 0, 65996, EIF_TRUE, 0, 0, 0}},
{{0, 0, 461, EIF_FALSE, 0, 0, 0},{0, 0, 65997, EIF_FALSE, 0, 0, 0}},
{{0, 0, 462, EIF_FALSE, 0, 0, 0},{0, 0, 65998, EIF_FALSE, 0, 0, 0}},
{{0, 0, 463, EIF_TRUE, 0, 0, 0},{0, 0, 65999, EIF_TRUE, 0, 0, 0}},
{{0, 0, 464, EIF_FALSE, 0, 0, 0},{0, 0, 66000, EIF_FALSE, 0, 0, 0}},
{{0, 0, 465, EIF_FALSE, 0, 0, 0},{0, 0, 66001, EIF_FALSE, 0, 0, 0}},
{{0, 0, 466, EIF_TRUE, 0, 0, 0},{0, 0, 66002, EIF_TRUE, 0, 0, 0}},
{{0, 0, 467, EIF_FALSE, 0, 0, 0},{0, 0, 66003, EIF_FALSE, 0, 0, 0}},
{{0, 0, 468, EIF_TRUE, 0, 0, 0},{0, 0, 66004, EIF_TRUE, 0, 0, 0}},
{{0, 0, 469, EIF_FALSE, 0, 0, 0},{0, 0, 66005, EIF_FALSE, 0, 0, 0}},
{{0, 0, 470, EIF_FALSE, 0, 0, 0},{0, 0, 66006, EIF_FALSE, 0, 0, 0}},
{{0, 0, 471, EIF_TRUE, 0, 0, 0},{0, 0, 66007, EIF_TRUE, 0, 0, 0}},
{{0, 0, 472, EIF_FALSE, 0, 0, 0},{0, 0, 66008, EIF_FALSE, 0, 0, 0}},
{{0, 0, 473, EIF_FALSE, 0, 0, 0},{0, 0, 66009, EIF_FALSE, 0, 0, 0}},
{{0, 0, 474, EIF_TRUE, 0, 0, 0},{0, 0, 66010, EIF_TRUE, 0, 0, 0}},
{{0, 0, 475, EIF_FALSE, 0, 0, 0},{0, 0, 66011, EIF_FALSE, 0, 0, 0}},
{{0, 0, 476, EIF_FALSE, 0, 0, 0},{0, 0, 66012, EIF_FALSE, 0, 0, 0}},
{{0, 0, 477, EIF_TRUE, 0, 0, 0},{0, 0, 66013, EIF_TRUE, 0, 0, 0}},
{{0, 0, 478, EIF_FALSE, 0, 0, 0},{0, 0, 66014, EIF_FALSE, 0, 0, 0}},
{{0, 0, 479, EIF_FALSE, 0, 0, 0},{0, 0, 66015, EIF_FALSE, 0, 0, 0}},
{{0, 0, 480, EIF_TRUE, 0, 0, 0},{0, 0, 66016, EIF_TRUE, 0, 0, 0}},
{{0, 0, 481, EIF_FALSE, 0, 0, 0},{0, 0, 66017, EIF_FALSE, 0, 0, 0}},
{{0, 0, 482, EIF_TRUE, 0, 0, 0},{0, 0, 66018, EIF_TRUE, 0, 0, 0}},
{{0, 0, 483, EIF_FALSE, 0, 0, 0},{0, 0, 66019, EIF_FALSE, 0, 0, 0}},
{{0, 0, 484, EIF_FALSE, 0, 0, 0},{0, 0, 66020, EIF_FALSE, 0, 0, 0}},
{{0, 0, 485, EIF_TRUE, 0, 0, 0},{0, 0, 66021, EIF_TRUE, 0, 0, 0}},
{{0, 0, 486, EIF_FALSE, 0, 0, 0},{0, 0, 66022, EIF_FALSE, 0, 0, 0}},
{{0, 0, 487, EIF_FALSE, 0, 0, 0},{0, 0, 66023, EIF_FALSE, 0, 0, 0}},
{{0, 0, 488, EIF_TRUE, 0, 0, 0},{0, 0, 66024, EIF_TRUE, 0, 0, 0}},
{{0, 0, 489, EIF_FALSE, 0, 0, 0},{0, 0, 66025, EIF_FALSE, 0, 0, 0}},
{{0, 0, 490, EIF_TRUE, 0, 0, 0},{0, 0, 66026, EIF_TRUE, 0, 0, 0}},
{{0, 0, 491, EIF_FALSE, 0, 0, 0},{0, 0, 66027, EIF_FALSE, 0, 0, 0}},
{{0, 0, 492, EIF_FALSE, 0, 0, 0},{0, 0, 66028, EIF_FALSE, 0, 0, 0}},
{{0, 0, 493, EIF_TRUE, 0, 0, 0},{0, 0, 66029, EIF_TRUE, 0, 0, 0}},
{{0, 0, 494, EIF_FALSE, 0, 0, 0},{0, 0, 66030, EIF_FALSE, 0, 0, 0}},
{{0, 0, 495, EIF_FALSE, 0, 0, 0},{0, 0, 66031, EIF_FALSE, 0, 0, 0}},
{{0, 0, 496, EIF_TRUE, 0, 0, 0},{0, 0, 66032, EIF_TRUE, 0, 0, 0}},
{{0, 0, 497, EIF_FALSE, 0, 0, 0},{0, 0, 66033, EIF_FALSE, 0, 0, 0}},
{{0, 0, 498, EIF_FALSE, 0, 0, 0},{0, 0, 66034, EIF_FALSE, 0, 0, 0}},
{{0, 0, 499, EIF_TRUE, 0, 0, 0},{0, 0, 66035, EIF_TRUE, 0, 0, 0}},
{{0, 0, 500, EIF_FALSE, 0, 0, 0},{0, 0, 66036, EIF_FALSE, 0, 0, 0}},
{{0, 0, 501, EIF_FALSE, 0, 0, 0},{0, 0, 66037, EIF_FALSE, 0, 0, 0}},
{{0, 0, 502, EIF_TRUE, 0, 0, 0},{0, 0, 66038, EIF_TRUE, 0, 0, 0}},
{{0, 0, 503, EIF_FALSE, 0, 0, 0},{0, 0, 66039, EIF_FALSE, 0, 0, 0}},
{{0, 0, 504, EIF_FALSE, 0, 0, 0},{0, 0, 66040, EIF_FALSE, 0, 0, 0}},
{{0, 0, 505, EIF_TRUE, 0, 0, 0},{0, 0, 66041, EIF_TRUE, 0, 0, 0}},
{{0, 0, 506, EIF_FALSE, 0, 0, 0},{0, 0, 66042, EIF_FALSE, 0, 0, 0}},
{{0, 0, 507, EIF_FALSE, 0, 0, 0},{0, 0, 66043, EIF_FALSE, 0, 0, 0}},
{{0, 0, 508, EIF_TRUE, 0, 0, 0},{0, 0, 66044, EIF_TRUE, 0, 0, 0}},
{{0, 0, 509, EIF_FALSE, 0, 0, 0},{0, 0, 66045, EIF_FALSE, 0, 0, 0}},
{{0, 0, 510, EIF_FALSE, 0, 0, 0},{0, 0, 66046, EIF_FALSE, 0, 0, 0}},
{{0, 0, 511, EIF_TRUE, 0, 0, 0},{0, 0, 66047, EIF_TRUE, 0, 0, 0}},
{{0, 0, 512, EIF_FALSE, 0, 0, 0},{0, 0, 66048, EIF_FALSE, 0, 0, 0}},
{{0, 0, 513, EIF_FALSE, 0, 0, 0},{0, 0, 66049, EIF_FALSE, 0, 0, 0}},
{{0, 0, 514, EIF_TRUE, 0, 0, 0},{0, 0, 66050, EIF_TRUE, 0, 0, 0}},
{{0, 0, 515, EIF_FALSE, 0, 0, 0},{0, 0, 66051, EIF_FALSE, 0, 0, 0}},
{{0, 0, 516, EIF_FALSE, 0, 0, 0},{0, 0, 66052, EIF_FALSE, 0, 0, 0}},
{{0, 0, 517, EIF_TRUE, 0, 0, 0},{0, 0, 66053, EIF_TRUE, 0, 0, 0}},
{{0, 0, 518, EIF_FALSE, 0, 0, 0},{0, 0, 66054, EIF_FALSE, 0, 0, 0}},
{{0, 0, 519, EIF_FALSE, 0, 0, 0},{0, 0, 66055, EIF_FALSE, 0, 0, 0}},
{{0, 0, 520, EIF_TRUE, 0, 0, 0},{0, 0, 66056, EIF_TRUE, 0, 0, 0}},
{{0, 0, 521, EIF_FALSE, 0, 0, 0},{0, 0, 66057, EIF_FALSE, 0, 0, 0}},
{{0, 0, 522, EIF_FALSE, 0, 0, 0},{1905, 0, 66058, EIF_FALSE, 0, 0, 0}},
{{0, 0, 523, EIF_TRUE, 0, 0, 0},{0, 0, 66059, EIF_TRUE, 0, 0, 0}},
{{0, 0, 524, EIF_FALSE, 0, 0, 0},{0, 0, 66060, EIF_FALSE, 0, 0, 0}},
{{0, 0, 525, EIF_FALSE, 0, 0, 0},{0, 0, 66061, EIF_FALSE, 0, 0, 0}},
{{0, 0, 526, EIF_TRUE, 0, 0, 0},{0, 0, 66062, EIF_TRUE, 0, 0, 0}},
{{0, 0, 527, EIF_FALSE, 0, 0, 0},{0, 0, 66063, EIF_FALSE, 0, 0, 0}},
{{0, 0, 528, EIF_FALSE, 0, 0, 0},{0, 0, 66064, EIF_FALSE, 0, 0, 0}},
{{0, 0, 529, EIF_TRUE, 0, 0, 0},{0, 0, 66065, EIF_TRUE, 0, 0, 0}},
{{0, 0, 530, EIF_FALSE, 0, 0, 0},{0, 0, 66066, EIF_FALSE, 0, 0, 0}},
{{0, 0, 531, EIF_FALSE, 0, 0, 0},{0, 0, 66067, EIF_FALSE, 0, 0, 0}},
{{0, 0, 532, EIF_TRUE, 0, 0, 0},{0, 0, 66068, EIF_TRUE, 0, 0, 0}},
{{0, 0, 533, EIF_FALSE, 0, 0, 0},{0, 0, 66069, EIF_FALSE, 0, 0, 0}},
{{0, 0, 534, EIF_FALSE, 0, 0, 0},{0, 0, 66070, EIF_FALSE, 0, 0, 0}},
{{0, 0, 535, EIF_TRUE, 0, 0, 0},{0, 0, 66071, EIF_TRUE, 0, 0, 0}},
{{0, 0, 536, EIF_FALSE, 0, 0, 0},{0, 0, 66072, EIF_FALSE, 0, 0, 0}},
{{0, 0, 537, EIF_FALSE, 0, 0, 0},{0, 0, 66073, EIF_FALSE, 0, 0, 0}},
{{0, 0, 538, EIF_TRUE, 0, 0, 0},{0, 0, 66074, EIF_TRUE, 0, 0, 0}},
{{0, 0, 539, EIF_FALSE, 0, 0, 0},{0, 0, 66075, EIF_FALSE, 0, 0, 0}},
{{0, 0, 540, EIF_FALSE, 0, 0, 0},{0, 0, 66076, EIF_FALSE, 0, 0, 0}},
{{0, 0, 541, EIF_TRUE, 0, 0, 0},{0, 0, 66077, EIF_TRUE, 0, 0, 0}},
{{0, 0, 542, EIF_FALSE, 0, 0, 0},{0, 0, 66078, EIF_FALSE, 0, 0, 0}},
{{0, 0, 543, EIF_FALSE, 0, 0, 0},{0, 0, 66079, EIF_FALSE, 0, 0, 0}},
{{0, 0, 544, EIF_TRUE, 0, 0, 0},{0, 0, 66080, EIF_TRUE, 0, 0, 0}},
{{0, 0, 545, EIF_FALSE, 0, 0, 0},{0, 0, 66081, EIF_FALSE, 0, 0, 0}},
{{0, 0, 546, EIF_TRUE, 0, 0, 0},{0, 0, 66082, EIF_TRUE, 0, 0, 0}},
{{0, 0, 547, EIF_FALSE, 0, 0, 0},{0, 0, 66083, EIF_FALSE, 0, 0, 0}},
{{0, 0, 548, EIF_FALSE, 0, 0, 0},{0, 0, 66084, EIF_FALSE, 0, 0, 0}},
{{0, 0, 549, EIF_TRUE, 0, 0, 0},{0, 0, 66085, EIF_TRUE, 0, 0, 0}},
{{0, 0, 550, EIF_FALSE, 0, 0, 0},{0, 0, 66086, EIF_FALSE, 0, 0, 0}},
{{0, 0, 551, EIF_FALSE, 0, 0, 0},{0, 0, 66087, EIF_FALSE, 0, 0, 0}},
{{0, 0, 552, EIF_TRUE, 0, 0, 0},{0, 0, 66088, EIF_TRUE, 0, 0, 0}},
{{0, 0, 553, EIF_FALSE, 0, 0, 0},{0, 0, 66089, EIF_FALSE, 0, 0, 0}},
{{0, 0, 554, EIF_FALSE, 0, 0, 0},{0, 0, 66090, EIF_FALSE, 0, 0, 0}},
{{0, 0, 555, EIF_TRUE, 0, 0, 0},{0, 0, 66091, EIF_TRUE, 0, 0, 0}},
{{0, 0, 556, EIF_FALSE, 0, 0, 0},{0, 0, 66092, EIF_FALSE, 0, 0, 0}},
{{0, 0, 557, EIF_FALSE, 0, 0, 0},{0, 0, 66093, EIF_FALSE, 0, 0, 0}},
{{0, 0, 558, EIF_TRUE, 0, 0, 0},{0, 0, 66094, EIF_TRUE, 0, 0, 0}},
{{0, 0, 559, EIF_FALSE, 0, 0, 0},{0, 0, 66095, EIF_FALSE, 0, 0, 0}},
{{0, 0, 560, EIF_FALSE, 0, 0, 0},{0, 0, 66096, EIF_FALSE, 0, 0, 0}},
{{0, 0, 561, EIF_TRUE, 0, 0, 0},{0, 0, 66097, EIF_TRUE, 0, 0, 0}},
{{0, 0, 562, EIF_FALSE, 0, 0, 0},{0, 0, 66098, EIF_FALSE, 0, 0, 0}},
{{0, 0, 563, EIF_FALSE, 0, 0, 0},{0, 0, 66099, EIF_FALSE, 0, 0, 0}},
{{0, 0, 564, EIF_TRUE, 0, 0, 0},{0, 0, 66100, EIF_TRUE, 0, 0, 0}},
{{0, 0, 565, EIF_FALSE, 0, 0, 0},{0, 0, 66101, EIF_FALSE, 0, 0, 0}},
{{0, 0, 566, EIF_FALSE, 0, 0, 0},{0, 0, 66102, EIF_FALSE, 0, 0, 0}},
{{0, 0, 567, EIF_TRUE, 0, 0, 0},{0, 0, 66103, EIF_TRUE, 0, 0, 0}},
{{0, 0, 568, EIF_FALSE, 0, 0, 0},{0, 0, 66104, EIF_FALSE, 0, 0, 0}},
{{0, 0, 569, EIF_FALSE, 0, 0, 0},{0, 0, 66105, EIF_FALSE, 0, 0, 0}},
{{0, 0, 570, EIF_TRUE, 0, 0, 0},{0, 0, 66106, EIF_TRUE, 0, 0, 0}},
{{0, 0, 571, EIF_FALSE, 0, 0, 0},{0, 0, 66107, EIF_FALSE, 0, 0, 0}},
{{0, 0, 572, EIF_FALSE, 0, 0, 0},{0, 0, 66108, EIF_FALSE, 0, 0, 0}},
{{0, 0, 573, EIF_TRUE, 0, 0, 0},{0, 0, 66109, EIF_TRUE, 0, 0, 0}},
{{0, 0, 574, EIF_FALSE, 0, 0, 0},{0, 0, 66110, EIF_FALSE, 0, 0, 0}},
{{0, 0, 575, EIF_FALSE, 0, 0, 0},{0, 0, 66111, EIF_FALSE, 0, 0, 0}},
{{0, 0, 576, EIF_TRUE, 0, 0, 0},{0, 0, 66112, EIF_TRUE, 0, 0, 0}},
{{0, 0, 577, EIF_FALSE, 0, 0, 0},{0, 0, 66113, EIF_FALSE, 0, 0, 0}},
{{0, 0, 578, EIF_FALSE, 0, 0, 0},{0, 0, 66114, EIF_FALSE, 0, 0, 0}},
{{0, 0, 579, EIF_TRUE, 0, 0, 0},{0, 0, 66115, EIF_TRUE, 0, 0, 0}},
{{0, 0, 580, EIF_FALSE, 0, 0, 0},{0, 0, 66116, EIF_FALSE, 0, 0, 0}},
{{0, 0, 581, EIF_FALSE, 0, 0, 0},{0, 0, 66117, EIF_FALSE, 0, 0, 0}},
{{0, 0, 582, EIF_TRUE, 0, 0, 0},{0, 0, 66118, EIF_TRUE, 0, 0, 0}},
{{0, 0, 583, EIF_FALSE, 0, 0, 0},{0, 0, 66119, EIF_FALSE, 0, 0, 0}},
{{0, 0, 584, EIF_FALSE, 0, 0, 0},{0, 0, 66120, EIF_FALSE, 0, 0, 0}},
{{0, 0, 585, EIF_TRUE, 0, 0, 0},{0, 0, 66121, EIF_TRUE, 0, 0, 0}},
{{0, 0, 586, EIF_FALSE, 0, 0, 0},{0, 0, 66122, EIF_FALSE, 0, 0, 0}},
{{0, 0, 587, EIF_FALSE, 0, 0, 0},{0, 0, 66123, EIF_FALSE, 0, 0, 0}},
{{0, 0, 588, EIF_TRUE, 0, 0, 0},{0, 0, 66124, EIF_TRUE, 0, 0, 0}},
{{0, 0, 589, EIF_FALSE, 0, 0, 0},{0, 0, 66125, EIF_FALSE, 0, 0, 0}},
{{0, 0, 590, EIF_FALSE, 0, 0, 0},{0, 0, 66126, EIF_FALSE, 0, 0, 0}},
{{0, 0, 591, EIF_TRUE, 0, 0, 0},{0, 0, 66127, EIF_TRUE, 0, 0, 0}},
{{0, 0, 592, EIF_FALSE, 0, 0, 0},{0, 0, 66128, EIF_FALSE, 0, 0, 0}},
{{0, 0, 593, EIF_FALSE, 0, 0, 0},{0, 0, 66129, EIF_FALSE, 0, 0, 0}},
{{0, 0, 594, EIF_TRUE, 0, 0, 0},{0, 0, 66130, EIF_TRUE, 0, 0, 0}},
{{0, 0, 595, EIF_FALSE, 0, 0, 0},{0, 0, 66131, EIF_FALSE, 0, 0, 0}},
{{0, 0, 596, EIF_TRUE, 0, 0, 0},{0, 0, 66132, EIF_TRUE, 0, 0, 0}},
{{0, 0, 597, EIF_FALSE, 0, 0, 0},{0, 0, 66133, EIF_FALSE, 0, 0, 0}},
{{0, 0, 598, EIF_FALSE, 0, 0, 0},{0, 0, 66134, EIF_FALSE, 0, 0, 0}},
{{0, 0, 599, EIF_TRUE, 0, 0, 0},{0, 0, 66135, EIF_TRUE, 0, 0, 0}},
{{0, 0, 600, EIF_FALSE, 0, 0, 0},{0, 0, 66136, EIF_FALSE, 0, 0, 0}},
{{0, 0, 601, EIF_TRUE, 0, 0, 0},{0, 0, 66137, EIF_TRUE, 0, 0, 0}},
{{0, 0, 602, EIF_FALSE, 0, 0, 0},{0, 0, 66138, EIF_FALSE, 0, 0, 0}},
{{0, 0, 603, EIF_TRUE, 0, 0, 0},{0, 0, 66139, EIF_TRUE, 0, 0, 0}},
{{0, 0, 604, EIF_FALSE, 0, 0, 0},{0, 0, 66140, EIF_FALSE, 0, 0, 0}},
{{0, 0, 605, EIF_FALSE, 0, 0, 0},{0, 0, 66141, EIF_FALSE, 0, 0, 0}},
{{0, 0, 606, EIF_TRUE, 0, 0, 0},{0, 0, 66142, EIF_TRUE, 0, 0, 0}},
{{0, 0, 607, EIF_FALSE, 0, 0, 0},{0, 0, 66143, EIF_FALSE, 0, 0, 0}},
{{0, 0, 608, EIF_FALSE, 0, 0, 0},{0, 0, 66144, EIF_FALSE, 0, 0, 0}},
{{0, 0, 609, EIF_TRUE, 0, 0, 0},{0, 0, 66145, EIF_TRUE, 0, 0, 0}},
{{0, 0, 610, EIF_FALSE, 0, 0, 0},{0, 0, 66146, EIF_FALSE, 0, 0, 0}},
{{0, 0, 611, EIF_FALSE, 0, 0, 0},{0, 0, 66147, EIF_FALSE, 0, 0, 0}},
{{0, 0, 612, EIF_TRUE, 0, 0, 0},{0, 0, 66148, EIF_TRUE, 0, 0, 0}},
{{0, 0, 613, EIF_FALSE, 0, 0, 0},{0, 0, 66149, EIF_FALSE, 0, 0, 0}},
{{0, 0, 614, EIF_FALSE, 0, 0, 0},{0, 0, 66150, EIF_FALSE, 0, 0, 0}},
{{0, 0, 615, EIF_TRUE, 0, 0, 0},{0, 0, 66151, EIF_TRUE, 0, 0, 0}},
{{0, 0, 616, EIF_FALSE, 0, 0, 0},{0, 0, 66152, EIF_FALSE, 0, 0, 0}},
{{0, 0, 617, EIF_FALSE, 0, 0, 0},{0, 0, 66153, EIF_FALSE, 0, 0, 0}},
{{0, 0, 618, EIF_TRUE, 0, 0, 0},{0, 0, 66154, EIF_TRUE, 0, 0, 0}},
{{0, 0, 619, EIF_FALSE, 0, 0, 0},{0, 0, 66155, EIF_FALSE, 0, 0, 0}},
{{0, 0, 620, EIF_FALSE, 0, 0, 0},{0, 0, 66156, EIF_FALSE, 0, 0, 0}},
{{0, 0, 621, EIF_TRUE, 0, 0, 0},{0, 0, 66157, EIF_TRUE, 0, 0, 0}},
{{0, 0, 622, EIF_FALSE, 0, 0, 0},{0, 0, 66158, EIF_FALSE, 0, 0, 0}},
{{0, 0, 623, EIF_FALSE, 0, 0, 0},{0, 0, 66159, EIF_FALSE, 0, 0, 0}},
{{0, 0, 624, EIF_TRUE, 0, 0, 0},{0, 0, 66160, EIF_TRUE, 0, 0, 0}},
{{0, 0, 625, EIF_FALSE, 0, 0, 0},{0, 0, 66161, EIF_FALSE, 0, 0, 0}},
{{0, 0, 626, EIF_TRUE, 0, 0, 0},{0, 0, 66162, EIF_TRUE, 0, 0, 0}},
{{0, 0, 627, EIF_FALSE, 0, 0, 0},{0, 0, 66163, EIF_FALSE, 0, 0, 0}},
{{0, 0, 628, EIF_FALSE, 0, 0, 0},{0, 0, 66164, EIF_FALSE, 0, 0, 0}},
{{0, 0, 629, EIF_TRUE, 0, 0, 0},{0, 0, 66165, EIF_TRUE, 0, 0, 0}},
{{0, 0, 630, EIF_FALSE, 0, 0, 0},{0, 0, 66166, EIF_FALSE, 0, 0, 0}},
{{0, 0, 631, EIF_FALSE, 0, 0, 0},{0, 0, 66167, EIF_FALSE, 0, 0, 0}},
{{0, 0, 632, EIF_TRUE, 0, 0, 0},{0, 0, 66168, EIF_TRUE, 0, 0, 0}},
{{0, 0, 633, EIF_FALSE, 0, 0, 0},{0, 0, 66169, EIF_FALSE, 0, 0, 0}},
{{0, 0, 634, EIF_FALSE, 0, 0, 0},{0, 0, 66170, EIF_FALSE, 0, 0, 0}},
{{0, 0, 635, EIF_TRUE, 0, 0, 0},{0, 0, 66171, EIF_TRUE, 0, 0, 0}},
{{0, 0, 636, EIF_FALSE, 0, 0, 0},{0, 0, 66172, EIF_FALSE, 0, 0, 0}},
{{0, 0, 637, EIF_TRUE, 0, 0, 0},{0, 0, 66173, EIF_TRUE, 0, 0, 0}},
{{0, 0, 638, EIF_FALSE, 0, 0, 0},{0, 0, 66174, EIF_FALSE, 0, 0, 0}},
{{0, 0, 639, EIF_FALSE, 0, 0, 0},{0, 0, 66175, EIF_FALSE, 0, 0, 0}},
{{0, 0, 640, EIF_TRUE, 0, 0, 0},{0, 0, 66176, EIF_TRUE, 0, 0, 0}},
{{0, 0, 641, EIF_FALSE, 0, 0, 0},{0, 0, 66177, EIF_FALSE, 0, 0, 0}},
{{0, 0, 642, EIF_FALSE, 0, 0, 0},{0, 0, 66178, EIF_FALSE, 0, 0, 0}},
{{0, 0, 643, EIF_TRUE, 0, 0, 0},{0, 0, 66179, EIF_TRUE, 0, 0, 0}},
{{0, 0, 644, EIF_FALSE, 0, 0, 0},{0, 0, 66180, EIF_FALSE, 0, 0, 0}},
{{0, 0, 645, EIF_FALSE, 0, 0, 0},{0, 0, 66181, EIF_FALSE, 0, 0, 0}},
{{0, 0, 646, EIF_TRUE, 0, 0, 0},{0, 0, 66182, EIF_TRUE, 0, 0, 0}},
{{0, 0, 647, EIF_FALSE, 0, 0, 0},{0, 0, 66183, EIF_FALSE, 0, 0, 0}},
{{0, 0, 648, EIF_FALSE, 0, 0, 0},{0, 0, 66184, EIF_FALSE, 0, 0, 0}},
{{0, 0, 649, EIF_TRUE, 0, 0, 0},{0, 0, 66185, EIF_TRUE, 0, 0, 0}},
{{0, 0, 650, EIF_FALSE, 0, 0, 0},{0, 0, 66186, EIF_FALSE, 0, 0, 0}},
{{0, 0, 651, EIF_FALSE, 0, 0, 0},{0, 0, 66187, EIF_FALSE, 0, 0, 0}},
{{0, 0, 652, EIF_TRUE, 0, 0, 0},{0, 0, 66188, EIF_TRUE, 0, 0, 0}},
{{0, 0, 653, EIF_FALSE, 0, 0, 0},{0, 0, 66189, EIF_FALSE, 0, 0, 0}},
{{0, 0, 654, EIF_FALSE, 0, 0, 0},{0, 0, 66190, EIF_FALSE, 0, 0, 0}},
{{0, 0, 655, EIF_TRUE, 0, 0, 0},{0, 0, 66191, EIF_TRUE, 0, 0, 0}},
{{0, 0, 656, EIF_FALSE, 0, 0, 0},{0, 0, 66192, EIF_FALSE, 0, 0, 0}},
{{0, 0, 657, EIF_FALSE, 0, 0, 0},{0, 0, 66193, EIF_FALSE, 0, 0, 0}},
{{0, 0, 658, EIF_TRUE, 0, 0, 0},{0, 0, 66194, EIF_TRUE, 0, 0, 0}},
{{0, 0, 659, EIF_FALSE, 0, 0, 0},{0, 0, 66195, EIF_FALSE, 0, 0, 0}},
{{0, 0, 660, EIF_FALSE, 0, 0, 0},{0, 0, 66196, EIF_FALSE, 0, 0, 0}},
{{0, 0, 661, EIF_TRUE, 0, 0, 0},{0, 0, 66197, EIF_TRUE, 0, 0, 0}},
{{0, 0, 662, EIF_FALSE, 0, 0, 0},{0, 0, 66198, EIF_FALSE, 0, 0, 0}},
{{0, 0, 663, EIF_FALSE, 0, 0, 0},{0, 0, 66199, EIF_FALSE, 0, 0, 0}},
{{0, 0, 664, EIF_TRUE, 0, 0, 0},{0, 0, 66200, EIF_TRUE, 0, 0, 0}},
{{0, 0, 665, EIF_FALSE, 0, 0, 0},{0, 0, 66201, EIF_FALSE, 0, 0, 0}},
{{0, 0, 666, EIF_FALSE, 0, 0, 0},{0, 0, 66202, EIF_FALSE, 0, 0, 0}},
{{0, 0, 667, EIF_TRUE, 0, 0, 0},{0, 0, 66203, EIF_TRUE, 0, 0, 0}},
{{0, 0, 668, EIF_FALSE, 0, 0, 0},{0, 0, 66204, EIF_FALSE, 0, 0, 0}},
{{0, 0, 669, EIF_FALSE, 0, 0, 0},{0, 0, 66205, EIF_FALSE, 0, 0, 0}},
{{0, 0, 670, EIF_TRUE, 0, 0, 0},{0, 0, 66206, EIF_TRUE, 0, 0, 0}},
{{0, 0, 671, EIF_FALSE, 0, 0, 0},{0, 0, 66207, EIF_FALSE, 0, 0, 0}},
{{0, 0, 672, EIF_FALSE, 0, 0, 0},{0, 0, 66208, EIF_FALSE, 0, 0, 0}},
{{0, 0, 673, EIF_FALSE, 0, 0, 0},{0, 0, 66209, EIF_FALSE, 0, 0, 0}},
{{0, 0, 674, EIF_FALSE, 0, 0, 0},{0, 0, 66210, EIF_FALSE, 0, 0, 0}},
{{0, 0, 675, EIF_FALSE, 0, 0, 0},{0, 0, 66211, EIF_FALSE, 0, 0, 0}},
{{0, 0, 676, EIF_FALSE, 0, 0, 0},{0, 0, 66212, EIF_FALSE, 0, 0, 0}},
{{0, 0, 677, EIF_FALSE, 0, 0, 0},{0, 0, 66213, EIF_FALSE, 0, 0, 0}},
{{0, 0, 678, EIF_FALSE, 0, 0, 0},{0, 0, 66214, EIF_FALSE, 0, 0, 0}},
{{0, 0, 679, EIF_FALSE, 0, 0, 0},{0, 0, 66215, EIF_FALSE, 0, 0, 0}},
{{0, 0, 680, EIF_FALSE, 0, 0, 0},{0, 0, 66216, EIF_FALSE, 0, 0, 0}},
{{0, 0, 681, EIF_FALSE, 0, 0, 0},{0, 0, 66217, EIF_FALSE, 0, 0, 0}},
{{0, 0, 682, EIF_FALSE, 0, 0, 0},{0, 0, 66218, EIF_FALSE, 0, 0, 0}},
{{0, 0, 683, EIF_FALSE, 0, 0, 0},{0, 0, 66219, EIF_FALSE, 0, 0, 0}},
{{0, 0, 684, EIF_FALSE, 0, 0, 0},{0, 0, 66220, EIF_FALSE, 0, 0, 0}},
{{0, 0, 685, EIF_FALSE, 0, 0, 0},{0, 0, 66221, EIF_FALSE, 0, 0, 0}},
{{0, 0, 686, EIF_FALSE, 0, 0, 0},{0, 0, 66222, EIF_FALSE, 0, 0, 0}},
{{0, 0, 687, EIF_FALSE, 0, 0, 0},{0, 0, 66223, EIF_FALSE, 0, 0, 0}},
{{0, 0, 688, EIF_FALSE, 0, 0, 0},{0, 0, 66224, EIF_FALSE, 0, 0, 0}},
{{0, 0, 689, EIF_FALSE, 0, 0, 0},{0, 0, 66225, EIF_FALSE, 0, 0, 0}},
{{0, 0, 690, EIF_FALSE, 0, 0, 0},{0, 0, 66226, EIF_FALSE, 0, 0, 0}},
{{0, 0, 691, EIF_FALSE, 0, 0, 0},{0, 0, 66227, EIF_FALSE, 0, 0, 0}},
{{0, 0, 692, EIF_FALSE, 0, 0, 0},{0, 0, 66228, EIF_FALSE, 0, 0, 0}},
{{0, 0, 693, EIF_FALSE, 0, 0, 0},{0, 0, 66229, EIF_FALSE, 0, 0, 0}},
{{0, 0, 694, EIF_FALSE, 0, 0, 0},{0, 0, 66230, EIF_FALSE, 0, 0, 0}},
{{0, 0, 695, EIF_FALSE, 0, 0, 0},{0, 0, 66231, EIF_FALSE, 0, 0, 0}},
{{0, 0, 696, EIF_FALSE, 0, 0, 0},{0, 0, 66232, EIF_FALSE, 0, 0, 0}},
{{0, 0, 697, EIF_FALSE, 0, 0, 0},{0, 0, 66233, EIF_FALSE, 0, 0, 0}},
{{0, 0, 698, EIF_FALSE, 0, 0, 0},{0, 0, 66234, EIF_FALSE, 0, 0, 0}},
{{0, 0, 699, EIF_FALSE, 0, 0, 0},{0, 0, 66235, EIF_FALSE, 0, 0, 0}},
{{0, 0, 700, EIF_FALSE, 0, 0, 0},{1741, 0, 66236, EIF_FALSE, 0, 0, 0}},
{{0, 0, 701, EIF_FALSE, 0, 0, 0},{0, 0, 66237, EIF_FALSE, 0, 0, 0}},
{{0, 0, 702, EIF_FALSE, 0, 0, 0},{0, 0, 66238, EIF_FALSE, 0, 0, 0}},
{{0, 0, 703, EIF_FALSE, 0, 0, 0},{0, 0, 66239, EIF_FALSE, 0, 0, 0}},
{{0, 0, 704, EIF_FALSE, 0, 0, 0},{0, 0, 66240, EIF_FALSE, 0, 0, 0}},
{{0, 0, 705, EIF_FALSE, 0, 0, 0},{0, 0, 66241, EIF_FALSE, 0, 0, 0}},
{{0, 0, 706, EIF_FALSE, 0, 0, 0},{0, 0, 66242, EIF_FALSE, 0, 0, 0}},
{{0, 0, 707, EIF_FALSE, 0, 0, 0},{0, 0, 66243, EIF_FALSE, 0, 0, 0}},
{{0, 0, 708, EIF_FALSE, 0, 0, 0},{0, 0, 66244, EIF_FALSE, 0, 0, 0}},
{{0, 0, 709, EIF_FALSE, 0, 0, 0},{0, 0, 66245, EIF_FALSE, 0, 0, 0}},
{{0, 0, 710, EIF_FALSE, 0, 0, 0},{0, 0, 66246, EIF_FALSE, 0, 0, 0}},
{{0, 0, 711, EIF_FALSE, 0, 0, 0},{0, 0, 66247, EIF_FALSE, 0, 0, 0}},
{{0, 0, 712, EIF_FALSE, 0, 0, 0},{0, 0, 66248, EIF_FALSE, 0, 0, 0}},
{{0, 0, 713, EIF_FALSE, 0, 0, 0},{0, 0, 66249, EIF_FALSE, 0, 0, 0}},
{{0, 0, 714, EIF_FALSE, 0, 0, 0},{0, 0, 66250, EIF_FALSE, 0, 0, 0}},
{{0, 0, 715, EIF_FALSE, 0, 0, 0},{0, 0, 66251, EIF_FALSE, 0, 0, 0}},
{{0, 0, 716, EIF_FALSE, 0, 0, 0},{0, 0, 66252, EIF_FALSE, 0, 0, 0}},
{{0, 0, 717, EIF_FALSE, 0, 0, 0},{0, 0, 66253, EIF_FALSE, 0, 0, 0}},
{{0, 0, 718, EIF_FALSE, 0, 0, 0},{0, 0, 66254, EIF_FALSE, 0, 0, 0}},
{{0, 0, 719, EIF_FALSE, 0, 0, 0},{0, 0, 66255, EIF_FALSE, 0, 0, 0}},
{{0, 0, 720, EIF_FALSE, 0, 0, 0},{0, 0, 66256, EIF_FALSE, 0, 0, 0}},
{{0, 0, 721, EIF_FALSE, 0, 0, 0},{0, 0, 66257, EIF_FALSE, 0, 0, 0}},
{{0, 0, 722, EIF_FALSE, 0, 0, 0},{0, 0, 66258, EIF_FALSE, 0, 0, 0}},
{{0, 0, 723, EIF_FALSE, 0, 0, 0},{0, 0, 66259, EIF_FALSE, 0, 0, 0}},
{{0, 0, 724, EIF_FALSE, 0, 0, 0},{0, 0, 66260, EIF_FALSE, 0, 0, 0}},
{{0, 0, 725, EIF_FALSE, 0, 0, 0},{0, 0, 66261, EIF_FALSE, 0, 0, 0}},
{{0, 0, 726, EIF_FALSE, 0, 0, 0},{0, 0, 66262, EIF_FALSE, 0, 0, 0}},
{{0, 0, 727, EIF_FALSE, 0, 0, 0},{0, 0, 66263, EIF_FALSE, 0, 0, 0}},
{{0, 0, 728, EIF_FALSE, 0, 0, 0},{0, 0, 66264, EIF_FALSE, 0, 0, 0}},
{{0, 0, 729, EIF_FALSE, 0, 0, 0},{0, 0, 66265, EIF_FALSE, 0, 0, 0}},
{{0, 0, 730, EIF_FALSE, 0, 0, 0},{0, 0, 66266, EIF_FALSE, 0, 0, 0}},
{{0, 0, 731, EIF_FALSE, 0, 0, 0},{0, 0, 66267, EIF_FALSE, 0, 0, 0}},
{{0, 0, 732, EIF_FALSE, 0, 0, 0},{0, 0, 66268, EIF_FALSE, 0, 0, 0}},
{{0, 0, 733, EIF_FALSE, 0, 0, 0},{0, 0, 66269, EIF_FALSE, 0, 0, 0}},
{{0, 0, 734, EIF_FALSE, 0, 0, 0},{0, 0, 66270, EIF_FALSE, 0, 0, 0}},
{{0, 0, 735, EIF_FALSE, 0, 0, 0},{0, 0, 66271, EIF_FALSE, 0, 0, 0}},
{{0, 0, 736, EIF_FALSE, 0, 0, 0},{0, 0, 66272, EIF_FALSE, 0, 0, 0}},
{{0, 0, 737, EIF_FALSE, 0, 0, 0},{0, 0, 66273, EIF_FALSE, 0, 0, 0}},
{{0, 0, 738, EIF_FALSE, 0, 0, 0},{0, 0, 66274, EIF_FALSE, 0, 0, 0}},
{{0, 0, 739, EIF_FALSE, 0, 0, 0},{0, 0, 66275, EIF_FALSE, 0, 0, 0}},
{{0, 0, 740, EIF_FALSE, 0, 0, 0},{0, 0, 66276, EIF_FALSE, 0, 0, 0}},
{{0, 0, 741, EIF_FALSE, 0, 0, 0},{0, 0, 66277, EIF_FALSE, 0, 0, 0}},
{{0, 0, 742, EIF_FALSE, 0, 0, 0},{0, 0, 66278, EIF_FALSE, 0, 0, 0}},
{{0, 0, 743, EIF_FALSE, 0, 0, 0},{0, 0, 66279, EIF_FALSE, 0, 0, 0}},
{{0, 0, 744, EIF_FALSE, 0, 0, 0},{0, 0, 66280, EIF_FALSE, 0, 0, 0}},
{{0, 0, 745, EIF_FALSE, 0, 0, 0},{0, 0, 66281, EIF_FALSE, 0, 0, 0}},
{{0, 0, 746, EIF_FALSE, 0, 0, 0},{0, 0, 66282, EIF_FALSE, 0, 0, 0}},
{{0, 0, 747, EIF_FALSE, 0, 0, 0},{0, 0, 66283, EIF_FALSE, 0, 0, 0}},
{{0, 0, 748, EIF_FALSE, 0, 0, 0},{0, 0, 66284, EIF_FALSE, 0, 0, 0}},
{{0, 0, 749, EIF_FALSE, 0, 0, 0},{0, 0, 66285, EIF_FALSE, 0, 0, 0}},
{{0, 0, 750, EIF_FALSE, 0, 0, 0},{0, 0, 66286, EIF_FALSE, 0, 0, 0}},
{{0, 0, 751, EIF_FALSE, 0, 0, 0},{0, 0, 66287, EIF_FALSE, 0, 0, 0}},
{{0, 0, 752, EIF_FALSE, 0, 0, 0},{0, 0, 66288, EIF_FALSE, 0, 0, 0}},
{{0, 0, 753, EIF_FALSE, 0, 0, 0},{0, 0, 66289, EIF_FALSE, 0, 0, 0}},
{{0, 0, 754, EIF_FALSE, 0, 0, 0},{0, 0, 66290, EIF_FALSE, 0, 0, 0}},
{{0, 0, 755, EIF_FALSE, 0, 0, 0},{0, 0, 66291, EIF_FALSE, 0, 0, 0}},
{{0, 0, 756, EIF_FALSE, 0, 0, 0},{0, 0, 66292, EIF_FALSE, 0, 0, 0}},
{{0, 0, 757, EIF_FALSE, 0, 0, 0},{0, 0, 66293, EIF_FALSE, 0, 0, 0}},
{{0, 0, 758, EIF_FALSE, 0, 0, 0},{0, 0, 66294, EIF_FALSE, 0, 0, 0}},
{{0, 0, 759, EIF_FALSE, 0, 0, 0},{0, 0, 66295, EIF_FALSE, 0, 0, 0}},
{{0, 0, 760, EIF_FALSE, 0, 0, 0},{0, 0, 66296, EIF_FALSE, 0, 0, 0}},
{{0, 0, 761, EIF_FALSE, 0, 0, 0},{0, 0, 66297, EIF_FALSE, 0, 0, 0}},
{{0, 0, 762, EIF_FALSE, 0, 0, 0},{0, 0, 66298, EIF_FALSE, 0, 0, 0}},
{{0, 0, 763, EIF_FALSE, 0, 0, 0},{0, 0, 66299, EIF_FALSE, 0, 0, 0}},
{{0, 0, 764, EIF_FALSE, 0, 0, 0},{0, 0, 66300, EIF_FALSE, 0, 0, 0}},
{{0, 0, 765, EIF_FALSE, 0, 0, 0},{0, 0, 66301, EIF_FALSE, 0, 0, 0}},
{{0, 0, 766, EIF_FALSE, 0, 0, 0},{0, 0, 66302, EIF_FALSE, 0, 0, 0}},
{{0, 0, 767, EIF_FALSE, 0, 0, 0},{0, 0, 66303, EIF_FALSE, 0, 0, 0}},
{{0, 0, 768, EIF_FALSE, 0, 0, 0},{0, 0, 66304, EIF_FALSE, 0, 0, 0}},
{{0, 0, 769, EIF_FALSE, 0, 0, 0},{0, 0, 66305, EIF_FALSE, 0, 0, 0}},
{{0, 0, 770, EIF_FALSE, 0, 0, 0},{0, 0, 66306, EIF_FALSE, 0, 0, 0}},
{{0, 0, 771, EIF_FALSE, 0, 0, 0},{0, 0, 66307, EIF_FALSE, 0, 0, 0}},
{{0, 0, 772, EIF_FALSE, 0, 0, 0},{0, 0, 66308, EIF_FALSE, 0, 0, 0}},
{{0, 0, 773, EIF_FALSE, 0, 0, 0},{0, 0, 66309, EIF_FALSE, 0, 0, 0}},
{{0, 0, 774, EIF_FALSE, 0, 0, 0},{0, 0, 66310, EIF_FALSE, 0, 0, 0}},
{{0, 0, 775, EIF_FALSE, 0, 0, 0},{0, 0, 66311, EIF_FALSE, 0, 0, 0}},
{{0, 0, 776, EIF_FALSE, 0, 0, 0},{0, 0, 66312, EIF_FALSE, 0, 0, 0}},
{{0, 0, 777, EIF_FALSE, 0, 0, 0},{0, 0, 66313, EIF_FALSE, 0, 0, 0}},
{{0, 0, 778, EIF_FALSE, 0, 0, 0},{0, 0, 66314, EIF_FALSE, 0, 0, 0}},
{{0, 0, 779, EIF_TRUE, 0, 0, 0},{0, 0, 66315, EIF_TRUE, 0, 0, 0}},
{{0, 0, 780, EIF_FALSE, 0, 0, 0},{0, 0, 66316, EIF_FALSE, 0, 0, 0}},
{{0, 0, 781, EIF_FALSE, 0, 0, 0},{0, 0, 66317, EIF_FALSE, 0, 0, 0}},
{{0, 0, 782, EIF_FALSE, 0, 0, 0},{0, 0, 66318, EIF_FALSE, 0, 0, 0}},
{{0, 0, 783, EIF_FALSE, 0, 0, 0},{0, 0, 66319, EIF_FALSE, 0, 0, 0}},
{{0, 0, 784, EIF_FALSE, 0, 0, 0},{0, 0, 66320, EIF_FALSE, 0, 0, 0}},
{{0, 0, 785, EIF_FALSE, 0, 0, 0},{0, 0, 66321, EIF_FALSE, 0, 0, 0}},
{{0, 0, 786, EIF_FALSE, 0, 0, 0},{0, 0, 66322, EIF_FALSE, 0, 0, 0}},
{{0, 0, 787, EIF_FALSE, 0, 0, 0},{0, 0, 66323, EIF_FALSE, 0, 0, 0}},
{{0, 0, 788, EIF_FALSE, 0, 0, 0},{0, 0, 66324, EIF_FALSE, 0, 0, 0}},
{{0, 0, 789, EIF_FALSE, 0, 0, 0},{0, 0, 66325, EIF_FALSE, 0, 0, 0}},
{{0, 0, 790, EIF_FALSE, 0, 0, 0},{0, 0, 66326, EIF_FALSE, 0, 0, 0}},
{{0, 0, 791, EIF_FALSE, 0, 0, 0},{0, 0, 66327, EIF_FALSE, 0, 0, 0}},
{{0, 0, 792, EIF_FALSE, 0, 0, 0},{0, 0, 66328, EIF_FALSE, 0, 0, 0}},
{{0, 0, 793, EIF_FALSE, 0, 0, 0},{0, 0, 66329, EIF_FALSE, 0, 0, 0}},
{{0, 0, 794, EIF_FALSE, 0, 0, 0},{0, 0, 66330, EIF_FALSE, 0, 0, 0}},
{{0, 0, 795, EIF_FALSE, 0, 0, 0},{0, 0, 66331, EIF_FALSE, 0, 0, 0}},
{{0, 0, 796, EIF_FALSE, 0, 0, 0},{0, 0, 66332, EIF_FALSE, 0, 0, 0}},
{{0, 0, 797, EIF_FALSE, 0, 0, 0},{0, 0, 66333, EIF_FALSE, 0, 0, 0}},
{{0, 0, 798, EIF_FALSE, 0, 0, 0},{0, 0, 66334, EIF_FALSE, 0, 0, 0}},
{{0, 0, 799, EIF_FALSE, 0, 0, 0},{0, 0, 66335, EIF_FALSE, 0, 0, 0}},
{{0, 0, 800, EIF_FALSE, 0, 0, 0},{0, 0, 66336, EIF_FALSE, 0, 0, 0}},
{{0, 0, 801, EIF_FALSE, 0, 0, 0},{0, 0, 66337, EIF_FALSE, 0, 0, 0}},
{{0, 0, 802, EIF_FALSE, 0, 0, 0},{0, 0, 66338, EIF_FALSE, 0, 0, 0}},
{{0, 0, 803, EIF_FALSE, 0, 0, 0},{0, 0, 66339, EIF_FALSE, 0, 0, 0}},
{{0, 0, 804, EIF_FALSE, 0, 0, 0},{0, 0, 66340, EIF_FALSE, 0, 0, 0}},
{{0, 0, 805, EIF_FALSE, 0, 0, 0},{0, 0, 66341, EIF_FALSE, 0, 0, 0}},
{{0, 0, 806, EIF_FALSE, 0, 0, 0},{0, 0, 66342, EIF_FALSE, 0, 0, 0}},
{{0, 0, 807, EIF_FALSE, 0, 0, 0},{0, 0, 66343, EIF_FALSE, 0, 0, 0}},
{{0, 0, 808, EIF_FALSE, 0, 0, 0},{0, 0, 66344, EIF_FALSE, 0, 0, 0}},
{{0, 0, 809, EIF_FALSE, 0, 0, 0},{0, 0, 66345, EIF_FALSE, 0, 0, 0}},
{{0, 0, 810, EIF_FALSE, 0, 0, 0},{0, 0, 66346, EIF_FALSE, 0, 0, 0}},
{{0, 0, 811, EIF_FALSE, 0, 0, 0},{0, 0, 66347, EIF_FALSE, 0, 0, 0}},
{{0, 0, 812, EIF_FALSE, 0, 0, 0},{0, 0, 66348, EIF_FALSE, 0, 0, 0}},
{{0, 0, 813, EIF_FALSE, 0, 0, 0},{0, 0, 66349, EIF_FALSE, 0, 0, 0}},
{{0, 0, 814, EIF_FALSE, 0, 0, 0},{0, 0, 66350, EIF_FALSE, 0, 0, 0}},
{{0, 0, 815, EIF_FALSE, 0, 0, 0},{0, 0, 66351, EIF_FALSE, 0, 0, 0}},
{{0, 0, 816, EIF_FALSE, 0, 0, 0},{0, 0, 66352, EIF_FALSE, 0, 0, 0}},
{{0, 0, 817, EIF_FALSE, 0, 0, 0},{0, 0, 66353, EIF_FALSE, 0, 0, 0}},
{{0, 0, 818, EIF_FALSE, 0, 0, 0},{0, 0, 66354, EIF_FALSE, 0, 0, 0}},
{{0, 0, 819, EIF_FALSE, 0, 0, 0},{0, 0, 66355, EIF_FALSE, 0, 0, 0}},
{{0, 0, 820, EIF_FALSE, 0, 0, 0},{0, 0, 66356, EIF_FALSE, 0, 0, 0}},
{{0, 0, 821, EIF_FALSE, 0, 0, 0},{0, 0, 66357, EIF_FALSE, 0, 0, 0}},
{{0, 0, 822, EIF_FALSE, 0, 0, 0},{0, 0, 66358, EIF_FALSE, 0, 0, 0}},
{{2259, 0, 823, EIF_FALSE, 0, 0, 0},{0, 0, 66359, EIF_FALSE, 0, 0, 0}},
{{0, 0, 824, EIF_FALSE, 0, 0, 0},{0, 0, 66360, EIF_FALSE, 0, 0, 0}},
{{0, 0, 825, EIF_FALSE, 0, 0, 0},{0, 0, 66361, EIF_FALSE, 0, 0, 0}},
{{0, 0, 826, EIF_FALSE, 0, 0, 0},{0, 0, 66362, EIF_FALSE, 0, 0, 0}},
{{0, 0, 827, EIF_FALSE, 0, 0, 0},{0, 0, 66363, EIF_FALSE, 0, 0, 0}},
{{0, 0, 828, EIF_FALSE, 0, 0, 0},{0, 0, 66364, EIF_FALSE, 0, 0, 0}},
{{0, 0, 829, EIF_FALSE, 0, 0, 0},{0, 0, 66365, EIF_FALSE, 0, 0, 0}},
{{0, 0, 830, EIF_FALSE, 0, 0, 0},{0, 0, 66366, EIF_FALSE, 0, 0, 0}},
{{0, 0, 831, EIF_FALSE, 0, 0, 0},{0, 0, 66367, EIF_FALSE, 0, 0, 0}},
{{0, 0, 832, EIF_FALSE, 0, 0, 0},{0, 0, 66368, EIF_FALSE, 0, 0, 0}},
{{0, 0, 833, EIF_FALSE, 0, 0, 0},{0, 0, 66369, EIF_FALSE, 0, 0, 0}},
{{0, 0, 834, EIF_FALSE, 0, 0, 0},{0, 0, 66370, EIF_FALSE, 0, 0, 0}},
{{0, 0, 835, EIF_FALSE, 0, 0, 0},{0, 0, 66371, EIF_FALSE, 0, 0, 0}},
{{0, 0, 836, EIF_FALSE, 0, 0, 0},{0, 0, 66372, EIF_FALSE, 0, 0, 0}},
{{0, 0, 837, EIF_FALSE, 0, 0, 0},{0, 0, 66373, EIF_FALSE, 0, 0, 0}},
{{0, 0, 838, EIF_FALSE, 0, 0, 0},{0, 0, 66374, EIF_FALSE, 0, 0, 0}},
{{0, 0, 839, EIF_FALSE, 0, 0, 0},{0, 0, 66375, EIF_FALSE, 0, 0, 0}},
{{0, 0, 840, EIF_FALSE, 0, 0, 0},{0, 0, 66376, EIF_FALSE, 0, 0, 0}},
{{0, 0, 841, EIF_FALSE, 0, 0, 0},{0, 0, 66377, EIF_FALSE, 0, 0, 0}},
{{0, 0, 842, EIF_FALSE, 0, 0, 0},{0, 0, 66378, EIF_FALSE, 0, 0, 0}},
{{0, 0, 843, EIF_FALSE, 0, 0, 0},{0, 0, 66379, EIF_FALSE, 0, 0, 0}},
{{0, 0, 844, EIF_FALSE, 0, 0, 0},{0, 0, 66380, EIF_FALSE, 0, 0, 0}},
{{0, 0, 845, EIF_FALSE, 0, 0, 0},{0, 0, 66381, EIF_FALSE, 0, 0, 0}},
{{0, 0, 846, EIF_FALSE, 0, 0, 0},{0, 0, 66382, EIF_FALSE, 0, 0, 0}},
{{0, 0, 847, EIF_FALSE, 0, 0, 0},{0, 0, 66383, EIF_FALSE, 0, 0, 0}},
{{0, 0, 848, EIF_FALSE, 0, 0, 0},{0, 0, 66384, EIF_FALSE, 0, 0, 0}},
{{0, 0, 849, EIF_FALSE, 0, 0, 0},{0, 0, 66385, EIF_FALSE, 0, 0, 0}},
{{0, 0, 850, EIF_FALSE, 0, 0, 0},{1443, 0, 66386, EIF_FALSE, 0, 0, 0}},
{{0, 0, 851, EIF_FALSE, 0, 0, 0},{0, 0, 66387, EIF_FALSE, 0, 0, 0}},
{{0, 0, 852, EIF_FALSE, 0, 0, 0},{1902, 0, 66388, EIF_FALSE, 0, 0, 0}},
{{0, 0, 853, EIF_FALSE, 0, 0, 0},{0, 0, 66389, EIF_FALSE, 0, 0, 0}},
{{0, 0, 854, EIF_FALSE, 0, 0, 0},{0, 0, 66390, EIF_FALSE, 0, 0, 0}},
{{0, 0, 855, EIF_TRUE, 0, 0, 0},{0, 0, 66391, EIF_TRUE, 0, 0, 0}},
{{0, 0, 856, EIF_FALSE, 0, 0, 0},{0, 0, 66392, EIF_FALSE, 0, 0, 0}},
{{0, 0, 857, EIF_FALSE, 0, 0, 0},{0, 0, 66393, EIF_FALSE, 0, 0, 0}},
{{0, 0, 858, EIF_FALSE, 0, 0, 0},{0, 0, 66394, EIF_FALSE, 0, 0, 0}},
{{0, 0, 859, EIF_FALSE, 0, 0, 0},{0, 0, 66395, EIF_FALSE, 0, 0, 0}},
{{0, 0, 860, EIF_FALSE, 0, 0, 0},{0, 0, 66396, EIF_FALSE, 0, 0, 0}},
{{0, 0, 861, EIF_FALSE, 0, 0, 0},{0, 0, 66397, EIF_FALSE, 0, 0, 0}},
{{0, 0, 862, EIF_FALSE, 0, 0, 0},{0, 0, 66398, EIF_FALSE, 0, 0, 0}},
{{0, 0, 863, EIF_FALSE, 0, 0, 0},{0, 0, 66399, EIF_FALSE, 0, 0, 0}},
{{0, 0, 864, EIF_FALSE, 0, 0, 0},{0, 0, 66400, EIF_FALSE, 0, 0, 0}},
{{0, 0, 865, EIF_FALSE, 0, 0, 0},{0, 0, 66401, EIF_FALSE, 0, 0, 0}},
{{0, 0, 866, EIF_FALSE, 0, 0, 0},{0, 0, 66402, EIF_FALSE, 0, 0, 0}},
{{0, 0, 867, EIF_FALSE, 0, 0, 0},{0, 0, 66403, EIF_FALSE, 0, 0, 0}},
{{0, 0, 868, EIF_FALSE, 0, 0, 0},{0, 0, 66404, EIF_FALSE, 0, 0, 0}},
{{0, 0, 869, EIF_FALSE, 0, 0, 0},{0, 0, 66405, EIF_FALSE, 0, 0, 0}},
{{0, 0, 870, EIF_FALSE, 0, 0, 0},{0, 0, 66406, EIF_FALSE, 0, 0, 0}},
{{0, 0, 871, EIF_FALSE, 0, 0, 0},{1732, 0, 66407, EIF_FALSE, 0, 0, 0}},
{{0, 0, 872, EIF_FALSE, 0, 0, 0},{0, 0, 66408, EIF_FALSE, 0, 0, 0}},
{{0, 0, 873, EIF_FALSE, 0, 0, 0},{0, 0, 66409, EIF_FALSE, 0, 0, 0}},
{{0, 0, 874, EIF_FALSE, 0, 0, 0},{0, 0, 66410, EIF_FALSE, 0, 0, 0}},
{{0, 0, 875, EIF_FALSE, 0, 0, 0},{0, 0, 66411, EIF_FALSE, 0, 0, 0}},
{{0, 0, 876, EIF_FALSE, 0, 0, 0},{0, 0, 66412, EIF_FALSE, 0, 0, 0}},
{{0, 0, 877, EIF_FALSE, 0, 0, 0},{0, 0, 66413, EIF_FALSE, 0, 0, 0}},
{{0, 0, 878, EIF_FALSE, 0, 0, 0},{0, 0, 66414, EIF_FALSE, 0, 0, 0}},
{{0, 0, 879, EIF_FALSE, 0, 0, 0},{0, 0, 66415, EIF_FALSE, 0, 0, 0}},
{{0, 0, 880, EIF_FALSE, 0, 0, 0},{0, 0, 66416, EIF_FALSE, 0, 0, 0}},
{{0, 0, 881, EIF_FALSE, 0, 0, 0},{0, 0, 66417, EIF_FALSE, 0, 0, 0}},
{{0, 0, 882, EIF_FALSE, 0, 0, 0},{0, 0, 66418, EIF_FALSE, 0, 0, 0}},
{{0, 0, 883, EIF_FALSE, 0, 0, 0},{0, 0, 66419, EIF_FALSE, 0, 0, 0}},
{{0, 0, 884, EIF_FALSE, 0, 0, 0},{0, 0, 66420, EIF_FALSE, 0, 0, 0}},
{{0, 0, 885, EIF_FALSE, 0, 0, 0},{0, 0, 66421, EIF_FALSE, 0, 0, 0}},
{{0, 0, 886, EIF_FALSE, 0, 0, 0},{0, 0, 66422, EIF_FALSE, 0, 0, 0}},
{{0, 0, 887, EIF_FALSE, 0, 0, 0},{0, 0, 66423, EIF_FALSE, 0, 0, 0}},
{{0, 0, 888, EIF_FALSE, 0, 0, 0},{0, 0, 66424, EIF_FALSE, 0, 0, 0}},
{{0, 0, 889, EIF_FALSE, 0, 0, 0},{0, 0, 66425, EIF_FALSE, 0, 0, 0}},
{{0, 0, 890, EIF_FALSE, 0, 0, 0},{0, 0, 66426, EIF_FALSE, 0, 0, 0}},
{{0, 0, 891, EIF_FALSE, 0, 0, 0},{0, 0, 66427, EIF_FALSE, 0, 0, 0}},
{{0, 0, 892, EIF_FALSE, 0, 0, 0},{0, 0, 66428, EIF_FALSE, 0, 0, 0}},
{{0, 0, 893, EIF_FALSE, 0, 0, 0},{0, 0, 66429, EIF_FALSE, 0, 0, 0}},
{{0, 0, 894, EIF_FALSE, 0, 0, 0},{0, 0, 66430, EIF_FALSE, 0, 0, 0}},
{{0, 0, 895, EIF_FALSE, 0, 0, 0},{1903, 0, 66431, EIF_FALSE, 0, 0, 0}},
{{0, 0, 896, EIF_FALSE, 0, 0, 0},{0, 0, 66432, EIF_FALSE, 0, 0, 0}},
{{0, 0, 897, EIF_FALSE, 0, 0, 0},{0, 0, 66433, EIF_FALSE, 0, 0, 0}},
{{0, 0, 898, EIF_FALSE, 0, 0, 0},{0, 0, 66434, EIF_FALSE, 0, 0, 0}},
{{0, 0, 899, EIF_FALSE, 0, 0, 0},{0, 0, 66435, EIF_FALSE, 0, 0, 0}},
{{0, 0, 900, EIF_FALSE, 0, 0, 0},{0, 0, 66436, EIF_FALSE, 0, 0, 0}},
{{0, 0, 901, EIF_FALSE, 0, 0, 0},{0, 0, 66437, EIF_FALSE, 0, 0, 0}},
{{0, 0, 902, EIF_FALSE, 0, 0, 0},{0, 0, 66438, EIF_FALSE, 0, 0, 0}},
{{0, 0, 903, EIF_FALSE, 0, 0, 0},{0, 0, 66439, EIF_FALSE, 0, 0, 0}},
{{0, 0, 904, EIF_FALSE, 0, 0, 0},{0, 0, 66440, EIF_FALSE, 0, 0, 0}},
{{0, 0, 905, EIF_FALSE, 0, 0, 0},{0, 0, 66441, EIF_FALSE, 0, 0, 0}},
{{0, 0, 906, EIF_FALSE, 0, 0, 0},{0, 0, 66442, EIF_FALSE, 0, 0, 0}},
{{0, 0, 907, EIF_FALSE, 0, 0, 0},{0, 0, 66443, EIF_FALSE, 0, 0, 0}},
{{0, 0, 908, EIF_FALSE, 0, 0, 0},{0, 0, 66444, EIF_FALSE, 0, 0, 0}},
{{0, 0, 909, EIF_FALSE, 0, 0, 0},{0, 0, 66445, EIF_FALSE, 0, 0, 0}},
{{0, 0, 910, EIF_FALSE, 0, 0, 0},{0, 0, 66446, EIF_FALSE, 0, 0, 0}},
{{0, 0, 911, EIF_FALSE, 0, 0, 0},{0, 0, 66447, EIF_FALSE, 0, 0, 0}},
{{0, 0, 912, EIF_FALSE, 0, 0, 0},{0, 0, 66448, EIF_FALSE, 0, 0, 0}},
{{0, 0, 913, EIF_FALSE, 0, 0, 0},{0, 0, 66449, EIF_FALSE, 0, 0, 0}},
{{0, 0, 914, EIF_FALSE, 0, 0, 0},{0, 0, 66450, EIF_FALSE, 0, 0, 0}},
{{0, 0, 915, EIF_FALSE, 0, 0, 0},{0, 0, 66451, EIF_FALSE, 0, 0, 0}},
{{0, 0, 916, EIF_FALSE, 0, 0, 0},{0, 0, 66452, EIF_FALSE, 0, 0, 0}},
{{0, 0, 917, EIF_FALSE, 0, 0, 0},{0, 0, 66453, EIF_FALSE, 0, 0, 0}},
{{0, 0, 918, EIF_TRUE, 0, 0, 0},{0, 0, 66454, EIF_TRUE, 0, 0, 0}},
{{0, 0, 919, EIF_FALSE, 0, 0, 0},{0, 0, 66455, EIF_FALSE, 0, 0, 0}},
{{0, 0, 920, EIF_FALSE, 0, 0, 0},{0, 0, 66456, EIF_FALSE, 0, 0, 0}},
{{0, 0, 921, EIF_FALSE, 0, 0, 0},{0, 0, 66457, EIF_FALSE, 0, 0, 0}},
{{0, 0, 922, EIF_FALSE, 0, 0, 0},{0, 0, 66458, EIF_FALSE, 0, 0, 0}},
{{0, 0, 923, EIF_FALSE, 0, 0, 0},{0, 0, 66459, EIF_FALSE, 0, 0, 0}},
{{0, 0, 924, EIF_FALSE, 0, 0, 0},{0, 0, 66460, EIF_FALSE, 0, 0, 0}},
{{0, 0, 925, EIF_FALSE, 0, 0, 0},{0, 0, 66461, EIF_FALSE, 0, 0, 0}},
{{0, 0, 926, EIF_FALSE, 0, 0, 0},{0, 0, 66462, EIF_FALSE, 0, 0, 0}},
{{0, 0, 927, EIF_FALSE, 0, 0, 0},{0, 0, 66463, EIF_FALSE, 0, 0, 0}},
{{0, 0, 928, EIF_FALSE, 0, 0, 0},{0, 0, 66464, EIF_FALSE, 0, 0, 0}},
{{0, 0, 929, EIF_FALSE, 0, 0, 0},{0, 0, 66465, EIF_FALSE, 0, 0, 0}},
{{0, 0, 930, EIF_FALSE, 0, 0, 0},{0, 0, 66466, EIF_FALSE, 0, 0, 0}},
{{0, 0, 931, EIF_FALSE, 0, 0, 0},{0, 0, 66467, EIF_FALSE, 0, 0, 0}},
{{0, 0, 932, EIF_FALSE, 0, 0, 0},{0, 0, 66468, EIF_FALSE, 0, 0, 0}},
{{0, 0, 933, EIF_FALSE, 0, 0, 0},{0, 0, 66469, EIF_FALSE, 0, 0, 0}},
{{0, 0, 934, EIF_FALSE, 0, 0, 0},{0, 0, 66470, EIF_FALSE, 0, 0, 0}},
{{0, 0, 935, EIF_FALSE, 0, 0, 0},{0, 0, 66471, EIF_FALSE, 0, 0, 0}},
{{0, 0, 936, EIF_FALSE, 0, 0, 0},{0, 0, 66472, EIF_FALSE, 0, 0, 0}},
{{0, 0, 937, EIF_FALSE, 0, 0, 0},{0, 0, 66473, EIF_FALSE, 0, 0, 0}},
{{0, 0, 938, EIF_FALSE, 0, 0, 0},{0, 0, 66474, EIF_FALSE, 0, 0, 0}},
{{0, 0, 939, EIF_FALSE, 0, 0, 0},{0, 0, 66475, EIF_FALSE, 0, 0, 0}},
{{0, 0, 940, EIF_FALSE, 0, 0, 0},{0, 0, 66476, EIF_FALSE, 0, 0, 0}},
{{0, 0, 941, EIF_FALSE, 0, 0, 0},{0, 0, 66477, EIF_FALSE, 0, 0, 0}},
{{0, 0, 942, EIF_FALSE, 0, 0, 0},{0, 0, 66478, EIF_FALSE, 0, 0, 0}},
{{0, 0, 943, EIF_FALSE, 0, 0, 0},{0, 0, 66479, EIF_FALSE, 0, 0, 0}},
{{0, 0, 944, EIF_FALSE, 0, 0, 0},{0, 0, 66480, EIF_FALSE, 0, 0, 0}},
{{0, 0, 945, EIF_FALSE, 0, 0, 0},{0, 0, 66481, EIF_FALSE, 0, 0, 0}},
{{0, 0, 946, EIF_FALSE, 0, 0, 0},{0, 0, 66482, EIF_FALSE, 0, 0, 0}},
{{0, 0, 947, EIF_FALSE, 0, 0, 0},{0, 0, 66483, EIF_FALSE, 0, 0, 0}},
{{0, 0, 948, EIF_FALSE, 0, 0, 0},{0, 0, 66484, EIF_FALSE, 0, 0, 0}},
{{0, 0, 949, EIF_FALSE, 0, 0, 0},{0, 0, 66485, EIF_FALSE, 0, 0, 0}},
{{0, 0, 950, EIF_FALSE, 0, 0, 0},{0, 0, 66486, EIF_FALSE, 0, 0, 0}},
{{0, 0, 951, EIF_FALSE, 0, 0, 0},{0, 0, 66487, EIF_FALSE, 0, 0, 0}},
{{0, 0, 952, EIF_FALSE, 0, 0, 0},{0, 0, 66488, EIF_FALSE, 0, 0, 0}},
{{0, 0, 953, EIF_FALSE, 0, 0, 0},{0, 0, 66489, EIF_FALSE, 0, 0, 0}},
{{0, 0, 954, EIF_FALSE, 0, 0, 0},{0, 0, 66490, EIF_FALSE, 0, 0, 0}},
{{0, 0, 955, EIF_FALSE, 0, 0, 0},{0, 0, 66491, EIF_FALSE, 0, 0, 0}},
{{0, 0, 956, EIF_FALSE, 0, 0, 0},{0, 0, 66492, EIF_FALSE, 0, 0, 0}},
{{0, 0, 957, EIF_FALSE, 0, 0, 0},{0, 0, 66493, EIF_FALSE, 0, 0, 0}},
{{0, 0, 958, EIF_FALSE, 0, 0, 0},{0, 0, 66494, EIF_FALSE, 0, 0, 0}},
{{0, 0, 959, EIF_FALSE, 0, 0, 0},{0, 0, 66495, EIF_FALSE, 0, 0, 0}},
{{0, 0, 960, EIF_FALSE, 0, 0, 0},{0, 0, 66496, EIF_FALSE, 0, 0, 0}},
{{0, 0, 961, EIF_FALSE, 0, 0, 0},{0, 0, 66497, EIF_FALSE, 0, 0, 0}},
{{0, 0, 962, EIF_FALSE, 0, 0, 0},{0, 0, 66498, EIF_FALSE, 0, 0, 0}},
{{0, 0, 963, EIF_FALSE, &T963f32, 0, 0},{0, 0, 66499, EIF_FALSE, &T963f32, 0, 0}},
{{0, 0, 964, EIF_FALSE, 0, 0, 0},{0, 0, 66500, EIF_FALSE, 0, 0, 0}},
{{0, 0, 965, EIF_FALSE, 0, 0, 0},{0, 0, 66501, EIF_FALSE, 0, 0, 0}},
{{0, 0, 966, EIF_FALSE, 0, 0, 0},{0, 0, 66502, EIF_FALSE, 0, 0, 0}},
{{0, 0, 967, EIF_FALSE, 0, 0, 0},{0, 0, 66503, EIF_FALSE, 0, 0, 0}},
{{0, 0, 968, EIF_FALSE, 0, 0, 0},{0, 0, 66504, EIF_FALSE, 0, 0, 0}},
{{0, 0, 969, EIF_FALSE, 0, 0, 0},{0, 0, 66505, EIF_FALSE, 0, 0, 0}},
{{0, 0, 970, EIF_FALSE, 0, 0, 0},{0, 0, 66506, EIF_FALSE, 0, 0, 0}},
{{0, 0, 971, EIF_FALSE, 0, 0, 0},{0, 0, 66507, EIF_FALSE, 0, 0, 0}},
{{0, 0, 972, EIF_FALSE, 0, 0, 0},{0, 0, 66508, EIF_FALSE, 0, 0, 0}},
{{0, 0, 973, EIF_FALSE, 0, 0, 0},{0, 0, 66509, EIF_FALSE, 0, 0, 0}},
{{0, 0, 974, EIF_FALSE, 0, 0, 0},{0, 0, 66510, EIF_FALSE, 0, 0, 0}},
{{0, 0, 975, EIF_FALSE, 0, 0, 0},{0, 0, 66511, EIF_FALSE, 0, 0, 0}},
{{0, 0, 976, EIF_FALSE, 0, 0, 0},{0, 0, 66512, EIF_FALSE, 0, 0, 0}},
{{0, 0, 977, EIF_FALSE, 0, 0, 0},{0, 0, 66513, EIF_FALSE, 0, 0, 0}},
{{0, 0, 978, EIF_FALSE, 0, 0, 0},{0, 0, 66514, EIF_FALSE, 0, 0, 0}},
{{0, 0, 979, EIF_FALSE, 0, 0, 0},{0, 0, 66515, EIF_FALSE, 0, 0, 0}},
{{0, 0, 980, EIF_FALSE, 0, 0, 0},{0, 0, 66516, EIF_FALSE, 0, 0, 0}},
{{0, 0, 981, EIF_FALSE, 0, 0, 0},{0, 0, 66517, EIF_FALSE, 0, 0, 0}},
{{0, 0, 982, EIF_FALSE, 0, 0, 0},{0, 0, 66518, EIF_FALSE, 0, 0, 0}},
{{0, 0, 983, EIF_FALSE, 0, 0, 0},{0, 0, 66519, EIF_FALSE, 0, 0, 0}},
{{0, 0, 984, EIF_FALSE, 0, 0, 0},{0, 0, 66520, EIF_FALSE, 0, 0, 0}},
{{0, 0, 985, EIF_FALSE, 0, 0, 0},{0, 0, 66521, EIF_FALSE, 0, 0, 0}},
{{0, 0, 986, EIF_FALSE, 0, 0, 0},{0, 0, 66522, EIF_FALSE, 0, 0, 0}},
{{0, 0, 987, EIF_FALSE, 0, 0, 0},{0, 0, 66523, EIF_FALSE, 0, 0, 0}},
{{0, 0, 988, EIF_FALSE, 0, 0, 0},{0, 0, 66524, EIF_FALSE, 0, 0, 0}},
{{0, 0, 989, EIF_FALSE, 0, 0, 0},{0, 0, 66525, EIF_FALSE, 0, 0, 0}},
{{0, 0, 990, EIF_FALSE, 0, 0, 0},{0, 0, 66526, EIF_FALSE, 0, 0, 0}},
{{0, 0, 991, EIF_FALSE, 0, 0, 0},{0, 0, 66527, EIF_FALSE, 0, 0, 0}},
{{0, 0, 992, EIF_FALSE, 0, 0, 0},{0, 0, 66528, EIF_FALSE, 0, 0, 0}},
{{0, 0, 993, EIF_FALSE, 0, 0, 0},{0, 0, 66529, EIF_FALSE, 0, 0, 0}},
{{0, 0, 994, EIF_FALSE, 0, 0, 0},{0, 0, 66530, EIF_FALSE, 0, 0, 0}},
{{0, 0, 995, EIF_FALSE, 0, 0, 0},{0, 0, 66531, EIF_FALSE, 0, 0, 0}},
{{0, 0, 996, EIF_FALSE, 0, 0, 0},{0, 0, 66532, EIF_FALSE, 0, 0, 0}},
{{0, 0, 997, EIF_FALSE, 0, 0, 0},{0, 0, 66533, EIF_FALSE, 0, 0, 0}},
{{0, 0, 998, EIF_FALSE, 0, 0, 0},{0, 0, 66534, EIF_FALSE, 0, 0, 0}},
{{0, 0, 999, EIF_FALSE, 0, 0, 0},{0, 0, 66535, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1000, EIF_FALSE, 0, 0, 0},{0, 0, 66536, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1001, EIF_FALSE, 0, 0, 0},{0, 0, 66537, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1002, EIF_FALSE, 0, 0, 0},{0, 0, 66538, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1003, EIF_FALSE, 0, 0, 0},{0, 0, 66539, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1004, EIF_FALSE, 0, 0, 0},{0, 0, 66540, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1005, EIF_FALSE, 0, 0, 0},{0, 0, 66541, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1006, EIF_FALSE, 0, 0, 0},{0, 0, 66542, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1007, EIF_FALSE, 0, 0, 0},{0, 0, 66543, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1008, EIF_FALSE, 0, 0, 0},{0, 0, 66544, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1009, EIF_FALSE, 0, 0, 0},{0, 0, 66545, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1010, EIF_FALSE, 0, 0, 0},{0, 0, 66546, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1011, EIF_FALSE, 0, 0, 0},{0, 0, 66547, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1012, EIF_FALSE, 0, 0, 0},{0, 0, 66548, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1013, EIF_FALSE, 0, 0, 0},{0, 0, 66549, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1014, EIF_FALSE, 0, 0, 0},{0, 0, 66550, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1015, EIF_FALSE, 0, 0, 0},{0, 0, 66551, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1016, EIF_FALSE, 0, 0, 0},{0, 0, 66552, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1017, EIF_FALSE, 0, 0, 0},{0, 0, 66553, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1018, EIF_TRUE, 0, 0, 0},{0, 0, 66554, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1019, EIF_FALSE, 0, 0, 0},{0, 0, 66555, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1020, EIF_FALSE, 0, 0, 0},{0, 0, 66556, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1021, EIF_FALSE, 0, 0, 0},{0, 0, 66557, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1022, EIF_FALSE, 0, 0, 0},{0, 0, 66558, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1023, EIF_FALSE, 0, 0, 0},{0, 0, 66559, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1024, EIF_FALSE, 0, 0, 0},{0, 0, 66560, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1025, EIF_FALSE, 0, 0, 0},{0, 0, 66561, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1026, EIF_FALSE, 0, 0, 0},{0, 0, 66562, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1027, EIF_FALSE, 0, 0, 0},{0, 0, 66563, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1028, EIF_FALSE, 0, 0, 0},{0, 0, 66564, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1029, EIF_FALSE, 0, 0, 0},{0, 0, 66565, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1030, EIF_FALSE, 0, 0, 0},{0, 0, 66566, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1031, EIF_FALSE, 0, 0, 0},{0, 0, 66567, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1032, EIF_FALSE, 0, 0, 0},{0, 0, 66568, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1033, EIF_FALSE, 0, 0, 0},{0, 0, 66569, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1034, EIF_FALSE, 0, 0, 0},{0, 0, 66570, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1035, EIF_FALSE, 0, 0, 0},{0, 0, 66571, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1036, EIF_FALSE, 0, 0, 0},{0, 0, 66572, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1037, EIF_FALSE, 0, 0, 0},{0, 0, 66573, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1038, EIF_FALSE, 0, 0, 0},{0, 0, 66574, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1039, EIF_FALSE, 0, 0, 0},{0, 0, 66575, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1040, EIF_FALSE, 0, 0, 0},{0, 0, 66576, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1041, EIF_FALSE, 0, 0, 0},{0, 0, 66577, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1042, EIF_FALSE, 0, 0, 0},{0, 0, 66578, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1043, EIF_FALSE, 0, 0, 0},{0, 0, 66579, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1044, EIF_FALSE, 0, 0, 0},{0, 0, 66580, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1045, EIF_FALSE, 0, 0, 0},{0, 0, 66581, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1046, EIF_FALSE, 0, 0, 0},{0, 0, 66582, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1047, EIF_FALSE, 0, 0, 0},{0, 0, 66583, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1048, EIF_FALSE, 0, 0, 0},{0, 0, 66584, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1049, EIF_FALSE, 0, 0, 0},{0, 0, 66585, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1050, EIF_FALSE, 0, 0, 0},{0, 0, 66586, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1051, EIF_FALSE, 0, 0, 0},{0, 0, 66587, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1052, EIF_FALSE, 0, 0, 0},{0, 0, 66588, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1053, EIF_FALSE, 0, 0, 0},{0, 0, 66589, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1054, EIF_FALSE, 0, 0, 0},{0, 0, 66590, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1055, EIF_FALSE, 0, 0, 0},{0, 0, 66591, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1056, EIF_FALSE, 0, 0, 0},{0, 0, 66592, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1057, EIF_FALSE, 0, 0, 0},{0, 0, 66593, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1058, EIF_FALSE, 0, 0, 0},{0, 0, 66594, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1059, EIF_FALSE, 0, 0, 0},{0, 0, 66595, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1060, EIF_FALSE, 0, 0, 0},{0, 0, 66596, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1061, EIF_FALSE, 0, 0, 0},{0, 0, 66597, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1062, EIF_FALSE, 0, 0, 0},{0, 0, 66598, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1063, EIF_FALSE, 0, 0, 0},{0, 0, 66599, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1064, EIF_FALSE, 0, 0, 0},{0, 0, 66600, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1065, EIF_FALSE, 0, 0, 0},{0, 0, 66601, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1066, EIF_FALSE, 0, 0, 0},{0, 0, 66602, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1067, EIF_FALSE, 0, 0, 0},{0, 0, 66603, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1068, EIF_FALSE, 0, 0, 0},{0, 0, 66604, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1069, EIF_FALSE, 0, 0, 0},{0, 0, 66605, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1070, EIF_FALSE, 0, 0, 0},{0, 0, 66606, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1071, EIF_FALSE, &T1071f32, 0, 0},{0, 0, 66607, EIF_FALSE, &T1071f32, 0, 0}},
{{0, 0, 1072, EIF_FALSE, &T1072f32, 0, 0},{0, 0, 66608, EIF_FALSE, &T1072f32, 0, 0}},
{{0, 0, 1073, EIF_FALSE, 0, 0, 0},{0, 0, 66609, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1074, EIF_TRUE, 0, 0, 0},{0, 0, 66610, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1075, EIF_TRUE, 0, 0, 0},{0, 0, 66611, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1076, EIF_FALSE, 0, 0, 0},{0, 0, 66612, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1077, EIF_FALSE, 0, 0, 0},{0, 0, 66613, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1078, EIF_FALSE, 0, 0, 0},{0, 0, 66614, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1079, EIF_FALSE, 0, 0, 0},{0, 0, 66615, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1080, EIF_FALSE, 0, 0, 0},{0, 0, 66616, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1081, EIF_FALSE, 0, 0, 0},{0, 0, 66617, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1082, EIF_TRUE, 0, 0, 0},{0, 0, 66618, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1083, EIF_FALSE, 0, 0, 0},{0, 0, 66619, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1084, EIF_FALSE, 0, 0, 0},{0, 0, 66620, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1085, EIF_FALSE, 0, 0, 0},{0, 0, 66621, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1086, EIF_FALSE, 0, 0, 0},{0, 0, 66622, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1087, EIF_TRUE, 0, 0, 0},{0, 0, 66623, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1088, EIF_FALSE, 0, 0, 0},{0, 0, 66624, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1089, EIF_FALSE, 0, 0, 0},{0, 0, 66625, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1090, EIF_TRUE, 0, 0, 0},{0, 0, 66626, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1091, EIF_FALSE, 0, 0, 0},{0, 0, 66627, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1092, EIF_TRUE, 0, 0, 0},{0, 0, 66628, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1093, EIF_FALSE, 0, 0, 0},{0, 0, 66629, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1094, EIF_TRUE, 0, 0, 0},{0, 0, 66630, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1095, EIF_FALSE, 0, 0, 0},{0, 0, 66631, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1096, EIF_FALSE, 0, 0, 0},{0, 0, 66632, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1097, EIF_FALSE, 0, 0, 0},{0, 0, 66633, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1098, EIF_FALSE, 0, 0, 0},{0, 0, 66634, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1099, EIF_FALSE, 0, 0, 0},{0, 0, 66635, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1100, EIF_FALSE, 0, 0, 0},{0, 0, 66636, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1101, EIF_TRUE, 0, 0, 0},{0, 0, 66637, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1102, EIF_FALSE, 0, 0, 0},{0, 0, 66638, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1103, EIF_FALSE, 0, 0, 0},{0, 0, 66639, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1104, EIF_FALSE, 0, 0, 0},{0, 0, 66640, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1105, EIF_FALSE, 0, 0, 0},{0, 0, 66641, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1106, EIF_FALSE, 0, 0, 0},{0, 0, 66642, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1107, EIF_TRUE, 0, 0, 0},{0, 0, 66643, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1108, EIF_FALSE, 0, 0, 0},{0, 0, 66644, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1109, EIF_FALSE, 0, 0, 0},{0, 0, 66645, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1110, EIF_TRUE, 0, 0, 0},{0, 0, 66646, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1111, EIF_FALSE, 0, 0, 0},{0, 0, 66647, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1112, EIF_TRUE, 0, 0, 0},{0, 0, 66648, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1113, EIF_FALSE, 0, 0, 0},{0, 0, 66649, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1114, EIF_FALSE, 0, 0, 0},{0, 0, 66650, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1115, EIF_FALSE, 0, 0, 0},{0, 0, 66651, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1116, EIF_FALSE, 0, 0, 0},{0, 0, 66652, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1117, EIF_FALSE, 0, 0, 0},{0, 0, 66653, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1118, EIF_FALSE, 0, 0, 0},{0, 0, 66654, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1119, EIF_FALSE, 0, 0, 0},{0, 0, 66655, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1120, EIF_FALSE, 0, 0, 0},{0, 0, 66656, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1121, EIF_FALSE, 0, 0, 0},{0, 0, 66657, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1122, EIF_FALSE, 0, 0, 0},{0, 0, 66658, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1123, EIF_FALSE, 0, 0, 0},{0, 0, 66659, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1124, EIF_FALSE, 0, 0, 0},{0, 0, 66660, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1125, EIF_FALSE, 0, 0, 0},{0, 0, 66661, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1126, EIF_FALSE, 0, 0, 0},{0, 0, 66662, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1127, EIF_FALSE, 0, 0, 0},{0, 0, 66663, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1128, EIF_FALSE, 0, 0, 0},{0, 0, 66664, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1129, EIF_FALSE, 0, 0, 0},{0, 0, 66665, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1130, EIF_FALSE, 0, 0, 0},{0, 0, 66666, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1131, EIF_FALSE, 0, 0, 0},{0, 0, 66667, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1132, EIF_FALSE, 0, 0, 0},{0, 0, 66668, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1133, EIF_FALSE, 0, 0, 0},{0, 0, 66669, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1134, EIF_FALSE, 0, 0, 0},{0, 0, 66670, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1135, EIF_FALSE, 0, 0, 0},{0, 0, 66671, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1136, EIF_FALSE, 0, 0, 0},{0, 0, 66672, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1137, EIF_FALSE, 0, 0, 0},{0, 0, 66673, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1138, EIF_FALSE, 0, 0, 0},{0, 0, 66674, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1139, EIF_FALSE, 0, 0, 0},{0, 0, 66675, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1140, EIF_FALSE, 0, 0, 0},{0, 0, 66676, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1141, EIF_FALSE, 0, 0, 0},{0, 0, 66677, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1142, EIF_FALSE, 0, 0, 0},{0, 0, 66678, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1143, EIF_FALSE, 0, 0, 0},{0, 0, 66679, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1144, EIF_FALSE, 0, 0, 0},{0, 0, 66680, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1145, EIF_FALSE, 0, 0, 0},{0, 0, 66681, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1146, EIF_FALSE, 0, 0, 0},{0, 0, 66682, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1147, EIF_FALSE, 0, 0, 0},{0, 0, 66683, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1148, EIF_FALSE, 0, 0, 0},{0, 0, 66684, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1149, EIF_FALSE, 0, 0, 0},{0, 0, 66685, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1150, EIF_FALSE, 0, 0, 0},{0, 0, 66686, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1151, EIF_FALSE, 0, 0, 0},{0, 0, 66687, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1152, EIF_FALSE, 0, 0, 0},{0, 0, 66688, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1153, EIF_FALSE, 0, 0, 0},{0, 0, 66689, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1154, EIF_FALSE, 0, 0, 0},{0, 0, 66690, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1155, EIF_FALSE, 0, 0, 0},{0, 0, 66691, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1156, EIF_TRUE, 0, 0, 0},{0, 0, 66692, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1157, EIF_FALSE, 0, 0, 0},{0, 0, 66693, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1158, EIF_TRUE, 0, 0, 0},{0, 0, 66694, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1159, EIF_FALSE, 0, 0, 0},{0, 0, 66695, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1160, EIF_TRUE, 0, 0, 0},{0, 0, 66696, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1161, EIF_FALSE, 0, 0, 0},{0, 0, 66697, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1162, EIF_TRUE, 0, 0, 0},{0, 0, 66698, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1163, EIF_FALSE, 0, 0, 0},{0, 0, 66699, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1164, EIF_TRUE, 0, 0, 0},{0, 0, 66700, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1165, EIF_FALSE, 0, 0, 0},{0, 0, 66701, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1166, EIF_TRUE, 0, 0, 0},{0, 0, 66702, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1167, EIF_FALSE, 0, 0, 0},{0, 0, 66703, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1168, EIF_TRUE, 0, 0, 0},{0, 0, 66704, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1169, EIF_FALSE, 0, 0, 0},{0, 0, 66705, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1170, EIF_FALSE, 0, 0, 0},{0, 0, 66706, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1171, EIF_TRUE, 0, 0, 0},{0, 0, 66707, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1172, EIF_FALSE, 0, 0, 0},{0, 0, 66708, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1173, EIF_FALSE, 0, 0, 0},{0, 0, 66709, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1174, EIF_TRUE, 0, 0, 0},{0, 0, 66710, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1175, EIF_FALSE, 0, 0, 0},{0, 0, 66711, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1176, EIF_FALSE, 0, 0, 0},{0, 0, 66712, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1177, EIF_FALSE, 0, 0, 0},{0, 0, 66713, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1178, EIF_FALSE, 0, 0, 0},{0, 0, 66714, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1179, EIF_TRUE, 0, 0, 0},{0, 0, 66715, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1180, EIF_FALSE, 0, 0, 0},{0, 0, 66716, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1181, EIF_FALSE, 0, 0, 0},{0, 0, 66717, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1182, EIF_TRUE, 0, 0, 0},{0, 0, 66718, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1183, EIF_FALSE, 0, 0, 0},{0, 0, 66719, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1184, EIF_FALSE, 0, 0, 0},{0, 0, 66720, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1185, EIF_FALSE, 0, 0, 0},{0, 0, 66721, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1186, EIF_TRUE, 0, 0, 0},{0, 0, 66722, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1187, EIF_FALSE, 0, 0, 0},{0, 0, 66723, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1188, EIF_FALSE, 0, 0, 0},{0, 0, 66724, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1189, EIF_TRUE, 0, 0, 0},{0, 0, 66725, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1190, EIF_FALSE, 0, 0, 0},{0, 0, 66726, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1191, EIF_TRUE, 0, 0, 0},{0, 0, 66727, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1192, EIF_FALSE, 0, 0, 0},{0, 0, 66728, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1193, EIF_TRUE, 0, 0, 0},{0, 0, 66729, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1194, EIF_FALSE, 0, 0, 0},{0, 0, 66730, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1195, EIF_TRUE, 0, 0, 0},{0, 0, 66731, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1196, EIF_FALSE, 0, 0, 0},{0, 0, 66732, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1197, EIF_TRUE, 0, 0, 0},{0, 0, 66733, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1198, EIF_FALSE, 0, 0, 0},{0, 0, 66734, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1199, EIF_FALSE, 0, 0, 0},{0, 0, 66735, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1200, EIF_FALSE, 0, 0, 0},{0, 0, 66736, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1201, EIF_TRUE, 0, 0, 0},{0, 0, 66737, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1202, EIF_FALSE, 0, 0, 0},{0, 0, 66738, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1203, EIF_FALSE, 0, 0, 0},{0, 0, 66739, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1204, EIF_FALSE, 0, 0, 0},{0, 0, 66740, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1205, EIF_TRUE, 0, 0, 0},{0, 0, 66741, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1206, EIF_FALSE, 0, 0, 0},{0, 0, 66742, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1207, EIF_FALSE, 0, 0, 0},{0, 0, 66743, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1208, EIF_FALSE, 0, 0, 0},{0, 0, 66744, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1209, EIF_FALSE, 0, 0, 0},{0, 0, 66745, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1210, EIF_FALSE, 0, 0, 0},{0, 0, 66746, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1211, EIF_FALSE, 0, 0, 0},{0, 0, 66747, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1212, EIF_FALSE, 0, 0, 0},{0, 0, 66748, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1213, EIF_FALSE, 0, 0, 0},{0, 0, 66749, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1214, EIF_FALSE, 0, 0, 0},{0, 0, 66750, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1215, EIF_FALSE, 0, 0, 0},{0, 0, 66751, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1216, EIF_FALSE, 0, 0, 0},{0, 0, 66752, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1217, EIF_FALSE, 0, 0, 0},{0, 0, 66753, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1218, EIF_FALSE, 0, 0, 0},{0, 0, 66754, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1219, EIF_FALSE, 0, 0, 0},{0, 0, 66755, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1220, EIF_FALSE, 0, 0, 0},{0, 0, 66756, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1221, EIF_FALSE, 0, 0, 0},{0, 0, 66757, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1222, EIF_FALSE, 0, 0, 0},{0, 0, 66758, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1223, EIF_TRUE, 0, 0, 0},{0, 0, 66759, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1224, EIF_FALSE, 0, 0, 0},{0, 0, 66760, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1225, EIF_FALSE, 0, 0, 0},{0, 0, 66761, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1226, EIF_TRUE, 0, 0, 0},{0, 0, 66762, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1227, EIF_FALSE, 0, 0, 0},{0, 0, 66763, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1228, EIF_FALSE, 0, 0, 0},{0, 0, 66764, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1229, EIF_TRUE, 0, 0, 0},{0, 0, 66765, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1230, EIF_FALSE, 0, 0, 0},{0, 0, 66766, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1231, EIF_FALSE, 0, 0, 0},{0, 0, 66767, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1232, EIF_TRUE, 0, 0, 0},{0, 0, 66768, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1233, EIF_FALSE, 0, 0, 0},{0, 0, 66769, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1234, EIF_FALSE, 0, 0, 0},{0, 0, 66770, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1235, EIF_TRUE, 0, 0, 0},{0, 0, 66771, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1236, EIF_FALSE, 0, 0, 0},{0, 0, 66772, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1237, EIF_FALSE, 0, 0, 0},{0, 0, 66773, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1238, EIF_TRUE, 0, 0, 0},{0, 0, 66774, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1239, EIF_FALSE, 0, 0, 0},{0, 0, 66775, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1240, EIF_FALSE, 0, 0, 0},{0, 0, 66776, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1241, EIF_TRUE, 0, 0, 0},{0, 0, 66777, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1242, EIF_FALSE, 0, 0, 0},{0, 0, 66778, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1243, EIF_FALSE, 0, 0, 0},{0, 0, 66779, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1244, EIF_FALSE, 0, 0, 0},{0, 0, 66780, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1245, EIF_TRUE, 0, 0, 0},{0, 0, 66781, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1246, EIF_FALSE, 0, 0, 0},{0, 0, 66782, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1247, EIF_FALSE, 0, 0, 0},{0, 0, 66783, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1248, EIF_FALSE, 0, 0, 0},{0, 0, 66784, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1249, EIF_FALSE, 0, 0, 0},{0, 0, 66785, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1250, EIF_FALSE, 0, 0, 0},{0, 0, 66786, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1251, EIF_FALSE, 0, 0, 0},{0, 0, 66787, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1252, EIF_FALSE, 0, 0, 0},{0, 0, 66788, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1253, EIF_FALSE, 0, 0, 0},{0, 0, 66789, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1254, EIF_TRUE, 0, 0, 0},{0, 0, 66790, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1255, EIF_FALSE, 0, 0, 0},{0, 0, 66791, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1256, EIF_FALSE, 0, 0, 0},{0, 0, 66792, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1257, EIF_FALSE, 0, 0, 0},{0, 0, 66793, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1258, EIF_FALSE, 0, 0, 0},{0, 0, 66794, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1259, EIF_TRUE, 0, 0, 0},{0, 0, 66795, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1260, EIF_FALSE, 0, 0, 0},{0, 0, 66796, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1261, EIF_FALSE, 0, 0, 0},{0, 0, 66797, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1262, EIF_FALSE, 0, 0, 0},{0, 0, 66798, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1263, EIF_FALSE, 0, 0, 0},{0, 0, 66799, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1264, EIF_TRUE, 0, 0, 0},{0, 0, 66800, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1265, EIF_FALSE, 0, 0, 0},{0, 0, 66801, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1266, EIF_FALSE, 0, 0, 0},{0, 0, 66802, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1267, EIF_FALSE, 0, 0, 0},{0, 0, 66803, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1268, EIF_FALSE, 0, 0, 0},{0, 0, 66804, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1269, EIF_FALSE, 0, 0, 0},{0, 0, 66805, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1270, EIF_TRUE, 0, 0, 0},{0, 0, 66806, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1271, EIF_FALSE, 0, 0, 0},{0, 0, 66807, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1272, EIF_FALSE, 0, 0, 0},{0, 0, 66808, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1273, EIF_FALSE, 0, 0, 0},{0, 0, 66809, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1274, EIF_FALSE, 0, 0, 0},{0, 0, 66810, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1275, EIF_FALSE, 0, 0, 0},{0, 0, 66811, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1276, EIF_TRUE, 0, 0, 0},{0, 0, 66812, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1277, EIF_FALSE, 0, 0, 0},{0, 0, 66813, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1278, EIF_FALSE, 0, 0, 0},{0, 0, 66814, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1279, EIF_TRUE, 0, 0, 0},{0, 0, 66815, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1280, EIF_FALSE, 0, 0, 0},{0, 0, 66816, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1281, EIF_FALSE, 0, 0, 0},{0, 0, 66817, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1282, EIF_FALSE, 0, 0, 0},{0, 0, 66818, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1283, EIF_TRUE, 0, 0, 0},{0, 0, 66819, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1284, EIF_FALSE, 0, 0, 0},{0, 0, 66820, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1285, EIF_FALSE, 0, 0, 0},{0, 0, 66821, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1286, EIF_FALSE, 0, 0, 0},{0, 0, 66822, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1287, EIF_FALSE, 0, 0, 0},{0, 0, 66823, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1288, EIF_FALSE, 0, 0, 0},{0, 0, 66824, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1289, EIF_FALSE, 0, 0, 0},{0, 0, 66825, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1290, EIF_FALSE, 0, 0, 0},{0, 0, 66826, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1291, EIF_FALSE, 0, 0, 0},{0, 0, 66827, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1292, EIF_FALSE, 0, 0, 0},{0, 0, 66828, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1293, EIF_FALSE, 0, 0, 0},{0, 0, 66829, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1294, EIF_TRUE, 0, 0, 0},{0, 0, 66830, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1295, EIF_FALSE, 0, 0, 0},{0, 0, 66831, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1296, EIF_FALSE, 0, 0, 0},{0, 0, 66832, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1297, EIF_TRUE, 0, 0, 0},{0, 0, 66833, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1298, EIF_FALSE, 0, 0, 0},{0, 0, 66834, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1299, EIF_FALSE, 0, 0, 0},{0, 0, 66835, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1300, EIF_FALSE, 0, 0, 0},{0, 0, 66836, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1301, EIF_FALSE, 0, 0, 0},{0, 0, 66837, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1302, EIF_TRUE, 0, 0, 0},{0, 0, 66838, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1303, EIF_FALSE, 0, 0, 0},{0, 0, 66839, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1304, EIF_FALSE, 0, 0, 0},{0, 0, 66840, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1305, EIF_TRUE, 0, 0, 0},{0, 0, 66841, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1306, EIF_FALSE, 0, 0, 0},{0, 0, 66842, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1307, EIF_FALSE, 0, 0, 0},{0, 0, 66843, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1308, EIF_TRUE, 0, 0, 0},{0, 0, 66844, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1309, EIF_FALSE, 0, 0, 0},{0, 0, 66845, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1310, EIF_FALSE, 0, 0, 0},{0, 0, 66846, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1311, EIF_FALSE, 0, 0, 0},{0, 0, 66847, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1312, EIF_TRUE, 0, 0, 0},{0, 0, 66848, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1313, EIF_FALSE, 0, 0, 0},{0, 0, 66849, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1314, EIF_FALSE, 0, 0, 0},{0, 0, 66850, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1315, EIF_FALSE, 0, 0, 0},{0, 0, 66851, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1316, EIF_TRUE, 0, 0, 0},{0, 0, 66852, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1317, EIF_FALSE, 0, 0, 0},{0, 0, 66853, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1318, EIF_TRUE, 0, 0, 0},{0, 0, 66854, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1319, EIF_FALSE, 0, 0, 0},{0, 0, 66855, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1320, EIF_FALSE, 0, 0, 0},{0, 0, 66856, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1321, EIF_FALSE, 0, 0, 0},{0, 0, 66857, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1322, EIF_FALSE, 0, 0, 0},{0, 0, 66858, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1323, EIF_FALSE, 0, 0, 0},{0, 0, 66859, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1324, EIF_FALSE, 0, 0, 0},{0, 0, 66860, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1325, EIF_FALSE, 0, 0, 0},{0, 0, 66861, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1326, EIF_FALSE, 0, 0, 0},{0, 0, 66862, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1327, EIF_FALSE, 0, 0, 0},{0, 0, 66863, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1328, EIF_FALSE, 0, 0, 0},{0, 0, 66864, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1329, EIF_FALSE, 0, 0, 0},{0, 0, 66865, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1330, EIF_FALSE, 0, 0, 0},{0, 0, 66866, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1331, EIF_FALSE, 0, 0, 0},{0, 0, 66867, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1332, EIF_TRUE, 0, 0, 0},{0, 0, 66868, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1333, EIF_FALSE, 0, 0, 0},{0, 0, 66869, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1334, EIF_FALSE, 0, 0, 0},{0, 0, 66870, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1335, EIF_FALSE, 0, 0, 0},{0, 0, 66871, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1336, EIF_TRUE, 0, 0, 0},{0, 0, 66872, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1337, EIF_FALSE, 0, 0, 0},{0, 0, 66873, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1338, EIF_FALSE, 0, 0, 0},{0, 0, 66874, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1339, EIF_FALSE, 0, 0, 0},{0, 0, 66875, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1340, EIF_TRUE, 0, 0, 0},{0, 0, 66876, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1341, EIF_FALSE, 0, 0, 0},{0, 0, 66877, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1342, EIF_FALSE, 0, 0, 0},{0, 0, 66878, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1343, EIF_TRUE, 0, 0, 0},{0, 0, 66879, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1344, EIF_FALSE, 0, 0, 0},{0, 0, 66880, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1345, EIF_FALSE, 0, 0, 0},{0, 0, 66881, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1346, EIF_TRUE, 0, 0, 0},{0, 0, 66882, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1347, EIF_FALSE, 0, 0, 0},{0, 0, 66883, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1348, EIF_TRUE, 0, 0, 0},{0, 0, 66884, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1349, EIF_FALSE, 0, 0, 0},{0, 0, 66885, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1350, EIF_TRUE, 0, 0, 0},{0, 0, 66886, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1351, EIF_TRUE, 0, 0, 0},{0, 0, 66887, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1352, EIF_TRUE, 0, 0, 0},{0, 0, 66888, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1353, EIF_FALSE, 0, 0, 0},{0, 0, 66889, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1354, EIF_FALSE, 0, 0, 0},{0, 0, 66890, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1355, EIF_TRUE, 0, 0, 0},{0, 0, 66891, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1356, EIF_FALSE, 0, 0, 0},{0, 0, 66892, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1357, EIF_FALSE, 0, 0, 0},{0, 0, 66893, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1358, EIF_TRUE, 0, 0, 0},{0, 0, 66894, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1359, EIF_TRUE, 0, 0, 0},{0, 0, 66895, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1360, EIF_FALSE, 0, 0, 0},{0, 0, 66896, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1361, EIF_FALSE, 0, 0, 0},{0, 0, 66897, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1362, EIF_FALSE, 0, 0, 0},{0, 0, 66898, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1363, EIF_FALSE, 0, 0, 0},{0, 0, 66899, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1364, EIF_FALSE, 0, 0, 0},{0, 0, 66900, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1365, EIF_FALSE, 0, 0, 0},{0, 0, 66901, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1366, EIF_TRUE, 0, 0, 0},{0, 0, 66902, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1367, EIF_FALSE, 0, 0, 0},{0, 0, 66903, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1368, EIF_FALSE, 0, 0, 0},{0, 0, 66904, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1369, EIF_FALSE, 0, 0, 0},{0, 0, 66905, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1370, EIF_FALSE, 0, 0, 0},{0, 0, 66906, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1371, EIF_TRUE, 0, 0, 0},{0, 0, 66907, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1372, EIF_FALSE, 0, 0, 0},{0, 0, 66908, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1373, EIF_FALSE, 0, 0, 0},{0, 0, 66909, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1374, EIF_FALSE, 0, 0, 0},{0, 0, 66910, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1375, EIF_FALSE, 0, 0, 0},{0, 0, 66911, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1376, EIF_TRUE, 0, 0, 0},{0, 0, 66912, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1377, EIF_FALSE, 0, 0, 0},{0, 0, 66913, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1378, EIF_TRUE, 0, 0, 0},{0, 0, 66914, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1379, EIF_FALSE, 0, 0, 0},{0, 0, 66915, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1380, EIF_FALSE, 0, 0, 0},{0, 0, 66916, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1381, EIF_FALSE, 0, 0, 0},{0, 0, 66917, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1382, EIF_TRUE, 0, 0, 0},{0, 0, 66918, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1383, EIF_FALSE, 0, 0, 0},{0, 0, 66919, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1384, EIF_FALSE, 0, 0, 0},{0, 0, 66920, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1385, EIF_TRUE, 0, 0, 0},{0, 0, 66921, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1386, EIF_FALSE, 0, 0, 0},{0, 0, 66922, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1387, EIF_TRUE, 0, 0, 0},{0, 0, 66923, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1388, EIF_FALSE, 0, 0, 0},{0, 0, 66924, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1389, EIF_FALSE, 0, 0, 0},{0, 0, 66925, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1390, EIF_FALSE, 0, 0, 0},{0, 0, 66926, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1391, EIF_TRUE, 0, 0, 0},{0, 0, 66927, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1392, EIF_FALSE, 0, 0, 0},{0, 0, 66928, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1393, EIF_FALSE, 0, 0, 0},{0, 0, 66929, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1394, EIF_TRUE, 0, 0, 0},{0, 0, 66930, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1395, EIF_FALSE, 0, 0, 0},{0, 0, 66931, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1396, EIF_TRUE, 0, 0, 0},{0, 0, 66932, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1397, EIF_FALSE, 0, 0, 0},{0, 0, 66933, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1398, EIF_FALSE, 0, 0, 0},{0, 0, 66934, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1399, EIF_TRUE, 0, 0, 0},{0, 0, 66935, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1400, EIF_FALSE, 0, 0, 0},{0, 0, 66936, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1401, EIF_FALSE, 0, 0, 0},{0, 0, 66937, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1402, EIF_FALSE, 0, 0, 0},{0, 0, 66938, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1403, EIF_FALSE, 0, 0, 0},{0, 0, 66939, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1404, EIF_FALSE, 0, 0, 0},{0, 0, 66940, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1405, EIF_FALSE, 0, 0, 0},{0, 0, 66941, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1406, EIF_TRUE, 0, 0, 0},{0, 0, 66942, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1407, EIF_FALSE, 0, 0, 0},{0, 0, 66943, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1408, EIF_FALSE, 0, 0, 0},{0, 0, 66944, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1409, EIF_FALSE, 0, 0, 0},{0, 0, 66945, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1410, EIF_FALSE, 0, 0, 0},{0, 0, 66946, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1411, EIF_FALSE, 0, 0, 0},{0, 0, 66947, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1412, EIF_FALSE, 0, 0, 0},{0, 0, 66948, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1413, EIF_TRUE, 0, 0, 0},{0, 0, 66949, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1414, EIF_FALSE, 0, 0, 0},{0, 0, 66950, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1415, EIF_FALSE, 0, 0, 0},{0, 0, 66951, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1416, EIF_TRUE, 0, 0, 0},{0, 0, 66952, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1417, EIF_FALSE, 0, 0, 0},{0, 0, 66953, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1418, EIF_FALSE, 0, 0, 0},{0, 0, 66954, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1419, EIF_FALSE, 0, 0, 0},{0, 0, 66955, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1420, EIF_TRUE, 0, 0, 0},{0, 0, 66956, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1421, EIF_FALSE, 0, 0, 0},{0, 0, 66957, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1422, EIF_FALSE, 0, 0, 0},{0, 0, 66958, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1423, EIF_TRUE, 0, 0, 0},{0, 0, 66959, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1424, EIF_FALSE, 0, 0, 0},{0, 0, 66960, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1425, EIF_FALSE, 0, 0, 0},{0, 0, 66961, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1426, EIF_FALSE, 0, 0, 0},{0, 0, 66962, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1427, EIF_TRUE, 0, 0, 0},{0, 0, 66963, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1428, EIF_FALSE, 0, 0, 0},{0, 0, 66964, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1429, EIF_FALSE, 0, 0, 0},{0, 0, 66965, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1430, EIF_TRUE, 0, 0, 0},{0, 0, 66966, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1431, EIF_FALSE, 0, 0, 0},{0, 0, 66967, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1432, EIF_FALSE, 0, 0, 0},{0, 0, 66968, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1433, EIF_FALSE, 0, 0, 0},{0, 0, 66969, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1434, EIF_TRUE, 0, 0, 0},{0, 0, 66970, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1435, EIF_FALSE, 0, 0, 0},{0, 0, 66971, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1436, EIF_FALSE, 0, 0, 0},{0, 0, 66972, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1437, EIF_TRUE, 0, 0, 0},{0, 0, 66973, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1438, EIF_FALSE, 0, 0, 0},{0, 0, 66974, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1439, EIF_FALSE, 0, 0, 0},{0, 0, 66975, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1440, EIF_FALSE, 0, 0, 0},{0, 0, 66976, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1441, EIF_FALSE, 0, 0, 0},{0, 0, 66977, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1442, EIF_FALSE, 0, 0, 0},{0, 0, 66978, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1443, EIF_FALSE, 0, 0, 0},{0, 0, 66979, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1444, EIF_FALSE, 0, 0, 0},{0, 0, 66980, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1445, EIF_FALSE, 0, 0, 0},{0, 0, 66981, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1446, EIF_FALSE, 0, 0, 0},{0, 0, 66982, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1447, EIF_FALSE, 0, 0, 0},{0, 0, 66983, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1448, EIF_TRUE, 0, 0, 0},{0, 0, 66984, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1449, EIF_FALSE, 0, 0, 0},{0, 0, 66985, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1450, EIF_FALSE, 0, 0, 0},{0, 0, 66986, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1451, EIF_TRUE, 0, 0, 0},{0, 0, 66987, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1452, EIF_FALSE, 0, 0, 0},{0, 0, 66988, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1453, EIF_FALSE, 0, 0, 0},{0, 0, 66989, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1454, EIF_FALSE, 0, 0, 0},{0, 0, 66990, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1455, EIF_FALSE, 0, 0, 0},{0, 0, 66991, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1456, EIF_FALSE, 0, 0, 0},{0, 0, 66992, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1457, EIF_FALSE, 0, 0, 0},{0, 0, 66993, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1458, EIF_FALSE, 0, 0, 0},{0, 0, 66994, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1459, EIF_FALSE, 0, 0, 0},{0, 0, 66995, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1460, EIF_FALSE, 0, 0, 0},{0, 0, 66996, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1461, EIF_FALSE, 0, 0, 0},{0, 0, 66997, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1462, EIF_FALSE, 0, 0, 0},{0, 0, 66998, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1463, EIF_FALSE, 0, 0, 0},{0, 0, 66999, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1464, EIF_FALSE, 0, 0, 0},{0, 0, 67000, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1465, EIF_FALSE, 0, 0, 0},{0, 0, 67001, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1466, EIF_FALSE, 0, 0, 0},{0, 0, 67002, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1467, EIF_FALSE, 0, 0, 0},{0, 0, 67003, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1468, EIF_FALSE, 0, 0, 0},{0, 0, 67004, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1469, EIF_FALSE, 0, 0, 0},{0, 0, 67005, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1470, EIF_FALSE, 0, 0, 0},{0, 0, 67006, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1471, EIF_FALSE, 0, 0, 0},{0, 0, 67007, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1472, EIF_FALSE, 0, 0, 0},{0, 0, 67008, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1473, EIF_FALSE, 0, 0, 0},{0, 0, 67009, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1474, EIF_FALSE, 0, 0, 0},{0, 0, 67010, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1475, EIF_TRUE, 0, 0, 0},{0, 0, 67011, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1476, EIF_FALSE, 0, 0, 0},{0, 0, 67012, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1477, EIF_FALSE, 0, 0, 0},{0, 0, 67013, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1478, EIF_TRUE, 0, 0, 0},{0, 0, 67014, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1479, EIF_FALSE, 0, 0, 0},{0, 0, 67015, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1480, EIF_FALSE, 0, 0, 0},{0, 0, 67016, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1481, EIF_FALSE, 0, 0, 0},{0, 0, 67017, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1482, EIF_FALSE, 0, 0, 0},{0, 0, 67018, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1483, EIF_FALSE, 0, 0, 0},{0, 0, 67019, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1484, EIF_FALSE, 0, 0, 0},{0, 0, 67020, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1485, EIF_FALSE, 0, 0, 0},{0, 0, 67021, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1486, EIF_FALSE, 0, 0, 0},{0, 0, 67022, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1487, EIF_FALSE, 0, 0, 0},{0, 0, 67023, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1488, EIF_FALSE, 0, 0, 0},{0, 0, 67024, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1489, EIF_FALSE, 0, 0, 0},{0, 0, 67025, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1490, EIF_FALSE, 0, 0, 0},{0, 0, 67026, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1491, EIF_FALSE, 0, 0, 0},{0, 0, 67027, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1492, EIF_FALSE, 0, 0, 0},{0, 0, 67028, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1493, EIF_FALSE, 0, 0, 0},{0, 0, 67029, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1494, EIF_FALSE, 0, 0, 0},{0, 0, 67030, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1495, EIF_FALSE, 0, 0, 0},{0, 0, 67031, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1496, EIF_FALSE, 0, 0, 0},{0, 0, 67032, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1497, EIF_FALSE, 0, 0, 0},{0, 0, 67033, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1498, EIF_FALSE, 0, 0, 0},{0, 0, 67034, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1499, EIF_FALSE, 0, 0, 0},{0, 0, 67035, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1500, EIF_FALSE, 0, 0, 0},{0, 0, 67036, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1501, EIF_FALSE, 0, 0, 0},{0, 0, 67037, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1502, EIF_FALSE, 0, 0, 0},{0, 0, 67038, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1503, EIF_FALSE, 0, 0, 0},{0, 0, 67039, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1504, EIF_FALSE, 0, 0, 0},{0, 0, 67040, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1505, EIF_FALSE, 0, 0, 0},{0, 0, 67041, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1506, EIF_FALSE, 0, 0, 0},{0, 0, 67042, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1507, EIF_FALSE, 0, 0, 0},{0, 0, 67043, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1508, EIF_FALSE, 0, 0, 0},{0, 0, 67044, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1509, EIF_FALSE, 0, 0, 0},{0, 0, 67045, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1510, EIF_FALSE, 0, 0, 0},{0, 0, 67046, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1511, EIF_FALSE, 0, 0, 0},{0, 0, 67047, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1512, EIF_FALSE, 0, 0, 0},{0, 0, 67048, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1513, EIF_FALSE, 0, 0, 0},{0, 0, 67049, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1514, EIF_FALSE, 0, 0, 0},{0, 0, 67050, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1515, EIF_FALSE, 0, 0, 0},{0, 0, 67051, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1516, EIF_FALSE, 0, 0, 0},{0, 0, 67052, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1517, EIF_FALSE, 0, 0, 0},{0, 0, 67053, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1518, EIF_FALSE, 0, 0, 0},{0, 0, 67054, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1519, EIF_FALSE, 0, 0, 0},{0, 0, 67055, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1520, EIF_FALSE, 0, 0, 0},{0, 0, 67056, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1521, EIF_FALSE, 0, 0, 0},{0, 0, 67057, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1522, EIF_FALSE, 0, 0, 0},{0, 0, 67058, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1523, EIF_FALSE, 0, 0, 0},{0, 0, 67059, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1524, EIF_FALSE, 0, 0, 0},{0, 0, 67060, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1525, EIF_FALSE, 0, 0, 0},{0, 0, 67061, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1526, EIF_FALSE, 0, 0, 0},{0, 0, 67062, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1527, EIF_FALSE, 0, 0, 0},{0, 0, 67063, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1528, EIF_FALSE, 0, 0, 0},{0, 0, 67064, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1529, EIF_FALSE, 0, 0, 0},{0, 0, 67065, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1530, EIF_FALSE, 0, 0, 0},{0, 0, 67066, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1531, EIF_FALSE, 0, 0, 0},{0, 0, 67067, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1532, EIF_FALSE, 0, 0, 0},{0, 0, 67068, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1533, EIF_FALSE, 0, 0, 0},{0, 0, 67069, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1534, EIF_FALSE, 0, 0, 0},{0, 0, 67070, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1535, EIF_FALSE, 0, 0, 0},{0, 0, 67071, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1536, EIF_FALSE, 0, 0, 0},{0, 0, 67072, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1537, EIF_FALSE, 0, 0, 0},{0, 0, 67073, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1538, EIF_FALSE, 0, 0, 0},{0, 0, 67074, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1539, EIF_FALSE, 0, 0, 0},{0, 0, 67075, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1540, EIF_FALSE, 0, 0, 0},{0, 0, 67076, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1541, EIF_FALSE, 0, 0, 0},{0, 0, 67077, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1542, EIF_FALSE, 0, 0, 0},{0, 0, 67078, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1543, EIF_FALSE, 0, 0, 0},{0, 0, 67079, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1544, EIF_FALSE, 0, 0, 0},{0, 0, 67080, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1545, EIF_FALSE, 0, 0, 0},{0, 0, 67081, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1546, EIF_FALSE, 0, 0, 0},{0, 0, 67082, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1547, EIF_FALSE, 0, 0, 0},{0, 0, 67083, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1548, EIF_FALSE, 0, 0, 0},{0, 0, 67084, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1549, EIF_FALSE, 0, 0, 0},{0, 0, 67085, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1550, EIF_FALSE, 0, 0, 0},{0, 0, 67086, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1551, EIF_FALSE, 0, 0, 0},{0, 0, 67087, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1552, EIF_FALSE, 0, 0, 0},{0, 0, 67088, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1553, EIF_FALSE, 0, 0, 0},{0, 0, 67089, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1554, EIF_FALSE, 0, 0, 0},{0, 0, 67090, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1555, EIF_FALSE, 0, 0, 0},{0, 0, 67091, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1556, EIF_FALSE, 0, 0, 0},{0, 0, 67092, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1557, EIF_FALSE, 0, 0, 0},{0, 0, 67093, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1558, EIF_FALSE, 0, 0, 0},{0, 0, 67094, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1559, EIF_FALSE, 0, 0, 0},{0, 0, 67095, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1560, EIF_FALSE, 0, 0, 0},{0, 0, 67096, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1561, EIF_FALSE, 0, 0, 0},{0, 0, 67097, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1562, EIF_FALSE, 0, 0, 0},{0, 0, 67098, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1563, EIF_FALSE, 0, 0, 0},{0, 0, 67099, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1564, EIF_FALSE, 0, 0, 0},{0, 0, 67100, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1565, EIF_FALSE, 0, 0, 0},{0, 0, 67101, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1566, EIF_FALSE, 0, 0, 0},{0, 0, 67102, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1567, EIF_FALSE, 0, 0, 0},{0, 0, 67103, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1568, EIF_FALSE, 0, 0, 0},{0, 0, 67104, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1569, EIF_FALSE, 0, 0, 0},{0, 0, 67105, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1570, EIF_FALSE, 0, 0, 0},{0, 0, 67106, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1571, EIF_FALSE, 0, 0, 0},{0, 0, 67107, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1572, EIF_FALSE, 0, 0, 0},{0, 0, 67108, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1573, EIF_TRUE, 0, 0, 0},{0, 0, 67109, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1574, EIF_FALSE, 0, 0, 0},{0, 0, 67110, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1575, EIF_FALSE, 0, 0, 0},{0, 0, 67111, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1576, EIF_TRUE, 0, 0, 0},{0, 0, 67112, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1577, EIF_FALSE, 0, 0, 0},{0, 0, 67113, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1578, EIF_FALSE, 0, 0, 0},{0, 0, 67114, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1579, EIF_FALSE, 0, 0, 0},{0, 0, 67115, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1580, EIF_FALSE, 0, 0, 0},{0, 0, 67116, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1581, EIF_FALSE, 0, 0, 0},{0, 0, 67117, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1582, EIF_FALSE, 0, 0, 0},{0, 0, 67118, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1583, EIF_FALSE, 0, 0, 0},{0, 0, 67119, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1584, EIF_FALSE, 0, 0, 0},{0, 0, 67120, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1585, EIF_FALSE, 0, 0, 0},{0, 0, 67121, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1586, EIF_FALSE, 0, 0, 0},{0, 0, 67122, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1587, EIF_FALSE, 0, 0, 0},{0, 0, 67123, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1588, EIF_FALSE, 0, 0, 0},{0, 0, 67124, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1589, EIF_FALSE, 0, 0, 0},{0, 0, 67125, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1590, EIF_FALSE, 0, 0, 0},{0, 0, 67126, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1591, EIF_FALSE, 0, 0, 0},{0, 0, 67127, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1592, EIF_FALSE, 0, 0, 0},{0, 0, 67128, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1593, EIF_FALSE, 0, 0, 0},{0, 0, 67129, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1594, EIF_FALSE, 0, 0, 0},{0, 0, 67130, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1595, EIF_FALSE, 0, 0, 0},{0, 0, 67131, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1596, EIF_FALSE, 0, 0, 0},{0, 0, 67132, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1597, EIF_TRUE, 0, 0, 0},{0, 0, 67133, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1598, EIF_FALSE, 0, 0, 0},{0, 0, 67134, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1599, EIF_TRUE, 0, 0, 0},{0, 0, 67135, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1600, EIF_FALSE, 0, 0, 0},{0, 0, 67136, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1601, EIF_FALSE, 0, 0, 0},{0, 0, 67137, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1602, EIF_FALSE, 0, 0, 0},{0, 0, 67138, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1603, EIF_TRUE, 0, 0, 0},{0, 0, 67139, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1604, EIF_FALSE, 0, 0, 0},{0, 0, 67140, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1605, EIF_TRUE, 0, 0, 0},{0, 0, 67141, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1606, EIF_FALSE, 0, 0, 0},{0, 0, 67142, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1607, EIF_FALSE, 0, 0, 0},{0, 0, 67143, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1608, EIF_TRUE, 0, 0, 0},{0, 0, 67144, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1609, EIF_FALSE, 0, 0, 0},{0, 0, 67145, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1610, EIF_FALSE, 0, 0, 0},{0, 0, 67146, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1611, EIF_TRUE, 0, 0, 0},{0, 0, 67147, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1612, EIF_FALSE, 0, 0, 0},{0, 0, 67148, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1613, EIF_TRUE, 0, 0, 0},{0, 0, 67149, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1614, EIF_FALSE, 0, 0, 0},{0, 0, 67150, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1615, EIF_TRUE, 0, 0, 0},{0, 0, 67151, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1616, EIF_FALSE, 0, 0, 0},{0, 0, 67152, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1617, EIF_TRUE, 0, 0, 0},{0, 0, 67153, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1618, EIF_FALSE, 0, 0, 0},{0, 0, 67154, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1619, EIF_FALSE, 0, 0, 0},{0, 0, 67155, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1620, EIF_TRUE, 0, 0, 0},{0, 0, 67156, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1621, EIF_FALSE, 0, 0, 0},{0, 0, 67157, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1622, EIF_TRUE, 0, 0, 0},{0, 0, 67158, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1623, EIF_FALSE, 0, 0, 0},{0, 0, 67159, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1624, EIF_FALSE, 0, 0, 0},{0, 0, 67160, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1625, EIF_FALSE, 0, 0, 0},{0, 0, 67161, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1626, EIF_TRUE, 0, 0, 0},{0, 0, 67162, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1627, EIF_FALSE, 0, 0, 0},{0, 0, 67163, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1628, EIF_FALSE, 0, 0, 0},{0, 0, 67164, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1629, EIF_TRUE, 0, 0, 0},{0, 0, 67165, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1630, EIF_FALSE, 0, 0, 0},{0, 0, 67166, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1631, EIF_TRUE, 0, 0, 0},{0, 0, 67167, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1632, EIF_FALSE, 0, 0, 0},{0, 0, 67168, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1633, EIF_TRUE, 0, 0, 0},{0, 0, 67169, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1634, EIF_FALSE, 0, 0, 0},{0, 0, 67170, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1635, EIF_FALSE, 0, 0, 0},{0, 0, 67171, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1636, EIF_TRUE, 0, 0, 0},{0, 0, 67172, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1637, EIF_FALSE, 0, 0, 0},{0, 0, 67173, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1638, EIF_TRUE, 0, 0, 0},{0, 0, 67174, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1639, EIF_FALSE, 0, 0, 0},{0, 0, 67175, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1640, EIF_TRUE, 0, 0, 0},{0, 0, 67176, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1641, EIF_FALSE, 0, 0, 0},{0, 0, 67177, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1642, EIF_FALSE, 0, 0, 0},{0, 0, 67178, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1643, EIF_FALSE, 0, 0, 0},{0, 0, 67179, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1644, EIF_FALSE, 0, 0, 0},{0, 0, 67180, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1645, EIF_FALSE, 0, 0, 0},{0, 0, 67181, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1646, EIF_FALSE, 0, 0, 0},{0, 0, 67182, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1647, EIF_FALSE, 0, 0, 0},{0, 0, 67183, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1648, EIF_FALSE, 0, 0, 0},{0, 0, 67184, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1649, EIF_FALSE, 0, 0, 0},{0, 0, 67185, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1650, EIF_FALSE, 0, 0, 0},{0, 0, 67186, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1651, EIF_FALSE, 0, 0, 0},{0, 0, 67187, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1652, EIF_FALSE, 0, 0, 0},{0, 0, 67188, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1653, EIF_FALSE, 0, 0, 0},{0, 0, 67189, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1654, EIF_FALSE, 0, 0, 0},{0, 0, 67190, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1655, EIF_FALSE, 0, 0, 0},{0, 0, 67191, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1656, EIF_FALSE, 0, 0, 0},{0, 0, 67192, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1657, EIF_FALSE, 0, 0, 0},{0, 0, 67193, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1658, EIF_FALSE, 0, 0, 0},{0, 0, 67194, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1659, EIF_FALSE, 0, 0, 0},{0, 0, 67195, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1660, EIF_FALSE, 0, 0, 0},{0, 0, 67196, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1661, EIF_FALSE, 0, 0, 0},{0, 0, 67197, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1662, EIF_FALSE, 0, 0, 0},{0, 0, 67198, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1663, EIF_TRUE, 0, 0, 0},{0, 0, 67199, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1664, EIF_FALSE, 0, 0, 0},{0, 0, 67200, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1665, EIF_FALSE, 0, 0, 0},{0, 0, 67201, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1666, EIF_FALSE, 0, 0, 0},{0, 0, 67202, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1667, EIF_FALSE, 0, 0, 0},{0, 0, 67203, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1668, EIF_FALSE, 0, 0, 0},{0, 0, 67204, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1669, EIF_FALSE, 0, 0, 0},{0, 0, 67205, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1670, EIF_FALSE, 0, 0, 0},{0, 0, 67206, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1671, EIF_FALSE, 0, 0, 0},{0, 0, 67207, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1672, EIF_FALSE, 0, 0, 0},{0, 0, 67208, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1673, EIF_FALSE, 0, 0, 0},{0, 0, 67209, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1674, EIF_TRUE, 0, 0, 0},{0, 0, 67210, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1675, EIF_FALSE, 0, 0, 0},{0, 0, 67211, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1676, EIF_FALSE, 0, 0, 0},{0, 0, 67212, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1677, EIF_FALSE, 0, 0, 0},{0, 0, 67213, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1678, EIF_FALSE, 0, 0, 0},{0, 0, 67214, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1679, EIF_FALSE, 0, 0, 0},{0, 0, 67215, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1680, EIF_FALSE, 0, 0, 0},{0, 0, 67216, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1681, EIF_FALSE, 0, 0, 0},{0, 0, 67217, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1682, EIF_FALSE, 0, 0, 0},{0, 0, 67218, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1683, EIF_TRUE, 0, 0, 0},{0, 0, 67219, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1684, EIF_FALSE, 0, 0, 0},{0, 0, 67220, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1685, EIF_FALSE, 0, 0, 0},{0, 0, 67221, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1686, EIF_TRUE, 0, 0, 0},{0, 0, 67222, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1687, EIF_FALSE, 0, 0, 0},{0, 0, 67223, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1688, EIF_FALSE, 0, 0, 0},{0, 0, 67224, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1689, EIF_TRUE, 0, 0, 0},{0, 0, 67225, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1690, EIF_FALSE, 0, 0, 0},{0, 0, 67226, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1691, EIF_FALSE, 0, 0, 0},{0, 0, 67227, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1692, EIF_FALSE, 0, 0, 0},{0, 0, 67228, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1693, EIF_FALSE, 0, 0, 0},{0, 0, 67229, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1694, EIF_FALSE, 0, 0, 0},{0, 0, 67230, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1695, EIF_FALSE, 0, 0, 0},{0, 0, 67231, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1696, EIF_FALSE, 0, 0, 0},{0, 0, 67232, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1697, EIF_FALSE, 0, 0, 0},{0, 0, 67233, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1698, EIF_TRUE, 0, 0, 0},{0, 0, 67234, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1699, EIF_FALSE, 0, 0, 0},{0, 0, 67235, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1700, EIF_FALSE, 0, 0, 0},{0, 0, 67236, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1701, EIF_TRUE, 0, 0, 0},{0, 0, 67237, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1702, EIF_FALSE, 0, 0, 0},{0, 0, 67238, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1703, EIF_FALSE, 0, 0, 0},{0, 0, 67239, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1704, EIF_FALSE, 0, 0, 0},{0, 0, 67240, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1705, EIF_FALSE, 0, 0, 0},{0, 0, 67241, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1706, EIF_FALSE, 0, 0, 0},{0, 0, 67242, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1707, EIF_TRUE, 0, 0, 0},{0, 0, 67243, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1708, EIF_FALSE, 0, 0, 0},{0, 0, 67244, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1709, EIF_FALSE, 0, 0, 0},{0, 0, 67245, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1710, EIF_FALSE, 0, 0, 0},{0, 0, 67246, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1711, EIF_FALSE, 0, 0, 0},{0, 0, 67247, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1712, EIF_TRUE, 0, 0, 0},{0, 0, 67248, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1713, EIF_FALSE, 0, 0, 0},{0, 0, 67249, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1714, EIF_FALSE, 0, 0, 0},{0, 0, 67250, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1715, EIF_FALSE, 0, 0, 0},{0, 0, 67251, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1716, EIF_FALSE, 0, 0, 0},{0, 0, 67252, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1717, EIF_FALSE, 0, 0, 0},{0, 0, 67253, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1718, EIF_FALSE, 0, 0, 0},{0, 0, 67254, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1719, EIF_FALSE, 0, 0, 0},{0, 0, 67255, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1720, EIF_FALSE, 0, 0, 0},{0, 0, 67256, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1721, EIF_FALSE, 0, 0, 0},{0, 0, 67257, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1722, EIF_FALSE, 0, 0, 0},{0, 0, 67258, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1723, EIF_FALSE, 0, 0, 0},{0, 0, 67259, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1724, EIF_FALSE, 0, 0, 0},{0, 0, 67260, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1725, EIF_FALSE, 0, 0, 0},{0, 0, 67261, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1726, EIF_FALSE, 0, 0, 0},{0, 0, 67262, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1727, EIF_FALSE, 0, 0, 0},{0, 0, 67263, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1728, EIF_FALSE, 0, 0, 0},{0, 0, 67264, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1729, EIF_FALSE, 0, 0, 0},{0, 0, 67265, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1730, EIF_FALSE, 0, 0, 0},{0, 0, 67266, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1731, EIF_FALSE, 0, 0, 0},{0, 0, 67267, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1732, EIF_FALSE, 0, 0, 0},{0, 0, 67268, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1733, EIF_FALSE, 0, 0, 0},{0, 0, 67269, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1734, EIF_FALSE, 0, 0, 0},{0, 0, 67270, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1735, EIF_FALSE, 0, 0, 0},{0, 0, 67271, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1736, EIF_FALSE, 0, 0, 0},{0, 0, 67272, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1737, EIF_TRUE, 0, 0, 0},{0, 0, 67273, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1738, EIF_FALSE, 0, 0, 0},{0, 0, 67274, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1739, EIF_FALSE, 0, 0, 0},{0, 0, 67275, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1740, EIF_FALSE, 0, 0, 0},{0, 0, 67276, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1741, EIF_FALSE, 0, 0, 0},{0, 0, 67277, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1742, EIF_FALSE, 0, 0, 0},{0, 0, 67278, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1743, EIF_FALSE, 0, 0, 0},{0, 0, 67279, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1744, EIF_FALSE, 0, 0, 0},{0, 0, 67280, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1745, EIF_FALSE, 0, 0, 0},{0, 0, 67281, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1746, EIF_FALSE, 0, 0, 0},{0, 0, 67282, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1747, EIF_FALSE, 0, 0, 0},{0, 0, 67283, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1748, EIF_FALSE, 0, 0, 0},{0, 0, 67284, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1749, EIF_FALSE, 0, 0, 0},{0, 0, 67285, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1750, EIF_FALSE, 0, 0, 0},{0, 0, 67286, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1751, EIF_FALSE, 0, 0, 0},{0, 0, 67287, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1752, EIF_FALSE, 0, 0, 0},{0, 0, 67288, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1753, EIF_FALSE, 0, 0, 0},{0, 0, 67289, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1754, EIF_FALSE, 0, 0, 0},{0, 0, 67290, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1755, EIF_TRUE, 0, 0, 0},{0, 0, 67291, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1756, EIF_FALSE, 0, 0, 0},{0, 0, 67292, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1757, EIF_FALSE, 0, 0, 0},{0, 0, 67293, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1758, EIF_FALSE, 0, 0, 0},{0, 0, 67294, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1759, EIF_FALSE, 0, 0, 0},{0, 0, 67295, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1760, EIF_FALSE, 0, 0, 0},{0, 0, 67296, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1761, EIF_FALSE, 0, 0, 0},{0, 0, 67297, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1762, EIF_FALSE, 0, 0, 0},{0, 0, 67298, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1763, EIF_FALSE, 0, 0, 0},{0, 0, 67299, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1764, EIF_FALSE, 0, 0, 0},{0, 0, 67300, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1765, EIF_FALSE, 0, 0, 0},{0, 0, 67301, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1766, EIF_FALSE, 0, 0, 0},{0, 0, 67302, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1767, EIF_FALSE, 0, 0, 0},{0, 0, 67303, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1768, EIF_FALSE, 0, 0, 0},{0, 0, 67304, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1769, EIF_FALSE, 0, 0, 0},{0, 0, 67305, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1770, EIF_FALSE, 0, 0, 0},{0, 0, 67306, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1771, EIF_FALSE, 0, 0, 0},{0, 0, 67307, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1772, EIF_FALSE, 0, 0, 0},{0, 0, 67308, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1773, EIF_FALSE, 0, 0, 0},{0, 0, 67309, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1774, EIF_FALSE, 0, 0, 0},{0, 0, 67310, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1775, EIF_FALSE, 0, 0, 0},{0, 0, 67311, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1776, EIF_FALSE, 0, 0, 0},{0, 0, 67312, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1777, EIF_TRUE, 0, 0, 0},{0, 0, 67313, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1778, EIF_FALSE, 0, 0, 0},{0, 0, 67314, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1779, EIF_FALSE, 0, 0, 0},{0, 0, 67315, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1780, EIF_FALSE, 0, 0, 0},{0, 0, 67316, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1781, EIF_FALSE, 0, 0, 0},{0, 0, 67317, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1782, EIF_FALSE, 0, 0, 0},{0, 0, 67318, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1783, EIF_TRUE, 0, 0, 0},{0, 0, 67319, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1784, EIF_FALSE, 0, 0, 0},{0, 0, 67320, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1785, EIF_TRUE, 0, 0, 0},{0, 0, 67321, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1786, EIF_FALSE, 0, 0, 0},{0, 0, 67322, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1787, EIF_FALSE, 0, 0, 0},{0, 0, 67323, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1788, EIF_FALSE, 0, 0, 0},{0, 0, 67324, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1789, EIF_FALSE, 0, 0, 0},{0, 0, 67325, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1790, EIF_TRUE, 0, 0, 0},{0, 0, 67326, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1791, EIF_FALSE, 0, 0, 0},{0, 0, 67327, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1792, EIF_FALSE, 0, 0, 0},{0, 0, 67328, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1793, EIF_FALSE, 0, 0, 0},{0, 0, 67329, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1794, EIF_TRUE, 0, 0, 0},{0, 0, 67330, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1795, EIF_FALSE, 0, 0, 0},{0, 0, 67331, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1796, EIF_FALSE, 0, 0, 0},{0, 0, 67332, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1797, EIF_FALSE, 0, 0, 0},{0, 0, 67333, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1798, EIF_FALSE, 0, 0, 0},{0, 0, 67334, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1799, EIF_TRUE, 0, 0, 0},{0, 0, 67335, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1800, EIF_FALSE, 0, 0, 0},{0, 0, 67336, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1801, EIF_FALSE, 0, 0, 0},{0, 0, 67337, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1802, EIF_FALSE, 0, 0, 0},{0, 0, 67338, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1803, EIF_FALSE, 0, 0, 0},{0, 0, 67339, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1804, EIF_FALSE, 0, 0, 0},{0, 0, 67340, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1805, EIF_FALSE, 0, 0, 0},{0, 0, 67341, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1806, EIF_FALSE, 0, 0, 0},{0, 0, 67342, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1807, EIF_FALSE, 0, 0, 0},{0, 0, 67343, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1808, EIF_FALSE, 0, 0, 0},{0, 0, 67344, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1809, EIF_FALSE, 0, 0, 0},{0, 0, 67345, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1810, EIF_FALSE, 0, 0, 0},{0, 0, 67346, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1811, EIF_FALSE, 0, 0, 0},{0, 0, 67347, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1812, EIF_FALSE, 0, 0, 0},{0, 0, 67348, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1813, EIF_FALSE, 0, 0, 0},{0, 0, 67349, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1814, EIF_FALSE, 0, 0, 0},{0, 0, 67350, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1815, EIF_TRUE, 0, 0, 0},{0, 0, 67351, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1816, EIF_FALSE, 0, 0, 0},{0, 0, 67352, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1817, EIF_FALSE, 0, 0, 0},{0, 0, 67353, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1818, EIF_FALSE, 0, 0, 0},{0, 0, 67354, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1819, EIF_FALSE, 0, 0, 0},{0, 0, 67355, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1820, EIF_FALSE, 0, 0, 0},{0, 0, 67356, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1821, EIF_FALSE, 0, 0, 0},{0, 0, 67357, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1822, EIF_FALSE, 0, 0, 0},{0, 0, 67358, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1823, EIF_FALSE, 0, 0, 0},{0, 0, 67359, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1824, EIF_FALSE, 0, 0, 0},{0, 0, 67360, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1825, EIF_FALSE, 0, 0, 0},{0, 0, 67361, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1826, EIF_FALSE, 0, 0, 0},{0, 0, 67362, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1827, EIF_FALSE, 0, 0, 0},{0, 0, 67363, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1828, EIF_FALSE, 0, 0, 0},{0, 0, 67364, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1829, EIF_FALSE, 0, 0, 0},{0, 0, 67365, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1830, EIF_FALSE, 0, 0, 0},{0, 0, 67366, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1831, EIF_FALSE, 0, 0, 0},{0, 0, 67367, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1832, EIF_FALSE, 0, 0, 0},{0, 0, 67368, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1833, EIF_FALSE, 0, 0, 0},{0, 0, 67369, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1834, EIF_FALSE, 0, 0, 0},{0, 0, 67370, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1835, EIF_FALSE, 0, 0, 0},{0, 0, 67371, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1836, EIF_FALSE, 0, 0, 0},{0, 0, 67372, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1837, EIF_FALSE, 0, 0, 0},{0, 0, 67373, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1838, EIF_FALSE, 0, 0, 0},{0, 0, 67374, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1839, EIF_FALSE, 0, 0, 0},{0, 0, 67375, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1840, EIF_FALSE, 0, 0, 0},{0, 0, 67376, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1841, EIF_FALSE, 0, 0, 0},{0, 0, 67377, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1842, EIF_FALSE, 0, 0, 0},{0, 0, 67378, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1843, EIF_FALSE, 0, 0, 0},{0, 0, 67379, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1844, EIF_FALSE, 0, 0, 0},{0, 0, 67380, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1845, EIF_FALSE, 0, 0, 0},{0, 0, 67381, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1846, EIF_FALSE, 0, 0, 0},{0, 0, 67382, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1847, EIF_FALSE, 0, 0, 0},{0, 0, 67383, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1848, EIF_FALSE, 0, 0, 0},{0, 0, 67384, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1849, EIF_FALSE, 0, 0, 0},{0, 0, 67385, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1850, EIF_FALSE, 0, 0, 0},{0, 0, 67386, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1851, EIF_FALSE, 0, 0, 0},{0, 0, 67387, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1852, EIF_FALSE, 0, 0, 0},{0, 0, 67388, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1853, EIF_FALSE, 0, 0, 0},{0, 0, 67389, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1854, EIF_FALSE, 0, 0, 0},{0, 0, 67390, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1855, EIF_FALSE, 0, 0, 0},{0, 0, 67391, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1856, EIF_FALSE, 0, 0, 0},{0, 0, 67392, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1857, EIF_FALSE, 0, 0, 0},{0, 0, 67393, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1858, EIF_FALSE, 0, 0, 0},{0, 0, 67394, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1859, EIF_FALSE, 0, 0, 0},{0, 0, 67395, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1860, EIF_FALSE, 0, 0, 0},{0, 0, 67396, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1861, EIF_FALSE, 0, 0, 0},{0, 0, 67397, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1862, EIF_FALSE, 0, 0, 0},{0, 0, 67398, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1863, EIF_FALSE, 0, 0, 0},{0, 0, 67399, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1864, EIF_FALSE, 0, 0, 0},{0, 0, 67400, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1865, EIF_FALSE, 0, 0, 0},{0, 0, 67401, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1866, EIF_FALSE, 0, 0, 0},{0, 0, 67402, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1867, EIF_FALSE, 0, 0, 0},{0, 0, 67403, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1868, EIF_FALSE, 0, 0, 0},{0, 0, 67404, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1869, EIF_FALSE, 0, 0, 0},{0, 0, 67405, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1870, EIF_FALSE, 0, 0, 0},{0, 0, 67406, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1871, EIF_FALSE, 0, 0, 0},{0, 0, 67407, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1872, EIF_FALSE, 0, 0, 0},{0, 0, 67408, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1873, EIF_FALSE, 0, 0, 0},{0, 0, 67409, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1874, EIF_FALSE, 0, 0, 0},{0, 0, 67410, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1875, EIF_FALSE, 0, 0, 0},{0, 0, 67411, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1876, EIF_FALSE, 0, 0, 0},{0, 0, 67412, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1877, EIF_FALSE, 0, 0, 0},{0, 0, 67413, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1878, EIF_FALSE, 0, 0, 0},{0, 0, 67414, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1879, EIF_FALSE, 0, 0, 0},{0, 0, 67415, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1880, EIF_FALSE, 0, 0, 0},{0, 0, 67416, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1881, EIF_FALSE, 0, 0, 0},{0, 0, 67417, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1882, EIF_FALSE, 0, 0, 0},{0, 0, 67418, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1883, EIF_FALSE, 0, 0, 0},{0, 0, 67419, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1884, EIF_FALSE, 0, 0, 0},{0, 0, 67420, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1885, EIF_FALSE, 0, 0, 0},{0, 0, 67421, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1886, EIF_FALSE, 0, 0, 0},{0, 0, 67422, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1887, EIF_FALSE, 0, 0, 0},{0, 0, 67423, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1888, EIF_FALSE, 0, 0, 0},{0, 0, 67424, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1889, EIF_FALSE, 0, 0, 0},{0, 0, 67425, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1890, EIF_FALSE, 0, 0, 0},{0, 0, 67426, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1891, EIF_FALSE, 0, 0, 0},{0, 0, 67427, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1892, EIF_FALSE, 0, 0, 0},{0, 0, 67428, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1893, EIF_FALSE, 0, 0, 0},{0, 0, 67429, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1894, EIF_FALSE, 0, 0, 0},{0, 0, 67430, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1895, EIF_FALSE, 0, 0, 0},{0, 0, 67431, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1896, EIF_FALSE, 0, 0, 0},{0, 0, 67432, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1897, EIF_FALSE, 0, 0, 0},{0, 0, 67433, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1898, EIF_FALSE, 0, 0, 0},{0, 0, 67434, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1899, EIF_TRUE, 0, 0, 0},{0, 0, 67435, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1900, EIF_FALSE, 0, 0, 0},{0, 0, 67436, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1901, EIF_FALSE, 0, 0, 0},{0, 0, 67437, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1902, EIF_FALSE, 0, 0, 0},{0, 0, 67438, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1903, EIF_FALSE, 0, 0, 0},{0, 0, 67439, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1904, EIF_FALSE, 0, 0, 0},{0, 0, 67440, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1905, EIF_FALSE, 0, 0, 0},{0, 0, 67441, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1906, EIF_FALSE, 0, 0, 0},{0, 0, 67442, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1907, EIF_FALSE, 0, 0, 0},{0, 0, 67443, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1908, EIF_FALSE, 0, 0, 0},{0, 0, 67444, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1909, EIF_FALSE, 0, 0, 0},{0, 0, 67445, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1910, EIF_FALSE, 0, 0, 0},{0, 0, 67446, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1911, EIF_FALSE, 0, 0, 0},{0, 0, 67447, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1912, EIF_FALSE, 0, 0, 0},{0, 0, 67448, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1913, EIF_FALSE, 0, 0, 0},{0, 0, 67449, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1914, EIF_FALSE, 0, 0, 0},{0, 0, 67450, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1915, EIF_FALSE, 0, 0, 0},{0, 0, 67451, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1916, EIF_FALSE, 0, 0, 0},{0, 0, 67452, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1917, EIF_FALSE, 0, 0, 0},{0, 0, 67453, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1918, EIF_FALSE, 0, 0, 0},{0, 0, 67454, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1919, EIF_FALSE, 0, 0, 0},{0, 0, 67455, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1920, EIF_FALSE, 0, 0, 0},{0, 0, 67456, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1921, EIF_FALSE, 0, 0, 0},{0, 0, 67457, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1922, EIF_TRUE, 0, 0, 0},{0, 0, 67458, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1923, EIF_FALSE, 0, 0, 0},{0, 0, 67459, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1924, EIF_FALSE, 0, 0, 0},{0, 0, 67460, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1925, EIF_TRUE, 0, 0, 0},{0, 0, 67461, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1926, EIF_FALSE, 0, 0, 0},{0, 0, 67462, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1927, EIF_FALSE, 0, 0, 0},{0, 0, 67463, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1928, EIF_FALSE, 0, 0, 0},{0, 0, 67464, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1929, EIF_FALSE, 0, 0, 0},{0, 0, 67465, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1930, EIF_FALSE, 0, 0, 0},{0, 0, 67466, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1931, EIF_FALSE, 0, 0, 0},{0, 0, 67467, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1932, EIF_FALSE, 0, 0, 0},{0, 0, 67468, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1933, EIF_FALSE, 0, 0, 0},{0, 0, 67469, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1934, EIF_FALSE, 0, 0, 0},{0, 0, 67470, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1935, EIF_FALSE, 0, 0, 0},{0, 0, 67471, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1936, EIF_FALSE, 0, 0, 0},{0, 0, 67472, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1937, EIF_FALSE, 0, 0, 0},{0, 0, 67473, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1938, EIF_FALSE, 0, 0, 0},{0, 0, 67474, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1939, EIF_FALSE, 0, 0, 0},{0, 0, 67475, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1940, EIF_TRUE, 0, 0, 0},{0, 0, 67476, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1941, EIF_FALSE, 0, 0, 0},{0, 0, 67477, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1942, EIF_FALSE, 0, 0, 0},{0, 0, 67478, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1943, EIF_TRUE, 0, 0, 0},{0, 0, 67479, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1944, EIF_FALSE, 0, 0, 0},{0, 0, 67480, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1945, EIF_FALSE, 0, 0, 0},{0, 0, 67481, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1946, EIF_FALSE, 0, 0, 0},{0, 0, 67482, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1947, EIF_FALSE, 0, 0, 0},{0, 0, 67483, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1948, EIF_TRUE, 0, 0, 0},{0, 0, 67484, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1949, EIF_FALSE, 0, 0, 0},{0, 0, 67485, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1950, EIF_FALSE, 0, 0, 0},{0, 0, 67486, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1951, EIF_FALSE, 0, 0, 0},{0, 0, 67487, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1952, EIF_FALSE, 0, 0, 0},{0, 0, 67488, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1953, EIF_FALSE, 0, 0, 0},{0, 0, 67489, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1954, EIF_TRUE, 0, 0, 0},{0, 0, 67490, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1955, EIF_FALSE, 0, 0, 0},{0, 0, 67491, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1956, EIF_FALSE, 0, 0, 0},{0, 0, 67492, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1957, EIF_FALSE, 0, 0, 0},{0, 0, 67493, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1958, EIF_FALSE, 0, 0, 0},{0, 0, 67494, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1959, EIF_TRUE, 0, 0, 0},{0, 0, 67495, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1960, EIF_FALSE, 0, 0, 0},{0, 0, 67496, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1961, EIF_FALSE, 0, 0, 0},{0, 0, 67497, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1962, EIF_FALSE, 0, 0, 0},{0, 0, 67498, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1963, EIF_FALSE, 0, 0, 0},{0, 0, 67499, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1964, EIF_FALSE, 0, 0, 0},{0, 0, 67500, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1965, EIF_FALSE, 0, 0, 0},{0, 0, 67501, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1966, EIF_TRUE, 0, 0, 0},{0, 0, 67502, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1967, EIF_FALSE, 0, 0, 0},{0, 0, 67503, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1968, EIF_FALSE, 0, 0, 0},{0, 0, 67504, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1969, EIF_FALSE, 0, 0, 0},{0, 0, 67505, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1970, EIF_FALSE, 0, 0, 0},{0, 0, 67506, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1971, EIF_FALSE, 0, 0, 0},{0, 0, 67507, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1972, EIF_FALSE, 0, 0, 0},{0, 0, 67508, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1973, EIF_FALSE, 0, 0, 0},{0, 0, 67509, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1974, EIF_TRUE, 0, 0, 0},{0, 0, 67510, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1975, EIF_FALSE, 0, 0, 0},{0, 0, 67511, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1976, EIF_FALSE, 0, 0, 0},{0, 0, 67512, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1977, EIF_TRUE, 0, 0, 0},{0, 0, 67513, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1978, EIF_FALSE, 0, 0, 0},{0, 0, 67514, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1979, EIF_FALSE, 0, 0, 0},{0, 0, 67515, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1980, EIF_TRUE, 0, 0, 0},{0, 0, 67516, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1981, EIF_FALSE, 0, 0, 0},{0, 0, 67517, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1982, EIF_FALSE, 0, 0, 0},{0, 0, 67518, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1983, EIF_TRUE, 0, 0, 0},{0, 0, 67519, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1984, EIF_FALSE, 0, 0, 0},{0, 0, 67520, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1985, EIF_TRUE, 0, 0, 0},{0, 0, 67521, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1986, EIF_FALSE, 0, 0, 0},{0, 0, 67522, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1987, EIF_FALSE, 0, 0, 0},{0, 0, 67523, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1988, EIF_FALSE, 0, 0, 0},{0, 0, 67524, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1989, EIF_TRUE, 0, 0, 0},{0, 0, 67525, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1990, EIF_FALSE, 0, 0, 0},{0, 0, 67526, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1991, EIF_FALSE, 0, 0, 0},{0, 0, 67527, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1992, EIF_FALSE, 0, 0, 0},{0, 0, 67528, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1993, EIF_FALSE, 0, 0, 0},{0, 0, 67529, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1994, EIF_FALSE, 0, 0, 0},{0, 0, 67530, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1995, EIF_FALSE, 0, 0, 0},{0, 0, 67531, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1996, EIF_FALSE, 0, 0, 0},{0, 0, 67532, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1997, EIF_TRUE, 0, 0, 0},{0, 0, 67533, EIF_TRUE, 0, 0, 0}},
{{0, 0, 1998, EIF_FALSE, 0, 0, 0},{0, 0, 67534, EIF_FALSE, 0, 0, 0}},
{{0, 0, 1999, EIF_FALSE, 0, 0, 0},{0, 0, 67535, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2000, EIF_FALSE, 0, 0, 0},{0, 0, 67536, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2001, EIF_FALSE, 0, 0, 0},{0, 0, 67537, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2002, EIF_FALSE, 0, 0, 0},{0, 0, 67538, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2003, EIF_TRUE, 0, 0, 0},{0, 0, 67539, EIF_TRUE, 0, 0, 0}},
{{0, 0, 2004, EIF_FALSE, 0, 0, 0},{0, 0, 67540, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2005, EIF_TRUE, 0, 0, 0},{0, 0, 67541, EIF_TRUE, 0, 0, 0}},
{{0, 0, 2006, EIF_FALSE, 0, 0, 0},{0, 0, 67542, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2007, EIF_FALSE, 0, 0, 0},{0, 0, 67543, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2008, EIF_TRUE, 0, 0, 0},{0, 0, 67544, EIF_TRUE, 0, 0, 0}},
{{0, 0, 2009, EIF_FALSE, 0, 0, 0},{0, 0, 67545, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2010, EIF_FALSE, 0, 0, 0},{0, 0, 67546, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2011, EIF_FALSE, 0, 0, 0},{0, 0, 67547, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2012, EIF_FALSE, 0, 0, 0},{0, 0, 67548, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2013, EIF_FALSE, 0, 0, 0},{0, 0, 67549, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2014, EIF_FALSE, 0, 0, 0},{0, 0, 67550, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2015, EIF_FALSE, 0, 0, 0},{0, 0, 67551, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2016, EIF_TRUE, 0, 0, 0},{0, 0, 67552, EIF_TRUE, 0, 0, 0}},
{{0, 0, 2017, EIF_FALSE, 0, 0, 0},{0, 0, 67553, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2018, EIF_FALSE, 0, 0, 0},{0, 0, 67554, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2019, EIF_FALSE, 0, 0, 0},{0, 0, 67555, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2020, EIF_FALSE, 0, 0, 0},{0, 0, 67556, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2021, EIF_FALSE, 0, 0, 0},{0, 0, 67557, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2022, EIF_FALSE, 0, 0, 0},{0, 0, 67558, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2023, EIF_TRUE, 0, 0, 0},{0, 0, 67559, EIF_TRUE, 0, 0, 0}},
{{0, 0, 2024, EIF_FALSE, 0, 0, 0},{0, 0, 67560, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2025, EIF_FALSE, 0, 0, 0},{0, 0, 67561, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2026, EIF_FALSE, 0, 0, 0},{0, 0, 67562, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2027, EIF_FALSE, 0, 0, 0},{0, 0, 67563, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2028, EIF_FALSE, 0, 0, 0},{0, 0, 67564, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2029, EIF_FALSE, 0, 0, 0},{0, 0, 67565, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2030, EIF_FALSE, 0, 0, 0},{0, 0, 67566, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2031, EIF_FALSE, 0, 0, 0},{0, 0, 67567, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2032, EIF_FALSE, 0, 0, 0},{0, 0, 67568, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2033, EIF_FALSE, 0, 0, 0},{0, 0, 67569, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2034, EIF_FALSE, 0, 0, 0},{0, 0, 67570, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2035, EIF_FALSE, 0, 0, 0},{0, 0, 67571, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2036, EIF_FALSE, 0, 0, 0},{0, 0, 67572, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2037, EIF_FALSE, 0, 0, 0},{0, 0, 67573, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2038, EIF_FALSE, 0, 0, 0},{0, 0, 67574, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2039, EIF_FALSE, 0, 0, 0},{0, 0, 67575, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2040, EIF_FALSE, 0, 0, 0},{0, 0, 67576, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2041, EIF_FALSE, 0, 0, 0},{0, 0, 67577, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2042, EIF_FALSE, 0, 0, 0},{0, 0, 67578, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2043, EIF_FALSE, 0, 0, 0},{0, 0, 67579, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2044, EIF_FALSE, 0, 0, 0},{0, 0, 67580, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2045, EIF_FALSE, 0, 0, 0},{0, 0, 67581, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2046, EIF_FALSE, 0, 0, 0},{0, 0, 67582, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2047, EIF_FALSE, 0, 0, 0},{0, 0, 67583, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2048, EIF_FALSE, 0, 0, 0},{0, 0, 67584, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2049, EIF_FALSE, 0, 0, 0},{0, 0, 67585, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2050, EIF_FALSE, 0, 0, 0},{0, 0, 67586, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2051, EIF_FALSE, 0, 0, 0},{0, 0, 67587, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2052, EIF_FALSE, 0, 0, 0},{0, 0, 67588, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2053, EIF_FALSE, 0, 0, 0},{0, 0, 67589, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2054, EIF_FALSE, 0, 0, 0},{0, 0, 67590, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2055, EIF_FALSE, 0, 0, 0},{0, 0, 67591, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2056, EIF_FALSE, 0, 0, 0},{0, 0, 67592, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2057, EIF_FALSE, 0, 0, 0},{0, 0, 67593, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2058, EIF_FALSE, 0, 0, 0},{0, 0, 67594, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2059, EIF_FALSE, 0, 0, 0},{0, 0, 67595, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2060, EIF_FALSE, 0, 0, 0},{0, 0, 67596, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2061, EIF_FALSE, 0, 0, 0},{0, 0, 67597, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2062, EIF_FALSE, 0, 0, 0},{0, 0, 67598, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2063, EIF_FALSE, 0, 0, 0},{0, 0, 67599, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2064, EIF_FALSE, 0, 0, 0},{0, 0, 67600, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2065, EIF_FALSE, 0, 0, 0},{0, 0, 67601, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2066, EIF_FALSE, 0, 0, 0},{0, 0, 67602, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2067, EIF_FALSE, 0, 0, 0},{0, 0, 67603, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2068, EIF_FALSE, 0, 0, 0},{0, 0, 67604, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2069, EIF_FALSE, 0, 0, 0},{0, 0, 67605, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2070, EIF_FALSE, 0, 0, 0},{0, 0, 67606, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2071, EIF_FALSE, 0, 0, 0},{0, 0, 67607, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2072, EIF_FALSE, 0, 0, 0},{0, 0, 67608, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2073, EIF_FALSE, 0, 0, 0},{0, 0, 67609, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2074, EIF_FALSE, 0, 0, 0},{0, 0, 67610, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2075, EIF_FALSE, 0, 0, 0},{0, 0, 67611, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2076, EIF_FALSE, 0, 0, 0},{0, 0, 67612, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2077, EIF_FALSE, 0, 0, 0},{0, 0, 67613, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2078, EIF_FALSE, 0, 0, 0},{0, 0, 67614, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2079, EIF_FALSE, 0, 0, 0},{0, 0, 67615, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2080, EIF_FALSE, 0, 0, 0},{0, 0, 67616, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2081, EIF_FALSE, 0, 0, 0},{0, 0, 67617, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2082, EIF_FALSE, 0, 0, 0},{0, 0, 67618, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2083, EIF_FALSE, 0, 0, 0},{0, 0, 67619, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2084, EIF_FALSE, 0, 0, 0},{0, 0, 67620, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2085, EIF_FALSE, 0, 0, 0},{0, 0, 67621, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2086, EIF_FALSE, 0, 0, 0},{0, 0, 67622, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2087, EIF_FALSE, 0, 0, 0},{0, 0, 67623, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2088, EIF_FALSE, 0, 0, 0},{0, 0, 67624, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2089, EIF_FALSE, 0, 0, 0},{0, 0, 67625, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2090, EIF_FALSE, 0, 0, 0},{0, 0, 67626, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2091, EIF_FALSE, 0, 0, 0},{0, 0, 67627, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2092, EIF_FALSE, 0, 0, 0},{0, 0, 67628, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2093, EIF_FALSE, 0, 0, 0},{0, 0, 67629, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2094, EIF_FALSE, 0, 0, 0},{0, 0, 67630, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2095, EIF_FALSE, 0, 0, 0},{0, 0, 67631, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2096, EIF_FALSE, 0, 0, 0},{0, 0, 67632, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2097, EIF_FALSE, 0, 0, 0},{0, 0, 67633, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2098, EIF_FALSE, 0, 0, 0},{0, 0, 67634, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2099, EIF_FALSE, 0, 0, 0},{0, 0, 67635, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2100, EIF_FALSE, 0, 0, 0},{0, 0, 67636, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2101, EIF_FALSE, 0, 0, 0},{0, 0, 67637, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2102, EIF_FALSE, 0, 0, 0},{0, 0, 67638, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2103, EIF_FALSE, 0, 0, 0},{0, 0, 67639, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2104, EIF_FALSE, 0, 0, 0},{0, 0, 67640, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2105, EIF_FALSE, 0, 0, 0},{0, 0, 67641, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2106, EIF_FALSE, 0, 0, 0},{0, 0, 67642, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2107, EIF_FALSE, 0, 0, 0},{0, 0, 67643, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2108, EIF_FALSE, 0, 0, 0},{0, 0, 67644, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2109, EIF_FALSE, 0, 0, 0},{0, 0, 67645, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2110, EIF_FALSE, 0, 0, 0},{0, 0, 67646, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2111, EIF_FALSE, 0, 0, 0},{0, 0, 67647, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2112, EIF_FALSE, 0, 0, 0},{0, 0, 67648, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2113, EIF_FALSE, 0, 0, 0},{0, 0, 67649, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2114, EIF_FALSE, 0, 0, 0},{0, 0, 67650, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2115, EIF_FALSE, 0, 0, 0},{0, 0, 67651, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2116, EIF_FALSE, 0, 0, 0},{0, 0, 67652, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2117, EIF_FALSE, 0, 0, 0},{0, 0, 67653, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2118, EIF_TRUE, 0, 0, 0},{0, 0, 67654, EIF_TRUE, 0, 0, 0}},
{{0, 0, 2119, EIF_FALSE, 0, 0, 0},{0, 0, 67655, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2120, EIF_FALSE, 0, 0, 0},{0, 0, 67656, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2121, EIF_FALSE, 0, 0, 0},{0, 0, 67657, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2122, EIF_TRUE, 0, 0, 0},{0, 0, 67658, EIF_TRUE, 0, 0, 0}},
{{0, 0, 2123, EIF_FALSE, 0, 0, 0},{0, 0, 67659, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2124, EIF_FALSE, 0, 0, 0},{0, 0, 67660, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2125, EIF_TRUE, 0, 0, 0},{0, 0, 67661, EIF_TRUE, 0, 0, 0}},
{{0, 0, 2126, EIF_FALSE, 0, 0, 0},{0, 0, 67662, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2127, EIF_FALSE, 0, 0, 0},{0, 0, 67663, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2128, EIF_FALSE, 0, 0, 0},{0, 0, 67664, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2129, EIF_TRUE, 0, 0, 0},{0, 0, 67665, EIF_TRUE, 0, 0, 0}},
{{0, 0, 2130, EIF_FALSE, 0, 0, 0},{0, 0, 67666, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2131, EIF_FALSE, 0, 0, 0},{0, 0, 67667, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2132, EIF_TRUE, 0, 0, 0},{0, 0, 67668, EIF_TRUE, 0, 0, 0}},
{{0, 0, 2133, EIF_FALSE, 0, 0, 0},{0, 0, 67669, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2134, EIF_FALSE, 0, 0, 0},{0, 0, 67670, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2135, EIF_TRUE, 0, 0, 0},{0, 0, 67671, EIF_TRUE, 0, 0, 0}},
{{0, 0, 2136, EIF_FALSE, 0, 0, 0},{0, 0, 67672, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2137, EIF_FALSE, 0, 0, 0},{0, 0, 67673, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2138, EIF_TRUE, 0, 0, 0},{0, 0, 67674, EIF_TRUE, 0, 0, 0}},
{{0, 0, 2139, EIF_FALSE, 0, 0, 0},{0, 0, 67675, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2140, EIF_FALSE, 0, 0, 0},{0, 0, 67676, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2141, EIF_TRUE, 0, 0, 0},{0, 0, 67677, EIF_TRUE, 0, 0, 0}},
{{0, 0, 2142, EIF_FALSE, 0, 0, 0},{0, 0, 67678, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2143, EIF_FALSE, 0, 0, 0},{0, 0, 67679, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2144, EIF_TRUE, 0, 0, 0},{0, 0, 67680, EIF_TRUE, 0, 0, 0}},
{{0, 0, 2145, EIF_FALSE, 0, 0, 0},{0, 0, 67681, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2146, EIF_FALSE, 0, 0, 0},{0, 0, 67682, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2147, EIF_TRUE, 0, 0, 0},{0, 0, 67683, EIF_TRUE, 0, 0, 0}},
{{0, 0, 2148, EIF_FALSE, 0, 0, 0},{0, 0, 67684, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2149, EIF_FALSE, 0, 0, 0},{0, 0, 67685, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2150, EIF_TRUE, 0, 0, 0},{0, 0, 67686, EIF_TRUE, 0, 0, 0}},
{{0, 0, 2151, EIF_FALSE, 0, 0, 0},{0, 0, 67687, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2152, EIF_FALSE, 0, 0, 0},{0, 0, 67688, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2153, EIF_TRUE, 0, 0, 0},{0, 0, 67689, EIF_TRUE, 0, 0, 0}},
{{0, 0, 2154, EIF_FALSE, 0, 0, 0},{0, 0, 67690, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2155, EIF_FALSE, 0, 0, 0},{0, 0, 67691, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2156, EIF_TRUE, 0, 0, 0},{0, 0, 67692, EIF_TRUE, 0, 0, 0}},
{{0, 0, 2157, EIF_FALSE, 0, 0, 0},{0, 0, 67693, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2158, EIF_FALSE, 0, 0, 0},{0, 0, 67694, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2159, EIF_TRUE, 0, 0, 0},{0, 0, 67695, EIF_TRUE, 0, 0, 0}},
{{0, 0, 2160, EIF_FALSE, 0, 0, 0},{0, 0, 67696, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2161, EIF_FALSE, 0, 0, 0},{0, 0, 67697, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2162, EIF_TRUE, 0, 0, 0},{0, 0, 67698, EIF_TRUE, 0, 0, 0}},
{{0, 0, 2163, EIF_FALSE, 0, 0, 0},{0, 0, 67699, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2164, EIF_FALSE, 0, 0, 0},{0, 0, 67700, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2165, EIF_FALSE, 0, 0, 0},{0, 0, 67701, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2166, EIF_FALSE, 0, 0, 0},{0, 0, 67702, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2167, EIF_FALSE, 0, 0, 0},{0, 0, 67703, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2168, EIF_FALSE, 0, 0, 0},{0, 0, 67704, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2169, EIF_TRUE, 0, 0, 0},{0, 0, 67705, EIF_TRUE, 0, 0, 0}},
{{0, 0, 2170, EIF_FALSE, 0, 0, 0},{0, 0, 67706, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2171, EIF_FALSE, 0, 0, 0},{0, 0, 67707, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2172, EIF_FALSE, 0, 0, 0},{0, 0, 67708, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2173, EIF_FALSE, 0, 0, 0},{0, 0, 67709, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2174, EIF_FALSE, 0, 0, 0},{0, 0, 67710, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2175, EIF_FALSE, 0, 0, 0},{0, 0, 67711, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2176, EIF_FALSE, 0, 0, 0},{0, 0, 67712, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2177, EIF_TRUE, 0, 0, 0},{0, 0, 67713, EIF_TRUE, 0, 0, 0}},
{{0, 0, 2178, EIF_FALSE, 0, 0, 0},{0, 0, 67714, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2179, EIF_FALSE, 0, 0, 0},{0, 0, 67715, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2180, EIF_FALSE, 0, 0, 0},{0, 0, 67716, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2181, EIF_FALSE, 0, 0, 0},{0, 0, 67717, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2182, EIF_FALSE, 0, 0, 0},{0, 0, 67718, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2183, EIF_FALSE, 0, 0, 0},{0, 0, 67719, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2184, EIF_FALSE, 0, 0, 0},{0, 0, 67720, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2185, EIF_FALSE, 0, 0, 0},{0, 0, 67721, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2186, EIF_FALSE, 0, 0, 0},{0, 0, 67722, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2187, EIF_FALSE, 0, 0, 0},{0, 0, 67723, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2188, EIF_FALSE, 0, 0, 0},{0, 0, 67724, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2189, EIF_FALSE, 0, 0, 0},{0, 0, 67725, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2190, EIF_FALSE, 0, 0, 0},{0, 0, 67726, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2191, EIF_FALSE, 0, 0, 0},{0, 0, 67727, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2192, EIF_FALSE, 0, 0, 0},{0, 0, 67728, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2193, EIF_FALSE, 0, 0, 0},{0, 0, 67729, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2194, EIF_FALSE, 0, 0, 0},{0, 0, 67730, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2195, EIF_FALSE, 0, 0, 0},{0, 0, 67731, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2196, EIF_FALSE, 0, 0, 0},{0, 0, 67732, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2197, EIF_FALSE, 0, 0, 0},{0, 0, 67733, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2198, EIF_FALSE, 0, 0, 0},{0, 0, 67734, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2199, EIF_FALSE, 0, 0, 0},{0, 0, 67735, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2200, EIF_FALSE, 0, 0, 0},{0, 0, 67736, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2201, EIF_FALSE, 0, 0, 0},{0, 0, 67737, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2202, EIF_TRUE, 0, 0, 0},{0, 0, 67738, EIF_TRUE, 0, 0, 0}},
{{0, 0, 2203, EIF_FALSE, 0, 0, 0},{0, 0, 67739, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2204, EIF_FALSE, 0, 0, 0},{0, 0, 67740, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2205, EIF_FALSE, 0, 0, 0},{0, 0, 67741, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2206, EIF_FALSE, 0, 0, 0},{0, 0, 67742, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2207, EIF_FALSE, 0, 0, 0},{0, 0, 67743, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2208, EIF_FALSE, 0, 0, 0},{0, 0, 67744, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2209, EIF_FALSE, 0, 0, 0},{0, 0, 67745, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2210, EIF_FALSE, 0, 0, 0},{0, 0, 67746, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2211, EIF_FALSE, 0, 0, 0},{0, 0, 67747, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2212, EIF_FALSE, 0, 0, 0},{0, 0, 67748, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2213, EIF_FALSE, 0, 0, 0},{0, 0, 67749, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2214, EIF_FALSE, 0, 0, 0},{0, 0, 67750, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2215, EIF_FALSE, 0, 0, 0},{0, 0, 67751, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2216, EIF_FALSE, 0, 0, 0},{0, 0, 67752, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2217, EIF_FALSE, 0, 0, 0},{0, 0, 67753, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2218, EIF_FALSE, 0, 0, 0},{0, 0, 67754, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2219, EIF_FALSE, 0, 0, 0},{0, 0, 67755, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2220, EIF_FALSE, 0, 0, 0},{0, 0, 67756, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2221, EIF_FALSE, 0, 0, 0},{0, 0, 67757, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2222, EIF_FALSE, 0, 0, 0},{0, 0, 67758, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2223, EIF_FALSE, 0, 0, 0},{0, 0, 67759, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2224, EIF_TRUE, 0, 0, 0},{0, 0, 67760, EIF_TRUE, 0, 0, 0}},
{{0, 0, 2225, EIF_FALSE, 0, 0, 0},{0, 0, 67761, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2226, EIF_TRUE, 0, 0, 0},{0, 0, 67762, EIF_TRUE, 0, 0, 0}},
{{0, 0, 2227, EIF_FALSE, 0, 0, 0},{0, 0, 67763, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2228, EIF_FALSE, 0, 0, 0},{0, 0, 67764, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2229, EIF_TRUE, 0, 0, 0},{0, 0, 67765, EIF_TRUE, 0, 0, 0}},
{{0, 0, 2230, EIF_FALSE, 0, 0, 0},{0, 0, 67766, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2231, EIF_FALSE, 0, 0, 0},{0, 0, 67767, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2232, EIF_FALSE, 0, 0, 0},{0, 0, 67768, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2233, EIF_FALSE, 0, 0, 0},{0, 0, 67769, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2234, EIF_FALSE, 0, 0, 0},{0, 0, 67770, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2235, EIF_FALSE, 0, 0, 0},{0, 0, 67771, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2236, EIF_FALSE, 0, 0, 0},{0, 0, 67772, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2237, EIF_FALSE, 0, 0, 0},{0, 0, 67773, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2238, EIF_FALSE, 0, 0, 0},{0, 0, 67774, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2239, EIF_FALSE, 0, 0, 0},{0, 0, 67775, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2240, EIF_FALSE, 0, 0, 0},{0, 0, 67776, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2241, EIF_FALSE, 0, 0, 0},{0, 0, 67777, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2242, EIF_FALSE, 0, 0, 0},{0, 0, 67778, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2243, EIF_TRUE, 0, 0, 0},{0, 0, 67779, EIF_TRUE, 0, 0, 0}},
{{0, 0, 2244, EIF_FALSE, 0, 0, 0},{0, 0, 67780, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2245, EIF_FALSE, 0, 0, 0},{0, 0, 67781, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2246, EIF_FALSE, 0, 0, 0},{0, 0, 67782, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2247, EIF_FALSE, 0, 0, 0},{0, 0, 67783, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2248, EIF_FALSE, 0, 0, 0},{0, 0, 67784, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2249, EIF_FALSE, 0, 0, 0},{0, 0, 67785, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2250, EIF_TRUE, 0, 0, 0},{0, 0, 67786, EIF_TRUE, 0, 0, 0}},
{{0, 0, 2251, EIF_FALSE, 0, 0, 0},{0, 0, 67787, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2252, EIF_FALSE, 0, 0, 0},{0, 0, 67788, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2253, EIF_FALSE, 0, 0, 0},{0, 0, 67789, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2254, EIF_FALSE, 0, 0, 0},{0, 0, 67790, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2255, EIF_FALSE, 0, 0, 0},{0, 0, 67791, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2256, EIF_FALSE, 0, 0, 0},{0, 0, 67792, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2257, EIF_FALSE, 0, 0, 0},{0, 0, 67793, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2258, EIF_FALSE, 0, 0, 0},{0, 0, 67794, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2259, EIF_FALSE, 0, 0, 0},{0, 0, 67795, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2260, EIF_FALSE, 0, 0, 0},{0, 0, 67796, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2261, EIF_FALSE, 0, 0, 0},{0, 0, 67797, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2262, EIF_FALSE, 0, 0, 0},{0, 0, 67798, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2263, EIF_FALSE, 0, 0, 0},{0, 0, 67799, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2264, EIF_FALSE, 0, 0, 0},{0, 0, 67800, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2265, EIF_FALSE, 0, 0, 0},{0, 0, 67801, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2266, EIF_FALSE, 0, 0, 0},{0, 0, 67802, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2267, EIF_FALSE, 0, 0, 0},{0, 0, 67803, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2268, EIF_FALSE, 0, 0, 0},{0, 0, 67804, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2269, EIF_FALSE, 0, 0, 0},{0, 0, 67805, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2270, EIF_TRUE, 0, 0, 0},{0, 0, 67806, EIF_TRUE, 0, 0, 0}},
{{0, 0, 2271, EIF_FALSE, 0, 0, 0},{0, 0, 67807, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2272, EIF_TRUE, 0, 0, 0},{0, 0, 67808, EIF_TRUE, 0, 0, 0}},
{{0, 0, 2273, EIF_FALSE, 0, 0, 0},{0, 0, 67809, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2274, EIF_FALSE, 0, 0, 0},{0, 0, 67810, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2275, EIF_FALSE, 0, 0, 0},{0, 0, 67811, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2276, EIF_FALSE, 0, 0, 0},{0, 0, 67812, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2277, EIF_FALSE, 0, 0, 0},{0, 0, 67813, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2278, EIF_FALSE, 0, 0, 0},{0, 0, 67814, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2279, EIF_TRUE, 0, 0, 0},{0, 0, 67815, EIF_TRUE, 0, 0, 0}},
{{0, 0, 2280, EIF_FALSE, 0, 0, 0},{0, 0, 67816, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2281, EIF_FALSE, 0, 0, 0},{0, 0, 67817, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2282, EIF_FALSE, 0, 0, 0},{0, 0, 67818, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2283, EIF_FALSE, 0, 0, 0},{0, 0, 67819, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2284, EIF_FALSE, 0, 0, 0},{0, 0, 67820, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2285, EIF_TRUE, 0, 0, 0},{0, 0, 67821, EIF_TRUE, 0, 0, 0}},
{{0, 0, 2286, EIF_FALSE, 0, 0, 0},{0, 0, 67822, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2287, EIF_FALSE, 0, 0, 0},{0, 0, 67823, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2288, EIF_TRUE, 0, 0, 0},{0, 0, 67824, EIF_TRUE, 0, 0, 0}},
{{0, 0, 2289, EIF_FALSE, 0, 0, 0},{0, 0, 67825, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2290, EIF_FALSE, 0, 0, 0},{0, 0, 67826, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2291, EIF_FALSE, 0, 0, 0},{0, 0, 67827, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2292, EIF_FALSE, 0, 0, 0},{0, 0, 67828, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2293, EIF_TRUE, 0, 0, 0},{0, 0, 67829, EIF_TRUE, 0, 0, 0}},
{{0, 0, 2294, EIF_FALSE, 0, 0, 0},{0, 0, 67830, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2295, EIF_FALSE, 0, 0, 0},{0, 0, 67831, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2296, EIF_FALSE, 0, 0, 0},{0, 0, 67832, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2297, EIF_FALSE, 0, 0, 0},{0, 0, 67833, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2298, EIF_FALSE, 0, 0, 0},{0, 0, 67834, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2299, EIF_FALSE, 0, 0, 0},{0, 0, 67835, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2300, EIF_FALSE, 0, 0, 0},{0, 0, 67836, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2301, EIF_FALSE, 0, 0, 0},{0, 0, 67837, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2302, EIF_FALSE, 0, 0, 0},{0, 0, 67838, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2303, EIF_FALSE, 0, 0, 0},{0, 0, 67839, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2304, EIF_FALSE, 0, 0, 0},{0, 0, 67840, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2305, EIF_FALSE, 0, 0, 0},{0, 0, 67841, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2306, EIF_FALSE, 0, 0, 0},{0, 0, 67842, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2307, EIF_TRUE, 0, 0, 0},{0, 0, 67843, EIF_TRUE, 0, 0, 0}},
{{0, 0, 2308, EIF_FALSE, 0, 0, 0},{0, 0, 67844, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2309, EIF_FALSE, 0, 0, 0},{0, 0, 67845, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2310, EIF_FALSE, 0, 0, 0},{0, 0, 67846, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2311, EIF_FALSE, 0, 0, 0},{0, 0, 67847, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2312, EIF_TRUE, 0, 0, 0},{0, 0, 67848, EIF_TRUE, 0, 0, 0}},
{{0, 0, 2313, EIF_FALSE, 0, 0, 0},{0, 0, 67849, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2314, EIF_FALSE, 0, 0, 0},{0, 0, 67850, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2315, EIF_FALSE, 0, 0, 0},{0, 0, 67851, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2316, EIF_FALSE, 0, 0, 0},{0, 0, 67852, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2317, EIF_TRUE, 0, 0, 0},{0, 0, 67853, EIF_TRUE, 0, 0, 0}},
{{0, 0, 2318, EIF_FALSE, 0, 0, 0},{0, 0, 67854, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2319, EIF_FALSE, 0, 0, 0},{0, 0, 67855, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2320, EIF_FALSE, 0, 0, 0},{0, 0, 67856, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2321, EIF_FALSE, 0, 0, 0},{0, 0, 67857, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2322, EIF_FALSE, 0, 0, 0},{0, 0, 67858, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2323, EIF_FALSE, 0, 0, 0},{0, 0, 67859, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2324, EIF_FALSE, 0, 0, 0},{0, 0, 67860, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2325, EIF_FALSE, 0, 0, 0},{0, 0, 67861, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2326, EIF_FALSE, 0, 0, 0},{0, 0, 67862, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2327, EIF_FALSE, 0, 0, 0},{0, 0, 67863, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2328, EIF_FALSE, 0, 0, 0},{0, 0, 67864, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2329, EIF_FALSE, 0, 0, 0},{0, 0, 67865, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2330, EIF_FALSE, 0, 0, 0},{0, 0, 67866, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2331, EIF_FALSE, 0, 0, 0},{0, 0, 67867, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2332, EIF_FALSE, 0, 0, 0},{0, 0, 67868, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2333, EIF_FALSE, 0, 0, 0},{0, 0, 67869, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2334, EIF_FALSE, 0, 0, 0},{0, 0, 67870, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2335, EIF_FALSE, 0, 0, 0},{0, 0, 67871, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2336, EIF_FALSE, 0, 0, 0},{0, 0, 67872, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2337, EIF_FALSE, 0, 0, 0},{0, 0, 67873, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2338, EIF_FALSE, 0, 0, 0},{0, 0, 67874, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2339, EIF_FALSE, 0, 0, 0},{0, 0, 67875, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2340, EIF_TRUE, 0, 0, 0},{0, 0, 67876, EIF_TRUE, 0, 0, 0}},
{{0, 0, 2341, EIF_FALSE, 0, 0, 0},{0, 0, 67877, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2342, EIF_FALSE, 0, 0, 0},{0, 0, 67878, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2343, EIF_FALSE, 0, 0, 0},{0, 0, 67879, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2344, EIF_FALSE, 0, 0, 0},{0, 0, 67880, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2345, EIF_TRUE, 0, 0, 0},{0, 0, 67881, EIF_TRUE, 0, 0, 0}},
{{0, 0, 2346, EIF_FALSE, 0, 0, 0},{0, 0, 67882, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2347, EIF_FALSE, 0, 0, 0},{0, 0, 67883, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2348, EIF_FALSE, 0, 0, 0},{0, 0, 67884, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2349, EIF_FALSE, 0, 0, 0},{0, 0, 67885, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2350, EIF_FALSE, 0, 0, 0},{0, 0, 67886, EIF_FALSE, 0, 0, 0}},
{{0, 0, 2351, EIF_FALSE, 0, 0, 0},{0, 0, 67887, EIF_FALSE, 0, 0, 0}}
};


GE_type_info GE_type_infos[2352] = {
{0, 0, 0, 0},
{1, GE_TYPE_FLAG_BOOLEAN|GE_TYPE_FLAG_EXPANDED, 0, 0},
{2, GE_TYPE_FLAG_CHARACTER_8|GE_TYPE_FLAG_EXPANDED, 0, 0},
{3, GE_TYPE_FLAG_CHARACTER_32|GE_TYPE_FLAG_EXPANDED, 0, 0},
{4, GE_TYPE_FLAG_INTEGER_8|GE_TYPE_FLAG_EXPANDED, 0, 0},
{5, GE_TYPE_FLAG_INTEGER_16|GE_TYPE_FLAG_EXPANDED, 0, 0},
{6, GE_TYPE_FLAG_INTEGER_32|GE_TYPE_FLAG_EXPANDED, 0, 0},
{7, GE_TYPE_FLAG_INTEGER_64|GE_TYPE_FLAG_EXPANDED, 0, 0},
{8, GE_TYPE_FLAG_NATURAL_8|GE_TYPE_FLAG_EXPANDED, 0, 0},
{9, GE_TYPE_FLAG_NATURAL_16|GE_TYPE_FLAG_EXPANDED, 0, 0},
{10, GE_TYPE_FLAG_NATURAL_32|GE_TYPE_FLAG_EXPANDED, 0, 0},
{11, GE_TYPE_FLAG_NATURAL_64|GE_TYPE_FLAG_EXPANDED, 0, 0},
{12, GE_TYPE_FLAG_REAL_32|GE_TYPE_FLAG_EXPANDED, 0, 0},
{13, GE_TYPE_FLAG_REAL_64|GE_TYPE_FLAG_EXPANDED, 0, 0},
{14, GE_TYPE_FLAG_POINTER|GE_TYPE_FLAG_EXPANDED, 0, 0},
{15, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new15, 0},
{16, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new16, 0},
{17, 0, (EIF_REFERENCE (*)())&GE_new17, 0},
{18, 0, (EIF_REFERENCE (*)())&GE_new18, 0},
{19, 0, 0, 0},
{20, 0, (EIF_REFERENCE (*)())&GE_new20, 0},
{21, 0, (EIF_REFERENCE (*)())&GE_new21, 0},
{22, 0, 0, 0},
{23, GE_TYPE_FLAG_NONE, 0, 0},
{24, 0, 0, 0},
{25, 0, 0, 0},
{26, 0, (EIF_REFERENCE (*)())&GE_new26, 0},
{27, 0, (EIF_REFERENCE (*)())&GE_new27, 0},
{28, 0, (EIF_REFERENCE (*)())&GE_new28, 0},
{29, 0, (EIF_REFERENCE (*)())&GE_new29, 0},
{30, 0, (EIF_REFERENCE (*)())&GE_new30, 0},
{31, 0, (EIF_REFERENCE (*)())&GE_new31, 0},
{32, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new32, 0},
{33, 0, (EIF_REFERENCE (*)())&GE_new33, 0},
{34, 0, (EIF_REFERENCE (*)())&GE_new34, 0},
{35, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new35, 0},
{36, 0, (EIF_REFERENCE (*)())&GE_new36, 0},
{37, 0, (EIF_REFERENCE (*)())&GE_new37, 0},
{38, 0, (EIF_REFERENCE (*)())&GE_new38, 0},
{39, 0, (EIF_REFERENCE (*)())&GE_new39, 0},
{40, GE_TYPE_FLAG_EXPANDED, 0, 0},
{41, GE_TYPE_FLAG_DEFERRED, 0, 0},
{42, 0, (EIF_REFERENCE (*)())&GE_new42, 0},
{43, 0, (EIF_REFERENCE (*)())&GE_new43, &T43f60},
{44, 0, (EIF_REFERENCE (*)())&GE_new44, 0},
{45, 0, (EIF_REFERENCE (*)())&GE_new45, 0},
{46, 0, (EIF_REFERENCE (*)())&GE_new46, 0},
{47, GE_TYPE_FLAG_DEFERRED, 0, 0},
{48, GE_TYPE_FLAG_DEFERRED, 0, 0},
{49, 0, (EIF_REFERENCE (*)())&GE_new49, 0},
{50, 0, (EIF_REFERENCE (*)())&GE_new50, 0},
{51, GE_TYPE_FLAG_DEFERRED, 0, 0},
{52, 0, (EIF_REFERENCE (*)())&GE_new52, 0},
{53, 0, (EIF_REFERENCE (*)())&GE_new53, 0},
{54, 0, (EIF_REFERENCE (*)())&GE_new54, 0},
{55, GE_TYPE_FLAG_DEFERRED, 0, 0},
{56, 0, (EIF_REFERENCE (*)())&GE_new56, 0},
{57, 0, (EIF_REFERENCE (*)())&GE_new57, 0},
{58, 0, (EIF_REFERENCE (*)())&GE_new58, 0},
{59, 0, (EIF_REFERENCE (*)())&GE_new59, 0},
{60, 0, 0, 0},
{61, GE_TYPE_FLAG_DEFERRED, 0, 0},
{62, GE_TYPE_FLAG_DEFERRED, 0, 0},
{63, 0, (EIF_REFERENCE (*)())&GE_new63, 0},
{64, GE_TYPE_FLAG_DEFERRED, 0, 0},
{65, 0, (EIF_REFERENCE (*)())&GE_new65, 0},
{66, 0, (EIF_REFERENCE (*)())&GE_new66, 0},
{67, 0, (EIF_REFERENCE (*)())&GE_new67, 0},
{68, 0, (EIF_REFERENCE (*)())&GE_new68, 0},
{69, 0, (EIF_REFERENCE (*)())&GE_new69, 0},
{70, 0, (EIF_REFERENCE (*)())&GE_new70, 0},
{71, GE_TYPE_FLAG_DEFERRED, 0, 0},
{72, GE_TYPE_FLAG_DEFERRED, 0, 0},
{73, GE_TYPE_FLAG_DEFERRED, 0, 0},
{74, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new74, 0},
{75, 0, (EIF_REFERENCE (*)())&GE_new75, 0},
{76, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new76, 0},
{77, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new77, 0},
{78, 0, (EIF_REFERENCE (*)())&GE_new78, 0},
{79, 0, 0, 0},
{80, 0, (EIF_REFERENCE (*)())&GE_new80, 0},
{81, 0, (EIF_REFERENCE (*)())&GE_new81, 0},
{82, 0, (EIF_REFERENCE (*)())&GE_new82, 0},
{83, 0, (EIF_REFERENCE (*)())&GE_new83, 0},
{84, GE_TYPE_FLAG_DEFERRED, 0, 0},
{85, 0, (EIF_REFERENCE (*)())&GE_new85, 0},
{86, 0, (EIF_REFERENCE (*)())&GE_new86, 0},
{87, 0, (EIF_REFERENCE (*)())&GE_new87, 0},
{88, 0, (EIF_REFERENCE (*)())&GE_new88, 0},
{89, 0, (EIF_REFERENCE (*)())&GE_new89, 0},
{90, 0, (EIF_REFERENCE (*)())&GE_new90, 0},
{91, 0, (EIF_REFERENCE (*)())&GE_new91, 0},
{92, 0, (EIF_REFERENCE (*)())&GE_new92, 0},
{93, GE_TYPE_FLAG_DEFERRED, 0, 0},
{94, 0, (EIF_REFERENCE (*)())&GE_new94, 0},
{95, 0, (EIF_REFERENCE (*)())&GE_new95, 0},
{96, GE_TYPE_FLAG_DEFERRED, 0, 0},
{97, 0, (EIF_REFERENCE (*)())&GE_new97, 0},
{98, 0, 0, 0},
{99, 0, (EIF_REFERENCE (*)())&GE_new99, 0},
{100, 0, (EIF_REFERENCE (*)())&GE_new100, 0},
{101, GE_TYPE_FLAG_DEFERRED, 0, 0},
{102, 0, (EIF_REFERENCE (*)())&GE_new102, 0},
{103, 0, (EIF_REFERENCE (*)())&GE_new103, 0},
{104, GE_TYPE_FLAG_DEFERRED, 0, 0},
{105, 0, (EIF_REFERENCE (*)())&GE_new105, 0},
{106, 0, (EIF_REFERENCE (*)())&GE_new106, 0},
{107, 0, (EIF_REFERENCE (*)())&GE_new107, 0},
{108, 0, (EIF_REFERENCE (*)())&GE_new108, 0},
{109, 0, (EIF_REFERENCE (*)())&GE_new109, 0},
{110, GE_TYPE_FLAG_DEFERRED, 0, 0},
{111, 0, 0, 0},
{112, GE_TYPE_FLAG_DEFERRED, 0, 0},
{113, 0, (EIF_REFERENCE (*)())&GE_new113, 0},
{114, 0, (EIF_REFERENCE (*)())&GE_new114, 0},
{115, GE_TYPE_FLAG_DEFERRED, 0, 0},
{116, 0, (EIF_REFERENCE (*)())&GE_new116, 0},
{117, 0, (EIF_REFERENCE (*)())&GE_new117, 0},
{118, 0, (EIF_REFERENCE (*)())&GE_new118, 0},
{119, 0, (EIF_REFERENCE (*)())&GE_new119, 0},
{120, 0, (EIF_REFERENCE (*)())&GE_new120, 0},
{121, 0, 0, 0},
{122, 0, (EIF_REFERENCE (*)())&GE_new122, 0},
{123, 0, 0, 0},
{124, 0, (EIF_REFERENCE (*)())&GE_new124, 0},
{125, 0, 0, 0},
{126, 0, (EIF_REFERENCE (*)())&GE_new126, 0},
{127, 0, (EIF_REFERENCE (*)())&GE_new127, 0},
{128, 0, (EIF_REFERENCE (*)())&GE_new128, 0},
{129, 0, (EIF_REFERENCE (*)())&GE_new129, 0},
{130, 0, (EIF_REFERENCE (*)())&GE_new130, 0},
{131, 0, (EIF_REFERENCE (*)())&GE_new131, 0},
{132, 0, (EIF_REFERENCE (*)())&GE_new132, 0},
{133, 0, 0, 0},
{134, 0, (EIF_REFERENCE (*)())&GE_new134, 0},
{135, 0, (EIF_REFERENCE (*)())&GE_new135, 0},
{136, 0, (EIF_REFERENCE (*)())&GE_new136, 0},
{137, 0, (EIF_REFERENCE (*)())&GE_new137, 0},
{138, 0, (EIF_REFERENCE (*)())&GE_new138, 0},
{139, 0, (EIF_REFERENCE (*)())&GE_new139, 0},
{140, 0, (EIF_REFERENCE (*)())&GE_new140, 0},
{141, 0, (EIF_REFERENCE (*)())&GE_new141, 0},
{142, 0, (EIF_REFERENCE (*)())&GE_new142, 0},
{143, 0, (EIF_REFERENCE (*)())&GE_new143, 0},
{144, 0, (EIF_REFERENCE (*)())&GE_new144, 0},
{145, 0, (EIF_REFERENCE (*)())&GE_new145, 0},
{146, 0, (EIF_REFERENCE (*)())&GE_new146, 0},
{147, 0, (EIF_REFERENCE (*)())&GE_new147, 0},
{148, 0, (EIF_REFERENCE (*)())&GE_new148, 0},
{149, 0, (EIF_REFERENCE (*)())&GE_new149, 0},
{150, 0, (EIF_REFERENCE (*)())&GE_new150, 0},
{151, 0, (EIF_REFERENCE (*)())&GE_new151, 0},
{152, 0, (EIF_REFERENCE (*)())&GE_new152, 0},
{153, 0, (EIF_REFERENCE (*)())&GE_new153, 0},
{154, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new154, 0},
{155, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new155, 0},
{156, 0, (EIF_REFERENCE (*)())&GE_new156, 0},
{157, 0, 0, 0},
{158, 0, 0, 0},
{159, 0, (EIF_REFERENCE (*)())&GE_new159, &T159f9},
{160, 0, (EIF_REFERENCE (*)())&GE_new160, 0},
{161, 0, (EIF_REFERENCE (*)())&GE_new161, 0},
{162, 0, (EIF_REFERENCE (*)())&GE_new162, &T162f9},
{163, GE_TYPE_FLAG_DEFERRED, 0, 0},
{164, 0, (EIF_REFERENCE (*)())&GE_new164, 0},
{165, GE_TYPE_FLAG_DEFERRED, 0, 0},
{166, 0, (EIF_REFERENCE (*)())&GE_new166, 0},
{167, 0, (EIF_REFERENCE (*)())&GE_new167, &T167f36},
{168, 0, (EIF_REFERENCE (*)())&GE_new168, 0},
{169, GE_TYPE_FLAG_DEFERRED, 0, 0},
{170, 0, (EIF_REFERENCE (*)())&GE_new170, 0},
{171, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new171, 0},
{172, 0, (EIF_REFERENCE (*)())&GE_new172, 0},
{173, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new173, 0},
{174, 0, (EIF_REFERENCE (*)())&GE_new174, 0},
{175, 0, (EIF_REFERENCE (*)())&GE_new175, 0},
{176, GE_TYPE_FLAG_DEFERRED, 0, 0},
{177, 0, (EIF_REFERENCE (*)())&GE_new177, 0},
{178, 0, (EIF_REFERENCE (*)())&GE_new178, 0},
{179, 0, (EIF_REFERENCE (*)())&GE_new179, 0},
{180, 0, 0, 0},
{181, 0, (EIF_REFERENCE (*)())&GE_new181, 0},
{182, 0, (EIF_REFERENCE (*)())&GE_new182, 0},
{183, 0, (EIF_REFERENCE (*)())&GE_new183, 0},
{184, 0, (EIF_REFERENCE (*)())&GE_new184, 0},
{185, GE_TYPE_FLAG_DEFERRED, 0, 0},
{186, 0, (EIF_REFERENCE (*)())&GE_new186, 0},
{187, 0, (EIF_REFERENCE (*)())&GE_new187, 0},
{188, 0, (EIF_REFERENCE (*)())&GE_new188, 0},
{189, 0, (EIF_REFERENCE (*)())&GE_new189, 0},
{190, 0, (EIF_REFERENCE (*)())&GE_new190, 0},
{191, GE_TYPE_FLAG_DEFERRED, 0, 0},
{192, 0, (EIF_REFERENCE (*)())&GE_new192, 0},
{193, 0, (EIF_REFERENCE (*)())&GE_new193, 0},
{194, 0, (EIF_REFERENCE (*)())&GE_new194, 0},
{195, 0, (EIF_REFERENCE (*)())&GE_new195, 0},
{196, 0, (EIF_REFERENCE (*)())&GE_new196, 0},
{197, GE_TYPE_FLAG_DEFERRED, 0, 0},
{198, GE_TYPE_FLAG_DEFERRED, 0, 0},
{199, 0, (EIF_REFERENCE (*)())&GE_new199, 0},
{200, 0, (EIF_REFERENCE (*)())&GE_new200, 0},
{201, GE_TYPE_FLAG_DEFERRED, 0, 0},
{202, 0, (EIF_REFERENCE (*)())&GE_new202, 0},
{203, GE_TYPE_FLAG_DEFERRED, 0, 0},
{204, 0, (EIF_REFERENCE (*)())&GE_new204, 0},
{205, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new205, 0},
{206, 0, (EIF_REFERENCE (*)())&GE_new206, 0},
{207, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new207, 0},
{208, 0, (EIF_REFERENCE (*)())&GE_new208, 0},
{209, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new209, 0},
{210, 0, (EIF_REFERENCE (*)())&GE_new210, 0},
{211, 0, (EIF_REFERENCE (*)())&GE_new211, 0},
{212, 0, 0, 0},
{213, 0, (EIF_REFERENCE (*)())&GE_new213, 0},
{214, 0, (EIF_REFERENCE (*)())&GE_new214, 0},
{215, 0, (EIF_REFERENCE (*)())&GE_new215, 0},
{216, 0, (EIF_REFERENCE (*)())&GE_new216, 0},
{217, 0, (EIF_REFERENCE (*)())&GE_new217, 0},
{218, 0, (EIF_REFERENCE (*)())&GE_new218, 0},
{219, 0, (EIF_REFERENCE (*)())&GE_new219, 0},
{220, 0, (EIF_REFERENCE (*)())&GE_new220, 0},
{221, 0, (EIF_REFERENCE (*)())&GE_new221, 0},
{222, 0, (EIF_REFERENCE (*)())&GE_new222, 0},
{223, 0, (EIF_REFERENCE (*)())&GE_new223, 0},
{224, GE_TYPE_FLAG_DEFERRED, 0, 0},
{225, GE_TYPE_FLAG_DEFERRED, 0, 0},
{226, 0, (EIF_REFERENCE (*)())&GE_new226, 0},
{227, GE_TYPE_FLAG_DEFERRED, 0, 0},
{228, GE_TYPE_FLAG_DEFERRED, 0, 0},
{229, 0, (EIF_REFERENCE (*)())&GE_new229, 0},
{230, 0, (EIF_REFERENCE (*)())&GE_new230, 0},
{231, GE_TYPE_FLAG_DEFERRED, 0, 0},
{232, 0, (EIF_REFERENCE (*)())&GE_new232, 0},
{233, 0, (EIF_REFERENCE (*)())&GE_new233, 0},
{234, 0, (EIF_REFERENCE (*)())&GE_new234, 0},
{235, 0, (EIF_REFERENCE (*)())&GE_new235, 0},
{236, 0, (EIF_REFERENCE (*)())&GE_new236, 0},
{237, 0, (EIF_REFERENCE (*)())&GE_new237, 0},
{238, 0, (EIF_REFERENCE (*)())&GE_new238, 0},
{239, 0, (EIF_REFERENCE (*)())&GE_new239, 0},
{240, 0, (EIF_REFERENCE (*)())&GE_new240, 0},
{241, GE_TYPE_FLAG_DEFERRED, 0, 0},
{242, 0, (EIF_REFERENCE (*)())&GE_new242, 0},
{243, GE_TYPE_FLAG_DEFERRED, 0, 0},
{244, 0, (EIF_REFERENCE (*)())&GE_new244, 0},
{245, 0, (EIF_REFERENCE (*)())&GE_new245, 0},
{246, 0, (EIF_REFERENCE (*)())&GE_new246, 0},
{247, 0, (EIF_REFERENCE (*)())&GE_new247, 0},
{248, 0, (EIF_REFERENCE (*)())&GE_new248, 0},
{249, 0, (EIF_REFERENCE (*)())&GE_new249, 0},
{250, 0, (EIF_REFERENCE (*)())&GE_new250, 0},
{251, 0, (EIF_REFERENCE (*)())&GE_new251, 0},
{252, 0, (EIF_REFERENCE (*)())&GE_new252, 0},
{253, 0, (EIF_REFERENCE (*)())&GE_new253, 0},
{254, 0, (EIF_REFERENCE (*)())&GE_new254, 0},
{255, 0, (EIF_REFERENCE (*)())&GE_new255, 0},
{256, 0, (EIF_REFERENCE (*)())&GE_new256, 0},
{257, 0, (EIF_REFERENCE (*)())&GE_new257, 0},
{258, 0, (EIF_REFERENCE (*)())&GE_new258, 0},
{259, 0, (EIF_REFERENCE (*)())&GE_new259, 0},
{260, 0, (EIF_REFERENCE (*)())&GE_new260, 0},
{261, 0, (EIF_REFERENCE (*)())&GE_new261, 0},
{262, 0, (EIF_REFERENCE (*)())&GE_new262, 0},
{263, 0, (EIF_REFERENCE (*)())&GE_new263, 0},
{264, 0, (EIF_REFERENCE (*)())&GE_new264, 0},
{265, GE_TYPE_FLAG_DEFERRED, 0, 0},
{266, 0, (EIF_REFERENCE (*)())&GE_new266, 0},
{267, GE_TYPE_FLAG_DEFERRED, 0, 0},
{268, 0, (EIF_REFERENCE (*)())&GE_new268, 0},
{269, 0, (EIF_REFERENCE (*)())&GE_new269, 0},
{270, GE_TYPE_FLAG_DEFERRED, 0, 0},
{271, GE_TYPE_FLAG_DEFERRED, 0, 0},
{272, 0, (EIF_REFERENCE (*)())&GE_new272, 0},
{273, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new273, 0},
{274, 0, (EIF_REFERENCE (*)())&GE_new274, 0},
{275, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new275, 0},
{276, 0, (EIF_REFERENCE (*)())&GE_new276, 0},
{277, 0, (EIF_REFERENCE (*)())&GE_new277, 0},
{278, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new278, 0},
{279, 0, (EIF_REFERENCE (*)())&GE_new279, 0},
{280, 0, (EIF_REFERENCE (*)())&GE_new280, 0},
{281, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new281, 0},
{282, 0, (EIF_REFERENCE (*)())&GE_new282, 0},
{283, 0, (EIF_REFERENCE (*)())&GE_new283, 0},
{284, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new284, 0},
{285, 0, (EIF_REFERENCE (*)())&GE_new285, 0},
{286, 0, (EIF_REFERENCE (*)())&GE_new286, 0},
{287, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new287, 0},
{288, 0, (EIF_REFERENCE (*)())&GE_new288, 0},
{289, GE_TYPE_FLAG_DEFERRED, 0, 0},
{290, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new290, 0},
{291, 0, (EIF_REFERENCE (*)())&GE_new291, 0},
{292, GE_TYPE_FLAG_DEFERRED, 0, 0},
{293, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new293, 0},
{294, 0, (EIF_REFERENCE (*)())&GE_new294, 0},
{295, 0, 0, 0},
{296, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new296, 0},
{297, 0, (EIF_REFERENCE (*)())&GE_new297, 0},
{298, GE_TYPE_FLAG_DEFERRED, 0, 0},
{299, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new299, 0},
{300, 0, (EIF_REFERENCE (*)())&GE_new300, 0},
{301, 0, (EIF_REFERENCE (*)())&GE_new301, 0},
{302, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new302, 0},
{303, 0, (EIF_REFERENCE (*)())&GE_new303, 0},
{304, 0, (EIF_REFERENCE (*)())&GE_new304, 0},
{305, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new305, 0},
{306, 0, (EIF_REFERENCE (*)())&GE_new306, 0},
{307, 0, (EIF_REFERENCE (*)())&GE_new307, 0},
{308, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new308, 0},
{309, 0, (EIF_REFERENCE (*)())&GE_new309, 0},
{310, GE_TYPE_FLAG_DEFERRED, 0, 0},
{311, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new311, 0},
{312, 0, (EIF_REFERENCE (*)())&GE_new312, 0},
{313, 0, (EIF_REFERENCE (*)())&GE_new313, 0},
{314, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new314, 0},
{315, 0, (EIF_REFERENCE (*)())&GE_new315, 0},
{316, GE_TYPE_FLAG_DEFERRED, 0, 0},
{317, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new317, 0},
{318, 0, (EIF_REFERENCE (*)())&GE_new318, 0},
{319, GE_TYPE_FLAG_DEFERRED, 0, 0},
{320, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new320, 0},
{321, 0, (EIF_REFERENCE (*)())&GE_new321, 0},
{322, 0, (EIF_REFERENCE (*)())&GE_new322, 0},
{323, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new323, 0},
{324, 0, (EIF_REFERENCE (*)())&GE_new324, 0},
{325, 0, (EIF_REFERENCE (*)())&GE_new325, 0},
{326, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new326, 0},
{327, 0, (EIF_REFERENCE (*)())&GE_new327, 0},
{328, 0, (EIF_REFERENCE (*)())&GE_new328, 0},
{329, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new329, 0},
{330, 0, (EIF_REFERENCE (*)())&GE_new330, 0},
{331, 0, (EIF_REFERENCE (*)())&GE_new331, 0},
{332, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new332, 0},
{333, 0, (EIF_REFERENCE (*)())&GE_new333, 0},
{334, 0, (EIF_REFERENCE (*)())&GE_new334, 0},
{335, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new335, 0},
{336, 0, (EIF_REFERENCE (*)())&GE_new336, 0},
{337, 0, (EIF_REFERENCE (*)())&GE_new337, 0},
{338, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new338, 0},
{339, 0, (EIF_REFERENCE (*)())&GE_new339, 0},
{340, 0, (EIF_REFERENCE (*)())&GE_new340, 0},
{341, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new341, 0},
{342, 0, (EIF_REFERENCE (*)())&GE_new342, 0},
{343, 0, (EIF_REFERENCE (*)())&GE_new343, 0},
{344, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new344, 0},
{345, 0, (EIF_REFERENCE (*)())&GE_new345, 0},
{346, 0, (EIF_REFERENCE (*)())&GE_new346, 0},
{347, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new347, 0},
{348, 0, (EIF_REFERENCE (*)())&GE_new348, 0},
{349, 0, (EIF_REFERENCE (*)())&GE_new349, 0},
{350, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new350, 0},
{351, 0, (EIF_REFERENCE (*)())&GE_new351, 0},
{352, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new352, 0},
{353, 0, (EIF_REFERENCE (*)())&GE_new353, 0},
{354, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new354, 0},
{355, 0, (EIF_REFERENCE (*)())&GE_new355, 0},
{356, GE_TYPE_FLAG_DEFERRED, 0, 0},
{357, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new357, 0},
{358, 0, (EIF_REFERENCE (*)())&GE_new358, 0},
{359, GE_TYPE_FLAG_DEFERRED, 0, 0},
{360, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new360, 0},
{361, 0, (EIF_REFERENCE (*)())&GE_new361, 0},
{362, 0, (EIF_REFERENCE (*)())&GE_new362, 0},
{363, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new363, 0},
{364, 0, (EIF_REFERENCE (*)())&GE_new364, 0},
{365, GE_TYPE_FLAG_DEFERRED, 0, 0},
{366, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new366, 0},
{367, 0, (EIF_REFERENCE (*)())&GE_new367, 0},
{368, 0, (EIF_REFERENCE (*)())&GE_new368, 0},
{369, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new369, 0},
{370, 0, (EIF_REFERENCE (*)())&GE_new370, 0},
{371, 0, (EIF_REFERENCE (*)())&GE_new371, 0},
{372, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new372, 0},
{373, 0, (EIF_REFERENCE (*)())&GE_new373, 0},
{374, GE_TYPE_FLAG_DEFERRED, 0, 0},
{375, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new375, 0},
{376, 0, (EIF_REFERENCE (*)())&GE_new376, 0},
{377, 0, (EIF_REFERENCE (*)())&GE_new377, 0},
{378, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new378, 0},
{379, 0, (EIF_REFERENCE (*)())&GE_new379, 0},
{380, 0, (EIF_REFERENCE (*)())&GE_new380, 0},
{381, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new381, 0},
{382, 0, (EIF_REFERENCE (*)())&GE_new382, 0},
{383, 0, (EIF_REFERENCE (*)())&GE_new383, 0},
{384, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new384, 0},
{385, 0, (EIF_REFERENCE (*)())&GE_new385, 0},
{386, 0, (EIF_REFERENCE (*)())&GE_new386, 0},
{387, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new387, 0},
{388, 0, (EIF_REFERENCE (*)())&GE_new388, 0},
{389, GE_TYPE_FLAG_DEFERRED, 0, 0},
{390, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new390, 0},
{391, 0, (EIF_REFERENCE (*)())&GE_new391, 0},
{392, GE_TYPE_FLAG_DEFERRED, 0, 0},
{393, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new393, 0},
{394, 0, (EIF_REFERENCE (*)())&GE_new394, 0},
{395, GE_TYPE_FLAG_DEFERRED, 0, 0},
{396, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new396, 0},
{397, 0, (EIF_REFERENCE (*)())&GE_new397, 0},
{398, 0, (EIF_REFERENCE (*)())&GE_new398, 0},
{399, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new399, 0},
{400, 0, (EIF_REFERENCE (*)())&GE_new400, 0},
{401, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new401, 0},
{402, 0, (EIF_REFERENCE (*)())&GE_new402, 0},
{403, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new403, 0},
{404, 0, (EIF_REFERENCE (*)())&GE_new404, 0},
{405, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new405, 0},
{406, 0, (EIF_REFERENCE (*)())&GE_new406, 0},
{407, 0, (EIF_REFERENCE (*)())&GE_new407, 0},
{408, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new408, 0},
{409, 0, (EIF_REFERENCE (*)())&GE_new409, 0},
{410, GE_TYPE_FLAG_DEFERRED, 0, 0},
{411, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new411, 0},
{412, 0, (EIF_REFERENCE (*)())&GE_new412, 0},
{413, GE_TYPE_FLAG_DEFERRED, 0, 0},
{414, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new414, 0},
{415, 0, (EIF_REFERENCE (*)())&GE_new415, 0},
{416, GE_TYPE_FLAG_DEFERRED, 0, 0},
{417, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new417, 0},
{418, 0, (EIF_REFERENCE (*)())&GE_new418, 0},
{419, 0, (EIF_REFERENCE (*)())&GE_new419, 0},
{420, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new420, 0},
{421, 0, (EIF_REFERENCE (*)())&GE_new421, 0},
{422, 0, (EIF_REFERENCE (*)())&GE_new422, 0},
{423, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new423, 0},
{424, 0, (EIF_REFERENCE (*)())&GE_new424, 0},
{425, 0, (EIF_REFERENCE (*)())&GE_new425, 0},
{426, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new426, 0},
{427, 0, (EIF_REFERENCE (*)())&GE_new427, 0},
{428, GE_TYPE_FLAG_DEFERRED, 0, 0},
{429, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new429, 0},
{430, 0, (EIF_REFERENCE (*)())&GE_new430, 0},
{431, GE_TYPE_FLAG_DEFERRED, 0, 0},
{432, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new432, 0},
{433, 0, (EIF_REFERENCE (*)())&GE_new433, 0},
{434, GE_TYPE_FLAG_DEFERRED, 0, 0},
{435, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new435, 0},
{436, 0, (EIF_REFERENCE (*)())&GE_new436, 0},
{437, 0, (EIF_REFERENCE (*)())&GE_new437, 0},
{438, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new438, 0},
{439, 0, (EIF_REFERENCE (*)())&GE_new439, 0},
{440, 0, (EIF_REFERENCE (*)())&GE_new440, 0},
{441, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new441, 0},
{442, 0, (EIF_REFERENCE (*)())&GE_new442, 0},
{443, 0, (EIF_REFERENCE (*)())&GE_new443, 0},
{444, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new444, 0},
{445, 0, (EIF_REFERENCE (*)())&GE_new445, 0},
{446, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new446, 0},
{447, 0, (EIF_REFERENCE (*)())&GE_new447, 0},
{448, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new448, 0},
{449, 0, (EIF_REFERENCE (*)())&GE_new449, 0},
{450, 0, (EIF_REFERENCE (*)())&GE_new450, 0},
{451, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new451, 0},
{452, 0, (EIF_REFERENCE (*)())&GE_new452, 0},
{453, 0, (EIF_REFERENCE (*)())&GE_new453, 0},
{454, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new454, 0},
{455, 0, (EIF_REFERENCE (*)())&GE_new455, 0},
{456, 0, (EIF_REFERENCE (*)())&GE_new456, 0},
{457, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new457, 0},
{458, 0, (EIF_REFERENCE (*)())&GE_new458, 0},
{459, 0, (EIF_REFERENCE (*)())&GE_new459, 0},
{460, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new460, 0},
{461, 0, (EIF_REFERENCE (*)())&GE_new461, 0},
{462, 0, (EIF_REFERENCE (*)())&GE_new462, 0},
{463, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new463, 0},
{464, 0, (EIF_REFERENCE (*)())&GE_new464, 0},
{465, GE_TYPE_FLAG_DEFERRED, 0, 0},
{466, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new466, 0},
{467, 0, (EIF_REFERENCE (*)())&GE_new467, 0},
{468, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new468, 0},
{469, 0, (EIF_REFERENCE (*)())&GE_new469, 0},
{470, GE_TYPE_FLAG_DEFERRED, 0, 0},
{471, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new471, 0},
{472, 0, (EIF_REFERENCE (*)())&GE_new472, 0},
{473, GE_TYPE_FLAG_DEFERRED, 0, 0},
{474, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new474, 0},
{475, 0, (EIF_REFERENCE (*)())&GE_new475, 0},
{476, GE_TYPE_FLAG_DEFERRED, 0, 0},
{477, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new477, 0},
{478, 0, (EIF_REFERENCE (*)())&GE_new478, 0},
{479, GE_TYPE_FLAG_DEFERRED, 0, 0},
{480, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new480, 0},
{481, 0, (EIF_REFERENCE (*)())&GE_new481, 0},
{482, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new482, 0},
{483, 0, (EIF_REFERENCE (*)())&GE_new483, 0},
{484, 0, (EIF_REFERENCE (*)())&GE_new484, 0},
{485, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new485, 0},
{486, 0, (EIF_REFERENCE (*)())&GE_new486, 0},
{487, 0, (EIF_REFERENCE (*)())&GE_new487, 0},
{488, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new488, 0},
{489, 0, (EIF_REFERENCE (*)())&GE_new489, 0},
{490, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new490, 0},
{491, 0, (EIF_REFERENCE (*)())&GE_new491, 0},
{492, GE_TYPE_FLAG_DEFERRED, 0, 0},
{493, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new493, 0},
{494, 0, (EIF_REFERENCE (*)())&GE_new494, 0},
{495, 0, (EIF_REFERENCE (*)())&GE_new495, 0},
{496, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new496, 0},
{497, 0, (EIF_REFERENCE (*)())&GE_new497, 0},
{498, GE_TYPE_FLAG_DEFERRED, 0, 0},
{499, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new499, 0},
{500, 0, (EIF_REFERENCE (*)())&GE_new500, 0},
{501, 0, (EIF_REFERENCE (*)())&GE_new501, 0},
{502, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new502, 0},
{503, 0, (EIF_REFERENCE (*)())&GE_new503, 0},
{504, 0, (EIF_REFERENCE (*)())&GE_new504, 0},
{505, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new505, 0},
{506, 0, (EIF_REFERENCE (*)())&GE_new506, 0},
{507, GE_TYPE_FLAG_DEFERRED, 0, 0},
{508, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new508, 0},
{509, 0, (EIF_REFERENCE (*)())&GE_new509, 0},
{510, 0, (EIF_REFERENCE (*)())&GE_new510, 0},
{511, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new511, 0},
{512, 0, (EIF_REFERENCE (*)())&GE_new512, 0},
{513, 0, (EIF_REFERENCE (*)())&GE_new513, 0},
{514, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new514, 0},
{515, 0, (EIF_REFERENCE (*)())&GE_new515, 0},
{516, 0, (EIF_REFERENCE (*)())&GE_new516, 0},
{517, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new517, 0},
{518, 0, (EIF_REFERENCE (*)())&GE_new518, 0},
{519, GE_TYPE_FLAG_DEFERRED, 0, 0},
{520, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new520, 0},
{521, 0, (EIF_REFERENCE (*)())&GE_new521, 0},
{522, 0, (EIF_REFERENCE (*)())&GE_new522, 0},
{523, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new523, 0},
{524, 0, (EIF_REFERENCE (*)())&GE_new524, 0},
{525, GE_TYPE_FLAG_DEFERRED, 0, 0},
{526, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new526, 0},
{527, 0, (EIF_REFERENCE (*)())&GE_new527, 0},
{528, 0, (EIF_REFERENCE (*)())&GE_new528, 0},
{529, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new529, 0},
{530, 0, (EIF_REFERENCE (*)())&GE_new530, 0},
{531, 0, (EIF_REFERENCE (*)())&GE_new531, 0},
{532, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new532, 0},
{533, 0, (EIF_REFERENCE (*)())&GE_new533, 0},
{534, 0, (EIF_REFERENCE (*)())&GE_new534, 0},
{535, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new535, 0},
{536, 0, (EIF_REFERENCE (*)())&GE_new536, 0},
{537, 0, (EIF_REFERENCE (*)())&GE_new537, 0},
{538, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new538, 0},
{539, 0, (EIF_REFERENCE (*)())&GE_new539, 0},
{540, GE_TYPE_FLAG_DEFERRED, 0, 0},
{541, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new541, 0},
{542, 0, (EIF_REFERENCE (*)())&GE_new542, 0},
{543, 0, (EIF_REFERENCE (*)())&GE_new543, 0},
{544, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new544, 0},
{545, 0, (EIF_REFERENCE (*)())&GE_new545, 0},
{546, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new546, 0},
{547, 0, (EIF_REFERENCE (*)())&GE_new547, 0},
{548, GE_TYPE_FLAG_DEFERRED, 0, 0},
{549, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new549, 0},
{550, 0, (EIF_REFERENCE (*)())&GE_new550, 0},
{551, 0, (EIF_REFERENCE (*)())&GE_new551, 0},
{552, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new552, 0},
{553, 0, (EIF_REFERENCE (*)())&GE_new553, 0},
{554, GE_TYPE_FLAG_DEFERRED, 0, 0},
{555, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new555, 0},
{556, 0, (EIF_REFERENCE (*)())&GE_new556, 0},
{557, 0, (EIF_REFERENCE (*)())&GE_new557, 0},
{558, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new558, 0},
{559, 0, (EIF_REFERENCE (*)())&GE_new559, 0},
{560, 0, (EIF_REFERENCE (*)())&GE_new560, 0},
{561, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new561, 0},
{562, 0, (EIF_REFERENCE (*)())&GE_new562, 0},
{563, 0, (EIF_REFERENCE (*)())&GE_new563, 0},
{564, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new564, 0},
{565, 0, (EIF_REFERENCE (*)())&GE_new565, 0},
{566, GE_TYPE_FLAG_DEFERRED, 0, 0},
{567, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new567, 0},
{568, 0, (EIF_REFERENCE (*)())&GE_new568, 0},
{569, 0, (EIF_REFERENCE (*)())&GE_new569, 0},
{570, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new570, 0},
{571, 0, (EIF_REFERENCE (*)())&GE_new571, 0},
{572, 0, (EIF_REFERENCE (*)())&GE_new572, 0},
{573, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new573, 0},
{574, 0, (EIF_REFERENCE (*)())&GE_new574, 0},
{575, 0, (EIF_REFERENCE (*)())&GE_new575, 0},
{576, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new576, 0},
{577, 0, (EIF_REFERENCE (*)())&GE_new577, 0},
{578, GE_TYPE_FLAG_DEFERRED, 0, 0},
{579, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new579, 0},
{580, 0, (EIF_REFERENCE (*)())&GE_new580, 0},
{581, GE_TYPE_FLAG_DEFERRED, 0, 0},
{582, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new582, 0},
{583, 0, (EIF_REFERENCE (*)())&GE_new583, 0},
{584, GE_TYPE_FLAG_DEFERRED, 0, 0},
{585, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new585, 0},
{586, 0, (EIF_REFERENCE (*)())&GE_new586, 0},
{587, 0, (EIF_REFERENCE (*)())&GE_new587, 0},
{588, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new588, 0},
{589, 0, (EIF_REFERENCE (*)())&GE_new589, 0},
{590, GE_TYPE_FLAG_DEFERRED, 0, 0},
{591, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new591, 0},
{592, 0, (EIF_REFERENCE (*)())&GE_new592, 0},
{593, 0, (EIF_REFERENCE (*)())&GE_new593, 0},
{594, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new594, 0},
{595, 0, (EIF_REFERENCE (*)())&GE_new595, 0},
{596, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new596, 0},
{597, 0, (EIF_REFERENCE (*)())&GE_new597, 0},
{598, 0, (EIF_REFERENCE (*)())&GE_new598, 0},
{599, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new599, 0},
{600, 0, (EIF_REFERENCE (*)())&GE_new600, 0},
{601, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new601, 0},
{602, 0, (EIF_REFERENCE (*)())&GE_new602, 0},
{603, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new603, 0},
{604, 0, (EIF_REFERENCE (*)())&GE_new604, 0},
{605, 0, (EIF_REFERENCE (*)())&GE_new605, 0},
{606, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new606, 0},
{607, 0, (EIF_REFERENCE (*)())&GE_new607, 0},
{608, 0, (EIF_REFERENCE (*)())&GE_new608, 0},
{609, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new609, 0},
{610, 0, (EIF_REFERENCE (*)())&GE_new610, 0},
{611, GE_TYPE_FLAG_DEFERRED, 0, 0},
{612, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new612, 0},
{613, 0, (EIF_REFERENCE (*)())&GE_new613, 0},
{614, GE_TYPE_FLAG_DEFERRED, 0, 0},
{615, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new615, 0},
{616, 0, (EIF_REFERENCE (*)())&GE_new616, 0},
{617, 0, (EIF_REFERENCE (*)())&GE_new617, 0},
{618, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new618, 0},
{619, 0, (EIF_REFERENCE (*)())&GE_new619, 0},
{620, GE_TYPE_FLAG_DEFERRED, 0, 0},
{621, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new621, 0},
{622, 0, (EIF_REFERENCE (*)())&GE_new622, 0},
{623, GE_TYPE_FLAG_DEFERRED, 0, 0},
{624, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new624, 0},
{625, 0, (EIF_REFERENCE (*)())&GE_new625, 0},
{626, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new626, 0},
{627, 0, (EIF_REFERENCE (*)())&GE_new627, 0},
{628, 0, (EIF_REFERENCE (*)())&GE_new628, 0},
{629, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new629, 0},
{630, 0, (EIF_REFERENCE (*)())&GE_new630, 0},
{631, 0, (EIF_REFERENCE (*)())&GE_new631, 0},
{632, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new632, 0},
{633, 0, (EIF_REFERENCE (*)())&GE_new633, 0},
{634, 0, (EIF_REFERENCE (*)())&GE_new634, 0},
{635, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new635, 0},
{636, 0, (EIF_REFERENCE (*)())&GE_new636, 0},
{637, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new637, 0},
{638, 0, (EIF_REFERENCE (*)())&GE_new638, 0},
{639, GE_TYPE_FLAG_DEFERRED, 0, 0},
{640, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new640, 0},
{641, 0, (EIF_REFERENCE (*)())&GE_new641, 0},
{642, GE_TYPE_FLAG_DEFERRED, 0, 0},
{643, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new643, 0},
{644, 0, (EIF_REFERENCE (*)())&GE_new644, 0},
{645, 0, (EIF_REFERENCE (*)())&GE_new645, 0},
{646, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new646, 0},
{647, 0, (EIF_REFERENCE (*)())&GE_new647, 0},
{648, GE_TYPE_FLAG_DEFERRED, 0, 0},
{649, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new649, 0},
{650, 0, (EIF_REFERENCE (*)())&GE_new650, 0},
{651, GE_TYPE_FLAG_DEFERRED, 0, 0},
{652, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new652, 0},
{653, 0, (EIF_REFERENCE (*)())&GE_new653, 0},
{654, 0, (EIF_REFERENCE (*)())&GE_new654, 0},
{655, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new655, 0},
{656, 0, (EIF_REFERENCE (*)())&GE_new656, 0},
{657, 0, (EIF_REFERENCE (*)())&GE_new657, 0},
{658, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new658, 0},
{659, 0, (EIF_REFERENCE (*)())&GE_new659, 0},
{660, 0, (EIF_REFERENCE (*)())&GE_new660, 0},
{661, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new661, 0},
{662, 0, (EIF_REFERENCE (*)())&GE_new662, 0},
{663, 0, (EIF_REFERENCE (*)())&GE_new663, 0},
{664, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new664, 0},
{665, 0, (EIF_REFERENCE (*)())&GE_new665, 0},
{666, 0, (EIF_REFERENCE (*)())&GE_new666, 0},
{667, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new667, 0},
{668, 0, (EIF_REFERENCE (*)())&GE_new668, 0},
{669, GE_TYPE_FLAG_DEFERRED, 0, 0},
{670, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new670, 0},
{671, 0, 0, 0},
{672, 0, (EIF_REFERENCE (*)())&GE_new672, 0},
{673, 0, (EIF_REFERENCE (*)())&GE_new673, 0},
{674, 0, (EIF_REFERENCE (*)())&GE_new674, 0},
{675, 0, (EIF_REFERENCE (*)())&GE_new675, 0},
{676, 0, (EIF_REFERENCE (*)())&GE_new676, 0},
{677, 0, (EIF_REFERENCE (*)())&GE_new677, 0},
{678, 0, (EIF_REFERENCE (*)())&GE_new678, 0},
{679, 0, (EIF_REFERENCE (*)())&GE_new679, 0},
{680, 0, (EIF_REFERENCE (*)())&GE_new680, 0},
{681, 0, (EIF_REFERENCE (*)())&GE_new681, 0},
{682, 0, (EIF_REFERENCE (*)())&GE_new682, 0},
{683, 0, (EIF_REFERENCE (*)())&GE_new683, 0},
{684, 0, (EIF_REFERENCE (*)())&GE_new684, 0},
{685, 0, (EIF_REFERENCE (*)())&GE_new685, 0},
{686, 0, (EIF_REFERENCE (*)())&GE_new686, 0},
{687, 0, (EIF_REFERENCE (*)())&GE_new687, 0},
{688, 0, (EIF_REFERENCE (*)())&GE_new688, 0},
{689, 0, (EIF_REFERENCE (*)())&GE_new689, 0},
{690, 0, (EIF_REFERENCE (*)())&GE_new690, 0},
{691, GE_TYPE_FLAG_DEFERRED, 0, 0},
{692, 0, (EIF_REFERENCE (*)())&GE_new692, 0},
{693, 0, (EIF_REFERENCE (*)())&GE_new693, 0},
{694, 0, (EIF_REFERENCE (*)())&GE_new694, 0},
{695, 0, (EIF_REFERENCE (*)())&GE_new695, 0},
{696, 0, (EIF_REFERENCE (*)())&GE_new696, 0},
{697, 0, (EIF_REFERENCE (*)())&GE_new697, 0},
{698, 0, (EIF_REFERENCE (*)())&GE_new698, 0},
{699, 0, (EIF_REFERENCE (*)())&GE_new699, 0},
{700, 0, (EIF_REFERENCE (*)())&GE_new700, 0},
{701, 0, (EIF_REFERENCE (*)())&GE_new701, 0},
{702, GE_TYPE_FLAG_DEFERRED, 0, 0},
{703, 0, (EIF_REFERENCE (*)())&GE_new703, 0},
{704, 0, (EIF_REFERENCE (*)())&GE_new704, 0},
{705, GE_TYPE_FLAG_DEFERRED, 0, 0},
{706, 0, (EIF_REFERENCE (*)())&GE_new706, 0},
{707, 0, (EIF_REFERENCE (*)())&GE_new707, 0},
{708, 0, (EIF_REFERENCE (*)())&GE_new708, 0},
{709, 0, (EIF_REFERENCE (*)())&GE_new709, 0},
{710, 0, (EIF_REFERENCE (*)())&GE_new710, 0},
{711, 0, (EIF_REFERENCE (*)())&GE_new711, 0},
{712, 0, (EIF_REFERENCE (*)())&GE_new712, 0},
{713, GE_TYPE_FLAG_DEFERRED, 0, 0},
{714, 0, (EIF_REFERENCE (*)())&GE_new714, 0},
{715, 0, (EIF_REFERENCE (*)())&GE_new715, 0},
{716, 0, (EIF_REFERENCE (*)())&GE_new716, 0},
{717, 0, (EIF_REFERENCE (*)())&GE_new717, 0},
{718, 0, (EIF_REFERENCE (*)())&GE_new718, 0},
{719, 0, (EIF_REFERENCE (*)())&GE_new719, 0},
{720, 0, (EIF_REFERENCE (*)())&GE_new720, 0},
{721, GE_TYPE_FLAG_DEFERRED, 0, 0},
{722, GE_TYPE_FLAG_DEFERRED, 0, 0},
{723, 0, (EIF_REFERENCE (*)())&GE_new723, 0},
{724, 0, (EIF_REFERENCE (*)())&GE_new724, 0},
{725, GE_TYPE_FLAG_DEFERRED, 0, 0},
{726, 0, (EIF_REFERENCE (*)())&GE_new726, 0},
{727, GE_TYPE_FLAG_DEFERRED, 0, 0},
{728, 0, (EIF_REFERENCE (*)())&GE_new728, 0},
{729, 0, (EIF_REFERENCE (*)())&GE_new729, 0},
{730, 0, (EIF_REFERENCE (*)())&GE_new730, 0},
{731, 0, (EIF_REFERENCE (*)())&GE_new731, 0},
{732, 0, (EIF_REFERENCE (*)())&GE_new732, 0},
{733, 0, (EIF_REFERENCE (*)())&GE_new733, 0},
{734, GE_TYPE_FLAG_DEFERRED, 0, 0},
{735, 0, (EIF_REFERENCE (*)())&GE_new735, 0},
{736, 0, (EIF_REFERENCE (*)())&GE_new736, 0},
{737, GE_TYPE_FLAG_DEFERRED, 0, 0},
{738, 0, (EIF_REFERENCE (*)())&GE_new738, 0},
{739, 0, (EIF_REFERENCE (*)())&GE_new739, 0},
{740, 0, (EIF_REFERENCE (*)())&GE_new740, 0},
{741, 0, (EIF_REFERENCE (*)())&GE_new741, 0},
{742, GE_TYPE_FLAG_DEFERRED, 0, 0},
{743, 0, (EIF_REFERENCE (*)())&GE_new743, 0},
{744, 0, (EIF_REFERENCE (*)())&GE_new744, 0},
{745, 0, (EIF_REFERENCE (*)())&GE_new745, 0},
{746, 0, (EIF_REFERENCE (*)())&GE_new746, 0},
{747, 0, (EIF_REFERENCE (*)())&GE_new747, 0},
{748, 0, (EIF_REFERENCE (*)())&GE_new748, 0},
{749, 0, (EIF_REFERENCE (*)())&GE_new749, 0},
{750, 0, (EIF_REFERENCE (*)())&GE_new750, 0},
{751, 0, (EIF_REFERENCE (*)())&GE_new751, 0},
{752, 0, (EIF_REFERENCE (*)())&GE_new752, 0},
{753, 0, (EIF_REFERENCE (*)())&GE_new753, 0},
{754, 0, (EIF_REFERENCE (*)())&GE_new754, 0},
{755, 0, (EIF_REFERENCE (*)())&GE_new755, 0},
{756, 0, (EIF_REFERENCE (*)())&GE_new756, 0},
{757, 0, (EIF_REFERENCE (*)())&GE_new757, 0},
{758, 0, (EIF_REFERENCE (*)())&GE_new758, 0},
{759, 0, (EIF_REFERENCE (*)())&GE_new759, 0},
{760, 0, (EIF_REFERENCE (*)())&GE_new760, 0},
{761, 0, (EIF_REFERENCE (*)())&GE_new761, 0},
{762, GE_TYPE_FLAG_DEFERRED, 0, 0},
{763, 0, (EIF_REFERENCE (*)())&GE_new763, 0},
{764, 0, (EIF_REFERENCE (*)())&GE_new764, 0},
{765, 0, (EIF_REFERENCE (*)())&GE_new765, 0},
{766, 0, (EIF_REFERENCE (*)())&GE_new766, 0},
{767, 0, (EIF_REFERENCE (*)())&GE_new767, 0},
{768, 0, (EIF_REFERENCE (*)())&GE_new768, 0},
{769, 0, (EIF_REFERENCE (*)())&GE_new769, 0},
{770, 0, (EIF_REFERENCE (*)())&GE_new770, 0},
{771, GE_TYPE_FLAG_DEFERRED, 0, 0},
{772, 0, 0, 0},
{773, 0, (EIF_REFERENCE (*)())&GE_new773, 0},
{774, 0, (EIF_REFERENCE (*)())&GE_new774, 0},
{775, GE_TYPE_FLAG_DEFERRED, 0, 0},
{776, 0, (EIF_REFERENCE (*)())&GE_new776, 0},
{777, GE_TYPE_FLAG_DEFERRED, 0, 0},
{778, 0, (EIF_REFERENCE (*)())&GE_new778, 0},
{779, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new779, 0},
{780, 0, (EIF_REFERENCE (*)())&GE_new780, 0},
{781, 0, (EIF_REFERENCE (*)())&GE_new781, 0},
{782, 0, (EIF_REFERENCE (*)())&GE_new782, 0},
{783, 0, (EIF_REFERENCE (*)())&GE_new783, 0},
{784, 0, (EIF_REFERENCE (*)())&GE_new784, 0},
{785, 0, (EIF_REFERENCE (*)())&GE_new785, 0},
{786, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new786, 0},
{787, 0, (EIF_REFERENCE (*)())&GE_new787, 0},
{788, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new788, 0},
{789, 0, (EIF_REFERENCE (*)())&GE_new789, 0},
{790, 0, (EIF_REFERENCE (*)())&GE_new790, 0},
{791, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new791, 0},
{792, 0, (EIF_REFERENCE (*)())&GE_new792, 0},
{793, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new793, 0},
{794, GE_TYPE_FLAG_DEFERRED, 0, 0},
{795, 0, (EIF_REFERENCE (*)())&GE_new795, 0},
{796, 0, (EIF_REFERENCE (*)())&GE_new796, 0},
{797, 0, (EIF_REFERENCE (*)())&GE_new797, 0},
{798, GE_TYPE_FLAG_DEFERRED, 0, 0},
{799, 0, (EIF_REFERENCE (*)())&GE_new799, 0},
{800, 0, (EIF_REFERENCE (*)())&GE_new800, 0},
{801, 0, 0, 0},
{802, GE_TYPE_FLAG_DEFERRED, 0, 0},
{803, 0, (EIF_REFERENCE (*)())&GE_new803, 0},
{804, 0, (EIF_REFERENCE (*)())&GE_new804, 0},
{805, 0, (EIF_REFERENCE (*)())&GE_new805, 0},
{806, 0, (EIF_REFERENCE (*)())&GE_new806, 0},
{807, 0, 0, 0},
{808, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new808, 0},
{809, 0, (EIF_REFERENCE (*)())&GE_new809, 0},
{810, 0, (EIF_REFERENCE (*)())&GE_new810, 0},
{811, 0, (EIF_REFERENCE (*)())&GE_new811, 0},
{812, GE_TYPE_FLAG_DEFERRED, 0, 0},
{813, 0, (EIF_REFERENCE (*)())&GE_new813, 0},
{814, 0, (EIF_REFERENCE (*)())&GE_new814, 0},
{815, 0, (EIF_REFERENCE (*)())&GE_new815, 0},
{816, 0, (EIF_REFERENCE (*)())&GE_new816, 0},
{817, 0, (EIF_REFERENCE (*)())&GE_new817, 0},
{818, 0, (EIF_REFERENCE (*)())&GE_new818, 0},
{819, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new819, 0},
{820, 0, (EIF_REFERENCE (*)())&GE_new820, 0},
{821, 0, (EIF_REFERENCE (*)())&GE_new821, 0},
{822, 0, (EIF_REFERENCE (*)())&GE_new822, 0},
{823, GE_TYPE_FLAG_DEFERRED, 0, 0},
{824, 0, (EIF_REFERENCE (*)())&GE_new824, 0},
{825, 0, (EIF_REFERENCE (*)())&GE_new825, 0},
{826, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new826, 0},
{827, GE_TYPE_FLAG_DEFERRED, 0, 0},
{828, 0, (EIF_REFERENCE (*)())&GE_new828, 0},
{829, 0, 0, 0},
{830, 0, (EIF_REFERENCE (*)())&GE_new830, 0},
{831, 0, (EIF_REFERENCE (*)())&GE_new831, 0},
{832, 0, (EIF_REFERENCE (*)())&GE_new832, 0},
{833, 0, (EIF_REFERENCE (*)())&GE_new833, 0},
{834, 0, (EIF_REFERENCE (*)())&GE_new834, 0},
{835, 0, (EIF_REFERENCE (*)())&GE_new835, 0},
{836, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new836, 0},
{837, 0, (EIF_REFERENCE (*)())&GE_new837, 0},
{838, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new838, 0},
{839, GE_TYPE_FLAG_DEFERRED, 0, 0},
{840, 0, (EIF_REFERENCE (*)())&GE_new840, 0},
{841, GE_TYPE_FLAG_DEFERRED, 0, 0},
{842, 0, (EIF_REFERENCE (*)())&GE_new842, 0},
{843, 0, (EIF_REFERENCE (*)())&GE_new843, 0},
{844, 0, (EIF_REFERENCE (*)())&GE_new844, 0},
{845, 0, (EIF_REFERENCE (*)())&GE_new845, 0},
{846, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new846, 0},
{847, 0, (EIF_REFERENCE (*)())&GE_new847, 0},
{848, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new848, 0},
{849, 0, 0, 0},
{850, 0, (EIF_REFERENCE (*)())&GE_new850, 0},
{851, GE_TYPE_FLAG_DEFERRED, 0, 0},
{852, 0, (EIF_REFERENCE (*)())&GE_new852, 0},
{853, 0, (EIF_REFERENCE (*)())&GE_new853, 0},
{854, 0, (EIF_REFERENCE (*)())&GE_new854, 0},
{855, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new855, 0},
{856, GE_TYPE_FLAG_DEFERRED, 0, 0},
{857, GE_TYPE_FLAG_DEFERRED, 0, 0},
{858, 0, (EIF_REFERENCE (*)())&GE_new858, 0},
{859, 0, (EIF_REFERENCE (*)())&GE_new859, 0},
{860, 0, (EIF_REFERENCE (*)())&GE_new860, 0},
{861, 0, 0, 0},
{862, 0, (EIF_REFERENCE (*)())&GE_new862, 0},
{863, 0, (EIF_REFERENCE (*)())&GE_new863, 0},
{864, 0, (EIF_REFERENCE (*)())&GE_new864, 0},
{865, 0, (EIF_REFERENCE (*)())&GE_new865, 0},
{866, 0, (EIF_REFERENCE (*)())&GE_new866, 0},
{867, 0, (EIF_REFERENCE (*)())&GE_new867, 0},
{868, GE_TYPE_FLAG_DEFERRED, 0, 0},
{869, 0, (EIF_REFERENCE (*)())&GE_new869, 0},
{870, GE_TYPE_FLAG_DEFERRED, 0, 0},
{871, GE_TYPE_FLAG_DEFERRED, 0, 0},
{872, 0, (EIF_REFERENCE (*)())&GE_new872, 0},
{873, 0, (EIF_REFERENCE (*)())&GE_new873, 0},
{874, 0, (EIF_REFERENCE (*)())&GE_new874, 0},
{875, 0, (EIF_REFERENCE (*)())&GE_new875, 0},
{876, 0, (EIF_REFERENCE (*)())&GE_new876, 0},
{877, 0, (EIF_REFERENCE (*)())&GE_new877, 0},
{878, 0, (EIF_REFERENCE (*)())&GE_new878, 0},
{879, 0, (EIF_REFERENCE (*)())&GE_new879, 0},
{880, 0, (EIF_REFERENCE (*)())&GE_new880, 0},
{881, 0, (EIF_REFERENCE (*)())&GE_new881, 0},
{882, 0, (EIF_REFERENCE (*)())&GE_new882, 0},
{883, 0, (EIF_REFERENCE (*)())&GE_new883, 0},
{884, 0, (EIF_REFERENCE (*)())&GE_new884, 0},
{885, 0, (EIF_REFERENCE (*)())&GE_new885, 0},
{886, 0, (EIF_REFERENCE (*)())&GE_new886, 0},
{887, 0, (EIF_REFERENCE (*)())&GE_new887, 0},
{888, 0, (EIF_REFERENCE (*)())&GE_new888, 0},
{889, 0, (EIF_REFERENCE (*)())&GE_new889, 0},
{890, 0, (EIF_REFERENCE (*)())&GE_new890, 0},
{891, 0, (EIF_REFERENCE (*)())&GE_new891, 0},
{892, GE_TYPE_FLAG_DEFERRED, 0, 0},
{893, 0, (EIF_REFERENCE (*)())&GE_new893, 0},
{894, 0, (EIF_REFERENCE (*)())&GE_new894, 0},
{895, GE_TYPE_FLAG_DEFERRED, 0, 0},
{896, 0, (EIF_REFERENCE (*)())&GE_new896, 0},
{897, 0, (EIF_REFERENCE (*)())&GE_new897, 0},
{898, 0, (EIF_REFERENCE (*)())&GE_new898, 0},
{899, GE_TYPE_FLAG_DEFERRED, 0, 0},
{900, GE_TYPE_FLAG_DEFERRED, 0, 0},
{901, GE_TYPE_FLAG_DEFERRED, 0, 0},
{902, GE_TYPE_FLAG_DEFERRED, 0, 0},
{903, GE_TYPE_FLAG_DEFERRED, 0, 0},
{904, 0, (EIF_REFERENCE (*)())&GE_new904, 0},
{905, GE_TYPE_FLAG_DEFERRED, 0, 0},
{906, GE_TYPE_FLAG_DEFERRED, 0, 0},
{907, 0, (EIF_REFERENCE (*)())&GE_new907, 0},
{908, GE_TYPE_FLAG_DEFERRED, 0, 0},
{909, 0, (EIF_REFERENCE (*)())&GE_new909, 0},
{910, 0, (EIF_REFERENCE (*)())&GE_new910, 0},
{911, 0, 0, 0},
{912, 0, (EIF_REFERENCE (*)())&GE_new912, 0},
{913, 0, (EIF_REFERENCE (*)())&GE_new913, 0},
{914, 0, (EIF_REFERENCE (*)())&GE_new914, 0},
{915, GE_TYPE_FLAG_DEFERRED, 0, 0},
{916, 0, (EIF_REFERENCE (*)())&GE_new916, 0},
{917, 0, (EIF_REFERENCE (*)())&GE_new917, 0},
{918, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new918, 0},
{919, 0, (EIF_REFERENCE (*)())&GE_new919, 0},
{920, 0, (EIF_REFERENCE (*)())&GE_new920, 0},
{921, 0, (EIF_REFERENCE (*)())&GE_new921, 0},
{922, 0, (EIF_REFERENCE (*)())&GE_new922, 0},
{923, 0, (EIF_REFERENCE (*)())&GE_new923, 0},
{924, 0, (EIF_REFERENCE (*)())&GE_new924, 0},
{925, 0, (EIF_REFERENCE (*)())&GE_new925, 0},
{926, 0, (EIF_REFERENCE (*)())&GE_new926, 0},
{927, 0, (EIF_REFERENCE (*)())&GE_new927, 0},
{928, 0, (EIF_REFERENCE (*)())&GE_new928, 0},
{929, 0, (EIF_REFERENCE (*)())&GE_new929, 0},
{930, 0, (EIF_REFERENCE (*)())&GE_new930, 0},
{931, 0, (EIF_REFERENCE (*)())&GE_new931, 0},
{932, 0, (EIF_REFERENCE (*)())&GE_new932, 0},
{933, 0, (EIF_REFERENCE (*)())&GE_new933, 0},
{934, 0, (EIF_REFERENCE (*)())&GE_new934, 0},
{935, 0, (EIF_REFERENCE (*)())&GE_new935, 0},
{936, 0, (EIF_REFERENCE (*)())&GE_new936, 0},
{937, 0, (EIF_REFERENCE (*)())&GE_new937, 0},
{938, 0, (EIF_REFERENCE (*)())&GE_new938, 0},
{939, 0, (EIF_REFERENCE (*)())&GE_new939, 0},
{940, 0, (EIF_REFERENCE (*)())&GE_new940, 0},
{941, 0, (EIF_REFERENCE (*)())&GE_new941, 0},
{942, 0, (EIF_REFERENCE (*)())&GE_new942, 0},
{943, 0, (EIF_REFERENCE (*)())&GE_new943, 0},
{944, 0, (EIF_REFERENCE (*)())&GE_new944, 0},
{945, 0, (EIF_REFERENCE (*)())&GE_new945, 0},
{946, 0, (EIF_REFERENCE (*)())&GE_new946, 0},
{947, 0, (EIF_REFERENCE (*)())&GE_new947, 0},
{948, 0, (EIF_REFERENCE (*)())&GE_new948, 0},
{949, GE_TYPE_FLAG_DEFERRED, 0, 0},
{950, 0, (EIF_REFERENCE (*)())&GE_new950, 0},
{951, 0, (EIF_REFERENCE (*)())&GE_new951, 0},
{952, 0, (EIF_REFERENCE (*)())&GE_new952, 0},
{953, 0, (EIF_REFERENCE (*)())&GE_new953, 0},
{954, 0, (EIF_REFERENCE (*)())&GE_new954, 0},
{955, 0, (EIF_REFERENCE (*)())&GE_new955, 0},
{956, 0, (EIF_REFERENCE (*)())&GE_new956, 0},
{957, 0, (EIF_REFERENCE (*)())&GE_new957, 0},
{958, 0, (EIF_REFERENCE (*)())&GE_new958, 0},
{959, 0, (EIF_REFERENCE (*)())&GE_new959, 0},
{960, 0, (EIF_REFERENCE (*)())&GE_new960, 0},
{961, 0, (EIF_REFERENCE (*)())&GE_new961, 0},
{962, 0, (EIF_REFERENCE (*)())&GE_new962, 0},
{963, 0, (EIF_REFERENCE (*)())&GE_new963, &T963f32},
{964, 0, (EIF_REFERENCE (*)())&GE_new964, 0},
{965, 0, (EIF_REFERENCE (*)())&GE_new965, 0},
{966, 0, (EIF_REFERENCE (*)())&GE_new966, 0},
{967, 0, (EIF_REFERENCE (*)())&GE_new967, 0},
{968, 0, (EIF_REFERENCE (*)())&GE_new968, 0},
{969, 0, (EIF_REFERENCE (*)())&GE_new969, 0},
{970, 0, (EIF_REFERENCE (*)())&GE_new970, 0},
{971, GE_TYPE_FLAG_TUPLE, 0, 0},
{972, GE_TYPE_FLAG_DEFERRED, 0, 0},
{973, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new973, 0},
{974, 0, (EIF_REFERENCE (*)())&GE_new974, 0},
{975, 0, (EIF_REFERENCE (*)())&GE_new975, 0},
{976, GE_TYPE_FLAG_DEFERRED, 0, 0},
{977, 0, (EIF_REFERENCE (*)())&GE_new977, 0},
{978, 0, (EIF_REFERENCE (*)())&GE_new978, 0},
{979, GE_TYPE_FLAG_DEFERRED, 0, 0},
{980, 0, (EIF_REFERENCE (*)())&GE_new980, 0},
{981, 0, (EIF_REFERENCE (*)())&GE_new981, 0},
{982, 0, (EIF_REFERENCE (*)())&GE_new982, 0},
{983, GE_TYPE_FLAG_DEFERRED, 0, 0},
{984, GE_TYPE_FLAG_DEFERRED, 0, 0},
{985, GE_TYPE_FLAG_DEFERRED, 0, 0},
{986, GE_TYPE_FLAG_DEFERRED, 0, 0},
{987, GE_TYPE_FLAG_DEFERRED, 0, 0},
{988, 0, (EIF_REFERENCE (*)())&GE_new988, 0},
{989, GE_TYPE_FLAG_DEFERRED, 0, 0},
{990, GE_TYPE_FLAG_DEFERRED, 0, 0},
{991, GE_TYPE_FLAG_DEFERRED, 0, 0},
{992, 0, (EIF_REFERENCE (*)())&GE_new992, 0},
{993, 0, (EIF_REFERENCE (*)())&GE_new993, 0},
{994, 0, (EIF_REFERENCE (*)())&GE_new994, 0},
{995, GE_TYPE_FLAG_DEFERRED, 0, 0},
{996, 0, (EIF_REFERENCE (*)())&GE_new996, 0},
{997, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new997, 0},
{998, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new998, 0},
{999, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new999, 0},
{1000, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1000, 0},
{1001, 0, (EIF_REFERENCE (*)())&GE_new1001, 0},
{1002, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1003, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1004, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1005, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1006, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1006, 0},
{1007, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1007, 0},
{1008, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1009, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1010, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1011, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1011, 0},
{1012, 0, 0, 0},
{1013, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1014, 0, 0, 0},
{1015, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1016, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1016, 0},
{1017, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1017, 0},
{1018, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1018, 0},
{1019, 0, (EIF_REFERENCE (*)())&GE_new1019, 0},
{1020, 0, (EIF_REFERENCE (*)())&GE_new1020, 0},
{1021, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1022, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1023, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1023, 0},
{1024, 0, (EIF_REFERENCE (*)())&GE_new1024, 0},
{1025, 0, 0, 0},
{1026, 0, (EIF_REFERENCE (*)())&GE_new1026, 0},
{1027, 0, (EIF_REFERENCE (*)())&GE_new1027, 0},
{1028, 0, 0, 0},
{1029, 0, (EIF_REFERENCE (*)())&GE_new1029, 0},
{1030, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1031, 0, (EIF_REFERENCE (*)())&GE_new1031, 0},
{1032, 0, (EIF_REFERENCE (*)())&GE_new1032, 0},
{1033, 0, 0, 0},
{1034, 0, (EIF_REFERENCE (*)())&GE_new1034, 0},
{1035, 0, (EIF_REFERENCE (*)())&GE_new1035, 0},
{1036, 0, (EIF_REFERENCE (*)())&GE_new1036, 0},
{1037, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1038, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1039, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1040, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1041, 0, (EIF_REFERENCE (*)())&GE_new1041, 0},
{1042, 0, 0, 0},
{1043, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1044, 0, (EIF_REFERENCE (*)())&GE_new1044, 0},
{1045, 0, (EIF_REFERENCE (*)())&GE_new1045, 0},
{1046, 0, (EIF_REFERENCE (*)())&GE_new1046, 0},
{1047, 0, (EIF_REFERENCE (*)())&GE_new1047, 0},
{1048, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1049, 0, 0, 0},
{1050, 0, (EIF_REFERENCE (*)())&GE_new1050, 0},
{1051, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1052, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1052, 0},
{1053, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1054, 0, (EIF_REFERENCE (*)())&GE_new1054, 0},
{1055, 0, (EIF_REFERENCE (*)())&GE_new1055, 0},
{1056, 0, (EIF_REFERENCE (*)())&GE_new1056, 0},
{1057, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1058, 0, (EIF_REFERENCE (*)())&GE_new1058, 0},
{1059, 0, (EIF_REFERENCE (*)())&GE_new1059, 0},
{1060, 0, (EIF_REFERENCE (*)())&GE_new1060, 0},
{1061, 0, (EIF_REFERENCE (*)())&GE_new1061, 0},
{1062, 0, (EIF_REFERENCE (*)())&GE_new1062, 0},
{1063, 0, (EIF_REFERENCE (*)())&GE_new1063, 0},
{1064, 0, (EIF_REFERENCE (*)())&GE_new1064, 0},
{1065, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1066, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1067, 0, (EIF_REFERENCE (*)())&GE_new1067, 0},
{1068, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1069, 0, (EIF_REFERENCE (*)())&GE_new1069, 0},
{1070, 0, (EIF_REFERENCE (*)())&GE_new1070, 0},
{1071, 0, (EIF_REFERENCE (*)())&GE_new1071, &T1071f32},
{1072, 0, (EIF_REFERENCE (*)())&GE_new1072, &T1072f32},
{1073, 0, (EIF_REFERENCE (*)())&GE_new1073, 0},
{1074, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1074, 0},
{1075, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1075, 0},
{1076, GE_TYPE_FLAG_EXPANDED, 0, 0},
{1077, 0, 0, 0},
{1078, 0, (EIF_REFERENCE (*)())&GE_new1078, 0},
{1079, 0, (EIF_REFERENCE (*)())&GE_new1079, 0},
{1080, 0, (EIF_REFERENCE (*)())&GE_new1080, 0},
{1081, 0, (EIF_REFERENCE (*)())&GE_new1081, 0},
{1082, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1082, 0},
{1083, 0, 0, 0},
{1084, 0, 0, 0},
{1085, 0, (EIF_REFERENCE (*)())&GE_new1085, 0},
{1086, 0, (EIF_REFERENCE (*)())&GE_new1086, 0},
{1087, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1087, 0},
{1088, 0, (EIF_REFERENCE (*)())&GE_new1088, 0},
{1089, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1090, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1090, 0},
{1091, 0, (EIF_REFERENCE (*)())&GE_new1091, 0},
{1092, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1092, 0},
{1093, 0, (EIF_REFERENCE (*)())&GE_new1093, 0},
{1094, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1094, 0},
{1095, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1096, 0, (EIF_REFERENCE (*)())&GE_new1096, 0},
{1097, 0, (EIF_REFERENCE (*)())&GE_new1097, 0},
{1098, 0, (EIF_REFERENCE (*)())&GE_new1098, 0},
{1099, 0, 0, 0},
{1100, 0, (EIF_REFERENCE (*)())&GE_new1100, 0},
{1101, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1101, 0},
{1102, 0, (EIF_REFERENCE (*)())&GE_new1102, 0},
{1103, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1103, 0},
{1104, 0, (EIF_REFERENCE (*)())&GE_new1104, 0},
{1105, 0, (EIF_REFERENCE (*)())&GE_new1105, 0},
{1106, 0, 0, 0},
{1107, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1107, 0},
{1108, 0, (EIF_REFERENCE (*)())&GE_new1108, 0},
{1109, 0, (EIF_REFERENCE (*)())&GE_new1109, 0},
{1110, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1110, 0},
{1111, 0, (EIF_REFERENCE (*)())&GE_new1111, 0},
{1112, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1112, 0},
{1113, 0, (EIF_REFERENCE (*)())&GE_new1113, 0},
{1114, 0, (EIF_REFERENCE (*)())&GE_new1114, 0},
{1115, 0, (EIF_REFERENCE (*)())&GE_new1115, 0},
{1116, 0, (EIF_REFERENCE (*)())&GE_new1116, 0},
{1117, 0, (EIF_REFERENCE (*)())&GE_new1117, 0},
{1118, 0, (EIF_REFERENCE (*)())&GE_new1118, 0},
{1119, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1120, 0, (EIF_REFERENCE (*)())&GE_new1120, 0},
{1121, 0, (EIF_REFERENCE (*)())&GE_new1121, 0},
{1122, 0, (EIF_REFERENCE (*)())&GE_new1122, 0},
{1123, 0, (EIF_REFERENCE (*)())&GE_new1123, 0},
{1124, 0, (EIF_REFERENCE (*)())&GE_new1124, 0},
{1125, 0, (EIF_REFERENCE (*)())&GE_new1125, 0},
{1126, 0, (EIF_REFERENCE (*)())&GE_new1126, 0},
{1127, 0, 0, 0},
{1128, 0, (EIF_REFERENCE (*)())&GE_new1128, 0},
{1129, 0, (EIF_REFERENCE (*)())&GE_new1129, 0},
{1130, 0, 0, 0},
{1131, 0, (EIF_REFERENCE (*)())&GE_new1131, 0},
{1132, 0, (EIF_REFERENCE (*)())&GE_new1132, 0},
{1133, 0, (EIF_REFERENCE (*)())&GE_new1133, 0},
{1134, 0, (EIF_REFERENCE (*)())&GE_new1134, 0},
{1135, 0, (EIF_REFERENCE (*)())&GE_new1135, 0},
{1136, 0, (EIF_REFERENCE (*)())&GE_new1136, 0},
{1137, 0, (EIF_REFERENCE (*)())&GE_new1137, 0},
{1138, 0, (EIF_REFERENCE (*)())&GE_new1138, 0},
{1139, 0, (EIF_REFERENCE (*)())&GE_new1139, 0},
{1140, 0, (EIF_REFERENCE (*)())&GE_new1140, 0},
{1141, 0, (EIF_REFERENCE (*)())&GE_new1141, 0},
{1142, 0, (EIF_REFERENCE (*)())&GE_new1142, 0},
{1143, 0, (EIF_REFERENCE (*)())&GE_new1143, 0},
{1144, 0, (EIF_REFERENCE (*)())&GE_new1144, 0},
{1145, 0, (EIF_REFERENCE (*)())&GE_new1145, 0},
{1146, 0, (EIF_REFERENCE (*)())&GE_new1146, 0},
{1147, 0, (EIF_REFERENCE (*)())&GE_new1147, 0},
{1148, 0, (EIF_REFERENCE (*)())&GE_new1148, 0},
{1149, 0, (EIF_REFERENCE (*)())&GE_new1149, 0},
{1150, 0, (EIF_REFERENCE (*)())&GE_new1150, 0},
{1151, 0, (EIF_REFERENCE (*)())&GE_new1151, 0},
{1152, 0, (EIF_REFERENCE (*)())&GE_new1152, 0},
{1153, 0, (EIF_REFERENCE (*)())&GE_new1153, 0},
{1154, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1155, 0, (EIF_REFERENCE (*)())&GE_new1155, 0},
{1156, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1156, 0},
{1157, 0, (EIF_REFERENCE (*)())&GE_new1157, 0},
{1158, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1158, 0},
{1159, 0, (EIF_REFERENCE (*)())&GE_new1159, 0},
{1160, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1160, 0},
{1161, 0, (EIF_REFERENCE (*)())&GE_new1161, 0},
{1162, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1162, 0},
{1163, 0, (EIF_REFERENCE (*)())&GE_new1163, 0},
{1164, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1164, 0},
{1165, 0, (EIF_REFERENCE (*)())&GE_new1165, 0},
{1166, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1166, 0},
{1167, 0, (EIF_REFERENCE (*)())&GE_new1167, 0},
{1168, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1168, 0},
{1169, 0, (EIF_REFERENCE (*)())&GE_new1169, 0},
{1170, 0, (EIF_REFERENCE (*)())&GE_new1170, 0},
{1171, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1171, 0},
{1172, 0, (EIF_REFERENCE (*)())&GE_new1172, 0},
{1173, 0, (EIF_REFERENCE (*)())&GE_new1173, 0},
{1174, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1174, 0},
{1175, 0, (EIF_REFERENCE (*)())&GE_new1175, 0},
{1176, 0, (EIF_REFERENCE (*)())&GE_new1176, 0},
{1177, 0, (EIF_REFERENCE (*)())&GE_new1177, 0},
{1178, 0, (EIF_REFERENCE (*)())&GE_new1178, 0},
{1179, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1179, 0},
{1180, 0, (EIF_REFERENCE (*)())&GE_new1180, 0},
{1181, 0, 0, 0},
{1182, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1182, 0},
{1183, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1184, 0, (EIF_REFERENCE (*)())&GE_new1184, 0},
{1185, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1186, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1186, 0},
{1187, 0, (EIF_REFERENCE (*)())&GE_new1187, 0},
{1188, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1189, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1189, 0},
{1190, 0, (EIF_REFERENCE (*)())&GE_new1190, 0},
{1191, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1191, 0},
{1192, 0, (EIF_REFERENCE (*)())&GE_new1192, 0},
{1193, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1193, 0},
{1194, 0, (EIF_REFERENCE (*)())&GE_new1194, 0},
{1195, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1195, 0},
{1196, 0, (EIF_REFERENCE (*)())&GE_new1196, 0},
{1197, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1197, 0},
{1198, 0, (EIF_REFERENCE (*)())&GE_new1198, 0},
{1199, 0, (EIF_REFERENCE (*)())&GE_new1199, 0},
{1200, 0, (EIF_REFERENCE (*)())&GE_new1200, 0},
{1201, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1201, 0},
{1202, 0, 0, 0},
{1203, 0, 0, 0},
{1204, 0, (EIF_REFERENCE (*)())&GE_new1204, 0},
{1205, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1205, 0},
{1206, 0, 0, 0},
{1207, 0, 0, 0},
{1208, 0, (EIF_REFERENCE (*)())&GE_new1208, 0},
{1209, 0, (EIF_REFERENCE (*)())&GE_new1209, 0},
{1210, 0, (EIF_REFERENCE (*)())&GE_new1210, 0},
{1211, 0, (EIF_REFERENCE (*)())&GE_new1211, 0},
{1212, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1213, 0, (EIF_REFERENCE (*)())&GE_new1213, 0},
{1214, 0, (EIF_REFERENCE (*)())&GE_new1214, 0},
{1215, 0, (EIF_REFERENCE (*)())&GE_new1215, 0},
{1216, 0, (EIF_REFERENCE (*)())&GE_new1216, 0},
{1217, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1218, 0, (EIF_REFERENCE (*)())&GE_new1218, 0},
{1219, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1220, 0, (EIF_REFERENCE (*)())&GE_new1220, 0},
{1221, 0, (EIF_REFERENCE (*)())&GE_new1221, 0},
{1222, 0, (EIF_REFERENCE (*)())&GE_new1222, 0},
{1223, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1223, 0},
{1224, 0, (EIF_REFERENCE (*)())&GE_new1224, 0},
{1225, 0, (EIF_REFERENCE (*)())&GE_new1225, 0},
{1226, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1226, 0},
{1227, 0, (EIF_REFERENCE (*)())&GE_new1227, 0},
{1228, 0, (EIF_REFERENCE (*)())&GE_new1228, 0},
{1229, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1229, 0},
{1230, 0, (EIF_REFERENCE (*)())&GE_new1230, 0},
{1231, 0, (EIF_REFERENCE (*)())&GE_new1231, 0},
{1232, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1232, 0},
{1233, 0, (EIF_REFERENCE (*)())&GE_new1233, 0},
{1234, 0, (EIF_REFERENCE (*)())&GE_new1234, 0},
{1235, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1235, 0},
{1236, 0, (EIF_REFERENCE (*)())&GE_new1236, 0},
{1237, 0, (EIF_REFERENCE (*)())&GE_new1237, 0},
{1238, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1238, 0},
{1239, 0, (EIF_REFERENCE (*)())&GE_new1239, 0},
{1240, 0, (EIF_REFERENCE (*)())&GE_new1240, 0},
{1241, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1241, 0},
{1242, 0, (EIF_REFERENCE (*)())&GE_new1242, 0},
{1243, 0, (EIF_REFERENCE (*)())&GE_new1243, 0},
{1244, 0, (EIF_REFERENCE (*)())&GE_new1244, 0},
{1245, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1245, 0},
{1246, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1247, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1248, 0, (EIF_REFERENCE (*)())&GE_new1248, 0},
{1249, 0, (EIF_REFERENCE (*)())&GE_new1249, 0},
{1250, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1251, 0, (EIF_REFERENCE (*)())&GE_new1251, 0},
{1252, 0, (EIF_REFERENCE (*)())&GE_new1252, 0},
{1253, 0, (EIF_REFERENCE (*)())&GE_new1253, 0},
{1254, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1254, 0},
{1255, 0, (EIF_REFERENCE (*)())&GE_new1255, 0},
{1256, 0, (EIF_REFERENCE (*)())&GE_new1256, 0},
{1257, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1258, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1259, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1259, 0},
{1260, 0, 0, 0},
{1261, 0, (EIF_REFERENCE (*)())&GE_new1261, 0},
{1262, 0, (EIF_REFERENCE (*)())&GE_new1262, 0},
{1263, 0, (EIF_REFERENCE (*)())&GE_new1263, 0},
{1264, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1264, 0},
{1265, 0, 0, 0},
{1266, 0, (EIF_REFERENCE (*)())&GE_new1266, 0},
{1267, 0, 0, 0},
{1268, 0, (EIF_REFERENCE (*)())&GE_new1268, 0},
{1269, 0, (EIF_REFERENCE (*)())&GE_new1269, 0},
{1270, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1270, 0},
{1271, 0, (EIF_REFERENCE (*)())&GE_new1271, 0},
{1272, 0, 0, 0},
{1273, 0, 0, 0},
{1274, 0, 0, 0},
{1275, 0, (EIF_REFERENCE (*)())&GE_new1275, 0},
{1276, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1276, 0},
{1277, 0, (EIF_REFERENCE (*)())&GE_new1277, 0},
{1278, 0, (EIF_REFERENCE (*)())&GE_new1278, 0},
{1279, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1279, 0},
{1280, 0, (EIF_REFERENCE (*)())&GE_new1280, 0},
{1281, 0, (EIF_REFERENCE (*)())&GE_new1281, 0},
{1282, 0, (EIF_REFERENCE (*)())&GE_new1282, 0},
{1283, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1283, 0},
{1284, 0, (EIF_REFERENCE (*)())&GE_new1284, 0},
{1285, 0, 0, 0},
{1286, 0, (EIF_REFERENCE (*)())&GE_new1286, 0},
{1287, 0, (EIF_REFERENCE (*)())&GE_new1287, 0},
{1288, 0, (EIF_REFERENCE (*)())&GE_new1288, 0},
{1289, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1290, 0, (EIF_REFERENCE (*)())&GE_new1290, 0},
{1291, 0, (EIF_REFERENCE (*)())&GE_new1291, 0},
{1292, 0, (EIF_REFERENCE (*)())&GE_new1292, 0},
{1293, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1293, 0},
{1294, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1294, 0},
{1295, 0, (EIF_REFERENCE (*)())&GE_new1295, 0},
{1296, 0, (EIF_REFERENCE (*)())&GE_new1296, 0},
{1297, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1297, 0},
{1298, 0, (EIF_REFERENCE (*)())&GE_new1298, 0},
{1299, 0, 0, 0},
{1300, 0, (EIF_REFERENCE (*)())&GE_new1300, 0},
{1301, 0, (EIF_REFERENCE (*)())&GE_new1301, 0},
{1302, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1302, 0},
{1303, 0, (EIF_REFERENCE (*)())&GE_new1303, 0},
{1304, 0, (EIF_REFERENCE (*)())&GE_new1304, 0},
{1305, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1305, 0},
{1306, 0, (EIF_REFERENCE (*)())&GE_new1306, 0},
{1307, 0, (EIF_REFERENCE (*)())&GE_new1307, 0},
{1308, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1308, 0},
{1309, 0, (EIF_REFERENCE (*)())&GE_new1309, 0},
{1310, 0, (EIF_REFERENCE (*)())&GE_new1310, 0},
{1311, 0, (EIF_REFERENCE (*)())&GE_new1311, 0},
{1312, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1312, 0},
{1313, 0, (EIF_REFERENCE (*)())&GE_new1313, 0},
{1314, 0, (EIF_REFERENCE (*)())&GE_new1314, 0},
{1315, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1315, 0},
{1316, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1316, 0},
{1317, 0, (EIF_REFERENCE (*)())&GE_new1317, 0},
{1318, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1318, 0},
{1319, 0, (EIF_REFERENCE (*)())&GE_new1319, 0},
{1320, 0, (EIF_REFERENCE (*)())&GE_new1320, 0},
{1321, 0, (EIF_REFERENCE (*)())&GE_new1321, 0},
{1322, 0, 0, 0},
{1323, 0, 0, 0},
{1324, 0, (EIF_REFERENCE (*)())&GE_new1324, 0},
{1325, 0, (EIF_REFERENCE (*)())&GE_new1325, 0},
{1326, 0, 0, 0},
{1327, 0, (EIF_REFERENCE (*)())&GE_new1327, 0},
{1328, 0, 0, 0},
{1329, 0, (EIF_REFERENCE (*)())&GE_new1329, 0},
{1330, 0, (EIF_REFERENCE (*)())&GE_new1330, 0},
{1331, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1332, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1332, 0},
{1333, 0, (EIF_REFERENCE (*)())&GE_new1333, 0},
{1334, 0, (EIF_REFERENCE (*)())&GE_new1334, 0},
{1335, 0, (EIF_REFERENCE (*)())&GE_new1335, 0},
{1336, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1336, 0},
{1337, 0, 0, 0},
{1338, 0, (EIF_REFERENCE (*)())&GE_new1338, 0},
{1339, 0, (EIF_REFERENCE (*)())&GE_new1339, 0},
{1340, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1340, 0},
{1341, 0, (EIF_REFERENCE (*)())&GE_new1341, 0},
{1342, 0, (EIF_REFERENCE (*)())&GE_new1342, 0},
{1343, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1343, 0},
{1344, 0, (EIF_REFERENCE (*)())&GE_new1344, 0},
{1345, 0, (EIF_REFERENCE (*)())&GE_new1345, 0},
{1346, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1346, 0},
{1347, 0, (EIF_REFERENCE (*)())&GE_new1347, 0},
{1348, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1348, 0},
{1349, 0, (EIF_REFERENCE (*)())&GE_new1349, 0},
{1350, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1350, 0},
{1351, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1351, 0},
{1352, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1352, 0},
{1353, 0, (EIF_REFERENCE (*)())&GE_new1353, 0},
{1354, 0, (EIF_REFERENCE (*)())&GE_new1354, 0},
{1355, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1355, 0},
{1356, 0, (EIF_REFERENCE (*)())&GE_new1356, 0},
{1357, 0, (EIF_REFERENCE (*)())&GE_new1357, 0},
{1358, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1358, 0},
{1359, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1359, 0},
{1360, 0, (EIF_REFERENCE (*)())&GE_new1360, 0},
{1361, 0, 0, 0},
{1362, 0, 0, 0},
{1363, 0, (EIF_REFERENCE (*)())&GE_new1363, 0},
{1364, 0, 0, 0},
{1365, 0, (EIF_REFERENCE (*)())&GE_new1365, 0},
{1366, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1366, 0},
{1367, 0, (EIF_REFERENCE (*)())&GE_new1367, 0},
{1368, 0, 0, 0},
{1369, 0, (EIF_REFERENCE (*)())&GE_new1369, 0},
{1370, 0, (EIF_REFERENCE (*)())&GE_new1370, 0},
{1371, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1371, 0},
{1372, 0, (EIF_REFERENCE (*)())&GE_new1372, 0},
{1373, 0, (EIF_REFERENCE (*)())&GE_new1373, 0},
{1374, 0, (EIF_REFERENCE (*)())&GE_new1374, 0},
{1375, 0, (EIF_REFERENCE (*)())&GE_new1375, 0},
{1376, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1376, 0},
{1377, 0, (EIF_REFERENCE (*)())&GE_new1377, 0},
{1378, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1378, 0},
{1379, 0, (EIF_REFERENCE (*)())&GE_new1379, 0},
{1380, 0, (EIF_REFERENCE (*)())&GE_new1380, 0},
{1381, 0, (EIF_REFERENCE (*)())&GE_new1381, 0},
{1382, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1382, 0},
{1383, 0, (EIF_REFERENCE (*)())&GE_new1383, 0},
{1384, 0, (EIF_REFERENCE (*)())&GE_new1384, 0},
{1385, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1385, 0},
{1386, 0, (EIF_REFERENCE (*)())&GE_new1386, 0},
{1387, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1387, 0},
{1388, 0, (EIF_REFERENCE (*)())&GE_new1388, 0},
{1389, 0, (EIF_REFERENCE (*)())&GE_new1389, 0},
{1390, 0, (EIF_REFERENCE (*)())&GE_new1390, 0},
{1391, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1391, 0},
{1392, 0, (EIF_REFERENCE (*)())&GE_new1392, 0},
{1393, 0, (EIF_REFERENCE (*)())&GE_new1393, 0},
{1394, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1394, 0},
{1395, 0, (EIF_REFERENCE (*)())&GE_new1395, 0},
{1396, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1396, 0},
{1397, 0, (EIF_REFERENCE (*)())&GE_new1397, 0},
{1398, 0, (EIF_REFERENCE (*)())&GE_new1398, 0},
{1399, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1399, 0},
{1400, 0, (EIF_REFERENCE (*)())&GE_new1400, 0},
{1401, 0, (EIF_REFERENCE (*)())&GE_new1401, 0},
{1402, 0, (EIF_REFERENCE (*)())&GE_new1402, 0},
{1403, 0, (EIF_REFERENCE (*)())&GE_new1403, 0},
{1404, 0, (EIF_REFERENCE (*)())&GE_new1404, 0},
{1405, 0, 0, 0},
{1406, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1406, 0},
{1407, 0, (EIF_REFERENCE (*)())&GE_new1407, 0},
{1408, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1409, 0, (EIF_REFERENCE (*)())&GE_new1409, 0},
{1410, 0, (EIF_REFERENCE (*)())&GE_new1410, 0},
{1411, 0, 0, 0},
{1412, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1413, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1413, 0},
{1414, 0, (EIF_REFERENCE (*)())&GE_new1414, 0},
{1415, 0, (EIF_REFERENCE (*)())&GE_new1415, 0},
{1416, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1416, 0},
{1417, 0, (EIF_REFERENCE (*)())&GE_new1417, 0},
{1418, 0, 0, 0},
{1419, 0, (EIF_REFERENCE (*)())&GE_new1419, 0},
{1420, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1420, 0},
{1421, 0, (EIF_REFERENCE (*)())&GE_new1421, 0},
{1422, 0, (EIF_REFERENCE (*)())&GE_new1422, 0},
{1423, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1423, 0},
{1424, 0, 0, 0},
{1425, 0, (EIF_REFERENCE (*)())&GE_new1425, 0},
{1426, 0, (EIF_REFERENCE (*)())&GE_new1426, 0},
{1427, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1427, 0},
{1428, 0, 0, 0},
{1429, 0, (EIF_REFERENCE (*)())&GE_new1429, 0},
{1430, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1430, 0},
{1431, 0, 0, 0},
{1432, 0, (EIF_REFERENCE (*)())&GE_new1432, 0},
{1433, 0, (EIF_REFERENCE (*)())&GE_new1433, 0},
{1434, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1434, 0},
{1435, 0, (EIF_REFERENCE (*)())&GE_new1435, 0},
{1436, 0, (EIF_REFERENCE (*)())&GE_new1436, 0},
{1437, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1437, 0},
{1438, 0, (EIF_REFERENCE (*)())&GE_new1438, 0},
{1439, 0, (EIF_REFERENCE (*)())&GE_new1439, 0},
{1440, 0, (EIF_REFERENCE (*)())&GE_new1440, 0},
{1441, 0, (EIF_REFERENCE (*)())&GE_new1441, 0},
{1442, 0, 0, 0},
{1443, 0, 0, 0},
{1444, 0, (EIF_REFERENCE (*)())&GE_new1444, 0},
{1445, 0, 0, 0},
{1446, 0, 0, 0},
{1447, GE_TYPE_FLAG_EXPANDED, 0, 0},
{1448, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1448, 0},
{1449, 0, (EIF_REFERENCE (*)())&GE_new1449, 0},
{1450, 0, (EIF_REFERENCE (*)())&GE_new1450, 0},
{1451, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1451, 0},
{1452, 0, 0, 0},
{1453, 0, (EIF_REFERENCE (*)())&GE_new1453, 0},
{1454, 0, (EIF_REFERENCE (*)())&GE_new1454, 0},
{1455, 0, (EIF_REFERENCE (*)())&GE_new1455, 0},
{1456, 0, (EIF_REFERENCE (*)())&GE_new1456, 0},
{1457, 0, (EIF_REFERENCE (*)())&GE_new1457, 0},
{1458, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1459, 0, (EIF_REFERENCE (*)())&GE_new1459, 0},
{1460, 0, (EIF_REFERENCE (*)())&GE_new1460, 0},
{1461, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1462, 0, (EIF_REFERENCE (*)())&GE_new1462, 0},
{1463, 0, (EIF_REFERENCE (*)())&GE_new1463, 0},
{1464, 0, (EIF_REFERENCE (*)())&GE_new1464, 0},
{1465, 0, (EIF_REFERENCE (*)())&GE_new1465, 0},
{1466, 0, (EIF_REFERENCE (*)())&GE_new1466, 0},
{1467, 0, (EIF_REFERENCE (*)())&GE_new1467, 0},
{1468, 0, (EIF_REFERENCE (*)())&GE_new1468, 0},
{1469, 0, (EIF_REFERENCE (*)())&GE_new1469, 0},
{1470, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1471, 0, (EIF_REFERENCE (*)())&GE_new1471, 0},
{1472, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1473, 0, 0, 0},
{1474, 0, (EIF_REFERENCE (*)())&GE_new1474, 0},
{1475, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1475, 0},
{1476, 0, (EIF_REFERENCE (*)())&GE_new1476, 0},
{1477, 0, (EIF_REFERENCE (*)())&GE_new1477, 0},
{1478, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1478, 0},
{1479, 0, (EIF_REFERENCE (*)())&GE_new1479, 0},
{1480, 0, (EIF_REFERENCE (*)())&GE_new1480, 0},
{1481, 0, (EIF_REFERENCE (*)())&GE_new1481, 0},
{1482, 0, (EIF_REFERENCE (*)())&GE_new1482, 0},
{1483, 0, (EIF_REFERENCE (*)())&GE_new1483, 0},
{1484, 0, (EIF_REFERENCE (*)())&GE_new1484, 0},
{1485, 0, (EIF_REFERENCE (*)())&GE_new1485, 0},
{1486, 0, (EIF_REFERENCE (*)())&GE_new1486, 0},
{1487, 0, (EIF_REFERENCE (*)())&GE_new1487, 0},
{1488, 0, (EIF_REFERENCE (*)())&GE_new1488, 0},
{1489, 0, (EIF_REFERENCE (*)())&GE_new1489, 0},
{1490, 0, (EIF_REFERENCE (*)())&GE_new1490, 0},
{1491, 0, (EIF_REFERENCE (*)())&GE_new1491, 0},
{1492, 0, (EIF_REFERENCE (*)())&GE_new1492, 0},
{1493, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1494, 0, (EIF_REFERENCE (*)())&GE_new1494, 0},
{1495, 0, (EIF_REFERENCE (*)())&GE_new1495, 0},
{1496, 0, (EIF_REFERENCE (*)())&GE_new1496, 0},
{1497, 0, (EIF_REFERENCE (*)())&GE_new1497, 0},
{1498, 0, (EIF_REFERENCE (*)())&GE_new1498, 0},
{1499, 0, (EIF_REFERENCE (*)())&GE_new1499, 0},
{1500, 0, (EIF_REFERENCE (*)())&GE_new1500, 0},
{1501, 0, (EIF_REFERENCE (*)())&GE_new1501, 0},
{1502, 0, (EIF_REFERENCE (*)())&GE_new1502, 0},
{1503, 0, (EIF_REFERENCE (*)())&GE_new1503, 0},
{1504, 0, (EIF_REFERENCE (*)())&GE_new1504, 0},
{1505, 0, (EIF_REFERENCE (*)())&GE_new1505, 0},
{1506, 0, (EIF_REFERENCE (*)())&GE_new1506, 0},
{1507, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1507, 0},
{1508, 0, (EIF_REFERENCE (*)())&GE_new1508, 0},
{1509, 0, (EIF_REFERENCE (*)())&GE_new1509, 0},
{1510, 0, (EIF_REFERENCE (*)())&GE_new1510, 0},
{1511, 0, (EIF_REFERENCE (*)())&GE_new1511, 0},
{1512, 0, (EIF_REFERENCE (*)())&GE_new1512, 0},
{1513, 0, (EIF_REFERENCE (*)())&GE_new1513, 0},
{1514, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1515, 0, (EIF_REFERENCE (*)())&GE_new1515, 0},
{1516, 0, (EIF_REFERENCE (*)())&GE_new1516, 0},
{1517, 0, (EIF_REFERENCE (*)())&GE_new1517, 0},
{1518, 0, (EIF_REFERENCE (*)())&GE_new1518, 0},
{1519, 0, (EIF_REFERENCE (*)())&GE_new1519, 0},
{1520, 0, (EIF_REFERENCE (*)())&GE_new1520, 0},
{1521, 0, (EIF_REFERENCE (*)())&GE_new1521, 0},
{1522, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1523, 0, (EIF_REFERENCE (*)())&GE_new1523, 0},
{1524, 0, (EIF_REFERENCE (*)())&GE_new1524, 0},
{1525, 0, 0, 0},
{1526, 0, (EIF_REFERENCE (*)())&GE_new1526, 0},
{1527, 0, (EIF_REFERENCE (*)())&GE_new1527, 0},
{1528, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1528, 0},
{1529, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1529, 0},
{1530, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1530, 0},
{1531, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1531, 0},
{1532, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1533, 0, (EIF_REFERENCE (*)())&GE_new1533, 0},
{1534, 0, (EIF_REFERENCE (*)())&GE_new1534, 0},
{1535, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1535, 0},
{1536, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1536, 0},
{1537, 0, (EIF_REFERENCE (*)())&GE_new1537, 0},
{1538, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1538, 0},
{1539, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1539, 0},
{1540, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1540, 0},
{1541, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1541, 0},
{1542, 0, (EIF_REFERENCE (*)())&GE_new1542, 0},
{1543, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1543, 0},
{1544, 0, (EIF_REFERENCE (*)())&GE_new1544, 0},
{1545, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1545, 0},
{1546, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1546, 0},
{1547, 0, (EIF_REFERENCE (*)())&GE_new1547, 0},
{1548, 0, (EIF_REFERENCE (*)())&GE_new1548, 0},
{1549, 0, (EIF_REFERENCE (*)())&GE_new1549, 0},
{1550, 0, (EIF_REFERENCE (*)())&GE_new1550, 0},
{1551, 0, (EIF_REFERENCE (*)())&GE_new1551, 0},
{1552, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1552, 0},
{1553, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1553, 0},
{1554, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1554, 0},
{1555, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1555, 0},
{1556, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1556, 0},
{1557, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1558, 0, 0, 0},
{1559, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1559, 0},
{1560, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1561, 0, 0, 0},
{1562, 0, 0, 0},
{1563, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1563, 0},
{1564, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1564, 0},
{1565, 0, (EIF_REFERENCE (*)())&GE_new1565, 0},
{1566, GE_TYPE_FLAG_EXPANDED, 0, 0},
{1567, GE_TYPE_FLAG_EXPANDED, 0, 0},
{1568, 0, (EIF_REFERENCE (*)())&GE_new1568, 0},
{1569, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1569, 0},
{1570, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1571, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1572, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1573, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1573, 0},
{1574, 0, (EIF_REFERENCE (*)())&GE_new1574, 0},
{1575, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1576, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1576, 0},
{1577, 0, (EIF_REFERENCE (*)())&GE_new1577, 0},
{1578, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1579, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1580, 0, (EIF_REFERENCE (*)())&GE_new1580, 0},
{1581, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1582, 0, (EIF_REFERENCE (*)())&GE_new1582, 0},
{1583, 0, (EIF_REFERENCE (*)())&GE_new1583, 0},
{1584, 0, (EIF_REFERENCE (*)())&GE_new1584, 0},
{1585, 0, (EIF_REFERENCE (*)())&GE_new1585, 0},
{1586, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1587, 0, (EIF_REFERENCE (*)())&GE_new1587, 0},
{1588, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1589, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1590, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1591, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1592, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1593, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1594, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1595, 0, (EIF_REFERENCE (*)())&GE_new1595, 0},
{1596, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1597, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1597, 0},
{1598, 0, (EIF_REFERENCE (*)())&GE_new1598, 0},
{1599, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1599, 0},
{1600, 0, (EIF_REFERENCE (*)())&GE_new1600, 0},
{1601, 0, (EIF_REFERENCE (*)())&GE_new1601, 0},
{1602, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1603, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1603, 0},
{1604, 0, (EIF_REFERENCE (*)())&GE_new1604, 0},
{1605, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1605, 0},
{1606, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1607, 0, (EIF_REFERENCE (*)())&GE_new1607, 0},
{1608, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1608, 0},
{1609, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1610, 0, (EIF_REFERENCE (*)())&GE_new1610, 0},
{1611, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1611, 0},
{1612, 0, (EIF_REFERENCE (*)())&GE_new1612, 0},
{1613, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1613, 0},
{1614, 0, (EIF_REFERENCE (*)())&GE_new1614, 0},
{1615, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1615, 0},
{1616, 0, (EIF_REFERENCE (*)())&GE_new1616, 0},
{1617, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1617, 0},
{1618, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1619, 0, (EIF_REFERENCE (*)())&GE_new1619, 0},
{1620, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1620, 0},
{1621, 0, (EIF_REFERENCE (*)())&GE_new1621, 0},
{1622, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1622, 0},
{1623, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1624, 0, (EIF_REFERENCE (*)())&GE_new1624, 0},
{1625, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1626, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1626, 0},
{1627, 0, (EIF_REFERENCE (*)())&GE_new1627, 0},
{1628, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1629, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1629, 0},
{1630, 0, (EIF_REFERENCE (*)())&GE_new1630, 0},
{1631, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1631, 0},
{1632, 0, (EIF_REFERENCE (*)())&GE_new1632, 0},
{1633, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1633, 0},
{1634, 0, (EIF_REFERENCE (*)())&GE_new1634, 0},
{1635, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1636, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1636, 0},
{1637, 0, (EIF_REFERENCE (*)())&GE_new1637, 0},
{1638, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1638, 0},
{1639, 0, (EIF_REFERENCE (*)())&GE_new1639, 0},
{1640, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1640, 0},
{1641, 0, (EIF_REFERENCE (*)())&GE_new1641, 0},
{1642, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1643, 0, (EIF_REFERENCE (*)())&GE_new1643, 0},
{1644, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1645, 0, (EIF_REFERENCE (*)())&GE_new1645, 0},
{1646, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1647, 0, (EIF_REFERENCE (*)())&GE_new1647, 0},
{1648, 0, (EIF_REFERENCE (*)())&GE_new1648, 0},
{1649, 0, (EIF_REFERENCE (*)())&GE_new1649, 0},
{1650, 0, (EIF_REFERENCE (*)())&GE_new1650, 0},
{1651, 0, (EIF_REFERENCE (*)())&GE_new1651, 0},
{1652, 0, (EIF_REFERENCE (*)())&GE_new1652, 0},
{1653, 0, (EIF_REFERENCE (*)())&GE_new1653, 0},
{1654, 0, (EIF_REFERENCE (*)())&GE_new1654, 0},
{1655, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1656, 0, (EIF_REFERENCE (*)())&GE_new1656, 0},
{1657, 0, (EIF_REFERENCE (*)())&GE_new1657, 0},
{1658, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1659, 0, (EIF_REFERENCE (*)())&GE_new1659, 0},
{1660, 0, 0, 0},
{1661, 0, 0, 0},
{1662, 0, (EIF_REFERENCE (*)())&GE_new1662, 0},
{1663, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1663, 0},
{1664, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1665, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1666, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1667, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1668, 0, (EIF_REFERENCE (*)())&GE_new1668, 0},
{1669, 0, (EIF_REFERENCE (*)())&GE_new1669, 0},
{1670, 0, (EIF_REFERENCE (*)())&GE_new1670, 0},
{1671, 0, 0, 0},
{1672, 0, (EIF_REFERENCE (*)())&GE_new1672, 0},
{1673, 0, (EIF_REFERENCE (*)())&GE_new1673, 0},
{1674, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1674, 0},
{1675, 0, (EIF_REFERENCE (*)())&GE_new1675, 0},
{1676, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1677, 0, (EIF_REFERENCE (*)())&GE_new1677, 0},
{1678, 0, (EIF_REFERENCE (*)())&GE_new1678, 0},
{1679, 0, (EIF_REFERENCE (*)())&GE_new1679, 0},
{1680, 0, (EIF_REFERENCE (*)())&GE_new1680, 0},
{1681, 0, (EIF_REFERENCE (*)())&GE_new1681, 0},
{1682, 0, 0, 0},
{1683, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1683, 0},
{1684, 0, (EIF_REFERENCE (*)())&GE_new1684, 0},
{1685, 0, (EIF_REFERENCE (*)())&GE_new1685, 0},
{1686, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1686, 0},
{1687, 0, (EIF_REFERENCE (*)())&GE_new1687, 0},
{1688, 0, (EIF_REFERENCE (*)())&GE_new1688, 0},
{1689, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1689, 0},
{1690, 0, (EIF_REFERENCE (*)())&GE_new1690, 0},
{1691, 0, (EIF_REFERENCE (*)())&GE_new1691, 0},
{1692, 0, (EIF_REFERENCE (*)())&GE_new1692, 0},
{1693, 0, 0, 0},
{1694, 0, (EIF_REFERENCE (*)())&GE_new1694, 0},
{1695, 0, (EIF_REFERENCE (*)())&GE_new1695, 0},
{1696, 0, (EIF_REFERENCE (*)())&GE_new1696, 0},
{1697, 0, (EIF_REFERENCE (*)())&GE_new1697, 0},
{1698, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1698, 0},
{1699, 0, 0, 0},
{1700, 0, 0, 0},
{1701, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1701, 0},
{1702, 0, (EIF_REFERENCE (*)())&GE_new1702, 0},
{1703, 0, (EIF_REFERENCE (*)())&GE_new1703, 0},
{1704, 0, 0, 0},
{1705, 0, (EIF_REFERENCE (*)())&GE_new1705, 0},
{1706, 0, (EIF_REFERENCE (*)())&GE_new1706, 0},
{1707, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1707, 0},
{1708, 0, (EIF_REFERENCE (*)())&GE_new1708, 0},
{1709, 0, 0, 0},
{1710, 0, (EIF_REFERENCE (*)())&GE_new1710, 0},
{1711, 0, (EIF_REFERENCE (*)())&GE_new1711, 0},
{1712, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1712, 0},
{1713, 0, (EIF_REFERENCE (*)())&GE_new1713, 0},
{1714, 0, (EIF_REFERENCE (*)())&GE_new1714, 0},
{1715, 0, (EIF_REFERENCE (*)())&GE_new1715, 0},
{1716, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1717, 0, (EIF_REFERENCE (*)())&GE_new1717, 0},
{1718, 0, (EIF_REFERENCE (*)())&GE_new1718, 0},
{1719, 0, (EIF_REFERENCE (*)())&GE_new1719, 0},
{1720, 0, (EIF_REFERENCE (*)())&GE_new1720, 0},
{1721, 0, (EIF_REFERENCE (*)())&GE_new1721, 0},
{1722, 0, 0, 0},
{1723, 0, (EIF_REFERENCE (*)())&GE_new1723, 0},
{1724, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1725, 0, (EIF_REFERENCE (*)())&GE_new1725, 0},
{1726, 0, (EIF_REFERENCE (*)())&GE_new1726, 0},
{1727, 0, (EIF_REFERENCE (*)())&GE_new1727, 0},
{1728, 0, (EIF_REFERENCE (*)())&GE_new1728, 0},
{1729, 0, (EIF_REFERENCE (*)())&GE_new1729, 0},
{1730, 0, (EIF_REFERENCE (*)())&GE_new1730, 0},
{1731, 0, (EIF_REFERENCE (*)())&GE_new1731, 0},
{1732, 0, 0, 0},
{1733, 0, 0, 0},
{1734, 0, (EIF_REFERENCE (*)())&GE_new1734, 0},
{1735, 0, 0, 0},
{1736, 0, (EIF_REFERENCE (*)())&GE_new1736, 0},
{1737, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1737, 0},
{1738, 0, 0, 0},
{1739, 0, 0, 0},
{1740, 0, (EIF_REFERENCE (*)())&GE_new1740, 0},
{1741, 0, 0, 0},
{1742, 0, 0, 0},
{1743, 0, 0, 0},
{1744, 0, (EIF_REFERENCE (*)())&GE_new1744, 0},
{1745, 0, (EIF_REFERENCE (*)())&GE_new1745, 0},
{1746, 0, (EIF_REFERENCE (*)())&GE_new1746, 0},
{1747, 0, 0, 0},
{1748, 0, 0, 0},
{1749, 0, (EIF_REFERENCE (*)())&GE_new1749, 0},
{1750, 0, (EIF_REFERENCE (*)())&GE_new1750, 0},
{1751, 0, (EIF_REFERENCE (*)())&GE_new1751, 0},
{1752, 0, (EIF_REFERENCE (*)())&GE_new1752, 0},
{1753, 0, (EIF_REFERENCE (*)())&GE_new1753, 0},
{1754, 0, (EIF_REFERENCE (*)())&GE_new1754, 0},
{1755, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1755, 0},
{1756, 0, 0, 0},
{1757, 0, 0, 0},
{1758, 0, (EIF_REFERENCE (*)())&GE_new1758, 0},
{1759, 0, (EIF_REFERENCE (*)())&GE_new1759, 0},
{1760, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1761, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1762, 0, (EIF_REFERENCE (*)())&GE_new1762, 0},
{1763, 0, (EIF_REFERENCE (*)())&GE_new1763, 0},
{1764, 0, (EIF_REFERENCE (*)())&GE_new1764, 0},
{1765, 0, (EIF_REFERENCE (*)())&GE_new1765, 0},
{1766, 0, (EIF_REFERENCE (*)())&GE_new1766, 0},
{1767, 0, (EIF_REFERENCE (*)())&GE_new1767, 0},
{1768, 0, (EIF_REFERENCE (*)())&GE_new1768, 0},
{1769, 0, (EIF_REFERENCE (*)())&GE_new1769, 0},
{1770, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1771, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1772, 0, (EIF_REFERENCE (*)())&GE_new1772, 0},
{1773, 0, (EIF_REFERENCE (*)())&GE_new1773, 0},
{1774, 0, (EIF_REFERENCE (*)())&GE_new1774, 0},
{1775, 0, (EIF_REFERENCE (*)())&GE_new1775, 0},
{1776, 0, (EIF_REFERENCE (*)())&GE_new1776, 0},
{1777, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1777, 0},
{1778, 0, (EIF_REFERENCE (*)())&GE_new1778, 0},
{1779, 0, 0, 0},
{1780, 0, (EIF_REFERENCE (*)())&GE_new1780, 0},
{1781, 0, (EIF_REFERENCE (*)())&GE_new1781, 0},
{1782, 0, 0, 0},
{1783, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1783, 0},
{1784, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1785, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1785, 0},
{1786, 0, 0, 0},
{1787, 0, (EIF_REFERENCE (*)())&GE_new1787, 0},
{1788, 0, (EIF_REFERENCE (*)())&GE_new1788, 0},
{1789, 0, (EIF_REFERENCE (*)())&GE_new1789, 0},
{1790, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1790, 0},
{1791, 0, 0, 0},
{1792, 0, (EIF_REFERENCE (*)())&GE_new1792, 0},
{1793, 0, (EIF_REFERENCE (*)())&GE_new1793, 0},
{1794, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1794, 0},
{1795, 0, (EIF_REFERENCE (*)())&GE_new1795, 0},
{1796, 0, (EIF_REFERENCE (*)())&GE_new1796, 0},
{1797, 0, (EIF_REFERENCE (*)())&GE_new1797, 0},
{1798, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1799, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1799, 0},
{1800, 0, (EIF_REFERENCE (*)())&GE_new1800, 0},
{1801, 0, (EIF_REFERENCE (*)())&GE_new1801, 0},
{1802, 0, (EIF_REFERENCE (*)())&GE_new1802, 0},
{1803, 0, (EIF_REFERENCE (*)())&GE_new1803, 0},
{1804, 0, (EIF_REFERENCE (*)())&GE_new1804, 0},
{1805, 0, (EIF_REFERENCE (*)())&GE_new1805, 0},
{1806, 0, 0, 0},
{1807, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1808, 0, 0, 0},
{1809, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1810, 0, (EIF_REFERENCE (*)())&GE_new1810, 0},
{1811, 0, 0, 0},
{1812, 0, 0, 0},
{1813, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1814, 0, (EIF_REFERENCE (*)())&GE_new1814, 0},
{1815, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1815, 0},
{1816, 0, (EIF_REFERENCE (*)())&GE_new1816, 0},
{1817, 0, (EIF_REFERENCE (*)())&GE_new1817, 0},
{1818, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1819, 0, (EIF_REFERENCE (*)())&GE_new1819, 0},
{1820, 0, 0, 0},
{1821, 0, (EIF_REFERENCE (*)())&GE_new1821, 0},
{1822, 0, (EIF_REFERENCE (*)())&GE_new1822, 0},
{1823, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1823, 0},
{1824, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1824, 0},
{1825, 0, (EIF_REFERENCE (*)())&GE_new1825, 0},
{1826, 0, (EIF_REFERENCE (*)())&GE_new1826, 0},
{1827, 0, 0, 0},
{1828, 0, (EIF_REFERENCE (*)())&GE_new1828, 0},
{1829, 0, (EIF_REFERENCE (*)())&GE_new1829, 0},
{1830, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1830, 0},
{1831, 0, (EIF_REFERENCE (*)())&GE_new1831, 0},
{1832, 0, (EIF_REFERENCE (*)())&GE_new1832, 0},
{1833, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1833, 0},
{1834, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1834, 0},
{1835, 0, 0, 0},
{1836, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1836, 0},
{1837, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1837, 0},
{1838, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1838, 0},
{1839, 0, (EIF_REFERENCE (*)())&GE_new1839, 0},
{1840, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1841, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1842, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1843, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1844, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1845, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1846, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1847, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1847, 0},
{1848, 0, (EIF_REFERENCE (*)())&GE_new1848, 0},
{1849, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1849, 0},
{1850, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1851, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1851, 0},
{1852, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1853, 0, (EIF_REFERENCE (*)())&GE_new1853, 0},
{1854, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1855, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1856, 0, (EIF_REFERENCE (*)())&GE_new1856, 0},
{1857, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1858, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1859, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1860, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1860, 0},
{1861, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1862, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1863, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1864, 0, (EIF_REFERENCE (*)())&GE_new1864, 0},
{1865, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1866, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1867, 0, (EIF_REFERENCE (*)())&GE_new1867, 0},
{1868, 0, (EIF_REFERENCE (*)())&GE_new1868, 0},
{1869, 0, (EIF_REFERENCE (*)())&GE_new1869, 0},
{1870, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1871, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1872, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1873, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1874, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1875, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1876, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1877, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1878, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1879, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1880, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1881, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1882, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1883, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1884, 0, 0, 0},
{1885, 0, (EIF_REFERENCE (*)())&GE_new1885, 0},
{1886, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1887, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1888, 0, (EIF_REFERENCE (*)())&GE_new1888, 0},
{1889, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1890, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1891, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1892, 0, (EIF_REFERENCE (*)())&GE_new1892, 0},
{1893, 0, (EIF_REFERENCE (*)())&GE_new1893, 0},
{1894, 0, (EIF_REFERENCE (*)())&GE_new1894, 0},
{1895, 0, 0, 0},
{1896, 0, (EIF_REFERENCE (*)())&GE_new1896, 0},
{1897, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1898, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1899, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1899, 0},
{1900, 0, (EIF_REFERENCE (*)())&GE_new1900, 0},
{1901, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1902, 0, 0, 0},
{1903, 0, 0, 0},
{1904, 0, 0, 0},
{1905, 0, 0, 0},
{1906, 0, 0, 0},
{1907, 0, 0, 0},
{1908, 0, (EIF_REFERENCE (*)())&GE_new1908, 0},
{1909, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1910, 0, (EIF_REFERENCE (*)())&GE_new1910, 0},
{1911, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1912, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1913, 0, (EIF_REFERENCE (*)())&GE_new1913, 0},
{1914, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1915, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1916, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1917, 0, 0, 0},
{1918, 0, 0, 0},
{1919, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1920, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1921, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1922, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1922, 0},
{1923, 0, (EIF_REFERENCE (*)())&GE_new1923, 0},
{1924, 0, (EIF_REFERENCE (*)())&GE_new1924, 0},
{1925, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1925, 0},
{1926, 0, (EIF_REFERENCE (*)())&GE_new1926, 0},
{1927, 0, (EIF_REFERENCE (*)())&GE_new1927, 0},
{1928, 0, (EIF_REFERENCE (*)())&GE_new1928, 0},
{1929, 0, (EIF_REFERENCE (*)())&GE_new1929, 0},
{1930, 0, (EIF_REFERENCE (*)())&GE_new1930, 0},
{1931, 0, (EIF_REFERENCE (*)())&GE_new1931, 0},
{1932, 0, (EIF_REFERENCE (*)())&GE_new1932, 0},
{1933, 0, (EIF_REFERENCE (*)())&GE_new1933, 0},
{1934, 0, (EIF_REFERENCE (*)())&GE_new1934, 0},
{1935, 0, (EIF_REFERENCE (*)())&GE_new1935, 0},
{1936, 0, (EIF_REFERENCE (*)())&GE_new1936, 0},
{1937, 0, (EIF_REFERENCE (*)())&GE_new1937, 0},
{1938, 0, (EIF_REFERENCE (*)())&GE_new1938, 0},
{1939, 0, (EIF_REFERENCE (*)())&GE_new1939, 0},
{1940, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1940, 0},
{1941, 0, (EIF_REFERENCE (*)())&GE_new1941, 0},
{1942, 0, (EIF_REFERENCE (*)())&GE_new1942, 0},
{1943, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1943, 0},
{1944, 0, 0, 0},
{1945, 0, 0, 0},
{1946, 0, (EIF_REFERENCE (*)())&GE_new1946, 0},
{1947, 0, (EIF_REFERENCE (*)())&GE_new1947, 0},
{1948, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1948, 0},
{1949, 0, (EIF_REFERENCE (*)())&GE_new1949, 0},
{1950, 0, (EIF_REFERENCE (*)())&GE_new1950, 0},
{1951, 0, (EIF_REFERENCE (*)())&GE_new1951, 0},
{1952, 0, (EIF_REFERENCE (*)())&GE_new1952, 0},
{1953, 0, (EIF_REFERENCE (*)())&GE_new1953, 0},
{1954, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1954, 0},
{1955, 0, 0, 0},
{1956, 0, (EIF_REFERENCE (*)())&GE_new1956, 0},
{1957, 0, 0, 0},
{1958, 0, (EIF_REFERENCE (*)())&GE_new1958, 0},
{1959, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1959, 0},
{1960, 0, (EIF_REFERENCE (*)())&GE_new1960, 0},
{1961, 0, (EIF_REFERENCE (*)())&GE_new1961, 0},
{1962, 0, (EIF_REFERENCE (*)())&GE_new1962, 0},
{1963, 0, (EIF_REFERENCE (*)())&GE_new1963, 0},
{1964, 0, (EIF_REFERENCE (*)())&GE_new1964, 0},
{1965, 0, (EIF_REFERENCE (*)())&GE_new1965, 0},
{1966, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1966, 0},
{1967, 0, (EIF_REFERENCE (*)())&GE_new1967, 0},
{1968, 0, (EIF_REFERENCE (*)())&GE_new1968, 0},
{1969, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1970, 0, 0, 0},
{1971, 0, (EIF_REFERENCE (*)())&GE_new1971, 0},
{1972, 0, (EIF_REFERENCE (*)())&GE_new1972, 0},
{1973, 0, (EIF_REFERENCE (*)())&GE_new1973, 0},
{1974, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1974, 0},
{1975, 0, (EIF_REFERENCE (*)())&GE_new1975, 0},
{1976, 0, (EIF_REFERENCE (*)())&GE_new1976, 0},
{1977, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1977, 0},
{1978, 0, (EIF_REFERENCE (*)())&GE_new1978, 0},
{1979, 0, (EIF_REFERENCE (*)())&GE_new1979, 0},
{1980, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1980, 0},
{1981, 0, (EIF_REFERENCE (*)())&GE_new1981, 0},
{1982, 0, (EIF_REFERENCE (*)())&GE_new1982, 0},
{1983, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1983, 0},
{1984, 0, (EIF_REFERENCE (*)())&GE_new1984, 0},
{1985, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1985, 0},
{1986, 0, (EIF_REFERENCE (*)())&GE_new1986, 0},
{1987, 0, 0, 0},
{1988, 0, (EIF_REFERENCE (*)())&GE_new1988, 0},
{1989, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1989, 0},
{1990, 0, (EIF_REFERENCE (*)())&GE_new1990, 0},
{1991, 0, (EIF_REFERENCE (*)())&GE_new1991, 0},
{1992, 0, (EIF_REFERENCE (*)())&GE_new1992, 0},
{1993, 0, (EIF_REFERENCE (*)())&GE_new1993, 0},
{1994, 0, (EIF_REFERENCE (*)())&GE_new1994, 0},
{1995, 0, 0, 0},
{1996, 0, (EIF_REFERENCE (*)())&GE_new1996, 0},
{1997, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1997, 0},
{1998, 0, 0, 0},
{1999, 0, (EIF_REFERENCE (*)())&GE_new1999, 0},
{2000, 0, (EIF_REFERENCE (*)())&GE_new2000, 0},
{2001, 0, (EIF_REFERENCE (*)())&GE_new2001, 0},
{2002, 0, (EIF_REFERENCE (*)())&GE_new2002, 0},
{2003, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2003, 0},
{2004, 0, (EIF_REFERENCE (*)())&GE_new2004, 0},
{2005, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2005, 0},
{2006, 0, (EIF_REFERENCE (*)())&GE_new2006, 0},
{2007, 0, (EIF_REFERENCE (*)())&GE_new2007, 0},
{2008, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2008, 0},
{2009, 0, 0, 0},
{2010, 0, 0, 0},
{2011, 0, (EIF_REFERENCE (*)())&GE_new2011, 0},
{2012, 0, (EIF_REFERENCE (*)())&GE_new2012, 0},
{2013, 0, (EIF_REFERENCE (*)())&GE_new2013, 0},
{2014, 0, (EIF_REFERENCE (*)())&GE_new2014, 0},
{2015, 0, (EIF_REFERENCE (*)())&GE_new2015, 0},
{2016, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2016, 0},
{2017, 0, (EIF_REFERENCE (*)())&GE_new2017, 0},
{2018, 0, (EIF_REFERENCE (*)())&GE_new2018, 0},
{2019, 0, 0, 0},
{2020, 0, (EIF_REFERENCE (*)())&GE_new2020, 0},
{2021, 0, (EIF_REFERENCE (*)())&GE_new2021, 0},
{2022, 0, (EIF_REFERENCE (*)())&GE_new2022, 0},
{2023, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2023, 0},
{2024, 0, (EIF_REFERENCE (*)())&GE_new2024, 0},
{2025, 0, (EIF_REFERENCE (*)())&GE_new2025, 0},
{2026, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2027, 0, (EIF_REFERENCE (*)())&GE_new2027, 0},
{2028, 0, (EIF_REFERENCE (*)())&GE_new2028, 0},
{2029, 0, (EIF_REFERENCE (*)())&GE_new2029, 0},
{2030, 0, (EIF_REFERENCE (*)())&GE_new2030, 0},
{2031, 0, (EIF_REFERENCE (*)())&GE_new2031, 0},
{2032, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2032, 0},
{2033, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2033, 0},
{2034, 0, (EIF_REFERENCE (*)())&GE_new2034, 0},
{2035, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2035, 0},
{2036, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2037, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2037, 0},
{2038, 0, (EIF_REFERENCE (*)())&GE_new2038, 0},
{2039, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2039, 0},
{2040, 0, (EIF_REFERENCE (*)())&GE_new2040, 0},
{2041, 0, 0, 0},
{2042, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2043, 0, (EIF_REFERENCE (*)())&GE_new2043, 0},
{2044, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2044, 0},
{2045, 0, (EIF_REFERENCE (*)())&GE_new2045, 0},
{2046, 0, (EIF_REFERENCE (*)())&GE_new2046, 0},
{2047, 0, (EIF_REFERENCE (*)())&GE_new2047, 0},
{2048, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2049, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2050, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2051, 0, 0, 0},
{2052, 0, (EIF_REFERENCE (*)())&GE_new2052, 0},
{2053, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2054, 0, (EIF_REFERENCE (*)())&GE_new2054, 0},
{2055, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2055, 0},
{2056, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2056, 0},
{2057, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2057, 0},
{2058, 0, 0, 0},
{2059, 0, 0, 0},
{2060, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2061, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2062, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2063, 0, 0, 0},
{2064, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2065, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2065, 0},
{2066, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2066, 0},
{2067, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2067, 0},
{2068, 0, (EIF_REFERENCE (*)())&GE_new2068, 0},
{2069, 0, (EIF_REFERENCE (*)())&GE_new2069, 0},
{2070, 0, (EIF_REFERENCE (*)())&GE_new2070, 0},
{2071, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2072, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2073, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2074, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2075, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2076, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2077, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2078, 0, 0, 0},
{2079, 0, 0, 0},
{2080, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2081, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2082, 0, (EIF_REFERENCE (*)())&GE_new2082, 0},
{2083, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2083, 0},
{2084, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2085, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2086, 0, (EIF_REFERENCE (*)())&GE_new2086, 0},
{2087, 0, 0, 0},
{2088, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2089, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2090, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2091, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2092, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2092, 0},
{2093, 0, (EIF_REFERENCE (*)())&GE_new2093, 0},
{2094, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2094, 0},
{2095, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2095, 0},
{2096, 0, (EIF_REFERENCE (*)())&GE_new2096, 0},
{2097, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2097, 0},
{2098, 0, (EIF_REFERENCE (*)())&GE_new2098, 0},
{2099, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2099, 0},
{2100, 0, (EIF_REFERENCE (*)())&GE_new2100, 0},
{2101, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2101, 0},
{2102, 0, (EIF_REFERENCE (*)())&GE_new2102, 0},
{2103, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2103, 0},
{2104, 0, (EIF_REFERENCE (*)())&GE_new2104, 0},
{2105, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2105, 0},
{2106, 0, (EIF_REFERENCE (*)())&GE_new2106, 0},
{2107, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2108, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2109, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2109, 0},
{2110, 0, (EIF_REFERENCE (*)())&GE_new2110, 0},
{2111, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2111, 0},
{2112, 0, 0, 0},
{2113, 0, (EIF_REFERENCE (*)())&GE_new2113, 0},
{2114, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2114, 0},
{2115, 0, 0, 0},
{2116, 0, (EIF_REFERENCE (*)())&GE_new2116, 0},
{2117, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2118, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2118, 0},
{2119, 0, (EIF_REFERENCE (*)())&GE_new2119, 0},
{2120, 0, (EIF_REFERENCE (*)())&GE_new2120, 0},
{2121, 0, 0, 0},
{2122, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2122, 0},
{2123, 0, (EIF_REFERENCE (*)())&GE_new2123, 0},
{2124, 0, (EIF_REFERENCE (*)())&GE_new2124, 0},
{2125, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2125, 0},
{2126, 0, (EIF_REFERENCE (*)())&GE_new2126, 0},
{2127, 0, (EIF_REFERENCE (*)())&GE_new2127, 0},
{2128, 0, (EIF_REFERENCE (*)())&GE_new2128, 0},
{2129, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2129, 0},
{2130, 0, (EIF_REFERENCE (*)())&GE_new2130, 0},
{2131, 0, (EIF_REFERENCE (*)())&GE_new2131, 0},
{2132, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2132, 0},
{2133, 0, (EIF_REFERENCE (*)())&GE_new2133, 0},
{2134, 0, (EIF_REFERENCE (*)())&GE_new2134, 0},
{2135, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2135, 0},
{2136, 0, (EIF_REFERENCE (*)())&GE_new2136, 0},
{2137, 0, (EIF_REFERENCE (*)())&GE_new2137, 0},
{2138, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2138, 0},
{2139, 0, (EIF_REFERENCE (*)())&GE_new2139, 0},
{2140, 0, (EIF_REFERENCE (*)())&GE_new2140, 0},
{2141, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2141, 0},
{2142, 0, (EIF_REFERENCE (*)())&GE_new2142, 0},
{2143, 0, (EIF_REFERENCE (*)())&GE_new2143, 0},
{2144, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2144, 0},
{2145, 0, (EIF_REFERENCE (*)())&GE_new2145, 0},
{2146, 0, (EIF_REFERENCE (*)())&GE_new2146, 0},
{2147, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2147, 0},
{2148, 0, (EIF_REFERENCE (*)())&GE_new2148, 0},
{2149, 0, (EIF_REFERENCE (*)())&GE_new2149, 0},
{2150, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2150, 0},
{2151, 0, (EIF_REFERENCE (*)())&GE_new2151, 0},
{2152, 0, (EIF_REFERENCE (*)())&GE_new2152, 0},
{2153, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2153, 0},
{2154, 0, (EIF_REFERENCE (*)())&GE_new2154, 0},
{2155, 0, (EIF_REFERENCE (*)())&GE_new2155, 0},
{2156, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2156, 0},
{2157, 0, (EIF_REFERENCE (*)())&GE_new2157, 0},
{2158, 0, (EIF_REFERENCE (*)())&GE_new2158, 0},
{2159, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2159, 0},
{2160, 0, (EIF_REFERENCE (*)())&GE_new2160, 0},
{2161, 0, (EIF_REFERENCE (*)())&GE_new2161, 0},
{2162, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2162, 0},
{2163, 0, (EIF_REFERENCE (*)())&GE_new2163, 0},
{2164, 0, 0, 0},
{2165, 0, (EIF_REFERENCE (*)())&GE_new2165, 0},
{2166, 0, (EIF_REFERENCE (*)())&GE_new2166, 0},
{2167, 0, (EIF_REFERENCE (*)())&GE_new2167, 0},
{2168, 0, 0, 0},
{2169, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2169, 0},
{2170, 0, 0, 0},
{2171, 0, 0, 0},
{2172, 0, (EIF_REFERENCE (*)())&GE_new2172, 0},
{2173, 0, (EIF_REFERENCE (*)())&GE_new2173, 0},
{2174, 0, (EIF_REFERENCE (*)())&GE_new2174, 0},
{2175, 0, 0, 0},
{2176, 0, (EIF_REFERENCE (*)())&GE_new2176, 0},
{2177, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2177, 0},
{2178, 0, 0, 0},
{2179, 0, 0, 0},
{2180, 0, (EIF_REFERENCE (*)())&GE_new2180, 0},
{2181, 0, (EIF_REFERENCE (*)())&GE_new2181, 0},
{2182, 0, (EIF_REFERENCE (*)())&GE_new2182, 0},
{2183, 0, (EIF_REFERENCE (*)())&GE_new2183, 0},
{2184, 0, (EIF_REFERENCE (*)())&GE_new2184, 0},
{2185, 0, (EIF_REFERENCE (*)())&GE_new2185, 0},
{2186, 0, (EIF_REFERENCE (*)())&GE_new2186, 0},
{2187, 0, (EIF_REFERENCE (*)())&GE_new2187, 0},
{2188, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2189, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2190, 0, (EIF_REFERENCE (*)())&GE_new2190, 0},
{2191, 0, (EIF_REFERENCE (*)())&GE_new2191, 0},
{2192, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2193, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2194, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2194, 0},
{2195, 0, (EIF_REFERENCE (*)())&GE_new2195, 0},
{2196, 0, 0, 0},
{2197, 0, (EIF_REFERENCE (*)())&GE_new2197, 0},
{2198, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2198, 0},
{2199, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2199, 0},
{2200, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2201, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2202, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2202, 0},
{2203, 0, 0, 0},
{2204, 0, 0, 0},
{2205, 0, (EIF_REFERENCE (*)())&GE_new2205, 0},
{2206, 0, (EIF_REFERENCE (*)())&GE_new2206, 0},
{2207, 0, 0, 0},
{2208, 0, (EIF_REFERENCE (*)())&GE_new2208, 0},
{2209, 0, (EIF_REFERENCE (*)())&GE_new2209, 0},
{2210, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2210, 0},
{2211, 0, (EIF_REFERENCE (*)())&GE_new2211, 0},
{2212, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2212, 0},
{2213, 0, (EIF_REFERENCE (*)())&GE_new2213, 0},
{2214, 0, (EIF_REFERENCE (*)())&GE_new2214, 0},
{2215, 0, (EIF_REFERENCE (*)())&GE_new2215, 0},
{2216, 0, (EIF_REFERENCE (*)())&GE_new2216, 0},
{2217, 0, (EIF_REFERENCE (*)())&GE_new2217, 0},
{2218, 0, (EIF_REFERENCE (*)())&GE_new2218, 0},
{2219, 0, (EIF_REFERENCE (*)())&GE_new2219, 0},
{2220, 0, (EIF_REFERENCE (*)())&GE_new2220, 0},
{2221, 0, (EIF_REFERENCE (*)())&GE_new2221, 0},
{2222, 0, (EIF_REFERENCE (*)())&GE_new2222, 0},
{2223, 0, (EIF_REFERENCE (*)())&GE_new2223, 0},
{2224, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2224, 0},
{2225, 0, (EIF_REFERENCE (*)())&GE_new2225, 0},
{2226, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2226, 0},
{2227, 0, (EIF_REFERENCE (*)())&GE_new2227, 0},
{2228, 0, (EIF_REFERENCE (*)())&GE_new2228, 0},
{2229, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2229, 0},
{2230, 0, (EIF_REFERENCE (*)())&GE_new2230, 0},
{2231, 0, (EIF_REFERENCE (*)())&GE_new2231, 0},
{2232, 0, (EIF_REFERENCE (*)())&GE_new2232, 0},
{2233, 0, (EIF_REFERENCE (*)())&GE_new2233, 0},
{2234, 0, (EIF_REFERENCE (*)())&GE_new2234, 0},
{2235, 0, (EIF_REFERENCE (*)())&GE_new2235, 0},
{2236, 0, (EIF_REFERENCE (*)())&GE_new2236, 0},
{2237, 0, (EIF_REFERENCE (*)())&GE_new2237, 0},
{2238, 0, (EIF_REFERENCE (*)())&GE_new2238, 0},
{2239, 0, (EIF_REFERENCE (*)())&GE_new2239, 0},
{2240, 0, (EIF_REFERENCE (*)())&GE_new2240, 0},
{2241, 0, (EIF_REFERENCE (*)())&GE_new2241, 0},
{2242, 0, (EIF_REFERENCE (*)())&GE_new2242, 0},
{2243, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2243, 0},
{2244, 0, (EIF_REFERENCE (*)())&GE_new2244, 0},
{2245, 0, (EIF_REFERENCE (*)())&GE_new2245, 0},
{2246, 0, (EIF_REFERENCE (*)())&GE_new2246, 0},
{2247, 0, (EIF_REFERENCE (*)())&GE_new2247, 0},
{2248, 0, (EIF_REFERENCE (*)())&GE_new2248, 0},
{2249, 0, (EIF_REFERENCE (*)())&GE_new2249, 0},
{2250, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2250, 0},
{2251, 0, (EIF_REFERENCE (*)())&GE_new2251, 0},
{2252, 0, (EIF_REFERENCE (*)())&GE_new2252, 0},
{2253, 0, (EIF_REFERENCE (*)())&GE_new2253, 0},
{2254, 0, (EIF_REFERENCE (*)())&GE_new2254, 0},
{2255, 0, (EIF_REFERENCE (*)())&GE_new2255, 0},
{2256, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2257, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2258, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2259, 0, 0, 0},
{2260, 0, 0, 0},
{2261, 0, (EIF_REFERENCE (*)())&GE_new2261, 0},
{2262, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2262, 0},
{2263, 0, (EIF_REFERENCE (*)())&GE_new2263, 0},
{2264, 0, 0, 0},
{2265, 0, 0, 0},
{2266, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2266, 0},
{2267, 0, 0, 0},
{2268, 0, (EIF_REFERENCE (*)())&GE_new2268, 0},
{2269, 0, (EIF_REFERENCE (*)())&GE_new2269, 0},
{2270, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2270, 0},
{2271, 0, (EIF_REFERENCE (*)())&GE_new2271, 0},
{2272, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2272, 0},
{2273, 0, (EIF_REFERENCE (*)())&GE_new2273, 0},
{2274, 0, (EIF_REFERENCE (*)())&GE_new2274, 0},
{2275, 0, (EIF_REFERENCE (*)())&GE_new2275, 0},
{2276, 0, (EIF_REFERENCE (*)())&GE_new2276, 0},
{2277, 0, (EIF_REFERENCE (*)())&GE_new2277, 0},
{2278, 0, 0, 0},
{2279, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2279, 0},
{2280, 0, (EIF_REFERENCE (*)())&GE_new2280, 0},
{2281, 0, (EIF_REFERENCE (*)())&GE_new2281, 0},
{2282, 0, (EIF_REFERENCE (*)())&GE_new2282, 0},
{2283, 0, (EIF_REFERENCE (*)())&GE_new2283, 0},
{2284, 0, (EIF_REFERENCE (*)())&GE_new2284, 0},
{2285, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2285, 0},
{2286, 0, (EIF_REFERENCE (*)())&GE_new2286, 0},
{2287, 0, (EIF_REFERENCE (*)())&GE_new2287, 0},
{2288, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2288, 0},
{2289, 0, (EIF_REFERENCE (*)())&GE_new2289, 0},
{2290, 0, 0, 0},
{2291, 0, (EIF_REFERENCE (*)())&GE_new2291, 0},
{2292, 0, (EIF_REFERENCE (*)())&GE_new2292, 0},
{2293, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2293, 0},
{2294, 0, 0, 0},
{2295, 0, (EIF_REFERENCE (*)())&GE_new2295, 0},
{2296, 0, 0, 0},
{2297, 0, (EIF_REFERENCE (*)())&GE_new2297, 0},
{2298, 0, (EIF_REFERENCE (*)())&GE_new2298, 0},
{2299, 0, 0, 0},
{2300, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2301, 0, (EIF_REFERENCE (*)())&GE_new2301, 0},
{2302, 0, (EIF_REFERENCE (*)())&GE_new2302, 0},
{2303, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2304, 0, (EIF_REFERENCE (*)())&GE_new2304, 0},
{2305, 0, (EIF_REFERENCE (*)())&GE_new2305, 0},
{2306, 0, (EIF_REFERENCE (*)())&GE_new2306, 0},
{2307, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2307, 0},
{2308, 0, (EIF_REFERENCE (*)())&GE_new2308, 0},
{2309, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2310, 0, (EIF_REFERENCE (*)())&GE_new2310, 0},
{2311, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2312, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2312, 0},
{2313, 0, 0, 0},
{2314, 0, (EIF_REFERENCE (*)())&GE_new2314, 0},
{2315, 0, (EIF_REFERENCE (*)())&GE_new2315, 0},
{2316, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2317, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2317, 0},
{2318, 0, (EIF_REFERENCE (*)())&GE_new2318, 0},
{2319, 0, (EIF_REFERENCE (*)())&GE_new2319, 0},
{2320, 0, (EIF_REFERENCE (*)())&GE_new2320, 0},
{2321, 0, (EIF_REFERENCE (*)())&GE_new2321, 0},
{2322, 0, (EIF_REFERENCE (*)())&GE_new2322, 0},
{2323, 0, 0, 0},
{2324, 0, (EIF_REFERENCE (*)())&GE_new2324, 0},
{2325, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2325, 0},
{2326, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2326, 0},
{2327, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2327, 0},
{2328, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2329, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2329, 0},
{2330, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2331, 0, 0, 0},
{2332, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2333, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2334, 0, (EIF_REFERENCE (*)())&GE_new2334, 0},
{2335, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2336, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2337, 0, (EIF_REFERENCE (*)())&GE_new2337, 0},
{2338, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2339, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2340, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2340, 0},
{2341, 0, (EIF_REFERENCE (*)())&GE_new2341, 0},
{2342, 0, (EIF_REFERENCE (*)())&GE_new2342, 0},
{2343, 0, (EIF_REFERENCE (*)())&GE_new2343, 0},
{2344, 0, 0, 0},
{2345, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2345, 0},
{2346, 0, (EIF_REFERENCE (*)())&GE_new2346, 0},
{2347, 0, (EIF_REFERENCE (*)())&GE_new2347, 0},
{2348, 0, (EIF_REFERENCE (*)())&GE_new2348, 0},
{2349, 0, 0, 0},
{2350, 0, (EIF_REFERENCE (*)())&GE_new2350, 0},
{2351, GE_TYPE_FLAG_DEFERRED, 0, 0}
};

int GE_main(int argc, EIF_NATIVE_CHAR** argv)
{
	T0* t1;
	GE_call tc = {"GEC","root's creation",0};
	TC* ac = GE_new_context(0);
	ac->call = &tc;
	GE_type_info_count = 2351;
	GE_argc = argc;
	GE_argv = argv;
	GE_main_context = ac;
	GE_system_name = "gec";
	GE_root_class_name = "GEC";
	GE_new_exception_manager = &GE_new21;
	GE_init_exception_manager = &T21s14;
	GE_last_exception = &T21s1;
	GE_once_raise = &T21s15;
	GE_set_exception_data = &T21s16;
	GE_init_onces(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
	GE_once_per_object_data_mutex = GE_mutex_create();
	GE_thread_onces_set_counts(4, 1, 1, 0, 0, 10, 0, 0, 0, 0, 4, 0, 0, 0, 960, 0);
	GE_init_thread(ac);
	GE_init_exception(ac);
	GE_init_console();
	GE_init_identified();
	GE_init_const();
	t1 = T26c74(ac);
	return 0;
}


#ifdef __cplusplus
}
#endif
/*
	description:

		"C functions used to manipulate strings"

	system: "Gobo Eiffel Compiler"
	copyright: "Copyright (c) 2016-2024, Eric Bezault and others"
	license: "MIT License"
*/

#ifndef GE_STRING_C
#define GE_STRING_C
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#ifndef GE_STRING_H
#include "ge_string.h"
#endif
#ifndef GE_NATIVE_STRING_H
#include "ge_native_string.h"
#endif
#ifndef GE_GC_H
#include "ge_gc.h"
#endif

#ifdef __cplusplus
extern "C" {
#endif

/*
 * Number of EIF_CHARACTER_32 characters which can be read from
 * the first `n' native characters in native string `s'.
 * Invalid native characters are escaped.
 */
static int GE_nstr_str32len(EIF_NATIVE_CHAR* s, EIF_INTEGER n)
{
	int i, j;
#ifdef EIF_WINDOWS
	uint16_t c1, c2;
#else
	uint8_t c1, c2, c3, c4;
#endif

	j = 0;
	for (i = 0; i < n; i++) {
#ifdef EIF_WINDOWS
		c1 = (uint16_t)s[i];
		if (c1 == 0) {
			return j;
		} else if (c1 < 0xD800 || c1 >= 0xE000) {
				/* Codepoint from Basic Multilingual Plane: one 16-bit code unit. */
			j++;
		} else if (c1 <= 0xDBFF && i + 1 < n) {
				/* Check if a lead surrogate (value between 0xD800 and 0xDBFF) is followed by a trail surrogate. */
			c2 = (uint16_t)s[i + 1];
			if (c2 >= 0xDC00 && c2 <= 0xDFFF) {
				/* Supplementary Planes: surrogate pair with lead and trail surrogates. */
				i++;
				j++;
			} else {
				j += 6;
			}
		} else {
			j += 6;
		}
#else
		c1 = (uint8_t)s[i];
		if (c1 == 0) {
			return j;
		} else if (c1 <= 0x7F) {
			j++;
		} else if ((c1 & 0xE0) == 0xC0) {
			if (i + 1 < n) {
				c2 = (uint8_t)s[i + 1];
				if ((c2 & 0xC0) == 0x80) {
					j++;
					i++;
				} else {
					j += 3;
				}
			} else {
				j += 3;
			}
		} else if ((c1 & 0xF0) == 0xE0) {
			if (i + 2 < n) {
				c2 = (uint8_t)s[i + 1];
				c3 = (uint8_t)s[i + 2];
				if ((c2 & 0xC0) == 0x80 && (c3 & 0xC0) == 0x80) {
					j++;
					i +=2;
				} else {
					j += 3;
				}
			} else {
				j += 3;
			}
		} else if ((c1 & 0xF8) == 0xF0) {
			if (i + 3 < n) {
				c2 = (uint8_t)s[i + 1];
				c3 = (uint8_t)s[i + 2];
				c4 = (uint8_t)s[i + 3];
				if ((c2 & 0xC0) == 0x80 && (c3 & 0xC0) == 0x80 && (c4 & 0xC0) == 0x80) {
					j++;
					i +=3;
				} else {
					j += 3;
				}
			} else {
				j += 3;
			}
		} else {
			j += 3;
		}
#endif
	}
	return j;
}

/*
 * Hexadecimal representation of `a_code'.
 * `a_code' is expected to be between 0 and 15.
 */
static char GE_to_hex(uint16_t a_code)
{
	switch (a_code) {
	case 0:
		return '0';
	case 1:
		return '1';
	case 2:
		return '2';
	case 3:
		return '3';
	case 4:
		return '4';
	case 5:
		return '5';
	case 6:
		return '6';
	case 7:
		return '7';
	case 8:
		return '8';
	case 9:
		return '9';
	case 10:
		return 'A';
	case 11:
		return 'B';
	case 12:
		return 'C';
	case 13:
		return 'D';
	case 14:
		return 'E';
	default:
		return 'F';
	}
}

/*
 * Copy escaped version of `c' to `a_buffer'.
 * `a_buffer' is expected to have enough space for 6 characters.
 */
static void GE_uint16_to_escaped_str32(uint16_t c, EIF_CHARACTER_32* a_buffer)
{
	int i = 0;

	a_buffer[i] = (EIF_CHARACTER_32)0x0000FFFD;
	i++;
	a_buffer[i] = (EIF_CHARACTER_32)'u';
	i++;
	a_buffer[i] = (EIF_CHARACTER_32)GE_to_hex((c & 0xF000) >> 12);
	i++;
	a_buffer[i] = (EIF_CHARACTER_32)GE_to_hex((c & 0x0F00) >> 8);
	i++;
	a_buffer[i] = (EIF_CHARACTER_32)GE_to_hex((c & 0x00F0) >> 4);
	i++;
	a_buffer[i] = (EIF_CHARACTER_32)GE_to_hex(c & 0x000F);
}

#ifndef __LCC__
/* lcc-win32 complains about this used static function. */

/*
 * Copy escaped version of `c' to `a_buffer'.
 * `a_buffer' is expected to have enough space for 3 characters.
 */
static void GE_uint8_to_escaped_str32(uint8_t c, EIF_CHARACTER_32* a_buffer)
{
	int i = 0;

	a_buffer[i] = (EIF_CHARACTER_32)0x0000FFFD;
	i++;
	a_buffer[i] = (EIF_CHARACTER_32)GE_to_hex((uint16_t)((c & 0xF0) >> 4));
	i++;
	a_buffer[i] = (EIF_CHARACTER_32)GE_to_hex((uint16_t)(c & 0x0F));
}
#endif

/*
 * Copy to `a_buffer' the EIF_CHARACTER_32 characters corresponding to the
 * first `n' native characters in the native string `s'.
 * `a_buffer' is expected to have enough space.
 * Invalid native characters are escaped.
 */
static void GE_nstr_to_str32(EIF_NATIVE_CHAR* s, EIF_CHARACTER_32* a_buffer, EIF_INTEGER n)
{
	int i, j;
#ifdef EIF_WINDOWS
	uint16_t c1, c2;
#else
	uint8_t c1, c2, c3, c4;
#endif

	j = 0;
	for (i = 0; i < n; i++) {
#ifdef EIF_WINDOWS
		c1 = (uint16_t)s[i];
		if (c1 < 0xD800 || c1 >= 0xE000) {
				/* Codepoint from Basic Multilingual Plane: one 16-bit code unit. */
			a_buffer[j] = (EIF_CHARACTER_32)(c1);
			j++;
		} else if (c1 <= 0xDBFF && i + 1 < n) {
				/* Check if a lead surrogate (value between 0xD800 and 0xDBFF) is followed by a trail surrogate. */
			c2 = (uint16_t)s[i + 1];
			if (c2 >= 0xDC00 && c2 <= 0xDFFF) {
					/* Supplementary Planes: surrogate pair with lead and trail surrogates. */
				a_buffer[j] = (EIF_CHARACTER_32)(((uint32_t)c1 << 10) + (uint32_t)c2 - 0x035FDC00);
				j++;
				i++;
			} else {
				GE_uint16_to_escaped_str32(c1, a_buffer + j);
				j += 6;
			}
		} else {
			GE_uint16_to_escaped_str32(c1, a_buffer + j);
			j += 6;
		}
#else
		c1 = (uint8_t)s[i];
		if (c1 <= 0x7F) {
			a_buffer[j] = (EIF_CHARACTER_32)(c1);
			j++;
		} else if ((c1 & 0xE0) == 0xC0) {
			if (i + 1 < n) {
				c2 = (uint8_t)s[i + 1];
				if ((c2 & 0xC0) == 0x80) {
					a_buffer[j] = (EIF_CHARACTER_32)((((uint32_t)c1 & 0x0000001F) << 6) | ((uint32_t)c2 & 0x0000003F));
					j++;
					i++;
				} else {
					GE_uint8_to_escaped_str32(c1, a_buffer + j);
					j += 3;
				}
			} else {
				GE_uint8_to_escaped_str32(c1, a_buffer + j);
				j += 3;
			}
		} else if ((c1 & 0xF0) == 0xE0) {
			if (i + 2 < n) {
				c2 = (uint8_t)s[i + 1];
				c3 = (uint8_t)s[i + 2];
				if ((c2 & 0xC0) == 0x80 && (c3 & 0xC0) == 0x80) {
					a_buffer[j] = (EIF_CHARACTER_32)((((uint32_t)c1 & 0x0000000F) << 12) | (((uint32_t)c2 & 0x0000003F) << 6) | ((uint32_t)c3 & 0x0000003F));
					j++;
					i +=2;
				} else {
					GE_uint8_to_escaped_str32(c1, a_buffer + j);
					j += 3;
				}
			} else {
				GE_uint8_to_escaped_str32(c1, a_buffer + j);
				j += 3;
			}
		} else if ((c1 & 0xF8) == 0xF0) {
			if (i + 3 < n) {
				c2 = (uint8_t)s[i + 1];
				c3 = (uint8_t)s[i + 2];
				c4 = (uint8_t)s[i + 3];
				if ((c2 & 0xC0) == 0x80 && (c3 & 0xC0) == 0x80 && (c4 & 0xC0) == 0x80) {
					a_buffer[j] = (EIF_CHARACTER_32)((((uint32_t)c1 & 0x00000007) << 18) | (((uint32_t)c2 & 0x0000003F) << 12) | (((uint32_t)c3 & 0x0000003F) << 6) | ((uint32_t)c4 & 0x0000003F));
					j++;
					i +=3;
				} else {
					GE_uint8_to_escaped_str32(c1, a_buffer + j);
					j += 3;
				}
			} else {
				GE_uint8_to_escaped_str32(c1, a_buffer + j);
				j += 3;
			}
		} else {
			GE_uint8_to_escaped_str32(c1, a_buffer + j);
			j += 3;
		}
#endif
	}
}

/*
 * Copy to `a_buffer' the EIF_CHARACTER_32 characters corresponding to the
 * first `n' characters in the ISO 8859-1 string `s'.
 * `a_buffer' is expected to have enough space for `n' characters.
 */
static void GE_str8_to_str32(const char* s, EIF_CHARACTER_32* a_buffer, EIF_INTEGER n)
{
	int i;
	for (i = 0; i < n; i++) {
		a_buffer[i] = (EIF_CHARACTER_32)s[i];
	}
}

/*
 * New Eiffel string of type "STRING_8" containing the
 * first `c' characters found in ISO 8859-1 string `s'.
 */
EIF_REFERENCE GE_ms8(const char* s, EIF_INTEGER c)
{
	EIF_STRING_8* l_string;
	EIF_SPECIAL* l_area;
	EIF_CHARACTER_8* l_area_base_address;

	l_string = (EIF_STRING_8*)GE_new_str8(c);
	l_area = (EIF_SPECIAL*)(l_string->area);
	l_area_base_address = (EIF_CHARACTER_8*)GE_sp8_base_address((EIF_REFERENCE)l_area);
	memcpy((char*)l_area_base_address, s, c);
	/* Note that the area was calloc-ed, so not need to add a trailing null character. */
	l_area->count = (c + 1);
	l_string->count = c;
	return (EIF_REFERENCE)l_string;
}

/*
 * New Eiffel string of type "STRING_8" containing all
 * characters found in the null-terminated ISO 8859-1 string `s'.
 */
EIF_REFERENCE GE_str8(const char* s)
{
	return GE_ms8(s, strlen(s));
}

/*
 * New Eiffel string of type "IMMUTABLE_STRING_8" containing the
 * first `c' characters found in ISO 8859-1 string `s'.
 */
EIF_REFERENCE GE_ims8(const char* s, EIF_INTEGER c)
{
	EIF_IMMUTABLE_STRING_8* l_string;
	EIF_SPECIAL* l_area;
	EIF_CHARACTER_8* l_area_base_address;

	l_string = (EIF_IMMUTABLE_STRING_8*)GE_new_istr8(c);
	l_area = (EIF_SPECIAL*)(l_string->area);
	l_area_base_address = (EIF_CHARACTER_8*)GE_sp8_base_address((EIF_REFERENCE)l_area);
	memcpy((char*)l_area_base_address, s, c);
	/* Note that the area was calloc-ed, so not need to add a trailing null character. */
	l_area->count = (c + 1);
	l_string->count = c;
	return (EIF_REFERENCE)l_string;
}

/*
 * New Eiffel string of type "STRING_32" containing the
 * first `c' characters found in ISO 8859-1 string `s'.
 */
EIF_REFERENCE GE_ms32(const char* s, EIF_INTEGER c)
{
	EIF_STRING_32* l_string;
	EIF_SPECIAL* l_area;
	EIF_CHARACTER_32* l_area_base_address;

	l_string = (EIF_STRING_32*)GE_new_str32(c);
	l_area = (EIF_SPECIAL*)(l_string->area);
	l_area_base_address = (EIF_CHARACTER_32*)GE_sp32_base_address((EIF_REFERENCE)l_area);
	GE_str8_to_str32(s, l_area_base_address, c);
	/* Note that the area was calloc-ed, so not need to add a trailing null character. */
	l_area->count = (c + 1);
	l_string->count = c;
	return (EIF_REFERENCE)l_string;
}

/*
 * New Eiffel string of type "STRING_32" containing the
 * first `c' 32-bit characters built from `s' by reading
 * groups of four bytes with little-endian byte order.
 */
EIF_REFERENCE GE_ms32_from_utf32le(const char* s, EIF_INTEGER c)
{
	EIF_STRING_32* l_string;
	EIF_SPECIAL* l_area;
	EIF_CHARACTER_32* l_area_base_address;

	l_string = (EIF_STRING_32*)GE_new_str32(c);
	l_area = (EIF_SPECIAL*)(l_string->area);
	l_area_base_address = (EIF_CHARACTER_32*)GE_sp32_base_address((EIF_REFERENCE)l_area);
#if BYTEORDER == 0x1234
	memcpy((EIF_CHARACTER_32*)l_area_base_address, s, c * 4);
#else
	{
		int i;
		volatile EIF_CHARACTER_32 l_little;
		EIF_CHARACTER_32 l_big;
		for (i = 0; i < c ; i++) {
			memcpy(&l_little, s + (i * 4), 4);
				/* Convert our little endian to big endian. */
			l_big = ((l_little >> 24) & 0xFF) |
				((l_little >> 8) & 0xFF00) |
				((l_little << 8) & 0xFF0000) |
				((l_little << 24) & 0xFF000000);
			l_area_base_address[i] = l_big;
		}
	}
#endif
	/* Note that the area was calloc-ed, so not need to add a trailing null character. */
	l_area->count = (c + 1);
	l_string->count = c;
	return (EIF_REFERENCE)l_string;
}

/*
 * New Eiffel string of type "STRING_32" containing all
 * characters found in the null-terminated ISO 8859-1 string `s'.
 */
EIF_REFERENCE GE_str32(const char* s)
{
	return GE_ms32(s, strlen(s));
}

/*
 * New Eiffel string of type "IMMUTABLE_STRING_32" containing
 * the first `c' characters found in ISO 8859-1 string `s'.
 */
EIF_REFERENCE GE_ims32(const char* s, EIF_INTEGER c)
{
	EIF_IMMUTABLE_STRING_32* l_string;
	EIF_SPECIAL* l_area;
	EIF_CHARACTER_32* l_area_base_address;

	l_string = (EIF_IMMUTABLE_STRING_32*)GE_new_istr32(c);
	l_area = (EIF_SPECIAL*)(l_string->area);
	l_area_base_address = (EIF_CHARACTER_32*)GE_sp32_base_address((EIF_REFERENCE)l_area);
	GE_str8_to_str32(s, l_area_base_address, c);
	/* Note that the area was calloc-ed, so not need to add a trailing null character. */
	l_area->count = (c + 1);
	l_string->count = c;
	return (EIF_REFERENCE)l_string;
}

/*
 * New Eiffel string of type "IMMUTABLE_STRING_32" containing the
 * first `c' 32-bit characters built from `s' by reading
 * groups of four bytes with little-endian byte order.
 */
EIF_REFERENCE GE_ims32_from_utf32le(const char* s, EIF_INTEGER c)
{
	EIF_IMMUTABLE_STRING_32* l_string;
	EIF_SPECIAL* l_area;
	EIF_CHARACTER_32* l_area_base_address;

	l_string = (EIF_IMMUTABLE_STRING_32*)GE_new_istr32(c);
	l_area = (EIF_SPECIAL*)(l_string->area);
	l_area_base_address = (EIF_CHARACTER_32*)GE_sp32_base_address((EIF_REFERENCE)l_area);
#if BYTEORDER == 0x1234
	memcpy((EIF_CHARACTER_32*)l_area_base_address, s, c * 4);
#else
	{
		int i;
		volatile EIF_CHARACTER_32 l_little;
		EIF_CHARACTER_32 l_big;
		for (i = 0; i < c ; i++) {
			memcpy(&l_little, s + (i * 4), 4);
				/* Convert our little endian to big endian. */
			l_big = ((l_little >> 24) & 0xFF) |
				((l_little >> 8) & 0xFF00) |
				((l_little << 8) & 0xFF0000) |
				((l_little << 24) & 0xFF000000);
			l_area_base_address[i] = l_big;
		}
	}
#endif
	/* Note that the area was calloc-ed, so not need to add a trailing null character. */
	l_area->count = (c + 1);
	l_string->count = c;
	return (EIF_REFERENCE)l_string;
}

/*
 * New Eiffel string of type "IMMUTABLE_STRING_32" containing all
 * characters found in the null-terminated ISO 8859-1 string `s'.
 */
EIF_REFERENCE GE_istr32(const char* s)
{
	return GE_ims32(s, strlen(s));
}

/*
 * New Eiffel string of type "IMMUTABLE_STRING_32" containing the
 * first `n' native characters found in native string `s'.
 * Invalid native characters are escaped.
 */
EIF_REFERENCE GE_ims32_from_nstr(EIF_NATIVE_CHAR* s, EIF_INTEGER n)
{
	EIF_IMMUTABLE_STRING_32* l_string;
	EIF_SPECIAL* l_area;
	EIF_CHARACTER_32* l_area_base_address;
	EIF_INTEGER c;

	c = GE_nstr_str32len(s, n);
	l_string = (EIF_IMMUTABLE_STRING_32*)GE_new_istr32(c);
	l_area = (EIF_SPECIAL*)(l_string->area);
	l_area_base_address = (EIF_CHARACTER_32*)GE_sp32_base_address((EIF_REFERENCE)l_area);
	GE_nstr_to_str32(s, l_area_base_address, n);
	/* Note that the area was calloc-ed, so not need to add a trailing null character. */
	l_area->count = (c + 1);
	l_string->count = c;
	return (EIF_REFERENCE)l_string;
}

/*
 * New Eiffel string of type "IMMUTABLE_STRING_32" containing all
 * characters found in the null-terminated native string `s'.
 * Invalid native characters are escaped.
 */
EIF_REFERENCE GE_istr32_from_nstr(EIF_NATIVE_CHAR* s)
{
	return GE_ims32_from_nstr(s, GE_nstrlen(s));
}

/*
 * New Eiffel string of type "STRING" containing all
 * characters found in the null-terminated ISO 8859-1 string `s'
 */
EIF_REFERENCE GE_str(const char* s)
{
	return GE_ms(s, strlen(s));
}

#ifdef __cplusplus
}
#endif

#endif
#ifdef __cplusplus
extern "C" {
#endif


#ifdef __cplusplus
}
#endif
/*
	description:

		"C functions used to implement type information"

	system: "Gobo Eiffel Compiler"
	copyright: "Copyright (c) 2016-2024, Eric Bezault and others"
	license: "MIT License"
*/

#ifndef GE_TYPES_C
#define GE_TYPES_C
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#ifndef GE_TYPES_H
#include "ge_types.h"
#endif
#ifndef GE_STRING_H
#include "ge_string.h"
#endif

#ifdef __cplusplus
extern "C" {
#endif

/*
 * Number of type infos in `GE_type_infos'.
 * Do not take into account the fake item at index 0.
 */
int GE_type_info_count;

/*
 * Encode a EIF_TYPE into a EIF_ENCODED_TYPE.
 * The lower part of EIF_ENCODED_TYPE contains the .id field,
 * and the upper part the .annotations.
 */
EIF_ENCODED_TYPE GE_encoded_type(EIF_TYPE a_type)
{
	EIF_ENCODED_TYPE l_result;

#if defined(_MSC_VER)
		/* This code below is just optimized as one move by cl on x86 platforms.
		 * The else-part below generates non-optimal code with cl.
		 */
	memcpy((void*)&l_result, (void*)&a_type, sizeof(EIF_ENCODED_TYPE));
#else
		/* This code below is just optimized as one move by gcc/clang on x86 platforms. */
	l_result = a_type.annotations;
	l_result = (l_result << 16) | a_type.id;
#endif
	return l_result;
}

/*
 * Decode a EIF_ENCODED_TYPE into a EIF_TYPE.
 * The lower part of EIF_ENCODED_TYPE contains the .id field,
 * and the upper part the .annotations.
 */
EIF_TYPE GE_decoded_type(EIF_ENCODED_TYPE a_type)
{
	EIF_TYPE l_result;

#if defined(_MSC_VER)
		/* This code below is just optimized as one move by cl on x86 platforms.
		 * The else-part below generates non-optimal code with cl.
		 */
	memcpy((void*)&l_result, (void*)&a_type, sizeof(EIF_TYPE));
#else
		/* This code below is just optimized as one move by gcc/clang on x86 platforms. */
	l_result.id = a_type & 0x0000FFFF;
	l_result.annotations = a_type >> 16;
#endif
	return l_result;
}

/*
 * Type with `a_id' and `a_annotations'.
 */
EIF_TYPE GE_new_type(EIF_TYPE_INDEX a_id, EIF_TYPE_INDEX a_annotations)
{
	EIF_TYPE l_result;
	l_result.id = a_id;
	l_result.annotations = a_annotations;
	return l_result;
}

/*
 * Associated detachable type of `a_type' if any,
 * otherwise `a_type'.
 */
EIF_TYPE GE_non_attached_type(EIF_TYPE a_type)
{
		/* Since types are by default detachable, we simply remove
		 * all attachment marks. */
	a_type.annotations &= ~(ATTACHED_FLAG | DETACHABLE_FLAG);
	return a_type;
}

/*
 * Associated attached type of `a_type' if any,
 * otherwise `a_type'.
 */
EIF_TYPE GE_attached_type(EIF_TYPE a_type)
{
	if (!GE_is_expanded_type_index(a_type.id)) {
		a_type.annotations &= ~DETACHABLE_FLAG;
		a_type.annotations |= ATTACHED_FLAG;
	}
	return a_type;
}

/*
 * Is `a_type' a SPECIAL type of user-defined expanded type?
 */
EIF_BOOLEAN GE_is_special_of_expanded_type_index(EIF_TYPE_INDEX a_type)
{
	EIF_BOOLEAN l_result = EIF_FALSE;
#ifdef GE_USE_TYPE_GENERIC_PARAMETERS
	EIF_TYPE_INDEX l_generic_parameter;
	uint32_t l_flags;

	if ((GE_type_infos[a_type].flags & GE_TYPE_FLAG_SPECIAL)) {
		l_generic_parameter = GE_decoded_type(GE_type_infos[a_type].generic_parameters[0]).id;
		l_flags = GE_type_infos[l_generic_parameter].flags;
		l_result = EIF_TEST((l_flags & GE_TYPE_FLAG_EXPANDED) && !(l_flags & GE_TYPE_FLAG_BASIC_MASK));
	}
#endif
	return l_result;
}

/*
 * Is `a_type' a SPECIAL type of reference type?
 */
EIF_BOOLEAN GE_is_special_of_reference_type_index(EIF_TYPE_INDEX a_type)
{
	EIF_BOOLEAN l_result = EIF_FALSE;
#ifdef GE_USE_TYPE_GENERIC_PARAMETERS
	EIF_TYPE_INDEX l_generic_parameter;
	uint32_t l_flags;

	if ((GE_type_infos[a_type].flags & GE_TYPE_FLAG_SPECIAL)) {
		l_generic_parameter = GE_decoded_type(GE_type_infos[a_type].generic_parameters[0]).id;
		l_flags = GE_type_infos[l_generic_parameter].flags;
		l_result = EIF_TEST(!(l_flags & GE_TYPE_FLAG_EXPANDED));
	}
#endif
	return l_result;
}

/*
 * Is `a_type' a SPECIAL type of reference type or basic expanded type?
 * (Note that user-defined expanded types are excluded.)
 */
EIF_BOOLEAN GE_is_special_of_reference_or_basic_expanded_type_index(EIF_TYPE_INDEX a_type)
{
	EIF_BOOLEAN l_result = EIF_FALSE;
#ifdef GE_USE_TYPE_GENERIC_PARAMETERS
	EIF_TYPE_INDEX l_generic_parameter;
	uint32_t l_flags;

	if ((GE_type_infos[a_type].flags & GE_TYPE_FLAG_SPECIAL)) {
		l_generic_parameter = GE_decoded_type(GE_type_infos[a_type].generic_parameters[0]).id;
		l_flags = GE_type_infos[l_generic_parameter].flags;
		l_result = EIF_TEST(!(l_flags & GE_TYPE_FLAG_EXPANDED) || (l_flags & GE_TYPE_FLAG_BASIC_MASK));
	}
#endif
	return l_result;
}

/*
 * Does `i'-th field of `a_object + a_physical_offset' (which is expected to be reference)
 * denote a reference with copy semantics?
 */
EIF_BOOLEAN GE_is_copy_semantics_field(EIF_INTEGER i, EIF_POINTER a_object, EIF_INTEGER a_physical_offset)
{
	EIF_REFERENCE l_object;

	l_object = GE_reference_field(i, a_object, a_physical_offset);
	if (l_object) {
		return GE_is_expanded_object(l_object);
	} else {
		return EIF_FALSE;
	}
}

/*
 * Does `i'-th item of special `a_object' (which is expected to be reference)
 * denote a reference with copy semantics?
 */
EIF_BOOLEAN GE_is_special_copy_semantics_item(EIF_INTEGER i, EIF_POINTER a_object)
{
#if defined(GE_USE_ATTRIBUTES) && defined(GE_USE_ATTRIBUTE_OFFSET)
	EIF_REFERENCE l_object;
	GE_type_info l_type_info;

	l_type_info = GE_type_infos[((EIF_REFERENCE)a_object)->id];
		/* The last pseudo attribute is the item at index 0 in the special object */
	l_object = *(EIF_REFERENCE*)((char*)a_object + l_type_info.attributes[l_type_info.attribute_count - 1]->offset + i * sizeof(EIF_REFERENCE));
	if (l_object) {
		return GE_is_expanded_object(l_object);
	} else {
		return EIF_FALSE;
	}
#else
	return EIF_FALSE;
#endif
}

/*
 * Generator class name of `a_type'.
 */
EIF_REFERENCE GE_generator_of_type_index(EIF_TYPE_INDEX a_type)
{
	const char* l_generator;
#ifdef GE_USE_TYPE_GENERATOR
/* TODO: check that `a_type' is valid. */
	l_generator = GE_type_infos[a_type].generator;
#else
	l_generator = "";
#endif
	return GE_str(l_generator);
}

EIF_REFERENCE GE_generator_8_of_type_index(EIF_TYPE_INDEX a_type)
{
	const char* l_generator;
#ifdef GE_USE_TYPE_GENERATOR
/* TODO: check that `a_type' is valid. */
	l_generator = GE_type_infos[a_type].generator;
#else
	l_generator = "";
#endif
	return GE_str8(l_generator);
}

/*
 * Full name of `a_type'.
 */
EIF_REFERENCE GE_generating_type_of_encoded_type(EIF_ENCODED_TYPE a_type)
{
	const char* l_name;
#ifdef GE_USE_TYPE_NAME
/* TODO: check that `a_type' is valid. */
	EIF_TYPE l_decoded_type;

	l_decoded_type = GE_decoded_type(a_type);
	l_name = GE_type_infos[l_decoded_type.id].name;
	if (!l_decoded_type.annotations) {
		l_name++;
	}
#else
	l_name = "";
#endif
	return GE_str(l_name);
}

EIF_REFERENCE GE_generating_type_8_of_encoded_type(EIF_ENCODED_TYPE a_type)
{
	const char* l_name;
#ifdef GE_USE_TYPE_NAME
/* TODO: check that `a_type' is valid. */
	EIF_TYPE l_decoded_type;

	l_decoded_type = GE_decoded_type(a_type);
	l_name = GE_type_infos[l_decoded_type.id].name;
	if (!l_decoded_type.annotations) {
		l_name++;
	}
#else
	l_name = "";
#endif
	return GE_str8(l_name);
}

/*
 * Encoded type whose name is `a_name'.
 * -1 if no such type.
 */
EIF_ENCODED_TYPE GE_encoded_type_from_name(EIF_POINTER a_name)
{
#ifdef GE_USE_TYPE_NAME
/* TODO: check that `a_type' is valid. */
	int i;
	const char* l_name;

	for (i = 1; i <= GE_type_info_count; i++) {
		l_name = GE_type_infos[i].name;
		if (strcmp((char*)a_name, l_name + 1) == 0) {
			return (EIF_INTEGER)GE_encoded_type(GE_new_type(i, 0x0));
		} else if (strcmp((char*)a_name, l_name) == 0) {
			return (EIF_INTEGER)GE_encoded_type(GE_new_type(i, ATTACHED_FLAG));
		}
	}
#endif
	return EIF_NO_TYPE;
}

/*
 * Does `a_type_1' conform to `a_type_2'?
 */
EIF_BOOLEAN GE_encoded_type_conforms_to(EIF_ENCODED_TYPE a_type_1, EIF_ENCODED_TYPE a_type_2)
{
#ifdef GE_USE_ANCESTORS
	GE_type_info l_type_info_1, l_type_info_2;
	GE_ancestor** l_ancestors;
	uint32_t l_ancestor_count, i;
	EIF_TYPE l_decoded_type_1, l_decoded_type_2;
	EIF_TYPE_INDEX l_type_index_1, l_type_index_2, l_ancestor_type_index;
	uint32_t l_flags_1, l_flags_2;

	l_decoded_type_1 = GE_decoded_type(a_type_1);
	l_decoded_type_2 = GE_decoded_type(a_type_2);
	l_type_index_1 = l_decoded_type_1.id;
	l_type_index_2 = l_decoded_type_2.id;
	l_type_info_1 = GE_type_infos[l_type_index_1];
	l_type_info_2 = GE_type_infos[l_type_index_2];
	l_flags_1 = l_type_info_1.flags;
	l_flags_2 = l_type_info_2.flags;
	if (!(l_flags_1 & GE_TYPE_FLAG_EXPANDED || l_decoded_type_1.annotations & ATTACHED_FLAG) && (l_flags_2 & GE_TYPE_FLAG_EXPANDED || l_decoded_type_2.annotations & ATTACHED_FLAG)) {
		return EIF_FALSE;
	} else if (l_flags_1 & GE_TYPE_FLAG_NONE) {
		return EIF_TEST(!(l_flags_2 & GE_TYPE_FLAG_EXPANDED));
	} else if (l_type_index_1 == l_type_index_2) {
		return EIF_TRUE;
	} else if (l_type_index_1 < l_type_index_2) {
		return EIF_FALSE;
	} else {
		l_ancestors = l_type_info_1.ancestors;
		l_ancestor_count = l_type_info_1.ancestor_count;
		for (i = 0; i < l_ancestor_count; i++) {
			l_ancestor_type_index = l_ancestors[i]->type_id;
			if (l_ancestor_type_index == l_type_index_2) {
				return EIF_TRUE;
			} else if (l_ancestor_type_index > l_type_index_2) {
				return EIF_FALSE;
			}
		}
	}
#endif
	return EIF_FALSE;
}

/*
 * Number of generic parameters.
 */
EIF_INTEGER GE_generic_parameter_count_of_type_index(EIF_TYPE_INDEX a_type)
{
#ifdef GE_USE_TYPE_GENERIC_PARAMETERS
	return (EIF_INTEGER)GE_type_infos[a_type].generic_parameter_count;
#else
	return (EIF_INTEGER)0;
#endif
}

/*
 * Type of `i'-th generic parameter of `a_type'.
 */
EIF_INTEGER GE_generic_parameter_of_type_index(EIF_TYPE_INDEX a_type, EIF_INTEGER i)
{
#ifdef GE_USE_TYPE_GENERIC_PARAMETERS
/* TODO: check that `a_type' and `i' are valid. */
	return (EIF_INTEGER)GE_type_infos[a_type].generic_parameters[i - 1];
#else
	return (EIF_INTEGER)0;
#endif
}

/*
 * Number of fields of an object of dynamic type `a_type'.
 */
EIF_INTEGER GE_field_count_of_type_index(EIF_TYPE_INDEX a_type)
{
#if defined(GE_USE_ATTRIBUTES) && defined(GE_USE_ATTRIBUTE_OFFSET)
/* TODO: check that `a_type' is valid. */
	return (EIF_INTEGER)GE_type_infos[a_type].attribute_count;
#else
	return (EIF_INTEGER)0;
#endif
}

/*
 * Physical offset of the `i'-th field for an object of dynamic type `a_type'.
 */
EIF_INTEGER GE_field_offset_of_type_index(EIF_INTEGER i, EIF_TYPE_INDEX a_type)
{
#if defined(GE_USE_ATTRIBUTES) && defined(GE_USE_ATTRIBUTE_OFFSET)
/* TODO: check that `a_type' and `i' are valid. */
	return (EIF_INTEGER)GE_type_infos[a_type].attributes[i - 1]->offset;
#else
	return (EIF_INTEGER)0;
#endif
}

/*
 * Name of the `i'-th field for an object of dynamic type `a_type'.
 */
EIF_POINTER GE_field_name_of_type_index(EIF_INTEGER i, EIF_TYPE_INDEX a_type)
{
#if defined(GE_USE_ATTRIBUTES) && defined(GE_USE_ATTRIBUTE_NAME)
/* TODO: check that `a_type' and `i' are valid. */
	return (EIF_POINTER)GE_type_infos[a_type].attributes[i - 1]->name;
#else
	return (EIF_POINTER)0;
#endif
}

/*
 * Static type of the `i'-th field for an object of dynamic type `a_type'.
 */
EIF_INTEGER GE_field_static_type_of_type_index(EIF_INTEGER i, EIF_TYPE_INDEX a_type)
{
#if defined(GE_USE_ATTRIBUTES) && defined(GE_USE_ATTRIBUTE_TYPE_ID)
/* TODO: check that `a_type' and `i' are valid. */
	return (EIF_INTEGER)GE_type_infos[a_type].attributes[i - 1]->type_id;
#else
	return (EIF_INTEGER)0;
#endif
}

/*
 * Kind of type of the `i'-th field for an object of dynamic type `a_type'.
 */
EIF_INTEGER GE_field_type_kind_of_type_index(EIF_INTEGER i, EIF_TYPE_INDEX a_type)
{
#if defined(GE_USE_ATTRIBUTES) && defined(GE_USE_ATTRIBUTE_TYPE_ID)
	uint32_t l_flags = GE_type_infos[GE_decoded_type(GE_type_infos[a_type].attributes[i - 1]->type_id).id].flags;
	if (l_flags & GE_TYPE_FLAG_BASIC_MASK) {
		switch (l_flags & GE_TYPE_FLAG_BASIC_MASK) {
		case GE_TYPE_FLAG_BOOLEAN:
			return (EIF_INTEGER)GE_TYPE_KIND_BOOLEAN;
		case GE_TYPE_FLAG_CHARACTER_8:
			return (EIF_INTEGER)GE_TYPE_KIND_CHARACTER_8;
		case GE_TYPE_FLAG_CHARACTER_32:
			return (EIF_INTEGER)GE_TYPE_KIND_CHARACTER_32;
		case GE_TYPE_FLAG_INTEGER_8:
			return (EIF_INTEGER)GE_TYPE_KIND_INTEGER_8;
		case GE_TYPE_FLAG_INTEGER_16:
			return (EIF_INTEGER)GE_TYPE_KIND_INTEGER_16;
		case GE_TYPE_FLAG_INTEGER_32:
			return (EIF_INTEGER)GE_TYPE_KIND_INTEGER_32;
		case GE_TYPE_FLAG_INTEGER_64:
			return (EIF_INTEGER)GE_TYPE_KIND_INTEGER_64;
		case GE_TYPE_FLAG_NATURAL_8:
			return (EIF_INTEGER)GE_TYPE_KIND_NATURAL_8;
		case GE_TYPE_FLAG_NATURAL_16:
			return (EIF_INTEGER)GE_TYPE_KIND_NATURAL_16;
		case GE_TYPE_FLAG_NATURAL_32:
			return (EIF_INTEGER)GE_TYPE_KIND_NATURAL_32;
		case GE_TYPE_FLAG_NATURAL_64:
			return (EIF_INTEGER)GE_TYPE_KIND_NATURAL_64;
		case GE_TYPE_FLAG_POINTER:
			return (EIF_INTEGER)GE_TYPE_KIND_POINTER;
		case GE_TYPE_FLAG_REAL_32:
			return (EIF_INTEGER)GE_TYPE_KIND_REAL_32;
		case GE_TYPE_FLAG_REAL_64:
			return (EIF_INTEGER)GE_TYPE_KIND_REAL_64;
		default:
			return (EIF_INTEGER)GE_TYPE_KIND_INVALID;
		}
	} else if (l_flags & GE_TYPE_FLAG_EXPANDED) {
		return (EIF_INTEGER)GE_TYPE_KIND_EXPANDED;
	} else {
		return (EIF_INTEGER)GE_TYPE_KIND_REFERENCE;
	}
#else
	return (EIF_INTEGER)GE_TYPE_KIND_INVALID;
#endif
}

/*
 * Physical size of `a_object'.
 */
EIF_NATURAL_64 GE_object_size(EIF_POINTER a_object)
{
#ifdef GE_USE_TYPE_OBJECT_SIZE
	EIF_TYPE_INDEX l_type_index = ((EIF_REFERENCE)(a_object))->id;
	uint64_t l_size = GE_type_infos[l_type_index].object_size;
#ifdef GE_USE_TYPE_GENERIC_PARAMETERS
	if (GE_is_special_type_index(l_type_index)) {
		EIF_TYPE_INDEX l_generic_parameter = GE_decoded_type(GE_type_infos[l_type_index].generic_parameters[0]).id;
		uint32_t l_flags = GE_type_infos[l_generic_parameter].flags;
		EIF_INTEGER l_capacity = ((EIF_SPECIAL*)a_object)->capacity;
		uint64_t l_item_size;

		if (l_flags & GE_TYPE_FLAG_BASIC_MASK) {
			switch (l_flags & GE_TYPE_FLAG_BASIC_MASK) {
			case GE_TYPE_FLAG_BOOLEAN:
				l_item_size = sizeof(EIF_BOOLEAN);
				break;
			case GE_TYPE_FLAG_CHARACTER_8:
				l_item_size = sizeof(EIF_CHARACTER_8);
				break;
			case GE_TYPE_FLAG_CHARACTER_32:
				l_item_size = sizeof(EIF_CHARACTER_32);
				break;
			case GE_TYPE_FLAG_INTEGER_8:
				l_item_size = sizeof(EIF_INTEGER_8);
				break;
			case GE_TYPE_FLAG_INTEGER_16:
				l_item_size = sizeof(EIF_INTEGER_16);
				break;
			case GE_TYPE_FLAG_INTEGER_32:
				l_item_size = sizeof(EIF_INTEGER_32);
				break;
			case GE_TYPE_FLAG_INTEGER_64:
				l_item_size = sizeof(EIF_INTEGER_64);
				break;
			case GE_TYPE_FLAG_NATURAL_8:
				l_item_size = sizeof(EIF_NATURAL_8);
				break;
			case GE_TYPE_FLAG_NATURAL_16:
				l_item_size = sizeof(EIF_NATURAL_16);
				break;
			case GE_TYPE_FLAG_NATURAL_32:
				l_item_size = sizeof(EIF_NATURAL_32);
				break;
			case GE_TYPE_FLAG_NATURAL_64:
				l_item_size = sizeof(EIF_NATURAL_64);
				break;
			case GE_TYPE_FLAG_POINTER:
				l_item_size = sizeof(EIF_POINTER);
				break;
			case GE_TYPE_FLAG_REAL_32:
				l_item_size = sizeof(EIF_REAL_32);
				break;
			case GE_TYPE_FLAG_REAL_64:
				l_item_size = sizeof(EIF_REAL_64);
				break;
			default:
				l_item_size = 0;
			}
		} else if (l_flags & GE_TYPE_FLAG_EXPANDED) {
			l_item_size = GE_type_infos[l_generic_parameter].object_size;
		} else {
			l_item_size = sizeof(EIF_REFERENCE);
		}
		l_size += l_capacity * l_item_size;
	}
#endif
	return (EIF_NATURAL_64)l_size;
#else
	return (EIF_NATURAL_64)0;
#endif
}

/*
 * Is `i'-th field of objects of type `a_type' a user-defined expanded attribute?
 */
EIF_BOOLEAN GE_is_field_expanded_of_type_index(EIF_INTEGER i, EIF_TYPE_INDEX a_type)
{
#if defined(GE_USE_ATTRIBUTES) && defined(GE_USE_ATTRIBUTE_TYPE_ID)
	uint32_t l_flags = GE_type_infos[GE_decoded_type(GE_type_infos[a_type].attributes[i - 1]->type_id).id].flags;
	return EIF_TEST((l_flags & GE_TYPE_FLAG_EXPANDED) && !(l_flags & GE_TYPE_FLAG_BASIC_MASK));
#else
	return EIF_FALSE;
#endif
}

/*
 * Get a lock on `GE_mark_object' and `GE_unmark_object' routines so that
 * 2 threads cannot `GE_mark_object' and `GE_unmark_object' at the same time.
 */
void GE_lock_marking(void)
{
#ifdef GE_USE_THREADS
/* TODO */
#endif
}

/*
 * Release a lock on `GE_mark_object' and `GE_unmark_object', so that another
 * thread can use `GE_mark_object' and `GE_unmark_object'.
 */
void GE_unlock_marking(void)
{
#ifdef GE_USE_THREADS
/* TODO */
#endif
}

/*
 * Is `obj' marked?
 */
EIF_BOOLEAN GE_is_object_marked(EIF_POINTER obj)
{
	return EIF_TEST(((EIF_REFERENCE)obj)->flags & GE_OBJECT_FLAG_MARKED);
}

/*
 * Mark `obj'.
 */
void GE_mark_object(EIF_POINTER obj)
{
	((EIF_REFERENCE)obj)->flags |= GE_OBJECT_FLAG_MARKED;
}

/*
 * Unmark `obj'.
 */
void GE_unmark_object(EIF_POINTER obj)
{
	((EIF_REFERENCE)obj)->flags &= ~GE_OBJECT_FLAG_MARKED;
}

/*
 * New instance of dynamic `a_type'.
 * Note: returned object is not initialized and may
 * hence violate its invariant.
 * `a_type' cannot represent a SPECIAL type, use
 * `GE_new_special_of_reference_instance_of_type_index' instead.
 */
EIF_REFERENCE GE_new_instance_of_type_index(GE_context* a_context, EIF_TYPE_INDEX a_type)
{
	EIF_REFERENCE (*l_new)(GE_context*, EIF_BOOLEAN);

	l_new = (EIF_REFERENCE (*)(GE_context*, EIF_BOOLEAN))GE_type_infos[a_type].new_instance;
	if (l_new) {
		return l_new(a_context, EIF_TRUE);
	} else {
		return EIF_VOID;
	}
}

/*
 * New instance of dynamic `a_type' that represents
 * a SPECIAL with can contain `a_capacity' elements of reference type.
 * To create a SPECIAL of basic type, use class SPECIAL directly.
 */
EIF_REFERENCE GE_new_special_of_reference_instance_of_type_index(GE_context* a_context, EIF_TYPE_INDEX a_type, EIF_INTEGER a_capacity)
{
	EIF_REFERENCE (*l_new)(GE_context*, EIF_INTEGER, EIF_BOOLEAN);

	l_new = (EIF_REFERENCE (*)(GE_context*, EIF_INTEGER, EIF_BOOLEAN))GE_type_infos[a_type].new_instance;
	if (l_new) {
		return l_new(a_context, a_capacity, EIF_TRUE);
	} else {
		return EIF_VOID;
	}
}

/*
 * New instance of TYPE for object of type `a_type'.
 */
EIF_REFERENCE GE_new_type_instance_of_encoded_type(GE_context* a_context, EIF_ENCODED_TYPE a_type)
{
	EIF_TYPE l_decoded_type;
	EIF_TYPE_INDEX l_type_index;
	EIF_TYPE_INDEX l_annotations;
	EIF_REFERENCE l_result;

	l_decoded_type = GE_decoded_type(a_type);
	l_type_index = l_decoded_type.id;
	l_annotations = l_decoded_type.annotations;
	l_result = (EIF_REFERENCE)&(GE_types[l_type_index][l_annotations]);
	if (l_result->id == 0) {
		l_result = EIF_VOID;
		GE_raise(GE_EX_PROG);
	}
	return l_result;
}

#ifdef __cplusplus
}
#endif

#endif
#ifdef __cplusplus
extern "C" {
#endif


#ifdef __cplusplus
}
#endif
/*
	description:

		"C functions used to access garbage collector facilities"

	system: "Gobo Eiffel Compiler"
	copyright: "Copyright (c) 2007-2024, Eric Bezault and others"
	license: "MIT License"
*/

#ifndef GE_GC_C
#define GE_GC_C
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#ifndef GE_GC_H
#include "ge_gc.h"
#endif
#ifndef GE_TYPES_H
#include "ge_types.h"
#endif

#ifdef __cplusplus
extern "C" {
#endif

/*
 * Allocate memory that does not contain pointers to collectable objects.
 * The allocated memory is zeroed.
 * The allocated object is itself not collectable.
 * Do not raise an exception when no-more-memory.
 */
#ifdef GE_USE_BOEHM_GC
void* GE_unprotected_calloc_atomic_uncollectable(size_t nelem, size_t elsize)
{
	void* new_p;

	new_p = GC_malloc_atomic_uncollectable(nelem * elsize);
	if (new_p) {
		memset(new_p, 0, nelem * elsize);
	}
	return new_p;
}
#endif

/*
 * Allocate more memory for the given pointer.
 * The reallocated pointer keeps the same properties (e.g. atomic or not, collectable or not).
 * The extra allocated memory is zeroed.
 * Do not raise an exception when no-more-memory.
 */
void* GE_unprotected_recalloc(void* p, size_t old_nelem, size_t new_nelem, size_t elsize)
{
	void* new_p;
	new_p = GE_unprotected_realloc(p, new_nelem * elsize);
	if (new_p) {
		memset(((char*)new_p) + (old_nelem * elsize), 0, (new_nelem - old_nelem) * elsize);
	}
	return new_p;
}

#ifdef GE_USE_BOEHM_GC
/*
 * Call dispose routine on object `C'.
 */
void GE_boehm_dispose(void* C, void* disp) {
	((GE_types[((EIF_REFERENCE)C)->id][0]).dispose)(GE_current_context(), (EIF_REFERENCE) C);
}

/*
 * Call dispose routine `disp' on once-per-object data `data'.
 */
void GE_boehm_dispose_once_per_object_data(void* data, void* disp) {
	((void (*) (void*)) disp)(data);
}
#endif

/* The C side weans adopted object. */
EIF_REFERENCE eif_wean(EIF_OBJECT object)
{
	return (EIF_REFERENCE)object;
}

#ifdef __cplusplus
}
#endif

#endif
#ifdef __cplusplus
extern "C" {
#endif


#ifdef __cplusplus
}
#endif
/*
	description:

		"C functions used to implement class THREAD and related threading facilities"

	system: "Gobo Eiffel Compiler"
	copyright: "Copyright (c) 2016-2024, Eric Bezault and others"
	license: "MIT License"
*/

#ifndef GE_THREAD_C
#define GE_THREAD_C
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#ifdef GE_USE_THREADS

#ifndef GE_THREAD_H
#include "ge_thread.h"
#endif
#ifndef GE_GC_H
#include "ge_gc.h"
#endif
#ifndef GE_ONCE_H
#include "ge_once.h"
#endif
#ifndef GE_TIME_H
#include "ge_time.h"
#endif

#ifdef GE_USE_SCOOP
#ifndef GE_SCOOP_H
#include "ge_scoop.h"
#endif
#endif

#ifdef GE_USE_POSIX_THREADS
#include <limits.h>
#endif

#ifdef __cplusplus
extern "C" {
#endif

/*
 * Numbers of once-per-thread features.
 */
uint32_t GE_thread_onces_boolean_count;
uint32_t GE_thread_onces_character_8_count;
uint32_t GE_thread_onces_character_32_count;
uint32_t GE_thread_onces_integer_8_count;
uint32_t GE_thread_onces_integer_16_count;
uint32_t GE_thread_onces_integer_32_count;
uint32_t GE_thread_onces_integer_64_count;
uint32_t GE_thread_onces_natural_8_count;
uint32_t GE_thread_onces_natural_16_count;
uint32_t GE_thread_onces_natural_32_count;
uint32_t GE_thread_onces_natural_64_count;
uint32_t GE_thread_onces_pointer_count;
uint32_t GE_thread_onces_real_32_count;
uint32_t GE_thread_onces_real_64_count;
uint32_t GE_thread_onces_reference_count;
uint32_t GE_thread_onces_procedure_count;

/*
 * Mutexes used to protect the calls to once-per-process features.
 */
GE_once_mutexes* GE_process_once_mutexes;

/*
 * Create a new 'GE_once_mutexes' struct which can deal with the
 * numbers of once features passed as argument.
 */
GE_once_mutexes* GE_new_once_mutexes(
	uint32_t a_boolean_count,
	uint32_t a_character_8_count,
	uint32_t a_character_32_count,
	uint32_t a_integer_8_count,
	uint32_t a_integer_16_count,
	uint32_t a_integer_32_count,
	uint32_t a_integer_64_count,
	uint32_t a_natural_8_count,
	uint32_t a_natural_16_count,
	uint32_t a_natural_32_count,
	uint32_t a_natural_64_count,
	uint32_t a_pointer_count,
	uint32_t a_real_32_count,
	uint32_t a_real_64_count,
	uint32_t a_reference_count,
	uint32_t a_procedure_count)
{
	GE_once_mutexes* l_once_mutexes;
	unsigned int i;

	l_once_mutexes = (GE_once_mutexes*)GE_calloc_atomic_uncollectable(1, sizeof(GE_once_mutexes));
	if (a_boolean_count > 0) {
		l_once_mutexes->boolean_mutex = (EIF_POINTER*)GE_malloc_atomic_uncollectable(a_boolean_count * sizeof(EIF_POINTER));
		for (i = 0; i < a_boolean_count; i++) {
			l_once_mutexes->boolean_mutex[i] = GE_mutex_create();
		}
	}
	if (a_character_8_count > 0) {
		l_once_mutexes->character_8_mutex = (EIF_POINTER*)GE_malloc_atomic_uncollectable(a_character_8_count * sizeof(EIF_POINTER));
		for (i = 0; i < a_character_8_count; i++) {
			l_once_mutexes->character_8_mutex[i] = GE_mutex_create();
		}
	}
	if (a_character_32_count > 0) {
		l_once_mutexes->character_32_mutex = (EIF_POINTER*)GE_malloc_atomic_uncollectable(a_character_32_count * sizeof(EIF_POINTER));
		for (i = 0; i < a_character_32_count; i++) {
			l_once_mutexes->character_32_mutex[i] = GE_mutex_create();
		}
	}
	if (a_integer_8_count > 0) {
		l_once_mutexes->integer_8_mutex = (EIF_POINTER*)GE_malloc_atomic_uncollectable(a_integer_8_count * sizeof(EIF_POINTER));
		for (i = 0; i < a_integer_8_count; i++) {
			l_once_mutexes->integer_8_mutex[i] = GE_mutex_create();
		}
	}
	if (a_integer_16_count > 0) {
		l_once_mutexes->integer_16_mutex = (EIF_POINTER*)GE_malloc_atomic_uncollectable(a_integer_16_count * sizeof(EIF_POINTER));
		for (i = 0; i < a_integer_16_count; i++) {
			l_once_mutexes->integer_16_mutex[i] = GE_mutex_create();
		}
	}
	if (a_integer_32_count > 0) {
		l_once_mutexes->integer_32_mutex = (EIF_POINTER*)GE_malloc_atomic_uncollectable(a_integer_32_count * sizeof(EIF_POINTER));
		for (i = 0; i < a_integer_32_count; i++) {
			l_once_mutexes->integer_32_mutex[i] = GE_mutex_create();
		}
	}
	if (a_integer_64_count > 0) {
		l_once_mutexes->integer_64_mutex = (EIF_POINTER*)GE_malloc_atomic_uncollectable(a_integer_64_count * sizeof(EIF_POINTER));
		for (i = 0; i < a_integer_64_count; i++) {
			l_once_mutexes->integer_64_mutex[i] = GE_mutex_create();
		}
	}
	if (a_natural_8_count > 0) {
		l_once_mutexes->natural_8_mutex = (EIF_POINTER*)GE_malloc_atomic_uncollectable(a_natural_8_count * sizeof(EIF_POINTER));
		for (i = 0; i < a_natural_8_count; i++) {
			l_once_mutexes->natural_8_mutex[i] = GE_mutex_create();
		}
	}
	if (a_natural_16_count > 0) {
		l_once_mutexes->natural_16_mutex = (EIF_POINTER*)GE_malloc_atomic_uncollectable(a_natural_16_count * sizeof(EIF_POINTER));
		for (i = 0; i < a_natural_16_count; i++) {
			l_once_mutexes->natural_16_mutex[i] = GE_mutex_create();
		}
	}
	if (a_natural_32_count > 0) {
		l_once_mutexes->natural_32_mutex = (EIF_POINTER*)GE_malloc_atomic_uncollectable(a_natural_32_count * sizeof(EIF_POINTER));
		for (i = 0; i < a_natural_32_count; i++) {
			l_once_mutexes->natural_32_mutex[i] = GE_mutex_create();
		}
	}
	if (a_natural_64_count > 0) {
		l_once_mutexes->natural_64_mutex = (EIF_POINTER*)GE_malloc_atomic_uncollectable(a_natural_64_count * sizeof(EIF_POINTER));
		for (i = 0; i < a_natural_64_count; i++) {
			l_once_mutexes->natural_64_mutex[i] = GE_mutex_create();
		}
	}
	if (a_pointer_count > 0) {
		l_once_mutexes->pointer_mutex = (EIF_POINTER*)GE_malloc_atomic_uncollectable(a_pointer_count * sizeof(EIF_POINTER));
		for (i = 0; i < a_pointer_count; i++) {
			l_once_mutexes->pointer_mutex[i] = GE_mutex_create();
		}
	}
	if (a_real_32_count > 0) {
		l_once_mutexes->real_32_mutex = (EIF_POINTER*)GE_malloc_atomic_uncollectable(a_real_32_count * sizeof(EIF_POINTER));
		for (i = 0; i < a_real_32_count; i++) {
			l_once_mutexes->real_32_mutex[i] = GE_mutex_create();
		}
	}
	if (a_real_64_count > 0) {
		l_once_mutexes->real_64_mutex = (EIF_POINTER*)GE_malloc_atomic_uncollectable(a_real_64_count * sizeof(EIF_POINTER));
		for (i = 0; i < a_real_64_count; i++) {
			l_once_mutexes->real_64_mutex[i] = GE_mutex_create();
		}
	}
	if (a_reference_count > 0) {
		l_once_mutexes->reference_mutex = (EIF_POINTER*)GE_malloc_atomic_uncollectable(a_reference_count * sizeof(EIF_POINTER));
		for (i = 0; i < a_reference_count; i++) {
			l_once_mutexes->reference_mutex[i] = GE_mutex_create();
		}
	}
	if (a_procedure_count > 0) {
		l_once_mutexes->procedure_mutex = (EIF_POINTER*)GE_malloc_atomic_uncollectable(a_procedure_count * sizeof(EIF_POINTER));
		for (i = 0; i < a_procedure_count; i++) {
			l_once_mutexes->procedure_mutex[i] = GE_mutex_create();
		}
	}
	return l_once_mutexes;
}

/*
 * Keep track of the numbers of once-per-thread features.
 */
void GE_thread_onces_set_counts(
	uint32_t a_boolean_count,
	uint32_t a_character_8_count,
	uint32_t a_character_32_count,
	uint32_t a_integer_8_count,
	uint32_t a_integer_16_count,
	uint32_t a_integer_32_count,
	uint32_t a_integer_64_count,
	uint32_t a_natural_8_count,
	uint32_t a_natural_16_count,
	uint32_t a_natural_32_count,
	uint32_t a_natural_64_count,
	uint32_t a_pointer_count,
	uint32_t a_real_32_count,
	uint32_t a_real_64_count,
	uint32_t a_reference_count,
	uint32_t a_procedure_count)
{
	GE_thread_onces_boolean_count = a_boolean_count;
	GE_thread_onces_character_8_count = a_character_8_count;
	GE_thread_onces_character_32_count = a_character_32_count;
	GE_thread_onces_integer_8_count = a_integer_8_count;
	GE_thread_onces_integer_16_count = a_integer_16_count;
	GE_thread_onces_integer_32_count = a_integer_32_count;
	GE_thread_onces_integer_64_count = a_integer_64_count;
	GE_thread_onces_natural_8_count = a_natural_8_count;
	GE_thread_onces_natural_16_count = a_natural_16_count;
	GE_thread_onces_natural_32_count = a_natural_32_count;
	GE_thread_onces_natural_64_count = a_natural_64_count;
	GE_thread_onces_pointer_count = a_pointer_count;
	GE_thread_onces_real_32_count = a_real_32_count;
	GE_thread_onces_real_64_count = a_real_64_count;
	GE_thread_onces_reference_count = a_reference_count;
	GE_thread_onces_procedure_count = a_procedure_count;
}

/*
 * Initialize `process_onces' and `thread_onces' in `a_context'.
 */
void GE_thread_init_onces(GE_context* a_context)
{
	a_context->process_onces = GE_new_onces(
		GE_process_onces->boolean_count,
		GE_process_onces->character_8_count,
		GE_process_onces->character_32_count,
		GE_process_onces->integer_8_count,
		GE_process_onces->integer_16_count,
		GE_process_onces->integer_32_count,
		GE_process_onces->integer_64_count,
		GE_process_onces->natural_8_count,
		GE_process_onces->natural_16_count,
		GE_process_onces->natural_32_count,
		GE_process_onces->natural_64_count,
		GE_process_onces->pointer_count,
		GE_process_onces->real_32_count,
		GE_process_onces->real_64_count,
		GE_process_onces->reference_count,
		GE_process_onces->procedure_count);
	a_context->thread_onces = GE_new_onces(
		GE_thread_onces_boolean_count,
		GE_thread_onces_character_8_count,
		GE_thread_onces_character_32_count,
		GE_thread_onces_integer_8_count,
		GE_thread_onces_integer_16_count,
		GE_thread_onces_integer_32_count,
		GE_thread_onces_integer_64_count,
		GE_thread_onces_natural_8_count,
		GE_thread_onces_natural_16_count,
		GE_thread_onces_natural_32_count,
		GE_thread_onces_natural_64_count,
		GE_thread_onces_pointer_count,
		GE_thread_onces_real_32_count,
		GE_thread_onces_real_64_count,
		GE_thread_onces_reference_count,
		GE_thread_onces_procedure_count);
}

/* Global mutex to protect creation of once-per-object data. */
EIF_POINTER GE_once_per_object_data_mutex;

/* Key to access Thread Specific Data. */
static EIF_TSD_TYPE GE_thread_context_key;

#define GE_THREAD_OK 1
#define GE_THREAD_BUSY 2
#define GE_THREAD_TIMEDOUT 3
#define GE_THREAD_ERROR 4

/*
 * Create a new mutex.
 * Do not raise an exception in case of error (just return a null pointer).
 */
static EIF_POINTER GE_unprotected_mutex_create(uintptr_t a_spin_count)
{
#ifdef GE_USE_POSIX_THREADS
	EIF_MUTEX_TYPE* l_mutex;

	l_mutex = (EIF_MUTEX_TYPE*)GE_unprotected_malloc_atomic_uncollectable(sizeof(EIF_MUTEX_TYPE));
	if (l_mutex) {
			/* Make the mutex recursive by default. */
			/* This allows a thread to lock the mutex several times without blocking itself. */
		pthread_mutexattr_t l_attr;
		pthread_mutexattr_init(&l_attr);
		pthread_mutexattr_settype(&l_attr, PTHREAD_MUTEX_RECURSIVE);
		if (pthread_mutex_init(l_mutex, &l_attr)) {
			GE_free(l_mutex);
			l_mutex = NULL;
		}
		pthread_mutexattr_destroy(&l_attr);
	}
	return (EIF_POINTER)l_mutex;
#elif defined EIF_WINDOWS
	EIF_CS_TYPE* l_section;

	l_section = (EIF_CS_TYPE*)GE_unprotected_malloc_atomic_uncollectable(sizeof(EIF_CS_TYPE));
	if (l_section) {
		if (!InitializeCriticalSectionAndSpinCount(l_section, (DWORD)a_spin_count)) {
			GE_free(l_section);
			l_section = NULL;
		}
	}
	return (EIF_POINTER)l_section;
#else
	return (EIF_POINTER)0;
#endif
}

/*
 * Create a new mutex.
 */
EIF_POINTER GE_mutex_create(void)
{
	EIF_POINTER l_mutex;

	l_mutex = GE_unprotected_mutex_create(4000);
	if (!l_mutex) {
		GE_raise_with_message(GE_EX_EXT, "Cannot create mutex");
	}
	return l_mutex;
}

/*
 * Lock mutex.
 * Do not raise an exception in case of error (just return a status).
 */
static int GE_unprotected_mutex_lock(EIF_POINTER a_mutex)
{
#ifdef GE_USE_POSIX_THREADS
	if (pthread_mutex_lock((EIF_MUTEX_TYPE*)a_mutex)) {
		return GE_THREAD_ERROR;
	}
	return GE_THREAD_OK;
#elif defined EIF_WINDOWS
	EnterCriticalSection((EIF_CS_TYPE*)a_mutex);
	return GE_THREAD_OK;
#else
	return GE_THREAD_ERROR;
	GE_raise_with_message(GE_EX_EXT, "Cannot lock mutex");
#endif
}

/*
 * Lock mutex.
 */
void GE_mutex_lock(EIF_POINTER a_mutex)
{
	if (GE_unprotected_mutex_lock(a_mutex) != GE_THREAD_OK) {
		GE_raise_with_message(GE_EX_EXT, "Cannot lock mutex");
	}
}

/*
 * Try to lock mutex.
 * Do not raise an exception in case of error (just return a status).
 */
static int GE_unprotected_mutex_try_lock(EIF_POINTER a_mutex)
{
#ifdef GE_USE_POSIX_THREADS
	switch (pthread_mutex_trylock((EIF_MUTEX_TYPE*)a_mutex)) {
	case EBUSY:
		return GE_THREAD_BUSY;
	case 0:
		return GE_THREAD_OK;
	default:
		return GE_THREAD_ERROR;
	}
#elif defined EIF_WINDOWS
	if (TryEnterCriticalSection((EIF_CS_TYPE*)a_mutex)) {
		return GE_THREAD_OK;
	} else {
		return GE_THREAD_BUSY;
	}
#else
	return GE_THREAD_ERROR;
#endif
}

/*
 * Try to lock mutex. Return True on success.
 */
EIF_BOOLEAN GE_mutex_try_lock(EIF_POINTER a_mutex)
{
	switch (GE_unprotected_mutex_try_lock(a_mutex)) {
	case GE_THREAD_OK:
		return EIF_TRUE;
	case GE_THREAD_BUSY:
		return EIF_FALSE;
	default:
		GE_raise_with_message(GE_EX_EXT, "Cannot lock mutex");
		return EIF_FALSE;
	}
}

/*
 * Unlock mutex.
 * Do not raise an exception in case of error (just return a status).
 */
static int GE_unprotected_mutex_unlock(EIF_POINTER a_mutex)
{
#ifdef GE_USE_POSIX_THREADS
	if (pthread_mutex_unlock((EIF_MUTEX_TYPE*)a_mutex)) {
		return GE_THREAD_ERROR;
	}
	return GE_THREAD_OK;
#elif defined EIF_WINDOWS
	LeaveCriticalSection((EIF_CS_TYPE*)a_mutex);
	return GE_THREAD_OK;
#else
	return GE_THREAD_ERROR;
#endif
}

/*
 * Unlock mutex.
 */
void GE_mutex_unlock(EIF_POINTER a_mutex)
{
	if (GE_unprotected_mutex_unlock(a_mutex) != GE_THREAD_OK) {
		GE_raise_with_message(GE_EX_EXT, "Cannot unlock mutex");
	}
}

/*
 * Destroy and free all resources used by mutex.
 * Do not raise an exception in case of error (just return a status).
 */
static int GE_unprotected_mutex_destroy(EIF_POINTER a_mutex)
{
#ifdef GE_USE_POSIX_THREADS
	int l_result = GE_THREAD_OK;

	if (a_mutex) {
		if (pthread_mutex_destroy((EIF_MUTEX_TYPE*)a_mutex)) {
			l_result = GE_THREAD_ERROR;
		}
		GE_free(a_mutex);
	}
	return l_result;
#elif defined EIF_WINDOWS
	if (a_mutex) {
		DeleteCriticalSection((EIF_CS_TYPE*)a_mutex);
		GE_free(a_mutex);
	}
	return GE_THREAD_OK;
#else
	return GE_THREAD_ERROR;
#endif
}

/*
 * Destroy and free all resources used by mutex.
 */
void GE_mutex_destroy(EIF_POINTER a_mutex)
{
	GE_unprotected_mutex_destroy(a_mutex);
}

/*
 * Create a new semaphore allowing `a_count' threads
 * to go into a critical section.
 * Do not raise an exception in case of error (just return a null pointer).
 */
static EIF_POINTER GE_unprotected_semaphore_create(EIF_INTEGER a_count)
{
	EIF_SEM_TYPE* l_semaphore;

#ifdef GE_USE_POSIX_THREADS
	l_semaphore = (EIF_SEM_TYPE*)GE_unprotected_malloc_atomic_uncollectable(sizeof(EIF_SEM_TYPE));
	if (l_semaphore) {
		if (sem_init(l_semaphore, 0, a_count)) {
			GE_free(l_semaphore);
			l_semaphore = NULL;
		}
	}
	return (EIF_POINTER)l_semaphore;
#elif defined EIF_WINDOWS
	l_semaphore = CreateSemaphore(NULL, (LONG)a_count, (LONG)0x7fffffff, NULL);
	return (EIF_POINTER)l_semaphore;
#else
	return (EIF_POINTER)0;
#endif
}

/*
 * Create a new semaphore allowing `a_count' threads
 * to go into a critical section.
 */
EIF_POINTER GE_semaphore_create(EIF_INTEGER a_count)
{
	EIF_POINTER l_semaphore;

	l_semaphore = GE_unprotected_semaphore_create(a_count);
	if (!l_semaphore) {
		GE_raise_with_message(GE_EX_EXT, "Cannot create semaphore");
	}
	return l_semaphore;
}

/*
 * Decrement semaphore count, waiting if necessary
 * until that becomes possible.
 * Do not raise an exception in case of error (just return a status).
 */
static int GE_unprotected_semaphore_wait(EIF_POINTER a_semaphore)
{
#ifdef GE_USE_POSIX_THREADS
	if (sem_wait((EIF_SEM_TYPE*)a_semaphore)) {
		return GE_THREAD_ERROR;
	}
	return GE_THREAD_OK;
#elif defined EIF_WINDOWS
	switch (WaitForSingleObject((EIF_SEM_TYPE*)a_semaphore, INFINITE)) {
	case WAIT_FAILED:
	case WAIT_ABANDONED:
		return GE_THREAD_ERROR;
	}
	return GE_THREAD_OK;
#else
	return GE_THREAD_ERROR;
#endif
}

/*
 * Decrement semaphore count, waiting if necessary
 * until that becomes possible.
 */
void GE_semaphore_wait(EIF_POINTER a_semaphore)
{
	if (GE_unprotected_semaphore_wait(a_semaphore) != GE_THREAD_OK) {
		GE_raise_with_message(GE_EX_EXT, "Cannot wait on semaphore");
	}
}

/*
 * Has client been successful in decrementing semaphore
 * count without waiting?
 * Do not raise an exception in case of error (just return a status).
 */
static int GE_unprotected_semaphore_try_wait(EIF_POINTER a_semaphore)
{
#ifdef GE_USE_POSIX_THREADS
	if (sem_trywait((EIF_SEM_TYPE*)a_semaphore)) {
		switch (errno) {
		case EBUSY:
		case EAGAIN:
			return GE_THREAD_BUSY;
		case 0:
			return GE_THREAD_OK;
		default:
			return GE_THREAD_ERROR;
		}
	} else {
		return GE_THREAD_OK;
	}
#elif defined EIF_WINDOWS
	switch (WaitForSingleObject((EIF_SEM_TYPE*)a_semaphore, 0)) {
	case WAIT_FAILED:
	case WAIT_ABANDONED:
		return GE_THREAD_ERROR;
	case WAIT_TIMEOUT:
		return GE_THREAD_BUSY;
	default:
		return GE_THREAD_OK;
	}
#else
	return GE_THREAD_ERROR;
#endif
}

/*
 * Has client been successful in decrementing semaphore
 * count without waiting?
 */
EIF_BOOLEAN GE_semaphore_try_wait(EIF_POINTER a_semaphore)
{
	switch (GE_unprotected_semaphore_try_wait(a_semaphore)) {
	case GE_THREAD_OK:
		return EIF_TRUE;
	case GE_THREAD_BUSY:
		return EIF_FALSE;
	default:
		GE_raise_with_message(GE_EX_EXT, "Cannot try_wait on semaphore");
		return EIF_FALSE;
	}
}

/*
 * Increment semaphore count.
 * Do not raise an exception in case of error (just return a status).
 */
static int GE_unprotected_semaphore_post(EIF_POINTER a_semaphore)
{
#ifdef GE_USE_POSIX_THREADS
	if (sem_post((EIF_SEM_TYPE*)a_semaphore)) {
		return GE_THREAD_ERROR;
	}
	return GE_THREAD_OK;
#elif defined EIF_WINDOWS
	if (!ReleaseSemaphore((EIF_SEM_TYPE*)a_semaphore, 1, NULL)) {
		return GE_THREAD_ERROR;
	}
	return GE_THREAD_OK;
#else
	return GE_THREAD_ERROR;
#endif
}

/*
 * Increment semaphore count.
 */
void GE_semaphore_post(EIF_POINTER a_semaphore)
{
	if (GE_unprotected_semaphore_post(a_semaphore) != GE_THREAD_OK) {
		GE_raise_with_message(GE_EX_EXT, "Cannot post on semaphore");
	}
}

/*
 * Destroy and free all resources used by semaphore.
 * Do not raise an exception in case of error (just return a status).
 */
static int GE_unprotected_semaphore_destroy(EIF_POINTER a_semaphore)
{
#ifdef GE_USE_POSIX_THREADS
	int l_result = GE_THREAD_OK;

	if (a_semaphore) {
		if (sem_destroy((EIF_SEM_TYPE*)a_semaphore)) {
			l_result = GE_THREAD_ERROR;
		}
		GE_free(a_semaphore);
	}
	return l_result;
#elif defined EIF_WINDOWS
	int l_result = GE_THREAD_OK;

	if (a_semaphore) {
		if (!CloseHandle((EIF_SEM_TYPE*)a_semaphore)) {
			l_result = GE_THREAD_ERROR;
		}
	}
	return l_result;
#else
	return GE_THREAD_ERROR;
#endif
}

/*
 * Destroy and free all resources used by semaphore.
 */
void GE_semaphore_destroy(EIF_POINTER a_semaphore)
{
	GE_unprotected_semaphore_destroy(a_semaphore);
}

/*
 * Create a new condition variable.
 * Do not raise an exception in case of error (just return a null pointer).
 */
static EIF_POINTER GE_unprotected_condition_variable_create(void)
{
	EIF_COND_TYPE* l_condition_variable;

#ifdef GE_USE_POSIX_THREADS
	l_condition_variable = (EIF_COND_TYPE*)GE_unprotected_malloc_atomic_uncollectable(sizeof(EIF_COND_TYPE));
	if (l_condition_variable) {
		if (pthread_cond_init(l_condition_variable, NULL)) {
			GE_free(l_condition_variable);
			l_condition_variable = NULL;
		}
	}
	return (EIF_POINTER)l_condition_variable;
#elif defined EIF_WINDOWS
	EIF_SEM_TYPE* l_semaphore;
	EIF_CS_TYPE* l_section;

	l_condition_variable = (EIF_COND_TYPE*)GE_unprotected_calloc_atomic_uncollectable(1, sizeof(EIF_COND_TYPE));
	if (l_condition_variable) {
		l_semaphore = (EIF_SEM_TYPE*)GE_unprotected_semaphore_create(0);
		if (l_semaphore) {
			l_condition_variable->semaphore = l_semaphore;
			l_section = (EIF_CS_TYPE*)GE_unprotected_mutex_create(100);
			if (l_section) {
				l_condition_variable->csection = l_section;
			} else {
				GE_unprotected_semaphore_destroy((EIF_POINTER)l_semaphore);
				GE_free(l_condition_variable);
				l_condition_variable = NULL;
			}
		} else {
			GE_free(l_condition_variable);
			l_condition_variable = NULL;
		}
	}
	return (EIF_POINTER)l_condition_variable;
#else
	return (EIF_POINTER)0;
#endif
}

/*
 * Create a new condition variable.
 */
EIF_POINTER GE_condition_variable_create(void)
{
	EIF_POINTER l_condition_variable;

	l_condition_variable = GE_unprotected_condition_variable_create();
	if (!l_condition_variable) {
		GE_raise_with_message(GE_EX_EXT, "Cannot create condition variable");
	}
	return l_condition_variable;
}

/*
 * Unblock all threads blocked on condition variable.
 * Do not raise an exception in case of error (just return a status).
 */
static int GE_unprotected_condition_variable_broadcast(EIF_POINTER a_condition_variable)
{
#ifdef GE_USE_POSIX_THREADS
	if (pthread_cond_broadcast((EIF_COND_TYPE*)a_condition_variable)) {
		return GE_THREAD_ERROR;
	}
	return GE_THREAD_OK;
#elif defined EIF_WINDOWS
	EIF_COND_TYPE* l_condition_variable;
	unsigned long l_num_wake = 0;
	int l_result = GE_THREAD_OK;

	l_condition_variable = (EIF_COND_TYPE*)a_condition_variable;
	l_result = GE_unprotected_mutex_lock((EIF_POINTER)l_condition_variable->csection);
	if (l_result == GE_THREAD_OK) {
		if (l_condition_variable->num_waiting > l_condition_variable->num_wake) {
			l_num_wake = l_condition_variable->num_waiting - l_condition_variable->num_wake;
			l_condition_variable->num_wake = l_condition_variable->num_waiting;
			l_condition_variable->generation++;
		}
		l_result = GE_unprotected_mutex_unlock((EIF_POINTER)l_condition_variable->csection);
		while ((l_result == GE_THREAD_OK) && l_num_wake) {
			l_result = GE_unprotected_semaphore_post((EIF_POINTER)l_condition_variable->semaphore);
			l_num_wake--;
		}
	}
	return l_result;
#else
	return GE_THREAD_ERROR;
#endif
}

/*
 * Unblock all threads blocked on condition variable.
 */
void GE_condition_variable_broadcast(EIF_POINTER a_condition_variable)
{
	if (GE_unprotected_condition_variable_broadcast(a_condition_variable) != GE_THREAD_OK) {
		GE_raise_with_message(GE_EX_EXT, "Cannot broadcast on condition variable");
	}
}

/*
 * Unblock one thread blocked on condition variable.
 * Do not raise an exception in case of error (just return a status).
 */
static int GE_unprotected_condition_variable_signal(EIF_POINTER a_condition_variable)
{
#ifdef GE_USE_POSIX_THREADS
	if (pthread_cond_signal((EIF_COND_TYPE*)a_condition_variable)) {
		return GE_THREAD_ERROR;
	}
	return GE_THREAD_OK;
#elif defined EIF_WINDOWS
	EIF_COND_TYPE* l_condition_variable;
	unsigned int l_wake = 0;
	int l_result = GE_THREAD_OK;

	l_condition_variable = (EIF_COND_TYPE*)a_condition_variable;
	l_result = GE_unprotected_mutex_lock((EIF_POINTER)l_condition_variable->csection);
	if (l_result == GE_THREAD_OK) {
			/* Do nothing if they are more signaled ones than awaiting threads. */
		if (l_condition_variable->num_waiting > l_condition_variable->num_wake) {
			l_wake = 1;
			l_condition_variable->num_wake++;
			l_condition_variable->generation++;
		}
		l_result = GE_unprotected_mutex_unlock((EIF_POINTER)l_condition_variable->csection);
		if ((l_result == GE_THREAD_OK) && l_wake) {
			l_result = GE_unprotected_semaphore_post((EIF_POINTER)l_condition_variable->semaphore);
		}
	}
	return l_result;
#else
	return GE_THREAD_ERROR;
#endif
}

/*
 * Unblock one thread blocked on condition variable.
 */
void GE_condition_variable_signal(EIF_POINTER a_condition_variable)
{
	if (GE_unprotected_condition_variable_signal(a_condition_variable) != GE_THREAD_OK) {
		GE_raise_with_message(GE_EX_EXT, "Cannot signal on condition variable");
	}
}

#ifdef GE_USE_POSIX_THREADS
/*
 * Given a timeout in milliseconds, computes a timespec structure equivalent.
 * `a_timeout': Timeout to convert in milliseconds.
 *
 */
static struct timespec GE_timeout_to_timespec(uintptr_t a_timeout)
{
	time_t l_seconds = a_timeout / 1000;	/* `a_timeout' is in millisecond */
	long l_nano_seconds = (a_timeout % 1000) * 1000000;	/* Reminder in nanoseconds */
	struct timespec tspec;
	volatile struct timeval now;
	GE_ftime(&now);
	tspec.tv_sec = now.tv_sec + l_seconds;
	l_nano_seconds += (now.tv_usec * 1000);
	tspec.tv_nsec = l_nano_seconds;
		/* If `l_nano_seconds' is greater than 1 second, we need to update `tspec'
		 * accordingly otherwise we may get EINVAL on some platforms. */
	if (l_nano_seconds > 1000000000) {
		tspec.tv_sec++;
		tspec.tv_nsec -= 1000000000;
	}
	return tspec;
}
#endif

/*
 * Block calling thread on condition variable for at most `a_timeout' milliseconds.
 * Do not raise an exception in case of error (just return a status).
 */
static int GE_unprotected_condition_variable_wait_with_timeout(EIF_POINTER a_condition_variable, EIF_POINTER a_mutex, uintptr_t a_timeout)
{
#ifdef GE_USE_POSIX_THREADS
	struct timespec l_tspec = GE_timeout_to_timespec(a_timeout);
	switch (pthread_cond_timedwait((EIF_COND_TYPE*)a_condition_variable, (EIF_MUTEX_TYPE*)a_mutex, &l_tspec)) {
	case 0:
		return GE_THREAD_OK;
	case ETIMEDOUT:
		return GE_THREAD_TIMEDOUT;
	default:
		return GE_THREAD_ERROR;
	}
#elif defined EIF_WINDOWS
	EIF_COND_TYPE* l_condition_variable;
	unsigned int l_wake = 0;
	unsigned long l_generation;

	l_condition_variable = (EIF_COND_TYPE*)a_condition_variable;
	GE_unprotected_mutex_lock((EIF_POINTER)l_condition_variable->csection);
	l_condition_variable->num_waiting++;
	l_generation = l_condition_variable->generation;
	GE_unprotected_mutex_unlock((EIF_POINTER)l_condition_variable->csection);
	GE_unprotected_mutex_unlock(a_mutex);
	for (;;) {
		switch (WaitForSingleObject(l_condition_variable->semaphore, (DWORD)a_timeout)) {
		case WAIT_FAILED:
		case WAIT_ABANDONED:
			GE_unprotected_mutex_lock(a_mutex);
			return GE_THREAD_ERROR;
		case WAIT_TIMEOUT:
			GE_unprotected_mutex_lock((EIF_POINTER)l_condition_variable->csection);
			l_condition_variable->num_waiting--;
			GE_unprotected_mutex_unlock((EIF_POINTER)l_condition_variable->csection);
			GE_unprotected_mutex_lock(a_mutex);
			return GE_THREAD_TIMEDOUT;
		default:
			GE_unprotected_mutex_lock((EIF_POINTER)l_condition_variable->csection);
			if (l_condition_variable->num_wake) {
				if (l_condition_variable->generation != l_generation) {
					l_condition_variable->num_wake--;
					l_condition_variable->num_waiting--;
					GE_unprotected_mutex_unlock((EIF_POINTER)l_condition_variable->csection);
					GE_unprotected_mutex_lock(a_mutex);
					return GE_THREAD_OK;
				} else {
					l_wake = 1;
				}
			}
			GE_unprotected_mutex_unlock((EIF_POINTER)l_condition_variable->csection);
			if (l_wake) {
				l_wake = 0;
				GE_unprotected_semaphore_post((EIF_POINTER)l_condition_variable->semaphore);
			}
		}
	}
#else
	return GE_THREAD_ERROR;
#endif
}

/*
 * Block calling thread on condition variable for at most `a_timeout' milliseconds.
 * Return 1 is we got the condition variable on time, otherwise return 0.
 */
EIF_INTEGER GE_condition_variable_wait_with_timeout(EIF_POINTER a_condition_variable, EIF_POINTER a_mutex, EIF_INTEGER a_timeout)
{
	switch (GE_unprotected_condition_variable_wait_with_timeout(a_condition_variable, a_mutex, (uintptr_t)a_timeout)) {
	case GE_THREAD_OK:
		return 1;
	case GE_THREAD_TIMEDOUT:
		return 0;
	default:
		GE_raise_with_message(GE_EX_EXT, "Cannot wait with timeout on condition variable");
		return -1;
	}
}

/*
 * Block calling thread on condition variable.
 * Do not raise an exception in case of error (just return a status).
 */
static int GE_unprotected_condition_variable_wait(EIF_POINTER a_condition_variable, EIF_POINTER a_mutex)
{
#ifdef GE_USE_POSIX_THREADS
	if (pthread_cond_wait((EIF_COND_TYPE*)a_condition_variable, (EIF_MUTEX_TYPE*)a_mutex)) {
		return GE_THREAD_ERROR;
	}
	return GE_THREAD_OK;
#elif defined EIF_WINDOWS
	return GE_unprotected_condition_variable_wait_with_timeout(a_condition_variable, a_mutex, (uintptr_t)INFINITE);
#else
	return GE_THREAD_ERROR;
#endif
}

/*
 * Block calling thread on condition variable.
 */
void GE_condition_variable_wait(EIF_POINTER a_condition_variable, EIF_POINTER a_mutex)
{
	if (GE_unprotected_condition_variable_wait(a_condition_variable, a_mutex) != GE_THREAD_OK) {
		GE_raise_with_message(GE_EX_EXT, "Cannot wait on condition variable");
	}
}

/*
 * Destroy and free all resources used by condition variable.
 * Do not raise an exception in case of error (just return a status).
 */
static int GE_unprotected_condition_variable_destroy(EIF_POINTER a_condition_variable)
{
#ifdef GE_USE_POSIX_THREADS
	int l_result = GE_THREAD_OK;

	if (a_condition_variable) {
		if (pthread_cond_destroy((EIF_COND_TYPE*)a_condition_variable)) {
			l_result = GE_THREAD_ERROR;
		}
		GE_free(a_condition_variable);
	}
	return l_result;
#elif defined EIF_WINDOWS
	EIF_COND_TYPE* l_condition_variable;
	EIF_CS_TYPE* l_section;
	int l_result = GE_THREAD_OK;
	int l_other_result;

	if (a_condition_variable) {
		l_condition_variable = (EIF_COND_TYPE*)a_condition_variable;
		l_other_result = GE_unprotected_semaphore_destroy((EIF_POINTER)l_condition_variable->semaphore);
		if (l_other_result != GE_THREAD_OK) {
			l_result = l_other_result;
		}
		l_other_result = GE_unprotected_mutex_destroy((EIF_POINTER)l_condition_variable->csection);
		if (l_other_result != GE_THREAD_OK) {
			l_result = l_other_result;
		}
		GE_free(a_condition_variable);
	}
	return l_result;
#else
	return GE_THREAD_ERROR;
#endif
}

/*
 * Destroy and free all resources used by condition variable.
 */
void GE_condition_variable_destroy(EIF_POINTER a_condition_variable)
{
	GE_unprotected_condition_variable_destroy(a_condition_variable);
}

/*
 * Create a new read-write lock.
 * Do not raise an exception in case of error (just return a null pointer).
 */
static EIF_POINTER GE_unprotected_read_write_lock_create(void)
{
	EIF_RWL_TYPE* l_read_write_lock;

#ifdef GE_USE_POSIX_THREADS
	l_read_write_lock = (EIF_RWL_TYPE*)GE_unprotected_malloc_atomic_uncollectable(sizeof(EIF_RWL_TYPE));
	if (l_read_write_lock) {
		if (pthread_rwlock_init(l_read_write_lock, NULL)) {
			GE_free(l_read_write_lock);
			l_read_write_lock = NULL;
		}
	}
	return (EIF_POINTER)l_read_write_lock;
#elif defined EIF_WINDOWS
	EIF_MUTEX_TYPE* l_mutex;
	EIF_COND_TYPE* l_readers_ok;
	EIF_COND_TYPE* l_writers_ok;

	l_read_write_lock = (EIF_RWL_TYPE*)GE_unprotected_malloc_atomic_uncollectable(sizeof(EIF_RWL_TYPE));
	if (l_read_write_lock) {
		l_mutex = (EIF_MUTEX_TYPE*)GE_unprotected_mutex_create(4000);
		if (l_mutex) {
			l_readers_ok = (EIF_COND_TYPE*)GE_unprotected_condition_variable_create();
			if (l_readers_ok) {
				l_writers_ok = (EIF_COND_TYPE*)GE_unprotected_condition_variable_create();
				if (l_writers_ok) {
					l_read_write_lock->m = l_mutex;
					l_read_write_lock->readers_ok = l_readers_ok;
					l_read_write_lock->writers_ok = l_writers_ok;
					l_read_write_lock->rwlock = 0;
					l_read_write_lock->waiting_writers = 0;
				} else {
					GE_unprotected_condition_variable_destroy((EIF_POINTER)l_readers_ok);
					GE_unprotected_mutex_destroy((EIF_POINTER)l_mutex);
					GE_free(l_read_write_lock);
					l_read_write_lock = NULL;
				}
			} else {
				GE_unprotected_mutex_destroy((EIF_POINTER)l_mutex);
				GE_free(l_read_write_lock);
				l_read_write_lock = NULL;
			}
		} else {
			GE_free(l_read_write_lock);
			l_read_write_lock = NULL;
		}
	}
	return (EIF_POINTER)l_read_write_lock;
#else
	return (EIF_POINTER)0;
#endif
}

/*
 * Create a new read-write lock.
 */
EIF_POINTER GE_read_write_lock_create(void)
{
	EIF_POINTER l_read_write_lock;

	l_read_write_lock = GE_unprotected_read_write_lock_create();
	if (!l_read_write_lock) {
		GE_raise_with_message(GE_EX_EXT, "Cannot create read-write lock variable");
	}
	return l_read_write_lock;
}

/*
 * Acquire a read lock. Multiple readers can go if there are no writer.
 * Do not raise an exception in case of error (just return a status).
 */
static int GE_unprotected_read_write_lock_read_lock(EIF_POINTER a_read_write_lock)
{
#ifdef GE_USE_POSIX_THREADS
	if (pthread_rwlock_rdlock((EIF_RWL_TYPE*)a_read_write_lock)) {
		return GE_THREAD_ERROR;
	}
	return GE_THREAD_OK;
#elif defined EIF_WINDOWS
	EIF_RWL_TYPE* l_read_write_lock;
	int l_result;

	l_read_write_lock = (EIF_RWL_TYPE*)a_read_write_lock;
	l_result = GE_unprotected_mutex_lock((EIF_POINTER)l_read_write_lock->m);
	if (l_result == GE_THREAD_OK) {
		while ((l_read_write_lock->rwlock < 0 || l_read_write_lock->waiting_writers) && (l_result == GE_THREAD_OK)) {
			l_result = GE_unprotected_condition_variable_wait((EIF_POINTER)l_read_write_lock->readers_ok, (EIF_POINTER)l_read_write_lock->m);
		}
		if (l_result == GE_THREAD_OK) {
			l_read_write_lock->rwlock++;
		}
		l_result = GE_unprotected_mutex_unlock((EIF_POINTER)l_read_write_lock->m);
	}
	return l_result;
#else
	return GE_THREAD_ERROR;
#endif
}

/*
 * Acquire a read lock. Multiple readers can go if there are no writer.
 */
void GE_read_write_lock_read_lock(EIF_POINTER a_read_write_lock)
{
	if (GE_unprotected_read_write_lock_read_lock(a_read_write_lock) != GE_THREAD_OK) {
		GE_raise_with_message(GE_EX_EXT, "Cannot read lock");
	}
}

/*
 * Acquire a write lock. Only a single write can proceed.
 * Do not raise an exception in case of error (just return a status).
 */
static int GE_unprotected_read_write_lock_write_lock(EIF_POINTER a_read_write_lock)
{
#ifdef GE_USE_POSIX_THREADS
	if (pthread_rwlock_wrlock((EIF_RWL_TYPE*)a_read_write_lock)) {
		return GE_THREAD_ERROR;
	}
	return GE_THREAD_OK;
#elif defined EIF_WINDOWS
	EIF_RWL_TYPE* l_read_write_lock;
	int l_result;

	l_read_write_lock = (EIF_RWL_TYPE*)a_read_write_lock;
	l_result = GE_unprotected_mutex_lock((EIF_POINTER)l_read_write_lock->m);
	if (l_result == GE_THREAD_OK) {
		while ((l_read_write_lock->rwlock != 0) && (l_result == GE_THREAD_OK)) {
			l_read_write_lock->waiting_writers++;
			l_result = GE_unprotected_condition_variable_wait((EIF_POINTER)l_read_write_lock->writers_ok, (EIF_POINTER)l_read_write_lock->m);
			l_read_write_lock->waiting_writers--;
		}
		if (l_result == GE_THREAD_OK) {
			l_read_write_lock->rwlock = -1;
		}
		l_result = GE_unprotected_mutex_unlock((EIF_POINTER)l_read_write_lock->m);
	}
	return l_result;
#else
	return GE_THREAD_ERROR;
#endif
}

/*
 * Acquire a write lock. Only a single write can proceed.
 */
void GE_read_write_lock_write_lock(EIF_POINTER a_read_write_lock)
{
	if (GE_unprotected_read_write_lock_write_lock(a_read_write_lock) != GE_THREAD_OK) {
		GE_raise_with_message(GE_EX_EXT, "Cannot write lock");
	}
}

/*
 * Unlock a read or write lock.
 * Do not raise an exception in case of error (just return a status).
 */
static int GE_unprotected_read_write_lock_unlock(EIF_POINTER a_read_write_lock)
{
#ifdef GE_USE_POSIX_THREADS
	if (pthread_rwlock_unlock((EIF_RWL_TYPE*)a_read_write_lock)) {
		return GE_THREAD_ERROR;
	}
	return GE_THREAD_OK;
#elif defined EIF_WINDOWS
	EIF_RWL_TYPE* l_read_write_lock;
	int l_result;
	int ww, wr;

	l_read_write_lock = (EIF_RWL_TYPE*)a_read_write_lock;
	l_result = GE_unprotected_mutex_lock((EIF_POINTER)l_read_write_lock->m);
	if (l_result == GE_THREAD_OK) {
			/* rwlock < 0 iflocked for writing */
		if (l_read_write_lock->rwlock < 0) {
			l_read_write_lock->rwlock = 0;
		} else {
			l_read_write_lock->rwlock--;
		}

			/* Keep flags that show if there are waiting readers or writers
			 * so that we can wake them up outside the mocitor lock. */
		ww = (l_read_write_lock->waiting_writers && l_read_write_lock->rwlock == 0);
		wr = (l_read_write_lock->waiting_writers == 0);

		l_result = GE_unprotected_mutex_unlock((EIF_POINTER)l_read_write_lock->m);
		if (l_result == GE_THREAD_OK) {
				/* Wake up a waiting writer first. Otherwise wake up all readers. */
			if (ww) {
				l_result = GE_unprotected_condition_variable_signal((EIF_POINTER)l_read_write_lock->writers_ok);
			} else if (wr) {
				l_result = GE_unprotected_condition_variable_broadcast((EIF_POINTER)l_read_write_lock->readers_ok);
			}
		}
	}
	return l_result;
#else
	return GE_THREAD_ERROR;
#endif
}

/*
 * Unlock a read or write lock.
 */
void GE_read_write_lock_unlock(EIF_POINTER a_read_write_lock)
{
	if (GE_unprotected_read_write_lock_unlock(a_read_write_lock) != GE_THREAD_OK) {
		GE_raise_with_message(GE_EX_EXT, "Cannot unlock read-write lock");
	}
}

/*
 * Destroy and free all resources used by read-write lock.
 * Do not raise an exception in case of error (just return a status).
 */
static int GE_unprotected_read_write_lock_destroy(EIF_POINTER a_read_write_lock)
{
#ifdef GE_USE_POSIX_THREADS
	int l_result = GE_THREAD_OK;

	if (a_read_write_lock) {
		if (pthread_rwlock_destroy((EIF_RWL_TYPE*)a_read_write_lock)) {
			l_result = GE_THREAD_ERROR;
		}
		GE_free(a_read_write_lock);
	}
	return l_result;
#elif defined EIF_WINDOWS
	EIF_RWL_TYPE* l_read_write_lock;
	int l_result = GE_THREAD_OK;
	int l_other_result;

	if (a_read_write_lock) {
		l_read_write_lock = (EIF_RWL_TYPE*)a_read_write_lock;
		l_other_result = GE_unprotected_mutex_destroy((EIF_POINTER)l_read_write_lock->m);
		if (l_other_result != GE_THREAD_OK) {
			l_result = l_other_result;
		}
		l_other_result = GE_unprotected_condition_variable_destroy((EIF_POINTER)l_read_write_lock->readers_ok);
		if (l_other_result != GE_THREAD_OK) {
			l_result = l_other_result;
		}
		l_other_result = GE_unprotected_condition_variable_destroy((EIF_POINTER)l_read_write_lock->writers_ok);
		if (l_other_result != GE_THREAD_OK) {
			l_result = l_other_result;
		}
		GE_free(l_read_write_lock);
	}
	return l_result;
#else
	return GE_THREAD_ERROR;
#endif
}

/*
 * Destroy and free all resources used by read-write lock.
 */
void GE_read_write_lock_destroy(EIF_POINTER a_read_write_lock)
{
	GE_unprotected_read_write_lock_destroy(a_read_write_lock);
}

/*
 * Pointer to current thread.
 */
static EIF_THR_TYPE GE_current_thread(void)
{
#ifdef GE_USE_POSIX_THREADS
	return pthread_self();
#elif defined EIF_WINDOWS
		/* On Windows, `GetCurrentThread' returns a pseudo handle to the Current thread, */
		/* so we have to do something special on Windows. */
	return OpenThread(THREAD_ALL_ACCESS, FALSE, GetCurrentThreadId());
#endif
}

/*
 * Register context of current thread.
 */
static void GE_register_thread_context(GE_context* a_context)
{
	EIF_TSD_SET(GE_thread_context_key, a_context, "Cannot bind thread context to TSD.");
}

/*
 * Set priority level to thread.
 */
static void GE_thread_set_priority(EIF_THR_TYPE a_thread_id, unsigned int a_priority)
{
#ifdef GE_USE_POSIX_THREADS
	struct sched_param l_param;
	memset(&l_param, 0, sizeof(struct sched_param));
	l_param.sched_priority = a_priority;
	pthread_setschedparam(a_thread_id, SCHED_OTHER, &l_param);
#elif defined(EIF_WINDOWS)
	int l_win_priority;
	switch (a_priority) {
		case EIF_MIN_THR_PRIORITY:
			l_win_priority = THREAD_PRIORITY_LOWEST;
			break;
		case EIF_MAX_THR_PRIORITY:
			l_win_priority = THREAD_PRIORITY_HIGHEST;
			break;
		default:
			if (a_priority <= EIF_BELOW_NORMAL_THR_PRIORITY) {
				l_win_priority = THREAD_PRIORITY_BELOW_NORMAL;
			} else if (a_priority < EIF_ABOVE_NORMAL_THR_PRIORITY) {
				l_win_priority = THREAD_PRIORITY_NORMAL;
			} else {
				l_win_priority = THREAD_PRIORITY_ABOVE_NORMAL;
			}
	}
	SetThreadPriority(a_thread_id, l_win_priority);
#endif
}

/*
 * Routine to be called from the new thread when created.
 */
#ifdef EIF_WINDOWS
static unsigned __stdcall GE_thread_routine(void* arg)
#else
static void* GE_thread_routine(void* arg)
#endif
{
	GE_context* l_context = (GE_context*)arg; /* Keep alive while the thread is running. */
	GE_thread_context* l_thread_context = l_context->thread;
	GE_thread_context* l_parent_thread_context = l_thread_context->parent_context;
#ifdef GE_USE_CURRENT_IN_EXCEPTION_TRACE
	GE_call tc = {l_thread_context->current,"","thread's creation",0};
#else
	GE_call tc = {"","thread's creation",0};
#endif

	l_context->call = &tc;
	GE_unprotected_mutex_lock((EIF_POINTER)l_parent_thread_context->children_mutex);
	/* Wait for the parent thread to set the thread id. */
#ifdef GE_USE_SCOOP
	if (l_thread_context->is_scoop_processor) {
		l_thread_context->parent_context = NULL;
	}
#endif
	GE_unprotected_mutex_unlock((EIF_POINTER)l_parent_thread_context->children_mutex);
	l_parent_thread_context = NULL;
	GE_register_thread_context(l_context);
	GE_thread_set_priority(l_thread_context->thread_id, l_thread_context->initial_priority);
	SIGRESUME;
#ifdef GE_USE_SCOOP
	if (l_thread_context->is_scoop_processor) {
			tc.feature_name = "separate call";
			GE_scoop_processor_run(l_context);
	} else
#endif
	if (l_thread_context->current && l_thread_context->routine) {
		l_thread_context->routine(l_thread_context->current, 0);
	}
	GE_thread_exit();
#ifdef EIF_WINDOWS
	return 0;
#else
	return NULL;
#endif
}

/*
 * Initialize data to handle threads.
 * To be called at the beginning of the main function
 * on the main thread.
 */
void GE_init_thread(GE_context* a_context)
{
	GE_thread_context* l_thread_context;

	EIF_TSD_CREATE(GE_thread_context_key, "Cannot create GE_thread_context_key");
	GE_register_thread_context(a_context);
	l_thread_context = (GE_thread_context*)GE_unprotected_calloc_uncollectable(1, sizeof(GE_thread_context));
	if (l_thread_context) {
		a_context->thread = l_thread_context;
		l_thread_context->thread_id = GE_current_thread();
		l_thread_context->is_alive = 1;
#ifdef GE_USE_SCOOP
		l_thread_context->is_scoop_processor = 1;
#else
		GE_thread_init_onces(a_context);
#endif
	} else {
		GE_raise_with_message(GE_EX_EXT, "Cannot create thread context");
	}
}

/*
 * Create a new thread with attributes `attr' and execute
 * Eiffel routine `routine' on object `current'.
 */
void GE_thread_create_with_attr(EIF_REFERENCE current, void (*routine)(EIF_REFERENCE, EIF_INTEGER), void (*set_terminated)(EIF_REFERENCE,EIF_BOOLEAN), EIF_THR_ATTR_TYPE* attr, int is_scoop_processor)
{
	GE_context* l_context;
	EIF_THR_TYPE l_thread_id;
	GE_thread_context* l_thread_context;
	GE_thread_context* l_current_thread_context;
	EIF_MUTEX_TYPE* l_mutex;
	EIF_COND_TYPE* l_condition_variable;
	unsigned int l_attr_stack_size = 0;
	unsigned int l_attr_priority = GE_thread_default_priority();
	int l_raise_error = 0;

	/* We need to allocate with `_uncollectable' because there might be a lapse of
	 * time between the end of the current function and when `l_thread_context'
	 * is assigned in `GE_thread_routine'. During that time it will be only 
	 * referenced by `l_context' which is allocted with `_atomic' in SCOOP mode. */
	l_thread_context = (GE_thread_context*)GE_unprotected_calloc_uncollectable(1, sizeof(GE_thread_context));
	if (!l_thread_context) {
		GE_raise_with_message(GE_EX_EXT, "Cannot create thread");
	} else {
		if (attr) {
			l_attr_stack_size = attr->stack_size;
			l_attr_priority = attr->priority;
		}
		l_thread_context->initial_priority = l_attr_priority;
		l_thread_context->is_alive = 1;
		l_current_thread_context = GE_thread_current_context()->thread;
		l_thread_context->parent_context = l_current_thread_context;
		if (!l_current_thread_context->children_mutex) {
				/* This is the first thread that we create from this thread. */
			l_mutex = (EIF_MUTEX_TYPE*)GE_unprotected_mutex_create(4000);
			if (l_mutex) {
				l_condition_variable = (EIF_COND_TYPE*)GE_unprotected_condition_variable_create();
				if (l_condition_variable) {
					l_current_thread_context->children_mutex = l_mutex;
					l_current_thread_context->children_cond = l_condition_variable;
				} else {
					GE_unprotected_mutex_destroy((EIF_POINTER)l_mutex);
					GE_free(l_thread_context);
					GE_raise_with_message(GE_EX_EXT, "Cannot create thread children condition variable");
				}
			} else {
				GE_free(l_thread_context);
				GE_raise_with_message(GE_EX_EXT, "Cannot create thread children mutex");
			}
		}
		l_context = GE_new_context(is_scoop_processor);
		l_context->thread = l_thread_context;
#ifdef GE_USE_SCOOP
		l_thread_context->is_scoop_processor = is_scoop_processor;
		if (is_scoop_processor) {
			GE_init_exception(l_context);
			GE_scoop_region_set_context(current->region, l_context);
			/* Do not keep track of the current object so that it can be
			   reclaimed by the GC if it is not referenced anywhere else. */
		} else {
			l_context->region = current->region;
			l_context->is_region_alive = '\1';
#endif
			l_thread_context->current = current;
			l_thread_context->routine = routine;
			l_thread_context->set_terminated = set_terminated;
			GE_thread_init_onces(l_context);
			GE_init_exception(l_context);
#ifdef GE_USE_SCOOP
		}
#endif	
#ifdef GE_USE_POSIX_THREADS
		{
			pthread_attr_t l_attr;
			int res;

			if (pthread_attr_init(&l_attr) == 0) {
					/* Initialize the stack size if more than the minimum. */
				if (l_attr_stack_size >= PTHREAD_STACK_MIN) {
					pthread_attr_setstacksize(&l_attr, l_attr_stack_size);
				}
				if (l_attr_priority != EIF_DEFAULT_THR_PRIORITY) {
					struct sched_param l_param;
					memset(&l_param, 0, sizeof(struct sched_param));
					l_param.sched_priority = l_attr_priority;
					pthread_attr_setschedpolicy(&l_attr, SCHED_OTHER);
					pthread_attr_setschedparam(&l_attr, &l_param);
				}
					/* We always create threads detached. */
				pthread_attr_setdetachstate(&l_attr, PTHREAD_CREATE_DETACHED);
				SIGBLOCK;
				GE_unprotected_mutex_lock((EIF_POINTER)l_current_thread_context->children_mutex);
					/* Use the mutex even it case of success to force the thread being created to wait for its thread id to be set. */
				if (pthread_create(&l_thread_id, &l_attr, GE_thread_routine, (void*)l_context) == 0) {
					l_thread_context->thread_id = l_thread_id;
#ifdef GE_USE_SCOOP
					if (!is_scoop_processor) {
#endif
						l_current_thread_context->last_thread_id = l_thread_id;
						l_current_thread_context->n_children++;
#ifdef GE_USE_SCOOP
					}
#endif
				} else {
					l_raise_error = 1;
				}
				GE_unprotected_mutex_unlock((EIF_POINTER)l_current_thread_context->children_mutex);
				SIGRESUME;
				pthread_attr_destroy(&l_attr);
			} else {
				l_raise_error = 1;
			}
		}
#elif defined EIF_WINDOWS
		SIGBLOCK;
		GE_unprotected_mutex_lock((EIF_POINTER)l_current_thread_context->children_mutex);
			/* Use the mutex even it case of success to force the thread being created to wait for its thread id to be set. */
		l_thread_id = (EIF_THR_TYPE)_beginthreadex(NULL, (unsigned int)l_attr_stack_size, GE_thread_routine, (void*)l_context, 0, NULL);
		if (l_thread_id == 0) {
			l_raise_error = 1;
		} else {
			l_thread_context->thread_id = l_thread_id;
#ifdef GE_USE_SCOOP
			if (!is_scoop_processor) {
#endif
				l_current_thread_context->last_thread_id = l_thread_id;
				l_current_thread_context->n_children++;
#ifdef GE_USE_SCOOP
			}
#endif
		}
		GE_unprotected_mutex_unlock((EIF_POINTER)l_current_thread_context->children_mutex);
		SIGRESUME;
#endif
#if defined GE_USE_POSIX_THREADS || defined EIF_WINDOWS
		if (l_raise_error) {
#endif
#ifdef GE_USE_SCOOP
			if (is_scoop_processor) {
				l_context->region->context = 0;
			} else {
#endif
				if (l_context->process_onces) {
					GE_free_onces(l_context->process_onces);
				}
				if (l_context->thread_onces) {
					GE_free_onces(l_context->thread_onces);
				}
#ifdef GE_USE_SCOOP
			}
#endif
			GE_free_exception(l_context);
			GE_free(l_thread_context);
			GE_free(l_context);
			GE_raise_with_message(GE_EX_EXT, "Cannot create thread");
#if defined GE_USE_POSIX_THREADS || defined EIF_WINDOWS
		}
#endif
	}
}

/*
 * Execution context of current thread.
 */
GE_context* GE_thread_current_context(void)
{
	GE_context* volatile l_context;

	EIF_TSD_GET(GE_context*, GE_thread_context_key, l_context, "Cannot get execution context for current thread");
	return l_context;
}

/*
 * Execution context of current thread.
 * Return Null in case of non-Eiffel threads.
 */
GE_context* GE_unprotected_thread_current_context(void)
{
	GE_context* volatile l_context;

	EIF_TSD_GET0(GE_context*, GE_thread_context_key, l_context);
	return l_context;
}

/*
 * Thread ID of current thread.
 */
EIF_POINTER GE_thread_id(void)
{
	GE_context* volatile l_context;

	EIF_TSD_GET(GE_context*, GE_thread_context_key, l_context, "Cannot get execution context for current thread");
	return (EIF_POINTER)(l_context->thread->thread_id);
}

/*
 * Thread ID of last thread created from current thread.
 */
EIF_POINTER GE_last_thread_created(void)
{
	GE_context* volatile l_context;

	EIF_TSD_GET(GE_context*, GE_thread_context_key, l_context, "Cannot get execution context for current thread");
	return (EIF_POINTER)(l_context->thread->last_thread_id);
}

#ifdef EIF_WINDOWS
/*
 * Support for Windows GUI that requires that all GUI operations are performed in the same thread.
 * Allocate new structure of the given size `a_size', assign it to `wel_per_thread_data'.
 * Return newly allocated memory block. It will be freed automatically on thread termination.
 */
void* GE_thread_create_wel_per_thread_data(size_t a_size)
{
	void* l_result;
	GE_context* volatile l_context;

	EIF_TSD_GET(GE_context*, GE_thread_context_key, l_context, "Cannot get execution context for current thread");
	l_result = (void*)GE_calloc(1, a_size);
	l_context->thread->wel_per_thread_data = l_result;
	return l_result;
}
#endif

/*
 * Waits until a thread sets `terminated' from `obj' to True,
 * which means it is terminated. The calling thread must be the
 * direct parent of the thread, or the function might loop indefinitely.
 */
void GE_thread_wait(EIF_REFERENCE obj, EIF_BOOLEAN (*get_terminated)(EIF_REFERENCE))
{
	GE_context* volatile l_context;
	GE_thread_context* l_thread_context;

	EIF_TSD_GET(GE_context*, GE_thread_context_key, l_context, "Cannot get execution context for current thread");
	l_thread_context = l_context->thread;
		/* If no thread has been launched, the mutex isn't initialized. */
	if (l_thread_context->children_mutex) {
		SIGBLOCK;
		GE_unprotected_mutex_lock((EIF_POINTER)l_thread_context->children_mutex);
		while (get_terminated(obj) == EIF_FALSE) {
			GE_unprotected_condition_variable_wait((EIF_POINTER)l_thread_context->children_cond, (EIF_POINTER)l_thread_context->children_mutex);
		}
		GE_unprotected_mutex_unlock((EIF_POINTER)l_thread_context->children_mutex);
		SIGRESUME;
	}
}

/*
 * Waits until a thread sets `terminated' from `obj' to True,
 * which means it is terminated, or reaching `a_timeout_ms'.
 * The calling thread must be the direct parent of the thread,
 * or the function might loop indefinitely.
 */
EIF_BOOLEAN GE_thread_wait_with_timeout(EIF_REFERENCE obj, EIF_BOOLEAN (*get_terminated)(EIF_REFERENCE), EIF_NATURAL_64 a_timeout_ms)
{
	GE_context* volatile l_context;
	GE_thread_context* l_thread_context;
	int l_result = GE_THREAD_OK;

	EIF_TSD_GET(GE_context*, GE_thread_context_key, l_context, "Cannot get execution context for current thread");
	l_thread_context = l_context->thread;
		/* If no thread has been launched, the mutex isn't initialized. */
	if (l_thread_context->children_mutex) {
		SIGBLOCK;
		GE_unprotected_mutex_lock((EIF_POINTER)l_thread_context->children_mutex);
		while ((get_terminated(obj) == EIF_FALSE) && (l_result == GE_THREAD_OK)) {
			l_result = GE_unprotected_condition_variable_wait_with_timeout((EIF_POINTER)l_thread_context->children_cond, (EIF_POINTER)l_thread_context->children_mutex, a_timeout_ms);
		}
		GE_unprotected_mutex_unlock((EIF_POINTER)l_thread_context->children_mutex);
		SIGRESUME;
	}
	return (l_result == GE_THREAD_TIMEDOUT ? EIF_FALSE : EIF_TRUE);
}

/*
 * Yields execution to other threads.
 */
void GE_thread_yield(void)
{
#ifdef GE_USE_POSIX_THREADS
#ifdef _POSIX_PRIORITY_SCHEDULING
	sched_yield();
#else
	usleep(1);
#endif
#elif defined EIF_WINDOWS
	if (SwitchToThread()) {
			/* We are able to give our timeslice to another thread of equal priority running on the same processor. */
	} else {
			/* There are no waiting threads on the current processor with the same thread priority so Sleep(0) yields to any available threads on any processor.
			 * However the current thread is still marked as runnable so if there are no threads of the same thread priority in a waiting state then it will return
			 * immediately and not relinquish our timeslice, which Sleep(1) will do but unfortunately the timer resolution may be up to 15ms on multicore systems before returning. */
		Sleep(0);
	}
#endif
}

/*
 * The calling thread waits for all other children threads to terminate.
 */
void GE_thread_join_all(void)
{
	GE_context* volatile l_context;
	GE_thread_context* l_thread_context;

	EIF_TSD_GET(GE_context*, GE_thread_context_key, l_context, "Cannot get execution context for current thread");
	l_thread_context = l_context->thread;
		/* If no thread has been launched, the mutex isn't initialized. */
	if (l_thread_context->children_mutex) {
		SIGBLOCK;
		GE_unprotected_mutex_lock((EIF_POINTER)l_thread_context->children_mutex);
		while (l_thread_context->n_children > 0) {
			GE_unprotected_condition_variable_wait((EIF_POINTER)l_thread_context->children_cond, (EIF_POINTER)l_thread_context->children_mutex);
		}
		GE_unprotected_mutex_unlock((EIF_POINTER)l_thread_context->children_mutex);
		SIGRESUME;
	}
}

/*
 * Function called to terminate a thread launched by Eiffel with `GE_thread_create_with_attr'.
 * This function must be called from the thread itself (not the parent).
 */
void GE_thread_exit(void)
{
	GE_context* volatile l_context;
	GE_thread_context* l_thread_context;
	GE_thread_context* l_parent_thread_context;
	EIF_THR_TYPE l_thread_id;
	int l_free_thread_context;

	EIF_TSD_GET(GE_context*, GE_thread_context_key, l_context, "Cannot get execution context for current thread");
	l_thread_context = l_context->thread;
	if (!l_thread_context->thread_exiting) {
		l_thread_context->thread_exiting = 1;
		if (l_thread_context->current) {
			if (l_thread_context->set_terminated) {
				l_thread_context->set_terminated(l_thread_context->current, EIF_TRUE);
			}
			l_thread_context->current = EIF_VOID;
		}
		l_parent_thread_context = l_thread_context->parent_context;
		if (l_parent_thread_context) {
			SIGBLOCK;
			GE_unprotected_mutex_lock((EIF_POINTER)l_parent_thread_context->children_mutex);
			l_parent_thread_context->n_children--;
			l_free_thread_context = (!l_parent_thread_context->is_alive) && (l_parent_thread_context->n_children <= 0);
			GE_unprotected_condition_variable_broadcast((EIF_POINTER)l_parent_thread_context->children_cond);
			GE_unprotected_mutex_unlock((EIF_POINTER)l_parent_thread_context->children_mutex);
			SIGRESUME;
			if (l_free_thread_context) {
				GE_unprotected_mutex_destroy((EIF_POINTER)l_parent_thread_context->children_mutex);
				GE_unprotected_condition_variable_destroy((EIF_POINTER)l_parent_thread_context->children_cond);
				GE_free(l_parent_thread_context);
			}
			l_thread_context->parent_context = NULL;
		}
		l_thread_id = l_thread_context->thread_id;
		if (l_thread_context->children_mutex) {
			SIGBLOCK;
			GE_unprotected_mutex_lock((EIF_POINTER)l_thread_context->children_mutex);
			l_free_thread_context = (l_thread_context->n_children <= 0);
			if (!l_free_thread_context) {
					/* We cannot destroy ourself because we still have some running children
					 * threads, we therefore need to mark ourself dead. */
				l_thread_context->is_alive = 0;
			}
			GE_unprotected_mutex_unlock((EIF_POINTER)l_thread_context->children_mutex);
			SIGRESUME;
		} else {
			l_free_thread_context = 1;
		}
		if (l_free_thread_context) {
			if (l_thread_context->children_mutex) {
				GE_unprotected_mutex_destroy((EIF_POINTER)l_thread_context->children_mutex);
				GE_unprotected_condition_variable_destroy((EIF_POINTER)l_thread_context->children_cond);
			}
			l_thread_context->children_mutex = NULL;
			l_thread_context->children_cond = NULL;
		}
#ifdef EIF_WINDOWS
		if (!CloseHandle(l_thread_id)) {
			GE_raise_with_message(GE_EX_EXT, "Cannot close thread");
		}
#endif
		EIF_TSD_SET(GE_thread_context_key, 0, "Cannot remove thread context to TSD.");
		if (l_context->process_onces) {
			GE_free_onces(l_context->process_onces);
		}
		if (l_context->thread_onces) {
			GE_free_onces(l_context->thread_onces);
		}
		GE_free_exception(l_context);
		if (l_thread_context->wel_per_thread_data) {
			GE_free(l_thread_context->wel_per_thread_data);
			l_thread_context->wel_per_thread_data = 0;
		}
#ifdef GE_USE_SCOOP
		if (l_thread_context->is_scoop_processor && l_context->region) {
			l_context->region->context = 0;
		}
#endif
		if (l_free_thread_context) {
			GE_free(l_thread_context);
		}
		GE_free(l_context);
#ifdef GE_USE_POSIX_THREADS
		pthread_exit(NULL);
#elif defined EIF_WINDOWS
		_endthreadex(0);
#endif
	}
}

/*
 * Default thread priority level.
 */
EIF_INTEGER GE_thread_default_priority(void)
{
	return EIF_DEFAULT_THR_PRIORITY;
}

/*
 * Minimum thread priority level.
 */
EIF_INTEGER GE_thread_min_priority(void)
{
	return EIF_MIN_THR_PRIORITY;
}

/*
 * Maximum thread priority level.
 */
EIF_INTEGER GE_thread_max_priority(void)
{
	return EIF_MAX_THR_PRIORITY;
}

#ifdef __cplusplus
}
#endif

#endif
#endif
#ifdef __cplusplus
extern "C" {
#endif


#ifdef __cplusplus
}
#endif
/*
	description:

		"C functions used to implement class CONSOLE"

	system: "Gobo Eiffel Compiler"
	copyright: "Copyright (c) 2007-2024, Eric Bezault and others"
	license: "MIT License"
*/

#ifndef GE_CONSOLE_C
#define GE_CONSOLE_C
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#ifndef GE_EIFFEL_H
#include "ge_eiffel.h"
#endif
#ifndef GE_CONSOLE_H
#include "ge_console.h"
#endif
#ifndef GE_EXCEPTION_H
#include "ge_exception.h"
#endif
#ifdef GE_USE_THREADS
#ifndef GE_THREAD_H
#include "ge_thread.h"
#endif
#endif

#ifdef EIF_WINDOWS
#include <stdio.h>
#include <windows.h>
#include <io.h>
#include <fcntl.h>
#endif

#ifdef __cplusplus
extern "C" {
#endif

#ifdef EIF_WINDOWS

static EIF_BOOLEAN GE_console_allocated = EIF_FALSE;
#ifdef GE_USE_THREADS
static EIF_POINTER GE_console_mutex = 0;
#endif

/*
 * Initialize mutex to determine whether a new
 * console needs to be created.
 */
void GE_init_console()
{
#ifdef GE_USE_THREADS
	GE_console_mutex = GE_mutex_create();
#endif
}

/*
 * Create a new DOS console if needed (i.e. in case of a Windows application).
 */
void GE_show_console()
{
#ifdef GE_USE_THREADS
	if (GE_console_mutex) {
		GE_mutex_lock(GE_console_mutex);
#endif
	if (!GE_console_allocated) {
		HANDLE hconin, hconout, hconerr;
		CONSOLE_SCREEN_BUFFER_INFO csbi;
		BOOL bLaunched;
		BOOL bSuccess;
		int hCrt;
#ifdef __LCC__
extern FILE * __cdecl _fdopen(int, const char *);
extern int _open_osfhandle(long, int);
#elif !defined EIF_BORLAND
		FILE *hf;
#endif

		bSuccess = AllocConsole();
			/* Get all Std handles and raise an IO exception if we fail getting one. */
		hconout = GetStdHandle(STD_OUTPUT_HANDLE);
		if (hconout == INVALID_HANDLE_VALUE) {
#ifdef GE_USE_THREADS
			GE_mutex_unlock(GE_console_mutex);
#endif
			GE_raise(GE_EX_PROG);
		}
		hconerr = GetStdHandle(STD_ERROR_HANDLE);
		if (hconerr == INVALID_HANDLE_VALUE) {
#ifdef GE_USE_THREADS
			GE_mutex_unlock(GE_console_mutex);
#endif
			GE_raise(GE_EX_PROG);
		}
		hconin = GetStdHandle(STD_INPUT_HANDLE);
		if (hconin == INVALID_HANDLE_VALUE) {
#ifdef GE_USE_THREADS
			GE_mutex_unlock(GE_console_mutex);
#endif
			GE_raise(GE_EX_PROG);
		}
		if (bSuccess) {
				/*
					Console was manually created, we are most likely in
					a Windows application that tries to output something.
					Therefore we need to correctly associated all standard
					handles `stdin', `stdout' and `stderr' to the new created console.
					Note: For Borland, the above trick does not work, one has to
					duplicate the handle, unfortunately the solution does not work
					with Microsoft which explains the ifdef statement.
				*/
#if defined(__LCC__) || defined(EIF_BORLAND)
			hCrt = _open_osfhandle((uintptr_t)hconout, _O_TEXT);
			dup2(hCrt, _fileno(stdout));
			hf = _fdopen (hCrt, "w");
			*stdout = *hf;
			setvbuf(stdout, NULL, _IONBF, 0);
#else
			if (!freopen("CONOUT$", "w", stdout)) {
#ifdef GE_USE_THREADS
				GE_mutex_unlock(GE_console_mutex);
#endif
				GE_raise(GE_EX_PROG);
			}
#endif
#if defined(__LCC__) || defined(EIF_BORLAND)
			hCrt = _open_osfhandle((uintptr_t)hconerr, _O_TEXT);
			dup2(hCrt, _fileno(stderr));
			hf = _fdopen(hCrt, "w");
			*stderr = *hf;
			setvbuf(stderr, NULL, _IONBF, 0);
#else
			/* There is no "CONERR$". Use "CONOUT$ instead. "*/
			if (!freopen("CONOUT$", "w", stderr)) {
#ifdef GE_USE_THREADS
				GE_mutex_unlock(GE_console_mutex);
#endif
				GE_raise(GE_EX_PROG);
			}
#endif
#if defined(__LCC__) || defined(EIF_BORLAND)
			hCrt = _open_osfhandle((uintptr_t)hconin, _O_TEXT | _O_RDONLY);
			dup2(hCrt, _fileno(stdin));
			hf = _fdopen(hCrt, "r");
			*stdin = *hf;
#else
			if (!freopen("CONIN$", "r", stdin)) {
#ifdef GE_USE_THREADS
				GE_mutex_unlock(GE_console_mutex);
#endif
				GE_raise(GE_EX_PROG);
			}
#endif
		}
			/*
				We are computing the cursor position to figure out, if the application
				has been launched from a DOS console or from the Windows Shell.
			*/
/*
		GetConsoleScreenBufferInfo(hconout, &csbi);
		bLaunched = ((csbi.dwCursorPosition.X == 0) && (csbi.dwCursorPosition.Y == 0));
		if ((csbi.dwSize.X <= 0) || (csbi.dwSize.Y <= 0))
			bLaunched = FALSE;

		if (bLaunched == TRUE)
			eif_register_cleanup (eif_console_cleanup);
*/

		GE_console_allocated = EIF_TRUE;
	}
#ifdef GE_USE_THREADS
		GE_mutex_unlock(GE_console_mutex);
	}
#endif
}

#endif

#ifdef __cplusplus
}
#endif

#endif
#ifdef __cplusplus
extern "C" {
#endif


#ifdef __cplusplus
}
#endif
/*
	description:

		"C functions used to implement class ARGUMENTS"

	system: "Gobo Eiffel Compiler"
	copyright: "Copyright (c) 2007-2024, Eric Bezault and others"
	license: "MIT License"
*/

#ifndef GE_ARGUMENTS_C
#define GE_ARGUMENTS_C
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#ifndef GE_ARGUMENTS_H
#include "ge_arguments.h"
#endif
#ifndef GE_CONSOLE_H
#include "ge_console.h"
#endif

#ifdef __cplusplus
extern "C" {
#endif

int GE_argc;
EIF_NATIVE_CHAR** GE_argv;

	/* Clean up function */
typedef void (* EIF_CLEANUP)(EIF_BOOLEAN);
void eif_register_cleanup(EIF_CLEANUP f)
{
	/* TODO: Needed to compile EiffelNet */
}

#ifdef __cplusplus
}
#endif

#endif
#ifdef __cplusplus
extern "C" {
#endif


#ifdef __cplusplus
}
#endif
/*
	description:

		"C functions used to handle signals"

	system: "Gobo Eiffel Compiler"
	copyright: "Copyright (c) 2024, Eric Bezault and others"
	license: "MIT License"
*/

#ifndef GE_SIGNAL_C
#define GE_SIGNAL_C
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#ifndef GE_SIGNAL_H
#include "ge_signal.h"
#endif
#ifndef GE_EXCEPTION_H
#include "ge_exception.h"
#endif
#ifndef GE_CONSOLE_H
#include "ge_console.h"
#endif

#include <signal.h>

#ifdef GE_USE_THREADS
#ifndef GE_THREAD_H
#include "ge_thread.h"
#endif
#elif !defined(GE_WINDOWS) && defined(GE_USE_BOEHM_GC)
#include <pthread.h>
#endif

#ifndef NSIG
#ifdef GE_WINDOWS
#define GE_NSIG 23
#else
#define GE_NSIG 32
#endif
#else
#ifdef GE_USE_THREADS
#define GE_NSIG	32 /* In MT-mode, it is better not to deal with signals above 32. */
#else
#define	GE_NSIG	NSIG /* GE_NSIG is NSIG in a single threaded runtime. */
#endif
#endif

#ifdef __cplusplus
extern "C" {
#endif

#ifdef GE_USE_THREADS

static EIF_MUTEX_TYPE* GE_ignored_signals_mutex = 0; /* Mutex to access `GE_ignored_signals'. */

/* Initialize `GE_ignored_signals_mutex'. */
void GE_init_ignored_signals_mutex()
{
	GE_ignored_signals_mutex = (EIF_MUTEX_TYPE*)GE_mutex_create();
}

#elif defined (GE_WINDOWS)
static DWORD GE_root_thread_id = 0; /* Thread ID of the main thread in non-multithreaded mode. */
#elif defined(GE_USE_BOEHM_GC)
static pthread_t GE_root_thread_id = 0; /* Thread ID of the main thread in non-multithreaded mode. */
#endif

/* Indicates which signals are ignored or not. */
static char GE_ignored_signals[GE_NSIG];

/* Indicates which signals were originally ignored or not. */
static char GE_originally_ignored_signals[GE_NSIG];

/*
 * Code to be executed when the signal `a_sig' is raised.
 */
extern void GE_handle_signal(int a_sig);

/*
 * Code to be executed when the floating point exception signal `a_sig' is raised.
 */
extern void GE_handle_fpe_signal(int a_sig);

/*
 * Code to be executed when the signal `a_sig' is raised.
 */
static void GE_handle_general_signal(int a_sig, int is_fpe)
{
	if (!(GE_main_context && GE_main_context->exception_manager)) {
		GE_show_console();
		fprintf(stderr, "\nSignal caught %d while initializing Eiffel system.\n", a_sig);
		exit(1);
	}
#ifdef GE_USE_THREADS
	GE_context* l_context = GE_unprotected_thread_current_context();
#else
	GE_context* l_context = GE_main_context;
#endif
		/* Check if signal was caught in a non-Eiffel thread. In which case we wimply
		 * print out the signal number except if this is SIGINT or SIGBREAK which are
		 * usually the result of a user action to stop the process. */
#if defined(GE_USE_THREADS) || defined(GE_WINDOWS) || defined(GE_USE_BOEHM_GC)
#ifdef GE_USE_THREADS
	if (!l_context)
#elif defined(GE_WINDOWS)
		/* On Windows for a non-multithreaded program, if we are called from a different
		 * thread than the root one, we clearly cannot continue. */
	if (GE_root_thread_id != GetCurrentThreadId())
#elif defined(GE_USE_BOEHM_GC)
	if (!pthread_equal(GE_root_thread_id, pthread_self()))
#endif
	{
#ifdef SIGBREAK
		if (a_sig != SIGINT && a_sig != SIGBREAK)
#else
		if (a_sig != SIGINT)
#endif
		{
			GE_show_console();
			fprintf(stderr, "\nSignal caught %d while in a non-Eiffel thread.\n", a_sig);
		}
		exit(1);
	}
#endif

	{
		void (*old_handler)(int);

		/* Assume default signal handler is SIG_DFL.
		 * Reset signal handler to call Eiffel's signal handler.
		 */

		if (is_fpe) {
			old_handler = signal(a_sig, GE_handle_fpe_signal);
		} else {
			old_handler = signal(a_sig, GE_handle_signal);
		}

		if (old_handler != SIG_DFL) {
			/* Oops - someone called `signal' to override
			 * Eiffel's handler.  Their handler is still
			 * the one to use, so restore it.
			 */
			signal(a_sig, old_handler);
		}
	}

	if (a_sig >= 1 && a_sig < GE_NSIG) {
		char l_ignored;
#ifdef GE_USE_THREADS
		if (GE_ignored_signals_mutex)
			GE_mutex_lock(GE_ignored_signals_mutex);
#endif
		l_ignored = GE_ignored_signals[a_sig];
#ifdef GE_USE_THREADS
		if (GE_ignored_signals_mutex)
			GE_mutex_unlock(GE_ignored_signals_mutex);
#endif
		if (l_ignored)	/* If signal is to be ignored */
			return; /* Nothing to be done */
	}

	l_context->signal_number = a_sig;
	if (!l_context->exception_manager) {
		GE_show_console();
		fprintf(stderr, "\nSignal caught %d while initializing Eiffel thread.\n", a_sig);
		exit(1);
	}
	GE_raise_with_message((is_fpe?GE_EX_FLOAT:GE_EX_SIG), GE_signal_name(a_sig));
}

/*
 * Code to be executed when the signal `a_sig' is raised.
 */
void GE_handle_signal(int a_sig)
{
	GE_handle_general_signal(a_sig, 0);
}

/*
 * Code to be executed when the floating point exception signal `a_sig' is raised.
 */
void GE_handle_fpe_signal(int a_sig)
{
	GE_handle_general_signal(a_sig, 1);
}

/* Struct for the description of signals. */
struct GE_signal_description {
	int index;				/* Index for Eiffel/C mapping */
	int number;				/* Signal number */
	char *description;		/* Description */
};

/* Descriptions of defined signals. */
static struct GE_signal_description GE_signal_descriptions[] = {
#ifdef SIGHUP
	{ 1, SIGHUP, "Hangup" },
#endif
#ifdef SIGINT
	{ 2, SIGINT, "Interrupt" },
#endif
#ifdef SIGQUIT
	{ 3, SIGQUIT, "Quit" },
#endif
#ifdef SIGILL
	{ 4, SIGILL, "Illegal instruction" },
#endif
#ifdef SIGTRAP
	{ 5, SIGTRAP, "Trace trap" },
#endif
#ifdef SIGABRT
	{ 6, SIGABRT, "Abort" },
#endif
#ifdef SIGIOT
	{ 7, SIGIOT, "IOT instruction" },
#endif
#ifdef SIGEMT
	{ 8, SIGEMT, "EMT instruction" },
#endif
#ifdef SIGFPE
	{ 9, SIGFPE, "Floating point exception" },
#endif
#ifdef SIGKILL
	{ 10, SIGKILL, "Terminator" },
#endif
#ifdef SIGBUS
	{ 11, SIGBUS, "Bus error" },
#endif
#ifdef SIGSEGV
	{ 12, SIGSEGV, "Segmentation violation" },
#endif
#ifdef SIGSYS
	{ 13, SIGSYS, "Bad argument to system call" },
#endif
#ifdef SIGPIPE
	{ 14, SIGPIPE, "Broken pipe" },
#endif
#ifdef SIGALRM
	{ 15, SIGALRM, "Alarm clock" },
#endif
#ifdef SIGTERM
	{ 16, SIGTERM, "Software termination" },
#endif
#ifdef SIGUSR1
	{ 17, SIGUSR1, "User-defined signal #1" },
#endif
#ifdef SIGUSR2
	{ 18, SIGUSR2, "User-defined signal #2" },
#endif
#ifdef SIGCHLD
	{ 19, SIGCHLD, "Death of a child" },
#endif
#ifdef SIGCLD
	{ 20, SIGCLD, "Death of a child" },
#endif
#ifdef SIGIO
	{ 21, SIGIO, "Pending I/O on a descriptor" },
#endif
#ifdef SIGPOLL
	{ 22, SIGPOLL, "Selectable event pending" },
#endif
#ifdef SIGTTIN
	{ 23, SIGTTIN, "Tty input from background" },
#endif
#ifdef SIGTTOU
	{ 24, SIGTTOU, "Tty output from background" },
#endif
#ifdef SIGSTOP
	{ 25, SIGSTOP, "Stop" },
#endif
#ifdef SIGTSTP
	{ 26, SIGTSTP, "Stop from tty" },
#endif
#ifdef SIGXCPU
	{ 27, SIGXCPU, "Cpu time limit exceeded" },
#endif
#ifdef SIGXFSZ
	{ 28, SIGXFSZ, "File size limit exceeded" },
#endif
#ifdef SIGVTALRM
	{ 29, SIGVTALRM, "Virtual time alarm" },
#endif
#ifdef SIGPWR
	{ 30, SIGPWR, "Power-fail" },
#endif
#ifdef SIGPROF
	{ 31, SIGPROF, "Profiling timer alarm" },
#endif
#ifdef SIGWINCH
	{ 32, SIGWINCH, "Window size changed" },
#endif
#ifdef SIGWIND
	{ 33, SIGWIND, "Window change" },
#endif
#ifdef SIGPHONE
	{ 34, SIGPHONE, "Line status change" },
#endif
#ifdef SIGLOST
	{ 35, SIGLOST, "Resource lost" },
#endif
#ifdef SIGURG
	{ 36, SIGURG, "Urgent condition on socket" },
#endif
#ifdef SIGCONT
	{ 37, SIGCONT, "Continue after stop" },
#endif
#ifdef SIGBREAK
	{ 38, SIGBREAK, "Ctrl-Break"},
#endif
	{ 39, 0, "Unknown signal" }
};

/* Description of signal `a_sig'. */
char *GE_signal_name(EIF_INTEGER a_sig)
{
	int i;

	for (i = 0; ; i++) {
		if ((EIF_INTEGER)GE_signal_descriptions[i].number == a_sig || GE_signal_descriptions[i].number == 0) {
			return GE_signal_descriptions[i].description;
		}
	}
}

/* Is signal `a_sig' defined? */
char GE_is_signal_defined(EIF_INTEGER a_sig)
{
	int i;

	if (a_sig < 1 || a_sig >= GE_NSIG) {
		return (char)0;
	}
	for (i = 0; ; i++) {
		if ((EIF_INTEGER)GE_signal_descriptions[i].number == a_sig) {
			return (char)1;
		} else if (GE_signal_descriptions[i].number == 0) {
			return (char)0;
		}
	}
}

/* C signal code for signal of index `idx'. */
EIF_INTEGER GE_signal_map(EIF_INTEGER idx)
{
	int i;

	for (i = 0; ; i++)
		if ((EIF_INTEGER)GE_signal_descriptions[i].index == idx || GE_signal_descriptions[i].number == 0)
			return (EIF_INTEGER)GE_signal_descriptions[i].number;
}

/*
 * Catch signal `a_sig'.
 * Check that the signal is defined.
 */
void GE_catch_signal(EIF_INTEGER a_sig)
{
	if (GE_is_signal_defined(a_sig) == (char)0)
		return;

	/* We may not change the status of SIGPROF because it is possible
	 * that we do (run-time) external profiling. Changing the catch
	 * status of this signal means that profiling stops.
	 */

#ifdef SIGPROF
	if (a_sig == SIGPROF)
		return;
#endif
#ifdef GE_USE_THREADS
	if (GE_ignored_signals_mutex)
		GE_mutex_lock(GE_ignored_signals_mutex);
#endif
	GE_ignored_signals[a_sig] = 0;
#ifdef SIGTTIN
	if (a_sig == SIGTTIN) {
		signal(SIGTTIN, SIG_DFL);	/* Ignore background input signal */
#ifdef GE_USE_THREADS
		if (GE_ignored_signals_mutex)
			GE_mutex_unlock(GE_ignored_signals_mutex);
#endif
		return;
	}
#endif
#ifdef SIGTTOU
	if (a_sig == SIGTTOU) {
		signal(SIGTTOU, SIG_DFL);	/* Ignore background output signal */
#ifdef GE_USE_THREADS
		if (GE_ignored_signals_mutex)
			GE_mutex_unlock(GE_ignored_signals_mutex);
#endif
		return;
	}
#endif
#ifdef SIGTSTP
	if (a_sig == SIGTSTP) {
		signal(SIGTSTP, SIG_DFL);	/* Restore default behaviour */
#ifdef GE_USE_THREADS
		if (GE_ignored_signals_mutex)
			GE_mutex_unlock(GE_ignored_signals_mutex);
#endif
		return;
	}
#endif
#ifdef SIGCONT
	if (a_sig == SIGCONT) {
		signal(SIGCONT, SIG_DFL);	/* Restore default behaviour */
#ifdef GE_USE_THREADS
		if (GE_ignored_signals_mutex)
			GE_mutex_unlock(GE_ignored_signals_mutex);
#endif
		return;
	}
#endif
#ifdef SIGTRAP
	if (a_sig == SIGTRAP) {
		signal(SIGTRAP, SIG_DFL);	/* Restore default behaviour */
#ifdef GE_USE_THREADS
		if (GE_ignored_signals_mutex)
			GE_mutex_unlock(GE_ignored_signals_mutex);
#endif
		return;
	}
#endif
#ifdef SIGFPE
	if (a_sig == SIGFPE) {
		signal(SIGFPE, GE_handle_fpe_signal);		/* Raise an Eiffel exception when caught */
#ifdef GE_USE_THREADS
		if (GE_ignored_signals_mutex)
			GE_mutex_unlock(GE_ignored_signals_mutex);
#endif
		return;
	}
#endif
#ifdef GE_USE_THREADS
	if (GE_ignored_signals_mutex)
		GE_mutex_unlock(GE_ignored_signals_mutex);
#endif
}

/* 
 * Ignore signal `a_sig'.
 * Check that the signal is defined.
 */
void GE_ignore_signal(EIF_INTEGER a_sig)
{
	if (GE_is_signal_defined(a_sig) == (char)0)
		return;

	/* We may not change the status of SIGPROF because it is possible
	 * that we do (run-time) external profiling. Changing the catch
	 * status of this signal means that profiling stops.
	 */

#ifdef SIGPROF
	if (a_sig == SIGPROF)
		return;
#endif
#ifdef GE_USE_THREADS
	if (GE_ignored_signals_mutex)
		GE_mutex_lock(GE_ignored_signals_mutex);
#endif
	GE_ignored_signals[a_sig] = 1;
#ifdef SIGTTIN
	if (a_sig == SIGTTIN) {
		signal(SIGTTIN, SIG_IGN);
#ifdef GE_USE_THREADS
		if (GE_ignored_signals_mutex)
			GE_mutex_unlock(GE_ignored_signals_mutex);
#endif
		return;
	}
#endif
#ifdef SIGTTOU
	if (a_sig == SIGTTOU) {
		signal(SIGTTOU, SIG_IGN);
#ifdef GE_USE_THREADS
		if (GE_ignored_signals_mutex)
			GE_mutex_unlock(GE_ignored_signals_mutex);
#endif
		return;
	}
#endif
#ifdef SIGTSTP
	if (a_sig == SIGTSTP) {
		signal(SIGTSTP, SIG_IGN);
#ifdef GE_USE_THREADS
		if (GE_ignored_signals_mutex)
			GE_mutex_unlock(GE_ignored_signals_mutex);
#endif
		return;
	}
#endif
#ifdef SIGCONT
	if (a_sig == SIGCONT) {
		signal(SIGCONT, SIG_IGN);
#ifdef GE_USE_THREADS
		if (GE_ignored_signals_mutex)
			GE_mutex_unlock(GE_ignored_signals_mutex);
#endif
		return;
	}
#endif
#ifdef SIGTRAP
	if (a_sig == SIGTRAP) {
		signal(SIGTRAP, SIG_IGN);
#ifdef GE_USE_THREADS
		if (GE_ignored_signals_mutex)
			GE_mutex_unlock(GE_ignored_signals_mutex);
#endif
		return;
	}
#endif
#ifdef SIGFPE
	if (a_sig == SIGFPE) {
		signal(SIGFPE, SIG_IGN);
#ifdef GE_USE_THREADS
		if (GE_ignored_signals_mutex)
			GE_mutex_unlock(GE_ignored_signals_mutex);
#endif
		return;
	}
#endif
#ifdef GE_USE_THREADS
	if (GE_ignored_signals_mutex)
		GE_mutex_unlock(GE_ignored_signals_mutex);
#endif
}

/*
 * Is signal of number `a_sig' caught?
 * Check that the signal is defined.
 */
char GE_is_signal_caught(EIF_INTEGER a_sig)
{
	char l_ignored;

	if (GE_is_signal_defined(a_sig) == (char)0)
		return (char)0;
#ifdef GE_USE_THREADS
	if (GE_ignored_signals_mutex)
		GE_mutex_lock(GE_ignored_signals_mutex);
#endif
	l_ignored = GE_ignored_signals[a_sig];
#ifdef GE_USE_THREADS
	if (GE_ignored_signals_mutex)
		GE_mutex_unlock(GE_ignored_signals_mutex);
#endif
	return (char)((l_ignored == (char)1)? 0: 1);
}

/* Reset all the signals to their default handling. */
void GE_reset_all_signals(void)
{
	int l_sig;
#ifdef GE_USE_THREADS
	if (GE_ignored_signals_mutex)
		GE_mutex_lock(GE_ignored_signals_mutex);
#endif
	for (l_sig = 1; l_sig < GE_NSIG; l_sig++)
#ifdef SIGPROF
		if (l_sig != SIGPROF)
#endif
			GE_ignored_signals[l_sig] = GE_originally_ignored_signals[l_sig];
	
#ifdef SIGTTIN
	signal(SIGTTIN, SIG_IGN); /* Ignore background input signal */
#endif
#ifdef SIGTTOU
	signal(SIGTTOU, SIG_IGN); /* Ignore background output signal */
#endif
#ifdef SIGTSTP
	signal(SIGTSTP, SIG_DFL); /* Restore default behaviour */
#endif
#ifdef SIGCONT
	signal(SIGCONT, SIG_DFL); /* Restore default behaviour */
#endif
#ifdef SIGTRAP
	signal(SIGTRAP, SIG_DFL);	/* Restore default behaviour */
#endif
#ifdef SIGFPE
	signal(SIGFPE, GE_handle_fpe_signal); /* Raise an Eiffel exception when caught */
#endif
#ifdef GE_USE_THREADS
	if (GE_ignored_signals_mutex)
		GE_mutex_unlock(GE_ignored_signals_mutex);
#endif
}

/* Reset signal `a_sig' to its default handling. */
void GE_reset_signal_to_default(EIF_INTEGER a_sig)
{

	if (GE_is_signal_defined(a_sig) == (char)0)
		return;

	/* We may not change the status of SIGPROF because it is possible
	 * that we do (run-time) external profiling. Changing the catch
	 * status of this signal means that profiling stops.
	 */

#ifdef SIGPROF
	if (a_sig == SIGPROF)
		return;
#endif

#ifdef GE_USE_THREADS
	if (GE_ignored_signals_mutex)
		GE_mutex_lock(GE_ignored_signals_mutex);
#endif
	GE_ignored_signals[a_sig] = GE_originally_ignored_signals[a_sig];
#ifdef SIGTTIN
	if (a_sig == SIGTTIN) {
		signal(SIGTTIN, SIG_IGN);	/* Ignore background input signal */
#ifdef GE_USE_THREADS
		if (GE_ignored_signals_mutex)
			GE_mutex_unlock(GE_ignored_signals_mutex);
#endif
		return;
	}
#endif
#ifdef SIGTTOU
	if (a_sig == SIGTTOU) {
	 	signal(SIGTTOU, SIG_IGN);	/* Ignore background output signal */
#ifdef GE_USE_THREADS
		if (GE_ignored_signals_mutex)
			GE_mutex_unlock(GE_ignored_signals_mutex);
#endif
		return;
	}
#endif
#ifdef SIGTSTP
	if (a_sig == SIGTSTP) {
		signal(SIGTSTP, SIG_DFL);	/* Restore default behaviour */
#ifdef GE_USE_THREADS
		if (GE_ignored_signals_mutex)
			GE_mutex_unlock(GE_ignored_signals_mutex);
#endif
		return;
	}
#endif
#ifdef SIGCONT
	if (a_sig == SIGCONT) {
		signal(SIGCONT, SIG_DFL);	/* Restore default behaviour */
#ifdef GE_USE_THREADS
		if (GE_ignored_signals_mutex)
			GE_mutex_unlock(GE_ignored_signals_mutex);
#endif
		return;
	}
#endif
#ifdef SIGTRAP
	if (a_sig == SIGTRAP) {
		signal(SIGTRAP, SIG_DFL);	/* Restore default behaviour */
#ifdef GE_USE_THREADS
		if (GE_ignored_signals_mutex)
			GE_mutex_unlock(GE_ignored_signals_mutex);
#endif
		return;
	}
#endif
#ifdef SIGFPE
	if (a_sig == SIGFPE) {
		signal(SIGFPE, GE_handle_fpe_signal);	/* Raise an Eiffel exception when caught */
#ifdef GE_USE_THREADS
		if (GE_ignored_signals_mutex)
			GE_mutex_unlock(GE_ignored_signals_mutex);
#endif
		return;
	}
#endif
#ifdef GE_USE_THREADS
	if (GE_ignored_signals_mutex)
		GE_mutex_unlock(GE_ignored_signals_mutex);
#endif
}

/* Number of last signal. */
EIF_INTEGER GE_signal_number()
{
	return (EIF_INTEGER)GE_current_context()->signal_number;
}

/*
 * Set signal handlers.
 * To be called at the beginning of the main thread.
 */
void GE_init_signal()
{
	int l_sig;
	void (*old)(int);	/* Old signal handler */

#ifndef GE_USE_THREADS
#if defined(GE_WINDOWS)
	GE_root_thread_id = GetCurrentThreadId();
#elif defined(GE_USE_BOEHM_GC)
	GE_root_thread_id = pthread_self();
#endif
#endif

	for (l_sig = 1; l_sig < GE_NSIG; l_sig++) {
		old = SIG_IGN;
		/* Default to be ignored before handler installation,
		 * in order to avoid immediate signal handling after 
		 * handler installation, when flags have not been 
		 * correctly set. 
		 */
		GE_ignored_signals[l_sig] = 1; 

		switch (l_sig) {

#ifdef GE_USE_THREADS

			/* In Multi-threaded mode, we do not want to call
			* signal() on some specific signals.
			*/

#if defined(GE_USE_POSIX_THREADS)
			/* So far, used in Linux threads */
			case SIGUSR1:
				break;

			case SIGUSR2:
				break;
#endif

#if defined(SIGPTRESCHED) && defined(GE_USE_POSIX_THREADS) && defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE==199506L)
			/* So far, used in Posix 1003.1c threads */
			case SIGPTRESCHED:
				break;
#endif

#if defined(SIGPTINTR) && defined(GE_USE_POSIX_THREADS) && defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE==199506L)
			/* So far, used in Posix 1003.1c */
			case SIGPTINTR:
				break;
#endif

#if defined(SIGRTMIN) && defined(GE_USE_POSIX_THREADS) && defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE==199309L)
			/* So far, used in Posix 1003.1b */
			case SIGRTMIN:
				break;
#endif

#if defined(SIGRTMAX) && defined(GE_USE_POSIX_THREADS) && defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE==199309L)
			/* So far, used in Posix 1003.1b */
			case SIGRTMAX:
				break;
#endif

#endif /* GE_USE_THREADS */

#ifdef SIGPROF
			/* When profiling, we must not catch this signal. */
			case SIGPROF:
				break;
#endif /* SIGPROF */

			default:
				if (GE_is_signal_defined(l_sig) == (char)1) {
					old = signal(l_sig, GE_handle_signal);
				}
		}			

		if (old == SIG_IGN) {
			GE_ignored_signals[l_sig] = 1;	/* Signal was ignored by default */
		} else {
			GE_ignored_signals[l_sig] = 0;	/* Signal was not ignored */
		}
	}

	/* Hardwired defaults: ignore SIGCHLD (or SIGCLD), SIGIO, SIGURG, SIGCONT
	 * and SIGWINCH if they are defined. That is to say, the Eiffel run-time
	 * will not deliver these to the process if the user does not explicitely
	 * set a handler for them.
	 */

#ifdef SIGCHLD
	if (SIGCHLD >= 1 && SIGCHLD < GE_NSIG) {
		GE_ignored_signals[SIGCHLD] = 1;	/* Ignore death of a child */
		signal(SIGCHLD, SIG_DFL);			/* Restore the default value */
	}
#endif
#ifdef SIGCLD
	if (SIGCLD >= 1 && SIGCLD < GE_NSIG) {
		GE_ignored_signals[SIGCLD] = 1;		/* Ignore death of a child */
	}
#endif
#ifdef SIGIO
	if (SIGIO >= 1 && SIGIO < GE_NSIG) {
		GE_ignored_signals[SIGIO] = 1;		/* Ignore pending I/O on descriptor */
	}
#endif
#ifdef SIGCONT
	if (SIGCONT >= 1 && SIGCONT < GE_NSIG) {
		GE_ignored_signals[SIGCONT] = 1;	/* Ignore continue after a stop */
	}
#endif
#ifdef SIGURG
	if (SIGURG >= 1 && SIGURG < GE_NSIG) {
		GE_ignored_signals[SIGURG] = 1;		/* Ignore urgent condition on socket */
	}
#endif
#ifdef SIGWINCH
	if (SIGWINCH >= 1 && SIGWINCH < GE_NSIG) {
		GE_ignored_signals[SIGWINCH] = 1;	/* Ignore window size change */
		signal(SIGWINCH, SIG_IGN);
	}
#endif
#ifdef SIGTTIN
	if (SIGTTIN >= 1 && SIGTTIN < GE_NSIG) {
		GE_ignored_signals[SIGTTIN] = 1;	/* Ignore background input signal */
		signal(SIGTTIN, SIG_IGN);
	}
#endif
#ifdef SIGTTOU
	if (SIGTTOU >= 1 && SIGTTOU < GE_NSIG) {
		GE_ignored_signals[SIGTTOU] = 1;	/* Ignore background output signal */
		signal(SIGTTOU, SIG_IGN);
	}
#endif

	/* Do not catch SIGTSTP (stop signal from tty like ^Z under csh or ksh)
	 * otherwise job control will not be allowed. However, SIGSTOP is caught.
	 * Likewise, do not catch SIGCONT (continue signal for stopped process).
	 */

#ifdef SIGTSTP
	if (SIGTSTP >= 1 && SIGTSTP < GE_NSIG) {
		GE_ignored_signals[SIGTSTP] = 0;	/* Do not ignore that signal */
		signal(SIGTSTP, SIG_DFL);			/* Restore default behaviour */
	}
#endif
#ifdef SIGCONT
	if (SIGCONT >= 1 && SIGCONT < GE_NSIG) {
		GE_ignored_signals[SIGCONT] = 0;	/* Do not ignore continue signal */
		signal(SIGCONT, SIG_DFL);			/* Restore default behaviour */
	}
#endif

	/* It would not be wise to catch SIGTRAP: C debuggers may use this signal
	 * to do step-by-step execution and we do not want the Eiffel run-time
	 * to interfere with this particular low-level signal--RAM.
	 */

#ifdef SIGTRAP
	if (SIGTRAP >= 1 && SIGTRAP < GE_NSIG) {
		GE_ignored_signals[SIGTRAP] = 0;	/* Do not ignore Trap signal */
		signal(SIGTRAP, SIG_DFL);			/* Restore default behaviour */
	}
#endif

	/* Special treatment for SIGFPE -- always raise an Eiffel exception when
	 * it is caught (unless exception is explicitely ignored, but that's the
	 * handler's problem).
	 */

#ifdef SIGFPE
	if (SIGFPE >= 1 && SIGFPE < GE_NSIG) {
		GE_ignored_signals[SIGFPE] = 0;			/* Do not ignore a floating point signal */
		signal(SIGFPE, GE_handle_fpe_signal);	/* Raise an Eiffel exception when caught */
	}
#endif

	/* Now save all the defaults in the special original status array, in order
	 * for the run-time to know what to do when a signal is restored to its
	 * "default" state.
	 */

	for (l_sig = 1; l_sig < GE_NSIG; l_sig++) {
		GE_originally_ignored_signals[l_sig] = GE_ignored_signals[l_sig];
	}
}

#ifdef __cplusplus
}
#endif

#endif
#ifdef __cplusplus
extern "C" {
#endif


#ifdef __cplusplus
}
#endif
/*
	description:

		"C functions used to implement the program initialization"

	system: "Gobo Eiffel Compiler"
	copyright: "Copyright (c) 2007-2024, Eric Bezault and others"
	license: "MIT License"
*/

#ifndef GE_MAIN_C
#define GE_MAIN_C
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#ifndef GE_MAIN_H
#include "ge_main.h"
#endif
#ifndef GE_ARGUMENTS_H
#include "ge_arguments.h"
#endif
#ifndef GE_NATIVE_STRING_H
#include "ge_native_string.h"
#endif
#ifndef GE_GC_H
#include "ge_gc.h"
#endif
#ifndef GE_SIGNAL_H
#include "ge_signal.h"
#endif

#ifdef __cplusplus
extern "C" {
#endif

/*
 * System name.
 */
char* GE_system_name = NULL;

/*
 * Root class name.
 */
char* GE_root_class_name = NULL;

#ifdef EIF_WINDOWS

/*
 * Used in WEL.
 */
HINSTANCE eif_hInstance;
HINSTANCE eif_hPrevInstance;
LPWSTR eif_lpCmdLine;
int eif_nCmdShow;

/*
 * Break the shell command held in `cmd', putting each shell word
 * in a separate array entry, hence building an argument
 * suitable for the 'main'. Note that `cmd' will be altered
 * and `argvp' will point to some chunks of it.
 */
void GE_get_argcargv(EIF_NATIVE_CHAR* cmd, int* argc, EIF_NATIVE_CHAR*** argvp)
{
	int quoted = 0; /* parsing inside a quoted string? */
	int nbs; /* number of backspaces */
	int i;
	EIF_NATIVE_CHAR *p = NULL, *pe = NULL; /* pointers in `cmd' */
	EIF_NATIVE_CHAR *qb = NULL, *q = NULL; /* pointers in arguments */

	*argc = 0;
	/* Remove leading and trailing white spaces */
	for (p = cmd; *p == L' ' || *p == L'\t'; p++)
		; /* empty */
	for (pe = p + GE_nstrlen(p) - 1; pe >= p && (*pe == L' ' || *pe == L'\t'); pe--)
		; /* empty */
	if (p <= pe) {
		*argc = *argc + 1; /* at least one argument */
		qb = q = malloc((pe - p + 2) * sizeof(EIF_NATIVE_CHAR));
		if (!qb) {
			return;
		}
		do {
			switch(*p) {
				case L' ':
				case L'\t':
					if (quoted) {
						do {
							*q++ = *p++;
						} while(*p == L' ' || *p == L'\t');
					} else {
						do {
							p++;
						} while(*p == L' ' || *p == L'\t');
						*q++ = L'\0';
						*argc = *argc + 1;
					}
					break;
				case L'\"':
					quoted = ! quoted;
					p++;
					break;
				case L'\\':
					for (nbs = 0; *p == L'\\'; nbs++)
						*q++ = *p++;
					if (*p == L'\"') {
						if (nbs % 2) { /* odd number of backslashes */
							q -= (nbs + 1) / 2;
							*q++ = *p++;
						} else { /* even number of backslashes */
							quoted = ! quoted;
							q -= nbs / 2;
							p++;
						}
					}
					break;
				default:
					*q++ = *p++;
			}
		} while (p <= pe);
		*q++ = L'\0';
	}

	if (!argvp) {
		free(qb);
		return;
	}

	*argvp = (EIF_NATIVE_CHAR**)malloc((*argc+1)*sizeof(EIF_NATIVE_CHAR*));
	if (!(*argvp)) {
		free(qb);
		return;
	}

	for (i = 0; i < *argc; i++) {
		(*argvp)[i] = qb;
		qb += GE_nstrlen(qb) + 1;
	}
	(*argvp)[i] = (EIF_NATIVE_CHAR*)0;
}

int main(int dummy_arg1, char** dummy_argv)
{
	int code;
	int argc;
	EIF_NATIVE_CHAR** argv;
	EIF_NATIVE_CHAR* cmd;

	GE_init_signal();
	GE_init_gc();
#ifdef GE_USE_THREADS
	GE_init_ignored_signals_mutex();
#endif
	GE_set_windows_exception_filter();
		/* Variables used in WEL. */
	eif_hInstance = GetModuleHandle(NULL);
	eif_hPrevInstance = NULL;
	eif_lpCmdLine = GetCommandLineW();
	eif_nCmdShow = SW_SHOW;
	cmd = GE_nstrdup(GetCommandLineW());
	GE_get_argcargv(cmd, &argc, &argv);
	code = GE_main(argc, argv);
	free(cmd);
	if (argc > 0) {
		free(argv[0]);
	}
	free(argv);
	return code;
}

/*
 * Main entry point when compiling a Windows application.
 * See:
 *    http://en.wikipedia.org/wiki/WinMain
 *    http://msdn2.microsoft.com/en-us/library/ms633559.aspx
 */
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	return main(0, NULL);
}

#else

int main(int argc, char** argv)
{
	GE_init_signal();
	GE_init_gc();
#ifdef GE_USE_THREADS
	GE_init_ignored_signals_mutex();
#endif
	return GE_main(argc, argv);
}

#endif

#ifdef __cplusplus
}
#endif

#endif
#ifdef __cplusplus
extern "C" {
#endif


#ifdef __cplusplus
}
#endif
/*
	description:

		"C functions used to implement class EXCEPTION"

	system: "Gobo Eiffel Compiler"
	copyright: "Copyright (c) 2007-2024, Eric Bezault and others"
	license: "MIT License"
*/

#ifndef GE_EXCEPTION_C
#define GE_EXCEPTION_C
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#ifndef GE_EXCEPTION_H
#include "ge_exception.h"
#endif
#ifndef GE_GC_H
#include "ge_gc.h"
#endif
#ifndef GE_STRING_H
#include "ge_string.h"
#endif
#ifndef GE_CONSOLE_H
#include "ge_console.h"
#endif
#ifndef GE_MAIN_H
#include "ge_main.h"
#endif
#ifdef GE_USE_THREADS
#ifndef GE_THREAD_H
#include "ge_thread.h"
#endif
#endif

#ifdef EIF_WINDOWS
#ifdef __LCC__
#include <windows.h>
#else
#include <winbase.h>
#endif
#endif

#ifdef __cplusplus
extern "C" {
#endif

/*
 * Pre-defined exception tags. No restriction on size.
 */
static char* GE_exception_tags[] = {
	(char*) 0,							/* Nothing */
	"Feature call on void target.",		/* GE_EX_VOID */
	"No more memory.",					/* GE_EX_MEM */
	"Precondition violated.",			/* GE_EX_PRE */
	"Postcondition violated.",			/* GE_EX_POST */
	"Floating point exception.",		/* GE_EX_FLOAT */
	"Class invariant violated.",		/* GE_EX_CINV */
	"Assertion violated.",				/* GE_EX_CHECK */
	"Routine failure.",					/* GE_EX_FAIL */
	"Unmatched inspect value.",			/* GE_EX_WHEN */
	"Non-decreasing loop variant or negative value reached.",		/* GE_EX_VAR */
	"Loop invariant violated.",			/* GE_EX_LINV */
	"Operating system signal.",			/* GE_EX_SIG */
	"Eiffel run-time panic.",			/* GE_EX_BYE */
	"Exception in rescue clause.",		/* GE_EX_RESC */
	"Out of memory.",					/* GE_EX_OMEM */
	"Resumption attempt failed.",		/* GE_EX_RES */
	"Create on deferred.",				/* GE_EX_CDEF */
	"External event.",					/* GE_EX_EXT */
	"Void assigned to expanded.",		/* GE_EX_VEXP */
	"Exception in signal handler.",		/* GE_EX_HDLR */
	"I/O error.",						/* GE_EX_IO */
	"Operating system error.",			/* GE_EX_SYS */
	"Retrieval error.",					/* GE_EX_RETR */
	"Developer exception.",				/* GE_EX_PROG */
	"Eiffel run-time fatal error.",		/* GE_EX_FATAL */
	"CECIL cannot call melted code",	/* GE_EX_DOL */
	"Runtime I/O error.",				/* GE_EX_ISE_IO */
	"COM error.",						/* GE_EX_COM */
	"Runtime check violated.",			/* GE_EX_RT_CHECK */
	"Old expression evaluation failed.",/* GE_EX_OLD */
	"Serialization failed.",			/* GE_EX_SEL */
	"SCOOP processor dirty."			/* GE_EX_DIRTY */
};

/*
 * Exception tag associated with `a_code'.
 */
char* GE_exception_tag(long a_code)
{
	if (a_code < 0) {
		return "User-defined exception.";
	} else if (a_code < 1 || a_code > GE_EX_NEX) {
		return "Unknown exception.";
	} else {
		return GE_exception_tags[a_code];
	}
}

/*
 * Initialize `a_trace'.
 */
static void GE_init_exception_trace_buffer(GE_exception_trace_buffer* a_trace)
{
	a_trace->count = 0;
	a_trace->capacity = 0;
	a_trace->area = (char*)GE_malloc_atomic_uncollectable(4096);
	a_trace->area[0] = '\0';
	a_trace->capacity = 4096;
}

/*
 * Free memory allocated in `a_trace'.
 */
static void GE_free_exception_trace_buffer(GE_exception_trace_buffer* a_trace)
{
	a_trace->count = 0;
	a_trace->capacity = 0;
	if (a_trace->area) {
		GE_free(a_trace->area);
	}
}

/*
 * Append `a_string' to `a_trace'.
 * Resize area if needed.
 */
void GE_append_to_exception_trace_buffer(GE_exception_trace_buffer* a_trace, char* a_string)
{
	int l_length = strlen(a_string);
	uint32_t l_new_capacity;
	char* l_new_area;

	if (a_trace->area) {
		if ((a_trace->capacity - a_trace->count) <= l_length) {
			l_new_capacity = a_trace->capacity + l_length + 512;
			l_new_area = (char*)GE_realloc(a_trace->area, l_new_capacity);
			if (l_new_area) {
				a_trace->area = l_new_area;
				a_trace->capacity = l_new_capacity;
			}
		}
		if ((a_trace->capacity - a_trace->count) > l_length) {
			strcpy(a_trace->area + a_trace->count, a_string);
			a_trace->count += l_length;
		}
	} else {
		GE_init_exception_trace_buffer(a_trace);
		GE_append_to_exception_trace_buffer(a_trace, a_string);
	}
}

/*
 * Wipe out `a_trace'.
 */
void GE_wipe_out_exception_trace_buffer(GE_exception_trace_buffer* a_trace)
{
	if (a_trace->count > 0) {
		a_trace->count = 0;
		a_trace->area[0] = '\0';
	}
}

/*
 * Print first line of exception which contains `a_class_name', `a_feature_name'
 * and `a_tag_name' to `a_trace'.
 */
static void GE_print_class_feature_tag(GE_exception_trace_buffer* a_trace, const char* a_class_name, const char* a_feature_name, const char* a_tag_name)
{
	char buffer[256];
	int l_class_count, l_feature_count, l_tag_count;

		/* We are trying to provide the best format possible so that we can see all the useful
		 * information about the location and the reason of the crash.
		 * Note that the C format `%width[.precision]s' means that we will display `width'
		 * characters on the screen and only `precision' characters from `s' will be displayed,
		 * meaning that if `precision' is smaller than `width' the text is right aligned.
		 *
		 * Note: because `buffer' has a fixed size of 256, we need to use `precision' to avoid
		 * writting more than `buffer' can hold. And for `sprintf', a null character is appended
		 * after the last character written, which should be taken into account.
		 */
	l_class_count = (int)strlen(a_class_name);
	l_feature_count = (int)strlen(a_feature_name);
	l_tag_count = (int)strlen(a_tag_name);

		/* 1 - precision of 211 = 254 - 43, 43 being number of characters written
		 *      for `a_class_name' and `a_feature_name'. */
		/* 2 - precision of 234 = 254 - 20, 20 being number of characters written
		 *      for `a_class_name'.*/
		/* 3 - precision of 254, 254 being number of characters written
		 *      excluding `\n' and null character appended at the end */
		/* 4 - precision of 251, 231 and 208 being number of characters written
		 *      excluding eclipse from above numbers. */
	if (l_class_count > 19) {
		if (l_class_count > 251) {
			sprintf(buffer, "%.251s...\n", a_class_name);
		} else {
			sprintf(buffer, "%*.254s\n", l_class_count, a_class_name);
		}
		GE_append_to_exception_trace_buffer(a_trace, buffer);
		if (l_feature_count > 22) {
			if (l_feature_count > 231) {
				sprintf(buffer, "%.231s...\n", a_feature_name);
			} else {
				sprintf(buffer, "%*.234s\n", 20 + l_feature_count, a_feature_name);
			}
			GE_append_to_exception_trace_buffer(a_trace, buffer);
			if (l_tag_count > 0) {
				if (l_tag_count > 208) {
					sprintf(buffer, "%.208s...\n", a_tag_name);
				} else {
					sprintf(buffer, "%*.211s\n", 43 + l_tag_count, a_tag_name);
				}
				GE_append_to_exception_trace_buffer(a_trace, buffer);
			}
		} else {
			if (l_tag_count > 208) {
				sprintf(buffer, "%*.22s %.208s...\n", 20 + l_feature_count, a_feature_name, a_tag_name);
			} else {
				sprintf(buffer, "%*.22s %*.211s\n", 20 + l_feature_count, a_feature_name, (43 + l_tag_count) - (20 + l_feature_count + 1), a_tag_name);
			}
			GE_append_to_exception_trace_buffer(a_trace, buffer);
		}
	} else {
		if (l_feature_count > 22) {
			if (l_feature_count > 208) {
				sprintf(buffer, "%-19.19s %.208s...\n", a_class_name, a_feature_name);
			} else {
				sprintf(buffer, "%-19.19s %*.211s\n", a_class_name, l_feature_count, a_feature_name);
			}
			GE_append_to_exception_trace_buffer(a_trace, buffer);
			if (l_tag_count > 0) {
				if (l_tag_count > 208) {
					sprintf(buffer, "%.208s...\n", a_tag_name);
				} else {
					sprintf(buffer, "%*.211s\n", 43 + l_tag_count, a_tag_name);
				}
				GE_append_to_exception_trace_buffer(a_trace, buffer);
			}
		} else {
			if (l_tag_count > 208) {
				sprintf(buffer, "%-19.19s %-22.22s %-29.208s...\n", a_class_name, a_feature_name, a_tag_name);
			} else {
				sprintf(buffer, "%-19.19s %-22.22s %-29.211s\n", a_class_name, a_feature_name, a_tag_name);
			}
			GE_append_to_exception_trace_buffer(a_trace, buffer);
		}
	}
}

/*
 * Print second line of exception which contains `a_object_addr', `a_location',
 * `a_reason' and `a_effect' to `a_trace'.
 */
static void GE_print_object_location_reason_effect(GE_exception_trace_buffer* a_trace, void* a_object_addr, char* a_location, char* a_reason, char* a_effect)
{
	char buffer[256];
	int l_location_count, l_reason_count, l_effect_count;

		/* We are trying to provide the best format possible so that we can see all the useful
		 * information about the location and the reason of the crash.
		 * Note that the C format `%width[.precision]s' means that we will display `width'
		 * characters on the screen and only `precision' characters from `s' will be displayed,
		 * meaning that if `precision' is smaller than `width' the text is right aligned.
		 *
		 * Note: because `buffer' has a fixed size of 256, we need to use `precision' to avoid
		 * writting more than `buffer' can hold.
		 */

	l_location_count = (int)strlen(a_location);
	l_reason_count = (int)strlen(a_reason);
	l_effect_count = (int)strlen(a_effect);

		/* 1 - precision of 211 = 254 - 43, 43 being number of characters written
		 *     for `a_object_addr' and `a_location'.
		 * 2 - precision of 181 = 254 - 73, 73 being number of characters written
		 *     for `a_object_addr', `a_location' and `a_reason'.
		 * 3 - 22, number of characters written for `a_location'
		 * 4 - 29, number of characters written for `a_reason' */

		/* Check this for formatting using `printf':
		 * http://en.wikipedia.org/wiki/Printf#printf_format_placeholders */

		/* Print object address with 16 digits to be ready when pointers
		 * will be on 64 bits on all platform. */
	sprintf(buffer, "<%016" EIF_POINTER_DISPLAY ">  ", (unsigned long)(uintptr_t)a_object_addr);
	GE_append_to_exception_trace_buffer(a_trace, buffer);

	if (l_location_count > 22) {
		sprintf(buffer, "%*.254s\n", l_location_count, a_location);
		GE_append_to_exception_trace_buffer(a_trace, buffer);
		if (l_reason_count > 29) {
			sprintf(buffer, "%*.211s\n", 43 + l_reason_count, a_reason);
			GE_append_to_exception_trace_buffer(a_trace, buffer);
			sprintf(buffer, "%*.181s\n", 73 + l_effect_count, a_effect);
			GE_append_to_exception_trace_buffer(a_trace, buffer);
		} else {
			sprintf(buffer, "%*.29s %*.181s\n", 43 + l_reason_count, a_reason, (73 + l_effect_count) - (43 + l_reason_count + 1), a_effect);
			GE_append_to_exception_trace_buffer(a_trace, buffer);
		}
	} else {
		if (l_reason_count > 29) {
			sprintf(buffer,"%-22.22s %*.211s\n", a_location, l_reason_count, a_reason);
			GE_append_to_exception_trace_buffer(a_trace, buffer);
			sprintf(buffer, "%*.181s\n", 73 + l_effect_count, a_effect);
			GE_append_to_exception_trace_buffer(a_trace, buffer);
		} else {
			sprintf(buffer,"%-22.22s %-29.29s %*.181s\n", a_location, a_reason, l_effect_count, a_effect);
			GE_append_to_exception_trace_buffer(a_trace, buffer);
		}
	}
}

/*
 * Print to `a_trace' the exception trace corresponding to `a_context'.
 */
static void GE_print_exception_trace(GE_context* a_context, long a_code, const char* a_tag, GE_exception_trace_buffer* a_trace)
{
	char buffer[1024];
	GE_call* l_call;
	char* l_tag;
	char l_tag_buf[256];
	void* l_object = NULL;
	char* l_location = "";
	char* l_reason;
	char* l_effect;
	char* l_root_class;
	char* l_root_feature = "root's creation";
	const char* l_class_name;
	const char* l_feature_name;
	unsigned long l_thread_id = 0;
	char* l_thread_name = "";
	unsigned long l_region_id = 0;

#ifdef GE_USE_THREADS
	if (a_context == GE_main_context) {
			/* Main thread. */
		l_thread_name = "Root thread";
	} else {
		l_thread_id = (unsigned long)(uint64_t)a_context->thread->thread_id;
		l_thread_name = "Child thread";
	}
#endif	
#ifdef GE_USE_SCOOP
	l_region_id = (unsigned long)(uint64_t)a_context->region;
	sprintf(buffer, "%s\n", "******************************** SCOOP exception ******************************");
	GE_append_to_exception_trace_buffer(a_trace, buffer);
	sprintf(buffer,"%-10.10s 0x%016" EIF_POINTER_DISPLAY " %-12.12s 0x%" EIF_POINTER_DISPLAY " %s\n", "In region", l_region_id, "(region id)", l_thread_id, "(thread id)");
	GE_append_to_exception_trace_buffer(a_trace, buffer);
	sprintf(buffer, "%s\n", "*******************************************************************************");
	GE_append_to_exception_trace_buffer(a_trace, buffer);
#elif defined(GE_USE_THREADS)
	sprintf(buffer, "%s\n", "******************************** Thread exception *****************************");
	GE_append_to_exception_trace_buffer(a_trace, buffer);
	sprintf(buffer,"%-19.19s %-22.22s 0x%" EIF_POINTER_DISPLAY " %s\n", "In thread", l_thread_name, l_thread_id, "(thread id)");
	GE_append_to_exception_trace_buffer(a_trace, buffer);
	sprintf(buffer, "%s\n", "*******************************************************************************");
	GE_append_to_exception_trace_buffer(a_trace, buffer);
#endif
	sprintf(buffer, "%s\n", "-------------------------------------------------------------------------------");
	GE_append_to_exception_trace_buffer(a_trace, buffer);
	sprintf(buffer, "%-19.19s %-22.22s %-29.29s %-6.6s\n", "Class / Object", "Routine", "Nature of exception", "Effect");
	GE_append_to_exception_trace_buffer(a_trace, buffer);
	sprintf(buffer, "%s\n", "-------------------------------------------------------------------------------");
	GE_append_to_exception_trace_buffer(a_trace, buffer);
	if (GE_root_class_name) {
		l_root_class = GE_root_class_name;
	} else {
		l_root_class = "ROOT CLASS";
	}
	l_call = a_context->call;
	if (l_call && l_call->caller) {
		l_class_name = l_call->class_name;
		l_feature_name = l_call->feature_name;
#ifdef GE_USE_CURRENT_IN_EXCEPTION_TRACE
		l_object = l_call->object;
#endif
	} else {
		l_class_name = l_root_class;
		l_feature_name = l_root_feature;
	}
	if (a_tag) {
		sprintf(l_tag_buf, "%.254s:", a_tag);
		l_tag = l_tag_buf;
	} else {
		l_tag = "";
	}
	GE_print_class_feature_tag(a_trace, l_class_name, l_feature_name, l_tag);
	l_reason = GE_exception_tag(a_code);
	l_effect = "Fail";
	GE_print_object_location_reason_effect(a_trace, l_object, l_location, l_reason, l_effect);
	sprintf(buffer, "%s\n", "-------------------------------------------------------------------------------");
	GE_append_to_exception_trace_buffer(a_trace, buffer);
	while (l_call) {
		l_tag = "";
		GE_print_class_feature_tag(a_trace, l_call->class_name, l_call->feature_name, l_tag);
#ifdef GE_USE_CURRENT_IN_EXCEPTION_TRACE
		l_object = l_call->object;
#endif
		l_reason = "Routine failure.";
		if (l_call->caller) {
			l_effect = "Fail";
		} else {
			l_effect = "Exit";
			if (strcmp(l_call->feature_name, "separate call") == 0) {
				l_reason = "Dirty region.";
			}
		}
		GE_print_object_location_reason_effect(a_trace, l_object, l_location, l_reason, l_effect);
		sprintf(buffer, "%s\n", "-------------------------------------------------------------------------------");
		GE_append_to_exception_trace_buffer(a_trace, buffer);
		l_call = l_call->caller;
	}
}

/*
 * New execution context.
 */
GE_context* GE_new_context(int is_scoop_processor)
{
	GE_context* l_context;

#ifdef GE_USE_SCOOP
	if (is_scoop_processor) {
		/* Use `GE_calloc_atomic' because we want `l_context->region' to be
		 * collected if it is the only reference left. Other data are kept 
		 * alive thanks to a reference from the SCOOP region. */
		l_context = (GE_context*)GE_calloc_atomic(1, sizeof(GE_context));
	} else
#endif
	{
		/* Use `GE_calloc' because we want all data reachable from `l_context'
		 * to be kept alive while `l_context' is alive. */
		l_context = (GE_context*)GE_calloc(1, sizeof(GE_context));
	}
	l_context->exception_trace_enabled = '\1';
	l_context->pre_ecma_mapping_status = 1;
	return l_context;
}

/*
 * Execution context of main thread.
 * Should be used from the main thread only.
 */
GE_context* GE_main_context = 0;

/*
 * Execution context of current thread.
 */
GE_context* GE_current_context(void)
{
#ifdef GE_USE_THREADS
	return GE_thread_current_context();
#else
	return GE_main_context;
#endif
}

/*
 * Initialization of exception handling.
 */
void GE_init_exception(GE_context* a_context)
{
	EIF_REFERENCE l_exception_manager;

	GE_init_exception_trace_buffer(&a_context->exception_trace_buffer);
	GE_init_exception_trace_buffer(&a_context->last_exception_trace);
#ifdef GE_USE_SCOOP
	if (!a_context->thread->is_scoop_processor) {
#endif
		l_exception_manager = GE_new_exception_manager(a_context, EIF_TRUE);
		a_context->exception_manager = l_exception_manager;
		GE_init_exception_manager(a_context);
#ifdef GE_USE_SCOOP
	}
#endif
}

/*
 * Free memory allocated in `a_context' for exception handling.
 */
void GE_free_exception(GE_context* a_context)
{
	GE_free_exception_trace_buffer(&(a_context->exception_trace_buffer));
	GE_free_exception_trace_buffer(&(a_context->last_exception_trace));
	a_context->exception_manager = EIF_VOID;
}

/*
 * Pointer to function to create a new exception manager object
 * (of type ISE_EXCEPTION_MANAGER).
 */
EIF_REFERENCE (*GE_new_exception_manager)(GE_context*, EIF_BOOLEAN);

/*
 * Pointer to Eiffel routine ISE_EXCEPTION_MANAGER.init_exception_manager.
 */
void (*GE_init_exception_manager)(GE_context*);

/*
 * Pointer to Eiffel routine ISE_EXCEPTION_MANAGER.last_exception.
 */
EIF_REFERENCE (*GE_last_exception)(GE_context*);

/*
 * Pointer to Eiffel routine ISE_EXCEPTION_MANAGER.once_raise.
 */
void (*GE_once_raise)(GE_context*, EIF_REFERENCE);

/*
 * Pointer to Eiffel routine ISE_EXCEPTION_MANAGER.set_exception_data.
 */
void (*GE_set_exception_data)(GE_context*, EIF_INTEGER_32, EIF_BOOLEAN, EIF_INTEGER_32, EIF_INTEGER_32, EIF_REFERENCE, EIF_REFERENCE, EIF_REFERENCE, EIF_REFERENCE, EIF_REFERENCE, EIF_REFERENCE, EIF_INTEGER_32, EIF_BOOLEAN);

/*
 * Jump to execute the rescue of the last routine with a rescue
 * in the call stack.
 */
void GE_jump_to_last_rescue(GE_context* a_context)
{
	char* l_exception_trace;

	GE_rescue* r = a_context->last_rescue;
	if (r != 0) {
		a_context->last_rescue = r->previous;
		a_context->raising_exception = '\0';
		GE_longjmp(r->jb, 1);
	}
	if (a_context->exception_trace_enabled) {
		GE_show_console();
		if (GE_system_name) {
			fprintf(stderr, "\n%s: system execution failed.\n", GE_system_name);
		} else {
			fprintf(stderr, "\nsystem execution failed.\n");
		}
		l_exception_trace = a_context->last_exception_trace.area;
		if (l_exception_trace) {
			fprintf(stderr, "Following is the set of recorded exceptions:\n\n");
			fprintf(stderr, "%s", l_exception_trace);
		} else {
			fprintf(stderr, "No exception trace found.\n");
		}
	}
	exit(1);
}

/*
 * Call feature EXCEPTION_MANAGER.set_exception_data.
 */
static void GE_call_set_exception_data(GE_context* a_context, long code, int new_obj, int signal_code, int error_code, const char* tag, char* recipient, char* eclass, char* rf_routine, char* rf_class, char* trace, int line_number, int is_invariant_entry)
{
	EIF_REFERENCE l_tag;
	EIF_REFERENCE l_recipient;
	EIF_REFERENCE l_eclass;
	EIF_REFERENCE l_rf_routine;
	EIF_REFERENCE l_rf_class;
	EIF_REFERENCE l_trace;

	if (!a_context->exception_manager) {
		fprintf(stderr, "\nsystem execution failed while handling an exception before the initialing the exception manager.\n");
		exit(1);
	}
	if (tag) {
		l_tag = GE_str(tag);
	} else {
		l_tag = GE_ms("", 0);
	}
	if (recipient) {
		l_recipient = GE_str(recipient);
	} else {
		l_recipient = GE_ms("", 0);
	}
	if (eclass) {
		l_eclass = GE_str(eclass);
	} else {
		l_eclass = GE_ms("", 0);
	}
	if (rf_routine) {
		l_rf_routine = GE_str(rf_routine);
	} else {
		l_rf_routine = GE_ms("", 0);
	}
	if (rf_class) {
		l_rf_class = GE_str(rf_class);
	} else {
		l_rf_class = GE_ms("", 0);
	}
	if (trace && a_context->exception_trace_enabled) {
		l_trace = GE_str(trace);
	} else {
		l_trace = GE_ms("", 0);
	}
	GE_set_exception_data(a_context, (EIF_INTEGER_32) code, EIF_TEST(new_obj), (EIF_INTEGER_32) signal_code, (EIF_INTEGER_32) error_code, l_tag, l_recipient, l_eclass, l_rf_routine, l_rf_class, l_trace, (EIF_INTEGER_32) line_number, EIF_TEST(is_invariant_entry));
}

/*
 * Raise an exception.
 */
static void GE_raise_exception(long code, int new_obj, int signal_code, int error_code, const char* tag, char* recipient, char* eclass, char* rf_routine, char* rf_class, char* trace, int line_number, int is_invariant_entry)
{
	char* l_trace;
	GE_exception_trace_buffer* l_trace_buffer;
	GE_context* l_context;
	const char* l_tag;

	l_context = GE_current_context();
	if (!l_context) {
		GE_show_console();
		if (GE_system_name) {
			fprintf(stderr, "\n%s: system execution failed.\n", GE_system_name);
		} else {
			fprintf(stderr, "\nsystem execution failed.\n");
		}
		if (tag) {
			l_tag = tag;
		} else {
			l_tag = "";
		}
		fprintf(stderr, "%s: %s\n", GE_exception_tag(code), l_tag);
		fprintf(stderr, "Panic: No execution context found.\n");
		exit(1);
	} else if (l_context->raising_exception) {
		GE_show_console();
		if (GE_system_name) {
			fprintf(stderr, "\n%s: system execution failed.\n", GE_system_name);
		} else {
			fprintf(stderr, "\nsystem execution failed.\n");
		}
		if (tag) {
			l_tag = tag;
		} else {
			l_tag = "";
		}
		fprintf(stderr, "%s: %s\n", GE_exception_tag(code), l_tag);
		fprintf(stderr, "Panic: A crash occurred while processing exceptions.\n");
		l_trace = l_context->last_exception_trace.area;
		if (l_trace) {
			fprintf(stderr, "Following is the set of recorded exceptions\n");
			fprintf(stderr, "NB: The raised panic may have induced completely inconsistent information:\n\n");
			fprintf(stderr, "%s", l_trace);
		} else {
			fprintf(stderr, "No exception trace found.\n");
		}
		exit(1);
	} else {
		l_context->raising_exception = '\1';
		l_context->exception_code = code;
		l_context->exception_tag = tag;
		if (code != GE_EX_FAIL) {
			GE_wipe_out_exception_trace_buffer(&l_context->last_exception_trace);
		}
		l_trace = trace;
		if (l_context->exception_trace_enabled && !l_trace) {
			l_trace_buffer = &l_context->exception_trace_buffer;
			GE_wipe_out_exception_trace_buffer(l_trace_buffer);
			GE_print_exception_trace(l_context, code, tag, l_trace_buffer);
			l_trace = l_trace_buffer->area;
		}
		if ((code != GE_EX_FAIL) && l_trace) {
			GE_append_to_exception_trace_buffer(&l_context->last_exception_trace, l_trace);
		}
		GE_call_set_exception_data(l_context, code, new_obj, signal_code, error_code, tag, recipient, eclass, rf_routine, rf_class, l_trace, line_number, is_invariant_entry);
		l_context->raising_exception = '\0';
		l_context->exception_code = 0;
		l_context->exception_tag = (char*)0;
		GE_jump_to_last_rescue(l_context);
	}
}

/*
 * Raise an exception with code `a_code'.
 */
void GE_raise(long a_code)
{
	GE_raise_with_message(a_code, NULL);
}

/*
 * Raise an exception with code `a_code' and message `msg'.
 */
void GE_raise_with_message(long a_code, const char* msg)
{
	GE_raise_exception(a_code, 1, -1, -1, msg, NULL, NULL, NULL, NULL, NULL, -1, 0);
}

/*
 * Raise an exception from EXCEPTION_MANAGER.
 */
void GE_developer_raise(long a_code, EIF_POINTER a_meaning, EIF_POINTER a_message)
{
	GE_raise_exception(a_code, 0, -1, -1, (char*)a_message, NULL, NULL, NULL, NULL, NULL, -1, 0);
}

/*
 * Raise exception which was raised the first time a once routine
 * was executed when executing it again.
 */
void GE_raise_once_exception(GE_context* a_context, EIF_REFERENCE a_exception)
{
	GE_once_raise(a_context, a_exception);
}

/*
 * Raise exception which was raised when an old expression was evaluated.
 */
int GE_raise_old_exception(GE_context* a_context, EIF_REFERENCE a_exception)
{
	GE_raise(GE_EX_OLD);
	return 0;
}

/*
 * Exception, if any, which was last raised in `a_context'.
 */
EIF_REFERENCE GE_last_exception_raised(GE_context* a_context)
{
	return GE_last_exception(a_context);
}

/*
 * Set `in_assertion' to 'not b'.
 * Return the opposite of previous value.
 */
EIF_BOOLEAN GE_check_assert(EIF_BOOLEAN b)
{
	EIF_BOOLEAN l_old_value;
	GE_context* l_context;

	l_context = GE_current_context();
	l_old_value = EIF_TEST(!(l_context->in_assertion));
	l_context->in_assertion = (b?0:1);
	return l_old_value;
}

/*
 * Check whether the type id of `obj' is not in `type_ids'.
 * If it is, then raise a CAT-call exception. Don't do anything if `obj' is Void.
 * `nb' is the number of ids in `type_ids' and is expected to be >0.
 * `type_ids' is sorted in increasing order.
 * Return `obj'.
 */
EIF_REFERENCE GE_check_catcall(EIF_REFERENCE obj, EIF_TYPE_INDEX type_ids[], int nb)
{
	if (obj) {
		int type_id = obj->id;
		if (type_id < type_ids[0]) {
			/* Done */
		} else if (type_id > type_ids[nb-1]) {
			/* Done */
		} else {
			int i;
			for (i = 0; i < nb; i++) {
				if (type_id == type_ids[i]) {
					GE_show_console();
					fprintf(stderr, "CAT-call error!\n");
#ifdef EIF_DEBUG
					{
						volatile char c;
						fprintf(stderr, "Press Enter...\n");
						scanf("%c", &c);
					}
#endif
					GE_raise_with_message(GE_EX_PROG, "CAT-call error.");
					break;
				} else if (type_id < type_ids[i]) {
						/* type-ids are sorted in increasing order. */
					break;
				}
			}
		}
	}
	return (obj);
}

/*
 * Check whether `obj' is Void.
 * If it is, then raise a call-on-void-target exception.
 * Return `obj'.
 */
EIF_REFERENCE GE_check_void(EIF_REFERENCE obj)
{
	if (!obj) {
		GE_show_console();
		fprintf(stderr, "Call on Void target!\n");
		GE_raise(GE_EX_VOID);
	}
	return (obj);
}

#ifdef GE_DEBUG
/*
 * Check whether `obj' is Void.
 * If it is, then raise a call-on-void-target exception.
 * Include the id `i' in the message displayed in the console
 * to help debugging when `obj' is Void.
 * Return `obj'.
 */
EIF_REFERENCE GE_check_void2(EIF_REFERENCE obj, EIF_INTEGER i)
{
	if (!obj) {
		GE_show_console();
		fprintf(stderr, "Call on Void target! (%d)\n", i);
		GE_raise(GE_EX_VOID);
	}
	return (obj);
}
#endif

/*
 * Check whether `ptr' is a null pointer.
 * If it is, then raise a no-more-memory exception.
 * Return `ptr'.
 */
void* GE_check_null(void* ptr)
{
	if (!ptr) {
		GE_show_console();
		fprintf(stderr, "No more memory!\n");
		GE_raise(GE_EX_MEM);
	}
	return (ptr);
}

#ifdef EIF_WINDOWS
static LONG WINAPI GE_windows_exception_filter(LPEXCEPTION_POINTERS a_exception)
{
		/* In order to be able to catch exceptions that cannot be caught by
		 * just using signals on Windows, we need to set `windows_exception_filter'
		 * as an unhandled exception filter.
		 * See https://learn.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-exception_record.
		 */

	switch (a_exception->ExceptionRecord->ExceptionCode) {
		case STATUS_STACK_OVERFLOW:
			GE_raise_with_message(GE_EX_EXT, "Stack overflow");
			break;

		case STATUS_INTEGER_DIVIDE_BY_ZERO:
			GE_raise_with_message(GE_EX_FLOAT, "Integer division by Zero");
			break;

		case STATUS_ACCESS_VIOLATION:
			GE_raise_with_message(GE_EX_EXT, "Segmentation violation");
			break;

		default:
			GE_raise_with_message(GE_EX_EXT, "Unhandled exception");
			break;
	}

		/* Possible return values include:
		 * EXCEPTION_CONTINUE_EXECUTION : Returns to the statement that caused the exception
		 *    and re-executes that statement. (Causes an infinite loop of calling the exception
		 *    handler if the handler does not fix the problem)
		 * EXCEPTION_EXECUTE_HANDLER: Passes the exception to default handler, in our case
		 *    none, since `windows_exception_filter' is the default one now.
		 * EXCEPTION_CONTINUE_SEARCH: Continue to search up the stack for a handle
		 */
	return EXCEPTION_EXECUTE_HANDLER;
}

/*
 * Set default exception handler.
 */
void GE_set_windows_exception_filter(void)
{
	LPTOP_LEVEL_EXCEPTION_FILTER old_exception_handler = NULL;
	old_exception_handler = SetUnhandledExceptionFilter (GE_windows_exception_filter);
}
#endif

#ifdef __cplusplus
}
#endif

#endif
#ifdef __cplusplus
extern "C" {
#endif


#ifdef __cplusplus
}
#endif
/*
	description:

		"C functions used to implement once features"

	system: "Gobo Eiffel Compiler"
	copyright: "Copyright (c) 2017-2024, Eric Bezault and others"
	license: "MIT License"
*/

#ifndef GE_ONCE_C
#define GE_ONCE_C
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#ifndef GE_ONCE_H
#include "ge_once.h"
#endif
#ifndef GE_GC_H
#include "ge_gc.h"
#endif
#ifdef GE_USE_THREADS
#ifndef GE_THREAD_H
#include "ge_thread.h"
#endif
#endif

#ifdef __cplusplus
extern "C" {
#endif

/*
 * Variable to keep track of the call status
 * and results of once-per-process features.
 */
GE_onces* GE_process_onces;

/*
 * Initialize `GE_process_onces'.
 */
void GE_init_onces(
	uint32_t a_boolean_count,
	uint32_t a_character_8_count,
	uint32_t a_character_32_count,
	uint32_t a_integer_8_count,
	uint32_t a_integer_16_count,
	uint32_t a_integer_32_count,
	uint32_t a_integer_64_count,
	uint32_t a_natural_8_count,
	uint32_t a_natural_16_count,
	uint32_t a_natural_32_count,
	uint32_t a_natural_64_count,
	uint32_t a_pointer_count,
	uint32_t a_real_32_count,
	uint32_t a_real_64_count,
	uint32_t a_reference_count,
	uint32_t a_procedure_count)
{
	GE_process_onces = GE_new_onces(
		a_boolean_count,
		a_character_8_count,
		a_character_32_count,
		a_integer_8_count,
		a_integer_16_count,
		a_integer_32_count,
		a_integer_64_count,
		a_natural_8_count,
		a_natural_16_count,
		a_natural_32_count,
		a_natural_64_count,
		a_pointer_count,
		a_real_32_count,
		a_real_64_count,
		a_reference_count,
		a_procedure_count);
#ifdef GE_USE_THREADS
	GE_process_once_mutexes = GE_new_once_mutexes(
		a_boolean_count,
		a_character_8_count,
		a_character_32_count,
		a_integer_8_count,
		a_integer_16_count,
		a_integer_32_count,
		a_integer_64_count,
		a_natural_8_count,
		a_natural_16_count,
		a_natural_32_count,
		a_natural_64_count,
		a_pointer_count,
		a_real_32_count,
		a_real_64_count,
		a_reference_count,
		a_procedure_count);
#endif
}

/*
 * Create a new 'GE_onces' struct which can deal with the
 * numbers of once features passed as argument.
 */
GE_onces* GE_new_onces(
	uint32_t a_boolean_count,
	uint32_t a_character_8_count,
	uint32_t a_character_32_count,
	uint32_t a_integer_8_count,
	uint32_t a_integer_16_count,
	uint32_t a_integer_32_count,
	uint32_t a_integer_64_count,
	uint32_t a_natural_8_count,
	uint32_t a_natural_16_count,
	uint32_t a_natural_32_count,
	uint32_t a_natural_64_count,
	uint32_t a_pointer_count,
	uint32_t a_real_32_count,
	uint32_t a_real_64_count,
	uint32_t a_reference_count,
	uint32_t a_procedure_count)
{
	GE_onces* l_onces;

	l_onces = (GE_onces*)GE_calloc_uncollectable(1, sizeof(GE_onces));
	if (a_boolean_count > 0) {
		l_onces->boolean_value = (EIF_BOOLEAN*)GE_calloc_atomic(1, a_boolean_count * sizeof(EIF_BOOLEAN));
		l_onces->boolean_exception = (EIF_REFERENCE*)GE_calloc(1, a_boolean_count * sizeof(EIF_REFERENCE));
		l_onces->boolean_status = (unsigned char*)GE_calloc_atomic(1, a_boolean_count * sizeof(unsigned char));
		l_onces->boolean_count = a_boolean_count;
	}
	if (a_character_8_count > 0) {
		l_onces->character_8_value = (EIF_CHARACTER_8*)GE_calloc_atomic(1, a_character_8_count * sizeof(EIF_CHARACTER_8));
		l_onces->character_8_exception = (EIF_REFERENCE*)GE_calloc(1, a_character_8_count * sizeof(EIF_REFERENCE));
		l_onces->character_8_status = (unsigned char*)GE_calloc_atomic(1, a_character_8_count * sizeof(unsigned char));
		l_onces->character_8_count = a_character_8_count;
	}
	if (a_character_32_count > 0) {
		l_onces->character_32_value = (EIF_CHARACTER_32*)GE_calloc_atomic(1, a_character_32_count * sizeof(EIF_CHARACTER_32));
		l_onces->character_32_exception = (EIF_REFERENCE*)GE_calloc(1, a_character_32_count * sizeof(EIF_REFERENCE));
		l_onces->character_32_status = (unsigned char*)GE_calloc_atomic(1, a_character_32_count * sizeof(unsigned char));
		l_onces->character_32_count = a_character_32_count;
	}
	if (a_integer_8_count > 0) {
		l_onces->integer_8_value = (EIF_INTEGER_8*)GE_calloc_atomic(1, a_integer_8_count * sizeof(EIF_INTEGER_8));
		l_onces->integer_8_exception = (EIF_REFERENCE*)GE_calloc(1, a_integer_8_count * sizeof(EIF_REFERENCE));
		l_onces->integer_8_status = (unsigned char*)GE_calloc_atomic(1, a_integer_8_count * sizeof(unsigned char));
		l_onces->integer_8_count = a_integer_8_count;
	}
	if (a_integer_16_count > 0) {
		l_onces->integer_16_value = (EIF_INTEGER_16*)GE_calloc_atomic(1, a_integer_16_count * sizeof(EIF_INTEGER_16));
		l_onces->integer_16_exception = (EIF_REFERENCE*)GE_calloc(1, a_integer_16_count * sizeof(EIF_REFERENCE));
		l_onces->integer_16_status = (unsigned char*)GE_calloc_atomic(1, a_integer_16_count * sizeof(unsigned char));
		l_onces->integer_16_count = a_integer_16_count;
	}
	if (a_integer_32_count > 0) {
		l_onces->integer_32_value = (EIF_INTEGER_32*)GE_calloc_atomic(1, a_integer_32_count * sizeof(EIF_INTEGER_32));
		l_onces->integer_32_exception = (EIF_REFERENCE*)GE_calloc(1, a_integer_32_count * sizeof(EIF_REFERENCE));
		l_onces->integer_32_status = (unsigned char*)GE_calloc_atomic(1, a_integer_32_count * sizeof(unsigned char));
		l_onces->integer_32_count = a_integer_32_count;
	}
	if (a_integer_64_count > 0) {
		l_onces->integer_64_value = (EIF_INTEGER_64*)GE_calloc_atomic(1, a_integer_64_count * sizeof(EIF_INTEGER_64));
		l_onces->integer_64_exception = (EIF_REFERENCE*)GE_calloc(1, a_integer_64_count*  sizeof(EIF_REFERENCE));
		l_onces->integer_64_status = (unsigned char*)GE_calloc_atomic(1, a_integer_64_count * sizeof(unsigned char));
		l_onces->integer_64_count = a_integer_64_count;
	}
	if (a_natural_8_count > 0) {
		l_onces->natural_8_value = (EIF_NATURAL_8*)GE_calloc_atomic(1, a_natural_8_count * sizeof(EIF_NATURAL_8));
		l_onces->natural_8_exception = (EIF_REFERENCE*)GE_calloc(1, a_natural_8_count * sizeof(EIF_REFERENCE));
		l_onces->natural_8_status = (unsigned char*)GE_calloc_atomic(1, a_natural_8_count * sizeof(unsigned char));
		l_onces->natural_8_count = a_natural_8_count;
	}
	if (a_natural_16_count > 0) {
		l_onces->natural_16_value = (EIF_NATURAL_16*)GE_calloc_atomic(1, a_natural_16_count * sizeof(EIF_NATURAL_16));
		l_onces->natural_16_exception = (EIF_REFERENCE*)GE_calloc(1, a_natural_16_count * sizeof(EIF_REFERENCE));
		l_onces->natural_16_status = (unsigned char*)GE_calloc_atomic(1, a_natural_16_count * sizeof(unsigned char));
		l_onces->natural_16_count = a_natural_16_count;
	}
	if (a_natural_32_count > 0) {
		l_onces->natural_32_value = (EIF_NATURAL_32*)GE_calloc_atomic(1, a_natural_32_count * sizeof(EIF_NATURAL_32));
		l_onces->natural_32_exception = (EIF_REFERENCE*)GE_calloc(1, a_natural_32_count * sizeof(EIF_REFERENCE));
		l_onces->natural_32_status = (unsigned char*)GE_calloc_atomic(1, a_natural_32_count *  sizeof(unsigned char));
		l_onces->natural_32_count = a_natural_32_count;
	}
	if (a_natural_64_count > 0) {
		l_onces->natural_64_value = (EIF_NATURAL_64*)GE_calloc_atomic(1, a_natural_64_count * sizeof(EIF_NATURAL_64));
		l_onces->natural_64_exception = (EIF_REFERENCE*)GE_calloc(1, a_natural_64_count * sizeof(EIF_REFERENCE));
		l_onces->natural_64_status = (unsigned char*)GE_calloc_atomic(1, a_natural_64_count * sizeof(unsigned char));
		l_onces->natural_64_count = a_natural_64_count;
	}
	if (a_pointer_count > 0) {
		l_onces->pointer_value = (EIF_POINTER*)GE_calloc_atomic(1, a_pointer_count * sizeof(EIF_POINTER));
		l_onces->pointer_exception = (EIF_REFERENCE*)GE_calloc(1, a_pointer_count * sizeof(EIF_REFERENCE));
		l_onces->pointer_status = (unsigned char*)GE_calloc_atomic(1, a_pointer_count * sizeof(unsigned char));
		l_onces->pointer_count = a_pointer_count;
	}
	if (a_real_32_count > 0) {
		l_onces->real_32_value = (EIF_REAL_32*)GE_calloc_atomic(1, a_real_32_count * sizeof(EIF_REAL_32));
		l_onces->real_32_exception = (EIF_REFERENCE*)GE_calloc(1, a_real_32_count * sizeof(EIF_REFERENCE));
		l_onces->real_32_status = (unsigned char*)GE_calloc_atomic(1, a_real_32_count * sizeof(unsigned char));
		l_onces->real_32_count = a_real_32_count;
	}
	if (a_real_64_count > 0) {
		l_onces->real_64_value = (EIF_REAL_64*)GE_calloc_atomic(1, a_real_64_count * sizeof(EIF_REAL_64));
		l_onces->real_64_exception = (EIF_REFERENCE*)GE_calloc(1, a_real_64_count * sizeof(EIF_REFERENCE));
		l_onces->real_64_status = (unsigned char*)GE_calloc_atomic(1, a_real_64_count * sizeof(unsigned char));
		l_onces->real_64_count = a_real_64_count;
	}
	if (a_reference_count > 0) {
		l_onces->reference_value = (EIF_REFERENCE*)GE_calloc(1, a_reference_count * sizeof(EIF_REFERENCE));
		l_onces->reference_exception = (EIF_REFERENCE*)GE_calloc(1, a_reference_count * sizeof(EIF_REFERENCE));
		l_onces->reference_status = (unsigned char*)GE_calloc_atomic(1, a_reference_count * sizeof(unsigned char));
		l_onces->reference_count = a_reference_count;
	}
	if (a_procedure_count > 0) {
		l_onces->procedure_exception = (EIF_REFERENCE*)GE_calloc(1, a_procedure_count * sizeof(EIF_REFERENCE));
		l_onces->procedure_status = (unsigned char*)GE_calloc_atomic(1, a_procedure_count * sizeof(unsigned char));
		l_onces->procedure_count = a_procedure_count;
	}
	return l_onces;
}

/*
 * Free memory allocated by `a_onces'.
 */
void GE_free_onces(GE_onces* a_onces)
{
	if (a_onces->boolean_value) {
		GE_free(a_onces->boolean_value);
	}
	if (a_onces->boolean_exception) {
		GE_free(a_onces->boolean_exception);
	}
	if (a_onces->boolean_status) {
		GE_free(a_onces->boolean_status);
	}
	if (a_onces->character_8_value) {
		GE_free(a_onces->character_8_value);
	}
	if (a_onces->character_8_exception) {
		GE_free(a_onces->character_8_exception);
	}
	if (a_onces->character_8_status) {
		GE_free(a_onces->character_8_status);
	}
	if (a_onces->character_32_value) {
		GE_free(a_onces->character_32_value);
	}
	if (a_onces->character_32_exception) {
		GE_free(a_onces->character_32_exception);
	}
	if (a_onces->character_32_status) {
		GE_free(a_onces->character_32_status);
	}
	if (a_onces->integer_8_value) {
		GE_free(a_onces->integer_8_value);
	}
	if (a_onces->integer_8_exception) {
		GE_free(a_onces->integer_8_exception);
	}
	if (a_onces->integer_8_status) {
		GE_free(a_onces->integer_8_status);
	}
	if (a_onces->integer_16_value) {
		GE_free(a_onces->integer_16_value);
	}
	if (a_onces->integer_16_exception) {
		GE_free(a_onces->integer_16_exception);
	}
	if (a_onces->integer_16_status) {
		GE_free(a_onces->integer_16_status);
	}
	if (a_onces->integer_32_value) {
		GE_free(a_onces->integer_32_value);
	}
	if (a_onces->integer_32_exception) {
		GE_free(a_onces->integer_32_exception);
	}
	if (a_onces->integer_32_status) {
		GE_free(a_onces->integer_32_status);
	}
	if (a_onces->integer_64_value) {
		GE_free(a_onces->integer_64_value);
	}
	if (a_onces->integer_64_exception) {
		GE_free(a_onces->integer_64_exception);
	}
	if (a_onces->integer_64_status) {
		GE_free(a_onces->integer_64_status);
	}
	if (a_onces->natural_8_value) {
		GE_free(a_onces->natural_8_value);
	}
	if (a_onces->natural_8_exception) {
		GE_free(a_onces->natural_8_exception);
	}
	if (a_onces->natural_8_status) {
		GE_free(a_onces->natural_8_status);
	}
	if (a_onces->natural_16_value) {
		GE_free(a_onces->natural_16_value);
	}
	if (a_onces->natural_16_exception) {
		GE_free(a_onces->natural_16_exception);
	}
	if (a_onces->natural_16_status) {
		GE_free(a_onces->natural_16_status);
	}
	if (a_onces->natural_32_value) {
		GE_free(a_onces->natural_32_value);
	}
	if (a_onces->natural_32_exception) {
		GE_free(a_onces->natural_32_exception);
	}
	if (a_onces->natural_32_status) {
		GE_free(a_onces->natural_32_status);
	}
	if (a_onces->natural_64_value) {
		GE_free(a_onces->natural_64_value);
	}
	if (a_onces->natural_64_exception) {
		GE_free(a_onces->natural_64_exception);
	}
	if (a_onces->natural_64_status) {
		GE_free(a_onces->natural_64_status);
	}
	if (a_onces->pointer_value) {
		GE_free(a_onces->pointer_value);
	}
	if (a_onces->pointer_exception) {
		GE_free(a_onces->pointer_exception);
	}
	if (a_onces->pointer_status) {
		GE_free(a_onces->pointer_status);
	}
	if (a_onces->real_32_value) {
		GE_free(a_onces->real_32_value);
	}
	if (a_onces->real_32_exception) {
		GE_free(a_onces->real_32_exception);
	}
	if (a_onces->real_32_status) {
		GE_free(a_onces->real_32_status);
	}
	if (a_onces->real_64_value) {
		GE_free(a_onces->real_64_value);
	}
	if (a_onces->real_64_exception) {
		GE_free(a_onces->real_64_exception);
	}
	if (a_onces->real_64_status) {
		GE_free(a_onces->real_64_status);
	}
	if (a_onces->reference_value) {
		GE_free(a_onces->reference_value);
	}
	if (a_onces->reference_exception) {
		GE_free(a_onces->reference_exception);
	}
	if (a_onces->reference_status) {
		GE_free(a_onces->reference_status);
	}
	if (a_onces->procedure_exception) {
		GE_free(a_onces->procedure_exception);
	}
	if (a_onces->procedure_status) {
		GE_free(a_onces->procedure_status);
	}
	GE_free(a_onces);
}

#ifdef __cplusplus
}
#endif

#endif
#ifdef __cplusplus
extern "C" {
#endif


#ifdef __cplusplus
}
#endif
/*
	description:

		"C functions used to implement class IDENTIFIED"

	system: "Gobo Eiffel Compiler"
	copyright: "Copyright (c) 2007-2024, Eric Bezault and others"
	license: "MIT License"
*/

#ifndef GE_IDENTIFIED_C
#define GE_IDENTIFIED_C
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#ifndef GE_IDENTIFIED_H
#include "ge_identified.h"
#endif
#ifndef GE_GC_H
#include "ge_gc.h"
#endif

#ifdef __cplusplus
extern "C" {
#endif

/*
 * Weak pointers.
 */

/*
 * Weak pointer structure.
 */
typedef volatile struct {
	EIF_REFERENCE volatile object;
} GE_weak_pointer;

/*
 * Create a new weak pointer to `object'.
 */
static GE_weak_pointer* GE_new_weak_pointer(EIF_REFERENCE object)
{
	GE_weak_pointer* wp;

	if (object == 0) {
		return (GE_weak_pointer*)0;
	} else {
		wp = (GE_weak_pointer*)GE_malloc_atomic(sizeof(GE_weak_pointer));
		wp->object = object;
#ifdef GE_USE_BOEHM_GC
		GC_GENERAL_REGISTER_DISAPPEARING_LINK((void**)(&wp->object), GC_base((void*)object));
#endif
		return wp;
	}
}

/*
 * Direct access to the object held in the weak pointer.
 */
static EIF_REFERENCE GE_weak_pointer_object_without_lock(GE_weak_pointer* wp)
{
	if (wp == 0) {
		return (EIF_REFERENCE)0;
	} else {
		return (wp->object);
	}
}

/*
 * Access to the object held in the weak pointer.
 */
#ifdef GE_USE_BOEHM_GC
static EIF_REFERENCE GE_weak_pointer_object(GE_weak_pointer* wp)
{
	return (EIF_REFERENCE)GC_call_with_alloc_lock((GC_fn_type)GE_weak_pointer_object_without_lock, (void*)wp);
}
#else /* No GC */
#define GE_weak_pointer_object(wp) GE_weak_pointer_object_without_lock(wp)
#endif


/*
 * Identified data structures and functions.
 */

/*
 * Size of inner arrays in `GE_id_objects'.
 */
#define GE_ID_OBJECT_CHUNK_SIZE 512

/*
 * Number of slots to be added to the outer array of
 * `GE_id_objects' when resizing it.
 */
#define GE_ID_OBJECT_CAPACITY_INCREMENT 512

/*
 * Array of arrays of weak pointers. Each inner array has the same size
 * (GE_ID_OBJECT_CHUNK_SIZE). Given an id, the weak pointer associated
 * the object, if any, is at index (id % GE_ID_OBJECT_CHUNK_SIZE) in the
 * inner array located at index (id / GE_ID_OBJECT_CHUNK_SIZE) in the
 * outer array.
 */
static GE_weak_pointer*** GE_id_objects;

/*
 * Capacity of the outer array of `GE_id_objects'.
 */
static EIF_INTEGER_32 GE_id_objects_capacity;

/*
 * Last id associated with an object.
 */
static EIF_INTEGER_32 GE_last_object_id;

/*
 * Initialize data to keep track of object ids.
 */
void GE_init_identified(void)
{
	GE_id_objects = (GE_weak_pointer***)0;
	GE_id_objects_capacity = 0;
	GE_last_object_id = 0;
}

/*
 * Get a new id for `object', assuming it is NOT in the stack.
 */
EIF_INTEGER_32 GE_object_id(EIF_OBJECT object)
{
	GE_weak_pointer** id_object_chunk;
	EIF_INTEGER_32 i;
	EIF_INTEGER_32 l_old_capacity;

	GE_last_object_id++;
	i = GE_last_object_id / GE_ID_OBJECT_CHUNK_SIZE;
	if (i >= GE_id_objects_capacity) {
		l_old_capacity = GE_id_objects_capacity;
		GE_id_objects_capacity = GE_id_objects_capacity + GE_ID_OBJECT_CAPACITY_INCREMENT;
		if (GE_id_objects == 0) {
			GE_id_objects = GE_calloc_atomic(GE_id_objects_capacity, sizeof(GE_weak_pointer**));
		} else {
			GE_id_objects = GE_recalloc(GE_id_objects, l_old_capacity, GE_id_objects_capacity, sizeof(GE_weak_pointer**));
		}
	}
	id_object_chunk = GE_id_objects[i];
	if (id_object_chunk == 0) {
		id_object_chunk = GE_calloc_uncollectable(GE_ID_OBJECT_CHUNK_SIZE, sizeof(GE_weak_pointer*));
		GE_id_objects[i] = id_object_chunk;
	}
	i = GE_last_object_id % GE_ID_OBJECT_CHUNK_SIZE;
	id_object_chunk[i] = GE_new_weak_pointer(object);
	return GE_last_object_id;
}

/*
 * Return the object associated with `id'.
 */
EIF_REFERENCE GE_id_object(EIF_INTEGER_32 id)
{
	GE_weak_pointer** id_object_chunk;
	GE_weak_pointer* wp;
	EIF_REFERENCE object;
	EIF_INTEGER_32 i;

	i = id / GE_ID_OBJECT_CHUNK_SIZE;
	if (i >= GE_id_objects_capacity) {
		return (EIF_REFERENCE) 0;
	} else {
		id_object_chunk = GE_id_objects[i];
		if (id_object_chunk == 0) {
			return (EIF_REFERENCE)0;
		} else {
			i = id % GE_ID_OBJECT_CHUNK_SIZE;
			wp = id_object_chunk[i];
			if (wp == 0) {
				return (EIF_REFERENCE)0;
			} else {
				object = GE_weak_pointer_object(wp);
				if (object == 0) {
					id_object_chunk[i] = (GE_weak_pointer*)0;
#ifdef GE_USE_BOEHM_GC
					GC_unregister_disappearing_link((void**)(&wp->object));
#endif
					GE_free(wp);
					return (EIF_REFERENCE)0;
				} else {
					return object;
				}
			}
		}
	}
}

/*
 * Remove the object associated with `id' from the stack.
 */
void GE_object_id_free(EIF_INTEGER_32 id)
{
	GE_weak_pointer** id_object_chunk;
	GE_weak_pointer* wp;
	EIF_REFERENCE object;
	EIF_INTEGER_32 i;

	i = id / GE_ID_OBJECT_CHUNK_SIZE;
	if (i < GE_id_objects_capacity) {
		id_object_chunk = GE_id_objects[i];
		if (id_object_chunk != 0) {
			i = id % GE_ID_OBJECT_CHUNK_SIZE;
			wp = id_object_chunk[i];
			if (wp != 0) {
				object = GE_weak_pointer_object(wp);
				if (object != 0) {
#ifdef GE_USE_BOEHM_GC
					GC_unregister_disappearing_link((void**)(&wp->object));
#endif
				}
				id_object_chunk[i] = (GE_weak_pointer*)0;
				GE_free(wp);
			}
		}
	}
}

#ifdef __cplusplus
}
#endif

#endif
#ifdef __cplusplus
extern "C" {
#endif


#ifdef __cplusplus
}
#endif
/*
	description:

		"Part of ISE Eiffel runtime. Needed to compile the EiffelCOM library."

	system: "Gobo Eiffel Compiler"
	copyright: "Copyright (c) 2010-2018, Eric Bezault and others"
	license: "MIT License"
*/

#ifndef EIF_CECIL_C
#define EIF_CECIL_C
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#ifndef EIF_CECIL_H
#include "eif_cecil.h"
#endif
#ifndef GE_CONSOLE_H
#include "ge_console.h"
#endif

#ifdef __cplusplus
extern "C" {
#endif

EIF_PROCEDURE eif_procedure(char* rout, EIF_TYPE_ID cid)
{
	/* TODO */
	GE_show_console();
	fprintf(stderr, "'eif_procedure' in 'eif_cecil.c' not implemented\n");
	return (EIF_PROCEDURE)0;
}

EIF_INTEGER_FUNCTION eif_integer_function(char* rout, EIF_TYPE_ID cid)
{
	/* TODO */
	GE_show_console();
	fprintf(stderr, "'eif_integer_function' in 'eif_cecil.c' not implemented\n");
	return (EIF_INTEGER_FUNCTION)0;
}

EIF_REFERENCE_FUNCTION eif_reference_function(char* rout, EIF_TYPE_ID cid)
{
	/* TODO */
	GE_show_console();
	fprintf(stderr, "'eif_reference_function' in 'eif_cecil.c' not implemented\n");
	return (EIF_REFERENCE_FUNCTION)0;
}

EIF_POINTER_FUNCTION eif_pointer_function(char* rout, EIF_TYPE_ID cid)
{
	/* TODO */
	GE_show_console();
	fprintf(stderr, "'eif_pointer_function' in 'eif_cecil.c' not implemented\n");
	return (EIF_POINTER_FUNCTION)0;
}

EIF_BOOLEAN_FUNCTION eif_boolean_function(char* rout, EIF_TYPE_ID cid)
{
	/* TODO */
	GE_show_console();
	fprintf(stderr, "'eif_boolean_function' in 'eif_cecil.c' not implemented\n");
	return (EIF_BOOLEAN_FUNCTION)0;
}

EIF_REAL_32_FUNCTION eif_real_32_function(char* rout, EIF_TYPE_ID cid)
{
	/* TODO */
	GE_show_console();
	fprintf(stderr, "'eif_real_32_function' in 'eif_cecil.c' not implemented\n");
	return (EIF_REAL_32_FUNCTION)0;
}

EIF_REAL_64_FUNCTION eif_real_64_function(char* rout, EIF_TYPE_ID cid)
{
	/* TODO */
	GE_show_console();
	fprintf(stderr, "'eif_real_64_function' in 'eif_cecil.c' not implemented\n");
	return (EIF_REAL_64_FUNCTION)0;
}

EIF_CHARACTER_8_FUNCTION eif_character_8_function(char* rout, EIF_TYPE_ID cid)
{
	/* TODO */
	GE_show_console();
	fprintf(stderr, "'eif_character_8_function' in 'eif_cecil.c' not implemented\n");
	return (EIF_CHARACTER_8_FUNCTION)0;
}

EIF_OBJECT eif_create(EIF_TYPE_ID cid)
{
	/* TODO */
	GE_show_console();
	fprintf(stderr, "'eif_create' in 'eif_cecil.c' not implemented\n");
	return (EIF_OBJECT)0;
}

EIF_TYPE_ID eif_type_id(char* type_string)
{
	GE_show_console();
	fprintf(stderr, "'eif_type_id' in 'eif_cecil.c' not implemented\n");
	return EIF_NO_TYPE;
}

extern EIF_INTEGER eifaddr_offset(EIF_REFERENCE object, char *name, int * const ret)
{
	GE_show_console();
	fprintf(stderr, "'eifaddr_offset' in 'eif_cecil.c' not implemented\n");
	return 0;
}

EIF_TYPE_ID eiftype(EIF_OBJECT object)
{
		/* Obsolete. Use "eif_type_by_reference" instead.
		 * Return the Type id of the specified object.
		 */
	return (EIF_TYPE_ID)object->id;
}

EIF_TYPE_ID eif_type_by_reference(EIF_REFERENCE object)
{
		/* Return type id of the direct reference "object" */
	return (EIF_TYPE_ID)object->id;
}

EIF_TYPE_INDEX eif_gen_param_id(EIF_TYPE_INDEX dftype, uint32_t pos)
{
	GE_show_console();
	fprintf(stderr, "'eif_gen_param_id' in 'eif_cecil.c' not implemented\n");
	return 0;
}

#ifdef __cplusplus
}
#endif

#endif
#ifdef __cplusplus
extern "C" {
#endif


#ifdef __cplusplus
}
#endif
/*
	description:

		"Part of ISE Eiffel runtime. Needed to compile the EiffelCOM library."

	system: "Gobo Eiffel Compiler"
	copyright: "Copyright (c) 2010-2017, Eric Bezault and others"
	license: "MIT License"
*/

#ifndef EIF_PLUG_C
#define EIF_PLUG_C
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#ifndef EIF_PLUG_H
#include "eif_plug.h"
#endif

#ifdef __cplusplus
extern "C" {
#endif

int nstcall = 0;

#ifdef __cplusplus
}
#endif

#endif
#ifdef __cplusplus
extern "C" {
#endif


#ifdef __cplusplus
}
#endif
/*
	description:

		"C functions used to implement class EXCEPTIONS"

	system: "Gobo Eiffel Compiler"
	copyright: "Copyright (c) 2007-2018, Eric Bezault and others"
	license: "MIT License"
*/

#ifndef EIF_EXCEPT_C
#define EIF_EXCEPT_C
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#ifndef EIF_EXCEPT_H
#include "eif_except.h"
#endif
#ifndef GE_STRING_H
#include "ge_string.h"
#endif

#ifdef __cplusplus
extern "C" {
#endif

/*
 * Raise an Eiffel exception.
 */
void eraise(const char* name, long code)
{
	GE_raise_with_message(code, name);
}

/*
 * Raise an Eiffel exception of the given code with no associated tag.
 */
void xraise(int code)
{
	GE_raise((long)code);
}

/*
 * Raise an "Operating system error" exception.
 */
void esys(void)
{
	if (errno == 0) {
			/* External event */
		GE_raise(GE_EX_EXT);
	} else {
			/* Operating system error */
		GE_raise(GE_EX_SYS);
	}
}

/*
 * As a special case, an I/O error is raised when a system call which is I/O bound fails.
 */
void eise_io(const char* tag)
{
	GE_raise_with_message(GE_EX_ISE_IO, tag);
}

/*
 * Raise a "No more memory" exception.
 */
 void enomem(void) {
	GE_raise(GE_EX_OMEM);
 }

/*
 * Raise EiffelCOM exception.
 */
void com_eraise(const char* tag, long num)
{
	GE_raise_with_message(num, tag);
}

/*
 * Terminate execution with exit status `code',
 * without triggering an exception.
 */
void esdie(int code)
{
/* TODO: check that the Boehm GC triggers the 'dispose' routines. */
	exit(code);
}

/*
 * Exception tag associated with `code'.
 * This is a duplication from Eiffel classes, but still used for trace printing and in EiffelCom.
 */
EIF_REFERENCE eename(long code)
{
	return GE_str(GE_exception_tag(code));
}

/*
 * Is exception `ex' defined?
 * Used in EiffelCOM.
 */
char eedefined(long ex)
{
	return (char)((ex > 0 && ex <= GE_EX_NEX)? 1 : 0);
}

/*
 * Enable/diable printing of the exception trace.
 * Per thead information.
 */
void eetrace(char b)
{
	GE_context* context;

	context = GE_current_context();
	context->exception_trace_enabled = b;
}

/*
 * Is current execution during rescue?
 */
EIF_BOOLEAN eif_is_in_rescue(void)
{
	GE_context* context;

	context = GE_current_context();
	return (EIF_TEST(context->in_rescue > 0));
}

#ifdef EIF_WINDOWS
/*
 * Set default exception handler.
 */
void set_windows_exception_filter(void)
{
	GE_set_windows_exception_filter();
}
#endif

#ifdef __cplusplus
}
#endif

#endif
#ifdef __cplusplus
extern "C" {
#endif


#ifdef __cplusplus
}
#endif
/*
	description:

		"C functions used to implement class REAL"

	system: "Gobo Eiffel Compiler"
	copyright: "Copyright (c) 2013-2017, Eric Bezault and others"
	license: "MIT License"
*/

#ifndef GE_REAL_C
#define GE_REAL_C
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#ifndef GE_REAL_H
#include "ge_real.h"
#endif

#ifdef __cplusplus
extern "C" {
#endif

/*
 * Bit representation of `v'.
 */
EIF_NATURAL_32 GE_real_32_to_bits(volatile EIF_REAL_32 v)
{
	return *(EIF_NATURAL_32*)&v;
}

/*
 * Bit representation of `v'.
 */
EIF_NATURAL_64 GE_real_64_to_bits(volatile EIF_REAL_64 v)
{
	return *(EIF_NATURAL_64*)&v;
}

/*
 * Real value with `v' as bit representation.
 */
EIF_REAL_32 GE_real_32_from_bits(volatile EIF_NATURAL_32 v)
{
	return *(EIF_REAL_32*)&v;
}

/*
 * Real value with `v' as bit representation.
 */
EIF_REAL_64 GE_real_64_from_bits(volatile EIF_NATURAL_64 v)
{
	return *(EIF_REAL_64*)&v;
}

#ifdef __cplusplus
}
#endif

#endif
#ifdef __cplusplus
extern "C" {
#endif


#ifdef __cplusplus
}
#endif
/*
	description:

		"C functions used to implement class FILE"

	system: "Gobo Eiffel Compiler"
	copyright: "Copyright (c) 2006-2024, Eric Bezault and others"
	license: "MIT License"
*/

#ifndef EIF_FILE_C
#define EIF_FILE_C
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#ifndef EIF_FILE_H
#include "eif_file.h"
#endif
#ifndef EIF_EXCEPT_H
#include "eif_except.h"
#endif
#ifndef GE_STRING_H
#include "ge_string.h"
#endif
#ifndef GE_REAL_H
#include "ge_real.h"
#endif

/* HAS_CHOWN:
 *	This symbol, if defined, indicates that the chown routine is
 *	available.
 */
#ifndef EIF_WINDOWS
#define HAS_CHOWN
#endif

/* HAS_GETEUID:
 *	This symbol, if defined, indicates that the geteuid system call is
 *	available
 */
#ifndef EIF_WINDOWS
#define  HAS_GETEUID
#endif

/* HAS_GETGRGID:
 *	This symbol, if defined, indicates that the getgrgid system call is
 *	available
 */
#ifndef EIF_WINDOWS
#define  HAS_GETGRGID
#endif

/* HAS_GETGROUPS:
 *	This symbol, if defined, indicates that the getgroups() routine is
 *	available to get the list of process groups.  If unavailable, multiple
 *	groups are probably not supported.
 */
#ifndef EIF_WINDOWS
#define HAS_GETGROUPS
#define Groups_t gid_t	/* Type for 2nd arg to getgroups() */
#endif

/* HAS_GETPWUID:
 *	This symbol, if defined, indicates that the getpwuid system call is
 *	available
 */
#ifndef EIF_WINDOWS
#define  HAS_GETPWUID
#endif

/* HAS_LINK:
 *	This symbol, if defined, indicates that the link routine is
 *	available to create hard links.
 */
#ifndef EIF_WINDOWS
#define HAS_LINK
#endif

/* HAS_LSTAT:
 *	This symbol, if defined, indicates that the lstat routine is
 *	available to do file stats on symbolic links.
 */
#ifndef EIF_WINDOWS
#define HAS_LSTAT
#endif


#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#ifdef EIF_WINDOWS
#if defined(__BORLANDC__) && (__BORLANDC__ < 0x600) /* Borland before 6.0 */
#include <utime.h>
#else
#include <sys/utime.h>
#ifdef __LCC__
extern int utime(const char *, struct utimbuf *);
#include <sys/stat.h>
#endif
#endif
#include <io.h> /* for access, chmod */
#include <direct.h> /* for (ch|mk|rm)dir */
#include <share.h>  /* added for temporary file */
#include <fcntl.h>  /* added for temporary file */
#include <wchar.h>
#else
#include <utime.h>
#include <unistd.h>
#include <pwd.h>
#include <grp.h>
#endif

#ifndef NAME_MAX
#define NAME_MAX 10 /* Maximum length for user/group name */
#endif

#ifndef FILE_TYPE_MAX
#define FILE_TYPE_MAX 5		/* max size of fopen type string (like "a+b") */
#endif

#ifndef S_IRUSR
#define S_IRUSR 0000400
#endif
#ifndef S_IWUSR
#define S_IWUSR 0000200
#endif
#ifndef S_IXUSR
#define S_IXUSR 0000100
#endif
#ifndef S_IRGRP
#define S_IRGRP 0000040
#endif
#ifndef S_IWGRP
#define S_IWGRP 0000020
#endif
#ifndef S_IXGRP
#define S_IXGRP 0000010
#endif
#ifndef S_IROTH
#define S_IROTH 0000004
#endif
#ifndef S_IWOTH
#define S_IWOTH 0000002
#endif
#ifndef S_IXOTH
#define S_IXOTH 0000001
#endif
#ifndef S_IFDIR
#define S_IFDIR 0040000
#endif
#ifndef S_IFCHR
#define S_IFCHR 0020000
#endif
#ifdef __LCC__
#ifndef _S_IFCHR
#define _S_IFCHR S_IFCHR
#endif
#endif
#ifndef S_IFBLK
#define S_IFBLK 0060000
#endif
#ifndef S_IFREG
#define S_IFREG 0100000
#endif
#ifndef S_IFIFO
#define S_IFIFO 0010000
#endif
#ifndef S_IFLNK
#define S_IFLNK 0120000
#endif
#ifndef S_IFSOCK
#define S_IFSOCK 0140000
#endif
#ifndef S_IFMT
#define S_IFMT 0170000
#endif
#ifndef S_ISREG
#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
#endif
#ifndef S_ISDIR
#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
#endif
#ifndef S_ISCHR
#define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
#endif
#ifndef S_ISBLK
#define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
#endif
#ifndef S_ISLNK
#define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
#endif
#ifndef S_ISFIFO
#define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
#endif
#ifndef S_ISSOCK
#define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK)
#endif

/* The following access constants seems to be universally accepeted. And
 * anyway, it's only after BSD 4.1 that the symbolic constants appeared.
 */
#ifndef R_OK
#define R_OK 4
#define W_OK 2
#define X_OK 1
#define F_OK 0
#endif

#define FS_START	0			/* Beginning of file for `fseek' */
#define FS_CUR		1			/* Current position for `fseek' */
#define FS_END		2			/* End of file for `fseek' */
/* Keep only permission mode */
#ifndef ST_MODE
#define ST_MODE 0x0fff
#endif

#ifdef __cplusplus
extern "C" {
#endif

#ifdef EIF_WINDOWS
#	ifdef __LCC__
#		define rt_stat		_wstat
#		define rt_fstat		fstat
#	elif defined(EIF_64_BITS)
#		define rt_stat		_wstat64
#		define rt_fstat		_fstat64
#	else
#		define rt_stat		_wstat64i32
#		define rt_fstat		_fstat64i32
#	endif
#	define rt_access		_waccess
#else
#	define rt_stat			stat
#	define rt_lstat			lstat
#	define rt_fstat			fstat
#	define rt_access		access
#endif

static int rt_mkdir(EIF_FILENAME path, int mode)
{
#ifdef EIF_WINDOWS
	return _wmkdir(path);
#else
	return mkdir(path, mode);
#endif
}

static int rt_rename(EIF_FILENAME from, EIF_FILENAME to)
{
#ifdef EIF_WINDOWS
	return _wrename(from, to);
#else
	return rename(from, to);
#endif
}

static int rt_rmdir(EIF_FILENAME path)
{
#ifdef EIF_WINDOWS
	return _wrmdir(path);
#else
	return rmdir(path);
#endif
}

static int rt_unlink(EIF_FILENAME path)
{
#ifdef EIF_WINDOWS
	return _wunlink(path);
#else
	return unlink(path);
#endif
}

static FILE* rt_file_fopen(EIF_FILENAME name, EIF_FILENAME type)
{
#ifdef EIF_WINDOWS
	return _wfopen(name, type);
#else
	return fopen(name, type);
#endif
}

static FILE* rt_file_fdopen(int fd, EIF_FILENAME type)
{
#ifdef EIF_WINDOWS
	return _wfdopen(fd, type);
#else
	return fdopen(fd, type);
#endif
}

static FILE* rt_file_freopen(EIF_FILENAME name, EIF_FILENAME type, FILE* stream)
{
#ifdef EIF_WINDOWS
	return _wfreopen(name, type, stream);
#else
	return freopen(name, type, stream);
#endif
}

static int rt_utime(EIF_FILENAME path, struct utimbuf* times)
{
#ifdef EIF_WINDOWS
	return _wutime(path, (struct _utimbuf*)times);
#else
	return utime(path, times);
#endif
}

/*
 * Swallow next character if it is a new line.
 */
static void rt_swallow_nl(FILE* f)
{
		/* getc() cannot be used as it doesn't set the EOF flag */

	if (f != stdin) {
		if (fscanf(f, "\n") == EOF && ferror(f)) {
			eise_io("FILE: error during reading the end of the file,");
		}
	} else {
		int c;

		errno = 0;
		c = getc(f);
		if (c == EOF && ferror(f))
			eise_io("FILE: error during reading the end of the file.");

		if (c != '\n' && EOF == ungetc(c, f))
			eise_io("FILE: End of file.");
	}
}

static void rt_file_stat(EIF_FILENAME path, rt_stat_buf* buf)
{
		/* To preserve compatibility we always follow symbolic links and raise an exception upon failure. */
	if (eif_file_stat(path, buf, 1) == -1) {
		esys();
	}
}

/*
 * Set `file_type', given `how' the file is being opened and a `mode' create a platform specific character
 * string (UTF-16 encoding on Windows and a byte sequence otherwise) that can be used by
 * the underlying OS system call to open the mode in the proper mode (e.g. open append,
 * read-write mode, ....).
 */
static void rt_file_set_open_mode(EIF_NATIVE_CHAR file_type[FILE_TYPE_MAX], int how, char mode)
{
	file_type[4] = '\0';
	file_type[3] = '\0';
	file_type[2] = '\0';
	if (how >= 10) how -= 10;
	switch (how) {
		case 0:
		case 3: file_type[0] = 'r'; break;
		case 1:
		case 4: file_type[0] = 'w'; break;
		case 2:
		case 5: file_type[0] = 'a'; break;
		default: file_type[0] = 'r'; break;
	}
	file_type[1] = mode;
	switch (how) {
		case 3:
		case 4:
		case 5:
			if (mode == '\0') {
				file_type[1] = '+';
			} else {
				file_type[2] = '+';
			}
	}
#ifdef EIF_WINDOWS
	/* We make sure that files created in Eiffel are not inheritable
	 * by default as otherwise it makes things too complicated for the
	 * end user when spawing child processes. */
	if (file_type[1] == '\0') {
		file_type[1] = 'N';
	} else if (file_type[2] == '\0') {
		file_type[2] = 'N';
	} else {
		file_type[3] = 'N';
	}
#endif
}

/*
 * Create directory `dirname'.
 */
void eif_file_mkdir(EIF_FILENAME dirname)
{
	errno = 0;
	if (rt_mkdir(dirname, 0777) == -1) {
		esys(); /* Raise exception */
	}
}

/*
 * Rename file `from' into `to'.
 */
void eif_file_rename(EIF_FILENAME from, EIF_FILENAME to)
{
	for (;;) {
#ifdef EIF_WINDOWS
		if (eif_file_exists(to)) {
				/* To have the same behavior as Unix, we need to remove the destination file if it exists.
				 * Of course we can do this only if `from' and `to' do not represent the same file.
				 * To check this, we use `CreateFile' to open both file, and then using the information
				 * returned by `GetFileInformationByHandle' we can check whether or not they are indeed
				 * the same. */
			BY_HANDLE_FILE_INFORMATION l_to_info, l_from_info;
			HANDLE l_from_file = CreateFileW(from, GENERIC_READ, FILE_SHARE_READ, NULL,
				OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
			HANDLE l_to_file = CreateFileW(to, GENERIC_READ, FILE_SHARE_READ, NULL,
					OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

			if ((l_from_file == INVALID_HANDLE_VALUE) || (l_to_file == INVALID_HANDLE_VALUE)) {
					/* We do not need the handles anymore, simply close them. Since Microsoft
					 * API accepts INVALID_HANDLE_VALUE we don't check the validity of arguments. */
				CloseHandle(l_from_file);
				CloseHandle(l_to_file);

					/* For some reasons we cannot open the file. This should not happen, maybe the OS has
					 * removed `from' or `to'. In that case, we simply try to remove destination as we were
					 * doing in former revision of `file_rename'. */
				_wremove(to);
			} else {
				BOOL success = GetFileInformationByHandle(l_from_file, &l_from_info);
				if (success) {
					success = GetFileInformationByHandle(l_to_file, &l_to_info);
						/* We do not need the handles anymore, simply close them. */
					CloseHandle(l_from_file);
					CloseHandle(l_to_file);
					if (success) {
							/* Check that `from' and `to' do not represent the same file. */
						if
							((l_from_info.dwVolumeSerialNumber != l_to_info.dwVolumeSerialNumber) ||
							(l_from_info.nFileIndexLow != l_to_info.nFileIndexLow) ||
							(l_from_info.nFileIndexHigh != l_to_info.nFileIndexHigh))
						{
							_wremove(to);
						} else {
								/* Files are identical, nothing to be done apart from */
							break;
						}
					} else {
							/* An error occurred while retrieving the information about `from' and `to'. Like
							 * for the case where `l_from_file' and `l_to_file' are invalid, we try to remove
							 * the file. */
						_wremove(to);
					}
				} else {
						/* We do not need the handles anymore, simply close them. */
					CloseHandle(l_from_file);
					CloseHandle(l_to_file);
						/* An error occurred while retrieving the information about `from' and `to'. Like
						 * for the case where `l_from_file' and `l_to_file' are invalid, we try to remove
						 * the file. */
					_wremove(to);
				}
			}
		}
#endif
		errno = 0;
		if (rt_rename(from, to) == -1) {
			esys(); /* Raise exception */
		}
		break;
	}
}

/*
 * Link file `from' into `to'.
 */
void eif_file_link(EIF_FILENAME from, EIF_FILENAME to)
{
#ifdef HAS_LINK
	errno = 0;
	if (link(from, to) == -1) {
		esys(); /* Raise exception */
	}
#endif
}

/*
 * Delete file or directory `name'.
 */
void eif_file_unlink(EIF_FILENAME name)
{
	rt_stat_buf buf;				/* File statistics */
	int status;						/* Status from system call */

	status = eif_file_stat(name, &buf, 0);				/* Side effect: ensure file exists */
	if (status == -1) {				/* An error occurred */
		esys();
	} else {
		for (;;) {
			errno = 0;						/* Reset error condition */
			if (S_ISDIR(buf.st_mode))		/* Directory */
				status = rt_rmdir(name);		/* Remove only if empty */
			else
				status = rt_unlink(name);		/* Not a directory */
			if (status == -1) {				/* An error occurred */
				if (errno == EINTR)			/* Interrupted by signal */
					continue;				/* Re-issue system call */
				else
					esys();					/* Raise exception */
			}
			break;
		}
	}
}

/*
 * Open file `name' with the corresponding type `how'.
 */
EIF_POINTER eif_file_open(EIF_FILENAME name, int how)
{
	FILE* fp;
	EIF_NATIVE_CHAR l_mode[FILE_TYPE_MAX];
	errno = 0;
#if defined EIF_WINDOWS
	rt_file_set_open_mode(l_mode, how, (how < 10 ? 't' : 'b'));
#else
	rt_file_set_open_mode(l_mode, how, '\0');
#endif
	fp = (FILE*)rt_file_fopen(name, l_mode);
	if (fp == (FILE*)0) {
		esys(); /* Open failed, raise exception */
	}
	return (EIF_POINTER)fp;
}

/*
 * Open file `fd' with the corresponding type `how'.
 */
EIF_POINTER eif_file_dopen(int fd, int how)
{
	FILE* fp;
	EIF_NATIVE_CHAR l_mode[FILE_TYPE_MAX];
	errno = 0;
#ifdef EIF_WINDOWS
	rt_file_set_open_mode(l_mode, how, (how < 10 ? 't' : 'b'));
#else
	rt_file_set_open_mode(l_mode, how, '\0');
#endif
	fp = (FILE*)rt_file_fdopen(fd, l_mode);
	if (fp == (FILE*)0) {
		esys(); /* Open failed, raise exception */
	}
	return (EIF_POINTER)fp;
}

/*
 * Reopen file `name' with the corresponding type `how' and substitute that
 * to the old stream described by `old'. This is useful to redirect 'stdout'
 * to another place, for instance.
 */
EIF_POINTER eif_file_reopen(EIF_FILENAME name, int how, FILE *old)
{
	FILE* fp;
	EIF_NATIVE_CHAR l_mode[FILE_TYPE_MAX];
	errno = 0;
#ifdef EIF_WINDOWS
	rt_file_set_open_mode(l_mode, how, (how < 10 ? 't' : 'b'));
#else
	rt_file_set_open_mode(l_mode, how, '\0');
#endif
	fp = (FILE*)rt_file_freopen(name, l_mode, old);
	if (fp == (FILE*)0) {
		esys(); /* Open failed, raise exception */
	}
	return (EIF_POINTER)fp;
}

/*
 * Close the file.
 */
void eif_file_close(FILE* fp)
{
	errno = 0;
	if (fclose(fp) != 0) {
		esys(); /* Close failed, raise exception */
	}
}

/*
 * Flush data held in stdio buffer.
 */
void eif_file_flush(FILE* fp)
{
	errno = 0;
	if (fflush(fp) != 0) {
	    esys(); /* Flush failed, raise exception */
	}
#ifdef EIF_WINDOWS
		/* On Windows, it does not write directly to disk, so we have to force it. See KB66052:
		 * http://support.microsoft.com/kb/66052
		 * We ignore bad file descriptor case, as it is most likely when calling it on one of the standard
		 * input/outputs. */
#ifdef __LCC__
extern int _commit(int);
#endif
	if ((0 != _commit(fileno(fp))) && (errno != EBADF)) {
		esys();
	}
#endif
}

/*
 * Return the associated file descriptor.
 */
EIF_INTEGER eif_file_fd(FILE* f)
{
	int res;
	if (!f) {
		res = 0;
		eraise("invalid file pointer", EN_EXT);
	} else {
		res = fileno(f);
		if (res == -1) {
			eraise("error occurred", EN_EXT);
		}
	}
	return (EIF_INTEGER)res;
}

/*
 * Get a character from `f'.
 */
EIF_CHARACTER_8 eif_file_gc(FILE* f)
{
	int c;
	errno = 0;
	c = getc(f);
	if (c == EOF && ferror(f)) {
		eise_io("FILE: unable to read CHARACTER value.");
	}
	return (EIF_CHARACTER_8)c;
}

/*
 * Get a string from `f' and fill it into `s' (at most `bound' characters),
 * with `start' being the amount of bytes already stored within s. This
 * means we really have to read (bound - start) characters.
 */
EIF_INTEGER eif_file_gs(FILE* f, char* s, EIF_INTEGER bound, EIF_INTEGER start)
{
	EIF_INTEGER amount;
	int c = '\0';
	EIF_INTEGER read;

	amount = bound - start;
	s += start;
	errno = 0;
	read = 0;
	while (amount-- > 0) {
		if ((c = getc(f)) == '\n' || c == EOF)
			break;
		*s++ = c;
		read++;
	}
	if (c == EOF && ferror(f)) {
			/* An I/O error occurred */
			/* Raise exception */
		eise_io("FILE: unable to read current line.");
	}
	if (c == EOF || c == '\n') {
#ifdef EIF_WINDOWS
		if ((read > 0) && (*(s-1) == '\r')) {
			return read - 1;
		}
#endif
		return read;
	}
	if (amount == -1)
		return (read + 1);
	return bound - start + 1;
}

/*
 * Read min (bound, remaining bytes in file) characters into `s' and
 * return the number of characters read.
 */
EIF_INTEGER eif_file_gss(FILE* f, char* s, EIF_INTEGER bound)
{
	size_t amount = fread(s, sizeof(char), (size_t)bound, f);

	if (ferror(f)) {	/* An I/O error occurred */
		eise_io("FILE: unable to read stream.");					/* Raise exception */
	}

	return (EIF_INTEGER)amount;	/* Number of characters read */
}

/*
 * Get a word from `f' and fill it into `s' (at most `bound' characters),
 * with `start' being the amount of bytes already stored within s. This
 * means we really have to read (bound - start) characters. Any leading
 * spaces are skipped.
 */
EIF_INTEGER eif_file_gw(FILE* f, char* s, EIF_INTEGER bound, EIF_INTEGER start)
{
	EIF_INTEGER amount;	/* Amount of bytes to be read */
	int c = 0;			/* Last char read */

	amount = bound - start;		/* Characters to be read */
	s += start;					/* Where read characters are written */
	errno = 0;					/* No error, a priori */

	if (start == 0)	{			/* First call */
		while ((c = getc(f)) != EOF)
			if (!isspace(c))
				break;
		if (c == EOF && ferror(f))	/* An I/O error occurred */
			eise_io("FILE: unable to read word.");					/* Raise exception */
		if (c == EOF)
			return (EIF_INTEGER)0;				/* Reached EOF before word */
		else if (EOF == ungetc(c, f))
			eise_io("FILE: unable to read word.");
	}

	while (amount-- > 0) {
		c = getc(f);
		if (c == EOF)
			break;
		if (isspace(c)) {
			if (EOF == ungetc(c, f))
				eise_io("FILE: unable to read word.");
			break;
		}
		*s++ = (char)c;
	}

	if (c == EOF && ferror(f))	/* An I/O error occurred */
		eise_io("FILE: unable to read word.");					/* Raise exception */

	/* If we managed to get the whole string, return the number of characters
	 * read. Otherwise, return (bound - start + 1) to indicate an error
	 * condition.
	 */

	if (c == EOF || isspace(c))
		return bound - start - amount - 1;	/* Number of characters read */

	return bound - start + 1;			/* Error condition */
}

/*
 * Look ahead one character. If EOF, return 0.
 */
EIF_CHARACTER_8 eif_file_lh(FILE* f)
{
	int c;

	errno = 0;
	c = getc(f);
	if (c == EOF && ferror(f))
		eise_io("FILE: error when reading a character ahead.");

	if (c != EOF && EOF == ungetc(c, f))
		eise_io("FILE: error when reading a character ahead.");

	return (EIF_CHARACTER_8)(c == EOF ? (char)0 : (char)c);
}

/*
 * Size of file `fp'.
 */
EIF_INTEGER eif_file_size(FILE* fp)
{
	rt_stat_buf buf;

	errno = 0;
	if (fflush(fp) != 0) {
		esys();
	}
	if (rt_fstat(fileno(fp), &buf) == -1)
		esys();		/* An error occurred: raise exception */
		/* FIXME: This code should be upgraded to use 64-bit */
	return (EIF_INTEGER)buf.st_size;
}

/*
 * Read upto next input line.
 */
void eif_file_tnil(FILE* f)
{
	int c;

	errno = 0;
	while ((c = getc(f)) != '\n' && c != EOF)
		;
	if (c == EOF && ferror(f))
		eise_io("FILE: error during reading the end of the file.");
}

/*
 * Current position within file.
 */
EIF_INTEGER eif_file_tell(FILE* f)
{
	long res;

	if (f == (FILE*)0) {
		eraise("invalid file pointer", EN_EXT);
	}

	res = ftell(f);
	if (res == -1) {
		eraise("error occurred", EN_EXT);
	}
	return (EIF_INTEGER)res;
}

/*
 * Touch file `name' by setting both access and modification time to the
 * current time stamp. This external function exists only because there
 * is no way within UNIX_FILE to get the current time stamp. Otherwise,
 * we could simply call file_utime.
 */
void eif_file_touch(EIF_FILENAME name)
{
	eif_file_utime(name, time((time_t*) 0), 2);
}

/*
 * Modify the modification and/or the access time stored in the file's
 * inode. The 'how' parameter tells which attributes should be set.
 */
void eif_file_utime(EIF_FILENAME name, time_t stamp, int how)
{
	struct utimbuf tp;	/* Time array */
	rt_stat_buf buf;	/* File statistics */
	int status;			/* System call status */

	if (how < 2) {				/* Need to fetch time from inode */
		rt_file_stat(name, &buf);
		switch (how) {
		case 0:					/* Change only access time */
			tp.actime = stamp;
			tp.modtime = buf.st_mtime;
			break;
		case 1:					/* Change only modification time */
			tp.actime = buf.st_atime;
			tp.modtime = stamp;
			break;
		}
	} else
		tp.actime = tp.modtime = stamp;	/* Change both access and modification times */
	errno = 0;

	if (rt_utime(name, &tp) == -1) {
			/* Raise exception */
		esys();
	}
}

/*
 * This is an encapsulation of the stat() system call. The routine either
 * succeeds and returns or fails and raises the appropriate exception.
 */
int eif_file_stat(EIF_FILENAME path, rt_stat_buf* buf, int follow)
{
	int status;			/* System call status */

	for (;;) {
		errno = 0;						/* Reset error condition */
#ifdef HAS_LSTAT
		status = rt_lstat(path, buf);
		if ((status == 0) && (follow) && (S_ISLNK(buf->st_mode))) {
				/* We found a file which is a symbolic link and we are asked to
				 * follow the link to fetch properties on the link location.
				 * We call `rt_stat' to make sure the link is valid. It is going to
				 * slow down current call by stating twice the info, but this
				 * case is quite rare and there is a benefit in using `lstat'
				 * over `rt_stat' the first time as more than 90% of the files
				 * we stat are not symlink. */
			status = rt_stat(path, buf);
		}
#else
		status = rt_stat(path, buf);		/* Get file statistics */
#endif
		if ((status == -1) && (errno == EINTR)) {
				/* Call was interrupted by a signal we re-issue it. */
			continue;
		}
		break;
	}
	return status;
}

/*
 * Change permissions of file `name', using an interface like chmod(1).
 * The flag is true if permissions are to be added, 0 to remove them.
 */
void eif_file_perm(EIF_FILENAME name, char* who, char* what, int flag)
{
	int fmode;					/* File mode to be altered */
	rt_stat_buf buf;			/* File statistics */

		/* We need to follow links since `chmod' does follow them to change the permissions. */
	if (eif_file_stat(name, &buf, 1)) {
		esys();
	} else {
		fmode = (int)buf.st_mode;	/* Fetch current file mode */

		switch (*who) {
		case 'u':
			while (*what)
				switch (*what++) {
#ifdef EIF_WINDOWS
				case 's': break;
				case 'r': break;
				case 'w': break;
				case 'x': break;
#else
				case 's':
					if (flag) fmode |= S_ISUID; else fmode &= ~S_ISUID;
					break;
				case 'r':
					if (flag) fmode |= S_IRUSR; else fmode &= ~S_IRUSR;
					break;
				case 'w':
					if (flag) fmode |= S_IWUSR; else fmode &= ~S_IWUSR;
					break;
				case 'x':
					if (flag) fmode |= S_IXUSR; else fmode &= ~S_IXUSR;
					break;
#endif
				default:
					eraise("invalid user permission", EN_EXT);
				}
			break;
		case 'g':
			while (*what)
				switch (*what++) {
				case 's':
#ifdef S_ISGID
					if (flag) fmode |= S_ISGID; else fmode &= ~S_ISGID;
#endif
					break;
				case 'r':
#ifdef S_IRGRP
					if (flag) fmode |= S_IRGRP; else fmode &= ~S_IRGRP;
#endif
					break;
				case 'w':
#ifdef S_IWGRP
					if (flag) fmode |= S_IWGRP; else fmode &= ~S_IWGRP;
#endif
					break;
				case 'x':
#ifdef S_IXGRP
					if (flag) fmode |= S_IXGRP; else fmode &= ~S_IXGRP;
#endif
					break;
				default:
					eraise("invalid group permission", EN_EXT);
				}
			break;
		case 'o':
			while (*what)
				switch (*what++) {
				case 't':
#ifdef S_ISVTX
					if (flag) fmode |= S_ISVTX; else fmode &= ~S_ISVTX;
#endif
					break;
				case 'r':
#ifdef S_IROTH
					if (flag) fmode |= S_IROTH; else fmode &= ~S_IROTH;
#endif
					break;
				case 'w':
#ifdef S_IWOTH
					if (flag) fmode |= S_IWOTH; else fmode &= ~S_IWOTH;
#endif
					break;
				case 'x':
#ifdef S_IXOTH
					if (flag) fmode |= S_IXOTH; else fmode &= ~S_IXOTH;
#endif
					break;
				default:
					eraise("invalid other permission", EN_EXT);
				}
			break;
		default:
			eraise("invalid permission target", EN_EXT);
		}
		eif_file_chmod(name, fmode);
	}
}

/*
 * Change permission mode on file `path'.
 */
void eif_file_chmod(EIF_FILENAME path, int mode)
{
	errno = 0;
#ifdef EIF_WINDOWS
	if (_wchmod(path, mode) == -1) {
#else
	if (chmod(path, mode) == -1) {
#endif
		esys();
	}
}

/*
 * Change the owner of the file to `uid'.
 */
void eif_file_chown(EIF_FILENAME name, int uid)
{
#ifdef HAS_CHOWN
	int gid;
	rt_stat_buf buf;

	rt_file_stat(name, &buf);
	gid = buf.st_gid;
	errno = 0;
	if (chown(name, uid, gid) == -1) {
		esys();
	}
#endif
}

/*
 * Change the group of the file to `gid'.
 */
void eif_file_chgrp(EIF_FILENAME name, int gid)
{
#ifdef HAS_CHOWN
	int uid;
	rt_stat_buf buf;

	rt_file_stat(name, &buf);
	uid = buf.st_uid;
	errno = 0;
	if (chown(name, uid, gid) == -1) {
		esys();
	}
#endif
}

/*
 * Put new_line onto `f'.
 */
void eif_file_tnwl(FILE *f)
{
	errno = 0;
	if (putc('\n', f) == EOF) {
		eise_io("FILE: unable to write new line.");
	}
}

/*
 * Append a copy of `other' to `f'.
 */
void eif_file_append(FILE* f, FILE* other, EIF_INTEGER l)
{
	size_t amount;
	char buffer[512];
	int bufsize = 512;

	errno = 0;
	if (fseek(other, 0, FS_START) != 0) {
		esys();
	}
	if (fseek(f, 0, FS_END) != 0) {
		esys();
	}
	while (l > 0) {
		amount = l;
		if (l < bufsize)
			amount = l;
		else
			amount = bufsize;
		if (amount != fread(buffer, sizeof(char), amount, other)) {
			eise_io("FILE: unable to read appended file.");
			break;
		}
		l -= (EIF_INTEGER)amount;
		if (amount != fwrite(buffer, sizeof(char), amount, f)) {
			eise_io("FILE: unable to write appended file.");
			break;
		}
	}
}

/*
 * Write string `str' on `f'.
 */
void eif_file_ps(FILE* f, char* str, EIF_INTEGER len)
{
	errno = 0;
	if (len == 0) {
		/* Nothing to be done. */
	} else if (fwrite(str, sizeof(char) * len, 1, f) != 1) {
		eise_io("FILE: unable to write STRING object.");
	}
}

/*
 * Write character `c' on `f'.
 */
void eif_file_pc(FILE* f, char c)
{
	errno = 0;
	if (putc(c, f) == EOF) {
		eise_io("FILE: unable to write CHARACTER value.");
	}
}

/*
 * Go to absolute position `pos' counted from start.
 */
void eif_file_go(FILE* f, EIF_INTEGER pos)
{
	errno = 0;
	if (fseek(f, pos, FS_START) != 0) {
		esys();
	}
	clearerr(f);
}

/*
 * Go to absolute position `pos' counted from end.
 */
void eif_file_recede(FILE* f, EIF_INTEGER pos)
{
	errno = 0;
	if (fseek(f, -pos, FS_END) != 0) {
		esys();
	}
	clearerr(f);
}

/*
 * Go to absolute position `pos' counted from current position.
 */
void eif_file_move(FILE* f, EIF_INTEGER pos)
{
	errno = 0;
	if (fseek(f, pos, FS_CUR) != 0) {
		esys();
	}
	clearerr(f);
}

/*
 * End of file.
 */
EIF_BOOLEAN eif_file_feof(FILE* fp)
{
	return (EIF_BOOLEAN)(feof(fp) != 0);
}

/*
 * Test whether file exists or not. If `name' represents a symbolic link,
 * it will check that pointed file does exist.
 */
EIF_BOOLEAN eif_file_exists(EIF_FILENAME name)
{
	int status;					/* System call status */
	rt_stat_buf buf;			/* Buffer to get file statistics */

	status = eif_file_stat(name, &buf, 1);

#ifdef EOVERFLOW
	if (status == -1) {
			/* If the file is larger than what our file routines can handle
			 * it does not mean that the file does not exist. It does but we
			 * cannot handle it.
			 * This is needed to be able to check existence of file bigger than 2GB.
			 */
		return (errno == EOVERFLOW ? EIF_TRUE : EIF_FALSE);
	} else {
		return EIF_TRUE;
	}
#else
	return (status == -1 ? EIF_FALSE : EIF_TRUE);
#endif
}

/*
 * Test whether file exists or not without following the symbolic link
 * if `name' represents one.
 */
EIF_BOOLEAN eif_file_path_exists(EIF_FILENAME name)
{
	int status;					/* System call status */
	rt_stat_buf buf;			/* Buffer to get file statistics */

	status = eif_file_stat(name, &buf, 0);

#ifdef EOVERFLOW
	if (status == -1) {
			/* If the file is larger than what our file routines can handle
			 * it does not mean that the file does not exist. It does but we
			 * cannot handle it.
			 * This is needed to be able to check existence of file bigger than 2GB.
			 */
		return (errno == EOVERFLOW ? EIF_TRUE : EIF_FALSE);
	} else {
		return EIF_TRUE;
	}
#else
	return (status == -1 ? EIF_FALSE : EIF_TRUE);
#endif
}

/*
 * Check whether access permission `op' are possible on file `name' using
 * real UID and real GID. This is probably only useful to setuid or setgid
 * programs.
 */
EIF_BOOLEAN eif_file_access(EIF_FILENAME name, EIF_INTEGER op)
{
	switch (op) {
	case 0: /* Does file exist? */
		return (EIF_BOOLEAN)((-1 != rt_access(name, F_OK)) ? '\01' : '\0');
	case 1: /* Test for search permission */
		return (EIF_BOOLEAN)((-1 != rt_access(name, X_OK)) ? '\01' : '\0');
	case 2: /* Test for write permission */
		return (EIF_BOOLEAN)((-1 != rt_access(name, W_OK)) ? '\01' : '\0');
	case 3: /* Test for read permission */
		return (EIF_BOOLEAN)((-1 != rt_access(name, R_OK)) ? '\01' : '\0');
	default:
		return EIF_FALSE;
	}
}

/*
 * Check whether the file `path' may be created: we need write permissions
 * in the parent directory and there must not be any file bearing that name
 * with no write permissions...
 */
EIF_BOOLEAN eif_file_creatable(EIF_FILENAME path, EIF_INTEGER nbytes)
{
	rt_stat_buf buf;			/* Buffer to get parent directory statistics */
	EIF_FILENAME temp = NULL;
	EIF_FILENAME ptr;
	size_t l_extra_bytes;

		/* Allocate one extra character, just to be sure since we might be appending characters. */
#ifdef EIF_WINDOWS
	l_extra_bytes = sizeof(wchar_t);
#else
	l_extra_bytes = sizeof(char);
#endif
	temp = (EIF_FILENAME)malloc(nbytes + l_extra_bytes);
	if (!temp) {
		enomem();
	} else {
			/* Search the directory separator. */
#ifdef EIF_WINDOWS
		memcpy(temp, path, nbytes);
		ptr = wcsrchr(temp, '\\');
		if (!ptr) {
				/* On Windows we can have a forward slash as separator. */
			ptr = wcsrchr(temp, '/');
		}
#else
		strcpy(temp, path);
		ptr = strrchr(temp, '/');
#endif
		if (ptr) {
			*ptr = '\0';
#ifdef EIF_WINDOWS
			if ((ptr == temp) || (*(ptr -1) == ':')) {
					/* path is of the form a:\bbb or \bbb, parent is a:\ or \ */
				wcscat(ptr, L"\\");
			}
#endif
		} else {
#ifdef EIF_WINDOWS
			wcsncpy(temp, L".", 2);
#else
			strcpy(temp, ".");
#endif
		}

			/* Does the parent exist? */
		if (!eif_file_exists(temp)) {
			free(temp);
			return (EIF_BOOLEAN)'\0';
		}

		rt_file_stat(temp, &buf);
		free(temp);

		if (S_ISDIR(buf.st_mode)) {	/* Is parent a directory? */
			if (eif_file_eaccess(&buf, 1)) {	/* Check for write permissions */
					/* Check if a non writable file `path' exists */
				if (eif_file_exists(path)) {
					rt_file_stat(path, &buf);
					if (S_ISDIR(buf.st_mode)) {
							/* File exists and it is already a directory, thus we cannot create a file. */
						return (EIF_BOOLEAN)'\0';
					} else {
						return (eif_file_eaccess(&buf, 1)); /* Check for write permissions to re create it */
					}
				}

				return (EIF_BOOLEAN)'\01';
			}
		}
	}
	return (EIF_BOOLEAN)'\0';
}

/*
 * Get an integer from `f'.
 */
EIF_INTEGER eif_file_gi(FILE* f)
{
	volatile EIF_INTEGER i;

	errno = 0;
	if (fscanf(f, "%d", &i) < 0) {
		eise_io("FILE: unable to read INTEGER value.");
	}
	rt_swallow_nl(f);
	return i;
}

/*
 * Get a real from `f'.
 */
EIF_REAL_32 eif_file_gr(FILE* f)
{
	volatile EIF_REAL_32 r;
	errno = 0;
	if (fscanf(f, "%f", &r) < 0) {
		eise_io("FILE: unable to read REAL value.");
	}
	rt_swallow_nl(f);
	return r;
}

/*
 * Get a double from `f'.
 */
EIF_REAL_64 eif_file_gd(FILE* f)
{
	volatile EIF_REAL_64 d;
	errno = 0;
	if (fscanf(f, "%lf", &d) < 0) {
		eise_io("FILE: unable to read DOUBLE value.");
	}
	rt_swallow_nl(f);
	return d;
}

/*
 * Write `number' on `f'.
 */
void eif_file_pi(FILE* f, EIF_INTEGER number)
{
	errno = 0;
	if (fprintf(f, "%d", number) < 0) {
		eise_io("FILE: unable to write INTEGER value.");
	}
}

/*
 * Write `number' on `f'.
 */
void eif_file_pr(FILE* f, EIF_REAL_32 number)
{
	int res;
	errno = 0;

	if (number != number) {
		res = fprintf(f, "%s", "NaN");
	} else if (GE_real_32_is_negative_infinity(number)) {
		res = fprintf(f, "%s", "-Infinity");
	} else if (GE_real_32_is_positive_infinity(number)) {
		res = fprintf(f, "%s", "Infinity");
	} else {
		res = fprintf(f, "%g", number);
	}
    if (res < 0) {
		eise_io("FILE: unable to write REAL_32 value.");
	}
}

/*
 * Write double `val' onto `f'.
 */
void eif_file_pd(FILE* f, EIF_REAL_64 val)
{
	int res;
	errno = 0;

	if (val != val) {
		res = fprintf(f, "%s", "NaN");
	} else if (GE_real_64_is_negative_infinity(val)) {
		res = fprintf(f, "%s", "-Infinity");
	} else if (GE_real_64_is_positive_infinity(val)) {
			res = fprintf(f, "%s", "Infinity");
	} else {
		res = fprintf(f, "%.17g", val);
	}

	if (res < 0) {
		eise_io("FILE: unable to write REAL_64 value.");
	}
}

/*
 * Size of the stat structure. This is used by the Eiffel side to create
 * the area (special object) which will play the role of a stat buffer
 * structure.
 */
EIF_INTEGER stat_size(void)
{
	return (EIF_INTEGER)sizeof(rt_stat_buf);
}

#ifdef HAS_GETGROUPS
/*
 * Does the list of groups the user belongs to include `gid'?
 */
static EIF_BOOLEAN eif_group_in_list(int gid)
{
	Groups_t* group_list;
	int i, nb_groups, nb_groups_max;

	nb_groups_max = getgroups(0, (Groups_t*)0);
	if (nb_groups_max <= 0) {
		return EIF_FALSE;
	} else {
		group_list = (Groups_t*)malloc(nb_groups_max * sizeof(Groups_t));
		if (group_list == (Groups_t*)0) {
			xraise(EN_IO);
			return EIF_FALSE;
		} else if ((nb_groups = getgroups(nb_groups_max, group_list)) == -1) {
			free(group_list);
			xraise(EN_IO);
			return EIF_FALSE;
		} else {
			for (i = 0; i < nb_groups; i++)
				if (group_list[i] == gid) {
					free(group_list);
					return EIF_TRUE;
				}
			free(group_list);
			return EIF_FALSE;
		}
	}
}
#endif

/*
 * Check file permissions using effective UID and effective GID. The
 * current permission mode is held in the st_mode field of the stat()
 * buffer structure `buf'.
 */
EIF_BOOLEAN eif_file_eaccess(rt_stat_buf* buf, int op)
{
	int mode = buf->st_mode & ST_MODE;	/* Current mode */
#ifdef HAS_GETEUID
	int uid = buf->st_uid;				/* File owner */
	int gid = buf->st_gid;				/* File group */
	int euid, egid;						/* Effective user and group */
#endif

    switch (op) {
	case 0: /* Is file readable */
#ifdef EIF_WINDOWS
	return ((mode & S_IREAD) ? EIF_TRUE : EIF_FALSE);
#elif defined HAS_GETEUID
		euid = geteuid();
		egid = getegid();

		if (euid == 0)
			return EIF_TRUE;
		else if (uid == euid)
			return ((mode & S_IRUSR) ? EIF_TRUE : EIF_FALSE);
		else if (gid == egid)
			return ((mode & S_IRGRP) ? EIF_TRUE : EIF_FALSE);
#ifdef HAS_GETGROUPS
		else if (eif_group_in_list(gid))
			return ((mode & S_IRGRP) ? EIF_TRUE : EIF_FALSE);
#endif
		else
			return ((mode & S_IROTH) ? EIF_TRUE : EIF_FALSE);
#endif
	case 1: /* Is file writable */
#ifdef EIF_WINDOWS
		return ((mode & S_IWRITE) ? EIF_TRUE : EIF_FALSE);
#elif defined HAS_GETEUID
		euid = geteuid();
		egid = getegid();

		if (euid == 0)
			return EIF_TRUE;
		else if (uid == euid)
			return ((mode & S_IWUSR) ? EIF_TRUE : EIF_FALSE);
		else if (gid == egid)
			return ((mode & S_IWGRP) ? EIF_TRUE : EIF_FALSE);
#ifdef HAS_GETGROUPS
		else if (eif_group_in_list(gid))
			return ((mode & S_IWGRP) ? EIF_TRUE : EIF_FALSE);
#endif
		else
			return ((mode & S_IWOTH) ? EIF_TRUE : EIF_FALSE);
#endif
	case 2: /* Is file executable */
#ifdef EIF_WINDOWS
		return EIF_TRUE;
#elif defined HAS_GETEUID
		euid = geteuid();
		egid = getegid();

		if (euid == 0)
			return EIF_TRUE;
		else if (uid == euid)
			return ((mode & S_IXUSR) ? EIF_TRUE : EIF_FALSE);
		else if (gid == egid)
			return ((mode & S_IXGRP) ? EIF_TRUE : EIF_FALSE);
#ifdef HAS_GETGROUPS
		else if (eif_group_in_list(gid))
			return ((mode & S_IXGRP) ? EIF_TRUE : EIF_FALSE);
#endif
		else
			return ((mode & S_IXOTH) ? EIF_TRUE : EIF_FALSE);
#endif
	case 3: /* Is file setuid */
#ifdef EIF_WINDOWS
		return EIF_FALSE;
#else
		return ((mode & S_ISUID) ? EIF_TRUE : EIF_FALSE);
#endif
	case 4: /* Is file setgid */
#ifdef EIF_WINDOWS
		return EIF_FALSE;
#else
		return ((mode & S_ISGID) ? EIF_TRUE : EIF_FALSE);
#endif
	case 5: /* Is file sticky */
#ifdef EIF_WINDOWS
		return EIF_FALSE;
#else
		return ((mode & S_ISVTX) ? EIF_TRUE : EIF_FALSE);
#endif
	case 6: /* Is file owned by effective UID */
#ifdef HAS_GETEUID
		return ((uid == geteuid()) ? EIF_TRUE : EIF_FALSE);
#else
		return EIF_TRUE;
#endif
	case 7: /* Is file owned by real UID */
#ifdef HAS_GETEUID
		return ((uid == getuid()) ? EIF_TRUE : EIF_FALSE);
#else
		return EIF_TRUE;
#endif
	default:
		return EIF_FALSE;
	}
}

/*
 * Perform the field dereferencing from the appropriate stat structure,
 * which Eiffel cannot do directly.
 */
EIF_INTEGER eif_file_info(rt_stat_buf* buf, int op)
{
	switch (op) {
	case 0:	/* File permission mode */
		return (EIF_INTEGER)(buf->st_mode & ST_MODE);
	case 1:	/* Inode number */
		return (EIF_INTEGER)buf->st_ino;
	case 2:	/* Device inode resides on */
		return (EIF_INTEGER)buf->st_dev;
	case 3:	/* Device type */
		return (EIF_INTEGER)buf->st_rdev;
	case 4:	/* UID of file */
		return (EIF_INTEGER)buf->st_uid;
	case 5:	/* GID of file */
		return (EIF_INTEGER)buf->st_gid;
	case 6:	/* Size of file, in bytes */
			/* FIXME: This code should be upgraded to use 64-bit */
		return (EIF_INTEGER) buf->st_size;
	case 7:	/* Last modification time on file */
			/* FIXME: This code should be upgraded to use 64-bit */
		return (EIF_INTEGER)buf->st_mtime;
	case 8:	/* Last access made on file */
			/* FIXME: This code should be upgraded to use 64-bit */
		return (EIF_INTEGER)buf->st_atime;
	case 9:	/* Last status change */
			/* FIXME: This code should be upgraded to use 64-bit */
		return (EIF_INTEGER)buf->st_ctime;
	case 10: /* Number of links */
		return (EIF_INTEGER)buf->st_nlink;
	case 11: /* File type */
		return (EIF_INTEGER)(buf->st_mode & S_IFMT);
	case 12: /* Is file a directory */
		return (EIF_INTEGER)S_ISDIR(buf->st_mode);
	case 13: /* Is file a regular (plain) one */
		if (S_ISREG(buf->st_mode) || (0 == (buf->st_mode & S_IFMT)))
			return (EIF_INTEGER)EIF_TRUE;
		return (EIF_INTEGER)0;
	case 14: /* Is file a device, ie character or block device. */
		return (S_ISCHR(buf->st_mode) || S_ISBLK(buf->st_mode));
	case 15: /* Is file a character device */
		return (EIF_INTEGER)S_ISCHR(buf->st_mode);
	case 16: /* Is file a block device */
		return (EIF_INTEGER)S_ISBLK(buf->st_mode);
	case 17: /* Is file a FIFO */
		return (EIF_INTEGER)S_ISFIFO(buf->st_mode);
	case 18: /* Is file a symbolic link */
		return (EIF_INTEGER)S_ISLNK(buf->st_mode);
	case 19: /* Is file a socket */
		return (EIF_INTEGER)S_ISSOCK(buf->st_mode);
	default:
		return (EIF_INTEGER)0;
    }
}

/*
 * Return the Eiffel string filled in with the name associated with `uid'
 * if found in /etc/passwd. Otherwise, return fill it in with the numeric
 * value.
 */
EIF_REFERENCE eif_file_owner(int uid)
{
	char str[NAME_MAX];
#ifdef HAS_GETPWUID
	struct passwd* pp;

	pp = getpwuid(uid);
	if (pp == (struct passwd*) 0)
		sprintf(str, "%d", uid);		/* Not available: use UID */
	else
		strcpy(str, pp->pw_name);		/* Available: fetch login name */
#else
	sprintf(str, "%d", uid);			/* Not available: use UID */
#endif
	return GE_str(str);
}

/*
 * Return the Eiffel string filled in with the name associated with `gid'
 * if found in /etc/group. Otherwise, return fill it in with the numeric
 * value.
 */
EIF_REFERENCE eif_file_group(int gid)
{
	char str[NAME_MAX];
#ifdef HAS_GETGRGID
	struct group* gp; /* %%ss moved from above */

	gp = getgrgid(gid);
	if (gp == (struct group*)0)
		sprintf(str, "%d", gid);		/* Not available: use GID */
	else
		strcpy(str, gp->gr_name);		/* Available: fetch login name */
#else
	sprintf(str, "%d", gid);			/* Not available: use UID */
#endif
	return GE_str(str);
}

/*
 * Get an integer from `f'.
 */
EIF_INTEGER eif_file_gib(FILE* f)
{
	EIF_INTEGER i;
	errno = 0;
	if (fread (&i, sizeof(EIF_INTEGER), 1, f) != 1) {
		eise_io("FILE: unable to read INTEGER value.");
	}
	return i;
}

/*
 * Get a real from `f'.
 */
EIF_REAL_32 eif_file_grb(FILE* f)
{
	EIF_REAL_32 r;
	errno = 0;
	if (fread (&r, sizeof(EIF_REAL_32), 1, f) != 1) {
		eise_io("FILE: unable to read REAL_32 value.");
	}
	return r;
}

/*
 * Get a double from `f'.
 */
EIF_REAL_64 eif_file_gdb(FILE* f)
{
	EIF_REAL_64 d;
	errno = 0;
	if (fread (&d, sizeof(EIF_REAL_64), 1, f) != 1) {
		eise_io("FILE: unable to read REAL_64 value.");
	}
	return d;
}

/*
 * Open file `name' with the corresponding type `how'.
 */
EIF_POINTER eif_file_binary_open(EIF_FILENAME name, int how)
{
	FILE* fp;
	EIF_NATIVE_CHAR l_mode[FILE_TYPE_MAX];
	errno = 0;
#ifdef EIF_WINDOWS
	rt_file_set_open_mode(l_mode, how, 'b');
#else
	rt_file_set_open_mode(l_mode, how, '\0');
#endif
	fp = (FILE*)rt_file_fopen(name, l_mode);
	if (fp == (FILE*)0) {
		esys(); /* Open failed, raise exception */
	}
	return (EIF_POINTER)fp;

}

/*
 * Open file `fd' with the corresponding type `how'.
 */
EIF_POINTER eif_file_binary_dopen(int fd, int how)
{
	FILE* fp;
	EIF_NATIVE_CHAR l_mode[FILE_TYPE_MAX];
	errno = 0;
#ifdef EIF_WINDOWS
	rt_file_set_open_mode(l_mode, how, 'b');
#else
	rt_file_set_open_mode(l_mode, how, '\0');
#endif
	fp = (FILE*)rt_file_fdopen(fd, l_mode);
	if (fp == (FILE*)0) {
		esys(); /* Open failed, raise exception */
	}
	return (EIF_POINTER)fp;
}

/*
 * Reopen file `name' with the corresponding type `how' and substitute that
 * to the old stream described by `old'. This is useful to redirect 'stdout'
 * to another place, for instance.
 */
EIF_POINTER eif_file_binary_reopen(EIF_FILENAME name, int how, FILE* old)
{
	FILE* fp;
	EIF_NATIVE_CHAR l_mode[FILE_TYPE_MAX];
	errno = 0;
#ifdef EIF_WINDOWS
	rt_file_set_open_mode(l_mode, how, 'b');
#else
	rt_file_set_open_mode(l_mode, how, '\0');
#endif
	fp = (FILE*)rt_file_freopen(name, l_mode, old);
	if (fp == (FILE*)0) {
		esys(); /* Open failed, raise exception */
	}
	return (EIF_POINTER)fp;
}

/*
 * Write `number' on `f'.
 */
void eif_file_pib(FILE* f, EIF_INTEGER number)
{
	errno = 0;
	if (fwrite(&number, sizeof(EIF_INTEGER),1, f) != 1) {
		eise_io("FILE: unable to write INTEGER value.");
	}
}

/*
 * Write `number' on `f'.
 */
void eif_file_prb(FILE* f, EIF_REAL_32 number)
{
	errno = 0;
    if (fwrite(&number, sizeof(EIF_REAL_32),1, f) != 1) {
		eise_io("FILE: unable to write REAL_32 value.");
	}
}

/*
 * Write double `val' onto `f'.
 */
void eif_file_pdb(FILE* f, EIF_REAL_64 val)
{
	errno = 0;
	if (fwrite(&val, sizeof(EIF_REAL_64), 1, f) != 1) {
		eise_io("FILE: unable to write REAL_64 value.");
	}
}

/*
 * Access time of a file.
 * Seconds since epoch (01 January 1970) in UTC or 0 if time cannot be retrieved.
 * mode: Mode of operation: non-zero for modification and zero for access time.
 */
static EIF_INTEGER eif_file_date_for(EIF_FILENAME name, int mode)
{
	EIF_INTEGER result = 0;
#ifdef EIF_WINDOWS
		/* On NTFS file system, windows store UTC file stamps in 100 of nanoseconds
		 * starting from January 1st 0. Converted in seconds, this time is greater
		 * than 232 therefore we substract the EPOCH date January 1st 1970 to get
		 * a 32 bits representation of the date.
		 * FIXME: Manu 01/28/2004: On FAT file system, the date is in local time,
		 * meaning that the code below does not compensate if you change your timezone
		 * and will return a different date value for the same stamp just because
		 * you are in different time zone.
		 */

		/* WARNING: This is using the Ansi version of the Win32 API. Remember
		 * that if you are doing any change below.
		 */

	WIN32_FIND_DATAW l_find_data;
	HANDLE l_file_handle;
	ULARGE_INTEGER l_date;

	l_file_handle = FindFirstFileW(name, &l_find_data);
	if (l_file_handle != INVALID_HANDLE_VALUE) {
			/* We do not need the file handle anymore, so we close it to
			 * avoid handle leak. */
		FindClose(l_file_handle);
		if (mode) {
			l_date.LowPart = l_find_data.ftLastWriteTime.dwLowDateTime;
			l_date.HighPart = l_find_data.ftLastWriteTime.dwHighDateTime;
		} else {
			l_date.LowPart = l_find_data.ftLastAccessTime.dwLowDateTime;
			l_date.HighPart = l_find_data.ftLastAccessTime.dwHighDateTime;
		}
			/* Convert 100-nanosecond intervals to seconds
			 * and ajust "1 Jan 1601" to "1 Jan 1970".
			 * The difference between "1 Jan 1601" and "1 Jan 1970"
			 * can be precomputed using the following code:
			 *	SYSTEMTIME epoch = {1970, 1, 0, 1, 0, 0, 0, 0};
			 *	FILETIME epoch_file;
			 *	ULARGE_INTEGER epoch_date;
			 *	SystemTimeToFileTime (&epoch, &epoch_file);
			 *	epoch_date.LowPart = epoch_file.dwLowDateTime;
			 *	epoch_date.HighPart = epoch_file.dwHighDateTime;
			 * time_shift = epoch_date.QuadPart / 10000000UL; // 11644473600
			 */
		result = (EIF_INTEGER)(l_date.QuadPart / GE_nat64(10000000) - GE_nat64(11644473600));
	}
#else
	rt_stat_buf info;
	if (-1 != eif_file_stat(name, &info, 1)) {
		result = (mode ? (EIF_INTEGER)info.st_mtime: (EIF_INTEGER)info.st_atime);
	}
#endif
	return result;
}

/*
 * Modification time of a file.
 * Seconds since epoch (01 January 1970) in UTC or 0 if time cannot be retrieved.
 */
EIF_INTEGER eif_file_date(EIF_FILENAME name)
{
	return eif_file_date_for(name, 1);
}

/*
 * Access time of a file.
 * Seconds since epoch (01 January 1970) in UTC or 0 if time cannot be retrieved.
 */
EIF_INTEGER eif_file_access_date(EIF_FILENAME name)
{
	return eif_file_date_for(name, 0);
}

/*
 * Generate a temporary file with a name based on a template and
 * return a file descriptor to the file.
 * The template is overwritten with the name of the new file.
 * Return a non-zero file descriptor for the temporary file upon success, -1 otherwise.
 * `template'is the template to use for creating the temporary file.
 * It must match the rules for mk[s]temp (i.e. end in "XXXXXX").
 * On exit, it is updated with the new name.
 * `is_text_mode', if non-zero, then the temporary file is created
 * in text mode, otherwise in binary mode.<param>
 * Note: Code was inspired from https://github.com/mirror/mingw-w64/blob/master/mingw-w64-crt/misc/mkstemp.c
 */
EIF_INTEGER eif_file_mkstemp(EIF_FILENAME a_template, EIF_BOOLEAN is_text_mode)
{
	int fd;
#ifdef EIF_WINDOWS
	{
		size_t len = wcslen(a_template);
		size_t j, index;
		int32_t i, l_max;

		/* These are the (62) characters used in temporary filenames. */
		static const wchar_t letters[] = L"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

		/* User may supply more than six trailing Xs */
		for (index = len - 6; index > 0 && a_template[index - 1] == L'X'; index--);

		/* Like OpenBSD, mkstemp() will try at least 2 ** 31 combinations before * giving up. */
		l_max = GE_max_int32;
		for (i = 0; i < l_max; i++) {
			for (j = index; j < len; j++) {
				a_template[j] = letters[rand() % 62];
			}
			fd = _wsopen(a_template, _O_CREAT | _O_EXCL | _O_RDWR | (is_text_mode ? _O_TEXT : _O_BINARY) | _O_NOINHERIT, _SH_DENYRW, _S_IREAD | _S_IWRITE);
			/* Success, if the file descriptor is valid or if there is a creation error that is not due to a file already existing. */
			if ((fd != -1) || (fd == -1 && errno != EEXIST)) {
				break;
			}
		}
	}
#else
	fd = mkstemp(a_template);
#endif

	return (EIF_INTEGER) fd;
}

#ifdef __cplusplus
}
#endif

#endif
#ifdef __cplusplus
extern "C" {
#endif


#ifdef __cplusplus
}
#endif
/*
	description:

		"C functions used to implement class CONSOLE"

	system: "Gobo Eiffel Compiler"
	copyright: "Copyright (c) 2006-2017, Eric Bezault and others"
	license: "MIT License"
*/

#ifndef EIF_CONSOLE_C
#define EIF_CONSOLE_C
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#ifndef EIF_CONSOLE_H
#include "eif_console.h"
#endif
#ifndef EIF_FILE_H
#include "eif_file.h"
#endif
#ifndef GE_CONSOLE_H
#include "ge_console.h"
#endif

#ifdef EIF_WINDOWS
#include <windows.h>
#endif
#include <stdio.h>

#ifdef __cplusplus
extern "C" {
#endif

EIF_POINTER console_def(EIF_INTEGER file)
{
#ifdef EIF_WINDOWS
		/* The following is needed to avoid the function `WideCharToMultiByte`
		   in ENCODING_IMP.cwin_wide_char_to_multi_byte to produce an error
		   ERROR_INVALID_PARAMETER when the code page passed as argument is
		   the code page of the console. */
	UINT l_code_page;
	l_code_page = GetConsoleOutputCP();
	if (l_code_page != 0) {
		SetConsoleOutputCP(l_code_page);
	}
#endif
	switch (file) {
	case 0:
		return (EIF_POINTER)stdin;
	case 1:
		setvbuf(stdout, NULL, _IONBF, 0);
		return (EIF_POINTER)stdout;
	case 2:
		setvbuf (stderr, NULL, _IONBF, 0);
		return (EIF_POINTER)stderr;
	default:
		return NULL;
	}
}

EIF_BOOLEAN console_eof(FILE* fp)
{
	GE_show_console();
	return eif_file_feof(fp);
}

EIF_CHARACTER_8 console_separator(FILE *f)
{
	GE_show_console();
	return eif_file_lh(f);
}

void console_ps(FILE* f, char* str, EIF_INTEGER len)
{
	GE_show_console();
	eif_file_ps(f, str, len);
}

void console_pr(FILE* f, EIF_REAL_32 number)
{
	GE_show_console();
	eif_file_pr(f, number);
}

void console_pc(FILE* f, EIF_CHARACTER_8 c)
{
	GE_show_console();
	eif_file_pc(f, c);
}

void console_pd(FILE* f, EIF_REAL_64 val)
{
	GE_show_console();
	eif_file_pd(f, val);
}

void console_pi(FILE* f, EIF_INTEGER number)
{
	GE_show_console();
	eif_file_pi(f, number);
}

void console_tnwl(FILE* f)
{
	GE_show_console();
	console_pc(f,'\n');
}

EIF_CHARACTER_8 console_readchar(FILE* f)
{
	GE_show_console();
	return eif_file_gc(f);
}

EIF_REAL_32 console_readreal(FILE* f)
{
	GE_show_console();
	return eif_file_gr(f);
}

EIF_INTEGER console_readint(FILE* f)
{
	GE_show_console();
	return eif_file_gi(f);
}

EIF_REAL_64 console_readdouble(FILE* f)
{
	GE_show_console();
	return eif_file_gd(f);
}

EIF_INTEGER console_readword(FILE* f, char* s, EIF_INTEGER bound, EIF_INTEGER start)
{
	GE_show_console();
	return eif_file_gw(f, s, bound, start);
}

EIF_INTEGER console_readline(FILE* f, char* s, EIF_INTEGER bound, EIF_INTEGER start)
{
	GE_show_console();
	return eif_file_gs(f, s, bound, start);
}

void console_next_line(FILE* f)
{
	GE_show_console();
	eif_file_tnil(f);
}

EIF_INTEGER console_readstream(FILE* f, char* s, EIF_INTEGER bound)
{
	GE_show_console();
	return eif_file_gss(f, s, bound);
}

void console_file_close (FILE* f)
{
	GE_show_console();
	eif_file_close(f);
}

#ifdef __cplusplus
}
#endif

#endif
#ifdef __cplusplus
extern "C" {
#endif


#ifdef __cplusplus
}
#endif
/*
	description:

		"C functions used to implement Thread support"

	system: "Gobo Eiffel Compiler"
	copyright: "Copyright (c) 2024, Eric Bezault and others"
	license: "MIT License"
*/

#ifndef EIF_THREADS_C
#define EIF_THREADS_C
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#ifndef EIF_THREADS_H
#include "eif_threads.h"
#endif

#ifdef __cplusplus
extern "C" {
#endif

#ifdef GE_USE_THREADS

/* To compile the C code of EiffelNet. */
int socket_fides;

#endif

#ifdef __cplusplus
}
#endif

#endif
#ifdef __cplusplus
extern "C" {
#endif


#ifdef __cplusplus
}
#endif
/*
	description:

		"C functions used to implement class DIRECTORY"

	system: "Gobo Eiffel Compiler"
	copyright: "Copyright (c) 2006-2018, Eric Bezault and others"
	license: "MIT License"
*/

#ifndef EIF_DIR_C
#define EIF_DIR_C
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#ifndef EIF_DIR_H
#include "eif_dir.h"
#endif

#include <sys/stat.h>
#ifdef EIF_WINDOWS
#ifdef __cplusplus
extern "C" {
#endif
typedef struct {
	HANDLE handle;
	WIN32_FIND_DATAW last_entry;
	wchar_t	*name;
} GE_directory;
#ifdef __cplusplus
}
#endif
#include <io.h> /* for 'access' */
#include <direct.h> /* (ch|rm)dir */
#include <wchar.h>
#else
#include <dirent.h>
#include <unistd.h>
#endif
#include <string.h>

#ifndef PATH_MAX
#define PATH_MAX 1024 /* Maximum length of full path name */
#endif

#ifndef S_IRUSR
#define S_IRUSR 0000400
#endif
#ifndef S_IWUSR
#define S_IWUSR 0000200
#endif
#ifndef S_IXUSR
#define S_IXUSR 0000100
#endif
#ifndef S_IRGRP
#define S_IRGRP 0000040
#endif
#ifndef S_IWGRP
#define S_IWGRP 0000020
#endif
#ifndef S_IXGRP
#define S_IXGRP 0000010
#endif
#ifndef S_IROTH
#define S_IROTH 0000004
#endif
#ifndef S_IWOTH
#define S_IWOTH 0000002
#endif
#ifndef S_IXOTH
#define S_IXOTH 0000001
#endif
#ifndef S_IFDIR
#define S_IFDIR 0040000
#endif
#ifndef S_IFCHR
#define S_IFCHR 0020000
#endif
#ifdef __LCC__
#ifndef _S_IFCHR
#define _S_IFCHR S_IFCHR
#endif
#endif
#ifndef S_IFBLK
#define S_IFBLK 0060000
#endif
#ifndef S_IFREG
#define S_IFREG 0100000
#endif
#ifndef S_IFIFO
#define S_IFIFO 0010000
#endif
#ifndef S_IFLNK
#define S_IFLNK 0120000
#endif
#ifndef S_IFSOCK
#define S_IFSOCK 0140000
#endif
#ifndef S_IFMT
#define S_IFMT 0170000
#endif
#ifndef S_ISREG
#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
#endif
#ifndef S_ISDIR
#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
#endif
#ifndef S_ISCHR
#define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
#endif
#ifndef S_ISBLK
#define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
#endif
#ifndef S_ISLNK
#define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
#endif
#ifndef S_ISFIFO
#define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
#endif

/* Keep only permission mode */
#ifndef ST_MODE
#define ST_MODE 0x0fff
#endif

/* The following access constants seems to be universally accepeted. And
 * anyway, it's only after BSD 4.1 that the symbolic constants appeared.
 */
#ifndef R_OK
#define R_OK 4
#define W_OK 2
#define X_OK 1
#define F_OK 0
#endif

#ifdef __cplusplus
extern "C" {
#endif

#ifdef EIF_WINDOWS
#	ifdef __LCC__
#		define rt_stat_buf	struct stat
#	elif defined EIF_64_BITS
#		define rt_stat_buf	struct _stat64
#	else
#		define rt_stat_buf	struct _stat64i32
#	endif
#else
#	define rt_stat_buf		struct stat
#endif

#ifdef EIF_WINDOWS
#	ifdef __LCC__
#		define rt_stat		_wstat
#		define rt_fstat		fstat
#	elif defined(EIF_64_BITS)
#		define rt_stat		_wstat64
#		define rt_fstat		_fstat64
#	else
#		define rt_stat		_wstat64i32
#		define rt_fstat		_fstat64i32
#	endif
#	define rt_access		_waccess
#else
#	define rt_stat			stat
#	define rt_fstat			fstat
#	define rt_access		access
#endif

EIF_POINTER eif_dir_open(EIF_FILENAME dirname)
{
#ifdef EIF_WINDOWS
	GE_directory* result = (GE_directory*)malloc(sizeof(GE_directory));
	result->name = dirname;
	result->handle = 0;
	return result;
#else
	return (opendir(((char*)dirname)));
#endif
}

EIF_POINTER eif_dir_next(EIF_POINTER dir)
{
#ifdef EIF_WINDOWS
	BOOL r;
	size_t a_name_length;
	wchar_t * wname;
	GE_directory* GE_dir = (GE_directory*)dir;
	HANDLE h = GE_dir->handle;

	if (h) {
		r = FindNextFileW(h, &(GE_dir->last_entry));
	} else {
		r = EIF_FALSE;
			/* Allocate additional space for "\\*": 2 characters + terminating zero */
		a_name_length = wcslen(GE_dir->name);
		wname = (wchar_t *)malloc((a_name_length + 3) * sizeof(wchar_t));
		if (!wname) {
			enomem();
		} else {
			wcscpy(wname, GE_dir->name);
			if (wname[a_name_length - 1] == '\\') {
				wcscat(wname, L"*");
			} else {
				wcscat(wname , L"\\*");
			}
			h = FindFirstFileW(wname, &(GE_dir->last_entry));
			free(wname);
			if (h != INVALID_HANDLE_VALUE) {
				GE_dir->handle = h;
				r = EIF_TRUE;
			}
		}
	}
	if (r) {
		return GE_dir->last_entry.cFileName;
	} else {
		return NULL;
	}
#else
	struct dirent* p = readdir((DIR*)dir);
	if (p) {
		return p->d_name;
	} else {
		return NULL;
	}
#endif
}

EIF_POINTER eif_dir_rewind(EIF_POINTER dir, EIF_FILENAME a_name)
{
#ifdef EIF_WINDOWS
	GE_directory* GE_dir = (GE_directory*)dir;
	HANDLE h = GE_dir->handle;

	if (h) {
		FindClose(h);
	}
	GE_dir->handle = 0;
#else
	DIR* GE_dir = (DIR*)dir;
	rewinddir(GE_dir);
#endif
	return GE_dir;
}

void eif_dir_close(EIF_POINTER dir)
{
#ifdef EIF_WINDOWS
	GE_directory* GE_dir = (GE_directory*)dir;
	HANDLE h = GE_dir->handle;

	if (h) {
		FindClose(h);
	}
	GE_dir->handle = 0;
	free(GE_dir);
#else
	closedir((DIR*)dir);
#endif
}

EIF_BOOLEAN eif_dir_exists(EIF_FILENAME dirname)
{
	rt_stat_buf buf;

	return (EIF_BOOLEAN)((!rt_stat (dirname, &buf) && S_ISDIR(buf.st_mode)) ? EIF_TRUE : EIF_FALSE);
}

EIF_BOOLEAN eif_dir_is_readable(EIF_FILENAME dirname)
{
#ifdef EIF_WINDOWS
	return (EIF_BOOLEAN)(_waccess (dirname, R_OK) != -1);
#else
	int uid, gid;
	int euid, egid;
	int mode;
	rt_stat_buf buf;

	rt_stat(dirname, &buf);
	mode = buf.st_mode & ST_MODE;
	uid = buf.st_uid;
	gid = buf.st_gid;
	euid = geteuid();
	egid = getegid();
	if (euid == 0)
		return EIF_TRUE;
	else if (uid == euid)
		return ((mode & S_IRUSR) ? EIF_TRUE : EIF_FALSE);
	else if (gid == egid)
		return ((mode & S_IRGRP) ? EIF_TRUE : EIF_FALSE);
#ifdef HAS_GETGROUPS
	else if (eif_group_in_list(gid))
		return ((mode & S_IRGRP) ? EIF_TRUE : EIF_FALSE);
#endif
	else
		return ((mode & S_IROTH) ? EIF_TRUE : EIF_FALSE);
#endif
}

EIF_BOOLEAN eif_dir_is_executable(EIF_FILENAME dirname)
{
#ifdef EIF_WINDOWS
	return (EIF_BOOLEAN)(_waccess(dirname, F_OK) != -1);
#else
	int uid, gid;
	int euid, egid;
	int mode;
	rt_stat_buf buf;

	rt_stat(dirname, &buf);
	mode = buf.st_mode & ST_MODE;
	uid = buf.st_uid;
	gid = buf.st_gid;
	euid = geteuid();
	egid = getegid();
	if (euid == 0)
		return EIF_TRUE;
	else if (uid == euid)
		return ((mode & S_IXUSR) ? EIF_TRUE : EIF_FALSE);
	else if (gid == egid)
		return ((mode & S_IXGRP) ? EIF_TRUE : EIF_FALSE);
#ifdef HAS_GETGROUPS
	else if (eif_group_in_list(gid))
		return ((mode & S_IXGRP) ? EIF_TRUE : EIF_FALSE);
#endif
	else
		return ((mode & S_IXOTH) ? EIF_TRUE : EIF_FALSE);
#endif
}

EIF_BOOLEAN eif_dir_is_writable(EIF_FILENAME dirname)
{
#ifdef EIF_WINDOWS
	return (EIF_BOOLEAN)(_waccess(dirname, W_OK) != -1);
#else
	int uid, gid;
	int euid, egid;
	int mode;
	rt_stat_buf buf;

	rt_stat(dirname, &buf);
	mode = buf.st_mode & ST_MODE;
	uid = buf.st_uid;
	gid = buf.st_gid;
	euid = geteuid();
	egid = getegid();
	if (euid == 0)
		return EIF_TRUE;
	else if (uid == euid)
		return ((mode & S_IWUSR) ? EIF_TRUE : EIF_FALSE);
	else if (gid == egid)
		return ((mode & S_IWGRP) ? EIF_TRUE : EIF_FALSE);
#ifdef HAS_GETGROUPS
	else if (eif_group_in_list(gid))
		return ((mode & S_IWGRP) ? EIF_TRUE : EIF_FALSE);
#endif
	else
		return ((mode & S_IWOTH) ? EIF_TRUE : EIF_FALSE);
#endif
}

EIF_BOOLEAN eif_dir_is_deletable(EIF_FILENAME name)
{
	return eif_dir_is_writable(name);
}

EIF_CHARACTER_8 eif_dir_separator(void)
{
#ifdef EIF_WINDOWS
	return (EIF_CHARACTER_8)'\\';
#else
	return (EIF_CHARACTER_8)'/';
#endif
}

EIF_INTEGER eif_dir_current(EIF_FILENAME a_buffer, EIF_INTEGER a_count)
{
	EIF_INTEGER l_nbytes;

#ifdef EIF_WINDOWS
	wchar_t *subpart;
	wchar_t drive[2];
	drive [0] = '.';
	drive [1] = '\0';
		/* First calculate the length of the buffer we need to hold the current working directory. */
	l_nbytes = (GetFullPathNameW(drive, 0, NULL, &subpart) + 1) * sizeof(wchar_t);

	if (l_nbytes == 0) {
			/* Failure: we cannot retrieve our current directory. */
		l_nbytes = -1;
	} else {
		if (a_buffer && (a_count >= l_nbytes)) {
			l_nbytes = (GetFullPathNameW(drive, l_nbytes / sizeof(wchar_t), a_buffer, &subpart) + 1) * sizeof(wchar_t);
		}
	}
	return l_nbytes;
#else
	char *cwd;
	cwd = getcwd(NULL, PATH_MAX);

	if (cwd) {
		l_nbytes = (strlen(cwd) + 1) * sizeof(char);
		if (a_buffer && (a_count >= l_nbytes)) {
			memcpy(a_buffer, cwd, l_nbytes);
		}
		free(cwd);	/* Not `eif_free', getcwd() call malloc in POSIX.1 */
	} else {
		l_nbytes = -1;
	}

	return l_nbytes;

#endif
}

EIF_INTEGER eif_chdir(EIF_FILENAME path)
{
#ifdef EIF_WINDOWS
	return _wchdir(path);
#else
	return chdir(path);
#endif
}

#ifdef __cplusplus
}
#endif

#endif
#ifdef __cplusplus
extern "C" {
#endif


#ifdef __cplusplus
}
#endif
/*
	description:

		"C functions used to implement class EXECUTION_ENVIRONMENT"

	system: "Gobo Eiffel Compiler"
	copyright: "Copyright (c) 2006-2017, Eric Bezault and others"
	license: "MIT License"
*/

#ifndef EIF_MISC_C
#define EIF_MISC_C
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#ifndef EIF_MISC_H
#include "eif_misc.h"
#endif

#include <stdlib.h>
#ifdef WIN32
#include <windows.h>
#include <string.h>
#include <direct.h> /* for 'getcwd' */
#endif

#ifndef PATH_MAX
#define PATH_MAX 1024 /* Maximum length of full path name */
#endif

#ifdef __cplusplus
extern "C" {
#endif

EIF_INTEGER eif_system(EIF_NATIVE_CHAR* s)
{
#ifdef EIF_WINDOWS
	return (EIF_INTEGER)_wsystem(s);
#else
	return (EIF_INTEGER)system(s);
#endif
}

void eif_system_asynchronous(EIF_NATIVE_CHAR* cmd)
{
#ifdef EIF_WINDOWS
	STARTUPINFOW siStartInfo;
	PROCESS_INFORMATION procinfo;
	wchar_t* current_dir;
	EIF_INTEGER result;

	current_dir = (wchar_t*)_wgetcwd(NULL, PATH_MAX);
	memset(&siStartInfo, 0, sizeof(siStartInfo));
	siStartInfo.cb = sizeof(STARTUPINFO);
	siStartInfo.lpTitle = NULL;
	siStartInfo.lpReserved = NULL;
	siStartInfo.lpReserved2 = NULL;
	siStartInfo.cbReserved2 = 0;
	siStartInfo.lpDesktop = NULL;
	siStartInfo.dwFlags = STARTF_FORCEONFEEDBACK;
	result = CreateProcessW(
		NULL,
		cmd,
		NULL,
		NULL,
		TRUE,
		CREATE_NEW_CONSOLE,
		NULL,
		current_dir,
		&siStartInfo,
		&procinfo);
	if (result) {
		CloseHandle(procinfo.hProcess);
		CloseHandle(procinfo.hThread);
	}
	_wchdir(current_dir);
	free(current_dir);
#else
	int status;

	switch (fork()) {
	case -1:
		return;
	case 0:
		break;
	default:
		return;
	}
	status = system(cmd);
	exit(0);
#endif
}

void eif_sleep(EIF_INTEGER_64 nanoseconds)
{
	/*
	 * Suspend thread execution for interval specified by `nanoseconds'.
	 * Use the most precise sleep function if possible.
	 */

#ifdef HAS_NANOSLEEP
	volatile struct timespec req;
	volatile struct timespec rem;
	req.tv_sec = nanoseconds / 1000000000;
	req.tv_nsec = nanoseconds % 1000000000;
	while ((nanosleep (&req, &rem) == -1) && (errno == EINTR)) {
			/* Function is interrupted by a signal.   */
			/* Let's call it again to complete pause. */
		req = rem;
	}
#else
#	ifdef HAS_USLEEP
#		define EIF_SLEEP_PRECISION 1000
#		define EIF_SLEEP_TYPE      unsigned long
#		define EIF_SLEEP_FUNCTION  usleep
#	elif defined EIF_WINDOWS
#		define EIF_SLEEP_PRECISION 1000000
#		define EIF_SLEEP_TYPE      DWORD
#		define EIF_SLEEP_FUNCTION  Sleep
#	else
#		define EIF_SLEEP_PRECISION 1000000000
#		define EIF_SLEEP_TYPE      unsigned int
#		define EIF_SLEEP_FUNCTION  sleep
#	endif
		/* Set total delay time */
	EIF_INTEGER_64 total_time = nanoseconds / EIF_SLEEP_PRECISION;
		/* Set maximum timeout that can be handled by one API call */
	EIF_SLEEP_TYPE timeout = ~((~ (EIF_SLEEP_TYPE) 0) << (sizeof timeout * 8 - 1));
	if ((nanoseconds % EIF_SLEEP_PRECISION) > 0) {
			/* Increase delay to handle underflow */
		total_time++;
	}
	while (total_time > 0) {
			/* Sleep for maximum timeout not exceeding time left */
		if (timeout > total_time) {
			timeout = (EIF_SLEEP_TYPE)total_time;
		}
		EIF_SLEEP_FUNCTION(timeout);
		total_time -= timeout;
	}
#  undef EIF_SLEEP_PRECISION
#  undef EIF_SLEEP_TYPE
#  undef EIF_SLEEP_FUNCTION
#endif
}

/* Needed to compile ISE's compiler. */
EIF_REFERENCE eif_date_string (EIF_INTEGER a_date)
{
	EIF_REFERENCE result;
	time_t l_date = (time_t) a_date;
	char *date_string = ctime((time_t*)&l_date);

	result = RTMS(date_string);
	return (EIF_REFERENCE) result;
}

#ifdef __cplusplus
}
#endif

#endif
#ifdef __cplusplus
extern "C" {
#endif


#ifdef __cplusplus
}
#endif
/*
	description:

		"C functions used to implement class COM_FAILURE"

	system: "Gobo Eiffel Compiler"
	copyright: "Copyright (c) 2016-2018, Eric Bezault and others"
	license: "MIT License"
*/

#ifndef GE_COM_FAILURE_C
#define GE_COM_FAILURE_C
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#ifndef GE_COM_FAILURE_H
#include "ge_com_failure.h"
#endif

#ifdef EIF_WINDOWS
#include <winerror.h>
#include <tchar.h>
#endif

#ifdef __cplusplus
extern "C" {
#endif

EIF_INTEGER GE_ccom_hresult(EIF_POINTER an_exception_code)
{
#ifdef EIF_WINDOWS
	char* stopstring = NULL;
	long result = 0, high_bits = 0, low_bits = 0;
	char high_str[7];
	char* exception_code = (char*)(an_exception_code);

	if (exception_code != NULL) {
		strncpy(high_str, exception_code, 6);
		high_str[6] = '\0';

		high_bits = strtol(high_str, &stopstring, 16);
		low_bits = strtol(exception_code + 6, &stopstring, 16);
		result = (high_bits << 16) + low_bits;
	}
	return (EIF_INTEGER)result;
#else
	return 0;
#endif
}

EIF_INTEGER GE_ccom_hresult_code(EIF_INTEGER an_hresult)
{
#ifdef EIF_WINDOWS
	return HRESULT_CODE(an_hresult);
#else
	return 0;
#endif
}

EIF_INTEGER GE_ccom_hresult_facility(EIF_INTEGER an_hresult)
{
#ifdef EIF_WINDOWS
	return HRESULT_FACILITY(an_hresult);
#else
	return 0;
#endif
}

/*
 * Get text from error `a_code'. It is up to the caller to free
 * the returned buffer using `GE_ccom_local_free'.
 */
EIF_POINTER GE_ccom_error_text(EIF_INTEGER a_code)
{
#ifdef EIF_WINDOWS
	volatile LPVOID result;
	FormatMessage(
		FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
		NULL,
		a_code,
		MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
		(LPTSTR)&result,
		0,
		NULL
		);
	return result;
#else
	return 0;
#endif
}

/*
 * Number of characters in `ptr'.
 */
EIF_INTEGER_32 GE_ccom_strlen(EIF_POINTER ptr)
{
#ifdef EIF_WINDOWS
	return (EIF_INTEGER_32)_tcslen((TCHAR*)ptr);
#else
	return 0;
#endif
}

/*
 * Number of bytes occupied by a TCHAR.
 */
EIF_INTEGER_32 GE_ccom_character_size(void)
{
#ifdef EIF_WINDOWS
	return sizeof(TCHAR);
#else
	return 0;
#endif
}

/*
 * Free `a_ptr' using LocalFree.
 */
void GE_ccom_local_free(EIF_POINTER a_ptr)
{
#ifdef EIF_WINDOWS
	LocalFree((HLOCAL)a_ptr);
#endif
}

#ifdef __cplusplus
}
#endif

#endif
#ifdef __cplusplus
extern "C" {
#endif


#ifdef __cplusplus
}
#endif
