diff options
295 files changed, 2926 insertions, 80457 deletions
diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc index f5878156ebc9..e1ced44236f5 100644 --- a/ObsoleteFiles.inc +++ b/ObsoleteFiles.inc @@ -150,6 +150,50 @@ OLD_FILES+=usr/lib/clang/4.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-x86_ OLD_DIRS+=usr/lib/clang/4.0.0/lib/freebsd OLD_DIRS+=usr/lib/clang/4.0.0/lib OLD_DIRS+=usr/lib/clang/4.0.0 +# 20170426: Remove cy(4) +OLD_FILES+=usr/share/man/man4/cy.4.gz +# 20170425: NATM configuration support removed +OLD_FILES+=etc/rc.d/atm1 +OLD_FILES+=etc/rc.d/atm2 +OLD_FILES+=etc/rc.d/atm3 +# 20170424: NATM support removed +OLD_FILES+=rescue/atmconfig +OLD_FILES+=sbin/atmconfig +OLD_FILES+=usr/include/bsnmp/snmp_atm.h +OLD_FILES+=usr/include/dev/utopia/idtphy.h +OLD_FILES+=usr/include/dev/utopia/suni.h +OLD_FILES+=usr/include/dev/utopia/utopia.h +OLD_FILES+=usr/include/dev/utopia/utopia_priv.h +OLD_DIRS+=usr/include/dev/utopia +OLD_FILES+=usr/include/net/if_atm.h +OLD_FILES+=usr/include/netgraph/atm/ng_atm.h +OLD_FILES+=usr/include/netinet/if_atm.h +OLD_FILES+=usr/include/netnatm/natm.h +OLD_FILES+=usr/lib/debug/sbin/atmconfig.debug +OLD_FILES+=usr/lib/debug/usr/lib/snmp_atm.so.6.debug +OLD_FILES+=usr/lib/snmp_atm.so +OLD_FILES+=usr/lib/snmp_atm.so.6 +OLD_FILES+=usr/share/doc/atm/atmconfig.help +OLD_FILES+=usr/share/doc/atm/atmconfig_device.help +OLD_DIRS+=usr/share/doc/atm +OLD_FILES+=usr/share/man/man3/snmp_atm.3.gz +OLD_FILES+=usr/share/man/man4/en.4.gz +OLD_FILES+=usr/share/man/man4/fatm.4.gz +OLD_FILES+=usr/share/man/man4/hatm.4.gz +OLD_FILES+=usr/share/man/man4/if_en.4.gz +OLD_FILES+=usr/share/man/man4/if_fatm.4.gz +OLD_FILES+=usr/share/man/man4/if_hatm.4.gz +OLD_FILES+=usr/share/man/man4/if_patm.4.gz +OLD_FILES+=usr/share/man/man4/natm.4.gz +OLD_FILES+=usr/share/man/man4/natmip.4.gz +OLD_FILES+=usr/share/man/man4/ng_atm.4.gz +OLD_FILES+=usr/share/man/man4/patm.4.gz +OLD_FILES+=usr/share/man/man4/utopia.4.gz +OLD_FILES+=usr/share/man/man8/atmconfig.8.gz +OLD_FILES+=usr/share/snmp/defs/atm_freebsd.def +OLD_FILES+=usr/share/snmp/defs/atm_tree.def +OLD_FILES+=usr/share/snmp/mibs/BEGEMOT-ATM-FREEBSD-MIB.txt +OLD_FILES+=usr/share/snmp/mibs/BEGEMOT-ATM.txt # 20170420: remove GNU diff OLD_FILES+=usr/share/man/man7/diff.7.gz # 20170322: rename <x> to <x>_test to match the FreeBSD test suite name scheme @@ -2176,8 +2220,12 @@ OLD_FILES+=usr/share/info/am-utils.info.gz OLD_FILES+=usr/share/info/as.info.gz OLD_FILES+=usr/share/info/binutils.info.gz OLD_FILES+=usr/share/info/com_err.info.gz +OLD_FILES+=usr/share/info/cpp.info.gz +OLD_FILES+=usr/share/info/cppinternals.info.gz OLD_FILES+=usr/share/info/diff.info.gz OLD_FILES+=usr/share/info/dir +OLD_FILES+=usr/share/info/gcc.info.gz +OLD_FILES+=usr/share/info/gccint.info.gz OLD_FILES+=usr/share/info/gdb.info.gz OLD_FILES+=usr/share/info/gdbint.info.gz OLD_FILES+=usr/share/info/gperf.info.gz @@ -56,6 +56,11 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 12.x IS SLOW: Please see the 20141231 entry below for information about prerequisites and upgrading, if you are not already using clang 3.5.0 or higher. +20170424: + The NATM framework including the en(4), fatm(4), hatm(4), and + patm(4) devices has been removed. Consumers should plan a + migration before the end-of-life date for FreeBSD 11. + 20170420: GNU diff has been replaced by a BSD licensed diff. Some features of GNU diff has not been implemented, if those are needed a newer version of @@ -76,6 +81,11 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 12.x IS SLOW: installed. To continue using aarch64-binutils, set CROSS_BINUTILS_PREFIX=/usr/local/aarch64-freebsd/bin . +20170405: + The UDP optimization in entry 20160818 that added the sysctl + net.inet.udp.require_l2_bcast has been reverted. L2 broadcast + packets will no longer be treated as L3 broadcast packets. + 20170331: Binds and sends to the loopback addresses, IPv6 and IPv4, will now use any explicitly assigned loopback address available in the jail diff --git a/bin/sh/options.c b/bin/sh/options.c index 56cc5e7397c8..8b501f2d1b6a 100644 --- a/bin/sh/options.c +++ b/bin/sh/options.c @@ -131,7 +131,7 @@ procargs(int argc, char **argv) void optschanged(void) { - setinteractive(iflag); + setinteractive(); #ifndef NO_HISTORY histedit(); #endif diff --git a/bin/sh/tests/expansion/Makefile b/bin/sh/tests/expansion/Makefile index 99ed07fc719f..078220ef990a 100644 --- a/bin/sh/tests/expansion/Makefile +++ b/bin/sh/tests/expansion/Makefile @@ -45,6 +45,7 @@ ${PACKAGE}FILES+= cmdsubst20.0 ${PACKAGE}FILES+= cmdsubst21.0 ${PACKAGE}FILES+= cmdsubst22.0 ${PACKAGE}FILES+= cmdsubst23.0 +${PACKAGE}FILES+= cmdsubst24.0 ${PACKAGE}FILES+= export1.0 ${PACKAGE}FILES+= export2.0 ${PACKAGE}FILES+= export3.0 diff --git a/bin/sh/tests/expansion/cmdsubst24.0 b/bin/sh/tests/expansion/cmdsubst24.0 new file mode 100644 index 000000000000..4b34247d6805 --- /dev/null +++ b/bin/sh/tests/expansion/cmdsubst24.0 @@ -0,0 +1,24 @@ +# $FreeBSD$ +# POSIX leaves the effect of NUL bytes in command substitution output +# unspecified but we have always discarded them. + +failures=0 + +check() { + if [ "$2" != "$3" ]; then + printf "Failed at line %s: got \"%s\" expected \"%s\"\n" "$1" "$2" "$3" + : $((failures += 1)) + fi +} + +fmt='\0a\0 \0b\0c d\0' +assign_builtin=$(printf "$fmt") +check "$LINENO" "$assign_builtin" "a bc d" +assign_pipeline=$(printf "$fmt" | cat) +check "$LINENO" "$assign_pipeline" "a bc d" +set -- $(printf "$fmt") $(printf "$fmt" | cat) "$(printf "$fmt")" "$(printf "$fmt" | cat)" +IFS=@ +splits="$*" +check "$LINENO" "$splits" "a@bc@d@a@bc@d@a bc d@a bc d" + +[ "$failures" = 0 ] diff --git a/bin/sh/trap.c b/bin/sh/trap.c index d67030d370ac..ba643d3485df 100644 --- a/bin/sh/trap.c +++ b/bin/sh/trap.c @@ -478,19 +478,14 @@ dotrap(void) /* - * Controls whether the shell is interactive or not. + * Controls whether the shell is interactive or not based on iflag. */ void -setinteractive(int on) +setinteractive(void) { - static int is_interactive = -1; - - if (on == is_interactive) - return; setsignal(SIGINT); setsignal(SIGQUIT); setsignal(SIGTERM); - is_interactive = on; } diff --git a/bin/sh/trap.h b/bin/sh/trap.h index 8d6cb09c30ba..b9c43f336141 100644 --- a/bin/sh/trap.h +++ b/bin/sh/trap.h @@ -43,6 +43,6 @@ void ignoresig(int); int issigchldtrapped(void); void onsig(int); void dotrap(void); -void setinteractive(int); +void setinteractive(void); void exitshell(int) __dead2; void exitshell_savedstatus(void) __dead2; diff --git a/cddl/contrib/opensolaris/cmd/zfs/zfs.8 b/cddl/contrib/opensolaris/cmd/zfs/zfs.8 index 115bab75ccf4..677b559644ba 100644 --- a/cddl/contrib/opensolaris/cmd/zfs/zfs.8 +++ b/cddl/contrib/opensolaris/cmd/zfs/zfs.8 @@ -180,12 +180,12 @@ .Ar bookmark .Nm .Cm send -.Op Fl DnPpRveL +.Op Fl DLPRcenpv .Op Fl i Ar snapshot | Fl I Ar snapshot .Ar snapshot .Nm .Cm send -.Op Fl eL +.Op Fl Lce .Op Fl i Ar snapshot Ns | Ns bookmark .Ar filesystem Ns | Ns Ar volume Ns | Ns Ar snapshot .Nm @@ -2535,7 +2535,7 @@ feature. .It Xo .Nm .Cm send -.Op Fl DnPpRveL +.Op Fl DLPRcenpv .Op Fl i Ar snapshot | Fl I Ar snapshot .Ar snapshot .Xc @@ -2580,7 +2580,7 @@ The incremental source may be specified as with the .Fl i option. -.It Fl R +.It Fl R, -replicate Generate a replication stream package, which will replicate the specified filesystem, and all descendent file systems, up to the named snapshot. When received, all properties, snapshots, descendent file systems, and clones are @@ -2598,7 +2598,7 @@ is received. If the .Fl F flag is specified when this stream is received, snapshots and file systems that do not exist on the sending side are destroyed. -.It Fl D +.It Fl D, -dedup Generate a deduplicated stream. Blocks which would have been sent multiple times in the send stream will only be sent once. The receiving system must also support this feature to receive a deduplicated stream. This flag can @@ -2607,7 +2607,7 @@ be used regardless of the dataset's property, but performance will be much better if the filesystem uses a dedup-capable checksum (eg. .Sy sha256 ) . -.It Fl L +.It Fl L, -large-block Generate a stream which may contain blocks larger than 128KB. This flag has no effect if the @@ -2623,7 +2623,7 @@ See for details on ZFS feature flags and the .Sy large_blocks feature. -.It Fl e +.It Fl e, -embed Generate a more compact stream by using WRITE_EMBEDDED records for blocks which are stored more compactly on disk by the .Sy embedded_data @@ -2646,11 +2646,25 @@ See for details on ZFS feature flags and the .Sy embedded_data feature. -.It Fl p +.It Fl c, -compressed +Generate a more compact stream by using compressed WRITE records for blocks +which are compressed on disk and in memory (see the +.Sy compression property for details). If the +.Sy lz4_compress +feature is active on the sending system, then the receiving system must have that +feature enabled as well. If the +.Sy large_blocks +feature is enabled on the sending system but the +.Fl L +option is not supplied in conjunction with +.Fl c +then the data will be decompressed before sending so it can be split +into smaller block sizes. +.It Fl p, -props Include the dataset's properties in the stream. This flag is implicit when .Fl R is specified. The receiving system must also support this feature. -.It Fl n +.It Fl n, -dryrun Do a dry-run ("No-op") send. Do not generate any actual send data. This is useful in conjunction with the .Fl v @@ -2660,9 +2674,9 @@ flags to determine what data will be sent. In this case, the verbose output will be written to standard output (contrast with a non-dry-run, where the stream is written to standard output and the verbose output goes to standard error). -.It Fl P +.It Fl P, -parsable Print machine-parsable verbose information about the stream package generated. -.It Fl v +.It Fl v, -verbose Print verbose information about the stream package generated. This information includes a per-second report of how much data has been sent. .El @@ -2673,7 +2687,7 @@ on future versions of .It Xo .Nm .Cm send -.Op Fl eL +.Op Fl Lce .Op Fl i Ar snapshot Ns | Ns Ar bookmark .Ar filesystem Ns | Ns Ar volume Ns | Ns Ar snapshot .Xc @@ -2699,7 +2713,7 @@ specified as the last component of the name If the incremental target is a clone, the incremental source can be the origin snapshot, or an earlier snapshot in the origin's filesystem, or the origin's origin, etc. -.It Fl L +.It Fl L, -large-block Generate a stream which may contain blocks larger than 128KB. This flag has no effect if the @@ -2715,7 +2729,22 @@ See for details on ZFS feature flags and the .Sy large_blocks feature. -.It Fl e +.It Fl c, -compressed +Generate a more compact stream by using compressed WRITE records for blocks +which are compressed on disk and in memory (see the +.Sy compression +property for details). If the +.Sy lz4_compress +feature is active on the sending system, then the receiving system must have +that feature enabled as well. If the +.Sy large_blocks +feature is enabled on the sending system but the +.Fl L +option is not supplied in conjunction with +.Fl c +then the data will be decompressed before sending so it can be split +into smaller block sizes. +.It Fl e, -embed Generate a more compact stream by using WRITE_EMBEDDED records for blocks which are stored more compactly on disk by the .Sy embedded_data diff --git a/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c b/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c index 3dfd76b0e638..39d3802c910b 100644 --- a/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c +++ b/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c @@ -35,6 +35,7 @@ #include <assert.h> #include <ctype.h> #include <errno.h> +#include <getopt.h> #include <libgen.h> #include <libintl.h> #include <libuutil.h> @@ -278,7 +279,7 @@ get_usage(zfs_help_t idx) case HELP_ROLLBACK: return (gettext("\trollback [-rRf] <snapshot>\n")); case HELP_SEND: - return (gettext("\tsend [-DnPpRvLe] [-[iI] snapshot] " + return (gettext("\tsend [-DnPpRvLec] [-[iI] snapshot] " "<snapshot>\n" "\tsend [-Le] [-i snapshot|bookmark] " "<filesystem|volume|snapshot>\n" @@ -3771,8 +3772,23 @@ zfs_do_send(int argc, char **argv) nvlist_t *dbgnv = NULL; boolean_t extraverbose = B_FALSE; + struct option long_options[] = { + {"replicate", no_argument, NULL, 'R'}, + {"props", no_argument, NULL, 'p'}, + {"parsable", no_argument, NULL, 'P'}, + {"dedup", no_argument, NULL, 'D'}, + {"verbose", no_argument, NULL, 'v'}, + {"dryrun", no_argument, NULL, 'n'}, + {"large-block", no_argument, NULL, 'L'}, + {"embed", no_argument, NULL, 'e'}, + {"resume", required_argument, NULL, 't'}, + {"compressed", no_argument, NULL, 'c'}, + {0, 0, 0, 0} + }; + /* check options */ - while ((c = getopt(argc, argv, ":i:I:RDpvnPLet:")) != -1) { + while ((c = getopt_long(argc, argv, ":i:I:RbDpvnPLet:c", long_options, + NULL)) != -1) { switch (c) { case 'i': if (fromname) @@ -3816,12 +3832,17 @@ zfs_do_send(int argc, char **argv) case 't': resume_token = optarg; break; + case 'c': + flags.compress = B_TRUE; + break; case ':': (void) fprintf(stderr, gettext("missing argument for " "'%c' option\n"), optopt); usage(B_FALSE); break; case '?': + /*FALLTHROUGH*/ + default: (void) fprintf(stderr, gettext("invalid option '%c'\n"), optopt); usage(B_FALSE); @@ -3892,6 +3913,8 @@ zfs_do_send(int argc, char **argv) lzc_flags |= LZC_SEND_FLAG_LARGE_BLOCK; if (flags.embed_data) lzc_flags |= LZC_SEND_FLAG_EMBED_DATA; + if (flags.compress) + lzc_flags |= LZC_SEND_FLAG_COMPRESS; if (fromname != NULL && (fromname[0] == '#' || fromname[0] == '@')) { diff --git a/cddl/contrib/opensolaris/cmd/zstreamdump/zstreamdump.c b/cddl/contrib/opensolaris/cmd/zstreamdump/zstreamdump.c index 32e370dde374..54edb566ad2f 100644 --- a/cddl/contrib/opensolaris/cmd/zstreamdump/zstreamdump.c +++ b/cddl/contrib/opensolaris/cmd/zstreamdump/zstreamdump.c @@ -25,8 +25,8 @@ */ /* - * Copyright (c) 2013, 2014 by Delphix. All rights reserved. * Copyright (c) 2014 Integros [integros.com] + * Copyright (c) 2013, 2015 by Delphix. All rights reserved. */ #include <ctype.h> @@ -39,6 +39,7 @@ #include <sys/dmu.h> #include <sys/zfs_ioctl.h> +#include <sys/zio.h> #include <zfs_fletcher.h> /* @@ -251,6 +252,7 @@ main(int argc, char *argv[]) (void) fprintf(stderr, "invalid option '%c'\n", optopt); usage(); + break; } } @@ -453,38 +455,50 @@ main(int argc, char *argv[]) drrw->drr_object = BSWAP_64(drrw->drr_object); drrw->drr_type = BSWAP_32(drrw->drr_type); drrw->drr_offset = BSWAP_64(drrw->drr_offset); - drrw->drr_length = BSWAP_64(drrw->drr_length); + drrw->drr_logical_size = + BSWAP_64(drrw->drr_logical_size); drrw->drr_toguid = BSWAP_64(drrw->drr_toguid); drrw->drr_key.ddk_prop = BSWAP_64(drrw->drr_key.ddk_prop); + drrw->drr_compressed_size = + BSWAP_64(drrw->drr_compressed_size); } + + uint64_t payload_size = DRR_WRITE_PAYLOAD_SIZE(drrw); + /* * If this is verbose and/or dump output, * print info on the modified block */ if (verbose) { (void) printf("WRITE object = %llu type = %u " - "checksum type = %u\n" - " offset = %llu length = %llu " + "checksum type = %u compression type = %u\n" + " offset = %llu logical_size = %llu " + "compressed_size = %llu " + "payload_size = %llu " "props = %llx\n", (u_longlong_t)drrw->drr_object, drrw->drr_type, drrw->drr_checksumtype, + drrw->drr_compressiontype, (u_longlong_t)drrw->drr_offset, - (u_longlong_t)drrw->drr_length, + (u_longlong_t)drrw->drr_logical_size, + (u_longlong_t)drrw->drr_compressed_size, + (u_longlong_t)payload_size, (u_longlong_t)drrw->drr_key.ddk_prop); } + /* * Read the contents of the block in from STDIN to buf */ - (void) ssread(buf, drrw->drr_length, &zc); + (void) ssread(buf, payload_size, &zc); /* * If in dump mode */ if (dump) { - print_block(buf, drrw->drr_length); + print_block(buf, payload_size); } - total_write_size += drrw->drr_length; + total_write_size += payload_size; break; case DRR_WRITE_BYREF: diff --git a/cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h b/cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h index 1aa64aab462a..937e9b2c8592 100644 --- a/cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h +++ b/cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h @@ -616,6 +616,9 @@ typedef struct sendflags { /* WRITE_EMBEDDED records of type DATA are permitted */ boolean_t embed_data; + + /* compressed WRITE records are permitted */ + boolean_t compress; } sendflags_t; typedef boolean_t (snapfilter_cb_t)(zfs_handle_t *, void *); diff --git a/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c b/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c index 3b315b7a530c..034a9fbe60a3 100644 --- a/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c +++ b/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c @@ -354,8 +354,10 @@ cksummer(void *arg) { struct drr_write *drrw = &drr->drr_u.drr_write; dataref_t dataref; + uint64_t payload_size; - (void) ssread(buf, drrw->drr_length, ofp); + payload_size = DRR_WRITE_PAYLOAD_SIZE(drrw); + (void) ssread(buf, payload_size, ofp); /* * Use the existing checksum if it's dedup-capable, @@ -369,7 +371,7 @@ cksummer(void *arg) zio_cksum_t tmpsha256; SHA256Init(&ctx); - SHA256Update(&ctx, buf, drrw->drr_length); + SHA256Update(&ctx, buf, payload_size); SHA256Final(&tmpsha256, &ctx); drrw->drr_key.ddk_cksum.zc_word[0] = BE_64(tmpsha256.zc_word[0]); @@ -399,7 +401,7 @@ cksummer(void *arg) wbr_drrr->drr_object = drrw->drr_object; wbr_drrr->drr_offset = drrw->drr_offset; - wbr_drrr->drr_length = drrw->drr_length; + wbr_drrr->drr_length = drrw->drr_logical_size; wbr_drrr->drr_toguid = drrw->drr_toguid; wbr_drrr->drr_refguid = dataref.ref_guid; wbr_drrr->drr_refobject = @@ -421,7 +423,7 @@ cksummer(void *arg) goto out; } else { /* block not previously seen */ - if (dump_record(drr, buf, drrw->drr_length, + if (dump_record(drr, buf, payload_size, &stream_cksum, outfd) != 0) goto out; } @@ -924,7 +926,7 @@ typedef struct send_dump_data { uint64_t prevsnap_obj; boolean_t seenfrom, seento, replicate, doall, fromorigin; boolean_t verbose, dryrun, parsable, progress, embed_data, std_out; - boolean_t large_block; + boolean_t large_block, compress; int outfd; boolean_t err; nvlist_t *fss; @@ -940,7 +942,7 @@ typedef struct send_dump_data { static int estimate_ioctl(zfs_handle_t *zhp, uint64_t fromsnap_obj, - boolean_t fromorigin, uint64_t *sizep) + boolean_t fromorigin, enum lzc_send_flags flags, uint64_t *sizep) { zfs_cmd_t zc = { 0 }; libzfs_handle_t *hdl = zhp->zfs_hdl; @@ -953,6 +955,7 @@ estimate_ioctl(zfs_handle_t *zhp, uint64_t fromsnap_obj, zc.zc_sendobj = zfs_prop_get_int(zhp, ZFS_PROP_OBJSETID); zc.zc_fromobj = fromsnap_obj; zc.zc_guid = 1; /* estimate flag */ + zc.zc_flags = flags; if (zfs_ioctl(zhp->zfs_hdl, ZFS_IOC_SEND, &zc) != 0) { char errbuf[1024]; @@ -1192,6 +1195,7 @@ dump_snapshot(zfs_handle_t *zhp, void *arg) progress_arg_t pa = { 0 }; pthread_t tid; char *thissnap; + enum lzc_send_flags flags = 0; int err; boolean_t isfromsnap, istosnap, fromorigin; boolean_t exclude = B_FALSE; @@ -1220,6 +1224,13 @@ dump_snapshot(zfs_handle_t *zhp, void *arg) if (istosnap) sdd->seento = B_TRUE; + if (sdd->large_block) + flags |= LZC_SEND_FLAG_LARGE_BLOCK; + if (sdd->embed_data) + flags |= LZC_SEND_FLAG_EMBED_DATA; + if (sdd->compress) + flags |= LZC_SEND_FLAG_COMPRESS; + if (!sdd->doall && !isfromsnap && !istosnap) { if (sdd->replicate) { char *snapname; @@ -1266,7 +1277,7 @@ dump_snapshot(zfs_handle_t *zhp, void *arg) if (sdd->verbose) { uint64_t size = 0; (void) estimate_ioctl(zhp, sdd->prevsnap_obj, - fromorigin, &size); + fromorigin, flags, &size); send_print_verbose(fout, zhp->zfs_name, sdd->prevsnap[0] ? sdd->prevsnap : NULL, @@ -1291,12 +1302,6 @@ dump_snapshot(zfs_handle_t *zhp, void *arg) } } - enum lzc_send_flags flags = 0; - if (sdd->large_block) - flags |= LZC_SEND_FLAG_LARGE_BLOCK; - if (sdd->embed_data) - flags |= LZC_SEND_FLAG_EMBED_DATA; - err = dump_ioctl(zhp, sdd->prevsnap, sdd->prevsnap_obj, fromorigin, sdd->outfd, flags, sdd->debugnv); @@ -1602,8 +1607,12 @@ zfs_send_resume(libzfs_handle_t *hdl, sendflags_t *flags, int outfd, fromguid = 0; (void) nvlist_lookup_uint64(resume_nvl, "fromguid", &fromguid); + if (flags->largeblock || nvlist_exists(resume_nvl, "largeblockok")) + lzc_flags |= LZC_SEND_FLAG_LARGE_BLOCK; if (flags->embed_data || nvlist_exists(resume_nvl, "embedok")) lzc_flags |= LZC_SEND_FLAG_EMBED_DATA; + if (flags->compress || nvlist_exists(resume_nvl, "compressok")) + lzc_flags |= LZC_SEND_FLAG_COMPRESS; if (guid_to_name(hdl, toname, toguid, B_FALSE, name) != 0) { if (zfs_dataset_exists(hdl, toname, ZFS_TYPE_DATASET)) { @@ -1636,7 +1645,8 @@ zfs_send_resume(libzfs_handle_t *hdl, sendflags_t *flags, int outfd, if (flags->verbose) { uint64_t size = 0; - error = lzc_send_space(zhp->zfs_name, fromname, &size); + error = lzc_send_space(zhp->zfs_name, fromname, + lzc_flags, &size); if (error == 0) size = MAX(0, (int64_t)(size - bytes)); send_print_verbose(stderr, zhp->zfs_name, fromname, @@ -1866,6 +1876,7 @@ zfs_send(zfs_handle_t *zhp, const char *fromsnap, const char *tosnap, sdd.dryrun = flags->dryrun; sdd.large_block = flags->largeblock; sdd.embed_data = flags->embed_data; + sdd.compress = flags->compress; sdd.filter_cb = filter_func; sdd.filter_cb_arg = cb_arg; if (debugnvp) @@ -2960,11 +2971,17 @@ recv_skip(libzfs_handle_t *hdl, int fd, boolean_t byteswap) case DRR_WRITE: if (byteswap) { - drr->drr_u.drr_write.drr_length = - BSWAP_64(drr->drr_u.drr_write.drr_length); + drr->drr_u.drr_write.drr_logical_size = + BSWAP_64( + drr->drr_u.drr_write.drr_logical_size); + drr->drr_u.drr_write.drr_compressed_size = + BSWAP_64( + drr->drr_u.drr_write.drr_compressed_size); } + uint64_t payload_size = + DRR_WRITE_PAYLOAD_SIZE(&drr->drr_u.drr_write); (void) recv_read(hdl, fd, buf, - drr->drr_u.drr_write.drr_length, B_FALSE, NULL); + payload_size, B_FALSE, NULL); break; case DRR_SPILL: if (byteswap) { diff --git a/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.c b/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.c index ee3158b4f811..6693d789af4d 100644 --- a/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.c +++ b/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.c @@ -534,6 +534,8 @@ lzc_send_resume(const char *snapname, const char *from, int fd, fnvlist_add_boolean(args, "largeblockok"); if (flags & LZC_SEND_FLAG_EMBED_DATA) fnvlist_add_boolean(args, "embedok"); + if (flags & LZC_SEND_FLAG_COMPRESS) + fnvlist_add_boolean(args, "compressok"); if (resumeobj != 0 || resumeoff != 0) { fnvlist_add_uint64(args, "resume_object", resumeobj); fnvlist_add_uint64(args, "resume_offset", resumeoff); @@ -559,7 +561,8 @@ lzc_send_resume(const char *snapname, const char *from, int fd, * an equivalent snapshot. */ int -lzc_send_space(const char *snapname, const char *from, uint64_t *spacep) +lzc_send_space(const char *snapname, const char *from, + enum lzc_send_flags flags, uint64_t *spacep) { nvlist_t *args; nvlist_t *result; @@ -568,6 +571,12 @@ lzc_send_space(const char *snapname, const char *from, uint64_t *spacep) args = fnvlist_alloc(); if (from != NULL) fnvlist_add_string(args, "from", from); + if (flags & LZC_SEND_FLAG_LARGE_BLOCK) + fnvlist_add_boolean(args, "largeblockok"); + if (flags & LZC_SEND_FLAG_EMBED_DATA) + fnvlist_add_boolean(args, "embedok"); + if (flags & LZC_SEND_FLAG_COMPRESS) + fnvlist_add_boolean(args, "compressok"); err = lzc_ioctl(ZFS_IOC_SEND_SPACE, snapname, args, &result); nvlist_free(args); if (err == 0) diff --git a/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.h b/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.h index 8ff00cc2ddf7..8f19294e3432 100644 --- a/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.h +++ b/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.h @@ -62,13 +62,14 @@ int lzc_get_holds(const char *, nvlist_t **); enum lzc_send_flags { LZC_SEND_FLAG_EMBED_DATA = 1 << 0, - LZC_SEND_FLAG_LARGE_BLOCK = 1 << 1 + LZC_SEND_FLAG_LARGE_BLOCK = 1 << 1, + LZC_SEND_FLAG_COMPRESS = 1 << 2 }; int lzc_send(const char *, const char *, int, enum lzc_send_flags); int lzc_send_resume(const char *, const char *, int, enum lzc_send_flags, uint64_t, uint64_t); -int lzc_send_space(const char *, const char *, uint64_t *); +int lzc_send_space(const char *, const char *, enum lzc_send_flags, uint64_t *); struct dmu_replay_record; diff --git a/contrib/elftoolchain/elfcopy/main.c b/contrib/elftoolchain/elfcopy/main.c index b85845a628b4..5d9290fbc6e9 100644 --- a/contrib/elftoolchain/elfcopy/main.c +++ b/contrib/elftoolchain/elfcopy/main.c @@ -1285,8 +1285,9 @@ parse_symlist_file(struct elfcopy *ecp, const char *fn, unsigned int op) err(EXIT_FAILURE, "can not open %s", fn); if ((data = malloc(sb.st_size + 1)) == NULL) err(EXIT_FAILURE, "malloc failed"); - if (fread(data, 1, sb.st_size, fp) == 0 || ferror(fp)) - err(EXIT_FAILURE, "fread failed"); + if (sb.st_size > 0) + if (fread(data, sb.st_size, 1, fp) != 1) + err(EXIT_FAILURE, "fread failed"); fclose(fp); data[sb.st_size] = '\0'; diff --git a/contrib/netbsd-tests/usr.bin/grep/t_grep.sh b/contrib/netbsd-tests/usr.bin/grep/t_grep.sh index d2e2f5e51031..0d0e99f6e1d0 100755 --- a/contrib/netbsd-tests/usr.bin/grep/t_grep.sh +++ b/contrib/netbsd-tests/usr.bin/grep/t_grep.sh @@ -159,12 +159,6 @@ context_head() } context_body() { - # Begin FreeBSD - grep_type - if [ $? -eq $GREP_TYPE_BSD ]; then - atf_expect_fail "this test doesn't pass with BSD grep yet" - fi - # End FreeBSD cp $(atf_get_srcdir)/d_context_*.* . atf_check -o file:d_context_a.out grep -C2 bamboo d_context_a.in @@ -226,12 +220,6 @@ context2_head() } context2_body() { - # Begin FreeBSD - grep_type - if [ $? -eq $GREP_TYPE_BSD ]; then - atf_expect_fail "this test doesn't pass with BSD grep yet" - fi - # End FreeBSD printf "haddock\000cod\000plaice\000" > test1 printf "mackeral\000cod\000crab\000" > test2 @@ -391,6 +379,66 @@ zerolen_body() atf_check -o inline:"Eggs\nCheese\n" grep -v -e "^$" test1 } + +atf_test_case fgrep_sanity +fgrep_sanity_head() +{ + atf_set "descr" "Check for fgrep sanity, literal expressions only" +} +fgrep_sanity_body() +{ + printf "Foo" > test1 + + atf_check -o inline:"Foo\n" fgrep -e "Foo" test1 + + atf_check -s exit:1 -o empty fgrep -e "Fo." test1 +} + +atf_test_case egrep_sanity +egrep_sanity_head() +{ + atf_set "descr" "Check for egrep sanity, EREs only" +} +egrep_sanity_body() +{ + printf "Foobar(ed)" > test1 + printf "M{1}" > test2 + + atf_check -o inline:"Foo\n" egrep -o -e "F.." test1 + + atf_check -o inline:"Foobar\n" egrep -o -e "F[a-z]*" test1 + + atf_check -o inline:"Fo\n" egrep -o -e "F(o|p)" test1 + + atf_check -o inline:"(ed)\n" egrep -o -e "\(ed\)" test1 + + atf_check -o inline:"M\n" egrep -o -e "M{1}" test2 + + atf_check -o inline:"M{1}\n" egrep -o -e "M\{1\}" test2 +} + +atf_test_case grep_sanity +grep_sanity_head() +{ + atf_set "descr" "Check for basic grep sanity, BREs only" +} +grep_sanity_body() +{ + printf "Foobar(ed)" > test1 + printf "M{1}" > test2 + + atf_check -o inline:"Foo\n" grep -o -e "F.." test1 + + atf_check -o inline:"Foobar\n" grep -o -e "F[a-z]*" test1 + + atf_check -o inline:"Fo\n" grep -o -e "F\(o\)" test1 + + atf_check -o inline:"(ed)\n" grep -o -e "(ed)" test1 + + atf_check -o inline:"M{1}\n" grep -o -e "M{1}" test2 + + atf_check -o inline:"M\n" grep -o -e "M\{1\}" test2 +} # End FreeBSD atf_init_test_cases() @@ -419,5 +467,8 @@ atf_init_test_cases() atf_add_test_case escmap atf_add_test_case egrep_empty_invalid atf_add_test_case zerolen + atf_add_test_case fgrep_sanity + atf_add_test_case egrep_sanity + atf_add_test_case grep_sanity # End FreeBSD } diff --git a/contrib/tcpdump/tcpdump.c b/contrib/tcpdump/tcpdump.c index 202dce2b859b..527f39d92e47 100644 --- a/contrib/tcpdump/tcpdump.c +++ b/contrib/tcpdump/tcpdump.c @@ -1085,9 +1085,9 @@ open_interface(const char *device, netdissect_options *ndo, char *ebuf) /* * Return an error for our caller to handle. */ - pcap_close(pc); snprintf(ebuf, PCAP_ERRBUF_SIZE, "%s: %s\n(%s)", device, pcap_statustostr(status), cp); + pcap_close(pc); return (NULL); } else if (status == PCAP_ERROR_PERM_DENIED && *cp != '\0') error("%s: %s\n(%s)", device, diff --git a/etc/defaults/rc.conf b/etc/defaults/rc.conf index b79f3831f7d2..b8ae9596e6bb 100644 --- a/etc/defaults/rc.conf +++ b/etc/defaults/rc.conf @@ -408,7 +408,6 @@ defaultrouter="NO" # Set to default gateway (or NO). static_arp_pairs="" # Set to static ARP list (or leave empty). static_ndp_pairs="" # Set to static NDP list (or leave empty). static_routes="" # Set to static route list (or leave empty). -natm_static_routes="" # Set to static route list for NATM (or leave empty). gateway_enable="NO" # Set to YES if this host will be a gateway. routed_enable="NO" # Set to YES to enable a routing daemon. routed_program="/sbin/routed" # Name of routing daemon to use if enabled. @@ -417,17 +416,6 @@ arpproxy_all="NO" # replaces obsolete kernel option ARP_PROXYALL. forward_sourceroute="NO" # do source routing (only if gateway_enable is set to "YES") accept_sourceroute="NO" # accept source routed packets to us -### ATM interface options: ### -atm_enable="NO" # Configure ATM interfaces (or NO). -#atm_netif_hea0="atm 1" # Network interfaces for physical interface. -#atm_sigmgr_hea0="uni31" # Signalling manager for physical interface. -#atm_prefix_hea0="ILMI" # NSAP prefix (UNI interfaces only) (or ILMI). -#atm_macaddr_hea0="NO" # Override physical MAC address (or NO). -#atm_arpserver_atm0="0x47.0005.80.999999.9999.9999.9999.999999999999.00" # ATMARP server address (or local). -#atm_scsparp_atm0="NO" # Run SCSP/ATMARP on network interface (or NO). -atm_pvcs="" # Set to PVC list (or leave empty). -atm_arps="" # Set to permanent ARP list (or leave empty). - ### Bluetooth ### hcsecd_enable="NO" # Enable hcsecd(8) (or NO) hcsecd_config="/etc/bluetooth/hcsecd.conf" # hcsecd(8) configuration file diff --git a/etc/mtree/BSD.usr.dist b/etc/mtree/BSD.usr.dist index 95a55200c857..5869e4698bd4 100644 --- a/etc/mtree/BSD.usr.dist +++ b/etc/mtree/BSD.usr.dist @@ -189,8 +189,6 @@ .. atf .. - atm - .. legal .. llvm diff --git a/etc/netstart b/etc/netstart index a0c595c375a6..fa4ce382e4ff 100755 --- a/etc/netstart +++ b/etc/netstart @@ -44,9 +44,6 @@ _start=quietstart /etc/rc.d/ipnat ${_start} /etc/rc.d/ipfs ${_start} /etc/rc.d/sppp ${_start} -# /etc/rc.d/atm1 ${_start} -# . /etc/rc.d/atm2.sh ${_start} -# . /etc/rc.d/atm3.sh ${_start} /etc/rc.d/netif ${_start} /etc/rc.d/ipsec ${_start} /etc/rc.d/ppp ${_start} diff --git a/etc/network.subr b/etc/network.subr index 2410e2d3c7bf..3ae66c667cd5 100644 --- a/etc/network.subr +++ b/etc/network.subr @@ -489,13 +489,6 @@ afexists() inet|inet6) check_kern_features ${_af} ;; - atm) - if [ -x /sbin/atmconfig ]; then - /sbin/atmconfig diag list > /dev/null 2>&1 - else - return 1 - fi - ;; link|ether) return 0 ;; diff --git a/etc/rc.d/Makefile b/etc/rc.d/Makefile index 320e550aeb8a..01e21415d53c 100644 --- a/etc/rc.d/Makefile +++ b/etc/rc.d/Makefile @@ -159,14 +159,6 @@ APM+= apmd APMPACKAGE= apm .endif -.if ${MK_ATM} != "no" -FILESGROUPS+= ATM -ATM+= atm1 -ATM+= atm2 -ATM+= atm3 -ATMPACKAGE= atm -.endif - .if ${MK_AUTOFS} != "no" FILES+= automount FILES+= automountd diff --git a/etc/rc.d/atm1 b/etc/rc.d/atm1 deleted file mode 100755 index da50df0a9e95..000000000000 --- a/etc/rc.d/atm1 +++ /dev/null @@ -1,176 +0,0 @@ -#!/bin/sh -# -# Copyright (c) 2000 The FreeBSD Project -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -# SUCH DAMAGE. -# -# $FreeBSD$ -# - -# PROVIDE: atm1 -# REQUIRE: root -# BEFORE: netif -# KEYWORD: nojail - -. /etc/rc.subr - -name="atm" -rcvar="atm_enable" -start_cmd="atm_start" -stop_cmd=":" - -# ATM networking startup script -# -# Initial interface configuration. -# N.B. /usr is not mounted. -# -atm_start() -{ - if [ -n "${natm_interfaces}" ] ; then - # Load the HARP pseudo interface - load_kld if_harp || return 1 - - # Load all the NATM drivers that we need - for natm in ${natm_interfaces} ; do - ifconfig ${natm} up - done - fi - - # Load loadable HARP drivers - for dev in ${atm_load} ; do - load_kld ${dev} || return 1 - done - - # Locate all probed ATM adapters - atmdev=`atm sh stat int | while read dev junk; do - case ${dev} in - hea[0-9] | hea[0-9][0-9]) - echo "${dev} " - ;; - hfa[0-9] | hfa[0-9][0-9]) - echo "${dev} " - ;; - idt[0-9] | idt[0-9][0-9]) - echo "${dev} " - ;; - - # NATM interfaces per pseudo driver - en[0-9] | en[0-9][0-9]) - echo "${dev} " - ;; - fatm[0-9] | fatm[0-9][0-9]) - echo "${dev} " - ;; - hatm[0-9] | hatm[0-9][0-9]) - echo "${dev} " - ;; - patm[0-9] | patm[0-9][0-9]) - echo "${dev} " - ;; - *) - continue - ;; - esac - done` - - if [ -z "${atmdev}" ]; then - echo 'No ATM adapters found' - return 0 - fi - - # Load microcode into FORE adapters (if needed) - if [ `expr "${atmdev}" : '.*hfa.*'` -ne 0 ]; then - fore_dnld - fi - - # Configure physical interfaces - ilmid=0 - for phy in ${atmdev}; do - echo -n "Configuring ATM device ${phy}:" - - # Define network interfaces - eval netif_args=\$atm_netif_${phy} - if [ -n "${netif_args}" ]; then - atm set netif ${phy} ${netif_args} || continue - else - echo ' missing network interface definition' - continue - fi - - # Override physical MAC address - eval macaddr_args=\$atm_macaddr_${phy} - if [ -n "${macaddr_args}" ]; then - case ${macaddr_args} in - [Nn][Oo] | '') - ;; - *) - atm set mac ${phy} ${macaddr_args} || continue - ;; - esac - fi - - # Configure signalling manager - eval sigmgr_args=\$atm_sigmgr_${phy} - if [ -n "${sigmgr_args}" ]; then - atm attach ${phy} ${sigmgr_args} || continue - else - echo ' missing signalling manager definition' - continue - fi - - # Configure UNI NSAP prefix - eval prefix_args=\$atm_prefix_${phy} - if [ `expr "${sigmgr_args}" : '[uU][nN][iI].*'` -ne 0 ]; then - if [ -z "${prefix_args}" ]; then - echo ' missing NSAP prefix for UNI interface' - continue - fi - - case ${prefix_args} in - ILMI) - ilmid=1 - ;; - *) - atm set prefix ${phy} ${prefix_args} || continue - ;; - esac - fi - - atm_phy="${atm_phy} ${phy}" - echo '.' - done - - echo -n 'Starting initial ATM daemons:' - # Start ILMI daemon (if needed) - case ${ilmid} in - 1) - echo -n ' ilmid' - ilmid - ;; - esac - - echo '.' -} - -load_rc_config $name -run_rc_command "$1" diff --git a/etc/rc.d/atm2 b/etc/rc.d/atm2 deleted file mode 100755 index ffb63c35aef5..000000000000 --- a/etc/rc.d/atm2 +++ /dev/null @@ -1,97 +0,0 @@ -#!/bin/sh -# -# Copyright (c) 2000 The FreeBSD Project -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -# SUCH DAMAGE. -# -# $FreeBSD$ -# - -# PROVIDE: atm2 -# REQUIRE: atm1 netif -# BEFORE: routing -# KEYWORD: nojail - -# -# Additional ATM interface configuration -# -. /etc/rc.subr - -name="atm2" -rcvar="atm_enable" -start_cmd="atm2_start" -stop_cmd=":" - -atm2_start() -{ - # Configure network interfaces - - # get a list of physical interfaces - atm_phy=`atm show stat int | { read junk ; read junk ; \ - while read dev junk ; do - case ${dev} in - en[0-9] | en[0-9][0-9]) - ;; - *) - echo "${dev} " - ;; - esac - done ; }` - - for phy in ${atm_phy}; do - eval netif_args=\$atm_netif_${phy} - set -- ${netif_args} - # skip unused physical interfaces - if [ $# -lt 2 ] ; then - continue - fi - - netname=$1 - netcnt=$2 - netindx=0 - while [ ${netindx} -lt ${netcnt} ]; do - net="${netname}${netindx}" - netindx=$((${netindx} + 1)) - echo -n " ${net}" - - # Configure atmarp server - eval atmarp_args=\$atm_arpserver_${net} - if [ -n "${atmarp_args}" ]; then - atm set arpserver ${net} ${atmarp_args} || - continue - fi - done - done - echo '.' - - # Define any permanent ARP entries. - if [ -n "${atm_arps}" ]; then - for i in ${atm_arps}; do - eval arp_args=\$atm_arp_${i} - atm add arp ${arp_args} - done - fi -} - -load_rc_config $name -run_rc_command "$1" diff --git a/etc/rc.d/atm3 b/etc/rc.d/atm3 deleted file mode 100755 index 4dbd128b8e85..000000000000 --- a/etc/rc.d/atm3 +++ /dev/null @@ -1,93 +0,0 @@ -#!/bin/sh -# -# Copyright (c) 2000 The FreeBSD Project -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -# SUCH DAMAGE. -# -# $FreeBSD$ -# - -# Start ATM daemons - -# PROVIDE: atm3 -# REQUIRE: atm2 -# BEFORE: DAEMON -# KEYWORD: nojail - -. /etc/rc.subr - -name="atm3" -rcvar="atm_enable" -start_cmd="atm3_start" -stop_cmd=":" - -atm3_start() -{ - echo -n 'Starting ATM daemons:' - - # Get a list of network interfaces - atm_nif=`atm sh netif | { read junk ; \ - while read dev junk ; do - echo "${dev} " - done - }` - - for net in ${atm_nif} ; do - eval atmarp_args=\$atm_arpserver_${net} - eval scsparp_args=\$atm_scsparp_${net} - - case ${scsparp_args} in - [Yy][Ee][Ss]) - case ${atmarp_args} in - local) - ;; - *) - warn "${net}: local arpserver required for SCSP" - continue - ;; - esac - - atm_atmarpd="${atm_atmarpd} ${net}" - atm_scspd=1 - ;; - esac - done - - # Start SCSP daemon (if needed) - case ${atm_scspd} in - 1) - echo -n ' scspd' - scspd - ;; - esac - - # Start ATMARP daemon (if needed) - if [ -n "${atm_atmarpd}" ]; then - echo -n ' atmarpd' - atmarpd ${atm_atmarpd} - fi - echo '.' -} - -load_rc_config $name -run_rc_command "$1" diff --git a/etc/rc.d/routing b/etc/rc.d/routing index 2a57fa3b1182..10cb48319a08 100755 --- a/etc/rc.d/routing +++ b/etc/rc.d/routing @@ -36,7 +36,7 @@ routing_start() case $_af in ""|[Aa][Ll][Ll]|[Aa][Nn][Yy]) - for _a in inet inet6 atm; do + for _a in inet inet6; do afexists $_a || continue setroutes $_cmd $_a $_if || _ret=1 done @@ -65,7 +65,7 @@ routing_stop() case $_af in ""|[Aa][Ll][Ll]|[Aa][Nn][Yy]) - for _a in inet inet6 atm; do + for _a in inet inet6; do afexists $_a || continue eval static_${_a} delete $_if # When $_if is specified, do not flush routes. @@ -126,11 +126,6 @@ routing_stop_inet6() done } -routing_stop_atm() -{ - return 0 -} - get_fibmod() { local _fibs @@ -289,23 +284,6 @@ static_inet6() sysctl net.inet6.ip6.use_defaultzone=1 } -static_atm() -{ - local _action i route_args - _action=$1 - - if [ -n "${natm_static_routes}" ]; then - for i in ${natm_static_routes}; do - route_args=`get_if_var $i route_IF` - if [ -n "$route_args" ]; then - atmconfig natm ${_action} ${route_args} - else - warn "route_${i} not found." - fi - done - fi -} - ropts_init() { if [ -z "${_ropts_initdone}" ]; then @@ -391,12 +369,5 @@ options_inet6() [ -n "${_ropts_initdone}" ] && echo '.' } -options_atm() -{ - _ropts_initdone= - - [ -n "${_ropts_initdone}" ] && echo '.' -} - load_rc_config $name run_rc_command "$@" diff --git a/gnu/usr.bin/gdb/Makefile b/gnu/usr.bin/gdb/Makefile index 35ee5fb22a8d..7598a196300a 100644 --- a/gnu/usr.bin/gdb/Makefile +++ b/gnu/usr.bin/gdb/Makefile @@ -1,9 +1,15 @@ # $FreeBSD$ -SUBDIR= libgdb gdb gdbtui kgdb +.include <src.opts.mk> + +SUBDIR= libgdb gdb kgdb + +.if ${MK_GDB_LIBEXEC} == "no" +SUBDIR+= gdbtui .if exists(${.CURDIR}/gdbserver/reg-${MACHINE_CPUARCH}.c) SUBDIR+=gdbserver .endif +.endif .include <bsd.subdir.mk> diff --git a/gnu/usr.bin/gdb/Makefile.inc b/gnu/usr.bin/gdb/Makefile.inc index 6e022fcdc952..11452179cd83 100644 --- a/gnu/usr.bin/gdb/Makefile.inc +++ b/gnu/usr.bin/gdb/Makefile.inc @@ -1,5 +1,7 @@ # $FreeBSD$ +.include <src.opts.mk> + VERSION= "6.1.1 [FreeBSD]" VENDOR= marcel @@ -53,6 +55,9 @@ GENSRCS+= nm.h tm.h CFLAGS+= -DCROSS_DEBUGGER -I${BMAKE_ROOT:H:H} GDB_SUFFIX= -${TARGET_ARCH} MAN= +.elif ${MK_GDB_LIBEXEC} != "no" +BINDIR?= /usr/libexec +MAN= .endif .include "${TARGET_SUBDIR}/Makefile" diff --git a/include/Makefile b/include/Makefile index e8ad0030a7c7..b4d7904cdaf5 100644 --- a/include/Makefile +++ b/include/Makefile @@ -40,14 +40,14 @@ LHDRS= aio.h errno.h fcntl.h linker_set.h poll.h stdatomic.h stdint.h \ syslog.h ucontext.h LDIRS= bsm cam geom net net80211 netgraph netinet netinet6 \ - netipsec netnatm netsmb nfs nfsclient nfsserver sys vm + netipsec netsmb nfs nfsclient nfsserver sys vm LSUBDIRS= cam/ata cam/nvme cam/scsi \ dev/acpica dev/agp dev/an dev/bktr dev/ciss dev/filemon dev/firewire \ dev/hwpmc dev/hyperv \ dev/ic dev/iicbus dev/io dev/lmc dev/mfi dev/mmc dev/nvme \ dev/ofw dev/pbio dev/pci ${_dev_powermac_nvram} dev/ppbus dev/smbus \ - dev/speaker dev/utopia dev/vkbd dev/wi \ + dev/speaker dev/vkbd dev/wi \ fs/devfs fs/fdescfs fs/msdosfs fs/nandfs fs/nfs fs/nullfs \ fs/procfs fs/smbfs fs/udf fs/unionfs \ geom/cache geom/concat geom/eli geom/gate geom/journal geom/label \ diff --git a/lib/libbsnmp/libbsnmp/Makefile b/lib/libbsnmp/libbsnmp/Makefile index fcca2ed12d83..2a1f9c020c41 100644 --- a/lib/libbsnmp/libbsnmp/Makefile +++ b/lib/libbsnmp/libbsnmp/Makefile @@ -72,7 +72,6 @@ MLINKS+= bsnmpagent.3 snmp_make_errresp.3 MLINKS+= bsnmpagent.3 snmp_op_t.3 MLINKS+= bsnmpagent.3 snmp_set.3 MLINKS+= bsnmpagent.3 snmp_trace.3 -MLINKS+= bsnmpagent.3 tree.3 MLINKS+= bsnmpagent.3 tree_size.3 MLINKS+= bsnmpclient.3 snmp_add_binding.3 diff --git a/lib/libc/gen/getpagesize.3 b/lib/libc/gen/getpagesize.3 index ff057df8c01c..eeea6854a258 100644 --- a/lib/libc/gen/getpagesize.3 +++ b/lib/libc/gen/getpagesize.3 @@ -28,7 +28,7 @@ .\" @(#)getpagesize.3 8.1 (Berkeley) 6/4/93 .\" $FreeBSD$ .\" -.Dd June 4, 1993 +.Dd April 26, 2017 .Dt GETPAGESIZE 3 .Os .Sh NAME diff --git a/lib/libc/gen/getpagesize.c b/lib/libc/gen/getpagesize.c index a891bb2c3169..cbb39927b651 100644 --- a/lib/libc/gen/getpagesize.c +++ b/lib/libc/gen/getpagesize.c @@ -69,7 +69,7 @@ getpagesize(void) mib[1] = HW_PAGESIZE; size = sizeof value; if (sysctl(mib, nitems(mib), &value, &size, NULL, 0) == -1) - return (-1); + return (PAGE_SIZE); return (value); } diff --git a/lib/libc/gen/scandir.c b/lib/libc/gen/scandir.c index 2382cb03290b..00183b61de73 100644 --- a/lib/libc/gen/scandir.c +++ b/lib/libc/gen/scandir.c @@ -82,8 +82,7 @@ scandir(const char *dirname, struct dirent ***namelist, #endif { struct dirent *d, *p, **names = NULL; - size_t numitems; - long arraysz; + size_t arraysz, numitems; DIR *dirp; if ((dirp = opendir(dirname)) == NULL) diff --git a/lib/libc/net/getnameinfo.c b/lib/libc/net/getnameinfo.c index 54f232449fc2..89cf825ea013 100644 --- a/lib/libc/net/getnameinfo.c +++ b/lib/libc/net/getnameinfo.c @@ -455,7 +455,6 @@ getnameinfo_link(const struct afd *afd, host, hostlen); /* * The following have zero-length addresses. - * IFT_ATM (net/if_atmsubr.c) * IFT_GIF (net/if_gif.c) * IFT_LOOP (net/if_loop.c) * IFT_PPP (net/if_ppp.c, net/if_spppsubr.c) diff --git a/lib/libc/regex/cname.h b/lib/libc/regex/cname.h index ba7dd8cb9644..28452c93fe7f 100644 --- a/lib/libc/regex/cname.h +++ b/lib/libc/regex/cname.h @@ -36,7 +36,7 @@ /* character-name table */ static struct cname { - char *name; + const char *name; char code; } cnames[] = { {"NUL", '\0'}, diff --git a/lib/libc/regex/regcomp.c b/lib/libc/regex/regcomp.c index 95764717bdaf..216cfa2b8c1e 100644 --- a/lib/libc/regex/regcomp.c +++ b/lib/libc/regex/regcomp.c @@ -66,8 +66,8 @@ __FBSDID("$FreeBSD$"); * other clumsinesses */ struct parse { - char *next; /* next character in RE */ - char *end; /* end of string (-> NUL normally) */ + const char *next; /* next character in RE */ + const char *end; /* end of string (-> NUL normally) */ int error; /* has an error been seen? */ sop *strip; /* malloced strip */ sopno ssize; /* malloced strip size (allocated) */ @@ -207,7 +207,7 @@ regcomp(regex_t * __restrict preg, return(REG_INVARG); len = preg->re_endp - pattern; } else - len = strlen((char *)pattern); + len = strlen(pattern); /* do the mallocs early so failure handling is easy */ g = (struct re_guts *)malloc(sizeof(struct re_guts)); @@ -239,7 +239,7 @@ regcomp(regex_t * __restrict preg, /* set things up */ p->g = g; - p->next = (char *)pattern; /* convenience; we do not modify it */ + p->next = pattern; /* convenience; we do not modify it */ p->end = p->next + len; p->error = 0; p->ncsalloc = 0; @@ -840,7 +840,7 @@ p_b_term(struct parse *p, cset *cs) static void p_b_cclass(struct parse *p, cset *cs) { - char *sp = p->next; + const char *sp = p->next; size_t len; wctype_t wct; char clname[16]; @@ -903,12 +903,11 @@ static wint_t /* value of collating element */ p_b_coll_elem(struct parse *p, wint_t endc) /* name ended by endc,']' */ { - char *sp = p->next; + const char *sp = p->next; struct cname *cp; - int len; mbstate_t mbs; wchar_t wc; - size_t clen; + size_t clen, len; while (MORE() && !SEETWO(endc, ']')) NEXT(); @@ -955,8 +954,8 @@ othercase(wint_t ch) static void bothcases(struct parse *p, wint_t ch) { - char *oldnext = p->next; - char *oldend = p->end; + const char *oldnext = p->next; + const char *oldend = p->end; char bracket[3 + MB_LEN_MAX]; size_t n; mbstate_t mbs; @@ -1009,8 +1008,8 @@ ordinary(struct parse *p, wint_t ch) static void nonnewline(struct parse *p) { - char *oldnext = p->next; - char *oldend = p->end; + const char *oldnext = p->next; + const char *oldend = p->end; char bracket[4]; p->next = bracket; diff --git a/lib/libc/regex/regerror.c b/lib/libc/regex/regerror.c index 253f0b1fb713..8496ba78002a 100644 --- a/lib/libc/regex/regerror.c +++ b/lib/libc/regex/regerror.c @@ -54,7 +54,7 @@ extern "C" { #endif /* === regerror.c === */ -static char *regatoi(const regex_t *preg, char *localbuf); +static const char *regatoi(const regex_t *preg, char *localbuf); #ifdef __cplusplus } @@ -83,8 +83,8 @@ static char *regatoi(const regex_t *preg, char *localbuf); */ static struct rerr { int code; - char *name; - char *explain; + const char *name; + const char *explain; } rerrs[] = { {REG_NOMATCH, "REG_NOMATCH", "regexec() failed to match"}, {REG_BADPAT, "REG_BADPAT", "invalid regular expression"}, @@ -120,7 +120,7 @@ regerror(int errcode, struct rerr *r; size_t len; int target = errcode &~ REG_ITOA; - char *s; + const char *s; char convbuf[50]; if (errcode == REG_ATOI) @@ -158,7 +158,7 @@ regerror(int errcode, - regatoi - internal routine to implement REG_ATOI == static char *regatoi(const regex_t *preg, char *localbuf); */ -static char * +static const char * regatoi(const regex_t *preg, char *localbuf) { struct rerr *r; diff --git a/lib/libc/regex/regex2.h b/lib/libc/regex/regex2.h index bec1b160cae9..e9e63810cfa8 100644 --- a/lib/libc/regex/regex2.h +++ b/lib/libc/regex/regex2.h @@ -73,7 +73,7 @@ * immediately *preceding* "execution" of that operator. */ typedef unsigned long sop; /* strip operator */ -typedef long sopno; +typedef unsigned long sopno; #define OPRMASK 0xf8000000L #define OPDMASK 0x07ffffffL #define OPSHIFT ((unsigned)27) @@ -113,11 +113,11 @@ typedef struct { typedef struct { unsigned char bmp[NC / 8]; wctype_t *types; - int ntypes; + unsigned int ntypes; wint_t *wides; - int nwides; + unsigned int nwides; crange *ranges; - int nranges; + unsigned int nranges; int invert; int icase; } cset; @@ -125,7 +125,7 @@ typedef struct { static int CHIN1(cset *cs, wint_t ch) { - int i; + unsigned int i; assert(ch >= 0); if (ch < NC) @@ -165,7 +165,7 @@ struct re_guts { int magic; # define MAGIC2 ((('R'^0200)<<8)|'E') sop *strip; /* malloced area for strip */ - int ncsets; /* number of csets in use */ + unsigned int ncsets; /* number of csets in use */ cset *sets; /* -> cset [ncsets] */ int cflags; /* copy of regcomp() cflags argument */ sopno nstates; /* = number of sops */ diff --git a/lib/libc/regex/regexec.c b/lib/libc/regex/regexec.c index 0edfe43dbaba..46b07758eab3 100644 --- a/lib/libc/regex/regexec.c +++ b/lib/libc/regex/regexec.c @@ -225,9 +225,9 @@ regexec(const regex_t * __restrict preg, eflags = GOODFLAGS(eflags); if (MB_CUR_MAX > 1) - return(mmatcher(g, (char *)string, nmatch, pmatch, eflags)); + return(mmatcher(g, string, nmatch, pmatch, eflags)); else if (g->nstates <= CHAR_BIT*sizeof(states1) && !(eflags®_LARGE)) - return(smatcher(g, (char *)string, nmatch, pmatch, eflags)); + return(smatcher(g, string, nmatch, pmatch, eflags)); else - return(lmatcher(g, (char *)string, nmatch, pmatch, eflags)); + return(lmatcher(g, string, nmatch, pmatch, eflags)); } diff --git a/lib/libc/regex/regfree.c b/lib/libc/regex/regfree.c index 8a23750ac1cd..296819adfba7 100644 --- a/lib/libc/regex/regfree.c +++ b/lib/libc/regex/regfree.c @@ -58,7 +58,7 @@ void regfree(regex_t *preg) { struct re_guts *g; - int i; + unsigned int i; if (preg->re_magic != MAGIC1) /* oops */ return; /* nice to complain, but hard */ diff --git a/lib/libgeom/geom_ctl.c b/lib/libgeom/geom_ctl.c index 956169f9d854..58976a90519a 100644 --- a/lib/libgeom/geom_ctl.c +++ b/lib/libgeom/geom_ctl.c @@ -29,23 +29,22 @@ * $FreeBSD$ */ -#include <stdio.h> +#include <sys/types.h> +#include <sys/queue.h> #include <fcntl.h> #include <errno.h> -#include <stdint.h> -#include <sys/types.h> +#include <paths.h> #include <stdarg.h> -#include <unistd.h> -#include <string.h> +#include <stdint.h> +#include <stdio.h> #include <stdlib.h> -#include <paths.h> - -#include <sys/queue.h> +#include <string.h> +#include <unistd.h> #define GCTL_TABLE 1 #include <libgeom.h> -/* +/* * Global pointer to a string that is used to avoid an errorneous free in * gctl_free. */ @@ -172,7 +171,7 @@ gctl_param_add(struct gctl_req *req, const char *name, int len, void *value, ap->len = len; else if (len < 0) { ap->flag |= GCTL_PARAM_ASCII; - ap->len = strlen(value) + 1; + ap->len = strlen(value) + 1; } } diff --git a/lib/libgeom/geom_stats.c b/lib/libgeom/geom_stats.c index 48f71609a4b6..368a85e6933b 100644 --- a/lib/libgeom/geom_stats.c +++ b/lib/libgeom/geom_stats.c @@ -29,23 +29,21 @@ * $FreeBSD$ */ -#include <paths.h> +#include <sys/types.h> +#include <sys/devicestat.h> +#include <sys/mman.h> +#include <sys/time.h> #include <errno.h> #include <fcntl.h> +#include <paths.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <libgeom.h> -#include <sys/mman.h> -#include <sys/time.h> -#include <sys/types.h> -#include <sys/devicestat.h> - - /************************************************************/ -static uint npages, pagesize, spp; -static int statsfd = -1; +static uint npages, spp; +static int pagesize, statsfd = -1; static u_char *statp; void @@ -67,7 +65,7 @@ geom_stats_resync(void) if (statsfd == -1) return; for (;;) { - p = mmap(statp, (npages + 1) * pagesize, + p = mmap(statp, (npages + 1) * pagesize, PROT_READ, MAP_SHARED, statsfd, 0); if (p == MAP_FAILED) break; @@ -89,6 +87,8 @@ geom_stats_open(void) if (statsfd < 0) return (errno); pagesize = getpagesize(); + if (pagesize == -1) + return (errno); spp = pagesize / sizeof(struct devstat); p = mmap(NULL, pagesize, PROT_READ, MAP_SHARED, statsfd, 0); if (p == MAP_FAILED) { diff --git a/lib/libgeom/libgeom.3 b/lib/libgeom/libgeom.3 index bda0c9d03c34..dbe21c84d38e 100644 --- a/lib/libgeom/libgeom.3 +++ b/lib/libgeom/libgeom.3 @@ -28,7 +28,7 @@ .\" .\" $FreeBSD$ .\" -.Dd December 4, 2010 +.Dd April 22, 2017 .Dt LIBGEOM 3 .Os .Sh NAME @@ -63,6 +63,10 @@ .Sh LIBRARY .Lb libgeom .Sh SYNOPSIS +.Bd -literal +/* stdio.h is only required for `gctl_dump` */ +.Ed +.In stdio.h .In libgeom.h .Ss "Statistics Functions" .Ft void @@ -324,8 +328,8 @@ The .Fn g_device_path function returns the full path to a provider given a partial or full path to the device node. -If the device can not be found or is not a valid geom provider, NULL is -returned. +.Dv NULL +is returned if the device cannot be found or is not a valid geom provider. .Pp The .Fn g_get_ident @@ -344,20 +348,19 @@ string. .Pp The .Fn g_open_by_ident -function opens provider using its ident, unlike +function opens provider using its identification, unlike .Fn g_open -which uses provider's name. -If the +which uses the provider's name. +The function will store the provider's name in the .Fa name -argument is not -.Dv NULL , -the function will store provider's name there. +parameter if it is not +.Dv NULL . .Pp The .Fn g_providername function returns the provider name of an open file descriptor. -If the file descriptor does not point to a valid geom provider, NULL is -returned. +.Dv NULL +is returned the file descriptor does not point to a valid geom provider. .Pp All functions except .Fn g_providername diff --git a/lib/librpcsec_gss/svc_rpcsec_gss.c b/lib/librpcsec_gss/svc_rpcsec_gss.c index 01a444b0df45..2763b66df4f6 100644 --- a/lib/librpcsec_gss/svc_rpcsec_gss.c +++ b/lib/librpcsec_gss/svc_rpcsec_gss.c @@ -913,7 +913,9 @@ svc_rpc_gss_update_seq(struct svc_rpc_gss_client *client, uint32_t seq) { int offset, i, word, bit; uint32_t carry, newcarry; + uint32_t* maskp; + maskp = client->cl_seqmask; if (seq > client->cl_seqlast) { /* * This request has a sequence number greater @@ -923,28 +925,29 @@ svc_rpc_gss_update_seq(struct svc_rpc_gss_client *client, uint32_t seq) * number) */ offset = seq - client->cl_seqlast; - while (offset > 32) { + while (offset >= 32) { for (i = (SVC_RPC_GSS_SEQWINDOW / 32) - 1; i > 0; i--) { - client->cl_seqmask[i] = client->cl_seqmask[i-1]; + maskp[i] = maskp[i-1]; } - client->cl_seqmask[0] = 0; + maskp[0] = 0; offset -= 32; } - carry = 0; - for (i = 0; i < SVC_RPC_GSS_SEQWINDOW / 32; i++) { - newcarry = client->cl_seqmask[i] >> (32 - offset); - client->cl_seqmask[i] = - (client->cl_seqmask[i] << offset) | carry; - carry = newcarry; + if (offset > 0) { + carry = 0; + for (i = 0; i < SVC_RPC_GSS_SEQWINDOW / 32; i++) { + newcarry = maskp[i] >> (32 - offset); + maskp[i] = (maskp[i] << offset) | carry; + carry = newcarry; + } } - client->cl_seqmask[0] |= 1; + maskp[0] |= 1; client->cl_seqlast = seq; } else { offset = client->cl_seqlast - seq; word = offset / 32; bit = offset % 32; - client->cl_seqmask[word] |= (1 << bit); + maskp[word] |= (1 << bit); } } diff --git a/lib/msun/src/e_asin.c b/lib/msun/src/e_asin.c index 27de207c7f89..931b270498e6 100644 --- a/lib/msun/src/e_asin.c +++ b/lib/msun/src/e_asin.c @@ -6,7 +6,7 @@ * * Developed at SunSoft, a Sun Microsystems, Inc. business. * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice + * software is freely granted, provided that this notice * is preserved. * ==================================================== */ diff --git a/release/scripts/pkg-stage.sh b/release/scripts/pkg-stage.sh index 7b46230902e5..dd26e4b79578 100755 --- a/release/scripts/pkg-stage.sh +++ b/release/scripts/pkg-stage.sh @@ -24,6 +24,7 @@ shells/bash shells/zsh security/sudo sysutils/screen +sysutils/tmux www/firefox www/links x11-drivers/xf86-video-vmware diff --git a/rescue/rescue/Makefile b/rescue/rescue/Makefile index 454dfcdfef67..4bbb1ccd2aed 100644 --- a/rescue/rescue/Makefile +++ b/rescue/rescue/Makefile @@ -101,10 +101,6 @@ CRUNCH_PROGS_sbin= badsect \ restore rcorder route savecore \ shutdown spppcontrol swapon sysctl tunefs umount -.if ${MK_ATM} != "no" -CRUNCH_PROGS_sbin+= atmconfig -.endif - .if ${MK_CCD} != "no" CRUNCH_PROGS_sbin+= ccdconfig .endif @@ -160,9 +156,6 @@ CRUNCH_PROGS_sbin+= bsdlabel fdisk CRUNCH_ALIAS_bsdlabel= disklabel .endif -CRUNCH_SRCDIR_atm= ${SRCTOP}/sbin/atm/atm -CRUNCH_SRCDIR_atmconfig= ${SRCTOP}/sbin/atm/atmconfig -CRUNCH_SRCDIR_fore_dnld= ${SRCTOP}/sbin/atm/fore_dnld CRUNCH_SRCDIR_ilmid= ${SRCTOP}/sbin/atm/ilmid CRUNCH_SRCDIR_rtquery= ${SRCTOP}/sbin/routed/rtquery CRUNCH_SRCDIR_ipf= ${SRCTOP}/sbin/ipf/ipf diff --git a/sbin/Makefile b/sbin/Makefile index 39e417acbacf..51e80bae8001 100644 --- a/sbin/Makefile +++ b/sbin/Makefile @@ -70,7 +70,6 @@ SUBDIR=adjkerntz \ tunefs \ umount -SUBDIR.${MK_ATM}+= atm SUBDIR.${MK_CCD}+= ccdconfig SUBDIR.${MK_CXX}+= devd SUBDIR.${MK_HAST}+= hastctl diff --git a/sbin/atm/Makefile b/sbin/atm/Makefile deleted file mode 100644 index 4145d219e635..000000000000 --- a/sbin/atm/Makefile +++ /dev/null @@ -1,28 +0,0 @@ -# =================================== -# HARP | Host ATM Research Platform -# =================================== -# -# This Host ATM Research Platform ("HARP") file (the "Software") is -# made available by Network Computing Services, Inc. ("NetworkCS") -# "AS IS". NetworkCS does not provide maintenance, improvements or -# support of any kind. -# -# NETWORKCS MAKES NO WARRANTIES OR REPRESENTATIONS, EXPRESS OR IMPLIED, -# INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY -# AND FITNESS FOR A PARTICULAR PURPOSE, AS TO ANY ELEMENT OF THE -# SOFTWARE OR ANY SUPPORT PROVIDED IN CONNECTION WITH THIS SOFTWARE. -# In no event shall NetworkCS be responsible for any damages, including -# but not limited to consequential damages, arising from or relating to -# any use of the Software or related support. -# -# Copyright 1994-1998 Network Computing Services, Inc. -# -# Copies of this Software may be made, however, the above copyright -# notice must be reproduced on all copies. -# -# @(#) $Id: Makefile,v 1.5 1998/07/10 16:01:58 jpt Exp $ -# $FreeBSD$ - -SUBDIR= atmconfig - -.include <bsd.subdir.mk> diff --git a/sbin/atm/Makefile.inc b/sbin/atm/Makefile.inc deleted file mode 100644 index 3d5738afdbc4..000000000000 --- a/sbin/atm/Makefile.inc +++ /dev/null @@ -1,26 +0,0 @@ -# =================================== -# HARP | Host ATM Research Platform -# =================================== -# -# This Host ATM Research Platform ("HARP") file (the "Software") is -# made available by Network Computing Services, Inc. ("NetworkCS") -# "AS IS". NetworkCS does not provide maintenance, improvements or -# support of any kind. -# -# NETWORKCS MAKES NO WARRANTIES OR REPRESENTATIONS, EXPRESS OR IMPLIED, -# INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY -# AND FITNESS FOR A PARTICULAR PURPOSE, AS TO ANY ELEMENT OF THE -# SOFTWARE OR ANY SUPPORT PROVIDED IN CONNECTION WITH THIS SOFTWARE. -# In no event shall NetworkCS be responsible for any damages, including -# but not limited to consequential damages, arising from or relating to -# any use of the Software or related support. -# -# Copyright 1994-1998 Network Computing Services, Inc. -# -# Copies of this Software may be made, however, the above copyright -# notice must be reproduced on all copies. -# -# @(#) $Id: Makefile.inc,v 1.5 1998/07/10 16:01:58 jpt Exp $ -# $FreeBSD$ - -.include "../Makefile.inc" diff --git a/sbin/atm/atmconfig/Makefile b/sbin/atm/atmconfig/Makefile deleted file mode 100644 index 9e8196f76465..000000000000 --- a/sbin/atm/atmconfig/Makefile +++ /dev/null @@ -1,44 +0,0 @@ -# Copyright (c) 2001-2003 -# Fraunhofer Institute for Open Communication Systems (FhG Fokus). -# All rights reserved. -# Author: Harti Brandt <brandt@fokus.gmd.de> -# -# $FreeBSD$ - -.include <src.opts.mk> - -PACKAGE=atm -PROG= atmconfig -SRCS= main.c diag.c natm.c -MAN= atmconfig.8 -# CFLAGS+= -DPATH_HELP='".:${SHAREDIR}/doc/atm:/usr/local/share/doc/atm"' - -CFLAGS+= -I${.OBJDIR} - -.if !defined(RESCUE) && ${MK_BSNMP} != "no" -CFLAGS+= -DWITH_BSNMP -SRCS+= oid.h atmconfig_device.c -LIBADD+= bsnmp -. if ${MK_DYNAMICROOT} == "no" && ${MK_OPENSSL} != "no" -LIBADD+= crypto -. endif -.endif - -CLEANFILES+= oid.h - -# XXX - this is verboten -.if ${MACHINE_CPUARCH} == "arm" -WARNS?= 3 -.endif - -FILES= atmconfig.help atmconfig_device.help -FILESDIR= ${SHAREDIR}/doc/atm - -SNMP_ATM_DEF= ${SRCTOP}/contrib/ngatm/snmp_atm/atm_tree.def \ - ${SRCTOP}/usr.sbin/bsnmpd/modules/snmp_atm/atm_freebsd.def - -oid.h: atm_oid.list ${SNMP_ATM_DEF} - cat ${SNMP_ATM_DEF} | gensnmptree -e `tail -n +2 ${.CURDIR}/atm_oid.list` \ - > ${.TARGET} - -.include <bsd.prog.mk> diff --git a/sbin/atm/atmconfig/Makefile.depend b/sbin/atm/atmconfig/Makefile.depend deleted file mode 100644 index 6c9b39660895..000000000000 --- a/sbin/atm/atmconfig/Makefile.depend +++ /dev/null @@ -1,22 +0,0 @@ -# $FreeBSD$ -# Autogenerated - do NOT edit! - -DIRDEPS = \ - gnu/lib/csu \ - gnu/lib/libgcc \ - include \ - include/arpa \ - include/xlocale \ - lib/${CSU_DIR} \ - lib/libbsnmp/libbsnmp \ - lib/libc \ - lib/libcompiler_rt \ - lib/libnetgraph \ - secure/lib/libcrypto \ - - -.include <dirdeps.mk> - -.if ${DEP_RELDIR} == ${_DEP_RELDIR} -# local dependencies - needed for -jN in clean tree -.endif diff --git a/sbin/atm/atmconfig/atm_oid.list b/sbin/atm/atmconfig/atm_oid.list deleted file mode 100644 index ca64afa44267..000000000000 --- a/sbin/atm/atmconfig/atm_oid.list +++ /dev/null @@ -1,20 +0,0 @@ -# $FreeBSD$ -begemotAtmIfTable -begemotAtmIfName -begemotAtmIfNodeId -begemotAtmIfPcr -begemotAtmIfMedia -begemotAtmIfVpiBits -begemotAtmIfVciBits -begemotAtmIfMaxVpcs -begemotAtmIfMaxVccs -begemotAtmIfEsi -begemotAtmIfCarrierStatus -begemotAtmIfMode -begemotAtmIfTableLastChange -begemotAtmHWTable -begemotAtmHWVendor -begemotAtmHWDevice -begemotAtmHWSerial -begemotAtmHWVersion -begemotAtmHWSoftVersion diff --git a/sbin/atm/atmconfig/atmconfig.8 b/sbin/atm/atmconfig/atmconfig.8 deleted file mode 100644 index 0cb04e86120f..000000000000 --- a/sbin/atm/atmconfig/atmconfig.8 +++ /dev/null @@ -1,323 +0,0 @@ -.\" -.\" Copyright (c) 2001-2003 -.\" Fraunhofer Institute for Open Communication Systems (FhG Fokus). -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" Author: Hartmut Brandt <harti@FreeBSD.org> -.\" -.\" $FreeBSD$ -.\" -.Dd October 5, 2016 -.Dt ATMCONFIG 8 -.Os -.Sh NAME -.Nm atmconfig -.Nd "ATM configuration tool" -.Sh SYNOPSIS -.Nm -.Op Fl htv -.Op Ar command Op Ar sub-command Op ... -.Op Ar options -.Op Ar arg ... -.Sh DESCRIPTION -The -.Nm -tool is used to configure the Netgraph ATM network sub-system. -.Pp -The command line of -.Nm -generally consists of common options followed by a command string, optionally -followed by sub-command strings, optional command specific options and -command specific arguments. -Commands and sub-commands as well as command -specific options may be abbreviated as -long as there is only one match possible. -.Ss Common Options -The following common options change the overall behaviour of -.Nm : -.Bl -tag -width indent -.It Fl h -Print a very short usage info and exit. -.It Fl t -Several show-type commands output a header and then several lines -of information. -If this option is given, the header is omitted, simplifying the parsing -of the output. -.It Fl v -Be more verbose. -.El -.Ss Obtaining Help -The -.Ic help -command has a number of useful sub-commands. -.Pp -To get general help use: -.D1 Nm Ic help -.Pp -To get a list of available commands use: -.D1 Nm Ic help Cm commands -.Pp -To get a list of available sub-commands use: -.D1 Nm Ic help Ar command -.Pp -or (if there are deeper levels of sub-commands): -.D1 Nm Ic help Ar command sub-command ... -.Pp -To get a list of options and arguments for a command use: -.D1 Nm Ic help Ar command sub-command ... -(given that there are no further sub-command levels). -.Pp -To get a list of common options use: -.D1 Nm Ic help Cm options -.Ss The Ic diag Command -The -.Ic diag -command allows the inspection of the ATM interfaces on the local host -and the modification of device parameters. -Sub-commands are: -.Cm list -(print a list of interfaces), -.Cm config -(print hardware configuration), -.Cm phy -(access PHY chip), -.Cm stats -(print statistics) and -.Cm vcc -(print list of VCCs). -.Bl -tag -width indent -.\"---------------------------------------- -.It Nm Ic diag Cm list -This sub-command lists all ATM interfaces in the system. -It takes no options or arguments. -.\"---------------------------------------- -.It Xo -.Nm Ic diag Cm config -.Op Fl atm -.Op Fl hardware -.Op Ar device ... -.Xc -This command prints the configuration of ATM interfaces. -If no -.Ar device -is given, all devices are listed, otherwise only the specified devices. -The option -.Fl atm -instructs the command to print ATM layer configuration parameters like -the number of VCI and VPI bits, whereas the -.Fl hardware -option requests card specific information like the vendor or the serial -number. -If none of the options is given, the defaults is to assume -.Fl atm . -.\"---------------------------------------- -.It Xo -.Nm Ic diag Cm phy print -.Op Fl numeric -.Ar device -.Xc -This command prints the PHY registers in a (potential) -human comprehensible format. -If -.Fl numeric -is given, the format is hex bytes. -Otherwise, textual representation will be printed. -.\"---------------------------------------- -.It Nm Ic diag Cm phy show Op Ar device ... -This sub-command prints static information about the PHY device used -in the ATM card like the type of the PHY and the media. -.\"---------------------------------------- -.It Xo -.Nm Ic diag Cm phy set -.Ar device -.Ar reg -.Ar mask -.Ar val -.Xc -This sub-command allows one to change bits in PHY registers. -This should be used with great care. -The bits of the given PHY chip register for which the corresponding bit in -.Ar mask -is one are set to the values of the corresponding bits in -.Ar val . -All register bits that have a zero in -.Ar mask -are written back with their original value. -.\"---------------------------------------- -.It Xo -.Nm Ic diag Cm phy stats -.Op Fl clear -.Ar device -.Xc -Print the PHY statistics for the given -.Ar device . -When the optional -.Fl clear -is given, the statistics are cleared atomically. -.\"---------------------------------------- -.It Xo -.Nm Ic diag Cm vcc -.Op Fl abr -.Op Fl channel -.Op Fl traffic -.Op Ar device -.Xc -Retrieve the list of currently active channels on either all -or the specified interfaces. -For each channel, the following information is printed depending -on the options (default is -.Fl channel ) . -.Bl -tag -width ".Fl traffic" -.It Fl abr -Print ABR specific traffic parameters: ICR, TBE, NRM, TRM, ADTF, RIF, RDF, -CDF. -.It Fl channel -Print basic information: VPI, VCI, AAL, traffic type, MTU and flags. -.It Fl traffic -Print traffic parameters: PCR, SCR, MBS, MCR. -.El -.\"---------------------------------------- -.It Nm Ic diag Cm stats Ar device -Print driver specific statistics. -.El -.Ss The Ic natm Command -The -.Ic natm -command is used to change -.Xr natmip 4 -routes on the local host. -The sub-commands for the routing table are: -.Cm add -(to add a new route), -.Cm delete -(to delete an existing route) and -.Cm show -(to print the currently installed NATM routes). -.Pp -.Bl -tag -width indent -compact -.\"---------------------------------------- -.It Xo -.Nm Ic natm Cm add -.Ar dest -.Ar device -.Ar vpi -.Ar vci -.Ar encaps -.Xc -.It Xo -.Nm Ic natm Cm add -.Ar dest -.Ar device -.Ar vpi -.Ar vci -.Ar encaps -.Cm ubr Op Ar pcr -.Xc -.It Xo -.Nm Ic natm Cm add -.Ar dest -.Ar device -.Ar vpi -.Ar vci -.Ar encaps -.Cm cbr Ar pcr -.Xc -.It Xo -.Nm Ic natm Cm add -.Ar dest -.Ar device -.Ar vpi -.Ar vci -.Ar encaps -.Cm vbr Ar pcr scr mbs -.Xc -.It Xo -.Nm Ic natm Cm add -.Ar dest -.Ar device -.Ar vpi -.Ar vci -.Ar encaps -.Cm abr Ar pcr mcr icr tbe nrm trm adtf rif rdf cdf -.Xc -Add a new route to the routing table. -The destination address (the address -on the other end of the link) is given in -.Ar dest . -The -.Ar device , -.Ar vpi -and -.Ar vci -arguments -are the name of the ATM device and the VPI and VCI values for the link. -The -.Ar encaps -argument -may be either -.Cm AAL5 -or -.Cm LLC/SNAP -both of which specify AAL5 encapsulation, the first one without additional -encapsulation, the second one with LLC/SNAP headers. -The first two forms of the command add an UBR (unspecified bit rate) channel, -where the second form allows the optional specification of a peak cell -rate (PCR). -The third form adds a CBR (constant bit rate) channel where a PCR -must be given. -The fourth form adds a VBR (variable bit rate) channel. -The arguments are the peak cell rate, the sustainable cell rate and the -maximum bursts size. -The last form of the command adds an ABR (available bit rate) channel. -.\"---------------------------------------- -.Pp -.It Nm Ic natm Cm delete Ar dest -.It Xo -.Nm Ic natm Cm delete -.Ar device -.Ar vpi -.Ar vci -.Xc -This commands deletes an NATM route. -The route may be specified either by the destination address or -by the -.Ar device , vpi -and -.Ar vci -triple. -.\"---------------------------------------- -.Pp -.It Nm Ic natm Cm show -List all NATM routes. -.El -.Sh SEE ALSO -.Xr natm 4 , -.Xr natmip 4 -.Sh HISTORY -An -.Nm -command appeared in -.Fx 3.0 . -.Sh AUTHORS -.An Hartmut Brandt Aq Mt harti@FreeBSD.org diff --git a/sbin/atm/atmconfig/atmconfig.h b/sbin/atm/atmconfig/atmconfig.h deleted file mode 100644 index 5e5b04172cb0..000000000000 --- a/sbin/atm/atmconfig/atmconfig.h +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright (c) 2001-2003 - * Fraunhofer Institute for Open Communication Systems (FhG Fokus). - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * Author: Hartmut Brandt <harti@freebsd.org> - * - * $FreeBSD$ - */ -#ifndef _ATMCONFIG_H -#define _ATMCONFIG_H - -#include <sys/types.h> -#include <sys/socket.h> -#include <sys/queue.h> -#include <netgraph/ng_message.h> - -#define DEFAULT_INTERFACE "hatm0" - -struct cmdtab { - const char *string; - const struct cmdtab *sub; - void (*func)(int, char *[]); -}; - -/* - * client configuration info - */ -struct amodule { - const struct cmdtab *cmd; -}; - -#define DEF_MODULE(CMDTAB) \ -struct amodule amodule_1 = { CMDTAB } - -/* for compiled-in modules */ -void register_module(const struct amodule *); - -/* print a message if we are verbose */ -void verb(const char *, ...) __printflike(1, 2); - -/* print heading */ -void heading(const char *, ...) __printflike(1, 2); - -/* before starting output */ -void heading_init(void); - -/* stringify an enumerated value */ -struct penum { - int32_t value; - const char *str; -}; -const char *penum(int32_t value, const struct penum *strtab, char *buf); -int pparse(int32_t *, const struct penum *, const char *); - -enum { - OPT_NONE, - OPT_UINT, - OPT_INT, - OPT_UINT32, - OPT_INT32, - OPT_UINT64, - OPT_INT64, - OPT_FLAG, - OPT_VCI, - OPT_STRING, - OPT_SIMPLE, -}; -struct option { - const char *optstr; - int opttype; - void *optarg; -}; - -int parse_options(int *_pargc, char ***_pargv, - const struct option *_opts); - -/* XXX while this is compiled in */ -void device_register(void); - -#endif /* _ATMCONFIG_H */ diff --git a/sbin/atm/atmconfig/atmconfig.help b/sbin/atm/atmconfig/atmconfig.help deleted file mode 100644 index 8c6e7cec7f2f..000000000000 --- a/sbin/atm/atmconfig/atmconfig.help +++ /dev/null @@ -1,223 +0,0 @@ -# -# Copyright (c) 2001-2003 -# Fraunhofer Institute for Open Communication Systems (FhG Fokus). -# All rights reserved. -# Copyright (c) 2004 -# Hartmut Brandt. -# All rights reserved. -# -# Author: Hartmut Brandt <harti@freebsd.org> -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -# SUCH DAMAGE. -# -# Help file for the atmconfig utility -# -# $FreeBSD$ -# -^0 intro -ATM configuration utility. -usage: - atmconfig [common-options] command [subcommand] [options] - -Use 'atmconfig help' for general help or 'atmconfig help <command>' for -help on 'command' or 'atmconfig help commands' for a list of commands. - -^0 help -^^ help show help information -Use one of the following commands to get help on atmconfig: - - atmconfig help options - gives you help on common command line options - atmconfig help commands - prints a list of available commands (and help items) - atmconfig help <command> - prints help on the given command (including a list of subcommands) - atmconfig help <command> <subcommand> - gives help on the given subcommand - -^0 options -^^ help options list common options -Common command line options can be specified for all commands. They -are written immediately before the command. The following options are -available: - - -h print short help - -t don't print headings for 'show'-type commands - -v be verbose about all actions. - -^0 commands -^^ help commands show available commands -The following commands are available: - -$MAIN - -^0 diag -^^ diag show/modify ATM hardware interfaces -This command shows information about the ATM hardware interfaces in the -system. A list of ATM devices is obtained by: - - atmconfig [common-options] diag list - -Information about the hardware configuration of the ATM interfaces is -reported by: - - atmconfig [common-options] diag config [options] [<device> ...] - -The phy chip can be access with: - - atmconfig [common-options] diag phy print [options] <device> - atmconfig [common-options] diag phy show <device> - atmconfig [common-options] diag phy set <device> <reg> <msk> <val> - atmconfig [common-options] diag phy set stats [options] <device> - -A list of open VCCs can be obtained with: - - atmconfig [common-options] diag vcc [<device> ...] - -Driver internal statistics are printed with - - atmconfig [common-options] diag stats <device> - -^1 list -usage: atmconfig [common-options] diag list - -List all known ATM devices in the system. - -^1 config -usage: atmconfig [common-options] diag config [-hardware] [-atm] [device ...] -options: - -hardware print hardware related information - -atm print ATM related information - -If now device is given as argument information about all devices is shown. -The default is to print only ATM related information. - -^1 phy -To show the type of the PHY and its state: - - atmconfig [common-options] diag phy show <device> - -Change a PHY register (use with care): - - atmconfig [common-options] diag phy set <device> <reg> <msk> <val> - -Print the PHY registers in a human readable form: - - atmconfig [common-options] diag phy print [-numeric] <device> - -The PHY statistics can be printed with: - - atmconfig [common-options] diag phy stats [-clear] <device> - -^2 show -usage: atmconfig [common-options] diag phy show <device> - -Show configuration and state information about the PHY chip on the given -ATM interface. - -^2 set -usage: atmconfig [common-options] diag phy set <device> <reg> <msk> <val> - -Set the bits of given PHY chip register for which the corresponding bit in -<msk> is one to the value of the corresponding bit in <val>. All register -bits that have a zero in <msk> are written back with there original value. - -^2 print -usage: atmconfig [common-options] diag phy print [-numeric] <device> -options: - -numeric print registers in hex - -Print the registers of the PHY chip in a human readable format. - -^2 stats -usage: atmconfig [common-options] diag phy stats [-clear] <device> -options: - -clear clear the statistics atomically after reading them - -Prints the PHY layer statistics of the PHY chip and optionally clears them. - -^1 vcc -usage: atmconfig [common-options] diag vcc [-abr] [-channel] [-traffic] - [<device> ...] -options: - -abr print ABR specific traffic parameters - -channel print VPI, VCI, AAL, traffic type and flags (default) - -traffic print traffic parameters - -Prints a list of all open vccs. The default output is -channel. - -^1 stats -usage: atmconfig [common-options] diag stats <device> - -Prints the driver-internal statistics. - -^0 natm -^^ natm simple IP over ATM management (see natmip(4)) -The group of CLIP commands is used to manage classical IP over ATM -networking via NATM (see natm(4) and natmip(4)). A new PVC is added -to a CLIP via: - - atmconfig [common-options] natm add <dest> <device> <vpi> <vci> - <encaps> [<traffic> [<params> ...]] - -The PVC can be deleted with: - - atmconfig [common-options] natm del <device> <vpi> <vci> - -The list of PVC that are currently active is retrieved with: - - atmconfig [common-options] natm show - -^1 add -usage: atmconfig [common-options] natm add [-printonly] <dest> <device> - <vpi> <vci> <encaps> [<traffic> [<params> ...]] -options: - -printonly don't execute, print the route(8) command - -This subcommand adds a new CLIP PVC on the ATM interface <device>. The -host on the other end of the PVC has IP address <addr>. <encaps> is one -of llc/snap (LLC/SNAP encapsulated frames in AAL5) or aal5 (AAL5 frames -without LLC/SNAP). <traffic> specifies the traffic type of the PVC -and is one of UBR, CBR, VBR or ABR. If not given UBR is assumed. Depending -on the traffic type none or more parameters can follow: - - ubr [<pcr>] - cbr <pcr> - vbr <pcr> <scr> <mbs> - abr <pcr> <mcr> <icr> <tbe> <nrm> <trm> <adtf> <rif> <rdf> <cdf> - -^1 delete -usage: atmconfig [common-options] natm delete [-printonly] <dest> - or: atmconfig [common-options] natm delete [-printonly] <device> <vpi> <vci> -options: - -printonly don't execute, print the route(8) command - -This subcommand deletes and existing CLIP PVC that can bei either identified -by the destination address or by the <device><vpi><vci> triple. - -^1 show -usage: atmconfig [common-options] natm show [-abr] [-numeric] -options: - -abr show ABR parameters for ABR connections - -numeric print IP addresses numerically - -This subcommand prints all ATM routes. diff --git a/sbin/atm/atmconfig/atmconfig_device.c b/sbin/atm/atmconfig/atmconfig_device.c deleted file mode 100644 index f2f08380dcdf..000000000000 --- a/sbin/atm/atmconfig/atmconfig_device.c +++ /dev/null @@ -1,444 +0,0 @@ -/* - * Copyright (c) 2001-2002 - * Fraunhofer Institute for Open Communication Systems (FhG Fokus). - * All rights reserved. - * Copyright (c) 2003-2004 - * Hartmut Brandt. - * All rights reserved. - * - * Author: Hartmut Brandt <harti@freebsd.org> - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include "atmconfig.h" -#include "atmconfig_device.h" -#include "private.h" -#include "oid.h" - -#include <bsnmp/asn1.h> -#include <bsnmp/snmp.h> -#include <bsnmp/snmpclient.h> - -/* - * Description of the begemotAtmIfTable - */ -static const struct snmp_table atmif_table = { - OIDX_begemotAtmIfTable, - OIDX_begemotAtmIfTableLastChange, 2, - sizeof(struct atmif), - 1, 0x7ffULL, - { - { 0, - SNMP_SYNTAX_INTEGER, offsetof(struct atmif, index) }, - { OID_begemotAtmIfName, - SNMP_SYNTAX_OCTETSTRING, offsetof(struct atmif, ifname) }, - { OID_begemotAtmIfPcr, - SNMP_SYNTAX_GAUGE, offsetof(struct atmif, pcr) }, - { OID_begemotAtmIfMedia, - SNMP_SYNTAX_INTEGER, offsetof(struct atmif, media) }, - { OID_begemotAtmIfVpiBits, - SNMP_SYNTAX_GAUGE, offsetof(struct atmif, vpi_bits) }, - { OID_begemotAtmIfVciBits, - SNMP_SYNTAX_GAUGE, offsetof(struct atmif, vci_bits) }, - { OID_begemotAtmIfMaxVpcs, - SNMP_SYNTAX_GAUGE, offsetof(struct atmif, max_vpcs) }, - { OID_begemotAtmIfMaxVccs, - SNMP_SYNTAX_GAUGE, offsetof(struct atmif, max_vccs) }, - { OID_begemotAtmIfEsi, - SNMP_SYNTAX_OCTETSTRING, offsetof(struct atmif, esi) }, - { OID_begemotAtmIfCarrierStatus, - SNMP_SYNTAX_INTEGER, offsetof(struct atmif, carrier) }, - { OID_begemotAtmIfMode, - SNMP_SYNTAX_INTEGER, offsetof(struct atmif, mode) }, - { 0, SNMP_SYNTAX_NULL, 0 } - } -}; - -/* List of all ATM interfaces */ -struct atmif_list atmif_list = TAILQ_HEAD_INITIALIZER(atmif_list); - -/* - * ATM hardware table - */ -struct atmhw { - TAILQ_ENTRY(atmhw) link; - uint64_t found; - int32_t index; - u_char *vendor; - size_t vendorlen; - u_char *device; - size_t devicelen; - uint32_t serial; - uint32_t version; - uint32_t soft_version; -}; -TAILQ_HEAD(atmhw_list, atmhw); - -/* list of ATM hardware */ -static struct atmhw_list atmhw_list; - -/* - * Read ATM hardware table - */ -static const struct snmp_table atmhw_table = { - OIDX_begemotAtmHWTable, - OIDX_begemotAtmIfTableLastChange, 2, - sizeof(struct atmhw), - 1, 0x3fULL, - { - { 0, - SNMP_SYNTAX_INTEGER, offsetof(struct atmhw, index) }, - { OID_begemotAtmHWVendor, - SNMP_SYNTAX_OCTETSTRING, offsetof(struct atmhw, vendor) }, - { OID_begemotAtmHWDevice, - SNMP_SYNTAX_OCTETSTRING, offsetof(struct atmhw, device) }, - { OID_begemotAtmHWSerial, - SNMP_SYNTAX_GAUGE, offsetof(struct atmhw, serial) }, - { OID_begemotAtmHWVersion, - SNMP_SYNTAX_GAUGE, offsetof(struct atmhw, version) }, - { OID_begemotAtmHWSoftVersion, - SNMP_SYNTAX_GAUGE, offsetof(struct atmhw, soft_version) }, - { 0, SNMP_SYNTAX_NULL, 0 } - } -}; - -static void device_status(int, char *[]); -static void device_hardware(int, char *[]); -static void device_modify(int, char *[]); - -static const struct cmdtab device_tab[] = { - { "hardware", NULL, device_hardware }, - { "status", NULL, device_status }, - { "modify", NULL, device_modify }, - { NULL, NULL, NULL } -}; - -static const struct cmdtab entry = - { "device", device_tab, NULL }; - -static DEF_MODULE(&entry); - -/* - * Carrier state to string - */ -static const struct penum strcarrier[] = { - { 1, "on" }, - { 2, "off" }, - { 3, "unknown" }, - { 4, "none" }, - { 0, NULL } -}; -/* - * SUNI mode to string - */ -static const struct penum strsunimode[] = { - { 1, "sonet" }, - { 2, "sdh" }, - { 3, "unknown" }, - { 0, NULL } -}; - -/* - * OIDs - */ -static const struct asn_oid - oid_begemotAtmIfMode = OIDX_begemotAtmIfMode; - -/* - * Print 1st status line - */ -static void -dev_status1(const struct atmif *aif) -{ - char buf[100]; - - printf("%-5u %-8s %-6u %-4u %-5u %-4u %-5u " - "%02x:%02x:%02x:%02x:%02x:%02x %s\n", aif->index, - aif->ifname, aif->pcr, - (1 << aif->vpi_bits) - 1, (1 << aif->vci_bits) - 1, - aif->max_vpcs, aif->max_vccs, aif->esi[0], - aif->esi[1], aif->esi[2], aif->esi[3], aif->esi[4], aif->esi[5], - penum(aif->carrier, strcarrier, buf)); -} - -/* - * Print 2nd status line - */ -static void -dev_status2(const struct atmif *aif) -{ - char buf[100]; - - printf("%-5u %-8s %s\n", aif->index, aif->ifname, - penum(aif->mode, strsunimode, buf)); -} - -/* - * Implement the 'device status' command - */ -static void -device_status(int argc, char *argv[]) -{ - int opt, i; - struct atmif *aif; - static const struct option opts[] = { - { NULL, 0, NULL } - }; - - const char dev1[] = - "Interface Max Max\n" - "Index Name PCR VPI VCI VPCs VCCs ESI Carrier\n"; - const char dev2[] = - "Interface\n" - "Index Name Mode\n"; - - while ((opt = parse_options(&argc, &argv, opts)) != -1) - switch (opt) { - } - - snmp_open(NULL, NULL, NULL, NULL); - atexit(snmp_close); - - atmif_fetchtable(); - - if (TAILQ_EMPTY(&atmif_list)) - errx(1, "no ATM interfaces found"); - - if (argc > 0) { - heading_init(); - for (i = 0; i < argc; i++) { - if ((aif = atmif_find_name(argv[i])) == NULL) { - warnx("%s: no such ATM interface", argv[i]); - continue; - } - heading(dev1); - dev_status1(aif); - } - heading_init(); - for (i = 0; i < argc; i++) { - if ((aif = atmif_find_name(argv[i])) == NULL) - continue; - heading(dev2); - dev_status2(aif); - } - } else { - heading_init(); - TAILQ_FOREACH(aif, &atmif_list, link) { - heading(dev1); - dev_status1(aif); - } - heading_init(); - TAILQ_FOREACH(aif, &atmif_list, link) { - heading(dev2); - dev_status2(aif); - } - } -} - -/* - * Print hardware info line - */ -static void -dev_hardware(const struct atmif *aif) -{ - const struct atmhw *hw; - - TAILQ_FOREACH(hw, &atmhw_list, link) - if (aif->index == hw->index) - break; - if (hw == NULL) { - warnx("hardware info not found for '%s'", aif->ifname); - return; - } - - printf("%-5u %-8s %-16s%-10s %-10u %-10u %u\n", aif->index, - aif->ifname, hw->vendor, hw->device, hw->serial, - hw->version, hw->soft_version); -} - -/* - * Show hardware configuration - */ -static void -device_hardware(int argc, char *argv[]) -{ - int opt, i; - struct atmif *aif; - - static const struct option opts[] = { - { NULL, 0, NULL } - }; - - static const char headline[] = - "Interface \n" - "Index Name Vendor Card Serial HW SW\n"; - - while ((opt = parse_options(&argc, &argv, opts)) != -1) - switch (opt) { - } - - snmp_open(NULL, NULL, NULL, NULL); - atexit(snmp_close); - - atmif_fetchtable(); - - if (snmp_table_fetch(&atmhw_table, &atmhw_list) != 0) - errx(1, "AtmHW table: %s", snmp_client.error); - - if (argc > 0) { - heading_init(); - for (i = 0; i < argc; i++) { - if ((aif = atmif_find_name(argv[i])) == NULL) { - warnx("interface not found '%s'", argv[i]); - continue; - } - heading(headline); - dev_hardware(aif); - } - } else { - heading_init(); - TAILQ_FOREACH(aif, &atmif_list, link) { - heading(headline); - dev_hardware(aif); - } - } -} - -/* - * Change device parameters - */ -static void -device_modify(int argc, char *argv[]) -{ - int opt; - struct atmif *aif; - int mode = 0; - int n; - struct snmp_pdu pdu, resp; - - static const struct option opts[] = { -#define MODIFY_MODE 0 - { "mode", OPT_STRING, NULL }, - { NULL, 0, NULL } - }; - - while ((opt = parse_options(&argc, &argv, opts)) != -1) - switch (opt) { - - case MODIFY_MODE: - if (pparse(&mode, strsunimode, optarg) == -1 || - mode == 3) - errx(1, "illegal mode for -m '%s'", optarg); - break; - } - - if (argc != 1) - errx(1, "device modify needs one argument"); - - snmp_open(NULL, NULL, NULL, NULL); - - atexit(snmp_close); - atmif_fetchtable(); - - if ((aif = atmif_find_name(argv[0])) == NULL) - errx(1, "%s: no such ATM interface", argv[0]); - - snmp_pdu_create(&pdu, SNMP_PDU_SET); - if (mode != 0) { - n = snmp_add_binding(&pdu, - &oid_begemotAtmIfMode, SNMP_SYNTAX_INTEGER, - NULL); - snmp_oid_append(&pdu.bindings[n + 0].var, "i", - (asn_subid_t)aif->index); - pdu.bindings[n + 0].v.integer = mode; - } - - if (pdu.nbindings == 0) - errx(1, "must specify something to modify"); - - if (snmp_dialog(&pdu, &resp)) - errx(1, "No response from '%s': %s", snmp_client.chost, - snmp_client.error); - - if (snmp_pdu_check(&pdu, &resp) <= 0) - errx(1, "Error modifying device"); - - snmp_pdu_free(&resp); - snmp_pdu_free(&pdu); -} - -/* XXX while this is compiled in */ -void -device_register(void) -{ - register_module(&amodule_1); -} - -/* - * Fetch the ATM interface table - */ -void -atmif_fetchtable(void) -{ - struct atmif *aif; - - while ((aif = TAILQ_FIRST(&atmif_list)) != NULL) { - free(aif->ifname); - free(aif->esi); - TAILQ_REMOVE(&atmif_list, aif, link); - free(aif); - } - - if (snmp_table_fetch(&atmif_table, &atmif_list) != 0) - errx(1, "AtmIf table: %s", snmp_client.error); -} - -/* - * Find a named ATM interface - */ -struct atmif * -atmif_find_name(const char *ifname) -{ - struct atmif *atmif; - - TAILQ_FOREACH(atmif, &atmif_list, link) - if (strcmp(atmif->ifname, ifname) == 0) - return (atmif); - return (NULL); -} -/* - * find an ATM interface by index - */ -struct atmif * -atmif_find(u_int idx) -{ - struct atmif *atmif; - - TAILQ_FOREACH(atmif, &atmif_list, link) - if (atmif->index == (int32_t)idx) - return (atmif); - return (NULL); -} diff --git a/sbin/atm/atmconfig/atmconfig_device.h b/sbin/atm/atmconfig/atmconfig_device.h deleted file mode 100644 index 1c099fcdc79a..000000000000 --- a/sbin/atm/atmconfig/atmconfig_device.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright (c) 2001-2002 - * Fraunhofer Institute for Open Communication Systems (FhG Fokus). - * All rights reserved. - * Copyright (c) 2003-2004 - * Hartmut Brandt. - * All rights reserved. - * - * Author: Hartmut Brandt <harti@freebsd.org> - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - */ -#ifndef ATMCONFIG_DEVICE_H_ -#define ATMCONFIG_DEVICE_H_ - -#include <sys/types.h> -#include <sys/queue.h> -#include <stdint.h> - -/* - * ATM interface table - */ -struct atmif { - TAILQ_ENTRY(atmif) link; - uint64_t found; - int32_t index; - char *ifname; - size_t ifnamelen; - uint32_t pcr; - int32_t media; - uint32_t vpi_bits; - uint32_t vci_bits; - uint32_t max_vpcs; - uint32_t max_vccs; - u_char *esi; - size_t esilen; - int32_t carrier; - int32_t mode; -}; -TAILQ_HEAD(atmif_list, atmif); - -/* list of all ATM interfaces */ -extern struct atmif_list atmif_list; - -/* fetch this table */ -void atmif_fetchtable(void); - -/* find an ATM interface by name */ -struct atmif *atmif_find_name(const char *); - -/* find an ATM interface by index */ -struct atmif *atmif_find(u_int); - -#endif diff --git a/sbin/atm/atmconfig/atmconfig_device.help b/sbin/atm/atmconfig/atmconfig_device.help deleted file mode 100644 index 27237c8cb7b9..000000000000 --- a/sbin/atm/atmconfig/atmconfig_device.help +++ /dev/null @@ -1,62 +0,0 @@ -# Copyright (c) 2003-2004 -# Hartmut Brandt. -# All rights reserved. -# -# Author: Hartmut Brandt <harti@freebsd.org> -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -# SUCH DAMAGE. -# -# Help file for the atmconfig utility -# -# $FreeBSD$ -# -^0 device -^^ device show information about ATM hardware interfaces -This command shows information about the ATM hardware interfaces on the -system. Status information can be obtained by: - - atmconfig [common-options] device status [options] [device ...] - -Information about the hardware of the ATM interfaces is reported by: - - atmconfig [common-options] device hardware [options] [device ...] - -The parameters of the a device can be changed by: - - atmconfig [common-options] device modify [options] <device> - -^1 status -usage: atmconfig [common-options] device status [device ...] - -If no device is given as argument information about all devices is shown. - -^1 hardware -usage: atmconfig [common-options] device hardware [device ...] - -If now device is given as argument information about all devices is shown. - -^1 modify -usage: atmconfig [common-options] device modify [-mode mode] <device> - -options: - -mode switch the SUNI mode to either 'sonet' or 'sdh'. - diff --git a/sbin/atm/atmconfig/diag.c b/sbin/atm/atmconfig/diag.c deleted file mode 100644 index 3225e107e2b6..000000000000 --- a/sbin/atm/atmconfig/diag.c +++ /dev/null @@ -1,1122 +0,0 @@ -/* - * Copyright (c) 2001-2003 - * Fraunhofer Institute for Open Communication Systems (FhG Fokus). - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * Author: Hartmut Brandt <harti@freebsd.org> - */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include <sys/types.h> -#include <sys/sysctl.h> -#include <sys/ioctl.h> -#include <sys/socket.h> -#include <sys/queue.h> -#include <net/if.h> -#include <net/if_mib.h> -#include <net/if_types.h> -#include <net/if_atm.h> -#include <net/if_media.h> -#include <netnatm/natm.h> -#include <dev/utopia/utopia.h> -#include <dev/utopia/suni.h> -#include <dev/utopia/idtphy.h> - -#include "atmconfig.h" -#include "private.h" -#include "diag.h" - -static void diag_list(int, char *[]); -static void diag_config(int, char *[]); -static void diag_vcc(int, char *[]); -static void diag_phy_show(int, char *[]); -static void diag_phy_set(int, char *[]); -static void diag_phy_print(int, char *[]); -static void diag_phy_stats(int, char *[]); -static void diag_stats(int, char *[]); - -static const struct cmdtab diag_phy_tab[] = { - { "show", NULL, diag_phy_show }, - { "set", NULL, diag_phy_set }, - { "stats", NULL, diag_phy_stats }, - { "print", NULL, diag_phy_print }, - { NULL, NULL, NULL }, -}; - -const struct cmdtab diag_tab[] = { - { "list", NULL, diag_list }, - { "config", NULL, diag_config }, - { "phy", diag_phy_tab, NULL }, - { "stats", NULL, diag_stats }, - { "vcc", NULL, diag_vcc }, - { NULL, NULL, NULL } -}; - -static const struct utopia_print suni_lite[] = { SUNI_PRINT_LITE }; -static const struct utopia_print suni_ultra[] = { SUNI_PRINT_ULTRA }; -static const struct utopia_print suni_622[] = { SUNI_PRINT_622 }; -static const struct utopia_print idt77105[] = { IDTPHY_PRINT_77105 }; -static const struct utopia_print idt77155[] = { IDTPHY_PRINT_77155 }; - -static const struct { - const struct utopia_print *tab; - u_int len; - u_int type; -} phy_print[] = { - { suni_lite, sizeof(suni_lite) / sizeof(suni_lite[0]), - UTP_TYPE_SUNI_LITE }, - { suni_ultra, sizeof(suni_ultra) / sizeof(suni_ultra[0]), - UTP_TYPE_SUNI_ULTRA }, - { suni_622, sizeof(suni_622) / sizeof(suni_622[0]), - UTP_TYPE_SUNI_622 }, - { idt77105, sizeof(idt77105) / sizeof(idt77105[0]), - UTP_TYPE_IDT77105 }, - { idt77155, sizeof(idt77155) / sizeof(idt77155[0]), - UTP_TYPE_IDT77155 }, -}; - -static const u_int utopia_addreg[] = { UTP_REG_ADD }; - -/* - * Driver statistics printing - */ -static const char *const print_stats_pca200e[] = { - "cmd_queue_full:", - "get_stat_errors:", - "clr_stat_errors:", - "get_prom_errors:", - "suni_reg_errors:", - "tx_queue_full:", - "tx_queue_almost_full:", - "tx_pdu2big:", - "tx_too_many_segs:", - "tx_retry:", - "fix_empty:", - "fix_addr_copy:", - "fix_addr_noext:", - "fix_addr_ext:", - "fix_len_noext:", - "fix_len_copy:", - "fix_len:", - "rx_badvc:", - "rx_closed:", - NULL -}; -static const char *const print_stats_he[] = { - "tdprq_full:", - "hbuf_error:", - "crc_error:", - "len_error:", - "flow_closed:", - "flow_drop:", - "tpd_no_mem:", - "rx_seg:", - "empty_hbuf:", - "short_aal5:", - "badlen_aal5:", - "bug_bad_isw:", - "bug_no_irq_upd:", - "itype_tbrq:", - "itype_tpd:", - "itype_rbps:", - "itype_rbpl:", - "itype_rbrq:", - "itype_rbrqt:", - "itype_unknown:", - "itype_phys:", - "itype_err:", - "defrag:", - "mcc:", - "oec:", - "dcc:", - "cec:", - "no_rcv_mbuf:", - NULL -}; -static const char *const print_stats_eni[] = { - "ttrash:", - "mfixaddr:", - "mfixlen:", - "mfixfail:", - "txmbovr:", - "dmaovr:", - "txoutspace:", - "txdtqout:", - "launch:", - "hwpull:", - "swadd:", - "rxqnotus:", - "rxqus:", - "rxdrqout:", - "rxmbufout:", - "txnomap:", - "vtrash:", - "otrash:", - NULL -}; - -static const char *const print_stats_idt77211[] = { - "need_copy:", - "copy_failed:", - "out_of_tbds:", - "no_txmaps:", - "tx_load_err:", - "tx_qfull:", - NULL -}; -static const char *const print_stats_idt77252[] = { - "raw_cells:", - "raw_no_vcc:", - "raw_no_buf:", - "tx_qfull:", - "tx_out_of_tbds:", - "tx_out_of_maps:", - "tx_load_err:", - NULL -}; -static const char *const print_stats_virtual[] = { - "dummy:", - NULL -}; -static const char *const *const print_stats[] = { - [ATM_DEVICE_UNKNOWN] = NULL, - [ATM_DEVICE_PCA200E] = print_stats_pca200e, - [ATM_DEVICE_HE155] = print_stats_he, - [ATM_DEVICE_HE622] = print_stats_he, - [ATM_DEVICE_ENI155P] = print_stats_eni, - [ATM_DEVICE_ADP155P] = print_stats_eni, - [ATM_DEVICE_FORELE25] = print_stats_idt77211, - [ATM_DEVICE_FORELE155] = print_stats_idt77211, - [ATM_DEVICE_NICSTAR25] = print_stats_idt77211, - [ATM_DEVICE_NICSTAR155] = print_stats_idt77211, - [ATM_DEVICE_IDTABR25] = print_stats_idt77252, - [ATM_DEVICE_IDTABR155] = print_stats_idt77252, - [ATM_DEVICE_PROATM25] = print_stats_idt77252, - [ATM_DEVICE_PROATM155] = print_stats_idt77252, - [ATM_DEVICE_VIRTUAL] = print_stats_virtual, -}; - -struct diagif_list diagif_list = TAILQ_HEAD_INITIALIZER(diagif_list); - -/* - * Fetch a phy sysctl - */ -static int -phy_fetch(const char *ifname, const char *var, void *val, size_t len, - int err_fatal) -{ - char *str; - - if (asprintf(&str, "hw.atm.%s.phy_%s", ifname, var) == -1) - err(1, NULL); - if (sysctlbyname(str, val, &len, NULL, 0) == -1) { - if (err_fatal || errno != ENOENT) - err(1, "%s", str); - free(str); - return (-1); - } - free(str); - return (0); -} - -/* - * Fetch the list of all ATM network interfaces and their MIBs. - */ -void -diagif_fetch(void) -{ - size_t len; - int count; - int name[6]; - struct ifmibdata mib; - struct ifatm_mib atm; - int idx; - struct diagif *d; - - while ((d = TAILQ_FIRST(&diagif_list)) != NULL) { - if (d->vtab != NULL) - free(d->vtab); - TAILQ_REMOVE(&diagif_list, d, link); - free(d); - } - - len = sizeof(count); - if (sysctlbyname("net.link.generic.system.ifcount", &count, &len, - NULL, 0) == -1) - err(1, "ifcount"); - - name[0] = CTL_NET; - name[1] = PF_LINK; - name[2] = NETLINK_GENERIC; - name[3] = IFMIB_IFDATA; - - for (idx = 1; idx <= count; idx++) { - name[4] = idx; - name[5] = IFDATA_GENERAL; - len = sizeof(mib); - if (sysctl(name, 6, &mib, &len, NULL, 0) == -1) - err(1, "interface %d: general mib", idx); - if (mib.ifmd_data.ifi_type == IFT_ATM) { - name[5] = IFDATA_LINKSPECIFIC; - len = sizeof(atm); - if (sysctl(name, 6, &atm, &len, NULL, 0) == -1) - err(1, "interface %d: ATM mib", idx); - - d = malloc(sizeof(*d)); - if (d == NULL) - err(1, NULL); - bzero(d, sizeof(*d)); - d->mib = atm; - d->index = idx; - strcpy(d->ifname, mib.ifmd_name); - TAILQ_INSERT_TAIL(&diagif_list, d, link); - - if (phy_fetch(d->ifname, "type", &d->phy_type, - sizeof(d->phy_type), 0) == 0) { - d->phy_present = 1; - phy_fetch(d->ifname, "loopback", - &d->phy_loopback, - sizeof(d->phy_loopback), 1); - phy_fetch(d->ifname, "name", &d->phy_name, - sizeof(d->phy_name), 1); - phy_fetch(d->ifname, "state", &d->phy_state, - sizeof(d->phy_state), 1); - phy_fetch(d->ifname, "carrier", &d->phy_carrier, - sizeof(d->phy_carrier), 1); - } - } - } -} - -/* - * "<radix><bit>STRING\011<mask><pattern>STRING\012<mask><radix>STRING" - */ -static char * -printb8(uint32_t val, const char *descr) -{ - static char buffer[1000]; - char *ptr; - int tmp = 0; - u_char mask, pattern; - - if (*descr++ == '\010') - sprintf(buffer, "%#o", val); - else - sprintf(buffer, "%#x", val); - ptr = buffer + strlen(buffer); - - *ptr++ = '<'; - while (*descr) { - if (*descr == '\11') { - descr++; - mask = *descr++; - pattern = *descr++; - if ((val & mask) == pattern) { - if (tmp++) - *ptr++ = ','; - while (*descr >= ' ') - *ptr++ = *descr++; - } else { - while (*descr >= ' ') - descr++; - } - } else if (*descr == '\12') { - descr++; - mask = *descr++; - pattern = *descr++; - if (tmp++) - *ptr++ = ','; - while (*descr >= ' ') - *ptr++ = *descr++; - *ptr++ = '='; - if (pattern == 8) - sprintf(ptr, "%#o", - (val & mask) >> (ffs(mask)-1)); - else if (pattern == 10) - sprintf(ptr, "%u", - (val & mask) >> (ffs(mask)-1)); - else - sprintf(ptr, "%#x", - (val & mask) >> (ffs(mask)-1)); - ptr += strlen(ptr); - } else { - if (val & (1 << (*descr++ - 1))) { - if (tmp++) - *ptr++ = ','; - while (*descr >= ' ') - *ptr++ = *descr++; - } else { - while (*descr >= ' ') - descr++; - } - } - } - *ptr++ = '>'; - *ptr++ = '\0'; - - return (buffer); -} - -/* - * "<radix><bit>STRING<bit>STRING" - */ -static char * -printb(uint32_t val, const char *descr) -{ - static char buffer[1000]; - char *ptr; - int tmp = 0; - - if (*descr++ == '\010') - sprintf(buffer, "%#o", val); - else - sprintf(buffer, "%#x", val); - ptr = buffer + strlen(buffer); - - *ptr++ = '<'; - while (*descr) { - if (val & (1 << (*descr++ - 1))) { - if (tmp++) - *ptr++ = ','; - while (*descr > ' ') - *ptr++ = *descr++; - } else { - while (*descr > ' ') - descr++; - } - } - *ptr++ = '>'; - *ptr++ = '\0'; - - return (buffer); -} - - -static void -diag_loop(int argc, char *argv[], const char *text, - void (*func)(const struct diagif *)) -{ - int i; - struct diagif *aif; - - heading_init(); - if (argc > 0) { - for (i = 0; i < argc; i++) { - TAILQ_FOREACH(aif, &diagif_list, link) { - if (strcmp(argv[i], aif->ifname) == 0) { - heading("%s", text); - (*func)(aif); - break; - } - } - if (aif == NULL) - warnx("%s: no such ATM interface", argv[i]); - } - } else { - TAILQ_FOREACH(aif, &diagif_list, link) { - heading("%s", text); - (*func)(aif); - } - } -} - -/* - * Print the config line for the given interface - */ -static void -config_line1(const struct diagif *aif) -{ - printf("%-6u%-9s%-8u%-5u%-6u%-5u%-6u%02x:%02x:%02x:%02x:%02x:%02x\n", - aif->index, aif->ifname, aif->mib.pcr, (1 << aif->mib.vpi_bits) - 1, - (1 << aif->mib.vci_bits) - 1, aif->mib.max_vpcs, aif->mib.max_vccs, - aif->mib.esi[0], aif->mib.esi[1], aif->mib.esi[2], - aif->mib.esi[3], aif->mib.esi[4], aif->mib.esi[5]); -} - -static void -config_line2(const struct diagif *aif) -{ - u_int d, i; - - static const struct { - const char *dev; - const char *vendor; - } devs[] = { - ATM_DEVICE_NAMES - }; - static const struct { - u_int media; - const char *const name; - } medias[] = IFM_SUBTYPE_ATM_DESCRIPTIONS; - - for (i = 0; medias[i].name; i++) - if (aif->mib.media == medias[i].media) - break; - - if ((d = aif->mib.device) >= sizeof(devs) / sizeof(devs[0])) - d = 0; - - printf("%-6u%-9s%-12.11s%-13.12s%-8u%-6x%-6x %s\n", aif->index, - aif->ifname, devs[d].vendor, devs[d].dev, aif->mib.serial, - aif->mib.hw_version, aif->mib.sw_version, - medias[i].name ? medias[i].name : "unknown"); -} - -static void -diag_config(int argc, char *argv[]) -{ - int opt; - - static int hardware; - static int atm; - - static const struct option opts[] = { - { "hardware", OPT_SIMPLE, &hardware }, - { "atm", OPT_SIMPLE, &atm }, - { NULL, 0, NULL } - }; - - static const char config_text1[] = - "Interface Max Max\n" - "Index Name PCR VPI VCI VPCs VCCs ESI\n"; - static const char config_text2[] = - "Interface Version\n" - "Index Name Vendor Card " - "Serial HW SW Media\n"; - - while ((opt = parse_options(&argc, &argv, opts)) != -1) - switch (opt) { - } - - diagif_fetch(); - if (TAILQ_EMPTY(&diagif_list)) - errx(1, "no ATM interfaces found"); - - if (!atm && !hardware) - atm = 1; - - if (atm) - diag_loop(argc, argv, config_text1, config_line1); - if (hardware) - diag_loop(argc, argv, config_text2, config_line2); - -} - -static void -diag_list(int argc, char *argv[]) -{ - int opt; - struct diagif *aif; - - static const struct option opts[] = { - { NULL, 0, NULL } - }; - - while ((opt = parse_options(&argc, &argv, opts)) != -1) - switch (opt) { - } - - if (argc > 0) - errx(1, "no arguments required for 'diag list'"); - - diagif_fetch(); - if (TAILQ_EMPTY(&diagif_list)) - errx(1, "no ATM interfaces found"); - - TAILQ_FOREACH(aif, &diagif_list, link) - printf("%s ", aif->ifname); - printf("\n"); -} - -/* - * Print the config line for the given interface - */ -static void -phy_show_line(const struct diagif *aif) -{ - printf("%-6u%-9s", aif->index, aif->ifname); - if (aif->phy_present) - printf("%-5u%-25s0x%-9x", aif->phy_type, - aif->phy_name, aif->phy_loopback); - printf("\n"); -} - -static void -diag_phy_show(int argc, char *argv[]) -{ - int opt; - - static const struct option opts[] = { - { NULL, 0, NULL } - }; - - static const char phy_show_text[] = - "Interface Phy\n" - "Index Name Type Name Loopback State\n"; - - while ((opt = parse_options(&argc, &argv, opts)) != -1) - switch (opt) { - } - - diagif_fetch(); - if (TAILQ_EMPTY(&diagif_list)) - errx(1, "no ATM interfaces found"); - - diag_loop(argc, argv, phy_show_text, phy_show_line); -} - -/* - * Make sure the interface exists and has a phy - */ -static struct diagif * -diagif_get_phy(const char *arg) -{ - struct diagif *aif; - - diagif_fetch(); - TAILQ_FOREACH(aif, &diagif_list, link) - if (strcmp(aif->ifname, arg) == 0) - break; - if (aif == NULL) - errx(1, "no such interface: %s", arg); - if (!aif->phy_present) - errx(1, "interface %s has no phy", arg); - - return (aif); -} - -static void -diag_phy_set(int argc, char *argv[]) -{ - int opt; - uint8_t reg[3]; - u_long res; - char *end; - char *str; - - static const struct option opts[] = { - { NULL, 0, NULL } - }; - - while ((opt = parse_options(&argc, &argv, opts)) != -1) - switch (opt) { - } - - if (argc != 4) - errx(1, "missing arguments for 'diag phy set'"); - - errno = 0; - res = strtoul(argv[1], &end, 0); - if (errno != 0) - err(1, "register number"); - if (*end != '\0') - errx(1, "malformed register number '%s'", argv[1]); - if (res > 0xff) - errx(1, "register number too large"); - reg[0] = res; - - errno = 0; - res = strtoul(argv[2], &end, 0); - if (errno != 0) - err(1, "mask"); - if (*end != '\0') - errx(1, "malformed mask '%s'", argv[1]); - if (res > 0xff) - errx(1, "mask too large"); - reg[1] = res; - - errno = 0; - res = strtoul(argv[3], &end, 0); - if (errno != 0) - err(1, "value"); - if (*end != '\0') - errx(1, "malformed value '%s'", argv[1]); - if (res > 0xff) - errx(1, "value too large"); - reg[2] = res; - - (void)diagif_get_phy(argv[0]); - - if (asprintf(&str, "hw.atm.%s.phy_regs", argv[0]) == -1) - err(1, NULL); - - if (sysctlbyname(str, NULL, NULL, reg, 3 * sizeof(uint8_t))) - err(1, "%s", str); - - free(str); -} - -static void -diag_phy_print(int argc, char *argv[]) -{ - int opt; - char *str; - size_t len, len1; - uint8_t *regs; - u_int type, i; - const struct utopia_print *p; - - static int numeric; - - static const struct option opts[] = { - { "numeric", OPT_SIMPLE, &numeric }, - { NULL, 0, NULL } - }; - - while ((opt = parse_options(&argc, &argv, opts)) != -1) - switch (opt) { - } - - if (argc != 1) - errx(1, "need device name for 'diag phy print'"); - - (void)diagif_get_phy(argv[0]); - - if (asprintf(&str, "hw.atm.%s.phy_regs", argv[0]) == -1) - err(1, NULL); - len = 0; - if (sysctlbyname(str, NULL, &len, NULL, 0)) - err(1, "'%s' not found", str); - - regs = malloc(len); - if (regs == NULL) - err(1, NULL); - - if (sysctlbyname(str, regs, &len, NULL, 0)) - err(1, "'%s' not found", str); - free(str); - - if (numeric) { - for (i = 0; i < len; i++) { - if (i % 16 == 0) - printf("%02x: ", i); - if (i % 16 == 8) - printf(" "); - printf(" %02x", regs[i]); - if (i % 16 == 15) - printf("\n"); - } - if (i % 16 != 0) - printf("\n"); - } else { - if (asprintf(&str, "hw.atm.%s.phy_type", argv[0]) == -1) - err(1, NULL); - len1 = sizeof(type); - if (sysctlbyname(str, &type, &len1, NULL, 0)) - err(1, "'%s' not found", str); - free(str); - - for (i = 0; i < sizeof(phy_print) / sizeof(phy_print[0]); i++) - if (type == phy_print[i].type) - break; - if (i == sizeof(phy_print) / sizeof(phy_print[0])) - errx(1, "unknown PHY chip type %u\n", type); - - for (p = phy_print[i].tab; - p < phy_print[i].tab + phy_print[i].len; - p++) { - if (p->reg + utopia_addreg[p->type] > len) - /* don't have this register */ - continue; - - printf("%s:%*s", p->name, 40 - (int)strlen(p->name),""); - - switch (p->type) { - - case UTP_REGT_BITS: - printf("%s\n", printb8(regs[p->reg], p->fmt)); - break; - - case UTP_REGT_INT8: - printf("%#x\n", regs[p->reg]); - break; - - case UTP_REGT_INT10BITS: - printf("%#x %s\n", regs[p->reg] | - ((regs[p->reg + 1] & 0x3) << 8), - printb8(regs[p->reg + 1], p->fmt)); - break; - - case UTP_REGT_INT12: - printf("%#x\n", regs[p->reg] | - ((regs[p->reg + 1] & 0xf) << 8)); - break; - - case UTP_REGT_INT16: - printf("%#x\n", regs[p->reg] | - (regs[p->reg + 1] << 8)); - break; - - case UTP_REGT_INT19: - printf("%#x\n", regs[p->reg] | - (regs[p->reg + 1] << 8) | - ((regs[p->reg + 2] & 0x7) << 16)); - break; - - case UTP_REGT_INT20: - printf("%#x\n", regs[p->reg] | - (regs[p->reg + 1] << 8) | - ((regs[p->reg + 2] & 0xf) << 16)); - break; - - case UTP_REGT_INT21: - printf("%#x\n", regs[p->reg] | - (regs[p->reg + 1] << 8) | - ((regs[p->reg + 2] & 0x1f) << 16)); - break; - - default: - abort(); - } - } - } - free(regs); -} - -static void -diag_phy_stats(int argc, char *argv[]) -{ - int opt; - size_t len; - char *str; - struct utopia_stats1 stats1; - u_int foo; - - static int clear; - - static const struct option opts[] = { - { "clear", OPT_SIMPLE, &clear }, - { NULL, 0, NULL } - }; - - while ((opt = parse_options(&argc, &argv, opts)) != -1) - switch (opt) { - } - - if (argc != 1) - errx(1, "need device name for 'diag phy stats'"); - - (void)diagif_get_phy(argv[0]); - - if (asprintf(&str, "hw.atm.%s.phy_stats", argv[0]) == -1) - err(1, NULL); - - len = sizeof(stats1); - if (sysctlbyname(str, &stats1, &len, - clear ? &foo : NULL, clear ? sizeof(foo) : 0)) - err(1, "'%s' not found", str); - if (len < sizeof(stats1.version)) - errx(1, "phy statistics too short %zu", len); - - switch (stats1.version) { - - case 1: - if (len != sizeof(stats1)) - errx(1, "bad phy stats length %zu (expecting %zu)", - len, sizeof(stats1)); - break; - - default: - errx(1, "unknown phy stats version %u", stats1.version); - } - - free(str); - - printf("rx_sbip: %llu\n", (unsigned long long)stats1.rx_sbip); - printf("rx_lbip: %llu\n", (unsigned long long)stats1.rx_lbip); - printf("rx_lfebe: %llu\n", (unsigned long long)stats1.rx_lfebe); - printf("rx_pbip: %llu\n", (unsigned long long)stats1.rx_pbip); - printf("rx_pfebe: %llu\n", (unsigned long long)stats1.rx_pfebe); - printf("rx_cells: %llu\n", (unsigned long long)stats1.rx_cells); - printf("rx_corr: %llu\n", (unsigned long long)stats1.rx_corr); - printf("rx_uncorr: %llu\n", (unsigned long long)stats1.rx_uncorr); - printf("rx_symerr: %llu\n", (unsigned long long)stats1.rx_symerr); - printf("tx_cells: %llu\n", (unsigned long long)stats1.tx_cells); -} - -/* - * Fetch the table of open vccs - */ -void -diagif_fetch_vcc(struct diagif *aif, int fd) -{ - struct ifreq ifr; - - if (aif->vtab != NULL) - return; - - strncpy(ifr.ifr_name, aif->ifname, IFNAMSIZ); - ifr.ifr_name[IFNAMSIZ - 1] = '\0'; - - aif->vtab = malloc(sizeof(*aif->vtab) + sizeof(aif->vtab->vccs[0]) * - aif->mib.max_vccs); - if (aif->vtab == NULL) - err(1, NULL); - ifr.ifr_data = (caddr_t)aif->vtab; - - if (ioctl(fd, SIOCATMGVCCS, &ifr) == -1) - err(1, "SIOCATMGVCCS"); -} - -/* - * Print the VCC table for this interface. - */ -static void -print_channel(const struct diagif *aif) -{ - const struct atmio_vcc *v; - - static const char *const aal_tab[] = { - [ATMIO_AAL_0] = "0", - [ATMIO_AAL_34] = "3/4", - [ATMIO_AAL_5] = "5", - [ATMIO_AAL_RAW] = "raw", - }; - static const char *const traffic_tab[] = { - [ATMIO_TRAFFIC_UBR] = "ubr", - [ATMIO_TRAFFIC_CBR] = "cbr", - [ATMIO_TRAFFIC_ABR] = "abr", - [ATMIO_TRAFFIC_VBR] = "vbr", - }; - - for (v = aif->vtab->vccs; v < &aif->vtab->vccs[aif->vtab->count]; v++) { - printf("%-6u%-9s%-4u%-6u", aif->index, aif->ifname, - v->vpi, v->vci); - - if (v->aal >= sizeof(aal_tab)/sizeof(aal_tab[0]) || - aal_tab[v->aal] == NULL) - printf("bad "); - else - printf("%-4s", aal_tab[v->aal]); - - if (v->traffic >= sizeof(traffic_tab)/sizeof(traffic_tab[0]) || - traffic_tab[v->traffic] == NULL) - printf("bad "); - else - printf("%-8s", traffic_tab[v->traffic]); - - printf("%-6u%-6u%s\n", v->rmtu, v->tmtu, - printb(v->flags, ATMIO_FLAGS)); - } -} - -/* - * Print the VCC table for this interface, traffic parameters. - */ -static void -print_traffic(const struct diagif *aif) -{ - const struct atmio_vcc *v; - - for (v = aif->vtab->vccs; v < &aif->vtab->vccs[aif->vtab->count]; v++) { - printf("%-6u%-9s%-4u%-6u", aif->index, aif->ifname, - v->vpi, v->vci); - - switch (v->traffic) { - - case ATMIO_TRAFFIC_CBR: - printf("%u", v->tparam.pcr); - break; - - case ATMIO_TRAFFIC_UBR: - printf("%-8u %u", v->tparam.pcr, - v->tparam.mcr); - break; - - case ATMIO_TRAFFIC_VBR: - printf("%-8u%-8u%-8u", v->tparam.pcr, v->tparam.scr, - v->tparam.mbs); - break; - - case ATMIO_TRAFFIC_ABR: - printf("%-8u %-8u", - v->tparam.pcr, v->tparam.mcr); - break; - } - printf("\n"); - } -} - -/* - * Print the VCC table for this interface, ABR traffic parameters. - */ -static void -print_abr(const struct diagif *aif) -{ - const struct atmio_vcc *v; - - for (v = aif->vtab->vccs; v < &aif->vtab->vccs[aif->vtab->count]; v++) { - printf("%-6u%-9s%-4u%-6u", aif->index, aif->ifname, - v->vpi, v->vci); - - if (v->traffic == ATMIO_TRAFFIC_ABR) { - printf("%-8u%-8u%-4u%-4u%-5u%-5u%-5u%u", - v->tparam.icr, v->tparam.tbe, v->tparam.nrm, - v->tparam.trm, v->tparam.adtf, v->tparam.rif, - v->tparam.rdf, v->tparam.cdf); - } - printf("\n"); - } -} - -static void -diag_vcc_loop(void (*func)(const struct diagif *), const char *text, - int argc, char *argv[], int fd) -{ - struct diagif *aif; - - heading_init(); - if (argc == 0) { - TAILQ_FOREACH(aif, &diagif_list, link) { - diagif_fetch_vcc(aif, fd); - if (aif->vtab->count != 0) { - heading("%s", text); - (*func)(aif); - } - } - - } else { - for (optind = 0; optind < argc; optind++) { - TAILQ_FOREACH(aif, &diagif_list, link) - if (strcmp(aif->ifname, argv[optind]) == 0) { - diagif_fetch_vcc(aif, fd); - if (aif->vtab->count != 0) { - heading("%s", text); - (*func)(aif); - } - break; - } - if (aif == NULL) - warnx("no such interface '%s'", argv[optind]); - } - } -} - -static void -diag_vcc(int argc, char *argv[]) -{ - int opt, fd; - - static int channel, traffic, abr; - static const struct option opts[] = { - { "abr", OPT_SIMPLE, &abr }, - { "channel", OPT_SIMPLE, &channel }, - { "traffic", OPT_SIMPLE, &traffic }, - { NULL, 0, NULL } - }; - static const char head_channel[] = - "Interface\n" - "Index Name VPI VCI AAL Traffic RxMTU TxMTU Flags\n"; - static const char head_traffic[] = - "Interface Traffic parameters\n" - "Index Name VPI VCI PCR SCR MBS MCR\n"; - static const char head_abr[] = - "Interface ABR traffic parameters\n" - "Index Name VPI VCI ICR TBE NRM TRM ADTF RIF RDF " - "CDF\n"; - - while ((opt = parse_options(&argc, &argv, opts)) != -1) - switch (opt) { - } - - fd = socket(PF_NATM, SOCK_STREAM, PROTO_NATMAAL5); - if (fd < 0) - err(1, "socket"); - - diagif_fetch(); - if (TAILQ_EMPTY(&diagif_list)) - errx(1, "no ATM interfaces found"); - - if (!channel && !traffic && !abr) - channel = 1; - - if (channel) - diag_vcc_loop(print_channel, head_channel, argc, argv, fd); - if (traffic) - diag_vcc_loop(print_traffic, head_traffic, argc, argv, fd); - if (abr) - diag_vcc_loop(print_abr, head_abr, argc, argv, fd); -} - -/* - * Print driver-internal statistics - */ -static void -diag_stats(int argc, char *argv[]) -{ - int opt; - char *str; - size_t len; - uint32_t *stats; - struct diagif *aif; - u_int i; - - static const struct option opts[] = { - { NULL, 0, NULL } - }; - - while ((opt = parse_options(&argc, &argv, opts)) != -1) - switch (opt) { - } - - if (argc != 1) - errx(1, "need one arg for 'diag stats'"); - - diagif_fetch(); - TAILQ_FOREACH(aif, &diagif_list, link) - if (strcmp(aif->ifname, argv[0]) == 0) - break; - - if (aif == NULL) - errx(1, "interface '%s' not found", argv[0]); - - if (asprintf(&str, "hw.atm.%s.istats", argv[0]) == -1) - err(1, NULL); - len = 0; - if (sysctlbyname(str, NULL, &len, NULL, 0)) - err(1, "'%s' not found", str); - - stats = malloc(len); - if (stats == NULL) - err(1, NULL); - - if (sysctlbyname(str, stats, &len, NULL, 0)) - err(1, "'%s' not found", str); - free(str); - - if (aif->mib.device >= sizeof(print_stats) / sizeof(print_stats[0]) || - print_stats[aif->mib.device] == NULL) - errx(1, "unknown stats format (%u)", aif->mib.device); - - for (i = 0; print_stats[aif->mib.device][i] != NULL; i++) { - if (i * sizeof(uint32_t) >= len) - errx(1, "debug info too short (version mismatch?)"); - printf("%-22s%u\n", print_stats[aif->mib.device][i], stats[i]); - } - free(stats); - - if (i != len / sizeof(uint32_t)) - errx(1, "debug info too long (version mismatch?)"); -} diff --git a/sbin/atm/atmconfig/diag.h b/sbin/atm/atmconfig/diag.h deleted file mode 100644 index 8b36cd44e1f5..000000000000 --- a/sbin/atm/atmconfig/diag.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2001-2003 - * Fraunhofer Institute for Open Communication Systems (FhG Fokus). - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * Author: Hartmut Brandt <harti@freebsd.org> - * - * $FreeBSD$ - */ - -struct diagif { - TAILQ_ENTRY(diagif) link; - char ifname[IFNAMSIZ]; - u_int index; - struct ifatm_mib mib; - int phy_present : 1; - u_int phy_type; - u_int phy_loopback; - char phy_name[100]; - u_int phy_state; - u_int phy_carrier; - struct atmio_vcctable *vtab; -}; -TAILQ_HEAD(diagif_list, diagif); -extern struct diagif_list diagif_list; - -void diagif_fetch(void); -void diagif_fetch_vcc(struct diagif *aif, int fd); diff --git a/sbin/atm/atmconfig/main.c b/sbin/atm/atmconfig/main.c deleted file mode 100644 index 137421830a50..000000000000 --- a/sbin/atm/atmconfig/main.c +++ /dev/null @@ -1,880 +0,0 @@ -/* - * Copyright (c) 2001-2003 - * Fraunhofer Institute for Open Communication Systems (FhG Fokus). - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * Author: Hartmut Brandt <harti@freebsd.org> - */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include <sys/types.h> -#include <sys/sysctl.h> -#include <netdb.h> -#include <stdarg.h> -#include <ctype.h> -#include <limits.h> -#include <stdint.h> -#include <fnmatch.h> -#include <dirent.h> -#ifdef WITH_BSNMP -#include <bsnmp/asn1.h> -#include <bsnmp/snmp.h> -#include <bsnmp/snmpclient.h> -#endif - -#include "atmconfig.h" -#include "private.h" - -/* verbosity level */ -static int verbose; - -/* notitle option */ -static int notitle; - -/* need to put heading before next output */ -static int need_heading; - -/* - * TOP LEVEL commands - */ -static void help_func(int argc, char *argv[]) __dead2; - -static const struct cmdtab static_main_tab[] = { - { "help", NULL, help_func }, - { "options", NULL, NULL }, - { "commands", NULL, NULL }, - { "diag", diag_tab, NULL }, - { "natm", natm_tab, NULL }, - { NULL, NULL, NULL } -}; - -static struct cmdtab *main_tab = NULL; -static size_t main_tab_size = sizeof(static_main_tab) / - sizeof(static_main_tab[0]); - -static int -substr(const char *s1, const char *s2) -{ - return (strlen(s1) <= strlen(s2) && strncmp(s1, s2, strlen(s1)) == 0); -} - -/* - * Current help file state - */ -struct help_file { - int file_state; /* 0:looking for main file, 1:found, 2:other */ - const char *p_start; /* current path pointer */ - const char *p_end; /* end of current path in path */ - char *dirname; /* directory name */ - DIR *dir; /* open directory */ - char *fname; /* current filename */ - FILE *fp; /* open file */ - char line[LINE_MAX]; /* current line */ - u_int fcnt; /* count of files found */ -}; - -struct help_pos { - off_t pos; /* file position */ - u_int fcnt; /* number of file */ - char *fname; /* name of file */ - const char *p_start; /* current path pointer */ - const char *p_end; /* end of current path in path */ -}; - -static int -help_next_file(struct help_file *hp) -{ - const char *fpat; - struct dirent *ent; - - if (hp->file_state == 3) - return (-1); - - if (hp->file_state == 0) - fpat = FILE_HELP; - else - fpat = FILE_HELP_OTHERS; - - if (hp->file_state == 0 || hp->file_state == 1) { - /* start from beginning */ - hp->p_start = PATH_HELP; - hp->file_state++; - } - - try_file: - if (hp->dir != NULL) { - /* directory open (must be state 2) */ - while ((ent = readdir(hp->dir)) != NULL) { - if (fnmatch(fpat, ent->d_name, FNM_NOESCAPE) != 0) - continue; - if (asprintf(&hp->fname, "%s/%s", hp->dirname, - ent->d_name) == -1) - err(1, NULL); - if ((hp->fp = fopen(hp->fname, "r")) != NULL) { - hp->fcnt++; - return (0); - } - free(hp->fname); - } - /* end of directory */ - closedir(hp->dir); - hp->dir = NULL; - free(hp->dirname); - goto next_path; - } - - /* nothing open - advanc to new path element */ - try_path: - for (hp->p_end = hp->p_start; *hp->p_end != '\0' && - *hp->p_end != ':'; hp->p_end++) - ; - - if (asprintf(&hp->dirname, "%.*s", (int)(hp->p_end - hp->p_start), - hp->p_start) == -1) - err(1, NULL); - - if (hp->file_state == 1) { - /* just try to open */ - if (asprintf(&hp->fname, "%s/%s", hp->dirname, fpat) == -1) - err(1, NULL); - if ((hp->fp = fopen(hp->fname, "r")) != NULL) { - hp->fcnt++; - return (0); - } - free(hp->fname); - - goto next_path; - } - - /* open directory */ - if ((hp->dir = opendir(hp->dirname)) != NULL) - goto try_file; - - free(hp->dirname); - - next_path: - hp->p_start = hp->p_end; - if (*hp->p_start == '\0') { - /* end of path */ - if (hp->file_state == 1) - errx(1, "help file not found"); - return (-1); - } - hp->p_start++; - goto try_path; - -} - -/* - * Save current file position - */ -static void -help_file_tell(struct help_file *hp, struct help_pos *pos) -{ - if (pos->fname != NULL) - free(pos->fname); - if ((pos->fname = strdup(hp->fname)) == NULL) - err(1, NULL); - pos->fcnt = hp->fcnt; - pos->p_start = hp->p_start; - pos->p_end = hp->p_end; - if ((pos->pos = ftello(hp->fp)) == -1) - err(1, "%s", pos->fname); -} - -/* - * Go to that position - * - * We can go either to the original help file or back in the current file. - */ -static void -help_file_seek(struct help_file *hp, struct help_pos *pos) -{ - hp->p_start = pos->p_start; - hp->p_end = pos->p_end; - hp->fcnt = pos->fcnt; - - if (hp->dir != NULL) { - free(hp->dirname); - closedir(hp->dir); - hp->dir = NULL; - } - - if (hp->fp != NULL &&strcmp(hp->fname, pos->fname) != 0) { - free(hp->fname); - fclose(hp->fp); - hp->fp = NULL; - } - if (hp->fp == NULL) { - if ((hp->fname = strdup(pos->fname)) == NULL) - err(1, NULL); - if ((hp->fp = fopen(hp->fname, "r")) == NULL) - err(1, "reopen %s", hp->fname); - } - if (fseeko(hp->fp, pos->pos, SEEK_SET) == -1) - err(1, "seek %s", hp->fname); - - if (pos->fcnt == 1) - /* go back to state 1 */ - hp->file_state = 1; - else - /* lock */ - hp->file_state = 3; -} - -/* - * Rewind to position 0 - */ -static void -help_file_rewind(struct help_file *hp) -{ - - if (hp->file_state == 1) { - if (fseeko(hp->fp, (off_t)0, SEEK_SET) == -1) - err(1, "rewind help file"); - return; - } - - if (hp->dir != NULL) { - free(hp->dirname); - closedir(hp->dir); - hp->dir = NULL; - } - - if (hp->fp != NULL) { - free(hp->fname); - fclose(hp->fp); - hp->fp = NULL; - } - memset(hp, 0, sizeof(*hp)); -} - -/* - * Get next line from a help file - */ -static const char * -help_next_line(struct help_file *hp) -{ - for (;;) { - if (hp->fp != NULL) { - if (fgets(hp->line, sizeof(hp->line), hp->fp) != NULL) - return (hp->line); - if (ferror(hp->fp)) - err(1, "%s", hp->fname); - free(hp->fname); - - fclose(hp->fp); - hp->fp = NULL; - } - if (help_next_file(hp) == -1) - return (NULL); - } - -} - -/* - * This function prints the available 0-level help topics from all - * other help files by scanning the files. It assumes, that this is called - * only from the main help file. - */ -static void -help_get_0topics(struct help_file *hp) -{ - struct help_pos save; - const char *line; - - memset(&save, 0, sizeof(save)); - help_file_tell(hp, &save); - - help_file_rewind(hp); - while ((line = help_next_line(hp)) != NULL) { - if (line[0] == '^' && line[1] == '^') - printf("%s", line + 2); - } - help_file_seek(hp, &save); -} - -/* - * Function to print help. The help argument is in argv[0] here. - */ -static void -help_func(int argc, char *argv[]) -{ - struct help_file hfile; - struct help_pos match, last_match; - const char *line; - char key[100]; - int level; - int i, has_sub_topics; - - memset(&hfile, 0, sizeof(hfile)); - memset(&match, 0, sizeof(match)); - memset(&last_match, 0, sizeof(last_match)); - - if (argc == 0) { - /* only 'help' - show intro */ - if ((argv[0] = strdup("intro")) == NULL) - err(1, NULL); - argc = 1; - } - - optind = 0; - match.pos = -1; - last_match.pos = -1; - for (;;) { - /* read next line */ - if ((line = help_next_line(&hfile)) == NULL) { - /* EOF */ - level = 999; - goto stop; - } - if (line[0] != '^' || line[1] == '^') - continue; - - if (sscanf(line + 1, "%d%99s", &level, key) != 2) - errx(1, "error in help file '%s'", line); - - if (level < optind) { - stop: - /* next higher level entry - stop this level */ - if (match.pos == -1) { - /* not found */ - goto not_found; - } - /* go back to the match */ - help_file_seek(&hfile, &match); - last_match = match; - memset(&match, 0, sizeof(match)); - match.pos = -1; - - /* go to next key */ - if (++optind >= argc) - break; - } - if (level == optind) { - if (substr(argv[optind], key)) { - if (match.pos != -1) { - printf("Ambiguous topic."); - goto list_topics; - } - help_file_tell(&hfile, &match); - } - } - } - - /* before breaking above we have seeked back to the matching point */ - for (;;) { - if ((line = help_next_line(&hfile)) == NULL) - break; - - if (line[0] == '#') - continue; - if (line[0] == '^') { - if (line[1] == '^') - continue; - break; - } - if (strncmp(line, "$MAIN", 5) == 0) { - help_get_0topics(&hfile); - continue; - } - printf("%s", line); - } - - exit(0); - - not_found: - printf("Topic not found."); - - list_topics: - printf(" Use one of:\natmconfig help"); - for (i = 0; i < optind; i++) - printf(" %s", argv[i]); - - printf(" ["); - - /* list all the keys at this level */ - if (last_match.pos == -1) - /* go back to start of help */ - help_file_rewind(&hfile); - else - help_file_seek(&hfile, &last_match); - - has_sub_topics = 0; - while ((line = help_next_line(&hfile)) != NULL) { - if (line[0] == '#' || line[0] != '^' || line[1] == '^') - continue; - - if (sscanf(line + 1, "%d%99s", &level, key) != 2) - errx(1, "error in help file '%s'", line); - - if (level < optind) - break; - if (level == optind) { - has_sub_topics = 1; - printf(" %s", key); - } - } - printf(" ]."); - if (!has_sub_topics) - printf(" No sub-topics found."); - printf("\n"); - exit(1); -} - -#ifdef WITH_BSNMP -/* - * Parse a server specification - * - * syntax is [trans::][community@][server][:port] - */ -static void -parse_server(char *name) -{ - char *p, *s = name; - - /* look for a double colon */ - for (p = s; *p != '\0'; p++) { - if (*p == '\\' && p[1] != '\0') { - p++; - continue; - } - if (*p == ':' && p[1] == ':') - break; - } - if (*p != '\0') { - if (p > s) { - if (p - s == 3 && strncmp(s, "udp", 3) == 0) - snmp_client.trans = SNMP_TRANS_UDP; - else if (p - s == 6 && strncmp(s, "stream", 6) == 0) - snmp_client.trans = SNMP_TRANS_LOC_STREAM; - else if (p - s == 5 && strncmp(s, "dgram", 5) == 0) - snmp_client.trans = SNMP_TRANS_LOC_DGRAM; - else - errx(1, "unknown SNMP transport '%.*s'", - (int)(p - s), s); - } - s = p + 2; - } - - /* look for a @ */ - for (p = s; *p != '\0'; p++) { - if (*p == '\\' && p[1] != '\0') { - p++; - continue; - } - if (*p == '@') - break; - } - - if (*p != '\0') { - if (p - s > SNMP_COMMUNITY_MAXLEN) - err(1, "community string too long"); - strncpy(snmp_client.read_community, s, p - s); - snmp_client.read_community[p - s] = '\0'; - strncpy(snmp_client.write_community, s, p - s); - snmp_client.write_community[p - s] = '\0'; - s = p + 1; - } - - /* look for a colon */ - for (p = s; *p != '\0'; p++) { - if (*p == '\\' && p[1] != '\0') { - p++; - continue; - } - if (*p == ':') - break; - } - - if (*p == ':') { - if (p > s) { - *p = '\0'; - snmp_client_set_host(&snmp_client, s); - *p = ':'; - } - snmp_client_set_port(&snmp_client, p + 1); - } else if (p > s) - snmp_client_set_host(&snmp_client, s); -} -#endif - -int -main(int argc, char *argv[]) -{ - int opt, i; - const struct cmdtab *match, *cc, *tab; - -#ifdef WITH_BSNMP - snmp_client_init(&snmp_client); - snmp_client.trans = SNMP_TRANS_LOC_STREAM; - snmp_client_set_host(&snmp_client, PATH_ILMI_SOCK); -#endif - -#ifdef WITH_BSNMP -#define OPTSTR "htvs:" -#else -#define OPTSTR "htv" -#endif - - while ((opt = getopt(argc, argv, OPTSTR)) != -1) - switch (opt) { - - case 'h': - help_func(0, argv); - -#ifdef WITH_BSNMP - case 's': - parse_server(optarg); - break; -#endif - - case 'v': - verbose++; - break; - - case 't': - notitle = 1; - break; - } - - if (argv[optind] == NULL) - help_func(0, argv); - - argc -= optind; - argv += optind; - - if ((main_tab = malloc(sizeof(static_main_tab))) == NULL) - err(1, NULL); - memcpy(main_tab, static_main_tab, sizeof(static_main_tab)); - -#ifdef WITH_BSNMP - /* XXX while this is compiled in */ - device_register(); -#endif - - cc = main_tab; - i = 0; - for (;;) { - /* - * Scan the table for a match - */ - tab = cc; - match = NULL; - while (cc->string != NULL) { - if (substr(argv[i], cc->string)) { - if (match != NULL) { - printf("Ambiguous option '%s'", - argv[i]); - cc = tab; - goto subopts; - } - match = cc; - } - cc++; - } - if ((cc = match) == NULL) { - printf("Unknown option '%s'", argv[i]); - cc = tab; - goto subopts; - } - - /* - * Have a match. If there is no subtable, there must - * be either a handler or the command is only a help entry. - */ - if (cc->sub == NULL) { - if (cc->func != NULL) - break; - printf("Unknown option '%s'", argv[i]); - cc = tab; - goto subopts; - } - - /* - * Look at the next argument. If it doesn't exist or it - * looks like a switch, terminate the scan here. - */ - if (argv[i + 1] == NULL || argv[i + 1][0] == '-') { - if (cc->func != NULL) - break; - printf("Need sub-option for '%s'", argv[i]); - cc = cc->sub; - goto subopts; - } - - cc = cc->sub; - i++; - } - - argc -= i + 1; - argv += i + 1; - - (*cc->func)(argc, argv); - - return (0); - - subopts: - printf(". Select one of:\n"); - while (cc->string != NULL) { - if (cc->func != NULL || cc->sub != NULL) - printf("%s ", cc->string); - cc++; - } - printf("\n"); - - return (1); -} - -void -verb(const char *fmt, ...) -{ - va_list ap; - - if (verbose) { - va_start(ap, fmt); - vfprintf(stderr, fmt, ap); - fprintf(stderr, "\n"); - va_end(ap); - } -} - -void -heading(const char *fmt, ...) -{ - va_list ap; - - if (need_heading) { - need_heading = 0; - if (!notitle) { - va_start(ap, fmt); - fprintf(stdout, fmt, ap); - va_end(ap); - } - } -} - -void -heading_init(void) -{ - need_heading = 1; -} - -/* - * stringify an enumerated value - */ -const char * -penum(int32_t value, const struct penum *strtab, char *buf) -{ - while (strtab->str != NULL) { - if (strtab->value == value) { - strcpy(buf, strtab->str); - return (buf); - } - strtab++; - } - warnx("illegal value for enumerated variable '%d'", value); - strcpy(buf, "?"); - return (buf); -} - -/* - * And the other way 'round - */ -int -pparse(int32_t *val, const struct penum *tab, const char *str) -{ - - while (tab->str != NULL) { - if (strcmp(tab->str, str) == 0) { - *val = tab->value; - return (0); - } - tab++; - } - return (-1); -} - -/* - * Parse command line options - */ -int -parse_options(int *pargc, char ***pargv, const struct option *opts) -{ - const struct option *o, *m; - char *arg; - u_long ularg, ularg1; - long larg; - char *end; - - if (*pargc == 0) - return (-1); - arg = (*pargv)[0]; - if (arg[0] != '-' || arg[1] == '\0') - return (-1); - if (arg[1] == '-' && arg[2] == '\0') { - (*pargv)++; - (*pargc)--; - return (-1); - } - - m = NULL; - for (o = opts; o->optstr != NULL; o++) { - if (strlen(arg + 1) <= strlen(o->optstr) && - strncmp(arg + 1, o->optstr, strlen(arg + 1)) == 0) { - if (m != NULL) - errx(1, "ambiguous option '%s'", arg); - m = o; - } - } - if (m == NULL) - errx(1, "unknown option '%s'", arg); - - (*pargv)++; - (*pargc)--; - - if (m->opttype == OPT_NONE) - return (m - opts); - - if (m->opttype == OPT_SIMPLE) { - *(int *)m->optarg = 1; - return (m - opts); - } - - if (*pargc == 0) - errx(1, "option requires argument '%s'", arg); - optarg = *(*pargv)++; - (*pargc)--; - - switch (m->opttype) { - - case OPT_UINT: - ularg = strtoul(optarg, &end, 0); - if (*end != '\0') - errx(1, "bad unsigned integer argument for '%s'", arg); - if (ularg > UINT_MAX) - errx(1, "argument to large for option '%s'", arg); - *(u_int *)m->optarg = (u_int)ularg; - break; - - case OPT_INT: - larg = strtol(optarg, &end, 0); - if (*end != '\0') - errx(1, "bad integer argument for '%s'", arg); - if (larg > INT_MAX || larg < INT_MIN) - errx(1, "argument out of range for option '%s'", arg); - *(int *)m->optarg = (int)larg; - break; - - case OPT_UINT32: - ularg = strtoul(optarg, &end, 0); - if (*end != '\0') - errx(1, "bad unsigned integer argument for '%s'", arg); - if (ularg > UINT32_MAX) - errx(1, "argument to large for option '%s'", arg); - *(uint32_t *)m->optarg = (uint32_t)ularg; - break; - - case OPT_INT32: - larg = strtol(optarg, &end, 0); - if (*end != '\0') - errx(1, "bad integer argument for '%s'", arg); - if (larg > INT32_MAX || larg < INT32_MIN) - errx(1, "argument out of range for option '%s'", arg); - *(int32_t *)m->optarg = (int32_t)larg; - break; - - case OPT_UINT64: - *(uint64_t *)m->optarg = strtoull(optarg, &end, 0); - if (*end != '\0') - errx(1, "bad unsigned integer argument for '%s'", arg); - break; - - case OPT_INT64: - *(int64_t *)m->optarg = strtoll(optarg, &end, 0); - if (*end != '\0') - errx(1, "bad integer argument for '%s'", arg); - break; - - case OPT_FLAG: - if (strcasecmp(optarg, "enable") == 0 || - strcasecmp(optarg, "yes") == 0 || - strcasecmp(optarg, "true") == 0 || - strcasecmp(optarg, "on") == 0 || - strcmp(optarg, "1") == 0) - *(int *)m->optarg = 1; - else if (strcasecmp(optarg, "disable") == 0 || - strcasecmp(optarg, "no") == 0 || - strcasecmp(optarg, "false") == 0 || - strcasecmp(optarg, "off") == 0 || - strcmp(optarg, "0") == 0) - *(int *)m->optarg = 0; - else - errx(1, "bad boolean argument to '%s'", arg); - break; - - case OPT_VCI: - ularg = strtoul(optarg, &end, 0); - if (*end == '.') { - ularg1 = strtoul(end + 1, &end, 0); - } else { - ularg1 = ularg; - ularg = 0; - } - if (*end != '\0') - errx(1, "bad VCI value for option '%s'", arg); - if (ularg > 0xff) - errx(1, "VPI value too large for option '%s'", arg); - if (ularg1 > 0xffff) - errx(1, "VCI value too large for option '%s'", arg); - ((u_int *)m->optarg)[0] = ularg; - ((u_int *)m->optarg)[1] = ularg1; - break; - - case OPT_STRING: - if (m->optarg != NULL) - *(const char **)m->optarg = optarg; - break; - - default: - errx(1, "(internal) bad option type %u for '%s'", - m->opttype, arg); - } - return (m - opts); -} - -/* - * for compiled-in modules - */ -void -register_module(const struct amodule *mod) -{ - main_tab_size++; - if ((main_tab = realloc(main_tab, main_tab_size * sizeof(main_tab[0]))) - == NULL) - err(1, NULL); - main_tab[main_tab_size - 2] = *mod->cmd; - memset(&main_tab[main_tab_size - 1], 0, sizeof(main_tab[0])); -} diff --git a/sbin/atm/atmconfig/natm.c b/sbin/atm/atmconfig/natm.c deleted file mode 100644 index cac3880e8edf..000000000000 --- a/sbin/atm/atmconfig/natm.c +++ /dev/null @@ -1,680 +0,0 @@ -/* - * Copyright (c) 2003 - * Fraunhofer Institute for Open Communication Systems (FhG Fokus). - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * Author: Hartmut Brandt <harti@freebsd.org> - */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include <sys/types.h> -#include <sys/socket.h> -#include <sys/sysctl.h> -#include <net/if_atm.h> -#include <net/if_dl.h> -#include <net/route.h> -#include <netinet/in.h> -#include <arpa/inet.h> -#include <netdb.h> -#include "atmconfig.h" -#include "private.h" -#include "diag.h" - -static void natm_add(int, char *[]); -static void natm_delete(int, char *[]); -static void natm_show(int, char *[]); - -const struct cmdtab natm_tab[] = { - { "add", NULL, natm_add }, - { "delete", NULL, natm_delete }, - { "show", NULL, natm_show }, - { NULL, NULL, NULL } -}; - -/* - * Structure to hold a route - */ -struct natm_route { - TAILQ_ENTRY(natm_route) link; - struct in_addr host; - struct diagif *aif; - u_int flags; - int llcsnap; - u_int vpi, vci; - u_int traffic; - u_int pcr, scr, mbs, icr, mcr; - u_int tbe, nrm, trm, adtf, rif, rdf, cdf; -}; -static TAILQ_HEAD(, natm_route) natm_route_list = - TAILQ_HEAD_INITIALIZER(natm_route_list); - -static void -store_route(struct rt_msghdr *rtm) -{ - u_int i; - struct natm_route *r; - char *cp; - struct sockaddr *sa; - struct sockaddr_in *sain; - struct sockaddr_dl *sdl; - struct diagif *aif; - u_int n; - - r = malloc(sizeof(*r)); - if (r == NULL) - err(1, "allocate route"); - - r->flags = rtm->rtm_flags; - cp = (char *)(rtm + 1); - for (i = 1; i != 0; i <<= 1) { - if (rtm->rtm_addrs & i) { - sa = (struct sockaddr *)cp; - cp += roundup(sa->sa_len, sizeof(long)); - switch (i) { - - case RTA_DST: - if (sa->sa_family != AF_INET) { - warnx("RTA_DST not AF_INET %u", sa->sa_family); - goto fail; - } - sain = (struct sockaddr_in *)(void *)sa; - if (sain->sin_len < 4) - r->host.s_addr = INADDR_ANY; - else - r->host = sain->sin_addr; - break; - - case RTA_GATEWAY: - if (sa->sa_family != AF_LINK) { - warnx("RTA_GATEWAY not AF_LINK"); - goto fail; - } - sdl = (struct sockaddr_dl *)(void *)sa; - TAILQ_FOREACH(aif, &diagif_list, link) - if (strlen(aif->ifname) == - sdl->sdl_nlen && - strncmp(aif->ifname, sdl->sdl_data, - sdl->sdl_nlen) == 0) - break; - if (aif == NULL) { - warnx("interface '%.*s' not found", - sdl->sdl_nlen, sdl->sdl_data); - goto fail; - } - r->aif = aif; - - /* parse ATM stuff */ - -#define GET3() (((sdl->sdl_data[n] & 0xff) << 16) | \ - ((sdl->sdl_data[n + 1] & 0xff) << 8) | \ - ((sdl->sdl_data[n + 2] & 0xff) << 0)) -#define GET2() (((sdl->sdl_data[n] & 0xff) << 8) | \ - ((sdl->sdl_data[n + 1] & 0xff) << 0)) -#define GET1() (((sdl->sdl_data[n] & 0xff) << 0)) - - n = sdl->sdl_nlen; - if (sdl->sdl_alen < 4) { - warnx("RTA_GATEWAY alen too short"); - goto fail; - } - r->llcsnap = GET1() & ATM_PH_LLCSNAP; - n++; - r->vpi = GET1(); - n++; - r->vci = GET2(); - n += 2; - if (sdl->sdl_alen == 4) { - /* old address */ - r->traffic = ATMIO_TRAFFIC_UBR; - r->pcr = 0; - break; - } - /* new address */ - r->traffic = GET1(); - n++; - switch (r->traffic) { - - case ATMIO_TRAFFIC_UBR: - if (sdl->sdl_alen >= 5 + 3) { - r->pcr = GET3(); - n += 3; - } else - r->pcr = 0; - break; - - case ATMIO_TRAFFIC_CBR: - if (sdl->sdl_alen < 5 + 3) { - warnx("CBR address too short"); - goto fail; - } - r->pcr = GET3(); - n += 3; - break; - - case ATMIO_TRAFFIC_VBR: - if (sdl->sdl_alen < 5 + 3 * 3) { - warnx("VBR address too short"); - goto fail; - } - r->pcr = GET3(); - n += 3; - r->scr = GET3(); - n += 3; - r->mbs = GET3(); - n += 3; - break; - - case ATMIO_TRAFFIC_ABR: - if (sdl->sdl_alen < 5 + 4 * 3 + 2 + - 1 * 2 + 3) { - warnx("ABR address too short"); - goto fail; - } - r->pcr = GET3(); - n += 3; - r->mcr = GET3(); - n += 3; - r->icr = GET3(); - n += 3; - r->tbe = GET3(); - n += 3; - r->nrm = GET1(); - n++; - r->trm = GET1(); - n++; - r->adtf = GET2(); - n += 2; - r->rif = GET1(); - n++; - r->rdf = GET1(); - n++; - r->cdf = GET1(); - n++; - break; - - default: - goto fail; - } - break; - } - } - } - - TAILQ_INSERT_TAIL(&natm_route_list, r, link); - - return; - fail: - free(r); -} - -/* - * Fetch the INET routes that a ours - */ -static void -natm_route_fetch(void) -{ - int name[6]; - size_t needed; - u_char *buf, *next; - struct rt_msghdr *rtm; - - name[0] = CTL_NET; - name[1] = PF_ROUTE; - name[2] = 0; - name[3] = AF_INET; - name[4] = NET_RT_DUMP; - name[5] = 0; - - if (sysctl(name, 6, NULL, &needed, NULL, 0) == -1) - err(1, "rtable estimate"); - needed *= 2; - if ((buf = malloc(needed)) == NULL) - err(1, "rtable buffer (%zu)", needed); - if (sysctl(name, 6, buf, &needed, NULL, 0) == -1) - err(1, "rtable get"); - - next = buf; - while (next < buf + needed) { - rtm = (struct rt_msghdr *)(void *)next; - next += rtm->rtm_msglen; - - if (rtm->rtm_type == RTM_GET) { - if ((rtm->rtm_flags & (RTF_UP | RTF_HOST | - RTF_STATIC)) == (RTF_UP | RTF_HOST | RTF_STATIC) && - (rtm->rtm_addrs & (RTA_DST | RTA_GATEWAY | - RTA_IFP)) == (RTA_DST | RTA_GATEWAY | RTA_IFP)) - store_route(rtm); - } - } -} - -static u_long -parse_num(const char *arg, const char *name, u_long limit) -{ - u_long res; - char *end; - - errno = 0; - res = strtoul(arg, &end, 10); - if (*end != '\0' || end == arg || errno != 0) - errx(1, "cannot parse %s '%s'", name, arg); - if (res > limit) - errx(1, "%s out of range (0...%lu)", name, limit); - return (res); -} - -static void -do_route(u_int type, u_int flags, const struct sockaddr_in *sain, - const struct sockaddr_dl *sdl) -{ - struct { - struct rt_msghdr h; - char space[512]; - } msg; - char *ptr; - int s; - ssize_t rlen; - - /* create routing message */ - bzero(&msg, sizeof(msg)); - msg.h.rtm_msglen = sizeof(msg.h); - msg.h.rtm_version = RTM_VERSION; - msg.h.rtm_type = type; - msg.h.rtm_index = 0; - msg.h.rtm_flags = flags; - msg.h.rtm_addrs = RTA_DST | (sdl != NULL ? RTA_GATEWAY : 0); - msg.h.rtm_pid = getpid(); - - ptr = (char *)&msg + sizeof(msg.h); - memcpy(ptr, sain, sain->sin_len); - ptr += roundup(sain->sin_len, sizeof(long)); - msg.h.rtm_msglen += roundup(sain->sin_len, sizeof(long)); - - if (sdl != NULL) { - memcpy(ptr, sdl, sdl->sdl_len); - ptr += roundup(sdl->sdl_len, sizeof(long)); - msg.h.rtm_msglen += roundup(sdl->sdl_len, sizeof(long)); - } - - /* open socket */ - s = socket(PF_ROUTE, SOCK_RAW, AF_INET); - if (s == -1) - err(1, "cannot open routing socket"); - - rlen = write(s, &msg, msg.h.rtm_msglen); - if (rlen == -1) - err(1, "writing to routing socket"); - if ((size_t)rlen != msg.h.rtm_msglen) - errx(1, "short write to routing socket: %zu %u", - (size_t)rlen, msg.h.rtm_msglen); - close(s); -} - -/* - * Add a new NATM route - */ -static void -natm_add(int argc, char *argv[]) -{ - int opt; - struct hostent *hp; - struct sockaddr_in sain; - struct sockaddr_dl sdl; - struct diagif *aif; - u_long num, num1; - u_int idx; - - static int printonly; - - static const struct option opts[] = { - { "printonly", OPT_SIMPLE, &printonly }, - { NULL, 0, NULL } - }; - - while ((opt = parse_options(&argc, &argv, opts)) != -1) - switch (opt) { - } - - if (argc < 5) - errx(1, "missing arguments for 'natm add'"); - - memset(&sdl, 0, sizeof(sdl)); - sdl.sdl_len = sizeof(sdl); - sdl.sdl_family = AF_LINK; - - /* get the IP address for <dest> */ - memset(&sain, 0, sizeof(sain)); - hp = gethostbyname(argv[0]); - if (hp == NULL) - errx(1, "bad hostname %s: %s", argv[0], hstrerror(h_errno)); - if (hp->h_addrtype != AF_INET) - errx(1, "bad address type for %s", argv[0]); - sain.sin_len = sizeof(sain); - sain.sin_family = AF_INET; - memcpy(&sain.sin_addr, hp->h_addr, sizeof(sain.sin_addr)); - - /* find interface */ - diagif_fetch(); - TAILQ_FOREACH(aif, &diagif_list, link) - if (strcmp(aif->ifname, argv[1]) == 0) - break; - if (aif == NULL) - errx(1, "unknown ATM interface '%s'", argv[1]); - sdl.sdl_index = aif->index; - strcpy(sdl.sdl_data, aif->ifname); - idx = sdl.sdl_nlen = strlen(aif->ifname); - idx++; - - /* verify VPI/VCI */ - num = parse_num(argv[2], "VPI", (1U << aif->mib.vpi_bits)); - sdl.sdl_data[idx++] = num & 0xff; - num = parse_num(argv[3], "VCI", (1U << aif->mib.vci_bits)); - if (num == 0) - errx(1, "VCI may not be 0"); - sdl.sdl_data[idx++] = (num >> 8) & 0xff; - sdl.sdl_data[idx++] = num & 0xff; - - /* encapsulation */ - if (strcasecmp(argv[4], "llc/snap") == 0) { - sdl.sdl_data[sdl.sdl_nlen] = ATM_PH_LLCSNAP; - } else if (strcasecmp(argv[4], "aal5") == 0) { - sdl.sdl_data[sdl.sdl_nlen] = 0; - } else - errx(1, "bad encapsulation type '%s'", argv[4]); - - /* look at the traffic */ - argc -= 5; - argv += 5; - - if (argc != 0) { - if (strcasecmp(argv[0], "ubr") == 0) { - sdl.sdl_data[idx++] = ATMIO_TRAFFIC_UBR; - if (argc == 1) - /* ok */; - else if (argc == 2) { - num = parse_num(argv[1], "PCR", aif->mib.pcr); - sdl.sdl_data[idx++] = (num >> 16) & 0xff; - sdl.sdl_data[idx++] = (num >> 8) & 0xff; - sdl.sdl_data[idx++] = (num >> 0) & 0xff; - } else - errx(1, "too many parameters for UBR"); - - } else if (strcasecmp(argv[0], "cbr") == 0) { - sdl.sdl_data[idx++] = ATMIO_TRAFFIC_CBR; - if (argc == 1) - errx(1, "missing PCR for CBR"); - if (argc > 2) - errx(1, "too many parameters for CBR"); - num = parse_num(argv[1], "PCR", aif->mib.pcr); - sdl.sdl_data[idx++] = (num >> 16) & 0xff; - sdl.sdl_data[idx++] = (num >> 8) & 0xff; - sdl.sdl_data[idx++] = (num >> 0) & 0xff; - - } else if (strcasecmp(argv[0], "vbr") == 0) { - sdl.sdl_data[idx++] = ATMIO_TRAFFIC_VBR; - - if (argc < 4) - errx(1, "missing arg(s) for VBR"); - if (argc > 4) - errx(1, "too many parameters for VBR"); - - num = parse_num(argv[1], "PCR", aif->mib.pcr); - sdl.sdl_data[idx++] = (num >> 16) & 0xff; - sdl.sdl_data[idx++] = (num >> 8) & 0xff; - sdl.sdl_data[idx++] = (num >> 0) & 0xff; - num = parse_num(argv[2], "SCR", num); - sdl.sdl_data[idx++] = (num >> 16) & 0xff; - sdl.sdl_data[idx++] = (num >> 8) & 0xff; - sdl.sdl_data[idx++] = (num >> 0) & 0xff; - num = parse_num(argv[3], "MBS", 0xffffffLU); - sdl.sdl_data[idx++] = (num >> 16) & 0xff; - sdl.sdl_data[idx++] = (num >> 8) & 0xff; - sdl.sdl_data[idx++] = (num >> 0) & 0xff; - - } else if (strcasecmp(argv[0], "abr") == 0) { - sdl.sdl_data[idx++] = ATMIO_TRAFFIC_ABR; - if (argc < 11) - errx(1, "missing arg(s) for ABR"); - if (argc > 11) - errx(1, "too many parameters for ABR"); - - num = parse_num(argv[1], "PCR", aif->mib.pcr); - sdl.sdl_data[idx++] = (num >> 16) & 0xff; - sdl.sdl_data[idx++] = (num >> 8) & 0xff; - sdl.sdl_data[idx++] = (num >> 0) & 0xff; - - num1 = parse_num(argv[2], "MCR", num); - sdl.sdl_data[idx++] = (num1 >> 16) & 0xff; - sdl.sdl_data[idx++] = (num1 >> 8) & 0xff; - sdl.sdl_data[idx++] = (num1 >> 0) & 0xff; - - num = parse_num(argv[3], "ICR", num); - sdl.sdl_data[idx++] = (num >> 16) & 0xff; - sdl.sdl_data[idx++] = (num >> 8) & 0xff; - sdl.sdl_data[idx++] = (num >> 0) & 0xff; - - if (num < num1) - errx(1, "ICR must be >= MCR"); - - num = parse_num(argv[4], "TBE", 0xffffffUL); - sdl.sdl_data[idx++] = (num >> 16) & 0xff; - sdl.sdl_data[idx++] = (num >> 8) & 0xff; - sdl.sdl_data[idx++] = (num >> 0) & 0xff; - - num = parse_num(argv[5], "NRM", 0x7UL); - sdl.sdl_data[idx++] = (num >> 0) & 0xff; - - num = parse_num(argv[6], "TRM", 0x7UL); - sdl.sdl_data[idx++] = (num >> 0) & 0xff; - - num = parse_num(argv[7], "ADTF", 0x3ffUL); - sdl.sdl_data[idx++] = (num >> 8) & 0xff; - sdl.sdl_data[idx++] = (num >> 0) & 0xff; - - num = parse_num(argv[8], "RIF", 0xfUL); - sdl.sdl_data[idx++] = (num >> 0) & 0xff; - - num = parse_num(argv[9], "RDF", 0xfUL); - sdl.sdl_data[idx++] = (num >> 0) & 0xff; - - num = parse_num(argv[10], "CDF", 0x7UL); - sdl.sdl_data[idx++] = (num >> 0) & 0xff; - - } else - errx(1, "bad traffic type '%s'", argv[0]); - } else - sdl.sdl_data[idx++] = ATMIO_TRAFFIC_UBR; - - sdl.sdl_alen = idx - sdl.sdl_nlen; - sdl.sdl_len += sdl.sdl_nlen + sdl.sdl_alen; - - if (printonly) { - printf("route add -iface %s -link %.*s", - inet_ntoa(sain.sin_addr), sdl.sdl_nlen, sdl.sdl_data); - for (idx = 0; idx < sdl.sdl_alen; idx++) - printf("%c%x", ".:"[idx == 0], - (u_int)sdl.sdl_data[sdl.sdl_nlen + idx] & 0xffU); - printf("\n"); - exit(0); - } - - do_route(RTM_ADD, RTF_HOST | RTF_STATIC | RTF_UP, &sain, &sdl); -} - -/* - * Delete an NATM route - */ -static void -natm_delete(int argc, char *argv[]) -{ - int opt; - struct hostent *hp; - struct sockaddr_in sain; - u_int vpi, vci; - struct diagif *aif; - struct natm_route *r; - - static int printonly; - - static const struct option opts[] = { - { "printonly", OPT_SIMPLE, &printonly }, - { NULL, 0, NULL } - }; - - while ((opt = parse_options(&argc, &argv, opts)) != -1) - switch (opt) { - } - - diagif_fetch(); - natm_route_fetch(); - - memset(&sain, 0, sizeof(sain)); - sain.sin_len = sizeof(sain); - sain.sin_family = AF_INET; - - if (argc == 1) { - /* get the IP address for <dest> */ - hp = gethostbyname(argv[0]); - if (hp == NULL) - errx(1, "bad hostname %s: %s", argv[0], - hstrerror(h_errno)); - if (hp->h_addrtype != AF_INET) - errx(1, "bad address type for %s", argv[0]); - memcpy(&sain.sin_addr, hp->h_addr, sizeof(sain.sin_addr)); - - TAILQ_FOREACH(r, &natm_route_list, link) - if (r->host.s_addr == sain.sin_addr.s_addr) - break; - if (r == NULL) - errx(1, "no NATM route to host '%s' (%s)", argv[0], - inet_ntoa(sain.sin_addr)); - - } else if (argc == 3) { - TAILQ_FOREACH(aif, &diagif_list, link) - if (strcmp(aif->ifname, argv[0]) == 0) - break; - if (aif == NULL) - errx(1, "no such interface '%s'", argv[0]); - - vpi = parse_num(argv[1], "VPI", 0xff); - vci = parse_num(argv[2], "VCI", 0xffff); - - TAILQ_FOREACH(r, &natm_route_list, link) - if (r->aif == aif && r->vpi == vpi && r->vci == vci) - break; - if (r == NULL) - errx(1, "no such NATM route %s %u %u", argv[0], - vpi, vci); - sain.sin_addr = r->host; - - } else - errx(1, "bad number of arguments for 'natm delete'"); - - if (printonly) { - printf("route delete %s\n", inet_ntoa(r->host)); - exit(0); - } - - do_route(RTM_DELETE, r->flags, &sain, NULL); -} - -/* - * Show NATM routes - */ -static void -natm_show(int argc, char *argv[]) -{ - int opt; - struct natm_route *r; - struct hostent *hp; - - static const char *const traffics[] = { - [ATMIO_TRAFFIC_UBR] = "UBR", - [ATMIO_TRAFFIC_CBR] = "CBR", - [ATMIO_TRAFFIC_VBR] = "VBR", - [ATMIO_TRAFFIC_ABR] = "ABR" - }; - - static int numeric, abr; - - static const struct option opts[] = { - { "abr", OPT_SIMPLE, &abr }, - { "numeric", OPT_SIMPLE, &numeric }, - { NULL, 0, NULL } - }; - - static const char head[] = - "Destination Iface VPI VCI Encaps Trf PCR " - "SCR/MCR MBS/ICR\n"; - static const char head_abr[] = - "Destination Iface VPI VCI Encaps Trf PCR " - "SCR/MCR MBS/ICR TBE NRM TRM ADTF RIF RDF CDF\n"; - - while ((opt = parse_options(&argc, &argv, opts)) != -1) - switch (opt) { - } - - diagif_fetch(); - natm_route_fetch(); - - heading_init(); - TAILQ_FOREACH(r, &natm_route_list, link) { - heading(abr ? head_abr : head); - if (numeric) - printf("%-20s", inet_ntoa(r->host)); - else if (r->host.s_addr == INADDR_ANY) - printf("%-20s", "default"); - else { - hp = gethostbyaddr((char *)&r->host, sizeof(r->host), - AF_INET); - if (hp != NULL) - printf("%-20s", hp->h_name); - else - printf("%-20s", inet_ntoa(r->host)); - } - printf("%-12s%-4u%-6u%-9s%-4s", r->aif->ifname, r->vpi, r->vci, - r->llcsnap ? "LLC/SNAP" : "AAL5", traffics[r->traffic]); - switch (r->traffic) { - - case ATMIO_TRAFFIC_UBR: - case ATMIO_TRAFFIC_CBR: - printf("%-8u", r->pcr); - break; - - case ATMIO_TRAFFIC_VBR: - printf("%-8u%-8u%-8u", r->pcr, r->scr, r->mbs); - break; - - case ATMIO_TRAFFIC_ABR: - printf("%-8u%-8u%-8u", r->pcr, r->mcr, r->icr); - if (abr) - printf("%-8u%-4u%-4u%-5u%-4u%-4u%-4u", - r->tbe, r->nrm, r->trm, r->adtf, - r->rif, r->rdf, r->cdf); - break; - } - printf("\n"); - } -} diff --git a/sbin/atm/atmconfig/private.h b/sbin/atm/atmconfig/private.h deleted file mode 100644 index 9dcf53979517..000000000000 --- a/sbin/atm/atmconfig/private.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2001-2003 - * Fraunhofer Institute for Open Communication Systems (FhG Fokus). - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * Author: Hartmut Brandt <harti@freebsd.org> - * - * $FreeBSD$ - */ -#include <sys/param.h> -#include <sys/socket.h> -#include <sys/queue.h> -#include <sys/time.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> -#include <err.h> -#include <errno.h> -#include <netgraph.h> -#include <net/if.h> -#include <netinet/in.h> - -#ifndef PATH_HELP -#define PATH_HELP "/usr/share/doc/atm:/usr/local/share/doc/atm" -#endif -#ifndef FILE_HELP -#define FILE_HELP "atmconfig.help" -#endif -#ifndef FILE_HELP_OTHERS -#define FILE_HELP_OTHERS "atmconfig_*.help" -#endif -#ifndef PATH_ILMI_SOCK -#define PATH_ILMI_SOCK "/var/run/ilmid.sock" -#endif - -/* - * Builtin commands - */ -extern const struct cmdtab diag_tab[]; -extern const struct cmdtab natm_tab[]; diff --git a/sbin/fsck_ffs/fsck.h b/sbin/fsck_ffs/fsck.h index ceb71cda4b85..c40a4c445895 100644 --- a/sbin/fsck_ffs/fsck.h +++ b/sbin/fsck_ffs/fsck.h @@ -282,7 +282,8 @@ struct inoinfo { u_int i_numblks; /* size of block array in bytes */ ufs2_daddr_t i_blks[1]; /* actually longer */ } **inphead, **inpsort; -extern long numdirs, dirhash, listmax, inplast; +extern long dirhash, inplast; +extern unsigned long numdirs, listmax; extern long countdirs; /* number of directories we actually found */ #define MIBSIZE 3 /* size of fsck sysctl MIBs */ diff --git a/sbin/fsck_ffs/globs.c b/sbin/fsck_ffs/globs.c index 8cd0eb10e0ca..1aacec1ddf85 100644 --- a/sbin/fsck_ffs/globs.c +++ b/sbin/fsck_ffs/globs.c @@ -56,7 +56,8 @@ struct bufarea sblk; /* file system superblock */ struct bufarea *pdirbp; /* current directory contents */ struct bufarea *pbp; /* current inode block */ ino_t cursnapshot; -long numdirs, dirhash, listmax, inplast; +long dirhash, inplast; +unsigned long numdirs, listmax; long countdirs; /* number of directories we actually found */ int adjrefcnt[MIBSIZE]; /* MIB command to adjust inode reference cnt */ int adjblkcnt[MIBSIZE]; /* MIB command to adjust inode block count */ @@ -123,7 +124,7 @@ fsckinit(void) pdirbp = NULL; pbp = NULL; cursnapshot = 0; - numdirs = dirhash = listmax = inplast = 0; + listmax = numdirs = dirhash = inplast = 0; countdirs = 0; bzero(adjrefcnt, sizeof(int) * MIBSIZE); bzero(adjblkcnt, sizeof(int) * MIBSIZE); diff --git a/sbin/fsck_ffs/inode.c b/sbin/fsck_ffs/inode.c index c78cad359479..d3c95996ed52 100644 --- a/sbin/fsck_ffs/inode.c +++ b/sbin/fsck_ffs/inode.c @@ -472,8 +472,8 @@ cacheino(union dinode *dp, ino_t inumber) inp->i_blks[UFS_NDADDR + i] = DIP(dp, di_ib[i]); if (inplast == listmax) { listmax += 100; - inpsort = (struct inoinfo **)realloc((char *)inpsort, - (unsigned)listmax * sizeof(struct inoinfo *)); + inpsort = (struct inoinfo **)reallocarray((char *)inpsort, + listmax, sizeof(struct inoinfo *)); if (inpsort == NULL) errx(EEXIT, "cannot increase directory list"); } diff --git a/sbin/fsck_ffs/setup.c b/sbin/fsck_ffs/setup.c index 4b90adb88f3e..74aa192078a9 100644 --- a/sbin/fsck_ffs/setup.c +++ b/sbin/fsck_ffs/setup.c @@ -268,8 +268,7 @@ setup(char *dev) (unsigned)bmapsize); goto badsb; } - inostathead = Calloc((unsigned)(sblock.fs_ncg), - sizeof(struct inostatlist)); + inostathead = Calloc(sblock.fs_ncg, sizeof(struct inostatlist)); if (inostathead == NULL) { printf("cannot alloc %u bytes for inostathead\n", (unsigned)(sizeof(struct inostatlist) * (sblock.fs_ncg))); @@ -279,10 +278,8 @@ setup(char *dev) dirhash = numdirs; inplast = 0; listmax = numdirs + 10; - inpsort = (struct inoinfo **)Calloc((unsigned)listmax, - sizeof(struct inoinfo *)); - inphead = (struct inoinfo **)Calloc((unsigned)numdirs, - sizeof(struct inoinfo *)); + inpsort = (struct inoinfo **)Calloc(listmax, sizeof(struct inoinfo *)); + inphead = (struct inoinfo **)Calloc(numdirs, sizeof(struct inoinfo *)); if (inpsort == NULL || inphead == NULL) { printf("cannot alloc %ju bytes for inphead\n", (uintmax_t)numdirs * sizeof(struct inoinfo *)); diff --git a/sbin/ipfw/ipv6.c b/sbin/ipfw/ipv6.c index fca666d394b1..4fce1d2a288c 100644 --- a/sbin/ipfw/ipv6.c +++ b/sbin/ipfw/ipv6.c @@ -339,6 +339,7 @@ fill_ip6(ipfw_insn_ip6 *cmd, char *av, int cblen, struct tidx *tstate) { int len = 0; struct in6_addr *d = &(cmd->addr6); + char *oav; /* * Needed for multiple address. * Note d[1] points to struct in6_add r mask6 of cmd @@ -365,7 +366,7 @@ fill_ip6(ipfw_insn_ip6 *cmd, char *av, int cblen, struct tidx *tstate) return (1); } - av = strdup(av); + oav = av = strdup(av); while (av) { /* * After the address we can have '/' indicating a mask, @@ -446,7 +447,7 @@ fill_ip6(ipfw_insn_ip6 *cmd, char *av, int cblen, struct tidx *tstate) if (len + 1 > F_LEN_MASK) errx(EX_DATAERR, "address list too long"); cmd->o.len |= len+1; - free(av); + free(oav); return (1); } diff --git a/share/man/man4/Makefile b/share/man/man4/Makefile index e05cce1d7149..748bde202369 100644 --- a/share/man/man4/Makefile +++ b/share/man/man4/Makefile @@ -118,7 +118,6 @@ MAN= aac.4 \ cxgb.4 \ cxgbe.4 \ cxgbev.4 \ - cy.4 \ cyapa.4 \ da.4 \ dc.4 \ @@ -144,7 +143,6 @@ MAN= aac.4 \ edsc.4 \ ehci.4 \ em.4 \ - en.4 \ enc.4 \ epair.4 \ esp.4 \ @@ -153,7 +151,6 @@ MAN= aac.4 \ etherswitch.4 \ eventtimers.4 \ exca.4 \ - fatm.4 \ fd.4 \ fdc.4 \ fdt.4 \ @@ -181,7 +178,6 @@ MAN= aac.4 \ gpioled.4 \ gre.4 \ h_ertt.4 \ - hatm.4 \ hifn.4 \ hme.4 \ hpet.4 \ @@ -307,8 +303,6 @@ MAN= aac.4 \ my.4 \ nand.4 \ nandsim.4 \ - natm.4 \ - natmip.4 \ ncr.4 \ ncv.4 \ ${_ndis.4} \ @@ -320,7 +314,6 @@ MAN= aac.4 \ ${_nfe.4} \ ${_nfsmb.4} \ ng_async.4 \ - ng_atm.4 \ ngatmbase.4 \ ng_atmllc.4 \ ng_bpf.4 \ @@ -397,7 +390,6 @@ MAN= aac.4 \ owc.4 \ ${_padlock.4} \ pass.4 \ - patm.4 \ pccard.4 \ pccbb.4 \ pcf.4 \ @@ -627,11 +619,9 @@ MLINKS+=disc.4 if_disc.4 MLINKS+=ed.4 if_ed.4 MLINKS+=edsc.4 if_edsc.4 MLINKS+=em.4 if_em.4 -MLINKS+=en.4 if_en.4 MLINKS+=enc.4 if_enc.4 MLINKS+=epair.4 if_epair.4 MLINKS+=et.4 if_et.4 -MLINKS+=fatm.4 if_fatm.4 MLINKS+=fd.4 stderr.4 \ fd.4 stdin.4 \ fd.4 stdout.4 @@ -645,7 +635,6 @@ MLINKS+=geom.4 GEOM.4 MLINKS+=gif.4 if_gif.4 MLINKS+=gpio.4 gpiobus.4 MLINKS+=gre.4 if_gre.4 -MLINKS+=hatm.4 if_hatm.4 MLINKS+=hme.4 if_hme.4 MLINKS+=hpet.4 acpi_hpet.4 MLINKS+=${_hptrr.4} ${_rr232x.4} @@ -695,7 +684,6 @@ MLINKS+=nge.4 if_nge.4 MLINKS+=${_ntb_hw.4} ${_ntb.4} MLINKS+=${_nxge.4} ${_if_nxge.4} MLINKS+=ow.4 onewire.4 -MLINKS+=patm.4 if_patm.4 MLINKS+=pccbb.4 cbb.4 MLINKS+=pcm.4 snd.4 \ pcm.4 sound.4 @@ -966,7 +954,6 @@ MAN+= \ usb_template.4 \ usfs.4 \ uslcom.4 \ - utopia.4 \ uvisor.4 \ uvscom.4 \ zyd.4 diff --git a/share/man/man4/cy.4 b/share/man/man4/cy.4 deleted file mode 100644 index c0c807286f1e..000000000000 --- a/share/man/man4/cy.4 +++ /dev/null @@ -1,257 +0,0 @@ -.\" Copyright (c) 1990, 1991 The Regents of the University of California. -.\" All rights reserved. -.\" -.\" This code is derived from software contributed to Berkeley by -.\" the Systems Programming Group of the University of Utah Computer -.\" Science Department. -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of the University nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" from: @(#)dca.4 5.2 (Berkeley) 3/27/91 -.\" from: com.4,v 1.1 1993/08/06 11:19:07 cgd Exp -.\" from: sio.4,v 1.16 1995/06/26 06:05:30 bde Exp $ -.\" $FreeBSD$ -.\" -.Dd May 24, 2004 -.Dt CY 4 -.Os -.Sh NAME -.Nm cy -.Nd Cyclades Cyclom-Y serial driver -.Sh SYNOPSIS -For one ISA card: -.Bd -ragged -offset indent -compact -.Cd "device cy" -.Pp -In -.Pa /boot/device.hints : -.Cd hint.cy.0.at="isa" -.Cd hint.cy.0.irq="10" -.Cd hint.cy.0.maddr="0xd4000" -.Cd hint.cy.0.msize="0x2000" -.Ed -.Pp -For two ISA cards: -.Bd -ragged -offset indent -compact -.Cd "device cy" -.Pp -In -.Pa /boot/device.hints : -.Cd hint.cy.0.at="isa" -.Cd hint.cy.0.irq="10" -.Cd hint.cy.0.maddr="0xd4000" -.Cd hint.cy.0.msize="0x2000" -.Cd hint.cy.1.at="isa" -.Cd hint.cy.1.irq="11" -.Cd hint.cy.1.maddr="0xd6000" -.Cd hint.cy.1.msize="0x2000" -.Ed -.Pp -For PCI cards: -.Bd -ragged -offset indent -compact -.Cd "device cy" -.Cd "options CY_PCI_FASTINTR" -.Pp -No lines are required in -.Pa /boot/device.hints -for PCI cards. -.Ed -.Pp -Minor numbering: -.Bd -literal -offset indent -compact -0b\fIMMMMMMMMMMMMMMMMxxxxxxxxOLIMMMMM\fR - call\fBO\fRut - \fBL\fRock - \fBI\fRnitial - \fBMMMMMMMMMMMMMMMM MMMMMM\fRinor -.Ed -.Sh DESCRIPTION -The -.Nm -driver provides support for Cirrus Logic CD1400-based -.Tn EIA -.Tn RS-232C -.Pf ( Tn CCITT -.Tn V.24 ) -communications interfaces (ports) on Cyclades Cyclom-Y boards. -Each CD1400 provides 4 ports. -Cyclom-Y boards with various numbers of CD1400's are available. -This driver supports up to 8 CD1400's (32 ports) per board. -.Pp -Input and output for each line may set independently -to the following speeds: -50, 75, 110, 134.5, 150, 300, 600, 1200, 1800, 2400, 4800, 9600, -19200, 38400, 57600, or 115200 bps. -Other speeds of up to 150000 are supported by the termios interface -but not by the sgttyb compatibility interface. -The CD1400 is not fast enough to handle speeds above 115200 bps -effectively. -It can transmit on a single line at slightly more than 115200 bps, -but when 4 lines are active in both directions its limit is about -90000 bps on each line. -.\" XXX the following should be true for all serial drivers and -.\" should not be repeated in the man pages for all serial drivers. -.\" It was copied from sio.4. The only change was s/sio/cy/g. -.Pp -Serial ports controlled by the -.Nm -driver can be used for both `callin' and `callout'. -For each port there is a callin device and a callout device. -The minor number of the callout device is 128 higher -than that of the corresponding callin port. -The callin device is general purpose. -Processes opening it normally wait for carrier -and for the callout device to become inactive. -The callout device is used to steal the port from -processes waiting for carrier on the callin device. -Processes opening it do not wait for carrier -and put any processes waiting for carrier on the callin device into -a deeper sleep so that they do not conflict with the callout session. -The callout device is abused for handling programs that are supposed -to work on general ports and need to open the port without waiting -but are too stupid to do so. -.Pp -The -.Nm -driver also supports an initial-state and a lock-state control -device for each of the callin and the callout "data" devices. -The minor number of the initial-state device is 32 higher -than that of the corresponding data device. -The minor number of the lock-state device is 64 higher -than that of the corresponding data device. -The termios settings of a data device are copied -from those of the corresponding initial-state device -on first opens and are not inherited from previous opens. -Use -.Xr stty 1 -in the normal way on the initial-state devices to program -initial termios states suitable for your setup. -.Pp -The lock termios state acts as flags to disable changing -the termios state. -E.g., to lock a flag variable such as -CRTSCTS, use -.Em "stty crtscts" -on the lock-state device. -Speeds and special characters -may be locked by setting the corresponding value in the lock-state -device to any nonzero value. -.Pp -Correct programs talking to correctly wired external devices -work with almost arbitrary initial states and almost no locking, -but other setups may benefit from changing some of the default -initial state and locking the state. -In particular, the initial states for non (POSIX) standard flags -should be set to suit the devices attached and may need to be -locked to prevent buggy programs from changing them. -E.g., CRTSCTS should be locked on for devices that support -RTS/CTS handshaking at all times and off for devices that do not -support it at all. -CLOCAL should be locked on for devices -that do not support carrier. -HUPCL may be locked off if you do not -want to hang up for some reason. -In general, very bad things happen -if something is locked to the wrong state, and things should not -be locked for devices that support more than one setting. -The -CLOCAL flag on callin ports should be locked off for logins -to avoid certain security holes, but this needs to be done by -getty if the callin port is used for anything else. -.Ss Kernel Configuration Options -The -.Em CY_PCI_FASTINTR -option should be used to avoid suboptimal interrupt handling for -PCI Cyclades boards. -The PCI BIOS must be configured with the -.Nm -interrupt not shared with any other active device -for this option to work. -This option is not the default because it is currently harmful in -certain cases where it does not work. -.Sh FILES -.\" XXX more cloning: s/d/c/g and add a ? for the card number. -.Bl -tag -width /dev/ttyic?? -compact -.It Pa /dev/ttyc?? -for callin ports -.It Pa /dev/ttyic?? -.It Pa /dev/ttylc?? -corresponding callin initial-state and lock-state devices -.Pp -.\" XXX more cloning: s/a/c/g. No consistency :-(. -.It Pa /dev/cuac?? -for callout ports -.It Pa /dev/cuaic?? -.It Pa /dev/cualc?? -corresponding callout initial-state and lock-state devices -.El -.Pp -.Bl -tag -width /etc/rc.serial -compact -.It Pa /etc/rc.serial -examples of setting the initial-state and lock-state devices -.El -.Pp -The first question mark in these device names is short for the -card number -(a decimal number between 0 and 65535 inclusive). -The second question mark is short for the port number -(a letter in the range [0-9a-v]). -.Sh DIAGNOSTICS -.Bl -diag -.\" XXX back to s/sio/cy/g. -.It cy%d: silo overflow. -Problem in the interrupt handler. -.El -.Bl -diag -.It cy%d: interrupt-level buffer overflow. -Problem in the bottom half of the driver. -.El -.Bl -diag -.It cy%d: tty-level buffer overflow. -Problem in the application. -Input has arrived faster than the given module could process it -and some has been lost. -.El -.\" .Bl -diag -.\" .It sio%d: reduced fifo trigger level to %d. -.\" Attempting to avoid further silo overflows. -.\" .El -.Sh SEE ALSO -.Xr stty 1 , -.Xr termios 4 , -.Xr tty 4 , -.Xr comcontrol 8 , -.Xr pstat 8 -.Sh HISTORY -The -.Nm -driver is derived from the -.Nm sio -driver and the -.Nx -.Nm -driver and is -.Ud -.Sh BUGS -Serial consoles are not implemented. diff --git a/share/man/man4/en.4 b/share/man/man4/en.4 deleted file mode 100644 index f9281fa968f7..000000000000 --- a/share/man/man4/en.4 +++ /dev/null @@ -1,78 +0,0 @@ -.\" $FreeBSD$ -.\" -.Dd July 16, 2005 -.Dt EN 4 -.Os -.Sh NAME -.Nm en -.Nd "device driver for Midway-based ATM interfaces" -.Sh SYNOPSIS -To compile this driver into the kernel, -place the following lines in your -kernel configuration file: -.Bd -ragged -offset indent -.Cd "device en" -.Cd "device atm" -.Cd "device utopia" -.Ed -.Pp -Alternatively, to load the driver as a -module at boot time, place the following line in -.Xr loader.conf 5 : -.Bd -literal -offset indent -if_en_load="YES" -.Ed -.Sh DESCRIPTION -The -.Nm -device driver supports Midway-based ATM interfaces including the -Efficient Networks, Inc.\& ENI-155 and Adaptec ANA-59x0. -Midway is an AAL5 SAR (Segmentation and Reassembly) chip. -.Pp -For configuring the card for IP see -.Xr natmip 4 . -.Pp -The following sysctls are recognized by the driver additionally to those -handled by -.Xr utopia 4 : -.Bl -tag -width indent -.It Va hw.atm.enX.istats -Contains an array of -.Vt uint32_t -with internal driver statistics. -.It Va hw.atm.enX.debug -This is a bit map of debugging options. -This variable is only available when the driver is compiled with debugging -support. -.El -.Pp -The driver supports the media options -.Cm sdh , -.Cm noscramb -and -.Cm unassigned -(see -.Xr utopia 4 ) . -.Sh DIAGNOSTICS -.Bd -literal -en0 <Efficient Networks ENI-155p> rev 0 int a irq 5 on pci0:16 -en0: ATM midway v0, board IDs 6.0, Utopia (pipelined), 512KB on-board RAM -en0: maximum DMA burst length = 64 bytes -en0: 7 32KB receive buffers, 8 32KB transmit buffers allocated -.Ed -.Sh SEE ALSO -.Xr natm 4 , -.Xr natmip 4 , -.Xr utopia 4 , -.Xr ifconfig 8 , -.Xr route 8 -.Sh AUTHORS -.An Chuck Cranor -of Washington University implemented -.Nm -driver in 1996 for -.Nx . -.Sh CAVEATS -The driver extensively uses DMA on PCI. -The first -generation PCI chipsets do not work or exhibit poor performance. diff --git a/share/man/man4/fatm.4 b/share/man/man4/fatm.4 deleted file mode 100644 index c59ff338b644..000000000000 --- a/share/man/man4/fatm.4 +++ /dev/null @@ -1,115 +0,0 @@ -.\" -.\" Copyright (c) 2001-2003 -.\" Fraunhofer Institute for Open Communication Systems (FhG Fokus). -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" Author: Hartmut Brandt <harti@FreeBSD.org> -.\" -.\" $FreeBSD$ -.\" -.\" fatm(4) man page -.\" -.Dd May 15, 2003 -.Dt FATM 4 -.Os -.Sh NAME -.Nm fatm -.Nd "device driver for Fore PCA200E ATM interfaces" -.Sh SYNOPSIS -.Cd device fatm -.Cd device utopia -.Cd device atm -.Pp -.Cd options NATM -.Sh DESCRIPTION -The -.Nm -device driver supports the FORE (now Marconi) PCA200E ATM interface cards. -The driver interfaces with the -.Xr natm 4 -framework, -.Xr netgraph 4 -and HARP. -It provides only PVC services. -Signalling, ATMARP, ILMI and other -higher layer protocols are implemented using -.Xr netgraph 4 -or HARP. -.Pp -For configuring the card for IP see -.Xr natmip 4 . -The following sysctls are recognized by the driver additionally to those -handled by -.Xr utopia 4 : -.Bl -tag -width indent -.It Va hw.atm.fatm Ns Ar N Ns Va .stats -Returns a device specific statistic list of -.Vt uint32_t -statistic counters. -.It Va hw.atm.fatm Ns Ar N Ns Va .istats -Returns a list of -.Vt uint32_t -with internal driver statistics. -.It Va hw.atm.fatm Ns Ar N Ns Va .retry_tx -If this is set packets are stuffed back into the interface's send queue when -the cards transmit queue is found to be full. -They are transmitted later. -If this is not set the packets are dropped. -It may be useful to set this -if only UBR traffic is sent. -.It Va hw.atm.fatm Ns Ar N Ns Va .debug -.Bf Em -(Only if debugging enabled.) -.Ef -These are debugging flags. -See -.Pa src/sys/dev/fatm/if_fatmvar.h -for the possible flags. -.El -.Pp -The driver supports the media options -.Cm sdh , noscramb -and -.Cm unassigned -(see -.Xr utopia 4 ) . -.Sh DIAGNOSTICS -.Bd -literal -fatm0: <FORE PCA200E> mem 0xd5800000-0xd59fffff irq 9 at device 9.0 on pci0 -.Ed -.Sh SEE ALSO -.Xr natm 4 , -.Xr natmip 4 , -.Xr utopia 4 -.Sh AUTHORS -.An Harti Brandt Aq Mt harti@FreeBSD.org -.Sh BUGS -These cards can CBR shape a single VCC only. -It is currently possible to -request more than one CBR connection. -In this case all the timing will be -wrong. -See -.Xr hatm 4 -for a better card. diff --git a/share/man/man4/hatm.4 b/share/man/man4/hatm.4 deleted file mode 100644 index e6e1714ea3fd..000000000000 --- a/share/man/man4/hatm.4 +++ /dev/null @@ -1,282 +0,0 @@ -.\" -.\" Copyright (c) 2001-2003 -.\" Fraunhofer Institute for Open Communication Systems (FhG Fokus). -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" Author: Hartmut Brandt <harti@FreeBSD.org> -.\" -.\" $FreeBSD$ -.\" -.\" hatm(4) man page -.\" -.Dd May 15, 2003 -.Dt HATM 4 -.Os -.Sh NAME -.Nm hatm -.Nd "device driver for Fore/Marconi HE155 and HE622 ATM interfaces" -.Sh SYNOPSIS -.Cd device hatm -.Cd device utopia -.Cd device atm -.Pp -.Cd options NATM -.Sh DESCRIPTION -The -.Nm -device driver supports the FORE (now Marconi) HE155 and HE622 ATM interface -cards. -The driver interfaces with the -.Xr natm 4 -framework, -.Xr netgraph 4 -and the HARP ATM stack. -It provides only PVC services. -Signalling, ATMARP, ILMI and other -higher layer protocols are implemented using -.Xr netgraph 4 -or HARP. -.Pp -For configuring the card for IP see -.Xr natmip 4 . -.Pp -The following sysctls are recognized by the driver additionally to those -handled by -.Xr utopia 4 : -.Bl -tag -width indent -.It Va hw.atm.hatm.natm_traffic -This is the traffic type to be used for NATM pvc connections. -The type of -this variable is integer and it must have one of the values 0 (UBR) or 1 (CBR). -.It Va hw.atm.hatm.natm_pcr -This is the peak cell rate to be used for NATM CBR connections. -.It Va hw.atm.hatm Ns Ar N Ns Va .stats -Contains an array of -.Vt uint32_t -with device specific statistics. -.It Va hw.atm.hatm Ns Ar N Ns Va .istats -Contains an array of -.Vt uint32_t -with internal driver statistics. -.It Va hw.atm.hatm Ns Ar N Ns Va .debug -.Bf Em -(Only if debugging enabled.) -.Ef -These are the debugging flags. -See -.Pa src/sys/dev/hatm/if_hatmvar.h -for the possible flags. -.It Va hw.atm.hatm Ns Ar N Ns Va .tsr -.Bf Em -(Only if debugging enabled.) -.Ef -This is an array containing all transmission status registers. -For each of the -4096 possible VCCs there are 15 32-bit registers. -.It Va hw.atm.hatm Ns Ar N Ns Va .tpd -.Bf Em -(Only if debugging enabled.) -.Ef -This is an array containing all on card current transmission packet descriptors. -For each of the 4096 possible VCCs there are 16 32-bit registers. -.It Va hw.atm.hatm Ns Ar N Ns Va .mbox -.Bf Em -(Only if debugging enabled.) -.Ef -This is an array containing the mbox registers. -.It Va hw.atm.hatm Ns Ar N Ns Va .cm -.Bf Em -(Only if debugging enabled.) -.Ef -This is an array containing all connection memory registers. -The first 32-bit integer of this array is the ABR base address. -.It Va hw.atm.hatm Ns Ar N Ns Va .heregs -.Bf Em -(Only if debugging enabled.) -.Ef -This is an array containing all card registers including SUNI and the FLASH ROM. -.It Va hw.atm.hatm Ns Ar N Ns Va .lbmem -.Bf Em -(Only if debugging enabled.) -.Ef -Returns the contents of the local memory. -.El -.Pp -The driver supports the media options -.Cm sdh , noscramb -and -.Cm unassigned -(see -.Xr utopia 4 ) . -.Sh ENVIRONMENT -When attaching to a device the driver checks the kernel environment -(see -.Xr kenv 1 ) -to see if the default queues sizes should be overwritten or not. -The -following variables are checked and interpreted as unsigned integer -values (in either radix): -.Bl -tag -width indent -.It Va hw.hatm Ns Ar N Ns Va .rbps0_size -Size of the small receive buffer pool 0. -This pool is used for all -except raw AAL connections. -The pool size must be a power of two between -4 and 8192 inclusive. -When attaching the driver allocates this number -of mbufs. -.It Va hw.hatm Ns Ar N Ns Va .rbps0_thresh -Interrupt threshold for small receive buffer pool 0. -When the number of free -buffers in the pool falls below this threshold it generates an interrupt -so that the driver can refill the pool. -.It Va hw.hatm Ns Ar N Ns Va .rbpl0_thresh -Size of the large receive buffer pool 0. -This pool is used for all -except raw AAL connections. -The pool size must be a power of two between -4 and 8192 inclusive. -When attaching the driver allocates this number -of mbufs with clusters. -.It Va hw.hatm Ns Ar N Ns Va .rbpl0_thresh -Interrupt threshold for large receive buffer pool 0. -When the number of free -buffers in the pool falls below this threshold it generates an interrupt -so that the driver can refill the pool. -.It Va hw.hatm Ns Ar N Ns Va .rbrq0_size -Size of receive buffer return queue 0. -This queue is used to return buffers -filled with received frames to the driver. -The size must be a power of 2 -between 1 and 16384 inclusive. -.It Va hw.hatm Ns Ar N Ns Va .rbrq0_thresh -Interrupt threshold for receive buffer return queue 0. -This threshold -should only be triggered in exceptional cases. -.It Va hw.hatm Ns Ar N Ns Va .rbrq0_tout -Interrupt timeout for receive buffer return queue 0. -An interrupt is generated -after this time if the queue is not empty. -The number is in internal card -ticks. -.It Va hw.hatm Ns Ar N Ns Va .rbrq0_pcnt -Packet count threshold for receive buffer return queue 0. -An interrupt -is generated if this number of packets is in the queue. -.It Va hw.hatm Ns Ar N Ns Va .rbps1_size -Size of the small receive buffer pool 1. -This pool is used for all -raw AAL connections. -The pool size must be a power of two between -4 and 8192 inclusive. -When attaching the driver allocates this number -of mbufs. -.It Va hw.hatm Ns Ar N Ns Va .rbps1_thresh -Interrupt threshold for small receive buffer pool 1. -When the number of free -buffers in the pool falls below this threshold it generates an interrupt -so that the driver can refill the pool. -.It Va hw.hatm Ns Ar N Ns Va .rbrq1_size -Size of receive buffer return queue 1. -This queue is used to return buffers -filled with received cells to the driver. -The size must be a power of 2 -between 1 and 16384 inclusive. -.It Va hw.hatm Ns Ar N Ns Va .rbrq1_thresh -Interrupt threshold for receive buffer return queue 1. -This threshold -should only be triggered in exceptional cases. -.It Va hw.hatm Ns Ar N Ns Va .rbrq1_tout -Interrupt timeout for receive buffer return queue 1. -An interrupt is generated -after this time if the queue is not empty. -The number is in internal card -ticks. -.It Va hw.hatm Ns Ar N Ns Va .rbrq1_pcnt -Packet count threshold for receive buffer return queue 0. -An interrupt -is generated if this number of cells is in the queue. -.It Va hw.hatm Ns Ar N Ns Va .irq0_size -Size of interrupt queue 0. -This must be a number between 1 and 1023 inclusive. -.It Va hw.hatm Ns Ar N Ns Va .irq0_thresh -Interrupt retrigger threshold of interrupt queue 0. -A new interrupt is trigger -if the queue fill state reaches this threshold and the interrupt was no -served. -.It Va hw.hatm Ns Ar N Ns Va .tbrq0_size -Transmit buffer return queue 0 size. -This queue is used to feed back empty -buffers of transmitted frames back to the driver. -It must be a power of 2 -between 1 and 4096 inclusive. -.It Va hw.hatm Ns Ar N Ns Va .tbrq0_thresh -Transmit buffer return queue 0 threshold. -An interrupt is generated if the -queue fill state reaches this point. -.It Va hw.hatm Ns Ar N Ns Va .tpdrq_size -Transmit descriptor ready queue size. -This queue is used by the driver -to feed transmit descriptors into the card. -The size must be a power of 2 -between 1 and 16384 inclusive. -.It Va hw.hatm Ns Ar N Ns Va .tpdmax -Maximum number of active TPDs per connection. -This controls the maximum -number of outstanding packet chunks per connection and thus the maximum -delay packets can have because of queueing on the adapter. -If set to 0, -a connection can eat up all available TPDs. -.It Va hw.hatm Ns Ar N Ns Va .mbuf_max_pages -Maximum number of memory pages allocated to small external mbufs. -This must not be zero and not larger than 65536. -.El -.Sh DIAGNOSTICS -.Bd -literal -hatm0: <FORE HE> mem 0xd2600000-0xd26fffff irq 9 at device 15.0 on pci2 -hatm0: ForeRunnerHE 622, Rev. D, S/N 2949834, MAC=00:20:48:2d:02:ca -.Ed -.Sh SEE ALSO -.Xr natm 4 , -.Xr natmip 4 , -.Xr utopia 4 , -.Xr ifconfig 8 , -.Xr route 8 -.Sh AUTHORS -.An Harti Brandt Aq Mt harti@FreeBSD.org -.Sh CAVEATS -When putting a HE155 into a 64-bit 66MHz PCI slot the machine may hang. -This occurs very early in the POST so that even the display does not turn on. -The HE155 runs only in 33MHz slots (either 32 or 64-bit). -HE622 cards work just fine in 64-bit slots. -.Pp -The driver may not work with bounce buffer, because of -.Xr bus_dmamap_sync 9 -missing the -.Fa offset -and -.Fa len -arguments the -.Nx -function has. diff --git a/share/man/man4/natm.4 b/share/man/man4/natm.4 deleted file mode 100644 index ce9fe606d636..000000000000 --- a/share/man/man4/natm.4 +++ /dev/null @@ -1,102 +0,0 @@ -.\" $FreeBSD$ -.\" -.Dd December 29, 1997 -.Dt NATM 4 -.Os -.Sh NAME -.Nm natm -.Nd Native Mode ATM protocol layer -.Sh DESCRIPTION -The -.Bx -ATM software comes with a -.Em native mode ATM protocol layer -which provides socket level access to AAL0 and AAL5 virtual circuits. -To enable this protocol layer, add -.Dl options NATM -.Dl device atm -to your kernel configuration file and re-make the kernel (do not forget -to do -.Dq make clean ) . -.Sh NATM API -The NATM layer uses a -.Vt struct sockaddr_natm -to specify a virtual circuit: -.Bd -literal -offset indent -struct sockaddr_natm { - uint8_t snatm_len; /* length */ - uint8_t snatm_family; /* AF_NATM */ - char snatm_if[IFNAMSIZ]; /* interface name */ - uint16_t snatm_vci; /* vci */ - uint8_t snatm_vpi; /* vpi */ -}; -.Ed -.Pp -To create an AAL5 connection to a virtual circuit with VPI 0, VCI 201 -one would use the following: -.Bd -literal -offset indent - struct sockaddr_natm snatm; - int s, r; - s = socket(AF_NATM, SOCK_STREAM, PROTO_NATMAAL5); - /* note: PROTO_NATMAAL0 is AAL0 */ - if (s < 0) { perror("socket"); exit(1); } - bzero(&snatm, sizeof(snatm)); - snatm.snatm_len = sizeof(snatm); - snatm.snatm_family = AF_NATM; - sprintf(snatm.snatm_if, "en0"); - snatm.snatm_vci = 201; - snatm.snatm_vpi = 0; - r = connect(s, (struct sockaddr *)&snatm, sizeof(snatm)); - if (r < 0) { perror("connect"); exit(1); } - /* s now connected to ATM! */ -.Ed -.Pp -The -.Fn socket -call simply creates an unconnected NATM socket. -The -.Fn connect -call associates an unconnected NATM socket with a -virtual circuit and tells the driver to enable that virtual circuit -for receiving data. -After the -.Fn connect -call one can -.Fn read -or -.Fn write -to the socket to perform ATM I/O. -.Sh Internal NATM operation -Internally, the NATM protocol layer keeps a list of all active virtual -circuits on the system in -.Dv natm_pcbs . -This includes circuits currently being used for IP to prevent NATM and -IP from clashing over virtual circuit usage. -.Pp -When a virtual circuit is enabled for receiving data, the NATM -protocol layer passes the address of the protocol control block down -to the driver as a receive -.Dq handle . -When inbound data arrives, the driver passes the data back with the -appropriate receive handle. -The NATM layer uses this to avoid the -overhead of a protocol control block lookup. -This allows us to take -advantage of the fact that ATM has already demultiplexed the data for -us. -.Sh SEE ALSO -.Xr en 4 , -.Xr fatm 4 , -.Xr hatm 4 , -.Xr natmip 4 , -.Xr patm 4 -.Sh AUTHORS -.An Chuck Cranor -of Washington University implemented the NATM protocol layer -along with the EN ATM driver in 1996 for -.Nx . -.Sh CAVEATS -The NATM protocol support is subject to change as -the ATM protocols develop. -Users should not depend on details of the current implementation, but rather -the services exported. diff --git a/share/man/man4/natmip.4 b/share/man/man4/natmip.4 deleted file mode 100644 index 154e97da6681..000000000000 --- a/share/man/man4/natmip.4 +++ /dev/null @@ -1,248 +0,0 @@ -.\" -.\" Copyright (c) 2003 -.\" Fraunhofer Institute for Open Communication Systems (FhG Fokus). -.\" All rights reserved. -.\" -.\" Author: Hartmut Brandt <harti@FreeBSD.org> -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" $FreeBSD$ -.\" -.Dd August 11, 2003 -.Dt NATMIP 4 -.Os -.Sh NAME -.Nm natmip -.Nd IP over ATM PVCs -.Sh SYNOPSIS -.Cd "device atm" -.Cd "options NATM" -.Sh DESCRIPTION -The NATM protocol stack includes support for IP over ATM. -Without any -additional signalling stacks or other modules it is possible to build -a CLIP (classical IP over ATM) network based on PVCs. -.Pp -An ATM network card -.Li ( en0 -in this example) is configured for IP by something -like: -.Pp -.Dl "ifconfig en0 128.252.200.1 netmask 0xffffff00 up" -.Pp -IP routing is done with special interface routes (routes with directly -reachable destinations) with a link layer gateway address. -The link layer address specifies the ATM interface through which the -destination can be reached, the virtual channel that connects to the -destination and the ATM characteristics of this channel. -The address part of the link layer address (see -.Xr link_addr 3 ) -consists of a fixed part (the first 5 bytes) and a part that -depends on the kind of the PVC (UBR, CBR, VBR, ABR). -Multi-byte values -are big-endian encoded: the bytes with the lower numbers contain the -higher order bits. -.Bl -tag -width "bytes 12...12" -offset indent -.It byte 0 -Is a flag byte. -Currently only flag 0x20 is used. -When set, all IP frames are LLC/SNAP encapsulated before putting them into -an AAL5 frame. -Setting this flag is recommended and allows interoperability with other -CLIP implementations. -Note that BPF works only with LLC/SNAP encapsulation. -.It byte 1 -This is the VPI of the channel. -.It bytes 2...3 -VCI of the channel. -Must not be zero. -.It byte 4 -Traffic type. -One of 0 (UBR), 1 (CBR), 2 (ABR), 3 (VBR). -.El -.Pp -The variable part for UBR connections may be either empty or three bytes: -.Bl -tag -width "bytes 12...12" -offset indent -.It bytes 5...7 -Specifies the peak cell rate for UBR. -.El -.Pp -The variable part for CBR connections must be three bytes: -.Bl -tag -width "bytes 12...12" -offset indent -.It bytes 5...7 -Specifies the peak cell rate for CBR. -.El -.Pp -The variable part for VBR connections must be 9 bytes long and specifies three -values: -.Bl -tag -width "bytes 12...12" -offset indent -.It bytes 5...7 -Specifies the peak cell rate for VBR. -.It bytes 8...10 -This is the sustainable cell rate. -.It bytes 11...13 -The maximum burst size. -.El -.Pp -The variable part for ABR connections must be 19 bytes long and specifies the -following values: -.Bl -tag -width "bytes 12...12" -offset indent -.It bytes 5...7 -Specifies the peak cell rate for ABR. -.It bytes 8...10 -The minimum cell rate. -.It bytes 11...13 -The initial cell rate. -.It bytes 14...16 -The transient buffer exposure. -.It byte 17 -The NRM value. -.It byte 18 -The TRM value. -.It bytes 19...20 -The ADTF value. -.It byte 21 -The rate increase factor (RIF). -.It byte 22 -The rate decrease factor (RDF). -.It byte 23 -The cutoff decrease factor (CDF). -.El -.Pp -To add a PVC the -.Xr route 8 -utility can be used: -.Bd -ragged -offset indent -.Nm route Cm add -.Fl iface Aq Ar "remote\ IP\ address" -.Fl link Ao Ar iface Ac : Ns Aq Ar lladdr -.Ed -.Pp -The -.Ar iface -is the ATM interface through which -.Ar "remote\ IP\ address" -can be reached and -.Ar lladdr -is the link layer address as a string of dot-separated, hexadecimal bytes. -.Pp -NATM also supports the old, original format. -This consists of 4 byte -link layer addresses (and the channels are implicit UBR): -.Bl -tag -width "bytes 12...12" -offset indent -.It byte 0 -Flags: -.Bl -tag -width "0x02" -offset indent -compact -.It 0x01 -use AAL5. -.It 0x02 -if using AAL5, use an LLC/SNAP header. -.El -.Pp -Thus, parameter 3 means AAL5 and LLC/SNAP encapsulation (this is the required -setting for interworking with other CLIP clients). -Note that BPF works only with LLC/SNAP encapsulation. -.It byte 1 -VPI for the channel -.It bytes 2...3 -VCI for the channel -.El -.Sh EXAMPLES -Suppose you have 3 hosts 128.252.200.1, 128.252.200.2 and -128.252.200.3 connected by ATM through PVCs: -.Pp -.Bl -item -offset indent -compact -.It -between 128.252.200.1 and 128.252.200.2: 0xc9 UBR -.It -between 128.252.200.1 and 128.252.200.3: 0xca VBR -.It -between 128.252.200.2 and 128.252.200.3: 0xcb CBR -.El -.Pp -The parameters for the VBR channel are: PCR 50000, SCR 10000, MBS 10. -The peak cell rate for the CBR channel is 100000. -.Pp -To enable the links use the following commands: -.Pp -on host 128.252.200.1: -.Bd -literal -offset indent -compact -ifconfig en0 128.252.200.1 netmask 0xffffff00 up -route add -iface 128.252.200.2 -link en0:3.0.0.c9.0 -route add -iface 128.252.200.3 -link en0:3.0.0.ca.3.0.c3.50.0.27.10.0.0.a -.Ed -.Pp -on host 128.252.200.2: -.Bd -literal -offset indent -compact -ifconfig en0 128.252.200.2 netmask 0xffffff00 up -route add -iface 128.252.200.1 -link en0:3.0.0.c9.0 -route add -iface 128.252.200.3 -link en0:3.0.0.cb.1.1.86.a0 -.Ed -.Pp -on host 128.252.200.3: -.Bd -literal -offset indent -compact -ifconfig en0 128.252.200.3 netmask 0xffffff00 up -route add -iface 128.252.200.1 -link en0:3.0.0.ca.3.0.c3.50.0.27.10.0.0.a -route add -iface 128.252.200.2 -link en0:3.0.0.cb.1.1.86.a0 -.Ed -.Pp -This can also be done in -.Xr rc.conf 5 : -.Pp -on host 128.252.200.1: -.Bd -literal -offset indent -compact -network_interfaces="lo0 en0" -ifconfig_en0="inet 128.252.200.1 netmask 255.255.255.0" -static_routes="host2 host3" -route_host2="-iface 128.252.200.2 -link en0:3.0.0.c9.0" -route_host3="-iface 128.252.200.3 -link en0:3.0.0.ca.3.0.c3.50.0.27.10.0.0.a" -.Ed -.Pp -on host 128.252.200.2: -.Bd -literal -offset indent -compact -network_interfaces="lo0 en0" -ifconfig_en0="inet 128.252.200.2 netmask 255.255.255.0" -static_routes="host1 host3" -route_host1="-iface 128.252.200.1 -link en0:3.0.0.c9.0" -route_host3="-iface 128.252.200.3 -link en0:3.0.0.cb.1.1.86.a0" -.Ed -.Pp -on host 128.252.200.3: -.Bd -literal -offset indent -compact -network_interfaces="lo0 en0" -ifconfig_en0="inet 128.252.200.3 netmask 255.255.255.0" -static_routes="host1 host2" -route_host1="-iface 128.252.200.1 -link en0:3.0.0.ca.3.0.c3.50.0.27.10.0.0.a" -route_host2="-iface 128.252.200.2 -link en0:3.0.0.cb.1.1.86.a0" -.Ed -.Sh SEE ALSO -.Xr en 4 , -.Xr fatm 4 , -.Xr hatm 4 , -.Xr natm 4 , -.Xr patm 4 -.Sh AUTHORS -.An Chuck Cranor -of Washington University implemented the NATM protocol layer -along with the EN ATM driver in 1996 for -.Nx . diff --git a/share/man/man4/ng_atm.4 b/share/man/man4/ng_atm.4 deleted file mode 100644 index 2ac1accba386..000000000000 --- a/share/man/man4/ng_atm.4 +++ /dev/null @@ -1,406 +0,0 @@ -.\" -.\" Copyright (c) 2001-2003 -.\" Fraunhofer Institute for Open Communication Systems (FhG Fokus). -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" Author: Hartmut Brandt <harti@FreeBSD.org> -.\" -.\" $FreeBSD$ -.\" -.\" ng_atm(4) man page -.\" -.Dd November 2, 2012 -.Dt NG_ATM 4 -.Os -.Sh NAME -.Nm ng_atm -.Nd netgraph ATM node type -.Sh SYNOPSIS -.In sys/types.h -.In net/if_atm.h -.In netgraph.h -.In netgraph/atm/ng_atm.h -.Sh DESCRIPTION -The -.Nm atm -netgraph node type allows -.Xr natm 4 -ATM drivers to be connected to the -.Xr netgraph 4 -networking subsystem. -When the -.Nm -module is loaded a node is automatically created for each -.Xr natm 4 -ATM interface. -The nodes are named with the same name as the -interface. -Nodes are also created if a driver for an ATM -card is loaded after -.Nm -was loaded. -.Pp -The -.Nm atm -nodes are persistent. -They are removed when the interface is removed. -.Dv NGM_SHUTDOWN -messages are ignored by the node. -.Sh HOOKS -Four special hooks with fixed names and an unlimited number of hooks with user -defined names are supported. -Three of the fixed hooks are attached to -strategic points in the information flow in the -.Xr natm 4 -system and support only reading. -The fourth fixed hook behaves like the other -user hooks, but a number of management messages are sent along the hook. -The other hooks can be attached to VCIs dynamically by means of -control messages to the -.Nm atm -node and can be written and read. -.Pp -The four fixed hooks are: -.Bl -tag -width ".Va orphans" -.It Va input -This is a connection to the raw input stream from the network. -If this hook is connected, all incoming packets are delivered out to -this hook. -Note that this redirects ALL input. -Neither -.Xr natm 4 -nor the user hooks will see any input if -.Va input -is connected. -An -.Vt atm_pseudohdr -(see -.Xr natm 4 ) -is prepended to the actual data. -.It Va output -This is a connection to the raw output stream to the network device. -If this hook is connected, all outgoing packets are handed over to -the netgraph system and delivered to the hook instead of being delivered -to the ATM driver. -An -.Vt atm_pseudohdr -(see -.Xr natm 4 ) -is prepended to the actual data. -.It Va orphans -This hook receives all packets that are unrecognized, i.e., do not belong to -either a -.Xr natm 4 -socket, a -.Nm -VCI or -.Xr natm 4 -IP. -Because ATM is connection oriented and packets are received on a given VCI only -when someone initiates this VCI, packets should never be orphaned. -There is -however one exception: if you use -.Xr natm 4 -IP with LLC/SNAP encapsulation packets with do not have the IP protocol -indicated in the packet header are delivered out of this hook. -An -.Vt atm_pseudohdr -(see -.Xr natm 4 ) -is prepended to the actual data send out to the hook. -.It Va manage -This hook behaves exactly like a normal user hook (see below) except that -the node at the other hand will receive management messages. -.El -.Pp -Hooks for dynamically initiated VCIs can have whatever name is allowed by -.Xr netgraph 4 -as long as the name does not collide with one of the three predefined names. -.Pp -To initiate packet sending and receiving on a dynamic hook, one has to issue -a -.Dv NGM_ATM_CPCS_INIT -control message. -To terminate sending and receiving one must send a -.Dv NGM_ATM_CPCS_TERM -message (see -.Sx CONTROL MESSAGES ) . -The data sent and received on these hooks has no additional -headers. -.Sh CONTROL MESSAGES -This node type supports the generic messages plus the following: -.Bl -tag -width 4n -.It Dv NGM_ATM_GET_IFNAME Pq Ic getifname -Return the name of the interface as a -.Dv NUL Ns --terminated string. -This is normally the same name as that of the node. -.It Dv NGM_ATM_GET_CONFIG Pq Ic getconfig -Returns a structure defining the configuration of the interface: -.Bd -literal -struct ngm_atm_config { - uint32_t pcr; /* peak cell rate */ - uint32_t vpi_bits; /* number of active VPI bits */ - uint32_t vci_bits; /* number of active VCI bits */ - uint32_t max_vpcs; /* maximum number of VPCs */ - uint32_t max_vccs; /* maximum number of VCCs */ -}; -.Ed -.It Dv NGM_ATM_GET_VCCS Pq Ic getvccs -Returns the table of open VCCs from the driver. -This table consists of -a header and a variable sized array of entries, one for each open VCC: -.Bd -literal -struct atmio_vcctable { - uint32_t count; /* number of vccs */ - struct atmio_vcc vccs[0]; /* array of VCCs */ -}; -struct atmio_vcc { - uint16_t flags; /* flags */ - uint16_t vpi; /* VPI */ - uint16_t vci; /* VCI */ - uint16_t rmtu; /* Receive maximum CPCS size */ - uint16_t tmtu; /* Transmit maximum CPCS size */ - uint8_t aal; /* aal type */ - uint8_t traffic; /* traffic type */ - struct atmio_tparam tparam; /* traffic parameters */ -}; -struct atmio_tparam { - uint32_t pcr; /* 24bit: Peak Cell Rate */ - uint32_t scr; /* 24bit: VBR Sustainable Cell Rate */ - uint32_t mbs; /* 24bit: VBR Maximum burst size */ - uint32_t mcr; /* 24bit: ABR/VBR/UBR+MCR MCR */ - uint32_t icr; /* 24bit: ABR ICR */ - uint32_t tbe; /* 24bit: ABR TBE (1...2^24-1) */ - uint8_t nrm; /* 3bit: ABR Nrm */ - uint8_t trm; /* 3bit: ABR Trm */ - uint16_t adtf; /* 10bit: ABR ADTF */ - uint8_t rif; /* 4bit: ABR RIF */ - uint8_t rdf; /* 4bit: ABR RDF */ - uint8_t cdf; /* 3bit: ABR CDF */ -}; -.Ed -.Pp -Note that this is the driver's table, so all VCCs opened via -.Xr natm 4 -sockets and IP are also shown. -They can, however, be distinguished by -their flags. -The -.Va flags -field contains the following flags: -.Pp -.Bl -tag -width ".Dv ATM_PH_LLCSNAP" -offset indent -compact -.It Dv ATM_PH_AAL5 -use AAL5 instead of AAL0 -.It Dv ATM_PH_LLCSNAP -if AAL5 use LLC SNAP encapsulation -.It Dv ATM_FLAG_NG -this is a netgraph VCC -.It Dv ATM_FLAG_HARP -this is a HARP VCC -.It Dv ATM_FLAG_NORX -transmit only VCC -.It Dv ATM_FLAG_NOTX -receive only VCC -.It Dv ATMIO_FLAG_PVC -treat channel as a PVC -.El -.Pp -If the -.Dv ATM_FLAG_NG -flag is set, then -.Va traffic -and -.Va tparam -contain meaningful information. -.Pp -The -.Va aal -field -contains one of the following values: -.Pp -.Bl -tag -width ".Dv ATM_PH_LLCSNAP" -offset indent -compact -.It Dv ATMIO_AAL_0 -AAL 0 (raw cells) -.It Dv ATMIO_AAL_34 -AAL 3 or AAL 4 -.It Dv ATMIO_AAL_5 -AAL 5 -.It Dv ATMIO_AAL_RAW -device specific raw cells -.El -.Pp -The -.Va traffic -field -can have one of the following values (not all drivers support -all traffic types however): -.Pp -.Bl -tag -width ".Dv ATM_PH_LLCSNAP" -offset indent -compact -.It Dv ATMIO_TRAFFIC_UBR -.It Dv ATMIO_TRAFFIC_CBR -.It Dv ATMIO_TRAFFIC_ABR -.It Dv ATMIO_TRAFFIC_VBR -.El -.It Dv NGM_ATM_CPCS_INIT Pq Ic cpcsinit -Initialize a VCC for sending and receiving. -The argument is a structure: -.Bd -literal -struct ngm_atm_cpcs_init { - char name[NG_HOOKSIZ]; - uint32_t flags; /* flags. (if_atm.h) */ - uint16_t vci; /* VCI to open */ - uint16_t vpi; /* VPI to open */ - uint16_t rmtu; /* receive maximum PDU */ - uint16_t tmtu; /* transmit maximum PDU */ - uint8_t aal; /* AAL type (if_atm.h) */ - uint8_t traffic; /* traffic type (if_atm.h) */ - uint32_t pcr; /* Peak cell rate */ - uint32_t scr; /* VBR: Sustainable cell rate */ - uint32_t mbs; /* VBR: Maximum burst rate */ - uint32_t mcr; /* UBR+: Minimum cell rate */ - uint32_t icr; /* ABR: Initial cell rate */ - uint32_t tbe; /* ABR: Transmit buffer exposure */ - uint8_t nrm; /* ABR: Nrm */ - uint8_t trm; /* ABR: Trm */ - uint16_t adtf; /* ABR: ADTF */ - uint8_t rif; /* ABR: RIF */ - uint8_t rdf; /* ABR: RDF */ - uint8_t cdf; /* ABR: CDF */ -}; -.Ed -.Pp -The -.Va name -field -is the name of the hook for which sending and receiving should be enabled. -This hook must already be connected. -The -.Va vpi -and -.Va vci -fields -are the respective VPI and VCI values to use for the ATM cells. -They must be -within the range, given by the -.Va maxvpi -and -.Va maxvci -fields of the -.Vt ng_atm_config -structure. -The -.Va flags -field -contains the flags (see above) and the other fields describe the -type of traffic. -.It Dv NGM_ATM_CPCS_TERM Pq Ic cpcsterm -Stop sending and receiving on the indicated hook. -The argument is a -.Bd -literal -struct ngm_atm_cpcs_term { - char name[NG_HOOKSIZ]; -}; -.Ed -.It Dv NGM_ATM_GET_STATS Pq Ic getstats -This command returns a message, containing node statistics. -The structure of the message is: -.Bd -literal -struct ngm_atm_stats { - uint64_t in_packets; - uint64_t in_errors; - uint64_t out_packets; - uint64_t out_errors; -}; -.Ed -.El -.Sh MANAGEMENT MESSAGES -If the -.Va manage -hook is connected, certain messages are sent along the hook. -They are -received by the peer node with a cookie of -.Dv NG_ATM_COOKIE . -.Bl -tag -width 4n -.It Dv NGM_ATM_VCC_CHANGE Pq Ic vcc_change -A permanent VCC has been added, deleted or changed. -This is used by -.Xr ilmid 8 -to generate the appropriate ILMI traps. -The structure of the message is: -.Bd -literal -struct ngm_atm_vcc_change { - uint32_t node; - uint16_t vci; - uint8_t vpi; - uint8_t state; -}; -.Ed -Where -.Va state -is 0 if the PVC was deleted, and 1 if it was added or modified. -.El -.Sh FLOW CONTROL -If the hardware driver supports it, the node can emit flow control messages -along a user hook. -The format of these messages is described in -.In netgraph/ng_message.h . -The -.Nm atm -node may generate -.Dv NGM_HIGH_WATER_PASSED -and -.Dv NGM_LOW_WATER_PASSED -messages. -The first one indicates that the hardware driver has stopped output -on the channel and drops new packets, the second one reports that -output was reenabled. -Currently, the structures are not filled with -information. -.Sh SHUTDOWN -The nodes are persistent as long as the corresponding interface exists. -Upon receipt of a -.Dv NGM_SHUTDOWN -messages, all hooks are disconnected and the node is reinitialized. -All -VCCs opened via -.Xr netgraph 4 -are closed. -When the ATM interface is unloaded, -the node disappears. -If the node is compiled with -.Dv NGATM_DEBUG -there is a sysctl -.Va net.graph.atm.allow_shutdown -which, when set to a non-zero value, allows the nodes to shut down. -Note that this is intended for development only and may lead to kernel -panics if set. -.Sh SEE ALSO -.Xr natm 4 , -.Xr netgraph 4 , -.Xr ng_ether 4 , -.Xr ngctl 8 -.Sh AUTHORS -.An Harti Brandt Aq Mt harti@FreeBSD.org diff --git a/share/man/man4/patm.4 b/share/man/man4/patm.4 deleted file mode 100644 index 4f7a10438f43..000000000000 --- a/share/man/man4/patm.4 +++ /dev/null @@ -1,192 +0,0 @@ -.\" -.\" Copyright (c) 2003 -.\" Fraunhofer Institute for Open Communication Systems (FhG Fokus). -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" Author: Hartmut Brandt <harti@FreeBSD.org> -.\" -.\" $FreeBSD$ -.\" -.\" patm(4) man page -.\" -.Dd July 15, 2003 -.Dt PATM 4 -.Os -.Sh NAME -.Nm patm -.Nd "device driver for IDT77252 based ATM interfaces (ProSum and IDT)" -.Sh SYNOPSIS -.Cd device patm -.Cd device utopia -.Cd device atm -.Pp -.Cd options NATM -.Cd options LIBMBPOOL -.Sh DESCRIPTION -The -.Nm -device driver supports ATM cards based on the IDT77252 chip. -It has been tested with ProSum's ProATM-155 cards and with IDT's evaluation -boards. -The driver interfaces with the -.Xr natm 4 -framework, -.Xr netgraph 4 -and HARP. -It provides only PVC services. -Signalling, ATMARP, ILMI and other -higher layer protocols are implemented using -.Xr netgraph 4 -or HARP. -.Pp -For configuring the card for IP see -.Xr natmip 4 . -.Pp -The driver supports UBR, CBR, VBR and ABR traffic. -Supported AALs are: -AAL0 (cell payloads), AAL5 and raw AAL. -The driver supports opening of VCI/VPI 0/0 in RX, raw AAL-mode. -This VC will receive all incoming cells (even those with non-zero GFC -fields and VPI/VCI values outside the allowed range) that are not -claimed by other open connections. -This may be used for monitoring purposes. -.Pp -The following sysctls are recognized by the driver additionally to those -handled by -.Xr utopia 4 : -.Bl -tag -width indent -.It Va hw.atm.patm Ns Ar N Ns Va .istats -Returns a list of -.Vt uint32_t -statistic counters with internal driver statistics. -.It Va hw.atm.patm Ns Ar N Ns Va .eeprom -This is a read-only variable containing the contents of the on-board EEPROM -device. -.It Va hw.atm.patm Ns Ar N Ns Va .lbuf_max -This puts an upper limit on the number of large receive buffers the -driver will allocate. -This is a read-only variable that can be set via a -.Xr loader 8 -tunable. -.It Va hw.atm.patm Ns Ar N Ns Va .tx_maxmaps -This is the upper limit of transmission DMA maps the driver will allocate. -This is read-only but may be set via a -.Xr loader 8 -tunable. -.It Va hw.atm.patm Ns Ar N Ns Va .debug -.Bf Em -(Only if debugging enabled.) -.Ef -These are debugging flags. -See -.Pa src/sys/dev/patm/if_patmvar.h -for the possible flags. -This may be initialized via a -.Xr loader 8 -tunable. -.It Va hw.atm.patm Ns Ar N Ns Va .regs -.Bf Em -(Only if debugging enabled.) -.Ef -Returns the current values of the card's registers. -.It Va hw.atm.patm Ns Ar N Ns Va .tsq -Returns the transmit status queue. -.El -.Pp -When loaded, the driver initializes several variables from -.Xr loader 8 -tunables: -.Bl -tag -width indent -.It Va hw.patm Ns Ar N Ns Va .lbuf_max -This initializes the corresponding -.Xr sysctl 8 -variable and defines an upper -limit on the number of large receive buffers (mbuf clusters). -.It Va hw.patm Ns Ar N Ns Va .tx_maxmaps -This initializes the corresponding -.Xr sysctl 8 -variable and is the maximum -number of DMA maps for transmission that the driver will allocated. -.It Va hw.patm Ns Ar N Ns Va .debug -.Bf Em -(Only if debugging enabled.) -.Ef -Initializes the debugging flags. -.El -.Pp -The driver supports the media options -.Cm sdh , noscramb -and -.Cm unassigned -(see -.Xr utopia 4 ) -when the card is a 155MBit card. -Both PMC-Sierra S/UNI and IDT77155 PHY chips are supported for these cards. -For 25MBit cards the IDT77105 is supported. -.Sh DIAGNOSTICS -.Bd -literal -patm1: <NICStAR (77222/77252) ATM adapter> port 0xc000-0xc0ff mem 0xf8000000-0xf83fffff,0xf4000000-0xf4000fff irq 11 at device 8.0 on pci2 -patm1: IDT77252 155MBit interface; idt77252 Rev. G; IDT77155 PHY -patm1: 128K x 32 SRAM; 4096 connections -.Ed -.Sh SEE ALSO -.Xr natm 4 , -.Xr natmip 4 , -.Xr utopia 4 -.Sh ACKNOWLEDGEMENTS -Thanks to Christian Bucari from ProSum for lending two of these cards to enable -the development of this driver. -Thanks also for answering my questions. -.Sh AUTHORS -.An Harti Brandt Aq Mt harti@FreeBSD.org -.Sh CAVEATS -The card fails to generate an interrupt if a cell is received in AAL0 mode -that has the MSB of the PTI field cleared. -Therefore cells will be delivered on the next receive interrupt which can happen -either when the receive status queue is full, or a cell with the last bit of -the PTI set is received. -.Pp -Although the card supports AAL3/4 the driver does not. -.Pp -The rate tables used by this driver are not the tables recommended by IDT -(they are wrong anyway). -The driver's tables are slightly more aggressive than IDT's. -That means, that the actual cell rate can be slightly higher than the -specified. -This is in contrast to the IDT tables where cell rates 5% less than the -allowed one have been observed. -This can be changed by changing the program that generates these tables, -found in -.Pa /usr/src/sys/dev/patm/genrtab , -and regenerating them. -.Pp -The reported media for the 155MBit cards will always be OC3/MM, because -there is no (known to me) way to figure out the actual medium. -The medium should really be coded in the EEPROM by the manufacturer. -.Pp -The Tx cell counter in the utopia statistics is wrong, because the chip -uses idle cells for spacing and the PHY counts these cells. -While there is a configuration option for the chip to switch of these cells -and, according to the documentation, this should not influence cell spacing, -it does, so the driver lets the chip generate idle cells. diff --git a/share/man/man4/u3g.4 b/share/man/man4/u3g.4 index ceec14bcccf7..7df2a8c2cfc7 100644 --- a/share/man/man4/u3g.4 +++ b/share/man/man4/u3g.4 @@ -18,7 +18,7 @@ .\" .\" $FreeBSD$ .\" -.Dd November 26, 2013 +.Dd April 26, 2017 .Dt U3G 4 .Os .Sh NAME @@ -97,6 +97,20 @@ See .Xr usbconfig 8 and .Xr usb_quirk 4 . +.Sh FILES +.Bl -tag -width "/dev/ttyU?.?.init" -compact +.It Pa /dev/ttyU?.? +for callin ports +.It Pa /dev/ttyU?.?.init +.It Pa /dev/ttyU?.?.lock +corresponding callin initial-state and lock-state devices +.Pp +.It Pa /dev/cuaU?.? +for callout ports +.It Pa /dev/cuaU?.?.init +.It Pa /dev/cuaU?.?.lock +corresponding callout initial-state and lock-state devices +.El .Sh SEE ALSO .Xr tty 4 , .Xr ucom 4 , diff --git a/share/man/man4/uark.4 b/share/man/man4/uark.4 index b130ff165484..f09b3c5d27b6 100644 --- a/share/man/man4/uark.4 +++ b/share/man/man4/uark.4 @@ -16,7 +16,7 @@ .\" .\" $FreeBSD$ .\" -.Dd November 20, 2011 +.Dd April 26, 2017 .Dt UARK 4 .Os .Sh NAME @@ -57,6 +57,20 @@ KQ-U8A Data Cable .It Skymaster USB to RS232 .El +.Sh FILES +.Bl -tag -width "/dev/ttyU?.init" -compact +.It Pa /dev/ttyU? +for callin ports +.It Pa /dev/ttyU?.init +.It Pa /dev/ttyU?.lock +corresponding callin initial-state and lock-state devices +.Pp +.It Pa /dev/cuaU? +for callout ports +.It Pa /dev/cuaU?.init +.It Pa /dev/cuaU?.lock +corresponding callout initial-state and lock-state devices +.El .Sh SEE ALSO .Xr tty 4 , .Xr ucom 4 , diff --git a/share/man/man4/uart.4 b/share/man/man4/uart.4 index cbf8e0808187..faa8ff0024cf 100644 --- a/share/man/man4/uart.4 +++ b/share/man/man4/uart.4 @@ -25,7 +25,7 @@ .\" .\" $FreeBSD$ .\" -.Dd December 9, 2015 +.Dd April 26, 2017 .Dt UART 4 .Os .Sh NAME @@ -226,14 +226,14 @@ level signal at up to 12 volts. A connection to header pins or an edge-connector on an embedded board is typically a TTL signal at 3.3 or 5 volts. .Sh FILES -.Bl -tag -width ".Pa /dev/ttyu?.init" -compact +.Bl -tag -width "/dev/ttyu?.init" -compact .It Pa /dev/ttyu? for callin ports .It Pa /dev/ttyu?.init .It Pa /dev/ttyu?.lock corresponding callin initial-state and lock-state devices .Pp -.It Pa /dev/cuau? +.It Pa /dev/cuau* for callout ports .It Pa /dev/cuau?.init .It Pa /dev/cuau?.lock diff --git a/share/man/man4/ubsa.4 b/share/man/man4/ubsa.4 index 12a18f007504..98bc69c6fc5f 100644 --- a/share/man/man4/ubsa.4 +++ b/share/man/man4/ubsa.4 @@ -28,7 +28,7 @@ .\" .\" $FreeBSD$ .\" -.Dd November 20, 2011 +.Dd April 26, 2017 .Dt UBSA 4 .Os .Sh NAME @@ -81,6 +81,20 @@ GoHubs GoCOM232 .It Peracom single port serial adapter .El +.Sh FILES +.Bl -tag -width "/dev/ttyU?.init" -compact +.It Pa /dev/ttyU? +for callin ports +.It Pa /dev/ttyU?.init +.It Pa /dev/ttyU?.lock +corresponding callin initial-state and lock-state devices +.Pp +.It Pa /dev/cuaU? +for callout ports +.It Pa /dev/cuaU?.init +.It Pa /dev/cuaU?.lock +corresponding callout initial-state and lock-state devices +.El .Sh SEE ALSO .Xr tty 4 , .Xr ucom 4 , diff --git a/share/man/man4/ubser.4 b/share/man/man4/ubser.4 index 556d4ec3a41e..780e1c227d62 100644 --- a/share/man/man4/ubser.4 +++ b/share/man/man4/ubser.4 @@ -28,7 +28,7 @@ .\" .\" $FreeBSD$ .\" -.Dd November 20, 2011 +.Dd April 26, 2017 .Dt UBSER 4 .Os .Sh NAME @@ -55,11 +55,22 @@ The .Nm driver provides support for the BWCT console management serial adapters. .Sh FILES -.Bl -tag -width ".Pa /dev/ttyy??" -compact -.It Pa /dev/ttyy?? +.Bl -tag -width "/dev/ttyU?.?.init" -compact +.It Pa /dev/ttyU?.? +for callin ports +.It Pa /dev/ttyU?.?.init +.It Pa /dev/ttyU?.?.lock +corresponding callin initial-state and lock-state devices +.Pp +.It Pa /dev/cuaU?.? +for callout ports +.It Pa /dev/cuaU?.?.init +.It Pa /dev/cuaU?.?.lock +corresponding callout initial-state and lock-state devices .El .Sh SEE ALSO .Xr tty 4 , +.Xr ucom 4 , .Xr usb 4 .Sh HISTORY The diff --git a/share/man/man4/uchcom.4 b/share/man/man4/uchcom.4 index d7c0abc7659d..957d84f8ae86 100644 --- a/share/man/man4/uchcom.4 +++ b/share/man/man4/uchcom.4 @@ -29,7 +29,7 @@ .\" .\" $FreeBSD$ .\" -.Dd November 20, 2011 +.Dd April 26, 2017 .Dt UCHCOM 4 .Os .Sh NAME @@ -70,6 +70,20 @@ driver supports the following adapters: .It HL USB-RS232 .El +.Sh FILES +.Bl -tag -width "/dev/ttyU?.init" -compact +.It Pa /dev/ttyU? +for callin ports +.It Pa /dev/ttyU?.init +.It Pa /dev/ttyU?.lock +corresponding callin initial-state and lock-state devices +.Pp +.It Pa /dev/cuaU? +for callout ports +.It Pa /dev/cuaU?.init +.It Pa /dev/cuaU?.lock +corresponding callout initial-state and lock-state devices +.El .Sh SEE ALSO .Xr tty 4 , .Xr ucom 4 , diff --git a/share/man/man4/ucom.4 b/share/man/man4/ucom.4 index 6fb0ecef7048..9984503e073f 100644 --- a/share/man/man4/ucom.4 +++ b/share/man/man4/ucom.4 @@ -29,7 +29,7 @@ .\" .\" $FreeBSD$ .\" -.Dd March 11, 2015 +.Dd April 26, 2017 .Dt UCOM 4 .Os .Sh NAME @@ -92,15 +92,31 @@ Capture pulses on the CTS line. Capture pulses on the DCD line. .El .Sh FILES -.Bl -tag -width ".Pa /dev/cuaU?" -.It Pa /dev/cuaU? +.Bl -tag -width "/dev/ttyU?.init" -compact .It Pa /dev/ttyU? +for callin ports +.It Pa /dev/ttyU?.init +.It Pa /dev/ttyU?.lock +corresponding callin initial-state and lock-state devices +.Pp +.It Pa /dev/cuaU? +for callout ports +.It Pa /dev/cuaU?.init +.It Pa /dev/cuaU?.lock +corresponding callout initial-state and lock-state devices .El .Sh SEE ALSO .Xr tty 4 , .Xr uark 4 , +.Xr ubsa 4 , +.Xr ubser 4 , .Xr uchcom 4 , +.Xr ucycom 4 , +.Xr ufoma 4 , .Xr uftdi 4 , +.Xr uhso 4 , +.\".Xr ugensa 4 , +.Xr uipaq 4 , .Xr umcs 4 , .Xr umct 4 , .Xr umodem 4 , diff --git a/share/man/man4/ucycom.4 b/share/man/man4/ucycom.4 index 8ec0a4812c24..b20cbeb7e5c9 100644 --- a/share/man/man4/ucycom.4 +++ b/share/man/man4/ucycom.4 @@ -27,7 +27,7 @@ .\" .\" $FreeBSD$ .\" -.Dd November 20, 2011 +.Dd April 26, 2017 .Dt UCYCOM 4 .Os .Sh NAME @@ -71,8 +71,23 @@ Cypress USB to RS232 bridge chips: .It DeLorme Earthmate USB GPS receiver .El +.Sh FILES +.Bl -tag -width "/dev/ttyU?.init" -compact +.It Pa /dev/ttyU? +for callin ports +.It Pa /dev/ttyU?.init +.It Pa /dev/ttyU?.lock +corresponding callin initial-state and lock-state devices +.Pp +.It Pa /dev/cuaU? +for callout ports +.It Pa /dev/cuaU?.init +.It Pa /dev/cuaU?.lock +corresponding callout initial-state and lock-state devices +.El .Sh SEE ALSO .Xr tty 4 , +.Xr ucom 4 , .Xr usb 4 .Sh HISTORY The diff --git a/share/man/man4/uftdi.4 b/share/man/man4/uftdi.4 index dc45373ae401..afe0fa6c0023 100644 --- a/share/man/man4/uftdi.4 +++ b/share/man/man4/uftdi.4 @@ -29,7 +29,7 @@ .\" .\" $FreeBSD$ .\" -.Dd August 6, 2015 +.Dd April 26, 2017 .Dt UFTDI 4 .Os .Sh NAME @@ -242,6 +242,20 @@ Buffalo PC-OP-RS / Kurouto-shikou KURO-RS universal remote .It Prologix GPIB-USB Controller .El +.Sh FILES +.Bl -tag -width "/dev/ttyU?.init" -compact +.It Pa /dev/ttyU? +for callin ports +.It Pa /dev/ttyU?.init +.It Pa /dev/ttyU?.lock +corresponding callin initial-state and lock-state devices +.Pp +.It Pa /dev/cuaU? +for callout ports +.It Pa /dev/cuaU?.init +.It Pa /dev/cuaU?.lock +corresponding callout initial-state and lock-state devices +.El .Sh SEE ALSO .Xr tty 4 , .Xr ucom 4 , diff --git a/share/man/man4/uipaq.4 b/share/man/man4/uipaq.4 index 96b23e3c2fdf..8a6d539c2071 100644 --- a/share/man/man4/uipaq.4 +++ b/share/man/man4/uipaq.4 @@ -30,7 +30,7 @@ .\" .\" $FreeBSD$ .\" -.Dd November 20, 2011 +.Dd April 26, 2017 .Dt UIPAQ 4 .Os .Sh NAME @@ -79,10 +79,23 @@ The device is accessed through the .Xr ucom 4 driver which makes it behave like a .Xr tty 4 . +.Sh FILES +.Bl -tag -width "/dev/ttyU?.init" -compact +.It Pa /dev/ttyU? +for callin ports +.It Pa /dev/ttyU?.init +.It Pa /dev/ttyU?.lock +corresponding callin initial-state and lock-state devices +.Pp +.It Pa /dev/cuaU? +for callout ports +.It Pa /dev/cuaU?.init +.It Pa /dev/cuaU?.lock +corresponding callout initial-state and lock-state devices +.El .Sh SEE ALSO .Xr tty 4 , .Xr ucom 4 , -.Xr uhub 4 , .Xr usb 4 .Sh HISTORY The diff --git a/share/man/man4/umcs.4 b/share/man/man4/umcs.4 index f94e359aadb8..42e89a69980f 100644 --- a/share/man/man4/umcs.4 +++ b/share/man/man4/umcs.4 @@ -28,7 +28,7 @@ .\" .\" $FreeBSD$ .\" -.Dd February 25, 2012 +.Dd April 26, 2017 .Dt UMCS 4 .Os .Sh NAME @@ -80,6 +80,20 @@ ST Lab U-360 two-port serial USB adapter .It ST Lab U-400 four-port serial USB adapter .El +.Sh FILES +.Bl -tag -width "/dev/ttyU?.?.init" -compact +.It Pa /dev/ttyU?.? +for callin ports +.It Pa /dev/ttyU?.?.init +.It Pa /dev/ttyU?.?.lock +corresponding callin initial-state and lock-state devices +.Pp +.It Pa /dev/cuaU?.? +for callout ports +.It Pa /dev/cuaU?.?.init +.It Pa /dev/cuaU?.?.lock +corresponding callout initial-state and lock-state devices +.El .Sh SEE ALSO .Xr tty 4 , .Xr ucom 4 , diff --git a/share/man/man4/umct.4 b/share/man/man4/umct.4 index 00e4e09e20cd..893711ef6d5a 100644 --- a/share/man/man4/umct.4 +++ b/share/man/man4/umct.4 @@ -25,7 +25,7 @@ .\" .\" $FreeBSD$ .\" -.Dd November 20, 2011 +.Dd April 26, 2017 .Dt UMCT 4 .Os .Sh NAME @@ -78,6 +78,20 @@ Magic Control Technology USB-232 .It Sitecom USB-232 .El +.Sh FILES +.Bl -tag -width "/dev/ttyU?.init" -compact +.It Pa /dev/ttyU? +for callin ports +.It Pa /dev/ttyU?.init +.It Pa /dev/ttyU?.lock +corresponding callin initial-state and lock-state devices +.Pp +.It Pa /dev/cuaU? +for callout ports +.It Pa /dev/cuaU?.init +.It Pa /dev/cuaU?.lock +corresponding callout initial-state and lock-state devices +.El .Sh SEE ALSO .Xr tty 4 , .Xr ucom 4 , diff --git a/share/man/man4/umodem.4 b/share/man/man4/umodem.4 index 480b453f5328..aaa1f99738b1 100644 --- a/share/man/man4/umodem.4 +++ b/share/man/man4/umodem.4 @@ -29,7 +29,7 @@ .\" .\" $FreeBSD$ .\" -.Dd August 6, 2012 +.Dd April 26, 2017 .Dt UMODEM 4 .Os .Sh NAME @@ -95,6 +95,20 @@ Sony Ericsson W810i phone .It Sonim XP5300 Force .El +.Sh FILES +.Bl -tag -width "/dev/ttyU?.init" -compact +.It Pa /dev/ttyU? +for callin ports +.It Pa /dev/ttyU?.init +.It Pa /dev/ttyU?.lock +corresponding callin initial-state and lock-state devices +.Pp +.It Pa /dev/cuaU? +for callout ports +.It Pa /dev/cuaU?.init +.It Pa /dev/cuaU?.lock +corresponding callout initial-state and lock-state devices +.El .Sh SEE ALSO .Xr tty 4 , .Xr ucom 4 , diff --git a/share/man/man4/umoscom.4 b/share/man/man4/umoscom.4 index 93f5fbd8414d..11f638ffb118 100644 --- a/share/man/man4/umoscom.4 +++ b/share/man/man4/umoscom.4 @@ -25,7 +25,7 @@ .\" .\" $FreeBSD$ .\" -.Dd March 18, 2014 +.Dd April 26, 2017 .Dt UMOSCOM 4 .Os .Sh NAME @@ -56,6 +56,20 @@ The device is accessed through the .Xr ucom 4 driver which makes it behave like a .Xr tty 4 . +.Sh FILES +.Bl -tag -width "/dev/ttyU?.init" -compact +.It Pa /dev/ttyU? +for callin ports +.It Pa /dev/ttyU?.init +.It Pa /dev/ttyU?.lock +corresponding callin initial-state and lock-state devices +.Pp +.It Pa /dev/cuaU? +for callout ports +.It Pa /dev/cuaU?.init +.It Pa /dev/cuaU?.lock +corresponding callout initial-state and lock-state devices +.El .Sh SEE ALSO .Xr tty 4 , .Xr ucom 4 , diff --git a/share/man/man4/uplcom.4 b/share/man/man4/uplcom.4 index d38626107909..164703431789 100644 --- a/share/man/man4/uplcom.4 +++ b/share/man/man4/uplcom.4 @@ -29,7 +29,7 @@ .\" .\" $FreeBSD$ .\" -.Dd July 25, 2012 +.Dd April 26, 2017 .Dt UPLCOM 4 .Os .Sh NAME @@ -180,6 +180,20 @@ YC-Cable USB-Serial Adapter .It Zeagle N2iTion3 Diving Computer .El +.Sh FILES +.Bl -tag -width "/dev/ttyU?.init" -compact +.It Pa /dev/ttyU? +for callin ports +.It Pa /dev/ttyU?.init +.It Pa /dev/ttyU?.lock +corresponding callin initial-state and lock-state devices +.Pp +.It Pa /dev/cuaU? +for callout ports +.It Pa /dev/cuaU?.init +.It Pa /dev/cuaU?.lock +corresponding callout initial-state and lock-state devices +.El .Sh SEE ALSO .Xr tty 4 , .Xr ucom 4 , diff --git a/share/man/man4/uslcom.4 b/share/man/man4/uslcom.4 index 01eb93dc4bb9..c24920ddbeff 100644 --- a/share/man/man4/uslcom.4 +++ b/share/man/man4/uslcom.4 @@ -16,7 +16,7 @@ .\" .\" $FreeBSD$ .\" -.Dd August 4, 2012 +.Dd April 26, 2017 .Dt USLCOM 4 .Os .Sh NAME @@ -192,6 +192,20 @@ WMR RIGblaster Plug&Play and RIGtalk RT1 .It Zephyr Bioharness .El +.Sh FILES +.Bl -tag -width "/dev/ttyU?.init" -compact +.It Pa /dev/ttyU? +for callin ports +.It Pa /dev/ttyU?.init +.It Pa /dev/ttyU?.lock +corresponding callin initial-state and lock-state devices +.Pp +.It Pa /dev/cuaU? +for callout ports +.It Pa /dev/cuaU?.init +.It Pa /dev/cuaU?.lock +corresponding callout initial-state and lock-state devices +.El .Sh SEE ALSO .Xr tty 4 , .Xr ucom 4 , diff --git a/share/man/man4/utopia.4 b/share/man/man4/utopia.4 deleted file mode 100644 index b3c0e5b9c2f0..000000000000 --- a/share/man/man4/utopia.4 +++ /dev/null @@ -1,196 +0,0 @@ -.\" Copyright (c) 2003 -.\" Fraunhofer Institute for Open Communication Systems (FhG Fokus). -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" Author: Hartmut Brandt <harti@FreeBSD.org> -.\" -.\" $FreeBSD$ -.\" -.Dd November 22, 2006 -.Dt UTOPIA 4 -.Os -.Sh NAME -.Nm utopia -.Nd "driver module for ATM PHY chips" -.Sh SYNOPSIS -To compile this driver into the kernel, -place the following line in your -kernel configuration file: -.Bd -ragged -offset indent -.Cd "device utopia" -.Ed -.Pp -Alternatively, to load the driver as a -module at boot time, place the following line in -.Xr loader.conf 5 : -.Bd -literal -offset indent -utopia_load="YES" -.Ed -.Sh DESCRIPTION -This module is used by all ATM drivers for cards that use -PMC-Sierra S/Uni and IDT77105/IDT77155 -chips to provide uniform functionality. -The module implements status monitoring -in either interrupt or polling mode, media option handling and application -access to chip registers. -.Pp -The driver implements several sysctls that are accessible under the -.Va hw.atm. Ns Ao Ar iface Ac Ns Va .\& -tree, where -.Ar iface -is the name of the ATM interface: -.Bl -tag -width indent -.It Va phy_regs -When reading this sysctl an array of 8-bit unsigned integers is returned -containing all accessible chip registers starting at register 0. -A register can be written by writing three 8-bit unsigned integers to the -sysctl: the register number, the new value and a bit mask. -This changes all bits in the register for which the corresponding bit in the -mask is one to the bit values from value. -Note that not all registers may -be writeable. -.It Va phy_loopback -allows to put the interface in one of several loopback modes. -Not all modes and all combinations of modes are supported on all chips. -The possible modes are: -.Bl -tag -width indent -.It Dv UTP_LOOP_NONE Pq No 0x00 -No loopback, normal operation. -.It Dv UTP_LOOP_TIME Pq No 0x01 -Timing source loopback. -When this is set the transmitter's clock is -derived from the receiver's clock. -.It Dv UTP_LOOP_DIAG Pq No 0x02 -Diagnostic loopback. -In this mode the receiver's input is connected to the -transmitter's output. -The receiver gets back everything that is sent. -The -transmitter operates normally. -.It Dv UTP_LOOP_LINE Pq No 0x04 -Serial line loopback. -This connects the line receiver to the line transmitter. -The chip transmits all cells back that it receives. -The receiver operates -normally. -.It Dv UTP_LOOP_PARAL Pq No 0x08 -Parallel diagnostic loopback. -This feeds back all transmitted cells into the -receiver between the parallel/serial converters. -The transmitter -operates normally. -.It Dv UTP_LOOP_TWIST Pq No 0x10 -Twisted pair diagnostic loopback. -Connects the high speed receive data to the -high speed transmit data. -All received data is sent back. -The receiver -operates normally. -.It Dv UTP_LOOP_PATH Pq No 0x20 -Diagnostic path loopback. -This connects the receiver input to the transmitter -output just between the path overhead processor and the byte mux. -The -transmitter operates normally. -.El -.It Va phy_type -This is the detected type of the phy chip. -Currently the following chips are -supported: -.Bl -tag -width indent -.It Dv UTP_TYPE_UNKNOWN Pq No 0 -The module could not determine the type of the PHY chip. -.It Dv UTP_TYPE_SUNI_LITE Pq No 1 -PMC-5346 (S/Uni-Lite) -.It Dv UTP_TYPE_SUNI_ULTRA Pq No 2 -PMC-5350 (S/Uni-Ultra) -.It Dv UTP_TYPE_SUNI_622 Pq No 3 -PMC-5355 (S/Uni-622) -.It Dv UTP_TYPE_IDT77105 Pq No 4 -IDT77105 (25.6MBit UTP interface) -.It Dv UTP_TYPE_IDT77155 Pq No 5 -IDT77155 (155MBit interface) -.El -.It Va phy_name -This is a string describing the type of the PHY chip. -.It Va phy_stats -Physical and some ATM layer statistics. -These are the statistics usually -provided by the chip. -The data is a returned in the following structure: -.Bd -literal -struct utopia_stats1 { - uint32_t version; /* version of this struct */ - uint32_t fill; - uint64_t rx_sbip; /* rx section BIP errors */ - uint64_t rx_lbip; /* rx line BIP errors */ - uint64_t rx_lfebe; /* rx line far end block errors */ - uint64_t rx_pbip; /* rx path BIP errors */ - uint64_t rx_pfebe; /* rx path far end block errors */ - uint64_t rx_cells; /* received cells */ - uint64_t rx_corr; /* correctable cell errors */ - uint64_t rx_uncorr; /* uncorrectable cell errors */ - uint64_t rx_symerr; /* symbol errors */ - uint64_t tx_cells; /* transmitted cells */ -}; -.Ed -.Pp -The current version is 1. -The statistics are updated from the chip once -a second. -On overflow the counters wrap to zero. -Note that not all counters -are meaningful for all PHY chips. -The statistics are cleared by writing an -arbitrary new value (the value is ignored). -.El -.Pp -The -.Nm -module also interfaces with the ifmedia system. -The module reports the current state of the carrier and will issue a -warning message when the carrier state changes. -While the physical media itself cannot be changed, several media options can: -.Bl -tag -width indent -.It Cm SDH -If the PHY is a Sonet/SDH chip this flag switches the interface into SDH mode. -If this option is not set (the default) the interface is in Sonet mode. -.It Cm noscramb -If the PHY is a Sonet/SDH chip disable scrambling. -This may be useful for debugging purposes. -.It Cm unassigned -Normally the interface emits idle cells when there are no other cells to -transmit. -This changes the default cell type to unassigned cells. -This -may be needed for interworking with public networks. -.El -.Sh SEE ALSO -.Xr en 4 , -.Xr fatm 4 , -.Xr hatm 4 , -.Xr patm 4 , -.Xr utopia 9 -.Sh AUTHORS -.An Harti Brandt Aq Mt harti@FreeBSD.org diff --git a/share/man/man4/uvisor.4 b/share/man/man4/uvisor.4 index 254e9b5b2d9d..368f218626b8 100644 --- a/share/man/man4/uvisor.4 +++ b/share/man/man4/uvisor.4 @@ -29,7 +29,7 @@ .\" .\" $FreeBSD$ .\" -.Dd November 20, 2011 +.Dd April 26, 2017 .Dt UVISOR 4 .Os .Sh NAME @@ -118,6 +118,20 @@ Sony Clie S360 .It Sony Clie TJ37 .El +.Sh FILES +.Bl -tag -width "/dev/ttyU?.init" -compact +.It Pa /dev/ttyU? +for callin ports +.It Pa /dev/ttyU?.init +.It Pa /dev/ttyU?.lock +corresponding callin initial-state and lock-state devices +.Pp +.It Pa /dev/cuaU? +for callout ports +.It Pa /dev/cuaU?.init +.It Pa /dev/cuaU?.lock +corresponding callout initial-state and lock-state devices +.El .Sh SEE ALSO .Xr tty 4 , .Xr ucom 4 , diff --git a/share/man/man4/uvscom.4 b/share/man/man4/uvscom.4 index fb8ada7aa26d..119d6c41e440 100644 --- a/share/man/man4/uvscom.4 +++ b/share/man/man4/uvscom.4 @@ -29,7 +29,7 @@ .\" .\" $FreeBSD$ .\" -.Dd November 20, 2011 +.Dd April 26, 2017 .Dt UVSCOM 4 .Os .Sh NAME @@ -77,6 +77,19 @@ The device is accessed through the .Xr ucom 4 driver which makes it behave like a .Xr tty 4 . +.Sh FILES +.Bl -tag -width "/dev/ttyU?.init" -compact +.It Pa /dev/ttyU? +for callin ports +.It Pa /dev/ttyU?.init +.It Pa /dev/ttyU?.lock +corresponding callin initial-state and lock-state devices +.Pp +.It Pa /dev/cuaU? +for callout ports +.It Pa /dev/cuaU?.init +.It Pa /dev/cuaU?.lock +corresponding callout initial-state and lock-state devices .Sh SEE ALSO .Xr tty 4 , .Xr ucom 4 , diff --git a/share/man/man5/rc.conf.5 b/share/man/man5/rc.conf.5 index bcc82eab031c..c73b852a62d4 100644 --- a/share/man/man5/rc.conf.5 +++ b/share/man/man5/rc.conf.5 @@ -2753,19 +2753,6 @@ variable is assumed to exist whose contents will later be passed to a .Dq Nm route Cm add Fl inet6 operation. -.It Va natm_static_routes -.Pq Vt str -The -.Xr natmip 4 -equivalent of -.Va static_routes . -If not empty then for each whitespace separated -.Ar element -in the value, a -.Va route_ Ns Aq Ar element -variable is assumed to exist whose contents will later be passed to a -.Dq Nm atmconfig Cm natm Cm add -operation. .It Va gateway_enable .Pq Vt bool If set to @@ -2946,136 +2933,6 @@ is mutually exclusive to .Va rtsol_flags ; .Va rtsold_enable takes precedence. -.It Va atm_enable -.Pq Vt bool -Set to -.Dq Li YES -to enable the configuration of ATM interfaces at system boot time. -For all of the ATM variables described below, please refer to the -.Xr atm 8 -manual page for further details on the available command parameters. -Also refer to the files in -.Pa /usr/share/examples/atm -for more detailed configuration information. -.It Va atm_load -.Pq Vt str -This is a list of physical ATM interface drivers to load. -Typical values are -.Dq Li hfa_pci -and/or -.Dq Li hea_pci . -.It Va atm_netif_ Ns Aq Ar intf -.Pq Vt str -For the ATM physical interface -.Ar intf , -this variable defines the name prefix and count for the ATM network -interfaces to be created. -The value will be passed as the parameters of an -.Dq Nm atm Cm "set netif" Ar intf -command. -.It Va atm_sigmgr_ Ns Aq Ar intf -.Pq Vt str -For the ATM physical interface -.Ar intf , -this variable defines the ATM signalling manager to be used. -The value will be passed as the parameters of an -.Dq Nm atm Cm attach Ar intf -command. -.It Va atm_prefix_ Ns Aq Ar intf -.Pq Vt str -For the ATM physical interface -.Ar intf , -this variable defines the NSAP prefix for interfaces using a UNI signalling -manager. -If set to -.Dq Li ILMI , -the prefix will automatically be set via the -.Xr ilmid 8 -daemon. -Otherwise, the value will be passed as the parameters of an -.Dq Nm atm Cm "set prefix" Ar intf -command. -.It Va atm_macaddr_ Ns Aq Ar intf -.Pq Vt str -For the ATM physical interface -.Ar intf , -this variable defines the MAC address for interfaces using a UNI signalling -manager. -If set to -.Dq Li NO , -the hardware MAC address contained in the ATM interface card will be used. -Otherwise, the value will be passed as the parameters of an -.Dq Nm atm Cm "set mac" Ar intf -command. -.It Va atm_arpserver_ Ns Aq Ar netif -.Pq Vt str -For the ATM network interface -.Ar netif , -this variable defines the ATM address for a host which is to provide ATMARP -service. -This variable is only applicable to interfaces using a UNI signalling -manager. -If set to -.Dq Li local , -this host will become an ATMARP server. -The value will be passed as the parameters of an -.Dq Nm atm Cm "set arpserver" Ar netif -command. -.It Va atm_scsparp_ Ns Aq Ar netif -.Pq Vt bool -If set to -.Dq Li YES , -SCSP/ATMARP service for the network interface -.Ar netif -will be initiated using the -.Xr scspd 8 -and -.Xr atmarpd 8 -daemons. -This variable is only applicable if -.Va atm_arpserver_ Ns Aq Ar netif -is set to -.Dq Li local . -.It Va atm_pvcs -.Pq Vt str -Set to the list of ATM PVCs to be added at system -boot time. -For each whitespace separated -.Ar element -in the value, an -.Va atm_pvc_ Ns Aq Ar element -variable is assumed to exist. -The value of each of these variables -will be passed as the parameters of an -.Dq Nm atm Cm "add pvc" -command. -.It Va atm_arps -.Pq Vt str -Set to the list of permanent ATM ARP entries to be added -at system boot time. -For each whitespace separated -.Ar element -in the value, an -.Va atm_arp_ Ns Aq Ar element -variable is assumed to exist. -The value of each of these variables -will be passed as the parameters of an -.Dq Nm atm Cm "add arp" -command. -.It Va natm_interfaces -.Pq Vt str -Set to the list of -.Xr natm 4 -interfaces that will also be used for HARP through -.Xr harp 4 . -If this list is not empty all interfaces in the list will be brought up -with -.Xr ifconfig 8 -and -.Xr harp 4 -will be loaded. -For this to work the interface drivers must be either compiled into the -kernel or must reside on the root partition. .It Va keybell .Pq Vt str The keyboard bell sound. @@ -4592,7 +4449,6 @@ configuration file. .Xr accton 8 , .Xr amd 8 , .Xr apm 8 , -.Xr atm 8 , .Xr bsdinstall 8 , .Xr bthidd 8 , .Xr chkprintcap 8 , diff --git a/share/man/man7/hier.7 b/share/man/man7/hier.7 index e55f0d2a1024..51fb16399ac3 100644 --- a/share/man/man7/hier.7 +++ b/share/man/man7/hier.7 @@ -293,21 +293,6 @@ see kernel key-management service; see .Xr ipsec 4 -.It Pa netnatm/ -NATM include files; -see -.Xr natm 4 -.Bl -tag -width "kerberos5/" -compact -.It Pa api/ -include files for the signalling API -.It Pa msg/ -include files that describe signalling messages and -declare associated functions -.It Pa saal/ -include files for the signalling AAL layer -.It Pa sig/ -include files for the UNI signalling protocol -.El .It Pa netsmb/ SMB/CIFS requester .It Pa nfs/ diff --git a/share/man/man9/Makefile b/share/man/man9/Makefile index d68c8899d64b..dc3b0a14fe2c 100644 --- a/share/man/man9/Makefile +++ b/share/man/man9/Makefile @@ -1994,7 +1994,6 @@ MLINKS+=vrele.9 vput.9 \ vrele.9 vunref.9 MLINKS+=vslock.9 vsunlock.9 MLINKS+=zone.9 uma.9 \ - zone.9 uma_find_refcnt.9 \ zone.9 uma_zalloc.9 \ zone.9 uma_zalloc_arg.9 \ zone.9 uma_zcreate.9 \ diff --git a/share/man/man9/zone.9 b/share/man/man9/zone.9 index 69d1f20b498e..41f2c397c876 100644 --- a/share/man/man9/zone.9 +++ b/share/man/man9/zone.9 @@ -25,7 +25,7 @@ .\" .\" $FreeBSD$ .\" -.Dd December 20, 2015 +.Dd April 26, 2017 .Dt ZONE 9 .Os .Sh NAME @@ -34,7 +34,6 @@ .Nm uma_zalloc_arg , .Nm uma_zfree , .Nm uma_zfree_arg , -.Nm uma_find_refcnt , .Nm uma_zdestroy , .Nm uma_zone_set_max, .Nm uma_zone_get_max, @@ -60,8 +59,6 @@ .Fn uma_zfree "uma_zone_t zone" "void *item" .Ft void .Fn uma_zfree_arg "uma_zone_t zone" "void *item" "void *arg" -.Ft "uint32_t *" -.Fn uma_find_refcnt "uma_zone_t zone" "void *item" .Ft void .Fn uma_zdestroy "uma_zone_t zone" .Ft int @@ -155,10 +152,6 @@ is a subset of the following flags: .Bl -tag -width "foo" .It Dv UMA_ZONE_NOFREE Slabs of the zone are never returned back to VM. -.It Dv UMA_ZONE_REFCNT -Each item in the zone would have internal reference counter associated with it. -See -.Fn uma_find_refcnt . .It Dv UMA_ZONE_NODUMP Pages belonging to the zone will not be included into mini-dumps. .It Dv UMA_ZONE_PCPU @@ -257,13 +250,6 @@ and .Dv dtor functions, respectively. .Pp -If zone was created with -.Dv UMA_ZONE_REFCNT -flag, then pointer to reference counter for an item can be retrieved with -help of the -.Fn uma_find_refcnt -function. -.Pp Created zones, which are empty, can be destroyed using diff --git a/share/mk/src.opts.mk b/share/mk/src.opts.mk index d42730c3bbb8..70c6f83f3f49 100644 --- a/share/mk/src.opts.mk +++ b/share/mk/src.opts.mk @@ -97,6 +97,7 @@ __DEFAULT_YES_OPTIONS = \ FTP \ GAMES \ GCOV \ + GDB \ GNU_DIFF \ GNU_GREP \ GPIO \ @@ -267,9 +268,9 @@ BROKEN_OPTIONS+=LLDB # does not yet contain kernel support for arm, and sparc64 kernel support # has not been tested. .if ${__T:Marm*} != "" || ${__T} == "sparc64" -__DEFAULT_YES_OPTIONS+=GDB +__DEFAULT_NO_OPTIONS+=GDB_LIBEXEC .else -__DEFAULT_NO_OPTIONS+=GDB +__DEFAULT_YES_OPTIONS+=GDB_LIBEXEC .endif # Only doing soft float API stuff on armv6 .if ${__T} != "armv6" diff --git a/sys/arm/arm/gic.c b/sys/arm/arm/gic.c index 233f410d4866..a05855acd83a 100644 --- a/sys/arm/arm/gic.c +++ b/sys/arm/arm/gic.c @@ -1429,7 +1429,7 @@ arm_gicv2m_alloc_msi(device_t dev, device_t child, int count, int maxcount, mtx_lock(&sc->sc_mutex); found = false; - for (irq = sc->sc_spi_start; irq < sc->sc_spi_end && !found; irq++) { + for (irq = sc->sc_spi_start; irq < sc->sc_spi_end; irq++) { /* Start on an aligned interrupt */ if ((irq & (maxcount - 1)) != 0) continue; @@ -1438,7 +1438,7 @@ arm_gicv2m_alloc_msi(device_t dev, device_t child, int count, int maxcount, found = true; /* Check this range is valid */ - for (end_irq = irq; end_irq != irq + count - 1; end_irq++) { + for (end_irq = irq; end_irq != irq + count; end_irq++) { /* No free interrupts */ if (end_irq == sc->sc_spi_end) { found = false; @@ -1455,6 +1455,8 @@ arm_gicv2m_alloc_msi(device_t dev, device_t child, int count, int maxcount, break; } } + if (found) + break; } /* Not enough interrupts were found */ diff --git a/sys/arm64/arm64/vm_machdep.c b/sys/arm64/arm64/vm_machdep.c index 26050e768ce8..e5a337e29fdb 100644 --- a/sys/arm64/arm64/vm_machdep.c +++ b/sys/arm64/arm64/vm_machdep.c @@ -25,6 +25,8 @@ * */ +#include "opt_platform.h" + #include <sys/cdefs.h> __FBSDID("$FreeBSD$"); @@ -52,6 +54,10 @@ __FBSDID("$FreeBSD$"); #include <machine/vfp.h> #endif +#ifdef DEV_PSCI +#include <dev/psci/psci.h> +#endif + /* * Finish a fork operation, with process p2 nearly set up. * Copy and update the pcb, set up the stack so that the child @@ -113,7 +119,11 @@ void cpu_reset(void) { - printf("cpu_reset"); +#ifdef DEV_PSCI + psci_reset(); +#endif + + printf("cpu_reset failed"); while(1) __asm volatile("wfi" ::: "memory"); } diff --git a/sys/boot/forth/loader.conf b/sys/boot/forth/loader.conf index da94e584214c..da067a579e2d 100644 --- a/sys/boot/forth/loader.conf +++ b/sys/boot/forth/loader.conf @@ -327,16 +327,13 @@ if_de_load="NO" # DEC DC21x4x Ethernet if_ed_load="NO" # National Semiconductor DS8390/WD83C690 # Ethernet if_em_load="NO" # Intel(R) PRO/1000 Gigabit Ethernet -if_en_load="NO" # Midway-based ATM interfaces if_ep_load="NO" # 3Com Etherlink III (3c5x9) if_et_load="NO" # Agere ET1310 10/100/Gigabit Ethernet if_ex_load="NO" # Intel EtherExpress Pro/10 Ethernet -if_fatm_load="NO" # Fore PCA200E ATM if_fe_load="NO" # Fujitsu MB86960A/MB86965A based Ethernet # adapters if_fxp_load="NO" # Intel EtherExpress PRO/100B (82557, 82558) if_gem_load="NO" # Sun GEM/Sun ERI/Apple GMAC -if_hatm_load="NO" # Fore/Marconi HE155 and HE622 if_hme_load="NO" # Sun Microelectronics STP2002-STQ Ethernet if_ie_load="NO" # Intel 82586 if_ipw_load="NO" # Intel PRO/Wireless 2100 wireless @@ -360,7 +357,6 @@ if_my_load="NO" # Myson PCI Fast Ethernet if_nfe_load="NO" # NVIDIA nForce MCP Networking Adapter if_nge_load="NO" # National Semiconductor PCI Gigabit Ethernet if_nxge_load="NO" # Neterion Xframe 10Gb Ethernet -if_patm_load="NO" # IDT77252 ATM if_pcn_load="NO" # AMD PCnet PCI if_ral_load="NO" # Ralink Technology wireless if_re_load="NO" # RealTek 8139C+/8169/8169S/8110S @@ -395,7 +391,6 @@ if_wpi_load="NO" # Intel 3945ABG Wireless LAN IEEE 802.11 if_xe_load="NO" # Xircom CreditCard PCMCIA if_xl_load="NO" # 3Com Etherlink XL (3c900, 3c905, 3c905B) sfxge_load="NO" # Solarflare 10Gb Ethernet adapter driver -utopia_load="NO" # ATM PHY driver ############################################################## diff --git a/sys/cam/ctl/ctl.c b/sys/cam/ctl/ctl.c index ad7cdd42128a..50ccbcdb2468 100644 --- a/sys/cam/ctl/ctl.c +++ b/sys/cam/ctl/ctl.c @@ -4731,18 +4731,20 @@ ctl_free_lun(struct ctl_lun *lun) struct ctl_lun *nlun; int i; - mtx_assert(&softc->ctl_lock, MA_OWNED); + KASSERT(TAILQ_EMPTY(&lun->ooa_queue), + ("Freeing a LUN %p with outstanding I/O!\n", lun)); + mtx_lock(&softc->ctl_lock); STAILQ_REMOVE(&softc->lun_list, lun, ctl_lun, links); - ctl_clear_mask(softc->ctl_lun_mask, lun->lun); - softc->ctl_luns[lun->lun] = NULL; - - if (!TAILQ_EMPTY(&lun->ooa_queue)) - panic("Freeing a LUN %p with outstanding I/O!!\n", lun); - softc->num_luns--; + STAILQ_FOREACH(nlun, &softc->lun_list, links) { + mtx_lock(&nlun->lun_lock); + ctl_est_ua_all(nlun, -1, CTL_UA_LUN_CHANGE); + mtx_unlock(&nlun->lun_lock); + } + mtx_unlock(&softc->ctl_lock); /* * Tell the backend to free resources, if this LUN has a backend. @@ -4752,7 +4754,6 @@ ctl_free_lun(struct ctl_lun *lun) lun->ie_reportcnt = UINT32_MAX; callout_drain(&lun->ie_callout); - ctl_tpc_lun_shutdown(lun); mtx_destroy(&lun->lun_lock); free(lun->lun_devid, M_CTL); @@ -4765,12 +4766,6 @@ ctl_free_lun(struct ctl_lun *lun) if (lun->flags & CTL_LUN_MALLOCED) free(lun, M_CTL); - STAILQ_FOREACH(nlun, &softc->lun_list, links) { - mtx_lock(&nlun->lun_lock); - ctl_est_ua_all(nlun, -1, CTL_UA_LUN_CHANGE); - mtx_unlock(&nlun->lun_lock); - } - return (0); } @@ -5027,9 +5022,7 @@ ctl_invalidate_lun(struct ctl_be_lun *be_lun) */ if (TAILQ_EMPTY(&lun->ooa_queue)) { mtx_unlock(&lun->lun_lock); - mtx_lock(&softc->ctl_lock); ctl_free_lun(lun); - mtx_unlock(&softc->ctl_lock); } else mtx_unlock(&lun->lun_lock); @@ -13068,9 +13061,7 @@ ctl_process_done(union ctl_io *io) if ((lun->flags & CTL_LUN_INVALID) && TAILQ_EMPTY(&lun->ooa_queue)) { mtx_unlock(&lun->lun_lock); - mtx_lock(&softc->ctl_lock); ctl_free_lun(lun); - mtx_unlock(&softc->ctl_lock); } else mtx_unlock(&lun->lun_lock); diff --git a/sys/cam/ctl/ctl_backend_block.c b/sys/cam/ctl/ctl_backend_block.c index 4a6141ff143f..ab71f8cec134 100644 --- a/sys/cam/ctl/ctl_backend_block.c +++ b/sys/cam/ctl/ctl_backend_block.c @@ -2650,11 +2650,8 @@ bailout_error: static void ctl_be_block_lun_shutdown(void *be_lun) { - struct ctl_be_block_lun *lun; - struct ctl_be_block_softc *softc; - - lun = (struct ctl_be_block_lun *)be_lun; - softc = lun->softc; + struct ctl_be_block_lun *lun = be_lun; + struct ctl_be_block_softc *softc = lun->softc; mtx_lock(&softc->lock); lun->flags |= CTL_BE_BLOCK_LUN_UNCONFIGURED; diff --git a/sys/cam/ctl/ctl_backend_ramdisk.c b/sys/cam/ctl/ctl_backend_ramdisk.c index ba3fa1c7c23e..837d50101b82 100644 --- a/sys/cam/ctl/ctl_backend_ramdisk.c +++ b/sys/cam/ctl/ctl_backend_ramdisk.c @@ -1287,13 +1287,8 @@ bailout_error: static void ctl_backend_ramdisk_lun_shutdown(void *be_lun) { - struct ctl_be_ramdisk_lun *lun; - struct ctl_be_ramdisk_softc *softc; - int do_free; - - lun = (struct ctl_be_ramdisk_lun *)be_lun; - softc = lun->softc; - do_free = 0; + struct ctl_be_ramdisk_lun *lun = be_lun; + struct ctl_be_ramdisk_softc *softc = lun->softc; mtx_lock(&softc->lock); lun->flags |= CTL_BE_RAMDISK_LUN_UNCONFIGURED; @@ -1303,12 +1298,9 @@ ctl_backend_ramdisk_lun_shutdown(void *be_lun) STAILQ_REMOVE(&softc->lun_list, lun, ctl_be_ramdisk_lun, links); softc->num_luns--; - do_free = 1; + free(be_lun, M_RAMDISK); } mtx_unlock(&softc->lock); - - if (do_free != 0) - free(be_lun, M_RAMDISK); } static void diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c index 417ddeb2ecdc..6d84c3eec70d 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c @@ -77,10 +77,10 @@ * A new reference to a cache buffer can be obtained in two * ways: 1) via a hash table lookup using the DVA as a key, * or 2) via one of the ARC lists. The arc_read() interface - * uses method 1, while the internal arc algorithms for + * uses method 1, while the internal ARC algorithms for * adjusting the cache use method 2. We therefore provide two * types of locks: 1) the hash table lock array, and 2) the - * arc list locks. + * ARC list locks. * * Buffers do not have their own mutexes, rather they rely on the * hash table mutexes for the bulk of their protection (i.e. most @@ -93,21 +93,12 @@ * buf_hash_remove() expects the appropriate hash mutex to be * already held before it is invoked. * - * Each arc state also has a mutex which is used to protect the + * Each ARC state also has a mutex which is used to protect the * buffer list associated with the state. When attempting to - * obtain a hash table lock while holding an arc list lock you + * obtain a hash table lock while holding an ARC list lock you * must use: mutex_tryenter() to avoid deadlock. Also note that * the active state mutex must be held before the ghost state mutex. * - * Arc buffers may have an associated eviction callback function. - * This function will be invoked prior to removing the buffer (e.g. - * in arc_do_user_evicts()). Note however that the data associated - * with the buffer may be evicted prior to the callback. The callback - * must be made with *no locks held* (to prevent deadlock). Additionally, - * the users of callbacks must ensure that their private data is - * protected from simultaneous callbacks from arc_clear_callback() - * and arc_do_user_evicts(). - * * Note that the majority of the performance stats are manipulated * with atomic operations. * @@ -136,67 +127,81 @@ * are cached in the L1ARC. The L1ARC (l1arc_buf_hdr_t) is a structure within * the arc_buf_hdr_t that will point to the data block in memory. A block can * only be read by a consumer if it has an l1arc_buf_hdr_t. The L1ARC - * caches data in two ways -- in a list of arc buffers (arc_buf_t) and + * caches data in two ways -- in a list of ARC buffers (arc_buf_t) and * also in the arc_buf_hdr_t's private physical data block pointer (b_pdata). - * Each arc buffer (arc_buf_t) is being actively accessed by a specific ARC - * consumer, and always contains uncompressed data. The ARC will provide - * references to this data and will keep it cached until it is no longer in - * use. Typically, the arc will try to cache only the L1ARC's physical data - * block and will aggressively evict any arc_buf_t that is no longer referenced. - * The amount of memory consumed by the arc_buf_t's can be seen via the + * + * The L1ARC's data pointer may or may not be uncompressed. The ARC has the + * ability to store the physical data (b_pdata) associated with the DVA of the + * arc_buf_hdr_t. Since the b_pdata is a copy of the on-disk physical block, + * it will match its on-disk compression characteristics. This behavior can be + * disabled by setting 'zfs_compressed_arc_enabled' to B_FALSE. When the + * compressed ARC functionality is disabled, the b_pdata will point to an + * uncompressed version of the on-disk data. + * + * Data in the L1ARC is not accessed by consumers of the ARC directly. Each + * arc_buf_hdr_t can have multiple ARC buffers (arc_buf_t) which reference it. + * Each ARC buffer (arc_buf_t) is being actively accessed by a specific ARC + * consumer. The ARC will provide references to this data and will keep it + * cached until it is no longer in use. The ARC caches only the L1ARC's physical + * data block and will evict any arc_buf_t that is no longer referenced. The + * amount of memory consumed by the arc_buf_ts' data buffers can be seen via the * "overhead_size" kstat. * + * Depending on the consumer, an arc_buf_t can be requested in uncompressed or + * compressed form. The typical case is that consumers will want uncompressed + * data, and when that happens a new data buffer is allocated where the data is + * decompressed for them to use. Currently the only consumer who wants + * compressed arc_buf_t's is "zfs send", when it streams data exactly as it + * exists on disk. When this happens, the arc_buf_t's data buffer is shared + * with the arc_buf_hdr_t. * - * arc_buf_hdr_t - * +-----------+ - * | | - * | | - * | | - * +-----------+ - * l2arc_buf_hdr_t| | - * | | - * +-----------+ - * l1arc_buf_hdr_t| | - * | | arc_buf_t - * | b_buf +------------>+---------+ arc_buf_t - * | | |b_next +---->+---------+ - * | b_pdata +-+ |---------| |b_next +-->NULL - * +-----------+ | | | +---------+ - * | |b_data +-+ | | - * | +---------+ | |b_data +-+ - * +->+------+ | +---------+ | - * (potentially) | | | | - * compressed | | | | - * data +------+ | v - * +->+------+ +------+ - * uncompressed | | | | - * data | | | | - * +------+ +------+ + * Here is a diagram showing an arc_buf_hdr_t referenced by two arc_buf_t's. The + * first one is owned by a compressed send consumer (and therefore references + * the same compressed data buffer as the arc_buf_hdr_t) and the second could be + * used by any other consumer (and has its own uncompressed copy of the data + * buffer). * - * The L1ARC's data pointer, however, may or may not be uncompressed. The - * ARC has the ability to store the physical data (b_pdata) associated with - * the DVA of the arc_buf_hdr_t. Since the b_pdata is a copy of the on-disk - * physical block, it will match its on-disk compression characteristics. - * If the block on-disk is compressed, then the physical data block - * in the cache will also be compressed and vice-versa. This behavior - * can be disabled by setting 'zfs_compressed_arc_enabled' to B_FALSE. When the - * compressed ARC functionality is disabled, the b_pdata will point to an - * uncompressed version of the on-disk data. + * arc_buf_hdr_t + * +-----------+ + * | fields | + * | common to | + * | L1- and | + * | L2ARC | + * +-----------+ + * | l2arc_buf_hdr_t + * | | + * +-----------+ + * | l1arc_buf_hdr_t + * | | arc_buf_t + * | b_buf +------------>+-----------+ arc_buf_t + * | b_pdata +-+ |b_next +---->+-----------+ + * +-----------+ | |-----------| |b_next +-->NULL + * | |b_comp = T | +-----------+ + * | |b_data +-+ |b_comp = F | + * | +-----------+ | |b_data +-+ + * +->+------+ | +-----------+ | + * compressed | | | | + * data | |<--------------+ | uncompressed + * +------+ compressed, | data + * shared +-->+------+ + * data | | + * | | + * +------+ * * When a consumer reads a block, the ARC must first look to see if the - * arc_buf_hdr_t is cached. If the hdr is cached and already has an arc_buf_t, - * then an additional arc_buf_t is allocated and the uncompressed data is - * bcopied from the existing arc_buf_t. If the hdr is cached but does not - * have an arc_buf_t, then the ARC allocates a new arc_buf_t and decompresses - * the b_pdata contents into the arc_buf_t's b_data. If the arc_buf_hdr_t's - * b_pdata is not compressed, then the block is shared with the newly - * allocated arc_buf_t. This block sharing only occurs with one arc_buf_t - * in the arc buffer chain. Sharing the block reduces the memory overhead - * required when the hdr is caching uncompressed blocks or the compressed - * arc functionality has been disabled via 'zfs_compressed_arc_enabled'. + * arc_buf_hdr_t is cached. If the hdr is cached then the ARC allocates a new + * arc_buf_t and either copies uncompressed data into a new data buffer from an + * existing uncompressed arc_buf_t, decompresses the hdr's b_pdata buffer into a + * new data buffer, or shares the hdr's b_pdata buffer, depending on whether the + * hdr is compressed and the desired compression characteristics of the + * arc_buf_t consumer. If the arc_buf_t ends up sharing data with the + * arc_buf_hdr_t and both of them are uncompressed then the arc_buf_t must be + * the last buffer in the hdr's b_buf list, however a shared compressed buf can + * be anywhere in the hdr's list. * * The diagram below shows an example of an uncompressed ARC hdr that is - * sharing its data with an arc_buf_t: + * sharing its data with an arc_buf_t (note that the shared uncompressed buf is + * the last element in the buf list): * * arc_buf_hdr_t * +-----------+ @@ -225,20 +230,24 @@ * | +------+ | * +---------------------------------+ * - * Writing to the arc requires that the ARC first discard the b_pdata + * Writing to the ARC requires that the ARC first discard the hdr's b_pdata * since the physical block is about to be rewritten. The new data contents - * will be contained in the arc_buf_t (uncompressed). As the I/O pipeline - * performs the write, it may compress the data before writing it to disk. - * The ARC will be called with the transformed data and will bcopy the - * transformed on-disk block into a newly allocated b_pdata. + * will be contained in the arc_buf_t. As the I/O pipeline performs the write, + * it may compress the data before writing it to disk. The ARC will be called + * with the transformed data and will bcopy the transformed on-disk block into + * a newly allocated b_pdata. Writes are always done into buffers which have + * either been loaned (and hence are new and don't have other readers) or + * buffers which have been released (and hence have their own hdr, if there + * were originally other readers of the buf's original hdr). This ensures that + * the ARC only needs to update a single buf and its hdr after a write occurs. * * When the L2ARC is in use, it will also take advantage of the b_pdata. The * L2ARC will always write the contents of b_pdata to the L2ARC. This means - * that when compressed arc is enabled that the L2ARC blocks are identical + * that when compressed ARC is enabled that the L2ARC blocks are identical * to the on-disk block in the main data pool. This provides a significant * advantage since the ARC can leverage the bp's checksum when reading from the * L2ARC to determine if the contents are valid. However, if the compressed - * arc is disabled, then the L2ARC's block must be transformed to look + * ARC is disabled, then the L2ARC's block must be transformed to look * like the physical block in the main data pool before comparing the * checksum and determining its validity. */ @@ -910,6 +919,7 @@ struct arc_callback { void *acb_private; arc_done_func_t *acb_done; arc_buf_t *acb_buf; + boolean_t acb_compressed; zio_t *acb_zio_dummy; arc_callback_t *acb_next; }; @@ -961,7 +971,7 @@ typedef struct l1arc_buf_hdr { zio_cksum_t *b_freeze_cksum; #ifdef ZFS_DEBUG /* - * used for debugging wtih kmem_flags - by allocating and freeing + * Used for debugging with kmem_flags - by allocating and freeing * b_thawed when the buffer is thawed, we get a record of the stack * trace that thawed it. */ @@ -1172,6 +1182,8 @@ sysctl_vfs_zfs_arc_min(SYSCTL_HANDLER_ARGS) HDR_COMPRESS_OFFSET, SPA_COMPRESSBITS, (cmp)); #define ARC_BUF_LAST(buf) ((buf)->b_next == NULL) +#define ARC_BUF_SHARED(buf) ((buf)->b_flags & ARC_BUF_FLAG_SHARED) +#define ARC_BUF_COMPRESSED(buf) ((buf)->b_flags & ARC_BUF_FLAG_COMPRESSED) /* * Other sizes @@ -1332,7 +1344,7 @@ static kmutex_t l2arc_free_on_write_mtx; /* mutex for list */ static uint64_t l2arc_ndev; /* number of devices */ typedef struct l2arc_read_callback { - arc_buf_hdr_t *l2rcb_hdr; /* read buffer */ + arc_buf_hdr_t *l2rcb_hdr; /* read header */ blkptr_t l2rcb_bp; /* original blkptr */ zbookmark_phys_t l2rcb_zb; /* original bookmark */ int l2rcb_flags; /* original flags */ @@ -1682,6 +1694,31 @@ retry: } } +/* + * This is the size that the buf occupies in memory. If the buf is compressed, + * it will correspond to the compressed size. You should use this method of + * getting the buf size unless you explicitly need the logical size. + */ +int32_t +arc_buf_size(arc_buf_t *buf) +{ + return (ARC_BUF_COMPRESSED(buf) ? + HDR_GET_PSIZE(buf->b_hdr) : HDR_GET_LSIZE(buf->b_hdr)); +} + +int32_t +arc_buf_lsize(arc_buf_t *buf) +{ + return (HDR_GET_LSIZE(buf->b_hdr)); +} + +enum zio_compress +arc_get_compression(arc_buf_t *buf) +{ + return (ARC_BUF_COMPRESSED(buf) ? + HDR_GET_COMPRESS(buf->b_hdr) : ZIO_COMPRESS_OFF); +} + #define ARC_MINTIME (hz>>4) /* 62 ms */ static inline boolean_t @@ -1690,9 +1727,21 @@ arc_buf_is_shared(arc_buf_t *buf) boolean_t shared = (buf->b_data != NULL && buf->b_data == buf->b_hdr->b_l1hdr.b_pdata); IMPLY(shared, HDR_SHARED_DATA(buf->b_hdr)); + IMPLY(shared, ARC_BUF_SHARED(buf)); + IMPLY(shared, ARC_BUF_COMPRESSED(buf) || ARC_BUF_LAST(buf)); + + /* + * It would be nice to assert arc_can_share() too, but the "hdr isn't + * already being shared" requirement prevents us from doing that. + */ + return (shared); } +/* + * Free the checksum associated with this header. If there is no checksum, this + * is a no-op. + */ static inline void arc_cksum_free(arc_buf_hdr_t *hdr) { @@ -1705,6 +1754,25 @@ arc_cksum_free(arc_buf_hdr_t *hdr) mutex_exit(&hdr->b_l1hdr.b_freeze_lock); } +/* + * Return true iff at least one of the bufs on hdr is not compressed. + */ +static boolean_t +arc_hdr_has_uncompressed_buf(arc_buf_hdr_t *hdr) +{ + for (arc_buf_t *b = hdr->b_l1hdr.b_buf; b != NULL; b = b->b_next) { + if (!ARC_BUF_COMPRESSED(b)) { + return (B_TRUE); + } + } + return (B_FALSE); +} + +/* + * If we've turned on the ZFS_DEBUG_MODIFY flag, verify that the buf's data + * matches the checksum that is stored in the hdr. If there is no checksum, + * or if the buf is compressed, this is a no-op. + */ static void arc_cksum_verify(arc_buf_t *buf) { @@ -1714,6 +1782,12 @@ arc_cksum_verify(arc_buf_t *buf) if (!(zfs_flags & ZFS_DEBUG_MODIFY)) return; + if (ARC_BUF_COMPRESSED(buf)) { + ASSERT(hdr->b_l1hdr.b_freeze_cksum == NULL || + arc_hdr_has_uncompressed_buf(hdr)); + return; + } + ASSERT(HDR_HAS_L1HDR(hdr)); mutex_enter(&hdr->b_l1hdr.b_freeze_lock); @@ -1721,7 +1795,8 @@ arc_cksum_verify(arc_buf_t *buf) mutex_exit(&hdr->b_l1hdr.b_freeze_lock); return; } - fletcher_2_native(buf->b_data, HDR_GET_LSIZE(hdr), NULL, &zc); + + fletcher_2_native(buf->b_data, arc_buf_size(buf), NULL, &zc); if (!ZIO_CHECKSUM_EQUAL(*hdr->b_l1hdr.b_freeze_cksum, zc)) panic("buffer modified while frozen!"); mutex_exit(&hdr->b_l1hdr.b_freeze_lock); @@ -1795,6 +1870,12 @@ arc_cksum_is_equal(arc_buf_hdr_t *hdr, zio_t *zio) return (valid_cksum); } +/* + * Given a buf full of data, if ZFS_DEBUG_MODIFY is enabled this computes a + * checksum and attaches it to the buf's hdr so that we can ensure that the buf + * isn't modified later on. If buf is compressed or there is already a checksum + * on the hdr, this is a no-op (we only checksum uncompressed bufs). + */ static void arc_cksum_compute(arc_buf_t *buf) { @@ -1804,14 +1885,21 @@ arc_cksum_compute(arc_buf_t *buf) return; ASSERT(HDR_HAS_L1HDR(hdr)); + mutex_enter(&buf->b_hdr->b_l1hdr.b_freeze_lock); if (hdr->b_l1hdr.b_freeze_cksum != NULL) { + ASSERT(arc_hdr_has_uncompressed_buf(hdr)); + mutex_exit(&hdr->b_l1hdr.b_freeze_lock); + return; + } else if (ARC_BUF_COMPRESSED(buf)) { mutex_exit(&hdr->b_l1hdr.b_freeze_lock); return; } + + ASSERT(!ARC_BUF_COMPRESSED(buf)); hdr->b_l1hdr.b_freeze_cksum = kmem_alloc(sizeof (zio_cksum_t), KM_SLEEP); - fletcher_2_native(buf->b_data, HDR_GET_LSIZE(hdr), NULL, + fletcher_2_native(buf->b_data, arc_buf_size(buf), NULL, hdr->b_l1hdr.b_freeze_cksum); mutex_exit(&hdr->b_l1hdr.b_freeze_lock); #ifdef illumos @@ -1855,7 +1943,7 @@ arc_buf_watch(arc_buf_t *buf) procctl_t ctl; ctl.cmd = PCWATCH; ctl.prwatch.pr_vaddr = (uintptr_t)buf->b_data; - ctl.prwatch.pr_size = HDR_GET_LSIZE(buf->b_hdr); + ctl.prwatch.pr_size = arc_buf_size(buf); ctl.prwatch.pr_wflags = WA_WRITE; result = write(arc_procfd, &ctl, sizeof (ctl)); ASSERT3U(result, ==, sizeof (ctl)); @@ -1877,6 +1965,12 @@ arc_buf_type(arc_buf_hdr_t *hdr) return (type); } +boolean_t +arc_is_metadata(arc_buf_t *buf) +{ + return (HDR_ISTYPE_METADATA(buf->b_hdr) != 0); +} + static uint32_t arc_bufc_to_flags(arc_buf_contents_t type) { @@ -1898,12 +1992,19 @@ arc_buf_thaw(arc_buf_t *buf) { arc_buf_hdr_t *hdr = buf->b_hdr; - if (zfs_flags & ZFS_DEBUG_MODIFY) { - if (hdr->b_l1hdr.b_state != arc_anon) - panic("modifying non-anon buffer!"); - if (HDR_IO_IN_PROGRESS(hdr)) - panic("modifying buffer while i/o in progress!"); - arc_cksum_verify(buf); + ASSERT3P(hdr->b_l1hdr.b_state, ==, arc_anon); + ASSERT(!HDR_IO_IN_PROGRESS(hdr)); + + arc_cksum_verify(buf); + + /* + * Compressed buffers do not manipulate the b_freeze_cksum or + * allocate b_thawed. + */ + if (ARC_BUF_COMPRESSED(buf)) { + ASSERT(hdr->b_l1hdr.b_freeze_cksum == NULL || + arc_hdr_has_uncompressed_buf(hdr)); + return; } ASSERT(HDR_HAS_L1HDR(hdr)); @@ -1934,6 +2035,12 @@ arc_buf_freeze(arc_buf_t *buf) if (!(zfs_flags & ZFS_DEBUG_MODIFY)) return; + if (ARC_BUF_COMPRESSED(buf)) { + ASSERT(hdr->b_l1hdr.b_freeze_cksum == NULL || + arc_hdr_has_uncompressed_buf(hdr)); + return; + } + hash_lock = HDR_LOCK(hdr); mutex_enter(hash_lock); @@ -1942,7 +2049,6 @@ arc_buf_freeze(arc_buf_t *buf) hdr->b_l1hdr.b_state == arc_anon); arc_cksum_compute(buf); mutex_exit(hash_lock); - } /* @@ -1999,47 +2105,157 @@ arc_hdr_set_compress(arc_buf_hdr_t *hdr, enum zio_compress cmp) } } +/* + * Looks for another buf on the same hdr which has the data decompressed, copies + * from it, and returns true. If no such buf exists, returns false. + */ +static boolean_t +arc_buf_try_copy_decompressed_data(arc_buf_t *buf) +{ + arc_buf_hdr_t *hdr = buf->b_hdr; + boolean_t copied = B_FALSE; + + ASSERT(HDR_HAS_L1HDR(hdr)); + ASSERT3P(buf->b_data, !=, NULL); + ASSERT(!ARC_BUF_COMPRESSED(buf)); + + for (arc_buf_t *from = hdr->b_l1hdr.b_buf; from != NULL; + from = from->b_next) { + /* can't use our own data buffer */ + if (from == buf) { + continue; + } + + if (!ARC_BUF_COMPRESSED(from)) { + bcopy(from->b_data, buf->b_data, arc_buf_size(buf)); + copied = B_TRUE; + break; + } + } + + /* + * There were no decompressed bufs, so there should not be a + * checksum on the hdr either. + */ + EQUIV(!copied, hdr->b_l1hdr.b_freeze_cksum == NULL); + + return (copied); +} + +/* + * Given a buf that has a data buffer attached to it, this function will + * efficiently fill the buf with data of the specified compression setting from + * the hdr and update the hdr's b_freeze_cksum if necessary. If the buf and hdr + * are already sharing a data buf, no copy is performed. + * + * If the buf is marked as compressed but uncompressed data was requested, this + * will allocate a new data buffer for the buf, remove that flag, and fill the + * buf with uncompressed data. You can't request a compressed buf on a hdr with + * uncompressed data, and (since we haven't added support for it yet) if you + * want compressed data your buf must already be marked as compressed and have + * the correct-sized data buffer. + */ static int -arc_decompress(arc_buf_t *buf) +arc_buf_fill(arc_buf_t *buf, boolean_t compressed) { arc_buf_hdr_t *hdr = buf->b_hdr; + boolean_t hdr_compressed = (HDR_GET_COMPRESS(hdr) != ZIO_COMPRESS_OFF); dmu_object_byteswap_t bswap = hdr->b_l1hdr.b_byteswap; - int error; - if (arc_buf_is_shared(buf)) { - ASSERT3U(HDR_GET_COMPRESS(hdr), ==, ZIO_COMPRESS_OFF); - } else if (HDR_GET_COMPRESS(hdr) == ZIO_COMPRESS_OFF) { - /* - * The arc_buf_hdr_t is either not compressed or is - * associated with an embedded block or a hole in which - * case they remain anonymous. - */ - IMPLY(HDR_COMPRESSION_ENABLED(hdr), HDR_GET_PSIZE(hdr) == 0 || - HDR_GET_PSIZE(hdr) == HDR_GET_LSIZE(hdr)); - ASSERT(!HDR_SHARED_DATA(hdr)); - bcopy(hdr->b_l1hdr.b_pdata, buf->b_data, HDR_GET_LSIZE(hdr)); + ASSERT3P(buf->b_data, !=, NULL); + IMPLY(compressed, hdr_compressed); + IMPLY(compressed, ARC_BUF_COMPRESSED(buf)); + + if (hdr_compressed == compressed) { + if (!arc_buf_is_shared(buf)) { + bcopy(hdr->b_l1hdr.b_pdata, buf->b_data, + arc_buf_size(buf)); + } } else { - ASSERT(!HDR_SHARED_DATA(hdr)); + ASSERT(hdr_compressed); + ASSERT(!compressed); ASSERT3U(HDR_GET_LSIZE(hdr), !=, HDR_GET_PSIZE(hdr)); - error = zio_decompress_data(HDR_GET_COMPRESS(hdr), - hdr->b_l1hdr.b_pdata, buf->b_data, HDR_GET_PSIZE(hdr), - HDR_GET_LSIZE(hdr)); - if (error != 0) { - zfs_dbgmsg("hdr %p, compress %d, psize %d, lsize %d", - hdr, HDR_GET_COMPRESS(hdr), HDR_GET_PSIZE(hdr), - HDR_GET_LSIZE(hdr)); - return (SET_ERROR(EIO)); + + /* + * If the buf is sharing its data with the hdr, unlink it and + * allocate a new data buffer for the buf. + */ + if (arc_buf_is_shared(buf)) { + ASSERT(ARC_BUF_COMPRESSED(buf)); + + /* We need to give the buf it's own b_data */ + buf->b_flags &= ~ARC_BUF_FLAG_SHARED; + buf->b_data = + arc_get_data_buf(hdr, HDR_GET_LSIZE(hdr), buf); + arc_hdr_clear_flags(hdr, ARC_FLAG_SHARED_DATA); + + /* Previously overhead was 0; just add new overhead */ + ARCSTAT_INCR(arcstat_overhead_size, HDR_GET_LSIZE(hdr)); + } else if (ARC_BUF_COMPRESSED(buf)) { + /* We need to reallocate the buf's b_data */ + arc_free_data_buf(hdr, buf->b_data, HDR_GET_PSIZE(hdr), + buf); + buf->b_data = + arc_get_data_buf(hdr, HDR_GET_LSIZE(hdr), buf); + + /* We increased the size of b_data; update overhead */ + ARCSTAT_INCR(arcstat_overhead_size, + HDR_GET_LSIZE(hdr) - HDR_GET_PSIZE(hdr)); + } + + /* + * Regardless of the buf's previous compression settings, it + * should not be compressed at the end of this function. + */ + buf->b_flags &= ~ARC_BUF_FLAG_COMPRESSED; + + /* + * Try copying the data from another buf which already has a + * decompressed version. If that's not possible, it's time to + * bite the bullet and decompress the data from the hdr. + */ + if (arc_buf_try_copy_decompressed_data(buf)) { + /* Skip byteswapping and checksumming (already done) */ + ASSERT3P(hdr->b_l1hdr.b_freeze_cksum, !=, NULL); + return (0); + } else { + int error = zio_decompress_data(HDR_GET_COMPRESS(hdr), + hdr->b_l1hdr.b_pdata, buf->b_data, + HDR_GET_PSIZE(hdr), HDR_GET_LSIZE(hdr)); + + /* + * Absent hardware errors or software bugs, this should + * be impossible, but log it anyway so we can debug it. + */ + if (error != 0) { + zfs_dbgmsg( + "hdr %p, compress %d, psize %d, lsize %d", + hdr, HDR_GET_COMPRESS(hdr), + HDR_GET_PSIZE(hdr), HDR_GET_LSIZE(hdr)); + return (SET_ERROR(EIO)); + } } } + + /* Byteswap the buf's data if necessary */ if (bswap != DMU_BSWAP_NUMFUNCS) { ASSERT(!HDR_SHARED_DATA(hdr)); ASSERT3U(bswap, <, DMU_BSWAP_NUMFUNCS); dmu_ot_byteswap[bswap].ob_func(buf->b_data, HDR_GET_LSIZE(hdr)); } + + /* Compute the hdr's checksum if necessary */ arc_cksum_compute(buf); + return (0); } +int +arc_decompress(arc_buf_t *buf) +{ + return (arc_buf_fill(buf, B_FALSE)); +} + /* * Return the size of the block, b_pdata, that is stored in the arc_buf_hdr_t. */ @@ -2067,7 +2283,6 @@ static void arc_evictable_space_increment(arc_buf_hdr_t *hdr, arc_state_t *state) { arc_buf_contents_t type = arc_buf_type(hdr); - uint64_t lsize = HDR_GET_LSIZE(hdr); ASSERT(HDR_HAS_L1HDR(hdr)); @@ -2075,7 +2290,8 @@ arc_evictable_space_increment(arc_buf_hdr_t *hdr, arc_state_t *state) ASSERT0(hdr->b_l1hdr.b_bufcnt); ASSERT3P(hdr->b_l1hdr.b_buf, ==, NULL); ASSERT3P(hdr->b_l1hdr.b_pdata, ==, NULL); - (void) refcount_add_many(&state->arcs_esize[type], lsize, hdr); + (void) refcount_add_many(&state->arcs_esize[type], + HDR_GET_LSIZE(hdr), hdr); return; } @@ -2086,11 +2302,10 @@ arc_evictable_space_increment(arc_buf_hdr_t *hdr, arc_state_t *state) } for (arc_buf_t *buf = hdr->b_l1hdr.b_buf; buf != NULL; buf = buf->b_next) { - if (arc_buf_is_shared(buf)) { - ASSERT(ARC_BUF_LAST(buf)); + if (arc_buf_is_shared(buf)) continue; - } - (void) refcount_add_many(&state->arcs_esize[type], lsize, buf); + (void) refcount_add_many(&state->arcs_esize[type], + arc_buf_size(buf), buf); } } @@ -2100,10 +2315,9 @@ arc_evictable_space_increment(arc_buf_hdr_t *hdr, arc_state_t *state) * so that we can add and remove them from the refcount individually. */ static void -arc_evitable_space_decrement(arc_buf_hdr_t *hdr, arc_state_t *state) +arc_evictable_space_decrement(arc_buf_hdr_t *hdr, arc_state_t *state) { arc_buf_contents_t type = arc_buf_type(hdr); - uint64_t lsize = HDR_GET_LSIZE(hdr); ASSERT(HDR_HAS_L1HDR(hdr)); @@ -2112,7 +2326,7 @@ arc_evitable_space_decrement(arc_buf_hdr_t *hdr, arc_state_t *state) ASSERT3P(hdr->b_l1hdr.b_buf, ==, NULL); ASSERT3P(hdr->b_l1hdr.b_pdata, ==, NULL); (void) refcount_remove_many(&state->arcs_esize[type], - lsize, hdr); + HDR_GET_LSIZE(hdr), hdr); return; } @@ -2123,12 +2337,10 @@ arc_evitable_space_decrement(arc_buf_hdr_t *hdr, arc_state_t *state) } for (arc_buf_t *buf = hdr->b_l1hdr.b_buf; buf != NULL; buf = buf->b_next) { - if (arc_buf_is_shared(buf)) { - ASSERT(ARC_BUF_LAST(buf)); + if (arc_buf_is_shared(buf)) continue; - } (void) refcount_remove_many(&state->arcs_esize[type], - lsize, buf); + arc_buf_size(buf), buf); } } @@ -2156,7 +2368,7 @@ add_reference(arc_buf_hdr_t *hdr, void *tag) if (state != arc_l2c_only) { multilist_remove(&state->arcs_list[arc_buf_type(hdr)], hdr); - arc_evitable_space_decrement(hdr, state); + arc_evictable_space_decrement(hdr, state); } /* remove the prefetch flag if we get a reference */ arc_hdr_clear_flags(hdr, ARC_FLAG_PREFETCH); @@ -2244,7 +2456,7 @@ arc_change_state(arc_state_t *new_state, arc_buf_hdr_t *hdr, ASSERT3P(hdr->b_l1hdr.b_buf, ==, NULL); update_old = B_TRUE; } - arc_evitable_space_decrement(hdr, old_state); + arc_evictable_space_decrement(hdr, old_state); } if (new_state != arc_anon && new_state != arc_l2c_only) { @@ -2307,13 +2519,11 @@ arc_change_state(arc_state_t *new_state, arc_buf_hdr_t *hdr, * add to the refcount if the arc_buf_t is * not shared. */ - if (arc_buf_is_shared(buf)) { - ASSERT(ARC_BUF_LAST(buf)); + if (arc_buf_is_shared(buf)) continue; - } (void) refcount_add_many(&new_state->arcs_size, - HDR_GET_LSIZE(hdr), buf); + arc_buf_size(buf), buf); } ASSERT3U(bufcnt, ==, buffers); @@ -2330,6 +2540,7 @@ arc_change_state(arc_state_t *new_state, arc_buf_hdr_t *hdr, ASSERT(HDR_HAS_L1HDR(hdr)); if (GHOST_STATE(old_state)) { ASSERT0(bufcnt); + ASSERT3P(hdr->b_l1hdr.b_pdata, ==, NULL); /* * When moving a header off of a ghost state, @@ -2341,7 +2552,6 @@ arc_change_state(arc_state_t *new_state, arc_buf_hdr_t *hdr, (void) refcount_remove_many(&old_state->arcs_size, HDR_GET_LSIZE(hdr), hdr); - ASSERT3P(hdr->b_l1hdr.b_pdata, ==, NULL); } else { uint32_t buffers = 0; @@ -2352,7 +2562,7 @@ arc_change_state(arc_state_t *new_state, arc_buf_hdr_t *hdr, */ for (arc_buf_t *buf = hdr->b_l1hdr.b_buf; buf != NULL; buf = buf->b_next) { - ASSERT3P(bufcnt, !=, 0); + ASSERT3U(bufcnt, !=, 0); buffers++; /* @@ -2362,13 +2572,11 @@ arc_change_state(arc_state_t *new_state, arc_buf_hdr_t *hdr, * add to the refcount if the arc_buf_t is * not shared. */ - if (arc_buf_is_shared(buf)) { - ASSERT(ARC_BUF_LAST(buf)); + if (arc_buf_is_shared(buf)) continue; - } (void) refcount_remove_many( - &old_state->arcs_size, HDR_GET_LSIZE(hdr), + &old_state->arcs_size, arc_buf_size(buf), buf); } ASSERT3U(bufcnt, ==, buffers); @@ -2453,11 +2661,50 @@ arc_space_return(uint64_t space, arc_space_type_t type) } /* - * Allocate an initial buffer for this hdr, subsequent buffers will - * use arc_buf_clone(). + * Given a hdr and a buf, returns whether that buf can share its b_data buffer + * with the hdr's b_pdata. */ -static arc_buf_t * -arc_buf_alloc_impl(arc_buf_hdr_t *hdr, void *tag) +static boolean_t +arc_can_share(arc_buf_hdr_t *hdr, arc_buf_t *buf) +{ + /* + * The criteria for sharing a hdr's data are: + * 1. the hdr's compression matches the buf's compression + * 2. the hdr doesn't need to be byteswapped + * 3. the hdr isn't already being shared + * 4. the buf is either compressed or it is the last buf in the hdr list + * + * Criterion #4 maintains the invariant that shared uncompressed + * bufs must be the final buf in the hdr's b_buf list. Reading this, you + * might ask, "if a compressed buf is allocated first, won't that be the + * last thing in the list?", but in that case it's impossible to create + * a shared uncompressed buf anyway (because the hdr must be compressed + * to have the compressed buf). You might also think that #3 is + * sufficient to make this guarantee, however it's possible + * (specifically in the rare L2ARC write race mentioned in + * arc_buf_alloc_impl()) there will be an existing uncompressed buf that + * is sharable, but wasn't at the time of its allocation. Rather than + * allow a new shared uncompressed buf to be created and then shuffle + * the list around to make it the last element, this simply disallows + * sharing if the new buf isn't the first to be added. + */ + ASSERT3P(buf->b_hdr, ==, hdr); + boolean_t hdr_compressed = HDR_GET_COMPRESS(hdr) != ZIO_COMPRESS_OFF; + boolean_t buf_compressed = ARC_BUF_COMPRESSED(buf) != 0; + return (buf_compressed == hdr_compressed && + hdr->b_l1hdr.b_byteswap == DMU_BSWAP_NUMFUNCS && + !HDR_SHARED_DATA(hdr) && + (ARC_BUF_LAST(buf) || ARC_BUF_COMPRESSED(buf))); +} + +/* + * Allocate a buf for this hdr. If you care about the data that's in the hdr, + * or if you want a compressed buffer, pass those flags in. Returns 0 if the + * copy was made successfully, or an error code otherwise. + */ +static int +arc_buf_alloc_impl(arc_buf_hdr_t *hdr, void *tag, boolean_t compressed, + boolean_t fill, arc_buf_t **ret) { arc_buf_t *buf; @@ -2465,15 +2712,14 @@ arc_buf_alloc_impl(arc_buf_hdr_t *hdr, void *tag) ASSERT3U(HDR_GET_LSIZE(hdr), >, 0); VERIFY(hdr->b_type == ARC_BUFC_DATA || hdr->b_type == ARC_BUFC_METADATA); + ASSERT3P(ret, !=, NULL); + ASSERT3P(*ret, ==, NULL); - ASSERT(refcount_is_zero(&hdr->b_l1hdr.b_refcnt)); - ASSERT3P(hdr->b_l1hdr.b_buf, ==, NULL); - ASSERT0(hdr->b_l1hdr.b_bufcnt); - - buf = kmem_cache_alloc(buf_cache, KM_PUSHPAGE); + buf = *ret = kmem_cache_alloc(buf_cache, KM_PUSHPAGE); buf->b_hdr = hdr; buf->b_data = NULL; - buf->b_next = NULL; + buf->b_next = hdr->b_l1hdr.b_buf; + buf->b_flags = 0; add_reference(hdr, tag); @@ -2484,58 +2730,63 @@ arc_buf_alloc_impl(arc_buf_hdr_t *hdr, void *tag) ASSERT(MUTEX_HELD(HDR_LOCK(hdr)) || HDR_EMPTY(hdr)); /* - * If the hdr's data can be shared (no byteswapping, hdr is - * uncompressed, hdr's data is not currently being written to the - * L2ARC write) then we share the data buffer and set the appropriate - * bit in the hdr's b_flags to indicate the hdr is sharing it's - * b_pdata with the arc_buf_t. Otherwise, we allocate a new buffer to - * store the buf's data. + * Only honor requests for compressed bufs if the hdr is actually + * compressed. */ - if (hdr->b_l1hdr.b_byteswap == DMU_BSWAP_NUMFUNCS && - HDR_GET_COMPRESS(hdr) == ZIO_COMPRESS_OFF && !HDR_L2_WRITING(hdr)) { + if (compressed && HDR_GET_COMPRESS(hdr) != ZIO_COMPRESS_OFF) + buf->b_flags |= ARC_BUF_FLAG_COMPRESSED; + + /* + * If the hdr's data can be shared then we share the data buffer and + * set the appropriate bit in the hdr's b_flags to indicate the hdr is + * sharing it's b_pdata with the arc_buf_t. Otherwise, we allocate a new + * buffer to store the buf's data. + * + * There is one additional restriction here because we're sharing + * hdr -> buf instead of the usual buf -> hdr: the hdr can't be actively + * involved in an L2ARC write, because if this buf is used by an + * arc_write() then the hdr's data buffer will be released when the + * write completes, even though the L2ARC write might still be using it. + */ + boolean_t can_share = arc_can_share(hdr, buf) && !HDR_L2_WRITING(hdr); + + /* Set up b_data and sharing */ + if (can_share) { buf->b_data = hdr->b_l1hdr.b_pdata; + buf->b_flags |= ARC_BUF_FLAG_SHARED; arc_hdr_set_flags(hdr, ARC_FLAG_SHARED_DATA); } else { - buf->b_data = arc_get_data_buf(hdr, HDR_GET_LSIZE(hdr), buf); - ARCSTAT_INCR(arcstat_overhead_size, HDR_GET_LSIZE(hdr)); - arc_hdr_clear_flags(hdr, ARC_FLAG_SHARED_DATA); + buf->b_data = + arc_get_data_buf(hdr, arc_buf_size(buf), buf); + ARCSTAT_INCR(arcstat_overhead_size, arc_buf_size(buf)); } VERIFY3P(buf->b_data, !=, NULL); hdr->b_l1hdr.b_buf = buf; hdr->b_l1hdr.b_bufcnt += 1; - return (buf); -} + /* + * If the user wants the data from the hdr, we need to either copy or + * decompress the data. + */ + if (fill) { + return (arc_buf_fill(buf, ARC_BUF_COMPRESSED(buf) != 0)); + } -/* - * Used when allocating additional buffers. - */ -static arc_buf_t * -arc_buf_clone(arc_buf_t *from) -{ - arc_buf_t *buf; - arc_buf_hdr_t *hdr = from->b_hdr; - uint64_t size = HDR_GET_LSIZE(hdr); + return (0); +} - ASSERT(HDR_HAS_L1HDR(hdr)); - ASSERT(hdr->b_l1hdr.b_state != arc_anon); +static char *arc_onloan_tag = "onloan"; - buf = kmem_cache_alloc(buf_cache, KM_PUSHPAGE); - buf->b_hdr = hdr; - buf->b_data = NULL; - buf->b_next = hdr->b_l1hdr.b_buf; - hdr->b_l1hdr.b_buf = buf; - buf->b_data = arc_get_data_buf(hdr, HDR_GET_LSIZE(hdr), buf); - bcopy(from->b_data, buf->b_data, size); - hdr->b_l1hdr.b_bufcnt += 1; +static inline void +arc_loaned_bytes_update(int64_t delta) +{ + atomic_add_64(&arc_loaned_bytes, delta); - ARCSTAT_INCR(arcstat_overhead_size, HDR_GET_LSIZE(hdr)); - return (buf); + /* assert that it did not wrap around */ + ASSERT3S(atomic_add_64_nv(&arc_loaned_bytes, 0), >=, 0); } -static char *arc_onloan_tag = "onloan"; - /* * Loan out an anonymous arc buffer. Loaned buffers are not counted as in * flight data by arc_tempreserve_space() until they are "returned". Loaned @@ -2543,16 +2794,29 @@ static char *arc_onloan_tag = "onloan"; * freed. */ arc_buf_t * -arc_loan_buf(spa_t *spa, int size) +arc_loan_buf(spa_t *spa, boolean_t is_metadata, int size) { - arc_buf_t *buf; + arc_buf_t *buf = arc_alloc_buf(spa, arc_onloan_tag, + is_metadata ? ARC_BUFC_METADATA : ARC_BUFC_DATA, size); + + arc_loaned_bytes_update(size); + + return (buf); +} - buf = arc_alloc_buf(spa, size, arc_onloan_tag, ARC_BUFC_DATA); +arc_buf_t * +arc_loan_compressed_buf(spa_t *spa, uint64_t psize, uint64_t lsize, + enum zio_compress compression_type) +{ + arc_buf_t *buf = arc_alloc_compressed_buf(spa, arc_onloan_tag, + psize, lsize, compression_type); + + arc_loaned_bytes_update(psize); - atomic_add_64(&arc_loaned_bytes, size); return (buf); } + /* * Return a loaned arc buffer to the arc. */ @@ -2566,7 +2830,7 @@ arc_return_buf(arc_buf_t *buf, void *tag) (void) refcount_add(&hdr->b_l1hdr.b_refcnt, tag); (void) refcount_remove(&hdr->b_l1hdr.b_refcnt, arc_onloan_tag); - atomic_add_64(&arc_loaned_bytes, -HDR_GET_LSIZE(hdr)); + arc_loaned_bytes_update(-arc_buf_size(buf)); } /* Detach an arc_buf from a dbuf (tag) */ @@ -2580,7 +2844,7 @@ arc_loan_inuse_buf(arc_buf_t *buf, void *tag) (void) refcount_add(&hdr->b_l1hdr.b_refcnt, arc_onloan_tag); (void) refcount_remove(&hdr->b_l1hdr.b_refcnt, tag); - atomic_add_64(&arc_loaned_bytes, HDR_GET_LSIZE(hdr)); + arc_loaned_bytes_update(arc_buf_size(buf)); } static void @@ -2632,8 +2896,7 @@ arc_share_buf(arc_buf_hdr_t *hdr, arc_buf_t *buf) { arc_state_t *state = hdr->b_l1hdr.b_state; - ASSERT(!HDR_SHARED_DATA(hdr)); - ASSERT(!arc_buf_is_shared(buf)); + ASSERT(arc_can_share(hdr, buf)); ASSERT3P(hdr->b_l1hdr.b_pdata, ==, NULL); ASSERT(MUTEX_HELD(HDR_LOCK(hdr)) || HDR_EMPTY(hdr)); @@ -2645,6 +2908,7 @@ arc_share_buf(arc_buf_hdr_t *hdr, arc_buf_t *buf) refcount_transfer_ownership(&state->arcs_size, buf, hdr); hdr->b_l1hdr.b_pdata = buf->b_data; arc_hdr_set_flags(hdr, ARC_FLAG_SHARED_DATA); + buf->b_flags |= ARC_BUF_FLAG_SHARED; /* * Since we've transferred ownership to the hdr we need @@ -2653,7 +2917,7 @@ arc_share_buf(arc_buf_hdr_t *hdr, arc_buf_t *buf) */ ARCSTAT_INCR(arcstat_compressed_size, arc_hdr_size(hdr)); ARCSTAT_INCR(arcstat_uncompressed_size, HDR_GET_LSIZE(hdr)); - ARCSTAT_INCR(arcstat_overhead_size, -HDR_GET_LSIZE(hdr)); + ARCSTAT_INCR(arcstat_overhead_size, -arc_buf_size(buf)); } static void @@ -2661,7 +2925,6 @@ arc_unshare_buf(arc_buf_hdr_t *hdr, arc_buf_t *buf) { arc_state_t *state = hdr->b_l1hdr.b_state; - ASSERT(HDR_SHARED_DATA(hdr)); ASSERT(arc_buf_is_shared(buf)); ASSERT3P(hdr->b_l1hdr.b_pdata, !=, NULL); ASSERT(MUTEX_HELD(HDR_LOCK(hdr)) || HDR_EMPTY(hdr)); @@ -2673,6 +2936,7 @@ arc_unshare_buf(arc_buf_hdr_t *hdr, arc_buf_t *buf) refcount_transfer_ownership(&state->arcs_size, hdr, buf); arc_hdr_clear_flags(hdr, ARC_FLAG_SHARED_DATA); hdr->b_l1hdr.b_pdata = NULL; + buf->b_flags &= ~ARC_BUF_FLAG_SHARED; /* * Since the buffer is no longer shared between @@ -2680,26 +2944,63 @@ arc_unshare_buf(arc_buf_hdr_t *hdr, arc_buf_t *buf) */ ARCSTAT_INCR(arcstat_compressed_size, -arc_hdr_size(hdr)); ARCSTAT_INCR(arcstat_uncompressed_size, -HDR_GET_LSIZE(hdr)); - ARCSTAT_INCR(arcstat_overhead_size, HDR_GET_LSIZE(hdr)); + ARCSTAT_INCR(arcstat_overhead_size, arc_buf_size(buf)); } /* - * Free up buf->b_data and if 'remove' is set, then pull the - * arc_buf_t off of the the arc_buf_hdr_t's list and free it. + * Remove an arc_buf_t from the hdr's buf list and return the last + * arc_buf_t on the list. If no buffers remain on the list then return + * NULL. + */ +static arc_buf_t * +arc_buf_remove(arc_buf_hdr_t *hdr, arc_buf_t *buf) +{ + ASSERT(HDR_HAS_L1HDR(hdr)); + ASSERT(MUTEX_HELD(HDR_LOCK(hdr)) || HDR_EMPTY(hdr)); + + arc_buf_t **bufp = &hdr->b_l1hdr.b_buf; + arc_buf_t *lastbuf = NULL; + + /* + * Remove the buf from the hdr list and locate the last + * remaining buffer on the list. + */ + while (*bufp != NULL) { + if (*bufp == buf) + *bufp = buf->b_next; + + /* + * If we've removed a buffer in the middle of + * the list then update the lastbuf and update + * bufp. + */ + if (*bufp != NULL) { + lastbuf = *bufp; + bufp = &(*bufp)->b_next; + } + } + buf->b_next = NULL; + ASSERT3P(lastbuf, !=, buf); + IMPLY(hdr->b_l1hdr.b_bufcnt > 0, lastbuf != NULL); + IMPLY(hdr->b_l1hdr.b_bufcnt > 0, hdr->b_l1hdr.b_buf != NULL); + IMPLY(lastbuf != NULL, ARC_BUF_LAST(lastbuf)); + + return (lastbuf); +} + +/* + * Free up buf->b_data and pull the arc_buf_t off of the the arc_buf_hdr_t's + * list and free it. */ static void -arc_buf_destroy_impl(arc_buf_t *buf, boolean_t remove) +arc_buf_destroy_impl(arc_buf_t *buf) { - arc_buf_t **bufp; arc_buf_hdr_t *hdr = buf->b_hdr; - uint64_t size = HDR_GET_LSIZE(hdr); - boolean_t destroyed_buf_is_shared = arc_buf_is_shared(buf); /* - * Free up the data associated with the buf but only - * if we're not sharing this with the hdr. If we are sharing - * it with the hdr, then hdr will have performed the allocation - * so allow it to do the free. + * Free up the data associated with the buf but only if we're not + * sharing this with the hdr. If we are sharing it with the hdr, the + * hdr is responsible for doing the free. */ if (buf->b_data != NULL) { /* @@ -2713,11 +3014,10 @@ arc_buf_destroy_impl(arc_buf_t *buf, boolean_t remove) arc_buf_unwatch(buf); #endif - if (destroyed_buf_is_shared) { - ASSERT(ARC_BUF_LAST(buf)); - ASSERT(HDR_SHARED_DATA(hdr)); + if (arc_buf_is_shared(buf)) { arc_hdr_clear_flags(hdr, ARC_FLAG_SHARED_DATA); } else { + uint64_t size = arc_buf_size(buf); arc_free_data_buf(hdr, buf->b_data, size, buf); ARCSTAT_INCR(arcstat_overhead_size, -size); } @@ -2727,58 +3027,58 @@ arc_buf_destroy_impl(arc_buf_t *buf, boolean_t remove) hdr->b_l1hdr.b_bufcnt -= 1; } - /* only remove the buf if requested */ - if (!remove) - return; - - /* remove the buf from the hdr list */ - arc_buf_t *lastbuf = NULL; - bufp = &hdr->b_l1hdr.b_buf; - while (*bufp != NULL) { - if (*bufp == buf) - *bufp = buf->b_next; + arc_buf_t *lastbuf = arc_buf_remove(hdr, buf); + if (ARC_BUF_SHARED(buf) && !ARC_BUF_COMPRESSED(buf)) { /* - * If we've removed a buffer in the middle of - * the list then update the lastbuf and update - * bufp. + * If the current arc_buf_t is sharing its data buffer with the + * hdr, then reassign the hdr's b_pdata to share it with the new + * buffer at the end of the list. The shared buffer is always + * the last one on the hdr's buffer list. + * + * There is an equivalent case for compressed bufs, but since + * they aren't guaranteed to be the last buf in the list and + * that is an exceedingly rare case, we just allow that space be + * wasted temporarily. */ - if (*bufp != NULL) { - lastbuf = *bufp; - bufp = &(*bufp)->b_next; - } - } - buf->b_next = NULL; - ASSERT3P(lastbuf, !=, buf); - - /* - * If the current arc_buf_t is sharing its data - * buffer with the hdr, then reassign the hdr's - * b_pdata to share it with the new buffer at the end - * of the list. The shared buffer is always the last one - * on the hdr's buffer list. - */ - if (destroyed_buf_is_shared && lastbuf != NULL) { - ASSERT(ARC_BUF_LAST(buf)); - ASSERT(ARC_BUF_LAST(lastbuf)); - VERIFY(!arc_buf_is_shared(lastbuf)); + if (lastbuf != NULL) { + /* Only one buf can be shared at once */ + VERIFY(!arc_buf_is_shared(lastbuf)); + /* hdr is uncompressed so can't have compressed buf */ + VERIFY(!ARC_BUF_COMPRESSED(lastbuf)); - ASSERT3P(hdr->b_l1hdr.b_pdata, !=, NULL); - arc_hdr_free_pdata(hdr); + ASSERT3P(hdr->b_l1hdr.b_pdata, !=, NULL); + arc_hdr_free_pdata(hdr); + /* + * We must setup a new shared block between the + * last buffer and the hdr. The data would have + * been allocated by the arc buf so we need to transfer + * ownership to the hdr since it's now being shared. + */ + arc_share_buf(hdr, lastbuf); + } + } else if (HDR_SHARED_DATA(hdr)) { /* - * We must setup a new shared block between the - * last buffer and the hdr. The data would have - * been allocated by the arc buf so we need to transfer - * ownership to the hdr since it's now being shared. + * Uncompressed shared buffers are always at the end + * of the list. Compressed buffers don't have the + * same requirements. This makes it hard to + * simply assert that the lastbuf is shared so + * we rely on the hdr's compression flags to determine + * if we have a compressed, shared buffer. */ - arc_share_buf(hdr, lastbuf); - } else if (HDR_SHARED_DATA(hdr)) { - ASSERT(arc_buf_is_shared(lastbuf)); + ASSERT3P(lastbuf, !=, NULL); + ASSERT(arc_buf_is_shared(lastbuf) || + HDR_GET_COMPRESS(hdr) != ZIO_COMPRESS_OFF); } - if (hdr->b_l1hdr.b_bufcnt == 0) + /* + * Free the checksum if we're removing the last uncompressed buf from + * this hdr. + */ + if (!arc_hdr_has_uncompressed_buf(hdr)) { arc_cksum_free(hdr); + } /* clean up the buf */ buf->b_hdr = NULL; @@ -2829,11 +3129,10 @@ arc_hdr_free_pdata(arc_buf_hdr_t *hdr) static arc_buf_hdr_t * arc_hdr_alloc(uint64_t spa, int32_t psize, int32_t lsize, - enum zio_compress compress, arc_buf_contents_t type) + enum zio_compress compression_type, arc_buf_contents_t type) { arc_buf_hdr_t *hdr; - ASSERT3U(lsize, >, 0); VERIFY(type == ARC_BUFC_DATA || type == ARC_BUFC_METADATA); hdr = kmem_cache_alloc(hdr_full_cache, KM_PUSHPAGE); @@ -2846,7 +3145,7 @@ arc_hdr_alloc(uint64_t spa, int32_t psize, int32_t lsize, hdr->b_type = type; hdr->b_flags = 0; arc_hdr_set_flags(hdr, arc_bufc_to_flags(type) | ARC_FLAG_HAS_L1HDR); - arc_hdr_set_compress(hdr, compress); + arc_hdr_set_compress(hdr, compression_type); hdr->b_l1hdr.b_state = arc_anon; hdr->b_l1hdr.b_arc_access = 0; @@ -2975,13 +3274,41 @@ arc_hdr_realloc(arc_buf_hdr_t *hdr, kmem_cache_t *old, kmem_cache_t *new) * The buf is returned thawed since we expect the consumer to modify it. */ arc_buf_t * -arc_alloc_buf(spa_t *spa, int32_t size, void *tag, arc_buf_contents_t type) +arc_alloc_buf(spa_t *spa, void *tag, arc_buf_contents_t type, int32_t size) { arc_buf_hdr_t *hdr = arc_hdr_alloc(spa_load_guid(spa), size, size, ZIO_COMPRESS_OFF, type); ASSERT(!MUTEX_HELD(HDR_LOCK(hdr))); - arc_buf_t *buf = arc_buf_alloc_impl(hdr, tag); + + arc_buf_t *buf = NULL; + VERIFY0(arc_buf_alloc_impl(hdr, tag, B_FALSE, B_FALSE, &buf)); arc_buf_thaw(buf); + + return (buf); +} + +/* + * Allocate a compressed buf in the same manner as arc_alloc_buf. Don't use this + * for bufs containing metadata. + */ +arc_buf_t * +arc_alloc_compressed_buf(spa_t *spa, void *tag, uint64_t psize, uint64_t lsize, + enum zio_compress compression_type) +{ + ASSERT3U(lsize, >, 0); + ASSERT3U(lsize, >=, psize); + ASSERT(compression_type > ZIO_COMPRESS_OFF); + ASSERT(compression_type < ZIO_COMPRESS_FUNCTIONS); + + arc_buf_hdr_t *hdr = arc_hdr_alloc(spa_load_guid(spa), psize, lsize, + compression_type, ARC_BUFC_DATA); + ASSERT(!MUTEX_HELD(HDR_LOCK(hdr))); + + arc_buf_t *buf = NULL; + VERIFY0(arc_buf_alloc_impl(hdr, tag, B_TRUE, B_FALSE, &buf)); + arc_buf_thaw(buf); + ASSERT3P(hdr->b_l1hdr.b_freeze_cksum, ==, NULL); + return (buf); } @@ -3050,7 +3377,7 @@ arc_hdr_destroy(arc_buf_hdr_t *hdr) arc_cksum_free(hdr); while (hdr->b_l1hdr.b_buf != NULL) - arc_buf_destroy_impl(hdr->b_l1hdr.b_buf, B_TRUE); + arc_buf_destroy_impl(hdr->b_l1hdr.b_buf); #ifdef ZFS_DEBUG if (hdr->b_l1hdr.b_thawed != NULL) { @@ -3096,16 +3423,10 @@ arc_buf_destroy(arc_buf_t *buf, void* tag) ASSERT3P(buf->b_data, !=, NULL); (void) remove_reference(hdr, hash_lock, tag); - arc_buf_destroy_impl(buf, B_TRUE); + arc_buf_destroy_impl(buf); mutex_exit(hash_lock); } -int32_t -arc_buf_size(arc_buf_t *buf) -{ - return (HDR_GET_LSIZE(buf->b_hdr)); -} - /* * Evict the arc_buf_hdr that is provided as a parameter. The resultant * state of the header is dependent on its state prior to entering this @@ -3151,7 +3472,6 @@ arc_evict_hdr(arc_buf_hdr_t *hdr, kmutex_t *hash_lock) ASSERT3P(hdr->b_l1hdr.b_pdata, ==, NULL); if (HDR_HAS_L2HDR(hdr)) { - ASSERT(hdr->b_l1hdr.b_pdata == NULL); /* * This buffer is cached on the 2nd Level ARC; * don't destroy the header. @@ -3164,7 +3484,6 @@ arc_evict_hdr(arc_buf_hdr_t *hdr, kmutex_t *hash_lock) hdr = arc_hdr_realloc(hdr, hdr_full_cache, hdr_l2only_cache); } else { - ASSERT(hdr->b_l1hdr.b_pdata == NULL); arc_change_state(arc_anon, hdr, hash_lock); arc_hdr_destroy(hdr); } @@ -3193,7 +3512,7 @@ arc_evict_hdr(arc_buf_hdr_t *hdr, kmutex_t *hash_lock) if (buf->b_data != NULL) bytes_evicted += HDR_GET_LSIZE(hdr); mutex_exit(&buf->b_evict_lock); - arc_buf_destroy_impl(buf, B_TRUE); + arc_buf_destroy_impl(buf); } if (HDR_HAS_L2HDR(hdr)) { @@ -3542,7 +3861,7 @@ arc_adjust_meta(void) /* * Similar to the above, we want to evict enough bytes to get us * below the meta limit, but not so much as to drop us below the - * space alloted to the MFU (which is defined as arc_c - arc_p). + * space allotted to the MFU (which is defined as arc_c - arc_p). */ target = MIN((int64_t)(arc_meta_used - arc_meta_limit), (int64_t)(refcount_count(&arc_mfu->arcs_size) - (arc_c - arc_p))); @@ -4596,7 +4915,7 @@ void arc_bcopy_func(zio_t *zio, arc_buf_t *buf, void *arg) { if (zio == NULL || zio->io_error == 0) - bcopy(buf->b_data, arg, HDR_GET_LSIZE(buf->b_hdr)); + bcopy(buf->b_data, arg, arc_buf_size(buf)); arc_buf_destroy(buf, arg); } @@ -4634,10 +4953,11 @@ static void arc_read_done(zio_t *zio) { arc_buf_hdr_t *hdr = zio->io_private; - arc_buf_t *abuf = NULL; /* buffer we're assigning to callback */ kmutex_t *hash_lock = NULL; - arc_callback_t *callback_list, *acb; - int freeable = B_FALSE; + arc_callback_t *callback_list; + arc_callback_t *acb; + boolean_t freeable = B_FALSE; + boolean_t no_zio_error = (zio->io_error == 0); /* * The hdr was inserted into hash-table and removed from lists @@ -4663,7 +4983,7 @@ arc_read_done(zio_t *zio) ASSERT3P(hash_lock, !=, NULL); } - if (zio->io_error == 0) { + if (no_zio_error) { /* byteswap if necessary */ if (BP_SHOULD_BYTESWAP(zio->io_bp)) { if (BP_GET_LEVEL(zio->io_bp) > 0) { @@ -4684,8 +5004,7 @@ arc_read_done(zio_t *zio) callback_list = hdr->b_l1hdr.b_acb; ASSERT3P(callback_list, !=, NULL); - if (hash_lock && zio->io_error == 0 && - hdr->b_l1hdr.b_state == arc_anon) { + if (hash_lock && no_zio_error && hdr->b_l1hdr.b_state == arc_anon) { /* * Only call arc_access on anonymous buffers. This is because * if we've issued an I/O for an evicted buffer, we've already @@ -4695,39 +5014,29 @@ arc_read_done(zio_t *zio) arc_access(hdr, hash_lock); } - /* create copies of the data buffer for the callers */ - for (acb = callback_list; acb; acb = acb->acb_next) { - if (acb->acb_done != NULL) { - /* - * If we're here, then this must be a demand read - * since prefetch requests don't have callbacks. - * If a read request has a callback (i.e. acb_done is - * not NULL), then we decompress the data for the - * first request and clone the rest. This avoids - * having to waste cpu resources decompressing data - * that nobody is explicitly waiting to read. - */ - if (abuf == NULL) { - acb->acb_buf = arc_buf_alloc_impl(hdr, - acb->acb_private); - if (zio->io_error == 0) { - zio->io_error = - arc_decompress(acb->acb_buf); - } - abuf = acb->acb_buf; - } else { - add_reference(hdr, acb->acb_private); - acb->acb_buf = arc_buf_clone(abuf); - } + /* + * If a read request has a callback (i.e. acb_done is not NULL), then we + * make a buf containing the data according to the parameters which were + * passed in. The implementation of arc_buf_alloc_impl() ensures that we + * aren't needlessly decompressing the data multiple times. + */ + int callback_cnt = 0; + for (acb = callback_list; acb != NULL; acb = acb->acb_next) { + if (!acb->acb_done) + continue; + + /* This is a demand read since prefetches don't use callbacks */ + callback_cnt++; + + int error = arc_buf_alloc_impl(hdr, acb->acb_private, + acb->acb_compressed, no_zio_error, &acb->acb_buf); + if (no_zio_error) { + zio->io_error = error; } } hdr->b_l1hdr.b_acb = NULL; arc_hdr_clear_flags(hdr, ARC_FLAG_IO_IN_PROGRESS); - if (abuf == NULL) { - /* - * This buffer didn't have a callback so it must - * be a prefetch. - */ + if (callback_cnt == 0) { ASSERT(HDR_PREFETCH(hdr)); ASSERT0(hdr->b_l1hdr.b_bufcnt); ASSERT3P(hdr->b_l1hdr.b_pdata, !=, NULL); @@ -4736,7 +5045,7 @@ arc_read_done(zio_t *zio) ASSERT(refcount_is_zero(&hdr->b_l1hdr.b_refcnt) || callback_list != NULL); - if (zio->io_error == 0) { + if (no_zio_error) { arc_hdr_verify(hdr, zio->io_bp); } else { arc_hdr_set_flags(hdr, ARC_FLAG_IO_ERROR); @@ -4812,6 +5121,7 @@ arc_read(zio_t *pio, spa_t *spa, const blkptr_t *bp, arc_done_func_t *done, kmutex_t *hash_lock = NULL; zio_t *rzio; uint64_t guid = spa_load_guid(spa); + boolean_t compressed_read = (zio_flags & ZIO_FLAG_RAW) != 0; ASSERT(!BP_IS_EMBEDDED(bp) || BPE_GET_ETYPE(bp) == BP_EMBEDDED_TYPE_DATA); @@ -4876,6 +5186,7 @@ top: KM_SLEEP); acb->acb_done = done; acb->acb_private = private; + acb->acb_compressed = compressed_read; if (pio != NULL) acb->acb_zio_dummy = zio_null(pio, spa, NULL, NULL, NULL, zio_flags); @@ -4910,23 +5221,9 @@ top: } ASSERT(!BP_IS_EMBEDDED(bp) || !BP_IS_HOLE(bp)); - /* - * If this block is already in use, create a new - * copy of the data so that we will be guaranteed - * that arc_release() will always succeed. - */ - buf = hdr->b_l1hdr.b_buf; - if (buf == NULL) { - ASSERT0(refcount_count(&hdr->b_l1hdr.b_refcnt)); - ASSERT3P(hdr->b_l1hdr.b_freeze_cksum, ==, NULL); - buf = arc_buf_alloc_impl(hdr, private); - VERIFY0(arc_decompress(buf)); - } else { - add_reference(hdr, private); - buf = arc_buf_clone(buf); - } - ASSERT3P(buf->b_data, !=, NULL); - + /* Get a buf with the desired data in it. */ + VERIFY0(arc_buf_alloc_impl(hdr, private, + compressed_read, B_TRUE, &buf)); } else if (*arc_flags & ARC_FLAG_PREFETCH && refcount_count(&hdr->b_l1hdr.b_refcnt) == 0) { arc_hdr_set_flags(hdr, ARC_FLAG_PREFETCH); @@ -4986,6 +5283,7 @@ top: ASSERT(!HDR_IO_IN_PROGRESS(hdr)); ASSERT(refcount_is_zero(&hdr->b_l1hdr.b_refcnt)); ASSERT3P(hdr->b_l1hdr.b_buf, ==, NULL); + ASSERT3P(hdr->b_l1hdr.b_freeze_cksum, ==, NULL); /* * This is a delicate dance that we play here. @@ -5026,6 +5324,7 @@ top: acb = kmem_zalloc(sizeof (arc_callback_t), KM_SLEEP); acb->acb_done = done; acb->acb_private = private; + acb->acb_compressed = compressed_read; ASSERT3P(hdr->b_l1hdr.b_acb, ==, NULL); hdr->b_l1hdr.b_acb = acb; @@ -5282,7 +5581,7 @@ arc_release(arc_buf_t *buf, void *tag) ASSERT3P(state, !=, arc_anon); /* this buffer is not on any list */ - ASSERT(refcount_count(&hdr->b_l1hdr.b_refcnt) > 0); + ASSERT3S(refcount_count(&hdr->b_l1hdr.b_refcnt), >, 0); if (HDR_HAS_L2HDR(hdr)) { mutex_enter(&hdr->b_l2hdr.b_dev->l2ad_mtx); @@ -5308,7 +5607,6 @@ arc_release(arc_buf_t *buf, void *tag) */ if (hdr->b_l1hdr.b_bufcnt > 1) { arc_buf_hdr_t *nhdr; - arc_buf_t **bufp; uint64_t spa = hdr->b_spa; uint64_t psize = HDR_GET_PSIZE(hdr); uint64_t lsize = HDR_GET_LSIZE(hdr); @@ -5319,8 +5617,7 @@ arc_release(arc_buf_t *buf, void *tag) ASSERT(hdr->b_l1hdr.b_buf != buf || buf->b_next != NULL); (void) remove_reference(hdr, hash_lock, tag); - if (arc_buf_is_shared(buf)) { - ASSERT(HDR_SHARED_DATA(hdr)); + if (arc_buf_is_shared(buf) && !ARC_BUF_COMPRESSED(buf)) { ASSERT3P(hdr->b_l1hdr.b_buf, !=, buf); ASSERT(ARC_BUF_LAST(buf)); } @@ -5330,60 +5627,58 @@ arc_release(arc_buf_t *buf, void *tag) * a new anonymous hdr. Also find the last buffer * in the hdr's buffer list. */ - arc_buf_t *lastbuf = NULL; - bufp = &hdr->b_l1hdr.b_buf; - while (*bufp != NULL) { - if (*bufp == buf) { - *bufp = buf->b_next; - } - - /* - * If we've removed a buffer in the middle of - * the list then update the lastbuf and update - * bufp. - */ - if (*bufp != NULL) { - lastbuf = *bufp; - bufp = &(*bufp)->b_next; - } - } - buf->b_next = NULL; - ASSERT3P(lastbuf, !=, buf); + arc_buf_t *lastbuf = arc_buf_remove(hdr, buf); ASSERT3P(lastbuf, !=, NULL); /* * If the current arc_buf_t and the hdr are sharing their data - * buffer, then we must stop sharing that block, transfer - * ownership and setup sharing with a new arc_buf_t at the end - * of the hdr's b_buf list. + * buffer, then we must stop sharing that block. */ if (arc_buf_is_shared(buf)) { - ASSERT3P(hdr->b_l1hdr.b_buf, !=, buf); - ASSERT(ARC_BUF_LAST(lastbuf)); VERIFY(!arc_buf_is_shared(lastbuf)); /* * First, sever the block sharing relationship between - * buf and the arc_buf_hdr_t. Then, setup a new - * block sharing relationship with the last buffer - * on the arc_buf_t list. + * buf and the arc_buf_hdr_t. */ arc_unshare_buf(hdr, buf); - arc_share_buf(hdr, lastbuf); + + /* + * Now we need to recreate the hdr's b_pdata. Since we + * have lastbuf handy, we try to share with it, but if + * we can't then we allocate a new b_pdata and copy the + * data from buf into it. + */ + if (arc_can_share(hdr, lastbuf)) { + arc_share_buf(hdr, lastbuf); + } else { + arc_hdr_alloc_pdata(hdr); + bcopy(buf->b_data, hdr->b_l1hdr.b_pdata, psize); + } VERIFY3P(lastbuf->b_data, !=, NULL); } else if (HDR_SHARED_DATA(hdr)) { - ASSERT(arc_buf_is_shared(lastbuf)); + /* + * Uncompressed shared buffers are always at the end + * of the list. Compressed buffers don't have the + * same requirements. This makes it hard to + * simply assert that the lastbuf is shared so + * we rely on the hdr's compression flags to determine + * if we have a compressed, shared buffer. + */ + ASSERT(arc_buf_is_shared(lastbuf) || + HDR_GET_COMPRESS(hdr) != ZIO_COMPRESS_OFF); + ASSERT(!ARC_BUF_SHARED(buf)); } ASSERT3P(hdr->b_l1hdr.b_pdata, !=, NULL); ASSERT3P(state, !=, arc_l2c_only); (void) refcount_remove_many(&state->arcs_size, - HDR_GET_LSIZE(hdr), buf); + arc_buf_size(buf), buf); if (refcount_is_zero(&hdr->b_l1hdr.b_refcnt)) { ASSERT3P(state, !=, arc_l2c_only); (void) refcount_remove_many(&state->arcs_esize[type], - HDR_GET_LSIZE(hdr), buf); + arc_buf_size(buf), buf); } hdr->b_l1hdr.b_bufcnt -= 1; @@ -5412,7 +5707,7 @@ arc_release(arc_buf_t *buf, void *tag) mutex_exit(&buf->b_evict_lock); (void) refcount_add_many(&arc_anon->arcs_size, - HDR_GET_LSIZE(nhdr), buf); + arc_buf_size(buf), buf); } else { mutex_exit(&buf->b_evict_lock); ASSERT(refcount_count(&hdr->b_l1hdr.b_refcnt) == 1); @@ -5468,7 +5763,7 @@ arc_write_ready(zio_t *zio) /* * If we're reexecuting this zio because the pool suspended, then * cleanup any state that was previously set the first time the - * callback as invoked. + * callback was invoked. */ if (zio->io_flags & ZIO_FLAG_REEXECUTED) { arc_cksum_free(hdr); @@ -5477,8 +5772,6 @@ arc_write_ready(zio_t *zio) #endif if (hdr->b_l1hdr.b_pdata != NULL) { if (arc_buf_is_shared(buf)) { - ASSERT(HDR_SHARED_DATA(hdr)); - arc_unshare_buf(hdr, buf); } else { arc_hdr_free_pdata(hdr); @@ -5515,27 +5808,24 @@ arc_write_ready(zio_t *zio) * arc thus the on-disk block may or may not match what we maintain * in the hdr's b_pdata field. */ - if (HDR_GET_COMPRESS(hdr) != ZIO_COMPRESS_OFF) { - ASSERT(BP_GET_COMPRESS(zio->io_bp) != ZIO_COMPRESS_OFF); + if (HDR_GET_COMPRESS(hdr) != ZIO_COMPRESS_OFF && + !ARC_BUF_COMPRESSED(buf)) { + ASSERT3U(BP_GET_COMPRESS(zio->io_bp), !=, ZIO_COMPRESS_OFF); ASSERT3U(psize, >, 0); arc_hdr_alloc_pdata(hdr); bcopy(zio->io_data, hdr->b_l1hdr.b_pdata, psize); } else { ASSERT3P(buf->b_data, ==, zio->io_orig_data); - ASSERT3U(zio->io_orig_size, ==, HDR_GET_LSIZE(hdr)); - ASSERT3U(hdr->b_l1hdr.b_byteswap, ==, DMU_BSWAP_NUMFUNCS); - ASSERT(!HDR_SHARED_DATA(hdr)); - ASSERT(!arc_buf_is_shared(buf)); + ASSERT3U(zio->io_orig_size, ==, arc_buf_size(buf)); ASSERT3U(hdr->b_l1hdr.b_bufcnt, ==, 1); - ASSERT3P(hdr->b_l1hdr.b_pdata, ==, NULL); /* * This hdr is not compressed so we're able to share * the arc_buf_t data buffer with the hdr. */ arc_share_buf(hdr, buf); - VERIFY0(bcmp(zio->io_orig_data, hdr->b_l1hdr.b_pdata, - HDR_GET_LSIZE(hdr))); + ASSERT0(bcmp(zio->io_orig_data, hdr->b_l1hdr.b_pdata, + arc_buf_size(buf))); } arc_hdr_verify(hdr, zio->io_bp); } @@ -5593,7 +5883,7 @@ arc_write_done(zio_t *zio) arc_buf_hdr_t *exists; kmutex_t *hash_lock; - ASSERT(zio->io_error == 0); + ASSERT3U(zio->io_error, ==, 0); arc_cksum_verify(buf); @@ -5663,6 +5953,11 @@ arc_write(zio_t *pio, spa_t *spa, uint64_t txg, blkptr_t *bp, arc_buf_t *buf, ASSERT3U(hdr->b_l1hdr.b_bufcnt, >, 0); if (l2arc) arc_hdr_set_flags(hdr, ARC_FLAG_L2CACHE); + if (ARC_BUF_COMPRESSED(buf)) { + ASSERT3U(zp->zp_compress, !=, ZIO_COMPRESS_OFF); + ASSERT3U(HDR_GET_LSIZE(hdr), !=, arc_buf_size(buf)); + zio_flags |= ZIO_FLAG_RAW; + } callback = kmem_zalloc(sizeof (arc_write_callback_t), KM_SLEEP); callback->awcb_ready = ready; callback->awcb_children_ready = children_ready; @@ -5683,7 +5978,6 @@ arc_write(zio_t *pio, spa_t *spa, uint64_t txg, blkptr_t *bp, arc_buf_t *buf, * buf will take sole ownership of the block. */ if (arc_buf_is_shared(buf)) { - ASSERT(ARC_BUF_LAST(buf)); arc_unshare_buf(hdr, buf); } else { arc_hdr_free_pdata(hdr); @@ -5694,8 +5988,8 @@ arc_write(zio_t *pio, spa_t *spa, uint64_t txg, blkptr_t *bp, arc_buf_t *buf, ASSERT(!arc_buf_is_shared(buf)); ASSERT3P(hdr->b_l1hdr.b_pdata, ==, NULL); - zio = zio_write(pio, spa, txg, bp, buf->b_data, HDR_GET_LSIZE(hdr), zp, - arc_write_ready, + zio = zio_write(pio, spa, txg, bp, buf->b_data, + HDR_GET_LSIZE(hdr), arc_buf_size(buf), zp, arc_write_ready, (children_ready != NULL) ? arc_write_children_ready : NULL, arc_write_physdone, arc_write_done, callback, priority, zio_flags, zb); @@ -5769,6 +6063,10 @@ arc_tempreserve_space(uint64_t reserve, uint64_t txg) * network delays from blocking transactions that are ready to be * assigned to a txg. */ + + /* assert that it has not wrapped around */ + ASSERT3S(atomic_add_64_nv(&arc_loaned_bytes, 0), >=, 0); + anon_size = MAX((int64_t)(refcount_count(&arc_anon->arcs_size) - arc_loaned_bytes), 0); diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c index 5a873a149cbe..da17320321c0 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c @@ -850,7 +850,7 @@ dbuf_loan_arcbuf(dmu_buf_impl_t *db) spa_t *spa = db->db_objset->os_spa; mutex_exit(&db->db_mtx); - abuf = arc_loan_buf(spa, blksz); + abuf = arc_loan_buf(spa, B_FALSE, blksz); bcopy(db->db.db_data, abuf->b_data, blksz); } else { abuf = db->db_buf; @@ -973,8 +973,8 @@ dbuf_read_impl(dmu_buf_impl_t *db, zio_t *zio, uint32_t flags) BP_IS_HOLE(db->db_blkptr)))) { arc_buf_contents_t type = DBUF_GET_BUFC_TYPE(db); - dbuf_set_data(db, arc_alloc_buf(db->db_objset->os_spa, - db->db.db_size, db, type)); + dbuf_set_data(db, arc_alloc_buf(db->db_objset->os_spa, db, type, + db->db.db_size)); bzero(db->db.db_data, db->db.db_size); if (db->db_blkptr != NULL && db->db_level > 0 && @@ -1023,6 +1023,68 @@ dbuf_read_impl(dmu_buf_impl_t *db, zio_t *zio, uint32_t flags) &aflags, &zb); } +/* + * This is our just-in-time copy function. It makes a copy of buffers that + * have been modified in a previous transaction group before we access them in + * the current active group. + * + * This function is used in three places: when we are dirtying a buffer for the + * first time in a txg, when we are freeing a range in a dnode that includes + * this buffer, and when we are accessing a buffer which was received compressed + * and later referenced in a WRITE_BYREF record. + * + * Note that when we are called from dbuf_free_range() we do not put a hold on + * the buffer, we just traverse the active dbuf list for the dnode. + */ +static void +dbuf_fix_old_data(dmu_buf_impl_t *db, uint64_t txg) +{ + dbuf_dirty_record_t *dr = db->db_last_dirty; + + ASSERT(MUTEX_HELD(&db->db_mtx)); + ASSERT(db->db.db_data != NULL); + ASSERT(db->db_level == 0); + ASSERT(db->db.db_object != DMU_META_DNODE_OBJECT); + + if (dr == NULL || + (dr->dt.dl.dr_data != + ((db->db_blkid == DMU_BONUS_BLKID) ? db->db.db_data : db->db_buf))) + return; + + /* + * If the last dirty record for this dbuf has not yet synced + * and its referencing the dbuf data, either: + * reset the reference to point to a new copy, + * or (if there a no active holders) + * just null out the current db_data pointer. + */ + ASSERT(dr->dr_txg >= txg - 2); + if (db->db_blkid == DMU_BONUS_BLKID) { + /* Note that the data bufs here are zio_bufs */ + dr->dt.dl.dr_data = zio_buf_alloc(DN_MAX_BONUSLEN); + arc_space_consume(DN_MAX_BONUSLEN, ARC_SPACE_OTHER); + bcopy(db->db.db_data, dr->dt.dl.dr_data, DN_MAX_BONUSLEN); + } else if (refcount_count(&db->db_holds) > db->db_dirtycnt) { + int size = arc_buf_size(db->db_buf); + arc_buf_contents_t type = DBUF_GET_BUFC_TYPE(db); + spa_t *spa = db->db_objset->os_spa; + enum zio_compress compress_type = + arc_get_compression(db->db_buf); + + if (compress_type == ZIO_COMPRESS_OFF) { + dr->dt.dl.dr_data = arc_alloc_buf(spa, db, type, size); + } else { + ASSERT3U(type, ==, ARC_BUFC_DATA); + dr->dt.dl.dr_data = arc_alloc_compressed_buf(spa, db, + size, arc_buf_lsize(db->db_buf), compress_type); + } + bcopy(db->db.db_data, dr->dt.dl.dr_data->b_data, size); + } else { + db->db_buf = NULL; + dbuf_clear_data(db); + } +} + int dbuf_read(dmu_buf_impl_t *db, zio_t *zio, uint32_t flags) { @@ -1051,6 +1113,18 @@ dbuf_read(dmu_buf_impl_t *db, zio_t *zio, uint32_t flags) mutex_enter(&db->db_mtx); if (db->db_state == DB_CACHED) { + /* + * If the arc buf is compressed, we need to decompress it to + * read the data. This could happen during the "zfs receive" of + * a stream which is compressed and deduplicated. + */ + if (db->db_buf != NULL && + arc_get_compression(db->db_buf) != ZIO_COMPRESS_OFF) { + dbuf_fix_old_data(db, + spa_syncing_txg(dmu_objset_spa(db->db_objset))); + err = arc_decompress(db->db_buf); + dbuf_set_data(db, db->db_buf); + } mutex_exit(&db->db_mtx); if (prefetch) dmu_zfetch(&dn->dn_zfetch, db->db_blkid, 1, B_TRUE); @@ -1126,7 +1200,7 @@ dbuf_noread(dmu_buf_impl_t *db) ASSERT(db->db_buf == NULL); ASSERT(db->db.db_data == NULL); - dbuf_set_data(db, arc_alloc_buf(spa, db->db.db_size, db, type)); + dbuf_set_data(db, arc_alloc_buf(spa, db, type, db->db.db_size)); db->db_state = DB_FILL; } else if (db->db_state == DB_NOFILL) { dbuf_clear_data(db); @@ -1136,60 +1210,6 @@ dbuf_noread(dmu_buf_impl_t *db) mutex_exit(&db->db_mtx); } -/* - * This is our just-in-time copy function. It makes a copy of - * buffers, that have been modified in a previous transaction - * group, before we modify them in the current active group. - * - * This function is used in two places: when we are dirtying a - * buffer for the first time in a txg, and when we are freeing - * a range in a dnode that includes this buffer. - * - * Note that when we are called from dbuf_free_range() we do - * not put a hold on the buffer, we just traverse the active - * dbuf list for the dnode. - */ -static void -dbuf_fix_old_data(dmu_buf_impl_t *db, uint64_t txg) -{ - dbuf_dirty_record_t *dr = db->db_last_dirty; - - ASSERT(MUTEX_HELD(&db->db_mtx)); - ASSERT(db->db.db_data != NULL); - ASSERT(db->db_level == 0); - ASSERT(db->db.db_object != DMU_META_DNODE_OBJECT); - - if (dr == NULL || - (dr->dt.dl.dr_data != - ((db->db_blkid == DMU_BONUS_BLKID) ? db->db.db_data : db->db_buf))) - return; - - /* - * If the last dirty record for this dbuf has not yet synced - * and its referencing the dbuf data, either: - * reset the reference to point to a new copy, - * or (if there a no active holders) - * just null out the current db_data pointer. - */ - ASSERT(dr->dr_txg >= txg - 2); - if (db->db_blkid == DMU_BONUS_BLKID) { - /* Note that the data bufs here are zio_bufs */ - dr->dt.dl.dr_data = zio_buf_alloc(DN_MAX_BONUSLEN); - arc_space_consume(DN_MAX_BONUSLEN, ARC_SPACE_OTHER); - bcopy(db->db.db_data, dr->dt.dl.dr_data, DN_MAX_BONUSLEN); - } else if (refcount_count(&db->db_holds) > db->db_dirtycnt) { - int size = db->db.db_size; - arc_buf_contents_t type = DBUF_GET_BUFC_TYPE(db); - spa_t *spa = db->db_objset->os_spa; - - dr->dt.dl.dr_data = arc_alloc_buf(spa, size, db, type); - bcopy(db->db.db_data, dr->dt.dl.dr_data->b_data, size); - } else { - db->db_buf = NULL; - dbuf_clear_data(db); - } -} - void dbuf_unoverride(dbuf_dirty_record_t *dr) { @@ -1390,7 +1410,7 @@ dbuf_new_size(dmu_buf_impl_t *db, int size, dmu_tx_t *tx) dmu_buf_will_dirty(&db->db, tx); /* create the data buffer for the new block */ - buf = arc_alloc_buf(dn->dn_objset->os_spa, size, db, type); + buf = arc_alloc_buf(dn->dn_objset->os_spa, db, type, size); /* copy old block data to the new block */ obuf = db->db_buf; @@ -1984,9 +2004,9 @@ dbuf_assign_arcbuf(dmu_buf_impl_t *db, arc_buf_t *buf, dmu_tx_t *tx) ASSERT(!refcount_is_zero(&db->db_holds)); ASSERT(db->db_blkid != DMU_BONUS_BLKID); ASSERT(db->db_level == 0); - ASSERT(DBUF_GET_BUFC_TYPE(db) == ARC_BUFC_DATA); + ASSERT3U(dbuf_is_metadata(db), ==, arc_is_metadata(buf)); ASSERT(buf != NULL); - ASSERT(arc_buf_size(buf) == db->db.db_size); + ASSERT(arc_buf_lsize(buf) == db->db.db_size); ASSERT(tx->tx_txg != 0); arc_return_buf(buf, db); @@ -2583,8 +2603,8 @@ top: arc_buf_contents_t type = DBUF_GET_BUFC_TYPE(db); dbuf_set_data(db, - arc_alloc_buf(dn->dn_objset->os_spa, - db->db.db_size, db, type)); + arc_alloc_buf(dn->dn_objset->os_spa, db, type, + db->db.db_size)); bcopy(dr->dt.dl.dr_data->b_data, db->db.db_data, db->db.db_size); } @@ -3133,10 +3153,19 @@ dbuf_sync_leaf(dbuf_dirty_record_t *dr, dmu_tx_t *tx) * objects only modified in the syncing context (e.g. * DNONE_DNODE blocks). */ - int blksz = arc_buf_size(*datap); + int psize = arc_buf_size(*datap); arc_buf_contents_t type = DBUF_GET_BUFC_TYPE(db); - *datap = arc_alloc_buf(os->os_spa, blksz, db, type); - bcopy(db->db.db_data, (*datap)->b_data, blksz); + enum zio_compress compress_type = arc_get_compression(*datap); + + if (compress_type == ZIO_COMPRESS_OFF) { + *datap = arc_alloc_buf(os->os_spa, db, type, psize); + } else { + ASSERT3U(type, ==, ARC_BUFC_DATA); + int lsize = arc_buf_lsize(*datap); + *datap = arc_alloc_compressed_buf(os->os_spa, db, + psize, lsize, compress_type); + } + bcopy(db->db.db_data, (*datap)->b_data, psize); } db->db_data_pending = dr; @@ -3541,7 +3570,9 @@ dbuf_write(dbuf_dirty_record_t *dr, arc_buf_t *data, dmu_tx_t *tx) wp_flag = WP_SPILL; wp_flag |= (db->db_state == DB_NOFILL) ? WP_NOFILL : 0; - dmu_write_policy(os, dn, db->db_level, wp_flag, &zp); + dmu_write_policy(os, dn, db->db_level, wp_flag, + (data != NULL && arc_get_compression(data) != ZIO_COMPRESS_OFF) ? + arc_get_compression(data) : ZIO_COMPRESS_INHERIT, &zp); DB_DNODE_EXIT(db); /* @@ -3560,8 +3591,8 @@ dbuf_write(dbuf_dirty_record_t *dr, arc_buf_t *data, dmu_tx_t *tx) */ void *contents = (data != NULL) ? data->b_data : NULL; - dr->dr_zio = zio_write(zio, os->os_spa, txg, - &dr->dr_bp_copy, contents, db->db.db_size, &zp, + dr->dr_zio = zio_write(zio, os->os_spa, txg, &dr->dr_bp_copy, + contents, db->db.db_size, db->db.db_size, &zp, dbuf_write_override_ready, NULL, NULL, dbuf_write_override_done, dr, ZIO_PRIORITY_ASYNC_WRITE, ZIO_FLAG_MUSTSUCCEED, &zb); @@ -3574,7 +3605,7 @@ dbuf_write(dbuf_dirty_record_t *dr, arc_buf_t *data, dmu_tx_t *tx) ASSERT(zp.zp_checksum == ZIO_CHECKSUM_OFF || zp.zp_checksum == ZIO_CHECKSUM_NOPARITY); dr->dr_zio = zio_write(zio, os->os_spa, txg, - &dr->dr_bp_copy, NULL, db->db.db_size, &zp, + &dr->dr_bp_copy, NULL, db->db.db_size, db->db.db_size, &zp, dbuf_write_nofill_ready, NULL, NULL, dbuf_write_nofill_done, db, ZIO_PRIORITY_ASYNC_WRITE, diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c index 6faaf7df82d3..649983a98909 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c @@ -1069,7 +1069,7 @@ dmu_xuio_add(xuio_t *xuio, arc_buf_t *abuf, offset_t off, size_t n) int i = priv->next++; ASSERT(i < priv->cnt); - ASSERT(off + n <= arc_buf_size(abuf)); + ASSERT(off + n <= arc_buf_lsize(abuf)); iov = uio->uio_iov + i; iov->iov_base = (char *)abuf->b_data + off; iov->iov_len = n; @@ -1487,7 +1487,7 @@ dmu_request_arcbuf(dmu_buf_t *handle, int size) { dmu_buf_impl_t *db = (dmu_buf_impl_t *)handle; - return (arc_loan_buf(db->db_objset->os_spa, size)); + return (arc_loan_buf(db->db_objset->os_spa, B_FALSE, size)); } /* @@ -1512,7 +1512,7 @@ dmu_assign_arcbuf(dmu_buf_t *handle, uint64_t offset, arc_buf_t *buf, dmu_buf_impl_t *dbuf = (dmu_buf_impl_t *)handle; dnode_t *dn; dmu_buf_impl_t *db; - uint32_t blksz = (uint32_t)arc_buf_size(buf); + uint32_t blksz = (uint32_t)arc_buf_lsize(buf); uint64_t blkid; DB_DNODE_ENTER(dbuf); @@ -1525,12 +1525,9 @@ dmu_assign_arcbuf(dmu_buf_t *handle, uint64_t offset, arc_buf_t *buf, /* * We can only assign if the offset is aligned, the arc buf is the - * same size as the dbuf, and the dbuf is not metadata. It - * can't be metadata because the loaned arc buf comes from the - * user-data kmem arena. + * same size as the dbuf, and the dbuf is not metadata. */ - if (offset == db->db.db_offset && blksz == db->db.db_size && - DBUF_GET_BUFC_TYPE(db) == ARC_BUFC_DATA) { + if (offset == db->db.db_offset && blksz == db->db.db_size) { #ifdef _KERNEL curthread->td_ru.ru_oublock++; #ifdef RACCT @@ -1548,6 +1545,10 @@ dmu_assign_arcbuf(dmu_buf_t *handle, uint64_t offset, arc_buf_t *buf, objset_t *os; uint64_t object; + /* compressed bufs must always be assignable to their dbuf */ + ASSERT3U(arc_get_compression(buf), ==, ZIO_COMPRESS_OFF); + ASSERT(!(buf->b_flags & ARC_BUF_FLAG_COMPRESSED)); + DB_DNODE_ENTER(dbuf); dn = DB_DNODE(dbuf); os = dn->dn_objset; @@ -1697,8 +1698,8 @@ dmu_sync_late_arrival(zio_t *pio, objset_t *os, dmu_sync_cb_t *done, zgd_t *zgd, dsa->dsa_zgd = zgd; dsa->dsa_tx = tx; - zio_nowait(zio_write(pio, os->os_spa, dmu_tx_get_txg(tx), - zgd->zgd_bp, zgd->zgd_db->db_data, zgd->zgd_db->db_size, + zio_nowait(zio_write(pio, os->os_spa, dmu_tx_get_txg(tx), zgd->zgd_bp, + zgd->zgd_db->db_data, zgd->zgd_db->db_size, zgd->zgd_db->db_size, zp, dmu_sync_late_arrival_ready, NULL, NULL, dmu_sync_late_arrival_done, dsa, ZIO_PRIORITY_SYNC_WRITE, ZIO_FLAG_CANFAIL, zb)); @@ -1752,7 +1753,8 @@ dmu_sync(zio_t *pio, uint64_t txg, dmu_sync_cb_t *done, zgd_t *zgd) DB_DNODE_ENTER(db); dn = DB_DNODE(db); - dmu_write_policy(os, dn, db->db_level, WP_DMU_SYNC, &zp); + dmu_write_policy(os, dn, db->db_level, WP_DMU_SYNC, + ZIO_COMPRESS_INHERIT, &zp); DB_DNODE_EXIT(db); /* @@ -1924,7 +1926,8 @@ SYSCTL_INT(_vfs_zfs, OID_AUTO, mdcomp_disable, CTLFLAG_RWTUN, int zfs_redundant_metadata_most_ditto_level = 2; void -dmu_write_policy(objset_t *os, dnode_t *dn, int level, int wp, zio_prop_t *zp) +dmu_write_policy(objset_t *os, dnode_t *dn, int level, int wp, + enum zio_compress override_compress, zio_prop_t *zp) { dmu_object_type_t type = dn ? dn->dn_type : DMU_OT_OBJSET; boolean_t ismd = (level > 0 || DMU_OT_IS_METADATA(type) || @@ -1936,6 +1939,10 @@ dmu_write_policy(objset_t *os, dnode_t *dn, int level, int wp, zio_prop_t *zp) boolean_t nopwrite = B_FALSE; boolean_t dedup_verify = os->os_dedup_verify; int copies = os->os_copies; + boolean_t lz4_ac = spa_feature_is_active(os->os_spa, + SPA_FEATURE_LZ4_COMPRESS); + + IMPLY(override_compress == ZIO_COMPRESS_LZ4, lz4_ac); /* * We maintain different write policies for each of the following @@ -2023,7 +2030,16 @@ dmu_write_policy(objset_t *os, dnode_t *dn, int level, int wp, zio_prop_t *zp) } zp->zp_checksum = checksum; - zp->zp_compress = compress; + + /* + * If we're writing a pre-compressed buffer, the compression type we use + * must match the data. If it hasn't been compressed yet, then we should + * use the value dictated by the policies above. + */ + zp->zp_compress = override_compress != ZIO_COMPRESS_INHERIT + ? override_compress : compress; + ASSERT3U(zp->zp_compress, !=, ZIO_COMPRESS_INHERIT); + zp->zp_type = (wp & WP_SPILL) ? dn->dn_bonustype : type; zp->zp_level = level; zp->zp_copies = MIN(copies, spa_max_replication(os->os_spa)); diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c index 0734c1b42b32..3ed68f713354 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c @@ -339,9 +339,8 @@ dmu_objset_open_impl(spa_t *spa, dsl_dataset_t *ds, blkptr_t *bp, /* Increase the blocksize if we are permitted. */ if (spa_version(spa) >= SPA_VERSION_USERSPACE && arc_buf_size(os->os_phys_buf) < sizeof (objset_phys_t)) { - arc_buf_t *buf = arc_alloc_buf(spa, - sizeof (objset_phys_t), &os->os_phys_buf, - ARC_BUFC_METADATA); + arc_buf_t *buf = arc_alloc_buf(spa, &os->os_phys_buf, + ARC_BUFC_METADATA, sizeof (objset_phys_t)); bzero(buf->b_data, sizeof (objset_phys_t)); bcopy(os->os_phys_buf->b_data, buf->b_data, arc_buf_size(os->os_phys_buf)); @@ -354,8 +353,8 @@ dmu_objset_open_impl(spa_t *spa, dsl_dataset_t *ds, blkptr_t *bp, } else { int size = spa_version(spa) >= SPA_VERSION_USERSPACE ? sizeof (objset_phys_t) : OBJSET_OLD_PHYS_SIZE; - os->os_phys_buf = arc_alloc_buf(spa, size, - &os->os_phys_buf, ARC_BUFC_METADATA); + os->os_phys_buf = arc_alloc_buf(spa, &os->os_phys_buf, + ARC_BUFC_METADATA, size); os->os_phys = os->os_phys_buf->b_data; bzero(os->os_phys, size); } @@ -1138,7 +1137,7 @@ dmu_objset_sync(objset_t *os, zio_t *pio, dmu_tx_t *tx) ZB_ROOT_OBJECT, ZB_ROOT_LEVEL, ZB_ROOT_BLKID); arc_release(os->os_phys_buf, &os->os_phys_buf); - dmu_write_policy(os, NULL, 0, 0, &zp); + dmu_write_policy(os, NULL, 0, 0, ZIO_COMPRESS_INHERIT, &zp); zio = arc_write(pio, os->os_spa, tx->tx_txg, blkptr_copy, os->os_phys_buf, DMU_OS_IS_L2CACHEABLE(os), diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c index 28c6c4859c05..6399267084c8 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c @@ -274,8 +274,10 @@ dump_free(dmu_sendarg_t *dsp, uint64_t object, uint64_t offset, static int dump_write(dmu_sendarg_t *dsp, dmu_object_type_t type, - uint64_t object, uint64_t offset, int blksz, const blkptr_t *bp, void *data) + uint64_t object, uint64_t offset, int lsize, int psize, const blkptr_t *bp, + void *data) { + uint64_t payload_size; struct drr_write *drrw = &(dsp->dsa_drr->drr_u.drr_write); /* @@ -286,7 +288,7 @@ dump_write(dmu_sendarg_t *dsp, dmu_object_type_t type, (object == dsp->dsa_last_data_object && offset > dsp->dsa_last_data_offset)); dsp->dsa_last_data_object = object; - dsp->dsa_last_data_offset = offset + blksz - 1; + dsp->dsa_last_data_offset = offset + lsize - 1; /* * If there is any kind of pending aggregation (currently either @@ -305,8 +307,26 @@ dump_write(dmu_sendarg_t *dsp, dmu_object_type_t type, drrw->drr_object = object; drrw->drr_type = type; drrw->drr_offset = offset; - drrw->drr_length = blksz; drrw->drr_toguid = dsp->dsa_toguid; + drrw->drr_logical_size = lsize; + + /* only set the compression fields if the buf is compressed */ + if (lsize != psize) { + ASSERT(dsp->dsa_featureflags & DMU_BACKUP_FEATURE_COMPRESSED); + ASSERT(!BP_IS_EMBEDDED(bp)); + ASSERT(!BP_SHOULD_BYTESWAP(bp)); + ASSERT(!DMU_OT_IS_METADATA(BP_GET_TYPE(bp))); + ASSERT3U(BP_GET_COMPRESS(bp), !=, ZIO_COMPRESS_OFF); + ASSERT3S(psize, >, 0); + ASSERT3S(lsize, >=, psize); + + drrw->drr_compressiontype = BP_GET_COMPRESS(bp); + drrw->drr_compressed_size = psize; + payload_size = drrw->drr_compressed_size; + } else { + payload_size = drrw->drr_logical_size; + } + if (bp == NULL || BP_IS_EMBEDDED(bp)) { /* * There's no pre-computed checksum for partial-block @@ -326,7 +346,7 @@ dump_write(dmu_sendarg_t *dsp, dmu_object_type_t type, drrw->drr_key.ddk_cksum = bp->blk_cksum; } - if (dump_record(dsp, data, blksz) != 0) + if (dump_record(dsp, data, payload_size) != 0) return (SET_ERROR(EINTR)); return (0); } @@ -501,7 +521,7 @@ backup_do_embed(dmu_sendarg_t *dsp, const blkptr_t *bp) * Compression function must be legacy, or explicitly enabled. */ if ((BP_GET_COMPRESS(bp) >= ZIO_COMPRESS_LEGACY_FUNCTIONS && - !(dsp->dsa_featureflags & DMU_BACKUP_FEATURE_EMBED_DATA_LZ4))) + !(dsp->dsa_featureflags & DMU_BACKUP_FEATURE_LZ4))) return (B_FALSE); /* @@ -665,18 +685,49 @@ do_dump(dmu_sendarg_t *dsa, struct send_block_record *data) int blksz = dblkszsec << SPA_MINBLOCKSHIFT; uint64_t offset; + /* + * If we have large blocks stored on disk but the send flags + * don't allow us to send large blocks, we split the data from + * the arc buf into chunks. + */ + boolean_t split_large_blocks = blksz > SPA_OLD_MAXBLOCKSIZE && + !(dsa->dsa_featureflags & DMU_BACKUP_FEATURE_LARGE_BLOCKS); + /* + * We should only request compressed data from the ARC if all + * the following are true: + * - stream compression was requested + * - we aren't splitting large blocks into smaller chunks + * - the data won't need to be byteswapped before sending + * - this isn't an embedded block + * - this isn't metadata (if receiving on a different endian + * system it can be byteswapped more easily) + */ + boolean_t request_compressed = + (dsa->dsa_featureflags & DMU_BACKUP_FEATURE_COMPRESSED) && + !split_large_blocks && !BP_SHOULD_BYTESWAP(bp) && + !BP_IS_EMBEDDED(bp) && !DMU_OT_IS_METADATA(BP_GET_TYPE(bp)); + + ASSERT0(zb->zb_level); + ASSERT(zb->zb_object > dsa->dsa_resume_object || + (zb->zb_object == dsa->dsa_resume_object && + zb->zb_blkid * blksz >= dsa->dsa_resume_offset)); + ASSERT0(zb->zb_level); ASSERT(zb->zb_object > dsa->dsa_resume_object || (zb->zb_object == dsa->dsa_resume_object && zb->zb_blkid * blksz >= dsa->dsa_resume_offset)); + ASSERT3U(blksz, ==, BP_GET_LSIZE(bp)); + + enum zio_flag zioflags = ZIO_FLAG_CANFAIL; + if (request_compressed) + zioflags |= ZIO_FLAG_RAW; if (arc_read(NULL, spa, bp, arc_getbuf_func, &abuf, - ZIO_PRIORITY_ASYNC_READ, ZIO_FLAG_CANFAIL, - &aflags, zb) != 0) { + ZIO_PRIORITY_ASYNC_READ, zioflags, &aflags, zb) != 0) { if (zfs_send_corrupt_data) { /* Send a block filled with 0x"zfs badd bloc" */ - abuf = arc_alloc_buf(spa, blksz, &abuf, - ARC_BUFC_DATA); + abuf = arc_alloc_buf(spa, &abuf, ARC_BUFC_DATA, + blksz); uint64_t *ptr; for (ptr = abuf->b_data; (char *)ptr < (char *)abuf->b_data + blksz; @@ -689,21 +740,21 @@ do_dump(dmu_sendarg_t *dsa, struct send_block_record *data) offset = zb->zb_blkid * blksz; - if (!(dsa->dsa_featureflags & - DMU_BACKUP_FEATURE_LARGE_BLOCKS) && - blksz > SPA_OLD_MAXBLOCKSIZE) { + if (split_large_blocks) { + ASSERT3U(arc_get_compression(abuf), ==, + ZIO_COMPRESS_OFF); char *buf = abuf->b_data; while (blksz > 0 && err == 0) { int n = MIN(blksz, SPA_OLD_MAXBLOCKSIZE); err = dump_write(dsa, type, zb->zb_object, - offset, n, NULL, buf); + offset, n, n, NULL, buf); offset += n; buf += n; blksz -= n; } } else { - err = dump_write(dsa, type, zb->zb_object, - offset, blksz, bp, abuf->b_data); + err = dump_write(dsa, type, zb->zb_object, offset, + blksz, arc_buf_size(abuf), bp, abuf->b_data); } arc_buf_destroy(abuf, &abuf); } @@ -730,9 +781,9 @@ get_next_record(bqueue_t *bq, struct send_block_record *data) */ static int dmu_send_impl(void *tag, dsl_pool_t *dp, dsl_dataset_t *to_ds, - zfs_bookmark_phys_t *ancestor_zb, - boolean_t is_clone, boolean_t embedok, boolean_t large_block_ok, int outfd, - uint64_t resumeobj, uint64_t resumeoff, + zfs_bookmark_phys_t *ancestor_zb, boolean_t is_clone, + boolean_t embedok, boolean_t large_block_ok, boolean_t compressok, + int outfd, uint64_t resumeobj, uint64_t resumeoff, #ifdef illumos vnode_t *vp, offset_t *off) #else @@ -779,7 +830,15 @@ dmu_send_impl(void *tag, dsl_pool_t *dp, dsl_dataset_t *to_ds, spa_feature_is_active(dp->dp_spa, SPA_FEATURE_EMBEDDED_DATA)) { featureflags |= DMU_BACKUP_FEATURE_EMBED_DATA; if (spa_feature_is_active(dp->dp_spa, SPA_FEATURE_LZ4_COMPRESS)) - featureflags |= DMU_BACKUP_FEATURE_EMBED_DATA_LZ4; + featureflags |= DMU_BACKUP_FEATURE_LZ4; + } + if (compressok) { + featureflags |= DMU_BACKUP_FEATURE_COMPRESSED; + } + if ((featureflags & + (DMU_BACKUP_FEATURE_EMBED_DATA | DMU_BACKUP_FEATURE_COMPRESSED)) != + 0 && spa_feature_is_active(dp->dp_spa, SPA_FEATURE_LZ4_COMPRESS)) { + featureflags |= DMU_BACKUP_FEATURE_LZ4; } if (resumeobj != 0 || resumeoff != 0) { @@ -929,7 +988,7 @@ out: int dmu_send_obj(const char *pool, uint64_t tosnap, uint64_t fromsnap, - boolean_t embedok, boolean_t large_block_ok, + boolean_t embedok, boolean_t large_block_ok, boolean_t compressok, #ifdef illumos int outfd, vnode_t *vp, offset_t *off) #else @@ -970,10 +1029,10 @@ dmu_send_obj(const char *pool, uint64_t tosnap, uint64_t fromsnap, is_clone = (fromds->ds_dir != ds->ds_dir); dsl_dataset_rele(fromds, FTAG); err = dmu_send_impl(FTAG, dp, ds, &zb, is_clone, - embedok, large_block_ok, outfd, 0, 0, fp, off); + embedok, large_block_ok, compressok, outfd, 0, 0, fp, off); } else { err = dmu_send_impl(FTAG, dp, ds, NULL, B_FALSE, - embedok, large_block_ok, outfd, 0, 0, fp, off); + embedok, large_block_ok, compressok, outfd, 0, 0, fp, off); } dsl_dataset_rele(ds, FTAG); return (err); @@ -981,7 +1040,8 @@ dmu_send_obj(const char *pool, uint64_t tosnap, uint64_t fromsnap, int dmu_send(const char *tosnap, const char *fromsnap, boolean_t embedok, - boolean_t large_block_ok, int outfd, uint64_t resumeobj, uint64_t resumeoff, + boolean_t large_block_ok, boolean_t compressok, int outfd, + uint64_t resumeobj, uint64_t resumeoff, #ifdef illumos vnode_t *vp, offset_t *off) #else @@ -1053,11 +1113,11 @@ dmu_send(const char *tosnap, const char *fromsnap, boolean_t embedok, return (err); } err = dmu_send_impl(FTAG, dp, ds, &zb, is_clone, - embedok, large_block_ok, + embedok, large_block_ok, compressok, outfd, resumeobj, resumeoff, fp, off); } else { err = dmu_send_impl(FTAG, dp, ds, NULL, B_FALSE, - embedok, large_block_ok, + embedok, large_block_ok, compressok, outfd, resumeobj, resumeoff, fp, off); } if (owned) @@ -1068,33 +1128,45 @@ dmu_send(const char *tosnap, const char *fromsnap, boolean_t embedok, } static int -dmu_adjust_send_estimate_for_indirects(dsl_dataset_t *ds, uint64_t size, - uint64_t *sizep) +dmu_adjust_send_estimate_for_indirects(dsl_dataset_t *ds, uint64_t uncompressed, + uint64_t compressed, boolean_t stream_compressed, uint64_t *sizep) { int err; + uint64_t size; /* * Assume that space (both on-disk and in-stream) is dominated by * data. We will adjust for indirect blocks and the copies property, * but ignore per-object space used (eg, dnodes and DRR_OBJECT records). */ + uint64_t recordsize; + uint64_t record_count; + + /* Assume all (uncompressed) blocks are recordsize. */ + err = dsl_prop_get_int_ds(ds, zfs_prop_to_name(ZFS_PROP_RECORDSIZE), + &recordsize); + if (err != 0) + return (err); + record_count = uncompressed / recordsize; + + /* + * If we're estimating a send size for a compressed stream, use the + * compressed data size to estimate the stream size. Otherwise, use the + * uncompressed data size. + */ + size = stream_compressed ? compressed : uncompressed; /* * Subtract out approximate space used by indirect blocks. * Assume most space is used by data blocks (non-indirect, non-dnode). - * Assume all blocks are recordsize. Assume ditto blocks and - * internal fragmentation counter out compression. + * Assume no ditto blocks or internal fragmentation. * * Therefore, space used by indirect blocks is sizeof(blkptr_t) per - * block, which we observe in practice. + * block. */ - uint64_t recordsize; - err = dsl_prop_get_int_ds(ds, "recordsize", &recordsize); - if (err != 0) - return (err); - size -= size / recordsize * sizeof (blkptr_t); + size -= record_count * sizeof (blkptr_t); /* Add in the space for the record associated with each block. */ - size += size / recordsize * sizeof (dmu_replay_record_t); + size += record_count * sizeof (dmu_replay_record_t); *sizep = size; @@ -1102,11 +1174,12 @@ dmu_adjust_send_estimate_for_indirects(dsl_dataset_t *ds, uint64_t size, } int -dmu_send_estimate(dsl_dataset_t *ds, dsl_dataset_t *fromds, uint64_t *sizep) +dmu_send_estimate(dsl_dataset_t *ds, dsl_dataset_t *fromds, + boolean_t stream_compressed, uint64_t *sizep) { dsl_pool_t *dp = ds->ds_dir->dd_pool; int err; - uint64_t size; + uint64_t uncomp, comp; ASSERT(dsl_pool_config_held(dp)); @@ -1125,33 +1198,41 @@ dmu_send_estimate(dsl_dataset_t *ds, dsl_dataset_t *fromds, uint64_t *sizep) if (fromds != NULL && !dsl_dataset_is_before(ds, fromds, 0)) return (SET_ERROR(EXDEV)); - /* Get uncompressed size estimate of changed data. */ + /* Get compressed and uncompressed size estimates of changed data. */ if (fromds == NULL) { - size = dsl_dataset_phys(ds)->ds_uncompressed_bytes; + uncomp = dsl_dataset_phys(ds)->ds_uncompressed_bytes; + comp = dsl_dataset_phys(ds)->ds_compressed_bytes; } else { - uint64_t used, comp; + uint64_t used; err = dsl_dataset_space_written(fromds, ds, - &used, &comp, &size); + &used, &comp, &uncomp); if (err != 0) return (err); } - err = dmu_adjust_send_estimate_for_indirects(ds, size, sizep); + err = dmu_adjust_send_estimate_for_indirects(ds, uncomp, comp, + stream_compressed, sizep); return (err); } +struct calculate_send_arg { + uint64_t uncompressed; + uint64_t compressed; +}; + /* * Simple callback used to traverse the blocks of a snapshot and sum their - * uncompressed size + * uncompressed and compressed sizes. */ /* ARGSUSED */ static int dmu_calculate_send_traversal(spa_t *spa, zilog_t *zilog, const blkptr_t *bp, const zbookmark_phys_t *zb, const dnode_phys_t *dnp, void *arg) { - uint64_t *spaceptr = arg; + struct calculate_send_arg *space = arg; if (bp != NULL && !BP_IS_HOLE(bp)) { - *spaceptr += BP_GET_UCSIZE(bp); + space->uncompressed += BP_GET_UCSIZE(bp); + space->compressed += BP_GET_PSIZE(bp); } return (0); } @@ -1163,16 +1244,16 @@ dmu_calculate_send_traversal(spa_t *spa, zilog_t *zilog, const blkptr_t *bp, */ int dmu_send_estimate_from_txg(dsl_dataset_t *ds, uint64_t from_txg, - uint64_t *sizep) + boolean_t stream_compressed, uint64_t *sizep) { dsl_pool_t *dp = ds->ds_dir->dd_pool; int err; - uint64_t size = 0; + struct calculate_send_arg size = { 0 }; ASSERT(dsl_pool_config_held(dp)); /* tosnap must be a snapshot */ - if (!dsl_dataset_is_snapshot(ds)) + if (!ds->ds_is_snapshot) return (SET_ERROR(EINVAL)); /* verify that from_txg is before the provided snapshot was taken */ @@ -1189,7 +1270,8 @@ dmu_send_estimate_from_txg(dsl_dataset_t *ds, uint64_t from_txg, if (err) return (err); - err = dmu_adjust_send_estimate_for_indirects(ds, size, sizep); + err = dmu_adjust_send_estimate_for_indirects(ds, size.uncompressed, + size.compressed, stream_compressed, sizep); return (err); } @@ -1320,14 +1402,14 @@ dmu_recv_begin_check(void *arg, dmu_tx_t *tx) /* * The receiving code doesn't know how to translate a WRITE_EMBEDDED - * record to a plan WRITE record, so the pool must have the + * record to a plain WRITE record, so the pool must have the * EMBEDDED_DATA feature enabled if the stream has WRITE_EMBEDDED * records. Same with WRITE_EMBEDDED records that use LZ4 compression. */ if ((featureflags & DMU_BACKUP_FEATURE_EMBED_DATA) && !spa_feature_is_enabled(dp->dp_spa, SPA_FEATURE_EMBEDDED_DATA)) return (SET_ERROR(ENOTSUP)); - if ((featureflags & DMU_BACKUP_FEATURE_EMBED_DATA_LZ4) && + if ((featureflags & DMU_BACKUP_FEATURE_LZ4) && !spa_feature_is_enabled(dp->dp_spa, SPA_FEATURE_LZ4_COMPRESS)) return (SET_ERROR(ENOTSUP)); @@ -1497,10 +1579,20 @@ dmu_recv_begin_sync(void *arg, dmu_tx_t *tx) VERIFY0(zap_add(mos, dsobj, DS_FIELD_RESUME_BYTES, 8, 1, &zero, tx)); if (DMU_GET_FEATUREFLAGS(drrb->drr_versioninfo) & + DMU_BACKUP_FEATURE_LARGE_BLOCKS) { + VERIFY0(zap_add(mos, dsobj, DS_FIELD_RESUME_LARGEBLOCK, + 8, 1, &one, tx)); + } + if (DMU_GET_FEATUREFLAGS(drrb->drr_versioninfo) & DMU_BACKUP_FEATURE_EMBED_DATA) { VERIFY0(zap_add(mos, dsobj, DS_FIELD_RESUME_EMBEDOK, 8, 1, &one, tx)); } + if (DMU_GET_FEATUREFLAGS(drrb->drr_versioninfo) & + DMU_BACKUP_FEATURE_COMPRESSED) { + VERIFY0(zap_add(mos, dsobj, DS_FIELD_RESUME_COMPRESSOK, + 8, 1, &one, tx)); + } } dmu_buf_will_dirty(newds->ds_dbuf, tx); @@ -1556,7 +1648,7 @@ dmu_recv_resume_begin_check(void *arg, dmu_tx_t *tx) if ((featureflags & DMU_BACKUP_FEATURE_EMBED_DATA) && !spa_feature_is_enabled(dp->dp_spa, SPA_FEATURE_EMBEDDED_DATA)) return (SET_ERROR(ENOTSUP)); - if ((featureflags & DMU_BACKUP_FEATURE_EMBED_DATA_LZ4) && + if ((featureflags & DMU_BACKUP_FEATURE_LZ4) && !spa_feature_is_enabled(dp->dp_spa, SPA_FEATURE_LZ4_COMPRESS)) return (SET_ERROR(ENOTSUP)); @@ -1763,7 +1855,7 @@ struct receive_objnode { uint64_t object; }; -struct receive_arg { +struct receive_arg { objset_t *os; kthread_t *td; struct file *fp; @@ -1916,10 +2008,11 @@ byteswap_record(dmu_replay_record_t *drr) DO64(drr_write.drr_object); DO32(drr_write.drr_type); DO64(drr_write.drr_offset); - DO64(drr_write.drr_length); + DO64(drr_write.drr_logical_size); DO64(drr_write.drr_toguid); ZIO_CHECKSUM_BSWAP(&drr->drr_u.drr_write.drr_key.ddk_cksum); DO64(drr_write.drr_key.ddk_prop); + DO64(drr_write.drr_compressed_size); break; case DRR_WRITE_BYREF: DO64(drr_write_byref.drr_object); @@ -2149,7 +2242,7 @@ receive_write(struct receive_writer_arg *rwa, struct drr_write *drrw, dmu_tx_t *tx; int err; - if (drrw->drr_offset + drrw->drr_length < drrw->drr_offset || + if (drrw->drr_offset + drrw->drr_logical_size < drrw->drr_offset || !DMU_OT_IS_VALID(drrw->drr_type)) return (SET_ERROR(EINVAL)); @@ -2171,7 +2264,7 @@ receive_write(struct receive_writer_arg *rwa, struct drr_write *drrw, tx = dmu_tx_create(rwa->os); dmu_tx_hold_write(tx, drrw->drr_object, - drrw->drr_offset, drrw->drr_length); + drrw->drr_offset, drrw->drr_logical_size); err = dmu_tx_assign(tx, TXG_WAIT); if (err != 0) { dmu_tx_abort(tx); @@ -2181,9 +2274,10 @@ receive_write(struct receive_writer_arg *rwa, struct drr_write *drrw, dmu_object_byteswap_t byteswap = DMU_OT_BYTESWAP(drrw->drr_type); dmu_ot_byteswap[byteswap].ob_func(abuf->b_data, - drrw->drr_length); + DRR_WRITE_PAYLOAD_SIZE(drrw)); } + /* use the bonus buf to look up the dnode in dmu_assign_arcbuf */ dmu_buf_t *bonus; if (dmu_bonus_hold(rwa->os, drrw->drr_object, FTAG, &bonus) != 0) return (SET_ERROR(EINVAL)); @@ -2596,18 +2690,31 @@ receive_read_record(struct receive_arg *ra) case DRR_WRITE: { struct drr_write *drrw = &ra->rrd->header.drr_u.drr_write; - arc_buf_t *abuf = arc_loan_buf(dmu_objset_spa(ra->os), - drrw->drr_length); + arc_buf_t *abuf; + boolean_t is_meta = DMU_OT_IS_METADATA(drrw->drr_type); + if (DRR_WRITE_COMPRESSED(drrw)) { + ASSERT3U(drrw->drr_compressed_size, >, 0); + ASSERT3U(drrw->drr_logical_size, >=, + drrw->drr_compressed_size); + ASSERT(!is_meta); + abuf = arc_loan_compressed_buf( + dmu_objset_spa(ra->os), + drrw->drr_compressed_size, drrw->drr_logical_size, + drrw->drr_compressiontype); + } else { + abuf = arc_loan_buf(dmu_objset_spa(ra->os), + is_meta, drrw->drr_logical_size); + } err = receive_read_payload_and_next_header(ra, - drrw->drr_length, abuf->b_data); + DRR_WRITE_PAYLOAD_SIZE(drrw), abuf->b_data); if (err != 0) { dmu_return_arcbuf(abuf); return (err); } ra->rrd->write_buf = abuf; receive_read_prefetch(ra, drrw->drr_object, drrw->drr_offset, - drrw->drr_length); + drrw->drr_logical_size); return (err); } case DRR_WRITE_BYREF: diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c index 2d0e75b6ef91..ea0ed96f96da 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c @@ -1876,9 +1876,17 @@ get_receive_resume_stats(dsl_dataset_t *ds, nvlist_t *nv) fnvlist_add_string(token_nv, "toname", buf); } if (zap_contains(dp->dp_meta_objset, ds->ds_object, + DS_FIELD_RESUME_LARGEBLOCK) == 0) { + fnvlist_add_boolean(token_nv, "largeblockok"); + } + if (zap_contains(dp->dp_meta_objset, ds->ds_object, DS_FIELD_RESUME_EMBEDOK) == 0) { fnvlist_add_boolean(token_nv, "embedok"); } + if (zap_contains(dp->dp_meta_objset, ds->ds_object, + DS_FIELD_RESUME_COMPRESSOK) == 0) { + fnvlist_add_boolean(token_nv, "compressok"); + } packed = fnvlist_pack(token_nv, &packed_size); fnvlist_free(token_nv); compressed = kmem_alloc(packed_size, KM_SLEEP); diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/lz4.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/lz4.c index 79f43f387997..f01c0dbb7873 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/lz4.c +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/lz4.c @@ -86,7 +86,7 @@ lz4_decompress(void *s_start, void *d_start, size_t s_len, size_t d_len, int n) /* * Returns 0 on success (decompression function returned non-negative) - * and non-zero on failure (decompression function returned negative. + * and non-zero on failure (decompression function returned negative). */ return (LZ4_uncompress_unknownOutputSize(&src[sizeof (bufsiz)], d_start, bufsiz, d_len) < 0); diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/arc.h b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/arc.h index 5bf6ddd2d1ee..b6cc4cfaadee 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/arc.h +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/arc.h @@ -122,11 +122,17 @@ typedef enum arc_flags } arc_flags_t; +typedef enum arc_buf_flags { + ARC_BUF_FLAG_SHARED = 1 << 0, + ARC_BUF_FLAG_COMPRESSED = 1 << 1 +} arc_buf_flags_t; + struct arc_buf { arc_buf_hdr_t *b_hdr; arc_buf_t *b_next; kmutex_t b_evict_lock; void *b_data; + arc_buf_flags_t b_flags; }; typedef enum arc_buf_contents { @@ -150,13 +156,21 @@ typedef enum arc_space_type { void arc_space_consume(uint64_t space, arc_space_type_t type); void arc_space_return(uint64_t space, arc_space_type_t type); -arc_buf_t *arc_alloc_buf(spa_t *spa, int32_t size, void *tag, - arc_buf_contents_t type); -arc_buf_t *arc_loan_buf(spa_t *spa, int size); +boolean_t arc_is_metadata(arc_buf_t *buf); +enum zio_compress arc_get_compression(arc_buf_t *buf); +int arc_decompress(arc_buf_t *buf); +arc_buf_t *arc_alloc_buf(spa_t *spa, void *tag, arc_buf_contents_t type, + int32_t size); +arc_buf_t *arc_alloc_compressed_buf(spa_t *spa, void *tag, + uint64_t psize, uint64_t lsize, enum zio_compress compression_type); +arc_buf_t *arc_loan_buf(spa_t *spa, boolean_t is_metadata, int size); +arc_buf_t *arc_loan_compressed_buf(spa_t *spa, uint64_t psize, uint64_t lsize, + enum zio_compress compression_type); void arc_return_buf(arc_buf_t *buf, void *tag); void arc_loan_inuse_buf(arc_buf_t *buf, void *tag); void arc_buf_destroy(arc_buf_t *buf, void *tag); int arc_buf_size(arc_buf_t *buf); +int arc_buf_lsize(arc_buf_t *buf); void arc_release(arc_buf_t *buf, void *tag); int arc_released(arc_buf_t *buf); void arc_buf_freeze(arc_buf_t *buf); diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h index d8fa5da7249c..0d3b04414d71 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h @@ -47,6 +47,7 @@ #include <sys/zfs_context.h> #include <sys/cred.h> #include <sys/fs/zfs.h> +#include <sys/zio_compress.h> #include <sys/zio_priority.h> #ifdef __cplusplus @@ -421,7 +422,7 @@ dmu_write_embedded(objset_t *os, uint64_t object, uint64_t offset, #define WP_SPILL 0x4 void dmu_write_policy(objset_t *os, dnode_t *dn, int level, int wp, - struct zio_prop *zp); + enum zio_compress compress_override, struct zio_prop *zp); /* * The bonus data is accessed more or less like a regular buffer. * You must dmu_bonus_hold() to get the buffer, which will give you a diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_send.h b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_send.h index 19464a5571c7..69a834d877ee 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_send.h +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_send.h @@ -41,18 +41,19 @@ struct dmu_replay_record; extern const char *recv_clone_name; int dmu_send(const char *tosnap, const char *fromsnap, boolean_t embedok, - boolean_t large_block_ok, int outfd, uint64_t resumeobj, uint64_t resumeoff, + boolean_t large_block_ok, boolean_t compressok, int outfd, + uint64_t resumeobj, uint64_t resumeoff, #ifdef illumos struct vnode *vp, offset_t *off); #else struct file *fp, offset_t *off); #endif int dmu_send_estimate(struct dsl_dataset *ds, struct dsl_dataset *fromds, - uint64_t *sizep); + boolean_t stream_compressed, uint64_t *sizep); int dmu_send_estimate_from_txg(struct dsl_dataset *ds, uint64_t fromtxg, - uint64_t *sizep); + boolean_t stream_compressed, uint64_t *sizep); int dmu_send_obj(const char *pool, uint64_t tosnap, uint64_t fromsnap, - boolean_t embedok, boolean_t large_block_ok, + boolean_t embedok, boolean_t large_block_ok, boolean_t compressok, #ifdef illumos int outfd, struct vnode *vp, offset_t *off); #else diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_dataset.h b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_dataset.h index 22c67b48a915..cab7cbb10f3a 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_dataset.h +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_dataset.h @@ -96,7 +96,9 @@ struct dsl_pool; #define DS_FIELD_RESUME_OBJECT "com.delphix:resume_object" #define DS_FIELD_RESUME_OFFSET "com.delphix:resume_offset" #define DS_FIELD_RESUME_BYTES "com.delphix:resume_bytes" +#define DS_FIELD_RESUME_LARGEBLOCK "com.delphix:resume_largeblockok" #define DS_FIELD_RESUME_EMBEDOK "com.delphix:resume_embedok" +#define DS_FIELD_RESUME_COMPRESSOK "com.delphix:resume_compressok" /* * DS_FLAG_CI_DATASET is set if the dataset contains a file system whose diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/refcount.h b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/refcount.h index 11baa58357f1..a203b5807054 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/refcount.h +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/refcount.h @@ -105,7 +105,7 @@ typedef struct refcount { atomic_add_64(&(src)->rc_count, -__tmp); \ atomic_add_64(&(dst)->rc_count, __tmp); \ } -#define refcount_transfer_ownership(rc, current_holder, new_holder) +#define refcount_transfer_ownership(rc, current_holder, new_holder) (void)0 #define refcount_held(rc, holder) ((rc)->rc_count > 0) #define refcount_not_held(rc, holder) (B_TRUE) diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_ioctl.h b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_ioctl.h index 0cbef1d3912f..b96a3b0a4268 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_ioctl.h +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_ioctl.h @@ -87,19 +87,22 @@ typedef enum drr_headertype { #define DMU_BACKUP_FEATURE_SA_SPILL (1 << 2) /* flags #3 - #15 are reserved for incompatible closed-source implementations */ #define DMU_BACKUP_FEATURE_EMBED_DATA (1 << 16) -#define DMU_BACKUP_FEATURE_EMBED_DATA_LZ4 (1 << 17) +#define DMU_BACKUP_FEATURE_LZ4 (1 << 17) /* flag #18 is reserved for a Delphix feature */ #define DMU_BACKUP_FEATURE_LARGE_BLOCKS (1 << 19) #define DMU_BACKUP_FEATURE_RESUMING (1 << 20) +/* flag #21 is reserved for a Delphix feature */ +#define DMU_BACKUP_FEATURE_COMPRESSED (1 << 22) /* * Mask of all supported backup features */ #define DMU_BACKUP_FEATURE_MASK (DMU_BACKUP_FEATURE_DEDUP | \ DMU_BACKUP_FEATURE_DEDUPPROPS | DMU_BACKUP_FEATURE_SA_SPILL | \ - DMU_BACKUP_FEATURE_EMBED_DATA | DMU_BACKUP_FEATURE_EMBED_DATA_LZ4 | \ + DMU_BACKUP_FEATURE_EMBED_DATA | DMU_BACKUP_FEATURE_LZ4 | \ DMU_BACKUP_FEATURE_RESUMING | \ - DMU_BACKUP_FEATURE_LARGE_BLOCKS) + DMU_BACKUP_FEATURE_LARGE_BLOCKS | \ + DMU_BACKUP_FEATURE_COMPRESSED) /* Are all features in the given flag word currently supported? */ #define DMU_STREAM_SUPPORTED(x) (!((x) & ~DMU_BACKUP_FEATURE_MASK)) @@ -152,89 +155,11 @@ typedef enum dmu_send_resume_token_version { #define DRR_IS_DEDUP_CAPABLE(flags) ((flags) & DRR_CHECKSUM_DEDUP) -/* - * zfs ioctl command structure - */ -struct drr_begin { - uint64_t drr_magic; - uint64_t drr_versioninfo; /* was drr_version */ - uint64_t drr_creation_time; - dmu_objset_type_t drr_type; - uint32_t drr_flags; - uint64_t drr_toguid; - uint64_t drr_fromguid; - char drr_toname[MAXNAMELEN]; -}; - -struct drr_end { - zio_cksum_t drr_checksum; - uint64_t drr_toguid; -}; - -struct drr_object { - uint64_t drr_object; - dmu_object_type_t drr_type; - dmu_object_type_t drr_bonustype; - uint32_t drr_blksz; - uint32_t drr_bonuslen; - uint8_t drr_checksumtype; - uint8_t drr_compress; - uint8_t drr_pad[6]; - uint64_t drr_toguid; - /* bonus content follows */ -}; - -struct drr_freeobjects { - uint64_t drr_firstobj; - uint64_t drr_numobjs; - uint64_t drr_toguid; -}; - -struct drr_write { - uint64_t drr_object; - dmu_object_type_t drr_type; - uint32_t drr_pad; - uint64_t drr_offset; - uint64_t drr_length; - uint64_t drr_toguid; - uint8_t drr_checksumtype; - uint8_t drr_checksumflags; - uint8_t drr_pad2[6]; - ddt_key_t drr_key; /* deduplication key */ - /* content follows */ -}; - -struct drr_free { - uint64_t drr_object; - uint64_t drr_offset; - uint64_t drr_length; - uint64_t drr_toguid; -}; - -struct drr_write_byref { - /* where to put the data */ - uint64_t drr_object; - uint64_t drr_offset; - uint64_t drr_length; - uint64_t drr_toguid; - /* where to find the prior copy of the data */ - uint64_t drr_refguid; - uint64_t drr_refobject; - uint64_t drr_refoffset; - /* properties of the data */ - uint8_t drr_checksumtype; - uint8_t drr_checksumflags; - uint8_t drr_pad2[6]; - ddt_key_t drr_key; /* deduplication key */ -}; - -struct drr_spill { - uint64_t drr_object; - uint64_t drr_length; - uint64_t drr_toguid; - uint64_t drr_pad[4]; /* needed for crypto */ - /* spill data follows */ -}; +/* deal with compressed drr_write replay records */ +#define DRR_WRITE_COMPRESSED(drrw) ((drrw)->drr_compressiontype != 0) +#define DRR_WRITE_PAYLOAD_SIZE(drrw) \ + (DRR_WRITE_COMPRESSED(drrw) ? (drrw)->drr_compressed_size : \ + (drrw)->drr_logical_size) typedef struct dmu_replay_record { enum { @@ -244,14 +169,83 @@ typedef struct dmu_replay_record { } drr_type; uint32_t drr_payloadlen; union { - struct drr_begin drr_begin; - struct drr_end drr_end; - struct drr_object drr_object; - struct drr_freeobjects drr_freeobjects; - struct drr_write drr_write; - struct drr_free drr_free; - struct drr_write_byref drr_write_byref; - struct drr_spill drr_spill; + struct drr_begin { + uint64_t drr_magic; + uint64_t drr_versioninfo; /* was drr_version */ + uint64_t drr_creation_time; + dmu_objset_type_t drr_type; + uint32_t drr_flags; + uint64_t drr_toguid; + uint64_t drr_fromguid; + char drr_toname[MAXNAMELEN]; + } drr_begin; + struct drr_end { + zio_cksum_t drr_checksum; + uint64_t drr_toguid; + } drr_end; + struct drr_object { + uint64_t drr_object; + dmu_object_type_t drr_type; + dmu_object_type_t drr_bonustype; + uint32_t drr_blksz; + uint32_t drr_bonuslen; + uint8_t drr_checksumtype; + uint8_t drr_compress; + uint8_t drr_pad[6]; + uint64_t drr_toguid; + /* bonus content follows */ + } drr_object; + struct drr_freeobjects { + uint64_t drr_firstobj; + uint64_t drr_numobjs; + uint64_t drr_toguid; + } drr_freeobjects; + struct drr_write { + uint64_t drr_object; + dmu_object_type_t drr_type; + uint32_t drr_pad; + uint64_t drr_offset; + uint64_t drr_logical_size; + uint64_t drr_toguid; + uint8_t drr_checksumtype; + uint8_t drr_checksumflags; + uint8_t drr_compressiontype; + uint8_t drr_pad2[5]; + /* deduplication key */ + ddt_key_t drr_key; + /* only nonzero if drr_compressiontype is not 0 */ + uint64_t drr_compressed_size; + /* content follows */ + } drr_write; + struct drr_free { + uint64_t drr_object; + uint64_t drr_offset; + uint64_t drr_length; + uint64_t drr_toguid; + } drr_free; + struct drr_write_byref { + /* where to put the data */ + uint64_t drr_object; + uint64_t drr_offset; + uint64_t drr_length; + uint64_t drr_toguid; + /* where to find the prior copy of the data */ + uint64_t drr_refguid; + uint64_t drr_refobject; + uint64_t drr_refoffset; + /* properties of the data */ + uint8_t drr_checksumtype; + uint8_t drr_checksumflags; + uint8_t drr_pad2[6]; + ddt_key_t drr_key; /* deduplication key */ + } drr_write_byref; + struct drr_spill { + uint64_t drr_object; + uint64_t drr_length; + uint64_t drr_toguid; + uint64_t drr_pad[4]; /* needed for crypto */ + /* spill data follows */ + } drr_spill; struct drr_write_embedded { uint64_t drr_object; uint64_t drr_offset; diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h index e1064a22e819..ba71dcfcde27 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h @@ -106,26 +106,6 @@ enum zio_checksum { #define ZIO_DEDUPCHECKSUM ZIO_CHECKSUM_SHA256 #define ZIO_DEDUPDITTO_MIN 100 -enum zio_compress { - ZIO_COMPRESS_INHERIT = 0, - ZIO_COMPRESS_ON, - ZIO_COMPRESS_OFF, - ZIO_COMPRESS_LZJB, - ZIO_COMPRESS_EMPTY, - ZIO_COMPRESS_GZIP_1, - ZIO_COMPRESS_GZIP_2, - ZIO_COMPRESS_GZIP_3, - ZIO_COMPRESS_GZIP_4, - ZIO_COMPRESS_GZIP_5, - ZIO_COMPRESS_GZIP_6, - ZIO_COMPRESS_GZIP_7, - ZIO_COMPRESS_GZIP_8, - ZIO_COMPRESS_GZIP_9, - ZIO_COMPRESS_ZLE, - ZIO_COMPRESS_LZ4, - ZIO_COMPRESS_FUNCTIONS -}; - /* * The number of "legacy" compression functions which can be set on individual * objects. @@ -455,6 +435,8 @@ struct zio { void *io_orig_data; uint64_t io_size; uint64_t io_orig_size; + /* io_lsize != io_orig_size iff this is a raw write */ + uint64_t io_lsize; /* Stuff for the vdev stack */ vdev_t *io_vd; @@ -516,7 +498,7 @@ extern zio_t *zio_read(zio_t *pio, spa_t *spa, const blkptr_t *bp, void *data, zio_priority_t priority, enum zio_flag flags, const zbookmark_phys_t *zb); extern zio_t *zio_write(zio_t *pio, spa_t *spa, uint64_t txg, blkptr_t *bp, - void *data, uint64_t size, const zio_prop_t *zp, + void *data, uint64_t size, uint64_t psize, const zio_prop_t *zp, zio_done_func_t *ready, zio_done_func_t *children_ready, zio_done_func_t *physdone, zio_done_func_t *done, void *priv, zio_priority_t priority, enum zio_flag flags, diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio_compress.h b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio_compress.h index a617735315f2..2acdcaef9221 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio_compress.h +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio_compress.h @@ -25,17 +25,36 @@ */ /* * Copyright (c) 2013 by Saso Kiselkov. All rights reserved. + * Copyright (c) 2015 by Delphix. All rights reserved. */ #ifndef _SYS_ZIO_COMPRESS_H #define _SYS_ZIO_COMPRESS_H -#include <sys/zio.h> - #ifdef __cplusplus extern "C" { #endif +enum zio_compress { + ZIO_COMPRESS_INHERIT = 0, + ZIO_COMPRESS_ON, + ZIO_COMPRESS_OFF, + ZIO_COMPRESS_LZJB, + ZIO_COMPRESS_EMPTY, + ZIO_COMPRESS_GZIP_1, + ZIO_COMPRESS_GZIP_2, + ZIO_COMPRESS_GZIP_3, + ZIO_COMPRESS_GZIP_4, + ZIO_COMPRESS_GZIP_5, + ZIO_COMPRESS_GZIP_6, + ZIO_COMPRESS_GZIP_7, + ZIO_COMPRESS_GZIP_8, + ZIO_COMPRESS_GZIP_9, + ZIO_COMPRESS_ZLE, + ZIO_COMPRESS_LZ4, + ZIO_COMPRESS_FUNCTIONS +}; + /* Common signature for all zio compress functions. */ typedef size_t zio_compress_func_t(void *src, void *dst, size_t s_len, size_t d_len, int); diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c index d1ca9c2c69a3..48418ef656f2 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c @@ -4582,6 +4582,7 @@ zfs_ioc_send(zfs_cmd_t *zc) boolean_t estimate = (zc->zc_guid != 0); boolean_t embedok = (zc->zc_flags & 0x1); boolean_t large_block_ok = (zc->zc_flags & 0x2); + boolean_t compressok = (zc->zc_flags & 0x4); if (zc->zc_obj != 0) { dsl_pool_t *dp; @@ -4629,7 +4630,7 @@ zfs_ioc_send(zfs_cmd_t *zc) } } - error = dmu_send_estimate(tosnap, fromsnap, + error = dmu_send_estimate(tosnap, fromsnap, compressok, &zc->zc_objset_type); if (fromsnap != NULL) @@ -4651,7 +4652,7 @@ zfs_ioc_send(zfs_cmd_t *zc) off = fp->f_offset; error = dmu_send_obj(zc->zc_name, zc->zc_sendobj, - zc->zc_fromobj, embedok, large_block_ok, + zc->zc_fromobj, embedok, large_block_ok, compressok, #ifdef illumos zc->zc_cookie, fp->f_vnode, &off); #else @@ -5632,6 +5633,8 @@ zfs_ioc_unjail(zfs_cmd_t *zc) * indicates that blocks > 128KB are permitted * (optional) "embedok" -> (value ignored) * presence indicates DRR_WRITE_EMBEDDED records are permitted + * (optional) "compressok" -> (value ignored) + * presence indicates compressed DRR_WRITE records are permitted * (optional) "resume_object" and "resume_offset" -> (uint64) * if present, resume send stream from specified object and offset. * } @@ -5650,6 +5653,7 @@ zfs_ioc_send_new(const char *snapname, nvlist_t *innvl, nvlist_t *outnvl) int fd; boolean_t largeblockok; boolean_t embedok; + boolean_t compressok; uint64_t resumeobj = 0; uint64_t resumeoff = 0; @@ -5661,6 +5665,7 @@ zfs_ioc_send_new(const char *snapname, nvlist_t *innvl, nvlist_t *outnvl) largeblockok = nvlist_exists(innvl, "largeblockok"); embedok = nvlist_exists(innvl, "embedok"); + compressok = nvlist_exists(innvl, "compressok"); (void) nvlist_lookup_uint64(innvl, "resume_object", &resumeobj); (void) nvlist_lookup_uint64(innvl, "resume_offset", &resumeoff); @@ -5674,11 +5679,11 @@ zfs_ioc_send_new(const char *snapname, nvlist_t *innvl, nvlist_t *outnvl) return (SET_ERROR(EBADF)); off = fp->f_offset; - error = dmu_send(snapname, fromname, embedok, largeblockok, fd, + error = dmu_send(snapname, fromname, embedok, largeblockok, compressok, #ifdef illumos - resumeobj, resumeoff, fp->f_vnode, &off); + fd, resumeobj, resumeoff, fp->f_vnode, &off); #else - resumeobj, resumeoff, fp, &off); + fd, resumeobj, resumeoff, fp, &off); #endif #ifdef illumos @@ -5699,6 +5704,12 @@ zfs_ioc_send_new(const char *snapname, nvlist_t *innvl, nvlist_t *outnvl) * innvl: { * (optional) "from" -> full snap or bookmark name to send an incremental * from + * (optional) "largeblockok" -> (value ignored) + * indicates that blocks > 128KB are permitted + * (optional) "embedok" -> (value ignored) + * presence indicates DRR_WRITE_EMBEDDED records are permitted + * (optional) "compressok" -> (value ignored) + * presence indicates compressed DRR_WRITE records are permitted * } * * outnvl: { @@ -5712,6 +5723,11 @@ zfs_ioc_send_space(const char *snapname, nvlist_t *innvl, nvlist_t *outnvl) dsl_dataset_t *tosnap; int error; char *fromname; + /* LINTED E_FUNC_SET_NOT_USED */ + boolean_t largeblockok; + /* LINTED E_FUNC_SET_NOT_USED */ + boolean_t embedok; + boolean_t compressok; uint64_t space; error = dsl_pool_hold(snapname, FTAG, &dp); @@ -5724,6 +5740,10 @@ zfs_ioc_send_space(const char *snapname, nvlist_t *innvl, nvlist_t *outnvl) return (error); } + largeblockok = nvlist_exists(innvl, "largeblockok"); + embedok = nvlist_exists(innvl, "embedok"); + compressok = nvlist_exists(innvl, "compressok"); + error = nvlist_lookup_string(innvl, "from", &fromname); if (error == 0) { if (strchr(fromname, '@') != NULL) { @@ -5736,7 +5756,8 @@ zfs_ioc_send_space(const char *snapname, nvlist_t *innvl, nvlist_t *outnvl) error = dsl_dataset_hold(dp, fromname, FTAG, &fromsnap); if (error != 0) goto out; - error = dmu_send_estimate(tosnap, fromsnap, &space); + error = dmu_send_estimate(tosnap, fromsnap, compressok, + &space); dsl_dataset_rele(fromsnap, FTAG); } else if (strchr(fromname, '#') != NULL) { /* @@ -5751,7 +5772,7 @@ zfs_ioc_send_space(const char *snapname, nvlist_t *innvl, nvlist_t *outnvl) if (error != 0) goto out; error = dmu_send_estimate_from_txg(tosnap, - frombm.zbm_creation_txg, &space); + frombm.zbm_creation_txg, compressok, &space); } else { /* * from is not properly formatted as a snapshot or @@ -5762,7 +5783,7 @@ zfs_ioc_send_space(const char *snapname, nvlist_t *innvl, nvlist_t *outnvl) } } else { // If estimating the size of a full send, use dmu_send_estimate - error = dmu_send_estimate(tosnap, NULL, &space); + error = dmu_send_estimate(tosnap, NULL, compressok, &space); } fnvlist_add_uint64(outnvl, "space", space); diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c index cc296d5f4dd9..564469d29642 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c @@ -613,21 +613,23 @@ zio_timestamp_compare(const void *x1, const void *x2) */ static zio_t * zio_create(zio_t *pio, spa_t *spa, uint64_t txg, const blkptr_t *bp, - void *data, uint64_t size, zio_done_func_t *done, void *private, - zio_type_t type, zio_priority_t priority, enum zio_flag flags, - vdev_t *vd, uint64_t offset, const zbookmark_phys_t *zb, - enum zio_stage stage, enum zio_stage pipeline) + void *data, uint64_t lsize, uint64_t psize, zio_done_func_t *done, + void *private, zio_type_t type, zio_priority_t priority, + enum zio_flag flags, vdev_t *vd, uint64_t offset, + const zbookmark_phys_t *zb, enum zio_stage stage, enum zio_stage pipeline) { zio_t *zio; - ASSERT3U(type == ZIO_TYPE_FREE || size, <=, SPA_MAXBLOCKSIZE); - ASSERT(P2PHASE(size, SPA_MINBLOCKSIZE) == 0); + ASSERT3U(type == ZIO_TYPE_FREE || psize, <=, SPA_MAXBLOCKSIZE); + ASSERT(P2PHASE(psize, SPA_MINBLOCKSIZE) == 0); ASSERT(P2PHASE(offset, SPA_MINBLOCKSIZE) == 0); ASSERT(!vd || spa_config_held(spa, SCL_STATE_ALL, RW_READER)); ASSERT(!bp || !(flags & ZIO_FLAG_CONFIG_WRITER)); ASSERT(vd || stage == ZIO_STAGE_OPEN); + IMPLY(lsize != psize, (flags & ZIO_FLAG_RAW) != 0); + zio = kmem_cache_alloc(zio_cache, KM_SLEEP); bzero(zio, sizeof (zio_t)); @@ -671,7 +673,8 @@ zio_create(zio_t *pio, spa_t *spa, uint64_t txg, const blkptr_t *bp, zio->io_vd = vd; zio->io_offset = offset; zio->io_orig_data = zio->io_data = data; - zio->io_orig_size = zio->io_size = size; + zio->io_orig_size = zio->io_size = psize; + zio->io_lsize = lsize; zio->io_orig_flags = zio->io_flags = flags; zio->io_orig_stage = zio->io_stage = stage; zio->io_orig_pipeline = zio->io_pipeline = pipeline; @@ -711,7 +714,7 @@ zio_null(zio_t *pio, spa_t *spa, vdev_t *vd, zio_done_func_t *done, { zio_t *zio; - zio = zio_create(pio, spa, 0, NULL, NULL, 0, done, private, + zio = zio_create(pio, spa, 0, NULL, NULL, 0, 0, done, private, ZIO_TYPE_NULL, ZIO_PRIORITY_NOW, flags, vd, 0, NULL, ZIO_STAGE_OPEN, ZIO_INTERLOCK_PIPELINE); @@ -816,7 +819,7 @@ zio_read(zio_t *pio, spa_t *spa, const blkptr_t *bp, zfs_blkptr_verify(spa, bp); zio = zio_create(pio, spa, BP_PHYSICAL_BIRTH(bp), bp, - data, size, done, private, + data, size, size, done, private, ZIO_TYPE_READ, priority, flags, NULL, 0, zb, ZIO_STAGE_OPEN, (flags & ZIO_FLAG_DDT_CHILD) ? ZIO_DDT_CHILD_READ_PIPELINE : ZIO_READ_PIPELINE); @@ -826,7 +829,7 @@ zio_read(zio_t *pio, spa_t *spa, const blkptr_t *bp, zio_t * zio_write(zio_t *pio, spa_t *spa, uint64_t txg, blkptr_t *bp, - void *data, uint64_t size, const zio_prop_t *zp, + void *data, uint64_t lsize, uint64_t psize, const zio_prop_t *zp, zio_done_func_t *ready, zio_done_func_t *children_ready, zio_done_func_t *physdone, zio_done_func_t *done, void *private, zio_priority_t priority, enum zio_flag flags, @@ -843,7 +846,7 @@ zio_write(zio_t *pio, spa_t *spa, uint64_t txg, blkptr_t *bp, zp->zp_copies > 0 && zp->zp_copies <= spa_max_replication(spa)); - zio = zio_create(pio, spa, txg, bp, data, size, done, private, + zio = zio_create(pio, spa, txg, bp, data, lsize, psize, done, private, ZIO_TYPE_WRITE, priority, flags, NULL, 0, zb, ZIO_STAGE_OPEN, (flags & ZIO_FLAG_DDT_CHILD) ? ZIO_DDT_CHILD_WRITE_PIPELINE : ZIO_WRITE_PIPELINE); @@ -873,7 +876,7 @@ zio_rewrite(zio_t *pio, spa_t *spa, uint64_t txg, blkptr_t *bp, void *data, { zio_t *zio; - zio = zio_create(pio, spa, txg, bp, data, size, done, private, + zio = zio_create(pio, spa, txg, bp, data, size, size, done, private, ZIO_TYPE_WRITE, priority, flags | ZIO_FLAG_IO_REWRITE, NULL, 0, zb, ZIO_STAGE_OPEN, ZIO_REWRITE_PIPELINE); @@ -959,8 +962,8 @@ zio_free_sync(zio_t *pio, spa_t *spa, uint64_t txg, const blkptr_t *bp, flags |= ZIO_FLAG_DONT_QUEUE; zio = zio_create(pio, spa, txg, bp, NULL, size, - NULL, NULL, ZIO_TYPE_FREE, ZIO_PRIORITY_NOW, flags, - NULL, 0, NULL, ZIO_STAGE_OPEN, stage); + BP_GET_PSIZE(bp), NULL, NULL, ZIO_TYPE_FREE, ZIO_PRIORITY_NOW, + flags, NULL, 0, NULL, ZIO_STAGE_OPEN, stage); return (zio); } @@ -993,8 +996,8 @@ zio_claim(zio_t *pio, spa_t *spa, uint64_t txg, const blkptr_t *bp, ASSERT(!BP_GET_DEDUP(bp) || !spa_writeable(spa)); /* zdb(1M) */ zio = zio_create(pio, spa, txg, bp, NULL, BP_GET_PSIZE(bp), - done, private, ZIO_TYPE_CLAIM, ZIO_PRIORITY_NOW, flags, - NULL, 0, NULL, ZIO_STAGE_OPEN, ZIO_CLAIM_PIPELINE); + BP_GET_PSIZE(bp), done, private, ZIO_TYPE_CLAIM, ZIO_PRIORITY_NOW, + flags, NULL, 0, NULL, ZIO_STAGE_OPEN, ZIO_CLAIM_PIPELINE); ASSERT0(zio->io_queued_timestamp); return (zio); @@ -1009,8 +1012,8 @@ zio_ioctl(zio_t *pio, spa_t *spa, vdev_t *vd, int cmd, uint64_t offset, int c; if (vd->vdev_children == 0) { - zio = zio_create(pio, spa, 0, NULL, NULL, size, done, private, - ZIO_TYPE_IOCTL, priority, flags, vd, offset, NULL, + zio = zio_create(pio, spa, 0, NULL, NULL, 0, 0, done, private, + ZIO_TYPE_IOCTL, ZIO_PRIORITY_NOW, flags, vd, 0, NULL, ZIO_STAGE_OPEN, ZIO_IOCTL_PIPELINE); zio->io_cmd = cmd; @@ -1037,9 +1040,9 @@ zio_read_phys(zio_t *pio, vdev_t *vd, uint64_t offset, uint64_t size, offset >= vd->vdev_psize - VDEV_LABEL_END_SIZE); ASSERT3U(offset + size, <=, vd->vdev_psize); - zio = zio_create(pio, vd->vdev_spa, 0, NULL, data, size, done, private, - ZIO_TYPE_READ, priority, flags | ZIO_FLAG_PHYSICAL, vd, offset, - NULL, ZIO_STAGE_OPEN, ZIO_READ_PHYS_PIPELINE); + zio = zio_create(pio, vd->vdev_spa, 0, NULL, data, size, size, done, + private, ZIO_TYPE_READ, priority, flags | ZIO_FLAG_PHYSICAL, vd, + offset, NULL, ZIO_STAGE_OPEN, ZIO_READ_PHYS_PIPELINE); zio->io_prop.zp_checksum = checksum; @@ -1058,9 +1061,9 @@ zio_write_phys(zio_t *pio, vdev_t *vd, uint64_t offset, uint64_t size, offset >= vd->vdev_psize - VDEV_LABEL_END_SIZE); ASSERT3U(offset + size, <=, vd->vdev_psize); - zio = zio_create(pio, vd->vdev_spa, 0, NULL, data, size, done, private, - ZIO_TYPE_WRITE, priority, flags | ZIO_FLAG_PHYSICAL, vd, offset, - NULL, ZIO_STAGE_OPEN, ZIO_WRITE_PHYS_PIPELINE); + zio = zio_create(pio, vd->vdev_spa, 0, NULL, data, size, size, done, + private, ZIO_TYPE_WRITE, priority, flags | ZIO_FLAG_PHYSICAL, vd, + offset, NULL, ZIO_STAGE_OPEN, ZIO_WRITE_PHYS_PIPELINE); zio->io_prop.zp_checksum = checksum; @@ -1140,7 +1143,7 @@ zio_vdev_child_io(zio_t *pio, blkptr_t *bp, vdev_t *vd, uint64_t offset, flags &= ~ZIO_FLAG_IO_ALLOCATING; } - zio = zio_create(pio, pio->io_spa, pio->io_txg, bp, data, size, + zio = zio_create(pio, pio->io_spa, pio->io_txg, bp, data, size, size, done, private, type, priority, flags, vd, offset, &pio->io_bookmark, ZIO_STAGE_VDEV_IO_START >> 1, pipeline); ASSERT3U(zio->io_child_type, ==, ZIO_CHILD_VDEV); @@ -1162,7 +1165,7 @@ zio_vdev_delegated_io(vdev_t *vd, uint64_t offset, void *data, uint64_t size, ASSERT(vd->vdev_ops->vdev_op_leaf); zio = zio_create(NULL, vd->vdev_spa, 0, NULL, - data, size, done, private, type, priority, + data, size, size, done, private, type, priority, flags | ZIO_FLAG_CANFAIL | ZIO_FLAG_DONT_RETRY | ZIO_FLAG_DELEGATED, vd, offset, NULL, ZIO_STAGE_VDEV_IO_START >> 1, ZIO_VDEV_CHILD_PIPELINE); @@ -1184,7 +1187,7 @@ zio_trim(zio_t *zio, spa_t *spa, vdev_t *vd, uint64_t offset, uint64_t size) ASSERT(vd->vdev_ops->vdev_op_leaf); - return (zio_create(zio, spa, 0, NULL, NULL, size, NULL, NULL, + return (zio_create(zio, spa, 0, NULL, NULL, size, size, NULL, NULL, ZIO_TYPE_FREE, ZIO_PRIORITY_TRIM, ZIO_FLAG_DONT_AGGREGATE | ZIO_FLAG_CANFAIL | ZIO_FLAG_DONT_PROPAGATE | ZIO_FLAG_DONT_RETRY, vd, offset, NULL, ZIO_STAGE_OPEN, ZIO_FREE_PHYS_PIPELINE)); @@ -1203,8 +1206,11 @@ zio_shrink(zio_t *zio, uint64_t size) * Note, BP_IS_RAIDZ() assumes no compression. */ ASSERT(BP_GET_COMPRESS(zio->io_bp) == ZIO_COMPRESS_OFF); - if (!BP_IS_RAIDZ(zio->io_bp)) - zio->io_orig_size = zio->io_size = size; + if (!BP_IS_RAIDZ(zio->io_bp)) { + /* we are not doing a raw write */ + ASSERT3U(zio->io_size, ==, zio->io_lsize); + zio->io_orig_size = zio->io_size = zio->io_lsize = size; + } } /* @@ -1313,10 +1319,12 @@ zio_write_compress(zio_t *zio) zio_prop_t *zp = &zio->io_prop; enum zio_compress compress = zp->zp_compress; blkptr_t *bp = zio->io_bp; - uint64_t lsize = zio->io_size; - uint64_t psize = lsize; + uint64_t lsize = zio->io_lsize; + uint64_t psize = zio->io_size; int pass = 1; + EQUIV(lsize != psize, (zio->io_flags & ZIO_FLAG_RAW) != 0); + /* * If our children haven't all reached the ready stage, * wait for them and then repeat this pipeline stage. @@ -1365,7 +1373,8 @@ zio_write_compress(zio_t *zio) spa_max_replication(spa)) == BP_GET_NDVAS(bp)); } - if (compress != ZIO_COMPRESS_OFF) { + /* If it's a compressed write that is not raw, compress the buffer. */ + if (compress != ZIO_COMPRESS_OFF && psize == lsize) { void *cbuf = zio_buf_alloc(lsize); psize = zio_compress_data(compress, zio->io_data, cbuf, lsize); if (psize == 0 || psize == lsize) { @@ -1416,6 +1425,8 @@ zio_write_compress(zio_t *zio) zio->io_bp_override = NULL; *bp = zio->io_bp_orig; zio->io_pipeline = zio->io_orig_pipeline; + } else { + ASSERT3U(psize, !=, 0); } /* @@ -2282,8 +2293,8 @@ zio_write_gang_block(zio_t *pio) zp.zp_nopwrite = B_FALSE; zio_t *cio = zio_write(zio, spa, txg, &gbh->zg_blkptr[g], - (char *)pio->io_data + (pio->io_size - resid), lsize, &zp, - zio_write_gang_member_ready, NULL, NULL, NULL, + (char *)pio->io_data + (pio->io_size - resid), lsize, lsize, + &zp, zio_write_gang_member_ready, NULL, NULL, NULL, &gn->gn_child[g], pio->io_priority, ZIO_GANG_CHILD_FLAGS(pio), &pio->io_bookmark); @@ -2488,6 +2499,10 @@ static boolean_t zio_ddt_collision(zio_t *zio, ddt_t *ddt, ddt_entry_t *dde) { spa_t *spa = zio->io_spa; + boolean_t do_raw = (zio->io_flags & ZIO_FLAG_RAW); + + /* We should never get a raw, override zio */ + ASSERT(!(zio->io_bp_override && do_raw)); /* * Note: we compare the original data, not the transformed data, @@ -2511,6 +2526,7 @@ zio_ddt_collision(zio_t *zio, ddt_t *ddt, ddt_entry_t *dde) if (ddp->ddp_phys_birth != 0) { arc_buf_t *abuf = NULL; arc_flags_t aflags = ARC_FLAG_WAIT; + int zio_flags = ZIO_FLAG_CANFAIL | ZIO_FLAG_SPECULATIVE; blkptr_t blk = *zio->io_bp; int error; @@ -2518,10 +2534,26 @@ zio_ddt_collision(zio_t *zio, ddt_t *ddt, ddt_entry_t *dde) ddt_exit(ddt); + /* + * Intuitively, it would make more sense to compare + * io_data than io_orig_data in the raw case since you + * don't want to look at any transformations that have + * happened to the data. However, for raw I/Os the + * data will actually be the same in io_data and + * io_orig_data, so all we have to do is issue this as + * a raw ARC read. + */ + if (do_raw) { + zio_flags |= ZIO_FLAG_RAW; + ASSERT3U(zio->io_size, ==, zio->io_orig_size); + ASSERT0(bcmp(zio->io_data, zio->io_orig_data, + zio->io_size)); + ASSERT3P(zio->io_transform_stack, ==, NULL); + } + error = arc_read(NULL, spa, &blk, arc_getbuf_func, &abuf, ZIO_PRIORITY_SYNC_READ, - ZIO_FLAG_CANFAIL | ZIO_FLAG_SPECULATIVE, - &aflags, &zio->io_bookmark); + zio_flags, &aflags, &zio->io_bookmark); if (error == 0) { if (arc_buf_size(abuf) != zio->io_orig_size || @@ -2636,6 +2668,7 @@ zio_ddt_write(zio_t *zio) ASSERT(BP_GET_DEDUP(bp)); ASSERT(BP_GET_CHECKSUM(bp) == zp->zp_checksum); ASSERT(BP_IS_HOLE(bp) || zio->io_bp_override); + ASSERT(!(zio->io_bp_override && (zio->io_flags & ZIO_FLAG_RAW))); ddt_enter(ddt); dde = ddt_lookup(ddt, bp, B_TRUE); @@ -2656,7 +2689,9 @@ zio_ddt_write(zio_t *zio) BP_ZERO(bp); } else { zp->zp_dedup = B_FALSE; + BP_SET_DEDUP(bp, B_FALSE); } + ASSERT(!BP_GET_DEDUP(bp)); zio->io_pipeline = ZIO_WRITE_PIPELINE; ddt_exit(ddt); return (ZIO_PIPELINE_CONTINUE); @@ -2689,7 +2724,7 @@ zio_ddt_write(zio_t *zio) } dio = zio_write(zio, spa, txg, bp, zio->io_orig_data, - zio->io_orig_size, &czp, NULL, NULL, + zio->io_orig_size, zio->io_orig_size, &czp, NULL, NULL, NULL, zio_ddt_ditto_write_done, dde, zio->io_priority, ZIO_DDT_CHILD_FLAGS(zio), &zio->io_bookmark); @@ -2711,7 +2746,7 @@ zio_ddt_write(zio_t *zio) ddt_phys_addref(ddp); } else { cio = zio_write(zio, spa, txg, bp, zio->io_orig_data, - zio->io_orig_size, zp, + zio->io_orig_size, zio->io_orig_size, zp, zio_ddt_child_write_ready, NULL, NULL, zio_ddt_child_write_done, dde, zio->io_priority, ZIO_DDT_CHILD_FLAGS(zio), &zio->io_bookmark); diff --git a/sys/compat/linux/linux_ioctl.c b/sys/compat/linux/linux_ioctl.c index 72045c4b9532..b77db6c34dde 100644 --- a/sys/compat/linux/linux_ioctl.c +++ b/sys/compat/linux/linux_ioctl.c @@ -70,6 +70,7 @@ __FBSDID("$FreeBSD$"); #include <net/if_dl.h> #include <net/if_types.h> +#include <dev/evdev/input.h> #include <dev/usb/usb_ioctl.h> #ifdef COMPAT_LINUX32 @@ -83,6 +84,7 @@ __FBSDID("$FreeBSD$"); #include <compat/linux/linux_ioctl.h> #include <compat/linux/linux_mib.h> #include <compat/linux/linux_socket.h> +#include <compat/linux/linux_timer.h> #include <compat/linux/linux_util.h> #include <contrib/v4l/videodev.h> @@ -110,6 +112,7 @@ static linux_ioctl_function_t linux_ioctl_v4l; static linux_ioctl_function_t linux_ioctl_v4l2; static linux_ioctl_function_t linux_ioctl_special; static linux_ioctl_function_t linux_ioctl_fbsd_usb; +static linux_ioctl_function_t linux_ioctl_evdev; static struct linux_ioctl_handler cdrom_handler = { linux_ioctl_cdrom, LINUX_IOCTL_CDROM_MIN, LINUX_IOCTL_CDROM_MAX }; @@ -139,6 +142,8 @@ static struct linux_ioctl_handler video2_handler = { linux_ioctl_v4l2, LINUX_IOCTL_VIDEO2_MIN, LINUX_IOCTL_VIDEO2_MAX }; static struct linux_ioctl_handler fbsd_usb = { linux_ioctl_fbsd_usb, FBSD_LUSB_MIN, FBSD_LUSB_MAX }; +static struct linux_ioctl_handler evdev_handler = +{ linux_ioctl_evdev, LINUX_IOCTL_EVDEV_MIN, LINUX_IOCTL_EVDEV_MAX }; DATA_SET(linux_ioctl_handler_set, cdrom_handler); DATA_SET(linux_ioctl_handler_set, vfat_handler); @@ -154,6 +159,7 @@ DATA_SET(linux_ioctl_handler_set, sg_handler); DATA_SET(linux_ioctl_handler_set, video_handler); DATA_SET(linux_ioctl_handler_set, video2_handler); DATA_SET(linux_ioctl_handler_set, fbsd_usb); +DATA_SET(linux_ioctl_handler_set, evdev_handler); struct handler_element { @@ -3621,6 +3627,65 @@ linux_ioctl_fbsd_usb(struct thread *td, struct linux_ioctl_args *args) } /* + * Some evdev ioctls must be translated. + * - EVIOCGMTSLOTS is a IOC_READ ioctl on Linux although it has input data + * (must be IOC_INOUT on FreeBSD). + * - On Linux, EVIOCGRAB, EVIOCREVOKE and EVIOCRMFF are defined as _IOW with + * an int argument. You don't pass an int pointer to the ioctl(), however, + * but just the int directly. On FreeBSD, they are defined as _IOWINT for + * this to work. + */ +static int +linux_ioctl_evdev(struct thread *td, struct linux_ioctl_args *args) +{ + cap_rights_t rights; + struct file *fp; + clockid_t clock; + int error; + + args->cmd = SETDIR(args->cmd); + + switch (args->cmd) { + case (EVIOCGRAB & ~IOC_DIRMASK) | IOC_IN: + args->cmd = EVIOCGRAB; + break; + case (EVIOCREVOKE & ~IOC_DIRMASK) | IOC_IN: + args->cmd = EVIOCREVOKE; + break; + case (EVIOCRMFF & ~IOC_DIRMASK) | IOC_IN: + args->cmd = EVIOCRMFF; + break; + case EVIOCSCLOCKID: { + error = copyin(PTRIN(args->arg), &clock, sizeof(clock)); + if (error != 0) + return (error); + if (clock & ~(LINUX_IOCTL_EVDEV_CLK)) + return (EINVAL); + error = linux_to_native_clockid(&clock, clock); + if (error != 0) + return (error); + + error = fget(td, args->fd, + cap_rights_init(&rights, CAP_IOCTL), &fp); + if (error != 0) + return (error); + + error = fo_ioctl(fp, EVIOCSCLOCKID, &clock, td->td_ucred, td); + fdrop(fp, td); + return (error); + } + default: + break; + } + + if (IOCBASECMD(args->cmd) == + ((EVIOCGMTSLOTS(0) & ~IOC_DIRMASK) | IOC_OUT)) + args->cmd = (args->cmd & ~IOC_DIRMASK) | IOC_INOUT; + + return (sys_ioctl(td, (struct ioctl_args *)args)); +} + +/* * main ioctl syscall function */ diff --git a/sys/compat/linux/linux_ioctl.h b/sys/compat/linux/linux_ioctl.h index fe017c7624b4..dc0b946740f7 100644 --- a/sys/compat/linux/linux_ioctl.h +++ b/sys/compat/linux/linux_ioctl.h @@ -750,7 +750,13 @@ */ #define LINUX_BTRFS_IOC_CLONE 0x9409 /* 0x40049409 */ - +/* + * Linux evdev ioctl min and max + */ +#define LINUX_IOCTL_EVDEV_MIN 0x4500 +#define LINUX_IOCTL_EVDEV_MAX 0x45ff +#define LINUX_IOCTL_EVDEV_CLK LINUX_CLOCK_REALTIME | \ + LINUX_CLOCK_MONOTONIC |LINUX_CLOCK_BOOTTIME /* * Pluggable ioctl handlers */ diff --git a/sys/compat/linux/linux_time.c b/sys/compat/linux/linux_time.c index 178af847f80f..be059a6092b9 100644 --- a/sys/compat/linux/linux_time.c +++ b/sys/compat/linux/linux_time.c @@ -207,8 +207,10 @@ linux_to_native_clockid(clockid_t *n, clockid_t l) case LINUX_CLOCK_MONOTONIC_COARSE: *n = CLOCK_MONOTONIC_FAST; break; - case LINUX_CLOCK_MONOTONIC_RAW: case LINUX_CLOCK_BOOTTIME: + *n = CLOCK_UPTIME; + break; + case LINUX_CLOCK_MONOTONIC_RAW: case LINUX_CLOCK_REALTIME_ALARM: case LINUX_CLOCK_BOOTTIME_ALARM: case LINUX_CLOCK_SGI_CYCLE: diff --git a/sys/conf/NOTES b/sys/conf/NOTES index fa7c74b33909..87257b6110dc 100644 --- a/sys/conf/NOTES +++ b/sys/conf/NOTES @@ -2212,42 +2212,7 @@ device rtwnfw options MCLSHIFT=12 # mbuf cluster shift in bits, 12 == 4KB options MSIZE=512 # mbuf size in bytes -# -# ATM related options (Cranor version) -# (note: this driver cannot be used with the HARP ATM stack) -# -# The `en' device provides support for Efficient Networks (ENI) -# ENI-155 PCI midway cards, and the Adaptec 155Mbps PCI ATM cards (ANA-59x0). -# -# The `hatm' device provides support for Fore/Marconi HE155 and HE622 -# ATM PCI cards. -# -# The `fatm' device provides support for Fore PCA200E ATM PCI cards. -# -# The `patm' device provides support for IDT77252 based cards like -# ProSum's ProATM-155 and ProATM-25 and IDT's evaluation boards. -# -# atm device provides generic atm functions and is required for -# atm devices. -# NATM enables the netnatm protocol family that can be used to -# bypass TCP/IP. -# -# utopia provides the access to the ATM PHY chips and is required for en, -# hatm and fatm. -# -# the current driver supports only PVC operations (no atm-arp, no multicast). -# for more details, please read the original documents at -# http://www.ccrc.wustl.edu/pub/chuck/tech/bsdatm/bsdatm.html -# -device atm -device en -device fatm #Fore PCA200E -device hatm #Fore/Marconi HE155/622 -device patm #IDT77252 cards (ProATM and IDT) -device utopia #ATM PHY driver -options NATM #native ATM - -options LIBMBPOOL #needed by patm, iatm +options LIBMBPOOL # # Sound drivers diff --git a/sys/conf/config.mk b/sys/conf/config.mk index 9fc37ffaf545..ef4b8820d947 100644 --- a/sys/conf/config.mk +++ b/sys/conf/config.mk @@ -25,8 +25,6 @@ opt_ratelimit.h: .endif opt_mrouting.h: echo "#define MROUTING 1" > ${.TARGET} -opt_natm.h: - echo "#define NATM 1" > ${.TARGET} opt_printf.h: echo "#define PRINTF_BUFR_SIZE 128" > ${.TARGET} opt_scsi.h: @@ -38,7 +36,7 @@ opt_wlan.h: KERN_OPTS.i386=NEW_PCIB DEV_PCI KERN_OPTS.amd64=NEW_PCIB DEV_PCI KERN_OPTS.powerpc=NEW_PCIB DEV_PCI -KERN_OPTS=MROUTING NATM IEEE80211_DEBUG \ +KERN_OPTS=MROUTING IEEE80211_DEBUG \ IEEE80211_AMPDU_AGE IEEE80211_SUPPORT_MESH DEV_BPF \ ${KERN_OPTS.${MACHINE}} ${KERN_OPTS_EXTRA} .if ${MK_INET_SUPPORT} != "no" diff --git a/sys/conf/files b/sys/conf/files index 161ca682880b..e49b5085f9b8 100644 --- a/sys/conf/files +++ b/sys/conf/files @@ -1425,9 +1425,6 @@ t6fw.fw optional cxgbe \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "t6fw.fw" -dev/cy/cy.c optional cy -dev/cy/cy_isa.c optional cy isa -dev/cy/cy_pci.c optional cy pci dev/cyapa/cyapa.c optional cyapa iicbus dev/dc/if_dc.c optional dc pci dev/dc/dcphy.c optional dc pci @@ -1579,8 +1576,6 @@ dev/e1000/e1000_mbx.c optional em \ dev/e1000/e1000_osdep.c optional em \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/et/if_et.c optional et -dev/en/if_en_pci.c optional en pci -dev/en/midway.c optional en dev/ep/if_ep.c optional ep dev/ep/if_ep_isa.c optional ep isa dev/ep/if_ep_pccard.c optional ep pccard @@ -1636,7 +1631,6 @@ dev/extres/regulator/regnode_if.m optional ext_resources regulator fdt dev/extres/regulator/regulator.c optional ext_resources regulator fdt dev/extres/regulator/regulator_bus.c optional ext_resources regulator fdt dev/extres/regulator/regulator_fixed.c optional ext_resources regulator fdt -dev/fatm/if_fatm.c optional fatm pci dev/fb/fbd.c optional fbd | vt dev/fb/fb_if.m standard dev/fb/splash.c optional sc splash @@ -1688,11 +1682,6 @@ dev/gpio/gpio_if.m optional gpio dev/gpio/gpiobus_if.m optional gpio dev/gpio/gpiopps.c optional gpiopps dev/gpio/ofw_gpiobus.c optional fdt gpio -dev/hatm/if_hatm.c optional hatm pci -dev/hatm/if_hatm_intr.c optional hatm pci -dev/hatm/if_hatm_ioctl.c optional hatm pci -dev/hatm/if_hatm_rx.c optional hatm pci -dev/hatm/if_hatm_tx.c optional hatm pci dev/hifn/hifn7751.c optional hifn dev/hme/if_hme.c optional hme dev/hme/if_hme_pci.c optional hme pci @@ -2374,13 +2363,6 @@ dev/ow/owll_if.m optional ow dev/ow/own_if.m optional ow dev/ow/ow_temp.c optional ow_temp dev/ow/owc_gpiobus.c optional owc gpio -dev/patm/if_patm.c optional patm pci -dev/patm/if_patm_attach.c optional patm pci -dev/patm/if_patm_intr.c optional patm pci -dev/patm/if_patm_ioctl.c optional patm pci -dev/patm/if_patm_rtables.c optional patm pci -dev/patm/if_patm_rx.c optional patm pci -dev/patm/if_patm_tx.c optional patm pci dev/pbio/pbio.c optional pbio isa dev/pccard/card_if.m standard dev/pccard/pccard.c optional pccard @@ -3202,9 +3184,6 @@ dev/videomode/videomode.c optional videomode dev/videomode/edid.c optional videomode dev/videomode/pickmode.c optional videomode dev/videomode/vesagtf.c optional videomode -dev/utopia/idtphy.c optional utopia -dev/utopia/suni.c optional utopia -dev/utopia/utopia.c optional utopia dev/vge/if_vge.c optional vge dev/viapm/viapm.c optional viapm pci dev/virtio/virtio.c optional virtio @@ -3884,7 +3863,6 @@ net/flowtable.c optional flowtable inet | flowtable inet6 net/ieee8023ad_lacp.c optional lagg net/if.c standard net/if_arcsubr.c optional arcnet -net/if_atmsubr.c optional atm net/if_bridge.c optional bridge inet | if_bridge inet net/if_clone.c standard net/if_dead.c standard @@ -3981,7 +3959,6 @@ net80211/ieee80211_xauth.c optional wlan wlan_xauth net80211/ieee80211_alq.c optional wlan ieee80211_alq netgraph/atm/ccatm/ng_ccatm.c optional ngatm_ccatm \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" -netgraph/atm/ng_atm.c optional ngatm_atm netgraph/atm/ngatmbase.c optional ngatm_atmbase \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" netgraph/atm/sscfu/ng_sscfu.c optional ngatm_sscfu \ @@ -4063,7 +4040,6 @@ netgraph/ng_vlan.c optional netgraph_vlan netinet/accf_data.c optional accept_filter_data inet netinet/accf_dns.c optional accept_filter_dns inet netinet/accf_http.c optional accept_filter_http inet -netinet/if_atm.c optional atm netinet/if_ether.c optional inet ether netinet/igmp.c optional inet netinet/in.c optional inet @@ -4188,9 +4164,6 @@ netipsec/xform_ipcomp.c optional ipsec inet | ipsec inet6 netipsec/xform_tcp.c optional ipsec inet tcp_signature | \ ipsec inet6 tcp_signature | ipsec_support inet tcp_signature | \ ipsec_support inet6 tcp_signature -netnatm/natm.c optional natm -netnatm/natm_pcb.c optional natm -netnatm/natm_proto.c optional natm netpfil/ipfw/dn_aqm_codel.c optional inet dummynet netpfil/ipfw/dn_aqm_pie.c optional inet dummynet netpfil/ipfw/dn_heap.c optional inet dummynet diff --git a/sys/conf/options b/sys/conf/options index c63826acbc03..847c7b916a40 100644 --- a/sys/conf/options +++ b/sys/conf/options @@ -553,10 +553,6 @@ DRM_DEBUG opt_drm.h TI_SF_BUF_JUMBO opt_ti.h TI_JUMBO_HDRSPLIT opt_ti.h -# XXX Conflict: # of devices vs network protocol (Native ATM). -# This makes "atm.h" unusable. -NATM - # DPT driver debug flags DPT_MEASURE_PERFORMANCE opt_dpt.h DPT_RESET_HBA opt_dpt.h diff --git a/sys/conf/options.arm64 b/sys/conf/options.arm64 index ad68292d61fc..29a20c533fc4 100644 --- a/sys/conf/options.arm64 +++ b/sys/conf/options.arm64 @@ -7,6 +7,8 @@ SOCDEV_VA opt_global.h THUNDERX_PASS_1_1_ERRATA opt_global.h VFP opt_global.h +DEV_PSCI opt_platform.h + # SoC Support SOC_ALLWINNER_A64 opt_soc.h SOC_BRCM_BCM2837 opt_soc.h diff --git a/sys/dev/ahci/ahci.c b/sys/dev/ahci/ahci.c index 41ba9328631e..7633fbafe9dc 100644 --- a/sys/dev/ahci/ahci.c +++ b/sys/dev/ahci/ahci.c @@ -249,7 +249,8 @@ ahci_attach(device_t dev) (ctlr->caps & AHCI_CAP_64BIT) ? BUS_SPACE_MAXADDR : BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL, BUS_SPACE_MAXSIZE, BUS_SPACE_UNRESTRICTED, BUS_SPACE_MAXSIZE, - 0, NULL, NULL, &ctlr->dma_tag)) { + ctlr->dma_coherent ? BUS_DMA_COHERENT : 0, NULL, NULL, + &ctlr->dma_tag)) { ahci_free_mem(dev); rman_fini(&ctlr->sc_iomem); return (ENXIO); diff --git a/sys/dev/ahci/ahci.h b/sys/dev/ahci/ahci.h index b8b908ffc82c..6b2a3cb70f0e 100644 --- a/sys/dev/ahci/ahci.h +++ b/sys/dev/ahci/ahci.h @@ -519,6 +519,7 @@ struct ahci_controller { void *argument; } interrupt[AHCI_MAX_PORTS]; void (*ch_start)(struct ahci_channel *); + int dma_coherent; /* DMA is cache-coherent */ }; enum ahci_err_type { diff --git a/sys/dev/ahci/ahci_generic.c b/sys/dev/ahci/ahci_generic.c index a427e7aeaeea..073b8dde802e 100644 --- a/sys/dev/ahci/ahci_generic.c +++ b/sys/dev/ahci/ahci_generic.c @@ -68,6 +68,8 @@ static struct ofw_compat_data compat_data[] = { static int ahci_fdt_probe(device_t dev) { + struct ahci_controller *ctlr = device_get_softc(dev); + phandle_t node; if (!ofw_bus_status_okay(dev)) return (ENXIO); @@ -76,6 +78,8 @@ ahci_fdt_probe(device_t dev) return (ENXIO); device_set_desc_copy(dev, "AHCI SATA controller"); + node = ofw_bus_get_node(dev); + ctlr->dma_coherent = OF_hasprop(node, "dma-coherent"); return (BUS_PROBE_DEFAULT); } #endif diff --git a/sys/dev/bhnd/bcma/bcma_erom.c b/sys/dev/bhnd/bcma/bcma_erom.c index c70e29c7826b..87422535603c 100644 --- a/sys/dev/bhnd/bcma/bcma_erom.c +++ b/sys/dev/bhnd/bcma/bcma_erom.c @@ -1367,6 +1367,157 @@ failed: return error; } +static int +bcma_erom_dump(bhnd_erom_t *erom) +{ + struct bcma_erom *sc; + uint32_t entry; + int error; + + sc = (struct bcma_erom *)erom; + + bcma_erom_reset(sc); + + while (!(error = bcma_erom_read32(sc, &entry))) { + /* Handle EOF */ + if (entry == BCMA_EROM_TABLE_EOF) { + EROM_LOG(sc, "EOF\n"); + return (0); + } + + /* Invalid entry */ + if (!BCMA_EROM_GET_ATTR(entry, ENTRY_ISVALID)) { + EROM_LOG(sc, "invalid EROM entry %#x\n", entry); + return (EINVAL); + } + + switch (BCMA_EROM_GET_ATTR(entry, ENTRY_TYPE)) { + case BCMA_EROM_ENTRY_TYPE_CORE: { + /* CoreDescA */ + EROM_LOG(sc, "coreA (0x%x)\n", entry); + EROM_LOG(sc, "\tdesigner:\t0x%x\n", + BCMA_EROM_GET_ATTR(entry, COREA_DESIGNER)); + EROM_LOG(sc, "\tid:\t\t0x%x\n", + BCMA_EROM_GET_ATTR(entry, COREA_ID)); + EROM_LOG(sc, "\tclass:\t\t0x%x\n", + BCMA_EROM_GET_ATTR(entry, COREA_CLASS)); + + /* CoreDescB */ + if ((error = bcma_erom_read32(sc, &entry))) { + EROM_LOG(sc, "error reading CoreDescB: %d\n", + error); + return (error); + } + + if (!BCMA_EROM_ENTRY_IS(entry, CORE)) { + EROM_LOG(sc, "invalid core descriptor; found " + "unexpected entry %#x (type=%s)\n", + entry, bcma_erom_entry_type_name(entry)); + return (EINVAL); + } + + EROM_LOG(sc, "coreB (0x%x)\n", entry); + EROM_LOG(sc, "\trev:\t0x%x\n", + BCMA_EROM_GET_ATTR(entry, COREB_REV)); + EROM_LOG(sc, "\tnummp:\t0x%x\n", + BCMA_EROM_GET_ATTR(entry, COREB_NUM_MP)); + EROM_LOG(sc, "\tnumdp:\t0x%x\n", + BCMA_EROM_GET_ATTR(entry, COREB_NUM_DP)); + EROM_LOG(sc, "\tnumwmp:\t0x%x\n", + BCMA_EROM_GET_ATTR(entry, COREB_NUM_WMP)); + EROM_LOG(sc, "\tnumwsp:\t0x%x\n", + BCMA_EROM_GET_ATTR(entry, COREB_NUM_WMP)); + + break; + } + case BCMA_EROM_ENTRY_TYPE_MPORT: + EROM_LOG(sc, "\tmport 0x%x\n", entry); + EROM_LOG(sc, "\t\tport:\t0x%x\n", + BCMA_EROM_GET_ATTR(entry, MPORT_NUM)); + EROM_LOG(sc, "\t\tid:\t\t0x%x\n", + BCMA_EROM_GET_ATTR(entry, MPORT_ID)); + break; + + case BCMA_EROM_ENTRY_TYPE_REGION: { + bool addr64; + uint8_t size_type; + + addr64 = (BCMA_EROM_GET_ATTR(entry, REGION_64BIT) != 0); + size_type = BCMA_EROM_GET_ATTR(entry, REGION_SIZE); + + EROM_LOG(sc, "\tregion 0x%x:\n", entry); + EROM_LOG(sc, "\t\t%s:\t0x%x\n", + addr64 ? "baselo" : "base", + BCMA_EROM_GET_ATTR(entry, REGION_BASE)); + EROM_LOG(sc, "\t\tport:\t0x%x\n", + BCMA_EROM_GET_ATTR(entry, REGION_PORT)); + EROM_LOG(sc, "\t\ttype:\t0x%x\n", + BCMA_EROM_GET_ATTR(entry, REGION_TYPE)); + EROM_LOG(sc, "\t\tsztype:\t0x%hhx\n", size_type); + + /* Read the base address high bits */ + if (addr64) { + if ((error = bcma_erom_read32(sc, &entry))) { + EROM_LOG(sc, "error reading region " + "base address high bits %d\n", + error); + return (error); + } + + EROM_LOG(sc, "\t\tbasehi:\t0x%x\n", entry); + } + + /* Read extended size descriptor */ + if (size_type == BCMA_EROM_REGION_SIZE_OTHER) { + bool size64; + + if ((error = bcma_erom_read32(sc, &entry))) { + EROM_LOG(sc, "error reading region " + "size descriptor %d\n", + error); + return (error); + } + + if (BCMA_EROM_GET_ATTR(entry, RSIZE_64BIT)) + size64 = true; + else + size64 = false; + + EROM_LOG(sc, "\t\t%s:\t0x%x\n", + size64 ? "sizelo" : "size", + BCMA_EROM_GET_ATTR(entry, RSIZE_VAL)); + + if (size64) { + error = bcma_erom_read32(sc, &entry); + if (error) { + EROM_LOG(sc, "error reading " + "region size high bits: " + "%d\n", error); + return (error); + } + + EROM_LOG(sc, "\t\tsizehi:\t0x%x\n", + entry); + } + } + break; + } + + default: + EROM_LOG(sc, "unknown EROM entry 0x%x (type=%s)\n", + entry, bcma_erom_entry_type_name(entry)); + return (EINVAL); + } + } + + if (error == ENOENT) + EROM_LOG(sc, "BCMA EROM table missing terminating EOF\n"); + else if (error) + EROM_LOG(sc, "EROM read failed: %d\n", error); + + return (error); +} + static kobj_method_t bcma_erom_methods[] = { KOBJMETHOD(bhnd_erom_probe, bcma_erom_probe), KOBJMETHOD(bhnd_erom_probe_static, bcma_erom_probe_static), @@ -1377,6 +1528,7 @@ static kobj_method_t bcma_erom_methods[] = { KOBJMETHOD(bhnd_erom_free_core_table, bcma_erom_free_core_table), KOBJMETHOD(bhnd_erom_lookup_core, bcma_erom_lookup_core), KOBJMETHOD(bhnd_erom_lookup_core_addr, bcma_erom_lookup_core_addr), + KOBJMETHOD(bhnd_erom_dump, bcma_erom_dump), KOBJMETHOD_END }; diff --git a/sys/dev/bhnd/bhnd_erom.h b/sys/dev/bhnd/bhnd_erom.h index 6f34a241ddff..b9c33c0445c8 100644 --- a/sys/dev/bhnd/bhnd_erom.h +++ b/sys/dev/bhnd/bhnd_erom.h @@ -240,4 +240,19 @@ bhnd_erom_lookup_core_addr(bhnd_erom_t *erom, const struct bhnd_core_match *desc core, addr, size)); }; +/** + * Enumerate and print all entries in @p erom. + * + * @param erom The erom parser to be enumerated. + * + * @retval 0 success + * @retval non-zero If an error occurs parsing the EROM table, a regular + * unix error code will be returned. + */ +static inline int +bhnd_erom_dump(bhnd_erom_t *erom) +{ + return (BHND_EROM_DUMP(erom)); +} + #endif /* _BHND_EROM_BHND_EROM_H_ */ diff --git a/sys/dev/bhnd/bhnd_erom_if.m b/sys/dev/bhnd/bhnd_erom_if.m index 9295e758dbcf..cee0551b0dbc 100644 --- a/sys/dev/bhnd/bhnd_erom_if.m +++ b/sys/dev/bhnd/bhnd_erom_if.m @@ -241,3 +241,16 @@ METHOD int lookup_core_addr { bhnd_addr_t *addr; bhnd_size_t *size; }; + +/** + * Enumerate and print all EROM table entries. + * + * @param erom The erom parser to be enumerated. + * + * @retval 0 success + * @retval non-zero If an error occurs reading the EROM table, a regular + * unix error code will be returned. + */ +METHOD int dump { + bhnd_erom_t *erom; +}; diff --git a/sys/dev/bhnd/nvram/bhnd_nvram_data_sprom.c b/sys/dev/bhnd/nvram/bhnd_nvram_data_sprom.c index eba711ebce1a..12035a84b112 100644 --- a/sys/dev/bhnd/nvram/bhnd_nvram_data_sprom.c +++ b/sys/dev/bhnd/nvram/bhnd_nvram_data_sprom.c @@ -1256,7 +1256,6 @@ bhnd_nvram_sprom_read_var(struct bhnd_sprom_opcode_state *state, /* Provide value wrapper */ return (bhnd_nvram_val_init(val, var->fmt, inp, ilen, var->type, BHND_NVRAM_VAL_BORROW_DATA)); - return (error); } diff --git a/sys/dev/bhnd/siba/siba_erom.c b/sys/dev/bhnd/siba/siba_erom.c index 1c85c1ed40b2..58ab3d37f00b 100644 --- a/sys/dev/bhnd/siba/siba_erom.c +++ b/sys/dev/bhnd/siba/siba_erom.c @@ -519,6 +519,65 @@ siba_erom_free_core_table(bhnd_erom_t *erom, struct bhnd_core_info *cores) free(cores, M_BHND); } +/* BHND_EROM_DUMP() */ +static int +siba_erom_dump(bhnd_erom_t *erom) +{ + struct siba_erom *sc; + int error; + + sc = (struct siba_erom *)erom; + + /* Enumerate all cores. */ + for (u_int i = 0; i < sc->io.ncores; i++) { + uint32_t idhigh, idlow; + uint32_t nraddr; + + idhigh = siba_eio_read_4(&sc->io, i, + SB0_REG_ABS(SIBA_CFG0_IDHIGH)); + idlow = siba_eio_read_4(&sc->io, i, + SB0_REG_ABS(SIBA_CFG0_IDLOW)); + + printf("siba core %u:\n", i); + printf("\tvendor:\t0x%04x\n", SIBA_REG_GET(idhigh, IDH_VENDOR)); + printf("\tdevice:\t0x%04x\n", SIBA_REG_GET(idhigh, IDH_DEVICE)); + printf("\trev:\t0x%04x\n", SIBA_IDH_CORE_REV(idhigh)); + printf("\tsbrev:\t0x%02x\n", SIBA_REG_GET(idlow, IDL_SBREV)); + + /* Enumerate the address match registers */ + nraddr = SIBA_REG_GET(idlow, IDL_NRADDR); + printf("\tnraddr\t0x%04x\n", nraddr); + + for (size_t addrspace = 0; addrspace < nraddr; addrspace++) { + uint32_t am, am_addr, am_size; + u_int am_offset; + + /* Determine the register offset */ + am_offset = siba_admatch_offset(addrspace); + if (am_offset == 0) { + printf("addrspace %zu unsupported", + addrspace); + break; + } + + /* Read and parse the address match register */ + am = siba_eio_read_4(&sc->io, i, am_offset); + error = siba_parse_admatch(am, &am_addr, &am_size); + if (error) { + printf("failed to decode address match " + "register value 0x%x\n", am); + continue; + } + + printf("\taddrspace %zu\n", addrspace); + printf("\t\taddr: 0x%08x\n", am_addr); + printf("\t\tsize: 0x%08x\n", am_size); + } + } + + return (0); +} + static kobj_method_t siba_erom_methods[] = { KOBJMETHOD(bhnd_erom_probe, siba_erom_probe), KOBJMETHOD(bhnd_erom_probe_static, siba_erom_probe_static), @@ -529,6 +588,7 @@ static kobj_method_t siba_erom_methods[] = { KOBJMETHOD(bhnd_erom_free_core_table, siba_erom_free_core_table), KOBJMETHOD(bhnd_erom_lookup_core, siba_erom_lookup_core), KOBJMETHOD(bhnd_erom_lookup_core_addr, siba_erom_lookup_core_addr), + KOBJMETHOD(bhnd_erom_dump, siba_erom_dump), KOBJMETHOD_END }; diff --git a/sys/dev/cxgbe/cxgbei/icl_cxgbei.c b/sys/dev/cxgbe/cxgbei/icl_cxgbei.c index 991c190bf3b2..c07e5a9ded67 100644 --- a/sys/dev/cxgbe/cxgbei/icl_cxgbei.c +++ b/sys/dev/cxgbe/cxgbei/icl_cxgbei.c @@ -1070,7 +1070,7 @@ icl_cxgbei_mod_load(void) */ prsv_zone = uma_zcreate("Pagepod reservations", sizeof(struct ppod_reservation), NULL, NULL, NULL, NULL, - CACHE_LINE_SIZE, 0); + UMA_ALIGN_CACHE, 0); refcount_init(&icl_cxgbei_ncons, 0); diff --git a/sys/dev/cxgbe/iw_cxgbe/iw_cxgbe.h b/sys/dev/cxgbe/iw_cxgbe/iw_cxgbe.h index 447756da27c8..f16540c5df73 100644 --- a/sys/dev/cxgbe/iw_cxgbe/iw_cxgbe.h +++ b/sys/dev/cxgbe/iw_cxgbe/iw_cxgbe.h @@ -157,49 +157,70 @@ static inline int c4iw_num_stags(struct c4iw_rdev *rdev) return (int)(rdev->adap->vres.stag.size >> 5); } -#define C4IW_WR_TO (10*HZ) +#define C4IW_WR_TO (60*HZ) struct c4iw_wr_wait { int ret; - atomic_t completion; + struct completion completion; }; static inline void c4iw_init_wr_wait(struct c4iw_wr_wait *wr_waitp) { wr_waitp->ret = 0; - atomic_set(&wr_waitp->completion, 0); + init_completion(&wr_waitp->completion); } static inline void c4iw_wake_up(struct c4iw_wr_wait *wr_waitp, int ret) { wr_waitp->ret = ret; - atomic_set(&wr_waitp->completion, 1); - wakeup(wr_waitp); + complete(&wr_waitp->completion); } static inline int c4iw_wait_for_reply(struct c4iw_rdev *rdev, struct c4iw_wr_wait *wr_waitp, - u32 hwtid, u32 qpid, const char *func) + u32 hwtid, u32 qpid, const char *func) { struct adapter *sc = rdev->adap; unsigned to = C4IW_WR_TO; + int ret; + int timedout = 0; + struct timeval t1, t2; + + if (c4iw_fatal_error(rdev)) { + wr_waitp->ret = -EIO; + goto out; + } - while (!atomic_read(&wr_waitp->completion)) { - tsleep(wr_waitp, 0, "c4iw_wait", to); - if (SIGPENDING(curthread)) { - printf("%s - Device %s not responding - " - "tid %u qpid %u\n", func, - device_get_nameunit(sc->dev), hwtid, qpid); - if (c4iw_fatal_error(rdev)) { - wr_waitp->ret = -EIO; - break; - } - to = to << 2; - } - } + getmicrotime(&t1); + do { + ret = wait_for_completion_timeout(&wr_waitp->completion, to); + if (!ret) { + getmicrotime(&t2); + timevalsub(&t2, &t1); + printf("%s - Device %s not responding after %ld.%06ld " + "seconds - tid %u qpid %u\n", func, + device_get_nameunit(sc->dev), t2.tv_sec, t2.tv_usec, + hwtid, qpid); + if (c4iw_fatal_error(rdev)) { + wr_waitp->ret = -EIO; + break; + } + to = to << 2; + timedout = 1; + } + } while (!ret); + +out: + if (timedout) { + getmicrotime(&t2); + timevalsub(&t2, &t1); + printf("%s - Device %s reply after %ld.%06ld seconds - " + "tid %u qpid %u\n", func, device_get_nameunit(sc->dev), + t2.tv_sec, t2.tv_usec, hwtid, qpid); + } if (wr_waitp->ret) - CTR4(KTR_IW_CXGBE, "%s: FW reply %d tid %u qpid %u", - device_get_nameunit(sc->dev), wr_waitp->ret, hwtid, qpid); + CTR4(KTR_IW_CXGBE, "%p: FW reply %d tid %u qpid %u", sc, + wr_waitp->ret, hwtid, qpid); return (wr_waitp->ret); } diff --git a/sys/dev/cy/cy.c b/sys/dev/cy/cy.c deleted file mode 100644 index ad4fa145cf7e..000000000000 --- a/sys/dev/cy/cy.c +++ /dev/null @@ -1,2242 +0,0 @@ -/*- - * cyclades cyclom-y serial driver - * Andrew Herbert <andrew@werple.apana.org.au>, 17 August 1993 - * - * Copyright (c) 1993 Andrew Herbert. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name Andrew Herbert may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN - * NO EVENT SHALL I BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include "opt_compat.h" - -/* - * TODO: - * Atomic COR change. - * Consoles. - */ - -/* - * Temporary compile-time configuration options. - */ -#define RxFifoThreshold (CD1400_RX_FIFO_SIZE / 2) - /* Number of chars in the receiver FIFO before an - * an interrupt is generated. Should depend on - * line speed. Needs to be about 6 on a 486DX33 - * for 4 active ports at 115200 bps. Why doesn't - * 10 work? - */ -#define PollMode /* Use polling-based irq service routine, not the - * hardware svcack lines. Must be defined for - * Cyclom-16Y boards. Less efficient for Cyclom-8Ys, - * and stops 4 * 115200 bps from working. - */ -#undef Smarts /* Enable slightly more CD1400 intelligence. Mainly - * the output CR/LF processing, plus we can avoid a - * few checks usually done in ttyinput(). - * - * XXX not fully implemented, and not particularly - * worthwhile. - */ -#undef CyDebug /* Include debugging code (not very expensive). */ - -/* These will go away. */ -#undef SOFT_CTS_OFLOW -#define SOFT_HOTCHAR - -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/bus.h> -#include <sys/conf.h> -#include <sys/fcntl.h> -#include <sys/interrupt.h> -#include <sys/kernel.h> -#include <sys/lock.h> -#include <sys/malloc.h> -#include <sys/mutex.h> -#include <sys/serial.h> -#include <sys/syslog.h> -#include <sys/tty.h> - -#include <machine/psl.h> - -#include <dev/ic/cd1400.h> - -#include <dev/cy/cyreg.h> -#include <dev/cy/cyvar.h> - -#define NCY 10 /* KLUDGE */ - -#define NPORTS (NCY * CY_MAX_PORTS) - -#define CY_MAX_PORTS (CD1400_NO_OF_CHANNELS * CY_MAX_CD1400s) - -/* We encode the cyclom unit number (cyu) in spare bits in the IVR's. */ -#define CD1400_xIVR_CHAN_SHIFT 3 -#define CD1400_xIVR_CHAN 0x1F - -/* - * ETC states. com->etc may also contain a hardware ETC command value, - * meaning that execution of that command is pending. - */ -#define ETC_NONE 0 /* we depend on bzero() setting this */ -#define ETC_BREAK_STARTING 1 -#define ETC_BREAK_STARTED 2 -#define ETC_BREAK_ENDING 3 -#define ETC_BREAK_ENDED 4 - -#define LOTS_OF_EVENTS 64 /* helps separate urgent events from input */ - -/* - * com state bits. - * (CS_BUSY | CS_TTGO) and (CS_BUSY | CS_TTGO | CS_ODEVREADY) must be higher - * than the other bits so that they can be tested as a group without masking - * off the low bits. - * - * The following com and tty flags correspond closely: - * CS_BUSY = TS_BUSY (maintained by cystart(), cypoll() and - * comstop()) - * CS_TTGO = ~TS_TTSTOP (maintained by cyparam() and cystart()) - * CS_CTS_OFLOW = CCTS_OFLOW (maintained by cyparam()) - * CS_RTS_IFLOW = CRTS_IFLOW (maintained by cyparam()) - * TS_FLUSH is not used. - * XXX I think TIOCSETA doesn't clear TS_TTSTOP when it clears IXON. - * XXX CS_*FLOW should be CF_*FLOW in com->flags (control flags not state). - */ -#define CS_BUSY 0x80 /* output in progress */ -#define CS_TTGO 0x40 /* output not stopped by XOFF */ -#define CS_ODEVREADY 0x20 /* external device h/w ready (CTS) */ -#define CS_CHECKMSR 1 /* check of MSR scheduled */ -#define CS_CTS_OFLOW 2 /* use CTS output flow control */ -#define CS_ODONE 4 /* output completed */ -#define CS_RTS_IFLOW 8 /* use RTS input flow control */ -#define CSE_ODONE 1 /* output transmitted */ - -static char const * const error_desc[] = { -#define CE_OVERRUN 0 - "silo overflow", -#define CE_INTERRUPT_BUF_OVERFLOW 1 - "interrupt-level buffer overflow", -#define CE_TTY_BUF_OVERFLOW 2 - "tty-level buffer overflow", -}; - -#define CE_NTYPES 3 -#define CE_RECORD(com, errnum) (++(com)->delta_error_counts[errnum]) - -#ifdef SMP -#define COM_LOCK() mtx_lock_spin(&cy_lock) -#define COM_UNLOCK() mtx_unlock_spin(&cy_lock) -#else -#define COM_LOCK() -#define COM_UNLOCK() -#endif - -/* types. XXX - should be elsewhere */ -typedef u_char bool_t; /* boolean */ - -/* queue of linear buffers */ -struct lbq { - u_char *l_head; /* next char to process */ - u_char *l_tail; /* one past the last char to process */ - struct lbq *l_next; /* next in queue */ - bool_t l_queued; /* nonzero if queued */ -}; - -/* com device structure */ -struct com_s { - u_char state; /* miscellaneous flag bits */ - u_char etc; /* pending Embedded Transmit Command */ - u_char extra_state; /* more flag bits, separate for order trick */ - u_char gfrcr_image; /* copy of value read from GFRCR */ - u_char mcr_dtr; /* MCR bit that is wired to DTR */ - u_char mcr_image; /* copy of value written to MCR */ - u_char mcr_rts; /* MCR bit that is wired to RTS */ - int unit; /* unit number */ - - /* - * The high level of the driver never reads status registers directly - * because there would be too many side effects to handle conveniently. - * Instead, it reads copies of the registers stored here by the - * interrupt handler. - */ - u_char last_modem_status; /* last MSR read by intr handler */ - u_char prev_modem_status; /* last MSR handled by high level */ - - u_char *ibuf; /* start of input buffer */ - u_char *ibufend; /* end of input buffer */ - u_char *ibufold; /* old input buffer, to be freed */ - u_char *ihighwater; /* threshold in input buffer */ - u_char *iptr; /* next free spot in input buffer */ - int ibufsize; /* size of ibuf (not include error bytes) */ - int ierroff; /* offset of error bytes in ibuf */ - - struct lbq obufq; /* head of queue of output buffers */ - struct lbq obufs[2]; /* output buffers */ - - int cy_align; /* index for register alignment */ - cy_addr cy_iobase; /* base address of this port's cyclom */ - cy_addr iobase; /* base address of this port's cd1400 */ - int mcr_rts_reg; /* cd1400 reg number of reg holding mcr_rts */ - - struct tty *tp; /* cross reference */ - - u_long bytes_in; /* statistics */ - u_long bytes_out; - u_int delta_error_counts[CE_NTYPES]; - u_long error_counts[CE_NTYPES]; - - u_int recv_exception; /* exception chars received */ - u_int mdm; /* modem signal changes */ -#ifdef CyDebug - u_int start_count; /* no. of calls to cystart() */ - u_int start_real; /* no. of calls that did something */ -#endif - u_char car; /* CD1400 CAR shadow (if first unit in cd) */ - u_char channel_control;/* CD1400 CCR control command shadow */ - u_char cor[3]; /* CD1400 COR1-3 shadows */ - u_char intr_enable; /* CD1400 SRER shadow */ - - /* - * Data area for output buffers. Someday we should build the output - * buffer queue without copying data. - */ - u_char obuf1[256]; - u_char obuf2[256]; -}; - -devclass_t cy_devclass; -char cy_driver_name[] = "cy"; - -static void cd1400_channel_cmd(struct com_s *com, int cmd); -static void cd1400_channel_cmd_wait(struct com_s *com); -static void cd_etc(struct com_s *com, int etc); -static int cd_getreg(struct com_s *com, int reg); -static void cd_setreg(struct com_s *com, int reg, int val); -static void cyinput(struct com_s *com); -static int cyparam(struct tty *tp, struct termios *t); -static void cypoll(void *arg); -static void cysettimeout(void); -static int cysetwater(struct com_s *com, speed_t speed); -static int cyspeed(speed_t speed, u_long cy_clock, int *prescaler_io); -static void cystart(struct tty *tp); -static void comstop(struct tty *tp, int rw); -static timeout_t cywakeup; -static void disc_optim(struct tty *tp, struct termios *t, - struct com_s *com); - -static t_break_t cybreak; -static t_modem_t cymodem; -static t_open_t cyopen; -static t_close_t cyclose; - -#ifdef CyDebug -void cystatus(int unit); -#endif - -static struct mtx cy_lock; -static int cy_inited; - -/* table and macro for fast conversion from a unit number to its com struct */ -static struct com_s *p_cy_addr[NPORTS]; -#define cy_addr(unit) (p_cy_addr[unit]) - -static u_int cy_events; /* input chars + weighted output completions */ -static void *cy_fast_ih; -static void *cy_slow_ih; -static int cy_timeout; -static int cy_timeouts_until_log; -static struct callout_handle cy_timeout_handle - = CALLOUT_HANDLE_INITIALIZER(&cy_timeout_handle); - -#ifdef CyDebug -static u_int cd_inbs; -static u_int cy_inbs; -static u_int cd_outbs; -static u_int cy_outbs; -static u_int cy_svrr_probes; -static u_int cy_timeouts; -#endif - -static int cy_chip_offset[] = { - 0x0000, 0x0400, 0x0800, 0x0c00, 0x0200, 0x0600, 0x0a00, 0x0e00, -}; -static int cy_nr_cd1400s[NCY]; -static int cy_total_devices; -#undef RxFifoThreshold -static int volatile RxFifoThreshold = (CD1400_RX_FIFO_SIZE / 2); - -int -cy_units(cy_addr cy_iobase, int cy_align) -{ - int cyu; - u_char firmware_version; - int i; - cy_addr iobase; - - for (cyu = 0; cyu < CY_MAX_CD1400s; ++cyu) { - iobase = cy_iobase + (cy_chip_offset[cyu] << cy_align); - - /* wait for chip to become ready for new command */ - for (i = 0; i < 10; i++) { - DELAY(50); - if (!cd_inb(iobase, CD1400_CCR, cy_align)) - break; - } - - /* clear the GFRCR register */ - cd_outb(iobase, CD1400_GFRCR, cy_align, 0); - - /* issue a reset command */ - cd_outb(iobase, CD1400_CCR, cy_align, - CD1400_CCR_CMDRESET | CD1400_CCR_FULLRESET); - - /* XXX bogus initialization to avoid a gcc bug/warning. */ - firmware_version = 0; - - /* wait for the CD1400 to initialize itself */ - for (i = 0; i < 200; i++) { - DELAY(50); - - /* retrieve firmware version */ - firmware_version = cd_inb(iobase, CD1400_GFRCR, - cy_align); - if ((firmware_version & 0xf0) == 0x40) - break; - } - - /* - * Anything in the 0x40-0x4F range is fine. - * If one CD1400 is bad then we don't support higher - * numbered good ones on this board. - */ - if ((firmware_version & 0xf0) != 0x40) - break; - } - return (cyu); -} - -void * -cyattach_common(cy_addr cy_iobase, int cy_align) -{ - int adapter; - int cyu; - u_char firmware_version; - cy_addr iobase; - int ncyu; - int unit; - struct tty *tp; - - while (cy_inited != 2) - if (atomic_cmpset_int(&cy_inited, 0, 1)) { - mtx_init(&cy_lock, cy_driver_name, NULL, MTX_SPIN); - atomic_store_rel_int(&cy_inited, 2); - } - - adapter = cy_total_devices; - if ((u_int)adapter >= NCY) { - printf( - "cy%d: can't attach adapter: insufficient cy devices configured\n", - adapter); - return (NULL); - } - ncyu = cy_units(cy_iobase, cy_align); - if (ncyu == 0) - return (NULL); - cy_nr_cd1400s[adapter] = ncyu; - cy_total_devices++; - - unit = adapter * CY_MAX_PORTS; - for (cyu = 0; cyu < ncyu; ++cyu) { - int cdu; - - iobase = (cy_addr) (cy_iobase - + (cy_chip_offset[cyu] << cy_align)); - firmware_version = cd_inb(iobase, CD1400_GFRCR, cy_align); - - /* Set up a receive timeout period of than 1+ ms. */ - cd_outb(iobase, CD1400_PPR, cy_align, - howmany(CY_CLOCK(firmware_version) - / CD1400_PPR_PRESCALER, 1000)); - - for (cdu = 0; cdu < CD1400_NO_OF_CHANNELS; ++cdu, ++unit) { - struct com_s *com; - int s; - - com = malloc(sizeof *com, M_DEVBUF, M_NOWAIT | M_ZERO); - if (com == NULL) - break; - com->unit = unit; - com->gfrcr_image = firmware_version; - if (CY_RTS_DTR_SWAPPED(firmware_version)) { - com->mcr_dtr = CD1400_MSVR1_RTS; - com->mcr_rts = CD1400_MSVR2_DTR; - com->mcr_rts_reg = CD1400_MSVR2; - } else { - com->mcr_dtr = CD1400_MSVR2_DTR; - com->mcr_rts = CD1400_MSVR1_RTS; - com->mcr_rts_reg = CD1400_MSVR1; - } - com->obufs[0].l_head = com->obuf1; - com->obufs[1].l_head = com->obuf2; - - com->cy_align = cy_align; - com->cy_iobase = cy_iobase; - com->iobase = iobase; - com->car = ~CD1400_CAR_CHAN; - - tp = com->tp = ttyalloc(); - tp->t_open = cyopen; - tp->t_close = cyclose; - tp->t_oproc = cystart; - tp->t_stop = comstop; - tp->t_param = cyparam; - tp->t_break = cybreak; - tp->t_modem = cymodem; - tp->t_sc = com; - - if (cysetwater(com, tp->t_init_in.c_ispeed) != 0) { - free(com, M_DEVBUF); - return (NULL); - } - - s = spltty(); - cy_addr(unit) = com; - splx(s); - - if (cy_fast_ih == NULL) { - swi_add(&tty_intr_event, "cy", cypoll, NULL, SWI_TTY, 0, - &cy_fast_ih); - swi_add(&clk_intr_event, "cy", cypoll, NULL, SWI_CLOCK, 0, - &cy_slow_ih); - } - ttycreate(tp, TS_CALLOUT, "c%r%r", - adapter, unit % CY_MAX_PORTS); - } - } - - /* ensure an edge for the next interrupt */ - cy_outb(cy_iobase, CY_CLEAR_INTR, cy_align, 0); - - return (cy_addr(adapter * CY_MAX_PORTS)); -} - -static int -cyopen(struct tty *tp, struct cdev *dev) -{ - struct com_s *com; - int s; - - com = tp->t_sc; - s = spltty(); - /* - * We jump to this label after all non-interrupted sleeps to pick - * up any changes of the device state. - */ - - /* Encode per-board unit in LIVR for access in intr routines. */ - cd_setreg(com, CD1400_LIVR, - (com->unit & CD1400_xIVR_CHAN) << CD1400_xIVR_CHAN_SHIFT); - - /* - * Flush fifos. This requires a full channel reset which - * also disables the transmitter and receiver. Recover - * from this. - */ - cd1400_channel_cmd(com, - CD1400_CCR_CMDRESET | CD1400_CCR_CHANRESET); - cd1400_channel_cmd(com, com->channel_control); - - critical_enter(); - COM_LOCK(); - com->prev_modem_status = com->last_modem_status - = cd_getreg(com, CD1400_MSVR2); - cd_setreg(com, CD1400_SRER, - com->intr_enable - = CD1400_SRER_MDMCH | CD1400_SRER_RXDATA); - COM_UNLOCK(); - critical_exit(); - cysettimeout(); - return (0); -} - - -static void -cyclose(struct tty *tp) -{ - cy_addr iobase; - struct com_s *com; - int s; - int unit; - - com = tp->t_sc; - unit = com->unit; - iobase = com->iobase; - s = spltty(); - /* XXX */ - critical_enter(); - COM_LOCK(); - com->etc = ETC_NONE; - cd_setreg(com, CD1400_COR2, com->cor[1] &= ~CD1400_COR2_ETC); - COM_UNLOCK(); - critical_exit(); - cd_etc(com, CD1400_ETC_STOPBREAK); - cd1400_channel_cmd(com, CD1400_CCR_CMDRESET | CD1400_CCR_FTF); - - { - critical_enter(); - COM_LOCK(); - cd_setreg(com, CD1400_SRER, com->intr_enable = 0); - COM_UNLOCK(); - critical_exit(); - tp = com->tp; - if ((tp->t_cflag & HUPCL) - /* - * XXX we will miss any carrier drop between here and the - * next open. Perhaps we should watch DCD even when the - * port is closed; it is not sufficient to check it at - * the next open because it might go up and down while - * we're not watching. - */ - || (!tp->t_actout - && !(com->prev_modem_status & CD1400_MSVR2_CD) - && !(tp->t_init_in.c_cflag & CLOCAL)) - || !(tp->t_state & TS_ISOPEN)) { - (void)cymodem(tp, 0, SER_DTR); - - /* Disable receiver (leave transmitter enabled). */ - com->channel_control = CD1400_CCR_CMDCHANCTL - | CD1400_CCR_XMTEN - | CD1400_CCR_RCVDIS; - cd1400_channel_cmd(com, com->channel_control); - - ttydtrwaitstart(tp); - } - } - tp->t_actout = FALSE; - wakeup(&tp->t_actout); - wakeup(TSA_CARR_ON(tp)); /* restart any wopeners */ - splx(s); -} - -/* - * This function: - * a) needs to be called with COM_LOCK() held, and - * b) needs to return with COM_LOCK() held. - */ -static void -cyinput(struct com_s *com) -{ - u_char *buf; - int incc; - u_char line_status; - int recv_data; - struct tty *tp; - - buf = com->ibuf; - tp = com->tp; - if (!(tp->t_state & TS_ISOPEN)) { - cy_events -= (com->iptr - com->ibuf); - com->iptr = com->ibuf; - return; - } - if (tp->t_state & TS_CAN_BYPASS_L_RINT) { - /* - * Avoid the grotesquely inefficient lineswitch routine - * (ttyinput) in "raw" mode. It usually takes about 450 - * instructions (that's without canonical processing or echo!). - * slinput is reasonably fast (usually 40 instructions plus - * call overhead). - */ - - do { - /* - * This may look odd, but it is using save-and-enable - * semantics instead of the save-and-disable semantics - * that are used everywhere else. - */ - COM_UNLOCK(); - critical_exit(); - incc = com->iptr - buf; - if (tp->t_rawq.c_cc + incc > tp->t_ihiwat - && (com->state & CS_RTS_IFLOW - || tp->t_iflag & IXOFF) - && !(tp->t_state & TS_TBLOCK)) - ttyblock(tp); - com->delta_error_counts[CE_TTY_BUF_OVERFLOW] - += b_to_q((char *)buf, incc, &tp->t_rawq); - buf += incc; - tk_nin += incc; - tk_rawcc += incc; - tp->t_rawcc += incc; - ttwakeup(tp); - if (tp->t_state & TS_TTSTOP - && (tp->t_iflag & IXANY - || tp->t_cc[VSTART] == tp->t_cc[VSTOP])) { - tp->t_state &= ~TS_TTSTOP; - tp->t_lflag &= ~FLUSHO; - cystart(tp); - } - critical_enter(); - COM_LOCK(); - } while (buf < com->iptr); - } else { - do { - /* - * This may look odd, but it is using save-and-enable - * semantics instead of the save-and-disable semantics - * that are used everywhere else. - */ - COM_UNLOCK(); - critical_exit(); - line_status = buf[com->ierroff]; - recv_data = *buf++; - if (line_status - & (CD1400_RDSR_BREAK | CD1400_RDSR_FE | CD1400_RDSR_OE | CD1400_RDSR_PE)) { - if (line_status & CD1400_RDSR_BREAK) - recv_data |= TTY_BI; - if (line_status & CD1400_RDSR_FE) - recv_data |= TTY_FE; - if (line_status & CD1400_RDSR_OE) - recv_data |= TTY_OE; - if (line_status & CD1400_RDSR_PE) - recv_data |= TTY_PE; - } - ttyld_rint(tp, recv_data); - critical_enter(); - COM_LOCK(); - } while (buf < com->iptr); - } - cy_events -= (com->iptr - com->ibuf); - com->iptr = com->ibuf; - - /* - * There is now room for another low-level buffer full of input, - * so enable RTS if it is now disabled and there is room in the - * high-level buffer. - */ - if ((com->state & CS_RTS_IFLOW) && !(com->mcr_image & com->mcr_rts) && - !(tp->t_state & TS_TBLOCK)) - cd_setreg(com, com->mcr_rts_reg, - com->mcr_image |= com->mcr_rts); -} - -int -cyintr(void *vcom) -{ - struct com_s *basecom; - int baseu; - int cy_align; - cy_addr cy_iobase; - int cyu; - cy_addr iobase; - u_char status; - int unit; - - COM_LOCK(); /* XXX could this be placed down lower in the loop? */ - - basecom = (struct com_s *)vcom; - baseu = basecom->unit; - cy_align = basecom->cy_align; - cy_iobase = basecom->cy_iobase; - unit = baseu / CY_MAX_PORTS; - - /* check each CD1400 in turn */ - for (cyu = 0; cyu < cy_nr_cd1400s[unit]; ++cyu) { - iobase = (cy_addr) (cy_iobase - + (cy_chip_offset[cyu] << cy_align)); - /* poll to see if it has any work */ - status = cd_inb(iobase, CD1400_SVRR, cy_align); - if (status == 0) - continue; // XXX - FILTER_STRAY? -#ifdef CyDebug - ++cy_svrr_probes; -#endif - /* service requests as appropriate, giving priority to RX */ - if (status & CD1400_SVRR_RXRDY) { - struct com_s *com; - u_int count; - u_char *ioptr; - u_char line_status; - u_char recv_data; - u_char serv_type; -#ifdef PollMode - u_char save_rir; -#endif - -#ifdef PollMode - save_rir = cd_inb(iobase, CD1400_RIR, cy_align); - - /* enter rx service */ - cd_outb(iobase, CD1400_CAR, cy_align, save_rir); - cy_addr(baseu + cyu * CD1400_NO_OF_CHANNELS)->car - = save_rir & CD1400_CAR_CHAN; - - serv_type = cd_inb(iobase, CD1400_RIVR, cy_align); - com = cy_addr(baseu - + ((serv_type >> CD1400_xIVR_CHAN_SHIFT) - & CD1400_xIVR_CHAN)); -#else - /* ack receive service */ - serv_type = cy_inb(iobase, CY8_SVCACKR, cy_align); - - com = cy_addr(baseu + - + ((serv_type >> CD1400_xIVR_CHAN_SHIFT) - & CD1400_xIVR_CHAN)); -#endif - - if (serv_type & CD1400_RIVR_EXCEPTION) { - ++com->recv_exception; - line_status = cd_inb(iobase, CD1400_RDSR, cy_align); - /* break/unnattached error bits or real input? */ - recv_data = cd_inb(iobase, CD1400_RDSR, cy_align); -#ifndef SOFT_HOTCHAR - if (line_status & CD1400_RDSR_SPECIAL - && com->tp->t_hotchar != 0) - swi_sched(cy_fast_ih, 0); - -#endif -#if 1 /* XXX "intelligent" PFO error handling would break O error handling */ - if (line_status & (CD1400_RDSR_PE|CD1400_RDSR_FE|CD1400_RDSR_BREAK)) { - /* - Don't store PE if IGNPAR and BI if IGNBRK, - this hack allows "raw" tty optimization - works even if IGN* is set. - */ - if ( com->tp == NULL - || !(com->tp->t_state & TS_ISOPEN) - || ((line_status & (CD1400_RDSR_PE|CD1400_RDSR_FE)) - && (com->tp->t_iflag & IGNPAR)) - || ((line_status & CD1400_RDSR_BREAK) - && (com->tp->t_iflag & IGNBRK))) - goto cont; - if ( (line_status & (CD1400_RDSR_PE|CD1400_RDSR_FE)) - && (com->tp->t_state & TS_CAN_BYPASS_L_RINT) - && ((line_status & CD1400_RDSR_FE) - || ((line_status & CD1400_RDSR_PE) - && (com->tp->t_iflag & INPCK)))) - recv_data = 0; - } -#endif /* 1 */ - ++com->bytes_in; -#ifdef SOFT_HOTCHAR - if (com->tp->t_hotchar != 0 && recv_data == com->tp->t_hotchar) - swi_sched(cy_fast_ih, 0); -#endif - ioptr = com->iptr; - if (ioptr >= com->ibufend) - CE_RECORD(com, CE_INTERRUPT_BUF_OVERFLOW); - else { - if (com->tp != NULL && com->tp->t_do_timestamp) - microtime(&com->tp->t_timestamp); - ++cy_events; - ioptr[0] = recv_data; - ioptr[com->ierroff] = line_status; - com->iptr = ++ioptr; - if (ioptr == com->ihighwater - && com->state & CS_RTS_IFLOW) - cd_outb(iobase, com->mcr_rts_reg, - cy_align, - com->mcr_image &= - ~com->mcr_rts); - if (line_status & CD1400_RDSR_OE) - CE_RECORD(com, CE_OVERRUN); - } - goto cont; - } else { - int ifree; - - count = cd_inb(iobase, CD1400_RDCR, cy_align); - if (!count) - goto cont; - com->bytes_in += count; - ioptr = com->iptr; - ifree = com->ibufend - ioptr; - if (count > ifree) { - count -= ifree; - cy_events += ifree; - if (ifree != 0) { - if (com->tp != NULL && com->tp->t_do_timestamp) - microtime(&com->tp->t_timestamp); - do { - recv_data = cd_inb(iobase, - CD1400_RDSR, - cy_align); -#ifdef SOFT_HOTCHAR - if (com->tp->t_hotchar != 0 - && recv_data - == com->tp->t_hotchar) - swi_sched(cy_fast_ih, - 0); -#endif - ioptr[0] = recv_data; - ioptr[com->ierroff] = 0; - ++ioptr; - } while (--ifree != 0); - } - com->delta_error_counts - [CE_INTERRUPT_BUF_OVERFLOW] += count; - do { - recv_data = cd_inb(iobase, CD1400_RDSR, - cy_align); -#ifdef SOFT_HOTCHAR - if (com->tp->t_hotchar != 0 - && recv_data == com->tp->t_hotchar) - swi_sched(cy_fast_ih, 0); -#endif - } while (--count != 0); - } else { - if (com->tp != NULL && com->tp->t_do_timestamp) - microtime(&com->tp->t_timestamp); - if (ioptr <= com->ihighwater - && ioptr + count > com->ihighwater - && com->state & CS_RTS_IFLOW) - cd_outb(iobase, com->mcr_rts_reg, - cy_align, - com->mcr_image - &= ~com->mcr_rts); - cy_events += count; - do { - recv_data = cd_inb(iobase, CD1400_RDSR, - cy_align); -#ifdef SOFT_HOTCHAR - if (com->tp->t_hotchar != 0 - && recv_data == com->tp->t_hotchar) - swi_sched(cy_fast_ih, 0); -#endif - ioptr[0] = recv_data; - ioptr[com->ierroff] = 0; - ++ioptr; - } while (--count != 0); - } - com->iptr = ioptr; - } -cont: - - /* terminate service context */ -#ifdef PollMode - cd_outb(iobase, CD1400_RIR, cy_align, - save_rir - & ~(CD1400_RIR_RDIREQ | CD1400_RIR_RBUSY)); -#else - cd_outb(iobase, CD1400_EOSRR, cy_align, 0); -#endif - } - if (status & CD1400_SVRR_MDMCH) { - struct com_s *com; - u_char modem_status; -#ifdef PollMode - u_char save_mir; -#else - u_char vector; -#endif - -#ifdef PollMode - save_mir = cd_inb(iobase, CD1400_MIR, cy_align); - - /* enter modem service */ - cd_outb(iobase, CD1400_CAR, cy_align, save_mir); - cy_addr(baseu + cyu * CD1400_NO_OF_CHANNELS)->car - = save_mir & CD1400_CAR_CHAN; - - com = cy_addr(baseu + cyu * CD1400_NO_OF_CHANNELS - + (save_mir & CD1400_MIR_CHAN)); -#else - /* ack modem service */ - vector = cy_inb(iobase, CY8_SVCACKM, cy_align); - - com = cy_addr(baseu - + ((vector >> CD1400_xIVR_CHAN_SHIFT) - & CD1400_xIVR_CHAN)); -#endif - ++com->mdm; - modem_status = cd_inb(iobase, CD1400_MSVR2, cy_align); - if (modem_status != com->last_modem_status) { - /* - * Schedule high level to handle DCD changes. Note - * that we don't use the delta bits anywhere. Some - * UARTs mess them up, and it's easy to remember the - * previous bits and calculate the delta. - */ - com->last_modem_status = modem_status; - if (!(com->state & CS_CHECKMSR)) { - cy_events += LOTS_OF_EVENTS; - com->state |= CS_CHECKMSR; - swi_sched(cy_fast_ih, 0); - } - -#ifdef SOFT_CTS_OFLOW - /* handle CTS change immediately for crisp flow ctl */ - if (com->state & CS_CTS_OFLOW) { - if (modem_status & CD1400_MSVR2_CTS) { - com->state |= CS_ODEVREADY; - if (com->state >= (CS_BUSY | CS_TTGO - | CS_ODEVREADY) - && !(com->intr_enable - & CD1400_SRER_TXRDY)) - cd_outb(iobase, CD1400_SRER, - cy_align, - com->intr_enable - = com->intr_enable - & ~CD1400_SRER_TXMPTY - | CD1400_SRER_TXRDY); - } else { - com->state &= ~CS_ODEVREADY; - if (com->intr_enable - & CD1400_SRER_TXRDY) - cd_outb(iobase, CD1400_SRER, - cy_align, - com->intr_enable - = com->intr_enable - & ~CD1400_SRER_TXRDY - | CD1400_SRER_TXMPTY); - } - } -#endif - } - - /* terminate service context */ -#ifdef PollMode - cd_outb(iobase, CD1400_MIR, cy_align, - save_mir - & ~(CD1400_MIR_RDIREQ | CD1400_MIR_RBUSY)); -#else - cd_outb(iobase, CD1400_EOSRR, cy_align, 0); -#endif - } - if (status & CD1400_SVRR_TXRDY) { - struct com_s *com; -#ifdef PollMode - u_char save_tir; -#else - u_char vector; -#endif - -#ifdef PollMode - save_tir = cd_inb(iobase, CD1400_TIR, cy_align); - - /* enter tx service */ - cd_outb(iobase, CD1400_CAR, cy_align, save_tir); - cy_addr(baseu + cyu * CD1400_NO_OF_CHANNELS)->car - = save_tir & CD1400_CAR_CHAN; - - com = cy_addr(baseu - + cyu * CD1400_NO_OF_CHANNELS - + (save_tir & CD1400_TIR_CHAN)); -#else - /* ack transmit service */ - vector = cy_inb(iobase, CY8_SVCACKT, cy_align); - - com = cy_addr(baseu - + ((vector >> CD1400_xIVR_CHAN_SHIFT) - & CD1400_xIVR_CHAN)); -#endif - - if (com->etc != ETC_NONE) { - if (com->intr_enable & CD1400_SRER_TXRDY) { - /* - * Here due to sloppy SRER_TXRDY - * enabling. Ignore. Come back when - * tx is empty. - */ - cd_outb(iobase, CD1400_SRER, cy_align, - com->intr_enable - = (com->intr_enable - & ~CD1400_SRER_TXRDY) - | CD1400_SRER_TXMPTY); - goto terminate_tx_service; - } - switch (com->etc) { - case CD1400_ETC_SENDBREAK: - case CD1400_ETC_STOPBREAK: - /* - * Start the command. Come back on - * next tx empty interrupt, hopefully - * after command has been executed. - */ - cd_outb(iobase, CD1400_COR2, cy_align, - com->cor[1] |= CD1400_COR2_ETC); - cd_outb(iobase, CD1400_TDR, cy_align, - CD1400_ETC_CMD); - cd_outb(iobase, CD1400_TDR, cy_align, - com->etc); - if (com->etc == CD1400_ETC_SENDBREAK) - com->etc = ETC_BREAK_STARTING; - else - com->etc = ETC_BREAK_ENDING; - goto terminate_tx_service; - case ETC_BREAK_STARTING: - /* - * BREAK is now on. Continue with - * SRER_TXMPTY processing, hopefully - * don't come back. - */ - com->etc = ETC_BREAK_STARTED; - break; - case ETC_BREAK_STARTED: - /* - * Came back due to sloppy SRER_TXMPTY - * enabling. Hope again. - */ - break; - case ETC_BREAK_ENDING: - /* - * BREAK is now off. Continue with - * SRER_TXMPTY processing and don't - * come back. The SWI handler will - * restart tx interrupts if necessary. - */ - cd_outb(iobase, CD1400_COR2, cy_align, - com->cor[1] - &= ~CD1400_COR2_ETC); - com->etc = ETC_BREAK_ENDED; - if (!(com->state & CS_ODONE)) { - cy_events += LOTS_OF_EVENTS; - com->state |= CS_ODONE; - swi_sched(cy_fast_ih, 0); - } - break; - case ETC_BREAK_ENDED: - /* - * Shouldn't get here. Hope again. - */ - break; - } - } - if (com->intr_enable & CD1400_SRER_TXMPTY) { - if (!(com->extra_state & CSE_ODONE)) { - cy_events += LOTS_OF_EVENTS; - com->extra_state |= CSE_ODONE; - swi_sched(cy_fast_ih, 0); - } - cd_outb(iobase, CD1400_SRER, cy_align, - com->intr_enable - &= ~CD1400_SRER_TXMPTY); - goto terminate_tx_service; - } - if (com->state >= (CS_BUSY | CS_TTGO | CS_ODEVREADY)) { - u_char *ioptr; - u_int ocount; - - ioptr = com->obufq.l_head; - ocount = com->obufq.l_tail - ioptr; - if (ocount > CD1400_TX_FIFO_SIZE) - ocount = CD1400_TX_FIFO_SIZE; - com->bytes_out += ocount; - do - cd_outb(iobase, CD1400_TDR, cy_align, - *ioptr++); - while (--ocount != 0); - com->obufq.l_head = ioptr; - if (ioptr >= com->obufq.l_tail) { - struct lbq *qp; - - qp = com->obufq.l_next; - qp->l_queued = FALSE; - qp = qp->l_next; - if (qp != NULL) { - com->obufq.l_head = qp->l_head; - com->obufq.l_tail = qp->l_tail; - com->obufq.l_next = qp; - } else { - /* output just completed */ - com->state &= ~CS_BUSY; - - /* - * The setting of CSE_ODONE may be - * stale here. We currently only - * use it when CS_BUSY is set, and - * fixing it when we clear CS_BUSY - * is easiest. - */ - if (com->extra_state & CSE_ODONE) { - cy_events -= LOTS_OF_EVENTS; - com->extra_state &= ~CSE_ODONE; - } - - cd_outb(iobase, CD1400_SRER, cy_align, - com->intr_enable - = (com->intr_enable - & ~CD1400_SRER_TXRDY) - | CD1400_SRER_TXMPTY); - } - if (!(com->state & CS_ODONE)) { - cy_events += LOTS_OF_EVENTS; - com->state |= CS_ODONE; - - /* handle at high level ASAP */ - swi_sched(cy_fast_ih, 0); - } - } - } - - /* terminate service context */ -terminate_tx_service: -#ifdef PollMode - cd_outb(iobase, CD1400_TIR, cy_align, - save_tir - & ~(CD1400_TIR_RDIREQ | CD1400_TIR_RBUSY)); -#else - cd_outb(iobase, CD1400_EOSRR, cy_align, 0); -#endif - } - } - - /* ensure an edge for the next interrupt */ - cy_outb(cy_iobase, CY_CLEAR_INTR, cy_align, 0); - - swi_sched(cy_slow_ih, SWI_DELAY); - - COM_UNLOCK(); - return (FILTER_HANDLED); -} - -static void -cybreak(struct tty *tp, int sig) -{ - struct com_s *com; - - com = tp->t_sc; - if (sig) - cd_etc(com, CD1400_ETC_SENDBREAK); - else - cd_etc(com, CD1400_ETC_STOPBREAK); -} - -static void -cypoll(void *arg) -{ - int unit; - -#ifdef CyDebug - ++cy_timeouts; -#endif - if (cy_events == 0) - return; -repeat: - for (unit = 0; unit < NPORTS; ++unit) { - struct com_s *com; - int incc; - struct tty *tp; - - com = cy_addr(unit); - if (com == NULL) - continue; - tp = com->tp; - if (tp == NULL) { - /* - * XXX forget any events related to closed devices - * (actually never opened devices) so that we don't - * loop. - */ - critical_enter(); - COM_LOCK(); - incc = com->iptr - com->ibuf; - com->iptr = com->ibuf; - if (com->state & CS_CHECKMSR) { - incc += LOTS_OF_EVENTS; - com->state &= ~CS_CHECKMSR; - } - cy_events -= incc; - COM_UNLOCK(); - critical_exit(); - if (incc != 0) - log(LOG_DEBUG, - "cy%d: %d events for device with no tp\n", - unit, incc); - continue; - } - if (com->iptr != com->ibuf) { - critical_enter(); - COM_LOCK(); - cyinput(com); - COM_UNLOCK(); - critical_exit(); - } - if (com->state & CS_CHECKMSR) { - u_char delta_modem_status; - - critical_enter(); - COM_LOCK(); - cyinput(com); - delta_modem_status = com->last_modem_status - ^ com->prev_modem_status; - com->prev_modem_status = com->last_modem_status; - cy_events -= LOTS_OF_EVENTS; - com->state &= ~CS_CHECKMSR; - COM_UNLOCK(); - critical_exit(); - if (delta_modem_status & CD1400_MSVR2_CD) - ttyld_modem(tp, - com->prev_modem_status & CD1400_MSVR2_CD); - } - if (com->extra_state & CSE_ODONE) { - critical_enter(); - COM_LOCK(); - cy_events -= LOTS_OF_EVENTS; - com->extra_state &= ~CSE_ODONE; - COM_UNLOCK(); - critical_exit(); - if (!(com->state & CS_BUSY)) { - tp->t_state &= ~TS_BUSY; - ttwwakeup(com->tp); - } - if (com->etc != ETC_NONE) { - if (com->etc == ETC_BREAK_ENDED) - com->etc = ETC_NONE; - wakeup(&com->etc); - } - } - if (com->state & CS_ODONE) { - critical_enter(); - COM_LOCK(); - cy_events -= LOTS_OF_EVENTS; - com->state &= ~CS_ODONE; - COM_UNLOCK(); - critical_exit(); - ttyld_start(tp); - } - if (cy_events == 0) - break; - } - if (cy_events >= LOTS_OF_EVENTS) - goto repeat; -} - -static int -cyparam(struct tty *tp, struct termios *t) -{ - int bits; - int cflag; - struct com_s *com; - u_char cor_change; - u_long cy_clock; - int idivisor; - int iflag; - int iprescaler; - int itimeout; - int odivisor; - int oprescaler; - u_char opt; - int s; - - com = tp->t_sc; - - /* check requested parameters */ - cy_clock = CY_CLOCK(com->gfrcr_image); - idivisor = cyspeed(t->c_ispeed, cy_clock, &iprescaler); - if (idivisor <= 0) - return (EINVAL); - odivisor = cyspeed(t->c_ospeed != 0 ? t->c_ospeed : tp->t_ospeed, - cy_clock, &oprescaler); - if (odivisor <= 0) - return (EINVAL); - - /* parameters are OK, convert them to the com struct and the device */ - s = spltty(); - if (t->c_ospeed == 0) - (void)cymodem(tp, 0, SER_DTR); - else - (void)cymodem(tp, SER_DTR, 0); - - (void) cysetwater(com, t->c_ispeed); - - /* XXX we don't actually change the speed atomically. */ - - cd_setreg(com, CD1400_RBPR, idivisor); - cd_setreg(com, CD1400_RCOR, iprescaler); - cd_setreg(com, CD1400_TBPR, odivisor); - cd_setreg(com, CD1400_TCOR, oprescaler); - - /* - * channel control - * receiver enable - * transmitter enable (always set) - */ - cflag = t->c_cflag; - opt = CD1400_CCR_CMDCHANCTL | CD1400_CCR_XMTEN - | (cflag & CREAD ? CD1400_CCR_RCVEN : CD1400_CCR_RCVDIS); - if (opt != com->channel_control) { - com->channel_control = opt; - cd1400_channel_cmd(com, opt); - } - -#ifdef Smarts - /* set special chars */ - /* XXX if one is _POSIX_VDISABLE, can't use some others */ - if (t->c_cc[VSTOP] != _POSIX_VDISABLE) - cd_setreg(com, CD1400_SCHR1, t->c_cc[VSTOP]); - if (t->c_cc[VSTART] != _POSIX_VDISABLE) - cd_setreg(com, CD1400_SCHR2, t->c_cc[VSTART]); - if (t->c_cc[VINTR] != _POSIX_VDISABLE) - cd_setreg(com, CD1400_SCHR3, t->c_cc[VINTR]); - if (t->c_cc[VSUSP] != _POSIX_VDISABLE) - cd_setreg(com, CD1400_SCHR4, t->c_cc[VSUSP]); -#endif - - /* - * set channel option register 1 - - * parity mode - * stop bits - * char length - */ - opt = 0; - /* parity */ - if (cflag & PARENB) { - if (cflag & PARODD) - opt |= CD1400_COR1_PARODD; - opt |= CD1400_COR1_PARNORMAL; - } - iflag = t->c_iflag; - if (!(iflag & INPCK)) - opt |= CD1400_COR1_NOINPCK; - bits = 1 + 1; - /* stop bits */ - if (cflag & CSTOPB) { - ++bits; - opt |= CD1400_COR1_STOP2; - } - /* char length */ - switch (cflag & CSIZE) { - case CS5: - bits += 5; - opt |= CD1400_COR1_CS5; - break; - case CS6: - bits += 6; - opt |= CD1400_COR1_CS6; - break; - case CS7: - bits += 7; - opt |= CD1400_COR1_CS7; - break; - default: - bits += 8; - opt |= CD1400_COR1_CS8; - break; - } - cor_change = 0; - if (opt != com->cor[0]) { - cor_change |= CD1400_CCR_COR1; - cd_setreg(com, CD1400_COR1, com->cor[0] = opt); - } - - /* - * Set receive time-out period, normally to max(one char time, 5 ms). - */ - itimeout = howmany(1000 * bits, t->c_ispeed); -#ifdef SOFT_HOTCHAR -#define MIN_RTP 1 -#else -#define MIN_RTP 5 -#endif - if (itimeout < MIN_RTP) - itimeout = MIN_RTP; - if (!(t->c_lflag & ICANON) && t->c_cc[VMIN] != 0 && t->c_cc[VTIME] != 0 - && t->c_cc[VTIME] * 10 > itimeout) - itimeout = t->c_cc[VTIME] * 10; - if (itimeout > 255) - itimeout = 255; - cd_setreg(com, CD1400_RTPR, itimeout); - - /* - * set channel option register 2 - - * flow control - */ - opt = 0; -#ifdef Smarts - if (iflag & IXANY) - opt |= CD1400_COR2_IXANY; - if (iflag & IXOFF) - opt |= CD1400_COR2_IXOFF; -#endif -#ifndef SOFT_CTS_OFLOW - if (cflag & CCTS_OFLOW) - opt |= CD1400_COR2_CCTS_OFLOW; -#endif - critical_enter(); - COM_LOCK(); - if (opt != com->cor[1]) { - cor_change |= CD1400_CCR_COR2; - cd_setreg(com, CD1400_COR2, com->cor[1] = opt); - } - COM_UNLOCK(); - critical_exit(); - - /* - * set channel option register 3 - - * receiver FIFO interrupt threshold - * flow control - */ - opt = RxFifoThreshold; -#ifdef Smarts - if (t->c_lflag & ICANON) - opt |= CD1400_COR3_SCD34; /* detect INTR & SUSP chars */ - if (iflag & IXOFF) - /* detect and transparently handle START and STOP chars */ - opt |= CD1400_COR3_FCT | CD1400_COR3_SCD12; -#endif - if (opt != com->cor[2]) { - cor_change |= CD1400_CCR_COR3; - cd_setreg(com, CD1400_COR3, com->cor[2] = opt); - } - - /* notify the CD1400 if COR1-3 have changed */ - if (cor_change) - cd1400_channel_cmd(com, CD1400_CCR_CMDCORCHG | cor_change); - - /* - * set channel option register 4 - - * CR/NL processing - * break processing - * received exception processing - */ - opt = 0; - if (iflag & IGNCR) - opt |= CD1400_COR4_IGNCR; -#ifdef Smarts - /* - * we need a new ttyinput() for this, as we don't want to - * have ICRNL && INLCR being done in both layers, or to have - * synchronisation problems - */ - if (iflag & ICRNL) - opt |= CD1400_COR4_ICRNL; - if (iflag & INLCR) - opt |= CD1400_COR4_INLCR; -#endif - if (iflag & IGNBRK) - opt |= CD1400_COR4_IGNBRK | CD1400_COR4_NOBRKINT; - /* - * The `-ignbrk -brkint parmrk' case is not handled by the hardware, - * so only tell the hardware about -brkint if -parmrk. - */ - if (!(iflag & (BRKINT | PARMRK))) - opt |= CD1400_COR4_NOBRKINT; -#if 0 - /* XXX using this "intelligence" breaks reporting of overruns. */ - if (iflag & IGNPAR) - opt |= CD1400_COR4_PFO_DISCARD; - else { - if (iflag & PARMRK) - opt |= CD1400_COR4_PFO_ESC; - else - opt |= CD1400_COR4_PFO_NUL; - } -#else - opt |= CD1400_COR4_PFO_EXCEPTION; -#endif - cd_setreg(com, CD1400_COR4, opt); - - /* - * set channel option register 5 - - */ - opt = 0; - if (iflag & ISTRIP) - opt |= CD1400_COR5_ISTRIP; - if (t->c_iflag & IEXTEN) - /* enable LNEXT (e.g. ctrl-v quoting) handling */ - opt |= CD1400_COR5_LNEXT; -#ifdef Smarts - if (t->c_oflag & ONLCR) - opt |= CD1400_COR5_ONLCR; - if (t->c_oflag & OCRNL) - opt |= CD1400_COR5_OCRNL; -#endif - cd_setreg(com, CD1400_COR5, opt); - - /* - * We always generate modem status change interrupts for CD changes. - * Among other things, this is necessary to track TS_CARR_ON for - * pstat to print even when the driver doesn't care. CD changes - * should be rare so interrupts for them are not worth extra code to - * avoid. We avoid interrupts for other modem status changes (except - * for CTS changes when SOFT_CTS_OFLOW is configured) since this is - * simplest and best. - */ - - /* - * set modem change option register 1 - * generate modem interrupts on which 1 -> 0 input transitions - * also controls auto-DTR output flow-control, which we don't use - */ - opt = CD1400_MCOR1_CDzd; -#ifdef SOFT_CTS_OFLOW - if (cflag & CCTS_OFLOW) - opt |= CD1400_MCOR1_CTSzd; -#endif - cd_setreg(com, CD1400_MCOR1, opt); - - /* - * set modem change option register 2 - * generate modem interrupts on specific 0 -> 1 input transitions - */ - opt = CD1400_MCOR2_CDod; -#ifdef SOFT_CTS_OFLOW - if (cflag & CCTS_OFLOW) - opt |= CD1400_MCOR2_CTSod; -#endif - cd_setreg(com, CD1400_MCOR2, opt); - - /* - * XXX should have done this long ago, but there is too much state - * to change all atomically. - */ - critical_enter(); - COM_LOCK(); - - com->state &= ~CS_TTGO; - if (!(tp->t_state & TS_TTSTOP)) - com->state |= CS_TTGO; - if (cflag & CRTS_IFLOW) { - com->state |= CS_RTS_IFLOW; - /* - * If CS_RTS_IFLOW just changed from off to on, the change - * needs to be propagated to CD1400_MSVR1_RTS. This isn't urgent, - * so do it later by calling cystart() instead of repeating - * a lot of code from cystart() here. - */ - } else if (com->state & CS_RTS_IFLOW) { - com->state &= ~CS_RTS_IFLOW; - /* - * CS_RTS_IFLOW just changed from on to off. Force CD1400_MSVR1_RTS - * on here, since cystart() won't do it later. - */ - cd_setreg(com, com->mcr_rts_reg, - com->mcr_image |= com->mcr_rts); - } - - /* - * Set up state to handle output flow control. - * XXX - worth handling MDMBUF (DCD) flow control at the lowest level? - * Now has 10+ msec latency, while CTS flow has 50- usec latency. - */ - com->state |= CS_ODEVREADY; -#ifdef SOFT_CTS_OFLOW - com->state &= ~CS_CTS_OFLOW; - if (cflag & CCTS_OFLOW) { - com->state |= CS_CTS_OFLOW; - if (!(com->last_modem_status & CD1400_MSVR2_CTS)) - com->state &= ~CS_ODEVREADY; - } -#endif - /* XXX shouldn't call functions while intrs are disabled. */ - disc_optim(tp, t, com); -#if 0 - /* - * Recover from fiddling with CS_TTGO. We used to call cyintr1() - * unconditionally, but that defeated the careful discarding of - * stale input in cyopen(). - */ - if (com->state >= (CS_BUSY | CS_TTGO)) - cyintr1(com); -#endif - if (com->state >= (CS_BUSY | CS_TTGO | CS_ODEVREADY)) { - if (!(com->intr_enable & CD1400_SRER_TXRDY)) - cd_setreg(com, CD1400_SRER, - com->intr_enable - = (com->intr_enable & ~CD1400_SRER_TXMPTY) - | CD1400_SRER_TXRDY); - } else { - if (com->intr_enable & CD1400_SRER_TXRDY) - cd_setreg(com, CD1400_SRER, - com->intr_enable - = (com->intr_enable & ~CD1400_SRER_TXRDY) - | CD1400_SRER_TXMPTY); - } - - COM_UNLOCK(); - critical_exit(); - splx(s); - cystart(tp); - if (com->ibufold != NULL) { - free(com->ibufold, M_DEVBUF); - com->ibufold = NULL; - } - return (0); -} - -static int -cysetwater(struct com_s *com, speed_t speed) -{ - int cp4ticks; - u_char *ibuf; - int ibufsize; - struct tty *tp; - - /* - * Make the buffer size large enough to handle a softtty interrupt - * latency of about 2 ticks without loss of throughput or data - * (about 3 ticks if input flow control is not used or not honoured, - * but a bit less for CS5-CS7 modes). - */ - cp4ticks = speed / 10 / hz * 4; - for (ibufsize = 128; ibufsize < cp4ticks;) - ibufsize <<= 1; - if (ibufsize == com->ibufsize) { - return (0); - } - - /* - * Allocate input buffer. The extra factor of 2 in the size is - * to allow for an error byte for each input byte. - */ - ibuf = malloc(2 * ibufsize, M_DEVBUF, M_NOWAIT); - if (ibuf == NULL) { - return (ENOMEM); - } - - /* Initialize non-critical variables. */ - com->ibufold = com->ibuf; - com->ibufsize = ibufsize; - tp = com->tp; - if (tp != NULL) { - tp->t_ififosize = 2 * ibufsize; - tp->t_ispeedwat = (speed_t)-1; - tp->t_ospeedwat = (speed_t)-1; - } - - /* - * Read current input buffer, if any. Continue with interrupts - * disabled. - */ - critical_enter(); - COM_LOCK(); - if (com->iptr != com->ibuf) - cyinput(com); - - /*- - * Initialize critical variables, including input buffer watermarks. - * The external device is asked to stop sending when the buffer - * exactly reaches high water, or when the high level requests it. - * The high level is notified immediately (rather than at a later - * clock tick) when this watermark is reached. - * The buffer size is chosen so the watermark should almost never - * be reached. - * The low watermark is invisibly 0 since the buffer is always - * emptied all at once. - */ - com->iptr = com->ibuf = ibuf; - com->ibufend = ibuf + ibufsize; - com->ierroff = ibufsize; - com->ihighwater = ibuf + 3 * ibufsize / 4; - - COM_UNLOCK(); - critical_exit(); - return (0); -} - -static void -cystart(struct tty *tp) -{ - struct com_s *com; - int s; -#ifdef CyDebug - bool_t started; -#endif - - com = tp->t_sc; - s = spltty(); - -#ifdef CyDebug - ++com->start_count; - started = FALSE; -#endif - - critical_enter(); - COM_LOCK(); - if (tp->t_state & TS_TTSTOP) { - com->state &= ~CS_TTGO; - if (com->intr_enable & CD1400_SRER_TXRDY) - cd_setreg(com, CD1400_SRER, - com->intr_enable - = (com->intr_enable & ~CD1400_SRER_TXRDY) - | CD1400_SRER_TXMPTY); - } else { - com->state |= CS_TTGO; - if (com->state >= (CS_BUSY | CS_TTGO | CS_ODEVREADY) - && !(com->intr_enable & CD1400_SRER_TXRDY)) - cd_setreg(com, CD1400_SRER, - com->intr_enable - = (com->intr_enable & ~CD1400_SRER_TXMPTY) - | CD1400_SRER_TXRDY); - } - if (tp->t_state & TS_TBLOCK) { - if (com->mcr_image & com->mcr_rts && com->state & CS_RTS_IFLOW) -#if 0 - outb(com->modem_ctl_port, com->mcr_image &= ~CD1400_MSVR1_RTS); -#else - cd_setreg(com, com->mcr_rts_reg, - com->mcr_image &= ~com->mcr_rts); -#endif - } else { - if (!(com->mcr_image & com->mcr_rts) - && com->iptr < com->ihighwater - && com->state & CS_RTS_IFLOW) -#if 0 - outb(com->modem_ctl_port, com->mcr_image |= CD1400_MSVR1_RTS); -#else - cd_setreg(com, com->mcr_rts_reg, - com->mcr_image |= com->mcr_rts); -#endif - } - COM_UNLOCK(); - critical_exit(); - if (tp->t_state & (TS_TIMEOUT | TS_TTSTOP)) { - ttwwakeup(tp); - splx(s); - return; - } - if (tp->t_outq.c_cc != 0) { - struct lbq *qp; - struct lbq *next; - - if (!com->obufs[0].l_queued) { -#ifdef CyDebug - started = TRUE; -#endif - com->obufs[0].l_tail - = com->obuf1 + q_to_b(&tp->t_outq, com->obuf1, - sizeof com->obuf1); - com->obufs[0].l_next = NULL; - com->obufs[0].l_queued = TRUE; - critical_enter(); - COM_LOCK(); - if (com->state & CS_BUSY) { - qp = com->obufq.l_next; - while ((next = qp->l_next) != NULL) - qp = next; - qp->l_next = &com->obufs[0]; - } else { - com->obufq.l_head = com->obufs[0].l_head; - com->obufq.l_tail = com->obufs[0].l_tail; - com->obufq.l_next = &com->obufs[0]; - com->state |= CS_BUSY; - if (com->state >= (CS_BUSY | CS_TTGO - | CS_ODEVREADY)) - cd_setreg(com, CD1400_SRER, - com->intr_enable - = (com->intr_enable - & ~CD1400_SRER_TXMPTY) - | CD1400_SRER_TXRDY); - } - COM_UNLOCK(); - critical_exit(); - } - if (tp->t_outq.c_cc != 0 && !com->obufs[1].l_queued) { -#ifdef CyDebug - started = TRUE; -#endif - com->obufs[1].l_tail - = com->obuf2 + q_to_b(&tp->t_outq, com->obuf2, - sizeof com->obuf2); - com->obufs[1].l_next = NULL; - com->obufs[1].l_queued = TRUE; - critical_enter(); - COM_LOCK(); - if (com->state & CS_BUSY) { - qp = com->obufq.l_next; - while ((next = qp->l_next) != NULL) - qp = next; - qp->l_next = &com->obufs[1]; - } else { - com->obufq.l_head = com->obufs[1].l_head; - com->obufq.l_tail = com->obufs[1].l_tail; - com->obufq.l_next = &com->obufs[1]; - com->state |= CS_BUSY; - if (com->state >= (CS_BUSY | CS_TTGO - | CS_ODEVREADY)) - cd_setreg(com, CD1400_SRER, - com->intr_enable - = (com->intr_enable - & ~CD1400_SRER_TXMPTY) - | CD1400_SRER_TXRDY); - } - COM_UNLOCK(); - critical_exit(); - } - tp->t_state |= TS_BUSY; - } -#ifdef CyDebug - if (started) - ++com->start_real; -#endif -#if 0 - critical_enter(); - COM_LOCK(); - if (com->state >= (CS_BUSY | CS_TTGO)) - cyintr1(com); /* fake interrupt to start output */ - COM_UNLOCK(); - critical_exit(); -#endif - ttwwakeup(tp); - splx(s); -} - -static void -comstop(struct tty *tp, int rw) -{ - struct com_s *com; - bool_t wakeup_etc; - - com = tp->t_sc; - wakeup_etc = FALSE; - critical_enter(); - COM_LOCK(); - if (rw & FWRITE) { - com->obufs[0].l_queued = FALSE; - com->obufs[1].l_queued = FALSE; - if (com->extra_state & CSE_ODONE) { - cy_events -= LOTS_OF_EVENTS; - com->extra_state &= ~CSE_ODONE; - if (com->etc != ETC_NONE) { - if (com->etc == ETC_BREAK_ENDED) - com->etc = ETC_NONE; - wakeup_etc = TRUE; - } - } - com->tp->t_state &= ~TS_BUSY; - if (com->state & CS_ODONE) - cy_events -= LOTS_OF_EVENTS; - com->state &= ~(CS_ODONE | CS_BUSY); - } - if (rw & FREAD) { - /* XXX no way to reset only input fifo. */ - cy_events -= (com->iptr - com->ibuf); - com->iptr = com->ibuf; - } - COM_UNLOCK(); - critical_exit(); - if (wakeup_etc) - wakeup(&com->etc); - if (rw & FWRITE && com->etc == ETC_NONE) - cd1400_channel_cmd(com, CD1400_CCR_CMDRESET | CD1400_CCR_FTF); - cystart(tp); -} - -static int -cymodem(struct tty *tp, int sigon, int sigoff) -{ - struct com_s *com; - int mcr; - int msr; - - com = tp->t_sc; - if (sigon == 0 && sigoff == 0) { - sigon = 0; - mcr = com->mcr_image; - if (mcr & com->mcr_dtr) - sigon |= SER_DTR; - if (mcr & com->mcr_rts) - /* XXX wired on for Cyclom-8Ys */ - sigon |= SER_RTS; - - /* - * We must read the modem status from the hardware because - * we don't generate modem status change interrupts for all - * changes, so com->prev_modem_status is not guaranteed to - * be up to date. This is safe, unlike for sio, because - * reading the status register doesn't clear pending modem - * status change interrupts. - */ - msr = cd_getreg(com, CD1400_MSVR2); - - if (msr & CD1400_MSVR2_CTS) - sigon |= SER_CTS; - if (msr & CD1400_MSVR2_CD) - sigon |= SER_DCD; - if (msr & CD1400_MSVR2_DSR) - sigon |= SER_DSR; - if (msr & CD1400_MSVR2_RI) - /* XXX not connected except for Cyclom-16Y? */ - sigon |= SER_RI; - return (sigon); - } - mcr = com->mcr_image; - if (sigon & SER_DTR) - mcr |= com->mcr_dtr; - if (sigoff & SER_DTR) - mcr &= ~com->mcr_dtr; - if (sigon & SER_RTS) - mcr |= com->mcr_rts; - if (sigoff & SER_RTS) - mcr &= ~com->mcr_rts; - critical_enter(); - COM_LOCK(); - com->mcr_image = mcr; - cd_setreg(com, CD1400_MSVR1, mcr); - cd_setreg(com, CD1400_MSVR2, mcr); - COM_UNLOCK(); - critical_exit(); - return (0); -} - -static void -cysettimeout() -{ - struct com_s *com; - bool_t someopen; - int unit; - - /* - * Set our timeout period to 1 second if no polled devices are open. - * Otherwise set it to max(1/200, 1/hz). - * Enable timeouts iff some device is open. - */ - untimeout(cywakeup, (void *)NULL, cy_timeout_handle); - cy_timeout = hz; - someopen = FALSE; - for (unit = 0; unit < NPORTS; ++unit) { - com = cy_addr(unit); - if (com != NULL && com->tp != NULL - && com->tp->t_state & TS_ISOPEN) { - someopen = TRUE; - } - } - if (someopen) { - cy_timeouts_until_log = hz / cy_timeout; - cy_timeout_handle = timeout(cywakeup, (void *)NULL, - cy_timeout); - } else { - /* Flush error messages, if any. */ - cy_timeouts_until_log = 1; - cywakeup((void *)NULL); - untimeout(cywakeup, (void *)NULL, cy_timeout_handle); - } -} - -static void -cywakeup(void *chan) -{ - struct com_s *com; - int unit; - - cy_timeout_handle = timeout(cywakeup, (void *)NULL, cy_timeout); - - /* - * Check for and log errors, but not too often. - */ - if (--cy_timeouts_until_log > 0) - return; - cy_timeouts_until_log = hz / cy_timeout; - for (unit = 0; unit < NPORTS; ++unit) { - int errnum; - - com = cy_addr(unit); - if (com == NULL) - continue; - for (errnum = 0; errnum < CE_NTYPES; ++errnum) { - u_int delta; - u_long total; - - critical_enter(); - COM_LOCK(); - delta = com->delta_error_counts[errnum]; - com->delta_error_counts[errnum] = 0; - COM_UNLOCK(); - critical_exit(); - if (delta == 0) - continue; - total = com->error_counts[errnum] += delta; - log(LOG_ERR, "cy%d: %u more %s%s (total %lu)\n", - unit, delta, error_desc[errnum], - delta == 1 ? "" : "s", total); - } - } -} - -static void -disc_optim(struct tty *tp, struct termios *t, struct com_s *com) -{ -#ifndef SOFT_HOTCHAR - u_char opt; -#endif - - ttyldoptim(tp); -#ifndef SOFT_HOTCHAR - opt = com->cor[2] & ~CD1400_COR3_SCD34; - if (com->tp->t_hotchar != 0) { - cd_setreg(com, CD1400_SCHR3, com->tp->t_hotchar); - cd_setreg(com, CD1400_SCHR4, com->tp->t_hotchar); - opt |= CD1400_COR3_SCD34; - } - if (opt != com->cor[2]) { - cd_setreg(com, CD1400_COR3, com->cor[2] = opt); - cd1400_channel_cmd(com, CD1400_CCR_CMDCORCHG | CD1400_CCR_COR3); - } -#endif -} - -#ifdef Smarts -/* standard line discipline input routine */ -int -cyinput(int c, struct tty *tp) -{ - /* XXX duplicate ttyinput(), but without the IXOFF/IXON/ISTRIP/IPARMRK - * bits, as they are done by the CD1400. Hardly worth the effort, - * given that high-throughput session are raw anyhow. - */ -} -#endif /* Smarts */ - -static int -cyspeed(speed_t speed, u_long cy_clock, int *prescaler_io) -{ - int actual; - int error; - int divider; - int prescaler; - int prescaler_unit; - - if (speed == 0) - return (0); - if (speed < 0 || speed > 150000) - return (-1); - - /* determine which prescaler to use */ - for (prescaler_unit = 4, prescaler = 2048; prescaler_unit; - prescaler_unit--, prescaler >>= 2) { - if (cy_clock / prescaler / speed > 63) - break; - } - - divider = (cy_clock / prescaler * 2 / speed + 1) / 2; /* round off */ - if (divider > 255) - divider = 255; - actual = cy_clock/prescaler/divider; - - /* 10 times error in percent: */ - error = ((actual - (long)speed) * 2000 / (long)speed + 1) / 2; - - /* 3.0% max error tolerance */ - if (error < -30 || error > 30) - return (-1); - - *prescaler_io = prescaler_unit; - return (divider); -} - -static void -cd1400_channel_cmd(struct com_s *com, int cmd) -{ - cd1400_channel_cmd_wait(com); - cd_setreg(com, CD1400_CCR, cmd); - cd1400_channel_cmd_wait(com); -} - -static void -cd1400_channel_cmd_wait(struct com_s *com) -{ - struct timeval start; - struct timeval tv; - long usec; - - if (cd_getreg(com, CD1400_CCR) == 0) - return; - microtime(&start); - for (;;) { - if (cd_getreg(com, CD1400_CCR) == 0) - return; - microtime(&tv); - usec = 1000000 * (tv.tv_sec - start.tv_sec) + - tv.tv_usec - start.tv_usec; - if (usec >= 5000) { - log(LOG_ERR, - "cy%d: channel command timeout (%ld usec)\n", - com->unit, usec); - return; - } - } -} - -static void -cd_etc(struct com_s *com, int etc) -{ - - /* - * We can't change the hardware's ETC state while there are any - * characters in the tx fifo, since those characters would be - * interpreted as commands! Unputting characters from the fifo - * is difficult, so we wait up to 12 character times for the fifo - * to drain. The command will be delayed for up to 2 character - * times for the tx to become empty. Unputting characters from - * the tx holding and shift registers is impossible, so we wait - * for the tx to become empty so that the command is sure to be - * executed soon after we issue it. - */ - critical_enter(); - COM_LOCK(); - if (com->etc == etc) - goto wait; - if ((etc == CD1400_ETC_SENDBREAK - && (com->etc == ETC_BREAK_STARTING - || com->etc == ETC_BREAK_STARTED)) - || (etc == CD1400_ETC_STOPBREAK - && (com->etc == ETC_BREAK_ENDING || com->etc == ETC_BREAK_ENDED - || com->etc == ETC_NONE))) { - COM_UNLOCK(); - critical_exit(); - return; - } - com->etc = etc; - cd_setreg(com, CD1400_SRER, - com->intr_enable - = (com->intr_enable & ~CD1400_SRER_TXRDY) | CD1400_SRER_TXMPTY); -wait: - COM_UNLOCK(); - critical_exit(); - while (com->etc == etc - && tsleep(&com->etc, TTIPRI | PCATCH, "cyetc", 0) == 0) - continue; -} - -static int -cd_getreg(struct com_s *com, int reg) -{ - struct com_s *basecom; - u_char car; - int cy_align; - cy_addr iobase; -#ifdef SMP - int need_unlock; -#endif - int val; - - basecom = cy_addr(com->unit & ~(CD1400_NO_OF_CHANNELS - 1)); - car = com->unit & CD1400_CAR_CHAN; - cy_align = com->cy_align; - iobase = com->iobase; - critical_enter(); -#ifdef SMP - need_unlock = 0; - if (!mtx_owned(&cy_lock)) { - COM_LOCK(); - need_unlock = 1; - } -#endif - if (basecom->car != car) - cd_outb(iobase, CD1400_CAR, cy_align, basecom->car = car); - val = cd_inb(iobase, reg, cy_align); -#ifdef SMP - if (need_unlock) - COM_UNLOCK(); -#endif - critical_exit(); - return (val); -} - -static void -cd_setreg(struct com_s *com, int reg, int val) -{ - struct com_s *basecom; - u_char car; - int cy_align; - cy_addr iobase; -#ifdef SMP - int need_unlock; -#endif - - basecom = cy_addr(com->unit & ~(CD1400_NO_OF_CHANNELS - 1)); - car = com->unit & CD1400_CAR_CHAN; - cy_align = com->cy_align; - iobase = com->iobase; - critical_enter(); -#ifdef SMP - need_unlock = 0; - if (!mtx_owned(&cy_lock)) { - COM_LOCK(); - need_unlock = 1; - } -#endif - if (basecom->car != car) - cd_outb(iobase, CD1400_CAR, cy_align, basecom->car = car); - cd_outb(iobase, reg, cy_align, val); -#ifdef SMP - if (need_unlock) - COM_UNLOCK(); -#endif - critical_exit(); -} - -#ifdef CyDebug -/* useful in ddb */ -void -cystatus(int unit) -{ - struct com_s *com; - cy_addr iobase; - u_int ocount; - struct tty *tp; - - com = cy_addr(unit); - printf("info for channel %d\n", unit); - printf("------------------\n"); - printf("total cyclom service probes:\t%d\n", cy_svrr_probes); - printf("calls to upper layer:\t\t%d\n", cy_timeouts); - if (com == NULL) - return; - iobase = com->iobase; - printf("\n"); - printf("cd1400 base address:\\tt%p\n", iobase); - printf("saved channel_control:\t\t0x%02x\n", com->channel_control); - printf("saved cor1-3:\t\t\t0x%02x 0x%02x 0x%02x\n", - com->cor[0], com->cor[1], com->cor[2]); - printf("service request enable reg:\t0x%02x (0x%02x cached)\n", - cd_getreg(com, CD1400_SRER), com->intr_enable); - printf("service request register:\t0x%02x\n", - cd_inb(iobase, CD1400_SVRR, com->cy_align)); - printf("modem status:\t\t\t0x%02x (0x%02x cached)\n", - cd_getreg(com, CD1400_MSVR2), com->prev_modem_status); - printf("rx/tx/mdm interrupt registers:\t0x%02x 0x%02x 0x%02x\n", - cd_inb(iobase, CD1400_RIR, com->cy_align), - cd_inb(iobase, CD1400_TIR, com->cy_align), - cd_inb(iobase, CD1400_MIR, com->cy_align)); - printf("\n"); - printf("com state:\t\t\t0x%02x\n", com->state); - printf("calls to cystart():\t\t%d (%d useful)\n", - com->start_count, com->start_real); - printf("rx buffer chars free:\t\t%d\n", com->iptr - com->ibuf); - ocount = 0; - if (com->obufs[0].l_queued) - ocount += com->obufs[0].l_tail - com->obufs[0].l_head; - if (com->obufs[1].l_queued) - ocount += com->obufs[1].l_tail - com->obufs[1].l_head; - printf("tx buffer chars:\t\t%u\n", ocount); - printf("received chars:\t\t\t%d\n", com->bytes_in); - printf("received exceptions:\t\t%d\n", com->recv_exception); - printf("modem signal deltas:\t\t%d\n", com->mdm); - printf("transmitted chars:\t\t%d\n", com->bytes_out); - printf("\n"); - tp = com->tp; - if (tp != NULL) { - printf("tty state:\t\t\t0x%08x\n", tp->t_state); - printf( - "upper layer queue lengths:\t%d raw, %d canon, %d output\n", - tp->t_rawq.c_cc, tp->t_canq.c_cc, tp->t_outq.c_cc); - } else - printf("tty state:\t\t\tclosed\n"); -} -#endif /* CyDebug */ diff --git a/sys/dev/cy/cy_isa.c b/sys/dev/cy/cy_isa.c deleted file mode 100644 index 448cc033dcb0..000000000000 --- a/sys/dev/cy/cy_isa.c +++ /dev/null @@ -1,150 +0,0 @@ -/*- - * cyclades cyclom-y serial driver - * Andrew Herbert <andrew@werple.apana.org.au>, 17 August 1993 - * - * Copyright (c) 1993 Andrew Herbert. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name Andrew Herbert may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN - * NO EVENT SHALL I BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * Cyclades Y ISA serial interface driver - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/bus.h> -#include <sys/kernel.h> -#include <sys/module.h> - -#include <machine/bus.h> -#include <sys/rman.h> -#include <machine/resource.h> - -#include <isa/isavar.h> - -#include <dev/cy/cyreg.h> -#include <dev/cy/cyvar.h> - -static int cy_isa_attach(device_t dev); -static int cy_isa_probe(device_t dev); - -static device_method_t cy_isa_methods[] = { - /* Device interface. */ - DEVMETHOD(device_probe, cy_isa_probe), - DEVMETHOD(device_attach, cy_isa_attach), - - { 0, 0 } -}; - -static driver_t cy_isa_driver = { - cy_driver_name, - cy_isa_methods, - 0, -}; - -DRIVER_MODULE(cy, isa, cy_isa_driver, cy_devclass, 0, 0); - -static int -cy_isa_probe(device_t dev) -{ - struct resource *mem_res; - cy_addr iobase; - int error, mem_rid; - - if (isa_get_logicalid(dev) != 0) /* skip PnP probes */ - return (ENXIO); - - mem_rid = 0; - mem_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &mem_rid, - RF_ACTIVE); - if (mem_res == NULL) { - device_printf(dev, "ioport resource allocation failed\n"); - return (ENXIO); - } - iobase = rman_get_virtual(mem_res); - - /* Cyclom-16Y hardware reset (Cyclom-8Ys don't care) */ - cy_inb(iobase, CY16_RESET, 0); /* XXX? */ - DELAY(500); /* wait for the board to get its act together */ - - /* this is needed to get the board out of reset */ - cy_outb(iobase, CY_CLEAR_INTR, 0, 0); - DELAY(500); - - error = (cy_units(iobase, 0) == 0 ? ENXIO : 0); - bus_release_resource(dev, SYS_RES_MEMORY, mem_rid, mem_res); - return (error); -} - -static int -cy_isa_attach(device_t dev) -{ - struct resource *irq_res, *mem_res; - void *irq_cookie, *vaddr, *vsc; - int irq_rid, mem_rid; - - irq_res = NULL; - mem_res = NULL; - - mem_rid = 0; - mem_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &mem_rid, - RF_ACTIVE); - if (mem_res == NULL) { - device_printf(dev, "memory resource allocation failed\n"); - goto fail; - } - vaddr = rman_get_virtual(mem_res); - - vsc = cyattach_common(vaddr, 0); - if (vsc == NULL) { - device_printf(dev, "no ports found!\n"); - goto fail; - } - - irq_rid = 0; - irq_res = bus_alloc_resource_any(dev, SYS_RES_IRQ, &irq_rid, - RF_SHAREABLE | RF_ACTIVE); - if (irq_res == NULL) { - device_printf(dev, "interrupt resource allocation failed\n"); - goto fail; - } - if (bus_setup_intr(dev, irq_res, INTR_TYPE_TTY, - cyintr, NULL, vsc, &irq_cookie) != 0) { - device_printf(dev, "interrupt setup failed\n"); - goto fail; - } - - return (0); - -fail: - if (irq_res != NULL) - bus_release_resource(dev, SYS_RES_IRQ, irq_rid, irq_res); - if (mem_res != NULL) - bus_release_resource(dev, SYS_RES_MEMORY, mem_rid, mem_res); - return (ENXIO); -} diff --git a/sys/dev/cy/cy_pci.c b/sys/dev/cy/cy_pci.c deleted file mode 100644 index 3f9a1826f6b5..000000000000 --- a/sys/dev/cy/cy_pci.c +++ /dev/null @@ -1,192 +0,0 @@ -/*- - * Copyright (c) 1996, David Greenman - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice unmodified, this list of conditions, and the following - * disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* - * Cyclades Y PCI serial interface driver - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include "opt_cy_pci_fastintr.h" - -#include <sys/param.h> -#include <sys/bus.h> -#include <sys/kernel.h> -#include <sys/module.h> - -#include <machine/bus.h> -#include <sys/rman.h> -#include <machine/resource.h> - -#include <dev/pci/pcivar.h> - -#include <dev/cy/cyvar.h> - -#define CY_PCI_BASE_ADDR0 0x10 -#define CY_PCI_BASE_ADDR1 0x14 -#define CY_PCI_BASE_ADDR2 0x18 - -#define CY_PLX_9050_ICS 0x4c -#define CY_PLX_9060_ICS 0x68 -#define CY_PLX_9050_ICS_IENABLE 0x040 -#define CY_PLX_9050_ICS_LOCAL_IENABLE 0x001 -#define CY_PLX_9050_ICS_LOCAL_IPOLARITY 0x002 -#define CY_PLX_9060_ICS_IENABLE 0x100 -#define CY_PLX_9060_ICS_LOCAL_IENABLE 0x800 - -/* Cyclom-Y Custom Register for PLX ID. */ -#define PLX_VER 0x3400 -#define PLX_9050 0x0b -#define PLX_9060 0x0c -#define PLX_9080 0x0d - -static int cy_pci_attach(device_t dev); -static int cy_pci_probe(device_t dev); - -static device_method_t cy_pci_methods[] = { - /* Device interface. */ - DEVMETHOD(device_probe, cy_pci_probe), - DEVMETHOD(device_attach, cy_pci_attach), - - { 0, 0 } -}; - -static driver_t cy_pci_driver = { - cy_driver_name, - cy_pci_methods, - 0, -}; - -DRIVER_MODULE(cy, pci, cy_pci_driver, cy_devclass, 0, 0); -MODULE_DEPEND(cy, pci, 1, 1, 1); - -static int -cy_pci_probe(dev) - device_t dev; -{ - u_int32_t device_id; - - device_id = pci_get_devid(dev); - device_id &= ~0x00060000; - if (device_id != 0x0100120e && device_id != 0x0101120e) - return (ENXIO); - device_set_desc(dev, "Cyclades Cyclom-Y Serial Adapter"); - return (BUS_PROBE_DEFAULT); -} - -static int -cy_pci_attach(dev) - device_t dev; -{ - struct resource *ioport_res, *irq_res, *mem_res; - void *irq_cookie, *vaddr, *vsc; - u_int32_t ioport; - int irq_setup, ioport_rid, irq_rid, mem_rid; - u_char plx_ver; - - ioport_res = NULL; - irq_res = NULL; - mem_res = NULL; - - ioport_rid = CY_PCI_BASE_ADDR1; - ioport_res = bus_alloc_resource_any(dev, SYS_RES_IOPORT, &ioport_rid, - RF_ACTIVE); - if (ioport_res == NULL) { - device_printf(dev, "ioport resource allocation failed\n"); - goto fail; - } - ioport = rman_get_start(ioport_res); - - mem_rid = CY_PCI_BASE_ADDR2; - mem_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &mem_rid, - RF_ACTIVE); - if (mem_res == NULL) { - device_printf(dev, "memory resource allocation failed\n"); - goto fail; - } - vaddr = rman_get_virtual(mem_res); - - vsc = cyattach_common(vaddr, 1); - if (vsc == NULL) { - device_printf(dev, "no ports found!\n"); - goto fail; - } - - irq_rid = 0; - irq_res = bus_alloc_resource_any(dev, SYS_RES_IRQ, &irq_rid, - RF_SHAREABLE | RF_ACTIVE); - if (irq_res == NULL) { - device_printf(dev, "interrupt resource allocation failed\n"); - goto fail; - } -#ifdef CY_PCI_FASTINTR - irq_setup = bus_setup_intr(dev, irq_res, INTR_TYPE_TTY, - cyintr, NULL, vsc, &irq_cookie); -#else - irq_setup = ENXIO; -#endif - if (irq_setup != 0) - irq_setup = bus_setup_intr(dev, irq_res, INTR_TYPE_TTY, - NULL, (driver_intr_t *)cyintr, vsc, &irq_cookie); - if (irq_setup != 0) { - device_printf(dev, "interrupt setup failed\n"); - goto fail; - } - - /* - * Enable the "local" interrupt input to generate a - * PCI interrupt. - */ - plx_ver = *((u_char *)vaddr + PLX_VER) & 0x0f; - switch (plx_ver) { - case PLX_9050: - outw(ioport + CY_PLX_9050_ICS, - CY_PLX_9050_ICS_IENABLE | CY_PLX_9050_ICS_LOCAL_IENABLE | - CY_PLX_9050_ICS_LOCAL_IPOLARITY); - break; - case PLX_9060: - case PLX_9080: - default: /* Old board, use PLX_9060 values. */ - outw(ioport + CY_PLX_9060_ICS, - inw(ioport + CY_PLX_9060_ICS) | CY_PLX_9060_ICS_IENABLE | - CY_PLX_9060_ICS_LOCAL_IENABLE); - break; - } - - return (0); - -fail: - if (ioport_res != NULL) - bus_release_resource(dev, SYS_RES_IOPORT, ioport_rid, - ioport_res); - if (irq_res != NULL) - bus_release_resource(dev, SYS_RES_IRQ, irq_rid, irq_res); - if (mem_res != NULL) - bus_release_resource(dev, SYS_RES_MEMORY, mem_rid, mem_res); - return (ENXIO); -} diff --git a/sys/dev/cy/cyreg.h b/sys/dev/cy/cyreg.h deleted file mode 100644 index 88a36eb4a65e..000000000000 --- a/sys/dev/cy/cyreg.h +++ /dev/null @@ -1,75 +0,0 @@ -/*- - * Copyright (c) 1995 Bruce Evans. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the author nor the names of contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - */ - -/* - * Definitions for Cyclades Cyclom-Y serial boards. - */ - -/* - * Cyclades register offsets. These are physical offsets for ISA boards - * and physical offsets divided by 2 for PCI boards. - */ -#define CY8_SVCACKR 0x100 /* (r) */ -#define CY8_SVCACKT 0x200 /* (r) */ -#define CY8_SVCACKM 0x300 /* (r) */ -#define CY16_RESET 0x1400 /* (r) */ -#define CY_CLEAR_INTR 0x1800 /* intr ack address (w) */ - -#define CY_MAX_CD1400s 8 /* for Cyclom-32Y */ - -#define CY_CLOCK(version) ((version) >= 0x48 ? 60000000 : 25000000) -#define CY_RTS_DTR_SWAPPED(version) ((version) >= 0x48) - -/* - * The `cd' macros are for access to cd1400 registers. The `cy' macros - * are for access to Cyclades registers. Both sets of macros scale the - * register number to get an offset, but the scales are different for - * mostly historical reasons. - */ -#ifdef CyDebug -#define cd_inb(iobase, reg, cy_align) \ - (++cd_inbs, *((iobase) + (2 * (reg) << (cy_align)))) -#define cy_inb(iobase, reg, cy_align) \ - (++cy_inbs, *((iobase) + ((reg) << (cy_align)))) -#define cd_outb(iobase, reg, cy_align, val) \ - (++cd_outbs, (void)(*((iobase) + (2 * (reg) << (cy_align))) = (val))) -#define cy_outb(iobase, reg, cy_align, val) \ - (++cy_outbs, (void)(*((iobase) + ((reg) << (cy_align))) = (val))) -#else -#define cd_inb(iobase, reg, cy_align) \ - (*((iobase) + (2 * (reg) << (cy_align)))) -#define cy_inb(iobase, reg, cy_align) \ - (*((iobase) + ((reg) << (cy_align)))) -#define cd_outb(iobase, reg, cy_align, val) \ - ((void)(*((iobase) + (2 * (reg) << (cy_align))) = (val))) -#define cy_outb(iobase, reg, cy_align, val) \ - ((void)(*((iobase) + ((reg) << (cy_align))) = (val))) -#endif diff --git a/sys/dev/cy/cyvar.h b/sys/dev/cy/cyvar.h deleted file mode 100644 index 6b770e8761fa..000000000000 --- a/sys/dev/cy/cyvar.h +++ /dev/null @@ -1,36 +0,0 @@ -/*- - * Copyright (c) 2004 Bruce D. Evans - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - */ - -typedef u_char volatile *cy_addr; - -extern devclass_t cy_devclass; -extern char cy_driver_name[]; - -void *cyattach_common(cy_addr cy_iobase, int cy_align); -driver_filter_t cyintr; -int cy_units(cy_addr cy_iobase, int cy_align); diff --git a/sys/dev/digi/CX.bios.h b/sys/dev/digi/CX.bios.h deleted file mode 100644 index 9688921c8c77..000000000000 --- a/sys/dev/digi/CX.bios.h +++ /dev/null @@ -1,189 +0,0 @@ -/*- - * Copyright (c) 2001 Brian Somers <brian@Awfulhak.org> - * based on work by Slawa Olhovchenkov - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - */ - -static const u_char CX_bios[] = { - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x40, 0x28, - 0x23, 0x29, 0x68, 0x6f, 0x73, 0x74, 0x62, 0x69, 0x6f, 0x73, 0x2e, 0x61, 0x73, - 0x6d, 0x09, 0x36, 0x2e, 0x34, 0x20, 0x39, 0x2f, 0x32, 0x30, 0x2f, 0x39, 0x30, - 0x00, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x28, 0x43, - 0x29, 0x20, 0x31, 0x39, 0x39, 0x30, 0x2c, 0x20, 0x44, 0x69, 0x67, 0x69, 0x42, - 0x6f, 0x61, 0x72, 0x64, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x9f, 0xf8, 0x9f, 0xf8, - 0x22, 0xf9, 0x9f, 0xf8, 0x9f, 0xf8, 0x9f, 0xf8, 0x9f, 0xf8, 0x9f, 0xf8, 0x9f, - 0xf8, 0x9f, 0xf8, 0xab, 0xf8, 0xab, 0xf8, 0xab, 0xf8, 0xc5, 0xf8, 0xab, 0xf8, - 0xab, 0xf8, 0x9f, 0xf8, 0x9f, 0xf8, 0xab, 0xf8, 0xab, 0xf8, 0x9f, 0xf8, 0xc2, - 0xf8, 0x9f, 0xf8, 0x9f, 0xf8, 0x9f, 0xf8, 0x9f, 0xf8, 0x9f, 0xf8, 0x9f, 0xf8, - 0x9f, 0xf8, 0x9f, 0xf8, 0x9f, 0xf8, 0x9f, 0xf8, 0x9f, 0xf8, 0x84, 0x00, 0x80, - 0x00, 0x00, 0x00, 0x1e, 0x2e, 0x8e, 0x1e, 0x9d, 0xf8, 0xfe, 0x06, 0x83, 0x00, - 0x1f, 0xcf, 0x1e, 0x50, 0x52, 0x2e, 0x8e, 0x1e, 0x9d, 0xf8, 0xfe, 0x06, 0x84, - 0x00, 0xb8, 0x00, 0x80, 0xba, 0x22, 0xff, 0xef, 0x5a, 0x58, 0x1f, 0xcf, 0xb4, - 0x80, 0xcf, 0x60, 0x06, 0x1e, 0x2e, 0x8e, 0x1e, 0x9d, 0xf8, 0xfe, 0x06, 0x80, - 0x00, 0xba, 0x84, 0x00, 0xb0, 0x03, 0xee, 0x90, 0x90, 0xec, 0x08, 0x06, 0x81, - 0x00, 0xa8, 0x08, 0x74, 0x09, 0xba, 0x84, 0x00, 0xb0, 0x10, 0xee, 0xeb, 0x25, - 0x90, 0xa8, 0x01, 0x74, 0x09, 0xba, 0x80, 0x00, 0xb0, 0x10, 0xee, 0xeb, 0x18, - 0x90, 0xa8, 0x20, 0x74, 0x09, 0xba, 0x84, 0x00, 0xb0, 0x30, 0xee, 0xeb, 0x0b, - 0x90, 0xa8, 0x04, 0x74, 0x06, 0xba, 0x80, 0x00, 0xb0, 0x30, 0xee, 0xba, 0x80, - 0x00, 0xb0, 0x38, 0xee, 0x90, 0x90, 0xba, 0x22, 0xff, 0xb8, 0x00, 0x80, 0xef, - 0x1f, 0x07, 0x61, 0xcf, 0x60, 0x1e, 0x06, 0xfc, 0x2e, 0x8e, 0x06, 0x9d, 0xf8, - 0x2e, 0x8e, 0x1e, 0x9d, 0xf8, 0x8d, 0x36, 0x40, 0x00, 0xad, 0x3c, 0x3f, 0x7f, - 0x22, 0x3c, 0x1f, 0x7f, 0x22, 0x32, 0xe4, 0xd1, 0xe0, 0x3d, 0x16, 0x00, 0x90, - 0x73, 0x14, 0xbb, 0x63, 0xf9, 0x03, 0xd8, 0x2e, 0xff, 0x17, 0x8d, 0x36, 0x40, - 0x00, 0xb0, 0x00, 0x89, 0x04, 0x07, 0x1f, 0x61, 0xcf, 0xb4, 0x80, 0xeb, 0xf0, - 0xcd, 0x15, 0xeb, 0xec, 0x79, 0xf9, 0xad, 0xf9, 0xed, 0xf9, 0xf0, 0xf9, 0xf5, - 0xf9, 0xfe, 0xf9, 0x06, 0xfa, 0x0f, 0xfa, 0x17, 0xfa, 0x1a, 0xfa, 0x47, 0xfa, - 0x1e, 0xac, 0x3c, 0x00, 0x75, 0x09, 0xe4, 0x00, 0x0c, 0x01, 0xe6, 0x00, 0xeb, - 0x1e, 0x90, 0x3c, 0x01, 0x75, 0x09, 0xe4, 0x00, 0x24, 0xfe, 0xe6, 0x00, 0xeb, - 0x11, 0x90, 0x3c, 0x02, 0x75, 0x10, 0xe4, 0x00, 0x24, 0xfe, 0xe6, 0x00, 0xf6, - 0xec, 0x0c, 0x01, 0xe6, 0x00, 0xb4, 0x00, 0x1f, 0xc3, 0xb4, 0x80, 0x1f, 0xc3, - 0x1e, 0xad, 0x8b, 0xd8, 0xad, 0x8e, 0xdb, 0x8b, 0xf0, 0x33, 0xdb, 0x8b, 0x07, - 0x3d, 0x4f, 0x53, 0x75, 0x2a, 0x8a, 0x47, 0x02, 0x32, 0xe4, 0x86, 0xc4, 0x8b, - 0xc8, 0x32, 0xc0, 0x02, 0x07, 0x43, 0xe2, 0xfb, 0x0a, 0xc0, 0x75, 0x16, 0x8c, - 0xd9, 0x1f, 0x89, 0x0e, 0x2e, 0x00, 0x89, 0x36, 0x2c, 0x00, 0x8d, 0x1e, 0x02, - 0x00, 0xc7, 0x07, 0x45, 0x4d, 0x32, 0xe4, 0xc3, 0x1f, 0xb4, 0x80, 0xc3, 0xb4, - 0x80, 0xc3, 0xea, 0xf0, 0xff, 0x00, 0xf0, 0xad, 0x8b, 0xd0, 0xec, 0x88, 0x04, - 0x32, 0xe4, 0xc3, 0xad, 0x8b, 0xd0, 0xac, 0xee, 0x32, 0xe4, 0xc3, 0xad, 0x8b, - 0xd0, 0xed, 0x89, 0x04, 0x32, 0xe4, 0xc3, 0xad, 0x8b, 0xd0, 0xad, 0xef, 0x32, - 0xe4, 0xc3, 0xb4, 0x80, 0xc3, 0xac, 0x3c, 0x02, 0x7f, 0x25, 0xfe, 0xc8, 0x32, - 0xe4, 0xd1, 0xe0, 0x8d, 0x1e, 0x99, 0xf8, 0x03, 0xd8, 0x2e, 0x8b, 0x17, 0xec, - 0xac, 0x3c, 0x0f, 0x7f, 0x10, 0x3c, 0x00, 0x74, 0x03, 0xee, 0x90, 0x90, 0xec, - 0x8b, 0xfe, 0x1e, 0x07, 0xaa, 0x32, 0xe4, 0xc3, 0xb4, 0x80, 0xc3, 0xac, 0x3c, - 0x02, 0x7f, 0x1f, 0xfe, 0xc8, 0x32, 0xe4, 0xd1, 0xe0, 0x8d, 0x1e, 0x99, 0xf8, - 0x03, 0xd8, 0x2e, 0x8b, 0x17, 0xec, 0xac, 0x3c, 0x0f, 0x7f, 0x0a, 0x3c, 0x00, - 0x74, 0x01, 0xee, 0xac, 0xee, 0x32, 0xe4, 0xc3, 0xb4, 0x80, 0xc3, 0xfc, 0x8e, - 0xc0, 0xb8, 0xff, 0xff, 0x8b, 0xcb, 0x33, 0xff, 0xf3, 0xab, 0x8b, 0xcb, 0x33, - 0xff, 0xf3, 0xaf, 0xe3, 0x01, 0xc3, 0xb8, 0xaa, 0xaa, 0x8b, 0xcb, 0x33, 0xff, - 0xf3, 0xab, 0x8b, 0xcb, 0x33, 0xff, 0xf3, 0xaf, 0xe3, 0x01, 0xc3, 0xb8, 0x55, - 0x55, 0x8b, 0xcb, 0x33, 0xff, 0xf3, 0xab, 0x8b, 0xcb, 0x33, 0xff, 0xf3, 0xaf, - 0xe3, 0x01, 0xc3, 0x33, 0xc0, 0x8b, 0xcb, 0x33, 0xff, 0xf3, 0xab, 0x8b, 0xcb, - 0x33, 0xff, 0xf3, 0xaf, 0xc3, 0xba, 0x01, 0x02, 0xb0, 0x0d, 0xee, 0xb0, 0x00, - 0xee, 0xba, 0x0b, 0x02, 0xb0, 0x08, 0xee, 0xba, 0x06, 0x02, 0xb0, 0x70, 0xee, - 0xb0, 0x0c, 0xee, 0xba, 0x07, 0x02, 0xb0, 0x0f, 0xee, 0xb0, 0x00, 0xee, 0xba, - 0x0b, 0x02, 0xb0, 0x07, 0xee, 0xba, 0x04, 0x02, 0xb0, 0x50, 0xee, 0xb0, 0x0c, - 0xee, 0xba, 0x05, 0x02, 0xb0, 0x0d, 0xee, 0xb0, 0x00, 0xee, 0xba, 0x0b, 0x02, - 0xb0, 0x0a, 0xee, 0xba, 0x08, 0x02, 0xb0, 0x30, 0xee, 0xba, 0x0e, 0x02, 0xb0, - 0x00, 0xee, 0xba, 0x80, 0x00, 0xb0, 0x0e, 0xee, 0x90, 0x90, 0xb0, 0x17, 0xee, - 0xba, 0x84, 0x00, 0xb0, 0x0e, 0xee, 0x90, 0x90, 0xb0, 0x17, 0xee, 0xfb, 0xb9, - 0x00, 0xf0, 0x51, 0xb9, 0x05, 0x00, 0xe2, 0xfe, 0x59, 0x26, 0xa0, 0x80, 0x00, - 0x3c, 0x04, 0x74, 0x0c, 0xe2, 0xef, 0x26, 0x81, 0x0e, 0x14, 0x00, 0x00, 0x08, - 0xeb, 0x30, 0x90, 0xbb, 0x60, 0x00, 0xb9, 0x0e, 0x00, 0x33, 0xc0, 0x26, 0x8a, - 0x27, 0x3a, 0xc4, 0x75, 0xe7, 0x43, 0xfe, 0xc0, 0xe2, 0xf4, 0xbb, 0x70, 0x00, - 0xb9, 0x0e, 0x00, 0x33, 0xc0, 0x26, 0x8a, 0x27, 0x3a, 0xc4, 0x75, 0xd3, 0x43, - 0xfe, 0xc0, 0xe2, 0xf4, 0x26, 0x81, 0x0e, 0x12, 0x00, 0x00, 0x08, 0x26, 0xa1, - 0x14, 0x00, 0x0d, 0x00, 0x00, 0x75, 0x09, 0xfc, 0x8d, 0x3e, 0x00, 0x00, 0xb8, - 0x47, 0x44, 0xab, 0xb8, 0xff, 0xff, 0xab, 0xab, 0xab, 0xb8, 0x42, 0x49, 0xab, - 0xb8, 0x4f, 0x53, 0xab, 0xb8, 0x45, 0x49, 0x26, 0x80, 0x3e, 0x10, 0x00, 0x03, - 0x74, 0x19, 0xb8, 0x49, 0x53, 0x26, 0x80, 0x3e, 0x10, 0x00, 0x02, 0x74, 0x0e, - 0xb8, 0x4d, 0x43, 0x26, 0x80, 0x3e, 0x10, 0x00, 0x01, 0x74, 0x03, 0xb8, 0xff, - 0xff, 0xab, 0x8d, 0x36, 0xfe, 0xff, 0x8a, 0x04, 0x8d, 0x36, 0xff, 0xff, 0x8a, - 0x24, 0xab, 0x26, 0x81, 0x0e, 0x12, 0x00, 0x00, 0x80, 0x06, 0x1f, 0xa1, 0x2a, - 0x00, 0x40, 0xa3, 0x2a, 0x00, 0xa1, 0x00, 0x00, 0x8b, 0x1e, 0x02, 0x00, 0x3d, - 0x44, 0x47, 0x75, 0x04, 0xff, 0x2e, 0x2c, 0x00, 0x81, 0xfb, 0x45, 0x4d, 0x75, - 0xe3, 0x26, 0x81, 0x0e, 0x12, 0x00, 0x00, 0x20, 0xff, 0x2e, 0x2c, 0x00, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xb4, 0xd5, - 0x9e, 0x73, 0x4f, 0x7b, 0x4d, 0x79, 0x4b, 0x75, 0x49, 0x9f, 0xb1, 0x05, 0xd2, - 0xec, 0x73, 0x42, 0xb0, 0x40, 0xd0, 0xe0, 0x71, 0x3c, 0x32, 0xe4, 0x9e, 0x76, - 0x37, 0x7a, 0x35, 0x78, 0x33, 0x9f, 0xb1, 0x05, 0xd2, 0xec, 0x72, 0x2c, 0xd0, - 0xe4, 0x70, 0x28, 0xfa, 0xb8, 0xff, 0xff, 0xf9, 0x73, 0x21, 0x8b, 0xd8, 0x8b, - 0xcb, 0x8b, 0xd1, 0x8e, 0xc2, 0x8c, 0xc6, 0x8e, 0xde, 0x8c, 0xdf, 0x8e, 0xd7, - 0x8c, 0xd5, 0x8b, 0xe5, 0x73, 0x07, 0x33, 0xc5, 0x75, 0x07, 0xf8, 0xeb, 0xe3, - 0x0b, 0xc5, 0x74, 0x02, 0xeb, 0xfe, 0xba, 0xa0, 0xff, 0xb8, 0x38, 0xc0, 0xef, - 0xba, 0xa2, 0xff, 0xb8, 0xf8, 0x3f, 0xef, 0xba, 0xa8, 0xff, 0xb8, 0xba, 0xa0, - 0xef, 0xba, 0xa6, 0xff, 0xb8, 0xf8, 0x41, 0xef, 0xba, 0xa4, 0xff, 0xb8, 0x3b, - 0x00, 0xef, 0xe4, 0x00, 0x24, 0x08, 0x74, 0x15, 0xba, 0xe0, 0xff, 0xb8, 0x00, - 0x60, 0xef, 0xba, 0xe2, 0xff, 0xb8, 0x9c, 0x00, 0xef, 0xba, 0xe4, 0xff, 0xb8, - 0x00, 0x80, 0xef, 0x8c, 0xc8, 0x8e, 0xd8, 0xbd, 0xc0, 0x00, 0xbb, 0x00, 0x80, - 0x8c, 0xc8, 0x8e, 0xd0, 0xbc, 0xb6, 0xfc, 0x8b, 0xc5, 0x25, 0x00, 0xf0, 0xe9, - 0xc0, 0xfd, 0xb4, 0x00, 0x74, 0x06, 0xb4, 0xff, 0xeb, 0x02, 0xae, 0xfc, 0x8e, - 0xc5, 0x2e, 0x89, 0x2e, 0x9d, 0xf8, 0x80, 0xfc, 0x00, 0x74, 0x08, 0x26, 0x83, - 0x0e, 0x14, 0x00, 0x01, 0xeb, 0xfe, 0x26, 0x83, 0x0e, 0x12, 0x00, 0x01, 0x26, - 0xc7, 0x06, 0x18, 0x00, 0x40, 0x00, 0xb8, 0x80, 0x00, 0x8e, 0xd0, 0xbc, 0x00, - 0x04, 0x33, 0xc0, 0xe4, 0x00, 0x26, 0xa2, 0x11, 0x00, 0x24, 0x06, 0x75, 0x09, - 0x26, 0xc6, 0x06, 0x10, 0x00, 0x03, 0xeb, 0x25, 0x90, 0x3c, 0x02, 0x75, 0x09, - 0x26, 0xc6, 0x06, 0x10, 0x00, 0x02, 0xeb, 0x18, 0x90, 0x3c, 0x04, 0x75, 0x09, - 0x26, 0xc6, 0x06, 0x10, 0x00, 0x01, 0xeb, 0x0b, 0x90, 0x26, 0xa3, 0x10, 0x00, - 0x26, 0x83, 0x0e, 0x14, 0x00, 0x02, 0x26, 0x83, 0x0e, 0x12, 0x00, 0x02, 0x26, - 0xc7, 0x06, 0x00, 0x00, 0x5a, 0x5a, 0x06, 0xb8, 0xc0, 0xe0, 0x8e, 0xc0, 0x26, - 0xa1, 0x00, 0x00, 0x07, 0x3d, 0x5a, 0x5a, 0x75, 0x24, 0x26, 0x83, 0x0e, 0x12, - 0x00, 0x04, 0xb8, 0x00, 0xf0, 0xbb, 0x00, 0x78, 0x06, 0xe8, 0x27, 0xfd, 0x07, - 0x75, 0x08, 0x26, 0x83, 0x06, 0x18, 0x00, 0x40, 0xeb, 0x06, 0x26, 0x83, 0x0e, - 0x14, 0x00, 0x04, 0xeb, 0x41, 0x90, 0xb9, 0x07, 0x00, 0xb8, 0x00, 0x10, 0xba, - 0x04, 0x00, 0xbb, 0x00, 0x80, 0x3d, 0x00, 0xf0, 0x75, 0x03, 0xbb, 0x00, 0x78, - 0x06, 0x50, 0x51, 0xe8, 0xf9, 0xfc, 0x59, 0x58, 0x07, 0x75, 0x1c, 0x26, 0x83, - 0x06, 0x18, 0x00, 0x40, 0x26, 0x09, 0x16, 0x12, 0x00, 0xd1, 0xe2, 0x05, 0x00, - 0x10, 0x3d, 0x00, 0x40, 0x75, 0x03, 0xb8, 0x00, 0xc0, 0xe2, 0xd0, 0xeb, 0x05, - 0x26, 0x09, 0x16, 0x14, 0x00, 0x06, 0xfc, 0x33, 0xff, 0x8e, 0xc7, 0xb9, 0x00, - 0x02, 0xb8, 0x00, 0xf0, 0xf3, 0xab, 0x33, 0xff, 0xbe, 0x57, 0xf8, 0xb9, 0x20, - 0x00, 0xa5, 0x47, 0x47, 0xe2, 0xfb, 0xbe, 0x97, 0xf8, 0xb9, 0xe0, 0x00, 0x8b, - 0x1c, 0x26, 0x89, 0x1d, 0x83, 0xc7, 0x04, 0xe2, 0xf8, 0x07, 0xba, 0x28, 0xff, - 0xb8, 0xfd, 0x00, 0xef, 0xba, 0x32, 0xff, 0xb8, 0x0d, 0x00, 0xef, 0xba, 0x34, - 0xff, 0xb8, 0x0f, 0x00, 0xef, 0xba, 0x36, 0xff, 0xb8, 0x0e, 0x00, 0xef, 0xba, - 0x38, 0xff, 0xb8, 0x19, 0x00, 0xef, 0xba, 0x3a, 0xff, 0xb8, 0x18, 0x00, 0xef, - 0xba, 0x3c, 0xff, 0xb8, 0x0b, 0x00, 0xef, 0xba, 0x3e, 0xff, 0xb8, 0x1a, 0x00, - 0xef, 0x8d, 0x3e, 0x90, 0x00, 0x8d, 0x36, 0x99, 0xf8, 0xb9, 0x02, 0x00, 0xf3, - 0xa5, 0xb9, 0x02, 0x00, 0x8d, 0x36, 0x90, 0x00, 0x26, 0x8b, 0x14, 0xb3, 0x01, - 0x32, 0xc0, 0xee, 0xb0, 0x0c, 0xee, 0x8a, 0xc3, 0x8a, 0xc3, 0xee, 0x83, 0xc6, - 0x02, 0x26, 0x8b, 0x14, 0xfe, 0xc3, 0xe2, 0xeb, 0xb9, 0x02, 0x00, 0x8d, 0x36, - 0x90, 0x00, 0x26, 0x8b, 0x14, 0xb3, 0x01, 0xbf, 0x00, 0x80, 0xb0, 0x0c, 0xee, - 0xf6, 0xe8, 0xec, 0x3a, 0xc3, 0x74, 0x0e, 0x33, 0xc0, 0x26, 0x89, 0x04, 0x26, - 0x81, 0x0e, 0x14, 0x00, 0x00, 0x02, 0xd1, 0xc7, 0x83, 0xc6, 0x02, 0x26, 0x8b, - 0x14, 0xfe, 0xc3, 0xe2, 0xde, 0x26, 0x81, 0x0e, 0x12, 0x00, 0x00, 0x02, 0xba, - 0x0c, 0x02, 0x33, 0xc0, 0xee, 0xba, 0x00, 0x02, 0xb9, 0x08, 0x00, 0xb8, 0x01, - 0x00, 0xee, 0x90, 0x90, 0xfe, 0xc0, 0xee, 0x90, 0x90, 0x42, 0xfe, 0xc0, 0xe2, - 0xf3, 0xba, 0x0c, 0x02, 0x33, 0xc0, 0xee, 0xba, 0x00, 0x02, 0xb9, 0x08, 0x00, - 0xb3, 0x01, 0xec, 0x3a, 0xc3, 0x75, 0x0f, 0xfe, 0xc3, 0xec, 0x3a, 0xc3, 0x75, - 0x08, 0x42, 0xfe, 0xc3, 0xe2, 0xef, 0xeb, 0x08, 0x90, 0x26, 0x81, 0x0e, 0x14, - 0x00, 0x00, 0x04, 0x26, 0x81, 0x0e, 0x12, 0x00, 0x00, 0x04, 0xba, 0x0d, 0x02, - 0xee, 0xb8, 0x00, 0x40, 0xba, 0x56, 0xff, 0xef, 0xba, 0x5e, 0xff, 0xef, 0xba, - 0x66, 0xff, 0xef, 0xba, 0x84, 0x00, 0xec, 0xb0, 0x09, 0xee, 0x90, 0x90, 0xb0, - 0xc0, 0xee, 0xb9, 0x02, 0x00, 0x8d, 0x36, 0x90, 0x00, 0x26, 0x8b, 0x14, 0xb0, - 0x04, 0xee, 0x90, 0x90, 0xb0, 0x20, 0xee, 0x90, 0x90, 0xb0, 0x01, 0xee, 0x90, - 0x90, 0xb0, 0xf9, 0xee, 0x90, 0x90, 0xb0, 0x03, 0xee, 0x90, 0x90, 0xb0, 0xc0, - 0xee, 0x90, 0x90, 0xb0, 0x05, 0xee, 0x90, 0x90, 0xb0, 0x60, 0xee, 0x90, 0x90, - 0xb0, 0x06, 0xee, 0x90, 0x90, 0xb0, 0xff, 0xee, 0x90, 0x90, 0xb0, 0x07, 0xee, - 0x90, 0x90, 0xb0, 0x7e, 0xee, 0x90, 0x90, 0xb0, 0x09, 0xee, 0x90, 0x90, 0xb0, - 0x2e, 0xee, 0x90, 0x90, 0xb0, 0x0a, 0xee, 0x90, 0x90, 0xb0, 0x00, 0xee, 0x90, - 0x90, 0xb0, 0x0b, 0xee, 0x90, 0x90, 0xb0, 0x56, 0xee, 0x90, 0x90, 0xb0, 0x0c, - 0xee, 0x90, 0x90, 0xb0, 0xfe, 0xee, 0x90, 0x90, 0xb0, 0x0d, 0xee, 0x90, 0x90, - 0xb0, 0x05, 0xee, 0x90, 0x90, 0xb0, 0x0e, 0xee, 0x90, 0x90, 0xb0, 0x17, 0xee, - 0x90, 0x90, 0xb0, 0x0f, 0xee, 0x90, 0x90, 0xb0, 0x41, 0xee, 0x90, 0x90, 0xb0, - 0x07, 0xee, 0x90, 0x90, 0xb0, 0x5b, 0xee, 0x90, 0x90, 0xb0, 0x03, 0xee, 0x90, - 0x90, 0xb0, 0xc9, 0xee, 0x90, 0x90, 0xb0, 0x05, 0xee, 0x90, 0x90, 0xb0, 0x69, - 0xee, 0x90, 0x90, 0xb0, 0x80, 0xee, 0x90, 0x90, 0xb0, 0x10, 0xee, 0x90, 0x90, - 0x46, 0x46, 0xe2, 0x03, 0xeb, 0x04, 0x90, 0xe9, 0x49, 0xff, 0xba, 0x3a, 0xff, - 0xb8, 0x16, 0x00, 0xef, 0xba, 0x38, 0xff, 0xb8, 0x07, 0x00, 0xef, 0xb9, 0x0e, - 0x00, 0xbb, 0x50, 0x00, 0x33, 0xc0, 0x26, 0x88, 0x07, 0x43, 0x40, 0xe2, 0xf9, - 0xb9, 0x20, 0x00, 0xbb, 0x60, 0x00, 0x26, 0xc6, 0x07, 0xff, 0x43, 0xe2, 0xf9, - 0xba, 0x0c, 0x02, 0x33, 0xc0, 0xee, 0x90, 0x90, 0xba, 0x02, 0x02, 0xb0, 0x60, - 0xee, 0x90, 0x90, 0xb0, 0x0c, 0xee, 0x90, 0x90, 0xba, 0x03, 0x02, 0xb0, 0x0f, - 0xee, 0x90, 0x90, 0xb0, 0x00, 0xee, 0xba, 0x0b, 0x02, 0xb0, 0x05, 0xee, 0xba, - 0x00, 0x02, 0xb0, 0x50, 0xee, 0xb0, 0x0c, 0xee, 0xe9, 0xcc, 0xfa, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xea, 0x00, 0xfc, 0x00, 0xf0, 0x43, 0x58, 0x48, 0x41, - 0x5f, 0x31, 0x39, 0x39, 0x30, 0x32, 0x30 -}; diff --git a/sys/dev/digi/CX.c b/sys/dev/digi/CX.c deleted file mode 100644 index 3a9aa31297ce..000000000000 --- a/sys/dev/digi/CX.c +++ /dev/null @@ -1,48 +0,0 @@ -/*- - * Copyright (c) 2001 Brian Somers <brian@Awfulhak.org> - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include <sys/param.h> -#include <sys/conf.h> -#include <sys/kernel.h> -#include <sys/module.h> - -#include <dev/digi/CX.bios.h> -#include <dev/digi/CX.fepos.h> -#include <dev/digi/digi_mod.h> - -struct digi_mod digi_mod_CX = { - DIGI_MOD_VERSION, - { CX_bios, sizeof(CX_bios) }, - { CX_fepos, sizeof(CX_fepos) }, - { NULL, 0 } -}; - -MODULE_VERSION(digi_CX, 1); -DEV_MODULE(digi_CX, 0, 0); diff --git a/sys/dev/digi/CX.fepos.h b/sys/dev/digi/CX.fepos.h deleted file mode 100644 index 9b32459f256b..000000000000 --- a/sys/dev/digi/CX.fepos.h +++ /dev/null @@ -1,996 +0,0 @@ -/*- - * Copyright (c) 2001 Brian Somers <brian@Awfulhak.org> - * based on work by Slawa Olhovchenkov - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - */ - -static const u_char CX_fepos[] = { - 0x4f, 0x53, 0x31, 0x5f, 0xe9, 0xf9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x28, 0x23, 0x29, 0x63, 0x78, 0x66, - 0x65, 0x70, 0x2e, 0x62, 0x69, 0x6e, 0x09, 0x33, 0x2e, 0x33, 0x20, 0x20, 0x30, - 0x34, 0x2f, 0x31, 0x31, 0x2f, 0x39, 0x37, 0x20, 0x00, 0x40, 0x28, 0x23, 0x29, - 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x28, 0x43, 0x29, - 0x20, 0x31, 0x39, 0x38, 0x39, 0x2d, 0x39, 0x34, 0x2c, 0x20, 0x44, 0x69, 0x67, - 0x69, 0x20, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x2c, 0x20, 0x41, 0x6c, 0x6c, 0x20, 0x52, 0x69, 0x67, 0x68, 0x74, - 0x73, 0x20, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x00, 0x00, 0x35, - 0x01, 0x35, 0x01, 0x38, 0x01, 0x35, 0x01, 0x35, 0x01, 0x35, 0x01, 0x35, 0x01, - 0x35, 0x01, 0x35, 0x01, 0x35, 0x01, 0x35, 0x01, 0x35, 0x01, 0x35, 0x01, 0xf5, - 0x03, 0x35, 0x01, 0x35, 0x01, 0x35, 0x01, 0x35, 0x01, 0xc3, 0x00, 0x35, 0x01, - 0x35, 0x01, 0x35, 0x01, 0x35, 0x01, 0x35, 0x01, 0x35, 0x01, 0x35, 0x01, 0x35, - 0x01, 0x35, 0x01, 0x35, 0x01, 0x35, 0x01, 0x35, 0x01, 0x35, 0x01, 0x35, 0x01, - 0x60, 0x1e, 0xb8, 0x00, 0x00, 0x8e, 0xd8, 0x8b, 0xec, 0x8b, 0x6e, 0x02, 0x89, - 0x2e, 0x02, 0x0d, 0x83, 0x3e, 0x10, 0x0c, 0x00, 0x74, 0x03, 0xe8, 0x6f, 0x00, - 0x83, 0x06, 0x00, 0x0e, 0x02, 0x83, 0x3e, 0x04, 0x0e, 0x00, 0x74, 0x42, 0x8b, - 0x16, 0x00, 0x0e, 0x2b, 0x16, 0x02, 0x0e, 0x3b, 0x16, 0x04, 0x0e, 0x72, 0x34, - 0x8b, 0x16, 0x00, 0x0e, 0x89, 0x16, 0x02, 0x0e, 0xa1, 0x18, 0x0d, 0x3b, 0x06, - 0x1a, 0x0d, 0x75, 0x07, 0x83, 0x3e, 0x00, 0x0d, 0x00, 0x74, 0x1c, 0x83, 0x26, - 0x24, 0x0d, 0xfe, 0xa1, 0x24, 0x0d, 0xe6, 0x00, 0xe4, 0x00, 0x24, 0x06, 0x3c, - 0x04, 0x74, 0x0a, 0x83, 0x0e, 0x24, 0x0d, 0x01, 0xa1, 0x24, 0x0d, 0xe6, 0x00, - 0xba, 0x22, 0xff, 0xb8, 0x00, 0x80, 0xef, 0x1f, 0x61, 0xcf, 0xe8, 0x14, 0x00, - 0x50, 0x1e, 0xb8, 0x00, 0x00, 0x8e, 0xd8, 0x83, 0x0e, 0x24, 0x0d, 0x01, 0xa1, - 0x24, 0x0d, 0xe6, 0x00, 0x1f, 0x58, 0xcf, 0xfa, 0xa3, 0x18, 0x0c, 0x89, 0x1e, - 0x1a, 0x0c, 0x89, 0x0e, 0x1c, 0x0c, 0x89, 0x16, 0x1e, 0x0c, 0x89, 0x36, 0x20, - 0x0c, 0x89, 0x3e, 0x22, 0x0c, 0x89, 0x2e, 0x24, 0x0c, 0x89, 0x26, 0x26, 0x0c, - 0x8c, 0xc8, 0xa3, 0x28, 0x0c, 0x8c, 0xd8, 0xa3, 0x2a, 0x0c, 0x8c, 0xd0, 0xa3, - 0x2c, 0x0c, 0x8c, 0xc0, 0xa3, 0x2e, 0x0c, 0x8b, 0xec, 0x8b, 0x46, 0x00, 0xa3, - 0x12, 0x0c, 0x8b, 0x46, 0x02, 0xa3, 0x14, 0x0c, 0x8b, 0x46, 0x04, 0xa3, 0x16, - 0x0c, 0xb8, 0x00, 0x00, 0x8e, 0xc0, 0x8d, 0x1e, 0x00, 0x0c, 0x26, 0xc7, 0x07, - 0x4e, 0x47, 0x8d, 0x1e, 0x20, 0x0d, 0x26, 0xc7, 0x07, 0x4e, 0x47, 0x8b, 0x2e, - 0x24, 0x0c, 0xa1, 0x18, 0x0c, 0x8e, 0x06, 0x2e, 0x0c, 0x8b, 0x1e, 0x1a, 0x0c, - 0x90, 0xeb, 0xfd, 0xb8, 0x00, 0x00, 0x8e, 0xc0, 0x8b, 0xf0, 0x8b, 0xf8, 0x2e, - 0x8b, 0x9c, 0x81, 0x00, 0x83, 0xc6, 0x02, 0x26, 0x89, 0x1d, 0x26, 0x8c, 0x4d, - 0x02, 0x83, 0xc7, 0x04, 0x81, 0xff, 0x80, 0x00, 0x72, 0xe8, 0x26, 0xc7, 0x05, - 0x35, 0x01, 0x26, 0x8c, 0x4d, 0x02, 0x83, 0xc7, 0x04, 0x81, 0xff, 0x00, 0x04, - 0x72, 0xee, 0xc3, 0xfa, 0xfc, 0xb8, 0x00, 0x00, 0x8e, 0xd8, 0x8e, 0xd0, 0xbc, - 0xfe, 0x0f, 0xeb, 0x30, 0x90, 0xfa, 0xfc, 0xb8, 0x00, 0x00, 0x8e, 0xd8, 0x8e, - 0xd0, 0xbc, 0xfe, 0x0f, 0x8b, 0x1e, 0x18, 0x0c, 0x89, 0x1e, 0x08, 0x0c, 0x81, - 0xfb, 0x80, 0x00, 0x76, 0x15, 0xb8, 0x00, 0x10, 0x8e, 0xc0, 0xbe, 0x00, 0xd0, - 0xbf, 0x00, 0x00, 0xb9, 0x00, 0x18, 0xf3, 0xa5, 0x50, 0x68, 0x2f, 0x02, 0xcb, - 0xc6, 0x06, 0x0f, 0x0c, 0x00, 0xe8, 0x86, 0xff, 0x8b, 0x1e, 0x08, 0x0c, 0xb8, - 0x00, 0x00, 0x8e, 0xc0, 0xbf, 0x00, 0x04, 0xb9, 0xd0, 0x0c, 0x2b, 0xcf, 0xd1, - 0xe9, 0xf3, 0xab, 0xbf, 0x00, 0x0d, 0x8c, 0xc9, 0xc1, 0xe1, 0x04, 0x2b, 0xcf, - 0xd1, 0xe9, 0xf3, 0xab, 0x89, 0x1e, 0x08, 0x0c, 0x8c, 0xc8, 0xa3, 0x0c, 0x0c, - 0x05, 0x00, 0x03, 0xa3, 0x0a, 0x0c, 0xba, 0x84, 0x00, 0xec, 0x90, 0x90, 0xb0, - 0x09, 0xee, 0x90, 0x90, 0xb0, 0xc0, 0xee, 0xb0, 0x01, 0xee, 0x90, 0x90, 0xb0, - 0x00, 0xee, 0xb0, 0x02, 0xee, 0x90, 0x90, 0xb0, 0x00, 0xee, 0xb0, 0x03, 0xee, - 0x90, 0x90, 0xb0, 0xc0, 0xee, 0xb0, 0x04, 0xee, 0x90, 0x90, 0xb0, 0x44, 0xee, - 0xb0, 0x05, 0xee, 0x90, 0x90, 0xb0, 0x60, 0xee, 0xb0, 0x09, 0xee, 0x90, 0x90, - 0xb0, 0x00, 0xee, 0xb0, 0x0b, 0xee, 0x90, 0x90, 0xb0, 0x52, 0xee, 0xb0, 0x0c, - 0xee, 0x90, 0x90, 0xb0, 0x00, 0xee, 0xb0, 0x0d, 0xee, 0x90, 0x90, 0xb0, 0x00, - 0xee, 0xb0, 0x0e, 0xee, 0xb0, 0x03, 0x90, 0x90, 0xee, 0xb0, 0x0f, 0xee, 0x90, - 0x90, 0xb0, 0x00, 0xee, 0xb0, 0x05, 0xee, 0x90, 0x90, 0xb0, 0x68, 0xee, 0x83, - 0xc2, 0x02, 0xb0, 0x08, 0xee, 0x90, 0x90, 0xb9, 0x00, 0x00, 0xb0, 0x08, 0xee, - 0x83, 0xea, 0x02, 0x41, 0xec, 0xa8, 0x04, 0x74, 0xfa, 0x89, 0x0e, 0x04, 0x0d, - 0xba, 0x84, 0x00, 0xec, 0x90, 0x90, 0xb0, 0x09, 0xee, 0x90, 0x90, 0xb0, 0xc0, - 0xee, 0xb8, 0x40, 0x1f, 0x83, 0xf9, 0x21, 0x73, 0x03, 0xb8, 0x88, 0x13, 0xba, - 0x5a, 0xff, 0xef, 0xba, 0x58, 0xff, 0xb8, 0x00, 0x00, 0xef, 0xba, 0x5e, 0xff, - 0xb8, 0x01, 0xe0, 0xef, 0xba, 0x56, 0xff, 0xb8, 0x00, 0x40, 0xef, 0xba, 0x66, - 0xff, 0xb8, 0x00, 0x40, 0xef, 0xc7, 0x06, 0x24, 0x0d, 0x01, 0x00, 0xa1, 0x24, - 0x0d, 0xe6, 0x00, 0xba, 0x32, 0xff, 0xb8, 0x01, 0x00, 0xef, 0xba, 0x3a, 0xff, - 0xb8, 0x12, 0x00, 0xef, 0xba, 0x28, 0xff, 0xb8, 0xfd, 0x00, 0xef, 0xba, 0x2c, - 0xff, 0xb8, 0x00, 0x00, 0xef, 0xfb, 0xbd, 0x00, 0x00, 0xe8, 0xf1, 0x24, 0xe8, - 0xf0, 0xfd, 0x8b, 0xcd, 0x8b, 0xec, 0x8b, 0x56, 0x02, 0xfa, 0xec, 0x8a, 0xe0, - 0x8b, 0xe9, 0x90, 0xec, 0x86, 0xe0, 0xfb, 0xc3, 0x8b, 0xcd, 0x8b, 0xec, 0x8b, - 0x56, 0x02, 0x8b, 0x46, 0x04, 0xfa, 0xee, 0x8a, 0xc4, 0x8b, 0xe9, 0x90, 0xee, - 0xfb, 0xc3, 0x8b, 0xcd, 0x8b, 0xec, 0x8b, 0x56, 0x02, 0x8a, 0x46, 0x04, 0xfa, - 0xee, 0x8b, 0xe9, 0x32, 0xe4, 0x90, 0xec, 0xfb, 0xc3, 0x8b, 0xcd, 0x8b, 0xec, - 0x8b, 0x56, 0x02, 0x8a, 0x46, 0x04, 0xfa, 0xee, 0x8a, 0x46, 0x06, 0x8b, 0xe9, - 0xee, 0xfb, 0xc3, 0x55, 0x8b, 0xec, 0x8b, 0x56, 0x04, 0xfa, 0xb0, 0x07, 0xee, - 0x90, 0x90, 0xec, 0x8a, 0xe0, 0xb0, 0x06, 0xee, 0x90, 0x90, 0x90, 0xec, 0xa3, - 0x12, 0x54, 0xb0, 0x01, 0xee, 0x90, 0x90, 0x90, 0xec, 0x86, 0xe0, 0x90, 0xec, - 0x86, 0xc4, 0xa3, 0x14, 0x54, 0xfb, 0x5d, 0xc3, 0x8b, 0xcd, 0x8b, 0xec, 0x8b, - 0x6e, 0x02, 0x2e, 0x8a, 0x46, 0x00, 0x32, 0xe4, 0x8b, 0xe9, 0xc3, 0x8b, 0xcd, - 0x8b, 0xec, 0x8b, 0x6e, 0x02, 0x2e, 0x8b, 0x46, 0x00, 0x8b, 0xe9, 0xc3, 0xfb, - 0x60, 0x1e, 0x06, 0xb8, 0x00, 0x00, 0x8e, 0xd8, 0xb0, 0x03, 0xe6, 0x84, 0x90, - 0x90, 0x90, 0xe4, 0x84, 0xa8, 0x08, 0x75, 0x27, 0xa8, 0x01, 0x75, 0x2f, 0xa8, - 0x20, 0x75, 0x07, 0xa8, 0x04, 0x75, 0x0f, 0xeb, 0x31, 0x90, 0xff, 0x36, 0x2a, - 0x0d, 0xe8, 0xbf, 0x16, 0x83, 0xc4, 0x02, 0xeb, 0xd8, 0xff, 0x36, 0x28, 0x0d, - 0xe8, 0xb3, 0x16, 0x83, 0xc4, 0x02, 0xeb, 0xcc, 0xff, 0x36, 0x2a, 0x0d, 0xe8, - 0xd9, 0x1a, 0x83, 0xc4, 0x02, 0xeb, 0xc0, 0xff, 0x36, 0x28, 0x0d, 0xe8, 0xcd, - 0x1a, 0x83, 0xc4, 0x02, 0xeb, 0xb4, 0xfa, 0xba, 0x22, 0xff, 0xb8, 0x0d, 0x00, - 0xef, 0x83, 0x3e, 0x52, 0x54, 0x00, 0x74, 0x09, 0xc7, 0x06, 0xa2, 0x7f, 0x01, - 0x00, 0xeb, 0x1f, 0x90, 0xc7, 0x06, 0x52, 0x54, 0x01, 0x00, 0xc7, 0x06, 0xa2, - 0x7f, 0x00, 0x00, 0xfb, 0xe8, 0xe6, 0x1f, 0xfa, 0x83, 0x3e, 0xa2, 0x7f, 0x00, - 0x75, 0xee, 0xc7, 0x06, 0x52, 0x54, 0x00, 0x00, 0x07, 0x1f, 0x61, 0xcf, 0x55, - 0x8b, 0xec, 0x57, 0x8b, 0x56, 0x04, 0x8b, 0x5e, 0x06, 0x8a, 0xca, 0x8a, 0xe9, - 0x80, 0xc9, 0x04, 0x03, 0xd2, 0x81, 0xc2, 0x01, 0x02, 0xbf, 0x0a, 0x02, 0xfa, - 0xec, 0x8a, 0xe0, 0xec, 0x86, 0xe0, 0x4a, 0x40, 0x3d, 0x14, 0x00, 0x77, 0x18, - 0x87, 0xd7, 0x8b, 0xc1, 0xee, 0x87, 0xd7, 0xec, 0x8a, 0xc8, 0xec, 0x8a, 0xe8, - 0x03, 0xd9, 0x8a, 0xc3, 0xee, 0x8a, 0xc7, 0xee, 0xeb, 0x21, 0x90, 0x87, 0xd7, - 0x8b, 0xc1, 0xb1, 0x1f, 0xd2, 0xcd, 0xd2, 0xcd, 0xee, 0x87, 0xd7, 0xec, 0x8a, - 0xc8, 0xec, 0x8a, 0xe8, 0x03, 0xd9, 0x8a, 0xc3, 0xee, 0x8a, 0xc7, 0xee, 0x87, - 0xd7, 0x8a, 0xc4, 0xee, 0xfb, 0x8b, 0xc3, 0x5f, 0x5d, 0xc3, 0x55, 0x8b, 0xec, - 0x57, 0x8b, 0x7e, 0x04, 0x8b, 0x5e, 0x06, 0x4b, 0x8b, 0xc7, 0x8a, 0xe0, 0x0c, - 0x04, 0x03, 0xff, 0x81, 0xc7, 0x00, 0x02, 0xba, 0x0a, 0x02, 0xfa, 0xb1, 0x1f, - 0xd2, 0xcd, 0xd2, 0xcd, 0xee, 0x87, 0xd7, 0xec, 0x8a, 0xc8, 0xec, 0x8a, 0xe8, - 0x2b, 0xd9, 0x78, 0x0c, 0x42, 0x8a, 0xc3, 0xee, 0x8a, 0xc7, 0xee, 0x87, 0xd7, - 0x8a, 0xc4, 0xee, 0xfb, 0x5f, 0x5d, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x8b, 0x7c, 0x0a, 0x2b, 0x7c, 0x0c, 0x23, 0x7c, 0x0e, 0x3b, 0x7c, - 0x18, 0x77, 0x44, 0xc6, 0x44, 0x4d, 0x00, 0x80, 0x4c, 0x4f, 0x02, 0xeb, 0x34, - 0x90, 0x8b, 0x7c, 0x0a, 0x3b, 0x7c, 0x0c, 0x75, 0x31, 0x8b, 0x3e, 0x10, 0x0d, - 0x3b, 0x3e, 0x12, 0x0d, 0x75, 0x27, 0x80, 0x7c, 0x4b, 0x00, 0x75, 0x21, 0xc6, - 0x44, 0x4c, 0x00, 0x80, 0x4c, 0x4f, 0x04, 0xeb, 0x17, 0x90, 0x55, 0x56, 0x57, - 0xbe, 0x00, 0x10, 0x8b, 0x0e, 0x02, 0x0c, 0x80, 0x7c, 0x4d, 0x00, 0x75, 0xb4, - 0x80, 0x7c, 0x4c, 0x00, 0x75, 0xc7, 0x8b, 0x7c, 0x12, 0x2b, 0x7c, 0x14, 0x74, - 0x21, 0x80, 0x7c, 0x4e, 0x00, 0x74, 0x1b, 0x23, 0x7c, 0x16, 0x03, 0xff, 0x3b, - 0x7c, 0x16, 0x73, 0x3d, 0xa1, 0x00, 0x0e, 0x2b, 0x44, 0x6e, 0x3b, 0x44, 0x22, - 0x73, 0x32, 0x80, 0x7c, 0x49, 0x00, 0x74, 0x2c, 0x8a, 0x44, 0x6a, 0x0c, 0x6f, - 0x20, 0x44, 0x4f, 0x8a, 0x44, 0x54, 0x32, 0x44, 0x57, 0x22, 0x44, 0x56, 0x0a, - 0x44, 0x58, 0x75, 0x26, 0x80, 0x7c, 0x4f, 0x00, 0x75, 0x24, 0x8a, 0x44, 0x54, - 0x88, 0x44, 0x57, 0x81, 0xc6, 0x80, 0x00, 0xe2, 0xa3, 0x5f, 0x5e, 0x5d, 0xc3, - 0xc6, 0x44, 0x4e, 0x00, 0xa1, 0x00, 0x0e, 0x89, 0x44, 0x6e, 0x80, 0x4c, 0x4f, - 0x08, 0xeb, 0xc4, 0x80, 0x4c, 0x4f, 0x20, 0x8b, 0x3e, 0x18, 0x0d, 0x8a, 0x44, - 0x48, 0x8a, 0x64, 0x4f, 0x89, 0x85, 0x00, 0x08, 0x8a, 0x44, 0x57, 0x8a, 0xe0, - 0x32, 0x44, 0x54, 0x0a, 0x44, 0x58, 0x32, 0xc4, 0x89, 0x85, 0x02, 0x08, 0x83, - 0xc7, 0x04, 0x81, 0xe7, 0xfc, 0x03, 0x3b, 0x3e, 0x1a, 0x0d, 0x74, 0xb6, 0x89, - 0x3e, 0x18, 0x0d, 0x88, 0x44, 0x57, 0xc6, 0x44, 0x58, 0x00, 0xc6, 0x44, 0x4f, - 0x00, 0xeb, 0xa5, 0x55, 0x8b, 0xec, 0x56, 0x57, 0x8b, 0x5e, 0x04, 0x89, 0x1e, - 0x16, 0x54, 0x8b, 0x7e, 0x06, 0x89, 0x3e, 0x18, 0x54, 0x8b, 0x56, 0x08, 0x03, - 0xd7, 0x89, 0x16, 0x1a, 0x54, 0x8c, 0xd8, 0x8e, 0xc0, 0x80, 0x3e, 0x30, 0x0c, - 0x00, 0x75, 0x09, 0xc7, 0x06, 0x28, 0x54, 0x00, 0x00, 0xeb, 0x48, 0x90, 0x8b, - 0x47, 0x06, 0x3a, 0x06, 0x32, 0x0c, 0x75, 0x3e, 0x83, 0x3e, 0x28, 0x54, 0x00, - 0x75, 0x37, 0xa3, 0x28, 0x54, 0xbe, 0x30, 0x0c, 0x8b, 0x4c, 0x08, 0x81, 0xf9, - 0x80, 0x00, 0x76, 0x06, 0xb9, 0x80, 0x00, 0x89, 0x4c, 0x08, 0xb9, 0x0a, 0x00, - 0x8a, 0x04, 0x3c, 0x02, 0x75, 0x03, 0x03, 0x4c, 0x08, 0xb8, 0xf4, 0xb3, 0xab, - 0xb8, 0xc3, 0x95, 0xab, 0xf3, 0xa4, 0xa0, 0x30, 0x0c, 0x3c, 0x04, 0x75, 0x05, - 0xc6, 0x06, 0x30, 0x0c, 0x00, 0xc7, 0x06, 0x1c, 0x54, 0x2a, 0x54, 0x8b, 0x4f, - 0x04, 0x8b, 0x37, 0xe9, 0x1c, 0x01, 0x00, 0x00, 0xe9, 0x06, 0x01, 0x00, 0xf1, - 0x06, 0x02, 0x00, 0xf7, 0x06, 0x03, 0x00, 0x11, 0x07, 0x04, 0x00, 0x2b, 0x07, - 0x05, 0x00, 0x31, 0x07, 0x06, 0x00, 0x3a, 0x07, 0x07, 0x00, 0x43, 0x07, 0x08, - 0x00, 0x55, 0x07, 0x09, 0x00, 0x4c, 0x07, 0x0a, 0x00, 0x5d, 0x07, 0x0b, 0x00, - 0x65, 0x07, 0x0c, 0x00, 0x6e, 0x07, 0x0d, 0x00, 0x7c, 0x07, 0x0e, 0x00, 0x85, - 0x07, 0x33, 0xc0, 0x86, 0x44, 0x64, 0xe9, 0xb4, 0x00, 0x8b, 0x44, 0x16, 0xe9, - 0xae, 0x00, 0x8b, 0x44, 0x1a, 0x23, 0x44, 0x16, 0x51, 0x52, 0x33, 0xd2, 0xb9, - 0x00, 0x80, 0xf7, 0xe1, 0x8b, 0x4c, 0x16, 0x41, 0xf7, 0xf1, 0x5a, 0x59, 0xe9, - 0x94, 0x00, 0x8b, 0x44, 0x1c, 0x23, 0x44, 0x16, 0x51, 0x52, 0x33, 0xd2, 0xb9, - 0x00, 0x80, 0xf7, 0xe1, 0x8b, 0x4c, 0x16, 0x41, 0xf7, 0xf1, 0x5a, 0x59, 0xeb, - 0x7b, 0x90, 0x8b, 0x44, 0x36, 0xeb, 0x75, 0x90, 0x8a, 0x44, 0x2c, 0x8a, 0x64, - 0x2d, 0xeb, 0x6c, 0x90, 0x8a, 0x44, 0x28, 0x8a, 0x64, 0x29, 0xeb, 0x63, 0x90, - 0x8a, 0x44, 0x2a, 0x8a, 0x64, 0x2b, 0xeb, 0x5a, 0x90, 0x8a, 0x44, 0x5f, 0x8a, - 0x64, 0x69, 0xeb, 0x51, 0x90, 0x8a, 0x44, 0x68, 0x32, 0xe4, 0xeb, 0x49, 0x90, - 0x8a, 0x44, 0x5e, 0x32, 0xe4, 0xeb, 0x41, 0x90, 0x8a, 0x44, 0x5c, 0x8a, 0x64, - 0x5d, 0xeb, 0x38, 0x90, 0x33, 0xc0, 0x87, 0x44, 0x24, 0x89, 0x45, 0x02, 0xff, - 0x44, 0x38, 0xeb, 0x2a, 0x90, 0x8a, 0x44, 0x5a, 0x8a, 0x64, 0x5b, 0xeb, 0x21, - 0x90, 0xeb, 0x24, 0x90, 0xbb, 0xa9, 0x06, 0x83, 0xc3, 0x04, 0xd1, 0xea, 0x72, - 0x05, 0x75, 0xf7, 0xeb, 0x1a, 0x90, 0xb0, 0xb0, 0x02, 0x44, 0x65, 0x2e, 0x8a, - 0x27, 0x89, 0x05, 0x2e, 0xff, 0x67, 0x02, 0x89, 0x45, 0x02, 0x83, 0xc7, 0x04, - 0x83, 0xfa, 0x00, 0x75, 0xdb, 0x89, 0x54, 0x2e, 0xeb, 0x1c, 0x90, 0xb3, 0xa0, - 0x02, 0x5c, 0x65, 0x88, 0x1d, 0x89, 0x45, 0x01, 0x89, 0x44, 0x3e, 0x83, 0xc7, - 0x03, 0xeb, 0x2e, 0x90, 0x8b, 0x54, 0x2e, 0x83, 0xfa, 0x00, 0x75, 0xb7, 0xd0, - 0x6c, 0x49, 0x8b, 0x44, 0x3c, 0x8b, 0xd0, 0x2b, 0x54, 0x3e, 0x8b, 0x5c, 0x12, - 0x2b, 0x5c, 0x14, 0x23, 0x5c, 0x16, 0x2b, 0xc3, 0x8b, 0xd8, 0x2b, 0x5c, 0x3e, - 0x8b, 0x54, 0x16, 0xc1, 0xea, 0x03, 0x3b, 0xda, 0x77, 0xc0, 0x8b, 0x5c, 0x0a, - 0x2b, 0x5c, 0x0c, 0x23, 0x5c, 0x0e, 0x74, 0x0b, 0x8b, 0x44, 0x42, 0x03, 0x44, - 0x3a, 0x2b, 0x44, 0x38, 0x75, 0x0f, 0x3b, 0x3e, 0x1a, 0x54, 0x73, 0x4f, 0x81, - 0xc6, 0x80, 0x00, 0xe2, 0xb1, 0xeb, 0x47, 0x90, 0xf7, 0x46, 0x0a, 0x01, 0x00, - 0x75, 0x04, 0xc6, 0x44, 0x4b, 0x01, 0x3b, 0xc3, 0x76, 0x02, 0x8b, 0xc3, 0x3d, - 0xf4, 0x01, 0x76, 0x03, 0xb8, 0xf4, 0x01, 0x89, 0x44, 0x40, 0x8b, 0xd7, 0x8b, - 0x1e, 0x1c, 0x54, 0x81, 0xfb, 0x2a, 0x54, 0x74, 0x13, 0x8b, 0x7f, 0xfe, 0x3b, - 0x45, 0x40, 0x73, 0x0b, 0x89, 0x3f, 0x83, 0xeb, 0x02, 0x81, 0xfb, 0x2a, 0x54, - 0x75, 0xed, 0x89, 0x37, 0x83, 0x06, 0x1c, 0x54, 0x02, 0x8b, 0xfa, 0xeb, 0xab, - 0x8b, 0x0e, 0x1c, 0x54, 0x81, 0xe9, 0x2a, 0x54, 0xd1, 0xe9, 0x74, 0x0a, 0x8b, - 0x16, 0x1a, 0x54, 0x2b, 0xd7, 0x2b, 0xd1, 0x7f, 0x03, 0xe9, 0xab, 0x00, 0x89, - 0x16, 0x1e, 0x54, 0xc7, 0x06, 0x20, 0x54, 0x00, 0x00, 0xbb, 0x2a, 0x54, 0x8b, - 0x37, 0x83, 0x3e, 0x1e, 0x54, 0x00, 0x74, 0x2f, 0x8b, 0x44, 0x40, 0x2b, 0x06, - 0x20, 0x54, 0xf7, 0xe1, 0x3b, 0x06, 0x1e, 0x54, 0x77, 0x0d, 0x29, 0x06, 0x1e, - 0x54, 0x8b, 0x44, 0x40, 0xa3, 0x20, 0x54, 0xeb, 0x14, 0x90, 0x33, 0xd2, 0xa1, - 0x1e, 0x54, 0x48, 0xf7, 0xf1, 0x40, 0x01, 0x06, 0x20, 0x54, 0xc7, 0x06, 0x1e, - 0x54, 0x00, 0x00, 0x51, 0x8b, 0x0e, 0x20, 0x54, 0x8a, 0x44, 0x65, 0x83, 0xf9, - 0x08, 0x77, 0x10, 0x8a, 0xe1, 0xfe, 0xcc, 0xc0, 0xe4, 0x04, 0x80, 0xc4, 0x00, - 0x02, 0xc4, 0xaa, 0xeb, 0x15, 0x90, 0x81, 0xf9, 0xff, 0x00, 0x77, 0x08, 0x0c, - 0x80, 0x8a, 0xe1, 0xab, 0xeb, 0x07, 0x90, 0x0c, 0x90, 0xaa, 0x8b, 0xc1, 0xab, - 0x8b, 0x44, 0x0c, 0x01, 0x4c, 0x38, 0x8b, 0x54, 0x0e, 0x42, 0x2b, 0xd0, 0x8e, - 0x5c, 0x08, 0x3b, 0xca, 0x72, 0x0d, 0x2b, 0xca, 0x96, 0x87, 0xca, 0xf3, 0xa4, - 0x96, 0xb8, 0x00, 0x00, 0x8b, 0xca, 0x96, 0xf3, 0xa4, 0x8c, 0xc1, 0x8e, 0xd9, - 0x96, 0x89, 0x44, 0x0c, 0x83, 0xc3, 0x02, 0x59, 0x49, 0x74, 0x03, 0xe9, 0x62, - 0xff, 0x2b, 0x3e, 0x18, 0x54, 0x8b, 0xc7, 0x5f, 0x5e, 0x5d, 0xc3, 0x55, 0x8b, - 0xec, 0x56, 0x57, 0x8b, 0x5e, 0x04, 0x89, 0x1e, 0x16, 0x54, 0x8b, 0x37, 0x89, - 0x36, 0x22, 0x54, 0x8b, 0x7e, 0x06, 0x8b, 0x56, 0x08, 0x03, 0xd7, 0x89, 0x16, - 0x1a, 0x54, 0x32, 0xc0, 0x88, 0x44, 0x49, 0x88, 0x84, 0xc9, 0x00, 0x88, 0x84, - 0x49, 0x01, 0x88, 0x84, 0xc9, 0x01, 0x88, 0x84, 0x49, 0x02, 0x88, 0x84, 0xc9, - 0x02, 0x88, 0x84, 0x49, 0x03, 0x88, 0x84, 0xc9, 0x03, 0x88, 0x84, 0x49, 0x04, - 0x88, 0x84, 0xc9, 0x04, 0x88, 0x84, 0x49, 0x05, 0x88, 0x84, 0xc9, 0x05, 0x88, - 0x84, 0x49, 0x06, 0x88, 0x84, 0xc9, 0x06, 0x88, 0x84, 0x49, 0x07, 0x88, 0x84, - 0xc9, 0x07, 0x3b, 0x3e, 0x1a, 0x54, 0x73, 0x1c, 0x8a, 0x25, 0x8b, 0xf0, 0x81, - 0xe6, 0x00, 0x0f, 0xd1, 0xee, 0x03, 0x36, 0x22, 0x54, 0x8a, 0xdc, 0x81, 0xe3, - 0xf0, 0x00, 0xc1, 0xeb, 0x03, 0x2e, 0xff, 0xa7, 0xc4, 0x09, 0x74, 0x0c, 0xb8, - 0x0e, 0x00, 0xeb, 0x09, 0x90, 0xb8, 0x0a, 0x00, 0xeb, 0x03, 0x90, 0x33, 0xc0, - 0x5f, 0x5e, 0x5d, 0xc3, 0xe5, 0x09, 0xe5, 0x09, 0xe5, 0x09, 0xe5, 0x09, 0xe5, - 0x09, 0xe5, 0x09, 0xe5, 0x09, 0xe5, 0x09, 0xf2, 0x09, 0xfd, 0x09, 0x58, 0x0a, - 0x74, 0x0a, 0x26, 0x0b, 0xb8, 0x09, 0xb8, 0x09, 0x40, 0x0b, 0xc3, 0x8a, 0xcc, - 0xc0, 0xe9, 0x04, 0x83, 0xe1, 0x07, 0x41, 0x47, 0xeb, 0x12, 0x90, 0x8a, 0x4d, - 0x01, 0x32, 0xed, 0x83, 0xc7, 0x02, 0xeb, 0x07, 0x90, 0x8b, 0x4d, 0x01, 0x83, - 0xc7, 0x03, 0xc6, 0x44, 0x49, 0x04, 0x01, 0x4c, 0x3c, 0x8e, 0x44, 0x10, 0x8b, - 0x5c, 0x12, 0x8b, 0x54, 0x14, 0x2b, 0xd3, 0x4a, 0x23, 0x54, 0x16, 0x33, 0xc0, - 0x3b, 0xca, 0x76, 0x06, 0x8b, 0xc1, 0x2b, 0xc2, 0x8b, 0xca, 0x8b, 0x54, 0x16, - 0x42, 0x2b, 0xd3, 0x3b, 0xca, 0x72, 0x12, 0x2b, 0xca, 0x87, 0xf7, 0x87, 0xfb, - 0x87, 0xca, 0xf3, 0xa4, 0x87, 0xfb, 0x87, 0xf7, 0x8b, 0xca, 0x33, 0xdb, 0x87, - 0xf7, 0x87, 0xfb, 0xf3, 0xa4, 0x87, 0xfb, 0x87, 0xf7, 0x03, 0xf8, 0x89, 0x5c, - 0x12, 0x0a, 0xc4, 0x08, 0x44, 0x59, 0xe9, 0x36, 0xff, 0x8b, 0x45, 0x01, 0x89, - 0x44, 0x3a, 0x3b, 0x44, 0x38, 0x75, 0x0b, 0x8b, 0x44, 0x0a, 0x2b, 0x44, 0x0c, - 0x75, 0x03, 0x88, 0x44, 0x4b, 0x83, 0xc7, 0x03, 0xe9, 0x1a, 0xff, 0x8b, 0x6c, - 0x20, 0x8a, 0x5d, 0x01, 0x83, 0xe3, 0x0f, 0xd0, 0xe3, 0x2e, 0xff, 0xa7, 0x84, - 0x0a, 0x07, 0x0b, 0xa4, 0x0a, 0x07, 0x0b, 0x07, 0x0b, 0x07, 0x0b, 0x07, 0x0b, - 0x07, 0x0b, 0x07, 0x0b, 0x07, 0x0b, 0x07, 0x0b, 0x07, 0x0b, 0x07, 0x0b, 0xb0, - 0x0a, 0x07, 0x0b, 0x07, 0x0b, 0x07, 0x0b, 0x8b, 0x45, 0x02, 0x89, 0x44, 0x42, - 0x83, 0xc7, 0x04, 0xe9, 0xde, 0xfe, 0xf6, 0x44, 0x28, 0x01, 0x75, 0x51, 0xf6, - 0x44, 0x28, 0x02, 0x74, 0x07, 0x80, 0x4c, 0x4f, 0x01, 0xeb, 0x45, 0x90, 0x57, - 0x06, 0x8b, 0x7c, 0x12, 0x8e, 0x44, 0x10, 0x32, 0xc0, 0xf6, 0x44, 0x28, 0x08, - 0x74, 0x23, 0x26, 0xc6, 0x05, 0xff, 0x47, 0x23, 0x7c, 0x16, 0x3b, 0x7c, 0x14, - 0x74, 0x33, 0xb4, 0x10, 0xf6, 0x44, 0x29, 0x80, 0x75, 0x02, 0x32, 0xe4, 0x26, - 0x88, 0x25, 0x47, 0x23, 0x7c, 0x16, 0x3b, 0x7c, 0x14, 0x74, 0x1d, 0x26, 0x88, - 0x05, 0x47, 0x23, 0x7c, 0x16, 0x3b, 0x7c, 0x14, 0x74, 0x11, 0x89, 0x7c, 0x12, - 0x07, 0x5f, 0x83, 0xc7, 0x04, 0xe9, 0x81, 0xfe, 0xb8, 0x0b, 0x00, 0xe9, 0xad, - 0xfe, 0x4f, 0x23, 0x7c, 0x16, 0x89, 0x7c, 0x12, 0xc6, 0x44, 0x59, 0x01, 0x07, - 0x5f, 0x83, 0xc7, 0x04, 0xe9, 0x68, 0xfe, 0x8b, 0x45, 0x01, 0x08, 0x44, 0x4f, - 0x8a, 0x44, 0x54, 0x32, 0xc4, 0x22, 0x44, 0x56, 0x08, 0x44, 0x58, 0x88, 0x64, - 0x54, 0x83, 0xc7, 0x03, 0xe9, 0x4e, 0xfe, 0x80, 0x3d, 0xff, 0x75, 0x04, 0x47, - 0xe9, 0x45, 0xfe, 0x81, 0x3d, 0xf4, 0xb3, 0x75, 0x13, 0x81, 0x7d, 0x02, 0xc3, - 0x95, 0x75, 0x0c, 0x83, 0xc7, 0x04, 0x8b, 0x4d, 0x08, 0x81, 0xf9, 0x80, 0x00, - 0x76, 0x06, 0xb8, 0x0c, 0x00, 0xe9, 0x58, 0xfe, 0x8b, 0xdf, 0x83, 0xc3, 0x0a, - 0x8a, 0x15, 0x80, 0xfa, 0x02, 0x74, 0x02, 0x03, 0xd9, 0x39, 0x06, 0x28, 0x54, - 0x74, 0x42, 0xa0, 0x30, 0x0c, 0x32, 0x05, 0x8a, 0x26, 0x32, 0x0c, 0x32, 0x65, - 0x02, 0x8b, 0x16, 0x34, 0x0c, 0x33, 0x55, 0x04, 0x0b, 0xc2, 0x8b, 0x16, 0x36, - 0x0c, 0x33, 0x55, 0x06, 0x0b, 0xc2, 0x75, 0x22, 0x89, 0x0e, 0x38, 0x0c, 0x80, - 0xfa, 0x02, 0x74, 0x0e, 0x8b, 0xf7, 0x83, 0xc6, 0x0a, 0xbf, 0x3a, 0x0c, 0x8c, - 0xd8, 0x8e, 0xc0, 0xf3, 0xa4, 0xc7, 0x06, 0x28, 0x54, 0x00, 0x00, 0xc6, 0x06, - 0x30, 0x0c, 0x00, 0x8b, 0xfb, 0xe9, 0xcb, 0xfd, 0x55, 0x56, 0x57, 0x8b, 0x3e, - 0x12, 0x0d, 0x3b, 0x3e, 0x10, 0x0d, 0x74, 0x1f, 0x81, 0xc7, 0x00, 0x04, 0x8a, - 0x7d, 0x01, 0x81, 0xe3, 0x00, 0x7f, 0xd1, 0xeb, 0x81, 0xc3, 0x00, 0x10, 0x8b, - 0xf3, 0x8a, 0x1d, 0x83, 0xe3, 0x1f, 0x03, 0xdb, 0x2e, 0xff, 0xa7, 0x2d, 0x0c, - 0x5f, 0x5e, 0x5d, 0xc3, 0x8b, 0x3e, 0x12, 0x0d, 0x8b, 0x36, 0x18, 0x0d, 0x8b, - 0x9d, 0x00, 0x04, 0x89, 0x9c, 0x00, 0x08, 0x8b, 0x9d, 0x02, 0x04, 0x89, 0x9c, - 0x02, 0x08, 0x83, 0xc6, 0x04, 0x81, 0xe6, 0xfc, 0x03, 0x3b, 0x36, 0x1a, 0x0d, - 0x74, 0x04, 0x89, 0x36, 0x18, 0x0d, 0x8b, 0x3e, 0x12, 0x0d, 0x83, 0xc7, 0x04, - 0x81, 0xe7, 0xfc, 0x03, 0x89, 0x3e, 0x12, 0x0d, 0xeb, 0x99, 0x6d, 0x0c, 0x7c, - 0x0c, 0x8b, 0x0c, 0xbc, 0x0c, 0xcb, 0x0c, 0xf3, 0x0b, 0xda, 0x0c, 0xf3, 0x0b, - 0xeb, 0x0c, 0x02, 0x0d, 0x17, 0x0d, 0x27, 0x0d, 0x38, 0x0d, 0x41, 0x0d, 0x53, - 0x0d, 0x44, 0x0d, 0x62, 0x0d, 0x71, 0x0d, 0x74, 0x0d, 0x97, 0x0d, 0xa8, 0x0d, - 0xbf, 0x0d, 0xcf, 0x0d, 0xf3, 0x0b, 0xf3, 0x0b, 0xf3, 0x0b, 0xf3, 0x0b, 0xf3, - 0x0b, 0xf3, 0x0b, 0xf3, 0x0b, 0xdd, 0x0d, 0xf3, 0x0b, 0x8b, 0x45, 0x02, 0x23, - 0x44, 0x16, 0x89, 0x44, 0x1a, 0x83, 0x4c, 0x2e, 0x04, 0xeb, 0xa0, 0x8b, 0x45, - 0x02, 0x23, 0x44, 0x16, 0x89, 0x44, 0x1c, 0x83, 0x4c, 0x2e, 0x08, 0xeb, 0x91, - 0x8b, 0x5d, 0x02, 0x8b, 0x44, 0x0a, 0x2b, 0x44, 0x0c, 0x23, 0x44, 0x0e, 0x8b, - 0x4c, 0x0a, 0x2b, 0xcb, 0x23, 0x4c, 0x0e, 0x2b, 0xc1, 0x72, 0x0c, 0x23, 0x5c, - 0x0e, 0x89, 0x5c, 0x0c, 0x8b, 0x44, 0x38, 0xeb, 0x04, 0x90, 0x03, 0x44, 0x38, - 0x89, 0x44, 0x36, 0x83, 0x4c, 0x2e, 0x10, 0xe9, 0x60, 0xff, 0x80, 0x4c, 0x64, - 0x40, 0x80, 0x64, 0x64, 0x7f, 0x83, 0x4c, 0x2e, 0x01, 0xe9, 0x51, 0xff, 0x80, - 0x4c, 0x64, 0x80, 0x80, 0x64, 0x64, 0xbf, 0x83, 0x4c, 0x2e, 0x01, 0xe9, 0x42, - 0xff, 0x8b, 0x45, 0x02, 0x88, 0x44, 0x5a, 0x88, 0x64, 0x5b, 0x81, 0x4c, 0x2e, - 0x00, 0x20, 0xe9, 0x31, 0xff, 0x8b, 0x45, 0x02, 0x75, 0x03, 0xb8, 0x19, 0x00, - 0x01, 0x44, 0x24, 0x81, 0x4c, 0x2e, 0x00, 0x10, 0x80, 0x4c, 0x4b, 0x01, 0xe9, - 0x1a, 0xff, 0x8b, 0x5d, 0x02, 0xf6, 0xd7, 0x22, 0x7c, 0x68, 0x0a, 0xdf, 0x88, - 0x5c, 0x68, 0x81, 0x4c, 0x2e, 0x00, 0x01, 0xe9, 0x05, 0xff, 0x8b, 0x5d, 0x02, - 0x88, 0x5c, 0x28, 0x88, 0x7c, 0x29, 0x83, 0x4c, 0x2e, 0x40, 0xe9, 0xf5, 0xfe, - 0x8b, 0x45, 0x02, 0x88, 0x44, 0x5c, 0x88, 0x64, 0x5d, 0x81, 0x4c, 0x2e, 0x00, - 0x08, 0xe9, 0xe4, 0xfe, 0x8b, 0x45, 0x02, 0x89, 0x44, 0x18, 0xe9, 0xdb, 0xfe, - 0xe9, 0xaf, 0xfe, 0x80, 0x4c, 0x64, 0x20, 0x80, 0x64, 0x64, 0xef, 0x83, 0x4c, - 0x2e, 0x01, 0xe9, 0xc9, 0xfe, 0x80, 0x4c, 0x64, 0x10, 0x80, 0x64, 0x64, 0xdf, - 0x83, 0x4c, 0x2e, 0x01, 0xe9, 0xba, 0xfe, 0xe8, 0x82, 0x01, 0xc6, 0x44, 0x64, - 0x01, 0xc7, 0x44, 0x2e, 0x01, 0x00, 0xe9, 0xab, 0xfe, 0xe9, 0x7f, 0xfe, 0x8b, - 0x45, 0x02, 0xc1, 0xe0, 0x06, 0x05, 0x00, 0x10, 0x8b, 0x1e, 0x0a, 0x0c, 0x81, - 0xc3, 0x00, 0x01, 0x3b, 0xc3, 0x72, 0x0b, 0x3d, 0x00, 0x80, 0x77, 0x06, 0xe8, - 0xa9, 0x00, 0xe9, 0x88, 0xfe, 0xe9, 0x5c, 0xfe, 0x8b, 0x45, 0x02, 0x88, 0x44, - 0x2a, 0x88, 0x64, 0x2b, 0x81, 0x4c, 0x2e, 0x80, 0x00, 0xe9, 0x74, 0xfe, 0x8b, - 0x5d, 0x02, 0xf6, 0xd7, 0x22, 0x7c, 0x5f, 0x0a, 0xdf, 0x8a, 0xfb, 0x88, 0x5c, - 0x5f, 0x81, 0x4c, 0x2e, 0x00, 0x02, 0xe9, 0x5d, 0xfe, 0x8b, 0x5d, 0x02, 0x88, - 0x5c, 0x2c, 0x88, 0x7c, 0x2d, 0x83, 0x4c, 0x2e, 0x20, 0xe9, 0x4d, 0xfe, 0x8a, - 0x45, 0x02, 0x88, 0x44, 0x5e, 0x81, 0x4c, 0x2e, 0x00, 0x04, 0xe9, 0x3f, 0xfe, - 0xc6, 0x44, 0x64, 0x02, 0x83, 0x4c, 0x2e, 0x01, 0xe9, 0x34, 0xfe, 0x55, 0x8b, - 0xec, 0x56, 0x57, 0x8b, 0x5e, 0x04, 0x8b, 0x4f, 0x04, 0x8b, 0x37, 0x8b, 0x47, - 0x06, 0x3b, 0x06, 0x28, 0x54, 0x75, 0x06, 0xc7, 0x06, 0x28, 0x54, 0x00, 0x00, - 0x33, 0xc0, 0x32, 0xdb, 0x88, 0x5c, 0x65, 0x89, 0x44, 0x42, 0x89, 0x44, 0x3c, - 0x89, 0x44, 0x3e, 0x89, 0x44, 0x38, 0x89, 0x44, 0x3a, 0x8b, 0x54, 0x12, 0x89, - 0x54, 0x14, 0x89, 0x44, 0x24, 0x88, 0x44, 0x4b, 0xc7, 0x44, 0x2e, 0xee, 0x2f, - 0x88, 0x44, 0x64, 0x81, 0xc6, 0x80, 0x00, 0xfe, 0xc3, 0xe2, 0xd2, 0x5f, 0x5e, - 0x5d, 0xc3, 0x8b, 0xf8, 0x2b, 0x06, 0x0a, 0x0c, 0x8b, 0xd8, 0x8b, 0x0e, 0x02, - 0x0c, 0xbe, 0x00, 0x10, 0x33, 0xc0, 0x89, 0x44, 0x0a, 0x89, 0x44, 0x0c, 0x89, - 0x44, 0x12, 0x89, 0x44, 0x14, 0x81, 0xc6, 0x80, 0x00, 0xe2, 0xee, 0x89, 0x36, - 0x24, 0x54, 0xb8, 0x01, 0x00, 0x8b, 0xd0, 0xb3, 0x00, 0x8b, 0x0e, 0x02, 0x0c, - 0xbe, 0x00, 0x10, 0x2b, 0xda, 0x72, 0x27, 0x89, 0x44, 0x16, 0x81, 0xc6, 0x80, - 0x00, 0xe2, 0xf3, 0x8b, 0x0e, 0x02, 0x0c, 0xbe, 0x00, 0x10, 0x2b, 0xda, 0x72, - 0x13, 0x89, 0x44, 0x0e, 0x81, 0xc6, 0x80, 0x00, 0xe2, 0xf3, 0x8b, 0xd0, 0x03, - 0xc0, 0x81, 0xfa, 0x00, 0x04, 0x72, 0xce, 0x8b, 0x0e, 0x02, 0x0c, 0xbe, 0x00, - 0x10, 0x8b, 0x44, 0x16, 0x2b, 0xf8, 0x8b, 0xd7, 0x81, 0xe2, 0x00, 0x40, 0x03, - 0xd2, 0x0b, 0xd7, 0x89, 0x54, 0x10, 0xc1, 0xe0, 0x04, 0x48, 0x89, 0x44, 0x16, - 0x81, 0xc6, 0x80, 0x00, 0xe2, 0xe1, 0x8b, 0x0e, 0x02, 0x0c, 0xbe, 0x00, 0x10, - 0x8b, 0x44, 0x0e, 0x2b, 0xf8, 0x8b, 0xd7, 0x81, 0xe2, 0x00, 0x40, 0x03, 0xd2, - 0x0b, 0xd7, 0x89, 0x54, 0x08, 0xc1, 0xe0, 0x04, 0x48, 0x89, 0x44, 0x0e, 0x81, - 0xc6, 0x80, 0x00, 0xe2, 0xe1, 0xc3, 0x33, 0xc0, 0x89, 0x44, 0x0a, 0x89, 0x44, - 0x0c, 0x89, 0x44, 0x12, 0x89, 0x44, 0x14, 0x89, 0x44, 0x18, 0x89, 0x44, 0x1a, - 0xc7, 0x44, 0x1c, 0xff, 0xff, 0x89, 0x44, 0x24, 0x88, 0x44, 0x28, 0x88, 0x64, - 0x29, 0x88, 0x44, 0x2a, 0x88, 0x64, 0x2b, 0xc6, 0x44, 0x2c, 0x3f, 0xc6, 0x44, - 0x2d, 0x00, 0xc7, 0x44, 0x2e, 0xee, 0x2f, 0x89, 0x44, 0x38, 0x89, 0x44, 0x3a, - 0x89, 0x44, 0x3c, 0x89, 0x44, 0x3e, 0x89, 0x44, 0x42, 0x88, 0x44, 0x4b, 0x88, - 0x44, 0x4c, 0x88, 0x44, 0x4d, 0x88, 0x44, 0x4e, 0x88, 0x44, 0x4f, 0x88, 0x44, - 0x59, 0x88, 0x44, 0x54, 0x88, 0x44, 0x68, 0x88, 0x44, 0x56, 0x88, 0x44, 0x57, - 0x88, 0x44, 0x58, 0x88, 0x44, 0x59, 0x88, 0x44, 0x64, 0xc6, 0x44, 0x5d, 0x13, - 0xc6, 0x44, 0x5c, 0x11, 0x88, 0x44, 0x5b, 0x88, 0x44, 0x5a, 0x88, 0x44, 0x5e, - 0x88, 0x44, 0x5f, 0x88, 0x44, 0x69, 0xc3, 0x55, 0x56, 0x57, 0xa1, 0x08, 0x0c, - 0xc1, 0xe0, 0x06, 0xe8, 0xc4, 0xfe, 0xbe, 0x00, 0x10, 0x32, 0xdb, 0x88, 0x5c, - 0x48, 0xfe, 0xc3, 0xc7, 0x44, 0x1e, 0x80, 0x00, 0xe8, 0x5f, 0xff, 0x81, 0xc6, - 0x80, 0x00, 0x81, 0xfe, 0x00, 0x50, 0x72, 0xe9, 0x8b, 0x36, 0x24, 0x54, 0x81, - 0xee, 0x80, 0x00, 0xb8, 0x00, 0x10, 0x2b, 0xc6, 0x89, 0x44, 0x1e, 0xc7, 0x06, - 0x10, 0x0d, 0x00, 0x00, 0xc7, 0x06, 0x12, 0x0d, 0x00, 0x00, 0xc7, 0x06, 0x14, - 0x0d, 0x00, 0x04, 0xc7, 0x06, 0x16, 0x0d, 0xfc, 0x03, 0xc7, 0x06, 0x18, 0x0d, - 0x00, 0x00, 0xc7, 0x06, 0x1a, 0x0d, 0x00, 0x00, 0xc7, 0x06, 0x1c, 0x0d, 0x00, - 0x08, 0xc7, 0x06, 0x1e, 0x0d, 0xfc, 0x03, 0x5f, 0x5e, 0x5d, 0xc3, 0xc8, 0x12, - 0x00, 0x00, 0x56, 0x8b, 0x76, 0x04, 0xe8, 0x0f, 0x1e, 0x8b, 0x4c, 0x46, 0xc1, - 0xe1, 0x02, 0x03, 0xc8, 0x89, 0x4e, 0xf6, 0x51, 0xe8, 0xf7, 0xf3, 0x83, 0xc4, - 0x02, 0x89, 0x46, 0xfa, 0x8b, 0x46, 0xf6, 0x40, 0x40, 0x50, 0xe8, 0xe8, 0xf3, - 0x83, 0xc4, 0x02, 0x50, 0xe8, 0xe1, 0xf3, 0x83, 0xc4, 0x02, 0x48, 0x48, 0x89, - 0x46, 0xf2, 0xff, 0x76, 0xfa, 0xff, 0x46, 0xfa, 0xe8, 0xc0, 0xf3, 0x83, 0xc4, - 0x02, 0x89, 0x46, 0xf4, 0x3d, 0xff, 0x00, 0x75, 0x03, 0xe9, 0xb9, 0x00, 0xff, - 0x76, 0xfa, 0xff, 0x46, 0xfa, 0xe8, 0xa9, 0xf3, 0x83, 0xc4, 0x02, 0x89, 0x46, - 0xf8, 0x8b, 0x46, 0xf4, 0x2d, 0x10, 0x00, 0x74, 0x0e, 0x48, 0x74, 0x31, 0x48, - 0x74, 0xcc, 0x48, 0x74, 0x37, 0x48, 0x74, 0x76, 0xeb, 0x0b, 0xc7, 0x46, 0xf4, - 0x0c, 0x00, 0x8b, 0x46, 0xf2, 0x89, 0x46, 0xf8, 0x8a, 0x46, 0xf8, 0x8b, 0x5e, - 0xf4, 0x88, 0x40, 0x6c, 0xff, 0x76, 0xf8, 0xff, 0x76, 0xf4, 0xff, 0x74, 0x26, - 0xe8, 0x2d, 0xf3, 0x83, 0xc4, 0x06, 0xeb, 0x9f, 0x90, 0xc7, 0x46, 0xf4, 0x0d, - 0x00, 0x8a, 0x46, 0xf3, 0x2a, 0xe4, 0xeb, 0xd6, 0x6a, 0x00, 0xe8, 0xbe, 0x1d, - 0x83, 0xc4, 0x02, 0x24, 0x06, 0x3c, 0x02, 0x75, 0x08, 0xb8, 0x01, 0x00, 0x2b, - 0x44, 0x24, 0xeb, 0x03, 0x8b, 0x44, 0x24, 0x89, 0x46, 0xfe, 0x8a, 0x4e, 0xfe, - 0x8b, 0x46, 0xf8, 0xd3, 0xe0, 0x33, 0x06, 0x24, 0x0d, 0xba, 0x2a, 0x00, 0xd3, - 0xe2, 0x23, 0xc2, 0x31, 0x06, 0x24, 0x0d, 0xff, 0x36, 0x24, 0x0d, 0x6a, 0x00, - 0xe8, 0x94, 0x1d, 0x83, 0xc4, 0x04, 0xe9, 0x50, 0xff, 0x8a, 0x4c, 0x24, 0x8b, - 0x46, 0xf8, 0xc1, 0xe8, 0x03, 0xd2, 0xe0, 0x08, 0x06, 0x0e, 0x0c, 0xa0, 0x0e, - 0x0c, 0x2a, 0xe4, 0x50, 0x6a, 0x01, 0xe8, 0x74, 0x1d, 0x83, 0xc4, 0x04, 0xeb, - 0xd2, 0x90, 0x5e, 0xc9, 0xc3, 0x90, 0x56, 0x68, 0x0d, 0x02, 0xe8, 0x56, 0x1d, - 0x83, 0xc4, 0x02, 0x6a, 0x30, 0x68, 0x08, 0x02, 0xe8, 0x58, 0x1d, 0x83, 0xc4, - 0x04, 0x68, 0x84, 0x00, 0xe8, 0x42, 0x1d, 0x83, 0xc4, 0x02, 0x68, 0xc0, 0x00, - 0x6a, 0x09, 0x68, 0x84, 0x00, 0xe8, 0x8c, 0xf2, 0x83, 0xc4, 0x06, 0xbe, 0x50, - 0x7c, 0xeb, 0x79, 0x90, 0x8b, 0x44, 0x24, 0x05, 0x24, 0x00, 0xd1, 0xe0, 0x50, - 0x68, 0x0b, 0x02, 0xe8, 0x29, 0x1d, 0x83, 0xc4, 0x04, 0x8b, 0x44, 0x24, 0xd1, - 0xe0, 0x05, 0x45, 0x00, 0x50, 0x68, 0x0b, 0x02, 0xe8, 0x17, 0x1d, 0x83, 0xc4, - 0x04, 0x56, 0xe8, 0x9a, 0xfe, 0x83, 0xc4, 0x02, 0xff, 0x74, 0x04, 0x8b, 0x44, - 0x24, 0xc1, 0xe0, 0x02, 0x05, 0x02, 0x02, 0x50, 0xe8, 0x20, 0xf2, 0x83, 0xc4, - 0x04, 0x68, 0xb8, 0x0b, 0x8b, 0x44, 0x24, 0xc1, 0xe0, 0x02, 0x05, 0x03, 0x02, - 0x50, 0xe8, 0x0d, 0xf2, 0x83, 0xc4, 0x04, 0x8b, 0x44, 0x24, 0xd1, 0xe0, 0x40, - 0x50, 0x68, 0x0a, 0x02, 0xe8, 0xda, 0x1c, 0x83, 0xc4, 0x04, 0x8a, 0x44, 0x6f, - 0x0c, 0x01, 0x2a, 0xe4, 0x50, 0x6a, 0x03, 0xff, 0x74, 0x26, 0xe8, 0x12, 0xf2, - 0x83, 0xc4, 0x06, 0x81, 0xc6, 0xa8, 0x01, 0x39, 0x36, 0xa0, 0x7f, 0x77, 0x82, - 0x5e, 0xc3, 0xc8, 0x16, 0x00, 0x00, 0x57, 0x56, 0xc7, 0x06, 0x76, 0x7c, 0x80, - 0x00, 0xc7, 0x06, 0x1e, 0x7e, 0x84, 0x00, 0xc7, 0x06, 0x74, 0x7c, 0x00, 0x00, - 0xc7, 0x06, 0x1c, 0x7e, 0x01, 0x00, 0xc7, 0x06, 0x28, 0x0d, 0x50, 0x7c, 0xc7, - 0x06, 0x2a, 0x0d, 0xf8, 0x7d, 0xc7, 0x06, 0x54, 0x7c, 0x00, 0x80, 0xc7, 0x06, - 0xfc, 0x7d, 0x00, 0xa8, 0xc7, 0x06, 0x22, 0x0d, 0x00, 0x50, 0xbe, 0x50, 0x7c, - 0xbf, 0x1e, 0x7b, 0xc7, 0x46, 0xee, 0x00, 0x10, 0xc7, 0x46, 0xf2, 0xd0, 0x0c, - 0x8b, 0x5e, 0xf2, 0x80, 0x3f, 0x00, 0x74, 0x09, 0x68, 0xe4, 0x02, 0xe8, 0x5e, - 0xef, 0x83, 0xc4, 0x02, 0xc7, 0x46, 0xf2, 0xd0, 0x0c, 0xe9, 0xf3, 0x01, 0x90, - 0xc7, 0x04, 0x01, 0x01, 0x8b, 0x5e, 0xf2, 0x8a, 0x47, 0x01, 0x2a, 0xe4, 0x89, - 0x44, 0x46, 0xe8, 0xe4, 0x1b, 0x8b, 0x4c, 0x46, 0xc1, 0xe1, 0x02, 0x03, 0xc8, - 0x8b, 0xc1, 0x40, 0x40, 0x50, 0xe8, 0xcb, 0xf1, 0x83, 0xc4, 0x02, 0x89, 0x46, - 0xfa, 0x40, 0x40, 0x50, 0xe8, 0xbf, 0xf1, 0x83, 0xc4, 0x02, 0x89, 0x44, 0x2e, - 0x8b, 0x46, 0xfa, 0x05, 0x04, 0x00, 0x50, 0xe8, 0xaf, 0xf1, 0x83, 0xc4, 0x02, - 0x89, 0x44, 0x30, 0x8b, 0x46, 0xfa, 0x40, 0x40, 0x50, 0xe8, 0xa0, 0xf1, 0x83, - 0xc4, 0x02, 0x89, 0x44, 0x32, 0x8b, 0x46, 0xfa, 0x05, 0x06, 0x00, 0x50, 0xe8, - 0x90, 0xf1, 0x83, 0xc4, 0x02, 0x89, 0x44, 0x34, 0x8b, 0x46, 0xfa, 0x05, 0x08, - 0x00, 0x50, 0xe8, 0x80, 0xf1, 0x83, 0xc4, 0x02, 0x89, 0x44, 0x2a, 0x8b, 0x46, - 0xfa, 0x05, 0x0a, 0x00, 0x50, 0xe8, 0x70, 0xf1, 0x83, 0xc4, 0x02, 0x89, 0x44, - 0x2c, 0x8b, 0x44, 0x04, 0x89, 0x44, 0x08, 0x89, 0x44, 0x06, 0x8d, 0x44, 0x7c, - 0x89, 0x44, 0x0e, 0x89, 0x44, 0x0c, 0x89, 0x44, 0x0a, 0x89, 0x7c, 0x14, 0x89, - 0x7c, 0x12, 0x89, 0x7c, 0x10, 0x8d, 0x44, 0x52, 0x89, 0x46, 0xfc, 0x8b, 0xd8, - 0xff, 0x46, 0xfc, 0xc6, 0x07, 0x01, 0x8b, 0x5e, 0xfc, 0xff, 0x46, 0xfc, 0xc6, - 0x07, 0x01, 0x8a, 0x44, 0x46, 0x8b, 0x5e, 0xfc, 0xff, 0x46, 0xfc, 0x88, 0x07, - 0xa1, 0x54, 0x54, 0xc1, 0xe0, 0x03, 0x05, 0x10, 0x0e, 0x89, 0x44, 0x18, 0xc7, - 0x44, 0x1e, 0x00, 0x00, 0xff, 0x06, 0x54, 0x54, 0x81, 0xc6, 0xa8, 0x01, 0xe9, - 0x0f, 0x01, 0x90, 0x81, 0xff, 0x3e, 0x7c, 0x72, 0x03, 0xe9, 0x22, 0x01, 0x81, - 0xee, 0xa8, 0x01, 0x8b, 0x1e, 0x04, 0x0c, 0xd1, 0xe3, 0x89, 0xbf, 0x30, 0x0e, - 0x89, 0x75, 0x12, 0xc7, 0x45, 0x08, 0x09, 0x00, 0xc6, 0x45, 0x1e, 0x01, 0x8b, - 0x44, 0x1e, 0x89, 0x45, 0x0a, 0xff, 0x44, 0x1e, 0x8b, 0x5c, 0x18, 0x03, 0x5d, - 0x0a, 0x89, 0x5d, 0x14, 0xc6, 0x07, 0x01, 0xa1, 0x04, 0x0c, 0x40, 0x89, 0x45, - 0x06, 0x8b, 0x5e, 0xf2, 0xf6, 0x07, 0x80, 0x74, 0x09, 0xc7, 0x44, 0x4c, 0x01, - 0x00, 0x80, 0x4c, 0x52, 0x10, 0x8b, 0x5e, 0xf2, 0x8a, 0x07, 0x25, 0x7f, 0x00, - 0x89, 0x45, 0x04, 0x8b, 0x46, 0xee, 0x89, 0x05, 0x8b, 0x45, 0x04, 0xc1, 0xe0, - 0x07, 0x01, 0x46, 0xee, 0xa1, 0x02, 0x0c, 0x89, 0x45, 0x02, 0x8b, 0x45, 0x04, - 0x01, 0x06, 0x02, 0x0c, 0x8b, 0x5e, 0xf2, 0x8a, 0x47, 0x01, 0x88, 0x45, 0x1f, - 0x8b, 0x5e, 0xfc, 0xff, 0x46, 0xfc, 0x88, 0x07, 0xe8, 0x8c, 0x1a, 0x8a, 0x4d, - 0x1f, 0x2a, 0xed, 0xc1, 0xe1, 0x02, 0x03, 0xc8, 0x8b, 0xc1, 0x40, 0x40, 0x50, - 0xe8, 0x71, 0xf0, 0x83, 0xc4, 0x02, 0x89, 0x46, 0xfa, 0x05, 0x06, 0x00, 0x50, - 0xe8, 0x64, 0xf0, 0x83, 0xc4, 0x02, 0x39, 0x44, 0x34, 0x76, 0x03, 0x89, 0x44, - 0x34, 0x8b, 0x46, 0xfa, 0x40, 0x40, 0x50, 0xe8, 0x50, 0xf0, 0x83, 0xc4, 0x02, - 0x01, 0x44, 0x2e, 0x8b, 0x46, 0xfa, 0x05, 0x04, 0x00, 0x50, 0xe8, 0x40, 0xf0, - 0x83, 0xc4, 0x02, 0x01, 0x44, 0x30, 0x8b, 0x46, 0xfa, 0x05, 0x08, 0x00, 0x50, - 0xe8, 0x30, 0xf0, 0x83, 0xc4, 0x02, 0x39, 0x44, 0x2a, 0x73, 0x03, 0x89, 0x44, - 0x2a, 0x8b, 0x46, 0xfa, 0x05, 0x0a, 0x00, 0x50, 0xe8, 0x1b, 0xf0, 0x83, 0xc4, - 0x02, 0x39, 0x44, 0x2c, 0x73, 0x03, 0x89, 0x44, 0x2c, 0x8d, 0x45, 0x0c, 0x89, - 0x45, 0x10, 0xff, 0x06, 0x04, 0x0c, 0x81, 0xc6, 0xa8, 0x01, 0x83, 0xc7, 0x24, - 0x83, 0x46, 0xf2, 0x02, 0x8b, 0x5e, 0xf2, 0x80, 0x3f, 0xff, 0x74, 0x11, 0x80, - 0x3f, 0x00, 0x74, 0x03, 0xe9, 0xde, 0xfe, 0x81, 0xfe, 0xa0, 0x7f, 0x73, 0x03, - 0xe9, 0xf5, 0xfd, 0x89, 0x36, 0xa0, 0x7f, 0x89, 0x3e, 0x50, 0x54, 0xc7, 0x46, - 0xf8, 0x1c, 0x7b, 0xc7, 0x46, 0xf4, 0x58, 0x54, 0xeb, 0x14, 0x90, 0x8b, 0x46, - 0xf4, 0x8b, 0x5e, 0xf8, 0x89, 0x07, 0x8b, 0x46, 0xf4, 0x89, 0x46, 0xf8, 0x81, - 0x46, 0xf4, 0x76, 0x06, 0x81, 0x7e, 0xf4, 0x1c, 0x7b, 0x72, 0xe6, 0xc7, 0x46, - 0xf0, 0x06, 0x00, 0xa1, 0x0c, 0x0c, 0xc1, 0xe0, 0x04, 0x89, 0x46, 0xf4, 0xeb, - 0x11, 0x8b, 0x46, 0xf4, 0x8b, 0x5e, 0xf8, 0x89, 0x07, 0x8b, 0x46, 0xf4, 0x89, - 0x46, 0xf8, 0xff, 0x46, 0xf0, 0x81, 0x6e, 0xf4, 0x76, 0x06, 0x81, 0x7e, 0xf4, - 0x00, 0xd0, 0x73, 0xe3, 0x83, 0x3e, 0x54, 0x54, 0x01, 0x77, 0x06, 0x8b, 0x46, - 0xf0, 0xeb, 0x10, 0x90, 0x8b, 0x46, 0xf0, 0x8b, 0xc8, 0xd1, 0xe0, 0x03, 0xc1, - 0xc1, 0xe8, 0x02, 0xa3, 0x32, 0x7e, 0xa3, 0x8a, 0x7c, 0xc7, 0x06, 0xa6, 0x7f, - 0xa4, 0x7f, 0xc7, 0x06, 0xa2, 0x7f, 0x01, 0x00, 0xe8, 0x53, 0xfc, 0x5e, 0x5f, - 0xc9, 0xc3, 0x90, 0x83, 0x3e, 0x52, 0x54, 0x00, 0x74, 0x09, 0x68, 0x5a, 0x04, - 0xe8, 0xab, 0xec, 0x83, 0xc4, 0x02, 0xc7, 0x06, 0x52, 0x54, 0x01, 0x00, 0xc3, - 0x90, 0x83, 0x3e, 0x52, 0x54, 0x01, 0x74, 0x14, 0x68, 0x68, 0x04, 0xe8, 0x93, - 0xec, 0x83, 0xc4, 0x02, 0xeb, 0x09, 0xc7, 0x06, 0x52, 0x54, 0x01, 0x00, 0xe8, - 0x91, 0x0f, 0xc7, 0x06, 0x52, 0x54, 0x00, 0x00, 0x83, 0x3e, 0xa2, 0x7f, 0x00, - 0x75, 0xea, 0xc3, 0x90, 0x55, 0x8b, 0xec, 0x56, 0x8b, 0x76, 0x04, 0x83, 0x06, - 0x44, 0x0d, 0x01, 0x83, 0x16, 0x46, 0x0d, 0x00, 0x83, 0x3e, 0x52, 0x54, 0x00, - 0x74, 0x06, 0xf6, 0x44, 0x01, 0x10, 0x74, 0x09, 0x68, 0x8e, 0x04, 0xe8, 0x52, - 0xec, 0x83, 0xc4, 0x02, 0x68, 0xfc, 0x00, 0x68, 0x28, 0xff, 0xe8, 0x5f, 0x19, - 0x83, 0xc4, 0x04, 0x80, 0x4c, 0x01, 0x10, 0x8b, 0x44, 0x24, 0x40, 0x40, 0xd1, - 0xe0, 0x50, 0x68, 0x0a, 0x02, 0xe8, 0x31, 0x19, 0x83, 0xc4, 0x04, 0xff, 0x76, - 0x06, 0x8b, 0x44, 0x24, 0x05, 0x80, 0x00, 0xc1, 0xe0, 0x02, 0x50, 0xe8, 0x41, - 0xee, 0x83, 0xc4, 0x04, 0x8b, 0x46, 0x08, 0x48, 0x50, 0x8b, 0x44, 0x24, 0xc1, - 0xe0, 0x02, 0x05, 0x01, 0x02, 0x50, 0xe8, 0x2c, 0xee, 0x83, 0xc4, 0x04, 0xff, - 0x74, 0x26, 0xe8, 0xf3, 0x18, 0x83, 0xc4, 0x02, 0xa8, 0x04, 0x74, 0x11, 0x8b, - 0x44, 0x24, 0xd1, 0xe0, 0x50, 0x68, 0x0a, 0x02, 0xe8, 0xed, 0x18, 0x83, 0xc4, - 0x04, 0xeb, 0x0e, 0x83, 0x06, 0x68, 0x0d, 0x01, 0x83, 0x16, 0x6a, 0x0d, 0x00, - 0x80, 0x4c, 0x01, 0x20, 0x68, 0xdc, 0x00, 0x68, 0x28, 0xff, 0xe8, 0xea, 0x18, - 0x83, 0xc4, 0x04, 0x8b, 0x46, 0x06, 0x89, 0x44, 0x16, 0x8b, 0x46, 0x08, 0x89, - 0x44, 0x48, 0x8b, 0x44, 0x32, 0x03, 0x06, 0x00, 0x0e, 0x89, 0x44, 0x02, 0x5e, - 0xc9, 0xc3, 0x90, 0xc8, 0x02, 0x00, 0x00, 0x57, 0x56, 0x8b, 0x76, 0x04, 0x8b, - 0x7e, 0x06, 0x8b, 0x44, 0x12, 0x8b, 0xd8, 0x83, 0x7f, 0x4c, 0x00, 0x74, 0x07, - 0x8a, 0x44, 0x0a, 0x2c, 0xf8, 0xeb, 0x03, 0x8a, 0x44, 0x0a, 0xc0, 0xe0, 0x04, - 0x08, 0x05, 0xb8, 0xc3, 0xa5, 0x2b, 0x46, 0x08, 0x2b, 0x05, 0x89, 0x45, 0x02, - 0xff, 0x76, 0x08, 0x57, 0xff, 0x74, 0x12, 0xe8, 0x03, 0xff, 0x83, 0xc4, 0x06, - 0x5e, 0x5f, 0xc9, 0xc3, 0x55, 0x8b, 0xec, 0x57, 0x56, 0x8b, 0x76, 0x04, 0xf6, - 0x44, 0x01, 0x01, 0x75, 0x09, 0x68, 0xdb, 0x04, 0xe8, 0x5e, 0xeb, 0x83, 0xc4, - 0x02, 0xf6, 0x44, 0x01, 0x10, 0x74, 0x03, 0xe9, 0xc7, 0x00, 0xf6, 0x04, 0x01, - 0x74, 0x31, 0xa1, 0x00, 0x0e, 0x05, 0xaa, 0x00, 0x89, 0x44, 0x20, 0x8b, 0x44, - 0x1e, 0x05, 0x03, 0x00, 0x50, 0x8d, 0x44, 0x52, 0x50, 0x56, 0xe8, 0xbf, 0xfe, - 0x83, 0xc4, 0x06, 0x2b, 0xff, 0xeb, 0x01, 0x47, 0x83, 0xff, 0x08, 0x7c, 0x03, - 0xe9, 0x92, 0x00, 0x8b, 0x5c, 0x18, 0x80, 0x21, 0xfb, 0xeb, 0xef, 0x90, 0xf6, - 0x04, 0x02, 0x74, 0x35, 0xc6, 0x44, 0x62, 0x02, 0xc6, 0x44, 0x63, 0x00, 0xc6, - 0x44, 0x64, 0x00, 0x6a, 0x03, 0x8d, 0x44, 0x62, 0x50, 0x56, 0xe8, 0x8b, 0xfe, - 0x83, 0xc4, 0x06, 0x83, 0x7c, 0x4c, 0x00, 0x74, 0x4f, 0xc7, 0x44, 0x3e, 0x00, - 0x00, 0xc7, 0x44, 0x40, 0x00, 0x00, 0x81, 0x24, 0xfd, 0xfc, 0xff, 0x06, 0xa2, - 0x7f, 0x5e, 0x5f, 0xc9, 0xc3, 0xf6, 0x04, 0x08, 0x74, 0x41, 0xc6, 0x06, 0x00, - 0x50, 0x04, 0x83, 0x3e, 0x00, 0x0d, 0x00, 0x74, 0x09, 0x68, 0x19, 0x05, 0xe8, - 0xcb, 0xea, 0x83, 0xc4, 0x02, 0xf6, 0x04, 0x10, 0x75, 0x09, 0x68, 0x1a, 0x05, - 0xe8, 0xbd, 0xea, 0x83, 0xc4, 0x02, 0xa1, 0x0a, 0x50, 0x05, 0x0c, 0x00, 0x50, - 0x68, 0x00, 0x50, 0x56, 0xe8, 0x36, 0xfe, 0x83, 0xc4, 0x06, 0x8b, 0x44, 0x2e, - 0x03, 0x06, 0x00, 0x0e, 0x89, 0x44, 0x20, 0xeb, 0x0a, 0x90, 0x68, 0x23, 0x05, - 0xe8, 0x96, 0xea, 0x83, 0xc4, 0x02, 0x80, 0x64, 0x01, 0xfe, 0x80, 0x4c, 0x01, - 0x02, 0x5e, 0x5f, 0xc9, 0xc3, 0x90, 0xc8, 0x04, 0x00, 0x00, 0x57, 0x56, 0x8b, - 0x76, 0x04, 0x8b, 0x7c, 0x12, 0xf6, 0x44, 0x08, 0x78, 0x75, 0x09, 0x68, 0x38, - 0x05, 0xe8, 0x6e, 0xea, 0x83, 0xc4, 0x02, 0xf7, 0x05, 0x0f, 0x10, 0x74, 0x03, - 0xe9, 0x70, 0x01, 0x8a, 0x44, 0x08, 0x24, 0x09, 0x3c, 0x09, 0x75, 0x2d, 0xc6, - 0x45, 0x62, 0x05, 0x8a, 0x44, 0x1e, 0x88, 0x45, 0x63, 0x6a, 0x04, 0x8d, 0x45, - 0x62, 0x50, 0x56, 0xe8, 0x91, 0xfe, 0x83, 0xc4, 0x06, 0x80, 0x64, 0x08, 0xf7, - 0x80, 0x4c, 0x08, 0x04, 0x8b, 0x45, 0x30, 0x03, 0x06, 0x00, 0x0e, 0x89, 0x44, - 0x16, 0x5e, 0x5f, 0xc9, 0xc3, 0xf6, 0x44, 0x08, 0x10, 0x74, 0x1e, 0xc6, 0x45, - 0x62, 0x06, 0xc6, 0x45, 0x63, 0x00, 0x6a, 0x04, 0x8d, 0x45, 0x62, 0x50, 0x56, - 0xe8, 0x60, 0xfe, 0x83, 0xc4, 0x06, 0x80, 0x64, 0x08, 0x0f, 0x5e, 0x5f, 0xc9, - 0xc3, 0x90, 0x8a, 0x44, 0x08, 0x24, 0x0a, 0x3c, 0x0a, 0x75, 0x09, 0x88, 0x45, - 0x62, 0x8a, 0x44, 0x23, 0xeb, 0xa5, 0x90, 0xf6, 0x44, 0x08, 0x60, 0x74, 0x3c, - 0x8a, 0x44, 0x08, 0x25, 0x20, 0x00, 0x3d, 0x01, 0x00, 0x1a, 0xc0, 0x24, 0xfe, - 0x04, 0x0b, 0x88, 0x45, 0x62, 0x8a, 0x44, 0x23, 0x88, 0x45, 0x63, 0x6a, 0x04, - 0x8d, 0x45, 0x62, 0x50, 0x56, 0xe8, 0x1a, 0xfe, 0x83, 0xc4, 0x06, 0x80, 0x64, - 0x08, 0x1f, 0x8a, 0x44, 0x22, 0x38, 0x44, 0x21, 0x74, 0x03, 0xe9, 0xca, 0x00, - 0x80, 0x64, 0x08, 0xf7, 0x5e, 0x5f, 0xc9, 0xc3, 0x8a, 0x44, 0x22, 0x38, 0x44, - 0x21, 0x75, 0x03, 0xe9, 0x8d, 0x00, 0x8b, 0x44, 0x0e, 0x89, 0x46, 0xfe, 0x8b, - 0xd8, 0xc6, 0x47, 0x04, 0x07, 0x8a, 0x44, 0x21, 0xc0, 0xe0, 0x04, 0x02, 0x44, - 0x23, 0x8b, 0x5e, 0xfe, 0x88, 0x47, 0x05, 0x8b, 0x5e, 0xfe, 0xff, 0x77, 0x02, - 0x8b, 0xc3, 0x05, 0x04, 0x00, 0x50, 0x56, 0xe8, 0xca, 0xfd, 0x83, 0xc4, 0x06, - 0xf6, 0x44, 0x08, 0x04, 0x75, 0x0e, 0x80, 0x4c, 0x08, 0x04, 0x8b, 0x45, 0x30, - 0x03, 0x06, 0x00, 0x0e, 0x89, 0x44, 0x16, 0x8a, 0x44, 0x21, 0xfe, 0xc0, 0x24, - 0x0f, 0x88, 0x44, 0x21, 0x8b, 0x5e, 0xfe, 0x8b, 0x07, 0x89, 0x44, 0x0e, 0x8a, - 0x44, 0x22, 0x38, 0x44, 0x21, 0x75, 0x28, 0x80, 0x64, 0x08, 0xf7, 0x80, 0x4c, - 0x09, 0x02, 0x8b, 0x45, 0x34, 0x8b, 0x5e, 0xfe, 0x39, 0x47, 0x02, 0x72, 0x06, - 0x8b, 0x45, 0x2a, 0xeb, 0x04, 0x90, 0x8b, 0x45, 0x2c, 0x89, 0x46, 0xfc, 0xa1, - 0x00, 0x0e, 0x03, 0x46, 0xfc, 0x89, 0x44, 0x18, 0x80, 0x64, 0x08, 0x7f, 0x5e, - 0x5f, 0xc9, 0xc3, 0x90, 0xf6, 0x44, 0x08, 0x80, 0x75, 0x09, 0x68, 0xbb, 0x05, - 0xe8, 0x10, 0xe9, 0x83, 0xc4, 0x02, 0xc6, 0x45, 0x62, 0x08, 0x8a, 0x44, 0x23, - 0x88, 0x45, 0x63, 0x6a, 0x04, 0x8d, 0x45, 0x62, 0x50, 0x56, 0xe8, 0x45, 0xfd, - 0x83, 0xc4, 0x06, 0x80, 0x64, 0x08, 0x77, 0x5e, 0x5f, 0xc9, 0xc3, 0x55, 0x8b, - 0xec, 0x57, 0x56, 0x8b, 0x76, 0x04, 0xa1, 0x1c, 0x7b, 0x8b, 0x5c, 0x10, 0x89, - 0x07, 0x8b, 0x44, 0x0c, 0xa3, 0x1c, 0x7b, 0x8a, 0x44, 0x22, 0x2a, 0x44, 0x20, - 0x25, 0x0f, 0x00, 0x8b, 0x5c, 0x12, 0x01, 0x47, 0x3a, 0x2b, 0xc0, 0x89, 0x44, - 0x0e, 0x89, 0x44, 0x0c, 0x8d, 0x44, 0x0c, 0x89, 0x44, 0x10, 0x8b, 0x3e, 0xa4, - 0x7f, 0xeb, 0x0d, 0x90, 0x39, 0x75, 0x02, 0x75, 0x04, 0xc7, 0x05, 0x03, 0x00, - 0x8b, 0x7d, 0x04, 0x0b, 0xff, 0x75, 0xf0, 0x2a, 0xc0, 0x88, 0x44, 0x22, 0x88, - 0x44, 0x21, 0x88, 0x44, 0x20, 0x88, 0x44, 0x23, 0x5e, 0x5f, 0xc9, 0xc3, 0x55, - 0x8b, 0xec, 0x56, 0x8b, 0x76, 0x04, 0x8b, 0x5c, 0x12, 0x80, 0x4f, 0x01, 0x40, - 0x56, 0xe8, 0x92, 0xff, 0x83, 0xc4, 0x02, 0x8a, 0x46, 0x06, 0x88, 0x44, 0x1e, - 0x83, 0x64, 0x08, 0x10, 0x81, 0x4c, 0x08, 0x09, 0x01, 0xff, 0x06, 0x3e, 0x7c, - 0x56, 0xe8, 0xe0, 0xfd, 0x83, 0xc4, 0x02, 0x5e, 0xc9, 0xc3, 0xc8, 0x04, 0x00, - 0x00, 0x57, 0x56, 0x8b, 0x76, 0x04, 0x8b, 0x7c, 0x0e, 0xeb, 0x13, 0x83, 0x3d, - 0x00, 0x75, 0x13, 0x8d, 0x84, 0xa8, 0x01, 0x83, 0xc7, 0x0a, 0x3b, 0xc7, 0x77, - 0x03, 0x8d, 0x7c, 0x7c, 0x39, 0x7c, 0x0c, 0x75, 0xe8, 0x89, 0x7c, 0x0e, 0x39, - 0x7c, 0x0a, 0x75, 0x06, 0x8b, 0x44, 0x06, 0xeb, 0x04, 0x90, 0x8b, 0x45, 0x06, - 0x89, 0x44, 0x08, 0x39, 0x44, 0x06, 0x72, 0x69, 0x8b, 0x44, 0x04, 0x05, 0x44, - 0x1c, 0x3b, 0x44, 0x06, 0x76, 0x08, 0x8b, 0x44, 0x04, 0x80, 0xc4, 0x28, 0xeb, - 0x56, 0x8b, 0x44, 0x04, 0x2b, 0x44, 0x06, 0x05, 0x64, 0x28, 0x8b, 0x4c, 0x08, - 0x2b, 0x4c, 0x04, 0x3b, 0xc1, 0x7f, 0xe5, 0xf6, 0x44, 0x01, 0xc0, 0x75, 0x34, - 0x8b, 0x44, 0x04, 0x2b, 0x44, 0x06, 0x50, 0x8b, 0x44, 0x24, 0xd1, 0xe0, 0x40, - 0x50, 0xe8, 0x1c, 0xeb, 0x83, 0xc4, 0x04, 0x89, 0x46, 0xfc, 0x8b, 0x44, 0x06, - 0x89, 0x44, 0x1a, 0x8b, 0x46, 0xfc, 0x2b, 0x44, 0x04, 0x89, 0x44, 0x1c, 0x3d, - 0xb8, 0x0b, 0x76, 0x09, 0x68, 0x43, 0x06, 0xe8, 0xc4, 0xe7, 0x83, 0xc4, 0x02, - 0x8b, 0x44, 0x04, 0x89, 0x44, 0x06, 0x8b, 0x44, 0x08, 0x89, 0x46, 0xfc, 0x8b, - 0x44, 0x06, 0x05, 0x04, 0x00, 0x29, 0x46, 0xfc, 0x81, 0x7e, 0xfc, 0xb8, 0x0b, - 0x72, 0x07, 0xc7, 0x46, 0xfc, 0xb8, 0x0b, 0xeb, 0x0a, 0x83, 0x06, 0x84, 0x0d, - 0x01, 0x83, 0x16, 0x86, 0x0d, 0x00, 0xf6, 0x44, 0x01, 0xc0, 0x75, 0x18, 0x8b, - 0x44, 0x06, 0x03, 0x46, 0xfc, 0x50, 0x8b, 0x44, 0x24, 0xd1, 0xe0, 0x40, 0x50, - 0xe8, 0x1b, 0xeb, 0x83, 0xc4, 0x04, 0x5e, 0x5f, 0xc9, 0xc3, 0xf6, 0x44, 0x01, - 0x80, 0x74, 0x0e, 0x8a, 0x4c, 0x24, 0xb8, 0x40, 0x00, 0xd3, 0xe0, 0x50, 0x6a, - 0x09, 0xeb, 0x1b, 0x90, 0x8a, 0x44, 0x6f, 0x2a, 0xe4, 0x50, 0x6a, 0x03, 0xff, - 0x74, 0x26, 0xe8, 0x9f, 0xe9, 0x83, 0xc4, 0x06, 0x8a, 0x44, 0x7b, 0x25, 0xfb, - 0x00, 0x50, 0x6a, 0x0f, 0xff, 0x74, 0x26, 0xe8, 0x8d, 0xe9, 0x83, 0xc4, 0x06, - 0x8b, 0x44, 0x24, 0xd1, 0xe0, 0x40, 0x0c, 0x04, 0x50, 0x68, 0x0a, 0x02, 0xe8, - 0x30, 0x14, 0x83, 0xc4, 0x04, 0xc7, 0x46, 0xfe, 0x06, 0x00, 0x6a, 0x30, 0xff, - 0x74, 0x26, 0xe8, 0x20, 0x14, 0x83, 0xc4, 0x04, 0xff, 0x4e, 0xfe, 0x75, 0x46, - 0xff, 0x74, 0x06, 0x8b, 0x44, 0x24, 0xc1, 0xe0, 0x02, 0x05, 0x02, 0x02, 0x50, - 0xe8, 0x2b, 0xe9, 0x83, 0xc4, 0x04, 0x8b, 0x46, 0xfc, 0x48, 0x50, 0x8b, 0x44, - 0x24, 0xc1, 0xe0, 0x02, 0x05, 0x03, 0x02, 0x50, 0xe8, 0x16, 0xe9, 0x83, 0xc4, - 0x04, 0xf6, 0x44, 0x01, 0x80, 0x74, 0x32, 0x56, 0xe8, 0x70, 0xf5, 0x83, 0xc4, - 0x02, 0x80, 0x64, 0x01, 0x0f, 0x83, 0x06, 0xd4, 0x0d, 0x01, 0x83, 0x16, 0xd6, - 0x0d, 0x00, 0xeb, 0x3a, 0x90, 0x6a, 0x01, 0xff, 0x74, 0x26, 0xe8, 0x01, 0xe9, - 0x83, 0xc4, 0x04, 0x8b, 0x44, 0x26, 0x40, 0x40, 0x50, 0xe8, 0xb1, 0x13, 0x83, - 0xc4, 0x02, 0xeb, 0x91, 0x90, 0x8a, 0x44, 0x7b, 0x2a, 0xe4, 0x50, 0x6a, 0x0f, - 0xff, 0x74, 0x26, 0xe8, 0xf5, 0xe8, 0x83, 0xc4, 0x06, 0x80, 0x64, 0x01, 0xbf, - 0x83, 0x06, 0xd0, 0x0d, 0x01, 0x83, 0x16, 0xd2, 0x0d, 0x00, 0x83, 0x7e, 0xfc, - 0x14, 0x72, 0x10, 0x8b, 0x44, 0x24, 0xd1, 0xe0, 0x40, 0x50, 0x68, 0x0a, 0x02, - 0xe8, 0x86, 0x13, 0x83, 0xc4, 0x04, 0x8a, 0x44, 0x6f, 0x0c, 0x01, 0x2a, 0xe4, - 0x50, 0x6a, 0x03, 0xff, 0x74, 0x26, 0xe8, 0xbe, 0xe8, 0x83, 0xc4, 0x06, 0x5e, - 0x5f, 0xc9, 0xc3, 0xc8, 0x08, 0x00, 0x00, 0x57, 0x56, 0x8b, 0x76, 0x04, 0xc7, - 0x46, 0xfc, 0x00, 0x00, 0xe9, 0x65, 0x01, 0x90, 0xf6, 0x06, 0x13, 0x54, 0x40, - 0x75, 0x37, 0xf6, 0x06, 0x14, 0x54, 0x80, 0x74, 0x0a, 0x83, 0x06, 0x7c, 0x0d, - 0x01, 0x83, 0x16, 0x7e, 0x0d, 0x00, 0xf6, 0x06, 0x14, 0x54, 0x20, 0x75, 0x03, - 0xe9, 0x63, 0x01, 0x83, 0x06, 0x8c, 0x0d, 0x01, 0x83, 0x16, 0x8e, 0x0d, 0x00, - 0x80, 0x4c, 0x01, 0x40, 0x6a, 0x30, 0xff, 0x74, 0x26, 0xe8, 0x22, 0x13, 0x83, - 0xc4, 0x04, 0xe9, 0x47, 0x01, 0xa1, 0x12, 0x54, 0x80, 0xe4, 0x3f, 0x89, 0x46, - 0xfa, 0xa3, 0x24, 0x0e, 0x80, 0x36, 0x14, 0x54, 0x86, 0xf7, 0x06, 0x14, 0x54, - 0xee, 0x80, 0x74, 0x5b, 0xf6, 0x06, 0x15, 0x54, 0x80, 0x74, 0x0a, 0x83, 0x06, - 0xa4, 0x0d, 0x01, 0x83, 0x16, 0xa6, 0x0d, 0x00, 0xf6, 0x06, 0x14, 0x54, 0x80, - 0x74, 0x0a, 0x83, 0x06, 0x94, 0x0d, 0x01, 0x83, 0x16, 0x96, 0x0d, 0x00, 0xf6, - 0x06, 0x14, 0x54, 0x40, 0x74, 0x0a, 0x83, 0x06, 0x98, 0x0d, 0x01, 0x83, 0x16, - 0x9a, 0x0d, 0x00, 0xf6, 0x06, 0x14, 0x54, 0x20, 0x74, 0x0a, 0x83, 0x06, 0x90, - 0x0d, 0x01, 0x83, 0x16, 0x92, 0x0d, 0x00, 0xf6, 0x06, 0x14, 0x54, 0x0e, 0x75, - 0x03, 0xe9, 0xdc, 0x00, 0x83, 0x06, 0x9c, 0x0d, 0x01, 0x83, 0x16, 0x9e, 0x0d, - 0x00, 0xe9, 0xcf, 0x00, 0x83, 0x3e, 0xf8, 0x0d, 0x00, 0x74, 0x1b, 0x6a, 0x64, - 0xe8, 0x76, 0x12, 0x83, 0xc4, 0x02, 0x3b, 0x06, 0xf8, 0x0d, 0x77, 0x0d, 0x83, - 0x06, 0xd8, 0x0d, 0x01, 0x83, 0x16, 0xda, 0x0d, 0x00, 0xeb, 0x7d, 0x90, 0x8b, - 0x7c, 0x0a, 0x8b, 0x44, 0x06, 0x2b, 0x44, 0x04, 0x3b, 0x44, 0x1c, 0x72, 0x06, - 0x8b, 0x5c, 0x06, 0xeb, 0x0a, 0x90, 0x8b, 0x5c, 0x06, 0x2b, 0x5c, 0x04, 0x03, - 0x5c, 0x1a, 0x8a, 0x07, 0x2a, 0xe4, 0x25, 0x0f, 0x00, 0x3d, 0x05, 0x00, 0x72, - 0x05, 0x3d, 0x0b, 0x00, 0x76, 0x04, 0x80, 0x4c, 0x01, 0x40, 0x83, 0x3d, 0x00, - 0x75, 0x3b, 0xc7, 0x05, 0x01, 0x00, 0x8b, 0x44, 0x06, 0x89, 0x45, 0x06, 0x8b, - 0x46, 0xfa, 0x48, 0x48, 0x89, 0x45, 0x08, 0xc7, 0x45, 0x02, 0x00, 0x00, 0xc7, - 0x45, 0x04, 0x00, 0x00, 0x8b, 0xc6, 0x83, 0xc7, 0x0a, 0x2b, 0xc7, 0x3d, 0x58, - 0xfe, 0x75, 0x03, 0x8d, 0x7c, 0x7c, 0x8b, 0x44, 0x0e, 0x39, 0x44, 0x0a, 0x75, - 0x03, 0x89, 0x7c, 0x0e, 0x89, 0x7c, 0x0a, 0xeb, 0x0a, 0x83, 0x06, 0xb0, 0x0d, - 0x01, 0x83, 0x16, 0xb2, 0x0d, 0x00, 0x8b, 0x46, 0xfa, 0x01, 0x44, 0x06, 0x6a, - 0x30, 0xff, 0x74, 0x26, 0xe8, 0xfc, 0x11, 0x83, 0xc4, 0x04, 0xff, 0x46, 0xfc, - 0xff, 0x74, 0x26, 0xe8, 0x4f, 0xe7, 0x83, 0xc4, 0x02, 0xf6, 0x06, 0x13, 0x54, - 0x80, 0x75, 0x03, 0xe9, 0x89, 0xfe, 0x83, 0x06, 0x88, 0x0d, 0x01, 0x83, 0x16, - 0x8a, 0x0d, 0x00, 0x80, 0x4c, 0x01, 0x40, 0x83, 0x7e, 0xfc, 0x00, 0x74, 0x07, - 0xc7, 0x44, 0x4a, 0x00, 0x00, 0xeb, 0x0f, 0x83, 0x7c, 0x4a, 0x14, 0x72, 0x09, - 0xc7, 0x44, 0x4a, 0x00, 0x00, 0x80, 0x4c, 0x01, 0x40, 0x83, 0x7e, 0xfc, 0x05, - 0x76, 0x05, 0xc7, 0x46, 0xfc, 0x05, 0x00, 0x8b, 0x5e, 0xfc, 0xc1, 0xe3, 0x02, - 0x83, 0x87, 0x48, 0x0d, 0x01, 0x83, 0x97, 0x4a, 0x0d, 0x00, 0x8b, 0x44, 0x24, - 0xc1, 0xe0, 0x02, 0x05, 0x02, 0x02, 0x50, 0xe8, 0xa1, 0xe6, 0x83, 0xc4, 0x02, - 0x89, 0x46, 0xfc, 0x8b, 0x44, 0x06, 0xa3, 0x20, 0x0e, 0x8b, 0x46, 0xfc, 0xa3, - 0x22, 0x0e, 0x39, 0x44, 0x06, 0x74, 0x20, 0x76, 0x14, 0x83, 0x06, 0x80, 0x0d, - 0x01, 0x83, 0x16, 0x82, 0x0d, 0x00, 0xff, 0x06, 0x26, 0x0e, 0x80, 0x4c, 0x01, - 0x40, 0xeb, 0x0a, 0x83, 0x06, 0x78, 0x0d, 0x01, 0x83, 0x16, 0x7a, 0x0d, 0x00, - 0x56, 0xe8, 0xf6, 0xfb, 0x83, 0xc4, 0x02, 0x5e, 0x5f, 0xc9, 0xc3, 0x90, 0xc8, - 0x0a, 0x00, 0x00, 0x57, 0x56, 0x8b, 0x76, 0x04, 0x8b, 0x7c, 0x0c, 0x8b, 0x45, - 0x06, 0x89, 0x46, 0xf6, 0x8b, 0x45, 0x08, 0x89, 0x46, 0xfa, 0x8b, 0x5e, 0xf6, - 0x8a, 0x07, 0x25, 0x0f, 0x00, 0x48, 0x74, 0x17, 0x48, 0x75, 0x03, 0xe9, 0xdb, - 0x00, 0x48, 0x75, 0x03, 0xe9, 0x29, 0x01, 0x48, 0x75, 0x03, 0xe9, 0x67, 0x01, - 0x5e, 0x5f, 0xc9, 0xc3, 0x90, 0x8b, 0x5e, 0xfa, 0x03, 0x5e, 0xf6, 0x80, 0x7f, - 0xff, 0xff, 0x75, 0x03, 0xff, 0x4e, 0xfa, 0x8b, 0x44, 0x1e, 0x2b, 0x46, 0xfa, - 0x3d, 0xfd, 0xff, 0x74, 0x03, 0xe9, 0xab, 0x01, 0xf6, 0x04, 0x01, 0x75, 0x03, - 0xe9, 0x97, 0x00, 0xc6, 0x44, 0x53, 0x00, 0x8b, 0x5e, 0xf6, 0x8a, 0x07, 0xc0, - 0xe8, 0x04, 0x2a, 0xe4, 0x89, 0x46, 0xfe, 0x8b, 0x44, 0x14, 0x2b, 0x44, 0x10, - 0xb9, 0x24, 0x00, 0x99, 0xf7, 0xf9, 0x3b, 0x46, 0xfe, 0x74, 0x28, 0x6b, 0x44, - 0x1e, 0x24, 0x03, 0x44, 0x10, 0x89, 0x44, 0x14, 0x8b, 0x44, 0x10, 0x89, 0x46, - 0xf8, 0xeb, 0x0e, 0x90, 0x6a, 0x01, 0x50, 0xe8, 0x22, 0xfb, 0x83, 0xc4, 0x04, - 0x83, 0x46, 0xf8, 0x24, 0x8b, 0x46, 0xf8, 0x39, 0x44, 0x14, 0x77, 0xeb, 0xc7, - 0x46, 0xfc, 0x00, 0x00, 0x8b, 0x46, 0xfe, 0x39, 0x46, 0xfc, 0x72, 0x09, 0x8b, - 0x5c, 0x18, 0x03, 0x5e, 0xfc, 0x80, 0x27, 0xf9, 0xff, 0x46, 0xfc, 0x83, 0x7e, - 0xfc, 0x08, 0x72, 0xe6, 0x8b, 0x46, 0xfe, 0x39, 0x44, 0x1e, 0x73, 0x06, 0x8b, - 0x44, 0x1e, 0x89, 0x46, 0xfe, 0x6b, 0xc0, 0x24, 0x03, 0x44, 0x10, 0x89, 0x44, - 0x14, 0xc7, 0x44, 0x3e, 0x00, 0x00, 0xc7, 0x44, 0x40, 0x00, 0x00, 0x81, 0x24, - 0xfe, 0xfd, 0x81, 0x0c, 0x02, 0x01, 0x5e, 0x5f, 0xc9, 0xc3, 0x90, 0x83, 0x06, - 0xe8, 0x0d, 0x01, 0x83, 0x16, 0xea, 0x0d, 0x00, 0x5e, 0x5f, 0xc9, 0xc3, 0x83, - 0x7e, 0xfa, 0x04, 0x75, 0x0e, 0x8b, 0x5e, 0xf6, 0x80, 0x7f, 0x03, 0xff, 0x75, - 0x05, 0xc7, 0x46, 0xfa, 0x03, 0x00, 0x83, 0x7e, 0xfa, 0x03, 0x74, 0x03, 0xe9, - 0xe1, 0x00, 0xf6, 0x04, 0x02, 0x74, 0x16, 0xc7, 0x44, 0x3e, 0x00, 0x00, 0xc7, - 0x44, 0x40, 0x00, 0x00, 0x81, 0x24, 0xfd, 0xfc, 0xff, 0x06, 0xa2, 0x7f, 0x5e, - 0x5f, 0xc9, 0xc3, 0x83, 0x7c, 0x4c, 0x00, 0x74, 0xb4, 0xf6, 0x04, 0x01, 0x74, - 0xaf, 0xc7, 0x44, 0x3e, 0x00, 0x00, 0xc7, 0x44, 0x40, 0x00, 0x00, 0x81, 0x24, - 0xfe, 0xfc, 0xeb, 0xdd, 0x90, 0x83, 0x7e, 0xfa, 0x04, 0x75, 0x0e, 0x8b, 0x5e, - 0xf6, 0x80, 0x7f, 0x03, 0xff, 0x75, 0x05, 0xc7, 0x46, 0xfa, 0x03, 0x00, 0x83, - 0x7e, 0xfa, 0x03, 0x74, 0x03, 0xe9, 0x8d, 0x00, 0xf6, 0x04, 0x02, 0x75, 0x03, - 0xe9, 0x79, 0xff, 0xc7, 0x44, 0x3e, 0x00, 0x00, 0xc7, 0x44, 0x40, 0x00, 0x00, - 0x81, 0x24, 0xfd, 0xfc, 0x8b, 0x5e, 0xf6, 0x8b, 0x47, 0x01, 0x89, 0x44, 0x36, - 0xc7, 0x44, 0x42, 0x00, 0x00, 0xeb, 0x51, 0x90, 0x83, 0x7e, 0xfa, 0x0c, 0x72, - 0x60, 0x8b, 0x5e, 0xf6, 0x8b, 0x47, 0x0a, 0x05, 0x0c, 0x00, 0x3b, 0x46, 0xfa, - 0x75, 0x52, 0xf6, 0x04, 0x08, 0x75, 0x03, 0xe9, 0x3e, 0xff, 0x8b, 0x44, 0x38, - 0x39, 0x47, 0x02, 0x74, 0x03, 0xe9, 0x33, 0xff, 0x8a, 0x47, 0x01, 0x2a, 0xe4, - 0x3b, 0x44, 0x42, 0x74, 0x03, 0xe9, 0x26, 0xff, 0x83, 0x7c, 0x44, 0x00, 0x74, - 0x24, 0xc7, 0x44, 0x3e, 0x00, 0x00, 0xc7, 0x44, 0x40, 0x00, 0x00, 0x8a, 0x44, - 0x42, 0xfe, 0xc0, 0x89, 0x44, 0x42, 0x81, 0x24, 0xe7, 0xfe, 0x81, 0x0c, 0x04, - 0x02, 0xa1, 0x00, 0x0e, 0x89, 0x44, 0x20, 0x5e, 0x5f, 0xc9, 0xc3, 0x81, 0x24, - 0xe7, 0xfd, 0xe9, 0xec, 0xfe, 0x90, 0x83, 0x06, 0xbc, 0x0d, 0x01, 0x83, 0x16, - 0xbe, 0x0d, 0x00, 0x83, 0x44, 0x3e, 0x02, 0x5e, 0x5f, 0xc9, 0xc3, 0xc8, 0x02, - 0x00, 0x00, 0x56, 0x8b, 0x76, 0x04, 0xff, 0x74, 0x26, 0xe8, 0x1f, 0x0f, 0x83, - 0xc4, 0x02, 0x88, 0x46, 0xfe, 0xf6, 0x46, 0xfe, 0x40, 0x74, 0x2a, 0xf6, 0x44, - 0x01, 0x10, 0x74, 0x24, 0x8b, 0x44, 0x24, 0xc1, 0xe0, 0x02, 0x05, 0x01, 0x02, - 0x50, 0xe8, 0x1d, 0xe4, 0x83, 0xc4, 0x02, 0x40, 0x75, 0x07, 0x81, 0x24, 0xef, - 0xcf, 0xeb, 0x0b, 0x90, 0x83, 0x06, 0xa8, 0x0d, 0x01, 0x83, 0x16, 0xaa, 0x0d, - 0x00, 0xf6, 0x46, 0xfe, 0x80, 0x74, 0x23, 0x83, 0x06, 0xa0, 0x0d, 0x01, 0x83, - 0x16, 0xa2, 0x0d, 0x00, 0x8b, 0x44, 0x24, 0xc1, 0xe0, 0x02, 0x05, 0x02, 0x02, - 0x50, 0xe8, 0xe9, 0xe3, 0x83, 0xc4, 0x02, 0x3b, 0x44, 0x06, 0x74, 0x04, 0x80, - 0x4c, 0x01, 0x40, 0x6a, 0x10, 0xff, 0x74, 0x26, 0xe8, 0xc5, 0x0e, 0x83, 0xc4, - 0x04, 0xf6, 0x44, 0x01, 0xc0, 0x74, 0x07, 0x56, 0xe8, 0x58, 0xf9, 0x83, 0xc4, - 0x02, 0x83, 0x06, 0x40, 0x0d, 0x01, 0x83, 0x16, 0x42, 0x0d, 0x00, 0x5e, 0xc9, - 0xc3, 0xc8, 0x0c, 0x00, 0x00, 0x57, 0x56, 0x8b, 0x76, 0x04, 0x8b, 0x7c, 0x12, - 0x8b, 0x45, 0x0c, 0x89, 0x46, 0xf4, 0x8b, 0xd8, 0x8b, 0x47, 0x06, 0x89, 0x46, - 0xfc, 0x8b, 0x47, 0x08, 0x89, 0x46, 0xf8, 0x8b, 0x5e, 0xfc, 0xf6, 0x07, 0x80, - 0x75, 0x2c, 0x83, 0x06, 0xec, 0x0d, 0x01, 0x83, 0x16, 0xee, 0x0d, 0x00, 0x8b, - 0x5c, 0x14, 0xf6, 0x07, 0x04, 0x74, 0x06, 0x80, 0x27, 0xfb, 0xeb, 0x04, 0x90, - 0x80, 0x27, 0xfd, 0x80, 0x4c, 0x09, 0x04, 0xa1, 0x00, 0x0e, 0x05, 0xe8, 0x03, - 0x89, 0x44, 0x16, 0xe9, 0x01, 0x03, 0x90, 0x8a, 0x07, 0x25, 0x0f, 0x00, 0xe9, - 0xb0, 0x00, 0x83, 0x7e, 0xf8, 0x04, 0x74, 0x03, 0xe9, 0xe1, 0x02, 0x83, 0x06, - 0xcc, 0x0d, 0x01, 0x83, 0x16, 0xce, 0x0d, 0x00, 0xf6, 0x44, 0x08, 0x01, 0x74, - 0x27, 0x83, 0x7d, 0x3e, 0x00, 0x74, 0x03, 0xff, 0x4d, 0x3e, 0xc7, 0x45, 0x40, - 0x00, 0x00, 0x80, 0x64, 0x08, 0xfa, 0xf6, 0x44, 0x08, 0x08, 0x75, 0x03, 0xe9, - 0x1f, 0x02, 0x80, 0x64, 0x08, 0xf7, 0x80, 0x4c, 0x08, 0x10, 0xe9, 0x14, 0x02, - 0x90, 0x56, 0xe8, 0x1a, 0xf8, 0x83, 0xc4, 0x02, 0xc7, 0x44, 0x08, 0x10, 0x01, - 0xff, 0x06, 0x3e, 0x7c, 0xe9, 0x00, 0x02, 0x90, 0x83, 0x7e, 0xf8, 0x04, 0x74, - 0x03, 0xe9, 0x8d, 0x02, 0xf6, 0x44, 0x08, 0x01, 0x74, 0x15, 0x83, 0x7d, 0x3e, - 0x00, 0x74, 0x03, 0xff, 0x4d, 0x3e, 0xc7, 0x45, 0x40, 0x00, 0x00, 0x80, 0x64, - 0x08, 0xf2, 0xe9, 0xdb, 0x01, 0x83, 0x06, 0xec, 0x0d, 0x01, 0x83, 0x16, 0xee, - 0x0d, 0x00, 0xe9, 0x73, 0x02, 0x90, 0x83, 0x7e, 0xf8, 0x04, 0x74, 0x42, 0xe9, - 0x5b, 0x02, 0x90, 0x83, 0x7e, 0xf8, 0x04, 0x7d, 0x03, 0xe9, 0x51, 0x02, 0x81, - 0x7e, 0xf8, 0x72, 0x06, 0x7c, 0x2e, 0xe9, 0x47, 0x02, 0x90, 0x68, 0x2c, 0x09, - 0xe8, 0xa2, 0xe0, 0x83, 0xc4, 0x02, 0xeb, 0x1f, 0x90, 0x2d, 0x05, 0x00, 0x3d, - 0x06, 0x00, 0x77, 0xec, 0xd1, 0xe0, 0x93, 0x2e, 0xff, 0xa7, 0xc0, 0x20, 0x00, - 0x20, 0x54, 0x20, 0x90, 0x20, 0x86, 0x20, 0x86, 0x20, 0x86, 0x20, 0x86, 0x20, - 0xf6, 0x44, 0x08, 0x01, 0x74, 0x03, 0xe9, 0x21, 0x02, 0x8b, 0x5e, 0xfc, 0x8a, - 0x47, 0x01, 0x24, 0x0f, 0x88, 0x46, 0xf6, 0x8a, 0x44, 0x21, 0x2a, 0x44, 0x20, - 0x24, 0x0f, 0x8a, 0x4e, 0xf6, 0x2a, 0x4c, 0x20, 0x80, 0xe1, 0x0f, 0x3a, 0xc1, - 0x7d, 0x17, 0x83, 0x06, 0xc0, 0x0d, 0x01, 0x83, 0x16, 0xc2, 0x0d, 0x00, 0x6a, - 0x03, 0x56, 0xe8, 0xb3, 0xf7, 0x83, 0xc4, 0x04, 0xe9, 0xeb, 0x01, 0x90, 0x8a, - 0x46, 0xf6, 0x38, 0x44, 0x20, 0x75, 0x03, 0xe9, 0xb6, 0x00, 0xf6, 0x44, 0x08, - 0x0c, 0x75, 0x09, 0x68, 0x4a, 0x09, 0xe8, 0x27, 0xe0, 0x83, 0xc4, 0x02, 0x8b, - 0x5c, 0x14, 0x80, 0x0f, 0x06, 0x83, 0x7d, 0x3e, 0x00, 0x74, 0x03, 0xff, 0x4d, - 0x3e, 0xc7, 0x45, 0x40, 0x00, 0x00, 0x8b, 0x44, 0x0e, 0x39, 0x44, 0x0c, 0x75, - 0x09, 0x68, 0x5d, 0x09, 0xe8, 0x02, 0xe0, 0x83, 0xc4, 0x02, 0x8b, 0x44, 0x0c, - 0x89, 0x46, 0xfa, 0x8a, 0x44, 0x20, 0xfe, 0xc0, 0x24, 0x0f, 0x88, 0x44, 0x20, - 0x8b, 0x5e, 0xfa, 0x8b, 0x07, 0x89, 0x44, 0x0c, 0xa1, 0x1c, 0x7b, 0x8b, 0x5e, - 0xfa, 0x89, 0x07, 0x8b, 0x46, 0xfa, 0xa3, 0x1c, 0x7b, 0xff, 0x45, 0x3a, 0x8a, - 0x46, 0xf6, 0x38, 0x44, 0x20, 0x75, 0xbe, 0x83, 0x7c, 0x0c, 0x00, 0x75, 0x06, - 0x8d, 0x44, 0x0c, 0x89, 0x44, 0x10, 0xf6, 0x44, 0x08, 0x02, 0x75, 0x3f, 0x8a, - 0x44, 0x20, 0x38, 0x44, 0x21, 0x75, 0x06, 0x80, 0x64, 0x08, 0xfb, 0xeb, 0x19, - 0xf6, 0x44, 0x08, 0x04, 0x75, 0x09, 0x68, 0x7c, 0x09, 0xe8, 0xa2, 0xdf, 0x83, - 0xc4, 0x02, 0x8b, 0x45, 0x30, 0x03, 0x06, 0x00, 0x0e, 0x89, 0x44, 0x16, 0x8a, - 0x44, 0x22, 0x38, 0x44, 0x21, 0x75, 0x10, 0xf6, 0x44, 0x09, 0x02, 0x75, 0x0a, - 0x80, 0x4c, 0x09, 0x02, 0xa1, 0x00, 0x0e, 0x89, 0x44, 0x18, 0x8b, 0x5e, 0xfc, - 0x8a, 0x07, 0x25, 0x0f, 0x00, 0x2d, 0x07, 0x00, 0x75, 0x03, 0xe9, 0x89, 0x00, - 0x48, 0x48, 0x74, 0x0b, 0x48, 0x74, 0x2c, 0x48, 0x74, 0x3b, 0x5e, 0x5f, 0xc9, - 0xc3, 0x90, 0xf6, 0x44, 0x08, 0x02, 0x75, 0x11, 0x8a, 0x44, 0x22, 0x38, 0x44, - 0x21, 0x74, 0x09, 0x81, 0x64, 0x08, 0xfb, 0xfd, 0x80, 0x4c, 0x08, 0x0a, 0x83, - 0x06, 0xf0, 0x0d, 0x01, 0x83, 0x16, 0xf2, 0x0d, 0x00, 0xe9, 0xe6, 0x00, 0x80, - 0x4c, 0x08, 0x20, 0x83, 0x06, 0xf4, 0x0d, 0x01, 0x83, 0x16, 0xf6, 0x0d, 0x00, - 0xe9, 0xd5, 0x00, 0x90, 0xf6, 0x44, 0x08, 0x02, 0x75, 0x03, 0xe9, 0x4b, 0xfe, - 0x83, 0x7d, 0x3e, 0x00, 0x74, 0x03, 0xff, 0x4d, 0x3e, 0xc7, 0x45, 0x40, 0x00, - 0x00, 0x80, 0x64, 0x08, 0xf1, 0x8a, 0x44, 0x20, 0x88, 0x44, 0x21, 0x8b, 0x44, - 0x0c, 0x89, 0x44, 0x0e, 0x8a, 0x44, 0x22, 0x38, 0x44, 0x20, 0x75, 0x0d, 0x80, - 0x4c, 0x09, 0x02, 0xa1, 0x00, 0x0e, 0x89, 0x44, 0x18, 0xe9, 0x98, 0x00, 0x80, - 0x4c, 0x08, 0x08, 0x5e, 0x5f, 0xc9, 0xc3, 0x8b, 0x5e, 0xfc, 0x8a, 0x47, 0x01, - 0xc0, 0xe8, 0x04, 0x88, 0x46, 0xfe, 0x38, 0x44, 0x23, 0x75, 0x4d, 0x8b, 0x5e, - 0xf4, 0xc7, 0x07, 0x02, 0x00, 0x8b, 0x5e, 0xf4, 0x89, 0x77, 0x02, 0x8b, 0x46, - 0xf4, 0x8b, 0x1e, 0xa6, 0x7f, 0x89, 0x07, 0x8b, 0x46, 0xf4, 0x05, 0x04, 0x00, - 0xa3, 0xa6, 0x7f, 0x8a, 0x44, 0x23, 0xfe, 0xc0, 0x24, 0x0f, 0x88, 0x44, 0x23, - 0xf6, 0x44, 0x08, 0x80, 0x74, 0x08, 0x80, 0x4c, 0x08, 0x88, 0x5e, 0x5f, 0xc9, - 0xc3, 0x80, 0x4c, 0x08, 0x80, 0x8b, 0x45, 0x30, 0xc1, 0xe8, 0x02, 0x03, 0x06, - 0x00, 0x0e, 0x89, 0x44, 0x1c, 0x5e, 0x5f, 0xc9, 0xc3, 0x90, 0x8a, 0x46, 0xfe, - 0x2a, 0x44, 0x23, 0x24, 0x0f, 0x3c, 0x05, 0x7d, 0x08, 0x80, 0x4c, 0x08, 0x40, - 0x5e, 0x5f, 0xc9, 0xc3, 0x83, 0x06, 0xc4, 0x0d, 0x01, 0x83, 0x16, 0xc6, 0x0d, - 0x00, 0x6a, 0x04, 0xe9, 0x1a, 0xfe, 0x90, 0x83, 0x06, 0xbc, 0x0d, 0x01, 0x83, - 0x16, 0xbe, 0x0d, 0x00, 0x83, 0x45, 0x3e, 0x02, 0x5e, 0x5f, 0xc9, 0xc3, 0xc8, - 0x0c, 0x00, 0x00, 0x57, 0x56, 0x8b, 0x76, 0x04, 0x8b, 0x7c, 0x0c, 0x83, 0x3d, - 0x01, 0x74, 0x09, 0x68, 0x28, 0x0a, 0xe8, 0x39, 0xde, 0x83, 0xc4, 0x02, 0x83, - 0x7c, 0x1c, 0x00, 0x74, 0x14, 0xff, 0x74, 0x1c, 0xff, 0x74, 0x1a, 0xff, 0x74, - 0x04, 0xe8, 0xe6, 0x0a, 0x83, 0xc4, 0x06, 0xc7, 0x44, 0x1c, 0x00, 0x00, 0x8b, - 0x45, 0x08, 0x89, 0x46, 0xf8, 0x83, 0x7c, 0x28, 0x00, 0x74, 0x14, 0x39, 0x44, - 0x28, 0x77, 0x09, 0xc7, 0x44, 0x28, 0x00, 0x00, 0xe9, 0xef, 0x00, 0x90, 0x29, - 0x44, 0x28, 0xe9, 0xe8, 0x00, 0x8b, 0x45, 0x06, 0x89, 0x46, 0xfe, 0x83, 0x3e, - 0xfa, 0x0d, 0x00, 0x74, 0x48, 0x6a, 0x64, 0xe8, 0xc4, 0x0a, 0x83, 0xc4, 0x02, - 0x3b, 0x06, 0xfa, 0x0d, 0x73, 0x3a, 0x83, 0x06, 0xdc, 0x0d, 0x01, 0x83, 0x16, - 0xde, 0x0d, 0x00, 0x6a, 0x02, 0xe8, 0xac, 0x0a, 0x83, 0xc4, 0x02, 0x89, 0x46, - 0xf6, 0x6a, 0x08, 0xe8, 0xa1, 0x0a, 0x83, 0xc4, 0x02, 0x6a, 0x02, 0x89, 0x46, - 0xf4, 0xe8, 0x96, 0x0a, 0x83, 0xc4, 0x02, 0x8b, 0xc8, 0xc0, 0xe1, 0x02, 0x8a, - 0x46, 0xf4, 0xd2, 0xe0, 0x8b, 0x5e, 0xfe, 0x03, 0x5e, 0xf6, 0x30, 0x07, 0x8b, - 0x5e, 0xfe, 0x8a, 0x07, 0x25, 0x0f, 0x00, 0x48, 0x7c, 0x7a, 0x2d, 0x03, 0x00, - 0x7e, 0x0b, 0x48, 0x7c, 0x72, 0x2d, 0x06, 0x00, 0x7e, 0x09, 0xeb, 0x6b, 0x90, - 0x56, 0xe8, 0x3a, 0xf9, 0xeb, 0x52, 0xb8, 0xc3, 0xa5, 0x2b, 0x47, 0x02, 0x2b, - 0x07, 0x89, 0x46, 0xfa, 0x39, 0x46, 0xf8, 0x74, 0x2a, 0x83, 0x3e, 0xfa, 0x0d, - 0x00, 0x75, 0x23, 0x83, 0x06, 0xac, 0x0d, 0x01, 0x83, 0x16, 0xae, 0x0d, 0x00, - 0x83, 0x44, 0x3e, 0x02, 0x8b, 0x46, 0xfa, 0x39, 0x46, 0xf8, 0x73, 0x45, 0x3d, - 0x72, 0x06, 0x77, 0x40, 0x2b, 0x46, 0xf8, 0x89, 0x44, 0x28, 0xeb, 0x38, 0x8a, - 0x07, 0x24, 0x70, 0xc0, 0xe8, 0x04, 0x2a, 0xe4, 0x39, 0x44, 0x1e, 0x76, 0x10, - 0x6b, 0xc0, 0x24, 0x03, 0x44, 0x10, 0x50, 0xe8, 0x8c, 0xfb, 0x83, 0xc4, 0x02, - 0xeb, 0x1b, 0x90, 0x83, 0x06, 0xb4, 0x0d, 0x01, 0x83, 0x16, 0xb6, 0x0d, 0x00, - 0xeb, 0x0e, 0x83, 0x44, 0x3e, 0x02, 0x83, 0x06, 0xb8, 0x0d, 0x01, 0x83, 0x16, - 0xba, 0x0d, 0x00, 0x83, 0x3d, 0x01, 0x75, 0x04, 0xc7, 0x05, 0x00, 0x00, 0x8b, - 0xc6, 0x83, 0xc7, 0x0a, 0x2b, 0xc7, 0x3d, 0x58, 0xfe, 0x75, 0x03, 0x8d, 0x7c, - 0x7c, 0x89, 0x7c, 0x0c, 0x5e, 0x5f, 0xc9, 0xc3, 0x90, 0x57, 0x56, 0x83, 0x06, - 0x64, 0x0d, 0x01, 0x83, 0x16, 0x66, 0x0d, 0x00, 0xc7, 0x06, 0xa2, 0x7f, 0x00, - 0x00, 0xbe, 0x50, 0x7c, 0xeb, 0x05, 0x90, 0x81, 0xc6, 0xa8, 0x01, 0x39, 0x36, - 0xa0, 0x7f, 0x76, 0x12, 0x8b, 0x5c, 0x0c, 0x83, 0x3f, 0x01, 0x75, 0xee, 0x56, - 0xe8, 0x76, 0xfe, 0x83, 0xc4, 0x02, 0xeb, 0xef, 0x90, 0xbe, 0x50, 0x7c, 0xeb, - 0x29, 0x90, 0x83, 0x7c, 0x1e, 0x00, 0x74, 0x1e, 0x8b, 0x7c, 0x12, 0x83, 0xc7, - 0x24, 0x39, 0x7c, 0x14, 0x77, 0x03, 0x8b, 0x7c, 0x10, 0xf6, 0x45, 0x08, 0x78, - 0x74, 0x2a, 0x57, 0xe8, 0x16, 0xf2, 0x83, 0xc4, 0x02, 0x89, 0x7c, 0x12, 0x81, - 0xc6, 0xa8, 0x01, 0x39, 0x36, 0xa0, 0x7f, 0x76, 0x1e, 0xf6, 0x44, 0x01, 0x10, - 0x75, 0xf0, 0xf6, 0x44, 0x01, 0x01, 0x74, 0xc6, 0x56, 0xe8, 0x0a, 0xf1, 0x83, - 0xc4, 0x02, 0xeb, 0xe1, 0x90, 0x39, 0x7c, 0x12, 0x75, 0xc0, 0xeb, 0xd9, 0x90, - 0x5e, 0x5f, 0xc3, 0x90, 0x55, 0x8b, 0xec, 0x56, 0x8b, 0x76, 0x04, 0x83, 0x06, - 0xe4, 0x0d, 0x01, 0x83, 0x16, 0xe6, 0x0d, 0x00, 0xf6, 0x04, 0x0a, 0x74, 0x10, - 0xff, 0x44, 0x40, 0x83, 0x7c, 0x40, 0x0a, 0x72, 0x07, 0x81, 0x24, 0xe0, 0xfd, - 0x80, 0x0c, 0x01, 0xf6, 0x04, 0x01, 0x74, 0x17, 0xff, 0x44, 0x3e, 0xc7, 0x44, - 0x40, 0x00, 0x00, 0x80, 0x4c, 0x01, 0x01, 0x56, 0xe8, 0xbd, 0xf0, 0x83, 0xc4, - 0x02, 0x5e, 0xc9, 0xc3, 0x90, 0xf6, 0x04, 0x02, 0x75, 0xec, 0xf6, 0x04, 0x0c, - 0x75, 0x03, 0xe9, 0xac, 0x00, 0x80, 0x24, 0xe3, 0x83, 0x3e, 0x00, 0x0d, 0x00, - 0x74, 0x07, 0x81, 0x0c, 0x14, 0x02, 0xe9, 0x92, 0x00, 0xa1, 0x04, 0x50, 0x39, - 0x44, 0x36, 0x72, 0x54, 0xa1, 0x06, 0x50, 0x39, 0x44, 0x36, 0x77, 0x4c, 0xa0, - 0x01, 0x50, 0x2a, 0xe4, 0x39, 0x44, 0x42, 0x75, 0x42, 0x83, 0x7c, 0x42, 0x00, - 0x74, 0x08, 0xa1, 0x02, 0x50, 0x39, 0x44, 0x38, 0x75, 0x34, 0xa1, 0x0a, 0x50, - 0x89, 0x44, 0x44, 0x83, 0x7c, 0x42, 0x00, 0x75, 0x14, 0xa1, 0x02, 0x50, 0x89, - 0x44, 0x38, 0xa1, 0x04, 0x50, 0x89, 0x44, 0x4e, 0xa1, 0x06, 0x50, 0x89, 0x44, - 0x50, 0xeb, 0x0c, 0x8b, 0x44, 0x4e, 0xa3, 0x04, 0x50, 0x8b, 0x44, 0x50, 0xa3, - 0x06, 0x50, 0x81, 0x0c, 0x18, 0x01, 0xe9, 0x7c, 0xff, 0x90, 0xa0, 0xf8, 0x7d, - 0x0a, 0x06, 0x50, 0x7c, 0xa8, 0x10, 0x75, 0x27, 0xc6, 0x06, 0x00, 0x50, 0x04, - 0x8a, 0x44, 0x42, 0xa2, 0x01, 0x50, 0x8b, 0x44, 0x38, 0xa3, 0x02, 0x50, 0x8b, - 0x44, 0x36, 0xa3, 0x04, 0x50, 0x8b, 0x44, 0x36, 0xa3, 0x06, 0x50, 0xc7, 0x06, - 0x00, 0x0d, 0x00, 0x50, 0xe9, 0x6c, 0xff, 0x90, 0x81, 0x0c, 0x04, 0x02, 0xa1, - 0x00, 0x0e, 0x05, 0x0a, 0x00, 0x89, 0x44, 0x20, 0x5e, 0xc9, 0xc3, 0x55, 0x8b, - 0xec, 0x57, 0x56, 0x8b, 0x76, 0x04, 0x8b, 0x7c, 0x12, 0xf6, 0x44, 0x09, 0x04, - 0x74, 0x07, 0x80, 0x64, 0x09, 0xfb, 0xeb, 0x12, 0x90, 0xff, 0x45, 0x40, 0x83, - 0x45, 0x3e, 0x02, 0x83, 0x06, 0xe0, 0x0d, 0x01, 0x83, 0x16, 0xe2, 0x0d, 0x00, - 0x83, 0x7d, 0x40, 0x0a, 0x72, 0x14, 0xc7, 0x45, 0x40, 0x00, 0x00, 0x81, 0x25, - 0xe0, 0xfd, 0x81, 0x0d, 0x01, 0x01, 0x57, 0xe8, 0xba, 0xef, 0x83, 0xc4, 0x02, - 0xf6, 0x44, 0x08, 0x03, 0x74, 0x07, 0x80, 0x4c, 0x08, 0x08, 0xeb, 0x1a, 0x90, - 0x8a, 0x44, 0x20, 0x38, 0x44, 0x21, 0x75, 0x09, 0x68, 0x93, 0x0b, 0xe8, 0x0e, - 0xdb, 0x83, 0xc4, 0x02, 0x80, 0x4c, 0x08, 0x0a, 0x80, 0x64, 0x09, 0xfd, 0x56, - 0xe8, 0x79, 0xf0, 0x83, 0xc4, 0x02, 0x5e, 0x5f, 0xc9, 0xc3, 0xc8, 0x02, 0x00, - 0x00, 0x57, 0x56, 0xeb, 0x03, 0xe8, 0x64, 0xe5, 0xa1, 0x10, 0x0d, 0x39, 0x06, - 0x12, 0x0d, 0x75, 0xf4, 0x83, 0x3e, 0x3e, 0x7c, 0x00, 0x74, 0x2d, 0xc7, 0x06, - 0x3e, 0x7c, 0x00, 0x00, 0xbf, 0x1e, 0x7b, 0xeb, 0x03, 0x83, 0xc7, 0x24, 0x39, - 0x3e, 0x50, 0x54, 0x76, 0xdc, 0xf6, 0x45, 0x09, 0x01, 0x74, 0xf1, 0x57, 0xe8, - 0x5b, 0xe7, 0x83, 0xc4, 0x02, 0xe8, 0x01, 0xee, 0x80, 0x65, 0x09, 0xfe, 0xe8, - 0x12, 0xee, 0xeb, 0xde, 0x83, 0x3e, 0xa4, 0x7f, 0x00, 0x74, 0x71, 0xe8, 0xee, - 0xed, 0x8b, 0x36, 0xa4, 0x7f, 0x0b, 0xf6, 0x74, 0x5f, 0x8b, 0x44, 0x04, 0xa3, - 0xa4, 0x7f, 0x0b, 0xc0, 0x75, 0x06, 0xc7, 0x06, 0xa6, 0x7f, 0xa4, 0x7f, 0x83, - 0x3c, 0x02, 0x75, 0x20, 0xe8, 0xe6, 0xed, 0x8b, 0x44, 0x08, 0x2d, 0x04, 0x00, - 0x50, 0x8b, 0x44, 0x06, 0x05, 0x04, 0x00, 0x50, 0xff, 0x74, 0x02, 0xe8, 0x55, - 0xe2, 0x83, 0xc4, 0x06, 0x89, 0x46, 0xfe, 0xe8, 0xb1, 0xed, 0xc7, 0x04, 0x00, - 0x00, 0x83, 0x06, 0x74, 0x0d, 0x01, 0x83, 0x16, 0x76, 0x0d, 0x00, 0x83, 0x7e, - 0xfe, 0x00, 0x74, 0x16, 0x83, 0x06, 0xc8, 0x0d, 0x01, 0x83, 0x16, 0xca, 0x0d, - 0x00, 0xff, 0x76, 0xfe, 0xff, 0x74, 0x02, 0xe8, 0xb0, 0xf1, 0x83, 0xc4, 0x04, - 0xe8, 0x9c, 0xed, 0xe9, 0x4c, 0xff, 0x90, 0x5e, 0x5f, 0xc9, 0xc3, 0xc8, 0x04, - 0x00, 0x00, 0x57, 0x56, 0x8b, 0x76, 0x04, 0x8b, 0x44, 0x12, 0x89, 0x46, 0xfe, - 0x8a, 0x44, 0x22, 0x2a, 0x44, 0x20, 0x24, 0x0f, 0x3c, 0x03, 0x7c, 0x09, 0x80, - 0x64, 0x09, 0xfd, 0x5e, 0x5f, 0xc9, 0xc3, 0x90, 0x83, 0x3e, 0x1c, 0x7b, 0x00, - 0x74, 0x09, 0x8b, 0x5e, 0xfe, 0x83, 0x7f, 0x3a, 0x00, 0x75, 0x18, 0x83, 0x06, - 0x6c, 0x0d, 0x01, 0x83, 0x16, 0x6e, 0x0d, 0x00, 0xa1, 0x00, 0x0e, 0x05, 0x0a, - 0x00, 0x89, 0x44, 0x18, 0x5e, 0x5f, 0xc9, 0xc3, 0x90, 0x8b, 0x3e, 0x1c, 0x7b, - 0x8b, 0x05, 0xa3, 0x1c, 0x7b, 0xff, 0x4f, 0x3a, 0xe8, 0x39, 0xed, 0x8b, 0x5e, - 0xfe, 0xff, 0x77, 0x4c, 0xff, 0x77, 0x34, 0x8d, 0x45, 0x08, 0x50, 0x56, 0xe8, - 0xa4, 0xde, 0x83, 0xc4, 0x08, 0x89, 0x46, 0xfc, 0xe8, 0x07, 0xed, 0x81, 0x7e, - 0xfc, 0x6e, 0x06, 0x76, 0x09, 0x68, 0x4b, 0x0c, 0xe8, 0xb2, 0xd9, 0x83, 0xc4, - 0x02, 0xf6, 0x44, 0x09, 0x01, 0x74, 0x13, 0xa1, 0x1c, 0x7b, 0x89, 0x05, 0x89, - 0x3e, 0x1c, 0x7b, 0x8b, 0x5e, 0xfe, 0xff, 0x47, 0x3a, 0x5e, 0x5f, 0xc9, 0xc3, - 0x83, 0x7e, 0xfc, 0x00, 0x75, 0x3a, 0xa1, 0x00, 0x0e, 0x2b, 0x44, 0x1a, 0x3d, - 0x00, 0x40, 0x72, 0x2f, 0xa1, 0x1c, 0x7b, 0x89, 0x05, 0x89, 0x3e, 0x1c, 0x7b, - 0xf6, 0x44, 0x08, 0x80, 0x74, 0x16, 0xa1, 0x00, 0x0e, 0x2b, 0x44, 0x1c, 0x3d, - 0x00, 0x40, 0x73, 0x0b, 0x80, 0x4c, 0x08, 0x08, 0x56, 0xe8, 0xdd, 0xee, 0x83, - 0xc4, 0x02, 0x8b, 0x5e, 0xfe, 0xff, 0x47, 0x3a, 0xe9, 0x61, 0xff, 0x90, 0x83, - 0x06, 0x70, 0x0d, 0x01, 0x83, 0x16, 0x72, 0x0d, 0x00, 0x80, 0x64, 0x09, 0xfd, - 0x83, 0x7c, 0x0e, 0x00, 0x75, 0x03, 0x89, 0x7c, 0x0e, 0xc7, 0x05, 0x00, 0x00, - 0x8b, 0x46, 0xfc, 0x05, 0x04, 0x00, 0x89, 0x45, 0x02, 0x8b, 0x5c, 0x10, 0x89, - 0x3f, 0x89, 0x7c, 0x10, 0x8a, 0x44, 0x22, 0xfe, 0xc0, 0x24, 0x0f, 0x88, 0x44, - 0x22, 0xa1, 0x00, 0x0e, 0x05, 0x88, 0x13, 0x89, 0x44, 0x1a, 0xf6, 0x44, 0x08, - 0x03, 0x75, 0x0b, 0x80, 0x4c, 0x08, 0x08, 0x56, 0xe8, 0x83, 0xee, 0x83, 0xc4, - 0x02, 0x5e, 0x5f, 0xc9, 0xc3, 0x57, 0x56, 0xc7, 0x06, 0xf8, 0x0d, 0x00, 0x00, - 0xc7, 0x06, 0xfa, 0x0d, 0x00, 0x00, 0xe8, 0x39, 0xe9, 0xe8, 0x0c, 0xe7, 0xbf, - 0x1e, 0x7b, 0xeb, 0x0b, 0x90, 0x57, 0xe8, 0x80, 0xe5, 0x83, 0xc4, 0x02, 0x83, - 0xc7, 0x24, 0x39, 0x3e, 0x50, 0x54, 0x77, 0xf0, 0xb0, 0x4f, 0xa2, 0x20, 0x0d, - 0xa2, 0x00, 0x0c, 0xb0, 0x53, 0xa2, 0x21, 0x0d, 0xa2, 0x01, 0x0c, 0x68, 0xdc, - 0x00, 0x68, 0x28, 0xff, 0xe8, 0xd8, 0x05, 0x83, 0xc4, 0x04, 0x83, 0x06, 0x60, - 0x0d, 0x01, 0x83, 0x16, 0x62, 0x0d, 0x00, 0x80, 0x3e, 0x0f, 0x0c, 0x00, 0x74, - 0x03, 0xe8, 0x4d, 0xd9, 0xe8, 0xad, 0xfd, 0xbe, 0x50, 0x7c, 0xeb, 0x63, 0xf6, - 0x44, 0x01, 0x20, 0x74, 0x20, 0xff, 0x74, 0x26, 0xe8, 0x87, 0x05, 0x83, 0xc4, - 0x02, 0xa8, 0x04, 0x74, 0x13, 0x80, 0x64, 0x01, 0xdf, 0x8b, 0x44, 0x24, 0xd1, - 0xe0, 0x50, 0x68, 0x0a, 0x02, 0xe8, 0x7d, 0x05, 0x83, 0xc4, 0x04, 0xa1, 0x00, - 0x0e, 0x2b, 0x44, 0x20, 0x3d, 0x00, 0x40, 0x73, 0x2e, 0xe8, 0xb4, 0xeb, 0xa1, - 0x00, 0x0e, 0x2b, 0x44, 0x20, 0x3d, 0x00, 0x40, 0x73, 0x1a, 0xa1, 0x00, 0x0e, - 0x05, 0xf4, 0x01, 0x89, 0x44, 0x20, 0xf6, 0x44, 0x01, 0x02, 0x74, 0x0b, 0x80, - 0x64, 0x01, 0xfd, 0x56, 0xe8, 0xe0, 0xfb, 0x83, 0xc4, 0x02, 0xe8, 0xa4, 0xeb, - 0xe8, 0x49, 0xfd, 0x81, 0xc6, 0xa8, 0x01, 0x39, 0x36, 0xa0, 0x7f, 0x77, 0x97, - 0xbf, 0x1e, 0x7b, 0xe9, 0x84, 0x00, 0x90, 0xa1, 0x00, 0x0e, 0x2b, 0x45, 0x16, - 0x3d, 0x00, 0x40, 0x73, 0x2e, 0xe8, 0x6a, 0xeb, 0xa1, 0x00, 0x0e, 0x2b, 0x45, - 0x16, 0x3d, 0x00, 0x40, 0x73, 0x1a, 0xa1, 0x00, 0x0e, 0x05, 0xf4, 0x01, 0x89, - 0x45, 0x16, 0xf6, 0x45, 0x08, 0x04, 0x74, 0x0b, 0x80, 0x65, 0x08, 0xfb, 0x57, - 0xe8, 0x94, 0xfc, 0x83, 0xc4, 0x02, 0xe8, 0x5a, 0xeb, 0xe8, 0xff, 0xfc, 0xa1, - 0x00, 0x0e, 0x2b, 0x45, 0x18, 0x3d, 0x00, 0x40, 0x73, 0x3c, 0xe8, 0x31, 0xeb, - 0xa1, 0x00, 0x0e, 0x2b, 0x45, 0x18, 0x3d, 0x00, 0x40, 0x73, 0x28, 0xa1, 0x00, - 0x0e, 0x05, 0xf4, 0x01, 0x89, 0x45, 0x18, 0x8a, 0x45, 0x09, 0x24, 0x03, 0x3c, - 0x02, 0x75, 0x16, 0xf6, 0x45, 0x08, 0x01, 0x74, 0x09, 0x68, 0x1d, 0x0d, 0xe8, - 0xc0, 0xd7, 0x83, 0xc4, 0x02, 0x57, 0xe8, 0x85, 0xfd, 0x83, 0xc4, 0x02, 0xe8, - 0x13, 0xeb, 0xe8, 0xb8, 0xfc, 0x83, 0xc7, 0x24, 0x39, 0x3e, 0x50, 0x54, 0x76, - 0x03, 0xe9, 0x74, 0xff, 0xa1, 0x00, 0x0e, 0x2b, 0x06, 0xa8, 0x7f, 0x3d, 0x00, - 0x40, 0x73, 0x0c, 0xa1, 0x00, 0x0e, 0x05, 0x0a, 0x00, 0xa3, 0xa8, 0x7f, 0xe8, - 0xac, 0xdb, 0xa1, 0x00, 0x0e, 0x2b, 0x06, 0x56, 0x54, 0x3d, 0x00, 0x40, 0x72, - 0x03, 0xe9, 0xc1, 0xfe, 0x83, 0x06, 0x56, 0x54, 0x64, 0x68, 0xfc, 0x00, 0x68, - 0x28, 0xff, 0xe8, 0x88, 0x04, 0x83, 0xc4, 0x04, 0x68, 0x80, 0x00, 0xe8, 0x59, - 0x04, 0x83, 0xc4, 0x02, 0xa2, 0x40, 0x7c, 0x6a, 0x01, 0x68, 0x80, 0x00, 0xe8, - 0x8f, 0xd9, 0x83, 0xc4, 0x04, 0xa2, 0x41, 0x7c, 0x6a, 0x03, 0x68, 0x80, 0x00, - 0xe8, 0x81, 0xd9, 0x83, 0xc4, 0x04, 0xa2, 0x43, 0x7c, 0x6a, 0x04, 0x68, 0x80, - 0x00, 0xe8, 0x73, 0xd9, 0x83, 0xc4, 0x04, 0xa2, 0x44, 0x7c, 0x6a, 0x05, 0x68, - 0x80, 0x00, 0xe8, 0x65, 0xd9, 0x83, 0xc4, 0x04, 0xa2, 0x45, 0x7c, 0x6a, 0x09, - 0x68, 0x80, 0x00, 0xe8, 0x57, 0xd9, 0x83, 0xc4, 0x04, 0xa2, 0x49, 0x7c, 0x6a, - 0x0a, 0x68, 0x80, 0x00, 0xe8, 0x49, 0xd9, 0x83, 0xc4, 0x04, 0xa2, 0x4a, 0x7c, - 0x6a, 0x0f, 0x68, 0x80, 0x00, 0xe8, 0x3b, 0xd9, 0x83, 0xc4, 0x04, 0xa2, 0x4f, - 0x7c, 0x68, 0xdc, 0x00, 0x68, 0x28, 0xff, 0xe8, 0x0e, 0x04, 0x83, 0xc4, 0x04, - 0x68, 0xfc, 0x00, 0x68, 0x28, 0xff, 0xe8, 0x02, 0x04, 0x83, 0xc4, 0x04, 0xbe, - 0x50, 0x7c, 0xeb, 0x3f, 0x90, 0xf6, 0x44, 0x01, 0x10, 0x74, 0x0b, 0xa1, 0x00, - 0x0e, 0x2b, 0x44, 0x02, 0x3d, 0x00, 0x40, 0x72, 0x19, 0x8b, 0x44, 0x24, 0xc1, - 0xe0, 0x02, 0x05, 0x03, 0x02, 0x50, 0xe8, 0xd2, 0xd8, 0x83, 0xc4, 0x02, 0x40, - 0x74, 0x06, 0x83, 0x7c, 0x3e, 0x14, 0x72, 0x10, 0xc7, 0x44, 0x3e, 0x00, 0x00, - 0x80, 0x4c, 0x01, 0x80, 0x56, 0xe8, 0x49, 0xee, 0x83, 0xc4, 0x02, 0x81, 0xc6, - 0xa8, 0x01, 0x39, 0x36, 0xa0, 0x7f, 0x77, 0xbc, 0xe9, 0xd1, 0xfd, 0x90, 0x15, - 0x00, 0x04, 0x20, 0x0a, 0x80, 0x0f, 0x00, 0x07, 0x7e, 0x0f, 0xc5, 0x07, 0x77, - 0x03, 0xd8, 0x05, 0x61, 0x01, 0xf9, 0x0b, 0x16, 0x10, 0x00, 0x11, 0x00, 0x0e, - 0x07, 0x05, 0x6b, 0x09, 0x0f, 0xff, 0x15, 0x01, 0x04, 0x20, 0x0a, 0x80, 0x0f, - 0x00, 0x07, 0x7e, 0x0f, 0xc5, 0x07, 0x77, 0x03, 0xd8, 0x05, 0x61, 0x01, 0xf9, - 0x0b, 0x16, 0x10, 0x00, 0x11, 0x00, 0x0e, 0x07, 0x05, 0x6b, 0x09, 0x0f, 0xff, - 0x15, 0x00, 0x12, 0x80, 0x13, 0x08, 0x04, 0x20, 0x0a, 0x80, 0x0f, 0x04, 0x07, - 0x7e, 0x0f, 0xc5, 0x07, 0x77, 0x03, 0xc8, 0x05, 0x61, 0x01, 0xf9, 0x0b, 0x08, - 0x0e, 0x04, 0x05, 0x6b, 0x09, 0x0f, 0xff, 0x15, 0x00, 0x12, 0x80, 0x13, 0x08, - 0x14, 0x08, 0x04, 0x20, 0x0a, 0x80, 0x0f, 0x04, 0x07, 0x7e, 0x0f, 0xc5, 0x07, - 0x77, 0x03, 0xc8, 0x05, 0x61, 0x01, 0xf9, 0x0b, 0x08, 0x0e, 0x04, 0x05, 0x6b, - 0x09, 0x0f, 0xff, 0x15, 0x00, 0x12, 0x02, 0x13, 0x02, 0x04, 0x20, 0x0a, 0xa0, - 0x0f, 0x04, 0x07, 0x7e, 0x0f, 0xc5, 0x07, 0x77, 0x03, 0xc8, 0x05, 0x61, 0x01, - 0xf9, 0x0b, 0x77, 0x0c, 0x0e, 0x0d, 0x00, 0x0e, 0x07, 0x0e, 0xe7, 0x0e, 0xa7, - 0x0e, 0x27, 0x05, 0x6b, 0x09, 0x0f, 0xff, 0x15, 0x00, 0x12, 0x02, 0x13, 0x02, - 0x04, 0x20, 0x0a, 0xe0, 0x0f, 0x04, 0x07, 0x7e, 0x0f, 0xc5, 0x07, 0x77, 0x03, - 0xc8, 0x05, 0x61, 0x01, 0xf9, 0x0b, 0x77, 0x0c, 0x06, 0x0d, 0x00, 0x0e, 0x07, - 0x0e, 0xc7, 0x0e, 0xa7, 0x0e, 0x27, 0x05, 0x6b, 0x09, 0x0f, 0xff, 0x00, 0x06, - 0x58, 0x1b, 0x20, 0x03, 0x14, 0x00, 0x3c, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x00, - 0x03, 0xa0, 0x0f, 0x58, 0x02, 0x1e, 0x00, 0x28, 0x00, 0x1e, 0x00, 0x3c, 0x00, - 0x80, 0x01, 0xd0, 0x07, 0xa4, 0x01, 0x28, 0x00, 0x1e, 0x00, 0x14, 0x00, 0x78, - 0x00, 0x00, 0x01, 0x08, 0x07, 0x7c, 0x01, 0x34, 0x00, 0x1e, 0x00, 0x14, 0x00, - 0xb4, 0x00, 0xc0, 0x00, 0xb0, 0x04, 0x54, 0x01, 0x40, 0x00, 0x19, 0x00, 0x14, - 0x00, 0xf0, 0x00, 0x60, 0x00, 0x58, 0x02, 0x2c, 0x01, 0x64, 0x00, 0x14, 0x00, - 0x14, 0x00, 0xe0, 0x01, 0x40, 0x00, 0xf4, 0x01, 0x2c, 0x01, 0x96, 0x00, 0x14, - 0x00, 0x14, 0x00, 0xd0, 0x02, 0x39, 0x00, 0xc2, 0x01, 0x2c, 0x01, 0xc8, 0x00, - 0x14, 0x00, 0x14, 0x00, 0x20, 0x03, 0x30, 0x00, 0x90, 0x01, 0x2c, 0x01, 0xfa, - 0x00, 0x14, 0x00, 0x14, 0x00, 0xc0, 0x03, 0x20, 0x00, 0x2c, 0x01, 0x2c, 0x01, - 0x2c, 0x01, 0x14, 0x00, 0x14, 0x00, 0xa0, 0x05, 0x10, 0x00, 0xc8, 0x00, 0x2c, - 0x01, 0x58, 0x02, 0x14, 0x00, 0x14, 0x00, 0x40, 0x0b, 0x08, 0x00, 0x64, 0x00, - 0xe1, 0x00, 0xe8, 0x03, 0x0e, 0x00, 0x14, 0x00, 0x80, 0x16, 0x06, 0x00, 0x64, - 0x00, 0xdc, 0x00, 0xb0, 0x04, 0x0c, 0x00, 0x14, 0x00, 0x00, 0x1e, 0x05, 0x00, - 0x64, 0x00, 0xc8, 0x00, 0x40, 0x06, 0x0c, 0x00, 0x14, 0x00, 0x00, 0x24, 0x04, - 0x00, 0x64, 0x00, 0xb4, 0x00, 0x40, 0x06, 0x0c, 0x00, 0x14, 0x00, 0x00, 0x2d, - 0x03, 0x00, 0x64, 0x00, 0xa0, 0x00, 0x40, 0x06, 0x0c, 0x00, 0x14, 0x00, 0x00, - 0x3c, 0x02, 0x00, 0x64, 0x00, 0xa0, 0x00, 0x40, 0x06, 0x0a, 0x00, 0x14, 0x00, - 0x00, 0x5a, 0x03, 0x00, 0x64, 0x00, 0xa0, 0x00, 0x40, 0x06, 0x0c, 0x00, 0x14, - 0x00, 0x00, 0x5a, 0x02, 0x00, 0x64, 0x00, 0xa0, 0x00, 0x40, 0x06, 0x0a, 0x00, - 0x14, 0x00, 0x00, 0x5a, 0x04, 0x00, 0x64, 0x00, 0xa0, 0x00, 0x40, 0x06, 0x0c, - 0x00, 0x14, 0x00, 0x00, 0x5a, 0x03, 0x00, 0x64, 0x00, 0xa0, 0x00, 0x40, 0x06, - 0x0c, 0x00, 0x14, 0x00, 0x00, 0x78, 0x02, 0x00, 0x64, 0x00, 0xa0, 0x00, 0x40, - 0x06, 0x0c, 0x00, 0x14, 0x00, 0x00, 0xb4, 0xb4, 0x2a, 0x0e, 0x2c, 0x3a, 0x2b, - 0x1c, 0x2c, 0x65, 0x2b, 0x2a, 0x2c, 0xb4, 0x2a, 0x90, 0x2b, 0xb4, 0x2a, 0x9e, - 0x2b, 0xb4, 0x2a, 0xac, 0x2b, 0xb4, 0x2a, 0xc8, 0x2b, 0xb4, 0x2a, 0xd6, 0x2b, - 0xb4, 0x2a, 0xe4, 0x2b, 0xb4, 0x2a, 0x00, 0x2c, 0xb4, 0x2a, 0x0e, 0x2c, 0xb4, - 0x2a, 0x1c, 0x2c, 0xb4, 0x2a, 0x2a, 0x2c, 0xb4, 0x2a, 0x54, 0x2c, 0xb4, 0x2a, - 0x62, 0x2c, 0xf6, 0x2a, 0x90, 0x2b, 0xf6, 0x2a, 0x9e, 0x2b, 0xf6, 0x2a, 0xac, - 0x2b, 0xf6, 0x2a, 0xc8, 0x2b, 0xf6, 0x2a, 0xd6, 0x2b, 0xf6, 0x2a, 0xe4, 0x2b, - 0xf6, 0x2a, 0x00, 0x2c, 0xf6, 0x2a, 0x0e, 0x2c, 0xf6, 0x2a, 0x1c, 0x2c, 0xf6, - 0x2a, 0x2a, 0x2c, 0xf6, 0x2a, 0x54, 0x2c, 0xf6, 0x2a, 0x62, 0x2c, 0xb4, 0x2a, - 0x70, 0x2c, 0xb4, 0x2a, 0x7e, 0x2c, 0xb4, 0x2a, 0x8c, 0x2c, 0xf6, 0x2a, 0x70, - 0x2c, 0xf6, 0x2a, 0x7e, 0x2c, 0xf6, 0x2a, 0x8c, 0x2c, 0xf6, 0x2a, 0xba, 0x2b, - 0xb4, 0x2a, 0x0e, 0x2c, 0x17, 0x2b, 0x90, 0x2b, 0x17, 0x2b, 0x9e, 0x2b, 0x17, - 0x2b, 0xac, 0x2b, 0x17, 0x2b, 0xba, 0x2b, 0x17, 0x2b, 0xc8, 0x2b, 0x17, 0x2b, - 0xd6, 0x2b, 0x17, 0x2b, 0xe4, 0x2b, 0x17, 0x2b, 0xf2, 0x2b, 0x17, 0x2b, 0x00, - 0x2c, 0xb4, 0x2a, 0x0e, 0x2c, 0xb4, 0x2a, 0x0e, 0x2c, 0xb4, 0x2a, 0x0e, 0x2c, - 0xb4, 0x2a, 0x0e, 0x2c, 0xb4, 0x2a, 0x0e, 0x2c, 0xb4, 0x2a, 0x0e, 0x2c, 0xb4, - 0x2a, 0x0e, 0x2c, 0xb4, 0x2a, 0x0e, 0x2c, 0xb4, 0x2a, 0x0e, 0x2c, 0xb4, 0x2a, - 0x0e, 0x2c, 0xb4, 0x2a, 0x0e, 0x2c, 0xb4, 0x2a, 0x0e, 0x2c, 0xb4, 0x2a, 0x0e, - 0x2c, 0xb4, 0x2a, 0x0e, 0x2c, 0xb4, 0x2a, 0x0e, 0x2c, 0xb4, 0x2a, 0x0e, 0x2c, - 0xb4, 0x2a, 0x0e, 0x2c, 0xb4, 0x2a, 0x0e, 0x2c, 0xb4, 0x2a, 0x0e, 0x2c, 0xb4, - 0x2a, 0x0e, 0x2c, 0xb4, 0x2a, 0x0e, 0x2c, 0xb4, 0x2a, 0x0e, 0x2c, 0xb4, 0x2a, - 0x0e, 0x2c, 0xb4, 0x2a, 0x0e, 0x2c, 0xb4, 0x2a, 0x0e, 0x2c, 0xb4, 0x2a, 0x0e, - 0x2c, 0xd5, 0x2a, 0x9a, 0x2c, 0xd5, 0x2a, 0xa8, 0x2c, 0xd5, 0x2a, 0xb6, 0x2c, - 0xb4, 0x2a, 0x0e, 0x2c, 0xb4, 0x2a, 0x0e, 0x2c, 0xb8, 0xc4, 0x2c, 0xc3, 0x8b, - 0xcd, 0x8b, 0xec, 0x8b, 0x46, 0x02, 0xf7, 0x66, 0x04, 0x8b, 0x5e, 0x08, 0x03, - 0x07, 0x83, 0xd2, 0x00, 0xf7, 0x76, 0x06, 0x89, 0x17, 0x8b, 0xe9, 0xc3, 0x55, - 0x8b, 0xec, 0x56, 0x57, 0x8c, 0xd8, 0x8e, 0xc0, 0x8b, 0x7e, 0x04, 0x8b, 0x76, - 0x06, 0x8b, 0x4e, 0x08, 0xf3, 0xa4, 0x5f, 0x5e, 0x5d, 0xc3, 0x8b, 0xcd, 0x8b, - 0xec, 0xb8, 0x45, 0x31, 0xf7, 0x26, 0x4a, 0x54, 0x05, 0x1f, 0x28, 0xa3, 0x4a, - 0x54, 0xf7, 0x66, 0x02, 0x8b, 0xc2, 0x8b, 0xe9, 0xc3, 0x8b, 0xcd, 0x8b, 0xec, - 0x8b, 0x56, 0x02, 0xec, 0x32, 0xe4, 0x8b, 0xe9, 0xc3, 0x8b, 0xcd, 0x8b, 0xec, - 0x8b, 0x56, 0x02, 0x8a, 0x46, 0x04, 0xee, 0x8b, 0xe9, 0xc3, 0x8b, 0xcd, 0x8b, - 0xec, 0x8b, 0x56, 0x02, 0xed, 0x8b, 0xe9, 0xc3, 0x8b, 0xcd, 0x8b, 0xec, 0x8b, - 0x56, 0x02, 0x8b, 0x46, 0x04, 0xef, 0x8b, 0xe9, 0xc3, 0x40, 0x28, 0x23, 0x29, - 0x24, 0x49, 0x64, 0x3a, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, - 0x69, 0x6e, 0x63, 0x2c, 0x76, 0x20, 0x39, 0x2e, 0x35, 0x20, 0x31, 0x39, 0x39, - 0x36, 0x2f, 0x31, 0x30, 0x2f, 0x30, 0x37, 0x20, 0x32, 0x31, 0x3a, 0x33, 0x38, - 0x3a, 0x32, 0x39, 0x20, 0x74, 0x6f, 0x6e, 0x69, 0x20, 0x45, 0x78, 0x70, 0x20, - 0x24, 0x09, 0x00, 0x40, 0x28, 0x23, 0x29, 0x24, 0x49, 0x64, 0x3a, 0x20, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x68, 0x2c, 0x76, 0x20, 0x38, - 0x2e, 0x31, 0x20, 0x31, 0x39, 0x39, 0x32, 0x2f, 0x30, 0x31, 0x2f, 0x32, 0x31, - 0x20, 0x31, 0x31, 0x3a, 0x33, 0x37, 0x3a, 0x35, 0x34, 0x20, 0x67, 0x65, 0x6e, - 0x65, 0x20, 0x45, 0x78, 0x70, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x24, - 0x49, 0x64, 0x3a, 0x20, 0x68, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x69, 0x74, 0x2e, - 0x61, 0x73, 0x6d, 0x2c, 0x76, 0x20, 0x39, 0x2e, 0x33, 0x20, 0x31, 0x39, 0x39, - 0x34, 0x2f, 0x30, 0x32, 0x2f, 0x32, 0x38, 0x20, 0x32, 0x32, 0x3a, 0x35, 0x32, - 0x3a, 0x35, 0x37, 0x20, 0x6d, 0x69, 0x6c, 0x74, 0x20, 0x45, 0x78, 0x70, 0x20, - 0x24, 0x09, 0x00, 0x40, 0x28, 0x23, 0x29, 0x24, 0x49, 0x64, 0x3a, 0x20, 0x68, - 0x6f, 0x73, 0x74, 0x63, 0x6f, 0x6d, 0x6d, 0x2e, 0x61, 0x73, 0x6d, 0x2c, 0x76, - 0x20, 0x39, 0x2e, 0x31, 0x20, 0x31, 0x39, 0x39, 0x33, 0x2f, 0x30, 0x32, 0x2f, - 0x32, 0x32, 0x20, 0x30, 0x39, 0x3a, 0x35, 0x36, 0x3a, 0x32, 0x33, 0x20, 0x6d, - 0x69, 0x6c, 0x74, 0x20, 0x45, 0x78, 0x70, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, - 0x29, 0x24, 0x49, 0x64, 0x3a, 0x20, 0x68, 0x6f, 0x73, 0x74, 0x66, 0x65, 0x70, - 0x2e, 0x61, 0x73, 0x6d, 0x2c, 0x76, 0x20, 0x39, 0x2e, 0x31, 0x30, 0x20, 0x31, - 0x39, 0x39, 0x37, 0x2f, 0x30, 0x32, 0x2f, 0x32, 0x30, 0x20, 0x32, 0x30, 0x3a, - 0x35, 0x30, 0x3a, 0x34, 0x32, 0x20, 0x74, 0x6f, 0x6e, 0x69, 0x20, 0x45, 0x78, - 0x70, 0x20, 0x24, 0x09, 0x00, 0x40, 0x28, 0x23, 0x29, 0x24, 0x49, 0x64, 0x3a, - 0x20, 0x68, 0x6f, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x2e, 0x63, 0x2c, 0x76, - 0x20, 0x39, 0x2e, 0x37, 0x20, 0x31, 0x39, 0x39, 0x34, 0x2f, 0x30, 0x33, 0x2f, - 0x30, 0x32, 0x20, 0x32, 0x31, 0x3a, 0x35, 0x33, 0x3a, 0x34, 0x38, 0x20, 0x6d, - 0x69, 0x6c, 0x74, 0x20, 0x45, 0x78, 0x70, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, - 0x29, 0x24, 0x49, 0x64, 0x3a, 0x20, 0x73, 0x79, 0x6e, 0x63, 0x2e, 0x61, 0x73, - 0x6d, 0x2c, 0x76, 0x20, 0x38, 0x2e, 0x35, 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, - 0x30, 0x32, 0x2f, 0x32, 0x38, 0x20, 0x30, 0x30, 0x3a, 0x30, 0x30, 0x3a, 0x35, - 0x34, 0x20, 0x63, 0x68, 0x72, 0x69, 0x73, 0x73, 0x20, 0x45, 0x78, 0x70, 0x20, - 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; diff --git a/sys/dev/digi/CX_PCI.bios.h b/sys/dev/digi/CX_PCI.bios.h deleted file mode 100644 index c4feb28566ff..000000000000 --- a/sys/dev/digi/CX_PCI.bios.h +++ /dev/null @@ -1,2296 +0,0 @@ -/*- - * Copyright (c) 2001 Brian Somers <brian@Awfulhak.org> - * based on work by Slawa Olhovchenkov - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - */ - -static const u_char CX_PCI_bios[] = { - 0x4f, 0x53, 0x73, 0xee, 0x53, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa1, 0x43, - 0xa4, 0x18, 0x00, 0x00, 0x00, 0x00, 0x40, 0x28, 0x23, 0x29, 0x63, 0x78, 0x70, - 0x62, 0x69, 0x6f, 0x73, 0x2e, 0x62, 0x69, 0x6e, 0x20, 0x20, 0x20, 0x20, 0x32, - 0x2e, 0x33, 0x2e, 0x32, 0x20, 0x20, 0x30, 0x36, 0x2f, 0x30, 0x32, 0x2f, 0x39, - 0x37, 0x00, 0x40, 0x28, 0x23, 0x29, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, - 0x68, 0x74, 0x20, 0x28, 0x43, 0x29, 0x20, 0x31, 0x39, 0x39, 0x32, 0x2c, 0x20, - 0x44, 0x49, 0x47, 0x49, 0x20, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2e, 0x20, 0x41, 0x6c, 0x6c, 0x20, 0x52, 0x69, - 0x67, 0x68, 0x74, 0x73, 0x20, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, - 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x43, 0x50, 0x55, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x6e, 0x27, 0x74, 0x20, - 0x77, 0x6f, 0x72, 0x6b, 0x5d, 0x00, 0x1e, 0x24, 0x00, 0xa0, 0x01, 0x3c, 0x10, - 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0x00, 0xa0, 0x04, 0x3c, 0x80, 0x01, - 0x84, 0x34, 0x0c, 0x00, 0x88, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, - 0x35, 0x0c, 0x00, 0x88, 0xac, 0x03, 0x80, 0x04, 0x3c, 0x90, 0x00, 0x84, 0x24, - 0xff, 0x03, 0x05, 0x24, 0x24, 0x20, 0x85, 0x00, 0x00, 0xa0, 0x05, 0x3c, 0x00, - 0x10, 0xa5, 0x34, 0x21, 0x20, 0x85, 0x00, 0x6d, 0x00, 0x05, 0x24, 0x10, 0x00, - 0x08, 0x24, 0x00, 0xa0, 0x09, 0x3c, 0x00, 0x02, 0x29, 0x35, 0x00, 0x00, 0x8a, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, 0x11, 0x00, 0x00, 0x2a, 0xa1, - 0x01, 0x00, 0x84, 0x24, 0x01, 0x00, 0x29, 0x25, 0xff, 0xff, 0x08, 0x25, 0xf8, - 0xff, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x01, 0x3c, 0x10, 0x02, - 0x25, 0xac, 0x00, 0xa0, 0x01, 0x3c, 0x14, 0x02, 0x3f, 0xac, 0x00, 0xa0, 0x01, - 0x3c, 0x18, 0x02, 0x3d, 0xac, 0x01, 0x00, 0x08, 0x24, 0x00, 0xa0, 0x01, 0x3c, - 0x10, 0x0c, 0x28, 0xac, 0x00, 0xa0, 0x1d, 0x3c, 0x00, 0x04, 0xbd, 0x37, 0x68, - 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x10, 0x00, 0x00, - 0x00, 0x00, 0xb3, 0x00, 0x1e, 0x24, 0x00, 0xa0, 0x01, 0x3c, 0x10, 0x00, 0x3e, - 0xac, 0x00, 0x00, 0x1e, 0x24, 0x00, 0x10, 0x08, 0x3c, 0x00, 0x60, 0x88, 0x40, - 0x00, 0xa0, 0x04, 0x3c, 0x00, 0xa0, 0x05, 0x3c, 0x00, 0x10, 0xa5, 0x34, 0x00, - 0x00, 0x80, 0xac, 0x04, 0x00, 0x84, 0x24, 0xfd, 0xff, 0x85, 0x14, 0x00, 0x00, - 0x00, 0x00, 0xc8, 0x00, 0x1e, 0x24, 0x00, 0xa0, 0x01, 0x3c, 0x10, 0x00, 0x3e, - 0xac, 0x00, 0x00, 0x1e, 0x24, 0xff, 0xff, 0x08, 0x24, 0xb5, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x25, 0xb2, 0x00, 0x00, 0x15, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x08, 0x24, 0x21, 0x08, 0x00, 0x01, 0xae, 0x00, - 0x28, 0x14, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x21, 0x24, 0xab, 0x00, 0x20, - 0x14, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x24, 0xa8, 0x00, 0x48, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0xa5, 0x00, 0x40, 0x14, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x24, 0xa2, 0x00, 0x68, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x63, 0x24, 0x9f, 0x00, 0x60, 0x14, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x04, 0x24, 0x9c, 0x00, 0x88, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x84, 0x24, 0x99, 0x00, 0x80, 0x14, 0x00, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x05, 0x24, 0x96, 0x00, 0xa8, 0x14, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0xa5, 0x24, 0x93, 0x00, 0xa0, 0x14, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x06, - 0x24, 0x90, 0x00, 0xc8, 0x14, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xc6, 0x24, - 0x8d, 0x00, 0xc0, 0x14, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x07, 0x24, 0x8a, - 0x00, 0xe8, 0x14, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xe7, 0x24, 0x87, 0x00, - 0xe0, 0x14, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x09, 0x24, 0x84, 0x00, 0x28, - 0x15, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x29, 0x25, 0x81, 0x00, 0x20, 0x15, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0a, 0x24, 0x7e, 0x00, 0x48, 0x15, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x4a, 0x25, 0x7b, 0x00, 0x40, 0x15, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x0b, 0x24, 0x78, 0x00, 0x68, 0x15, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x6b, 0x25, 0x75, 0x00, 0x60, 0x15, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x0c, 0x24, 0x72, 0x00, 0x88, 0x15, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x8c, 0x25, 0x6f, 0x00, 0x80, 0x15, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x0d, 0x24, 0x6c, 0x00, 0xa8, 0x15, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xad, - 0x25, 0x69, 0x00, 0xa0, 0x15, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0e, 0x24, - 0x66, 0x00, 0xc8, 0x15, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xce, 0x25, 0x63, - 0x00, 0xc0, 0x15, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0f, 0x24, 0x60, 0x00, - 0xe8, 0x15, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xef, 0x25, 0x5d, 0x00, 0xe0, - 0x15, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x18, 0x24, 0x5a, 0x00, 0x08, 0x17, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x18, 0x27, 0x57, 0x00, 0x00, 0x17, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x10, 0x24, 0x54, 0x00, 0x08, 0x16, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x10, 0x26, 0x51, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x11, 0x24, 0x4e, 0x00, 0x28, 0x16, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x31, 0x26, 0x4b, 0x00, 0x20, 0x16, 0x00, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x12, 0x24, 0x48, 0x00, 0x48, 0x16, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x52, 0x26, 0x45, 0x00, 0x40, 0x16, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x13, - 0x24, 0x42, 0x00, 0x68, 0x16, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x73, 0x26, - 0x3f, 0x00, 0x60, 0x16, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x14, 0x24, 0x3c, - 0x00, 0x88, 0x16, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x94, 0x26, 0x39, 0x00, - 0x80, 0x16, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x15, 0x24, 0x36, 0x00, 0xa8, - 0x16, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xb5, 0x26, 0x33, 0x00, 0xa0, 0x16, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x16, 0x24, 0x30, 0x00, 0xc8, 0x16, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0xd6, 0x26, 0x2d, 0x00, 0xc0, 0x16, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x17, 0x24, 0x2a, 0x00, 0xe8, 0x16, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0xf7, 0x26, 0x27, 0x00, 0xe0, 0x16, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x1a, 0x24, 0x24, 0x00, 0x48, 0x17, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x5a, 0x27, 0x21, 0x00, 0x40, 0x17, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x1b, 0x24, 0x1e, 0x00, 0x68, 0x17, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x7b, - 0x27, 0x1b, 0x00, 0x60, 0x17, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1c, 0x24, - 0x18, 0x00, 0x88, 0x17, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x9c, 0x27, 0x15, - 0x00, 0x80, 0x17, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1d, 0x24, 0x12, 0x00, - 0xa8, 0x17, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xbd, 0x27, 0x0f, 0x00, 0xa0, - 0x17, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1e, 0x24, 0x0c, 0x00, 0xc8, 0x17, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xde, 0x27, 0x09, 0x00, 0xc0, 0x17, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x1f, 0x24, 0x06, 0x00, 0xe8, 0x17, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0xff, 0x27, 0x03, 0x00, 0xe0, 0x17, 0x00, 0x00, 0x00, - 0x00, 0x0e, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6b, 0x01, 0x1e, 0x24, - 0x00, 0xa0, 0x01, 0x3c, 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0x03, - 0x80, 0x04, 0x3c, 0xa0, 0x00, 0x84, 0x24, 0xff, 0x03, 0x05, 0x24, 0x24, 0x20, - 0x85, 0x00, 0x00, 0xa0, 0x05, 0x3c, 0x00, 0x10, 0xa5, 0x34, 0x21, 0x20, 0x85, - 0x00, 0x08, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7d, 0x01, 0x1e, 0x24, - 0x00, 0xa0, 0x01, 0x3c, 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0x04, - 0x80, 0x1c, 0x3c, 0x80, 0xdf, 0x9c, 0x27, 0x81, 0x01, 0x1e, 0x24, 0x00, 0xa0, - 0x01, 0x3c, 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0x01, 0x00, 0x11, - 0x04, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x01, 0x1e, 0x24, 0x00, 0xa0, 0x01, 0x3c, - 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0x03, 0x80, 0x05, 0x3c, 0x00, - 0x00, 0xa5, 0x24, 0x03, 0x80, 0x06, 0x3c, 0x10, 0x6b, 0xc6, 0x24, 0x03, 0x80, - 0x04, 0x3c, 0xd8, 0x04, 0x84, 0x24, 0x23, 0x20, 0xe4, 0x03, 0x21, 0x20, 0x86, - 0x00, 0xfc, 0xff, 0x84, 0x24, 0xfc, 0xff, 0xc6, 0x24, 0x00, 0x00, 0x88, 0x8c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0xac, 0x2b, 0x08, 0xa6, 0x00, 0xf9, - 0xff, 0x20, 0x14, 0x00, 0x00, 0x00, 0x00, 0xac, 0x01, 0x1e, 0x24, 0x00, 0xa0, - 0x01, 0x3c, 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0xb7, 0x01, 0x1e, - 0x24, 0x00, 0xa0, 0x01, 0x3c, 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, - 0x03, 0x80, 0x1f, 0x3c, 0x68, 0x05, 0xff, 0x27, 0x03, 0x80, 0x04, 0x3c, 0x40, - 0x06, 0x84, 0x24, 0x00, 0xa0, 0x01, 0x3c, 0x25, 0x20, 0x81, 0x00, 0x08, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x01, 0x1e, 0x24, 0x00, 0xa0, 0x01, - 0x3c, 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0x00, 0xa0, 0x08, 0x3c, - 0x80, 0x00, 0x08, 0x35, 0x03, 0x80, 0x09, 0x3c, 0xc0, 0x05, 0x29, 0x25, 0x03, - 0x80, 0x0a, 0x3c, 0x10, 0x06, 0x4a, 0x25, 0x03, 0xa0, 0x0b, 0x3c, 0x25, 0x48, - 0x2b, 0x01, 0x25, 0x50, 0x4b, 0x01, 0x00, 0x00, 0x2b, 0x8d, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0b, 0xad, 0x04, 0x00, 0x08, 0x25, 0x04, 0x00, 0x29, 0x25, - 0xfa, 0xff, 0x2a, 0x15, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xa0, 0x1a, 0x3c, 0x80, 0x01, 0x5a, 0x37, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x40, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x1a, - 0x40, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1b, 0x3c, 0xfe, 0x00, 0x7b, 0x37, - 0x00, 0x00, 0x00, 0x00, 0x24, 0xd0, 0x5b, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x60, 0x9a, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x1a, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x10, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x09, 0x02, 0x1e, 0x24, 0x00, 0xa0, 0x01, 0x3c, - 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0x03, 0x80, 0x1d, 0x3c, 0xf8, - 0x6e, 0xbd, 0x27, 0x92, 0xc3, 0x00, 0x0c, 0x00, 0x00, 0x1e, 0x24, 0x55, 0xc0, - 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x15, 0x00, 0x1e, 0x24, 0x00, 0xa0, 0x01, 0x3c, 0x10, 0x00, 0x3e, 0xac, - 0x00, 0x00, 0x1e, 0x24, 0x03, 0x80, 0x08, 0x3c, 0x68, 0x06, 0x08, 0x25, 0x00, - 0xa0, 0x01, 0x3c, 0x25, 0x40, 0x01, 0x01, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x60, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x05, - 0x3c, 0x00, 0x60, 0x85, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xa0, 0x09, 0x3c, 0x01, 0x00, 0x01, 0x3c, 0x23, 0x40, 0x21, 0x01, 0x03, - 0x00, 0x00, 0xa1, 0x04, 0x00, 0x08, 0x25, 0xfd, 0xff, 0x09, 0x15, 0x00, 0x00, - 0x00, 0x00, 0x03, 0x00, 0x05, 0x3c, 0x00, 0x60, 0x85, 0x40, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x09, 0x3c, 0x01, 0x00, 0x01, 0x3c, - 0x23, 0x40, 0x21, 0x01, 0x03, 0x00, 0x00, 0xa1, 0x04, 0x00, 0x08, 0x25, 0xfd, - 0xff, 0x09, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x60, 0x84, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x10, 0x04, 0x40, 0xff, 0xff, 0x08, 0x3c, 0xff, 0x3f, 0x08, 0x35, - 0x24, 0x20, 0x88, 0x00, 0x00, 0x10, 0x84, 0x40, 0x03, 0x80, 0x08, 0x3c, 0x10, - 0x6b, 0x08, 0x25, 0x03, 0x80, 0x09, 0x3c, 0x20, 0x6f, 0x29, 0x25, 0xfc, 0xff, - 0x01, 0x24, 0x24, 0x48, 0x21, 0x01, 0xfc, 0xff, 0x01, 0x24, 0x24, 0x40, 0x01, - 0x01, 0x00, 0x00, 0x00, 0xad, 0x04, 0x00, 0x08, 0x25, 0xfd, 0xff, 0x09, 0x15, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x60, 0x02, 0x40, 0xff, 0xff, 0x01, 0x3c, 0xfe, 0x00, 0x21, 0x34, 0x25, 0x20, - 0x81, 0x00, 0x24, 0x40, 0x44, 0x00, 0x00, 0x60, 0x88, 0x40, 0x01, 0xff, 0x42, - 0x30, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x02, 0x40, - 0x00, 0x00, 0x00, 0x00, 0x26, 0x40, 0x44, 0x00, 0x01, 0xff, 0x08, 0x31, 0x26, - 0x40, 0x02, 0x01, 0x00, 0x60, 0x88, 0x40, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x60, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, - 0x24, 0x24, 0x48, 0x01, 0x01, 0x00, 0x60, 0x89, 0x40, 0x00, 0x68, 0x02, 0x40, - 0x00, 0x03, 0x84, 0x30, 0x25, 0x18, 0x44, 0x00, 0x00, 0x68, 0x83, 0x40, 0x00, - 0x60, 0x88, 0x40, 0x24, 0x10, 0x44, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x60, 0x08, 0x40, 0x00, 0x03, 0x84, 0x30, 0xfe, 0xff, 0x01, - 0x24, 0x24, 0x48, 0x01, 0x01, 0x00, 0x60, 0x89, 0x40, 0x00, 0x68, 0x02, 0x40, - 0x27, 0x18, 0x80, 0x00, 0x24, 0x18, 0x62, 0x00, 0x00, 0x68, 0x83, 0x40, 0x00, - 0x60, 0x88, 0x40, 0x24, 0x10, 0x44, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x10, 0x08, 0x3c, 0x00, 0x60, 0x88, 0x40, 0xc0, 0xbf, 0x08, - 0x3c, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x08, 0x40, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x09, 0x3c, 0xfe, 0x00, 0x29, 0x35, 0x00, - 0x00, 0x00, 0x00, 0x24, 0x40, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, 0x25, 0x40, - 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x88, 0x40, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xa8, 0xff, 0xbd, 0x27, 0x50, 0x00, 0xbf, 0xaf, 0x4c, 0x00, 0xb1, 0xaf, 0x48, - 0x00, 0xb0, 0xaf, 0x00, 0xa0, 0x11, 0x3c, 0x00, 0x80, 0x84, 0x27, 0xa4, 0xd4, - 0x00, 0x0c, 0x80, 0x01, 0x31, 0x36, 0x00, 0xa0, 0x01, 0x3c, 0x04, 0x01, 0x22, - 0xac, 0x01, 0x01, 0x02, 0x24, 0x24, 0x00, 0x22, 0xae, 0x0c, 0x00, 0x20, 0xae, - 0x20, 0x00, 0x05, 0x3c, 0x21, 0x30, 0x00, 0x00, 0x18, 0x00, 0xa7, 0x27, 0x02, - 0x00, 0x08, 0x3c, 0x80, 0x18, 0x06, 0x00, 0x21, 0x18, 0x67, 0x00, 0x42, 0x20, - 0x05, 0x00, 0x00, 0xa3, 0x02, 0x3c, 0x21, 0x10, 0x44, 0x00, 0xf8, 0xff, 0x42, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0xac, 0x00, 0xa3, 0x02, 0x3c, - 0x21, 0x10, 0x44, 0x00, 0xfc, 0xff, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x18, - 0x00, 0x62, 0xac, 0x21, 0x28, 0x80, 0x00, 0x2b, 0x10, 0x05, 0x01, 0xf0, 0xff, - 0x40, 0x14, 0x01, 0x00, 0xc6, 0x24, 0x20, 0x00, 0x05, 0x3c, 0x21, 0x30, 0x00, - 0x00, 0x23, 0x01, 0x04, 0x3c, 0x67, 0x45, 0x84, 0x34, 0xdc, 0xfe, 0x03, 0x3c, - 0x98, 0xba, 0x63, 0x34, 0xf0, 0xf0, 0x09, 0x3c, 0xf0, 0xf0, 0x29, 0x35, 0x0f, - 0x0f, 0x08, 0x3c, 0x0f, 0x0f, 0x08, 0x35, 0x02, 0x00, 0x07, 0x3c, 0x00, 0xa3, - 0x01, 0x3c, 0x21, 0x08, 0x25, 0x00, 0xf8, 0xff, 0x24, 0xac, 0x00, 0xa3, 0x01, - 0x3c, 0x21, 0x08, 0x25, 0x00, 0xfc, 0xff, 0x23, 0xac, 0x42, 0x10, 0x05, 0x00, - 0x00, 0xa3, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0xf8, 0xff, 0x29, 0xac, 0x00, - 0xa3, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0xfc, 0xff, 0x28, 0xac, 0x00, 0xa3, - 0x02, 0x3c, 0x21, 0x10, 0x45, 0x00, 0xf8, 0xff, 0x42, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x07, 0x00, 0x44, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x02, 0x3c, - 0x21, 0x10, 0x45, 0x00, 0xfc, 0xff, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x05, - 0x00, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0x42, 0x28, 0x05, 0x00, 0x2b, 0x10, - 0xe5, 0x00, 0xe4, 0xff, 0x40, 0x14, 0x01, 0x00, 0xc6, 0x24, 0x42, 0x20, 0x05, - 0x00, 0x80, 0x10, 0x06, 0x00, 0x18, 0x00, 0xa3, 0x27, 0x21, 0x10, 0x43, 0x00, - 0x00, 0x00, 0x43, 0x8c, 0x00, 0xa3, 0x01, 0x3c, 0x21, 0x08, 0x24, 0x00, 0xf8, - 0xff, 0x23, 0xac, 0x18, 0x00, 0x42, 0x8c, 0x00, 0xa3, 0x01, 0x3c, 0x21, 0x08, - 0x24, 0x00, 0xfc, 0xff, 0x22, 0xac, 0x10, 0x00, 0x25, 0xae, 0x08, 0x80, 0x84, - 0x27, 0xa4, 0xd4, 0x00, 0x0c, 0x00, 0xa0, 0x10, 0x3c, 0x00, 0xa0, 0x01, 0x3c, - 0x04, 0x01, 0x22, 0xac, 0x10, 0x80, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x80, - 0x01, 0x10, 0x36, 0x24, 0x80, 0x84, 0x27, 0x10, 0x00, 0x05, 0x8e, 0x2e, 0xc9, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x38, 0x80, 0x84, 0x27, 0x2e, 0xc9, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x50, 0x80, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x04, 0x3c, 0x00, 0x00, 0x84, 0x24, 0x03, - 0x80, 0x05, 0x3c, 0x84, 0xc7, 0x00, 0x0c, 0x10, 0x6b, 0xa5, 0x24, 0x20, 0x00, - 0x02, 0xae, 0x58, 0x80, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x20, 0x00, 0x03, 0x8e, 0xff, 0xff, 0x02, 0x24, 0x0b, 0x00, 0x62, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x42, 0x34, 0x0c, 0x00, 0x02, 0xae, 0x70, 0x80, 0x84, 0x27, 0x20, 0x00, - 0x05, 0x8e, 0x2e, 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xc2, 0x00, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x50, 0x80, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0x8c, 0x80, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x90, 0x80, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x02, 0x24, 0x10, 0x00, 0xa2, 0xaf, 0x00, 0xa0, 0x04, - 0x3c, 0x00, 0x10, 0x84, 0x34, 0x02, 0xa0, 0x05, 0x3c, 0xf0, 0xff, 0xa5, 0x34, - 0x01, 0x00, 0x06, 0x24, 0x4a, 0xcc, 0x00, 0x0c, 0x21, 0x38, 0x00, 0x00, 0x06, - 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x22, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x08, 0x00, 0x42, 0x34, 0xa3, 0xc2, 0x00, 0x08, 0x0c, 0x00, 0x22, - 0xae, 0x38, 0xc7, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x9c, 0x80, 0x84, 0x27, - 0x2e, 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x02, 0x3c, 0x80, - 0x01, 0x42, 0x34, 0x10, 0x00, 0x45, 0x8c, 0xff, 0xff, 0x02, 0x3c, 0x10, 0x00, - 0x42, 0x34, 0x21, 0x28, 0xa2, 0x00, 0x00, 0xa0, 0x03, 0x3c, 0xff, 0x1f, 0x02, - 0x3c, 0xff, 0xff, 0x42, 0x34, 0x24, 0x28, 0xa2, 0x00, 0x01, 0x00, 0x02, 0x24, - 0x10, 0x00, 0xa2, 0xaf, 0x05, 0xa0, 0x04, 0x3c, 0x25, 0x28, 0xa3, 0x00, 0x01, - 0x00, 0x06, 0x24, 0x4a, 0xcc, 0x00, 0x0c, 0x21, 0x38, 0x00, 0x00, 0x06, 0x00, - 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x00, 0x42, 0x34, 0xc0, 0xc2, 0x00, 0x08, 0x0c, 0x00, 0x22, 0xae, - 0x38, 0xc7, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0xa4, 0x80, 0x84, 0x27, 0x2e, - 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xa0, 0xaf, 0x00, 0xa0, - 0x04, 0x3c, 0x00, 0x10, 0x84, 0x34, 0x00, 0xa0, 0x05, 0x3c, 0x00, 0x20, 0xa5, - 0x34, 0x01, 0x00, 0x06, 0x24, 0x4a, 0xcc, 0x00, 0x0c, 0x21, 0x38, 0x00, 0x00, - 0x07, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x22, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x00, 0x42, 0x34, 0x0c, 0x00, 0x22, 0xae, 0xd6, 0xc2, - 0x00, 0x08, 0x00, 0xa0, 0x02, 0x3c, 0x38, 0xc7, 0x00, 0x0c, 0x0a, 0x00, 0x04, - 0x24, 0x00, 0xa0, 0x02, 0x3c, 0x80, 0x01, 0x42, 0x34, 0x49, 0x00, 0x42, 0x90, - 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0xb8, - 0x80, 0x84, 0x27, 0xa4, 0xd4, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, - 0x01, 0x3c, 0x04, 0x01, 0x22, 0xac, 0x79, 0xca, 0x00, 0x0c, 0x21, 0x20, 0x00, - 0x00, 0x07, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x22, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x42, 0x34, 0x0c, 0x00, 0x22, 0xae, 0xed, - 0xc2, 0x00, 0x08, 0x00, 0xa0, 0x02, 0x3c, 0x38, 0xc7, 0x00, 0x0c, 0x0a, 0x00, - 0x04, 0x24, 0x00, 0xa0, 0x02, 0x3c, 0x80, 0x01, 0x42, 0x34, 0x49, 0x00, 0x42, - 0x90, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, - 0xc0, 0x80, 0x84, 0x27, 0xa4, 0xd4, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xa0, 0x01, 0x3c, 0x04, 0x01, 0x22, 0xac, 0x10, 0x00, 0xa0, 0xaf, 0x01, 0x00, - 0x02, 0x24, 0x14, 0x00, 0xa2, 0xaf, 0x21, 0x20, 0x00, 0x00, 0xff, 0xff, 0x05, - 0x24, 0x00, 0x01, 0x06, 0x24, 0xb5, 0xd0, 0x00, 0x0c, 0xff, 0xff, 0x07, 0x24, - 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x22, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x10, 0x00, 0x42, 0x34, 0x08, 0xc3, 0x00, 0x08, 0x0c, 0x00, - 0x22, 0xae, 0x38, 0xc7, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0xc8, 0x80, 0x84, - 0x27, 0xa4, 0xd4, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x01, 0x3c, - 0x04, 0x01, 0x22, 0xac, 0x50, 0x00, 0xbf, 0x8f, 0x4c, 0x00, 0xb1, 0x8f, 0x48, - 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x58, 0x00, 0xbd, 0x27, 0xe8, 0xff, - 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0xd0, 0x80, 0x84, 0x27, 0x3a, 0xc0, 0x00, - 0x0c, 0xfb, 0x00, 0x05, 0x24, 0x10, 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xbd, 0x27, - 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xff, 0xbd, 0x27, 0x10, - 0x00, 0xbf, 0xaf, 0xd0, 0x80, 0x84, 0x27, 0x3a, 0xc0, 0x00, 0x0c, 0x05, 0x01, - 0x05, 0x24, 0x10, 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, - 0x03, 0x00, 0x00, 0x00, 0x00, 0xd8, 0xff, 0xbd, 0x27, 0x24, 0x00, 0xbf, 0xaf, - 0x20, 0x00, 0xb4, 0xaf, 0x1c, 0x00, 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, - 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x90, 0x80, 0x00, 0xff, 0xff, - 0x10, 0x24, 0x00, 0xa0, 0x14, 0x3c, 0x80, 0x01, 0x94, 0x36, 0xff, 0xff, 0x13, - 0x24, 0x49, 0x00, 0x82, 0x92, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x40, 0x14, - 0x00, 0xa0, 0x03, 0x3c, 0x80, 0x01, 0x63, 0x34, 0x49, 0x00, 0x62, 0x90, 0x00, - 0x00, 0x00, 0x00, 0xfd, 0xff, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, - 0x91, 0x92, 0x49, 0x00, 0x80, 0xa2, 0x00, 0x16, 0x11, 0x00, 0x03, 0x1e, 0x02, - 0x00, 0x0a, 0x00, 0x02, 0x24, 0x0a, 0x00, 0x62, 0x10, 0x0b, 0x00, 0x62, 0x28, - 0x05, 0x00, 0x40, 0x10, 0x08, 0x00, 0x02, 0x24, 0x08, 0x00, 0x62, 0x10, 0x10, - 0x00, 0x02, 0x24, 0x60, 0xc3, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, - 0x02, 0x24, 0x18, 0x00, 0x62, 0x14, 0x10, 0x00, 0x02, 0x24, 0x8a, 0xc3, 0x00, - 0x08, 0x21, 0x10, 0x00, 0x02, 0xe4, 0xff, 0x13, 0x12, 0x00, 0x00, 0x00, 0x00, - 0xfc, 0xc9, 0x00, 0x0c, 0x08, 0x00, 0x04, 0x24, 0xfc, 0xc9, 0x00, 0x0c, 0x20, - 0x00, 0x04, 0x24, 0xfc, 0xc9, 0x00, 0x0c, 0x08, 0x00, 0x04, 0x24, 0x1a, 0x00, - 0x12, 0x02, 0x02, 0x00, 0x40, 0x16, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x07, - 0x00, 0xff, 0xff, 0x01, 0x24, 0x04, 0x00, 0x41, 0x16, 0x00, 0x80, 0x01, 0x3c, - 0x02, 0x00, 0x01, 0x16, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x06, 0x00, 0x12, - 0x80, 0x00, 0x00, 0x30, 0xc3, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, - 0x42, 0x16, 0xd0, 0xff, 0x22, 0x26, 0x9f, 0xff, 0x22, 0x26, 0xff, 0x00, 0x42, - 0x30, 0x06, 0x00, 0x42, 0x2c, 0x03, 0x00, 0x40, 0x10, 0xbf, 0xff, 0x22, 0x26, - 0xe0, 0xff, 0x31, 0x26, 0xbf, 0xff, 0x22, 0x26, 0xff, 0x00, 0x42, 0x30, 0x06, - 0x00, 0x42, 0x2c, 0x0d, 0x00, 0x40, 0x10, 0xd0, 0xff, 0x22, 0x26, 0x03, 0x00, - 0x13, 0x16, 0x18, 0x00, 0x12, 0x02, 0x21, 0x80, 0x00, 0x00, 0x18, 0x00, 0x12, - 0x02, 0x00, 0x26, 0x11, 0x00, 0x03, 0x26, 0x04, 0x00, 0x12, 0x28, 0x00, 0x00, - 0x21, 0x10, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xc9, 0x00, 0x0c, 0xc9, - 0xff, 0x50, 0x24, 0xd0, 0xff, 0x22, 0x26, 0xff, 0x00, 0x42, 0x30, 0x0a, 0x00, - 0x42, 0x2c, 0xb4, 0xff, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x13, - 0x16, 0x18, 0x00, 0x12, 0x02, 0x21, 0x80, 0x00, 0x00, 0x18, 0x00, 0x12, 0x02, - 0x00, 0x26, 0x11, 0x00, 0x03, 0x26, 0x04, 0x00, 0x12, 0x28, 0x00, 0x00, 0x21, - 0x10, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xc9, 0x00, 0x0c, 0xd0, 0xff, - 0x50, 0x24, 0x30, 0xc3, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0xbf, - 0x8f, 0x20, 0x00, 0xb4, 0x8f, 0x1c, 0x00, 0xb3, 0x8f, 0x18, 0x00, 0xb2, 0x8f, - 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x28, - 0x00, 0xbd, 0x27, 0x90, 0xff, 0xbd, 0x27, 0x6c, 0x00, 0xbf, 0xaf, 0x68, 0x00, - 0xbe, 0xaf, 0x64, 0x00, 0xb7, 0xaf, 0x60, 0x00, 0xb6, 0xaf, 0x5c, 0x00, 0xb5, - 0xaf, 0x58, 0x00, 0xb4, 0xaf, 0x54, 0x00, 0xb3, 0xaf, 0x50, 0x00, 0xb2, 0xaf, - 0x4c, 0x00, 0xb1, 0xaf, 0xc4, 0xd4, 0x00, 0x0c, 0x48, 0x00, 0xb0, 0xaf, 0x05, - 0xa2, 0x04, 0x3c, 0x80, 0x8f, 0x82, 0x8f, 0xfe, 0xff, 0x03, 0x24, 0x24, 0x10, - 0x43, 0x00, 0x80, 0x8f, 0x82, 0xaf, 0x00, 0x00, 0x82, 0xa4, 0x04, 0xa2, 0x03, - 0x3c, 0x00, 0x00, 0x63, 0x8c, 0x34, 0x12, 0x02, 0x24, 0x04, 0x00, 0x62, 0x14, - 0x01, 0x00, 0x02, 0x24, 0x00, 0xa0, 0x01, 0x3c, 0xae, 0xc3, 0x00, 0x08, 0x20, - 0x0c, 0x22, 0xa0, 0x00, 0xa0, 0x01, 0x3c, 0x20, 0x0c, 0x20, 0xa0, 0xb8, 0xc9, - 0x00, 0x0c, 0x00, 0xa0, 0x11, 0x3c, 0xe0, 0x80, 0x84, 0x27, 0xa4, 0xd4, 0x00, - 0x0c, 0x00, 0x01, 0x31, 0x36, 0xe8, 0x80, 0x84, 0x27, 0xa4, 0xd4, 0x00, 0x0c, - 0x00, 0x00, 0x22, 0xae, 0xf0, 0x80, 0x84, 0x27, 0xa4, 0xd4, 0x00, 0x0c, 0x04, - 0x00, 0x22, 0xae, 0xf8, 0x80, 0x84, 0x27, 0xa4, 0xd4, 0x00, 0x0c, 0x08, 0x00, - 0x22, 0xae, 0x0c, 0x00, 0x22, 0xae, 0x03, 0x00, 0x02, 0x24, 0x14, 0x00, 0x22, - 0xae, 0x00, 0xa0, 0x02, 0x3c, 0xca, 0x01, 0x42, 0x34, 0x18, 0x00, 0x22, 0xae, - 0x00, 0xa0, 0x02, 0x3c, 0x30, 0x0c, 0x42, 0x34, 0x1c, 0x00, 0x22, 0xae, 0x00, - 0xa0, 0x02, 0x3c, 0x80, 0x01, 0x42, 0x34, 0x20, 0x00, 0x22, 0xae, 0x04, 0x00, - 0x40, 0xac, 0x08, 0x00, 0x40, 0xac, 0x14, 0x00, 0x40, 0xac, 0x18, 0x00, 0x40, - 0xac, 0x01, 0x00, 0x03, 0x24, 0x1c, 0x00, 0x43, 0xac, 0x01, 0x01, 0x03, 0x24, - 0x24, 0x00, 0x43, 0xac, 0x28, 0x00, 0x40, 0xa4, 0x2a, 0x00, 0x40, 0xa4, 0x4a, - 0x00, 0x40, 0xa4, 0x4c, 0x00, 0x40, 0xa4, 0xff, 0x01, 0x03, 0x24, 0x4e, 0x00, - 0x43, 0xa4, 0x10, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x52, - 0x2c, 0x09, 0x00, 0x40, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x84, 0x27, - 0xa4, 0xd4, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x80, 0x84, 0x27, 0xa4, - 0xd4, 0x00, 0x0c, 0x21, 0x80, 0x40, 0x00, 0x26, 0x80, 0x02, 0x02, 0x10, 0x00, - 0x30, 0xae, 0x08, 0xc2, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x02, - 0x24, 0x00, 0xa0, 0x01, 0x3c, 0x00, 0x0c, 0x22, 0xa0, 0x44, 0x00, 0x02, 0x24, - 0x00, 0xa0, 0x01, 0x3c, 0x01, 0x0c, 0x22, 0xa0, 0x00, 0xa0, 0x02, 0x3c, 0x30, - 0x0c, 0x42, 0x34, 0x00, 0x00, 0x40, 0xa0, 0x02, 0x00, 0x40, 0xa0, 0x08, 0x00, - 0x40, 0xa4, 0x45, 0x23, 0x02, 0x3c, 0x89, 0x67, 0x42, 0x34, 0x00, 0xa0, 0x01, - 0x3c, 0x10, 0x00, 0x22, 0xac, 0x10, 0x81, 0x84, 0x27, 0x02, 0x00, 0x40, 0x12, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x81, 0x84, 0x27, 0xa4, 0xd4, 0x00, 0x0c, 0x00, - 0xa0, 0x15, 0x3c, 0x00, 0xa0, 0x01, 0x3c, 0x04, 0x01, 0x22, 0xac, 0x80, 0x01, - 0xb5, 0x36, 0x18, 0x00, 0xa8, 0x27, 0x40, 0x00, 0xa8, 0xaf, 0x00, 0xa0, 0x02, - 0x3c, 0x10, 0x00, 0x42, 0x34, 0x00, 0x00, 0x43, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x63, 0x24, 0x68, 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x43, 0xac, 0x00, - 0xa0, 0x02, 0x3c, 0x10, 0x01, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, - 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x84, 0x27, 0xa4, 0xd4, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x80, 0x84, 0x27, 0xa4, 0xd4, 0x00, 0x0c, - 0x21, 0x80, 0x40, 0x00, 0x26, 0x80, 0x02, 0x02, 0x00, 0xa0, 0x01, 0x3c, 0x10, - 0x01, 0x30, 0xac, 0x08, 0x81, 0x84, 0x27, 0xa4, 0xd4, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xa0, 0x01, 0x3c, 0x04, 0x01, 0x22, 0xac, 0x49, 0x00, 0xa2, - 0x92, 0x00, 0x00, 0x00, 0x00, 0xe4, 0xff, 0x40, 0x10, 0x00, 0xa0, 0x02, 0x3c, - 0x48, 0x00, 0xb4, 0x92, 0x49, 0x00, 0xa0, 0xa2, 0x21, 0x90, 0x00, 0x00, 0x21, - 0x88, 0x00, 0x00, 0x80, 0x10, 0x11, 0x00, 0x40, 0x00, 0xa8, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x21, 0x10, 0x48, 0x00, 0x10, 0x00, 0x40, 0xac, 0x00, 0x00, 0x40, - 0xac, 0x01, 0x00, 0x31, 0x26, 0x04, 0x00, 0x22, 0x2a, 0xf8, 0xff, 0x40, 0x14, - 0x80, 0x10, 0x11, 0x00, 0xff, 0x00, 0x82, 0x32, 0xfc, 0xff, 0x43, 0x24, 0x85, - 0x00, 0x62, 0x2c, 0xf8, 0x02, 0x40, 0x10, 0x80, 0x10, 0x03, 0x00, 0x03, 0x80, - 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0x00, 0x56, 0x22, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x81, 0x84, 0x27, - 0x2e, 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x88, 0x81, 0x84, 0x27, 0x2e, - 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x98, 0x81, 0x84, 0x27, 0x2e, 0xc9, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xac, 0x81, 0x84, 0x27, 0x2e, 0xc9, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x81, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0xe0, 0x81, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x82, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x82, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x60, 0x82, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xc4, 0x00, 0x08, 0x00, 0xa0, 0x02, 0x3c, 0x90, 0x82, 0x84, 0x27, 0x2e, - 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x24, 0xc3, 0x00, 0x0c, 0x0a, 0x00, - 0x04, 0x24, 0xb4, 0x82, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x21, 0x88, 0x40, - 0x00, 0xa4, 0xff, 0x20, 0x12, 0x00, 0xa0, 0x02, 0x3c, 0xe1, 0xc4, 0x00, 0x08, - 0xff, 0xff, 0x31, 0x26, 0x01, 0x00, 0x52, 0x26, 0x64, 0x81, 0x84, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x2e, 0xc9, 0x00, 0x0c, 0x21, 0x28, 0x40, 0x02, 0x79, 0xca, - 0x00, 0x0c, 0x21, 0x20, 0x00, 0x00, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x18, 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, - 0x71, 0xc4, 0x00, 0x08, 0x18, 0x00, 0xa2, 0xaf, 0x28, 0x00, 0xa2, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x28, 0x00, 0xa2, 0xaf, 0x49, 0x00, - 0xa2, 0x92, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x40, 0x14, 0x01, 0x00, 0x10, - 0x26, 0x14, 0x00, 0x02, 0x2a, 0xe9, 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x64, 0x81, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2e, 0xc9, 0x00, 0x0c, 0x21, - 0x28, 0x40, 0x02, 0x10, 0x00, 0xa0, 0xaf, 0x00, 0xa0, 0x04, 0x3c, 0x10, 0x7f, - 0x84, 0x34, 0x02, 0xa0, 0x05, 0x3c, 0xf0, 0xff, 0xa5, 0x34, 0x01, 0x00, 0x06, - 0x24, 0x4a, 0xcc, 0x00, 0x0c, 0x21, 0x38, 0x00, 0x00, 0x06, 0x00, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x42, 0x24, 0x8f, 0xc4, 0x00, 0x08, 0x1c, 0x00, 0xa2, 0xaf, 0x2c, 0x00, - 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x2c, 0x00, 0xa2, - 0xaf, 0x49, 0x00, 0xa2, 0x92, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x64, 0x81, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2e, - 0xc9, 0x00, 0x0c, 0x21, 0x28, 0x40, 0x02, 0x10, 0x00, 0xa0, 0xaf, 0x05, 0xa0, - 0x04, 0x3c, 0x0f, 0xa0, 0x05, 0x3c, 0x01, 0x00, 0x06, 0x24, 0x4a, 0xcc, 0x00, - 0x0c, 0x21, 0x38, 0x00, 0x00, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0xa8, - 0xc4, 0x00, 0x08, 0x1c, 0x00, 0xa2, 0xaf, 0x2c, 0x00, 0xa2, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x2c, 0x00, 0xa2, 0xaf, 0x49, 0x00, 0xa2, - 0x92, 0x00, 0x00, 0x00, 0x00, 0x39, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x64, 0x81, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2e, 0xc9, 0x00, 0x0c, 0x21, - 0x28, 0x40, 0x02, 0x10, 0x00, 0xa0, 0xaf, 0x01, 0x00, 0x08, 0x24, 0x14, 0x00, - 0xa8, 0xaf, 0x21, 0x20, 0x00, 0x00, 0xff, 0xff, 0x05, 0x24, 0x00, 0x01, 0x06, - 0x24, 0xb5, 0xd0, 0x00, 0x0c, 0xff, 0xff, 0x07, 0x24, 0x06, 0x00, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x42, 0x24, 0xc3, 0xc4, 0x00, 0x08, 0x20, 0x00, 0xa2, 0xaf, 0x30, 0x00, - 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x30, 0x00, 0xa2, - 0xaf, 0x49, 0x00, 0xa2, 0x92, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x64, 0x81, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2e, - 0xc9, 0x00, 0x0c, 0x21, 0x28, 0x40, 0x02, 0x10, 0x00, 0xa0, 0xaf, 0x14, 0x00, - 0xa0, 0xaf, 0x21, 0x20, 0x00, 0x00, 0xff, 0xff, 0x05, 0x24, 0x00, 0x01, 0x06, - 0x24, 0xb5, 0xd0, 0x00, 0x0c, 0xff, 0xff, 0x07, 0x24, 0x06, 0x00, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x42, 0x24, 0xdd, 0xc4, 0x00, 0x08, 0x24, 0x00, 0xa2, 0xaf, 0x34, 0x00, - 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x34, 0x00, 0xa2, - 0xaf, 0x49, 0x00, 0xa2, 0x92, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x14, - 0xff, 0xff, 0x31, 0x26, 0xff, 0xff, 0x02, 0x24, 0x7c, 0xff, 0x22, 0x16, 0x21, - 0x80, 0x00, 0x00, 0xb8, 0x82, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x21, 0x88, - 0x00, 0x00, 0xcc, 0x82, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x21, 0x28, 0x40, - 0x02, 0x01, 0x00, 0x30, 0x26, 0x80, 0x10, 0x11, 0x00, 0x40, 0x00, 0xa8, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x48, 0x00, 0xe0, 0x82, 0x84, 0x27, 0x10, - 0x00, 0x46, 0x8c, 0x00, 0x00, 0x47, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x2e, 0xc9, - 0x00, 0x0c, 0x21, 0x28, 0x00, 0x02, 0x21, 0x88, 0x00, 0x02, 0x04, 0x00, 0x22, - 0x2a, 0xf3, 0xff, 0x40, 0x14, 0x01, 0x00, 0x30, 0x26, 0x49, 0x00, 0xa0, 0xa2, - 0x00, 0xc4, 0x00, 0x08, 0x00, 0xa0, 0x02, 0x3c, 0x04, 0x83, 0x84, 0x27, 0x2e, - 0xc9, 0x00, 0x0c, 0x01, 0x00, 0x52, 0x26, 0x64, 0x81, 0x84, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x2e, 0xc9, 0x00, 0x0c, 0x21, 0x28, 0x40, 0x02, 0x79, 0xca, 0x00, - 0x0c, 0x21, 0x20, 0x00, 0x00, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x10, - 0xc5, 0x00, 0x08, 0x18, 0x00, 0xa2, 0xaf, 0x28, 0x00, 0xa2, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x28, 0x00, 0xa2, 0xaf, 0x49, 0x00, 0xa2, - 0x92, 0x00, 0x00, 0x00, 0x00, 0xec, 0xff, 0x40, 0x10, 0x01, 0x00, 0x52, 0x26, - 0x20, 0x83, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0xff, 0xff, 0x52, 0x26, 0xcc, - 0x82, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x21, 0x28, 0x40, 0x02, 0x3c, 0x83, - 0x84, 0x27, 0x28, 0x00, 0xa5, 0x8f, 0x18, 0x00, 0xa6, 0x8f, 0x5d, 0xc5, 0x00, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x83, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0x24, 0xc3, 0x00, 0x0c, 0x10, 0x00, 0x04, 0x24, 0x21, - 0x98, 0x40, 0x00, 0xff, 0xff, 0x02, 0x24, 0x03, 0x00, 0x62, 0x16, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xa0, 0x13, 0x3c, 0x00, 0x10, 0x73, 0x36, 0x6c, 0x83, 0x84, - 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x24, 0xc3, 0x00, 0x0c, - 0x10, 0x00, 0x04, 0x24, 0x21, 0x88, 0x40, 0x00, 0xff, 0xff, 0x02, 0x24, 0x03, - 0x00, 0x22, 0x16, 0x00, 0x00, 0x00, 0x00, 0x02, 0xa0, 0x11, 0x3c, 0xf0, 0xff, - 0x31, 0x36, 0x7c, 0x83, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x01, 0x00, 0x52, - 0x26, 0x04, 0x83, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x64, 0x81, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2e, 0xc9, 0x00, 0x0c, 0x21, - 0x28, 0x40, 0x02, 0x10, 0x00, 0xa0, 0xaf, 0x21, 0x20, 0x60, 0x02, 0x21, 0x28, - 0x20, 0x02, 0x01, 0x00, 0x06, 0x24, 0x4a, 0xcc, 0x00, 0x0c, 0x21, 0x38, 0x00, - 0x00, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0xa2, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x50, 0xc5, 0x00, 0x08, 0x1c, - 0x00, 0xa2, 0xaf, 0x2c, 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x42, 0x24, 0x2c, 0x00, 0xa2, 0xaf, 0x49, 0x00, 0xa2, 0x92, 0x00, 0x00, 0x00, - 0x00, 0xe8, 0xff, 0x40, 0x10, 0x01, 0x00, 0x52, 0x26, 0x80, 0x83, 0x84, 0x27, - 0x2e, 0xc9, 0x00, 0x0c, 0xff, 0xff, 0x52, 0x26, 0xcc, 0x82, 0x84, 0x27, 0x2e, - 0xc9, 0x00, 0x0c, 0x21, 0x28, 0x40, 0x02, 0x98, 0x83, 0x84, 0x27, 0x2c, 0x00, - 0xa5, 0x8f, 0x1c, 0x00, 0xa6, 0x8f, 0x2e, 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x49, 0x00, 0xa0, 0xa2, 0x00, 0xc4, 0x00, 0x08, 0x00, 0xa0, 0x02, 0x3c, - 0xff, 0xff, 0x10, 0x24, 0x78, 0x8b, 0x86, 0x8f, 0xb8, 0x83, 0x84, 0x27, 0xfb, - 0xff, 0xc5, 0x24, 0x2e, 0xc9, 0x00, 0x0c, 0xff, 0xff, 0xc6, 0x24, 0x24, 0xc3, - 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x21, 0x88, 0x40, 0x00, 0x05, 0x00, 0x30, - 0x16, 0x21, 0xb0, 0x00, 0x00, 0x04, 0x84, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, - 0x41, 0x00, 0x16, 0x24, 0x01, 0x00, 0x52, 0x26, 0x08, 0x84, 0x84, 0x27, 0x2e, - 0xc9, 0x00, 0x0c, 0xff, 0x00, 0x93, 0x32, 0x24, 0xc3, 0x00, 0x0c, 0x10, 0x00, - 0x04, 0x24, 0x40, 0x84, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x21, 0x80, 0x40, - 0x00, 0x33, 0x00, 0x62, 0x3a, 0x01, 0x00, 0x42, 0x2c, 0x38, 0x00, 0xa2, 0xaf, - 0x80, 0x18, 0x13, 0x00, 0x40, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, - 0xf0, 0x68, 0x00, 0x64, 0xff, 0xa2, 0x27, 0x21, 0xb8, 0x43, 0x00, 0x41, 0x00, - 0x08, 0x24, 0x3b, 0x00, 0xc8, 0x16, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x31, - 0x26, 0x78, 0x8b, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x22, 0x16, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x52, 0x26, 0x21, 0x88, 0x00, 0x00, 0xf6, - 0xff, 0x20, 0x06, 0x41, 0x00, 0x08, 0x24, 0x78, 0x8b, 0x82, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x2a, 0x10, 0x22, 0x02, 0xf1, 0xff, 0x40, 0x10, 0x00, 0x00, 0x00, - 0x00, 0xb7, 0xff, 0x22, 0x26, 0x02, 0x00, 0x42, 0x2c, 0xed, 0xff, 0x40, 0x14, - 0x40, 0x10, 0x11, 0x00, 0x21, 0x10, 0x51, 0x00, 0x80, 0x10, 0x02, 0x00, 0x03, - 0x80, 0x03, 0x3c, 0x21, 0x18, 0x62, 0x00, 0xd8, 0x5b, 0x63, 0x8c, 0x03, 0x80, - 0x08, 0x3c, 0x34, 0x5b, 0x08, 0x25, 0xe3, 0xff, 0x68, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x03, 0x80, 0x02, 0x3c, 0xe4, 0x5a, 0x42, 0x24, 0x0a, 0x00, 0x62, 0x10, - 0x33, 0x00, 0x02, 0x24, 0x03, 0x80, 0x02, 0x3c, 0x1c, 0x5b, 0x42, 0x24, 0x06, - 0x00, 0x62, 0x10, 0x33, 0x00, 0x02, 0x24, 0x03, 0x80, 0x02, 0x3c, 0x00, 0x5b, - 0x42, 0x24, 0x04, 0x00, 0x62, 0x14, 0x40, 0x10, 0x11, 0x00, 0x33, 0x00, 0x02, - 0x24, 0xd4, 0xff, 0x62, 0x12, 0x40, 0x10, 0x11, 0x00, 0x21, 0x10, 0x51, 0x00, - 0x80, 0x10, 0x02, 0x00, 0x03, 0x80, 0x03, 0x3c, 0x21, 0x18, 0x62, 0x00, 0xdc, - 0x5b, 0x63, 0x8c, 0xc0, 0x8a, 0x82, 0x27, 0xcd, 0xff, 0x62, 0x10, 0x41, 0x00, - 0x08, 0x24, 0xc8, 0x8a, 0x82, 0x27, 0xca, 0xff, 0x62, 0x10, 0x00, 0x00, 0x00, - 0x00, 0xd0, 0x8a, 0x82, 0x27, 0xc7, 0xff, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, - 0xc0, 0xc5, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x52, 0x26, 0x64, - 0x81, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2e, 0xc9, 0x00, 0x0c, 0x21, 0x28, - 0x40, 0x02, 0x41, 0x00, 0x08, 0x24, 0x08, 0x00, 0xc8, 0x12, 0x21, 0x20, 0x20, - 0x02, 0x10, 0x00, 0xa0, 0xaf, 0x38, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x14, 0x00, 0xa8, 0xaf, 0x21, 0x28, 0x20, 0x02, 0xd4, 0xc5, 0x00, 0x08, 0x00, - 0x10, 0x06, 0x24, 0x10, 0x00, 0xa0, 0xaf, 0x38, 0x00, 0xa8, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x14, 0x00, 0xa8, 0xaf, 0x21, 0x28, 0x20, 0x02, 0x00, 0x01, 0x06, - 0x24, 0xb5, 0xd0, 0x00, 0x0c, 0x21, 0x38, 0x00, 0x02, 0x06, 0x00, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0xff, 0xc2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x42, 0x24, 0xe1, 0xc5, 0x00, 0x08, 0x3c, 0xff, 0xc2, 0xaf, 0x00, 0x00, - 0xe2, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, 0xe2, - 0xae, 0x49, 0x00, 0xa2, 0x92, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xff, 0x40, 0x10, - 0x41, 0x00, 0x08, 0x24, 0x60, 0x84, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0xcc, 0x82, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x21, 0x28, - 0x40, 0x02, 0xff, 0x00, 0x85, 0x32, 0x80, 0x10, 0x05, 0x00, 0x21, 0x18, 0xa2, - 0x03, 0x40, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x48, 0x00, - 0x78, 0x84, 0x84, 0x27, 0x64, 0xff, 0x66, 0x8c, 0x3c, 0xff, 0x47, 0x8c, 0x2e, - 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0xa0, 0xa2, 0x00, 0xc4, - 0x00, 0x08, 0x00, 0xa0, 0x02, 0x3c, 0x05, 0xa2, 0x04, 0x3c, 0x80, 0x8f, 0x83, - 0x97, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x62, 0x38, 0x00, 0x00, 0x82, 0xa4, - 0x00, 0xa0, 0x02, 0x3c, 0x00, 0x00, 0x42, 0x8c, 0x00, 0x00, 0x83, 0xa4, 0x9c, - 0x84, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, - 0x00, 0x08, 0x00, 0xa0, 0x02, 0x3c, 0xbc, 0x84, 0x84, 0x27, 0x2e, 0xc9, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x24, 0xc3, 0x00, 0x0c, 0x10, 0x00, 0x04, 0x24, - 0x21, 0x98, 0x40, 0x00, 0xff, 0xff, 0x02, 0x24, 0xf2, 0xfd, 0x62, 0x12, 0x00, - 0xa0, 0x02, 0x3c, 0x7c, 0x83, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0xff, 0x00, 0x83, 0x32, 0x64, 0x00, 0x02, 0x24, 0x06, 0x00, 0x62, - 0x10, 0x04, 0x00, 0x02, 0x24, 0x04, 0x00, 0x62, 0x10, 0x44, 0x00, 0x02, 0x24, - 0x1d, 0x00, 0x62, 0x14, 0x72, 0x00, 0x02, 0x24, 0xff, 0x00, 0x83, 0x32, 0x64, - 0x00, 0x02, 0x24, 0x04, 0x00, 0x62, 0x10, 0x21, 0x88, 0x00, 0x00, 0x10, 0x00, - 0x22, 0x2a, 0xe0, 0xfd, 0x40, 0x10, 0x00, 0xa0, 0x02, 0x3c, 0x00, 0x81, 0x11, - 0x00, 0x21, 0x80, 0x70, 0x02, 0xcc, 0x84, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, - 0x21, 0x28, 0x00, 0x02, 0x00, 0xa0, 0x04, 0x3c, 0x25, 0x20, 0x04, 0x02, 0x21, - 0xca, 0x00, 0x0c, 0x10, 0x00, 0x05, 0x24, 0x7c, 0x83, 0x84, 0x27, 0x2e, 0xc9, - 0x00, 0x0c, 0x01, 0x00, 0x31, 0x26, 0xff, 0x00, 0x83, 0x32, 0x64, 0x00, 0x02, - 0x24, 0xef, 0xff, 0x62, 0x14, 0x10, 0x00, 0x22, 0x2a, 0x04, 0x00, 0x22, 0x2a, - 0xef, 0xff, 0x40, 0x14, 0x00, 0x81, 0x11, 0x00, 0x00, 0xc4, 0x00, 0x08, 0x00, - 0xa0, 0x02, 0x3c, 0x09, 0x00, 0x62, 0x14, 0xff, 0x00, 0x83, 0x32, 0x00, 0xa0, - 0x02, 0x3c, 0x25, 0x10, 0x62, 0x02, 0xd4, 0x84, 0x84, 0x27, 0x00, 0x00, 0x45, - 0x90, 0x2e, 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x08, - 0x00, 0xa0, 0x02, 0x3c, 0x12, 0x00, 0x02, 0x24, 0x09, 0x00, 0x62, 0x14, 0xff, - 0x00, 0x83, 0x32, 0x00, 0xa0, 0x02, 0x3c, 0x25, 0x10, 0x62, 0x02, 0xdc, 0x84, - 0x84, 0x27, 0x00, 0x00, 0x45, 0x94, 0x2e, 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc4, 0x00, 0x08, 0x00, 0xa0, 0x02, 0x3c, 0x52, 0x00, 0x02, 0x24, - 0x09, 0x00, 0x62, 0x14, 0xff, 0x00, 0x83, 0x32, 0x00, 0xa0, 0x02, 0x3c, 0x25, - 0x10, 0x62, 0x02, 0xe4, 0x84, 0x84, 0x27, 0x00, 0x00, 0x45, 0x8c, 0x2e, 0xc9, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x08, 0x00, 0xa0, 0x02, - 0x3c, 0x66, 0x00, 0x02, 0x24, 0x03, 0x00, 0x62, 0x10, 0x77, 0x00, 0x02, 0x24, - 0x04, 0x00, 0x62, 0x14, 0xff, 0x00, 0x83, 0x32, 0xec, 0x84, 0x84, 0x27, 0x67, - 0xc6, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x24, 0x03, 0x00, - 0x62, 0x10, 0x17, 0x00, 0x02, 0x24, 0x04, 0x00, 0x62, 0x14, 0x00, 0x00, 0x00, - 0x00, 0xf0, 0x84, 0x84, 0x27, 0x67, 0xc6, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0xf4, 0x84, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xf8, - 0x84, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x24, 0xc3, - 0x00, 0x0c, 0x10, 0x00, 0x04, 0x24, 0x7c, 0x83, 0x84, 0x27, 0x2e, 0xc9, 0x00, - 0x0c, 0x21, 0x88, 0x40, 0x00, 0xff, 0x00, 0x83, 0x32, 0x66, 0x00, 0x02, 0x24, - 0x05, 0x00, 0x62, 0x10, 0x06, 0x00, 0x02, 0x24, 0x03, 0x00, 0x62, 0x10, 0x46, - 0x00, 0x02, 0x24, 0x0b, 0x00, 0x62, 0x14, 0x21, 0x80, 0x00, 0x00, 0x0c, 0x85, - 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x24, 0xc3, 0x00, - 0x0c, 0x10, 0x00, 0x04, 0x24, 0x7c, 0x83, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, - 0xff, 0xff, 0x50, 0x24, 0x84, 0xc6, 0x00, 0x08, 0x00, 0xa0, 0x02, 0x3c, 0x00, - 0xa0, 0x02, 0x3c, 0x25, 0x98, 0x62, 0x02, 0xff, 0x00, 0x83, 0x32, 0x77, 0x00, - 0x07, 0x24, 0x66, 0x00, 0x06, 0x24, 0x17, 0x00, 0x05, 0x24, 0x06, 0x00, 0x04, - 0x24, 0x03, 0x00, 0x67, 0x10, 0x21, 0x10, 0x70, 0x02, 0x03, 0x00, 0x66, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x9a, 0xc6, 0x00, 0x08, 0x00, 0x00, 0x51, 0xa0, 0x04, - 0x00, 0x65, 0x10, 0x40, 0x10, 0x10, 0x00, 0x05, 0x00, 0x64, 0x14, 0x80, 0x10, - 0x10, 0x00, 0x40, 0x10, 0x10, 0x00, 0x21, 0x10, 0x53, 0x00, 0x9a, 0xc6, 0x00, - 0x08, 0x00, 0x00, 0x51, 0xa4, 0x21, 0x10, 0x53, 0x00, 0x00, 0x00, 0x51, 0xac, - 0xff, 0xff, 0x10, 0x26, 0xee, 0xff, 0x01, 0x06, 0x00, 0xa0, 0x02, 0x3c, 0x01, - 0xc4, 0x00, 0x08, 0x10, 0x00, 0x42, 0x34, 0x79, 0xca, 0x00, 0x0c, 0x21, 0x20, - 0x00, 0x00, 0x22, 0xc7, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xa2, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x46, 0x38, 0x0f, 0x00, 0xc6, 0x30, - 0x08, 0x00, 0xa4, 0x8e, 0x08, 0x00, 0xa2, 0x8e, 0x08, 0x00, 0xa2, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x00, 0xa2, 0xae, 0x08, 0x00, 0xa2, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x07, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xa3, - 0x8e, 0x02, 0x00, 0x02, 0x3c, 0xf0, 0xef, 0x42, 0x34, 0x2b, 0x10, 0x43, 0x00, - 0x05, 0x00, 0x40, 0x10, 0x00, 0xa0, 0x05, 0x3c, 0x02, 0x00, 0x04, 0x3c, 0xf0, - 0xef, 0x84, 0x34, 0x04, 0x00, 0xa4, 0xae, 0x00, 0xa0, 0x05, 0x3c, 0x00, 0x10, - 0xa5, 0x34, 0x21, 0x28, 0x85, 0x00, 0xff, 0x1f, 0x02, 0x3c, 0xff, 0xff, 0x42, - 0x34, 0x00, 0xa0, 0x03, 0x3c, 0x24, 0x28, 0xa2, 0x00, 0x10, 0x00, 0xa6, 0xaf, - 0x00, 0xa0, 0x04, 0x3c, 0x00, 0x10, 0x84, 0x34, 0x25, 0x28, 0xa3, 0x00, 0x21, - 0x30, 0x00, 0x00, 0x4a, 0xcc, 0x00, 0x0c, 0x21, 0x38, 0x00, 0x00, 0x22, 0xc7, - 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xb1, 0x8e, 0x10, 0x00, 0xa0, - 0xaf, 0x01, 0x00, 0x08, 0x24, 0x14, 0x00, 0xa8, 0xaf, 0x21, 0x20, 0x20, 0x02, - 0x21, 0x28, 0x20, 0x02, 0x00, 0x10, 0x06, 0x24, 0xb5, 0xd0, 0x00, 0x0c, 0xff, - 0xff, 0x07, 0x24, 0x22, 0xc7, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, - 0xb1, 0x8e, 0x10, 0x00, 0xa0, 0xaf, 0x14, 0x00, 0xa0, 0xaf, 0x21, 0x20, 0x20, - 0x02, 0x21, 0x28, 0x20, 0x02, 0x00, 0x10, 0x06, 0x24, 0xb5, 0xd0, 0x00, 0x0c, - 0xff, 0xff, 0x07, 0x24, 0x22, 0xc7, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0xa2, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x51, 0x30, 0x08, 0x00, - 0xa2, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x12, 0x02, 0x00, 0x84, 0x8f, 0x82, - 0xa3, 0x84, 0x8f, 0x82, 0x93, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x43, 0x24, - 0x10, 0x00, 0x62, 0x2c, 0x27, 0x00, 0x40, 0x10, 0x80, 0x10, 0x03, 0x00, 0x03, - 0x80, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0x18, 0x58, 0x22, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xa2, 0x03, - 0x3c, 0x80, 0x8f, 0x80, 0xaf, 0x00, 0x00, 0x60, 0xa4, 0x80, 0x8f, 0x80, 0xaf, - 0x00, 0x00, 0x60, 0xa4, 0x02, 0xc7, 0x00, 0x08, 0x60, 0x00, 0x02, 0x24, 0x05, - 0xa2, 0x03, 0x3c, 0x80, 0x8f, 0x80, 0xaf, 0x00, 0x00, 0x60, 0xa4, 0x06, 0x00, - 0x02, 0x24, 0x80, 0x8f, 0x82, 0xaf, 0x00, 0x00, 0x62, 0xa4, 0x66, 0x00, 0x02, - 0x24, 0x80, 0x8f, 0x82, 0xaf, 0x00, 0x00, 0x62, 0xa4, 0x66, 0x0c, 0x02, 0x24, - 0x80, 0x8f, 0x82, 0xaf, 0x00, 0x00, 0x62, 0xa4, 0x12, 0xc7, 0x00, 0x08, 0x10, - 0x00, 0xa0, 0xaf, 0x05, 0xa2, 0x02, 0x3c, 0x80, 0x8f, 0x80, 0xaf, 0x00, 0x00, - 0x40, 0xa4, 0x80, 0x8f, 0x80, 0xaf, 0x00, 0x00, 0x40, 0xa4, 0x60, 0x00, 0x03, - 0x24, 0x80, 0x8f, 0x83, 0xaf, 0x00, 0x00, 0x43, 0xa4, 0x78, 0x00, 0x03, 0x24, - 0x80, 0x8f, 0x83, 0xaf, 0x00, 0x00, 0x43, 0xa4, 0x10, 0x00, 0xa0, 0xaf, 0x14, - 0x00, 0xa0, 0xaf, 0x21, 0x20, 0x20, 0x02, 0x21, 0x28, 0x20, 0x02, 0x00, 0x10, - 0x06, 0x24, 0xb5, 0xd0, 0x00, 0x0c, 0xff, 0xff, 0x07, 0x24, 0x08, 0x00, 0xa2, - 0xae, 0x01, 0x00, 0x08, 0x24, 0x48, 0x00, 0xa8, 0xa2, 0x84, 0x8f, 0x80, 0xa3, - 0x00, 0xc4, 0x00, 0x08, 0x00, 0xa0, 0x02, 0x3c, 0x08, 0x00, 0xa4, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x75, 0xd4, 0x00, 0x0c, 0xff, 0x00, 0x84, 0x30, 0x08, 0x00, - 0xa2, 0xae, 0x01, 0x00, 0x08, 0x24, 0x48, 0x00, 0xa8, 0xa2, 0x00, 0xc4, 0x00, - 0x08, 0x00, 0xa0, 0x02, 0x3c, 0x1c, 0x85, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x08, 0x00, 0xa0, 0x02, 0x3c, 0x6c, - 0x00, 0xbf, 0x8f, 0x68, 0x00, 0xbe, 0x8f, 0x64, 0x00, 0xb7, 0x8f, 0x60, 0x00, - 0xb6, 0x8f, 0x5c, 0x00, 0xb5, 0x8f, 0x58, 0x00, 0xb4, 0x8f, 0x54, 0x00, 0xb3, - 0x8f, 0x50, 0x00, 0xb2, 0x8f, 0x4c, 0x00, 0xb1, 0x8f, 0x48, 0x00, 0xb0, 0x8f, - 0x08, 0x00, 0xe0, 0x03, 0x70, 0x00, 0xbd, 0x27, 0x00, 0xa0, 0x05, 0x3c, 0x80, - 0x01, 0xa5, 0x34, 0x4a, 0x00, 0xa2, 0x94, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x42, 0x30, 0x21, 0x10, 0x45, 0x00, 0x50, 0x00, 0x44, 0xa0, 0x4a, 0x00, 0xa2, - 0x94, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x4e, 0x00, 0xa3, 0x94, - 0x00, 0x00, 0x00, 0x00, 0x24, 0x20, 0x62, 0x00, 0x4c, 0x00, 0xa3, 0x94, 0xff, - 0xff, 0x82, 0x30, 0x02, 0x00, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x00, - 0xa4, 0xa4, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xff, 0xbd, - 0x27, 0x14, 0x00, 0xbf, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x00, 0xa0, 0x02, 0x3c, - 0x80, 0x01, 0x42, 0x34, 0x00, 0x00, 0x43, 0x8c, 0x01, 0x00, 0x02, 0x24, 0x07, - 0x00, 0x62, 0x14, 0x00, 0xa0, 0x10, 0x3c, 0x3e, 0x85, 0x83, 0x97, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x62, 0x24, 0x3e, 0x85, 0x82, 0xa7, 0x11, 0x00, 0x60, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x10, 0x36, 0x2a, 0x00, 0x02, 0x96, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x2a, 0x00, 0x02, 0xa6, 0x2a, - 0x00, 0x02, 0x96, 0xe8, 0x03, 0x02, 0x24, 0x3e, 0x85, 0x82, 0xa7, 0x06, 0xa2, - 0x02, 0x3c, 0x00, 0x00, 0x40, 0xa4, 0xfa, 0xc1, 0x00, 0x0c, 0x21, 0x20, 0x00, - 0x00, 0x01, 0x00, 0x02, 0x24, 0x00, 0x00, 0x02, 0xae, 0xfa, 0xc1, 0x00, 0x0c, - 0x01, 0x04, 0x04, 0x24, 0x14, 0x00, 0xbf, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, - 0x00, 0xe0, 0x03, 0x18, 0x00, 0xbd, 0x27, 0x00, 0xa0, 0x03, 0x3c, 0x80, 0x01, - 0x63, 0x34, 0x4c, 0x00, 0x62, 0x94, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x40, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x62, 0x94, 0x4a, 0x00, 0x63, 0x94, - 0xff, 0xff, 0x42, 0x30, 0x08, 0x00, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xa0, 0x04, 0x3c, 0x80, 0x01, 0x84, 0x34, 0x4c, 0x00, 0x82, 0x94, 0x4a, 0x00, - 0x83, 0x94, 0xff, 0xff, 0x42, 0x30, 0xfc, 0xff, 0x43, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2b, 0x10, 0x85, 0x00, 0x0a, 0x00, 0x40, 0x10, 0x21, 0x18, 0x00, 0x00, 0x00, - 0x00, 0x82, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x62, 0x00, 0x04, 0x00, - 0x84, 0x24, 0x2b, 0x18, 0x43, 0x00, 0x21, 0x18, 0x43, 0x00, 0x2b, 0x10, 0x85, - 0x00, 0xf8, 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xe0, 0x03, - 0x21, 0x10, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, - 0xff, 0xbd, 0x27, 0x54, 0x00, 0xbf, 0xaf, 0x50, 0x00, 0xb4, 0xaf, 0x4c, 0x00, - 0xb3, 0xaf, 0x48, 0x00, 0xb2, 0xaf, 0x44, 0x00, 0xb1, 0xaf, 0x40, 0x00, 0xb0, - 0xaf, 0x21, 0x80, 0xe0, 0x00, 0x68, 0x00, 0xa7, 0x8f, 0x21, 0x98, 0xc0, 0x00, - 0x07, 0x00, 0xa0, 0x10, 0x21, 0xa0, 0x00, 0x00, 0x06, 0x00, 0xe1, 0x04, 0x33, - 0x00, 0xb1, 0x27, 0x2d, 0x00, 0x14, 0x24, 0x03, 0x00, 0x00, 0x12, 0x23, 0x38, - 0x07, 0x00, 0xff, 0xff, 0x10, 0x26, 0x33, 0x00, 0xb1, 0x27, 0x33, 0x00, 0xa0, - 0xa3, 0xff, 0xff, 0x31, 0x26, 0x1b, 0x00, 0xe4, 0x00, 0x02, 0x00, 0x80, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x07, 0x00, 0x10, 0x10, 0x00, 0x00, 0x21, - 0x08, 0x5c, 0x00, 0x40, 0x85, 0x22, 0x90, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x12, 0x00, 0x00, 0x22, 0xa2, 0xff, 0xff, 0x10, 0x26, 0x1b, 0x00, 0xe4, - 0x00, 0x02, 0x00, 0x80, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x07, 0x00, - 0x12, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xed, - 0xff, 0xe0, 0x14, 0xff, 0xff, 0x31, 0x26, 0x01, 0x00, 0x31, 0x26, 0x00, 0x16, - 0x13, 0x00, 0x03, 0x16, 0x02, 0x00, 0x01, 0x00, 0x03, 0x24, 0x0b, 0x00, 0x43, - 0x14, 0x21, 0x20, 0x80, 0x02, 0xff, 0xff, 0x10, 0x26, 0xff, 0xff, 0x02, 0x24, - 0x07, 0x00, 0x02, 0x12, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x12, 0x24, 0xfc, - 0xc9, 0x00, 0x0c, 0x20, 0x00, 0x04, 0x24, 0xff, 0xff, 0x10, 0x26, 0xfc, 0xff, - 0x12, 0x16, 0x21, 0x20, 0x80, 0x02, 0x04, 0x00, 0x80, 0x10, 0x00, 0x16, 0x13, - 0x00, 0xfc, 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x13, 0x00, - 0x03, 0x16, 0x02, 0x00, 0x02, 0x00, 0x03, 0x24, 0x0a, 0x00, 0x43, 0x14, 0xff, - 0xff, 0x02, 0x24, 0xff, 0xff, 0x10, 0x26, 0x07, 0x00, 0x02, 0x12, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x12, 0x24, 0xfc, 0xc9, 0x00, 0x0c, 0x30, 0x00, 0x04, - 0x24, 0xff, 0xff, 0x10, 0x26, 0xfc, 0xff, 0x12, 0x16, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x40, 0x10, 0x21, - 0x20, 0x40, 0x00, 0x00, 0x26, 0x04, 0x00, 0x01, 0x00, 0x31, 0x26, 0xfc, 0xc9, - 0x00, 0x0c, 0x03, 0x26, 0x04, 0x00, 0x00, 0x00, 0x24, 0x92, 0x00, 0x00, 0x22, - 0x82, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x16, 0x13, 0x00, 0x03, 0x16, 0x02, 0x00, 0x03, 0x00, 0x03, 0x24, 0x09, - 0x00, 0x43, 0x14, 0xff, 0xff, 0x10, 0x26, 0xff, 0xff, 0x02, 0x24, 0x06, 0x00, - 0x02, 0x12, 0xff, 0xff, 0x11, 0x24, 0xfc, 0xc9, 0x00, 0x0c, 0x20, 0x00, 0x04, - 0x24, 0xff, 0xff, 0x10, 0x26, 0xfc, 0xff, 0x11, 0x16, 0x00, 0x00, 0x00, 0x00, - 0x54, 0x00, 0xbf, 0x8f, 0x50, 0x00, 0xb4, 0x8f, 0x4c, 0x00, 0xb3, 0x8f, 0x48, - 0x00, 0xb2, 0x8f, 0x44, 0x00, 0xb1, 0x8f, 0x40, 0x00, 0xb0, 0x8f, 0x08, 0x00, - 0xe0, 0x03, 0x58, 0x00, 0xbd, 0x27, 0x04, 0xc8, 0x00, 0x08, 0x21, 0x18, 0x00, - 0x00, 0x01, 0x00, 0x63, 0x24, 0x00, 0x00, 0x82, 0x80, 0x00, 0x00, 0x00, 0x00, - 0xfc, 0xff, 0x40, 0x14, 0x01, 0x00, 0x84, 0x24, 0x08, 0x00, 0xe0, 0x03, 0x21, - 0x10, 0x60, 0x00, 0xd8, 0xff, 0xbd, 0x27, 0x20, 0x00, 0xbf, 0xaf, 0x1c, 0x00, - 0xb1, 0xaf, 0x18, 0x00, 0xb0, 0xaf, 0x21, 0x88, 0xc0, 0x00, 0x00, 0x00, 0x22, - 0x92, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x40, 0x10, 0x21, 0x18, 0x40, 0x00, - 0x21, 0x80, 0x60, 0x00, 0xff, 0x00, 0x03, 0x32, 0x0a, 0x00, 0x02, 0x24, 0x0c, - 0x00, 0x62, 0x10, 0x0b, 0x00, 0x62, 0x28, 0x05, 0x00, 0x40, 0x10, 0x09, 0x00, - 0x02, 0x24, 0x10, 0x00, 0x62, 0x10, 0x20, 0x00, 0x62, 0x2c, 0x2f, 0xc8, 0x00, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x02, 0x24, 0x07, 0x00, 0x62, 0x10, - 0xff, 0x00, 0x03, 0x32, 0x2f, 0xc8, 0x00, 0x08, 0x20, 0x00, 0x62, 0x2c, 0xfc, - 0xc9, 0x00, 0x0c, 0x5c, 0x00, 0x04, 0x24, 0x4c, 0xc8, 0x00, 0x08, 0x6e, 0x00, - 0x04, 0x24, 0xfc, 0xc9, 0x00, 0x0c, 0x5c, 0x00, 0x04, 0x24, 0x4c, 0xc8, 0x00, - 0x08, 0x72, 0x00, 0x04, 0x24, 0xfc, 0xc9, 0x00, 0x0c, 0x5c, 0x00, 0x04, 0x24, - 0x4c, 0xc8, 0x00, 0x08, 0x74, 0x00, 0x04, 0x24, 0x03, 0x00, 0x40, 0x14, 0xff, - 0x00, 0x02, 0x24, 0x18, 0x00, 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xc9, - 0x00, 0x0c, 0x5c, 0x00, 0x04, 0x24, 0xfc, 0xc9, 0x00, 0x0c, 0x30, 0x00, 0x04, - 0x24, 0xfc, 0xc9, 0x00, 0x0c, 0x78, 0x00, 0x04, 0x24, 0x02, 0x21, 0x10, 0x00, - 0x0a, 0x00, 0x82, 0x28, 0x03, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x40, - 0xc8, 0x00, 0x08, 0x30, 0x00, 0x84, 0x24, 0x37, 0x00, 0x84, 0x24, 0xfc, 0xc9, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x04, 0x32, 0x0a, 0x00, 0x82, - 0x28, 0x03, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4c, 0xc8, 0x00, 0x08, - 0x30, 0x00, 0x84, 0x24, 0x4c, 0xc8, 0x00, 0x08, 0x37, 0x00, 0x84, 0x24, 0x00, - 0x00, 0x24, 0x82, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xc9, 0x00, 0x0c, 0x01, 0x00, - 0x31, 0x26, 0x00, 0x00, 0x23, 0x92, 0x00, 0x00, 0x22, 0x82, 0x00, 0x00, 0x00, - 0x00, 0xc2, 0xff, 0x40, 0x14, 0x21, 0x80, 0x60, 0x00, 0x20, 0x00, 0xbf, 0x8f, - 0x1c, 0x00, 0xb1, 0x8f, 0x18, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x28, - 0x00, 0xbd, 0x27, 0xd0, 0xff, 0xbd, 0x27, 0x28, 0x00, 0xbf, 0xaf, 0x24, 0x00, - 0xb3, 0xaf, 0x20, 0x00, 0xb2, 0xaf, 0x1c, 0x00, 0xb1, 0xaf, 0x18, 0x00, 0xb0, - 0xaf, 0x21, 0x80, 0xa0, 0x00, 0x21, 0x88, 0xc0, 0x00, 0x21, 0x98, 0x80, 0x00, - 0x01, 0xc8, 0x00, 0x0c, 0x21, 0x20, 0x20, 0x02, 0x21, 0x20, 0x40, 0x00, 0x2a, - 0x10, 0x90, 0x00, 0x02, 0x00, 0x40, 0x10, 0x21, 0x18, 0x00, 0x00, 0x23, 0x18, - 0x04, 0x02, 0x21, 0x80, 0x60, 0x00, 0x00, 0x16, 0x13, 0x00, 0x03, 0x16, 0x02, - 0x00, 0x01, 0x00, 0x03, 0x24, 0x0b, 0x00, 0x43, 0x14, 0x00, 0x16, 0x13, 0x00, - 0xff, 0xff, 0x10, 0x26, 0xff, 0xff, 0x02, 0x24, 0x07, 0x00, 0x02, 0x12, 0x00, - 0x16, 0x13, 0x00, 0xff, 0xff, 0x12, 0x24, 0xfc, 0xc9, 0x00, 0x0c, 0x20, 0x00, - 0x04, 0x24, 0xff, 0xff, 0x10, 0x26, 0xfc, 0xff, 0x12, 0x16, 0x00, 0x16, 0x13, - 0x00, 0x03, 0x16, 0x02, 0x00, 0x02, 0x00, 0x03, 0x24, 0x0a, 0x00, 0x43, 0x14, - 0xff, 0xff, 0x02, 0x24, 0xff, 0xff, 0x10, 0x26, 0x07, 0x00, 0x02, 0x12, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x12, 0x24, 0xfc, 0xc9, 0x00, 0x0c, 0x30, 0x00, - 0x04, 0x24, 0xff, 0xff, 0x10, 0x26, 0xfc, 0xff, 0x12, 0x16, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x40, 0x10, - 0x21, 0x20, 0x40, 0x00, 0x00, 0x26, 0x04, 0x00, 0x01, 0x00, 0x31, 0x26, 0xfc, - 0xc9, 0x00, 0x0c, 0x03, 0x26, 0x04, 0x00, 0x00, 0x00, 0x24, 0x92, 0x00, 0x00, - 0x22, 0x82, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x16, 0x13, 0x00, 0x03, 0x16, 0x02, 0x00, 0x03, 0x00, 0x03, 0x24, - 0x09, 0x00, 0x43, 0x14, 0xff, 0xff, 0x10, 0x26, 0xff, 0xff, 0x02, 0x24, 0x06, - 0x00, 0x02, 0x12, 0xff, 0xff, 0x11, 0x24, 0xfc, 0xc9, 0x00, 0x0c, 0x20, 0x00, - 0x04, 0x24, 0xff, 0xff, 0x10, 0x26, 0xfc, 0xff, 0x11, 0x16, 0x00, 0x00, 0x00, - 0x00, 0x28, 0x00, 0xbf, 0x8f, 0x24, 0x00, 0xb3, 0x8f, 0x20, 0x00, 0xb2, 0x8f, - 0x1c, 0x00, 0xb1, 0x8f, 0x18, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x30, - 0x00, 0xbd, 0x27, 0xd0, 0xff, 0xbd, 0x27, 0x2c, 0x00, 0xbf, 0xaf, 0x28, 0x00, - 0xb4, 0xaf, 0x24, 0x00, 0xb3, 0xaf, 0x20, 0x00, 0xb2, 0xaf, 0x1c, 0x00, 0xb1, - 0xaf, 0x18, 0x00, 0xb0, 0xaf, 0x21, 0x98, 0x80, 0x00, 0x21, 0xa0, 0xa0, 0x00, - 0x21, 0x80, 0x00, 0x00, 0x21, 0x88, 0x00, 0x00, 0x01, 0x00, 0x62, 0x82, 0x00, - 0x00, 0x00, 0x00, 0x71, 0x00, 0x40, 0x10, 0x01, 0x00, 0x12, 0x24, 0x21, 0x10, - 0x72, 0x02, 0x00, 0x00, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, 0xdb, 0xff, 0x42, - 0x24, 0x00, 0x16, 0x02, 0x00, 0x03, 0x1e, 0x02, 0x00, 0x54, 0x00, 0x62, 0x2c, - 0x68, 0x00, 0x40, 0x10, 0x80, 0x10, 0x03, 0x00, 0x03, 0x80, 0x01, 0x3c, 0x21, - 0x08, 0x22, 0x00, 0x60, 0x58, 0x22, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xc9, 0x00, 0x0c, 0x25, 0x00, 0x04, - 0x24, 0x0e, 0xc9, 0x00, 0x08, 0x21, 0x10, 0x72, 0x02, 0x21, 0x20, 0x00, 0x00, - 0x54, 0x85, 0x86, 0x27, 0x58, 0xc8, 0x00, 0x0c, 0x21, 0x28, 0x00, 0x00, 0x0e, - 0xc9, 0x00, 0x08, 0x21, 0x10, 0x72, 0x02, 0x00, 0x26, 0x14, 0x00, 0xfc, 0xc9, - 0x00, 0x0c, 0x03, 0x26, 0x04, 0x00, 0x0e, 0xc9, 0x00, 0x08, 0x21, 0x10, 0x72, - 0x02, 0x10, 0x00, 0xb4, 0xaf, 0x02, 0x00, 0x04, 0x24, 0x21, 0x28, 0x00, 0x00, - 0x21, 0x30, 0x00, 0x02, 0x94, 0xc7, 0x00, 0x0c, 0x21, 0x38, 0x20, 0x02, 0xfc, - 0xc9, 0x00, 0x0c, 0x42, 0x00, 0x04, 0x24, 0x0e, 0xc9, 0x00, 0x08, 0x21, 0x10, - 0x72, 0x02, 0x10, 0x00, 0xb4, 0xaf, 0x08, 0x00, 0x04, 0x24, 0x21, 0x28, 0x00, - 0x00, 0x21, 0x30, 0x00, 0x02, 0x94, 0xc7, 0x00, 0x0c, 0x21, 0x38, 0x20, 0x02, - 0xfc, 0xc9, 0x00, 0x0c, 0x51, 0x00, 0x04, 0x24, 0x0e, 0xc9, 0x00, 0x08, 0x21, - 0x10, 0x72, 0x02, 0x10, 0x00, 0xb4, 0xaf, 0x0a, 0x00, 0x04, 0x24, 0x01, 0x00, - 0x05, 0x24, 0x21, 0x30, 0x00, 0x02, 0x94, 0xc7, 0x00, 0x0c, 0x21, 0x38, 0x20, - 0x02, 0x0e, 0xc9, 0x00, 0x08, 0x21, 0x10, 0x72, 0x02, 0x10, 0x00, 0xb4, 0xaf, - 0x0a, 0x00, 0x04, 0x24, 0x21, 0x28, 0x00, 0x00, 0x21, 0x30, 0x00, 0x02, 0x94, - 0xc7, 0x00, 0x0c, 0x21, 0x38, 0x20, 0x02, 0x0e, 0xc9, 0x00, 0x08, 0x21, 0x10, - 0x72, 0x02, 0x21, 0x20, 0x00, 0x00, 0x60, 0x85, 0x86, 0x27, 0x58, 0xc8, 0x00, - 0x0c, 0x21, 0x28, 0x00, 0x00, 0x10, 0x00, 0xb4, 0xaf, 0x10, 0x00, 0x04, 0x24, - 0x21, 0x28, 0x00, 0x00, 0x21, 0x30, 0x00, 0x02, 0x94, 0xc7, 0x00, 0x0c, 0x21, - 0x38, 0x20, 0x02, 0x0e, 0xc9, 0x00, 0x08, 0x21, 0x10, 0x72, 0x02, 0x21, 0x20, - 0x00, 0x02, 0x21, 0x28, 0x20, 0x02, 0x58, 0xc8, 0x00, 0x0c, 0x21, 0x30, 0x80, - 0x02, 0x0e, 0xc9, 0x00, 0x08, 0x21, 0x10, 0x72, 0x02, 0x21, 0x20, 0x00, 0x02, - 0x21, 0x28, 0x20, 0x02, 0x0a, 0xc8, 0x00, 0x0c, 0x21, 0x30, 0x80, 0x02, 0x21, - 0x10, 0x72, 0x02, 0x26, 0xc9, 0x00, 0x08, 0x01, 0x00, 0x42, 0x24, 0x1f, 0xc9, - 0x00, 0x08, 0x03, 0x00, 0x10, 0x24, 0x03, 0x00, 0x00, 0x16, 0x80, 0x10, 0x11, - 0x00, 0x02, 0x00, 0x10, 0x24, 0x80, 0x10, 0x11, 0x00, 0x21, 0x10, 0x51, 0x00, - 0x40, 0x10, 0x02, 0x00, 0xd0, 0xff, 0x51, 0x24, 0x21, 0x10, 0x72, 0x02, 0x00, - 0x00, 0x42, 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x16, 0x21, 0x88, - 0x22, 0x02, 0x01, 0x00, 0x10, 0x24, 0x01, 0x00, 0x52, 0x26, 0x21, 0x10, 0x72, - 0x02, 0x00, 0x00, 0x42, 0x80, 0x00, 0x00, 0x00, 0x00, 0x92, 0xff, 0x40, 0x14, - 0x21, 0x10, 0x72, 0x02, 0x01, 0x00, 0x62, 0x26, 0x2c, 0x00, 0xbf, 0x8f, 0x28, - 0x00, 0xb4, 0x8f, 0x24, 0x00, 0xb3, 0x8f, 0x20, 0x00, 0xb2, 0x8f, 0x1c, 0x00, - 0xb1, 0x8f, 0x18, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x30, 0x00, 0xbd, - 0x27, 0x00, 0x00, 0xa4, 0xaf, 0x04, 0x00, 0xa5, 0xaf, 0x08, 0x00, 0xa6, 0xaf, - 0x0c, 0x00, 0xa7, 0xaf, 0xd0, 0xff, 0xbd, 0x27, 0x2c, 0x00, 0xbf, 0xaf, 0x28, - 0x00, 0xb4, 0xaf, 0x24, 0x00, 0xb3, 0xaf, 0x20, 0x00, 0xb2, 0xaf, 0x1c, 0x00, - 0xb1, 0xaf, 0x18, 0x00, 0xb0, 0xaf, 0x21, 0x80, 0x80, 0x00, 0x34, 0x00, 0xb1, - 0x27, 0x00, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x40, 0x10, - 0x21, 0x18, 0x40, 0x00, 0x25, 0x00, 0x14, 0x24, 0x45, 0x00, 0x13, 0x24, 0xfc, - 0xff, 0x12, 0x24, 0x00, 0x16, 0x03, 0x00, 0x03, 0x16, 0x02, 0x00, 0x12, 0x00, - 0x54, 0x14, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x82, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x00, 0x62, 0x10, 0x21, 0x20, 0x00, 0x02, 0x04, 0x00, 0x73, 0x14, - 0x03, 0x00, 0x22, 0x26, 0x21, 0x20, 0x00, 0x02, 0x53, 0xc9, 0x00, 0x08, 0x21, - 0x28, 0x00, 0x00, 0x24, 0x10, 0x52, 0x00, 0x04, 0x00, 0x51, 0x24, 0x21, 0x20, - 0x00, 0x02, 0xfc, 0xff, 0x25, 0x8e, 0xa6, 0xc8, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x5b, 0xc9, 0x00, 0x08, 0x21, 0x80, 0x40, 0x00, 0x00, 0x00, 0x04, 0x82, - 0x00, 0x00, 0x00, 0x00, 0xfc, 0xc9, 0x00, 0x0c, 0x01, 0x00, 0x10, 0x26, 0x00, - 0x00, 0x03, 0x92, 0x00, 0x00, 0x02, 0x82, 0x00, 0x00, 0x00, 0x00, 0xe4, 0xff, - 0x40, 0x14, 0x00, 0x16, 0x03, 0x00, 0x2c, 0x00, 0xbf, 0x8f, 0x28, 0x00, 0xb4, - 0x8f, 0x24, 0x00, 0xb3, 0x8f, 0x20, 0x00, 0xb2, 0x8f, 0x1c, 0x00, 0xb1, 0x8f, - 0x18, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x30, 0x00, 0xbd, 0x27, 0xe8, - 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x00, 0xa0, 0x04, 0x3c, 0x30, 0x0c, - 0x84, 0x34, 0x00, 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x00, 0x40, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, - 0x3f, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x83, 0x8c, 0xff, - 0x3f, 0x02, 0x3c, 0xff, 0xff, 0x42, 0x34, 0x24, 0x18, 0x62, 0x00, 0x00, 0x80, - 0x02, 0x3c, 0x25, 0x18, 0x62, 0x00, 0x08, 0x00, 0x82, 0x94, 0x00, 0x00, 0x00, - 0x00, 0x81, 0x00, 0x42, 0x2c, 0x04, 0x00, 0x40, 0x14, 0x00, 0xa0, 0x02, 0x3c, - 0x80, 0x00, 0x02, 0x24, 0x08, 0x00, 0x82, 0xa4, 0x00, 0xa0, 0x02, 0x3c, 0x30, - 0x0c, 0x42, 0x34, 0x00, 0x00, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, - 0x44, 0x30, 0x02, 0x00, 0x02, 0x24, 0x0f, 0x00, 0x82, 0x10, 0x03, 0x00, 0x82, - 0x28, 0x05, 0x00, 0x40, 0x10, 0x01, 0x00, 0x02, 0x24, 0x08, 0x00, 0x82, 0x10, - 0x21, 0x28, 0x60, 0x00, 0xb2, 0xc9, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x03, - 0x00, 0x02, 0x24, 0x1b, 0x00, 0x82, 0x10, 0x00, 0xa0, 0x02, 0x3c, 0xb2, 0xc9, - 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x03, 0x3c, 0x99, 0xc9, 0x00, - 0x08, 0x3a, 0x0c, 0x63, 0x34, 0x00, 0xa0, 0x05, 0x3c, 0x3a, 0x0c, 0xa5, 0x34, - 0x00, 0xa0, 0x02, 0x3c, 0x30, 0x0c, 0x42, 0x34, 0x08, 0x00, 0x42, 0x94, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x44, 0x30, 0xff, 0xff, 0x84, 0x24, 0x09, 0x00, - 0x80, 0x04, 0x00, 0xa0, 0x02, 0x3c, 0x00, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x62, 0xa0, 0x01, 0x00, 0xa5, 0x24, 0xff, 0xff, 0x84, 0x24, - 0xfa, 0xff, 0x81, 0x04, 0x01, 0x00, 0x63, 0x24, 0x00, 0xa0, 0x02, 0x3c, 0x30, - 0x0c, 0x42, 0x34, 0xb2, 0xc9, 0x00, 0x08, 0x00, 0x00, 0x40, 0xa0, 0x30, 0x0c, - 0x42, 0x34, 0x00, 0x00, 0x40, 0xa0, 0x04, 0x00, 0x42, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x09, 0xf8, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xbf, 0x8f, - 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, - 0xbf, 0xaf, 0x00, 0xa0, 0x03, 0x3c, 0x20, 0x0c, 0x63, 0x90, 0x01, 0x00, 0x02, - 0x24, 0x09, 0x00, 0x62, 0x14, 0x04, 0xa2, 0x03, 0x3c, 0x85, 0x1e, 0x02, 0x24, - 0x00, 0x00, 0x62, 0xac, 0x04, 0xa2, 0x03, 0x3c, 0x28, 0x00, 0x63, 0x34, 0x03, - 0x00, 0x02, 0x3c, 0xff, 0xff, 0x42, 0x34, 0xc9, 0xc9, 0x00, 0x08, 0x00, 0x00, - 0x62, 0xac, 0xcd, 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xbf, - 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, - 0xe0, 0xff, 0xbd, 0x27, 0x1c, 0x00, 0xbf, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, - 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x90, 0x00, 0x00, 0x03, 0x80, - 0x11, 0x3c, 0xe0, 0x59, 0x31, 0x26, 0x21, 0x80, 0x00, 0x00, 0x90, 0x8f, 0x80, - 0xaf, 0x21, 0x28, 0x00, 0x00, 0x21, 0x20, 0x20, 0x02, 0x00, 0x00, 0x82, 0x94, - 0x02, 0x00, 0x83, 0x90, 0x04, 0xa2, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0x00, - 0x00, 0x23, 0xa0, 0x90, 0x8f, 0x80, 0xaf, 0x01, 0x00, 0xa5, 0x24, 0x04, 0x00, - 0xa2, 0x28, 0xf7, 0xff, 0x40, 0x14, 0x04, 0x00, 0x84, 0x24, 0x00, 0x00, 0x82, - 0x94, 0x04, 0xa2, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0x00, 0x00, 0x22, 0x90, - 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x42, 0x30, 0x08, 0x00, 0x40, 0x10, 0x64, - 0x00, 0x02, 0x2a, 0x04, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x70, 0x85, - 0x84, 0x27, 0x3a, 0xc0, 0x00, 0x0c, 0x61, 0x00, 0x05, 0x24, 0xd6, 0xc9, 0x00, - 0x08, 0x01, 0x00, 0x10, 0x26, 0x05, 0x00, 0x52, 0x26, 0x0f, 0x00, 0x42, 0x2a, - 0xe0, 0xff, 0x40, 0x14, 0x14, 0x00, 0x31, 0x26, 0x1c, 0x00, 0xbf, 0x8f, 0x18, - 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, - 0xe0, 0x03, 0x20, 0x00, 0xbd, 0x27, 0xe8, 0xff, 0xbd, 0x27, 0x21, 0x28, 0x80, - 0x00, 0x00, 0x26, 0x04, 0x00, 0x03, 0x26, 0x04, 0x00, 0x0a, 0x00, 0x02, 0x24, - 0x06, 0x00, 0x82, 0x10, 0x10, 0x00, 0xbf, 0xaf, 0x0d, 0x00, 0x02, 0x24, 0x0b, - 0x00, 0x82, 0x10, 0x00, 0x26, 0x05, 0x00, 0x18, 0xca, 0x00, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x85, 0x83, 0x93, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x62, - 0x30, 0x11, 0x00, 0x40, 0x14, 0x01, 0x00, 0x62, 0x34, 0x80, 0x85, 0x82, 0xa3, - 0x19, 0xca, 0x00, 0x08, 0x00, 0x26, 0x05, 0x00, 0x80, 0x85, 0x83, 0x93, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x62, 0x30, 0x09, 0x00, 0x40, 0x14, 0x02, 0x00, - 0x62, 0x34, 0x80, 0x85, 0x82, 0xa3, 0x19, 0xca, 0x00, 0x08, 0x00, 0x26, 0x05, - 0x00, 0x80, 0x85, 0x80, 0xa3, 0x38, 0xc7, 0x00, 0x0c, 0x03, 0x26, 0x04, 0x00, - 0x6f, 0xc7, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xbf, 0x8f, 0x18, - 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xff, - 0xbd, 0x27, 0x2c, 0x00, 0xbf, 0xaf, 0x28, 0x00, 0xb4, 0xaf, 0x24, 0x00, 0xb3, - 0xaf, 0x20, 0x00, 0xb2, 0xaf, 0x1c, 0x00, 0xb1, 0xaf, 0x18, 0x00, 0xb0, 0xaf, - 0x21, 0x80, 0xa0, 0x00, 0x03, 0x00, 0x00, 0x1e, 0x21, 0x88, 0x80, 0x00, 0x31, - 0xca, 0x00, 0x08, 0x01, 0x00, 0x10, 0x24, 0x1a, 0x00, 0x02, 0x2a, 0x03, 0x00, - 0x40, 0x14, 0x21, 0x98, 0x20, 0x02, 0x19, 0x00, 0x10, 0x24, 0x21, 0x98, 0x20, - 0x02, 0x21, 0x90, 0x00, 0x02, 0x0a, 0x00, 0x40, 0x12, 0xff, 0xff, 0x50, 0x26, - 0xff, 0xff, 0x14, 0x24, 0x84, 0x85, 0x84, 0x27, 0x00, 0x00, 0x25, 0x92, 0x00, - 0x00, 0x00, 0x00, 0x2e, 0xc9, 0x00, 0x0c, 0x01, 0x00, 0x31, 0x26, 0xff, 0xff, - 0x10, 0x26, 0xf9, 0xff, 0x14, 0x16, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x42, - 0x2a, 0x15, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xc9, 0x00, 0x0c, - 0x20, 0x00, 0x04, 0x24, 0xff, 0xff, 0x52, 0x26, 0xff, 0xff, 0x02, 0x24, 0x0f, - 0x00, 0x42, 0x12, 0xff, 0xff, 0x10, 0x24, 0x00, 0x00, 0x64, 0x92, 0x00, 0x00, - 0x00, 0x00, 0xe0, 0xff, 0x82, 0x24, 0x5f, 0x00, 0x42, 0x2c, 0x03, 0x00, 0x40, - 0x10, 0x00, 0x26, 0x04, 0x00, 0x50, 0xca, 0x00, 0x08, 0x03, 0x26, 0x04, 0x00, - 0x2e, 0x00, 0x04, 0x24, 0xfc, 0xc9, 0x00, 0x0c, 0x01, 0x00, 0x73, 0x26, 0xff, - 0xff, 0x52, 0x26, 0xf3, 0xff, 0x50, 0x16, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, - 0xbf, 0x8f, 0x28, 0x00, 0xb4, 0x8f, 0x24, 0x00, 0xb3, 0x8f, 0x20, 0x00, 0xb2, - 0x8f, 0x1c, 0x00, 0xb1, 0x8f, 0x18, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, - 0x30, 0x00, 0xbd, 0x27, 0xe8, 0xff, 0xbd, 0x27, 0x14, 0x00, 0xbf, 0xaf, 0x10, - 0x00, 0xb0, 0xaf, 0xfc, 0xc9, 0x00, 0x0c, 0x0d, 0x00, 0x04, 0x24, 0x21, 0x80, - 0x00, 0x00, 0xfc, 0xc9, 0x00, 0x0c, 0x20, 0x00, 0x04, 0x24, 0x01, 0x00, 0x10, - 0x26, 0x4e, 0x00, 0x02, 0x2a, 0xfb, 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, - 0xfc, 0xc9, 0x00, 0x0c, 0x0d, 0x00, 0x04, 0x24, 0x14, 0x00, 0xbf, 0x8f, 0x10, - 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x18, 0x00, 0xbd, 0x27, 0xf8, 0xff, - 0xbd, 0x27, 0x05, 0x00, 0x80, 0x10, 0xff, 0xff, 0x82, 0x24, 0xff, 0xff, 0x03, - 0x24, 0xff, 0xff, 0x42, 0x24, 0xff, 0xff, 0x43, 0x14, 0xff, 0xff, 0x42, 0x24, - 0x08, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xd0, - 0xff, 0xbd, 0x27, 0x2c, 0x00, 0xbf, 0xaf, 0x28, 0x00, 0xb6, 0xaf, 0x24, 0x00, - 0xb5, 0xaf, 0x20, 0x00, 0xb4, 0xaf, 0x1c, 0x00, 0xb3, 0xaf, 0x18, 0x00, 0xb2, - 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x00, 0xa0, 0x02, 0x3c, - 0x20, 0x0c, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x40, 0x10, 0x00, - 0x00, 0x00, 0x00, 0xb3, 0xcb, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xa9, 0xcb, - 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x80, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x5d, 0xca, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x85, 0x84, 0x27, - 0x2e, 0xc9, 0x00, 0x0c, 0x21, 0x90, 0x00, 0x00, 0x06, 0xa2, 0x02, 0x3c, 0x00, - 0x00, 0x40, 0xa4, 0x63, 0x00, 0x11, 0x24, 0x04, 0xa2, 0x10, 0x3c, 0x34, 0x00, - 0x15, 0x24, 0x10, 0x00, 0x13, 0x24, 0xe2, 0x00, 0x14, 0x24, 0x4c, 0xc7, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xca, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, - 0x0c, 0x00, 0x15, 0xa2, 0x6f, 0xca, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x00, - 0x00, 0x13, 0xa2, 0x6f, 0xca, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x00, 0x00, - 0x13, 0xa2, 0x6f, 0xca, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x0c, 0x00, 0x14, - 0xa2, 0x6f, 0xca, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x00, 0x00, 0x02, 0x92, - 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x42, 0x30, 0x04, 0x00, 0x40, 0x10, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x31, 0x26, 0xe9, 0xff, 0x20, 0x16, 0x00, 0x00, - 0x00, 0x00, 0x05, 0x00, 0x20, 0x16, 0x63, 0x00, 0x11, 0x24, 0xa4, 0x85, 0x84, - 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x08, 0x00, 0x52, 0x36, 0x63, 0x00, 0x11, 0x24, - 0x04, 0xa2, 0x10, 0x3c, 0xb4, 0x00, 0x15, 0x24, 0xff, 0x00, 0x13, 0x24, 0xe8, - 0x00, 0x14, 0x24, 0x4c, 0xc7, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xca, - 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x0c, 0x00, 0x15, 0xa2, 0x6f, 0xca, 0x00, - 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x08, 0x00, 0x13, 0xa2, 0x6f, 0xca, 0x00, 0x0c, - 0x0a, 0x00, 0x04, 0x24, 0x08, 0x00, 0x13, 0xa2, 0x6f, 0xca, 0x00, 0x0c, 0x0a, - 0x00, 0x04, 0x24, 0x0c, 0x00, 0x14, 0xa2, 0x6f, 0xca, 0x00, 0x0c, 0x0a, 0x00, - 0x04, 0x24, 0x08, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x42, - 0x30, 0x04, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x31, 0x26, - 0xe9, 0xff, 0x20, 0x16, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x20, 0x16, 0x02, - 0x00, 0x10, 0x24, 0xc0, 0x85, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x08, 0x00, - 0x52, 0x36, 0x02, 0x00, 0x10, 0x24, 0xff, 0xff, 0x11, 0x24, 0x4c, 0xc7, 0x00, - 0x0c, 0xff, 0xff, 0x10, 0x26, 0xfd, 0xff, 0x11, 0x16, 0xd8, 0x00, 0x02, 0x24, - 0x04, 0xa2, 0x10, 0x3c, 0x0c, 0x00, 0x02, 0xa2, 0x6f, 0xca, 0x00, 0x0c, 0x0a, - 0x00, 0x04, 0x24, 0x08, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, - 0x51, 0x30, 0x6f, 0xca, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x08, 0x00, 0x02, - 0x92, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x43, 0x30, 0xff, 0x00, 0x02, 0x24, - 0x07, 0x00, 0x62, 0x14, 0x06, 0xa2, 0x02, 0x3c, 0x05, 0x00, 0x23, 0x16, 0x00, - 0x00, 0x00, 0x00, 0xdc, 0x85, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x06, 0xa2, 0x02, 0x3c, 0x00, 0x00, 0x40, 0xa4, 0xfa, 0xc1, 0x00, - 0x0c, 0x21, 0x20, 0x00, 0x00, 0x00, 0xa0, 0x10, 0x3c, 0x80, 0x01, 0x10, 0x36, - 0x01, 0x00, 0x11, 0x24, 0x00, 0x00, 0x11, 0xae, 0xfa, 0xc1, 0x00, 0x0c, 0x01, - 0x04, 0x04, 0x24, 0x00, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, - 0x51, 0x10, 0x15, 0x00, 0x10, 0x3c, 0xf4, 0x85, 0x84, 0x27, 0x2e, 0xc9, 0x00, - 0x0c, 0x01, 0x00, 0x52, 0x36, 0x15, 0x00, 0x10, 0x3c, 0xbf, 0x5c, 0x10, 0x36, - 0x00, 0xa0, 0x04, 0x3c, 0x80, 0x01, 0x84, 0x34, 0xff, 0xff, 0x03, 0x24, 0x00, - 0x00, 0x82, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x40, 0x10, 0xff, 0xff, - 0x10, 0x26, 0xfb, 0xff, 0x03, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x02, - 0x3c, 0x80, 0x01, 0x42, 0x34, 0x00, 0x00, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x40, 0x10, 0x06, 0xa2, 0x02, 0x3c, 0x10, 0x86, 0x84, 0x27, 0x2e, - 0xc9, 0x00, 0x0c, 0x02, 0x00, 0x52, 0x36, 0x06, 0xa2, 0x02, 0x3c, 0x00, 0x00, - 0x40, 0xa4, 0x63, 0x00, 0x11, 0x24, 0x04, 0xa2, 0x10, 0x3c, 0x34, 0x00, 0x15, - 0x24, 0xff, 0x00, 0x13, 0x24, 0xe2, 0x00, 0x14, 0x24, 0x4c, 0xc7, 0x00, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0x6f, 0xca, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x0c, - 0x00, 0x15, 0xa2, 0x6f, 0xca, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x00, 0x00, - 0x13, 0xa2, 0x6f, 0xca, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x00, 0x00, 0x13, - 0xa2, 0x6f, 0xca, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x0c, 0x00, 0x14, 0xa2, - 0x6f, 0xca, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x00, 0x00, 0x02, 0x92, 0x00, - 0x00, 0x00, 0x00, 0x40, 0x00, 0x42, 0x30, 0x04, 0x00, 0x40, 0x10, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x31, 0x26, 0xe9, 0xff, 0x20, 0x16, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x00, 0x20, 0x16, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x85, 0x84, 0x27, - 0x2e, 0xc9, 0x00, 0x0c, 0x08, 0x00, 0x52, 0x36, 0xfa, 0xc1, 0x00, 0x0c, 0x21, - 0x20, 0x00, 0x00, 0x00, 0xa0, 0x03, 0x3c, 0x80, 0x01, 0x63, 0x34, 0x01, 0x00, - 0x02, 0x24, 0x00, 0x00, 0x62, 0xac, 0xfa, 0xc1, 0x00, 0x0c, 0x01, 0x04, 0x04, - 0x24, 0x6f, 0xca, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x4c, 0xc7, 0x00, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x02, 0x3c, 0x80, 0x01, 0x42, 0x34, 0x00, - 0x00, 0x43, 0x8c, 0x01, 0x00, 0x02, 0x24, 0x04, 0x00, 0x62, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x30, 0x86, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x04, 0x00, 0x52, - 0x36, 0xfa, 0xc1, 0x00, 0x0c, 0x21, 0x20, 0x00, 0x00, 0x06, 0xa2, 0x02, 0x3c, - 0x00, 0x00, 0x40, 0xa4, 0x63, 0x00, 0x11, 0x24, 0x04, 0xa2, 0x10, 0x3c, 0x34, - 0x00, 0x16, 0x24, 0xcc, 0x00, 0x15, 0x24, 0x1c, 0x00, 0x14, 0x24, 0xe2, 0x00, - 0x13, 0x24, 0x4c, 0xc7, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xca, 0x00, - 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x0c, 0x00, 0x16, 0xa2, 0x6f, 0xca, 0x00, 0x0c, - 0x0a, 0x00, 0x04, 0x24, 0x00, 0x00, 0x15, 0xa2, 0x6f, 0xca, 0x00, 0x0c, 0x0a, - 0x00, 0x04, 0x24, 0x00, 0x00, 0x14, 0xa2, 0x6f, 0xca, 0x00, 0x0c, 0x0a, 0x00, - 0x04, 0x24, 0x0c, 0x00, 0x13, 0xa2, 0x6f, 0xca, 0x00, 0x0c, 0x0a, 0x00, 0x04, - 0x24, 0x00, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x42, 0x30, - 0x04, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x31, 0x26, 0xe9, - 0xff, 0x20, 0x16, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x20, 0x16, 0x63, 0x00, - 0x11, 0x24, 0xa4, 0x85, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x08, 0x00, 0x52, - 0x36, 0x63, 0x00, 0x11, 0x24, 0x04, 0xa2, 0x10, 0x3c, 0xb4, 0x00, 0x15, 0x24, - 0xff, 0x00, 0x13, 0x24, 0xe8, 0x00, 0x14, 0x24, 0x4c, 0xc7, 0x00, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x6f, 0xca, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x0c, 0x00, - 0x15, 0xa2, 0x6f, 0xca, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x08, 0x00, 0x13, - 0xa2, 0x6f, 0xca, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x08, 0x00, 0x13, 0xa2, - 0x6f, 0xca, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x0c, 0x00, 0x14, 0xa2, 0x6f, - 0xca, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x08, 0x00, 0x02, 0x92, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x00, 0x42, 0x30, 0x04, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x31, 0x26, 0xe9, 0xff, 0x20, 0x16, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x20, 0x16, 0x06, 0xa2, 0x02, 0x3c, 0xc0, 0x85, 0x84, 0x27, 0x2e, - 0xc9, 0x00, 0x0c, 0x08, 0x00, 0x52, 0x36, 0x06, 0xa2, 0x02, 0x3c, 0x00, 0x00, - 0x40, 0xa4, 0xfa, 0xc1, 0x00, 0x0c, 0x21, 0x20, 0x00, 0x00, 0x00, 0xa0, 0x03, - 0x3c, 0x80, 0x01, 0x63, 0x34, 0x01, 0x00, 0x02, 0x24, 0x00, 0x00, 0x62, 0xac, - 0xfa, 0xc1, 0x00, 0x0c, 0x01, 0x04, 0x04, 0x24, 0x05, 0x00, 0x40, 0x16, 0x21, - 0x10, 0x40, 0x02, 0x50, 0x86, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x21, 0x10, 0x40, 0x02, 0x2c, 0x00, 0xbf, 0x8f, 0x28, 0x00, 0xb6, - 0x8f, 0x24, 0x00, 0xb5, 0x8f, 0x20, 0x00, 0xb4, 0x8f, 0x1c, 0x00, 0xb3, 0x8f, - 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, - 0x00, 0xe0, 0x03, 0x30, 0x00, 0xbd, 0x27, 0xd8, 0xff, 0xbd, 0x27, 0x20, 0x00, - 0xbf, 0xaf, 0x1c, 0x00, 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb1, - 0xaf, 0x03, 0x00, 0x80, 0x10, 0x10, 0x00, 0xb0, 0xaf, 0x5d, 0xca, 0x00, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0x58, 0x86, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x21, - 0x90, 0x00, 0x00, 0x06, 0xa2, 0x02, 0x3c, 0x4c, 0xc7, 0x00, 0x0c, 0x00, 0x00, - 0x40, 0xa4, 0x6f, 0xca, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x04, 0xa2, 0x02, - 0x3c, 0x00, 0x00, 0x42, 0x8c, 0x03, 0x00, 0x03, 0x3c, 0xff, 0xff, 0x63, 0x34, - 0x24, 0x10, 0x43, 0x00, 0x85, 0x1e, 0x03, 0x24, 0x04, 0x00, 0x43, 0x10, 0x00, - 0x00, 0x00, 0x00, 0xa4, 0x85, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x08, 0x00, - 0x52, 0x36, 0x4c, 0xc7, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xca, 0x00, - 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x04, 0xa2, 0x02, 0x3c, 0x28, 0x00, 0x42, 0x34, - 0x00, 0x00, 0x42, 0x8c, 0x03, 0x00, 0x03, 0x3c, 0xff, 0xff, 0x63, 0x34, 0x24, - 0x10, 0x43, 0x00, 0x05, 0x00, 0x43, 0x10, 0x02, 0x00, 0x10, 0x24, 0x74, 0x86, - 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x08, 0x00, 0x52, 0x36, 0x02, 0x00, 0x10, - 0x24, 0xff, 0xff, 0x11, 0x24, 0x4c, 0xc7, 0x00, 0x0c, 0xff, 0xff, 0x10, 0x26, - 0xfd, 0xff, 0x11, 0x16, 0x00, 0x00, 0x00, 0x00, 0x04, 0xa2, 0x11, 0x3c, 0x3c, - 0x00, 0x31, 0x36, 0x00, 0x00, 0x22, 0x8e, 0x03, 0x00, 0x10, 0x3c, 0xff, 0xff, - 0x10, 0x36, 0x24, 0x98, 0x50, 0x00, 0x6f, 0xca, 0x00, 0x0c, 0x0a, 0x00, 0x04, - 0x24, 0x00, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x24, 0x10, 0x50, 0x00, - 0x07, 0x00, 0x40, 0x14, 0x06, 0xa2, 0x02, 0x3c, 0x05, 0x00, 0x60, 0x16, 0x00, - 0x00, 0x00, 0x00, 0x90, 0x86, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x06, 0xa2, 0x02, 0x3c, 0x00, 0x00, 0x40, 0xa4, 0xfa, 0xc1, 0x00, - 0x0c, 0x21, 0x20, 0x00, 0x00, 0x00, 0xa0, 0x03, 0x3c, 0x80, 0x01, 0x63, 0x34, - 0x01, 0x00, 0x02, 0x24, 0x00, 0x00, 0x62, 0xac, 0xfa, 0xc1, 0x00, 0x0c, 0x01, - 0x04, 0x04, 0x24, 0x4f, 0xc3, 0x10, 0x34, 0x00, 0xa0, 0x04, 0x3c, 0x80, 0x01, - 0x84, 0x34, 0xff, 0xff, 0x03, 0x24, 0x00, 0x00, 0x82, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x03, 0x00, 0x40, 0x10, 0xff, 0xff, 0x10, 0x26, 0xfb, 0xff, 0x03, 0x16, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x02, 0x3c, 0x80, 0x01, 0x42, 0x34, 0x00, - 0x00, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x40, 0x10, 0x04, 0xa2, - 0x02, 0x3c, 0x10, 0x86, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x02, 0x00, 0x52, - 0x36, 0x04, 0xa2, 0x02, 0x3c, 0x00, 0x00, 0x40, 0xac, 0x4f, 0xc3, 0x10, 0x34, - 0xff, 0xff, 0x11, 0x24, 0x4c, 0xc7, 0x00, 0x0c, 0xff, 0xff, 0x10, 0x26, 0xfd, - 0xff, 0x11, 0x16, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xca, 0x00, 0x0c, 0x0a, 0x00, - 0x04, 0x24, 0x06, 0xa2, 0x02, 0x3c, 0x00, 0x00, 0x40, 0xa4, 0xfa, 0xc1, 0x00, - 0x0c, 0x21, 0x20, 0x00, 0x00, 0x00, 0xa0, 0x10, 0x3c, 0x80, 0x01, 0x10, 0x36, - 0x01, 0x00, 0x11, 0x24, 0x00, 0x00, 0x11, 0xae, 0xfa, 0xc1, 0x00, 0x0c, 0x01, - 0x04, 0x04, 0x24, 0x00, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x51, 0x10, 0x00, 0x00, 0x00, 0x00, 0x30, 0x86, 0x84, 0x27, 0x2e, 0xc9, 0x00, - 0x0c, 0x04, 0x00, 0x52, 0x36, 0xfa, 0xc1, 0x00, 0x0c, 0x21, 0x20, 0x00, 0x00, - 0x06, 0xa2, 0x02, 0x3c, 0x00, 0x00, 0x40, 0xa4, 0xfa, 0xc1, 0x00, 0x0c, 0x21, - 0x20, 0x00, 0x00, 0x00, 0xa0, 0x03, 0x3c, 0x80, 0x01, 0x63, 0x34, 0x01, 0x00, - 0x02, 0x24, 0x00, 0x00, 0x62, 0xac, 0xfa, 0xc1, 0x00, 0x0c, 0x01, 0x04, 0x04, - 0x24, 0x04, 0xa2, 0x03, 0x3c, 0x85, 0x1e, 0x02, 0x24, 0x00, 0x00, 0x62, 0xac, - 0x05, 0x00, 0x40, 0x16, 0x21, 0x10, 0x40, 0x02, 0x50, 0x86, 0x84, 0x27, 0x2e, - 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x40, 0x02, 0x20, 0x00, - 0xbf, 0x8f, 0x1c, 0x00, 0xb3, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, - 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x28, 0x00, 0xbd, 0x27, - 0xc0, 0xff, 0xbd, 0x27, 0x3c, 0x00, 0xbf, 0xaf, 0x38, 0x00, 0xbe, 0xaf, 0x34, - 0x00, 0xb7, 0xaf, 0x30, 0x00, 0xb6, 0xaf, 0x2c, 0x00, 0xb5, 0xaf, 0x28, 0x00, - 0xb4, 0xaf, 0x24, 0x00, 0xb3, 0xaf, 0x20, 0x00, 0xb2, 0xaf, 0x1c, 0x00, 0xb1, - 0xaf, 0x18, 0x00, 0xb0, 0xaf, 0x21, 0xa8, 0x80, 0x00, 0x21, 0xf0, 0xc0, 0x00, - 0x50, 0x00, 0xb1, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0xc0, 0x13, 0x21, - 0xa0, 0xa0, 0x00, 0x03, 0x00, 0xe0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5d, 0xca, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x86, 0x84, 0x27, 0x21, 0x28, 0xa0, - 0x02, 0x2e, 0xc9, 0x00, 0x0c, 0x21, 0x30, 0x80, 0x02, 0x21, 0x80, 0xa0, 0x02, - 0x2b, 0x10, 0x90, 0x02, 0x06, 0x00, 0x40, 0x14, 0x21, 0x98, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xae, 0x04, 0x00, 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, 0xfc, 0xff, - 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4c, 0xc7, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x8f, 0x00, 0x20, 0x12, 0x21, 0x80, 0xa0, 0x02, 0x2b, 0x10, 0x90, 0x02, - 0x45, 0x00, 0x40, 0x14, 0x2b, 0x10, 0x95, 0x02, 0x11, 0x11, 0x17, 0x3c, 0x11, - 0x11, 0xf7, 0x36, 0x33, 0x33, 0x16, 0x3c, 0x33, 0x33, 0xd6, 0x36, 0x77, 0x77, - 0x12, 0x3c, 0x77, 0x77, 0x52, 0x36, 0xff, 0xff, 0x11, 0x24, 0x00, 0x00, 0x07, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0xe0, 0x10, 0x01, 0x00, 0x05, 0x24, - 0xd0, 0x86, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x2e, 0xc9, 0x00, 0x0c, 0x21, - 0x30, 0x00, 0x00, 0x01, 0x00, 0x73, 0x36, 0x00, 0x00, 0x17, 0xae, 0x00, 0x00, - 0x07, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0xf7, 0x10, 0x02, 0x00, 0x05, - 0x24, 0xd0, 0x86, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x11, 0x11, 0x06, 0x3c, - 0x2e, 0xc9, 0x00, 0x0c, 0x11, 0x11, 0xc6, 0x34, 0x02, 0x00, 0x73, 0x36, 0x00, - 0x00, 0x16, 0xae, 0x00, 0x00, 0x07, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, - 0xf6, 0x10, 0x03, 0x00, 0x05, 0x24, 0xd0, 0x86, 0x84, 0x8f, 0x10, 0x00, 0xb0, - 0xaf, 0x33, 0x33, 0x06, 0x3c, 0x2e, 0xc9, 0x00, 0x0c, 0x33, 0x33, 0xc6, 0x34, - 0x04, 0x00, 0x73, 0x36, 0x00, 0x00, 0x12, 0xae, 0x00, 0x00, 0x07, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x07, 0x00, 0xf2, 0x10, 0x04, 0x00, 0x05, 0x24, 0xd0, 0x86, - 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x77, 0x77, 0x06, 0x3c, 0x2e, 0xc9, 0x00, - 0x0c, 0x77, 0x77, 0xc6, 0x34, 0x08, 0x00, 0x73, 0x36, 0x00, 0x00, 0x11, 0xae, - 0x00, 0x00, 0x07, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0xf1, 0x10, 0x05, - 0x00, 0x05, 0x24, 0xd0, 0x86, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x2e, 0xc9, - 0x00, 0x0c, 0xff, 0xff, 0x06, 0x24, 0x10, 0x00, 0x73, 0x36, 0xff, 0x00, 0x02, - 0x32, 0x03, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x4c, 0xc7, 0x00, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, 0xc4, - 0xff, 0x40, 0x10, 0x2b, 0x10, 0x95, 0x02, 0xd5, 0x01, 0x40, 0x14, 0x21, 0x80, - 0x80, 0x02, 0x77, 0x77, 0x14, 0x3c, 0x77, 0x77, 0x94, 0x36, 0x33, 0x33, 0x12, - 0x3c, 0x33, 0x33, 0x52, 0x36, 0x11, 0x11, 0x11, 0x3c, 0x11, 0x11, 0x31, 0x36, - 0x00, 0x00, 0x07, 0x8e, 0xff, 0xff, 0x02, 0x24, 0x06, 0x00, 0xe2, 0x10, 0x06, - 0x00, 0x05, 0x24, 0xd0, 0x86, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x2e, 0xc9, - 0x00, 0x0c, 0xff, 0xff, 0x06, 0x24, 0x20, 0x00, 0x73, 0x36, 0x00, 0x00, 0x14, - 0xae, 0x00, 0x00, 0x07, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0xf4, 0x10, - 0x07, 0x00, 0x05, 0x24, 0xd0, 0x86, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x77, - 0x77, 0x06, 0x3c, 0x2e, 0xc9, 0x00, 0x0c, 0x77, 0x77, 0xc6, 0x34, 0x40, 0x00, - 0x73, 0x36, 0x00, 0x00, 0x12, 0xae, 0x00, 0x00, 0x07, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x07, 0x00, 0xf2, 0x10, 0x08, 0x00, 0x05, 0x24, 0xd0, 0x86, 0x84, 0x8f, - 0x10, 0x00, 0xb0, 0xaf, 0x33, 0x33, 0x06, 0x3c, 0x2e, 0xc9, 0x00, 0x0c, 0x33, - 0x33, 0xc6, 0x34, 0x80, 0x00, 0x73, 0x36, 0x00, 0x00, 0x11, 0xae, 0x00, 0x00, - 0x07, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0xf1, 0x10, 0x09, 0x00, 0x05, - 0x24, 0xd0, 0x86, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x11, 0x11, 0x06, 0x3c, - 0x2e, 0xc9, 0x00, 0x0c, 0x11, 0x11, 0xc6, 0x34, 0x00, 0x01, 0x73, 0x36, 0x00, - 0x00, 0x00, 0xae, 0x00, 0x00, 0x07, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, - 0xe0, 0x10, 0x0a, 0x00, 0x05, 0x24, 0xd0, 0x86, 0x84, 0x8f, 0x10, 0x00, 0xb0, - 0xaf, 0x2e, 0xc9, 0x00, 0x0c, 0x21, 0x30, 0x00, 0x00, 0x00, 0x02, 0x73, 0x36, - 0xff, 0x00, 0x02, 0x32, 0x03, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x4c, - 0xc7, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x10, 0x26, 0x2b, 0x10, - 0x15, 0x02, 0xc4, 0xff, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x8d, 0xce, 0x00, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0x95, 0x02, 0x58, 0x00, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x11, 0x24, 0x21, 0x90, 0x00, 0x00, 0x00, - 0x00, 0x07, 0x92, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xe7, 0x30, 0xff, 0x00, - 0x46, 0x32, 0x07, 0x00, 0xe6, 0x10, 0x25, 0x10, 0x51, 0x02, 0xd0, 0x86, 0x84, - 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x2e, 0xc9, 0x00, 0x0c, 0x01, 0x00, 0x05, 0x24, - 0x01, 0x00, 0x73, 0x36, 0x25, 0x10, 0x51, 0x02, 0x00, 0x00, 0x02, 0xa2, 0x00, - 0x00, 0x07, 0x92, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xe7, 0x30, 0xff, 0x00, - 0x46, 0x30, 0x06, 0x00, 0xe6, 0x10, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x86, 0x84, - 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x2e, 0xc9, 0x00, 0x0c, 0x02, 0x00, 0x05, 0x24, - 0x02, 0x00, 0x73, 0x36, 0x00, 0x00, 0x12, 0xa2, 0x00, 0x00, 0x07, 0x92, 0x00, - 0x00, 0x00, 0x00, 0xff, 0x00, 0xe7, 0x30, 0xff, 0x00, 0x46, 0x32, 0x07, 0x00, - 0xe6, 0x10, 0x25, 0x10, 0x51, 0x02, 0xd0, 0x86, 0x84, 0x8f, 0x10, 0x00, 0xb0, - 0xaf, 0x2e, 0xc9, 0x00, 0x0c, 0x03, 0x00, 0x05, 0x24, 0x04, 0x00, 0x73, 0x36, - 0x25, 0x10, 0x51, 0x02, 0x00, 0x00, 0x02, 0xa2, 0x40, 0x10, 0x11, 0x00, 0x21, - 0x88, 0x40, 0x00, 0xff, 0xff, 0x52, 0x24, 0xff, 0x00, 0x22, 0x32, 0xd5, 0xff, - 0x40, 0x14, 0xff, 0x00, 0x02, 0x32, 0x03, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x4c, 0xc7, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x26, - 0x2b, 0x10, 0x90, 0x02, 0xcb, 0xff, 0x40, 0x10, 0x2b, 0x10, 0x95, 0x02, 0x20, - 0x00, 0x40, 0x14, 0x21, 0x80, 0xa0, 0x02, 0x01, 0x00, 0x11, 0x24, 0xfe, 0x00, - 0x12, 0x24, 0x00, 0x00, 0x07, 0x92, 0x25, 0x10, 0x51, 0x02, 0xff, 0x00, 0xe7, - 0x30, 0xff, 0x00, 0x46, 0x30, 0x06, 0x00, 0xe6, 0x10, 0x00, 0x00, 0x00, 0x00, - 0xd0, 0x86, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x2e, 0xc9, 0x00, 0x0c, 0x04, - 0x00, 0x05, 0x24, 0x08, 0x00, 0x73, 0x36, 0x00, 0x00, 0x12, 0xa2, 0x25, 0x10, - 0x51, 0x02, 0x00, 0x00, 0x02, 0xa2, 0x40, 0x88, 0x11, 0x00, 0x40, 0x10, 0x12, - 0x00, 0x01, 0x00, 0x52, 0x34, 0xff, 0x00, 0x22, 0x32, 0xed, 0xff, 0x40, 0x14, - 0xff, 0x00, 0x02, 0x32, 0x03, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x4c, - 0xc7, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x26, 0x2b, 0x10, - 0x90, 0x02, 0xe4, 0xff, 0x40, 0x10, 0x01, 0x00, 0x11, 0x24, 0x2b, 0x10, 0x95, - 0x02, 0x3c, 0x00, 0x40, 0x14, 0x21, 0x80, 0x80, 0x02, 0x80, 0x00, 0x11, 0x24, - 0x7f, 0x00, 0x12, 0x24, 0x00, 0x00, 0x07, 0x92, 0x25, 0x10, 0x51, 0x02, 0xff, - 0x00, 0xe7, 0x30, 0xff, 0x00, 0x46, 0x30, 0x06, 0x00, 0xe6, 0x10, 0x00, 0x00, - 0x00, 0x00, 0xd0, 0x86, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x2e, 0xc9, 0x00, - 0x0c, 0x05, 0x00, 0x05, 0x24, 0x10, 0x00, 0x73, 0x36, 0x00, 0x00, 0x12, 0xa2, - 0x25, 0x10, 0x51, 0x02, 0x00, 0x00, 0x02, 0xa2, 0x00, 0x00, 0x12, 0xa2, 0xff, - 0x00, 0x22, 0x32, 0x42, 0x88, 0x02, 0x00, 0xff, 0x00, 0x42, 0x32, 0xed, 0xff, - 0x20, 0x16, 0x42, 0x90, 0x02, 0x00, 0xff, 0x00, 0x02, 0x32, 0x03, 0x00, 0x40, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x4c, 0xc7, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x10, 0x26, 0x2b, 0x10, 0x15, 0x02, 0xe3, 0xff, 0x40, 0x10, 0x80, - 0x00, 0x11, 0x24, 0x2b, 0x10, 0x95, 0x02, 0x1a, 0x00, 0x40, 0x14, 0x21, 0x80, - 0x80, 0x02, 0x80, 0x00, 0x11, 0x24, 0x00, 0x00, 0x07, 0x92, 0x00, 0x00, 0x00, - 0x00, 0xff, 0x00, 0xe7, 0x30, 0x06, 0x00, 0xe0, 0x10, 0x06, 0x00, 0x05, 0x24, - 0xd0, 0x86, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x2e, 0xc9, 0x00, 0x0c, 0x21, - 0x30, 0x00, 0x00, 0x20, 0x00, 0x73, 0x36, 0x00, 0x00, 0x11, 0xa2, 0x00, 0x00, - 0x00, 0xa2, 0xff, 0x00, 0x22, 0x32, 0x42, 0x88, 0x02, 0x00, 0xf1, 0xff, 0x20, - 0x16, 0xff, 0x00, 0x02, 0x32, 0x03, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x4c, 0xc7, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x10, 0x26, 0x2b, - 0x10, 0x15, 0x02, 0xe9, 0xff, 0x40, 0x10, 0x80, 0x00, 0x11, 0x24, 0x0f, 0x00, - 0x12, 0x24, 0x01, 0x00, 0x42, 0x32, 0x23, 0x10, 0x02, 0x00, 0x00, 0x44, 0x03, - 0x3c, 0x00, 0x11, 0x63, 0x34, 0x24, 0x88, 0x43, 0x00, 0x02, 0x00, 0x42, 0x32, - 0x03, 0x00, 0x40, 0x10, 0x00, 0x11, 0x02, 0x3c, 0x00, 0x44, 0x42, 0x34, 0x25, - 0x88, 0x22, 0x02, 0x04, 0x00, 0x42, 0x32, 0x03, 0x00, 0x40, 0x10, 0x88, 0x00, - 0x02, 0x3c, 0x22, 0x00, 0x42, 0x34, 0x25, 0x88, 0x22, 0x02, 0x08, 0x00, 0x42, - 0x32, 0x03, 0x00, 0x40, 0x10, 0x22, 0x00, 0x02, 0x3c, 0x88, 0x00, 0x42, 0x34, - 0x25, 0x88, 0x22, 0x02, 0x21, 0x80, 0xa0, 0x02, 0x2b, 0x10, 0x90, 0x02, 0x06, - 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xae, 0x04, 0x00, - 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, 0xfc, 0xff, 0x40, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x4c, 0xc7, 0x00, 0x0c, 0x21, 0x80, 0xa0, 0x02, 0x2b, 0x10, 0x90, 0x02, - 0x13, 0x00, 0x40, 0x14, 0x55, 0xaa, 0x02, 0x3c, 0x00, 0x00, 0x07, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x06, 0x00, 0xf1, 0x10, 0x07, 0x00, 0x05, 0x24, 0xd0, 0x86, - 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x2e, 0xc9, 0x00, 0x0c, 0x21, 0x30, 0x20, - 0x02, 0x40, 0x00, 0x73, 0x36, 0xff, 0x00, 0x02, 0x32, 0x03, 0x00, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x4c, 0xc7, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x00, 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, 0xef, 0xff, 0x40, 0x10, 0x55, 0xaa, - 0x02, 0x3c, 0x55, 0xaa, 0x42, 0x34, 0x25, 0x88, 0x22, 0x02, 0x21, 0x80, 0xa0, - 0x02, 0x2b, 0x10, 0x90, 0x02, 0x06, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x11, 0xae, 0x04, 0x00, 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, 0xfc, - 0xff, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4c, 0xc7, 0x00, 0x0c, 0x21, 0x80, - 0xa0, 0x02, 0x2b, 0x10, 0x90, 0x02, 0x13, 0x00, 0x40, 0x14, 0xaa, 0x55, 0x02, - 0x3c, 0x00, 0x00, 0x07, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0xf1, 0x10, - 0x08, 0x00, 0x05, 0x24, 0xd0, 0x86, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x2e, - 0xc9, 0x00, 0x0c, 0x21, 0x30, 0x20, 0x02, 0x80, 0x00, 0x73, 0x36, 0xff, 0x00, - 0x02, 0x32, 0x03, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x4c, 0xc7, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, - 0xef, 0xff, 0x40, 0x10, 0xaa, 0x55, 0x02, 0x3c, 0xaa, 0x55, 0x42, 0x34, 0x24, - 0x88, 0x22, 0x02, 0x21, 0x80, 0xa0, 0x02, 0x2b, 0x10, 0x90, 0x02, 0x06, 0x00, - 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xae, 0x04, 0x00, 0x10, - 0x26, 0x2b, 0x10, 0x90, 0x02, 0xfc, 0xff, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x4c, 0xc7, 0x00, 0x0c, 0x21, 0x80, 0xa0, 0x02, 0x2b, 0x10, 0x90, 0x02, 0x13, - 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x06, 0x00, 0xf1, 0x10, 0x09, 0x00, 0x05, 0x24, 0xd0, 0x86, 0x84, - 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x2e, 0xc9, 0x00, 0x0c, 0x21, 0x30, 0x20, 0x02, - 0x00, 0x01, 0x73, 0x36, 0xff, 0x00, 0x02, 0x32, 0x03, 0x00, 0x40, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x4c, 0xc7, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, 0xef, 0xff, 0x40, 0x10, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x52, 0x26, 0x87, 0xff, 0x41, 0x06, 0x01, 0x00, 0x42, 0x32, - 0x0f, 0x00, 0x12, 0x24, 0x01, 0x00, 0x42, 0x32, 0x23, 0x10, 0x02, 0x00, 0x00, - 0x88, 0x03, 0x3c, 0x00, 0x22, 0x63, 0x34, 0x24, 0x88, 0x43, 0x00, 0x02, 0x00, - 0x42, 0x32, 0x03, 0x00, 0x40, 0x10, 0x00, 0x22, 0x02, 0x3c, 0x00, 0x88, 0x42, - 0x34, 0x25, 0x88, 0x22, 0x02, 0x04, 0x00, 0x42, 0x32, 0x03, 0x00, 0x40, 0x10, - 0x44, 0x00, 0x02, 0x3c, 0x11, 0x00, 0x42, 0x34, 0x25, 0x88, 0x22, 0x02, 0x08, - 0x00, 0x42, 0x32, 0x03, 0x00, 0x40, 0x10, 0x11, 0x00, 0x02, 0x3c, 0x44, 0x00, - 0x42, 0x34, 0x25, 0x88, 0x22, 0x02, 0x21, 0x80, 0xa0, 0x02, 0x2b, 0x10, 0x90, - 0x02, 0x06, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xae, - 0x04, 0x00, 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, 0xfc, 0xff, 0x40, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x4c, 0xc7, 0x00, 0x0c, 0x21, 0x80, 0xa0, 0x02, 0x2b, 0x10, - 0x90, 0x02, 0x13, 0x00, 0x40, 0x14, 0xaa, 0x55, 0x02, 0x3c, 0x00, 0x00, 0x07, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0xf1, 0x10, 0x0a, 0x00, 0x05, 0x24, - 0xd0, 0x86, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x2e, 0xc9, 0x00, 0x0c, 0x21, - 0x30, 0x20, 0x02, 0x00, 0x02, 0x73, 0x36, 0xff, 0x00, 0x02, 0x32, 0x03, 0x00, - 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x4c, 0xc7, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x00, 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, 0xef, 0xff, 0x40, 0x10, - 0xaa, 0x55, 0x02, 0x3c, 0xaa, 0x55, 0x42, 0x34, 0x25, 0x88, 0x22, 0x02, 0x21, - 0x80, 0xa0, 0x02, 0x2b, 0x10, 0x90, 0x02, 0x06, 0x00, 0x40, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x11, 0xae, 0x04, 0x00, 0x10, 0x26, 0x2b, 0x10, 0x90, - 0x02, 0xfc, 0xff, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4c, 0xc7, 0x00, 0x0c, - 0x21, 0x80, 0xa0, 0x02, 0x2b, 0x10, 0x90, 0x02, 0x13, 0x00, 0x40, 0x14, 0x55, - 0xaa, 0x02, 0x3c, 0x00, 0x00, 0x07, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, - 0xf1, 0x10, 0x0b, 0x00, 0x05, 0x24, 0xd0, 0x86, 0x84, 0x8f, 0x10, 0x00, 0xb0, - 0xaf, 0x2e, 0xc9, 0x00, 0x0c, 0x21, 0x30, 0x20, 0x02, 0x00, 0x02, 0x73, 0x36, - 0xff, 0x00, 0x02, 0x32, 0x03, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x4c, - 0xc7, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x26, 0x2b, 0x10, - 0x90, 0x02, 0xef, 0xff, 0x40, 0x10, 0x55, 0xaa, 0x02, 0x3c, 0x55, 0xaa, 0x42, - 0x34, 0x24, 0x88, 0x22, 0x02, 0x21, 0x80, 0xa0, 0x02, 0x2b, 0x10, 0x90, 0x02, - 0x06, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xae, 0x04, - 0x00, 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, 0xfc, 0xff, 0x40, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x4c, 0xc7, 0x00, 0x0c, 0x21, 0x80, 0xa0, 0x02, 0x2b, 0x10, 0x90, - 0x02, 0x13, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0xf1, 0x10, 0x0c, 0x00, 0x05, 0x24, 0xd0, - 0x86, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x2e, 0xc9, 0x00, 0x0c, 0x21, 0x30, - 0x20, 0x02, 0x00, 0x02, 0x73, 0x36, 0xff, 0x00, 0x02, 0x32, 0x03, 0x00, 0x40, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x4c, 0xc7, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, 0xef, 0xff, 0x40, 0x10, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x52, 0x26, 0x87, 0xff, 0x41, 0x06, 0x01, 0x00, - 0x42, 0x32, 0x07, 0x00, 0x60, 0x16, 0x21, 0x10, 0x60, 0x02, 0x05, 0x00, 0xc0, - 0x13, 0x00, 0x00, 0x00, 0x00, 0x50, 0x86, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x60, 0x02, 0x3c, 0x00, 0xbf, 0x8f, 0x38, - 0x00, 0xbe, 0x8f, 0x34, 0x00, 0xb7, 0x8f, 0x30, 0x00, 0xb6, 0x8f, 0x2c, 0x00, - 0xb5, 0x8f, 0x28, 0x00, 0xb4, 0x8f, 0x24, 0x00, 0xb3, 0x8f, 0x20, 0x00, 0xb2, - 0x8f, 0x1c, 0x00, 0xb1, 0x8f, 0x18, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, - 0x40, 0x00, 0xbd, 0x27, 0xd8, 0xff, 0xbd, 0x27, 0x20, 0x00, 0xbf, 0xaf, 0x1c, - 0x00, 0xb1, 0xaf, 0x18, 0x00, 0xb0, 0xaf, 0x21, 0x88, 0x80, 0x00, 0x21, 0x80, - 0xa0, 0x00, 0xf4, 0x86, 0x84, 0x27, 0x80, 0x8f, 0x85, 0x8f, 0x2e, 0xc9, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, - 0x21, 0x28, 0x00, 0x02, 0x08, 0x87, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x21, - 0x28, 0x20, 0x02, 0x0e, 0x00, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x78, 0x8b, - 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x51, 0x00, 0x09, 0x00, 0x40, - 0x14, 0x40, 0x10, 0x11, 0x00, 0x21, 0x10, 0x51, 0x00, 0x80, 0x10, 0x02, 0x00, - 0x03, 0x80, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0xdc, 0x5b, 0x22, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x14, 0x40, 0x10, 0x11, 0x00, 0x14, 0x87, - 0x84, 0x27, 0x44, 0xcf, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x51, - 0x00, 0x80, 0x20, 0x02, 0x00, 0x03, 0x80, 0x02, 0x3c, 0xdc, 0x5b, 0x42, 0x24, - 0x21, 0x10, 0x82, 0x00, 0x08, 0x00, 0x41, 0x04, 0x00, 0x80, 0x03, 0x3c, 0x03, - 0x80, 0x02, 0x3c, 0x21, 0x10, 0x44, 0x00, 0xdc, 0x5b, 0x42, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x24, 0x10, 0x43, 0x00, 0x04, 0x00, 0x40, 0x14, 0x40, 0x10, 0x11, - 0x00, 0x2c, 0x87, 0x84, 0x27, 0x44, 0xcf, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x21, 0x10, 0x51, 0x00, 0x80, 0x10, 0x02, 0x00, 0x03, 0x80, 0x01, 0x3c, 0x21, - 0x08, 0x22, 0x00, 0xdc, 0x5b, 0x22, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xa2, 0x2c, 0x0a, 0x00, 0x40, - 0x14, 0x40, 0x10, 0x11, 0x00, 0x62, 0x10, 0x02, 0x3c, 0xd3, 0x4d, 0x42, 0x34, - 0x19, 0x00, 0xa2, 0x00, 0x44, 0x87, 0x84, 0x27, 0x10, 0x30, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xef, 0xce, 0x00, 0x08, 0x82, 0x29, - 0x06, 0x00, 0x21, 0x10, 0x51, 0x00, 0x80, 0x10, 0x02, 0x00, 0x03, 0x80, 0x01, - 0x3c, 0x21, 0x08, 0x22, 0x00, 0xdc, 0x5b, 0x22, 0x8c, 0x4c, 0x87, 0x84, 0x27, - 0x00, 0x00, 0x45, 0x8c, 0x2e, 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x40, - 0x10, 0x11, 0x00, 0x21, 0x10, 0x51, 0x00, 0x80, 0x10, 0x02, 0x00, 0x03, 0x80, - 0x03, 0x3c, 0x21, 0x18, 0x62, 0x00, 0xd8, 0x5b, 0x63, 0x8c, 0x03, 0x80, 0x02, - 0x3c, 0x34, 0x5b, 0x42, 0x24, 0x04, 0x00, 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x50, 0x87, 0x84, 0x27, 0x35, 0xcf, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x03, - 0x80, 0x02, 0x3c, 0xe4, 0x5a, 0x42, 0x24, 0x04, 0x00, 0x62, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x5c, 0x87, 0x84, 0x27, 0x35, 0xcf, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x03, 0x80, 0x02, 0x3c, 0x1c, 0x5b, 0x42, 0x24, 0x04, 0x00, 0x62, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x68, 0x87, 0x84, 0x27, 0x35, 0xcf, 0x00, 0x08, 0x00, - 0x00, 0x00, 0x00, 0x03, 0x80, 0x02, 0x3c, 0x00, 0x5b, 0x42, 0x24, 0x04, 0x00, - 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, 0x74, 0x87, 0x84, 0x27, 0x35, 0xcf, 0x00, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x02, 0x3c, 0x68, 0x5b, 0x42, 0x24, - 0x04, 0x00, 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, 0x80, 0x87, 0x84, 0x27, 0x35, - 0xcf, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x02, 0x3c, 0x84, 0x5b, - 0x42, 0x24, 0x04, 0x00, 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x87, 0x84, - 0x27, 0x35, 0xcf, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x02, 0x3c, - 0xa0, 0x5b, 0x42, 0x24, 0x04, 0x00, 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, 0x9c, - 0x87, 0x84, 0x27, 0x35, 0xcf, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, - 0x02, 0x3c, 0xbc, 0x5b, 0x42, 0x24, 0x04, 0x00, 0x62, 0x14, 0x00, 0x00, 0x00, - 0x00, 0xa8, 0x87, 0x84, 0x27, 0x35, 0xcf, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x80, 0x02, 0x3c, 0x4c, 0x5b, 0x42, 0x24, 0xc4, 0x87, 0x84, 0x27, 0x02, - 0x00, 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x87, 0x84, 0x27, 0x2e, 0xc9, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x11, 0x00, 0x21, 0x10, 0x51, - 0x00, 0x80, 0x10, 0x02, 0x00, 0x03, 0x80, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, - 0xe0, 0x5b, 0x22, 0x94, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x10, 0x00, - 0x00, 0x00, 0x00, 0xd0, 0x87, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0xd8, 0x87, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x20, 0x00, 0xbf, 0x8f, 0x1c, 0x00, 0xb1, 0x8f, 0x18, 0x00, 0xb0, 0x8f, - 0x08, 0x00, 0xe0, 0x03, 0x28, 0x00, 0xbd, 0x27, 0xd8, 0xff, 0xbd, 0x27, 0x20, - 0x00, 0xbf, 0xaf, 0x1c, 0x00, 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, - 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x90, 0x80, 0x00, 0x21, 0x88, 0xa0, - 0x00, 0x21, 0x98, 0xc0, 0x00, 0x84, 0x8f, 0x82, 0x93, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x42, 0x24, 0x02, 0x00, 0x42, 0x2c, 0x07, 0x00, 0x40, 0x14, 0x21, - 0x80, 0xe0, 0x00, 0x84, 0x8f, 0x83, 0x93, 0x04, 0x00, 0x02, 0x24, 0x03, 0x00, - 0x62, 0x10, 0x10, 0x00, 0x02, 0x24, 0xdc, 0x00, 0x62, 0x14, 0x21, 0x10, 0x20, - 0x02, 0x21, 0x00, 0x42, 0x92, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x34, - 0x21, 0x00, 0x42, 0xa2, 0x01, 0x00, 0x02, 0x3c, 0x9f, 0x86, 0x42, 0x34, 0xff, - 0xff, 0x42, 0x24, 0xff, 0xff, 0x40, 0x14, 0xff, 0xff, 0x42, 0x24, 0x08, 0x00, - 0x42, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x42, 0x30, 0x10, 0x00, 0x40, - 0x14, 0x00, 0x40, 0x02, 0x24, 0x04, 0x10, 0x02, 0x02, 0x20, 0x00, 0x42, 0x24, - 0xe4, 0x87, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x25, 0x88, 0x22, 0x02, 0x21, - 0x20, 0x60, 0x02, 0xa1, 0xce, 0x00, 0x0c, 0x21, 0x28, 0x00, 0x02, 0xe8, 0x87, - 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x45, - 0x92, 0xfc, 0x87, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0xff, 0x00, 0xa5, 0x30, - 0x21, 0x00, 0x42, 0x92, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x42, 0x30, 0x21, - 0x00, 0x42, 0xa2, 0x01, 0x00, 0x02, 0x3c, 0x9f, 0x86, 0x42, 0x34, 0xff, 0xff, - 0x42, 0x24, 0xff, 0xff, 0x40, 0x14, 0xff, 0xff, 0x42, 0x24, 0x08, 0x00, 0x42, - 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x42, 0x30, 0x0c, 0x00, 0x40, 0x10, - 0x00, 0x40, 0x02, 0x24, 0x04, 0x10, 0x02, 0x02, 0x20, 0x00, 0x42, 0x24, 0xe4, - 0x87, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x25, 0x88, 0x22, 0x02, 0x21, 0x20, - 0x60, 0x02, 0xa1, 0xce, 0x00, 0x0c, 0x21, 0x28, 0x00, 0x02, 0x0c, 0x88, 0x84, - 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x42, 0x92, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x34, 0x21, 0x00, 0x42, 0xa2, 0x01, - 0x00, 0x02, 0x3c, 0x9f, 0x86, 0x42, 0x34, 0xff, 0xff, 0x42, 0x24, 0xff, 0xff, - 0x40, 0x14, 0xff, 0xff, 0x42, 0x24, 0x08, 0x00, 0x42, 0x96, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x08, 0x42, 0x30, 0x10, 0x00, 0x40, 0x14, 0x00, 0x40, 0x02, 0x24, - 0x04, 0x10, 0x02, 0x02, 0x20, 0x00, 0x42, 0x24, 0xe4, 0x87, 0x84, 0x27, 0x2e, - 0xc9, 0x00, 0x0c, 0x25, 0x88, 0x22, 0x02, 0x21, 0x20, 0x60, 0x02, 0xa1, 0xce, - 0x00, 0x0c, 0x21, 0x28, 0x00, 0x02, 0xe8, 0x87, 0x84, 0x27, 0x2e, 0xc9, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x45, 0x92, 0xfc, 0x87, 0x84, 0x27, - 0x2e, 0xc9, 0x00, 0x0c, 0xff, 0x00, 0xa5, 0x30, 0x84, 0x8f, 0x83, 0x93, 0x02, - 0x00, 0x02, 0x24, 0x03, 0x00, 0x62, 0x10, 0x04, 0x00, 0x02, 0x24, 0x83, 0x00, - 0x62, 0x14, 0x21, 0x10, 0x20, 0x02, 0x07, 0xa2, 0x02, 0x3c, 0x00, 0x00, 0x40, - 0xa0, 0x01, 0x00, 0x02, 0x3c, 0x9f, 0x86, 0x42, 0x34, 0xff, 0xff, 0x42, 0x24, - 0xff, 0xff, 0x40, 0x14, 0xff, 0xff, 0x42, 0x24, 0x07, 0xa2, 0x02, 0x3c, 0x00, - 0x00, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x42, 0x30, 0x07, 0x10, - 0x02, 0x02, 0x01, 0x00, 0x42, 0x30, 0x0c, 0x00, 0x40, 0x10, 0x00, 0x40, 0x02, - 0x24, 0x04, 0x10, 0x02, 0x02, 0x20, 0x00, 0x42, 0x24, 0xe4, 0x87, 0x84, 0x27, - 0x2e, 0xc9, 0x00, 0x0c, 0x25, 0x88, 0x22, 0x02, 0x21, 0x20, 0x60, 0x02, 0xa1, - 0xce, 0x00, 0x0c, 0x21, 0x28, 0x00, 0x02, 0x20, 0x88, 0x84, 0x27, 0x2e, 0xc9, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x42, 0x96, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x42, 0x30, 0x0c, 0x00, 0x40, 0x10, 0x00, 0x40, 0x02, 0x24, - 0x04, 0x10, 0x02, 0x02, 0x20, 0x00, 0x42, 0x24, 0xe4, 0x87, 0x84, 0x27, 0x2e, - 0xc9, 0x00, 0x0c, 0x25, 0x88, 0x22, 0x02, 0x21, 0x20, 0x60, 0x02, 0xa1, 0xce, - 0x00, 0x0c, 0x21, 0x28, 0x00, 0x02, 0x34, 0x88, 0x84, 0x27, 0x2e, 0xc9, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x07, 0xa2, 0x03, 0x3c, 0x03, 0x00, 0x02, 0x24, - 0x00, 0x00, 0x62, 0xa0, 0x01, 0x00, 0x02, 0x3c, 0x9f, 0x86, 0x42, 0x34, 0xff, - 0xff, 0x42, 0x24, 0xff, 0xff, 0x40, 0x14, 0xff, 0xff, 0x42, 0x24, 0x07, 0xa2, - 0x02, 0x3c, 0x00, 0x00, 0x43, 0x90, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x63, - 0x30, 0x01, 0x00, 0x02, 0x24, 0x04, 0x10, 0x02, 0x02, 0x24, 0x18, 0x62, 0x00, - 0x0c, 0x00, 0x62, 0x10, 0x00, 0x40, 0x02, 0x24, 0x04, 0x10, 0x02, 0x02, 0x20, - 0x00, 0x42, 0x24, 0xe4, 0x87, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x25, 0x88, - 0x22, 0x02, 0x21, 0x20, 0x60, 0x02, 0xa1, 0xce, 0x00, 0x0c, 0x21, 0x28, 0x00, - 0x02, 0x48, 0x88, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x08, 0x00, 0x42, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x42, 0x30, 0x0e, - 0x00, 0x40, 0x14, 0x07, 0xa2, 0x02, 0x3c, 0x00, 0x40, 0x02, 0x24, 0x04, 0x10, - 0x02, 0x02, 0x20, 0x00, 0x42, 0x24, 0xe4, 0x87, 0x84, 0x27, 0x2e, 0xc9, 0x00, - 0x0c, 0x25, 0x88, 0x22, 0x02, 0x21, 0x20, 0x60, 0x02, 0xa1, 0xce, 0x00, 0x0c, - 0x21, 0x28, 0x00, 0x02, 0x5c, 0x88, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x07, 0xa2, 0x02, 0x3c, 0x00, 0x00, 0x40, 0xa0, 0x01, 0x00, - 0x02, 0x3c, 0x9f, 0x86, 0x42, 0x34, 0xff, 0xff, 0x42, 0x24, 0xff, 0xff, 0x40, - 0x14, 0xff, 0xff, 0x42, 0x24, 0x07, 0xa2, 0x02, 0x3c, 0x00, 0x00, 0x42, 0x90, - 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x42, 0x30, 0x07, 0x10, 0x02, 0x02, 0x01, - 0x00, 0x42, 0x30, 0x0c, 0x00, 0x40, 0x10, 0x00, 0x40, 0x02, 0x24, 0x04, 0x10, - 0x02, 0x02, 0x20, 0x00, 0x42, 0x24, 0xe4, 0x87, 0x84, 0x27, 0x2e, 0xc9, 0x00, - 0x0c, 0x25, 0x88, 0x22, 0x02, 0x21, 0x20, 0x60, 0x02, 0xa1, 0xce, 0x00, 0x0c, - 0x21, 0x28, 0x00, 0x02, 0x70, 0x88, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x00, 0x42, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x42, 0x30, 0x0c, 0x00, 0x40, 0x10, 0x00, 0x40, 0x02, 0x24, 0x04, 0x10, 0x02, - 0x02, 0x20, 0x00, 0x42, 0x24, 0xe4, 0x87, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, - 0x25, 0x88, 0x22, 0x02, 0x21, 0x20, 0x60, 0x02, 0xa1, 0xce, 0x00, 0x0c, 0x21, - 0x28, 0x00, 0x02, 0x34, 0x88, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x21, 0x10, 0x20, 0x02, 0x20, 0x00, 0xbf, 0x8f, 0x1c, 0x00, 0xb3, - 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, - 0x08, 0x00, 0xe0, 0x03, 0x28, 0x00, 0xbd, 0x27, 0xd0, 0xff, 0xbd, 0x27, 0x2c, - 0x00, 0xbf, 0xaf, 0x28, 0x00, 0xb6, 0xaf, 0x24, 0x00, 0xb5, 0xaf, 0x20, 0x00, - 0xb4, 0xaf, 0x1c, 0x00, 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb1, - 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x90, 0x00, 0x00, 0x21, 0x88, 0x00, 0x00, - 0x00, 0xa2, 0x16, 0x3c, 0x02, 0x00, 0x13, 0x24, 0x12, 0x00, 0x15, 0x24, 0xa5, - 0x00, 0x14, 0x24, 0x80, 0x11, 0x11, 0x00, 0x40, 0x00, 0x42, 0x24, 0x21, 0x18, - 0x56, 0x00, 0x21, 0x00, 0x02, 0x24, 0x18, 0x00, 0x62, 0xa0, 0x1c, 0x00, 0x60, - 0xa0, 0x11, 0x00, 0x02, 0x24, 0x21, 0x00, 0x62, 0xa0, 0x30, 0x00, 0x60, 0xa0, - 0x31, 0x00, 0x60, 0xa0, 0x61, 0x00, 0x02, 0x24, 0x2d, 0x00, 0x62, 0xa0, 0x29, - 0x00, 0x73, 0xa0, 0x34, 0x00, 0x60, 0xa0, 0x2c, 0x00, 0x60, 0xa0, 0x10, 0x00, - 0x73, 0xa0, 0x11, 0x00, 0x60, 0xa0, 0x18, 0x00, 0x73, 0xa0, 0x04, 0x00, 0x62, - 0x94, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x42, 0x30, 0x02, 0x00, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0xa4, 0x18, 0x00, 0x75, 0xa0, 0x01, - 0x00, 0x02, 0x24, 0x10, 0x00, 0x62, 0xa0, 0x08, 0x00, 0x02, 0x24, 0x14, 0x00, - 0x62, 0xa0, 0x18, 0x00, 0x75, 0xa0, 0x21, 0x20, 0x00, 0x00, 0x04, 0x00, 0x62, - 0x94, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x30, 0x12, 0x00, 0x40, 0x14, - 0x21, 0x80, 0x00, 0x00, 0x21, 0x00, 0x62, 0x90, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x42, 0x30, 0x05, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, - 0x62, 0x90, 0x00, 0x00, 0x00, 0x00, 0x81, 0xd0, 0x00, 0x08, 0x01, 0x00, 0x42, - 0x34, 0x21, 0x00, 0x62, 0x90, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x42, 0x30, - 0x21, 0x00, 0x62, 0xa0, 0x01, 0x00, 0x84, 0x24, 0x32, 0x00, 0x82, 0x28, 0xeb, - 0xff, 0x40, 0x14, 0x21, 0x80, 0x00, 0x00, 0x04, 0x00, 0x62, 0x94, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x42, 0x30, 0x04, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x62, 0x94, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x50, 0x30, - 0x17, 0x00, 0x14, 0x12, 0x00, 0x40, 0x02, 0x24, 0x04, 0x10, 0x22, 0x02, 0x20, - 0x00, 0x42, 0x24, 0xe4, 0x87, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x25, 0x90, - 0x42, 0x02, 0xf4, 0x86, 0x84, 0x27, 0x80, 0x8f, 0x85, 0x8f, 0x2e, 0xc9, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, - 0x21, 0x28, 0x20, 0x02, 0x8c, 0x88, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0xb8, 0x88, 0x84, 0x27, 0xa5, 0x00, 0x05, 0x24, 0x2e, 0xc9, - 0x00, 0x0c, 0x21, 0x30, 0x00, 0x02, 0xd8, 0x87, 0x84, 0x27, 0x2e, 0xc9, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x31, 0x26, 0x02, 0x00, 0x22, 0x2a, - 0xa9, 0xff, 0x40, 0x14, 0x80, 0x11, 0x11, 0x00, 0x21, 0x10, 0x40, 0x02, 0x2c, - 0x00, 0xbf, 0x8f, 0x28, 0x00, 0xb6, 0x8f, 0x24, 0x00, 0xb5, 0x8f, 0x20, 0x00, - 0xb4, 0x8f, 0x1c, 0x00, 0xb3, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, - 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x30, 0x00, 0xbd, 0x27, - 0x88, 0xff, 0xbd, 0x27, 0x74, 0x00, 0xbf, 0xaf, 0x70, 0x00, 0xbe, 0xaf, 0x6c, - 0x00, 0xb7, 0xaf, 0x68, 0x00, 0xb6, 0xaf, 0x64, 0x00, 0xb5, 0xaf, 0x60, 0x00, - 0xb4, 0xaf, 0x5c, 0x00, 0xb3, 0xaf, 0x58, 0x00, 0xb2, 0xaf, 0x54, 0x00, 0xb1, - 0xaf, 0x50, 0x00, 0xb0, 0xaf, 0x21, 0x90, 0x80, 0x00, 0x10, 0x00, 0xa5, 0xaf, - 0x18, 0x00, 0xa6, 0xaf, 0xff, 0xff, 0x02, 0x24, 0x0a, 0x00, 0xa2, 0x14, 0x20, - 0x00, 0xa7, 0xaf, 0x88, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, - 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x5d, 0xca, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0xd0, 0x88, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x16, 0x24, 0x00, 0xa2, 0x11, 0x3c, 0xa5, 0x00, 0x10, 0x24, 0x17, - 0xd5, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x80, 0x11, 0x16, 0x00, 0x21, 0x10, - 0x51, 0x00, 0x68, 0x00, 0x50, 0xa0, 0x68, 0x00, 0x42, 0x90, 0x00, 0x00, 0x00, - 0x00, 0x21, 0x30, 0x40, 0x00, 0x04, 0x00, 0xd0, 0x10, 0x00, 0x00, 0x00, 0x00, - 0xe8, 0x88, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x21, 0x28, 0xc0, 0x02, 0xff, - 0xff, 0xd6, 0x26, 0xf1, 0xff, 0xc1, 0x06, 0x10, 0x00, 0x02, 0x24, 0x30, 0x00, - 0xa0, 0xaf, 0x84, 0x8f, 0x83, 0x93, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x62, - 0x14, 0x21, 0xa8, 0x00, 0x00, 0x42, 0xd0, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x21, 0xa8, 0x40, 0x00, 0x21, 0x98, 0x40, 0x02, 0x21, 0xb0, 0x00, 0x00, 0x21, - 0x48, 0x00, 0x00, 0x01, 0x00, 0x29, 0x39, 0x38, 0x00, 0xa9, 0xaf, 0x18, 0x00, - 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x13, 0x01, 0x21, 0x10, 0x56, - 0x00, 0x01, 0x10, 0x42, 0x28, 0x04, 0x00, 0x40, 0x14, 0x00, 0x10, 0x02, 0x24, - 0x23, 0x10, 0x56, 0x00, 0xfd, 0xd0, 0x00, 0x08, 0x23, 0xb8, 0x53, 0x00, 0x18, - 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x33, 0x01, 0x21, 0xb8, - 0x56, 0x00, 0x3f, 0x00, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x78, 0x8b, 0x82, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x62, 0x02, 0x3a, 0x00, 0x40, 0x10, - 0xb7, 0xff, 0x62, 0x26, 0x02, 0x00, 0x42, 0x2c, 0x37, 0x00, 0x40, 0x14, 0xff, - 0xff, 0x09, 0x24, 0x10, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, - 0x09, 0x15, 0x40, 0x10, 0x13, 0x00, 0x21, 0x10, 0x53, 0x00, 0x80, 0x10, 0x02, - 0x00, 0x03, 0x80, 0x03, 0x3c, 0x34, 0x5b, 0x63, 0x24, 0x03, 0x80, 0x01, 0x3c, - 0x21, 0x08, 0x22, 0x00, 0xd8, 0x5b, 0x22, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x29, - 0x00, 0x43, 0x10, 0x40, 0x10, 0x13, 0x00, 0x21, 0x10, 0x53, 0x00, 0x80, 0x10, - 0x02, 0x00, 0x03, 0x80, 0x03, 0x3c, 0xe4, 0x5a, 0x63, 0x24, 0x03, 0x80, 0x04, - 0x3c, 0x21, 0x20, 0x82, 0x00, 0xd8, 0x5b, 0x84, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x09, 0x00, 0x83, 0x10, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x02, 0x3c, 0x1c, - 0x5b, 0x42, 0x24, 0x05, 0x00, 0x82, 0x10, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, - 0x02, 0x3c, 0x00, 0x5b, 0x42, 0x24, 0x05, 0x00, 0x82, 0x14, 0x40, 0x10, 0x13, - 0x00, 0x8c, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x15, - 0x40, 0x10, 0x13, 0x00, 0x21, 0x10, 0x53, 0x00, 0x80, 0x10, 0x02, 0x00, 0x03, - 0x80, 0x03, 0x3c, 0x21, 0x18, 0x62, 0x00, 0xdc, 0x5b, 0x63, 0x8c, 0xc0, 0x8a, - 0x82, 0x27, 0x07, 0x00, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x8a, 0x82, - 0x27, 0x04, 0x00, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x8a, 0x82, 0x27, - 0x1b, 0x00, 0x62, 0x14, 0xff, 0xff, 0x08, 0x24, 0x10, 0x00, 0xa9, 0x8f, 0xff, - 0xff, 0x08, 0x24, 0x1b, 0x00, 0x28, 0x15, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, - 0xa9, 0x8f, 0xff, 0xff, 0x08, 0x24, 0x11, 0x03, 0x28, 0x11, 0x00, 0x00, 0x00, - 0x00, 0x18, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x22, 0x29, - 0x0a, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0xa8, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x5d, 0xca, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x18, 0x89, 0x84, 0x27, 0x2e, 0xc9, 0x00, - 0x0c, 0x21, 0x28, 0x60, 0x02, 0xfa, 0xc1, 0x00, 0x0c, 0x01, 0x04, 0x04, 0x24, - 0x69, 0xd4, 0x00, 0x08, 0x21, 0x10, 0x00, 0x00, 0x10, 0x00, 0xa9, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x10, 0x00, 0x28, 0x11, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, - 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x20, 0x11, 0x00, 0x00, 0x00, - 0x00, 0x5d, 0xca, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x88, 0x84, 0x27, - 0x2e, 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x84, 0x27, 0x2e, - 0xc9, 0x00, 0x0c, 0x21, 0x28, 0xc0, 0x02, 0x50, 0x89, 0x84, 0x27, 0x2e, 0xc9, - 0x00, 0x0c, 0x21, 0x28, 0x60, 0x02, 0x28, 0x00, 0xb7, 0xaf, 0x30, 0x00, 0xa8, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x08, 0x00, 0x01, 0xa0, 0x09, 0x3c, - 0x00, 0x02, 0x29, 0x35, 0x21, 0xa0, 0x22, 0x01, 0xff, 0x1f, 0x08, 0x3c, 0xff, - 0xff, 0x08, 0x35, 0x24, 0xa0, 0x88, 0x02, 0x00, 0xa0, 0x09, 0x3c, 0xff, 0xff, - 0xf0, 0x26, 0x0f, 0x00, 0x00, 0x06, 0x25, 0xa0, 0x89, 0x02, 0x20, 0x00, 0xa8, - 0x8f, 0xff, 0xff, 0x09, 0x24, 0x04, 0x00, 0x09, 0x11, 0x21, 0x18, 0x90, 0x02, - 0x20, 0x00, 0xa2, 0x93, 0x7e, 0xd1, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x26, - 0x10, 0x17, 0x02, 0x40, 0x00, 0x42, 0x34, 0x7f, 0x00, 0x42, 0x30, 0x00, 0x00, - 0x62, 0xa0, 0xff, 0xff, 0x10, 0x26, 0xf3, 0xff, 0x01, 0x06, 0x00, 0x00, 0x00, - 0x00, 0x30, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x39, - 0x30, 0x00, 0xa8, 0xaf, 0x00, 0x13, 0x08, 0x00, 0x01, 0xa0, 0x09, 0x3c, 0x00, - 0x02, 0x29, 0x35, 0x21, 0xa0, 0x22, 0x01, 0xff, 0x1f, 0x08, 0x3c, 0xff, 0xff, - 0x08, 0x35, 0x24, 0xa0, 0x88, 0x02, 0x00, 0xa0, 0x09, 0x3c, 0x28, 0x00, 0xa8, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x10, 0x25, 0x06, 0x00, 0x00, 0x06, - 0x25, 0xa0, 0x89, 0x02, 0x21, 0x10, 0x90, 0x02, 0x00, 0x00, 0x40, 0xa0, 0xff, - 0xff, 0x10, 0x26, 0xfd, 0xff, 0x01, 0x06, 0x21, 0x10, 0x90, 0x02, 0x17, 0xd5, - 0x00, 0x0c, 0x63, 0x00, 0x10, 0x24, 0x01, 0xa0, 0x04, 0x3c, 0x21, 0x48, 0x00, - 0x00, 0x01, 0x00, 0x22, 0x39, 0x40, 0x18, 0x02, 0x00, 0x21, 0x18, 0x62, 0x00, - 0x80, 0x18, 0x03, 0x00, 0x21, 0x18, 0x83, 0x00, 0x02, 0x00, 0x62, 0x24, 0x02, - 0x00, 0x82, 0xa4, 0x04, 0x00, 0x80, 0xac, 0x08, 0x00, 0x80, 0xa4, 0x0a, 0x00, - 0x80, 0xa0, 0x02, 0x00, 0x84, 0x24, 0x02, 0x00, 0x64, 0xa4, 0x04, 0x00, 0x60, - 0xac, 0x08, 0x00, 0x60, 0xa4, 0x0a, 0x00, 0x60, 0xa0, 0x01, 0xa0, 0x04, 0x3c, - 0x00, 0x01, 0x84, 0x34, 0x38, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x40, - 0x18, 0x08, 0x00, 0x21, 0x18, 0x68, 0x00, 0x80, 0x18, 0x03, 0x00, 0x21, 0x18, - 0x83, 0x00, 0x02, 0x00, 0x62, 0x24, 0x02, 0x00, 0x82, 0xa4, 0x04, 0x00, 0x80, - 0xac, 0x08, 0x00, 0x80, 0xa4, 0x0a, 0x00, 0x80, 0xa0, 0x02, 0x00, 0x84, 0x24, - 0x02, 0x00, 0x64, 0xa4, 0x04, 0x00, 0x74, 0xac, 0x08, 0x00, 0x60, 0xa4, 0x0a, - 0x00, 0x60, 0xa0, 0x30, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x29, 0x39, 0x30, 0x00, 0xa9, 0xaf, 0x00, 0x13, 0x09, 0x00, 0x01, 0xa0, 0x08, - 0x3c, 0x00, 0x02, 0x08, 0x35, 0x21, 0xa0, 0x02, 0x01, 0xff, 0x1f, 0x09, 0x3c, - 0xff, 0xff, 0x29, 0x35, 0x24, 0xa0, 0x89, 0x02, 0x00, 0xa0, 0x08, 0x3c, 0x25, - 0xa0, 0x88, 0x02, 0x21, 0x20, 0xc0, 0x02, 0x21, 0x28, 0x60, 0x02, 0x46, 0xd5, - 0x00, 0x0c, 0x21, 0x30, 0x60, 0x02, 0xff, 0xff, 0x1e, 0x24, 0x00, 0xa0, 0x03, - 0x3c, 0xaa, 0x01, 0x63, 0x94, 0x00, 0xa0, 0x02, 0x3c, 0xaa, 0x01, 0x42, 0x94, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x30, 0x0b, 0x00, 0x43, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xa0, 0x12, 0x3c, 0x80, 0x01, 0x52, 0x36, 0xff, 0xff, - 0x71, 0x30, 0x4c, 0xc7, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x42, - 0x96, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x30, 0xfa, 0xff, 0x51, 0x10, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x10, 0x26, 0xec, 0xff, 0x1e, 0x16, 0x00, - 0xa2, 0x03, 0x3c, 0x80, 0x11, 0x16, 0x00, 0x40, 0x00, 0x42, 0x24, 0x21, 0x90, - 0x43, 0x00, 0xc0, 0x11, 0x16, 0x00, 0x00, 0x01, 0x42, 0x24, 0x21, 0x88, 0x43, - 0x00, 0x68, 0x00, 0x20, 0xa2, 0xf1, 0x00, 0x02, 0x24, 0x20, 0x00, 0x22, 0xa2, - 0x17, 0xd5, 0x00, 0x0c, 0x60, 0x00, 0x22, 0xa2, 0x21, 0x20, 0xc0, 0x02, 0x21, - 0x28, 0x60, 0x02, 0x46, 0xd5, 0x00, 0x0c, 0x21, 0x30, 0x60, 0x02, 0x68, 0x00, - 0x20, 0xa2, 0x8c, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x20, - 0x11, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x42, 0x92, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x42, 0x34, 0x20, 0x00, 0x42, 0xa2, 0x40, 0x10, 0x13, 0x00, 0x21, - 0x10, 0x53, 0x00, 0x80, 0x10, 0x02, 0x00, 0x03, 0x80, 0x03, 0x3c, 0x21, 0x18, - 0x62, 0x00, 0xd8, 0x5b, 0x63, 0x8c, 0x03, 0x80, 0x02, 0x3c, 0xe4, 0x5a, 0x42, - 0x24, 0x0d, 0x00, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x02, 0x3c, - 0x00, 0x5b, 0x42, 0x24, 0x09, 0x00, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0x03, - 0x80, 0x02, 0x3c, 0xa0, 0x5b, 0x42, 0x24, 0x05, 0x00, 0x62, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x03, 0x80, 0x02, 0x3c, 0xbc, 0x5b, 0x42, 0x24, 0x04, 0x00, 0x62, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x42, 0x92, 0x00, 0x00, 0x00, 0x00, - 0x2c, 0x00, 0x42, 0xa2, 0x84, 0x8f, 0x82, 0x93, 0x00, 0x00, 0x00, 0x00, 0x2b, - 0x10, 0x02, 0x00, 0x8c, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x03, 0x2d, 0x24, 0x10, 0x43, 0x00, 0x06, 0x00, 0x40, 0x10, 0x21, 0x20, 0x40, - 0x02, 0x21, 0x28, 0xa0, 0x02, 0x21, 0x30, 0x60, 0x02, 0x4b, 0xcf, 0x00, 0x0c, - 0x21, 0x38, 0xc0, 0x02, 0x25, 0xa8, 0xa2, 0x02, 0x01, 0xa0, 0x09, 0x3c, 0x00, - 0x01, 0x29, 0x35, 0x02, 0x00, 0x23, 0x35, 0x02, 0x14, 0x03, 0x00, 0x0c, 0x00, - 0x22, 0xa2, 0x14, 0x00, 0x23, 0xa6, 0x38, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x40, 0x10, 0x08, 0x00, 0x21, 0x10, 0x48, 0x00, 0x80, 0x10, 0x02, 0x00, - 0x21, 0x10, 0x22, 0x01, 0x02, 0x00, 0x42, 0x24, 0x10, 0x00, 0x22, 0xa6, 0x00, - 0x10, 0x02, 0x24, 0x18, 0x00, 0x22, 0xa6, 0x01, 0xa0, 0x09, 0x3c, 0x02, 0x00, - 0x23, 0x35, 0x02, 0x14, 0x03, 0x00, 0x4c, 0x00, 0x22, 0xa2, 0x54, 0x00, 0x23, - 0xa6, 0x50, 0x00, 0x23, 0xa6, 0x02, 0x00, 0x10, 0x24, 0x20, 0x00, 0x30, 0xa2, - 0x60, 0x00, 0x30, 0xa2, 0x6f, 0xca, 0x00, 0x0c, 0xe8, 0x03, 0x04, 0x24, 0x12, - 0x00, 0x02, 0x24, 0x18, 0x00, 0x42, 0xa2, 0x18, 0x00, 0x50, 0xa2, 0x6f, 0xca, - 0x00, 0x0c, 0xe8, 0x03, 0x04, 0x24, 0x20, 0x00, 0x02, 0x24, 0x60, 0x00, 0x22, - 0xa2, 0x04, 0x00, 0x42, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x42, 0x30, - 0x17, 0x00, 0x40, 0x14, 0x00, 0x40, 0x08, 0x24, 0x04, 0x10, 0xc8, 0x02, 0x01, - 0x00, 0x42, 0x24, 0x25, 0xa8, 0xa2, 0x02, 0x40, 0x10, 0x13, 0x00, 0x21, 0x10, - 0x53, 0x00, 0x80, 0x10, 0x02, 0x00, 0x03, 0x80, 0x01, 0x3c, 0x21, 0x08, 0x22, - 0x00, 0xe0, 0x5b, 0x22, 0x94, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xb5, 0x36, 0xe4, 0x87, 0x84, 0x27, 0x2e, - 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, 0x60, 0x02, 0xa1, 0xce, - 0x00, 0x0c, 0x21, 0x28, 0xc0, 0x02, 0x5c, 0x89, 0x84, 0x27, 0x4f, 0xd4, 0x00, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x42, 0x96, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x42, 0x30, 0x17, 0x00, 0x40, 0x10, 0x00, 0x40, 0x09, 0x24, 0x04, - 0x10, 0xc9, 0x02, 0x02, 0x00, 0x42, 0x24, 0x25, 0xa8, 0xa2, 0x02, 0x40, 0x10, - 0x13, 0x00, 0x21, 0x10, 0x53, 0x00, 0x80, 0x10, 0x02, 0x00, 0x03, 0x80, 0x01, - 0x3c, 0x21, 0x08, 0x22, 0x00, 0xe0, 0x5b, 0x22, 0x94, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xb5, 0x36, 0xe4, - 0x87, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, - 0x60, 0x02, 0xa1, 0xce, 0x00, 0x0c, 0x21, 0x28, 0xc0, 0x02, 0x6c, 0x89, 0x84, - 0x27, 0x4f, 0xd4, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0xa0, 0x03, 0x3c, - 0x04, 0x00, 0x74, 0xac, 0x08, 0x00, 0x77, 0xa4, 0x81, 0x00, 0x02, 0x24, 0x0a, - 0x00, 0x62, 0xa0, 0x21, 0x40, 0x00, 0x00, 0x01, 0x00, 0x03, 0x39, 0x40, 0x10, - 0x03, 0x00, 0x21, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x01, 0xa0, 0x09, - 0x3c, 0x21, 0x10, 0x22, 0x01, 0x02, 0x00, 0x42, 0x24, 0x54, 0x00, 0x22, 0xa6, - 0x60, 0x00, 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x42, 0x30, 0x02, - 0x00, 0x40, 0x14, 0x02, 0x00, 0x02, 0x24, 0x60, 0x00, 0x22, 0xa2, 0xfa, 0xc1, - 0x00, 0x0c, 0x21, 0x20, 0x00, 0x00, 0x01, 0x00, 0x10, 0x24, 0x00, 0xa0, 0x01, - 0x3c, 0x80, 0x01, 0x30, 0xac, 0xfa, 0xc1, 0x00, 0x0c, 0x01, 0x18, 0x04, 0x24, - 0x6f, 0xca, 0x00, 0x0c, 0x32, 0x00, 0x04, 0x24, 0x00, 0xa0, 0x02, 0x3c, 0x80, - 0x01, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x50, 0x10, 0x00, 0x40, - 0x08, 0x24, 0x04, 0x10, 0xc8, 0x02, 0x04, 0x00, 0x42, 0x24, 0x25, 0xa8, 0xa2, - 0x02, 0x40, 0x10, 0x13, 0x00, 0x21, 0x10, 0x53, 0x00, 0x80, 0x10, 0x02, 0x00, - 0x03, 0x80, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0xe0, 0x5b, 0x22, 0x94, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, - 0xb5, 0x36, 0xe4, 0x87, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x21, 0x20, 0x60, 0x02, 0xa1, 0xce, 0x00, 0x0c, 0x21, 0x28, 0xc0, 0x02, - 0x20, 0x00, 0x25, 0x92, 0x60, 0x00, 0x26, 0x92, 0x7c, 0x89, 0x84, 0x27, 0xff, - 0x00, 0xa5, 0x30, 0x2e, 0xc9, 0x00, 0x0c, 0xff, 0x00, 0xc6, 0x30, 0x20, 0x00, - 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x42, 0x30, 0x06, 0x00, 0x40, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x42, 0x30, 0x04, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x94, - 0x89, 0x84, 0x27, 0xc4, 0xd2, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0xac, 0x89, - 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x17, - 0x00, 0x21, 0x10, 0x57, 0x00, 0x00, 0x11, 0x02, 0x00, 0x23, 0x10, 0x57, 0x00, - 0xc0, 0x10, 0x02, 0x00, 0x23, 0x10, 0x57, 0x00, 0xc0, 0x80, 0x02, 0x00, 0x0c, - 0x00, 0x00, 0x12, 0x00, 0x40, 0x09, 0x24, 0x04, 0x00, 0x42, 0x96, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x40, 0x42, 0x30, 0x04, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x10, 0x26, 0xf9, 0xff, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x16, 0x40, 0x11, 0x17, 0x00, 0x00, 0x40, 0x09, 0x24, 0x04, - 0x10, 0xc9, 0x02, 0x08, 0x00, 0x42, 0x24, 0x25, 0xa8, 0xa2, 0x02, 0x40, 0x10, - 0x13, 0x00, 0x21, 0x10, 0x53, 0x00, 0x80, 0x10, 0x02, 0x00, 0x03, 0x80, 0x01, - 0x3c, 0x21, 0x08, 0x22, 0x00, 0xe0, 0x5b, 0x22, 0x94, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xb5, 0x36, 0xe4, - 0x87, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, - 0x60, 0x02, 0xa1, 0xce, 0x00, 0x0c, 0x21, 0x28, 0xc0, 0x02, 0xc8, 0x89, 0x84, - 0x27, 0x4f, 0xd4, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0x57, 0x00, - 0x80, 0x10, 0x02, 0x00, 0x21, 0x10, 0x57, 0x00, 0xc0, 0x80, 0x02, 0x00, 0x12, - 0x00, 0x00, 0x12, 0x01, 0xa0, 0x09, 0x3c, 0x38, 0x00, 0xa8, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x10, 0x08, 0x00, 0x21, 0x10, 0x48, 0x00, 0x80, 0x10, 0x02, - 0x00, 0x00, 0x01, 0x29, 0x35, 0x21, 0x18, 0x49, 0x00, 0x0a, 0x00, 0x62, 0x90, - 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x42, 0x30, 0x04, 0x00, 0x40, 0x14, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x10, 0x26, 0xf9, 0xff, 0x00, 0x16, 0x00, 0x00, - 0x00, 0x00, 0x18, 0x00, 0x00, 0x16, 0x40, 0x10, 0x17, 0x00, 0x00, 0x40, 0x08, - 0x24, 0x04, 0x10, 0xc8, 0x02, 0x08, 0x00, 0x42, 0x24, 0x25, 0xa8, 0xa2, 0x02, - 0x40, 0x10, 0x13, 0x00, 0x21, 0x10, 0x53, 0x00, 0x80, 0x10, 0x02, 0x00, 0x03, - 0x80, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0xe0, 0x5b, 0x22, 0x94, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xb5, - 0x36, 0xe4, 0x87, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x21, 0x20, 0x60, 0x02, 0xa1, 0xce, 0x00, 0x0c, 0x21, 0x28, 0xc0, 0x02, 0xe0, - 0x89, 0x84, 0x27, 0x4f, 0xd4, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, - 0x57, 0x00, 0xc0, 0x10, 0x02, 0x00, 0x21, 0x10, 0x57, 0x00, 0x80, 0x80, 0x02, - 0x00, 0x0c, 0x00, 0x00, 0x12, 0x00, 0x40, 0x09, 0x24, 0x00, 0xa0, 0x02, 0x3c, - 0x80, 0x01, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x10, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x10, 0x26, 0xf9, 0xff, 0x00, 0x16, 0x00, 0x00, - 0x00, 0x00, 0x18, 0x00, 0x00, 0x16, 0xf1, 0x00, 0x02, 0x24, 0x00, 0x40, 0x09, - 0x24, 0x04, 0x10, 0xc9, 0x02, 0x10, 0x00, 0x42, 0x24, 0x25, 0xa8, 0xa2, 0x02, - 0x40, 0x10, 0x13, 0x00, 0x21, 0x10, 0x53, 0x00, 0x80, 0x10, 0x02, 0x00, 0x03, - 0x80, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0xe0, 0x5b, 0x22, 0x94, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xb5, - 0x36, 0xe4, 0x87, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x21, 0x20, 0x60, 0x02, 0xa1, 0xce, 0x00, 0x0c, 0x21, 0x28, 0xc0, 0x02, 0xf4, - 0x89, 0x84, 0x27, 0x4f, 0xd4, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, - 0x22, 0xa2, 0x60, 0x00, 0x22, 0xa2, 0x21, 0x80, 0x00, 0x00, 0x28, 0x00, 0xa8, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x19, 0x21, 0x88, 0x00, 0x00, - 0x18, 0x8a, 0x92, 0x27, 0x21, 0x10, 0x90, 0x02, 0x00, 0x00, 0x42, 0x90, 0x20, - 0x00, 0xa9, 0x8f, 0xff, 0xff, 0x08, 0x24, 0x05, 0x00, 0x28, 0x11, 0xff, 0x00, - 0x43, 0x30, 0x08, 0x00, 0x69, 0x14, 0x00, 0x00, 0x00, 0x00, 0x73, 0xd3, 0x00, - 0x08, 0x01, 0x00, 0x10, 0x26, 0x26, 0x10, 0x17, 0x02, 0x40, 0x00, 0x42, 0x34, - 0x7f, 0x00, 0x42, 0x30, 0x17, 0x00, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x00, 0x20, 0x16, 0x00, 0x00, 0x00, 0x00, 0x14, 0x8a, 0x84, 0x27, 0x2e, 0xc9, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x31, 0x26, 0x08, 0x00, 0x22, - 0x2a, 0x0e, 0x00, 0x40, 0x10, 0x21, 0x10, 0x90, 0x02, 0x00, 0x00, 0x42, 0x90, - 0x20, 0x00, 0xa9, 0x8f, 0xff, 0xff, 0x08, 0x24, 0x04, 0x00, 0x28, 0x11, 0xff, - 0x00, 0x45, 0x30, 0x20, 0x00, 0xa6, 0x8f, 0x70, 0xd3, 0x00, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x26, 0x10, 0x17, 0x02, 0x40, 0x00, 0x42, 0x34, 0x7f, 0x00, 0x46, - 0x30, 0x2e, 0xc9, 0x00, 0x0c, 0x21, 0x20, 0x40, 0x02, 0x01, 0x00, 0x10, 0x26, - 0x28, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x09, 0x02, 0xd7, - 0xff, 0x40, 0x14, 0x21, 0x10, 0x90, 0x02, 0x1c, 0x00, 0x20, 0x12, 0x00, 0x00, - 0x00, 0x00, 0x24, 0x8a, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x44, 0x8a, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x28, 0x00, 0xa5, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0xca, 0x00, 0x0c, 0x21, - 0x20, 0x80, 0x02, 0x14, 0x8a, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x40, 0x08, 0x24, 0x04, 0x10, 0xc8, 0x02, 0x00, 0x08, 0x42, - 0x24, 0x25, 0xa8, 0xa2, 0x02, 0x40, 0x10, 0x13, 0x00, 0x21, 0x10, 0x53, 0x00, - 0x80, 0x10, 0x02, 0x00, 0x03, 0x80, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0xe0, - 0x5b, 0x22, 0x94, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x10, 0xb5, 0x36, 0x30, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x22, 0x39, 0x00, 0x13, 0x02, 0x00, 0x01, 0xa0, 0x08, 0x3c, - 0x00, 0x02, 0x08, 0x35, 0x21, 0xa0, 0x02, 0x01, 0xff, 0x1f, 0x09, 0x3c, 0xff, - 0xff, 0x29, 0x35, 0x24, 0xa0, 0x89, 0x02, 0x00, 0xa0, 0x08, 0x3c, 0x25, 0xa0, - 0x88, 0x02, 0x38, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x09, - 0x00, 0x21, 0x10, 0x49, 0x00, 0x80, 0x10, 0x02, 0x00, 0x01, 0xa0, 0x08, 0x3c, - 0x00, 0x01, 0x08, 0x35, 0x21, 0x10, 0x48, 0x00, 0x08, 0x00, 0x43, 0x94, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x63, 0x30, 0x28, 0x00, 0xa3, 0xaf, 0x0a, 0x00, - 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x77, 0x14, 0xff, 0x00, 0x50, - 0x30, 0xfc, 0x00, 0x03, 0x32, 0x80, 0x00, 0x02, 0x24, 0x26, 0x00, 0x62, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x09, 0x24, 0x04, 0x10, 0xc9, 0x02, 0x80, - 0x00, 0x42, 0x24, 0x25, 0xa8, 0xa2, 0x02, 0x40, 0x10, 0x13, 0x00, 0x21, 0x10, - 0x53, 0x00, 0x80, 0x10, 0x02, 0x00, 0x03, 0x80, 0x01, 0x3c, 0x21, 0x08, 0x22, - 0x00, 0xe0, 0x5b, 0x22, 0x94, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xb5, 0x36, 0xe4, 0x87, 0x84, 0x27, 0x2e, - 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, 0x60, 0x02, 0xa1, 0xce, - 0x00, 0x0c, 0x21, 0x28, 0xc0, 0x02, 0x4c, 0x8a, 0x84, 0x27, 0x28, 0x00, 0xa5, - 0x8f, 0x21, 0x30, 0xe0, 0x02, 0x2e, 0xc9, 0x00, 0x0c, 0x21, 0x38, 0x00, 0x02, - 0x21, 0x20, 0x80, 0x02, 0x21, 0xca, 0x00, 0x0c, 0x21, 0x28, 0xe0, 0x02, 0x14, - 0x8a, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, - 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0xe8, 0x02, 0x03, 0x00, 0x40, - 0x10, 0x21, 0x80, 0x00, 0x00, 0x28, 0x00, 0xb7, 0xaf, 0x21, 0x80, 0x00, 0x00, - 0x28, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x20, 0x19, 0x21, - 0x88, 0x00, 0x00, 0x7c, 0x8a, 0x9e, 0x27, 0x08, 0x00, 0x12, 0x24, 0x21, 0x10, - 0x90, 0x02, 0x00, 0x00, 0x42, 0x90, 0x20, 0x00, 0xa8, 0x8f, 0xff, 0xff, 0x09, - 0x24, 0x05, 0x00, 0x09, 0x11, 0xff, 0x00, 0x43, 0x30, 0x08, 0x00, 0x68, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x0b, 0xd4, 0x00, 0x08, 0x01, 0x00, 0x10, 0x26, 0x26, - 0x10, 0x17, 0x02, 0x40, 0x00, 0x42, 0x34, 0x7f, 0x00, 0x42, 0x30, 0x1b, 0x00, - 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x16, 0x00, 0x00, 0x00, - 0x00, 0x74, 0x8a, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x21, 0x28, 0x00, 0x02, - 0x01, 0x00, 0x31, 0x26, 0x08, 0x00, 0x22, 0x2a, 0x12, 0x00, 0x40, 0x10, 0x21, - 0x10, 0x90, 0x02, 0x00, 0x00, 0x42, 0x90, 0x20, 0x00, 0xa8, 0x8f, 0xff, 0xff, - 0x09, 0x24, 0x04, 0x00, 0x09, 0x11, 0xff, 0x00, 0x45, 0x30, 0x20, 0x00, 0xa6, - 0x8f, 0x04, 0xd4, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x26, 0x10, 0x17, 0x02, - 0x40, 0x00, 0x42, 0x34, 0x7f, 0x00, 0x46, 0x30, 0x2e, 0xc9, 0x00, 0x0c, 0x21, - 0x20, 0xc0, 0x03, 0x03, 0x00, 0x32, 0x12, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xc9, - 0x00, 0x0c, 0x20, 0x00, 0x04, 0x24, 0x01, 0x00, 0x10, 0x26, 0x28, 0x00, 0xa8, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x08, 0x02, 0xd3, 0xff, 0x40, 0x14, - 0x21, 0x10, 0x90, 0x02, 0x17, 0x00, 0x20, 0x12, 0x00, 0x40, 0x09, 0x24, 0x04, - 0x10, 0xc9, 0x02, 0x00, 0x01, 0x42, 0x24, 0x25, 0xa8, 0xa2, 0x02, 0x40, 0x10, - 0x13, 0x00, 0x21, 0x10, 0x53, 0x00, 0x80, 0x10, 0x02, 0x00, 0x03, 0x80, 0x01, - 0x3c, 0x21, 0x08, 0x22, 0x00, 0xe0, 0x5b, 0x22, 0x94, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xb5, 0x36, 0xe4, - 0x87, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, - 0x60, 0x02, 0xa1, 0xce, 0x00, 0x0c, 0x21, 0x28, 0xc0, 0x02, 0x88, 0x8a, 0x84, - 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xfa, 0xc1, 0x00, 0x0c, - 0x21, 0x20, 0x00, 0x00, 0x01, 0x00, 0x02, 0x24, 0x00, 0xa0, 0x01, 0x3c, 0x80, - 0x01, 0x22, 0xac, 0xfa, 0xc1, 0x00, 0x0c, 0x01, 0x18, 0x04, 0x24, 0x87, 0x13, - 0x10, 0x24, 0xff, 0xff, 0x10, 0x26, 0xff, 0xff, 0x00, 0x16, 0xff, 0xff, 0x10, - 0x26, 0x01, 0x00, 0x10, 0x26, 0xfa, 0xc1, 0x00, 0x0c, 0x21, 0x20, 0x00, 0x00, - 0x00, 0xa0, 0x03, 0x3c, 0x80, 0x01, 0x63, 0x8c, 0x01, 0x00, 0x02, 0x24, 0x17, - 0x00, 0x62, 0x10, 0x00, 0x40, 0x08, 0x24, 0x04, 0x10, 0xc8, 0x02, 0x40, 0x00, - 0x42, 0x24, 0x25, 0xa8, 0xa2, 0x02, 0x40, 0x10, 0x13, 0x00, 0x21, 0x10, 0x53, - 0x00, 0x80, 0x10, 0x02, 0x00, 0x03, 0x80, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, - 0xe0, 0x5b, 0x22, 0x94, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x10, 0xb5, 0x36, 0xe4, 0x87, 0x84, 0x27, 0x2e, 0xc9, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, 0x60, 0x02, 0xa1, 0xce, 0x00, - 0x0c, 0x21, 0x28, 0xc0, 0x02, 0x9c, 0x8a, 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x01, 0x3c, 0x80, 0x01, 0x20, 0xac, 0x01, - 0x00, 0xd6, 0x3a, 0x02, 0x00, 0xc0, 0x16, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x73, 0x26, 0x10, 0x00, 0xa9, 0x8f, 0xff, 0xff, 0x08, 0x24, 0x05, 0x00, 0x28, - 0x15, 0x2a, 0x10, 0x33, 0x01, 0x78, 0x8b, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x42, 0x24, 0x2a, 0x10, 0x53, 0x00, 0x8f, 0xfc, 0x40, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x00, 0xa0, 0x16, 0x00, 0x00, 0x00, 0x00, 0x50, 0x86, - 0x84, 0x27, 0x2e, 0xc9, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xfa, 0xc1, 0x00, - 0x0c, 0x01, 0x04, 0x04, 0x24, 0x21, 0x10, 0xa0, 0x02, 0x74, 0x00, 0xbf, 0x8f, - 0x70, 0x00, 0xbe, 0x8f, 0x6c, 0x00, 0xb7, 0x8f, 0x68, 0x00, 0xb6, 0x8f, 0x64, - 0x00, 0xb5, 0x8f, 0x60, 0x00, 0xb4, 0x8f, 0x5c, 0x00, 0xb3, 0x8f, 0x58, 0x00, - 0xb2, 0x8f, 0x54, 0x00, 0xb1, 0x8f, 0x50, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, - 0x03, 0x78, 0x00, 0xbd, 0x27, 0xd8, 0xff, 0xbd, 0x27, 0x20, 0x00, 0xbf, 0xaf, - 0x1c, 0x00, 0xb1, 0xaf, 0x18, 0x00, 0xb0, 0xaf, 0x21, 0x88, 0x80, 0x00, 0x01, - 0x00, 0x22, 0x32, 0x06, 0x00, 0x40, 0x10, 0x21, 0x80, 0x00, 0x00, 0x79, 0xca, - 0x00, 0x0c, 0x21, 0x20, 0x00, 0x00, 0x03, 0x00, 0x40, 0x10, 0x02, 0x00, 0x22, - 0x32, 0x01, 0x00, 0x10, 0x24, 0x02, 0x00, 0x22, 0x32, 0x0c, 0x00, 0x40, 0x10, - 0x01, 0x00, 0x02, 0x24, 0x10, 0x00, 0xa2, 0xaf, 0x00, 0xa0, 0x04, 0x3c, 0x00, - 0x10, 0x84, 0x34, 0x00, 0xa0, 0x05, 0x3c, 0xf0, 0x7f, 0xa5, 0x34, 0x21, 0x30, - 0x00, 0x00, 0x4a, 0xcc, 0x00, 0x0c, 0x21, 0x38, 0x00, 0x00, 0x03, 0x00, 0x40, - 0x10, 0x04, 0x00, 0x22, 0x32, 0x02, 0x00, 0x10, 0x36, 0x04, 0x00, 0x22, 0x32, - 0x0b, 0x00, 0x40, 0x10, 0x01, 0x00, 0x02, 0x24, 0x10, 0x00, 0xa0, 0xaf, 0x14, - 0x00, 0xa2, 0xaf, 0x21, 0x20, 0x00, 0x00, 0xff, 0xff, 0x05, 0x24, 0x00, 0x01, - 0x06, 0x24, 0xb5, 0xd0, 0x00, 0x0c, 0xff, 0xff, 0x07, 0x24, 0x03, 0x00, 0x40, - 0x10, 0x21, 0x10, 0x00, 0x02, 0x04, 0x00, 0x10, 0x36, 0x21, 0x10, 0x00, 0x02, - 0x20, 0x00, 0xbf, 0x8f, 0x1c, 0x00, 0xb1, 0x8f, 0x18, 0x00, 0xb0, 0x8f, 0x08, - 0x00, 0xe0, 0x03, 0x28, 0x00, 0xbd, 0x27, 0x00, 0x00, 0x00, 0x00, 0x21, 0x30, - 0x00, 0x00, 0x21, 0x28, 0x00, 0x00, 0x21, 0x10, 0x85, 0x00, 0x00, 0x00, 0x42, - 0x80, 0xc0, 0x18, 0x05, 0x00, 0x04, 0x10, 0x62, 0x00, 0x25, 0x30, 0xc2, 0x00, - 0x01, 0x00, 0xa5, 0x24, 0x04, 0x00, 0xa2, 0x2c, 0xf8, 0xff, 0x40, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x21, 0x10, 0xc0, 0x00, 0xe8, 0xff, - 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0xa4, 0xd4, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x2e, 0x02, 0x00, 0x00, 0x1a, 0x02, 0x00, 0xff, 0x00, 0x04, 0x3c, - 0x24, 0x18, 0x64, 0x00, 0x25, 0x28, 0xa3, 0x00, 0x02, 0x1a, 0x02, 0x00, 0x00, - 0xff, 0x63, 0x30, 0x25, 0x28, 0xa3, 0x00, 0x02, 0x16, 0x02, 0x00, 0x10, 0x00, - 0xbf, 0x8f, 0x25, 0x10, 0xa2, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x18, 0x00, 0xbd, - 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xe0, 0x03, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xa2, 0x02, 0x3c, 0x40, 0x00, 0x42, 0x34, 0x05, 0x00, 0x82, 0x14, 0x10, 0x00, - 0x0a, 0x24, 0x08, 0x00, 0x0a, 0x24, 0x00, 0x01, 0x02, 0x24, 0xd2, 0xd4, 0x00, - 0x08, 0x00, 0x04, 0x09, 0x24, 0x00, 0x02, 0x02, 0x24, 0x00, 0x08, 0x09, 0x24, - 0xff, 0xff, 0x19, 0x3c, 0x00, 0x10, 0x39, 0x37, 0x03, 0x80, 0x18, 0x3c, 0xb0, - 0x59, 0x18, 0x27, 0x05, 0xa2, 0x08, 0x3c, 0x25, 0x58, 0x42, 0x01, 0x27, 0x70, - 0x0b, 0x00, 0x27, 0x68, 0x02, 0x00, 0xe1, 0x00, 0x0f, 0x3c, 0x27, 0x60, 0x09, - 0x00, 0x00, 0x00, 0xa7, 0x94, 0x00, 0x00, 0x00, 0x00, 0x21, 0x18, 0xf9, 0x00, - 0x09, 0x00, 0x62, 0x2c, 0x2e, 0x00, 0x40, 0x10, 0x80, 0x10, 0x03, 0x00, 0x21, - 0x10, 0x58, 0x00, 0x00, 0x00, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x8f, 0x82, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x0b, 0xd5, 0x00, 0x08, 0x24, 0x10, 0xc2, 0x01, 0x80, 0x8f, 0x82, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x24, 0x10, 0xa2, 0x01, 0x0b, 0xd5, 0x00, 0x08, 0x25, - 0x10, 0x4a, 0x00, 0x80, 0x8f, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xd5, - 0x00, 0x08, 0x25, 0x10, 0x62, 0x01, 0x02, 0x00, 0xa3, 0x94, 0x00, 0x00, 0xc2, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x62, 0x00, 0x12, 0x18, 0x00, 0x00, - 0x42, 0x10, 0x03, 0x00, 0x21, 0x10, 0x4f, 0x00, 0x1b, 0x00, 0x43, 0x00, 0x02, - 0x00, 0x60, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x07, 0x00, 0x12, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xd5, 0x00, - 0x08, 0x29, 0x00, 0x82, 0xa0, 0x80, 0x8f, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x0b, 0xd5, 0x00, 0x08, 0x24, 0x10, 0x82, 0x01, 0x80, 0x8f, 0x82, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x25, 0x10, 0x22, 0x01, 0x80, 0x8f, 0x82, 0xaf, 0x00, 0x00, - 0x02, 0xa5, 0xdc, 0xd4, 0x00, 0x08, 0x04, 0x00, 0xa5, 0x24, 0x21, 0x18, 0x87, - 0x00, 0x02, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0xa0, - 0xdc, 0xd4, 0x00, 0x08, 0x04, 0x00, 0xa5, 0x24, 0x08, 0x00, 0xe0, 0x03, 0x00, - 0x00, 0x00, 0x00, 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x00, 0xa2, - 0x04, 0x3c, 0x03, 0x80, 0x05, 0x3c, 0x20, 0x5a, 0xa5, 0x24, 0xc8, 0xd4, 0x00, - 0x0c, 0x21, 0x30, 0x00, 0x00, 0x00, 0xa2, 0x04, 0x3c, 0x40, 0x00, 0x84, 0x34, - 0x03, 0x80, 0x05, 0x3c, 0x78, 0x5a, 0xa5, 0x24, 0xc8, 0xd4, 0x00, 0x0c, 0x21, - 0x30, 0x00, 0x00, 0x00, 0xa2, 0x04, 0x3c, 0x00, 0x01, 0x84, 0x34, 0x03, 0x80, - 0x05, 0x3c, 0xcc, 0x5a, 0xa5, 0x24, 0xc8, 0xd4, 0x00, 0x0c, 0x21, 0x30, 0x00, - 0x00, 0x00, 0xa2, 0x04, 0x3c, 0x40, 0x01, 0x84, 0x34, 0x03, 0x80, 0x05, 0x3c, - 0xd8, 0x5a, 0xa5, 0x24, 0xc8, 0xd4, 0x00, 0x0c, 0x21, 0x30, 0x00, 0x00, 0x00, - 0xa2, 0x04, 0x3c, 0x80, 0x00, 0x84, 0x34, 0x03, 0x80, 0x05, 0x3c, 0x78, 0x5a, - 0xa5, 0x24, 0xc8, 0xd4, 0x00, 0x0c, 0x21, 0x30, 0x00, 0x00, 0x00, 0xa2, 0x04, - 0x3c, 0x80, 0x01, 0x84, 0x34, 0x03, 0x80, 0x05, 0x3c, 0xcc, 0x5a, 0xa5, 0x24, - 0xc8, 0xd4, 0x00, 0x0c, 0x21, 0x30, 0x00, 0x00, 0x00, 0xa2, 0x04, 0x3c, 0xc0, - 0x01, 0x84, 0x34, 0x03, 0x80, 0x05, 0x3c, 0xd8, 0x5a, 0xa5, 0x24, 0xc8, 0xd4, - 0x00, 0x0c, 0x21, 0x30, 0x00, 0x00, 0x10, 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xbd, - 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xd8, 0xff, 0xbd, 0x27, - 0x20, 0x00, 0xbf, 0xaf, 0x1c, 0x00, 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, - 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x98, 0x80, 0x00, 0x21, 0x88, - 0xa0, 0x00, 0x02, 0x00, 0x60, 0x16, 0x04, 0x00, 0x12, 0x24, 0x02, 0x00, 0x12, - 0x24, 0x4e, 0x00, 0xc2, 0x2c, 0x03, 0x00, 0x40, 0x10, 0x4e, 0x00, 0x22, 0x2e, - 0x05, 0x00, 0x40, 0x14, 0x40, 0x80, 0x11, 0x00, 0x7c, 0x8b, 0x84, 0x27, 0x3a, - 0xc0, 0x00, 0x0c, 0x6e, 0x02, 0x05, 0x24, 0x40, 0x80, 0x11, 0x00, 0x21, 0x80, - 0x11, 0x02, 0x80, 0x80, 0x10, 0x00, 0x03, 0x80, 0x02, 0x3c, 0xd8, 0x5b, 0x42, - 0x24, 0x21, 0x80, 0x02, 0x02, 0x80, 0x11, 0x13, 0x00, 0x00, 0xa2, 0x04, 0x3c, - 0x40, 0x00, 0x84, 0x34, 0x00, 0x00, 0x05, 0x8e, 0x04, 0x00, 0x06, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0xc8, 0xd4, 0x00, 0x0c, 0x21, 0x20, 0x44, 0x00, 0x08, 0x00, - 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x40, 0x10, 0x05, 0xa2, 0x03, - 0x3c, 0x80, 0x8f, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x25, 0x10, 0x42, 0x02, - 0x80, 0x8f, 0x82, 0xaf, 0x78, 0xd5, 0x00, 0x08, 0x00, 0x00, 0x62, 0xa4, 0x05, - 0xa2, 0x02, 0x3c, 0x27, 0x18, 0x12, 0x00, 0x80, 0x8f, 0x84, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x24, 0x18, 0x64, 0x00, 0x80, 0x8f, 0x83, 0xaf, 0x00, 0x00, 0x43, - 0xa4, 0x20, 0x00, 0xbf, 0x8f, 0x1c, 0x00, 0xb3, 0x8f, 0x18, 0x00, 0xb2, 0x8f, - 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x28, - 0x00, 0xbd, 0x27, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x03, 0x80, 0x9c, 0x1c, - 0x03, 0x80, 0x18, 0x18, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, - 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, - 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, - 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x18, 0x18, - 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, - 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x18, 0x18, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, - 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, - 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, - 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, - 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, - 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, - 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, - 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, - 0x80, 0x9c, 0x1c, 0x03, 0x80, 0xf0, 0x13, 0x03, 0x80, 0x7c, 0x14, 0x03, 0x80, - 0x88, 0x15, 0x03, 0x80, 0x88, 0x15, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, - 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, - 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, - 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0xd8, 0x10, 0x03, 0x80, - 0x9c, 0x1c, 0x03, 0x80, 0x4c, 0x11, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, - 0x1c, 0x03, 0x80, 0x18, 0x18, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x18, 0x18, - 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0xe4, 0x17, 0x03, - 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, - 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, - 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x18, 0x18, 0x03, 0x80, 0x9c, 0x1c, - 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, - 0x80, 0x18, 0x18, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, - 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, - 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, - 0x03, 0x80, 0x4c, 0x11, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, - 0x80, 0x18, 0x18, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x18, 0x18, 0x03, 0x80, - 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0xe4, 0x17, 0x03, 0x80, 0x9c, - 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, - 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, - 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x18, 0x18, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, - 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x18, - 0x18, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, - 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, - 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, - 0x7c, 0x1a, 0x03, 0x80, 0x8c, 0x1a, 0x03, 0x80, 0x24, 0x1b, 0x03, 0x80, 0x50, - 0x1b, 0x03, 0x80, 0x78, 0x1b, 0x03, 0x80, 0x9c, 0x1c, 0x03, 0x80, 0x9c, 0x1c, - 0x03, 0x80, 0x78, 0x1c, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x1b, 0x03, - 0x80, 0xe0, 0x1b, 0x03, 0x80, 0x44, 0x1c, 0x03, 0x80, 0x18, 0x1c, 0x03, 0x80, - 0x44, 0x1c, 0x03, 0x80, 0x44, 0x1c, 0x03, 0x80, 0x44, 0x1c, 0x03, 0x80, 0x18, - 0x1c, 0x03, 0x80, 0x44, 0x1c, 0x03, 0x80, 0x44, 0x1c, 0x03, 0x80, 0x44, 0x1c, - 0x03, 0x80, 0x44, 0x1c, 0x03, 0x80, 0x44, 0x1c, 0x03, 0x80, 0x44, 0x1c, 0x03, - 0x80, 0x44, 0x1c, 0x03, 0x80, 0xc4, 0x1b, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x10, 0x23, 0x03, 0x80, 0x94, 0x24, 0x03, 0x80, 0x94, - 0x24, 0x03, 0x80, 0x94, 0x24, 0x03, 0x80, 0x94, 0x24, 0x03, 0x80, 0x94, 0x24, - 0x03, 0x80, 0x94, 0x24, 0x03, 0x80, 0x94, 0x24, 0x03, 0x80, 0x40, 0x24, 0x03, - 0x80, 0x94, 0x24, 0x03, 0x80, 0x94, 0x24, 0x03, 0x80, 0x48, 0x24, 0x03, 0x80, - 0x54, 0x24, 0x03, 0x80, 0x54, 0x24, 0x03, 0x80, 0x54, 0x24, 0x03, 0x80, 0x54, - 0x24, 0x03, 0x80, 0x54, 0x24, 0x03, 0x80, 0x54, 0x24, 0x03, 0x80, 0x54, 0x24, - 0x03, 0x80, 0x54, 0x24, 0x03, 0x80, 0x54, 0x24, 0x03, 0x80, 0x94, 0x24, 0x03, - 0x80, 0x94, 0x24, 0x03, 0x80, 0x94, 0x24, 0x03, 0x80, 0x94, 0x24, 0x03, 0x80, - 0x94, 0x24, 0x03, 0x80, 0x94, 0x24, 0x03, 0x80, 0x94, 0x24, 0x03, 0x80, 0x94, - 0x24, 0x03, 0x80, 0x94, 0x24, 0x03, 0x80, 0x94, 0x24, 0x03, 0x80, 0x94, 0x24, - 0x03, 0x80, 0x20, 0x23, 0x03, 0x80, 0x94, 0x24, 0x03, 0x80, 0x94, 0x24, 0x03, - 0x80, 0x94, 0x24, 0x03, 0x80, 0x94, 0x24, 0x03, 0x80, 0x94, 0x24, 0x03, 0x80, - 0x94, 0x24, 0x03, 0x80, 0x94, 0x24, 0x03, 0x80, 0x94, 0x24, 0x03, 0x80, 0x94, - 0x24, 0x03, 0x80, 0x94, 0x24, 0x03, 0x80, 0x94, 0x24, 0x03, 0x80, 0x94, 0x24, - 0x03, 0x80, 0x94, 0x24, 0x03, 0x80, 0x94, 0x24, 0x03, 0x80, 0x94, 0x24, 0x03, - 0x80, 0x94, 0x24, 0x03, 0x80, 0x94, 0x24, 0x03, 0x80, 0x94, 0x24, 0x03, 0x80, - 0xec, 0x23, 0x03, 0x80, 0x94, 0x24, 0x03, 0x80, 0x94, 0x24, 0x03, 0x80, 0x94, - 0x24, 0x03, 0x80, 0x94, 0x24, 0x03, 0x80, 0x94, 0x24, 0x03, 0x80, 0x94, 0x24, - 0x03, 0x80, 0x94, 0x24, 0x03, 0x80, 0x94, 0x24, 0x03, 0x80, 0x94, 0x24, 0x03, - 0x80, 0x4c, 0x23, 0x03, 0x80, 0x38, 0x23, 0x03, 0x80, 0x9c, 0x23, 0x03, 0x80, - 0x94, 0x24, 0x03, 0x80, 0x94, 0x24, 0x03, 0x80, 0x94, 0x24, 0x03, 0x80, 0x94, - 0x24, 0x03, 0x80, 0x94, 0x24, 0x03, 0x80, 0x94, 0x24, 0x03, 0x80, 0x94, 0x24, - 0x03, 0x80, 0x7c, 0x24, 0x03, 0x80, 0x94, 0x24, 0x03, 0x80, 0x94, 0x24, 0x03, - 0x80, 0x74, 0x23, 0x03, 0x80, 0x94, 0x24, 0x03, 0x80, 0x94, 0x24, 0x03, 0x80, - 0x94, 0x24, 0x03, 0x80, 0x0c, 0x24, 0x03, 0x80, 0x24, 0x24, 0x03, 0x80, 0xbc, - 0x23, 0x03, 0x80, 0x94, 0x24, 0x03, 0x80, 0x94, 0x24, 0x03, 0x80, 0xdc, 0x23, - 0x03, 0x80, 0x54, 0x54, 0x03, 0x80, 0xd0, 0x53, 0x03, 0x80, 0x3c, 0x54, 0x03, - 0x80, 0x3c, 0x54, 0x03, 0x80, 0x9c, 0x53, 0x03, 0x80, 0xc0, 0x53, 0x03, 0x80, - 0xac, 0x53, 0x03, 0x80, 0x10, 0x54, 0x03, 0x80, 0x20, 0x54, 0x03, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, - 0x34, 0x00, 0x00, 0x00, 0x41, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0xe2, - 0x00, 0x00, 0x00, 0x40, 0x00, 0x0c, 0x00, 0x74, 0x00, 0x04, 0x00, 0x6e, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xe4, 0x00, 0x04, 0x00, 0x40, 0x00, 0x0c, - 0x00, 0xb4, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0c, 0x00, - 0xe8, 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, - 0x00, 0x60, 0x01, 0x00, 0x00, 0xa0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, - 0x29, 0x01, 0x03, 0x00, 0x69, 0x01, 0x03, 0x00, 0xa9, 0x01, 0x03, 0x00, 0xe9, - 0x01, 0x03, 0x00, 0x58, 0x00, 0x21, 0x00, 0x98, 0x00, 0x21, 0x00, 0x04, 0x00, - 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x0c, 0x00, 0x28, 0x00, 0xcc, 0x00, - 0x29, 0x00, 0xbb, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x10, 0x00, 0x11, - 0x00, 0x80, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x18, 0x00, 0x01, 0x00, 0x18, 0x00, - 0x11, 0x00, 0x1c, 0x00, 0x87, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, - 0x00, 0x07, 0xf0, 0x00, 0x00, 0x21, 0x00, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x00, - 0x2d, 0x00, 0x00, 0x00, 0x29, 0x00, 0x02, 0x00, 0x30, 0x00, 0x12, 0x00, 0x31, - 0x00, 0x1f, 0x00, 0x34, 0x00, 0x0e, 0x00, 0x10, 0x00, 0xc0, 0x00, 0x11, 0x00, - 0x80, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, - 0x00, 0x25, 0x00, 0x00, 0x00, 0x28, 0x00, 0x7e, 0x00, 0x00, 0xf0, 0x00, 0x00, - 0x21, 0x00, 0x14, 0x00, 0x28, 0x00, 0x60, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x21, - 0x00, 0x14, 0x00, 0x28, 0x00, 0x40, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x06, 0xf0, - 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x41, - 0x00, 0x01, 0xf0, 0x02, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, - 0x06, 0xf0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2d, - 0x00, 0x45, 0x00, 0x01, 0xf0, 0x20, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, 0xf0, - 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, - 0x00, 0x05, 0xf0, 0x00, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x04, - 0xf0, 0x00, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x08, 0xf0, - 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x2c, 0x00, 0x40, 0x00, 0x2d, 0x00, 0x63, - 0x00, 0x01, 0xf0, 0x08, 0x00, 0x04, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, - 0x08, 0xf0, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x2c, 0x00, 0x60, 0x00, 0x2d, - 0x00, 0x43, 0x00, 0x01, 0xf0, 0x08, 0x00, 0x04, 0xf0, 0x00, 0x00, 0x00, 0xf0, - 0x00, 0x00, 0x08, 0xf0, 0x00, 0x00, 0x20, 0x00, 0x28, 0x00, 0x2c, 0x00, 0x60, - 0x00, 0x2d, 0x00, 0x44, 0x00, 0x01, 0xf0, 0x10, 0x00, 0x04, 0xf0, 0x00, 0x00, - 0x00, 0xf0, 0x00, 0x00, 0x08, 0xf0, 0x00, 0x00, 0x20, 0x00, 0xc0, 0x00, 0x2c, - 0x00, 0x60, 0x00, 0x2d, 0x00, 0x43, 0x00, 0x01, 0xf0, 0x08, 0x00, 0x04, 0xf0, - 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x08, 0xf0, 0x00, 0x00, 0x20, 0x00, 0xc8, - 0x00, 0x2c, 0x00, 0x60, 0x00, 0x2d, 0x00, 0x44, 0x00, 0x01, 0xf0, 0x10, 0x00, - 0x04, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x5b, 0x03, 0x80, 0x88, - 0x6a, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x84, 0x5b, 0x03, 0x80, 0x90, 0x6a, - 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x5b, 0x03, 0x80, 0x98, 0x6a, 0x03, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x03, 0x80, 0x40, 0x6a, 0x03, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x03, 0x80, 0x48, 0x6a, 0x03, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x5b, 0x03, 0x80, 0x50, 0x6a, 0x03, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x5b, 0x03, 0x80, 0x60, 0x6a, 0x03, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x5b, 0x03, 0x80, 0x68, 0x6a, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x5b, 0x03, 0x80, 0x70, 0x6a, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x5b, 0x03, 0x80, 0x80, 0x6a, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, - 0x03, 0x80, 0x88, 0x6a, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x5a, 0x03, - 0x80, 0x90, 0x6a, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x5a, 0x03, 0x80, - 0x98, 0x6a, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x5a, 0x03, 0x80, 0xa0, - 0x6a, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x5a, 0x03, 0x80, 0xa8, 0x6a, - 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x34, 0x5b, 0x03, 0x80, 0x40, 0x6a, 0x03, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x34, 0x5b, 0x03, 0x80, 0x48, 0x6a, 0x03, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x34, 0x5b, 0x03, 0x80, 0x50, 0x6a, 0x03, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x34, 0x5b, 0x03, 0x80, 0x60, 0x6a, 0x03, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x34, 0x5b, 0x03, 0x80, 0x68, 0x6a, 0x03, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x34, 0x5b, 0x03, 0x80, 0x70, 0x6a, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x34, 0x5b, 0x03, 0x80, 0x80, 0x6a, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x34, - 0x5b, 0x03, 0x80, 0x88, 0x6a, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x34, 0x5b, - 0x03, 0x80, 0x90, 0x6a, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x34, 0x5b, 0x03, - 0x80, 0x98, 0x6a, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x34, 0x5b, 0x03, 0x80, - 0xa0, 0x6a, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x34, 0x5b, 0x03, 0x80, 0xa8, - 0x6a, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x5a, 0x03, 0x80, 0xb0, 0x6a, - 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x5a, 0x03, 0x80, 0xb8, 0x6a, 0x03, - 0x80, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x5a, 0x03, 0x80, 0xc0, 0x6a, 0x03, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x34, 0x5b, 0x03, 0x80, 0xb0, 0x6a, 0x03, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x34, 0x5b, 0x03, 0x80, 0xb8, 0x6a, 0x03, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x34, 0x5b, 0x03, 0x80, 0xc0, 0x6a, 0x03, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x34, 0x5b, 0x03, 0x80, 0x58, 0x6a, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x34, 0x5b, 0x03, 0x80, 0x88, 0x6a, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x34, - 0x5b, 0x03, 0x80, 0x40, 0x6a, 0x03, 0x80, 0x01, 0x00, 0x00, 0x00, 0x34, 0x5b, - 0x03, 0x80, 0x48, 0x6a, 0x03, 0x80, 0x01, 0x00, 0x00, 0x00, 0x34, 0x5b, 0x03, - 0x80, 0x50, 0x6a, 0x03, 0x80, 0x01, 0x00, 0x00, 0x00, 0x34, 0x5b, 0x03, 0x80, - 0x58, 0x6a, 0x03, 0x80, 0x01, 0x00, 0x00, 0x00, 0x34, 0x5b, 0x03, 0x80, 0x60, - 0x6a, 0x03, 0x80, 0x01, 0x00, 0x00, 0x00, 0x34, 0x5b, 0x03, 0x80, 0x68, 0x6a, - 0x03, 0x80, 0x01, 0x00, 0x00, 0x00, 0x34, 0x5b, 0x03, 0x80, 0x70, 0x6a, 0x03, - 0x80, 0x01, 0x00, 0x00, 0x00, 0x34, 0x5b, 0x03, 0x80, 0x78, 0x6a, 0x03, 0x80, - 0x01, 0x00, 0x00, 0x00, 0x34, 0x5b, 0x03, 0x80, 0x80, 0x6a, 0x03, 0x80, 0x01, - 0x00, 0x00, 0x00, 0x34, 0x5b, 0x03, 0x80, 0x88, 0x6a, 0x03, 0x80, 0x01, 0x00, - 0x00, 0x00, 0x34, 0x5b, 0x03, 0x80, 0x88, 0x6a, 0x03, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x34, 0x5b, 0x03, 0x80, 0x88, 0x6a, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x34, 0x5b, 0x03, 0x80, 0x88, 0x6a, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x34, - 0x5b, 0x03, 0x80, 0x88, 0x6a, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x34, 0x5b, - 0x03, 0x80, 0x88, 0x6a, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x34, 0x5b, 0x03, - 0x80, 0x88, 0x6a, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x34, 0x5b, 0x03, 0x80, - 0x88, 0x6a, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x34, 0x5b, 0x03, 0x80, 0x88, - 0x6a, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x34, 0x5b, 0x03, 0x80, 0x88, 0x6a, - 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x34, 0x5b, 0x03, 0x80, 0x88, 0x6a, 0x03, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x34, 0x5b, 0x03, 0x80, 0x88, 0x6a, 0x03, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x34, 0x5b, 0x03, 0x80, 0x88, 0x6a, 0x03, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x34, 0x5b, 0x03, 0x80, 0x88, 0x6a, 0x03, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x34, 0x5b, 0x03, 0x80, 0x88, 0x6a, 0x03, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x34, 0x5b, 0x03, 0x80, 0x88, 0x6a, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x84, 0x5b, 0x03, 0x80, 0x88, 0x6a, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0xbc, - 0x5b, 0x03, 0x80, 0x88, 0x6a, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x84, 0x5b, - 0x03, 0x80, 0x90, 0x6a, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x5b, 0x03, - 0x80, 0x90, 0x6a, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x84, 0x5b, 0x03, 0x80, - 0x98, 0x6a, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x5b, 0x03, 0x80, 0x98, - 0x6a, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x84, 0x5b, 0x03, 0x80, 0xa0, 0x6a, - 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x5b, 0x03, 0x80, 0xa0, 0x6a, 0x03, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x68, 0x5b, 0x03, 0x80, 0xc8, 0x6a, 0x03, 0x80, - 0x00, 0x00, 0x00, 0x00, 0xa0, 0x5b, 0x03, 0x80, 0xc8, 0x6a, 0x03, 0x80, 0x00, - 0x00, 0x00, 0x00, 0xe4, 0x5a, 0x03, 0x80, 0xc8, 0x6a, 0x03, 0x80, 0x00, 0x00, - 0x00, 0x00, 0xe4, 0x5a, 0x03, 0x80, 0xd0, 0x6a, 0x03, 0x80, 0x00, 0x00, 0x00, - 0x00, 0xe4, 0x5a, 0x03, 0x80, 0xd8, 0x6a, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, - 0xe4, 0x5a, 0x03, 0x80, 0xe0, 0x6a, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1c, - 0x5b, 0x03, 0x80, 0xe8, 0x6a, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, - 0x03, 0x80, 0x58, 0x6a, 0x03, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x03, - 0x80, 0x70, 0x6a, 0x03, 0x80, 0x01, 0x00, 0x00, 0x00, 0x4c, 0x5b, 0x03, 0x80, - 0xf0, 0x6a, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x42, 0x54, 0x30, 0x31, 0x00, - 0x00, 0x00, 0x00, 0x42, 0x54, 0x30, 0x32, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0d, - 0x44, 0x69, 0x67, 0x69, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x20, 0x43, 0x78, 0x70, - 0x42, 0x49, 0x4f, 0x53, 0x00, 0x0a, 0x0d, 0x52, 0x41, 0x4d, 0x20, 0x73, 0x69, - 0x7a, 0x65, 0x3a, 0x20, 0x25, 0x30, 0x38, 0x78, 0x00, 0x00, 0x00, 0x00, 0x0a, - 0x0d, 0x43, 0x50, 0x55, 0x20, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x2e, 0x2e, 0x2e, - 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x00, 0x00, 0x70, 0x61, 0x73, - 0x73, 0x65, 0x64, 0x00, 0x00, 0x0a, 0x0d, 0x63, 0x6f, 0x64, 0x65, 0x20, 0x63, - 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x20, 0x74, 0x65, 0x73, 0x74, 0x2e, - 0x2e, 0x00, 0x00, 0x25, 0x45, 0x20, 0x62, 0x61, 0x64, 0x20, 0x63, 0x6f, 0x64, - 0x65, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x3a, 0x20, 0x25, - 0x30, 0x38, 0x78, 0x00, 0x00, 0x0d, 0x0a, 0x00, 0x00, 0x53, 0x68, 0x61, 0x72, - 0x65, 0x64, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x48, 0x69, 0x67, 0x68, 0x0a, - 0x0d, 0x00, 0x00, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x20, 0x73, 0x68, - 0x61, 0x72, 0x65, 0x64, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x42, 0x54, 0x30, - 0x33, 0x00, 0x00, 0x00, 0x00, 0x42, 0x54, 0x30, 0x34, 0x00, 0x00, 0x00, 0x00, - 0x42, 0x54, 0x30, 0x35, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x2e, 0x2f, 0x73, 0x79, - 0x6e, 0x63, 0x62, 0x69, 0x6f, 0x73, 0x2e, 0x63, 0x00, 0x00, 0x00, 0x42, 0x49, - 0x4f, 0x53, 0x00, 0x00, 0x00, 0x00, 0x20, 0x47, 0x4f, 0x20, 0x00, 0x00, 0x00, - 0x00, 0x20, 0x4f, 0x4b, 0x20, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x4f, 0x4f, 0x44, 0x00, 0x00, 0x00, 0x00, 0x44, - 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x57, 0x41, 0x49, 0x54, 0x00, 0x00, - 0x00, 0x00, 0x0d, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x73, - 0x73, 0x20, 0x25, 0x64, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x98, 0x60, 0x03, 0x80, 0x2d, 0x2d, 0x2d, 0x20, 0x43, 0x78, 0x70, 0x42, 0x49, - 0x4f, 0x53, 0x20, 0x44, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, - 0x73, 0x20, 0x2d, 0x2d, 0x2d, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x41, 0x20, 0x3d, - 0x20, 0x41, 0x6c, 0x6c, 0x20, 0x74, 0x65, 0x73, 0x74, 0x73, 0x0a, 0x0d, 0x00, - 0x31, 0x20, 0x3d, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x20, 0x74, 0x65, 0x73, - 0x74, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x32, 0x20, 0x3d, 0x20, 0x52, 0x41, - 0x4d, 0x20, 0x74, 0x65, 0x73, 0x74, 0x0a, 0x0d, 0x00, 0x00, 0x33, 0x20, 0x3d, - 0x20, 0x53, 0x79, 0x6e, 0x63, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, - 0x6c, 0x20, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x20, 0x74, 0x65, - 0x73, 0x74, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x34, 0x20, 0x3d, 0x20, 0x53, 0x79, - 0x6e, 0x63, 0x20, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x20, 0x6c, - 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x20, 0x74, 0x65, 0x73, 0x74, 0x0a, - 0x0d, 0x00, 0x00, 0x00, 0x74, 0x2f, 0x5e, 0x54, 0x2f, 0x54, 0x20, 0x3d, 0x20, - 0x48, 0x6f, 0x73, 0x74, 0x20, 0x73, 0x69, 0x64, 0x65, 0x20, 0x20, 0x38, 0x2f, - 0x31, 0x36, 0x2f, 0x33, 0x32, 0x2d, 0x62, 0x69, 0x74, 0x20, 0x52, 0x41, 0x4d, - 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x2f, 0x73, - 0x74, 0x6f, 0x70, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x69, 0x20, 0x3d, 0x20, 0x63, - 0x61, 0x72, 0x64, 0x2d, 0x74, 0x6f, 0x2d, 0x68, 0x6f, 0x73, 0x74, 0x20, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x20, 0x74, 0x65, 0x73, 0x74, - 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x64, 0x5e, 0x44, 0x44, 0x29, 0x75, 0x6d, 0x70, - 0x2c, 0x20, 0x72, 0x5e, 0x52, 0x52, 0x29, 0x65, 0x61, 0x64, 0x2c, 0x20, 0x77, - 0x5e, 0x57, 0x57, 0x29, 0x72, 0x69, 0x74, 0x65, 0x2c, 0x20, 0x66, 0x5e, 0x46, - 0x46, 0x29, 0x69, 0x6c, 0x6c, 0x20, 0x52, 0x41, 0x4d, 0x0a, 0x0d, 0x00, 0x00, - 0x00, 0x0d, 0x0a, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, - 0x74, 0x69, 0x6d, 0x65, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x64, 0x6f, 0x20, 0x61, - 0x6c, 0x6c, 0x20, 0x74, 0x65, 0x73, 0x74, 0x73, 0x3a, 0x20, 0x00, 0x0a, 0x00, - 0x00, 0x00, 0x0a, 0x0d, 0x20, 0x20, 0x54, 0x65, 0x73, 0x74, 0x73, 0x20, 0x73, - 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x0a, 0x0d, 0x00, 0x54, 0x6f, 0x74, 0x61, - 0x6c, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x73, 0x3a, 0x20, 0x25, 0x64, 0x0a, - 0x0d, 0x00, 0x00, 0x20, 0x20, 0x54, 0x65, 0x73, 0x74, 0x20, 0x25, 0x64, 0x3a, - 0x20, 0x25, 0x64, 0x20, 0x70, 0x61, 0x73, 0x73, 0x20, 0x25, 0x64, 0x20, 0x66, - 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x20, 0x28, 0x70, 0x72, 0x65, 0x73, 0x73, 0x20, 0x61, 0x6e, 0x79, 0x20, - 0x6b, 0x65, 0x79, 0x20, 0x74, 0x6f, 0x20, 0x73, 0x74, 0x6f, 0x70, 0x29, 0x0a, - 0x00, 0x00, 0x0a, 0x0d, 0x20, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x20, 0x74, - 0x65, 0x73, 0x74, 0x20, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x0a, 0x0d, - 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x54, 0x65, 0x73, 0x74, 0x20, 0x31, 0x3a, - 0x20, 0x25, 0x64, 0x20, 0x70, 0x61, 0x73, 0x73, 0x20, 0x25, 0x64, 0x20, 0x66, - 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x0a, 0x0d, 0x00, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x20, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x20, 0x00, - 0x0a, 0x0d, 0x45, 0x6e, 0x64, 0x20, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x3a, 0x20, 0x00, 0x0a, 0x0d, 0x00, 0x00, 0x0a, 0x0d, 0x20, 0x20, 0x52, 0x41, - 0x4d, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, - 0x64, 0x0a, 0x0d, 0x00, 0x00, 0x20, 0x20, 0x54, 0x65, 0x73, 0x74, 0x20, 0x32, - 0x3a, 0x20, 0x25, 0x64, 0x20, 0x70, 0x61, 0x73, 0x73, 0x20, 0x25, 0x64, 0x20, - 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x0a, 0x0d, 0x00, 0x0a, 0x0d, - 0x45, 0x6e, 0x74, 0x65, 0x72, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x20, 0x74, 0x6f, - 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x28, 0x30, 0x2d, 0x25, 0x64, 0x2c, 0x37, - 0x35, 0x2d, 0x25, 0x64, 0x29, 0x20, 0x6f, 0x72, 0x20, 0x63, 0x61, 0x72, 0x72, - 0x69, 0x61, 0x67, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x74, - 0x6f, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x6d, 0x6f, - 0x64, 0x65, 0x73, 0x3a, 0x20, 0x00, 0x00, 0x00, 0x00, 0x41, 0x6c, 0x6c, 0x00, - 0x0a, 0x0d, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, - 0x74, 0x6f, 0x20, 0x73, 0x65, 0x6e, 0x64, 0x2c, 0x20, 0x6f, 0x72, 0x20, 0x63, - 0x61, 0x72, 0x72, 0x69, 0x61, 0x67, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x30, 0x30, 0x2d, 0x46, 0x46, 0x3a, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0d, 0x20, 0x20, 0x28, 0x70, 0x72, 0x65, 0x73, - 0x73, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x74, 0x6f, 0x20, - 0x73, 0x74, 0x6f, 0x70, 0x29, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x0a, 0x0d, 0x20, - 0x20, 0x53, 0x79, 0x6e, 0x63, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x73, 0x74, - 0x6f, 0x70, 0x70, 0x65, 0x64, 0x0a, 0x0d, 0x00, 0x20, 0x20, 0x54, 0x65, 0x73, - 0x74, 0x20, 0x25, 0x63, 0x3a, 0x20, 0x25, 0x64, 0x20, 0x70, 0x61, 0x73, 0x73, - 0x20, 0x25, 0x64, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x0a, - 0x0d, 0x00, 0x00, 0x00, 0x00, 0x43, 0x61, 0x72, 0x64, 0x2d, 0x74, 0x6f, 0x2d, - 0x68, 0x6f, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, - 0x74, 0x20, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x2e, 0x2e, 0x00, 0x00, 0x48, 0x65, - 0x78, 0x20, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x20, 0x00, 0x00, - 0x00, 0x25, 0x30, 0x38, 0x78, 0x3a, 0x20, 0x00, 0x00, 0x25, 0x30, 0x32, 0x78, - 0x0a, 0x0d, 0x00, 0x00, 0x25, 0x30, 0x34, 0x78, 0x0a, 0x0d, 0x00, 0x00, 0x25, - 0x30, 0x38, 0x78, 0x0a, 0x0d, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x31, 0x36, - 0x00, 0x00, 0x33, 0x32, 0x00, 0x00, 0x2d, 0x62, 0x69, 0x74, 0x20, 0x48, 0x65, - 0x78, 0x20, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x48, 0x65, 0x78, 0x20, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x3a, 0x20, 0x00, - 0x00, 0x00, 0x00, 0x50, 0x72, 0x65, 0x73, 0x73, 0x20, 0x27, 0x3f, 0x27, 0x20, - 0x66, 0x6f, 0x72, 0x20, 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, - 0x63, 0x73, 0x20, 0x6d, 0x65, 0x6e, 0x75, 0x0a, 0x0d, 0x00, 0x00, 0xe8, 0x03, - 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, - 0x44, 0x45, 0x46, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0d, 0x45, 0x52, 0x52, 0x4f, - 0x52, 0x20, 0x2d, 0x00, 0x00, 0x00, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x2e, 0x2f, 0x74, - 0x69, 0x6d, 0x65, 0x72, 0x2e, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x25, 0x30, 0x32, 0x58, 0x20, 0x00, 0x00, 0x00, 0x0d, 0x54, - 0x69, 0x6d, 0x65, 0x72, 0x20, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x2e, 0x2e, 0x2e, - 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x00, 0x00, 0x00, 0x25, 0x45, 0x20, 0x63, - 0x61, 0x6e, 0x27, 0x74, 0x20, 0x73, 0x65, 0x74, 0x20, 0x75, 0x70, 0x20, 0x74, - 0x69, 0x6d, 0x65, 0x72, 0x20, 0x30, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x25, 0x45, - 0x20, 0x63, 0x61, 0x6e, 0x27, 0x74, 0x20, 0x73, 0x65, 0x74, 0x20, 0x75, 0x70, - 0x20, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x20, 0x32, 0x0a, 0x0d, 0x00, 0x00, 0x00, - 0x25, 0x45, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x20, 0x32, 0x20, 0x62, 0x61, - 0x64, 0x20, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x0a, 0x0d, 0x00, 0x00, 0x25, 0x45, - 0x20, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x20, 0x30, 0x20, 0x49, 0x4e, 0x54, 0x20, - 0x73, 0x74, 0x75, 0x63, 0x6b, 0x20, 0x6f, 0x6e, 0x0a, 0x0d, 0x00, 0x00, 0x00, - 0x25, 0x45, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x20, 0x30, 0x20, 0x64, 0x6f, - 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, - 0x75, 0x70, 0x74, 0x0a, 0x0d, 0x00, 0x25, 0x45, 0x20, 0x74, 0x69, 0x6d, 0x65, - 0x72, 0x20, 0x30, 0x20, 0x49, 0x4e, 0x54, 0x20, 0x77, 0x6f, 0x6e, 0x27, 0x74, - 0x20, 0x67, 0x6f, 0x20, 0x61, 0x77, 0x61, 0x79, 0x0a, 0x0d, 0x00, 0x00, 0x70, - 0x61, 0x73, 0x73, 0x65, 0x64, 0x00, 0x00, 0x0d, 0x46, 0x50, 0x47, 0x41, 0x20, - 0x54, 0x69, 0x6d, 0x65, 0x72, 0x20, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x2e, 0x2e, - 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x00, 0x00, 0x25, 0x45, 0x20, 0x63, - 0x61, 0x6e, 0x27, 0x74, 0x20, 0x73, 0x65, 0x74, 0x20, 0x75, 0x70, 0x20, 0x74, - 0x69, 0x6d, 0x65, 0x72, 0x20, 0x31, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x25, 0x45, - 0x20, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x20, 0x31, 0x20, 0x62, 0x61, 0x64, 0x20, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x0a, 0x0d, 0x00, 0x00, 0x25, 0x45, 0x20, 0x54, - 0x25, 0x64, 0x20, 0x77, 0x72, 0x6f, 0x74, 0x65, 0x20, 0x25, 0x30, 0x38, 0x78, - 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x25, 0x30, 0x38, 0x78, 0x20, 0x61, 0x74, - 0x20, 0x25, 0x30, 0x38, 0x78, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x28, 0x66, 0x03, - 0x80, 0x0d, 0x52, 0x41, 0x4d, 0x20, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x2e, 0x2e, - 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x25, 0x30, 0x38, 0x78, - 0x2d, 0x25, 0x30, 0x38, 0x78, 0x20, 0x00, 0x67, 0x70, 0x70, 0x3d, 0x25, 0x30, - 0x33, 0x78, 0x20, 0x00, 0x00, 0x00, 0x53, 0x25, 0x64, 0x20, 0x00, 0x00, 0x00, - 0x00, 0x6d, 0x6f, 0x64, 0x65, 0x20, 0x25, 0x64, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x49, 0x4c, 0x4c, 0x45, 0x47, 0x41, 0x4c, 0x20, 0x4d, 0x4f, 0x44, 0x45, 0x21, - 0x3f, 0x0a, 0x0d, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x42, 0x41, - 0x44, 0x20, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x21, 0x3f, 0x0a, 0x0d, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x25, 0x64, 0x6b, 0x62, - 0x00, 0x00, 0x00, 0x00, 0x25, 0x64, 0x62, 0x00, 0x20, 0x4e, 0x52, 0x5a, 0x20, - 0x65, 0x78, 0x74, 0x00, 0x00, 0x00, 0x00, 0x20, 0x4e, 0x52, 0x5a, 0x20, 0x63, - 0x6c, 0x6b, 0x2f, 0x32, 0x00, 0x00, 0x20, 0x4e, 0x52, 0x5a, 0x20, 0x31, 0x30, - 0x20, 0x6d, 0x68, 0x7a, 0x00, 0x20, 0x4e, 0x52, 0x5a, 0x20, 0x63, 0x6c, 0x6b, - 0x2f, 0x33, 0x32, 0x00, 0x20, 0x4e, 0x52, 0x5a, 0x49, 0x20, 0x63, 0x6c, 0x6b, - 0x2f, 0x38, 0x00, 0x20, 0x4e, 0x52, 0x5a, 0x49, 0x20, 0x63, 0x6c, 0x6b, 0x2f, - 0x31, 0x36, 0x00, 0x00, 0x00, 0x00, 0x20, 0x46, 0x4d, 0x30, 0x20, 0x63, 0x6c, - 0x6b, 0x2f, 0x38, 0x00, 0x00, 0x20, 0x46, 0x4d, 0x30, 0x20, 0x63, 0x6c, 0x6b, - 0x2f, 0x31, 0x36, 0x00, 0x20, 0x4e, 0x52, 0x5a, 0x49, 0x20, 0x52, 0x78, 0x20, - 0x63, 0x6c, 0x6b, 0x2f, 0x38, 0x00, 0x00, 0x20, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, - 0x57, 0x4e, 0x21, 0x3f, 0x00, 0x00, 0x20, 0x52, 0x53, 0x32, 0x33, 0x32, 0x00, - 0x00, 0x0a, 0x0d, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, - 0x25, 0x45, 0x00, 0x00, 0x20, 0x52, 0x54, 0x53, 0x2f, 0x43, 0x54, 0x53, 0x20, - 0x6e, 0x6f, 0x74, 0x20, 0x6c, 0x6f, 0x77, 0x0a, 0x00, 0x00, 0x00, 0x68, 0x63, - 0x5f, 0x73, 0x74, 0x32, 0x33, 0x20, 0x3d, 0x20, 0x25, 0x78, 0x00, 0x00, 0x00, - 0x00, 0x20, 0x52, 0x54, 0x53, 0x2f, 0x43, 0x54, 0x53, 0x20, 0x6e, 0x6f, 0x74, - 0x20, 0x68, 0x69, 0x67, 0x68, 0x0a, 0x00, 0x00, 0x20, 0x44, 0x54, 0x52, 0x2f, - 0x44, 0x53, 0x52, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6c, 0x6f, 0x77, 0x0a, 0x00, - 0x00, 0x00, 0x20, 0x44, 0x54, 0x52, 0x2f, 0x44, 0x43, 0x44, 0x20, 0x6e, 0x6f, - 0x74, 0x20, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x0a, 0x00, 0x20, 0x44, 0x54, 0x52, - 0x2f, 0x44, 0x53, 0x52, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x68, 0x69, 0x67, 0x68, - 0x20, 0x0a, 0x00, 0x20, 0x44, 0x54, 0x52, 0x2f, 0x44, 0x43, 0x44, 0x20, 0x6e, - 0x6f, 0x74, 0x20, 0x68, 0x69, 0x67, 0x68, 0x0a, 0x00, 0x00, 0x20, 0x44, 0x54, - 0x52, 0x2f, 0x44, 0x53, 0x52, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x6c, 0x6f, 0x77, 0x0a, 0x00, 0x00, 0x56, - 0x2e, 0x31, 0x31, 0x20, 0x53, 0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f, 0x6e, 0x6f, - 0x75, 0x73, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x20, 0x2d, 0x20, 0x42, 0x61, 0x64, - 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0x20, 0x00, 0x00, 0x0d, 0x0a, 0x77, 0x72, 0x6f, 0x74, 0x65, 0x20, 0x25, - 0x30, 0x32, 0x78, 0x2c, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x25, 0x30, 0x32, - 0x78, 0x00, 0x0d, 0x53, 0x79, 0x6e, 0x63, 0x20, 0x74, 0x65, 0x73, 0x74, 0x2e, - 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x00, 0x00, 0x00, - 0x25, 0x45, 0x20, 0x53, 0x25, 0x64, 0x20, 0x68, 0x63, 0x5f, 0x69, 0x64, 0x6c, - 0x20, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x3a, 0x20, 0x77, 0x72, - 0x6f, 0x74, 0x65, 0x20, 0x30, 0x78, 0x41, 0x35, 0x20, 0x72, 0x65, 0x61, 0x64, - 0x20, 0x25, 0x30, 0x32, 0x78, 0x0a, 0x0d, 0x00, 0x00, 0x0d, 0x53, 0x79, 0x6e, - 0x63, 0x20, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, - 0x2e, 0x2e, 0x2e, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x20, 0x25, 0x30, 0x32, 0x64, - 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, - 0x6c, 0x79, 0x20, 0x74, 0x65, 0x73, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x00, 0x00, - 0x6d, 0x6f, 0x64, 0x65, 0x20, 0x25, 0x30, 0x32, 0x64, 0x20, 0x00, 0x00, 0x20, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x20, 0x62, 0x75, 0x73, 0x79, - 0x0a, 0x00, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x20, 0x62, 0x75, - 0x73, 0x79, 0x0a, 0x00, 0x00, 0x20, 0x64, 0x73, 0x72, 0x30, 0x3d, 0x25, 0x30, - 0x32, 0x78, 0x20, 0x64, 0x73, 0x72, 0x31, 0x3d, 0x25, 0x30, 0x32, 0x78, 0x00, - 0x00, 0x00, 0x00, 0x20, 0x44, 0x4d, 0x41, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, - 0x72, 0x20, 0x6f, 0x76, 0x65, 0x72, 0x66, 0x6c, 0x6f, 0x77, 0x0a, 0x00, 0x00, - 0x00, 0x20, 0x73, 0x79, 0x6e, 0x63, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, - 0x75, 0x70, 0x74, 0x20, 0x73, 0x74, 0x75, 0x63, 0x6b, 0x20, 0x6f, 0x6e, 0x0a, - 0x00, 0x00, 0x00, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x20, - 0x6e, 0x65, 0x76, 0x65, 0x72, 0x20, 0x73, 0x74, 0x6f, 0x70, 0x73, 0x0a, 0x00, - 0x00, 0x20, 0x6e, 0x6f, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x64, 0x0a, 0x0d, 0x00, 0x20, 0x73, 0x79, 0x6e, 0x63, - 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x20, 0x64, 0x6f, - 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x0a, 0x0d, - 0x00, 0x0a, 0x0d, 0x00, 0x00, 0x25, 0x30, 0x32, 0x78, 0x2d, 0x25, 0x30, 0x32, - 0x78, 0x20, 0x00, 0x00, 0x25, 0x45, 0x20, 0x62, 0x69, 0x74, 0x72, 0x6f, 0x74, - 0x20, 0x2d, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x68, 0x61, 0x73, 0x20, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x0a, 0x0d, 0x00, 0x00, 0x64, 0x61, 0x74, - 0x61, 0x3a, 0x0a, 0x0d, 0x00, 0x20, 0x62, 0x61, 0x64, 0x20, 0x6d, 0x73, 0x67, - 0x3a, 0x20, 0x6c, 0x65, 0x6e, 0x3d, 0x25, 0x64, 0x2d, 0x25, 0x64, 0x20, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x3d, 0x25, 0x30, 0x32, 0x78, 0x20, 0x64, 0x61, - 0x74, 0x61, 0x3a, 0x0a, 0x0d, 0x00, 0x0a, 0x0d, 0x25, 0x30, 0x34, 0x78, 0x3a, - 0x00, 0x25, 0x30, 0x32, 0x78, 0x2d, 0x25, 0x30, 0x32, 0x78, 0x00, 0x00, 0x00, - 0x20, 0x62, 0x61, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x69, 0x6e, 0x20, - 0x6d, 0x73, 0x67, 0x0a, 0x00, 0x00, 0x00, 0x20, 0x73, 0x79, 0x6e, 0x63, 0x20, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x20, 0x77, 0x6f, 0x6e, - 0x27, 0x74, 0x20, 0x67, 0x6f, 0x20, 0x61, 0x77, 0x61, 0x79, 0x0a, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x60, 0x09, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0xc0, - 0x12, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x80, 0x25, 0x00, 0x00, 0x28, 0x00, - 0x00, 0x00, 0x40, 0x38, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x00, - 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, - 0x00, 0xe1, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x6f, 0xfa, 0x00, 0x00, 0xc8, - 0x00, 0x00, 0x00, 0x00, 0x2c, 0x01, 0x00, 0xfa, 0x00, 0x00, 0x00, 0x38, 0xc1, - 0x01, 0x00, 0x2c, 0x01, 0x00, 0x00, 0x70, 0x82, 0x03, 0x00, 0x58, 0x02, 0x00, - 0x00, 0xe0, 0x04, 0x07, 0x00, 0xe8, 0x03, 0x00, 0x00, 0xa8, 0x0d, 0x0e, 0x00, - 0x40, 0x06, 0x00, 0x00, 0xc8, 0xc0, 0x12, 0x00, 0x40, 0x06, 0x00, 0x00, 0x00, - 0x20, 0x1c, 0x00, 0x40, 0x06, 0x00, 0x00, 0x00, 0x80, 0x25, 0x00, 0x40, 0x06, - 0x00, 0x00, 0x00, 0x40, 0x38, 0x00, 0x40, 0x06, 0x00, 0x00, 0x00, 0x20, 0x1c, - 0x00, 0xc4, 0x09, 0x00, 0x00, 0x00, 0x80, 0x25, 0x00, 0xa0, 0x0f, 0x00, 0x00, - 0x00, 0x40, 0x38, 0x00, 0x88, 0x13, 0x00, 0x00, 0x00, 0x80, 0x70, 0x00, 0x88, - 0x13, 0x00, 0x00, 0x80, 0x96, 0x98, 0x00, 0x88, 0x13, 0x00, 0x00, 0x00, 0x40, - 0x1f, 0x00, 0xa0, 0x0f, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x2e, 0x2e, 0x2f, - 0x73, 0x63, 0x61, 0x2e, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x74, 0x0f, 0xc1, 0x3c, 0x40, 0x28, 0x23, 0x29, 0x62, - 0x69, 0x6f, 0x73, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, - 0x33, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, 0x31, 0x36, 0x3a, - 0x34, 0x32, 0x3a, 0x31, 0x37, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x62, - 0x69, 0x6f, 0x73, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x73, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, - 0x31, 0x34, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, - 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x34, 0x2f, 0x32, 0x33, 0x20, 0x31, 0x38, - 0x3a, 0x34, 0x38, 0x3a, 0x34, 0x32, 0x20, 0x24, 0x20, 0x00, 0x40, 0x28, 0x23, - 0x29, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x2e, 0x63, - 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, - 0x31, 0x2e, 0x33, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, - 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x30, 0x39, 0x2f, 0x31, 0x36, 0x20, 0x32, - 0x33, 0x3a, 0x32, 0x32, 0x3a, 0x30, 0x35, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, - 0x29, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6d, 0x6b, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, - 0x33, 0x2e, 0x32, 0x38, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, - 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x35, 0x2f, 0x33, 0x30, 0x20, - 0x31, 0x35, 0x3a, 0x30, 0x32, 0x3a, 0x30, 0x36, 0x20, 0x24, 0x00, 0x40, 0x28, - 0x23, 0x29, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, - 0x32, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x36, 0x2f, 0x31, 0x30, 0x2f, 0x31, 0x30, 0x20, 0x32, 0x33, 0x3a, - 0x32, 0x37, 0x3a, 0x30, 0x37, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x63, - 0x78, 0x70, 0x62, 0x69, 0x6f, 0x73, 0x2f, 0x4d, 0x61, 0x6b, 0x65, 0x66, 0x69, - 0x6c, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x31, 0x2e, 0x33, 0x20, 0x24, 0x20, 0x20, 0x24, - 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x31, - 0x2f, 0x32, 0x37, 0x20, 0x32, 0x32, 0x3a, 0x31, 0x34, 0x3a, 0x35, 0x36, 0x20, - 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x64, 0x65, 0x66, 0x73, 0x2e, 0x68, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x31, 0x31, 0x20, 0x24, 0x20, 0x20, - 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, - 0x34, 0x2f, 0x30, 0x39, 0x20, 0x31, 0x35, 0x3a, 0x30, 0x38, 0x3a, 0x30, 0x32, - 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, - 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x31, 0x31, 0x20, 0x24, 0x20, - 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, - 0x30, 0x37, 0x2f, 0x32, 0x33, 0x20, 0x30, 0x31, 0x3a, 0x35, 0x36, 0x3a, 0x35, - 0x35, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x68, 0x6f, 0x73, 0x74, 0x63, - 0x6f, 0x6d, 0x6d, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x34, 0x20, 0x24, 0x20, - 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, - 0x31, 0x30, 0x2f, 0x31, 0x30, 0x20, 0x32, 0x33, 0x3a, 0x32, 0x37, 0x3a, 0x30, - 0x38, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x68, 0x6f, 0x73, 0x74, 0x63, - 0x6f, 0x6d, 0x6d, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x31, 0x32, 0x20, 0x24, - 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, - 0x2f, 0x30, 0x34, 0x2f, 0x32, 0x39, 0x20, 0x31, 0x39, 0x3a, 0x33, 0x31, 0x3a, - 0x31, 0x30, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x6d, 0x69, 0x64, 0x2e, - 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x31, 0x31, 0x20, - 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, - 0x36, 0x2f, 0x31, 0x30, 0x2f, 0x31, 0x30, 0x20, 0x32, 0x33, 0x3a, 0x32, 0x37, - 0x3a, 0x30, 0x38, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x6d, 0x6f, 0x64, - 0x65, 0x6d, 0x74, 0x73, 0x74, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x35, 0x20, - 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, - 0x37, 0x2f, 0x30, 0x31, 0x2f, 0x32, 0x30, 0x20, 0x32, 0x30, 0x3a, 0x35, 0x38, - 0x3a, 0x34, 0x33, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x70, 0x61, 0x72, - 0x61, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x31, 0x2e, 0x32, 0x20, - 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, - 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, 0x31, 0x36, 0x3a, 0x35, 0x30, - 0x3a, 0x31, 0x36, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x70, 0x62, 0x75, - 0x73, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x34, 0x20, - 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, - 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, 0x31, 0x36, 0x3a, 0x35, 0x30, - 0x3a, 0x32, 0x35, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x70, 0x6c, 0x78, - 0x39, 0x30, 0x36, 0x30, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x34, 0x20, - 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, - 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, 0x31, 0x36, 0x3a, 0x35, 0x30, - 0x3a, 0x34, 0x39, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x70, 0x72, 0x69, - 0x6e, 0x74, 0x66, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x33, 0x20, - 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, - 0x37, 0x2f, 0x30, 0x31, 0x2f, 0x32, 0x30, 0x20, 0x32, 0x30, 0x3a, 0x35, 0x38, - 0x3a, 0x34, 0x32, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x72, 0x77, 0x2e, - 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x32, 0x20, - 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, - 0x36, 0x2f, 0x30, 0x39, 0x2f, 0x31, 0x36, 0x20, 0x32, 0x33, 0x3a, 0x32, 0x39, - 0x3a, 0x34, 0x34, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x72, 0x77, 0x2e, - 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x32, 0x2e, 0x34, 0x20, - 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, - 0x37, 0x2f, 0x30, 0x32, 0x2f, 0x32, 0x30, 0x20, 0x32, 0x32, 0x3a, 0x32, 0x37, - 0x3a, 0x35, 0x30, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, 0x63, 0x61, - 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x37, 0x20, - 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, - 0x37, 0x2f, 0x30, 0x34, 0x2f, 0x30, 0x37, 0x20, 0x32, 0x31, 0x3a, 0x34, 0x33, - 0x3a, 0x31, 0x34, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, 0x63, 0x61, - 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x36, 0x20, - 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, - 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, 0x31, 0x36, 0x3a, 0x35, 0x33, - 0x3a, 0x30, 0x33, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x63, 0x68, 0x61, - 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x32, 0x20, - 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, - 0x36, 0x2f, 0x31, 0x30, 0x2f, 0x31, 0x30, 0x20, 0x32, 0x33, 0x3a, 0x32, 0x37, - 0x3a, 0x31, 0x31, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, 0x79, 0x6e, - 0x63, 0x62, 0x69, 0x6f, 0x73, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x31, 0x37, - 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, - 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, 0x31, 0x36, 0x3a, 0x35, - 0x35, 0x3a, 0x35, 0x37, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, 0x79, - 0x6e, 0x63, 0x62, 0x69, 0x6f, 0x73, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x24, - 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x31, 0x2e, 0x37, - 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, - 0x39, 0x36, 0x2f, 0x31, 0x30, 0x2f, 0x32, 0x33, 0x20, 0x32, 0x31, 0x3a, 0x34, - 0x30, 0x3a, 0x31, 0x32, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x74, 0x65, - 0x73, 0x74, 0x73, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, - 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x34, - 0x35, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x37, 0x2f, 0x30, 0x34, 0x2f, 0x31, 0x34, 0x20, 0x31, 0x35, 0x3a, - 0x33, 0x38, 0x3a, 0x35, 0x32, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x74, - 0x65, 0x73, 0x74, 0x73, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, - 0x35, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, 0x31, 0x36, 0x3a, - 0x35, 0x37, 0x3a, 0x31, 0x34, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x74, - 0x65, 0x73, 0x74, 0x75, 0x61, 0x72, 0x74, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, - 0x32, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x36, 0x2f, 0x31, 0x30, 0x2f, 0x31, 0x30, 0x20, 0x32, 0x33, 0x3a, - 0x32, 0x37, 0x3a, 0x31, 0x34, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x74, - 0x69, 0x6d, 0x65, 0x72, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, - 0x36, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x36, 0x2f, 0x30, 0x39, 0x2f, 0x31, 0x36, 0x20, 0x32, 0x33, 0x3a, - 0x34, 0x31, 0x3a, 0x34, 0x35, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x74, - 0x69, 0x6d, 0x65, 0x72, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, - 0x38, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x36, 0x2f, 0x30, 0x39, 0x2f, 0x31, 0x36, 0x20, 0x32, 0x33, 0x3a, - 0x34, 0x32, 0x3a, 0x30, 0x38, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x75, - 0x61, 0x72, 0x74, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, - 0x36, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, 0x31, 0x36, 0x3a, - 0x35, 0x38, 0x3a, 0x35, 0x32, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x75, - 0x74, 0x69, 0x6c, 0x2e, 0x73, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, - 0x34, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x37, 0x2f, 0x30, 0x31, 0x2f, 0x32, 0x31, 0x20, 0x31, 0x37, 0x3a, - 0x30, 0x36, 0x3a, 0x35, 0x32, 0x20, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; diff --git a/sys/dev/digi/CX_PCI.c b/sys/dev/digi/CX_PCI.c deleted file mode 100644 index 2a941f7ef5a5..000000000000 --- a/sys/dev/digi/CX_PCI.c +++ /dev/null @@ -1,48 +0,0 @@ -/*- - * Copyright (c) 2001 Brian Somers <brian@Awfulhak.org> - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include <sys/param.h> -#include <sys/conf.h> -#include <sys/kernel.h> -#include <sys/module.h> - -#include <dev/digi/CX_PCI.bios.h> -#include <dev/digi/CX_PCI.fepos.h> -#include <dev/digi/digi_mod.h> - -struct digi_mod digi_mod_CX_PCI = { - DIGI_MOD_VERSION, - { CX_PCI_bios, sizeof(CX_PCI_bios) }, - { CX_PCI_fepos, sizeof(CX_PCI_fepos) }, - { NULL, 0 } -}; - -MODULE_VERSION(digi_CX_PCI, 1); -DEV_MODULE(digi_CX_PCI, 0, 0); diff --git a/sys/dev/digi/CX_PCI.fepos.h b/sys/dev/digi/CX_PCI.fepos.h deleted file mode 100644 index 66ff9d34ef0b..000000000000 --- a/sys/dev/digi/CX_PCI.fepos.h +++ /dev/null @@ -1,2867 +0,0 @@ -/*- - * Copyright (c) 2001 Brian Somers <brian@Awfulhak.org> - * based on work by Slawa Olhovchenkov - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - */ - -static const u_char CX_PCI_fepos[] = { - 0x4f, 0x53, 0x90, 0xa8, 0x69, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x80, - 0x39, 0x7b, 0x00, 0x00, 0x00, 0x00, 0x40, 0x28, 0x23, 0x29, 0x63, 0x78, 0x70, - 0x66, 0x65, 0x70, 0x2e, 0x62, 0x69, 0x6e, 0x20, 0x20, 0x20, 0x20, 0x32, 0x2e, - 0x33, 0x2e, 0x32, 0x20, 0x20, 0x30, 0x36, 0x2f, 0x30, 0x32, 0x2f, 0x39, 0x37, - 0x00, 0x40, 0x28, 0x23, 0x29, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, - 0x74, 0x20, 0x28, 0x43, 0x29, 0x20, 0x31, 0x39, 0x39, 0x32, 0x2c, 0x20, 0x44, - 0x49, 0x47, 0x49, 0x20, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x61, 0x6c, 0x2e, 0x20, 0x41, 0x6c, 0x6c, 0x20, 0x52, 0x69, 0x67, - 0x68, 0x74, 0x73, 0x20, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x2e, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xa0, 0x01, 0x3c, 0x28, 0x02, 0x22, 0xac, 0x00, 0xa0, 0x02, 0x3c, - 0x20, 0x02, 0x42, 0x34, 0x0c, 0x00, 0x43, 0xac, 0x00, 0x60, 0x03, 0x40, 0x00, - 0x60, 0x80, 0x40, 0x00, 0x00, 0x43, 0xac, 0x00, 0x68, 0x03, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x43, 0xac, 0x10, 0x00, 0x44, 0xac, 0x14, 0x00, 0x45, - 0xac, 0x18, 0x00, 0x46, 0xac, 0x1c, 0x00, 0x47, 0xac, 0x20, 0x00, 0x48, 0xac, - 0x24, 0x00, 0x49, 0xac, 0x28, 0x00, 0x4a, 0xac, 0x2c, 0x00, 0x4b, 0xac, 0x30, - 0x00, 0x4c, 0xac, 0x34, 0x00, 0x4d, 0xac, 0x38, 0x00, 0x4e, 0xac, 0x3c, 0x00, - 0x4f, 0xac, 0x40, 0x00, 0x50, 0xac, 0x44, 0x00, 0x51, 0xac, 0x48, 0x00, 0x52, - 0xac, 0x4c, 0x00, 0x53, 0xac, 0x50, 0x00, 0x54, 0xac, 0x54, 0x00, 0x55, 0xac, - 0x58, 0x00, 0x56, 0xac, 0x5c, 0x00, 0x57, 0xac, 0x60, 0x00, 0x58, 0xac, 0x64, - 0x00, 0x59, 0xac, 0x68, 0x00, 0x5a, 0xac, 0x6c, 0x00, 0x5b, 0xac, 0x70, 0x00, - 0x5c, 0xac, 0x74, 0x00, 0x5d, 0xac, 0x78, 0x00, 0x5e, 0xac, 0x7c, 0x00, 0x5f, - 0xac, 0x10, 0x00, 0x08, 0x24, 0x00, 0xa0, 0x09, 0x3c, 0x00, 0x02, 0x29, 0x35, - 0x00, 0x00, 0x8a, 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, 0x11, 0x00, - 0x00, 0x2a, 0xa1, 0x01, 0x00, 0x84, 0x24, 0x01, 0x00, 0x29, 0x25, 0xff, 0xff, - 0x08, 0x25, 0xf8, 0xff, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x01, - 0x3c, 0x10, 0x02, 0x25, 0xac, 0x00, 0xa0, 0x01, 0x3c, 0x14, 0x02, 0x3f, 0xac, - 0x00, 0xa0, 0x01, 0x3c, 0x18, 0x02, 0x3d, 0xac, 0x02, 0x00, 0x08, 0x24, 0x00, - 0xa0, 0x01, 0x3c, 0x10, 0x0c, 0x28, 0xac, 0x00, 0xa0, 0x1d, 0x3c, 0x00, 0x04, - 0xbd, 0x37, 0xe4, 0x57, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x08, - 0x3c, 0x10, 0x0c, 0x08, 0x8d, 0x01, 0x00, 0x01, 0x24, 0x25, 0x00, 0x01, 0x11, - 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0xda, - 0x00, 0x1e, 0x24, 0x00, 0xa0, 0x01, 0x3c, 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, - 0x1e, 0x24, 0x00, 0x10, 0x08, 0x3c, 0x00, 0x60, 0x88, 0x40, 0x06, 0x80, 0x1c, - 0x3c, 0xc0, 0x03, 0x9c, 0x27, 0xeb, 0x00, 0x1e, 0x24, 0x00, 0xa0, 0x01, 0x3c, - 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0x01, 0x00, 0x11, 0x04, 0x00, - 0x00, 0x00, 0x00, 0x06, 0x01, 0x1e, 0x24, 0x00, 0xa0, 0x01, 0x3c, 0x10, 0x00, - 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0x05, 0x80, 0x05, 0x3c, 0x00, 0x00, 0xa5, - 0x24, 0x06, 0x80, 0x06, 0x3c, 0x50, 0x85, 0xc6, 0x24, 0x05, 0x80, 0x04, 0x3c, - 0xe4, 0x01, 0x84, 0x24, 0x23, 0x20, 0xe4, 0x03, 0x21, 0x20, 0x86, 0x00, 0xfc, - 0xff, 0x84, 0x24, 0xfc, 0xff, 0xc6, 0x24, 0x00, 0x00, 0x88, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xc8, 0xac, 0x2b, 0x08, 0xa6, 0x00, 0xf9, 0xff, 0x20, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x01, 0x3c, 0xfe, 0x00, 0x21, 0x34, 0x24, 0x40, 0x01, 0x01, 0x00, - 0x60, 0x88, 0x40, 0x00, 0xa0, 0x01, 0x3c, 0x0f, 0x0c, 0x20, 0xa0, 0x5a, 0x01, - 0x1e, 0x24, 0x00, 0xa0, 0x01, 0x3c, 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, - 0x24, 0x05, 0x80, 0x1f, 0x3c, 0x84, 0x02, 0xff, 0x27, 0x05, 0x80, 0x04, 0x3c, - 0x70, 0x07, 0x84, 0x24, 0x00, 0xa0, 0x01, 0x3c, 0x25, 0x20, 0x81, 0x00, 0x08, - 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa1, 0x01, 0x1e, 0x24, 0x00, 0xa0, - 0x01, 0x3c, 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0x06, 0x80, 0x1d, - 0x3c, 0x60, 0x8d, 0xbd, 0x27, 0x00, 0x00, 0x1e, 0x24, 0x00, 0xa0, 0x01, 0x3c, - 0x10, 0x0c, 0x20, 0xac, 0x3f, 0x00, 0x01, 0x3c, 0xff, 0xff, 0x21, 0x34, 0x24, - 0x70, 0xc1, 0x01, 0x00, 0x80, 0x01, 0x3c, 0x25, 0x70, 0xc1, 0x01, 0x05, 0x80, - 0x04, 0x3c, 0x4a, 0x4a, 0x01, 0x0c, 0x00, 0x00, 0x84, 0x24, 0x6b, 0x40, 0x01, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0xff, 0xbd, 0x27, 0x10, - 0x00, 0xa1, 0xaf, 0x14, 0x00, 0xa2, 0xaf, 0x18, 0x00, 0xa3, 0xaf, 0x1c, 0x00, - 0xa4, 0xaf, 0x20, 0x00, 0xa5, 0xaf, 0x24, 0x00, 0xa6, 0xaf, 0x28, 0x00, 0xa7, - 0xaf, 0x2c, 0x00, 0xa8, 0xaf, 0x30, 0x00, 0xa9, 0xaf, 0x34, 0x00, 0xaa, 0xaf, - 0x38, 0x00, 0xab, 0xaf, 0x3c, 0x00, 0xac, 0xaf, 0x40, 0x00, 0xad, 0xaf, 0x44, - 0x00, 0xae, 0xaf, 0x48, 0x00, 0xaf, 0xaf, 0x4c, 0x00, 0xb8, 0xaf, 0x50, 0x00, - 0xb9, 0xaf, 0x58, 0x00, 0xbe, 0xaf, 0x5c, 0x00, 0xbf, 0xaf, 0x00, 0x70, 0x08, - 0x40, 0x12, 0x48, 0x00, 0x00, 0x10, 0x50, 0x00, 0x00, 0x54, 0x00, 0xa8, 0xaf, - 0x60, 0x00, 0xa9, 0xaf, 0x64, 0x00, 0xaa, 0xaf, 0x00, 0x68, 0x05, 0x40, 0x00, - 0x60, 0x06, 0x40, 0x7c, 0x00, 0xa4, 0x30, 0x66, 0x00, 0x80, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x68, 0x00, 0xa6, 0xaf, 0x24, 0x10, 0xa6, 0x00, 0x00, 0xff, 0x42, - 0x30, 0x00, 0x20, 0x44, 0x30, 0x48, 0x00, 0x80, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x48, 0x30, 0x3b, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x44, 0x30, 0x4d, 0x00, 0x80, 0x14, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0xa6, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x86, 0x40, 0x00, 0x68, 0x05, 0x40, - 0x00, 0x00, 0x00, 0x00, 0x24, 0x10, 0xa6, 0x00, 0x00, 0xff, 0x42, 0x30, 0xec, - 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0xa8, 0x8f, 0x60, 0x00, - 0xa9, 0x8f, 0x64, 0x00, 0xaa, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x88, - 0x40, 0x13, 0x00, 0x20, 0x01, 0x11, 0x00, 0x40, 0x01, 0x14, 0x00, 0xa2, 0x8f, - 0x18, 0x00, 0xa3, 0x8f, 0x1c, 0x00, 0xa4, 0x8f, 0x20, 0x00, 0xa5, 0x8f, 0x24, - 0x00, 0xa6, 0x8f, 0x28, 0x00, 0xa7, 0x8f, 0x2c, 0x00, 0xa8, 0x8f, 0x30, 0x00, - 0xa9, 0x8f, 0x34, 0x00, 0xaa, 0x8f, 0x38, 0x00, 0xab, 0x8f, 0x3c, 0x00, 0xac, - 0x8f, 0x40, 0x00, 0xad, 0x8f, 0x44, 0x00, 0xae, 0x8f, 0x48, 0x00, 0xaf, 0x8f, - 0x4c, 0x00, 0xb8, 0x8f, 0x50, 0x00, 0xb9, 0x8f, 0x58, 0x00, 0xbe, 0x8f, 0x5c, - 0x00, 0xbf, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0xba, 0x8f, 0x10, 0x00, - 0xa1, 0x8f, 0x6c, 0x00, 0xbd, 0x27, 0x08, 0x00, 0x40, 0x03, 0x10, 0x00, 0x00, - 0x42, 0xa4, 0x89, 0x88, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x26, 0x40, 0x06, 0x01, - 0x01, 0xff, 0x08, 0x31, 0x26, 0x30, 0xc8, 0x00, 0x00, 0x00, 0x09, 0x24, 0x00, - 0x68, 0x89, 0x40, 0x00, 0x60, 0x86, 0x40, 0x38, 0x4a, 0x01, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0xcc, 0xff, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x89, 0x88, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x26, 0x40, 0x06, 0x01, 0x01, 0xff, 0x08, 0x31, - 0x26, 0x30, 0xc8, 0x00, 0x00, 0x60, 0x86, 0x40, 0xe4, 0x59, 0x01, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0xc2, 0xff, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x06, 0x80, - 0x08, 0x3c, 0x14, 0x9e, 0x08, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x26, 0x40, 0x06, - 0x01, 0x01, 0xff, 0x08, 0x31, 0x26, 0x30, 0xc8, 0x00, 0x00, 0x60, 0x86, 0x40, - 0x41, 0x4a, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xb7, 0xff, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x06, 0x80, 0x08, 0x3c, 0x10, 0x9e, 0x08, 0x8d, 0x00, 0x00, - 0x00, 0x00, 0x26, 0x40, 0x06, 0x01, 0x01, 0xff, 0x08, 0x31, 0x26, 0x30, 0xc8, - 0x00, 0x00, 0x00, 0x09, 0x24, 0x00, 0x68, 0x89, 0x40, 0x00, 0x60, 0x86, 0x40, - 0xde, 0x5d, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xff, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x05, 0x80, 0x04, 0x3c, 0xb0, 0x7b, 0x84, 0x24, 0x24, 0x40, - 0x01, 0x0c, 0x74, 0x01, 0x05, 0x24, 0xae, 0xff, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x00, 0xec, 0xff, 0xbd, 0x27, 0x08, 0x00, 0xa1, 0xaf, 0x00, 0x70, 0x1a, 0x40, - 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xba, 0xaf, 0x10, 0x00, 0xbf, 0xaf, 0x05, - 0x80, 0x04, 0x3c, 0xb0, 0x7b, 0x84, 0x24, 0x24, 0x40, 0x01, 0x0c, 0x96, 0x01, - 0x05, 0x24, 0x10, 0x00, 0xbf, 0x8f, 0x0c, 0x00, 0xba, 0x8f, 0x08, 0x00, 0xa1, - 0x8f, 0x0c, 0x00, 0xbd, 0x27, 0x08, 0x00, 0x40, 0x03, 0x10, 0x00, 0x00, 0x42, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x01, 0x3c, 0x25, - 0x20, 0x81, 0x00, 0x00, 0x20, 0x01, 0x3c, 0x25, 0x28, 0xa1, 0x00, 0x05, 0x00, - 0xc1, 0x2c, 0x74, 0x00, 0x20, 0x14, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x82, - 0x30, 0x03, 0x00, 0xa3, 0x30, 0x23, 0x38, 0x43, 0x00, 0x49, 0x00, 0xe0, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x20, 0x82, 0x00, 0x05, 0x00, 0xe0, 0x1c, 0xc0, - 0x70, 0x02, 0x00, 0x00, 0x00, 0x88, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, - 0x00, 0x10, 0x06, 0x48, 0xc8, 0x01, 0x00, 0x00, 0x89, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x06, 0x48, 0xc9, 0x01, 0x22, 0x78, 0x0e, 0x00, 0x04, 0x00, 0x88, 0x8c, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x50, 0xe8, 0x01, 0x25, 0x48, 0x2a, 0x01, 0x04, - 0x00, 0x84, 0x24, 0x00, 0x00, 0xa9, 0xb8, 0x23, 0x28, 0xa3, 0x00, 0x21, 0x30, - 0xc3, 0x00, 0xec, 0xff, 0xc6, 0x24, 0xc0, 0x70, 0x07, 0x00, 0x1a, 0x00, 0xc0, - 0x18, 0x22, 0x78, 0x0e, 0x00, 0x04, 0x00, 0x89, 0x8c, 0x06, 0x40, 0xc8, 0x01, - 0x08, 0x00, 0x8a, 0x8c, 0x04, 0x60, 0xe9, 0x01, 0x0c, 0x00, 0x8b, 0x8c, 0x25, - 0x60, 0x88, 0x01, 0x10, 0x00, 0x88, 0x8c, 0x04, 0x00, 0xac, 0xac, 0x06, 0x48, - 0xc9, 0x01, 0x04, 0x60, 0xea, 0x01, 0x25, 0x60, 0x89, 0x01, 0x08, 0x00, 0xac, - 0xac, 0x06, 0x50, 0xca, 0x01, 0x04, 0x60, 0xeb, 0x01, 0x25, 0x60, 0x8a, 0x01, - 0x0c, 0x00, 0xac, 0xac, 0x06, 0x58, 0xcb, 0x01, 0x04, 0x60, 0xe8, 0x01, 0x25, - 0x60, 0x8b, 0x01, 0x10, 0x00, 0xac, 0xac, 0x10, 0x00, 0x84, 0x24, 0x10, 0x00, - 0xa5, 0x24, 0xf0, 0xff, 0xc6, 0x24, 0xe8, 0xff, 0xc0, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0xc6, 0x24, 0x0c, 0x00, 0xc0, 0x18, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x48, 0xc8, 0x01, 0x04, 0x00, 0x88, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x50, 0xe8, 0x01, 0x25, 0x50, 0x49, 0x01, 0x04, 0x00, 0xaa, 0xac, 0x04, 0x00, - 0x84, 0x24, 0x04, 0x00, 0xa5, 0x24, 0xfc, 0xff, 0xc6, 0x24, 0xf6, 0xff, 0xc0, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x89, 0x8c, 0x06, 0x40, 0xc8, 0x01, - 0x04, 0x48, 0xe9, 0x01, 0x25, 0x40, 0x09, 0x01, 0x22, 0x48, 0x06, 0x00, 0xc0, - 0x48, 0x09, 0x00, 0x04, 0x40, 0x28, 0x01, 0x21, 0x28, 0xa6, 0x00, 0x08, 0x00, - 0xe0, 0x03, 0x07, 0x00, 0xa8, 0xa8, 0x00, 0x00, 0x88, 0x98, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xa8, 0xb8, 0x23, 0x28, 0xa3, 0x00, 0x23, 0x20, 0x82, 0x00, - 0x21, 0x30, 0xc2, 0x00, 0xec, 0xff, 0xc6, 0x24, 0x0e, 0x00, 0xc0, 0x18, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x89, 0x8c, 0x08, 0x00, 0x8a, 0x8c, 0x0c, 0x00, - 0x8b, 0x8c, 0x10, 0x00, 0x8c, 0x8c, 0x04, 0x00, 0xa9, 0xac, 0x10, 0x00, 0x84, - 0x24, 0x08, 0x00, 0xaa, 0xac, 0xf0, 0xff, 0xc6, 0x24, 0x0c, 0x00, 0xab, 0xac, - 0x10, 0x00, 0xac, 0xac, 0x10, 0x00, 0xa5, 0x24, 0xf4, 0xff, 0xc0, 0x1c, 0x00, - 0x00, 0x00, 0x00, 0x0c, 0x00, 0xc6, 0x24, 0x09, 0x00, 0xc0, 0x18, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x88, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xa8, - 0xac, 0x04, 0x00, 0x84, 0x24, 0x04, 0x00, 0xa5, 0x24, 0xfc, 0xff, 0xc6, 0x24, - 0xf9, 0xff, 0xc0, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, 0x86, 0x00, 0x07, - 0x00, 0x88, 0x88, 0x21, 0x28, 0xa6, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x07, 0x00, - 0xa8, 0xa8, 0x09, 0x00, 0xc0, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xa0, 0x01, 0x00, 0xa5, 0x24, - 0x01, 0x00, 0x84, 0x24, 0xff, 0xff, 0xc6, 0x24, 0xf9, 0xff, 0xc0, 0x1c, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x1e, 0x24, 0x00, 0xa0, 0x01, - 0x3c, 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0x05, 0x80, 0x08, 0x3c, - 0x98, 0x07, 0x08, 0x25, 0x00, 0xa0, 0x01, 0x3c, 0x25, 0x40, 0x01, 0x01, 0x08, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x04, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x05, 0x3c, 0x00, 0x60, 0x85, 0x40, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x09, 0x3c, 0x01, 0x00, 0x01, 0x3c, - 0x23, 0x40, 0x21, 0x01, 0x03, 0x00, 0x00, 0xa1, 0x04, 0x00, 0x08, 0x25, 0xfd, - 0xff, 0x09, 0x15, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x05, 0x3c, 0x00, 0x60, - 0x85, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x09, - 0x3c, 0x01, 0x00, 0x01, 0x3c, 0x23, 0x40, 0x21, 0x01, 0x03, 0x00, 0x00, 0xa1, - 0x04, 0x00, 0x08, 0x25, 0xfd, 0xff, 0x09, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x84, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x40, 0xff, 0xff, 0x08, - 0x3c, 0xff, 0x3f, 0x08, 0x35, 0x24, 0x20, 0x88, 0x00, 0x00, 0x10, 0x84, 0x40, - 0x06, 0x80, 0x08, 0x3c, 0x50, 0x85, 0x08, 0x25, 0x06, 0x80, 0x09, 0x3c, 0x10, - 0xd2, 0x29, 0x25, 0xfc, 0xff, 0x01, 0x24, 0x24, 0x48, 0x21, 0x01, 0xfc, 0xff, - 0x01, 0x24, 0x24, 0x40, 0x01, 0x01, 0x00, 0x00, 0x00, 0xad, 0x04, 0x00, 0x08, - 0x25, 0xfd, 0xff, 0x09, 0x15, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xe0, 0x03, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x02, 0x40, 0xff, 0xff, 0x01, 0x3c, 0xfe, - 0x00, 0x21, 0x34, 0x25, 0x20, 0x81, 0x00, 0x24, 0x40, 0x44, 0x00, 0x00, 0x60, - 0x88, 0x40, 0x01, 0xff, 0x42, 0x30, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x60, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x26, 0x40, 0x44, 0x00, - 0x01, 0xff, 0x08, 0x31, 0x26, 0x40, 0x02, 0x01, 0x00, 0x60, 0x88, 0x40, 0x08, - 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x08, 0x40, 0x00, 0x00, - 0x00, 0x00, 0xfe, 0xff, 0x01, 0x24, 0x24, 0x48, 0x01, 0x01, 0x00, 0x60, 0x89, - 0x40, 0x00, 0x68, 0x02, 0x40, 0x00, 0x03, 0x84, 0x30, 0x25, 0x18, 0x44, 0x00, - 0x00, 0x68, 0x83, 0x40, 0x00, 0x60, 0x88, 0x40, 0x24, 0x10, 0x44, 0x00, 0x08, - 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x08, 0x40, 0x00, 0x03, - 0x84, 0x30, 0xfe, 0xff, 0x01, 0x24, 0x24, 0x48, 0x01, 0x01, 0x00, 0x60, 0x89, - 0x40, 0x00, 0x68, 0x02, 0x40, 0x27, 0x18, 0x80, 0x00, 0x24, 0x18, 0x62, 0x00, - 0x00, 0x68, 0x83, 0x40, 0x00, 0x60, 0x88, 0x40, 0x24, 0x10, 0x44, 0x00, 0x08, - 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x08, 0x3c, 0x00, 0x60, - 0x88, 0x40, 0xc0, 0xbf, 0x08, 0x3c, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x60, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x09, 0x3c, - 0xfe, 0x00, 0x29, 0x35, 0x00, 0x00, 0x00, 0x00, 0x24, 0x40, 0x09, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x25, 0x40, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, - 0x88, 0x40, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x03, 0x3c, 0x25, 0x18, 0x83, 0x00, - 0x0a, 0x00, 0x60, 0xa4, 0x0c, 0x00, 0x60, 0xa4, 0x12, 0x00, 0x60, 0xa4, 0x14, - 0x00, 0x60, 0xa4, 0x18, 0x00, 0x80, 0xa4, 0x1a, 0x00, 0x80, 0xa4, 0xff, 0xff, - 0x02, 0x34, 0x1c, 0x00, 0x82, 0xa4, 0x20, 0x00, 0x60, 0xa4, 0x22, 0x00, 0x60, - 0xa4, 0x28, 0x00, 0x80, 0xa4, 0x2a, 0x00, 0x80, 0xa4, 0x33, 0x04, 0x02, 0x24, - 0x2c, 0x00, 0x82, 0xa4, 0xee, 0x6f, 0x02, 0x24, 0x2e, 0x00, 0x82, 0xa4, 0x4b, - 0x00, 0x80, 0xa0, 0x01, 0x00, 0x02, 0x24, 0x4c, 0x00, 0x62, 0xa0, 0x4d, 0x00, - 0x62, 0xa0, 0x4e, 0x00, 0x62, 0xa0, 0x4f, 0x00, 0x60, 0xa0, 0x54, 0x00, 0x60, - 0xa0, 0xff, 0x00, 0x02, 0x24, 0x56, 0x00, 0x62, 0xa0, 0x57, 0x00, 0x60, 0xa0, - 0x58, 0x00, 0x60, 0xa0, 0x59, 0x00, 0x60, 0xa0, 0x5a, 0x00, 0x60, 0xa0, 0x5b, - 0x00, 0x60, 0xa0, 0x11, 0x00, 0x02, 0x24, 0x5c, 0x00, 0x82, 0xa0, 0x13, 0x00, - 0x02, 0x24, 0x5d, 0x00, 0x82, 0xa0, 0x16, 0x00, 0x02, 0x24, 0x5e, 0x00, 0x82, - 0xa0, 0x5f, 0x00, 0x80, 0xa0, 0x64, 0x00, 0x80, 0xa0, 0x68, 0x00, 0x80, 0xa0, - 0x6c, 0x00, 0x80, 0xac, 0x10, 0x00, 0x02, 0x24, 0x08, 0x00, 0xe0, 0x03, 0x50, - 0x00, 0x62, 0xa4, 0xe8, 0xff, 0xbd, 0x27, 0x14, 0x00, 0xbf, 0xaf, 0x10, 0x00, - 0xb0, 0xaf, 0x21, 0x80, 0x80, 0x00, 0x48, 0x00, 0x04, 0x92, 0x65, 0x00, 0x03, - 0x92, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x03, 0x00, 0x21, 0x10, 0x43, 0x00, - 0x80, 0x10, 0x02, 0x00, 0x23, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x06, - 0x80, 0x03, 0x3c, 0x21, 0x18, 0x62, 0x00, 0xb8, 0x90, 0x63, 0x8c, 0x06, 0x00, - 0x02, 0x24, 0x06, 0x00, 0x62, 0x14, 0x09, 0x00, 0x82, 0x28, 0x08, 0x00, 0x82, - 0x28, 0x10, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x9a, 0x42, 0x01, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x54, - 0x42, 0x01, 0x0c, 0x21, 0x20, 0x00, 0x02, 0x48, 0x00, 0x03, 0x92, 0x08, 0x00, - 0x02, 0x24, 0x06, 0x00, 0x62, 0x14, 0x00, 0x20, 0x02, 0x3c, 0x25, 0x10, 0x02, - 0x02, 0x20, 0x00, 0x03, 0x24, 0x50, 0x00, 0x43, 0xa4, 0x0d, 0x00, 0x02, 0x24, - 0x2c, 0x00, 0x02, 0xa6, 0x14, 0x00, 0xbf, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, - 0x00, 0xe0, 0x03, 0x18, 0x00, 0xbd, 0x27, 0xe8, 0xff, 0xbd, 0x27, 0x14, 0x00, - 0xbf, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x80, 0x80, 0x00, 0x00, 0x20, 0x02, - 0x3c, 0x25, 0x38, 0x02, 0x02, 0x1f, 0x00, 0xa2, 0x2c, 0xac, 0x00, 0x40, 0x10, - 0x80, 0x10, 0x05, 0x00, 0x05, 0x80, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0xc0, - 0x7b, 0x22, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1a, 0x00, 0x06, 0xa6, 0x2e, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x00, 0x42, 0x34, 0x5f, 0x43, 0x01, 0x08, 0x2e, 0x00, 0x02, 0xa6, - 0x1c, 0x00, 0x06, 0xa6, 0x2e, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x42, 0x34, 0x5f, 0x43, 0x01, 0x08, 0x2e, 0x00, 0x02, 0xa6, 0x0a, 0x00, - 0xe2, 0x94, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x30, 0x0c, 0x00, 0xe3, - 0x94, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x63, 0x30, 0x23, 0x20, 0x43, 0x00, - 0x0e, 0x00, 0x03, 0x96, 0x00, 0x00, 0x00, 0x00, 0x24, 0x20, 0x83, 0x00, 0x23, - 0x10, 0x46, 0x00, 0x24, 0x10, 0x43, 0x00, 0x23, 0x20, 0x82, 0x00, 0x09, 0x00, - 0x80, 0x18, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, - 0x00, 0x52, 0x00, 0x02, 0xa6, 0x0e, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, - 0x24, 0x10, 0xc2, 0x00, 0xdf, 0x42, 0x01, 0x08, 0x0c, 0x00, 0xe2, 0xa4, 0x78, - 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x44, 0x00, 0x52, 0x00, - 0x02, 0xa6, 0x2e, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x42, - 0x34, 0x5f, 0x43, 0x01, 0x08, 0x2e, 0x00, 0x02, 0xa6, 0x64, 0x00, 0x02, 0x92, - 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x42, 0x34, 0x57, 0x43, 0x01, 0x08, 0x7f, - 0x00, 0x42, 0x30, 0x64, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, - 0x42, 0x34, 0x57, 0x43, 0x01, 0x08, 0xbf, 0x00, 0x42, 0x30, 0x5a, 0x00, 0xe6, - 0xa0, 0x03, 0x12, 0x06, 0x00, 0x5b, 0x00, 0xe2, 0xa0, 0x2e, 0x00, 0x02, 0x96, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x42, 0x34, 0x5f, 0x43, 0x01, 0x08, 0x2e, - 0x00, 0x02, 0xa6, 0x01, 0x00, 0x02, 0x24, 0x4b, 0x00, 0x02, 0xa2, 0xff, 0xff, - 0x02, 0x34, 0x0a, 0x00, 0xc2, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x02, - 0x8e, 0x04, 0x00, 0xc0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x46, 0x00, - 0x05, 0x43, 0x01, 0x08, 0x6c, 0x00, 0x02, 0xae, 0x19, 0x00, 0x42, 0x24, 0x05, - 0x43, 0x01, 0x08, 0x6c, 0x00, 0x02, 0xae, 0x6c, 0x00, 0x06, 0xae, 0x2e, 0x00, - 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x42, 0x34, 0x5f, 0x43, 0x01, - 0x08, 0x2e, 0x00, 0x02, 0xa6, 0x03, 0x12, 0x06, 0x00, 0x27, 0x10, 0x02, 0x00, - 0x68, 0x00, 0x03, 0x92, 0x00, 0x00, 0x00, 0x00, 0x24, 0x18, 0x62, 0x00, 0x25, - 0x18, 0x66, 0x00, 0x68, 0x00, 0x03, 0xa2, 0x2e, 0x00, 0x02, 0x96, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x42, 0x34, 0x5f, 0x43, 0x01, 0x08, 0x2e, 0x00, 0x02, - 0xa6, 0x28, 0x00, 0x06, 0xa6, 0x2e, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, - 0x40, 0x00, 0x42, 0x34, 0x5f, 0x43, 0x01, 0x08, 0x2e, 0x00, 0x02, 0xa6, 0x5c, - 0x00, 0x06, 0xa2, 0x03, 0x12, 0x06, 0x00, 0x5d, 0x00, 0x02, 0xa2, 0x2e, 0x00, - 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x42, 0x34, 0x5f, 0x43, 0x01, - 0x08, 0x2e, 0x00, 0x02, 0xa6, 0x5f, 0x43, 0x01, 0x08, 0x18, 0x00, 0x06, 0xa6, - 0x64, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x42, 0x34, 0x57, - 0x43, 0x01, 0x08, 0xdf, 0x00, 0x42, 0x30, 0x64, 0x00, 0x02, 0x92, 0x00, 0x00, - 0x00, 0x00, 0x20, 0x00, 0x42, 0x34, 0x57, 0x43, 0x01, 0x08, 0xef, 0x00, 0x42, - 0x30, 0x54, 0x42, 0x01, 0x0c, 0x21, 0x20, 0x00, 0x02, 0x64, 0x00, 0x02, 0x92, - 0x00, 0x00, 0x00, 0x00, 0x57, 0x43, 0x01, 0x08, 0x01, 0x00, 0x42, 0x34, 0x2a, - 0x00, 0x06, 0xa6, 0x2e, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, - 0x42, 0x34, 0x5f, 0x43, 0x01, 0x08, 0x2e, 0x00, 0x02, 0xa6, 0x03, 0x12, 0x06, - 0x00, 0x27, 0x10, 0x02, 0x00, 0x5f, 0x00, 0x03, 0x92, 0x00, 0x00, 0x00, 0x00, - 0x24, 0x18, 0x62, 0x00, 0x25, 0x18, 0x66, 0x00, 0x5f, 0x00, 0x03, 0xa2, 0x2e, - 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x42, 0x34, 0x5f, 0x43, - 0x01, 0x08, 0x2e, 0x00, 0x02, 0xa6, 0x2c, 0x00, 0x06, 0xa6, 0x2e, 0x00, 0x02, - 0x96, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x42, 0x34, 0x5f, 0x43, 0x01, 0x08, - 0x2e, 0x00, 0x02, 0xa6, 0x5e, 0x00, 0x06, 0xa2, 0x2e, 0x00, 0x02, 0x96, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x42, 0x34, 0x5f, 0x43, 0x01, 0x08, 0x2e, 0x00, - 0x02, 0xa6, 0x64, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x42, - 0x34, 0x64, 0x00, 0x02, 0xa2, 0x2e, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x42, 0x34, 0x5f, 0x43, 0x01, 0x08, 0x2e, 0x00, 0x02, 0xa6, 0x60, - 0x43, 0x01, 0x08, 0x21, 0x10, 0x00, 0x00, 0x01, 0x00, 0x02, 0x24, 0x14, 0x00, - 0xbf, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x18, 0x00, 0xbd, - 0x27, 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x48, 0x00, 0x87, 0x90, - 0x65, 0x00, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x03, 0x00, 0x21, - 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x23, 0x10, 0x43, 0x00, 0x80, 0x10, - 0x02, 0x00, 0x06, 0x80, 0x03, 0x3c, 0x21, 0x18, 0x62, 0x00, 0xb8, 0x90, 0x63, - 0x8c, 0x06, 0x00, 0x02, 0x24, 0x06, 0x00, 0x62, 0x14, 0x09, 0x00, 0xe2, 0x28, - 0x08, 0x00, 0xe2, 0x28, 0x05, 0x00, 0x40, 0x14, 0x01, 0x00, 0x02, 0x24, 0x7d, - 0x43, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x40, 0x10, 0x01, 0x00, - 0x02, 0x24, 0xa9, 0x42, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xbf, - 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, - 0xc8, 0xff, 0xbd, 0x27, 0x30, 0x00, 0xbf, 0xaf, 0x2c, 0x00, 0xb5, 0xaf, 0x28, - 0x00, 0xb4, 0xaf, 0x24, 0x00, 0xb3, 0xaf, 0x20, 0x00, 0xb2, 0xaf, 0x1c, 0x00, - 0xb1, 0xaf, 0x18, 0x00, 0xb0, 0xaf, 0x00, 0xa0, 0x02, 0x3c, 0x10, 0x0d, 0x42, - 0x34, 0x00, 0x00, 0x43, 0x94, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x71, 0x30, - 0x02, 0x00, 0x42, 0x94, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x50, 0x30, 0x41, - 0x00, 0x30, 0x12, 0x00, 0xa0, 0x13, 0x3c, 0x00, 0x04, 0x73, 0x36, 0x00, 0x80, - 0x15, 0x3c, 0x00, 0x10, 0xb5, 0x36, 0x00, 0xa0, 0x12, 0x3c, 0x18, 0x0d, 0x52, - 0x36, 0x00, 0xa0, 0x14, 0x3c, 0x10, 0x0d, 0x94, 0x36, 0x25, 0x10, 0x13, 0x02, - 0x03, 0x00, 0x43, 0x88, 0x00, 0x00, 0x43, 0x98, 0x00, 0x00, 0x00, 0x00, 0x13, - 0x00, 0xa3, 0xab, 0x10, 0x00, 0xa3, 0xbb, 0x11, 0x00, 0xa3, 0x93, 0x00, 0x00, - 0x00, 0x00, 0xc0, 0x11, 0x03, 0x00, 0x21, 0x20, 0x55, 0x00, 0x58, 0x92, 0x82, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x18, 0x62, 0x00, 0x12, 0x00, 0x60, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x65, 0x00, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, - 0x10, 0x03, 0x00, 0x21, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x23, 0x10, - 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x10, 0x00, 0xa5, 0x93, 0x06, 0x80, 0x01, - 0x3c, 0x21, 0x08, 0x22, 0x00, 0xa0, 0x90, 0x22, 0x8c, 0x12, 0x00, 0xa6, 0x97, - 0x00, 0x00, 0x00, 0x00, 0x09, 0xf8, 0x40, 0x00, 0x1f, 0x00, 0xa5, 0x30, 0x16, - 0x00, 0x40, 0x14, 0x04, 0x00, 0x02, 0x26, 0x00, 0x00, 0x42, 0x96, 0x00, 0x00, - 0x00, 0x00, 0xfc, 0x03, 0x49, 0x30, 0x02, 0x00, 0x44, 0x96, 0x00, 0x00, 0x00, - 0x00, 0xfc, 0x03, 0x84, 0x30, 0x00, 0xa0, 0x02, 0x3c, 0x00, 0x08, 0x42, 0x34, - 0x25, 0x10, 0x22, 0x01, 0x25, 0x18, 0x13, 0x02, 0x03, 0x00, 0x65, 0x88, 0x00, - 0x00, 0x65, 0x98, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x45, 0xa8, 0x00, 0x00, - 0x45, 0xb8, 0x04, 0x00, 0x22, 0x25, 0xfc, 0x03, 0x49, 0x30, 0x03, 0x00, 0x24, - 0x11, 0x04, 0x00, 0x02, 0x26, 0x00, 0x00, 0x49, 0xa6, 0x04, 0x00, 0x02, 0x26, - 0xfc, 0x03, 0x50, 0x30, 0x02, 0x00, 0x90, 0xa6, 0xc9, 0xff, 0x30, 0x16, 0x25, - 0x10, 0x13, 0x02, 0x30, 0x00, 0xbf, 0x8f, 0x2c, 0x00, 0xb5, 0x8f, 0x28, 0x00, - 0xb4, 0x8f, 0x24, 0x00, 0xb3, 0x8f, 0x20, 0x00, 0xb2, 0x8f, 0x1c, 0x00, 0xb1, - 0x8f, 0x18, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x38, 0x00, 0xbd, 0x27, - 0xc8, 0xff, 0xbd, 0x27, 0x30, 0x00, 0xbf, 0xaf, 0x2c, 0x00, 0xb7, 0xaf, 0x28, - 0x00, 0xb6, 0xaf, 0x24, 0x00, 0xb5, 0xaf, 0x20, 0x00, 0xb4, 0xaf, 0x1c, 0x00, - 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, - 0xaf, 0x21, 0x88, 0x80, 0x00, 0x21, 0xb0, 0xa0, 0x00, 0x21, 0x80, 0x00, 0x00, - 0x21, 0xa0, 0xc0, 0x02, 0x2e, 0x00, 0x32, 0x96, 0x00, 0x00, 0x00, 0x00, 0x78, - 0x00, 0x40, 0x12, 0x21, 0x98, 0x00, 0x00, 0x05, 0x80, 0x17, 0x3c, 0x40, 0x7c, - 0xf7, 0x26, 0x00, 0x20, 0x02, 0x3c, 0xf5, 0x43, 0x01, 0x08, 0x25, 0xa8, 0x22, - 0x02, 0x02, 0x91, 0x12, 0x00, 0x04, 0x00, 0x73, 0x26, 0x0f, 0x00, 0x42, 0x32, - 0xfc, 0xff, 0x40, 0x10, 0x01, 0x00, 0x42, 0x32, 0x69, 0x00, 0x40, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x48, 0x00, 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x00, - 0x42, 0x24, 0x00, 0x00, 0x82, 0xa2, 0x0f, 0x00, 0x62, 0x2e, 0x5b, 0x00, 0x40, - 0x10, 0x01, 0x00, 0x93, 0xa2, 0x80, 0x10, 0x13, 0x00, 0x21, 0x10, 0x57, 0x00, - 0x00, 0x00, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x64, 0x00, 0x30, 0x92, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x44, - 0x01, 0x08, 0x64, 0x00, 0x20, 0xa2, 0x16, 0x00, 0x30, 0x96, 0x00, 0x00, 0x00, - 0x00, 0x5f, 0x44, 0x01, 0x08, 0x02, 0x00, 0x90, 0xa2, 0x1a, 0x00, 0x23, 0x96, - 0x00, 0x00, 0x00, 0x00, 0x16, 0x44, 0x01, 0x08, 0xc0, 0x1b, 0x03, 0x00, 0x1c, - 0x00, 0x23, 0x96, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x1b, 0x03, 0x00, 0x16, 0x00, - 0x22, 0x96, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x1a, 0x00, 0x62, - 0x00, 0x02, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x07, 0x00, - 0xff, 0xff, 0x01, 0x24, 0x04, 0x00, 0x41, 0x14, 0x00, 0x80, 0x01, 0x3c, 0x02, - 0x00, 0x61, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x06, 0x00, 0x12, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x44, 0x01, - 0x08, 0x02, 0x00, 0x90, 0xa2, 0x52, 0x00, 0x30, 0x96, 0x00, 0x00, 0x00, 0x00, - 0x5f, 0x44, 0x01, 0x08, 0x02, 0x00, 0x90, 0xa2, 0x2c, 0x00, 0x30, 0x96, 0x00, - 0x00, 0x00, 0x00, 0x5f, 0x44, 0x01, 0x08, 0x02, 0x00, 0x90, 0xa2, 0x28, 0x00, - 0x30, 0x96, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x44, 0x01, 0x08, 0x02, 0x00, 0x90, - 0xa2, 0x2a, 0x00, 0x30, 0x96, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x44, 0x01, 0x08, - 0x02, 0x00, 0x90, 0xa2, 0x68, 0x00, 0x30, 0x92, 0x00, 0x00, 0x00, 0x00, 0x5f, - 0x44, 0x01, 0x08, 0x02, 0x00, 0x90, 0xa2, 0x5f, 0x00, 0x30, 0x92, 0x00, 0x00, - 0x00, 0x00, 0x5f, 0x44, 0x01, 0x08, 0x02, 0x00, 0x90, 0xa2, 0x5e, 0x00, 0x30, - 0x92, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x44, 0x01, 0x08, 0x02, 0x00, 0x90, 0xa2, - 0x5d, 0x00, 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x02, 0x00, 0x5c, - 0x00, 0x23, 0x92, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x44, 0x01, 0x08, 0x21, 0x80, - 0x43, 0x00, 0x6c, 0x00, 0x30, 0x8e, 0x6c, 0x00, 0x20, 0xae, 0x78, 0x00, 0x22, - 0x96, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x5e, 0x44, 0x01, 0x08, - 0x78, 0x00, 0x22, 0xa6, 0x5b, 0x00, 0xa2, 0x92, 0x5a, 0x00, 0xa3, 0x92, 0x00, - 0x12, 0x02, 0x00, 0x5e, 0x44, 0x01, 0x08, 0x25, 0x80, 0x43, 0x00, 0x7c, 0x00, - 0x30, 0x96, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x44, 0x01, 0x08, 0x02, 0x00, 0x90, - 0xa2, 0x0c, 0x80, 0x84, 0x27, 0x24, 0x40, 0x01, 0x0c, 0x10, 0x02, 0x05, 0x24, - 0x02, 0x00, 0x90, 0xa2, 0x03, 0x12, 0x10, 0x00, 0x03, 0x00, 0x82, 0xa2, 0x04, - 0x00, 0x94, 0x26, 0x42, 0x90, 0x12, 0x00, 0x91, 0xff, 0x40, 0x16, 0x01, 0x00, - 0x73, 0x26, 0x23, 0x10, 0x96, 0x02, 0x30, 0x00, 0xbf, 0x8f, 0x2c, 0x00, 0xb7, - 0x8f, 0x28, 0x00, 0xb6, 0x8f, 0x24, 0x00, 0xb5, 0x8f, 0x20, 0x00, 0xb4, 0x8f, - 0x1c, 0x00, 0xb3, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, - 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x38, 0x00, 0xbd, 0x27, 0xe8, 0xff, - 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x48, 0x00, 0x86, 0x90, 0x65, 0x00, 0x83, - 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x03, 0x00, 0x21, 0x10, 0x43, 0x00, - 0x80, 0x10, 0x02, 0x00, 0x23, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x06, - 0x80, 0x03, 0x3c, 0x21, 0x18, 0x62, 0x00, 0xb8, 0x90, 0x63, 0x8c, 0x06, 0x00, - 0x02, 0x24, 0x06, 0x00, 0x62, 0x14, 0x09, 0x00, 0xc2, 0x28, 0x08, 0x00, 0xc2, - 0x28, 0x05, 0x00, 0x40, 0x14, 0x01, 0x00, 0x02, 0x24, 0x8a, 0x44, 0x01, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x40, 0x10, 0x01, 0x00, 0x02, 0x24, 0xdc, - 0x43, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xbf, 0x8f, 0x18, 0x00, - 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x78, 0xfe, 0xbd, - 0x27, 0x84, 0x01, 0xbf, 0xaf, 0x80, 0x01, 0xbe, 0xaf, 0x7c, 0x01, 0xb7, 0xaf, - 0x78, 0x01, 0xb6, 0xaf, 0x74, 0x01, 0xb5, 0xaf, 0x70, 0x01, 0xb4, 0xaf, 0x6c, - 0x01, 0xb3, 0xaf, 0x68, 0x01, 0xb2, 0xaf, 0x64, 0x01, 0xb1, 0xaf, 0x60, 0x01, - 0xb0, 0xaf, 0x10, 0x01, 0xa4, 0xaf, 0x18, 0x01, 0xa5, 0xaf, 0x28, 0x01, 0xa0, - 0xaf, 0x18, 0x01, 0xb2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x30, 0x46, 0x02, - 0x30, 0x01, 0xa6, 0xaf, 0x21, 0xf0, 0x00, 0x00, 0x20, 0x01, 0xa0, 0xaf, 0xc0, - 0x89, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x40, 0x10, 0x21, 0xb0, - 0x00, 0x00, 0x00, 0xa0, 0x02, 0x3c, 0x30, 0x0c, 0x42, 0x34, 0x00, 0x00, 0x42, - 0x90, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, - 0xac, 0x89, 0x82, 0x8f, 0x5c, 0x92, 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x23, - 0x10, 0x43, 0x00, 0xff, 0x3f, 0x03, 0x3c, 0xff, 0xff, 0x63, 0x34, 0x2b, 0x18, - 0x62, 0x00, 0x02, 0x00, 0x60, 0x14, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x89, 0x80, - 0xaf, 0xc0, 0x89, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x40, 0x14, - 0x10, 0x00, 0xb7, 0x27, 0x00, 0xa0, 0x04, 0x3c, 0x30, 0x0c, 0x84, 0x34, 0x00, - 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x40, 0x10, 0x10, 0x00, - 0xb7, 0x27, 0x02, 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x42, - 0x30, 0x10, 0x01, 0xab, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x63, 0x8d, - 0x00, 0x00, 0x00, 0x00, 0x45, 0x00, 0x43, 0x14, 0xf4, 0x00, 0x02, 0x24, 0x00, - 0x00, 0x42, 0xa2, 0xb3, 0x00, 0x02, 0x24, 0x01, 0x00, 0x42, 0xa2, 0xc3, 0x00, - 0x02, 0x24, 0x02, 0x00, 0x42, 0xa2, 0x95, 0x00, 0x02, 0x24, 0x03, 0x00, 0x42, - 0xa2, 0x04, 0x00, 0x52, 0x26, 0x08, 0x00, 0x82, 0x94, 0x00, 0x00, 0x00, 0x00, - 0x81, 0x00, 0x42, 0x2c, 0x02, 0x00, 0x40, 0x14, 0x80, 0x00, 0x02, 0x24, 0x08, - 0x00, 0x82, 0xa4, 0x00, 0xa0, 0x04, 0x3c, 0x30, 0x0c, 0x84, 0x34, 0x00, 0x00, - 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x42, 0x30, 0x02, 0x00, 0x03, - 0x24, 0x0e, 0x00, 0x43, 0x10, 0x00, 0xa0, 0x02, 0x3c, 0x00, 0x00, 0x82, 0x90, - 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x42, 0x30, 0x05, 0x00, 0x03, 0x24, 0x08, - 0x00, 0x43, 0x10, 0x00, 0xa0, 0x02, 0x3c, 0x00, 0x00, 0x82, 0x90, 0x00, 0x00, - 0x00, 0x00, 0xff, 0x00, 0x42, 0x30, 0x06, 0x00, 0x03, 0x24, 0x06, 0x00, 0x43, - 0x14, 0x21, 0x80, 0x00, 0x00, 0x00, 0xa0, 0x02, 0x3c, 0x30, 0x0c, 0x42, 0x34, - 0x08, 0x00, 0x42, 0x94, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x50, 0x30, 0x0a, - 0x00, 0x10, 0x26, 0x00, 0xa0, 0x04, 0x3c, 0x30, 0x0c, 0x84, 0x34, 0x21, 0x28, - 0x40, 0x02, 0x58, 0x41, 0x01, 0x0c, 0x21, 0x30, 0x00, 0x02, 0x10, 0x01, 0xac, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x82, 0x8d, 0x00, 0x00, 0x00, 0x00, - 0xc0, 0x89, 0x82, 0xaf, 0x04, 0x00, 0x82, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x70, - 0x00, 0x43, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x80, 0x10, 0x03, 0x00, 0x21, 0x10, - 0x43, 0x00, 0x40, 0x10, 0x02, 0x00, 0xac, 0x89, 0x83, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x21, 0x10, 0x43, 0x00, 0x5c, 0x92, 0x82, 0xaf, 0x21, 0x90, 0x50, 0x02, - 0x30, 0x01, 0xab, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0x4b, 0x02, 0x61, - 0x01, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xb7, 0x27, 0x10, 0x01, - 0xac, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x95, 0x8d, 0x40, 0x00, 0x82, - 0x8d, 0x00, 0x00, 0x00, 0x00, 0xac, 0x00, 0x40, 0x18, 0x21, 0x98, 0x00, 0x00, - 0x00, 0x00, 0xb1, 0x8e, 0x24, 0x00, 0xa2, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x9f, - 0x00, 0x40, 0x10, 0x21, 0xa0, 0x00, 0x00, 0xf0, 0xff, 0x6b, 0x26, 0x38, 0x01, - 0xab, 0xaf, 0x00, 0x20, 0x0c, 0x3c, 0x25, 0x30, 0x2c, 0x02, 0x0a, 0x00, 0xc2, - 0x94, 0x0c, 0x00, 0xc3, 0x94, 0xff, 0xff, 0x42, 0x30, 0x23, 0x10, 0x43, 0x00, - 0x0e, 0x00, 0x23, 0x96, 0x00, 0x00, 0x00, 0x00, 0x24, 0x28, 0x43, 0x00, 0x20, - 0x00, 0xa2, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, 0x18, 0x82, 0x02, 0x04, 0x80, - 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0x62, 0x00, 0x16, 0x00, 0x40, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x2b, 0x10, 0x62, 0x00, 0x11, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x80, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0xa4, 0x00, 0x0c, 0x00, - 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xc2, 0x94, 0x08, 0x80, 0x83, - 0x97, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x43, 0x00, 0x0e, 0x00, 0x23, 0x96, - 0x00, 0x00, 0x00, 0x00, 0x24, 0x10, 0x43, 0x00, 0x0a, 0x00, 0xc2, 0xa4, 0x0e, - 0x00, 0x22, 0x96, 0x00, 0x00, 0x00, 0x00, 0x24, 0x28, 0x44, 0x00, 0x1e, 0x00, - 0x24, 0x96, 0x78, 0x00, 0x22, 0x96, 0x7a, 0x00, 0x23, 0x96, 0x00, 0x00, 0x00, - 0x00, 0x23, 0x10, 0x43, 0x00, 0xff, 0xff, 0x42, 0x30, 0x23, 0x20, 0x82, 0x00, - 0x2b, 0x10, 0x85, 0x00, 0x02, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, - 0x28, 0x80, 0x00, 0x13, 0x00, 0xa0, 0x10, 0x09, 0x00, 0xa2, 0x2c, 0x05, 0x00, - 0x40, 0x14, 0x01, 0x00, 0xa2, 0x24, 0x00, 0x01, 0xa2, 0x2c, 0x02, 0x00, 0x40, - 0x14, 0x02, 0x00, 0xa2, 0x24, 0x03, 0x00, 0xa2, 0x24, 0x21, 0x28, 0x40, 0x00, - 0x00, 0x16, 0x13, 0x00, 0x00, 0x1c, 0x14, 0x00, 0x21, 0x10, 0x43, 0x00, 0x21, - 0x10, 0x45, 0x00, 0x00, 0x00, 0xe2, 0xae, 0x04, 0x00, 0xf7, 0x26, 0x01, 0x00, - 0xd6, 0x26, 0x20, 0x01, 0xab, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x58, 0x65, - 0x01, 0x20, 0x01, 0xab, 0xaf, 0x00, 0xa0, 0x02, 0x3c, 0x10, 0x0d, 0x42, 0x94, - 0x00, 0xa0, 0x03, 0x3c, 0x12, 0x0d, 0x63, 0x94, 0xff, 0xff, 0x42, 0x30, 0x0a, - 0x00, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x10, 0x3c, 0x10, 0x0d, - 0x10, 0x36, 0x81, 0x43, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x96, 0x02, 0x00, 0x03, 0x96, 0xff, 0xff, 0x42, 0x30, 0xfa, 0xff, 0x43, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x22, 0x96, 0x00, 0x00, 0x00, 0x00, 0x13, - 0x00, 0x40, 0x10, 0x00, 0x20, 0x0c, 0x3c, 0x06, 0x00, 0xd3, 0x13, 0x00, 0x00, - 0x00, 0x00, 0x38, 0x01, 0xac, 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, - 0xa2, 0x01, 0x00, 0x52, 0x26, 0x21, 0xf0, 0x60, 0x02, 0x08, 0x00, 0xa2, 0x8e, - 0x21, 0x20, 0x20, 0x02, 0x09, 0xf8, 0x40, 0x00, 0x21, 0x28, 0x40, 0x02, 0x21, - 0x90, 0x42, 0x02, 0x2e, 0x00, 0x20, 0xa6, 0x30, 0x01, 0xab, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x2b, 0x10, 0x4b, 0x02, 0xe7, 0x00, 0x40, 0x10, 0x00, 0x20, 0x0c, - 0x3c, 0x25, 0x10, 0x2c, 0x02, 0x12, 0x00, 0x43, 0x94, 0x14, 0x00, 0x42, 0x94, - 0xff, 0xff, 0x63, 0x30, 0x23, 0x28, 0x62, 0x00, 0x16, 0x00, 0x24, 0x96, 0x00, - 0x00, 0x00, 0x00, 0x24, 0x28, 0xa4, 0x00, 0x7c, 0x00, 0x22, 0x96, 0x7e, 0x00, - 0x23, 0x96, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0x43, 0x00, 0x00, 0x14, 0x02, - 0x00, 0x03, 0x14, 0x02, 0x00, 0x23, 0x10, 0x45, 0x00, 0x82, 0x20, 0x04, 0x00, - 0x2a, 0x20, 0x82, 0x00, 0x19, 0x00, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x06, - 0x00, 0xd3, 0x13, 0x00, 0x00, 0x00, 0x00, 0x38, 0x01, 0xab, 0x93, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x4b, 0xa2, 0x01, 0x00, 0x52, 0x26, 0x21, 0xf0, 0x60, - 0x02, 0x7c, 0x00, 0x22, 0x96, 0x00, 0x00, 0x00, 0x00, 0x23, 0x28, 0x45, 0x00, - 0x7e, 0x00, 0x25, 0xa6, 0xa0, 0x00, 0x82, 0x26, 0x00, 0x00, 0x42, 0xa2, 0x01, - 0x00, 0x52, 0x26, 0x00, 0x00, 0x45, 0xa2, 0x01, 0x00, 0x52, 0x26, 0x02, 0x12, - 0x05, 0x00, 0x00, 0x00, 0x42, 0xa2, 0x01, 0x00, 0x52, 0x26, 0x30, 0x01, 0xac, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0x4c, 0x02, 0xbc, 0x00, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x94, 0x26, 0x24, 0x00, 0xa2, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x2b, 0x10, 0x82, 0x02, 0x65, 0xff, 0x40, 0x14, 0x80, 0x00, - 0x31, 0x26, 0x01, 0x00, 0x73, 0x26, 0x10, 0x01, 0xab, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x40, 0x00, 0x62, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x62, 0x02, - 0x56, 0xff, 0x40, 0x14, 0x2c, 0x00, 0xb5, 0x26, 0x34, 0x00, 0xc0, 0x12, 0x00, - 0x00, 0x00, 0x00, 0x30, 0x01, 0xac, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x23, 0x60, - 0x92, 0x01, 0x28, 0x01, 0xac, 0xaf, 0x28, 0x01, 0xaa, 0x8f, 0x20, 0x01, 0xab, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x8b, 0x01, 0x2a, 0x00, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x28, 0x01, 0xa7, 0x8f, 0x21, 0x20, 0xc0, 0x02, 0x21, - 0x40, 0x00, 0x00, 0x1a, 0x00, 0xe4, 0x00, 0x02, 0x00, 0x80, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x0d, 0x00, 0x07, 0x00, 0xff, 0xff, 0x01, 0x24, 0x04, 0x00, 0x81, - 0x14, 0x00, 0x80, 0x01, 0x3c, 0x02, 0x00, 0xe1, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x06, 0x00, 0x12, 0x60, 0x00, 0x00, 0x28, 0x01, 0xac, 0xaf, 0x21, - 0x48, 0x80, 0x00, 0x21, 0x38, 0x40, 0x01, 0x21, 0x20, 0xc0, 0x02, 0x10, 0x00, - 0xa6, 0x27, 0x0d, 0x00, 0xc0, 0x1a, 0x21, 0x28, 0x00, 0x00, 0x00, 0x00, 0xc3, - 0x94, 0x28, 0x01, 0xab, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x63, 0x01, - 0x03, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x23, 0x38, 0xe3, 0x00, 0xff, - 0xff, 0x84, 0x24, 0x01, 0x00, 0xa5, 0x24, 0x2a, 0x10, 0xb6, 0x00, 0xf5, 0xff, - 0x40, 0x14, 0x04, 0x00, 0xc6, 0x24, 0x07, 0x00, 0x80, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x05, 0x00, 0x89, 0x10, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x25, - 0x04, 0x00, 0x02, 0x29, 0xdb, 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x28, - 0x01, 0xac, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x82, 0x29, 0x09, 0x00, - 0x40, 0x10, 0x40, 0x18, 0x16, 0x00, 0x18, 0x01, 0xab, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x23, 0x10, 0x4b, 0x02, 0x21, 0x10, 0x43, 0x00, 0x2c, 0x01, 0x42, 0x28, - 0x6f, 0x00, 0x40, 0x10, 0x02, 0x00, 0x0c, 0x24, 0x28, 0x01, 0xac, 0xaf, 0x10, - 0x00, 0xb7, 0x27, 0x69, 0x00, 0xc0, 0x1a, 0x21, 0xa8, 0x00, 0x00, 0x00, 0x00, - 0xf1, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x03, 0x26, 0x11, 0x00, 0x03, 0x14, 0x11, - 0x00, 0xff, 0x00, 0x45, 0x30, 0xff, 0xff, 0x31, 0x32, 0x10, 0x01, 0xab, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x63, 0x8d, 0x40, 0x10, 0x04, 0x00, 0x21, - 0x10, 0x44, 0x00, 0x80, 0x10, 0x02, 0x00, 0x23, 0x10, 0x44, 0x00, 0x80, 0x10, - 0x02, 0x00, 0x21, 0x10, 0x43, 0x00, 0xc0, 0x19, 0x05, 0x00, 0x00, 0x00, 0x42, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x21, 0xa0, 0x62, 0x00, 0x01, 0x00, 0x02, 0x24, - 0x05, 0x00, 0xc4, 0x13, 0x4b, 0x00, 0x82, 0xa2, 0xf0, 0xff, 0x82, 0x24, 0x00, - 0x00, 0x42, 0xa2, 0x01, 0x00, 0x52, 0x26, 0x21, 0xf0, 0x80, 0x00, 0x28, 0x01, - 0xac, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x91, 0x01, 0x04, 0x00, 0x40, - 0x10, 0x0a, 0x00, 0x22, 0x2a, 0x28, 0x01, 0xb1, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x0a, 0x00, 0x22, 0x2a, 0x08, 0x00, 0x40, 0x10, 0x02, 0x01, 0x22, 0x2a, 0xff, - 0xff, 0x31, 0x26, 0xff, 0xff, 0x22, 0x26, 0x00, 0x11, 0x02, 0x00, 0x21, 0x10, - 0x45, 0x00, 0x00, 0x00, 0x42, 0xa2, 0x3d, 0x46, 0x01, 0x08, 0x01, 0x00, 0x52, - 0x26, 0x06, 0x00, 0x40, 0x10, 0x80, 0xff, 0xa2, 0x24, 0xfe, 0xff, 0x31, 0x26, - 0x00, 0x00, 0x42, 0xa2, 0x01, 0x00, 0x51, 0xa2, 0x3d, 0x46, 0x01, 0x08, 0x02, - 0x00, 0x52, 0x26, 0xfd, 0xff, 0x31, 0x26, 0x90, 0xff, 0xa2, 0x24, 0x00, 0x00, - 0x42, 0xa2, 0x01, 0x00, 0x51, 0xa2, 0x03, 0x12, 0x11, 0x00, 0x02, 0x00, 0x42, - 0xa2, 0x03, 0x00, 0x52, 0x26, 0x78, 0x00, 0x82, 0x96, 0x00, 0x00, 0x00, 0x00, - 0x21, 0x10, 0x51, 0x00, 0x78, 0x00, 0x82, 0xa6, 0x0e, 0x00, 0x83, 0x96, 0x00, - 0x20, 0x0b, 0x3c, 0x25, 0x98, 0x8b, 0x02, 0x0c, 0x00, 0x62, 0x96, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x42, 0x30, 0xff, 0xff, 0x42, 0x24, 0x23, 0x80, 0x62, - 0x00, 0x2a, 0x10, 0x30, 0x02, 0x0e, 0x00, 0x40, 0x14, 0x00, 0x20, 0x0c, 0x3c, - 0x0c, 0x00, 0x64, 0x96, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x84, 0x30, 0x3c, - 0x00, 0x82, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, 0x82, 0x00, 0x21, 0x28, - 0x40, 0x02, 0x58, 0x41, 0x01, 0x0c, 0x21, 0x30, 0x00, 0x02, 0x21, 0x90, 0x50, - 0x02, 0x23, 0x88, 0x30, 0x02, 0x0c, 0x00, 0x60, 0xa6, 0x00, 0x20, 0x0c, 0x3c, - 0x25, 0x80, 0x8c, 0x02, 0x0c, 0x00, 0x04, 0x96, 0x00, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x84, 0x30, 0x3c, 0x00, 0x82, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, - 0x82, 0x00, 0x21, 0x28, 0x40, 0x02, 0x58, 0x41, 0x01, 0x0c, 0x21, 0x30, 0x20, - 0x02, 0x21, 0x90, 0x51, 0x02, 0x0c, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, - 0x21, 0x10, 0x51, 0x00, 0x0c, 0x00, 0x02, 0xa6, 0x01, 0x00, 0xb5, 0x26, 0x2a, - 0x10, 0xb6, 0x02, 0x99, 0xff, 0x40, 0x14, 0x04, 0x00, 0xf7, 0x26, 0x18, 0x01, - 0xab, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0x4b, 0x02, 0x84, 0x01, 0xbf, - 0x8f, 0x80, 0x01, 0xbe, 0x8f, 0x7c, 0x01, 0xb7, 0x8f, 0x78, 0x01, 0xb6, 0x8f, - 0x74, 0x01, 0xb5, 0x8f, 0x70, 0x01, 0xb4, 0x8f, 0x6c, 0x01, 0xb3, 0x8f, 0x68, - 0x01, 0xb2, 0x8f, 0x64, 0x01, 0xb1, 0x8f, 0x60, 0x01, 0xb0, 0x8f, 0x08, 0x00, - 0xe0, 0x03, 0x88, 0x01, 0xbd, 0x27, 0x03, 0x00, 0xa3, 0x90, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1a, 0x03, 0x00, 0x02, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, 0x00, - 0x21, 0x18, 0x62, 0x00, 0x01, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0f, - 0x00, 0x45, 0x30, 0x01, 0x00, 0x02, 0x24, 0x05, 0x00, 0xa2, 0x10, 0x0e, 0x00, - 0x02, 0x24, 0x05, 0x00, 0xa2, 0x10, 0x21, 0x10, 0x00, 0x00, 0x8f, 0x46, 0x01, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x8e, 0x46, 0x01, 0x08, 0x1e, 0x00, 0x83, 0xa4, - 0x78, 0x00, 0x83, 0xa4, 0x01, 0x00, 0x02, 0x24, 0x08, 0x00, 0xe0, 0x03, 0x00, - 0x00, 0x00, 0x00, 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x48, 0x00, - 0x86, 0x90, 0x65, 0x00, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x03, - 0x00, 0x21, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x23, 0x10, 0x43, 0x00, - 0x80, 0x10, 0x02, 0x00, 0x06, 0x80, 0x03, 0x3c, 0x21, 0x18, 0x62, 0x00, 0xb8, - 0x90, 0x63, 0x8c, 0x06, 0x00, 0x02, 0x24, 0x06, 0x00, 0x62, 0x14, 0x09, 0x00, - 0xc2, 0x28, 0x08, 0x00, 0xc2, 0x28, 0x05, 0x00, 0x40, 0x14, 0x01, 0x00, 0x02, - 0x24, 0xaa, 0x46, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x40, 0x10, - 0x01, 0x00, 0x02, 0x24, 0x7b, 0x46, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x10, - 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x28, 0xff, 0xbd, 0x27, 0xd4, 0x00, 0xbf, 0xaf, 0xd0, 0x00, 0xbe, - 0xaf, 0xcc, 0x00, 0xb7, 0xaf, 0xc8, 0x00, 0xb6, 0xaf, 0xc4, 0x00, 0xb5, 0xaf, - 0xc0, 0x00, 0xb4, 0xaf, 0xbc, 0x00, 0xb3, 0xaf, 0xb8, 0x00, 0xb2, 0xaf, 0xb4, - 0x00, 0xb1, 0xaf, 0xb0, 0x00, 0xb0, 0xaf, 0x21, 0xb0, 0x80, 0x00, 0x21, 0x20, - 0xa0, 0x00, 0x44, 0x00, 0xd2, 0x8e, 0x0c, 0x00, 0xd1, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x06, 0x00, 0x40, 0x12, 0x21, 0x38, 0x00, 0x00, 0x66, 0x00, 0x20, 0xa2, - 0x01, 0x00, 0xe7, 0x24, 0x2b, 0x10, 0xf2, 0x00, 0xfc, 0xff, 0x40, 0x14, 0x80, - 0x00, 0x31, 0x26, 0x21, 0x98, 0x80, 0x00, 0x21, 0x30, 0x66, 0x02, 0xa0, 0x00, - 0xa6, 0xaf, 0x08, 0x00, 0xd5, 0x8e, 0x2b, 0x10, 0x66, 0x02, 0x2f, 0x01, 0x40, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x1e, 0x3c, 0x00, 0xa0, 0x17, 0x3c, - 0x30, 0x0c, 0xf7, 0x36, 0x00, 0x00, 0x62, 0x92, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x19, 0x02, 0x00, 0x10, 0x00, 0x62, 0x2c, 0x1f, 0x01, 0x40, 0x10, 0x80, 0x10, - 0x03, 0x00, 0x05, 0x80, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0x80, 0x7c, 0x22, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x62, 0x92, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x47, 0x30, 0x00, - 0x00, 0x62, 0x92, 0x00, 0x00, 0x00, 0x00, 0x02, 0x11, 0x02, 0x00, 0x01, 0x00, - 0x52, 0x24, 0xf5, 0x46, 0x01, 0x08, 0x01, 0x00, 0x73, 0x26, 0x00, 0x00, 0x62, - 0x92, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x47, 0x30, 0x01, 0x00, 0x72, 0x92, - 0x00, 0x00, 0x00, 0x00, 0xf5, 0x46, 0x01, 0x08, 0x02, 0x00, 0x73, 0x26, 0x00, - 0x00, 0x62, 0x92, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x47, 0x30, 0x02, 0x00, - 0x62, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x02, 0x00, 0x01, 0x00, 0x63, - 0x92, 0x00, 0x00, 0x00, 0x00, 0x21, 0x90, 0x43, 0x00, 0x03, 0x00, 0x73, 0x26, - 0x24, 0x00, 0xa2, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0xe2, 0x00, 0x03, - 0x00, 0x40, 0x14, 0xc0, 0x19, 0x07, 0x00, 0xf5, 0x47, 0x01, 0x08, 0x21, 0x98, - 0x72, 0x02, 0x00, 0x00, 0xa2, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, 0x88, 0x62, - 0x00, 0x01, 0x00, 0x08, 0x24, 0x66, 0x00, 0x28, 0xa2, 0x25, 0x18, 0x3e, 0x02, - 0x14, 0x00, 0x62, 0x94, 0x12, 0x00, 0x63, 0x94, 0xff, 0xff, 0x42, 0x30, 0x23, - 0x10, 0x43, 0x00, 0xff, 0xff, 0x42, 0x24, 0x16, 0x00, 0x23, 0x96, 0x00, 0x00, - 0x00, 0x00, 0x24, 0x10, 0x43, 0x00, 0x2a, 0x10, 0x52, 0x00, 0xf4, 0x00, 0x40, - 0x14, 0x0d, 0x00, 0x02, 0x24, 0x7c, 0x00, 0x22, 0x96, 0x00, 0x00, 0x00, 0x00, - 0x21, 0x10, 0x52, 0x00, 0x7c, 0x00, 0x22, 0xa6, 0x16, 0x00, 0x23, 0x96, 0x25, - 0xa0, 0x3e, 0x02, 0x12, 0x00, 0x82, 0x96, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x42, 0x30, 0xff, 0xff, 0x42, 0x24, 0x23, 0x80, 0x62, 0x00, 0x2a, 0x10, 0x50, - 0x02, 0x0c, 0x00, 0x40, 0x14, 0x21, 0x20, 0x60, 0x02, 0x12, 0x00, 0x85, 0x96, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xa5, 0x30, 0x38, 0x00, 0x22, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x21, 0x28, 0xa2, 0x00, 0x58, 0x41, 0x01, 0x0c, 0x21, 0x30, - 0x00, 0x02, 0x21, 0x98, 0x70, 0x02, 0x23, 0x90, 0x50, 0x02, 0x12, 0x00, 0x80, - 0xa6, 0x25, 0x80, 0x3e, 0x02, 0x12, 0x00, 0x05, 0x96, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0xa5, 0x30, 0x38, 0x00, 0x22, 0x8e, 0x21, 0x20, 0x60, 0x02, 0x21, - 0x28, 0xa2, 0x00, 0x58, 0x41, 0x01, 0x0c, 0x21, 0x30, 0x40, 0x02, 0x21, 0x98, - 0x72, 0x02, 0x12, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x52, - 0x00, 0xf5, 0x47, 0x01, 0x08, 0x12, 0x00, 0x02, 0xa6, 0x00, 0x00, 0x62, 0x92, - 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x47, 0x30, 0x24, 0x00, 0xa2, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x2b, 0x10, 0xe2, 0x00, 0x53, 0x00, 0x40, 0x10, 0xc0, 0x19, - 0x07, 0x00, 0x00, 0x00, 0xa2, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, 0x88, 0x62, - 0x00, 0x02, 0x00, 0x72, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0x12, 0x00, - 0x01, 0x00, 0x62, 0x92, 0x00, 0x00, 0x00, 0x00, 0x21, 0x90, 0x42, 0x02, 0x78, - 0x00, 0x22, 0x96, 0x00, 0x00, 0x00, 0x00, 0x23, 0x20, 0x52, 0x00, 0x7a, 0x00, - 0x23, 0x96, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0x43, 0x00, 0xff, 0xff, 0x84, - 0x30, 0xff, 0xff, 0x42, 0x30, 0x2b, 0x10, 0x44, 0x00, 0xb0, 0x00, 0x40, 0x14, - 0x11, 0x00, 0x02, 0x24, 0x7a, 0x00, 0x32, 0xa6, 0x78, 0x00, 0x22, 0x96, 0x00, - 0x00, 0x00, 0x00, 0x3a, 0x00, 0x42, 0x16, 0x25, 0x10, 0x3e, 0x02, 0x0a, 0x00, - 0x43, 0x94, 0x0c, 0x00, 0x42, 0x94, 0xff, 0xff, 0x63, 0x30, 0x35, 0x00, 0x62, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x47, 0x01, 0x08, 0x4b, 0x00, 0x20, 0xa2, - 0x00, 0x00, 0x62, 0x92, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x47, 0x30, 0x24, - 0x00, 0xa2, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0xe2, 0x00, 0x03, 0x00, - 0x40, 0x14, 0xc0, 0x11, 0x07, 0x00, 0xf5, 0x47, 0x01, 0x08, 0x04, 0x00, 0x73, - 0x26, 0x00, 0x00, 0xa4, 0x8e, 0x0c, 0x00, 0xa3, 0x8e, 0x21, 0x20, 0x44, 0x00, - 0x09, 0xf8, 0x60, 0x00, 0x21, 0x28, 0x60, 0x02, 0x88, 0x00, 0x40, 0x14, 0x04, - 0x00, 0x73, 0x26, 0x00, 0x48, 0x01, 0x08, 0x0b, 0x00, 0x02, 0x24, 0x00, 0x00, - 0x62, 0x92, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x47, 0x30, 0x24, 0x00, 0xa2, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0xe2, 0x00, 0x18, 0x00, 0x40, 0x10, - 0xc0, 0x19, 0x07, 0x00, 0x00, 0x00, 0xa2, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, - 0x88, 0x62, 0x00, 0x25, 0x20, 0x3e, 0x02, 0x4f, 0x00, 0x82, 0x90, 0x01, 0x00, - 0x63, 0x92, 0x00, 0x00, 0x00, 0x00, 0x25, 0x10, 0x43, 0x00, 0x4f, 0x00, 0x82, - 0xa0, 0x02, 0x00, 0x63, 0x92, 0x54, 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, - 0x26, 0x18, 0x62, 0x00, 0x56, 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, 0x24, - 0x18, 0x62, 0x00, 0x58, 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, 0x25, 0x10, - 0x43, 0x00, 0x58, 0x00, 0x82, 0xa0, 0x02, 0x00, 0x62, 0x92, 0x00, 0x00, 0x00, - 0x00, 0x54, 0x00, 0x82, 0xa0, 0xf5, 0x47, 0x01, 0x08, 0x03, 0x00, 0x73, 0x26, - 0x00, 0x00, 0x62, 0x92, 0x00, 0x00, 0x00, 0x00, 0x10, 0xff, 0x43, 0x24, 0x10, - 0x00, 0x62, 0x2c, 0x5d, 0x00, 0x40, 0x10, 0x80, 0x10, 0x03, 0x00, 0x05, 0x80, - 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0xc0, 0x7c, 0x22, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0x92, - 0x00, 0x00, 0x00, 0x00, 0x10, 0xff, 0x52, 0x26, 0x40, 0x00, 0xc2, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x2a, 0x10, 0x42, 0x02, 0x09, 0x00, 0x40, 0x10, 0x40, 0x10, - 0x12, 0x00, 0x21, 0x10, 0x52, 0x00, 0x80, 0x10, 0x02, 0x00, 0x23, 0x10, 0x52, - 0x00, 0x80, 0x10, 0x02, 0x00, 0x08, 0x00, 0xc3, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0xf1, 0x47, 0x01, 0x08, 0x21, 0xa8, 0x43, 0x00, 0x90, 0x81, 0x95, 0x27, 0xf5, - 0x47, 0x01, 0x08, 0x01, 0x00, 0x73, 0x26, 0x00, 0x00, 0x63, 0x92, 0xf4, 0x00, - 0x02, 0x24, 0x4d, 0x00, 0x62, 0x14, 0x0c, 0x00, 0x02, 0x24, 0x01, 0x00, 0x63, - 0x92, 0xb3, 0x00, 0x02, 0x24, 0x49, 0x00, 0x62, 0x14, 0x0c, 0x00, 0x02, 0x24, - 0x02, 0x00, 0x63, 0x92, 0xc3, 0x00, 0x02, 0x24, 0x45, 0x00, 0x62, 0x14, 0x0c, - 0x00, 0x02, 0x24, 0x03, 0x00, 0x63, 0x92, 0x95, 0x00, 0x02, 0x24, 0x41, 0x00, - 0x62, 0x14, 0x0c, 0x00, 0x02, 0x24, 0x04, 0x00, 0x73, 0x26, 0x21, 0x20, 0x60, - 0x02, 0x10, 0x00, 0xa5, 0x27, 0x58, 0x41, 0x01, 0x0c, 0x0a, 0x00, 0x06, 0x24, - 0x10, 0x00, 0xa2, 0x93, 0x01, 0x00, 0x08, 0x24, 0x02, 0x00, 0x48, 0x14, 0x21, - 0x90, 0x00, 0x00, 0x18, 0x00, 0xb2, 0x97, 0xc0, 0x89, 0x83, 0x8f, 0x4c, 0x00, - 0xc2, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2c, 0xff, 0x62, 0x14, 0x0a, 0x00, 0x52, - 0x26, 0x00, 0x00, 0xe2, 0x92, 0x00, 0x00, 0x00, 0x00, 0x28, 0xff, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe3, 0x92, 0x10, 0x00, 0xa2, 0x93, 0x00, - 0x00, 0x00, 0x00, 0x23, 0xff, 0x43, 0x14, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0xe3, 0x92, 0x12, 0x00, 0xa2, 0x93, 0x00, 0x00, 0x00, 0x00, 0x1e, 0xff, 0x43, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0xa3, 0x8f, 0x04, 0x00, 0xe2, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x19, 0xff, 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0xe3, 0x96, 0x18, 0x00, 0xa2, 0x97, 0x00, 0x00, 0x00, 0x00, 0x14, 0xff, - 0x43, 0x14, 0x21, 0x20, 0x60, 0x02, 0x00, 0xa0, 0x05, 0x3c, 0x30, 0x0c, 0xa5, - 0x34, 0x58, 0x41, 0x01, 0x0c, 0x21, 0x30, 0x40, 0x02, 0x00, 0x00, 0xe0, 0xa2, - 0xc0, 0x89, 0x80, 0xaf, 0xf5, 0x47, 0x01, 0x08, 0x21, 0x98, 0x72, 0x02, 0x00, - 0x48, 0x01, 0x08, 0x21, 0x10, 0x00, 0x00, 0xf5, 0x47, 0x01, 0x08, 0x01, 0x00, - 0x73, 0x26, 0x00, 0x48, 0x01, 0x08, 0x0a, 0x00, 0x02, 0x24, 0xa0, 0x00, 0xa8, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0x68, 0x02, 0xd6, 0xfe, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x26, - 0x10, 0x68, 0x02, 0x2b, 0x10, 0x02, 0x00, 0x23, 0x10, 0x02, 0x00, 0x0e, 0x00, - 0x42, 0x30, 0xd4, 0x00, 0xbf, 0x8f, 0xd0, 0x00, 0xbe, 0x8f, 0xcc, 0x00, 0xb7, - 0x8f, 0xc8, 0x00, 0xb6, 0x8f, 0xc4, 0x00, 0xb5, 0x8f, 0xc0, 0x00, 0xb4, 0x8f, - 0xbc, 0x00, 0xb3, 0x8f, 0xb8, 0x00, 0xb2, 0x8f, 0xb4, 0x00, 0xb1, 0x8f, 0xb0, - 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0xd8, 0x00, 0xbd, 0x27, 0xe0, 0xff, - 0xbd, 0x27, 0x18, 0x00, 0xbf, 0xaf, 0x48, 0x9a, 0x84, 0x8f, 0x1f, 0x42, 0x01, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x03, 0x3c, 0x30, 0x0c, 0x63, 0x34, - 0x00, 0x00, 0x62, 0x90, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x40, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x62, 0x90, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, - 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x57, 0x01, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0xac, 0x89, 0x8a, 0x8f, 0x00, 0x80, 0x08, 0x3c, 0x00, 0x10, 0x08, 0x35, - 0x58, 0x92, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x40, 0x18, 0x21, - 0x48, 0x00, 0x00, 0x00, 0x20, 0x0d, 0x3c, 0x00, 0xa0, 0x0b, 0x3c, 0x18, 0x0d, - 0x6b, 0x35, 0x00, 0xa0, 0x0c, 0x3c, 0x00, 0x08, 0x8c, 0x35, 0x25, 0x28, 0x0d, - 0x01, 0x55, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x42, 0x34, - 0x4f, 0x00, 0xa3, 0x90, 0x00, 0x00, 0x00, 0x00, 0x24, 0x20, 0x62, 0x00, 0x0a, - 0x00, 0xa2, 0x94, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x46, 0x30, 0x0c, 0x00, - 0xa2, 0x94, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x43, 0x30, 0x4c, 0x00, 0xa2, - 0x90, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x07, 0x00, 0xc3, 0x14, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x02, 0x91, 0x00, - 0x00, 0x00, 0x00, 0x03, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x84, 0x34, 0x4c, 0x00, 0xa0, 0xa0, 0x4d, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, - 0x00, 0x0b, 0x00, 0x40, 0x10, 0x23, 0x18, 0xc3, 0x00, 0x0e, 0x00, 0x02, 0x95, - 0x00, 0x00, 0x00, 0x00, 0x24, 0x18, 0x62, 0x00, 0x18, 0x00, 0x02, 0x95, 0x00, - 0x00, 0x00, 0x00, 0x2a, 0x10, 0x43, 0x00, 0x03, 0x00, 0x40, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x84, 0x34, 0x4d, 0x00, 0xa0, 0xa0, 0x12, 0x00, 0xa2, - 0x94, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x46, 0x30, 0x14, 0x00, 0xa2, 0x94, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x43, 0x30, 0x4e, 0x00, 0xa2, 0x90, 0x00, - 0x00, 0x00, 0x00, 0x19, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, - 0xc3, 0x10, 0x23, 0x18, 0xc3, 0x00, 0x16, 0x00, 0x02, 0x95, 0x00, 0x00, 0x00, - 0x00, 0x24, 0x18, 0x62, 0x00, 0x42, 0x10, 0x02, 0x00, 0x2a, 0x10, 0x43, 0x00, - 0x0d, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xa2, 0x94, 0x00, - 0x00, 0x00, 0x00, 0x23, 0x10, 0x42, 0x01, 0x22, 0x00, 0xa3, 0x94, 0xff, 0xff, - 0x42, 0x30, 0x2b, 0x10, 0x43, 0x00, 0x05, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x66, 0x00, 0x02, 0x91, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0xa0, 0xa0, 0x08, 0x00, 0x84, 0x34, 0x20, - 0x00, 0xaa, 0xa4, 0x54, 0x00, 0xa3, 0x90, 0x57, 0x00, 0xa2, 0x90, 0x00, 0x00, - 0x00, 0x00, 0x26, 0x18, 0x62, 0x00, 0x56, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, - 0x00, 0x24, 0x18, 0x62, 0x00, 0x58, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, 0x00, - 0x25, 0x10, 0x43, 0x00, 0x02, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x20, - 0x00, 0x84, 0x34, 0x26, 0x00, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x62, 0x95, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x46, 0x30, 0x02, 0x00, 0x62, - 0x95, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x43, 0x30, 0x25, 0x38, 0xcc, 0x00, - 0x04, 0x00, 0xc6, 0x24, 0xfc, 0x03, 0xc6, 0x30, 0x07, 0x00, 0xc3, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x4f, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x25, 0x10, - 0x44, 0x00, 0x4f, 0x00, 0xa2, 0xa0, 0xaa, 0x48, 0x01, 0x08, 0x01, 0x00, 0x29, - 0x25, 0x00, 0x00, 0xe9, 0xa0, 0x01, 0x00, 0xe4, 0xa0, 0x57, 0x00, 0xa2, 0x90, - 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x42, 0x30, 0x03, 0x00, 0xe2, 0xa0, 0x54, - 0x00, 0xa3, 0x90, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x63, 0x30, 0x58, 0x00, - 0xa4, 0x90, 0x26, 0x18, 0x62, 0x00, 0x25, 0x18, 0x64, 0x00, 0x58, 0x00, 0xa0, - 0xa0, 0x4f, 0x00, 0xa0, 0xa0, 0x26, 0x10, 0x43, 0x00, 0x02, 0x00, 0xe2, 0xa0, - 0x57, 0x00, 0xa2, 0xa0, 0x00, 0x00, 0x66, 0xa5, 0xaa, 0x48, 0x01, 0x08, 0x01, - 0x00, 0x29, 0x25, 0x54, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x57, 0x00, - 0xa2, 0xa0, 0x01, 0x00, 0x29, 0x25, 0x58, 0x92, 0x82, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x2a, 0x10, 0x22, 0x01, 0x7b, 0xff, 0x40, 0x14, 0x80, 0x00, 0x08, 0x25, - 0x00, 0xa0, 0x02, 0x3c, 0x04, 0x0e, 0x42, 0x94, 0x00, 0x00, 0x00, 0x00, 0x2b, - 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x8c, 0x82, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x42, 0x24, 0xa0, 0x8c, 0x82, 0xaf, 0x25, 0x00, 0x40, - 0x1c, 0x00, 0xa0, 0x02, 0x3c, 0x00, 0x0d, 0x42, 0x34, 0x00, 0x00, 0x42, 0x94, - 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x40, 0x14, 0x00, 0xa0, 0x02, 0x3c, 0x18, - 0x0d, 0x42, 0x34, 0x00, 0x00, 0x43, 0x94, 0x02, 0x00, 0x42, 0x94, 0xff, 0xff, - 0x63, 0x30, 0x16, 0x00, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x89, 0x84, - 0x8f, 0x16, 0x42, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x05, 0xa2, 0x05, 0x3c, - 0x54, 0x92, 0x84, 0x97, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x86, 0x30, 0x00, - 0x00, 0xa6, 0xa4, 0x00, 0xa0, 0x03, 0x3c, 0x06, 0x0e, 0x63, 0x34, 0x00, 0x00, - 0x62, 0x94, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, - 0xa4, 0x00, 0x00, 0x62, 0x94, 0x01, 0x00, 0x84, 0x34, 0x00, 0x00, 0xa4, 0xa4, - 0x00, 0x00, 0xa6, 0xa4, 0x48, 0x9a, 0x84, 0x8f, 0x1f, 0x42, 0x01, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xa0, 0x02, 0x3c, 0x04, 0x0e, 0x42, 0x94, 0x00, 0x00, - 0x00, 0x00, 0xa0, 0x8c, 0x82, 0xaf, 0xc5, 0x58, 0x01, 0x0c, 0x0a, 0x00, 0x04, - 0x24, 0x18, 0x00, 0xbf, 0x8f, 0x20, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, - 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x80, 0xa4, 0x7a, 0x00, 0x80, 0xa4, 0x00, - 0x20, 0x02, 0x3c, 0x25, 0x10, 0x82, 0x00, 0x12, 0x00, 0x43, 0x94, 0x14, 0x00, - 0x42, 0x94, 0x00, 0x00, 0x00, 0x00, 0x23, 0x18, 0x62, 0x00, 0x16, 0x00, 0x82, - 0x94, 0x00, 0x00, 0x00, 0x00, 0x24, 0x18, 0x62, 0x00, 0x7c, 0x00, 0x83, 0xa4, - 0x7e, 0x00, 0x80, 0xa4, 0xee, 0x6f, 0x02, 0x24, 0x08, 0x00, 0xe0, 0x03, 0x2e, - 0x00, 0x82, 0xa4, 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x48, 0x00, - 0x85, 0x90, 0x65, 0x00, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x03, - 0x00, 0x21, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x23, 0x10, 0x43, 0x00, - 0x80, 0x10, 0x02, 0x00, 0x06, 0x80, 0x03, 0x3c, 0x21, 0x18, 0x62, 0x00, 0xb8, - 0x90, 0x63, 0x8c, 0x06, 0x00, 0x02, 0x24, 0x06, 0x00, 0x62, 0x14, 0x09, 0x00, - 0xa2, 0x28, 0x08, 0x00, 0xa2, 0x28, 0x07, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x0b, 0x49, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0xe4, 0x48, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x10, - 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, - 0x00, 0x00, 0xc8, 0xff, 0xbd, 0x27, 0x34, 0x00, 0xbf, 0xaf, 0x30, 0x00, 0xb4, - 0xaf, 0x2c, 0x00, 0xb3, 0xaf, 0x28, 0x00, 0xb2, 0xaf, 0x24, 0x00, 0xb1, 0xaf, - 0x20, 0x00, 0xb0, 0xaf, 0x21, 0xa0, 0x80, 0x00, 0x08, 0x00, 0x92, 0x8e, 0x40, - 0x00, 0x82, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x40, 0x18, 0x21, 0x98, - 0x00, 0x00, 0x00, 0x00, 0x51, 0x8e, 0x24, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x0b, 0x00, 0x40, 0x10, 0x21, 0x80, 0x00, 0x00, 0x14, 0x00, 0x42, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x09, 0xf8, 0x40, 0x00, 0x21, 0x20, 0x20, 0x02, 0x01, - 0x00, 0x10, 0x26, 0x24, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, - 0x02, 0x02, 0xf7, 0xff, 0x40, 0x14, 0x80, 0x00, 0x31, 0x26, 0x01, 0x00, 0x73, - 0x26, 0x40, 0x00, 0x82, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x62, 0x02, - 0xec, 0xff, 0x40, 0x14, 0x2c, 0x00, 0x52, 0x26, 0x34, 0x00, 0xbf, 0x8f, 0x30, - 0x00, 0xb4, 0x8f, 0x2c, 0x00, 0xb3, 0x8f, 0x28, 0x00, 0xb2, 0x8f, 0x24, 0x00, - 0xb1, 0x8f, 0x20, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x38, 0x00, 0xbd, - 0x27, 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0xd0, 0x8c, 0x87, 0x27, - 0x23, 0x38, 0xa7, 0x00, 0x40, 0x19, 0x07, 0x00, 0x23, 0x18, 0x67, 0x00, 0x40, - 0x19, 0x03, 0x00, 0x21, 0x18, 0x67, 0x00, 0xc0, 0x10, 0x03, 0x00, 0x21, 0x18, - 0x62, 0x00, 0xc0, 0x13, 0x03, 0x00, 0x23, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, - 0x00, 0x21, 0x10, 0x47, 0x00, 0x23, 0x10, 0x02, 0x00, 0x83, 0x10, 0x02, 0x00, - 0x65, 0x00, 0x82, 0xa0, 0x48, 0x00, 0x86, 0xa0, 0x18, 0x00, 0xa2, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x09, 0xf8, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, - 0xbf, 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, - 0x00, 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x48, 0x00, 0x87, 0x90, - 0x65, 0x00, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x03, 0x00, 0x21, - 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x23, 0x10, 0x43, 0x00, 0x80, 0x10, - 0x02, 0x00, 0x06, 0x80, 0x03, 0x3c, 0x21, 0x18, 0x62, 0x00, 0xb8, 0x90, 0x63, - 0x8c, 0x06, 0x00, 0x02, 0x24, 0x06, 0x00, 0x62, 0x14, 0x09, 0x00, 0xe2, 0x28, - 0x08, 0x00, 0xe2, 0x28, 0x07, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6c, - 0x49, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x40, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x3b, 0x49, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xbf, - 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, - 0xb0, 0xff, 0xbd, 0x27, 0x4c, 0x00, 0xbf, 0xaf, 0x48, 0x00, 0xbe, 0xaf, 0x44, - 0x00, 0xb7, 0xaf, 0x40, 0x00, 0xb6, 0xaf, 0x3c, 0x00, 0xb5, 0xaf, 0x38, 0x00, - 0xb4, 0xaf, 0x34, 0x00, 0xb3, 0xaf, 0x30, 0x00, 0xb2, 0xaf, 0x2c, 0x00, 0xb1, - 0xaf, 0x28, 0x00, 0xb0, 0xaf, 0x00, 0x80, 0x04, 0x3c, 0x00, 0x10, 0x84, 0x34, - 0x00, 0x80, 0x05, 0x3c, 0x0d, 0x4f, 0x01, 0x0c, 0x00, 0x80, 0xa5, 0x34, 0x00, - 0x80, 0x13, 0x3c, 0x00, 0x10, 0x73, 0x36, 0x10, 0x93, 0x95, 0x27, 0x00, 0x93, - 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x40, 0x18, 0x21, 0xb0, 0x00, - 0x00, 0x08, 0x00, 0xb0, 0x8e, 0x40, 0x00, 0xa2, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x52, 0x00, 0x40, 0x18, 0x21, 0xa0, 0x00, 0x00, 0x05, 0x80, 0x1e, 0x3c, 0xd0, - 0x23, 0xde, 0x27, 0x05, 0x80, 0x17, 0x3c, 0x54, 0x25, 0xf7, 0x26, 0x28, 0x00, - 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x43, 0x24, 0x16, 0x00, 0x62, - 0x2c, 0x2c, 0x00, 0x40, 0x10, 0x80, 0x10, 0x03, 0x00, 0x05, 0x80, 0x08, 0x3c, - 0x00, 0x7d, 0x08, 0x25, 0x21, 0x10, 0x48, 0x00, 0x00, 0x00, 0x42, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x13, 0xae, 0x05, 0x80, 0x02, 0x3c, 0x70, 0x0f, 0x42, 0x24, 0x08, 0x00, 0x02, - 0xae, 0x05, 0x80, 0x02, 0x3c, 0xec, 0x19, 0x42, 0x24, 0x0c, 0x00, 0x02, 0xae, - 0x05, 0x80, 0x02, 0x3c, 0xa4, 0x0a, 0x42, 0x24, 0x10, 0x00, 0x02, 0xae, 0x05, - 0x80, 0x02, 0x3c, 0x50, 0x09, 0x42, 0x24, 0x18, 0x00, 0x02, 0xae, 0x05, 0x80, - 0x02, 0x3c, 0x90, 0x23, 0x42, 0x24, 0x14, 0x00, 0x02, 0xae, 0x05, 0x80, 0x02, - 0x3c, 0xec, 0x24, 0x42, 0x24, 0xc6, 0x49, 0x01, 0x08, 0x1c, 0x00, 0x02, 0xae, - 0x00, 0x00, 0x13, 0xae, 0x05, 0x80, 0x08, 0x3c, 0xc4, 0x11, 0x08, 0x25, 0x08, - 0x00, 0x08, 0xae, 0x05, 0x80, 0x08, 0x3c, 0x44, 0x1a, 0x08, 0x25, 0x0c, 0x00, - 0x08, 0xae, 0x05, 0x80, 0x08, 0x3c, 0x90, 0x0d, 0x08, 0x25, 0x10, 0x00, 0x08, - 0xae, 0x05, 0x80, 0x08, 0x3c, 0x04, 0x0a, 0x08, 0x25, 0x18, 0x00, 0x08, 0xae, - 0x14, 0x00, 0x1e, 0xae, 0xc6, 0x49, 0x01, 0x08, 0x1c, 0x00, 0x17, 0xae, 0x0c, - 0x80, 0x84, 0x27, 0x24, 0x40, 0x01, 0x0c, 0x7d, 0x06, 0x05, 0x24, 0x24, 0x00, - 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x11, 0x03, 0x00, 0x21, 0x98, 0x62, - 0x02, 0x00, 0x00, 0x12, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x60, 0x10, - 0x21, 0x88, 0x00, 0x00, 0x1c, 0x00, 0x02, 0x8e, 0x21, 0x20, 0x40, 0x02, 0x21, - 0x28, 0x00, 0x02, 0x09, 0xf8, 0x40, 0x00, 0x21, 0x30, 0x20, 0x02, 0x01, 0x00, - 0x31, 0x26, 0x24, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0x22, - 0x02, 0xf6, 0xff, 0x40, 0x14, 0x80, 0x00, 0x52, 0x26, 0x01, 0x00, 0x94, 0x26, - 0x40, 0x00, 0xa2, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x82, 0x02, 0xb4, - 0xff, 0x40, 0x14, 0x2c, 0x00, 0x10, 0x26, 0x01, 0x00, 0xd6, 0x26, 0x00, 0x93, - 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0xc2, 0x02, 0xa5, 0xff, 0x40, - 0x14, 0x84, 0x00, 0xb5, 0x26, 0x58, 0x92, 0x85, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0xc0, 0x29, 0x05, 0x00, 0x00, 0x80, 0x02, 0x3c, 0x10, 0x10, 0x42, 0x34, 0x21, - 0x28, 0xa2, 0x00, 0x00, 0xa0, 0x02, 0x3c, 0x25, 0x28, 0xa2, 0x00, 0x50, 0x92, - 0x85, 0xaf, 0x21, 0x20, 0xa0, 0x00, 0x0d, 0x4f, 0x01, 0x0c, 0x0c, 0x04, 0xa5, - 0x24, 0x50, 0x92, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x04, 0x84, 0x24, - 0x04, 0xa0, 0x05, 0x3c, 0x17, 0x4f, 0x01, 0x0c, 0x00, 0xf0, 0xa5, 0x34, 0x21, - 0x80, 0x40, 0x00, 0x60, 0x92, 0x84, 0x27, 0x01, 0x00, 0x05, 0x24, 0x05, 0x80, - 0x06, 0x3c, 0x30, 0x20, 0xc6, 0x24, 0x4a, 0x58, 0x01, 0x0c, 0x21, 0x38, 0x00, - 0x00, 0x60, 0x92, 0x84, 0x27, 0x65, 0x58, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x58, 0x92, 0x82, 0x97, 0x00, 0xa0, 0x01, 0x3c, 0x02, 0x0c, 0x22, 0xa4, 0x00, - 0x93, 0x82, 0x97, 0x00, 0xa0, 0x01, 0x3c, 0x04, 0x0c, 0x22, 0xa4, 0x00, 0xa0, - 0x01, 0x3c, 0x06, 0x0c, 0x30, 0xa4, 0x00, 0xa0, 0x02, 0x3c, 0x80, 0x01, 0x42, - 0x34, 0x10, 0x00, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x82, 0x12, 0x02, 0x00, - 0x00, 0xa0, 0x01, 0x3c, 0x08, 0x0c, 0x22, 0xa4, 0x00, 0xa0, 0x03, 0x3c, 0x10, - 0x0d, 0x63, 0x34, 0x00, 0x00, 0x60, 0xa4, 0x02, 0x00, 0x60, 0xa4, 0x00, 0x04, - 0x02, 0x24, 0x04, 0x00, 0x62, 0xa4, 0xfc, 0x03, 0x04, 0x24, 0x06, 0x00, 0x64, - 0xa4, 0x00, 0xa0, 0x02, 0x3c, 0x18, 0x0d, 0x42, 0x34, 0x00, 0x00, 0x40, 0xa4, - 0x02, 0x00, 0x40, 0xa4, 0x00, 0x08, 0x03, 0x24, 0x04, 0x00, 0x43, 0xa4, 0x06, - 0x00, 0x44, 0xa4, 0x4c, 0x00, 0xbf, 0x8f, 0x48, 0x00, 0xbe, 0x8f, 0x44, 0x00, - 0xb7, 0x8f, 0x40, 0x00, 0xb6, 0x8f, 0x3c, 0x00, 0xb5, 0x8f, 0x38, 0x00, 0xb4, - 0x8f, 0x34, 0x00, 0xb3, 0x8f, 0x30, 0x00, 0xb2, 0x8f, 0x2c, 0x00, 0xb1, 0x8f, - 0x28, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x50, 0x00, 0xbd, 0x27, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x24, 0x54, 0x9a, 0x82, 0xaf, 0x01, 0x20, - 0x02, 0x24, 0xb0, 0x89, 0x82, 0xaf, 0x01, 0x24, 0x03, 0x24, 0x50, 0x9a, 0x83, - 0xaf, 0xa4, 0x89, 0x83, 0xaf, 0x01, 0x3f, 0x02, 0x24, 0x48, 0x9a, 0x82, 0xaf, - 0x58, 0x9a, 0x83, 0xaf, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe8, - 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x20, 0x80, 0x84, 0x27, 0x24, 0x40, - 0x01, 0x0c, 0x53, 0x00, 0x05, 0x24, 0x10, 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xbd, - 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xff, 0xbd, 0x27, - 0x10, 0x00, 0xbf, 0xaf, 0x20, 0x80, 0x84, 0x27, 0x24, 0x40, 0x01, 0x0c, 0x5f, - 0x00, 0x05, 0x24, 0x10, 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, - 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, - 0xaf, 0xa4, 0x5a, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x05, 0x80, 0x02, 0x3c, - 0x08, 0x05, 0x42, 0x24, 0x82, 0x10, 0x02, 0x00, 0xff, 0x03, 0x04, 0x3c, 0xff, - 0xff, 0x84, 0x34, 0x24, 0x10, 0x44, 0x00, 0x00, 0x08, 0x03, 0x3c, 0x25, 0x10, - 0x43, 0x00, 0x00, 0x80, 0x01, 0x3c, 0x00, 0x00, 0x22, 0xac, 0x00, 0x80, 0x01, - 0x3c, 0x04, 0x00, 0x20, 0xac, 0x05, 0x80, 0x02, 0x3c, 0xe0, 0x02, 0x42, 0x24, - 0x82, 0x10, 0x02, 0x00, 0x24, 0x10, 0x44, 0x00, 0x25, 0x10, 0x43, 0x00, 0x00, - 0x80, 0x01, 0x3c, 0x80, 0x00, 0x22, 0xac, 0x00, 0x80, 0x01, 0x3c, 0x84, 0x00, - 0x20, 0xac, 0x05, 0x80, 0x04, 0x3c, 0x00, 0x00, 0x84, 0x24, 0x06, 0x80, 0x05, - 0x3c, 0xe8, 0x4e, 0x01, 0x0c, 0x50, 0x85, 0xa5, 0x24, 0xff, 0xff, 0x03, 0x24, - 0x04, 0x00, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0x20, 0x80, 0x84, 0x27, 0x24, - 0x40, 0x01, 0x0c, 0x79, 0x00, 0x05, 0x24, 0xa0, 0x59, 0x01, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xa0, 0x03, 0x3c, 0x20, 0x0c, 0x63, 0x90, 0x01, 0x00, 0x02, - 0x24, 0x05, 0x00, 0x62, 0x14, 0x05, 0xa2, 0x02, 0x3c, 0xe0, 0x00, 0x03, 0x24, - 0x54, 0x92, 0x83, 0xaf, 0x7c, 0x4a, 0x01, 0x08, 0xe0, 0x00, 0x03, 0x24, 0x81, - 0x00, 0x03, 0x24, 0x54, 0x92, 0x83, 0xaf, 0x81, 0x00, 0x03, 0x24, 0x00, 0x00, - 0x43, 0xa4, 0x34, 0x42, 0x01, 0x0c, 0x00, 0x03, 0x04, 0x24, 0x00, 0xa0, 0x02, - 0x3c, 0x30, 0x0c, 0x42, 0x34, 0x2c, 0x4a, 0x01, 0x0c, 0x00, 0x00, 0x40, 0xa0, - 0x34, 0x58, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x4e, 0x01, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x72, 0x49, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x60, 0x9a, - 0x84, 0x27, 0x21, 0x28, 0x00, 0x00, 0x05, 0x80, 0x06, 0x3c, 0x70, 0x40, 0xc6, - 0x24, 0x4a, 0x58, 0x01, 0x0c, 0x21, 0x38, 0x00, 0x00, 0x60, 0x9a, 0x84, 0x27, - 0x65, 0x58, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x02, 0x24, 0x00, - 0xa0, 0x01, 0x3c, 0x20, 0x0d, 0x22, 0xa0, 0x00, 0xa0, 0x01, 0x3c, 0x00, 0x0c, - 0x22, 0xa0, 0x53, 0x00, 0x02, 0x24, 0x00, 0xa0, 0x01, 0x3c, 0x21, 0x0d, 0x22, - 0xa0, 0x00, 0xa0, 0x01, 0x3c, 0xf6, 0x58, 0x01, 0x0c, 0x01, 0x0c, 0x22, 0xa0, - 0x10, 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xe0, 0xff, 0xbd, 0x27, 0x1c, 0x00, 0xbf, 0xaf, 0x18, 0x00, 0xb2, - 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0xd0, 0x89, 0x87, 0x27, - 0x10, 0x93, 0x88, 0x27, 0xd0, 0x8c, 0x85, 0x27, 0x00, 0x80, 0x0b, 0x3c, 0x00, - 0x10, 0x6b, 0x35, 0x00, 0xa0, 0x0a, 0x3c, 0xd0, 0x0c, 0x4a, 0x35, 0x00, 0x00, - 0x42, 0x91, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x42, 0x30, 0xff, 0x00, 0x03, - 0x24, 0x6e, 0x01, 0x43, 0x10, 0x10, 0x00, 0x0e, 0x24, 0x1e, 0x00, 0x0f, 0x3c, - 0x80, 0x84, 0xef, 0x35, 0x01, 0x00, 0x0d, 0x24, 0x05, 0x80, 0x11, 0x3c, 0x60, - 0x7d, 0x31, 0x26, 0x15, 0x00, 0x10, 0x24, 0x16, 0x00, 0x19, 0x24, 0x0f, 0x00, - 0x18, 0x24, 0x00, 0x00, 0x42, 0x91, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x01, 0x40, - 0x14, 0x01, 0x00, 0x4a, 0x25, 0xa4, 0x8c, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x42, 0x28, 0x5a, 0x01, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x2c, - 0x00, 0xee, 0xac, 0x00, 0x00, 0x42, 0x91, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, - 0x49, 0x30, 0x68, 0x81, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x22, - 0x01, 0x51, 0x01, 0x40, 0x10, 0x01, 0x00, 0x4a, 0x25, 0x48, 0x00, 0xe9, 0xac, - 0x40, 0x10, 0x09, 0x00, 0x21, 0x10, 0x49, 0x00, 0x80, 0x10, 0x02, 0x00, 0x06, - 0x80, 0x06, 0x3c, 0x21, 0x30, 0xc2, 0x00, 0x1c, 0x80, 0xc6, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xc2, 0x8c, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x20, 0x02, - 0x00, 0x90, 0x00, 0xe4, 0xac, 0x94, 0x00, 0xe4, 0xac, 0x1a, 0x00, 0xe4, 0x01, - 0x02, 0x00, 0x80, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x07, 0x00, 0xff, - 0xff, 0x01, 0x24, 0x04, 0x00, 0x81, 0x14, 0x00, 0x80, 0x01, 0x3c, 0x02, 0x00, - 0xe1, 0x15, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x06, 0x00, 0x12, 0x10, 0x00, - 0x00, 0x70, 0x00, 0xe2, 0xac, 0x04, 0x00, 0xc2, 0x94, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x00, 0xe2, 0xac, 0x04, 0x01, 0xed, 0xa0, 0x05, 0x01, 0xed, 0xa0, 0x48, - 0x00, 0xe2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x06, 0x01, 0xe2, 0xa0, 0xa4, 0x8c, - 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x10, 0x02, 0x00, 0x00, 0xa0, 0x03, - 0x3c, 0x10, 0x0e, 0x63, 0x34, 0x21, 0x10, 0x43, 0x00, 0x28, 0x00, 0xe2, 0xac, - 0x0c, 0x00, 0xe8, 0xac, 0x14, 0x00, 0xe8, 0xac, 0x10, 0x00, 0xe8, 0xac, 0x68, - 0x00, 0xe0, 0xac, 0x00, 0x00, 0x42, 0x91, 0x00, 0x00, 0x00, 0x00, 0xe9, 0x00, - 0x40, 0x10, 0x07, 0x01, 0xec, 0x24, 0x00, 0x00, 0x42, 0x91, 0x00, 0x00, 0x00, - 0x00, 0xff, 0x00, 0x42, 0x30, 0xff, 0x00, 0x03, 0x24, 0xe3, 0x00, 0x43, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x93, 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x0e, - 0x00, 0x62, 0x28, 0x16, 0x01, 0x40, 0x10, 0x09, 0x00, 0x02, 0x24, 0x04, 0x00, - 0x07, 0xad, 0x20, 0x00, 0x02, 0xad, 0x50, 0x00, 0x0d, 0xad, 0x68, 0x00, 0xe2, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x02, 0xad, 0x01, 0x00, 0x62, 0x24, - 0x4c, 0x00, 0x02, 0xad, 0x0c, 0x00, 0x0b, 0xad, 0x00, 0x00, 0x0d, 0xad, 0x10, - 0x00, 0x02, 0x25, 0x14, 0x00, 0x02, 0xad, 0x28, 0x00, 0xe3, 0x8c, 0x68, 0x00, - 0xe2, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x18, 0x62, 0x00, 0x1c, 0x00, 0x03, - 0xad, 0x00, 0x00, 0x6d, 0xa0, 0x08, 0x00, 0x05, 0xad, 0x0c, 0x00, 0x0b, 0xad, - 0x40, 0x00, 0x02, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x40, - 0x00, 0x02, 0xad, 0x05, 0x00, 0x42, 0x28, 0xfb, 0x00, 0x40, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x8c, 0x9e, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, - 0x24, 0x8c, 0x9e, 0x82, 0xaf, 0x21, 0x00, 0x42, 0x28, 0xf4, 0x00, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x58, 0x92, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x20, - 0x00, 0xa2, 0xac, 0x00, 0x00, 0xab, 0xac, 0x00, 0x00, 0x42, 0x91, 0x00, 0x00, - 0x00, 0x00, 0x7f, 0x00, 0x42, 0x30, 0xfc, 0xff, 0x43, 0x24, 0x1b, 0x00, 0x62, - 0x2c, 0xe9, 0x00, 0x40, 0x10, 0x80, 0x10, 0x03, 0x00, 0x21, 0x10, 0x51, 0x00, - 0x00, 0x00, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x28, 0x00, 0xb0, 0xac, 0x4c, 0x4b, 0x01, 0x08, 0x24, 0x00, - 0xae, 0xac, 0x28, 0x00, 0xb9, 0xac, 0x4c, 0x4b, 0x01, 0x08, 0x24, 0x00, 0xae, - 0xac, 0x4c, 0x4b, 0x01, 0x08, 0x28, 0x00, 0xad, 0xac, 0x04, 0x00, 0x02, 0x24, - 0x4c, 0x4b, 0x01, 0x08, 0x28, 0x00, 0xa2, 0xac, 0x06, 0x00, 0x02, 0x24, 0x4c, - 0x4b, 0x01, 0x08, 0x28, 0x00, 0xa2, 0xac, 0x28, 0x00, 0xae, 0xac, 0x28, 0x00, - 0xa2, 0x8c, 0x00, 0x00, 0x00, 0x00, 0xeb, 0xff, 0x42, 0x24, 0x02, 0x00, 0x42, - 0x2c, 0x39, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x03, 0x8d, - 0x24, 0x00, 0xa2, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x18, 0x62, 0x00, 0x44, - 0x00, 0x03, 0xad, 0x41, 0x00, 0x63, 0x28, 0xc7, 0x00, 0x60, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x58, 0x92, 0x82, 0x8f, 0x24, 0x00, 0xa3, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x21, 0x18, 0x43, 0x00, 0x58, 0x92, 0x83, 0xaf, 0xe1, 0x00, 0x62, 0x28, - 0xbf, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0xa2, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0xc0, 0x11, 0x02, 0x00, 0x21, 0x58, 0x62, 0x01, 0x40, 0x00, - 0x02, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x40, 0x00, 0x02, - 0xad, 0x05, 0x00, 0x42, 0x28, 0xb4, 0x00, 0x40, 0x10, 0x2c, 0x00, 0xa5, 0x24, - 0x8c, 0x9e, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x8c, - 0x9e, 0x82, 0xaf, 0x21, 0x00, 0x42, 0x28, 0xad, 0x00, 0x40, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x20, 0x00, 0xa3, 0xac, 0x00, 0x00, 0xab, 0xac, 0x00, 0x00, 0x42, - 0x91, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x43, 0x30, 0x18, 0x00, 0x02, 0x24, - 0x05, 0x00, 0x62, 0x10, 0x1e, 0x00, 0x02, 0x24, 0x05, 0x00, 0x62, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x84, 0x4b, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x83, 0x4b, - 0x01, 0x08, 0x28, 0x00, 0xb0, 0xac, 0x28, 0x00, 0xb9, 0xac, 0x24, 0x00, 0xb8, - 0xac, 0x28, 0x00, 0xa2, 0x8c, 0x00, 0x00, 0x00, 0x00, 0xeb, 0xff, 0x42, 0x24, - 0x02, 0x00, 0x42, 0x2c, 0x05, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x42, 0x91, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x42, 0x30, 0x24, 0x00, - 0xa2, 0xac, 0x44, 0x00, 0x03, 0x8d, 0x24, 0x00, 0xa2, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x21, 0x18, 0x62, 0x00, 0x44, 0x00, 0x03, 0xad, 0x41, 0x00, 0x63, 0x28, - 0x8b, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x58, 0x92, 0x83, 0x8f, 0x24, - 0x00, 0xa2, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x18, 0x62, 0x00, 0x58, 0x92, - 0x83, 0xaf, 0xe1, 0x00, 0x63, 0x28, 0x83, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x24, 0x00, 0xa2, 0x8c, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x11, 0x02, 0x00, - 0x21, 0x58, 0x62, 0x01, 0x2c, 0x00, 0xa5, 0x24, 0x00, 0x00, 0x42, 0x91, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x00, 0x42, 0x30, 0x78, 0xff, 0x40, 0x14, 0x01, 0x00, - 0x4a, 0x25, 0x40, 0x00, 0x02, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x75, 0x00, 0x40, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x91, 0x00, 0x00, 0x00, 0x00, - 0xff, 0x00, 0x49, 0x30, 0x68, 0x81, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, - 0x10, 0x22, 0x01, 0x6d, 0x00, 0x40, 0x10, 0x01, 0x00, 0x4a, 0x25, 0x00, 0x00, - 0x89, 0xa1, 0x40, 0x10, 0x09, 0x00, 0x21, 0x10, 0x49, 0x00, 0x80, 0x10, 0x02, - 0x00, 0x06, 0x80, 0x06, 0x3c, 0x21, 0x30, 0xc2, 0x00, 0x1c, 0x80, 0xc6, 0x8c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x8c, 0x00, 0x00, 0x00, 0x00, 0xc2, - 0x20, 0x02, 0x00, 0x1a, 0x00, 0xe4, 0x01, 0x02, 0x00, 0x80, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x0d, 0x00, 0x07, 0x00, 0xff, 0xff, 0x01, 0x24, 0x04, 0x00, 0x81, - 0x14, 0x00, 0x80, 0x01, 0x3c, 0x02, 0x00, 0xe1, 0x15, 0x00, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x06, 0x00, 0x12, 0x10, 0x00, 0x00, 0x70, 0x00, 0xe3, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x21, 0x10, 0x43, 0x00, 0x70, 0x00, 0xe2, 0xac, 0x94, 0x00, - 0xe2, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x82, 0x00, 0x02, 0x00, 0x40, - 0x10, 0x01, 0x00, 0x8c, 0x25, 0x94, 0x00, 0xe4, 0xac, 0x04, 0x00, 0xc3, 0x94, - 0x80, 0x00, 0xe2, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x62, 0x00, 0x02, - 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xe3, 0xac, 0x68, 0x00, - 0xe2, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x68, 0x00, 0xe2, - 0xac, 0x00, 0x93, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, - 0x00, 0x93, 0x82, 0xaf, 0x84, 0x00, 0x08, 0x25, 0x00, 0x00, 0x42, 0x91, 0x00, - 0x00, 0x00, 0x00, 0x19, 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x00, - 0xe9, 0xac, 0x80, 0x00, 0xe3, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x62, - 0x28, 0x02, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x03, 0x24, - 0x70, 0x00, 0xe2, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x62, 0x00, 0x12, - 0x18, 0x00, 0x00, 0x62, 0x10, 0x02, 0x3c, 0xd3, 0x4d, 0x42, 0x34, 0x19, 0x00, - 0x62, 0x00, 0x10, 0x90, 0x00, 0x00, 0x82, 0x11, 0x12, 0x00, 0x74, 0x00, 0xe2, - 0xac, 0x70, 0x00, 0xe4, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x84, 0x24, - 0x68, 0x00, 0xe3, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x63, 0x24, 0x40, - 0x10, 0x03, 0x00, 0x21, 0x10, 0x43, 0x00, 0xc0, 0x10, 0x02, 0x00, 0x21, 0x10, - 0x43, 0x00, 0x40, 0x10, 0x02, 0x00, 0x21, 0x20, 0x82, 0x00, 0x70, 0x00, 0xe4, - 0xac, 0x74, 0x00, 0xe4, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x84, 0x24, - 0x68, 0x00, 0xe3, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x63, 0x24, 0x40, - 0x10, 0x03, 0x00, 0x21, 0x10, 0x43, 0x00, 0xc0, 0x10, 0x02, 0x00, 0x21, 0x10, - 0x43, 0x00, 0x40, 0x10, 0x02, 0x00, 0x21, 0x20, 0x82, 0x00, 0x74, 0x00, 0xe4, - 0xac, 0xa4, 0x8c, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, - 0xa4, 0x8c, 0x82, 0xaf, 0x68, 0x01, 0xe7, 0x24, 0x00, 0x00, 0x42, 0x91, 0x00, - 0x00, 0x00, 0x00, 0xff, 0x00, 0x42, 0x30, 0xff, 0x00, 0x03, 0x24, 0x06, 0x00, - 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0xbe, 0x4a, 0x01, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x30, 0x80, 0x84, 0x27, 0x24, 0x40, 0x01, 0x0c, 0x46, 0x01, 0x05, 0x24, - 0x1c, 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, - 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x20, 0x00, 0xbd, 0x27, 0xd8, 0xff, - 0xbd, 0x27, 0x20, 0x00, 0xbf, 0xaf, 0x1c, 0x00, 0xb3, 0xaf, 0x18, 0x00, 0xb2, - 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x90, 0x80, 0x00, - 0x40, 0x00, 0x43, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x03, 0x00, 0x21, - 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x21, 0x10, 0x43, 0x00, 0x80, 0x10, - 0x02, 0x00, 0x1c, 0x00, 0x43, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, 0x98, 0x43, - 0x00, 0x2c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x42, 0x30, - 0x1d, 0x00, 0x40, 0x10, 0x21, 0x80, 0x00, 0x00, 0x01, 0x00, 0x02, 0x24, 0x0c, - 0x00, 0x62, 0xae, 0x68, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, - 0x51, 0x24, 0x04, 0x01, 0x50, 0x26, 0x21, 0x20, 0x00, 0x02, 0x18, 0x00, 0x65, - 0x26, 0x58, 0x41, 0x01, 0x0c, 0x21, 0x30, 0x20, 0x02, 0x21, 0x20, 0x40, 0x02, - 0x21, 0x28, 0x00, 0x02, 0x60, 0x5b, 0x01, 0x0c, 0x21, 0x30, 0x20, 0x02, 0x21, - 0x20, 0x00, 0x00, 0x28, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, - 0x44, 0x00, 0x00, 0x00, 0x43, 0x90, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x63, - 0x30, 0x00, 0x00, 0x43, 0xa0, 0x01, 0x00, 0x84, 0x24, 0x08, 0x00, 0x82, 0x28, - 0xf6, 0xff, 0x40, 0x14, 0xdc, 0x00, 0x10, 0x24, 0x8a, 0x4c, 0x01, 0x08, 0x00, - 0x00, 0x00, 0x00, 0x2c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, - 0x42, 0x30, 0x0a, 0x00, 0x40, 0x10, 0x01, 0x00, 0x02, 0x24, 0x0c, 0x00, 0x62, - 0xae, 0x02, 0x00, 0x02, 0x24, 0x18, 0x00, 0x62, 0xa2, 0x19, 0x00, 0x60, 0xa2, - 0x1a, 0x00, 0x60, 0xa2, 0x21, 0x20, 0x40, 0x02, 0x18, 0x00, 0x65, 0x26, 0x82, - 0x4c, 0x01, 0x08, 0x03, 0x00, 0x06, 0x24, 0x2c, 0x00, 0x42, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x00, 0x42, 0x30, 0x1a, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x50, 0x92, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x51, 0x94, - 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x31, 0x26, 0x0d, 0x04, 0x22, 0x2a, 0x02, - 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x04, 0x11, 0x24, 0x50, 0x92, - 0x84, 0x8f, 0x80, 0x9a, 0x85, 0x27, 0x58, 0x41, 0x01, 0x0c, 0x21, 0x30, 0x20, - 0x02, 0x04, 0x00, 0x02, 0x24, 0x80, 0x9a, 0x82, 0xa3, 0x02, 0x00, 0x02, 0x24, - 0x0c, 0x00, 0x62, 0xae, 0x21, 0x20, 0x40, 0x02, 0x80, 0x9a, 0x85, 0x27, 0x21, - 0x30, 0x20, 0x02, 0x60, 0x5b, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, - 0x50, 0x8e, 0x8a, 0x4c, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x30, 0x80, 0x84, - 0x27, 0x24, 0x40, 0x01, 0x0c, 0xd4, 0x01, 0x05, 0x24, 0x2c, 0x00, 0x42, 0x8e, - 0xfb, 0xff, 0x03, 0x24, 0x24, 0x10, 0x43, 0x00, 0x2c, 0x00, 0x42, 0xae, 0xac, - 0x89, 0x85, 0x8f, 0xe8, 0x00, 0x44, 0x26, 0x99, 0x58, 0x01, 0x0c, 0x21, 0x28, - 0x05, 0x02, 0x20, 0x00, 0xbf, 0x8f, 0x1c, 0x00, 0xb3, 0x8f, 0x18, 0x00, 0xb2, - 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, - 0x28, 0x00, 0xbd, 0x27, 0xd8, 0xff, 0xbd, 0x27, 0x20, 0x00, 0xbf, 0xaf, 0x1c, - 0x00, 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, - 0xb0, 0xaf, 0x21, 0x90, 0x80, 0x00, 0x08, 0x00, 0xa6, 0x8c, 0x14, 0x00, 0xa4, - 0x8c, 0x00, 0x00, 0xc2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x43, 0x30, - 0x02, 0x00, 0x02, 0x24, 0x5e, 0x00, 0x62, 0x10, 0x03, 0x00, 0x62, 0x28, 0x05, - 0x00, 0x40, 0x10, 0x01, 0x00, 0x02, 0x24, 0x0a, 0x00, 0x62, 0x10, 0x21, 0x10, - 0x86, 0x00, 0x7e, 0x4d, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, - 0x24, 0x6b, 0x00, 0x62, 0x10, 0x04, 0x00, 0x02, 0x24, 0x90, 0x00, 0x62, 0x10, - 0x0c, 0x00, 0x82, 0x28, 0x7e, 0x4d, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x43, 0x90, 0xff, 0x00, 0x02, 0x24, 0x02, 0x00, 0x62, 0x14, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x84, 0x24, 0x68, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x03, 0x00, 0x42, 0x24, 0xb7, 0x00, 0x82, 0x14, 0x00, 0xa0, 0x02, 0x3c, - 0x2c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x42, 0x30, 0x79, - 0x00, 0x40, 0x10, 0x00, 0xa0, 0x03, 0x3c, 0x05, 0x01, 0x40, 0xa2, 0x00, 0x00, - 0xc2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x02, 0x99, 0x02, 0x00, 0x68, 0x00, 0x43, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x63, 0x02, 0x02, 0x00, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x21, 0x98, 0x60, 0x00, 0x0c, 0x00, 0x51, 0x8e, 0x68, - 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x40, 0x18, 0x01, 0x00, - 0x10, 0x24, 0x2a, 0x10, 0x13, 0x02, 0x03, 0x00, 0x40, 0x14, 0x84, 0x00, 0x22, - 0x26, 0x0c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0xae, - 0x6c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x62, 0x12, 0x21, - 0x20, 0x20, 0x02, 0x78, 0x52, 0x01, 0x0c, 0x01, 0x00, 0x05, 0x24, 0x01, 0x00, - 0x10, 0x26, 0x68, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x50, - 0x00, 0xef, 0xff, 0x40, 0x10, 0x84, 0x00, 0x31, 0x26, 0x6c, 0x00, 0x53, 0xae, - 0x21, 0x80, 0x00, 0x00, 0x2a, 0x10, 0x13, 0x02, 0x08, 0x00, 0x40, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x28, 0x00, 0x43, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, 0x18, - 0x70, 0x00, 0x00, 0x00, 0x62, 0x90, 0x00, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x42, - 0x30, 0x00, 0x00, 0x62, 0xa0, 0x01, 0x00, 0x10, 0x26, 0x08, 0x00, 0x02, 0x2a, - 0xf4, 0xff, 0x40, 0x14, 0x2a, 0x10, 0x13, 0x02, 0xc8, 0x00, 0x40, 0xae, 0xcc, - 0x00, 0x40, 0xae, 0x6c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, - 0x40, 0x10, 0xef, 0xff, 0x03, 0x24, 0x2c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x6f, 0x4d, 0x01, 0x08, 0x24, 0x10, 0x43, 0x00, 0xac, 0x89, 0x85, 0x8f, - 0xe8, 0x00, 0x44, 0x26, 0x99, 0x58, 0x01, 0x0c, 0xe8, 0x03, 0xa5, 0x24, 0x7e, - 0x4d, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x06, 0x00, - 0x82, 0x14, 0x03, 0x00, 0x02, 0x24, 0x03, 0x00, 0xc3, 0x90, 0xff, 0x00, 0x02, - 0x24, 0x02, 0x00, 0x62, 0x14, 0x03, 0x00, 0x02, 0x24, 0x03, 0x00, 0x04, 0x24, - 0x67, 0x00, 0x82, 0x14, 0x00, 0xa0, 0x02, 0x3c, 0x2c, 0x00, 0x42, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x20, 0x00, 0x42, 0x30, 0x28, 0x00, 0x40, 0x10, 0xdb, 0xff, - 0x03, 0x24, 0xc8, 0x00, 0x40, 0xae, 0xcc, 0x00, 0x40, 0xae, 0x2c, 0x00, 0x42, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x24, 0x10, 0x43, 0x00, 0x70, 0x4d, 0x01, 0x08, - 0x01, 0x00, 0x42, 0x34, 0x06, 0x00, 0x82, 0x14, 0x03, 0x00, 0x02, 0x24, 0x03, - 0x00, 0xc3, 0x90, 0xff, 0x00, 0x02, 0x24, 0x02, 0x00, 0x62, 0x14, 0x03, 0x00, - 0x02, 0x24, 0x03, 0x00, 0x04, 0x24, 0x52, 0x00, 0x82, 0x14, 0x00, 0xa0, 0x02, - 0x3c, 0x2c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x42, 0x30, - 0x13, 0x00, 0x40, 0x10, 0xdb, 0xff, 0x03, 0x24, 0xc8, 0x00, 0x40, 0xae, 0xcc, - 0x00, 0x40, 0xae, 0x2c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x24, 0x10, - 0x43, 0x00, 0x2c, 0x00, 0x42, 0xae, 0x01, 0x00, 0xc3, 0x90, 0x02, 0x00, 0xc2, - 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x02, 0x00, 0x21, 0x18, 0x62, 0x00, - 0x50, 0x00, 0x43, 0xae, 0x54, 0x00, 0x43, 0xae, 0x58, 0x00, 0x40, 0xae, 0x2c, - 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x67, 0x4d, 0x01, 0x08, 0x40, 0x00, - 0x42, 0x34, 0x00, 0xa0, 0x03, 0x3c, 0xe8, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x7e, 0x4d, 0x01, 0x08, - 0x00, 0x00, 0x62, 0xac, 0x32, 0x00, 0x40, 0x14, 0x00, 0xa0, 0x02, 0x3c, 0x0a, - 0x00, 0xc2, 0x94, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x42, 0x24, 0xff, 0xff, - 0x42, 0x30, 0x2c, 0x00, 0x82, 0x14, 0x00, 0xa0, 0x02, 0x3c, 0x2c, 0x00, 0x42, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x42, 0x30, 0x30, 0x00, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x45, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x0c, - 0x00, 0xa2, 0x24, 0xff, 0xff, 0x42, 0x30, 0x2a, 0x00, 0x82, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0xc3, 0x94, 0x5c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x25, 0x00, 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0xa0, 0x10, - 0x7b, 0xff, 0x03, 0x24, 0xc8, 0x00, 0x40, 0xae, 0xcc, 0x00, 0x40, 0xae, 0x58, - 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0xff, 0x00, - 0x42, 0x30, 0x58, 0x00, 0x42, 0xae, 0x2c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x24, 0x10, 0x43, 0x00, 0x40, 0x00, 0x42, 0x34, 0x2c, 0x00, 0x42, 0xae, - 0x65, 0x58, 0x01, 0x0c, 0xe8, 0x00, 0x44, 0x26, 0x7e, 0x4d, 0x01, 0x08, 0x00, - 0x00, 0x00, 0x00, 0x2c, 0x00, 0x42, 0x8e, 0x7f, 0xff, 0x03, 0x24, 0x24, 0x10, - 0x43, 0x00, 0x25, 0x00, 0x42, 0x34, 0x2c, 0x00, 0x42, 0xae, 0x85, 0x58, 0x01, - 0x0c, 0xe8, 0x00, 0x44, 0x26, 0x7e, 0x4d, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, - 0xbc, 0x0d, 0x42, 0x34, 0x00, 0x00, 0x43, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x63, 0x24, 0x00, 0x00, 0x43, 0xac, 0xc8, 0x00, 0x42, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x42, 0x24, 0xc8, 0x00, 0x42, 0xae, 0x20, 0x00, 0xbf, - 0x8f, 0x1c, 0x00, 0xb3, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, - 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x28, 0x00, 0xbd, 0x27, 0xe0, - 0xff, 0xbd, 0x27, 0x18, 0x00, 0xbf, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, - 0xb0, 0xaf, 0x21, 0x80, 0x80, 0x00, 0x2c, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0xf0, 0x00, 0x42, 0x30, 0x3c, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x00, 0x11, 0x8e, 0x6c, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x63, 0x24, 0x61, 0x00, 0x60, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x31, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x78, 0x00, 0x42, 0x30, 0x2b, 0x00, 0x40, 0x10, 0xff, 0xff, 0x63, 0x24, - 0x8c, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x62, 0x28, 0x20, - 0x00, 0x40, 0x14, 0x05, 0x00, 0x62, 0x28, 0x83, 0x00, 0x40, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x88, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x40, 0x11, 0x03, - 0x00, 0x23, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x21, 0x10, 0x43, 0x00, - 0xc0, 0x10, 0x02, 0x00, 0x90, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x1a, - 0x00, 0x43, 0x00, 0x02, 0x00, 0x60, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, - 0x07, 0x00, 0xff, 0xff, 0x01, 0x24, 0x04, 0x00, 0x61, 0x14, 0x00, 0x80, 0x01, - 0x3c, 0x02, 0x00, 0x41, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x06, 0x00, - 0x12, 0x10, 0x00, 0x00, 0xac, 0x89, 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x23, - 0x10, 0x43, 0x00, 0x78, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, - 0x43, 0x00, 0x05, 0x00, 0x42, 0x28, 0x66, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x9f, 0x50, 0x01, 0x0c, 0x21, 0x20, 0x20, 0x02, 0x10, 0x00, 0x11, 0xae, - 0x6c, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x63, 0x24, 0x2e, - 0x00, 0x60, 0x04, 0x00, 0x00, 0x00, 0x00, 0x95, 0x4d, 0x01, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x2c, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x42, - 0x30, 0x27, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x03, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x62, 0x28, 0x20, 0x00, 0x40, 0x14, 0x05, - 0x00, 0x62, 0x28, 0x50, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, - 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x40, 0x11, 0x03, 0x00, 0x23, 0x10, 0x43, - 0x00, 0x80, 0x10, 0x02, 0x00, 0x21, 0x10, 0x43, 0x00, 0xc0, 0x10, 0x02, 0x00, - 0x90, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x43, 0x00, 0x02, - 0x00, 0x60, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x07, 0x00, 0xff, 0xff, - 0x01, 0x24, 0x04, 0x00, 0x61, 0x14, 0x00, 0x80, 0x01, 0x3c, 0x02, 0x00, 0x41, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x06, 0x00, 0x12, 0x10, 0x00, 0x00, - 0xac, 0x89, 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0x43, 0x00, 0x78, - 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x43, 0x00, 0x05, 0x00, - 0x42, 0x28, 0x33, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x29, 0x4c, 0x01, - 0x0c, 0x21, 0x20, 0x00, 0x02, 0x5c, 0x80, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x29, 0x00, 0x40, 0x10, 0xfe, 0xff, 0x03, 0x24, 0x8c, 0x00, 0x03, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x62, 0x28, 0x20, 0x00, 0x40, 0x14, 0x05, 0x00, - 0x62, 0x28, 0x26, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x03, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x40, 0x11, 0x03, 0x00, 0x23, 0x10, 0x43, 0x00, - 0x80, 0x10, 0x02, 0x00, 0x21, 0x10, 0x43, 0x00, 0xc0, 0x10, 0x02, 0x00, 0x90, - 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x43, 0x00, 0x02, 0x00, - 0x60, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x07, 0x00, 0xff, 0xff, 0x01, - 0x24, 0x04, 0x00, 0x61, 0x14, 0x00, 0x80, 0x01, 0x3c, 0x02, 0x00, 0x41, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x06, 0x00, 0x12, 0x10, 0x00, 0x00, 0xac, - 0x89, 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0x43, 0x00, 0x78, 0x00, - 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x43, 0x00, 0x05, 0x00, 0x42, - 0x28, 0x09, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xbf, 0x51, 0x01, 0x0c, - 0x21, 0x20, 0x00, 0x02, 0xf9, 0x4d, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x2c, - 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x24, 0x10, 0x43, 0x00, 0x2c, 0x00, - 0x02, 0xae, 0x18, 0x00, 0xbf, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, - 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x20, 0x00, 0xbd, 0x27, 0xe8, 0xff, 0xbd, 0x27, - 0x14, 0x00, 0xbf, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x80, 0x80, 0x00, 0x2c, - 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x42, 0x30, 0x88, 0x00, - 0x03, 0x24, 0x0b, 0x00, 0x43, 0x14, 0xf7, 0xff, 0x02, 0x24, 0x00, 0xa0, 0x03, - 0x3c, 0xa0, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, 0xc5, 0x58, 0x01, 0x0c, 0x0a, - 0x00, 0x04, 0x24, 0xd8, 0x4e, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, - 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x24, 0x10, 0x62, 0x00, 0x40, 0x00, 0x63, - 0x30, 0x17, 0x00, 0x60, 0x14, 0x2c, 0x00, 0x02, 0xae, 0x00, 0xa0, 0x03, 0x3c, - 0xe4, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, 0xc8, 0x00, 0x02, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0xc8, 0x00, 0x02, 0xae, 0xcc, 0x00, 0x02, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0xcc, 0x00, 0x02, 0xae, - 0x0a, 0x00, 0x42, 0x28, 0x06, 0x00, 0x40, 0x14, 0x0f, 0xff, 0x03, 0x24, 0x2c, - 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x24, 0x10, 0x43, 0x00, 0x10, 0x00, - 0x42, 0x34, 0x2c, 0x00, 0x02, 0xae, 0x2c, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x10, 0x00, 0x42, 0x30, 0x07, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, - 0xcc, 0x00, 0x00, 0xae, 0x2c, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x05, - 0x00, 0x42, 0x34, 0xd1, 0x4e, 0x01, 0x08, 0x2c, 0x00, 0x02, 0xae, 0x2c, 0x00, - 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x62, 0x30, 0x03, 0x00, 0x40, - 0x10, 0x05, 0x00, 0x62, 0x34, 0xd1, 0x4e, 0x01, 0x08, 0x2c, 0x00, 0x02, 0xae, - 0xc0, 0x00, 0x62, 0x30, 0x63, 0x00, 0x40, 0x10, 0x37, 0xff, 0x02, 0x24, 0x50, - 0x92, 0x84, 0x8f, 0x24, 0x18, 0x62, 0x00, 0x2c, 0x00, 0x03, 0xae, 0x00, 0xa0, - 0x02, 0x3c, 0x00, 0x0d, 0x42, 0x34, 0x00, 0x00, 0x42, 0x94, 0x00, 0x00, 0x00, - 0x00, 0x55, 0x00, 0x40, 0x14, 0x48, 0x00, 0x62, 0x34, 0x58, 0x00, 0x02, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x40, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x83, 0x94, 0x50, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x2a, 0x10, 0x43, 0x00, 0x27, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x82, 0x94, 0x54, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2a, - 0x10, 0x43, 0x00, 0x0c, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xac, 0x4e, - 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x83, 0x90, 0x00, 0x00, 0x00, - 0x00, 0x1b, 0x00, 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x83, 0x94, - 0x5c, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x62, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x0a, 0x00, 0x82, 0x94, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, - 0x02, 0xae, 0x58, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x40, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x82, 0x94, 0x00, 0x00, 0x00, 0x00, - 0x5c, 0x00, 0x02, 0xae, 0x04, 0x00, 0x82, 0x94, 0x00, 0x00, 0x00, 0x00, 0x50, - 0x00, 0x02, 0xae, 0x06, 0x00, 0x82, 0x94, 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, - 0x02, 0xae, 0x2c, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x42, - 0x34, 0xd1, 0x4e, 0x01, 0x08, 0x2c, 0x00, 0x02, 0xae, 0x06, 0x80, 0x02, 0x3c, - 0xbc, 0x8d, 0x42, 0x8c, 0x06, 0x80, 0x03, 0x3c, 0x24, 0x8f, 0x63, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x25, 0x10, 0x43, 0x00, 0x08, 0x00, 0x42, 0x30, 0x15, 0x00, - 0x40, 0x14, 0x04, 0x00, 0x02, 0x24, 0x00, 0x00, 0x82, 0xa0, 0x58, 0x00, 0x02, - 0x92, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x82, 0xa0, 0x5c, 0x00, 0x02, 0x96, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x82, 0xa4, 0x50, 0x00, 0x02, 0x96, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x82, 0xa4, 0x54, 0x00, 0x02, 0x96, 0x00, 0x00, - 0x00, 0x00, 0x06, 0x00, 0x82, 0xa4, 0x00, 0xa0, 0x02, 0x3c, 0x00, 0x0d, 0x42, - 0x34, 0x00, 0x00, 0x44, 0xa4, 0x2c, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0xcc, 0x4e, 0x01, 0x08, 0x48, 0x00, 0x42, 0x34, 0x2c, 0x00, 0x02, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x40, 0x00, 0x42, 0x34, 0x2c, 0x00, 0x02, 0xae, 0xac, 0x89, - 0x85, 0x8f, 0xe8, 0x00, 0x04, 0x26, 0x99, 0x58, 0x01, 0x0c, 0x0a, 0x00, 0xa5, - 0x24, 0x2c, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x30, - 0x03, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x85, 0x4d, 0x01, 0x0c, 0x21, - 0x20, 0x00, 0x02, 0x14, 0x00, 0xbf, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, - 0xe0, 0x03, 0x18, 0x00, 0xbd, 0x27, 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, - 0xaf, 0xa4, 0x4a, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x44, 0x57, 0x01, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, - 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x2b, 0x10, 0x85, 0x00, 0x0a, 0x00, 0x40, 0x10, 0x21, 0x18, 0x00, - 0x00, 0x00, 0x00, 0x82, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x62, 0x00, - 0x04, 0x00, 0x84, 0x24, 0x2b, 0x18, 0x43, 0x00, 0x21, 0x18, 0x43, 0x00, 0x2b, - 0x10, 0x85, 0x00, 0xf8, 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, - 0xe0, 0x03, 0x21, 0x10, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xc0, 0x81, 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x03, 0x00, - 0x21, 0x10, 0x43, 0x00, 0x00, 0x11, 0x02, 0x00, 0x21, 0x10, 0x43, 0x00, 0x80, - 0x10, 0x02, 0x00, 0x21, 0x10, 0x43, 0x00, 0x00, 0x11, 0x02, 0x00, 0x21, 0x10, - 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x21, 0x10, 0x43, 0x00, 0x1f, 0x28, 0x42, - 0x24, 0xc0, 0x81, 0x82, 0xaf, 0x02, 0x14, 0x02, 0x00, 0x18, 0x00, 0x82, 0x00, - 0x12, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0xe0, 0x03, 0x02, 0x14, 0x05, 0x00, 0x2b, 0x10, 0x85, 0x00, 0x06, 0x00, - 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xac, 0x04, 0x00, 0x84, - 0x24, 0x2b, 0x10, 0x85, 0x00, 0xfc, 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xff, 0xbd, 0x27, 0x5c, - 0x00, 0xbf, 0xaf, 0x58, 0x00, 0xbe, 0xaf, 0x54, 0x00, 0xb7, 0xaf, 0x50, 0x00, - 0xb6, 0xaf, 0x4c, 0x00, 0xb5, 0xaf, 0x48, 0x00, 0xb4, 0xaf, 0x44, 0x00, 0xb3, - 0xaf, 0x40, 0x00, 0xb2, 0xaf, 0x3c, 0x00, 0xb1, 0xaf, 0x38, 0x00, 0xb0, 0xaf, - 0xff, 0x00, 0x97, 0x24, 0xff, 0x1f, 0x03, 0x3c, 0x00, 0xff, 0x63, 0x34, 0x24, - 0xb8, 0xe3, 0x02, 0x00, 0xa0, 0x02, 0x3c, 0x25, 0xb8, 0xe2, 0x02, 0x24, 0xf0, - 0xa3, 0x00, 0x25, 0xf0, 0xc2, 0x03, 0x21, 0x20, 0xe0, 0x02, 0x0d, 0x4f, 0x01, - 0x0c, 0x21, 0x28, 0xc0, 0x03, 0x18, 0x00, 0xa0, 0xaf, 0x06, 0x80, 0x11, 0x3c, - 0x90, 0x90, 0x31, 0x26, 0x80, 0x05, 0x22, 0x26, 0x17, 0x00, 0x22, 0x12, 0x10, - 0x00, 0xa0, 0xaf, 0x04, 0x00, 0x04, 0x24, 0x06, 0x80, 0x03, 0x3c, 0x10, 0x96, - 0x63, 0x24, 0x28, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x44, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x22, 0x8e, 0x10, 0x00, 0xa6, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x46, 0x4f, 0x01, 0x08, 0x21, 0x30, 0xc2, 0x00, 0x18, - 0x00, 0xa6, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xc6, 0x24, 0x18, 0x00, - 0xa6, 0xaf, 0x10, 0x00, 0xa6, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xc6, - 0x24, 0x2c, 0x00, 0x31, 0x26, 0xee, 0xff, 0x23, 0x16, 0x10, 0x00, 0xa6, 0xaf, - 0x10, 0x00, 0x15, 0x24, 0x21, 0x98, 0xc0, 0x03, 0x00, 0x10, 0xa2, 0x2a, 0x02, - 0x00, 0x40, 0x14, 0x00, 0x10, 0x12, 0x24, 0x21, 0x90, 0xa0, 0x02, 0x23, 0x18, - 0x77, 0x02, 0x10, 0x00, 0xa6, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x06, - 0x00, 0x18, 0x00, 0xa2, 0x02, 0x12, 0x30, 0x00, 0x00, 0x23, 0x18, 0x66, 0x00, - 0x18, 0x00, 0xa6, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x46, 0x02, 0x12, - 0x30, 0x00, 0x00, 0x23, 0xa0, 0x66, 0x00, 0x2a, 0x10, 0x95, 0x02, 0x08, 0x00, - 0x40, 0x10, 0x11, 0x00, 0xa2, 0x2a, 0xb0, 0x00, 0x40, 0x10, 0x23, 0x10, 0xd7, - 0x03, 0x40, 0x80, 0x84, 0x27, 0x24, 0x40, 0x01, 0x0c, 0xae, 0x00, 0x05, 0x24, - 0x0f, 0x50, 0x01, 0x08, 0x23, 0x10, 0xd7, 0x03, 0x06, 0x80, 0x11, 0x3c, 0x90, - 0x90, 0x31, 0x26, 0x06, 0x80, 0x06, 0x3c, 0x10, 0x96, 0xc6, 0x24, 0x34, 0x00, - 0x26, 0x12, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x56, 0x26, 0x21, 0x30, 0xd2, - 0x02, 0x20, 0x00, 0xa6, 0xaf, 0x28, 0x00, 0x22, 0x8e, 0x04, 0x00, 0x06, 0x24, - 0x26, 0x00, 0x46, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x50, 0x24, 0x2a, 0x10, 0x92, 0x02, 0x05, 0x00, - 0x40, 0x14, 0x0e, 0x00, 0x16, 0xa6, 0x20, 0x00, 0xa6, 0x97, 0x00, 0x00, 0x00, - 0x00, 0x0e, 0x00, 0x06, 0xa6, 0x23, 0xa0, 0x92, 0x02, 0x0e, 0x00, 0x02, 0x96, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x23, 0x98, 0x62, 0x02, 0x02, - 0x11, 0x13, 0x00, 0x08, 0x00, 0x02, 0xa6, 0x2b, 0x10, 0x77, 0x02, 0x07, 0x00, - 0x40, 0x14, 0x3c, 0x00, 0x13, 0xae, 0x0e, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, - 0x00, 0x21, 0x10, 0x53, 0x00, 0x2b, 0x10, 0x5e, 0x00, 0x04, 0x00, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x84, 0x27, 0x24, 0x40, 0x01, 0x0c, 0xcb, - 0x00, 0x05, 0x24, 0x0e, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, - 0x02, 0xa6, 0x08, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x02, - 0xa6, 0x3c, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x02, 0xae, - 0x2c, 0x00, 0x31, 0x26, 0x06, 0x80, 0x06, 0x3c, 0x10, 0x96, 0xc6, 0x24, 0xd3, - 0xff, 0x26, 0x16, 0x00, 0x00, 0x00, 0x00, 0x06, 0x80, 0x11, 0x3c, 0x90, 0x90, - 0x31, 0x26, 0x30, 0x00, 0x26, 0x12, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xb6, - 0x26, 0x21, 0x30, 0xd5, 0x02, 0x28, 0x00, 0xa6, 0xaf, 0x28, 0x00, 0x22, 0x8e, - 0x04, 0x00, 0x06, 0x24, 0x02, 0x00, 0x46, 0x10, 0x08, 0x00, 0x12, 0x24, 0x24, - 0x00, 0x32, 0x8e, 0x00, 0x00, 0x30, 0x8e, 0x20, 0x00, 0x40, 0x12, 0x00, 0x00, - 0x00, 0x00, 0x2a, 0x10, 0x95, 0x02, 0x05, 0x00, 0x40, 0x14, 0x16, 0x00, 0x16, - 0xa6, 0x28, 0x00, 0xa6, 0x97, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x06, 0xa6, - 0x23, 0xa0, 0x95, 0x02, 0x16, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x42, 0x24, 0x23, 0x98, 0x62, 0x02, 0x38, 0x00, 0x13, 0xae, 0x02, 0x11, - 0x13, 0x00, 0x10, 0x00, 0x02, 0xa6, 0x38, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x2b, 0x10, 0x77, 0x00, 0x07, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x43, 0x00, 0x2b, - 0x10, 0x5e, 0x00, 0x04, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, - 0x84, 0x27, 0x24, 0x40, 0x01, 0x0c, 0x00, 0x01, 0x05, 0x24, 0xff, 0xff, 0x52, - 0x26, 0xe2, 0xff, 0x40, 0x16, 0x80, 0x00, 0x10, 0x26, 0x2c, 0x00, 0x31, 0x26, - 0x06, 0x80, 0x06, 0x3c, 0x10, 0x96, 0xc6, 0x24, 0xd5, 0xff, 0x26, 0x16, 0x00, - 0x00, 0x00, 0x00, 0x06, 0x80, 0x11, 0x3c, 0x90, 0x90, 0x31, 0x26, 0x06, 0x80, - 0x06, 0x3c, 0x10, 0x96, 0xc6, 0x24, 0x37, 0x00, 0x26, 0x12, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, 0xb6, 0x26, 0x21, 0x30, 0xd5, 0x02, 0x30, 0x00, 0xa6, 0xaf, - 0x28, 0x00, 0x22, 0x8e, 0x04, 0x00, 0x06, 0x24, 0x02, 0x00, 0x46, 0x10, 0x08, - 0x00, 0x12, 0x24, 0x24, 0x00, 0x32, 0x8e, 0x00, 0x00, 0x30, 0x8e, 0x27, 0x00, - 0x40, 0x12, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x95, 0x02, 0x05, 0x00, 0x40, - 0x14, 0x0e, 0x00, 0x16, 0xa6, 0x30, 0x00, 0xa6, 0x97, 0x00, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x06, 0xa6, 0x23, 0xa0, 0x95, 0x02, 0x0e, 0x00, 0x02, 0x96, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x23, 0x98, 0x62, 0x02, 0x02, 0x11, - 0x13, 0x00, 0x08, 0x00, 0x02, 0xa6, 0x3c, 0x00, 0x13, 0xae, 0x38, 0x00, 0x02, - 0x8e, 0xff, 0x1f, 0x06, 0x3c, 0xff, 0xff, 0xc6, 0x34, 0x24, 0x10, 0x46, 0x00, - 0x00, 0x80, 0x06, 0x3c, 0x25, 0x10, 0x46, 0x00, 0x38, 0x00, 0x02, 0xae, 0x3c, - 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0x77, 0x00, 0x07, 0x00, - 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, - 0x00, 0x21, 0x10, 0x43, 0x00, 0x2b, 0x10, 0x5e, 0x00, 0x04, 0x00, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x84, 0x27, 0x24, 0x40, 0x01, 0x0c, 0x2c, - 0x01, 0x05, 0x24, 0xff, 0xff, 0x52, 0x26, 0xdb, 0xff, 0x40, 0x16, 0x80, 0x00, - 0x10, 0x26, 0x2c, 0x00, 0x31, 0x26, 0x06, 0x80, 0x06, 0x3c, 0x10, 0x96, 0xc6, - 0x24, 0xce, 0xff, 0x26, 0x16, 0x00, 0x00, 0x00, 0x00, 0x40, 0xa8, 0x15, 0x00, - 0x01, 0x40, 0xa2, 0x2a, 0x3c, 0xff, 0x40, 0x14, 0x23, 0x10, 0xd7, 0x03, 0x82, - 0x12, 0x02, 0x00, 0x5c, 0x00, 0xbf, 0x8f, 0x58, 0x00, 0xbe, 0x8f, 0x54, 0x00, - 0xb7, 0x8f, 0x50, 0x00, 0xb6, 0x8f, 0x4c, 0x00, 0xb5, 0x8f, 0x48, 0x00, 0xb4, - 0x8f, 0x44, 0x00, 0xb3, 0x8f, 0x40, 0x00, 0xb2, 0x8f, 0x3c, 0x00, 0xb1, 0x8f, - 0x38, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x60, 0x00, 0xbd, 0x27, 0xe0, - 0xff, 0xbd, 0x27, 0x18, 0x00, 0xbf, 0xaf, 0x48, 0x9a, 0x84, 0x8f, 0x1f, 0x42, - 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xc5, 0x58, 0x01, 0x0c, 0x32, 0x00, 0x04, - 0x24, 0x90, 0x9e, 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x94, 0x9e, 0x83, 0xaf, - 0x98, 0x9e, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0x43, 0x00, 0x02, - 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x98, 0x9e, 0x83, 0xaf, 0x90, 0x9e, - 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x82, 0x18, 0x02, 0x00, 0x23, 0x10, 0x43, - 0x00, 0x90, 0x9e, 0x82, 0xaf, 0x98, 0x9e, 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x0b, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x94, 0x9e, 0x82, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x13, 0x02, 0x00, 0x1b, 0x00, 0x43, 0x00, 0x02, 0x00, - 0x60, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x07, 0x00, 0x12, 0x10, 0x00, - 0x00, 0x00, 0xa0, 0x01, 0x3c, 0x08, 0x00, 0x22, 0xa4, 0xc4, 0x81, 0x83, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x62, 0x24, 0xc4, 0x81, 0x82, 0xaf, 0x14, - 0x00, 0x42, 0x28, 0x02, 0x00, 0x40, 0x14, 0xf3, 0xff, 0x62, 0x24, 0xc4, 0x81, - 0x82, 0xaf, 0xd0, 0x89, 0x84, 0x27, 0xa4, 0x8c, 0x82, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x21, 0x40, 0x40, 0x00, 0x34, 0x00, 0x40, 0x18, 0x21, 0x30, 0x00, 0x00, - 0xc4, 0x81, 0x85, 0x8f, 0xcc, 0xcc, 0x07, 0x3c, 0xcd, 0xcc, 0xe7, 0x34, 0xb0, - 0x00, 0x82, 0x8c, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x82, 0xac, 0xb0, 0x00, - 0x83, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x65, 0x00, 0x19, 0x00, 0x47, - 0x00, 0x10, 0x48, 0x00, 0x00, 0x02, 0x11, 0x09, 0x00, 0x23, 0x18, 0x62, 0x00, - 0xb0, 0x00, 0x83, 0xac, 0xa8, 0x00, 0x82, 0x8c, 0x00, 0x00, 0x00, 0x00, 0xac, - 0x00, 0x82, 0xac, 0xa8, 0x00, 0x83, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, - 0x65, 0x00, 0x19, 0x00, 0x47, 0x00, 0x10, 0x48, 0x00, 0x00, 0x02, 0x11, 0x09, - 0x00, 0x23, 0x18, 0x62, 0x00, 0xa8, 0x00, 0x83, 0xac, 0xc0, 0x00, 0x82, 0x8c, - 0x00, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x82, 0xac, 0xc0, 0x00, 0x83, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x21, 0x10, 0x65, 0x00, 0x19, 0x00, 0x47, 0x00, 0x10, 0x48, - 0x00, 0x00, 0x02, 0x11, 0x09, 0x00, 0x23, 0x18, 0x62, 0x00, 0xc0, 0x00, 0x83, - 0xac, 0xb8, 0x00, 0x82, 0x8c, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x82, 0xac, - 0xb8, 0x00, 0x83, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x65, 0x00, 0x19, - 0x00, 0x47, 0x00, 0x10, 0x48, 0x00, 0x00, 0x02, 0x11, 0x09, 0x00, 0x23, 0x18, - 0x62, 0x00, 0xb8, 0x00, 0x83, 0xac, 0x01, 0x00, 0xc6, 0x24, 0x2a, 0x10, 0xc8, - 0x00, 0xd1, 0xff, 0x40, 0x14, 0x68, 0x01, 0x84, 0x24, 0x18, 0x00, 0xbf, 0x8f, - 0x20, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe8, - 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x48, 0x00, 0x83, 0x90, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x19, 0x03, 0x00, 0x00, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, - 0x00, 0x25, 0x10, 0x43, 0x00, 0x00, 0x00, 0xa2, 0xa0, 0x00, 0x00, 0xa3, 0x90, - 0xc3, 0xa5, 0x02, 0x34, 0x23, 0x10, 0x43, 0x00, 0x01, 0x00, 0xa3, 0x90, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x00, 0x23, 0x10, 0x43, 0x00, 0x23, 0x10, - 0x46, 0x00, 0x02, 0x00, 0xa2, 0xa0, 0x02, 0x12, 0x02, 0x00, 0x03, 0x00, 0xa2, - 0xa0, 0x04, 0x00, 0x84, 0x8c, 0x60, 0x5b, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, - 0x00, 0x00, 0x00, 0xe0, 0xff, 0xbd, 0x27, 0x1c, 0x00, 0xbf, 0xaf, 0x18, 0x00, - 0xb2, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x80, 0x80, - 0x00, 0x04, 0x00, 0x12, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x43, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x03, 0x00, 0x21, 0x10, 0x43, 0x00, 0x80, - 0x10, 0x02, 0x00, 0x21, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x1c, 0x00, - 0x43, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, 0x28, 0x43, 0x00, 0x20, 0x00, 0x02, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x42, 0x30, 0x09, 0x00, 0x03, 0x24, - 0x09, 0x00, 0x43, 0x14, 0x01, 0x00, 0x02, 0x24, 0x0c, 0x00, 0xa2, 0xac, 0x05, - 0x00, 0x02, 0x24, 0x18, 0x00, 0xa2, 0xa0, 0x50, 0x00, 0x02, 0x92, 0x00, 0x00, - 0x00, 0x00, 0x19, 0x00, 0xa2, 0xa0, 0xe5, 0x50, 0x01, 0x08, 0x18, 0x00, 0xa5, - 0x24, 0x20, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x42, 0x30, - 0x14, 0x00, 0x40, 0x10, 0x01, 0x00, 0x02, 0x24, 0x0c, 0x00, 0xa2, 0xac, 0x06, - 0x00, 0x02, 0x24, 0x18, 0x00, 0xa2, 0xa0, 0x19, 0x00, 0xa0, 0xa0, 0x21, 0x20, - 0x00, 0x02, 0x18, 0x00, 0xa5, 0x24, 0x84, 0x50, 0x01, 0x0c, 0x04, 0x00, 0x06, - 0x24, 0x20, 0x00, 0x03, 0x8e, 0x07, 0xff, 0x02, 0x24, 0x24, 0x20, 0x62, 0x00, - 0x20, 0x00, 0x04, 0xae, 0x3c, 0x00, 0x03, 0x8e, 0x38, 0x00, 0x02, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x8d, 0x00, 0x62, 0x10, 0x08, 0x00, 0x82, 0x34, 0x61, 0x51, - 0x01, 0x08, 0x20, 0x00, 0x02, 0xae, 0x20, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x0a, 0x00, 0x42, 0x30, 0x0a, 0x00, 0x03, 0x24, 0x16, 0x00, 0x43, 0x14, - 0x01, 0x00, 0x02, 0x24, 0x0c, 0x00, 0xa2, 0xac, 0x0a, 0x00, 0x02, 0x24, 0x18, - 0x00, 0xa2, 0xa0, 0x30, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, - 0xa2, 0xa0, 0x21, 0x20, 0x00, 0x02, 0x18, 0x00, 0xa5, 0x24, 0x84, 0x50, 0x01, - 0x0c, 0x04, 0x00, 0x06, 0x24, 0x20, 0x00, 0x02, 0x8e, 0xf7, 0xff, 0x03, 0x24, - 0x24, 0x10, 0x43, 0x00, 0x20, 0x00, 0x02, 0xae, 0xac, 0x89, 0x82, 0x8f, 0x74, - 0x00, 0x45, 0x8e, 0x6c, 0x00, 0x04, 0x26, 0x99, 0x58, 0x01, 0x0c, 0x21, 0x28, - 0x45, 0x00, 0x61, 0x51, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x02, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x42, 0x30, 0x1b, 0x00, 0x40, 0x10, - 0x01, 0x00, 0x02, 0x24, 0x0c, 0x00, 0xa2, 0xac, 0x20, 0x00, 0x02, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x20, 0x00, 0x42, 0x30, 0x02, 0x00, 0x40, 0x10, 0x09, 0x00, - 0x03, 0x24, 0x0b, 0x00, 0x03, 0x24, 0x18, 0x00, 0xa3, 0xa0, 0x30, 0x00, 0x02, - 0x92, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0xa2, 0xa0, 0x21, 0x20, 0x00, 0x02, - 0x18, 0x00, 0xa5, 0x24, 0x84, 0x50, 0x01, 0x0c, 0x04, 0x00, 0x06, 0x24, 0x20, - 0x00, 0x03, 0x8e, 0x1f, 0xff, 0x02, 0x24, 0x24, 0x20, 0x62, 0x00, 0x20, 0x00, - 0x04, 0xae, 0x3c, 0x00, 0x03, 0x8e, 0x38, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x53, 0x00, 0x62, 0x14, 0xf7, 0xff, 0x02, 0x24, 0x60, 0x51, 0x01, 0x08, - 0x24, 0x10, 0x82, 0x00, 0x3c, 0x00, 0x03, 0x8e, 0x38, 0x00, 0x02, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x3d, 0x00, 0x62, 0x10, 0x07, 0x00, 0x02, 0x24, 0x18, 0x00, - 0x11, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x22, 0xa2, 0x3c, 0x00, 0x02, - 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x02, 0x00, 0x30, 0x00, 0x03, 0x92, - 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x43, 0x00, 0x0d, 0x00, 0x22, 0xa2, 0x03, - 0x00, 0x02, 0x24, 0x0c, 0x00, 0xa2, 0xac, 0x10, 0x00, 0xb1, 0xac, 0x04, 0x00, - 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x04, 0x00, 0x22, - 0xae, 0x21, 0x20, 0x00, 0x02, 0x08, 0x00, 0x26, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x84, 0x50, 0x01, 0x0c, 0x0c, 0x00, 0x25, 0x26, 0x3c, 0x00, 0x03, 0x8e, 0x34, - 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x62, 0x14, 0x6c, 0x00, - 0x04, 0x26, 0xac, 0x89, 0x82, 0x8f, 0x74, 0x00, 0x45, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x99, 0x58, 0x01, 0x0c, 0x21, 0x28, 0x45, 0x00, 0x3c, 0x00, 0x02, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x0f, 0x00, 0x42, 0x30, 0x3c, - 0x00, 0x02, 0xae, 0x00, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, - 0x02, 0xae, 0x3c, 0x00, 0x03, 0x8e, 0x38, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x62, 0x14, 0xf7, 0xff, 0x03, 0x24, 0x20, 0x00, 0x02, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x24, 0x18, 0x43, 0x00, 0x04, 0x00, 0x42, 0x30, 0x06, - 0x00, 0x40, 0x10, 0x20, 0x00, 0x03, 0xae, 0xfb, 0xff, 0x02, 0x24, 0x24, 0x10, - 0x62, 0x00, 0x20, 0x00, 0x02, 0xae, 0x65, 0x58, 0x01, 0x0c, 0xd0, 0x00, 0x44, - 0x26, 0x20, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x51, 0x01, 0x08, - 0x7f, 0xff, 0x03, 0x24, 0x01, 0x00, 0x02, 0x24, 0x0c, 0x00, 0xa2, 0xac, 0x08, - 0x00, 0x02, 0x24, 0x18, 0x00, 0xa2, 0xa0, 0x30, 0x00, 0x02, 0x92, 0x00, 0x00, - 0x00, 0x00, 0x19, 0x00, 0xa2, 0xa0, 0x21, 0x20, 0x00, 0x02, 0x18, 0x00, 0xa5, - 0x24, 0x84, 0x50, 0x01, 0x0c, 0x04, 0x00, 0x06, 0x24, 0x20, 0x00, 0x02, 0x8e, - 0x77, 0xff, 0x03, 0x24, 0x24, 0x10, 0x43, 0x00, 0x20, 0x00, 0x02, 0xae, 0x1c, - 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, - 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x20, 0x00, 0xbd, 0x27, 0x20, 0x00, 0xa2, - 0x28, 0x1a, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x22, 0x33, 0x0b, 0x3c, - 0x00, 0x11, 0x6b, 0x35, 0x66, 0x77, 0x0a, 0x3c, 0x44, 0x55, 0x4a, 0x35, 0xaa, - 0xbb, 0x09, 0x3c, 0x88, 0x99, 0x29, 0x35, 0xee, 0xff, 0x08, 0x3c, 0xcc, 0xdd, - 0x08, 0x35, 0xa5, 0xa5, 0x07, 0x3c, 0xa5, 0xa5, 0xe7, 0x34, 0xf0, 0xf0, 0x06, - 0x3c, 0xf0, 0xf0, 0xc6, 0x34, 0xff, 0xff, 0x03, 0x24, 0x00, 0x00, 0x8b, 0xac, - 0x04, 0x00, 0x8a, 0xac, 0x08, 0x00, 0x89, 0xac, 0x0c, 0x00, 0x88, 0xac, 0x10, - 0x00, 0x80, 0xac, 0x14, 0x00, 0x87, 0xac, 0x18, 0x00, 0x86, 0xac, 0x1c, 0x00, - 0x83, 0xac, 0xe0, 0xff, 0xa5, 0x24, 0x20, 0x00, 0xa2, 0x28, 0xf5, 0xff, 0x40, - 0x10, 0x20, 0x00, 0x84, 0x24, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x60, 0x80, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x40, 0x14, 0x20, - 0x00, 0xa2, 0x28, 0xbd, 0x51, 0x01, 0x08, 0x21, 0x10, 0x00, 0x00, 0x30, 0x00, - 0x40, 0x14, 0x21, 0x18, 0x00, 0x00, 0x22, 0x33, 0x0b, 0x3c, 0x00, 0x11, 0x6b, - 0x35, 0x66, 0x77, 0x0a, 0x3c, 0x44, 0x55, 0x4a, 0x35, 0xaa, 0xbb, 0x09, 0x3c, - 0x88, 0x99, 0x29, 0x35, 0xee, 0xff, 0x08, 0x3c, 0xcc, 0xdd, 0x08, 0x35, 0xa5, - 0xa5, 0x07, 0x3c, 0xa5, 0xa5, 0xe7, 0x34, 0xf0, 0xf0, 0x06, 0x3c, 0xf0, 0xf0, - 0xc6, 0x34, 0x00, 0x00, 0x82, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x26, 0x10, 0x4b, - 0x00, 0x25, 0x18, 0x62, 0x00, 0x04, 0x00, 0x82, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x26, 0x10, 0x4a, 0x00, 0x25, 0x18, 0x62, 0x00, 0x08, 0x00, 0x82, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x26, 0x10, 0x49, 0x00, 0x25, 0x18, 0x62, 0x00, 0x0c, 0x00, - 0x82, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x26, 0x10, 0x48, 0x00, 0x25, 0x18, 0x62, - 0x00, 0x10, 0x00, 0x82, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x25, 0x18, 0x62, 0x00, - 0x14, 0x00, 0x82, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x26, 0x10, 0x47, 0x00, 0x25, - 0x18, 0x62, 0x00, 0x18, 0x00, 0x82, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x26, 0x10, - 0x46, 0x00, 0x25, 0x18, 0x62, 0x00, 0x1c, 0x00, 0x82, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x27, 0x10, 0x02, 0x00, 0x25, 0x18, 0x62, 0x00, 0xe0, 0xff, 0xa5, 0x24, - 0x20, 0x00, 0xa2, 0x28, 0xde, 0xff, 0x40, 0x10, 0x20, 0x00, 0x84, 0x24, 0x21, - 0x10, 0x60, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, - 0xbd, 0x27, 0x18, 0x00, 0xbf, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, - 0xaf, 0x21, 0x88, 0x80, 0x00, 0x40, 0x00, 0x23, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x40, 0x10, 0x03, 0x00, 0x21, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x21, - 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x1c, 0x00, 0x23, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x21, 0x10, 0x43, 0x00, 0x01, 0x00, 0x03, 0x24, 0x0c, 0x00, 0x43, - 0xac, 0x06, 0x80, 0x04, 0x3c, 0xd4, 0xb2, 0x84, 0x24, 0x00, 0x00, 0x82, 0x8c, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x67, - 0x51, 0x01, 0x0c, 0x3c, 0x1f, 0x05, 0x24, 0x68, 0x80, 0x84, 0x8f, 0x64, 0x80, - 0x90, 0x8f, 0x80, 0x00, 0x23, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x64, - 0x00, 0x03, 0x00, 0x40, 0x10, 0x04, 0x00, 0x82, 0x28, 0x21, 0x20, 0x60, 0x00, - 0x04, 0x00, 0x82, 0x28, 0x02, 0x00, 0x40, 0x10, 0x04, 0x00, 0x02, 0x2a, 0x04, - 0x00, 0x04, 0x24, 0x03, 0x00, 0x40, 0x10, 0x2a, 0x10, 0x90, 0x00, 0x04, 0x00, - 0x10, 0x24, 0x2a, 0x10, 0x90, 0x00, 0x02, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x21, 0x80, 0x80, 0x00, 0x23, 0x20, 0x90, 0x00, 0xf8, 0x4e, 0x01, 0x0c, - 0x01, 0x00, 0x84, 0x24, 0x21, 0x20, 0x20, 0x02, 0x06, 0x80, 0x05, 0x3c, 0xd4, - 0xb2, 0xa5, 0x24, 0x60, 0x5b, 0x01, 0x0c, 0x21, 0x30, 0x02, 0x02, 0x18, 0x00, - 0xbf, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, - 0x03, 0x20, 0x00, 0xbd, 0x27, 0xd8, 0xff, 0xbd, 0x27, 0x24, 0x00, 0xbf, 0xaf, - 0x20, 0x00, 0xb4, 0xaf, 0x1c, 0x00, 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, - 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x88, 0x80, 0x00, 0x00, 0xa0, - 0x03, 0x3c, 0xd4, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, 0x04, 0x00, 0x33, 0x8e, - 0x3c, 0x00, 0x22, 0x8e, 0x34, 0x00, 0x23, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, - 0xa0, 0x43, 0x00, 0x21, 0x90, 0x60, 0x00, 0x38, 0x00, 0x22, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x30, 0x00, 0x42, 0x12, 0x0f, 0x00, 0x94, 0x32, 0x10, 0x00, 0x30, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x00, 0x22, 0xae, 0x34, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, - 0x10, 0x42, 0x02, 0x0f, 0x00, 0x42, 0x30, 0x2a, 0x10, 0x54, 0x00, 0x08, 0x00, - 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x62, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0xfc, 0xff, 0x42, 0x24, 0x08, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x23, 0x10, 0x43, 0x00, 0x84, 0x00, 0x62, 0xae, 0x04, 0x00, 0x02, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x24, 0x0a, 0x00, 0x42, 0x2c, 0x04, 0x00, - 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x80, 0x84, 0x27, 0x24, 0x40, 0x01, - 0x0c, 0x4f, 0x02, 0x05, 0x24, 0x04, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x42, 0x24, 0x09, 0x00, 0x40, 0x14, 0x04, 0x00, 0x02, 0xae, 0xe4, - 0xaa, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xae, 0xe4, 0xaa, - 0x90, 0xaf, 0x64, 0x00, 0x62, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, - 0x24, 0x64, 0x00, 0x62, 0xae, 0x01, 0x00, 0x42, 0x26, 0x0f, 0x00, 0x52, 0x30, - 0x38, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xd2, 0xff, 0x42, 0x16, 0x00, - 0x00, 0x00, 0x00, 0x10, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x80, 0x84, 0x27, 0x24, 0x40, 0x01, - 0x0c, 0x59, 0x02, 0x05, 0x24, 0x18, 0x00, 0x20, 0xae, 0x10, 0x00, 0x22, 0x26, - 0x14, 0x00, 0x22, 0xae, 0xa8, 0x9e, 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x0f, - 0x00, 0x60, 0x10, 0x01, 0x00, 0x05, 0x24, 0x02, 0x00, 0x04, 0x24, 0x10, 0x00, - 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x45, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x51, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x64, 0xac, 0x00, 0x00, 0x63, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0xf4, 0xff, 0x60, 0x14, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x20, 0xae, 0x3c, 0x00, 0x20, 0xae, 0x34, 0x00, 0x20, 0xae, 0x30, 0x00, 0x20, - 0xae, 0x20, 0x00, 0x23, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x62, 0x30, - 0x05, 0x00, 0x40, 0x10, 0xfb, 0xff, 0x02, 0x24, 0x24, 0x10, 0x62, 0x00, 0x20, - 0x00, 0x22, 0xae, 0x65, 0x58, 0x01, 0x0c, 0xd0, 0x00, 0x64, 0x26, 0x20, 0x00, - 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x42, 0x34, 0x20, 0x00, 0x22, - 0xae, 0x85, 0x58, 0x01, 0x0c, 0x6c, 0x00, 0x24, 0x26, 0x65, 0x58, 0x01, 0x0c, - 0x54, 0x00, 0x24, 0x26, 0x24, 0x00, 0xbf, 0x8f, 0x20, 0x00, 0xb4, 0x8f, 0x1c, - 0x00, 0xb3, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, - 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x28, 0x00, 0xbd, 0x27, 0xe0, 0xff, 0xbd, - 0x27, 0x18, 0x00, 0xbf, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, - 0x21, 0x80, 0x80, 0x00, 0x21, 0x88, 0xa0, 0x00, 0x20, 0x00, 0x02, 0x8e, 0x0d, - 0xff, 0x03, 0x24, 0x24, 0x10, 0x43, 0x00, 0x09, 0x00, 0x42, 0x34, 0xf8, 0x51, - 0x01, 0x0c, 0x20, 0x00, 0x02, 0xae, 0x50, 0x00, 0x11, 0xae, 0x04, 0x00, 0x03, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x42, 0x34, 0x2c, 0x00, 0x62, 0xac, 0x18, 0x00, 0xbf, 0x8f, 0x14, - 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x20, 0x00, - 0xbd, 0x27, 0xd0, 0xff, 0xbd, 0x27, 0x28, 0x00, 0xbf, 0xaf, 0x24, 0x00, 0xb5, - 0xaf, 0x20, 0x00, 0xb4, 0xaf, 0x1c, 0x00, 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, - 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x88, 0x80, 0x00, 0x21, - 0x98, 0xa0, 0x00, 0x04, 0x00, 0x32, 0x8e, 0x08, 0x00, 0x75, 0x8e, 0x14, 0x00, - 0x64, 0x8e, 0x00, 0x00, 0xa2, 0x92, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x42, - 0x30, 0x2f, 0x00, 0x40, 0x14, 0x00, 0xa0, 0x02, 0x3c, 0x7c, 0x0d, 0x42, 0x34, - 0x00, 0x00, 0x43, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x63, 0x24, 0x00, - 0x00, 0x43, 0xac, 0x1c, 0x00, 0x24, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x62, 0x30, 0x03, 0x00, 0x40, - 0x10, 0xfb, 0x00, 0x62, 0x30, 0xb6, 0x52, 0x01, 0x08, 0x00, 0x00, 0x82, 0xa0, - 0x1c, 0x00, 0x23, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x90, 0x00, - 0x00, 0x00, 0x00, 0xfd, 0x00, 0x42, 0x30, 0x00, 0x00, 0x62, 0xa0, 0x20, 0x00, - 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x30, 0x03, 0x00, 0x40, - 0x14, 0x21, 0x20, 0x20, 0x02, 0x78, 0x52, 0x01, 0x0c, 0x05, 0x00, 0x05, 0x24, - 0x20, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x42, 0x34, 0x20, - 0x00, 0x22, 0xae, 0x6c, 0x00, 0x22, 0x26, 0x6c, 0x00, 0x23, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x05, 0x00, 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, 0xf4, 0xaa, 0x82, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x7d, 0x01, 0x43, 0x14, 0x00, 0x00, 0x00, 0x00, - 0xac, 0x89, 0x85, 0x8f, 0x6c, 0x00, 0x24, 0x26, 0x99, 0x58, 0x01, 0x0c, 0xd0, - 0x07, 0xa5, 0x24, 0x46, 0x54, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xa2, 0x92, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x42, 0x30, 0xfb, 0xff, 0x43, - 0x24, 0x07, 0x00, 0x62, 0x2c, 0x49, 0x00, 0x40, 0x10, 0x80, 0x10, 0x03, 0x00, - 0x05, 0x80, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0xd0, 0x7d, 0x22, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x02, 0x24, 0x5e, 0x01, 0x82, 0x14, 0x00, 0xa0, 0x02, 0x3c, 0xcc, 0x0d, 0x42, - 0x34, 0x00, 0x00, 0x43, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x63, 0x24, - 0x00, 0x00, 0x43, 0xac, 0x20, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x42, 0x30, 0x0e, 0x00, 0x40, 0x10, 0xfd, 0xff, 0x03, 0x24, 0xcc, 0x00, - 0x40, 0xae, 0x85, 0x58, 0x01, 0x0c, 0x6c, 0x00, 0x24, 0x26, 0x20, 0x00, 0x22, - 0x8e, 0xfe, 0xff, 0x03, 0x24, 0x24, 0x18, 0x43, 0x00, 0x08, 0x00, 0x42, 0x30, - 0x54, 0x01, 0x40, 0x10, 0x20, 0x00, 0x23, 0xae, 0xf7, 0xff, 0x02, 0x24, 0x24, - 0x10, 0x62, 0x00, 0x2d, 0x54, 0x01, 0x08, 0x10, 0x00, 0x42, 0x34, 0x20, 0x00, - 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x24, 0x10, 0x43, 0x00, 0x18, 0x00, 0x42, - 0x34, 0x20, 0x00, 0x22, 0xae, 0x2c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x42, 0x34, 0x2c, 0x00, 0x42, 0xae, 0xf8, 0x51, 0x01, 0x0c, 0x21, - 0x20, 0x20, 0x02, 0x46, 0x54, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x02, 0x24, 0x37, 0x01, 0x82, 0x14, 0x00, 0xa0, 0x02, 0x3c, 0x20, 0x00, 0x22, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x30, 0xb8, 0x00, 0x40, 0x10, - 0x00, 0xa0, 0x03, 0x3c, 0xcc, 0x00, 0x40, 0xae, 0x85, 0x58, 0x01, 0x0c, 0x6c, - 0x00, 0x24, 0x26, 0x20, 0x00, 0x22, 0x8e, 0xf6, 0xff, 0x03, 0x24, 0x24, 0x10, - 0x43, 0x00, 0x46, 0x54, 0x01, 0x08, 0x20, 0x00, 0x22, 0xae, 0x04, 0x00, 0x02, - 0x24, 0x27, 0x01, 0x82, 0x14, 0x00, 0xa0, 0x02, 0x3c, 0x22, 0x53, 0x01, 0x08, - 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x82, 0x24, 0xe9, 0x13, 0x42, 0x2c, 0x21, - 0x01, 0x40, 0x10, 0x00, 0xa0, 0x02, 0x3c, 0x22, 0x53, 0x01, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x6c, 0x80, 0x84, 0x27, 0x24, 0x40, 0x01, 0x0c, 0x5a, 0x03, 0x05, - 0x24, 0x20, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x30, - 0x20, 0x01, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xa2, 0x92, 0x00, - 0x00, 0x00, 0x00, 0x0f, 0x00, 0x45, 0x30, 0xff, 0x00, 0xa3, 0x30, 0x34, 0x00, - 0x24, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, 0x18, 0x64, 0x00, 0x0f, 0x00, 0x63, - 0x30, 0x3c, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0x44, 0x00, - 0x0f, 0x00, 0x42, 0x30, 0x2a, 0x10, 0x43, 0x00, 0x0b, 0x00, 0x40, 0x10, 0x00, - 0xa0, 0x03, 0x3c, 0xc0, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, 0x21, 0x20, 0x20, - 0x02, 0x78, 0x52, 0x01, 0x0c, 0x03, 0x00, 0x05, 0x24, 0x46, 0x54, 0x01, 0x08, - 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xa3, 0x30, 0x34, 0x00, 0x22, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x44, 0x00, 0x43, 0x10, 0xff, 0x00, 0xb4, 0x30, 0x1c, 0x00, - 0x23, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x90, 0x00, 0x00, 0x00, - 0x00, 0x06, 0x00, 0x42, 0x34, 0x00, 0x00, 0x62, 0xa0, 0xc8, 0x00, 0x40, 0xae, - 0xcc, 0x00, 0x40, 0xae, 0x10, 0x00, 0x30, 0x8e, 0x34, 0x00, 0x22, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x0f, 0x00, 0x42, 0x30, 0x34, 0x00, - 0x22, 0xae, 0x00, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x22, - 0xae, 0x04, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x24, - 0x0a, 0x00, 0x42, 0x2c, 0x04, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x6c, - 0x80, 0x84, 0x27, 0x24, 0x40, 0x01, 0x0c, 0x95, 0x03, 0x05, 0x24, 0x04, 0x00, - 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x24, 0x09, 0x00, 0x40, - 0x14, 0x04, 0x00, 0x02, 0xae, 0xe4, 0xaa, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0xae, 0xe4, 0xaa, 0x90, 0xaf, 0x64, 0x00, 0x42, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x64, 0x00, 0x42, 0xae, 0x34, 0x00, - 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xde, 0xff, 0x54, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x10, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, 0x14, - 0x10, 0x00, 0x22, 0x26, 0x14, 0x00, 0x22, 0xae, 0x20, 0x00, 0x22, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x42, 0x30, 0x0f, 0x00, 0x40, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x23, 0x8e, 0x34, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x05, 0x00, 0x62, 0x14, 0x6c, 0x00, 0x24, 0x26, 0x85, 0x58, 0x01, 0x0c, - 0x6c, 0x00, 0x24, 0x26, 0x88, 0x53, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0xac, - 0x89, 0x82, 0x8f, 0x74, 0x00, 0x45, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x99, 0x58, - 0x01, 0x0c, 0x21, 0x28, 0x45, 0x00, 0x00, 0x00, 0xa2, 0x92, 0x00, 0x00, 0x00, - 0x00, 0x0f, 0x00, 0x43, 0x30, 0x09, 0x00, 0x02, 0x24, 0x0e, 0x00, 0x62, 0x10, - 0x0a, 0x00, 0x62, 0x28, 0x05, 0x00, 0x40, 0x10, 0x07, 0x00, 0x02, 0x24, 0x61, - 0x00, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0x46, 0x54, 0x01, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x0a, 0x00, 0x02, 0x24, 0x18, 0x00, 0x62, 0x10, 0x0b, 0x00, 0x02, - 0x24, 0x25, 0x00, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0x46, 0x54, 0x01, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x24, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x82, 0x30, 0x0d, 0x00, 0x40, 0x14, 0x00, 0xa0, 0x02, 0x3c, 0x3c, 0x00, - 0x23, 0x8e, 0x38, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x62, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x82, 0x34, 0x20, 0x00, 0x22, 0xae, - 0x2c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x34, 0x2c, - 0x00, 0x42, 0xae, 0x00, 0xa0, 0x02, 0x3c, 0x3e, 0x54, 0x01, 0x08, 0xf0, 0x0d, - 0x42, 0x34, 0x20, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x42, - 0x34, 0x20, 0x00, 0x22, 0xae, 0x2c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x42, 0x34, 0x2c, 0x00, 0x42, 0xae, 0x00, 0xa0, 0x03, 0x3c, 0xf4, - 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x42, 0x24, 0x42, 0x54, 0x01, 0x08, 0x00, 0x00, 0x62, 0xac, 0x20, 0x00, 0x22, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x42, 0x30, 0x08, 0x00, 0x40, 0x14, - 0xf5, 0xff, 0x03, 0x24, 0x00, 0xa0, 0x03, 0x3c, 0xec, 0x0d, 0x63, 0x34, 0x00, - 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x46, 0x54, - 0x01, 0x08, 0x00, 0x00, 0x62, 0xac, 0xcc, 0x00, 0x40, 0xae, 0x20, 0x00, 0x22, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x24, 0x10, 0x43, 0x00, 0x20, 0x00, 0x22, 0xae, - 0x10, 0x00, 0x30, 0x8e, 0x18, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x0d, - 0x00, 0x02, 0x12, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x42, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x42, 0x24, 0x08, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x21, 0x10, 0x43, 0x00, 0x84, 0x00, 0x42, 0xae, 0x00, 0x00, 0x10, 0x8e, - 0x18, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x02, 0x16, 0x00, - 0x00, 0x00, 0x00, 0x34, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x22, 0xae, 0x10, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x22, - 0xae, 0x34, 0x00, 0x23, 0x8e, 0x38, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x22, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x2d, 0x54, 0x01, 0x08, 0x08, 0x00, 0x42, 0x34, 0x85, 0x58, - 0x01, 0x0c, 0x6c, 0x00, 0x24, 0x26, 0x46, 0x54, 0x01, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0xa2, 0x92, 0x00, 0x00, 0x00, 0x00, 0x02, 0x21, 0x02, 0x00, - 0xff, 0x00, 0x83, 0x30, 0x30, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2a, - 0x00, 0x62, 0x14, 0xff, 0x00, 0x82, 0x30, 0x01, 0x00, 0x02, 0x24, 0x10, 0x00, - 0x62, 0xae, 0x04, 0x00, 0x71, 0xae, 0x00, 0x00, 0x60, 0xae, 0xa8, 0x9e, 0x82, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, - 0xc0, 0x9e, 0x84, 0x27, 0x65, 0x58, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xd8, - 0x9e, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0xac, 0xd8, 0x9e, - 0x93, 0xaf, 0x30, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, - 0x24, 0x0f, 0x00, 0x42, 0x30, 0x30, 0x00, 0x22, 0xae, 0x20, 0x00, 0x22, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x42, 0x30, 0x05, 0x00, 0x40, 0x10, 0x00, - 0x00, 0x00, 0x00, 0xac, 0x89, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x46, 0x54, - 0x01, 0x08, 0x28, 0x00, 0x22, 0xae, 0x20, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x80, 0x00, 0x42, 0x34, 0x20, 0x00, 0x22, 0xae, 0x74, 0x00, 0x42, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x82, 0x10, 0x02, 0x00, 0xac, 0x89, 0x83, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x21, 0x10, 0x43, 0x00, 0x46, 0x54, 0x01, 0x08, 0x28, 0x00, - 0x22, 0xae, 0x30, 0x00, 0x23, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0x43, - 0x00, 0x0f, 0x00, 0x42, 0x30, 0x05, 0x00, 0x42, 0x28, 0x0a, 0x00, 0x40, 0x10, - 0x00, 0xa0, 0x03, 0x3c, 0x20, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x40, - 0x00, 0x42, 0x34, 0x20, 0x00, 0x22, 0xae, 0x2c, 0x00, 0x42, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x42, 0x34, 0x46, 0x54, 0x01, 0x08, 0x2c, 0x00, 0x42, - 0xae, 0xc4, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, 0x21, 0x20, 0x20, 0x02, 0x78, - 0x52, 0x01, 0x0c, 0x04, 0x00, 0x05, 0x24, 0x46, 0x54, 0x01, 0x08, 0x00, 0x00, - 0x00, 0x00, 0xbc, 0x0d, 0x42, 0x34, 0x00, 0x00, 0x43, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x63, 0x24, 0x00, 0x00, 0x43, 0xac, 0xc8, 0x00, 0x42, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0xc8, 0x00, 0x42, 0xae, 0x28, - 0x00, 0xbf, 0x8f, 0x24, 0x00, 0xb5, 0x8f, 0x20, 0x00, 0xb4, 0x8f, 0x1c, 0x00, - 0xb3, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, - 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x30, 0x00, 0xbd, 0x27, 0xd0, 0xff, 0xbd, 0x27, - 0x2c, 0x00, 0xbf, 0xaf, 0x28, 0x00, 0xb6, 0xaf, 0x24, 0x00, 0xb5, 0xaf, 0x20, - 0x00, 0xb4, 0xaf, 0x1c, 0x00, 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, - 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0xa0, 0x80, 0x00, 0x21, 0xa8, 0xa0, - 0x00, 0xac, 0x89, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xaa, 0x82, 0xaf, - 0x08, 0x00, 0xb3, 0x8e, 0x14, 0x00, 0xb6, 0x8e, 0x7c, 0x00, 0x83, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x05, 0x00, 0x60, 0x10, 0x2a, 0x10, 0xc3, 0x02, 0x60, 0x00, - 0x40, 0x14, 0x23, 0x10, 0x76, 0x00, 0xc4, 0x54, 0x01, 0x08, 0x21, 0x10, 0x00, - 0x00, 0xa0, 0x9e, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x29, 0x00, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0xf8, 0x4e, 0x01, 0x0c, 0x64, 0x00, 0x04, 0x24, 0xa0, - 0x9e, 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x43, 0x00, 0x22, 0x00, - 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0x92, 0x00, 0x00, 0x00, - 0x00, 0xf8, 0x4e, 0x01, 0x0c, 0x02, 0x00, 0x04, 0x24, 0x21, 0x88, 0x40, 0x00, - 0xf8, 0x4e, 0x01, 0x0c, 0x08, 0x00, 0x04, 0x24, 0x21, 0x80, 0x40, 0x00, 0xf8, - 0x4e, 0x01, 0x0c, 0x02, 0x00, 0x04, 0x24, 0x21, 0x88, 0x71, 0x02, 0x80, 0x10, - 0x02, 0x00, 0x04, 0x80, 0x50, 0x00, 0x00, 0x00, 0x22, 0x92, 0x00, 0x00, 0x00, - 0x00, 0x26, 0x10, 0x50, 0x00, 0x00, 0x00, 0x22, 0xa2, 0x00, 0x00, 0x62, 0x92, - 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x43, 0x30, 0x01, 0x00, 0x02, 0x24, 0x05, - 0x00, 0x62, 0x14, 0x0f, 0x00, 0x42, 0x32, 0x04, 0x00, 0x43, 0x10, 0x00, 0xa0, - 0x03, 0x3c, 0x93, 0x54, 0x01, 0x08, 0x00, 0x00, 0x72, 0xa2, 0x00, 0xa0, 0x03, - 0x3c, 0xdc, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, 0x00, 0x00, 0x62, 0x92, 0x00, - 0x00, 0x00, 0x00, 0x0f, 0x00, 0x43, 0x30, 0x44, 0x00, 0x60, 0x10, 0x05, 0x00, - 0x62, 0x28, 0x05, 0x00, 0x40, 0x10, 0x21, 0x20, 0x80, 0x02, 0x99, 0x4c, 0x01, - 0x0c, 0x21, 0x28, 0xa0, 0x02, 0xe5, 0x54, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x62, 0x28, 0x3b, 0x00, 0x40, 0x10, 0xc3, 0xa5, 0x02, 0x34, 0x02, - 0x00, 0x63, 0x92, 0x00, 0x00, 0x00, 0x00, 0x23, 0x90, 0x43, 0x00, 0x00, 0x00, - 0x62, 0x92, 0x00, 0x00, 0x00, 0x00, 0x23, 0x90, 0x42, 0x02, 0x01, 0x00, 0x62, - 0x92, 0x03, 0x00, 0x63, 0x92, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x43, 0x00, - 0x00, 0x12, 0x02, 0x00, 0x23, 0x90, 0x42, 0x02, 0xff, 0xff, 0x52, 0x32, 0x17, - 0x00, 0x56, 0x12, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x9e, 0x82, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x13, 0x00, 0x40, 0x14, 0x00, 0xa0, 0x03, 0x3c, 0xac, 0x0d, 0x63, - 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, - 0x00, 0x00, 0x62, 0xac, 0xc8, 0x00, 0x82, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x42, 0x24, 0xc8, 0x00, 0x82, 0xae, 0x14, 0x00, 0xa5, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x2a, 0x10, 0xb2, 0x00, 0x24, 0x00, 0x40, 0x10, 0xa0, 0x0f, 0x42, - 0x2a, 0x22, 0x00, 0x40, 0x10, 0x23, 0x10, 0x45, 0x02, 0xe5, 0x54, 0x01, 0x08, - 0x7c, 0x00, 0x82, 0xae, 0x00, 0x00, 0x62, 0x92, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x11, 0x02, 0x00, 0x07, 0x00, 0x52, 0x30, 0x6c, 0x00, 0x82, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x2a, 0x10, 0x42, 0x02, 0x0a, 0x00, 0x40, 0x10, 0x40, 0x21, 0x12, - 0x00, 0x21, 0x20, 0x92, 0x00, 0x80, 0x20, 0x04, 0x00, 0x0c, 0x00, 0x82, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, 0x82, 0x00, 0x90, 0x52, 0x01, 0x0c, 0x21, - 0x28, 0xa0, 0x02, 0xe5, 0x54, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, - 0x02, 0x3c, 0xdd, 0x54, 0x01, 0x08, 0xb4, 0x0d, 0x42, 0x34, 0x00, 0xa0, 0x02, - 0x3c, 0xb8, 0x0d, 0x42, 0x34, 0x00, 0x00, 0x43, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x63, 0x24, 0x00, 0x00, 0x43, 0xac, 0xc8, 0x00, 0x82, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0xc8, 0x00, 0x82, 0xae, 0x2c, 0x00, - 0xbf, 0x8f, 0x28, 0x00, 0xb6, 0x8f, 0x24, 0x00, 0xb5, 0x8f, 0x20, 0x00, 0xb4, - 0x8f, 0x1c, 0x00, 0xb3, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, - 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x30, 0x00, 0xbd, 0x27, 0xe0, - 0xff, 0xbd, 0x27, 0x18, 0x00, 0xbf, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, - 0xb0, 0xaf, 0xa8, 0x9e, 0x91, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x9e, 0x82, 0xaf, 0x03, 0x00, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0xa8, 0x9e, 0x82, 0x27, 0xd8, 0x9e, 0x82, 0xaf, 0x10, - 0x00, 0x23, 0x8e, 0x01, 0x00, 0x02, 0x24, 0x20, 0x00, 0x62, 0x14, 0x02, 0x00, - 0x02, 0x24, 0x48, 0x9a, 0x84, 0x8f, 0x1f, 0x42, 0x01, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x44, 0x8c, - 0x08, 0x00, 0x23, 0x8e, 0x14, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, - 0x80, 0x62, 0x00, 0x00, 0x9f, 0x10, 0x26, 0x20, 0x00, 0x85, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x23, 0x80, 0x05, 0x02, 0x04, 0x00, 0x00, 0x1a, 0x21, 0x20, 0xa0, - 0x00, 0x00, 0x61, 0xa5, 0x24, 0x58, 0x41, 0x01, 0x0c, 0x21, 0x30, 0x00, 0x02, - 0x08, 0x00, 0x25, 0x8e, 0x14, 0x00, 0x26, 0x8e, 0x04, 0x00, 0x24, 0x8e, 0x04, - 0x00, 0xa5, 0x24, 0xae, 0x46, 0x01, 0x0c, 0xfc, 0xff, 0xc6, 0x24, 0x50, 0x9a, - 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x16, 0x42, 0x01, 0x0c, 0x21, 0x80, 0x40, - 0x00, 0x25, 0x55, 0x01, 0x08, 0x10, 0x00, 0x20, 0xae, 0x04, 0x00, 0x62, 0x10, - 0x21, 0x80, 0x00, 0x00, 0x6c, 0x80, 0x84, 0x27, 0x24, 0x40, 0x01, 0x0c, 0x1e, - 0x05, 0x05, 0x24, 0x10, 0x00, 0x20, 0xae, 0x00, 0xa0, 0x03, 0x3c, 0x74, 0x0d, - 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, - 0x24, 0x0b, 0x00, 0x00, 0x12, 0x00, 0x00, 0x62, 0xac, 0x00, 0xa0, 0x03, 0x3c, - 0xc8, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, 0x04, 0x00, 0x24, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x78, 0x52, 0x01, 0x0c, 0x21, 0x28, 0x00, 0x02, 0xa8, 0x9e, 0x82, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, - 0xc0, 0x9e, 0x84, 0x27, 0x65, 0x58, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x18, - 0x00, 0xbf, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, - 0xe0, 0x03, 0x20, 0x00, 0xbd, 0x27, 0xe8, 0xff, 0xbd, 0x27, 0x14, 0x00, 0xbf, - 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x11, 0x49, 0x01, 0x0c, 0x21, 0x80, 0x80, 0x00, - 0x20, 0x00, 0x02, 0x8e, 0xff, 0xfe, 0x03, 0x24, 0x24, 0x10, 0x43, 0x00, 0x20, - 0x00, 0x02, 0xae, 0x14, 0x00, 0xbf, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, - 0xe0, 0x03, 0x18, 0x00, 0xbd, 0x27, 0xd8, 0xff, 0xbd, 0x27, 0x24, 0x00, 0xbf, - 0xaf, 0x20, 0x00, 0xb4, 0xaf, 0x1c, 0x00, 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, - 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x88, 0x80, 0x00, 0x04, - 0x00, 0x33, 0x8e, 0x20, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, - 0x42, 0x30, 0xcd, 0x00, 0x40, 0x14, 0x21, 0x10, 0x00, 0x00, 0x38, 0x00, 0x22, - 0x8e, 0x34, 0x00, 0x23, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0x43, 0x00, - 0x0f, 0x00, 0x42, 0x30, 0x05, 0x00, 0x42, 0x28, 0x19, 0x00, 0x40, 0x14, 0x80, - 0x00, 0x02, 0x24, 0x20, 0x00, 0x24, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, - 0x83, 0x30, 0xc0, 0x00, 0x62, 0x14, 0x21, 0x10, 0x00, 0x00, 0xac, 0x89, 0x82, - 0x8f, 0x28, 0x00, 0x23, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0x43, 0x00, - 0xff, 0x3f, 0x03, 0x3c, 0xff, 0xff, 0x63, 0x34, 0x2b, 0x18, 0x62, 0x00, 0xb7, - 0x00, 0x60, 0x14, 0x21, 0x10, 0x00, 0x00, 0x08, 0x00, 0x82, 0x34, 0x20, 0x00, - 0x22, 0xae, 0x2c, 0x00, 0x62, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, - 0x34, 0x2c, 0x00, 0x62, 0xae, 0x85, 0x4d, 0x01, 0x0c, 0x21, 0x20, 0x60, 0x02, - 0x29, 0x56, 0x01, 0x08, 0x21, 0x10, 0x00, 0x00, 0xe4, 0xaa, 0x92, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xe4, 0xaa, - 0x82, 0xaf, 0x00, 0x00, 0x40, 0xae, 0x04, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x80, 0x84, 0x27, - 0x24, 0x40, 0x01, 0x0c, 0x76, 0x05, 0x05, 0x24, 0x48, 0x9a, 0x84, 0x8f, 0x1f, - 0x42, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, 0x20, 0x02, 0x80, 0x00, - 0x66, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x8e, 0x44, 0x01, 0x0c, 0x10, 0x00, 0x45, - 0x26, 0x21, 0xa0, 0x40, 0x00, 0x50, 0x80, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x1f, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x62, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x2a, 0x10, 0x82, 0x02, 0x1a, 0x00, 0x40, 0x10, 0x21, 0x10, - 0x54, 0x02, 0xfe, 0x00, 0x03, 0x24, 0x10, 0x00, 0x43, 0xa0, 0x58, 0x80, 0x84, - 0x8f, 0x54, 0x80, 0x90, 0x8f, 0x80, 0x00, 0x63, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x2a, 0x10, 0x64, 0x00, 0x03, 0x00, 0x40, 0x10, 0x2a, 0x10, 0x94, 0x00, 0x21, - 0x20, 0x60, 0x00, 0x2a, 0x10, 0x94, 0x00, 0x02, 0x00, 0x40, 0x10, 0x2a, 0x10, - 0x14, 0x02, 0x21, 0x20, 0x80, 0x02, 0x03, 0x00, 0x40, 0x10, 0x2a, 0x10, 0x90, - 0x00, 0x21, 0x80, 0x80, 0x02, 0x2a, 0x10, 0x90, 0x00, 0x02, 0x00, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x21, 0x80, 0x80, 0x00, 0x23, 0x20, 0x90, 0x00, 0xf8, - 0x4e, 0x01, 0x0c, 0x01, 0x00, 0x84, 0x24, 0x21, 0xa0, 0x02, 0x02, 0x50, 0x9a, - 0x84, 0x8f, 0x16, 0x42, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x9e, 0x82, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x54, 0x00, 0x04, 0x00, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x6c, 0x80, 0x84, 0x27, 0x24, 0x40, 0x01, 0x0c, 0x93, - 0x05, 0x05, 0x24, 0x20, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x42, 0x30, 0x07, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xe4, 0xaa, 0x82, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xae, 0xe4, 0xaa, 0x92, 0xaf, - 0x29, 0x56, 0x01, 0x08, 0x21, 0x10, 0x80, 0x02, 0x23, 0x00, 0x80, 0x16, 0xff, - 0x3f, 0x06, 0x3c, 0xac, 0x89, 0x85, 0x8f, 0x2c, 0x00, 0x22, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x23, 0x10, 0xa2, 0x00, 0xff, 0xff, 0xc6, 0x34, 0x2b, 0x10, 0xc2, - 0x00, 0x1b, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xe4, 0xaa, 0x82, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xae, 0xe4, 0xaa, 0x92, 0xaf, 0x20, - 0x00, 0x24, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x83, 0x30, 0x80, 0x00, - 0x02, 0x24, 0x4b, 0x00, 0x62, 0x14, 0x21, 0x10, 0x80, 0x02, 0x28, 0x00, 0x22, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0xa2, 0x00, 0x2b, 0x10, 0xc2, 0x00, - 0x45, 0x00, 0x40, 0x14, 0x21, 0x10, 0x80, 0x02, 0x08, 0x00, 0x82, 0x34, 0x20, - 0x00, 0x22, 0xae, 0x2c, 0x00, 0x62, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x42, 0x34, 0x2c, 0x00, 0x62, 0xae, 0x85, 0x4d, 0x01, 0x0c, 0x21, 0x20, 0x60, - 0x02, 0x29, 0x56, 0x01, 0x08, 0x21, 0x10, 0x80, 0x02, 0x04, 0x00, 0x42, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x40, 0x10, 0x01, 0x00, 0x02, 0x24, 0x6c, - 0x80, 0x84, 0x27, 0x24, 0x40, 0x01, 0x0c, 0xda, 0x05, 0x05, 0x24, 0x01, 0x00, - 0x02, 0x24, 0x04, 0x00, 0x42, 0xae, 0x64, 0x00, 0x62, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x42, 0x24, 0x64, 0x00, 0x62, 0xae, 0x00, 0xa0, 0x03, 0x3c, - 0x70, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, 0x04, 0x00, 0x83, 0x26, 0x08, 0x00, - 0x43, 0xae, 0x84, 0x00, 0x62, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x42, - 0x24, 0x21, 0x10, 0x43, 0x00, 0x84, 0x00, 0x62, 0xae, 0x14, 0x00, 0x22, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0xac, 0x14, 0x00, 0x32, 0xae, 0x18, - 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x18, 0x00, 0x32, 0xae, 0x38, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x42, 0x24, 0x0f, 0x00, 0x42, 0x30, 0x38, 0x00, 0x22, 0xae, - 0xac, 0x89, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x88, 0x13, 0x42, 0x24, 0x2c, - 0x00, 0x22, 0xae, 0x20, 0x00, 0x23, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, - 0x62, 0x30, 0x08, 0x00, 0x40, 0x14, 0x08, 0x00, 0x62, 0x34, 0x20, 0x00, 0x22, - 0xae, 0x2c, 0x00, 0x62, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x34, - 0x2c, 0x00, 0x62, 0xae, 0x85, 0x4d, 0x01, 0x0c, 0x21, 0x20, 0x60, 0x02, 0x06, - 0x00, 0x94, 0x26, 0x21, 0x10, 0x80, 0x02, 0x24, 0x00, 0xbf, 0x8f, 0x20, 0x00, - 0xb4, 0x8f, 0x1c, 0x00, 0xb3, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, - 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x28, 0x00, 0xbd, 0x27, - 0xe0, 0xff, 0xbd, 0x27, 0x18, 0x00, 0xbf, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, - 0x00, 0xb0, 0xaf, 0x21, 0x80, 0x80, 0x00, 0x14, 0x00, 0x11, 0x8e, 0x2c, 0x00, - 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x42, 0x30, 0x05, 0x00, 0x40, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x80, 0x82, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x09, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, - 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x62, 0x30, 0x04, 0x00, 0x40, - 0x14, 0x01, 0x00, 0x62, 0x34, 0x2c, 0x00, 0x02, 0xae, 0x85, 0x4d, 0x01, 0x0c, - 0x21, 0x20, 0x00, 0x02, 0xac, 0x89, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2c, - 0x00, 0x22, 0xae, 0x28, 0x00, 0x22, 0xae, 0xc5, 0x58, 0x01, 0x0c, 0x64, 0x00, - 0x04, 0x24, 0xfa, 0x56, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x02, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x40, 0x10, 0x00, 0xa0, 0x03, 0x3c, - 0xe4, 0xaa, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x40, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x6c, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, 0x20, 0x00, 0x24, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x83, 0x30, 0x80, 0x00, 0x02, 0x24, - 0x11, 0x00, 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, 0xac, 0x89, 0x82, 0x8f, 0x28, - 0x00, 0x23, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0x43, 0x00, 0xff, 0x3f, - 0x03, 0x3c, 0xff, 0xff, 0x63, 0x34, 0x2b, 0x18, 0x62, 0x00, 0x08, 0x00, 0x60, - 0x14, 0x08, 0x00, 0x82, 0x34, 0x20, 0x00, 0x22, 0xae, 0x2c, 0x00, 0x02, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x34, 0x2c, 0x00, 0x02, 0xae, 0x85, - 0x4d, 0x01, 0x0c, 0x21, 0x20, 0x00, 0x02, 0xc5, 0x58, 0x01, 0x0c, 0x02, 0x00, - 0x04, 0x24, 0xfa, 0x56, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x23, - 0x8e, 0x38, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x62, 0x10, - 0x00, 0xa0, 0x02, 0x3c, 0x60, 0x0d, 0x42, 0x34, 0x00, 0x00, 0x43, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x63, 0x24, 0x00, 0x00, 0x43, 0xac, 0x20, 0x00, - 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x42, 0x34, 0xfa, 0x56, 0x01, - 0x08, 0x20, 0x00, 0x22, 0xae, 0x4f, 0x55, 0x01, 0x0c, 0x21, 0x20, 0x20, 0x02, - 0x21, 0x30, 0x40, 0x00, 0x00, 0x00, 0x31, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x14, - 0x00, 0x11, 0xae, 0xac, 0x89, 0x85, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xff, - 0xa3, 0x24, 0x24, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, 0xc0, - 0x10, 0x23, 0x38, 0x43, 0x00, 0x90, 0x00, 0x03, 0x8e, 0x94, 0x00, 0x02, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x39, 0x00, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0x98, - 0x00, 0x04, 0x8e, 0x9c, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, - 0xa2, 0x00, 0xe8, 0x03, 0x42, 0x2c, 0x0c, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x9c, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, 0x18, 0xa3, 0x00, - 0x40, 0x10, 0x03, 0x00, 0x21, 0x10, 0x43, 0x00, 0xc0, 0x10, 0x02, 0x00, 0x21, - 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x23, 0x20, 0x82, 0x00, 0x02, 0x00, - 0x81, 0x04, 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, 0x00, 0x00, 0x9c, 0x00, 0x05, - 0xae, 0x40, 0x10, 0x06, 0x00, 0x21, 0x10, 0x46, 0x00, 0x80, 0x19, 0x02, 0x00, - 0x21, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x21, 0x10, 0x46, 0x00, 0x80, - 0x10, 0x02, 0x00, 0x21, 0x10, 0x46, 0x00, 0x40, 0x11, 0x02, 0x00, 0x94, 0x00, - 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x43, 0x00, 0x02, 0x00, 0x60, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x07, 0x00, 0xff, 0xff, 0x01, 0x24, - 0x04, 0x00, 0x61, 0x14, 0x00, 0x80, 0x01, 0x3c, 0x02, 0x00, 0x41, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x0d, 0x00, 0x06, 0x00, 0x12, 0x10, 0x00, 0x00, 0x21, 0x20, - 0x82, 0x00, 0x98, 0x00, 0x04, 0xae, 0xeb, 0x51, 0x02, 0x3c, 0x1f, 0x85, 0x42, - 0x34, 0x18, 0x00, 0x82, 0x00, 0x10, 0x40, 0x00, 0x00, 0x43, 0x11, 0x08, 0x00, - 0xc3, 0x1f, 0x04, 0x00, 0x23, 0x10, 0x43, 0x00, 0x9c, 0xff, 0x44, 0x24, 0x2a, - 0x10, 0xe4, 0x00, 0x02, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0x38, - 0x80, 0x00, 0x84, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x40, 0x11, 0x03, - 0x00, 0x23, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x21, 0x10, 0x43, 0x00, - 0xc0, 0x10, 0x02, 0x00, 0x90, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x1a, - 0x00, 0x43, 0x00, 0x02, 0x00, 0x60, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, - 0x07, 0x00, 0xff, 0xff, 0x01, 0x24, 0x04, 0x00, 0x61, 0x14, 0x00, 0x80, 0x01, - 0x3c, 0x02, 0x00, 0x41, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x06, 0x00, - 0x12, 0x20, 0x00, 0x00, 0x78, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, - 0x10, 0xa2, 0x00, 0x23, 0x20, 0x82, 0x00, 0xec, 0xff, 0x84, 0x24, 0x2a, 0x10, - 0xe4, 0x00, 0x02, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0x38, 0x80, - 0x00, 0x03, 0x00, 0xe0, 0x18, 0x21, 0x10, 0xe5, 0x00, 0xf6, 0x56, 0x01, 0x08, - 0x24, 0x00, 0x22, 0xae, 0x24, 0x00, 0x25, 0xae, 0x24, 0x00, 0x25, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x99, 0x58, 0x01, 0x0c, 0xd0, 0x00, 0x04, 0x26, 0x18, 0x00, - 0xbf, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, - 0x03, 0x20, 0x00, 0xbd, 0x27, 0xe0, 0xff, 0xbd, 0x27, 0x18, 0x00, 0xbf, 0xaf, - 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x88, 0x80, 0x00, 0x04, - 0x00, 0x30, 0x8e, 0x20, 0x00, 0x23, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x62, 0x30, 0x04, 0x00, 0x40, 0x10, 0xff, 0xfb, 0x02, 0x24, 0x24, 0x10, 0x62, - 0x00, 0x1b, 0x57, 0x01, 0x08, 0x20, 0x00, 0x22, 0xae, 0x00, 0xa0, 0x03, 0x3c, - 0xe0, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, 0xc8, 0x00, 0x02, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0xc8, 0x00, 0x02, 0xae, 0xcc, 0x00, 0x02, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0xcc, 0x00, 0x02, 0xae, - 0xcc, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x42, 0x28, 0x09, - 0x00, 0x40, 0x14, 0x0f, 0xff, 0x03, 0x24, 0xcc, 0x00, 0x00, 0xae, 0x2c, 0x00, - 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x24, 0x10, 0x43, 0x00, 0x10, 0x00, 0x42, - 0x34, 0x2c, 0x00, 0x02, 0xae, 0x65, 0x58, 0x01, 0x0c, 0xe8, 0x00, 0x04, 0x26, - 0x20, 0x00, 0x23, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x62, 0x30, 0x0c, - 0x00, 0x40, 0x14, 0x08, 0x00, 0x62, 0x34, 0x3c, 0x00, 0x23, 0x8e, 0x34, 0x00, - 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x62, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x6c, 0x80, 0x84, 0x27, 0x24, 0x40, 0x01, 0x0c, 0xfd, 0x06, 0x05, 0x24, - 0x20, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x42, 0x34, 0x20, - 0x00, 0x22, 0xae, 0x2c, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x42, 0x34, 0x2c, 0x00, 0x02, 0xae, 0x85, 0x4d, 0x01, 0x0c, 0x21, 0x20, 0x00, - 0x02, 0x18, 0x00, 0xbf, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, - 0x08, 0x00, 0xe0, 0x03, 0x20, 0x00, 0xbd, 0x27, 0xc0, 0xff, 0xbd, 0x27, 0x38, - 0x00, 0xbf, 0xaf, 0x34, 0x00, 0xb5, 0xaf, 0x30, 0x00, 0xb4, 0xaf, 0x2c, 0x00, - 0xb3, 0xaf, 0x28, 0x00, 0xb2, 0xaf, 0x24, 0x00, 0xb1, 0xaf, 0x25, 0x5e, 0x01, - 0x0c, 0x20, 0x00, 0xb0, 0xaf, 0x06, 0x80, 0x11, 0x3c, 0x10, 0x8e, 0x31, 0x8e, - 0xa4, 0x8c, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x42, 0x28, 0x09, - 0x00, 0x40, 0x14, 0x2c, 0x01, 0x22, 0x2a, 0x06, 0x80, 0x03, 0x3c, 0x78, 0x8f, - 0x63, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x23, 0x02, 0x03, 0x00, 0x40, - 0x10, 0x2c, 0x01, 0x22, 0x2a, 0x21, 0x88, 0x60, 0x00, 0x2c, 0x01, 0x22, 0x2a, - 0x03, 0x00, 0x40, 0x10, 0x5f, 0x00, 0x22, 0x26, 0x2c, 0x01, 0x11, 0x24, 0x5f, - 0x00, 0x22, 0x26, 0xf0, 0xff, 0x03, 0x24, 0x24, 0x10, 0x43, 0x00, 0xa4, 0x9e, - 0x82, 0xaf, 0x21, 0x88, 0x00, 0x00, 0xff, 0xff, 0x12, 0x3c, 0x01, 0x00, 0x14, - 0x3c, 0x0f, 0xa0, 0x13, 0x3c, 0xff, 0xef, 0x73, 0x36, 0xe0, 0xaa, 0x83, 0x8f, - 0xa4, 0x9e, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x62, 0x00, 0x26, - 0x10, 0x43, 0x00, 0x24, 0x10, 0x52, 0x00, 0x03, 0x00, 0x40, 0x10, 0x21, 0x10, - 0x74, 0x00, 0x24, 0x10, 0x52, 0x00, 0xe0, 0xaa, 0x82, 0xaf, 0xe0, 0xaa, 0x90, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0x70, 0x02, 0x0d, 0x00, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0xa4, 0x9e, 0x85, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, - 0x28, 0x05, 0x02, 0xe0, 0xaa, 0x85, 0xaf, 0x0d, 0x4f, 0x01, 0x0c, 0x21, 0x20, - 0x00, 0x02, 0xe4, 0xaa, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0xae, 0xe4, 0xaa, 0x90, 0xaf, 0x68, 0x57, 0x01, 0x08, 0x01, 0x00, 0x31, 0x26, - 0xb0, 0x9e, 0x91, 0xaf, 0xd0, 0x89, 0x91, 0x27, 0xa4, 0x8c, 0x82, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x21, 0x18, 0x40, 0x00, 0x4a, 0x00, 0x40, 0x18, 0x21, 0x98, - 0x00, 0x00, 0x01, 0x00, 0x14, 0x24, 0x09, 0x00, 0x15, 0x24, 0x0a, 0x00, 0x74, - 0x10, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x9e, 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x40, 0x10, 0x03, 0x00, 0x21, 0x10, 0x43, 0x00, 0x02, 0x00, 0x41, 0x04, 0x00, - 0x00, 0x00, 0x00, 0x03, 0x00, 0x42, 0x24, 0x99, 0x57, 0x01, 0x08, 0x83, 0x10, - 0x02, 0x00, 0xb0, 0x9e, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x22, - 0xae, 0x0c, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x22, 0xae, - 0x0c, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x22, 0xae, 0xd0, - 0x00, 0x30, 0x26, 0x21, 0x20, 0x00, 0x02, 0x02, 0x00, 0x05, 0x24, 0x05, 0x80, - 0x06, 0x3c, 0xc4, 0x58, 0xc6, 0x24, 0x4a, 0x58, 0x01, 0x0c, 0x21, 0x38, 0x20, - 0x02, 0x65, 0x58, 0x01, 0x0c, 0x21, 0x20, 0x00, 0x02, 0xe8, 0x00, 0x30, 0x26, - 0x21, 0x20, 0x00, 0x02, 0x03, 0x00, 0x05, 0x24, 0x05, 0x80, 0x06, 0x3c, 0xa8, - 0x38, 0xc6, 0x24, 0x4a, 0x58, 0x01, 0x0c, 0x21, 0x38, 0x20, 0x02, 0xac, 0x89, - 0x85, 0x8f, 0x21, 0x20, 0x00, 0x02, 0x99, 0x58, 0x01, 0x0c, 0xe8, 0x03, 0xa5, - 0x24, 0x0c, 0x00, 0x30, 0x8e, 0x68, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x40, 0x18, 0x21, 0x90, 0x00, 0x00, 0x20, 0x00, 0x15, 0xae, 0x50, - 0x00, 0x14, 0xae, 0x54, 0x00, 0x04, 0x26, 0x21, 0x28, 0x00, 0x00, 0x05, 0x80, - 0x06, 0x3c, 0x08, 0x55, 0xc6, 0x24, 0x4a, 0x58, 0x01, 0x0c, 0x21, 0x38, 0x00, - 0x02, 0x6c, 0x00, 0x04, 0x26, 0x03, 0x00, 0x05, 0x24, 0x05, 0x80, 0x06, 0x3c, - 0xfc, 0x5b, 0xc6, 0x24, 0x4a, 0x58, 0x01, 0x0c, 0x21, 0x38, 0x00, 0x02, 0x01, - 0x00, 0x52, 0x26, 0x68, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, - 0x42, 0x02, 0xed, 0xff, 0x40, 0x14, 0x84, 0x00, 0x10, 0x26, 0x01, 0x00, 0x73, - 0x26, 0xa4, 0x8c, 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x63, 0x02, - 0xba, 0xff, 0x40, 0x14, 0x68, 0x01, 0x31, 0x26, 0xa8, 0x9e, 0x82, 0x27, 0xd8, - 0x9e, 0x82, 0xaf, 0xc0, 0x9e, 0x84, 0x27, 0x01, 0x00, 0x05, 0x24, 0x05, 0x80, - 0x06, 0x3c, 0xbc, 0x53, 0xc6, 0x24, 0x4a, 0x58, 0x01, 0x0c, 0x21, 0x38, 0x00, - 0x00, 0x38, 0x00, 0xbf, 0x8f, 0x34, 0x00, 0xb5, 0x8f, 0x30, 0x00, 0xb4, 0x8f, - 0x2c, 0x00, 0xb3, 0x8f, 0x28, 0x00, 0xb2, 0x8f, 0x24, 0x00, 0xb1, 0x8f, 0x20, - 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x40, 0x00, 0xbd, 0x27, 0xe8, 0xff, - 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x00, 0xa0, 0x04, 0x3c, 0x30, 0x0c, 0x84, - 0x34, 0x00, 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x00, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3f, - 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x83, 0x8c, 0xff, 0x3f, - 0x02, 0x3c, 0xff, 0xff, 0x42, 0x34, 0x24, 0x18, 0x62, 0x00, 0x00, 0x80, 0x02, - 0x3c, 0x25, 0x18, 0x62, 0x00, 0x08, 0x00, 0x82, 0x94, 0x00, 0x00, 0x00, 0x00, - 0x81, 0x00, 0x42, 0x2c, 0x04, 0x00, 0x40, 0x14, 0x00, 0xa0, 0x02, 0x3c, 0x80, - 0x00, 0x02, 0x24, 0x08, 0x00, 0x82, 0xa4, 0x00, 0xa0, 0x02, 0x3c, 0x30, 0x0c, - 0x42, 0x34, 0x00, 0x00, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x44, - 0x30, 0x02, 0x00, 0x02, 0x24, 0x0f, 0x00, 0x82, 0x10, 0x03, 0x00, 0x82, 0x28, - 0x05, 0x00, 0x40, 0x10, 0x01, 0x00, 0x02, 0x24, 0x08, 0x00, 0x82, 0x10, 0x21, - 0x28, 0x60, 0x00, 0x2e, 0x58, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, - 0x02, 0x24, 0x1b, 0x00, 0x82, 0x10, 0x00, 0xa0, 0x02, 0x3c, 0x2e, 0x58, 0x01, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x03, 0x3c, 0x15, 0x58, 0x01, 0x08, - 0x3a, 0x0c, 0x63, 0x34, 0x00, 0xa0, 0x05, 0x3c, 0x3a, 0x0c, 0xa5, 0x34, 0x00, - 0xa0, 0x02, 0x3c, 0x30, 0x0c, 0x42, 0x34, 0x08, 0x00, 0x42, 0x94, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x44, 0x30, 0xff, 0xff, 0x84, 0x24, 0x09, 0x00, 0x80, - 0x04, 0x00, 0xa0, 0x02, 0x3c, 0x00, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x62, 0xa0, 0x01, 0x00, 0xa5, 0x24, 0xff, 0xff, 0x84, 0x24, 0xfa, - 0xff, 0x81, 0x04, 0x01, 0x00, 0x63, 0x24, 0x00, 0xa0, 0x02, 0x3c, 0x30, 0x0c, - 0x42, 0x34, 0x2e, 0x58, 0x01, 0x08, 0x00, 0x00, 0x40, 0xa0, 0x30, 0x0c, 0x42, - 0x34, 0x00, 0x00, 0x40, 0xa0, 0x04, 0x00, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x09, 0xf8, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xbf, 0x8f, 0x18, - 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0x89, 0x82, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x42, 0x24, 0xf0, 0xaa, 0x82, 0xaf, 0x21, 0x20, 0x00, 0x00, - 0xb0, 0x8c, 0x83, 0x27, 0x00, 0x00, 0x63, 0xac, 0x04, 0x00, 0x63, 0xac, 0x01, - 0x00, 0x84, 0x24, 0x04, 0x00, 0x82, 0x28, 0xfb, 0xff, 0x40, 0x14, 0x08, 0x00, - 0x63, 0x24, 0x21, 0x20, 0x00, 0x00, 0x80, 0x92, 0x83, 0x27, 0x00, 0x00, 0x63, - 0xac, 0x04, 0x00, 0x63, 0xac, 0x01, 0x00, 0x84, 0x24, 0x10, 0x00, 0x82, 0x28, - 0xfb, 0xff, 0x40, 0x14, 0x08, 0x00, 0x63, 0x24, 0x08, 0x00, 0xe0, 0x03, 0x00, - 0x00, 0x00, 0x00, 0xd8, 0xff, 0xbd, 0x27, 0x20, 0x00, 0xbf, 0xaf, 0x1c, 0x00, - 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, - 0xaf, 0x21, 0x80, 0x80, 0x00, 0x21, 0x88, 0xa0, 0x00, 0x21, 0x90, 0xc0, 0x00, - 0x58, 0x9a, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x16, 0x42, 0x01, 0x0c, 0x21, - 0x98, 0xe0, 0x00, 0x00, 0x00, 0x10, 0xae, 0x04, 0x00, 0x10, 0xae, 0x10, 0x00, - 0x11, 0xae, 0x08, 0x00, 0x12, 0xae, 0x0c, 0x00, 0x13, 0xae, 0x1f, 0x42, 0x01, - 0x0c, 0x21, 0x20, 0x40, 0x00, 0x20, 0x00, 0xbf, 0x8f, 0x1c, 0x00, 0xb3, 0x8f, - 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, - 0x00, 0xe0, 0x03, 0x28, 0x00, 0xbd, 0x27, 0xe8, 0xff, 0xbd, 0x27, 0x14, 0x00, - 0xbf, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x80, 0x80, 0x00, 0x58, 0x9a, 0x84, - 0x8f, 0x16, 0x42, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xac, 0x89, 0x83, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x03, 0xae, 0x04, 0x00, 0x04, 0x8e, 0x00, - 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xac, 0x04, 0x00, - 0x64, 0xac, 0x10, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x18, 0x03, - 0x00, 0xb0, 0x8c, 0x84, 0x27, 0x21, 0x18, 0x64, 0x00, 0x04, 0x00, 0x64, 0x8c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xac, 0x04, 0x00, 0x04, 0xae, 0x00, - 0x00, 0x03, 0xae, 0x04, 0x00, 0x70, 0xac, 0x1f, 0x42, 0x01, 0x0c, 0x21, 0x20, - 0x40, 0x00, 0x14, 0x00, 0xbf, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, - 0x03, 0x18, 0x00, 0xbd, 0x27, 0xe8, 0xff, 0xbd, 0x27, 0x14, 0x00, 0xbf, 0xaf, - 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x80, 0x80, 0x00, 0x58, 0x9a, 0x84, 0x8f, 0x16, - 0x42, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x8e, 0x00, 0x00, - 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xac, 0x04, 0x00, 0x64, - 0xac, 0x04, 0x00, 0x10, 0xae, 0x00, 0x00, 0x10, 0xae, 0x1f, 0x42, 0x01, 0x0c, - 0x21, 0x20, 0x40, 0x00, 0x14, 0x00, 0xbf, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, - 0x00, 0xe0, 0x03, 0x18, 0x00, 0xbd, 0x27, 0xe0, 0xff, 0xbd, 0x27, 0x18, 0x00, - 0xbf, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x80, 0x80, - 0x00, 0x58, 0x9a, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x16, 0x42, 0x01, 0x0c, - 0x21, 0x88, 0xa0, 0x00, 0x21, 0x20, 0x40, 0x00, 0x04, 0x00, 0x03, 0x8e, 0x00, - 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0xac, 0x04, 0x00, - 0x43, 0xac, 0xac, 0x89, 0x85, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x23, 0x18, 0xb1, - 0x00, 0xff, 0x3f, 0x02, 0x3c, 0xff, 0xff, 0x42, 0x34, 0x2b, 0x10, 0x43, 0x00, - 0x06, 0x00, 0x40, 0x14, 0x0f, 0x00, 0x22, 0x32, 0x14, 0x00, 0x05, 0xae, 0x10, - 0x00, 0x02, 0x8e, 0xb0, 0x8c, 0x83, 0x27, 0xb8, 0x58, 0x01, 0x08, 0xc0, 0x10, - 0x02, 0x00, 0x14, 0x00, 0x11, 0xae, 0xc0, 0x10, 0x02, 0x00, 0x80, 0x92, 0x83, - 0x27, 0x21, 0x18, 0x43, 0x00, 0x04, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x50, 0xac, 0x04, 0x00, 0x02, 0xae, 0x00, 0x00, 0x03, 0xae, 0x1f, - 0x42, 0x01, 0x0c, 0x04, 0x00, 0x70, 0xac, 0x18, 0x00, 0xbf, 0x8f, 0x14, 0x00, - 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x20, 0x00, 0xbd, - 0x27, 0xe8, 0xff, 0xbd, 0x27, 0x14, 0x00, 0xbf, 0xaf, 0x10, 0x00, 0xb0, 0xaf, - 0xf4, 0xaa, 0x90, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x21, 0x20, 0x82, 0x00, 0x14, 0x00, 0x04, 0xae, 0x58, 0x9a, - 0x84, 0x8f, 0x16, 0x42, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, 0x40, - 0x00, 0x04, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x62, 0xac, 0x04, 0x00, 0x43, 0xac, 0xac, 0x89, 0x85, 0x8f, 0x14, - 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, 0x18, 0xa3, 0x00, 0xff, 0x3f, - 0x02, 0x3c, 0xff, 0xff, 0x42, 0x34, 0x2b, 0x10, 0x43, 0x00, 0x06, 0x00, 0x40, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x05, 0xae, 0x10, 0x00, 0x02, 0x8e, - 0xb0, 0x8c, 0x83, 0x27, 0xea, 0x58, 0x01, 0x08, 0xc0, 0x10, 0x02, 0x00, 0x14, - 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x42, 0x30, 0xc0, 0x10, - 0x02, 0x00, 0x80, 0x92, 0x83, 0x27, 0x21, 0x18, 0x43, 0x00, 0x04, 0x00, 0x62, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xac, 0x04, 0x00, 0x02, 0xae, - 0x00, 0x00, 0x03, 0xae, 0x1f, 0x42, 0x01, 0x0c, 0x04, 0x00, 0x70, 0xac, 0x14, - 0x00, 0xbf, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x18, 0x00, - 0xbd, 0x27, 0xd8, 0xff, 0xbd, 0x27, 0x24, 0x00, 0xbf, 0xaf, 0x20, 0x00, 0xb4, - 0xaf, 0x1c, 0x00, 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb1, 0xaf, - 0x10, 0x00, 0xb0, 0xaf, 0x48, 0x9a, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x1f, - 0x42, 0x01, 0x0c, 0x00, 0xa0, 0x13, 0x3c, 0x10, 0x0d, 0x73, 0x36, 0x80, 0x92, - 0x94, 0x27, 0xff, 0x7f, 0x12, 0x3c, 0xff, 0xff, 0x52, 0x36, 0xb0, 0x8c, 0x91, - 0x27, 0x00, 0xa0, 0x02, 0x3c, 0x0f, 0x0c, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x40, 0x01, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x96, 0x02, 0x00, 0x63, 0x96, 0xff, 0xff, - 0x42, 0x30, 0x09, 0x00, 0x43, 0x10, 0x00, 0xa0, 0x10, 0x3c, 0x10, 0x0d, 0x10, - 0x36, 0x81, 0x43, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x96, - 0x02, 0x00, 0x03, 0x96, 0xff, 0xff, 0x42, 0x30, 0xfa, 0xff, 0x43, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x58, 0x9a, 0x84, 0x8f, 0x16, 0x42, 0x01, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x45, 0x59, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xaa, 0x82, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0xf0, 0xaa, 0x82, 0xaf, - 0x0f, 0x00, 0x42, 0x30, 0xc0, 0x10, 0x02, 0x00, 0x21, 0x30, 0x54, 0x00, 0x00, - 0x00, 0xc3, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x66, 0x10, 0x21, 0x28, - 0xc0, 0x00, 0xf0, 0xaa, 0x87, 0x8f, 0x14, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x23, 0x10, 0xe2, 0x00, 0x2b, 0x10, 0x42, 0x02, 0x10, 0x00, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xa2, 0xac, 0x04, 0x00, 0x45, 0xac, 0x10, 0x00, 0x62, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0xc0, 0x10, 0x02, 0x00, 0x21, 0x20, 0x51, 0x00, 0x04, 0x00, 0x82, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xac, 0x04, 0x00, 0x62, 0xac, - 0x00, 0x00, 0x64, 0xac, 0x41, 0x59, 0x01, 0x08, 0x04, 0x00, 0x83, 0xac, 0x21, - 0x28, 0x60, 0x00, 0x00, 0x00, 0xa3, 0x8c, 0x00, 0x00, 0x00, 0x00, 0xe7, 0xff, - 0x66, 0x14, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xaa, 0x83, 0x8f, 0xac, 0x89, 0x82, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0xd6, 0xff, 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, - 0xb0, 0x8c, 0x84, 0x27, 0xb0, 0x8c, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x1f, - 0x00, 0x44, 0x14, 0x00, 0x00, 0x00, 0x00, 0x06, 0x80, 0x04, 0x3c, 0x78, 0x90, - 0x84, 0x24, 0x06, 0x80, 0x02, 0x3c, 0x78, 0x90, 0x42, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x18, 0x00, 0x44, 0x14, 0x00, 0x00, 0x00, 0x00, 0x06, 0x80, 0x04, 0x3c, - 0x80, 0x90, 0x84, 0x24, 0x06, 0x80, 0x02, 0x3c, 0x80, 0x90, 0x42, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x11, 0x00, 0x44, 0x14, 0x00, 0x00, 0x00, 0x00, 0x06, 0x80, - 0x04, 0x3c, 0x88, 0x90, 0x84, 0x24, 0x06, 0x80, 0x02, 0x3c, 0x88, 0x90, 0x42, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x44, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x48, 0x9a, 0x84, 0x8f, 0x1f, 0x42, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x90, - 0x9e, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x90, 0x9e, - 0x82, 0xaf, 0x06, 0x59, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x82, 0xac, 0x04, 0x00, 0x44, 0xac, 0x00, 0x00, 0x63, 0xac, 0x04, - 0x00, 0x63, 0xac, 0xf4, 0xaa, 0x83, 0xaf, 0xac, 0x89, 0x90, 0x8f, 0x08, 0x00, - 0x62, 0x8c, 0x0c, 0x00, 0x64, 0x8c, 0x09, 0xf8, 0x40, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x48, 0x9a, 0x84, 0x8f, 0x1f, 0x42, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0xf4, 0xaa, 0x80, 0xaf, 0xac, 0x89, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x23, - 0x80, 0x50, 0x00, 0x32, 0x00, 0x02, 0x2e, 0x02, 0x00, 0x40, 0x14, 0x21, 0x18, - 0x00, 0x02, 0x31, 0x00, 0x03, 0x24, 0x00, 0xab, 0x82, 0x27, 0x80, 0x18, 0x03, - 0x00, 0x21, 0x18, 0x62, 0x00, 0x21, 0x20, 0x00, 0x02, 0x32, 0x00, 0x82, 0x2c, - 0x03, 0x00, 0x40, 0x14, 0x80, 0x10, 0x04, 0x00, 0x31, 0x00, 0x04, 0x24, 0x80, - 0x10, 0x04, 0x00, 0x21, 0x08, 0x5c, 0x00, 0x00, 0xab, 0x22, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x06, 0x59, 0x01, 0x08, 0x00, 0x00, 0x62, - 0xac, 0x24, 0x00, 0xbf, 0x8f, 0x20, 0x00, 0xb4, 0x8f, 0x1c, 0x00, 0xb3, 0x8f, - 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, - 0x00, 0xe0, 0x03, 0x28, 0x00, 0xbd, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, - 0xaf, 0x00, 0xa0, 0x03, 0x3c, 0x20, 0x0c, 0x63, 0x90, 0x01, 0x00, 0x02, 0x24, - 0x09, 0x00, 0x62, 0x14, 0x04, 0xa2, 0x03, 0x3c, 0x85, 0x1e, 0x02, 0x24, 0x00, - 0x00, 0x62, 0xac, 0x04, 0xa2, 0x03, 0x3c, 0x28, 0x00, 0x63, 0x34, 0x03, 0x00, - 0x02, 0x3c, 0xff, 0xff, 0x42, 0x34, 0xb1, 0x59, 0x01, 0x08, 0x00, 0x00, 0x62, - 0xac, 0xb5, 0x59, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xbf, 0x8f, - 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe0, - 0xff, 0xbd, 0x27, 0x1c, 0x00, 0xbf, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, - 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x90, 0x00, 0x00, 0x05, 0x80, 0x11, - 0x3c, 0x20, 0x7e, 0x31, 0x26, 0x21, 0x80, 0x00, 0x00, 0xd0, 0xab, 0x80, 0xaf, - 0x21, 0x28, 0x00, 0x00, 0x21, 0x20, 0x20, 0x02, 0x00, 0x00, 0x82, 0x94, 0x02, - 0x00, 0x83, 0x90, 0x04, 0xa2, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0x00, 0x00, - 0x23, 0xa0, 0xd0, 0xab, 0x80, 0xaf, 0x01, 0x00, 0xa5, 0x24, 0x04, 0x00, 0xa2, - 0x28, 0xf7, 0xff, 0x40, 0x14, 0x04, 0x00, 0x84, 0x24, 0x00, 0x00, 0x82, 0x94, - 0x04, 0xa2, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0x00, 0x00, 0x22, 0x90, 0x00, - 0x00, 0x00, 0x00, 0x40, 0x00, 0x42, 0x30, 0x08, 0x00, 0x40, 0x10, 0x64, 0x00, - 0x02, 0x2a, 0x04, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x84, - 0x27, 0x24, 0x40, 0x01, 0x0c, 0x61, 0x00, 0x05, 0x24, 0xbe, 0x59, 0x01, 0x08, - 0x01, 0x00, 0x10, 0x26, 0x05, 0x00, 0x52, 0x26, 0x0f, 0x00, 0x42, 0x2a, 0xe0, - 0xff, 0x40, 0x14, 0x14, 0x00, 0x31, 0x26, 0x1c, 0x00, 0xbf, 0x8f, 0x18, 0x00, - 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, - 0x03, 0x20, 0x00, 0xbd, 0x27, 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, - 0x06, 0xa2, 0x02, 0x3c, 0x00, 0x00, 0x40, 0xa4, 0x00, 0xa0, 0x03, 0x3c, 0x20, - 0x0c, 0x63, 0x90, 0x01, 0x00, 0x02, 0x24, 0x18, 0x00, 0x62, 0x14, 0x2b, 0x00, - 0x02, 0x3c, 0x70, 0xad, 0x83, 0x8f, 0x77, 0x00, 0x02, 0x3c, 0x88, 0x37, 0x42, - 0x34, 0x21, 0x18, 0x62, 0x00, 0x31, 0x01, 0x02, 0x3c, 0xff, 0x2c, 0x42, 0x34, - 0x2b, 0x10, 0x43, 0x00, 0x23, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xce, - 0xfe, 0x05, 0x3c, 0x00, 0xd3, 0xa5, 0x34, 0x31, 0x01, 0x04, 0x3c, 0xff, 0x2c, - 0x84, 0x34, 0xac, 0x89, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, - 0x24, 0xac, 0x89, 0x82, 0xaf, 0x21, 0x18, 0x65, 0x00, 0x2b, 0x10, 0x83, 0x00, - 0x17, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x59, 0x01, 0x08, 0x00, - 0x00, 0x00, 0x00, 0x70, 0xad, 0x83, 0x8f, 0xe8, 0xf5, 0x42, 0x34, 0x21, 0x18, - 0x62, 0x00, 0x70, 0x00, 0x02, 0x3c, 0xff, 0x7f, 0x42, 0x34, 0x2b, 0x10, 0x43, - 0x00, 0x0d, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x8f, 0xff, 0x05, 0x3c, - 0x00, 0x80, 0xa5, 0x34, 0x70, 0x00, 0x04, 0x3c, 0xff, 0x7f, 0x84, 0x34, 0xac, - 0x89, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0xac, 0x89, - 0x82, 0xaf, 0x21, 0x18, 0x65, 0x00, 0x2b, 0x10, 0x83, 0x00, 0xf9, 0xff, 0x40, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x70, 0xad, 0x83, 0xaf, 0x00, 0xa0, 0x03, 0x3c, - 0x20, 0x0c, 0x63, 0x90, 0x01, 0x00, 0x02, 0x24, 0x32, 0x00, 0x62, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x90, 0x80, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x00, - 0x40, 0x10, 0x04, 0xa2, 0x03, 0x3c, 0x3c, 0x00, 0x63, 0x34, 0x00, 0x00, 0x62, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x44, 0x30, 0x00, 0x00, 0x62, 0x8c, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x43, 0x30, 0x23, 0x10, 0x83, 0x00, 0xff, - 0xff, 0x42, 0x30, 0x80, 0x00, 0x42, 0x2c, 0x15, 0x00, 0x40, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xa0, 0x05, 0x3c, 0x14, 0x00, 0xa5, 0x34, 0x04, 0xa2, 0x06, - 0x3c, 0x3c, 0x00, 0xc6, 0x34, 0x00, 0x00, 0xa2, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, 0xa2, 0xac, 0x00, 0x00, 0xa2, 0x8c, 0x00, - 0x00, 0xc2, 0x8c, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x44, 0x30, 0x00, 0x00, - 0xc2, 0x8c, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x43, 0x30, 0x23, 0x10, 0x83, - 0x00, 0xff, 0xff, 0x42, 0x30, 0x80, 0x00, 0x42, 0x2c, 0xf1, 0xff, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x74, 0xad, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x48, - 0x00, 0x40, 0x10, 0x23, 0x18, 0x44, 0x00, 0xff, 0xff, 0x63, 0x30, 0x40, 0x11, - 0x03, 0x00, 0x21, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x23, 0x10, 0x43, - 0x00, 0x00, 0x11, 0x02, 0x00, 0x21, 0x18, 0x62, 0x00, 0x82, 0x5a, 0x01, 0x08, - 0x02, 0x1d, 0x03, 0x00, 0x90, 0x80, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x3d, - 0x00, 0x40, 0x10, 0x00, 0xa0, 0x02, 0x3c, 0x04, 0xa2, 0x05, 0x3c, 0x80, 0x00, - 0x07, 0x24, 0x00, 0xa0, 0x06, 0x3c, 0x5d, 0x5a, 0x01, 0x08, 0x14, 0x00, 0xc6, - 0x34, 0x00, 0x00, 0xc2, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, - 0x00, 0x00, 0xc2, 0xac, 0x00, 0x00, 0xc2, 0x8c, 0x0c, 0x00, 0xa7, 0xa0, 0xd0, - 0xab, 0x80, 0xaf, 0x08, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, - 0x44, 0x30, 0x08, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x02, - 0x00, 0x25, 0x20, 0x82, 0x00, 0xd0, 0xab, 0x80, 0xaf, 0x0c, 0x00, 0xa7, 0xa0, - 0xd0, 0xab, 0x80, 0xaf, 0x08, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, 0x00, 0xff, - 0x00, 0x43, 0x30, 0x08, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, - 0x02, 0x00, 0x25, 0x18, 0x62, 0x00, 0x23, 0x10, 0x83, 0x00, 0xff, 0xff, 0x42, - 0x30, 0x80, 0x00, 0x42, 0x2c, 0xe4, 0xff, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x74, 0xad, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x40, 0x10, 0x23, - 0x18, 0x44, 0x00, 0xff, 0xff, 0x63, 0x30, 0x80, 0x10, 0x03, 0x00, 0x21, 0x10, - 0x43, 0x00, 0x00, 0x11, 0x02, 0x00, 0x23, 0x10, 0x43, 0x00, 0xc0, 0x18, 0x02, - 0x00, 0x21, 0x10, 0x43, 0x00, 0xc0, 0x10, 0x02, 0x00, 0x02, 0x1d, 0x02, 0x00, - 0x64, 0x00, 0x62, 0x2c, 0x02, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x63, - 0x00, 0x03, 0x24, 0xe0, 0xab, 0x82, 0x27, 0x80, 0x18, 0x03, 0x00, 0x21, 0x18, - 0x62, 0x00, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, - 0x24, 0x00, 0x00, 0x62, 0xac, 0x74, 0xad, 0x84, 0xaf, 0x00, 0xa0, 0x02, 0x3c, - 0x00, 0x00, 0x42, 0x8c, 0x00, 0xa0, 0x03, 0x3c, 0x10, 0x0c, 0x63, 0x94, 0x00, - 0x00, 0x00, 0x00, 0x0c, 0x00, 0x60, 0x10, 0x01, 0x00, 0x02, 0x24, 0x05, 0x00, - 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x40, 0x01, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0xa0, 0x5a, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x94, 0x80, 0x84, 0x27, - 0x24, 0x40, 0x01, 0x0c, 0xdb, 0x02, 0x05, 0x24, 0x00, 0xa0, 0x01, 0x3c, 0x10, - 0x0c, 0x20, 0xa4, 0x10, 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, - 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x02, 0x3c, - 0x40, 0x00, 0x42, 0x34, 0x05, 0x00, 0x82, 0x14, 0x10, 0x00, 0x0a, 0x24, 0x08, - 0x00, 0x0a, 0x24, 0x00, 0x01, 0x02, 0x24, 0xb2, 0x5a, 0x01, 0x08, 0x00, 0x04, - 0x09, 0x24, 0x00, 0x02, 0x02, 0x24, 0x00, 0x08, 0x09, 0x24, 0xff, 0xff, 0x19, - 0x3c, 0x00, 0x10, 0x39, 0x37, 0x05, 0x80, 0x18, 0x3c, 0xf0, 0x7d, 0x18, 0x27, - 0x05, 0xa2, 0x08, 0x3c, 0x25, 0x58, 0x42, 0x01, 0x27, 0x70, 0x0b, 0x00, 0x27, - 0x68, 0x02, 0x00, 0xe1, 0x00, 0x0f, 0x3c, 0x27, 0x60, 0x09, 0x00, 0x00, 0x00, - 0xa7, 0x94, 0x00, 0x00, 0x00, 0x00, 0x21, 0x18, 0xf9, 0x00, 0x09, 0x00, 0x62, - 0x2c, 0x2e, 0x00, 0x40, 0x10, 0x80, 0x10, 0x03, 0x00, 0x21, 0x10, 0x58, 0x00, - 0x00, 0x00, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x54, 0x92, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xeb, 0x5a, - 0x01, 0x08, 0x24, 0x10, 0xc2, 0x01, 0x54, 0x92, 0x82, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x24, 0x10, 0xa2, 0x01, 0xeb, 0x5a, 0x01, 0x08, 0x25, 0x10, 0x4a, 0x00, - 0x54, 0x92, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xeb, 0x5a, 0x01, 0x08, 0x25, - 0x10, 0x62, 0x01, 0x02, 0x00, 0xa3, 0x94, 0x00, 0x00, 0xc2, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x18, 0x00, 0x62, 0x00, 0x12, 0x18, 0x00, 0x00, 0x42, 0x10, 0x03, - 0x00, 0x21, 0x10, 0x4f, 0x00, 0x1b, 0x00, 0x43, 0x00, 0x02, 0x00, 0x60, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x07, 0x00, 0x12, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf3, 0x5a, 0x01, 0x08, 0x29, 0x00, - 0x82, 0xa0, 0x54, 0x92, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xeb, 0x5a, 0x01, - 0x08, 0x24, 0x10, 0x82, 0x01, 0x54, 0x92, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x25, 0x10, 0x22, 0x01, 0x54, 0x92, 0x82, 0xaf, 0x00, 0x00, 0x02, 0xa5, 0xbc, - 0x5a, 0x01, 0x08, 0x04, 0x00, 0xa5, 0x24, 0x21, 0x18, 0x87, 0x00, 0x02, 0x00, - 0xa2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0xa0, 0xbc, 0x5a, 0x01, - 0x08, 0x04, 0x00, 0xa5, 0x24, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, - 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x00, 0xa2, 0x04, 0x3c, 0x05, - 0x80, 0x05, 0x3c, 0x60, 0x7e, 0xa5, 0x24, 0xa8, 0x5a, 0x01, 0x0c, 0x21, 0x30, - 0x00, 0x00, 0x00, 0xa2, 0x04, 0x3c, 0x40, 0x00, 0x84, 0x34, 0x05, 0x80, 0x05, - 0x3c, 0xb8, 0x7e, 0xa5, 0x24, 0xa8, 0x5a, 0x01, 0x0c, 0x21, 0x30, 0x00, 0x00, - 0x00, 0xa2, 0x04, 0x3c, 0x00, 0x01, 0x84, 0x34, 0x05, 0x80, 0x05, 0x3c, 0x0c, - 0x7f, 0xa5, 0x24, 0xa8, 0x5a, 0x01, 0x0c, 0x21, 0x30, 0x00, 0x00, 0x00, 0xa2, - 0x04, 0x3c, 0x40, 0x01, 0x84, 0x34, 0x05, 0x80, 0x05, 0x3c, 0x18, 0x7f, 0xa5, - 0x24, 0xa8, 0x5a, 0x01, 0x0c, 0x21, 0x30, 0x00, 0x00, 0x00, 0xa2, 0x04, 0x3c, - 0x80, 0x00, 0x84, 0x34, 0x05, 0x80, 0x05, 0x3c, 0xb8, 0x7e, 0xa5, 0x24, 0xa8, - 0x5a, 0x01, 0x0c, 0x21, 0x30, 0x00, 0x00, 0x00, 0xa2, 0x04, 0x3c, 0x80, 0x01, - 0x84, 0x34, 0x05, 0x80, 0x05, 0x3c, 0x0c, 0x7f, 0xa5, 0x24, 0xa8, 0x5a, 0x01, - 0x0c, 0x21, 0x30, 0x00, 0x00, 0x00, 0xa2, 0x04, 0x3c, 0xc0, 0x01, 0x84, 0x34, - 0x05, 0x80, 0x05, 0x3c, 0x18, 0x7f, 0xa5, 0x24, 0xa8, 0x5a, 0x01, 0x0c, 0x21, - 0x30, 0x00, 0x00, 0x10, 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, - 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xd8, 0xff, 0xbd, 0x27, 0x20, 0x00, 0xbf, - 0xaf, 0x1c, 0x00, 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb1, 0xaf, - 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x98, 0x80, 0x00, 0x21, 0x88, 0xa0, 0x00, 0x02, - 0x00, 0x60, 0x16, 0x04, 0x00, 0x12, 0x24, 0x02, 0x00, 0x12, 0x24, 0x4e, 0x00, - 0xc2, 0x2c, 0x03, 0x00, 0x40, 0x10, 0x4e, 0x00, 0x22, 0x2e, 0x05, 0x00, 0x40, - 0x14, 0x40, 0x80, 0x11, 0x00, 0x6c, 0x81, 0x84, 0x27, 0x24, 0x40, 0x01, 0x0c, - 0x6e, 0x02, 0x05, 0x24, 0x40, 0x80, 0x11, 0x00, 0x21, 0x80, 0x11, 0x02, 0x80, - 0x80, 0x10, 0x00, 0x06, 0x80, 0x02, 0x3c, 0x18, 0x80, 0x42, 0x24, 0x21, 0x80, - 0x02, 0x02, 0x80, 0x11, 0x13, 0x00, 0x00, 0xa2, 0x04, 0x3c, 0x40, 0x00, 0x84, - 0x34, 0x00, 0x00, 0x05, 0x8e, 0x04, 0x00, 0x06, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0xa8, 0x5a, 0x01, 0x0c, 0x21, 0x20, 0x44, 0x00, 0x08, 0x00, 0x02, 0x96, 0x00, - 0x00, 0x00, 0x00, 0x07, 0x00, 0x40, 0x10, 0x05, 0xa2, 0x03, 0x3c, 0x54, 0x92, - 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x25, 0x10, 0x42, 0x02, 0x54, 0x92, 0x82, - 0xaf, 0x58, 0x5b, 0x01, 0x08, 0x00, 0x00, 0x62, 0xa4, 0x05, 0xa2, 0x02, 0x3c, - 0x27, 0x18, 0x12, 0x00, 0x54, 0x92, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x24, - 0x18, 0x64, 0x00, 0x54, 0x92, 0x83, 0xaf, 0x00, 0x00, 0x43, 0xa4, 0x20, 0x00, - 0xbf, 0x8f, 0x1c, 0x00, 0xb3, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, - 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x28, 0x00, 0xbd, 0x27, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x88, 0x8c, 0x40, 0x00, 0x87, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x40, 0x10, 0x07, 0x00, 0x21, 0x10, 0x47, 0x00, 0x80, 0x10, - 0x02, 0x00, 0x21, 0x10, 0x47, 0x00, 0x80, 0x10, 0x02, 0x00, 0x1c, 0x00, 0x83, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x43, 0x00, 0x04, 0x00, 0x45, 0xac, - 0x08, 0x00, 0x46, 0xa4, 0x80, 0x00, 0x03, 0x24, 0x0a, 0x00, 0x43, 0xa0, 0x02, - 0x00, 0x42, 0x94, 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x02, 0xa5, 0x60, 0x00, - 0x02, 0x91, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x42, 0x30, 0x07, 0x00, 0x40, - 0x10, 0x00, 0xa0, 0x03, 0x3c, 0x78, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x7f, 0x5b, 0x01, 0x08, 0x00, - 0x00, 0x62, 0xac, 0x02, 0x00, 0x02, 0x24, 0x60, 0x00, 0x02, 0xa1, 0x01, 0x00, - 0xe7, 0x24, 0x08, 0x00, 0xe2, 0x28, 0x02, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x21, 0x38, 0x00, 0x00, 0x8c, 0x00, 0x82, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x42, 0x24, 0x8c, 0x00, 0x82, 0xac, 0x88, 0x00, 0x82, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x21, 0x10, 0xc2, 0x00, 0x88, 0x00, 0x82, 0xac, 0x40, 0x00, - 0x87, 0xac, 0xac, 0x89, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xe0, - 0x03, 0x78, 0x00, 0x82, 0xac, 0x04, 0x00, 0x86, 0x8c, 0x08, 0x00, 0x85, 0x8c, - 0x11, 0x00, 0x02, 0x24, 0x18, 0x00, 0xc2, 0xa0, 0x01, 0x00, 0x02, 0x24, 0x29, - 0x00, 0xa2, 0xa0, 0x38, 0x00, 0x83, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, - 0x03, 0x00, 0x21, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x18, 0x00, 0x83, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x43, 0x00, 0x02, 0x00, 0x42, 0x24, - 0x10, 0x00, 0xa2, 0xa4, 0x02, 0x00, 0x02, 0x24, 0x20, 0x00, 0xa2, 0xa0, 0x12, - 0x00, 0x02, 0x24, 0x08, 0x00, 0xe0, 0x03, 0x18, 0x00, 0xc2, 0xa0, 0xc0, 0xff, - 0xbd, 0x27, 0x3c, 0x00, 0xbf, 0xaf, 0x38, 0x00, 0xbe, 0xaf, 0x34, 0x00, 0xb7, - 0xaf, 0x30, 0x00, 0xb6, 0xaf, 0x2c, 0x00, 0xb5, 0xaf, 0x28, 0x00, 0xb4, 0xaf, - 0x24, 0x00, 0xb3, 0xaf, 0x20, 0x00, 0xb2, 0xaf, 0x1c, 0x00, 0xb1, 0xaf, 0x18, - 0x00, 0xb0, 0xaf, 0x21, 0x90, 0x80, 0x00, 0x08, 0x00, 0x47, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x10, 0x00, 0xa7, 0xaf, 0x34, 0x00, 0x44, 0x8e, 0x30, 0x00, 0x42, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x82, 0x10, 0x40, 0x18, 0x04, 0x00, - 0x24, 0x00, 0x42, 0x8e, 0x21, 0x18, 0x64, 0x00, 0xc0, 0x18, 0x03, 0x00, 0x21, - 0x18, 0x62, 0x00, 0x10, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, - 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x06, 0x24, 0x30, 0x00, 0x45, - 0x8e, 0x01, 0x00, 0x84, 0x24, 0x02, 0x00, 0x86, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x21, 0x20, 0x00, 0x00, 0x0a, 0x00, 0x85, 0x10, 0x40, 0x18, 0x04, 0x00, 0x24, - 0x00, 0x42, 0x8e, 0x21, 0x18, 0x64, 0x00, 0xc0, 0x18, 0x03, 0x00, 0x21, 0x18, - 0x62, 0x00, 0x10, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0xf4, 0xff, 0x40, - 0x10, 0x01, 0x00, 0x84, 0x24, 0xff, 0xff, 0x84, 0x24, 0x34, 0x00, 0x44, 0xae, - 0x41, 0x00, 0x02, 0x24, 0x10, 0x00, 0xa7, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x20, - 0x00, 0xe2, 0xa0, 0x10, 0x00, 0xe2, 0x94, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x5e, 0x30, 0x38, 0x00, 0x54, 0x8e, 0x3c, 0x00, 0x57, 0x8e, 0x18, 0x00, 0x50, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x32, 0x23, 0x88, 0xc2, 0x03, - 0xaa, 0xaa, 0x02, 0x3c, 0xab, 0xaa, 0x42, 0x34, 0x19, 0x00, 0x22, 0x02, 0x10, - 0x38, 0x00, 0x00, 0xc2, 0x88, 0x07, 0x00, 0x61, 0x00, 0x22, 0x2e, 0x05, 0x00, - 0x40, 0x14, 0x40, 0x10, 0x11, 0x00, 0x80, 0x81, 0x84, 0x27, 0x24, 0x40, 0x01, - 0x0c, 0x09, 0x01, 0x05, 0x24, 0x40, 0x10, 0x11, 0x00, 0x21, 0x10, 0x51, 0x00, - 0x80, 0x10, 0x02, 0x00, 0x21, 0x10, 0x02, 0x02, 0x02, 0x00, 0x42, 0x24, 0xff, - 0xff, 0x42, 0x30, 0x05, 0x00, 0xc2, 0x13, 0x23, 0x28, 0x34, 0x02, 0x80, 0x81, - 0x84, 0x27, 0x24, 0x40, 0x01, 0x0c, 0x0a, 0x01, 0x05, 0x24, 0x23, 0x28, 0x34, - 0x02, 0x61, 0x00, 0xa5, 0x24, 0xd0, 0x51, 0x04, 0x3c, 0xaf, 0x7e, 0x84, 0x34, - 0x19, 0x00, 0xa4, 0x00, 0x10, 0x18, 0x00, 0x00, 0x23, 0x10, 0xa3, 0x00, 0x42, - 0x10, 0x02, 0x00, 0x21, 0x18, 0x62, 0x00, 0x82, 0x19, 0x03, 0x00, 0x40, 0x10, - 0x03, 0x00, 0x21, 0x10, 0x43, 0x00, 0x40, 0x11, 0x02, 0x00, 0x21, 0x10, 0x43, - 0x00, 0x23, 0x28, 0xa2, 0x00, 0x23, 0x18, 0xf4, 0x02, 0x61, 0x00, 0x63, 0x24, - 0x19, 0x00, 0x64, 0x00, 0x10, 0x20, 0x00, 0x00, 0x23, 0x10, 0x64, 0x00, 0x42, - 0x10, 0x02, 0x00, 0x21, 0x20, 0x82, 0x00, 0x82, 0x21, 0x04, 0x00, 0x40, 0x10, - 0x04, 0x00, 0x21, 0x10, 0x44, 0x00, 0x40, 0x11, 0x02, 0x00, 0x21, 0x10, 0x44, - 0x00, 0x23, 0x18, 0x62, 0x00, 0x2b, 0x18, 0x65, 0x00, 0x05, 0x00, 0x60, 0x10, - 0x21, 0xb0, 0x00, 0x00, 0x80, 0x81, 0x84, 0x27, 0x24, 0x40, 0x01, 0x0c, 0x0b, - 0x01, 0x05, 0x24, 0x21, 0xb0, 0x00, 0x00, 0x40, 0x10, 0x14, 0x00, 0x21, 0x10, - 0x54, 0x00, 0x80, 0x10, 0x02, 0x00, 0x18, 0x00, 0x43, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x21, 0x80, 0x43, 0x00, 0x04, 0x00, 0x15, 0x8e, 0x21, 0x98, 0x00, 0x00, - 0x02, 0x00, 0x02, 0x26, 0xff, 0xff, 0x42, 0x30, 0xad, 0x00, 0x5e, 0x10, 0x06, - 0x00, 0xc2, 0x2a, 0x05, 0x00, 0x97, 0x12, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, - 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x80, 0x81, 0x84, 0x27, 0x24, 0x40, 0x01, 0x0c, 0x1d, 0x01, 0x05, 0x24, - 0x01, 0x00, 0x94, 0x26, 0x61, 0x00, 0x82, 0x2a, 0x02, 0x00, 0x40, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x21, 0xa0, 0x00, 0x00, 0x08, 0x00, 0x02, 0x96, 0x0a, 0x00, - 0x10, 0x92, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x16, 0x21, 0x98, 0x62, - 0x02, 0x00, 0x01, 0x07, 0x24, 0x05, 0x00, 0x47, 0x10, 0x40, 0x10, 0x14, 0x00, - 0x80, 0x81, 0x84, 0x27, 0x24, 0x40, 0x01, 0x0c, 0x25, 0x01, 0x05, 0x24, 0x40, - 0x10, 0x14, 0x00, 0x21, 0x10, 0x54, 0x00, 0x80, 0x10, 0x02, 0x00, 0x18, 0x00, - 0x43, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x22, 0x5c, 0x01, 0x08, 0x21, 0x80, 0x43, - 0x00, 0x80, 0x00, 0x02, 0x32, 0x04, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x81, 0x84, 0x27, 0x24, 0x40, 0x01, 0x0c, 0x2a, 0x01, 0x05, 0x24, 0xc0, - 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x62, 0x02, 0xc0, 0x00, - 0x42, 0xae, 0xb8, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, - 0x24, 0xb8, 0x00, 0x42, 0xae, 0x7c, 0x00, 0x02, 0x32, 0x2d, 0x00, 0x40, 0x10, - 0x40, 0x00, 0x02, 0x32, 0x06, 0x00, 0x40, 0x10, 0x00, 0xa0, 0x03, 0x3c, 0x8c, - 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, 0x20, 0x00, 0x02, 0x32, 0x06, 0x00, 0x40, - 0x10, 0x00, 0xa0, 0x03, 0x3c, 0x90, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, 0x10, - 0x00, 0x02, 0x32, 0x06, 0x00, 0x40, 0x10, 0x00, 0xa0, 0x03, 0x3c, 0x9c, 0x0d, - 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, - 0x24, 0x00, 0x00, 0x62, 0xac, 0x08, 0x00, 0x02, 0x32, 0x06, 0x00, 0x40, 0x10, - 0x00, 0xa0, 0x03, 0x3c, 0x94, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, 0x04, 0x00, - 0x02, 0x32, 0x06, 0x00, 0x40, 0x10, 0x00, 0xa0, 0x03, 0x3c, 0x98, 0x0d, 0x63, - 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, - 0x00, 0x00, 0x62, 0xac, 0xc8, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x42, 0x24, 0xcf, 0x5c, 0x01, 0x08, 0xc8, 0x00, 0x42, 0xae, 0x00, 0x00, - 0xa3, 0x8e, 0x22, 0x33, 0x02, 0x3c, 0x00, 0x11, 0x42, 0x34, 0x10, 0x00, 0x62, - 0x14, 0x21, 0x30, 0xb3, 0x02, 0x00, 0x9f, 0xc6, 0x24, 0x20, 0x00, 0x45, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x30, 0xc5, 0x00, 0x03, 0x00, 0xc0, 0x18, 0x21, - 0x20, 0xa0, 0x00, 0x58, 0x41, 0x01, 0x0c, 0x00, 0x61, 0xa5, 0x24, 0x21, 0x20, - 0xa0, 0x02, 0x85, 0x51, 0x01, 0x0c, 0x21, 0x28, 0x60, 0x02, 0x3b, 0x00, 0x40, - 0x10, 0x00, 0xa0, 0x03, 0x3c, 0xb6, 0x5c, 0x01, 0x08, 0xfc, 0x0d, 0x63, 0x34, - 0xec, 0xaa, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x40, 0x10, 0x00, - 0x00, 0x00, 0x00, 0xf8, 0x4e, 0x01, 0x0c, 0x64, 0x00, 0x04, 0x24, 0xec, 0xaa, - 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x18, 0x62, 0x00, 0x03, 0x00, 0x60, - 0x14, 0x00, 0xa0, 0x03, 0x3c, 0xb6, 0x5c, 0x01, 0x08, 0xd8, 0x0d, 0x63, 0x34, - 0x30, 0x00, 0x50, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x10, 0x00, 0x21, - 0x10, 0x50, 0x00, 0xc0, 0x10, 0x02, 0x00, 0x24, 0x00, 0x43, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x21, 0x88, 0x43, 0x00, 0x01, 0x00, 0x10, 0x26, 0x40, 0x00, 0x02, - 0x24, 0x02, 0x00, 0x02, 0x16, 0x00, 0x00, 0x00, 0x00, 0x21, 0x80, 0x00, 0x00, - 0x34, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x02, 0x16, 0x00, - 0xa0, 0x03, 0x3c, 0xb0, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0xcf, 0x5c, 0x01, 0x08, 0x00, 0x00, 0x62, - 0xac, 0x10, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x80, 0x81, 0x84, 0x27, 0x24, 0x40, 0x01, 0x0c, 0x7f, - 0x01, 0x05, 0x24, 0x38, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, - 0x22, 0xae, 0x08, 0x00, 0x35, 0xae, 0x14, 0x00, 0x33, 0xae, 0x21, 0x20, 0x40, - 0x02, 0x4f, 0x54, 0x01, 0x0c, 0x21, 0x28, 0x20, 0x02, 0x10, 0x00, 0x22, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x30, - 0x00, 0x50, 0xae, 0x38, 0x00, 0x54, 0xae, 0x1a, 0x5c, 0x01, 0x08, 0x01, 0x00, - 0xd6, 0x26, 0x03, 0x00, 0x40, 0x14, 0x80, 0x10, 0x16, 0x00, 0x05, 0x00, 0x16, - 0x24, 0x80, 0x10, 0x16, 0x00, 0x00, 0xa0, 0x03, 0x3c, 0x48, 0x0d, 0x63, 0x34, - 0x21, 0x10, 0x43, 0x00, 0x00, 0x00, 0x43, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x63, 0x24, 0x23, 0xb0, 0x97, 0x02, 0x02, 0x00, 0xc1, 0x06, 0x00, 0x00, - 0x43, 0xac, 0x61, 0x00, 0xd6, 0x26, 0x61, 0x00, 0xc2, 0x2a, 0x04, 0x00, 0x40, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x80, 0x81, 0x84, 0x27, 0x24, 0x40, 0x01, 0x0c, - 0xa0, 0x01, 0x05, 0x24, 0x80, 0xad, 0x82, 0x27, 0x80, 0x18, 0x16, 0x00, 0x21, - 0x18, 0x62, 0x00, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, 0x30, 0x00, 0x42, 0x8e, 0x34, 0x00, 0x44, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x44, 0x10, 0x40, 0x10, 0x04, 0x00, - 0x24, 0x00, 0x43, 0x8e, 0x21, 0x10, 0x44, 0x00, 0xc0, 0x10, 0x02, 0x00, 0x21, - 0x10, 0x43, 0x00, 0x0c, 0x00, 0x57, 0x8c, 0xfe, 0x5c, 0x01, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x38, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, - 0x10, 0x60, 0x00, 0x17, 0x24, 0xff, 0xff, 0x57, 0x24, 0x3c, 0x00, 0x42, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0xe2, 0x12, 0x40, 0x10, 0x17, 0x00, 0x21, - 0x10, 0x57, 0x00, 0x80, 0x10, 0x02, 0x00, 0x18, 0x00, 0x43, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x21, 0x10, 0x43, 0x00, 0x02, 0x00, 0x42, 0x24, 0x10, 0x00, 0xa7, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0xe2, 0xa4, 0x3c, 0x00, 0x57, 0xae, - 0x10, 0x00, 0xa7, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xe2, 0x90, 0x00, - 0x00, 0x00, 0x00, 0x22, 0x00, 0x42, 0x30, 0x02, 0x00, 0x03, 0x24, 0x0a, 0x00, - 0x43, 0x10, 0x00, 0xa0, 0x02, 0x3c, 0x80, 0x0d, 0x42, 0x34, 0x00, 0x00, 0x43, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x63, 0x24, 0x00, 0x00, 0x43, 0xac, - 0x21, 0x00, 0x02, 0x24, 0x20, 0x00, 0xe2, 0xa0, 0x91, 0x5b, 0x01, 0x0c, 0x21, - 0x20, 0x40, 0x02, 0x3c, 0x00, 0xbf, 0x8f, 0x38, 0x00, 0xbe, 0x8f, 0x34, 0x00, - 0xb7, 0x8f, 0x30, 0x00, 0xb6, 0x8f, 0x2c, 0x00, 0xb5, 0x8f, 0x28, 0x00, 0xb4, - 0x8f, 0x24, 0x00, 0xb3, 0x8f, 0x20, 0x00, 0xb2, 0x8f, 0x1c, 0x00, 0xb1, 0x8f, - 0x18, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x40, 0x00, 0xbd, 0x27, 0xd0, - 0xff, 0xbd, 0x27, 0x28, 0x00, 0xbf, 0xaf, 0x24, 0x00, 0xb5, 0xaf, 0x20, 0x00, - 0xb4, 0xaf, 0x1c, 0x00, 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb1, - 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x88, 0x80, 0x00, 0x00, 0xa0, 0x02, 0x3c, - 0x44, 0x0d, 0x42, 0x34, 0x00, 0x00, 0x43, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x63, 0x24, 0x00, 0x00, 0x43, 0xac, 0x04, 0x00, 0x24, 0x8e, 0x08, 0x00, - 0x25, 0x8e, 0x04, 0x00, 0x82, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x42, - 0x30, 0x08, 0x00, 0x40, 0x10, 0x00, 0xa0, 0x02, 0x3c, 0xa4, 0x0d, 0x42, 0x34, - 0x00, 0x00, 0x43, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x63, 0x24, 0x00, - 0x00, 0x43, 0xac, 0x00, 0x80, 0x02, 0x34, 0x04, 0x00, 0x82, 0xa4, 0x41, 0x00, - 0x02, 0x24, 0x60, 0x00, 0xa2, 0xa0, 0x50, 0x00, 0xa2, 0x94, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x55, 0x30, 0x44, 0x00, 0x33, 0x8e, 0x40, 0x00, 0x34, 0x8e, - 0x1c, 0x00, 0x30, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x32, 0x23, - 0x90, 0xa2, 0x02, 0xc4, 0x4e, 0x02, 0x3c, 0x4f, 0xec, 0x42, 0x34, 0x19, 0x00, - 0x42, 0x02, 0x10, 0x30, 0x00, 0x00, 0x02, 0x91, 0x06, 0x00, 0x08, 0x00, 0x42, - 0x2e, 0x05, 0x00, 0x40, 0x14, 0x40, 0x10, 0x12, 0x00, 0x80, 0x81, 0x84, 0x27, - 0x24, 0x40, 0x01, 0x0c, 0x01, 0x02, 0x05, 0x24, 0x40, 0x10, 0x12, 0x00, 0x21, - 0x10, 0x52, 0x00, 0x80, 0x10, 0x02, 0x00, 0x21, 0x10, 0x52, 0x00, 0x80, 0x10, - 0x02, 0x00, 0x21, 0x10, 0x02, 0x02, 0x02, 0x00, 0x42, 0x24, 0xff, 0xff, 0x42, - 0x30, 0x05, 0x00, 0xa2, 0x12, 0x23, 0x18, 0x53, 0x02, 0x80, 0x81, 0x84, 0x27, - 0x24, 0x40, 0x01, 0x0c, 0x03, 0x02, 0x05, 0x24, 0x23, 0x18, 0x53, 0x02, 0x08, - 0x00, 0x63, 0x24, 0x07, 0x00, 0x63, 0x30, 0x23, 0x10, 0x93, 0x02, 0x08, 0x00, - 0x42, 0x24, 0x07, 0x00, 0x42, 0x30, 0x2b, 0x10, 0x43, 0x00, 0x4e, 0x00, 0x40, - 0x10, 0x21, 0xa0, 0x00, 0x00, 0x80, 0x81, 0x84, 0x27, 0x24, 0x40, 0x01, 0x0c, - 0x09, 0x02, 0x05, 0x24, 0xbf, 0x5d, 0x01, 0x08, 0x21, 0xa0, 0x00, 0x00, 0x40, - 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x62, 0x16, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x81, 0x84, 0x27, 0x24, 0x40, 0x01, 0x0c, 0x1c, 0x02, 0x05, - 0x24, 0x08, 0x00, 0x12, 0x96, 0x0c, 0x00, 0x03, 0x8e, 0x02, 0x00, 0x02, 0x24, - 0x22, 0x00, 0x62, 0x10, 0x03, 0x00, 0x02, 0x24, 0x25, 0x00, 0x62, 0x14, 0x01, - 0x00, 0x02, 0x24, 0x10, 0x00, 0x10, 0x8e, 0x84, 0x00, 0x22, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0xfc, 0xff, 0x42, 0x24, 0x08, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x23, 0x10, 0x43, 0x00, 0x84, 0x00, 0x22, 0xae, 0x04, 0x00, 0x02, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x24, 0x0a, 0x00, 0x42, 0x2c, 0x04, - 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x80, 0x81, 0x84, 0x27, 0x24, 0x40, - 0x01, 0x0c, 0x39, 0x02, 0x05, 0x24, 0x04, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x42, 0x24, 0x14, 0x00, 0x40, 0x14, 0x04, 0x00, 0x02, 0xae, - 0xe4, 0xaa, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xae, 0xe4, - 0xaa, 0x90, 0xaf, 0x64, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x42, 0x24, 0xae, 0x5d, 0x01, 0x08, 0x64, 0x00, 0x22, 0xae, 0x2c, 0x00, 0x22, - 0x8e, 0xf7, 0xff, 0x03, 0x24, 0x24, 0x10, 0x43, 0x00, 0xae, 0x5d, 0x01, 0x08, - 0x2c, 0x00, 0x22, 0xae, 0x04, 0x00, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0x80, - 0x81, 0x84, 0x27, 0x24, 0x40, 0x01, 0x0c, 0x5a, 0x02, 0x05, 0x24, 0x88, 0x00, - 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0x52, 0x00, 0x88, 0x00, 0x22, - 0xae, 0xb0, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x42, 0x02, - 0xb0, 0x00, 0x22, 0xae, 0xa8, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x42, 0x24, 0xa8, 0x00, 0x22, 0xae, 0x01, 0x00, 0x73, 0x26, 0x08, 0x00, - 0x62, 0x2e, 0x02, 0x00, 0x40, 0x14, 0x01, 0x00, 0x94, 0x26, 0x21, 0x98, 0x00, - 0x00, 0x40, 0x10, 0x13, 0x00, 0x21, 0x10, 0x53, 0x00, 0x80, 0x10, 0x02, 0x00, - 0x21, 0x10, 0x53, 0x00, 0x80, 0x10, 0x02, 0x00, 0x1c, 0x00, 0x23, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x21, 0x80, 0x43, 0x00, 0x02, 0x00, 0x02, 0x26, 0xff, 0xff, - 0x42, 0x30, 0x23, 0x10, 0xa2, 0x02, 0x34, 0x00, 0x42, 0x2c, 0xab, 0xff, 0x40, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x33, 0xae, 0xac, 0x89, 0x82, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x22, 0xae, 0x8c, 0x00, 0x22, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x23, 0x10, 0x54, 0x00, 0x8c, 0x00, 0x22, 0xae, 0x28, 0x00, - 0xbf, 0x8f, 0x24, 0x00, 0xb5, 0x8f, 0x20, 0x00, 0xb4, 0x8f, 0x1c, 0x00, 0xb3, - 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, - 0x08, 0x00, 0xe0, 0x03, 0x30, 0x00, 0xbd, 0x27, 0xe0, 0xff, 0xbd, 0x27, 0x1c, - 0x00, 0xbf, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, - 0xb0, 0xaf, 0x00, 0xa0, 0x03, 0x3c, 0x40, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, - 0x00, 0xa2, 0x02, 0x3c, 0x20, 0x00, 0x42, 0x94, 0x00, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x50, 0x30, 0x31, 0x00, 0x00, 0x12, 0x00, 0xa2, 0x11, 0x3c, 0x06, 0x80, - 0x12, 0x3c, 0xbc, 0x8d, 0x52, 0x26, 0x0c, 0x08, 0x02, 0x32, 0x05, 0x00, 0x40, - 0x10, 0xc0, 0x80, 0x02, 0x32, 0xd0, 0x89, 0x84, 0x27, 0x29, 0x5d, 0x01, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0xc0, 0x80, 0x02, 0x32, 0x05, 0x00, 0x40, 0x10, 0x03, - 0x03, 0x02, 0x32, 0x06, 0x80, 0x04, 0x3c, 0x29, 0x5d, 0x01, 0x0c, 0xf8, 0x8e, - 0x84, 0x24, 0x03, 0x03, 0x02, 0x32, 0x05, 0x00, 0x40, 0x10, 0x30, 0x30, 0x02, - 0x32, 0xd0, 0x89, 0x84, 0x27, 0xa6, 0x5b, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x30, 0x30, 0x02, 0x32, 0x04, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x06, - 0x80, 0x04, 0x3c, 0xa6, 0x5b, 0x01, 0x0c, 0xf8, 0x8e, 0x84, 0x24, 0x06, 0x80, - 0x02, 0x3c, 0xbc, 0x8d, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, - 0x30, 0x03, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x85, 0x4d, 0x01, 0x0c, - 0xd4, 0xff, 0x44, 0x26, 0x06, 0x80, 0x02, 0x3c, 0x24, 0x8f, 0x42, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x30, 0x04, 0x00, 0x40, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x06, 0x80, 0x04, 0x3c, 0x85, 0x4d, 0x01, 0x0c, 0xf8, 0x8e, 0x84, - 0x24, 0x20, 0x00, 0x22, 0x96, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x50, 0x30, - 0xd4, 0xff, 0x00, 0x16, 0x0c, 0x08, 0x02, 0x32, 0x1c, 0x00, 0xbf, 0x8f, 0x18, - 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, - 0xe0, 0x03, 0x20, 0x00, 0xbd, 0x27, 0xc8, 0xff, 0xbd, 0x27, 0x30, 0x00, 0xbf, - 0xaf, 0x2c, 0x00, 0xb5, 0xaf, 0x28, 0x00, 0xb4, 0xaf, 0x24, 0x00, 0xb3, 0xaf, - 0x20, 0x00, 0xb2, 0xaf, 0x1c, 0x00, 0xb1, 0xaf, 0x18, 0x00, 0xb0, 0xaf, 0x00, - 0xa0, 0x04, 0x3c, 0x40, 0x0d, 0x84, 0x34, 0x00, 0xa0, 0x05, 0x3c, 0x0d, 0x4f, - 0x01, 0x0c, 0x00, 0x0e, 0xa5, 0x34, 0x06, 0x80, 0x03, 0x3c, 0x10, 0xd2, 0x63, - 0x24, 0x00, 0xa0, 0x02, 0x3c, 0x25, 0x18, 0x62, 0x00, 0xe0, 0xaa, 0x83, 0xaf, - 0xa0, 0x01, 0x62, 0x24, 0x26, 0x10, 0x43, 0x00, 0xff, 0xff, 0x04, 0x3c, 0x24, - 0x10, 0x44, 0x00, 0x04, 0x00, 0x40, 0x10, 0x01, 0x00, 0x02, 0x3c, 0x21, 0x10, - 0x62, 0x00, 0x24, 0x10, 0x44, 0x00, 0xe0, 0xaa, 0x82, 0xaf, 0xe0, 0xaa, 0x82, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x9e, 0x82, 0xaf, 0x40, 0x03, 0x43, 0x24, - 0xe0, 0xaa, 0x83, 0xaf, 0x58, 0x0c, 0x42, 0x24, 0x26, 0x10, 0x43, 0x00, 0xff, - 0xff, 0x04, 0x3c, 0x24, 0x10, 0x44, 0x00, 0x04, 0x00, 0x40, 0x10, 0x01, 0x00, - 0x02, 0x3c, 0x21, 0x10, 0x62, 0x00, 0x24, 0x10, 0x44, 0x00, 0xe0, 0xaa, 0x82, - 0xaf, 0xe0, 0xaa, 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x9e, 0x83, 0xaf, - 0x17, 0x0a, 0x63, 0x24, 0x00, 0xff, 0x02, 0x24, 0x24, 0x18, 0x62, 0x00, 0xe0, - 0xaa, 0x83, 0xaf, 0xac, 0x9e, 0x83, 0xaf, 0x00, 0xe8, 0x02, 0x34, 0x21, 0x18, - 0x62, 0x00, 0xe0, 0xaa, 0x83, 0xaf, 0x0b, 0xa0, 0x02, 0x3c, 0x2b, 0x10, 0x43, - 0x00, 0x04, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x80, 0x81, 0x84, 0x27, - 0x24, 0x40, 0x01, 0x0c, 0xd9, 0x02, 0x05, 0x24, 0x06, 0x80, 0x02, 0x3c, 0x10, - 0xd2, 0x42, 0x24, 0x00, 0xa0, 0x04, 0x3c, 0xe0, 0xaa, 0x85, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x0d, 0x4f, 0x01, 0x0c, 0x25, 0x20, 0x44, 0x00, 0xf7, 0x5a, 0x01, - 0x0c, 0x21, 0x98, 0x00, 0x00, 0xd0, 0x89, 0x92, 0x27, 0xa4, 0x8c, 0x82, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x76, 0x00, 0x40, 0x18, 0x00, 0xa2, 0x15, 0x3c, 0x02, - 0x00, 0x14, 0x24, 0x40, 0x28, 0x13, 0x00, 0x21, 0x28, 0xb3, 0x00, 0x40, 0x12, - 0x05, 0x00, 0xe0, 0x9e, 0x83, 0x27, 0x21, 0x10, 0x43, 0x00, 0x24, 0x00, 0x42, - 0xae, 0xc0, 0x20, 0x13, 0x00, 0x23, 0x10, 0x93, 0x00, 0x80, 0x10, 0x02, 0x00, - 0x21, 0x10, 0x53, 0x00, 0x80, 0x12, 0x02, 0x00, 0xac, 0x9e, 0x83, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x21, 0x10, 0x43, 0x00, 0x20, 0x00, 0x42, 0xae, 0x80, 0x28, - 0x05, 0x00, 0x21, 0x28, 0xb3, 0x00, 0x40, 0x29, 0x05, 0x00, 0xdc, 0x9e, 0x82, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x28, 0xa2, 0x00, 0x1c, 0x00, 0x45, 0xae, - 0x21, 0x20, 0x93, 0x00, 0xc0, 0x20, 0x04, 0x00, 0x21, 0x20, 0x93, 0x00, 0x80, - 0x20, 0x04, 0x00, 0x23, 0x20, 0x93, 0x00, 0x80, 0x20, 0x04, 0x00, 0xb4, 0x9e, - 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, 0x82, 0x00, 0x18, 0x00, 0x44, - 0xae, 0x1c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x01, 0x43, 0x24, - 0x02, 0x00, 0x42, 0x24, 0x02, 0x00, 0x62, 0xa4, 0x07, 0x00, 0x04, 0x24, 0x21, - 0x10, 0x60, 0x00, 0xcc, 0xff, 0x63, 0x24, 0x02, 0x00, 0x42, 0x24, 0xff, 0xff, - 0x84, 0x24, 0xfb, 0xff, 0x80, 0x14, 0x02, 0x00, 0x62, 0xa4, 0x18, 0x00, 0x45, - 0x8e, 0x20, 0x00, 0x42, 0x8e, 0x80, 0x04, 0xa3, 0x24, 0x00, 0x60, 0x46, 0x24, - 0x04, 0x00, 0x66, 0xac, 0x02, 0x00, 0xa2, 0x24, 0x02, 0x00, 0x62, 0xa4, 0x60, - 0x00, 0x04, 0x24, 0x21, 0x28, 0x60, 0x00, 0xf4, 0xff, 0x63, 0x24, 0x00, 0xff, - 0xc6, 0x24, 0x04, 0x00, 0x66, 0xac, 0x02, 0x00, 0xa2, 0x24, 0xff, 0xff, 0x84, - 0x24, 0xf9, 0xff, 0x80, 0x14, 0x02, 0x00, 0x62, 0xa4, 0x3c, 0x00, 0x40, 0xae, - 0x01, 0x00, 0x02, 0x24, 0x38, 0x00, 0x42, 0xae, 0x00, 0x00, 0x55, 0xae, 0x80, - 0x89, 0x13, 0x00, 0x40, 0x00, 0x31, 0x26, 0x21, 0x88, 0x35, 0x02, 0x04, 0x00, - 0x51, 0xae, 0xc0, 0x81, 0x13, 0x00, 0x00, 0x01, 0x10, 0x26, 0x21, 0x80, 0x15, - 0x02, 0x08, 0x00, 0x50, 0xae, 0x48, 0x00, 0x45, 0x8e, 0x4c, 0x00, 0x46, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x26, 0x5b, 0x01, 0x0c, 0x21, 0x20, 0x60, 0x02, 0x18, - 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x42, 0x24, 0x02, 0x14, - 0x02, 0x00, 0x0c, 0x00, 0x02, 0xa2, 0x18, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x42, 0x24, 0x14, 0x00, 0x02, 0xa6, 0x18, 0x00, 0x42, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x42, 0x24, 0x10, 0x00, 0x02, 0xa6, 0x00, - 0x01, 0x02, 0x24, 0x18, 0x00, 0x02, 0xa6, 0x1c, 0x00, 0x42, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x42, 0x24, 0x02, 0x14, 0x02, 0x00, 0x4c, 0x00, 0x02, - 0xa2, 0x1c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x42, 0x24, - 0x50, 0x00, 0x02, 0xa6, 0x1c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x42, 0x24, 0x54, 0x00, 0x02, 0xa6, 0x20, 0x00, 0x14, 0xa2, 0x60, 0x00, - 0x14, 0xa2, 0x12, 0x00, 0x02, 0x24, 0x18, 0x00, 0x22, 0xa2, 0x18, 0x00, 0x34, - 0xa2, 0x01, 0x00, 0x73, 0x26, 0xa4, 0x8c, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x2a, 0x10, 0x62, 0x02, 0x8d, 0xff, 0x40, 0x14, 0x68, 0x01, 0x52, 0x26, 0x30, - 0x00, 0xbf, 0x8f, 0x2c, 0x00, 0xb5, 0x8f, 0x28, 0x00, 0xb4, 0x8f, 0x24, 0x00, - 0xb3, 0x8f, 0x20, 0x00, 0xb2, 0x8f, 0x1c, 0x00, 0xb1, 0x8f, 0x18, 0x00, 0xb0, - 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x38, 0x00, 0xbd, 0x27, 0x2e, 0x2e, 0x2f, 0x65, - 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x73, 0x00, 0x00, 0xe0, - 0x0a, 0x05, 0x80, 0xf8, 0x0a, 0x05, 0x80, 0x10, 0x0b, 0x05, 0x80, 0x90, 0x0b, - 0x05, 0x80, 0xa4, 0x0b, 0x05, 0x80, 0x74, 0x0d, 0x05, 0x80, 0xb8, 0x0b, 0x05, - 0x80, 0x74, 0x0d, 0x05, 0x80, 0xd8, 0x0b, 0x05, 0x80, 0x28, 0x0c, 0x05, 0x80, - 0x58, 0x0c, 0x05, 0x80, 0x70, 0x0c, 0x05, 0x80, 0x90, 0x0c, 0x05, 0x80, 0x74, - 0x0d, 0x05, 0x80, 0x98, 0x0c, 0x05, 0x80, 0xac, 0x0c, 0x05, 0x80, 0xc0, 0x0c, - 0x05, 0x80, 0x74, 0x0d, 0x05, 0x80, 0x74, 0x0d, 0x05, 0x80, 0xd8, 0x0c, 0x05, - 0x80, 0xf0, 0x0c, 0x05, 0x80, 0x20, 0x0d, 0x05, 0x80, 0x38, 0x0d, 0x05, 0x80, - 0x74, 0x0d, 0x05, 0x80, 0x74, 0x0d, 0x05, 0x80, 0x74, 0x0d, 0x05, 0x80, 0x74, - 0x0d, 0x05, 0x80, 0x74, 0x0d, 0x05, 0x80, 0x74, 0x0d, 0x05, 0x80, 0x74, 0x0d, - 0x05, 0x80, 0x50, 0x0d, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x10, 0x05, - 0x80, 0x2c, 0x10, 0x05, 0x80, 0x3c, 0x10, 0x05, 0x80, 0x4c, 0x10, 0x05, 0x80, - 0xa0, 0x10, 0x05, 0x80, 0xb0, 0x10, 0x05, 0x80, 0xc0, 0x10, 0x05, 0x80, 0xd0, - 0x10, 0x05, 0x80, 0xe0, 0x10, 0x05, 0x80, 0xf0, 0x10, 0x05, 0x80, 0x00, 0x11, - 0x05, 0x80, 0x10, 0x11, 0x05, 0x80, 0x2c, 0x11, 0x05, 0x80, 0x48, 0x11, 0x05, - 0x80, 0x5c, 0x11, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x1b, 0x05, 0x80, - 0x6c, 0x1b, 0x05, 0x80, 0x6c, 0x1b, 0x05, 0x80, 0x6c, 0x1b, 0x05, 0x80, 0x6c, - 0x1b, 0x05, 0x80, 0x6c, 0x1b, 0x05, 0x80, 0x6c, 0x1b, 0x05, 0x80, 0x6c, 0x1b, - 0x05, 0x80, 0x90, 0x1b, 0x05, 0x80, 0xac, 0x1b, 0x05, 0x80, 0xd4, 0x1c, 0x05, - 0x80, 0x74, 0x1d, 0x05, 0x80, 0xc0, 0x1d, 0x05, 0x80, 0xcc, 0x1f, 0x05, 0x80, - 0xcc, 0x1f, 0x05, 0x80, 0x44, 0x1e, 0x05, 0x80, 0x74, 0x1e, 0x05, 0x80, 0x74, - 0x1e, 0x05, 0x80, 0x74, 0x1e, 0x05, 0x80, 0x74, 0x1e, 0x05, 0x80, 0xc0, 0x1e, - 0x05, 0x80, 0xcc, 0x1f, 0x05, 0x80, 0xcc, 0x1f, 0x05, 0x80, 0xcc, 0x1f, 0x05, - 0x80, 0xcc, 0x1f, 0x05, 0x80, 0xcc, 0x1f, 0x05, 0x80, 0xcc, 0x1f, 0x05, 0x80, - 0xcc, 0x1f, 0x05, 0x80, 0xcc, 0x1f, 0x05, 0x80, 0xcc, 0x1f, 0x05, 0x80, 0xbc, - 0x1f, 0x05, 0x80, 0xc4, 0x1f, 0x05, 0x80, 0x7c, 0x26, 0x05, 0x80, 0x0c, 0x27, - 0x05, 0x80, 0x7c, 0x26, 0x05, 0x80, 0xcc, 0x26, 0x05, 0x80, 0x0c, 0x27, 0x05, - 0x80, 0xcc, 0x26, 0x05, 0x80, 0x0c, 0x27, 0x05, 0x80, 0x0c, 0x27, 0x05, 0x80, - 0x0c, 0x27, 0x05, 0x80, 0x0c, 0x27, 0x05, 0x80, 0x0c, 0x27, 0x05, 0x80, 0x0c, - 0x27, 0x05, 0x80, 0x0c, 0x27, 0x05, 0x80, 0x0c, 0x27, 0x05, 0x80, 0x0c, 0x27, - 0x05, 0x80, 0xcc, 0x26, 0x05, 0x80, 0x0c, 0x27, 0x05, 0x80, 0x0c, 0x27, 0x05, - 0x80, 0x0c, 0x27, 0x05, 0x80, 0x0c, 0x27, 0x05, 0x80, 0x7c, 0x26, 0x05, 0x80, - 0x7c, 0x26, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, - 0x2d, 0x05, 0x80, 0x80, 0x30, 0x05, 0x80, 0x80, 0x30, 0x05, 0x80, 0x80, 0x30, - 0x05, 0x80, 0x20, 0x2d, 0x05, 0x80, 0x14, 0x2d, 0x05, 0x80, 0x80, 0x30, 0x05, - 0x80, 0x80, 0x30, 0x05, 0x80, 0x80, 0x30, 0x05, 0x80, 0x80, 0x30, 0x05, 0x80, - 0x80, 0x30, 0x05, 0x80, 0x80, 0x30, 0x05, 0x80, 0x0c, 0x2d, 0x05, 0x80, 0x80, - 0x30, 0x05, 0x80, 0x80, 0x30, 0x05, 0x80, 0x80, 0x30, 0x05, 0x80, 0x80, 0x30, - 0x05, 0x80, 0x80, 0x30, 0x05, 0x80, 0x80, 0x30, 0x05, 0x80, 0x80, 0x30, 0x05, - 0x80, 0xf4, 0x2c, 0x05, 0x80, 0x80, 0x30, 0x05, 0x80, 0x80, 0x30, 0x05, 0x80, - 0x80, 0x30, 0x05, 0x80, 0x80, 0x30, 0x05, 0x80, 0x80, 0x30, 0x05, 0x80, 0x00, - 0x2d, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x74, 0x4b, 0x05, 0x80, 0x10, 0x4c, - 0x05, 0x80, 0x64, 0x4c, 0x05, 0x80, 0x50, 0x4c, 0x05, 0x80, 0x50, 0x4c, 0x05, - 0x80, 0x50, 0x4c, 0x05, 0x80, 0x50, 0x4c, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, - 0xd4, 0x6b, 0x05, 0x80, 0x50, 0x6b, 0x05, 0x80, 0xbc, 0x6b, 0x05, 0x80, 0xbc, - 0x6b, 0x05, 0x80, 0x1c, 0x6b, 0x05, 0x80, 0x40, 0x6b, 0x05, 0x80, 0x2c, 0x6b, - 0x05, 0x80, 0x90, 0x6b, 0x05, 0x80, 0xa0, 0x6b, 0x05, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x34, 0x00, - 0x00, 0x00, 0x41, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0xe2, 0x00, 0x00, - 0x00, 0x40, 0x00, 0x0c, 0x00, 0x74, 0x00, 0x04, 0x00, 0x6e, 0x00, 0x04, 0x00, - 0x00, 0x00, 0x0c, 0x00, 0xe4, 0x00, 0x04, 0x00, 0x40, 0x00, 0x0c, 0x00, 0xb4, - 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xe8, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0x60, - 0x01, 0x00, 0x00, 0xa0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x29, 0x01, - 0x03, 0x00, 0x69, 0x01, 0x03, 0x00, 0xa9, 0x01, 0x03, 0x00, 0xe9, 0x01, 0x03, - 0x00, 0x58, 0x00, 0x21, 0x00, 0x98, 0x00, 0x21, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0c, - 0x00, 0x00, 0x00, 0x10, 0x00, 0x0c, 0x00, 0x28, 0x00, 0xcc, 0x00, 0x29, 0x00, - 0xbb, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x10, 0x00, 0x11, 0x00, 0x80, - 0x00, 0x00, 0xf0, 0x00, 0x00, 0x18, 0x00, 0x01, 0x00, 0x18, 0x00, 0x11, 0x00, - 0x1c, 0x00, 0x87, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x07, - 0xf0, 0x00, 0x00, 0x21, 0x00, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2d, 0x00, - 0x00, 0x00, 0x29, 0x00, 0x02, 0x00, 0x30, 0x00, 0x12, 0x00, 0x31, 0x00, 0x1f, - 0x00, 0x34, 0x00, 0x0e, 0x00, 0x10, 0x00, 0xc0, 0x00, 0x11, 0x00, 0x80, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, - 0x00, 0x00, 0x00, 0x28, 0x00, 0x7e, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x21, 0x00, - 0x14, 0x00, 0x28, 0x00, 0x60, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x21, 0x00, 0x14, - 0x00, 0x28, 0x00, 0x40, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x06, 0xf0, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x41, 0x00, 0x01, - 0xf0, 0x02, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x06, 0xf0, - 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x45, - 0x00, 0x01, 0xf0, 0x20, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x05, - 0xf0, 0x00, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x20, 0x00, - 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x04, 0xf0, 0x00, - 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x08, 0xf0, 0x00, 0x00, - 0x20, 0x00, 0x20, 0x00, 0x2c, 0x00, 0x40, 0x00, 0x2d, 0x00, 0x63, 0x00, 0x01, - 0xf0, 0x08, 0x00, 0x04, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x08, 0xf0, - 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x2c, 0x00, 0x60, 0x00, 0x2d, 0x00, 0x43, - 0x00, 0x01, 0xf0, 0x08, 0x00, 0x04, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, - 0x08, 0xf0, 0x00, 0x00, 0x20, 0x00, 0x28, 0x00, 0x2c, 0x00, 0x60, 0x00, 0x2d, - 0x00, 0x44, 0x00, 0x01, 0xf0, 0x10, 0x00, 0x04, 0xf0, 0x00, 0x00, 0x00, 0xf0, - 0x00, 0x00, 0x08, 0xf0, 0x00, 0x00, 0x20, 0x00, 0xc0, 0x00, 0x2c, 0x00, 0x60, - 0x00, 0x2d, 0x00, 0x43, 0x00, 0x01, 0xf0, 0x08, 0x00, 0x04, 0xf0, 0x00, 0x00, - 0x00, 0xf0, 0x00, 0x00, 0x08, 0xf0, 0x00, 0x00, 0x20, 0x00, 0xc8, 0x00, 0x2c, - 0x00, 0x60, 0x00, 0x2d, 0x00, 0x44, 0x00, 0x01, 0xf0, 0x10, 0x00, 0x04, 0xf0, - 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x40, 0x7f, 0x05, 0x80, 0xb8, 0x84, 0x05, - 0x80, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x7f, 0x05, 0x80, 0xc0, 0x84, 0x05, 0x80, - 0x00, 0x00, 0x00, 0x00, 0xfc, 0x7f, 0x05, 0x80, 0xc8, 0x84, 0x05, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x40, 0x7f, 0x05, 0x80, 0x70, 0x84, 0x05, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x7f, 0x05, 0x80, 0x78, 0x84, 0x05, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x40, 0x7f, 0x05, 0x80, 0x80, 0x84, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x40, 0x7f, 0x05, 0x80, 0x90, 0x84, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x40, - 0x7f, 0x05, 0x80, 0x98, 0x84, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7f, - 0x05, 0x80, 0xa0, 0x84, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7f, 0x05, - 0x80, 0xb0, 0x84, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7f, 0x05, 0x80, - 0xb8, 0x84, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x24, 0x7f, 0x05, 0x80, 0xc0, - 0x84, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x24, 0x7f, 0x05, 0x80, 0xc8, 0x84, - 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x24, 0x7f, 0x05, 0x80, 0xd0, 0x84, 0x05, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x24, 0x7f, 0x05, 0x80, 0xd8, 0x84, 0x05, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x74, 0x7f, 0x05, 0x80, 0x70, 0x84, 0x05, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x74, 0x7f, 0x05, 0x80, 0x78, 0x84, 0x05, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x74, 0x7f, 0x05, 0x80, 0x80, 0x84, 0x05, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x74, 0x7f, 0x05, 0x80, 0x90, 0x84, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x74, 0x7f, 0x05, 0x80, 0x98, 0x84, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x74, - 0x7f, 0x05, 0x80, 0xa0, 0x84, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x74, 0x7f, - 0x05, 0x80, 0xb0, 0x84, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x74, 0x7f, 0x05, - 0x80, 0xb8, 0x84, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x74, 0x7f, 0x05, 0x80, - 0xc0, 0x84, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x74, 0x7f, 0x05, 0x80, 0xc8, - 0x84, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x74, 0x7f, 0x05, 0x80, 0xd0, 0x84, - 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x74, 0x7f, 0x05, 0x80, 0xd8, 0x84, 0x05, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x24, 0x7f, 0x05, 0x80, 0xe0, 0x84, 0x05, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x24, 0x7f, 0x05, 0x80, 0xe8, 0x84, 0x05, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x24, 0x7f, 0x05, 0x80, 0xf0, 0x84, 0x05, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x74, 0x7f, 0x05, 0x80, 0xe0, 0x84, 0x05, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x74, 0x7f, 0x05, 0x80, 0xe8, 0x84, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x74, 0x7f, 0x05, 0x80, 0xf0, 0x84, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x74, - 0x7f, 0x05, 0x80, 0x88, 0x84, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x74, 0x7f, - 0x05, 0x80, 0xb8, 0x84, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x74, 0x7f, 0x05, - 0x80, 0x70, 0x84, 0x05, 0x80, 0x01, 0x00, 0x00, 0x00, 0x74, 0x7f, 0x05, 0x80, - 0x78, 0x84, 0x05, 0x80, 0x01, 0x00, 0x00, 0x00, 0x74, 0x7f, 0x05, 0x80, 0x80, - 0x84, 0x05, 0x80, 0x01, 0x00, 0x00, 0x00, 0x74, 0x7f, 0x05, 0x80, 0x88, 0x84, - 0x05, 0x80, 0x01, 0x00, 0x00, 0x00, 0x74, 0x7f, 0x05, 0x80, 0x90, 0x84, 0x05, - 0x80, 0x01, 0x00, 0x00, 0x00, 0x74, 0x7f, 0x05, 0x80, 0x98, 0x84, 0x05, 0x80, - 0x01, 0x00, 0x00, 0x00, 0x74, 0x7f, 0x05, 0x80, 0xa0, 0x84, 0x05, 0x80, 0x01, - 0x00, 0x00, 0x00, 0x74, 0x7f, 0x05, 0x80, 0xa8, 0x84, 0x05, 0x80, 0x01, 0x00, - 0x00, 0x00, 0x74, 0x7f, 0x05, 0x80, 0xb0, 0x84, 0x05, 0x80, 0x01, 0x00, 0x00, - 0x00, 0x74, 0x7f, 0x05, 0x80, 0xb8, 0x84, 0x05, 0x80, 0x01, 0x00, 0x00, 0x00, - 0x74, 0x7f, 0x05, 0x80, 0xb8, 0x84, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x74, - 0x7f, 0x05, 0x80, 0xb8, 0x84, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x74, 0x7f, - 0x05, 0x80, 0xb8, 0x84, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x74, 0x7f, 0x05, - 0x80, 0xb8, 0x84, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x74, 0x7f, 0x05, 0x80, - 0xb8, 0x84, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x74, 0x7f, 0x05, 0x80, 0xb8, - 0x84, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x74, 0x7f, 0x05, 0x80, 0xb8, 0x84, - 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x74, 0x7f, 0x05, 0x80, 0xb8, 0x84, 0x05, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x74, 0x7f, 0x05, 0x80, 0xb8, 0x84, 0x05, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x74, 0x7f, 0x05, 0x80, 0xb8, 0x84, 0x05, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x74, 0x7f, 0x05, 0x80, 0xb8, 0x84, 0x05, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x74, 0x7f, 0x05, 0x80, 0xb8, 0x84, 0x05, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x74, 0x7f, 0x05, 0x80, 0xb8, 0x84, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x74, 0x7f, 0x05, 0x80, 0xb8, 0x84, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x74, - 0x7f, 0x05, 0x80, 0xb8, 0x84, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x7f, - 0x05, 0x80, 0xb8, 0x84, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x7f, 0x05, - 0x80, 0xb8, 0x84, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x7f, 0x05, 0x80, - 0xc0, 0x84, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x7f, 0x05, 0x80, 0xc0, - 0x84, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x7f, 0x05, 0x80, 0xc8, 0x84, - 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x7f, 0x05, 0x80, 0xc8, 0x84, 0x05, - 0x80, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x7f, 0x05, 0x80, 0xd0, 0x84, 0x05, 0x80, - 0x00, 0x00, 0x00, 0x00, 0xfc, 0x7f, 0x05, 0x80, 0xd0, 0x84, 0x05, 0x80, 0x00, - 0x00, 0x00, 0x00, 0xa8, 0x7f, 0x05, 0x80, 0xf8, 0x84, 0x05, 0x80, 0x00, 0x00, - 0x00, 0x00, 0xe0, 0x7f, 0x05, 0x80, 0xf8, 0x84, 0x05, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x24, 0x7f, 0x05, 0x80, 0xf8, 0x84, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x24, 0x7f, 0x05, 0x80, 0x00, 0x85, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x24, - 0x7f, 0x05, 0x80, 0x08, 0x85, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x24, 0x7f, - 0x05, 0x80, 0x10, 0x85, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x7f, 0x05, - 0x80, 0x18, 0x85, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7f, 0x05, 0x80, - 0x88, 0x84, 0x05, 0x80, 0x01, 0x00, 0x00, 0x00, 0x40, 0x7f, 0x05, 0x80, 0xa0, - 0x84, 0x05, 0x80, 0x01, 0x00, 0x00, 0x00, 0x8c, 0x7f, 0x05, 0x80, 0x20, 0x85, - 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xff, 0x0f, 0x00, 0x00, 0x2e, 0x2e, 0x2f, 0x73, 0x79, 0x6e, 0x63, 0x66, - 0x65, 0x70, 0x2e, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, - 0x2e, 0x2f, 0x73, 0x79, 0x6e, 0x63, 0x6d, 0x61, 0x69, 0x6e, 0x2e, 0x63, 0x00, - 0x00, 0x00, 0x2e, 0x2e, 0x2f, 0x73, 0x79, 0x6e, 0x63, 0x70, 0x72, 0x6f, 0x74, - 0x2e, 0x63, 0x00, 0x00, 0x00, 0x2e, 0x2e, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2e, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, - 0x27, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x2e, 0x2e, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x2e, 0x2e, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x2e, - 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x2e, - 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x69, 0x6e, 0x74, 0x2e, 0x63, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x60, 0x09, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0xc0, 0x12, 0x00, 0x00, 0x1e, - 0x00, 0x00, 0x00, 0x80, 0x25, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x40, 0x38, - 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x3c, 0x00, 0x00, - 0x00, 0x00, 0x96, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, - 0x96, 0x00, 0x00, 0x00, 0x6f, 0xfa, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x00, - 0x2c, 0x01, 0x00, 0xfa, 0x00, 0x00, 0x00, 0x38, 0xc1, 0x01, 0x00, 0x2c, 0x01, - 0x00, 0x00, 0x70, 0x82, 0x03, 0x00, 0x58, 0x02, 0x00, 0x00, 0xe0, 0x04, 0x07, - 0x00, 0xe8, 0x03, 0x00, 0x00, 0xa8, 0x0d, 0x0e, 0x00, 0x40, 0x06, 0x00, 0x00, - 0xc8, 0xc0, 0x12, 0x00, 0x40, 0x06, 0x00, 0x00, 0x00, 0x20, 0x1c, 0x00, 0x40, - 0x06, 0x00, 0x00, 0x00, 0x80, 0x25, 0x00, 0x40, 0x06, 0x00, 0x00, 0x00, 0x40, - 0x38, 0x00, 0x40, 0x06, 0x00, 0x00, 0x00, 0x20, 0x1c, 0x00, 0xc4, 0x09, 0x00, - 0x00, 0x00, 0x80, 0x25, 0x00, 0xa0, 0x0f, 0x00, 0x00, 0x00, 0x40, 0x38, 0x00, - 0x88, 0x13, 0x00, 0x00, 0x00, 0x80, 0x70, 0x00, 0x88, 0x13, 0x00, 0x00, 0x80, - 0x96, 0x98, 0x00, 0x88, 0x13, 0x00, 0x00, 0x00, 0x40, 0x1f, 0x00, 0xa0, 0x0f, - 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x2e, 0x2e, 0x2f, 0x73, 0x63, 0x61, 0x2e, - 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2e, 0x2e, 0x2f, 0x73, 0x63, 0x61, 0x70, 0x72, 0x6f, 0x74, 0x2e, 0x63, 0x00, - 0x00, 0x00, 0x00, 0x24, 0x73, 0x2c, 0xbe, 0x40, 0x28, 0x23, 0x29, 0x62, 0x69, - 0x6f, 0x73, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x24, - 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x33, - 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, - 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, 0x31, 0x36, 0x3a, 0x34, - 0x32, 0x3a, 0x31, 0x37, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x63, 0x68, - 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, - 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x32, - 0x31, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x36, 0x2f, 0x31, 0x30, 0x2f, 0x30, 0x37, 0x20, 0x31, 0x37, 0x3a, - 0x31, 0x38, 0x3a, 0x30, 0x36, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x63, - 0x68, 0x65, 0x63, 0x6b, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x2e, 0x63, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x31, 0x2e, - 0x33, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x36, 0x2f, 0x30, 0x39, 0x2f, 0x31, 0x36, 0x20, 0x32, 0x33, 0x3a, - 0x32, 0x32, 0x3a, 0x30, 0x35, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x63, - 0x68, 0x65, 0x63, 0x6b, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x2e, 0x68, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, - 0x33, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, 0x31, 0x36, 0x3a, - 0x34, 0x33, 0x3a, 0x33, 0x37, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x63, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, - 0x31, 0x38, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, - 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x32, 0x2f, 0x32, 0x36, 0x20, 0x32, 0x32, - 0x3a, 0x30, 0x37, 0x3a, 0x35, 0x39, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, - 0x2e, 0x32, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, - 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x30, 0x2f, 0x31, 0x30, 0x20, 0x32, 0x33, - 0x3a, 0x32, 0x37, 0x3a, 0x30, 0x35, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6d, 0x6b, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, - 0x2e, 0x32, 0x38, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, - 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x35, 0x2f, 0x33, 0x30, 0x20, 0x31, - 0x35, 0x3a, 0x30, 0x32, 0x3a, 0x30, 0x36, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, - 0x29, 0x63, 0x6f, 0x6e, 0x63, 0x70, 0x72, 0x6f, 0x74, 0x2e, 0x68, 0x20, 0x20, - 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, - 0x33, 0x2e, 0x33, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, - 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, 0x31, - 0x36, 0x3a, 0x34, 0x36, 0x3a, 0x32, 0x38, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, - 0x29, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, - 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x32, - 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, - 0x39, 0x36, 0x2f, 0x31, 0x30, 0x2f, 0x31, 0x30, 0x20, 0x32, 0x33, 0x3a, 0x32, - 0x37, 0x3a, 0x30, 0x37, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x63, 0x78, - 0x70, 0x66, 0x65, 0x70, 0x2f, 0x4d, 0x61, 0x6b, 0x65, 0x66, 0x69, 0x6c, 0x65, - 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x3a, 0x20, 0x31, 0x2e, 0x32, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, - 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x30, 0x2f, 0x30, 0x39, - 0x20, 0x30, 0x33, 0x3a, 0x34, 0x39, 0x3a, 0x35, 0x32, 0x20, 0x24, 0x20, 0x00, - 0x40, 0x28, 0x23, 0x29, 0x64, 0x65, 0x66, 0x73, 0x2e, 0x68, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x31, 0x31, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, - 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x34, 0x2f, - 0x30, 0x39, 0x20, 0x31, 0x35, 0x3a, 0x30, 0x38, 0x3a, 0x30, 0x32, 0x20, 0x24, - 0x00, 0x40, 0x28, 0x23, 0x29, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x68, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x31, 0x31, 0x20, 0x24, 0x20, 0x20, 0x24, - 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x30, 0x37, - 0x2f, 0x32, 0x33, 0x20, 0x30, 0x31, 0x3a, 0x35, 0x36, 0x3a, 0x35, 0x35, 0x20, - 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x73, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x33, 0x20, 0x24, 0x20, 0x20, 0x24, - 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x30, 0x33, - 0x2f, 0x31, 0x39, 0x20, 0x32, 0x30, 0x3a, 0x35, 0x37, 0x3a, 0x35, 0x36, 0x20, - 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x66, 0x65, 0x70, 0x6d, 0x73, 0x67, 0x2e, - 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x32, 0x2e, 0x35, 0x20, 0x24, 0x20, 0x20, 0x24, - 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x30, - 0x2f, 0x30, 0x37, 0x20, 0x31, 0x39, 0x3a, 0x32, 0x39, 0x3a, 0x34, 0x33, 0x20, - 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x68, 0x6f, 0x73, 0x74, 0x63, 0x6f, 0x6d, - 0x6d, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x31, 0x32, 0x20, 0x24, 0x20, 0x20, - 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, - 0x34, 0x2f, 0x32, 0x39, 0x20, 0x31, 0x39, 0x3a, 0x33, 0x31, 0x3a, 0x31, 0x30, - 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x68, 0x6f, 0x73, 0x74, 0x69, 0x6e, - 0x69, 0x74, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, - 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x32, 0x20, 0x24, 0x20, 0x20, - 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, - 0x30, 0x2f, 0x31, 0x30, 0x20, 0x32, 0x33, 0x3a, 0x32, 0x37, 0x3a, 0x30, 0x38, - 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x68, 0x6f, 0x73, 0x74, 0x69, 0x6e, - 0x69, 0x74, 0x2e, 0x73, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, - 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x38, 0x20, 0x24, 0x20, 0x20, - 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, - 0x31, 0x2f, 0x32, 0x31, 0x20, 0x31, 0x37, 0x3a, 0x30, 0x36, 0x3a, 0x35, 0x32, - 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x69, 0x75, 0x73, 0x63, 0x2e, 0x68, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, - 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x32, 0x2e, 0x33, 0x20, 0x24, 0x20, 0x20, - 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x32, 0x2f, 0x30, - 0x35, 0x2f, 0x32, 0x34, 0x20, 0x30, 0x30, 0x3a, 0x30, 0x36, 0x3a, 0x32, 0x39, - 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x6d, 0x69, 0x64, 0x2e, 0x68, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, - 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x31, 0x31, 0x20, 0x24, 0x20, - 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, - 0x31, 0x30, 0x2f, 0x31, 0x30, 0x20, 0x32, 0x33, 0x3a, 0x32, 0x37, 0x3a, 0x30, - 0x38, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x6d, 0x6f, 0x64, 0x75, 0x6c, - 0x65, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x34, 0x20, 0x24, 0x20, - 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, - 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, 0x31, 0x36, 0x3a, 0x34, 0x39, 0x3a, 0x33, - 0x33, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x6d, 0x6f, 0x76, 0x65, 0x2e, - 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x32, 0x20, 0x24, 0x20, - 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, - 0x31, 0x30, 0x2f, 0x31, 0x30, 0x20, 0x32, 0x33, 0x3a, 0x32, 0x37, 0x3a, 0x31, - 0x30, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x6d, 0x6f, 0x76, 0x65, 0x2e, - 0x73, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x31, 0x20, 0x24, 0x20, - 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x33, 0x2f, - 0x30, 0x38, 0x2f, 0x32, 0x30, 0x20, 0x31, 0x35, 0x3a, 0x32, 0x34, 0x3a, 0x32, - 0x32, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x31, 0x30, 0x20, 0x24, - 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, - 0x2f, 0x30, 0x34, 0x2f, 0x32, 0x39, 0x20, 0x31, 0x39, 0x3a, 0x33, 0x31, 0x3a, - 0x31, 0x31, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x37, 0x20, 0x24, - 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, - 0x2f, 0x30, 0x34, 0x2f, 0x32, 0x39, 0x20, 0x31, 0x39, 0x3a, 0x33, 0x31, 0x3a, - 0x31, 0x32, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x72, 0x77, 0x2e, 0x63, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x32, 0x20, 0x24, - 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, - 0x2f, 0x30, 0x39, 0x2f, 0x31, 0x36, 0x20, 0x32, 0x33, 0x3a, 0x32, 0x39, 0x3a, - 0x34, 0x34, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x72, 0x77, 0x2e, 0x68, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x32, 0x2e, 0x34, 0x20, 0x24, - 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, - 0x2f, 0x30, 0x32, 0x2f, 0x32, 0x30, 0x20, 0x32, 0x32, 0x3a, 0x32, 0x37, 0x3a, - 0x35, 0x30, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, 0x63, 0x61, 0x2e, - 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x37, 0x20, 0x24, - 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, - 0x2f, 0x30, 0x34, 0x2f, 0x30, 0x37, 0x20, 0x32, 0x31, 0x3a, 0x34, 0x33, 0x3a, - 0x31, 0x34, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, 0x63, 0x61, 0x2e, - 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x36, 0x20, 0x24, - 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, - 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, 0x31, 0x36, 0x3a, 0x35, 0x33, 0x3a, - 0x30, 0x33, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, 0x63, 0x61, 0x70, - 0x72, 0x6f, 0x74, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x38, 0x20, 0x24, - 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, - 0x2f, 0x30, 0x31, 0x2f, 0x32, 0x39, 0x20, 0x32, 0x31, 0x3a, 0x31, 0x39, 0x3a, - 0x31, 0x35, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, 0x63, 0x68, 0x65, - 0x64, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x35, 0x20, 0x24, - 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, - 0x2f, 0x30, 0x39, 0x2f, 0x31, 0x36, 0x20, 0x32, 0x33, 0x3a, 0x33, 0x32, 0x3a, - 0x32, 0x36, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, 0x63, 0x68, 0x65, - 0x64, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x33, 0x20, 0x24, - 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, - 0x2f, 0x30, 0x39, 0x2f, 0x32, 0x34, 0x20, 0x31, 0x35, 0x3a, 0x30, 0x31, 0x3a, - 0x34, 0x39, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, 0x79, 0x6e, 0x63, - 0x62, 0x69, 0x6f, 0x73, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x31, 0x2e, 0x37, 0x20, 0x24, - 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, - 0x2f, 0x31, 0x30, 0x2f, 0x32, 0x33, 0x20, 0x32, 0x31, 0x3a, 0x34, 0x30, 0x3a, - 0x31, 0x32, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, 0x79, 0x6e, 0x63, - 0x63, 0x68, 0x61, 0x6e, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x33, 0x20, 0x24, - 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, - 0x2f, 0x30, 0x31, 0x2f, 0x31, 0x35, 0x20, 0x31, 0x38, 0x3a, 0x30, 0x38, 0x3a, - 0x33, 0x35, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, 0x79, 0x6e, 0x63, - 0x66, 0x65, 0x70, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x32, 0x30, 0x20, - 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, - 0x37, 0x2f, 0x30, 0x32, 0x2f, 0x31, 0x30, 0x20, 0x31, 0x35, 0x3a, 0x34, 0x32, - 0x3a, 0x32, 0x31, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, 0x79, 0x6e, - 0x63, 0x6d, 0x61, 0x69, 0x6e, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x31, 0x30, - 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, - 0x39, 0x37, 0x2f, 0x30, 0x31, 0x2f, 0x31, 0x35, 0x20, 0x31, 0x38, 0x3a, 0x30, - 0x37, 0x3a, 0x30, 0x39, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, 0x79, - 0x6e, 0x63, 0x70, 0x72, 0x6f, 0x74, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x24, - 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x31, - 0x32, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x37, 0x2f, 0x30, 0x35, 0x2f, 0x31, 0x32, 0x20, 0x31, 0x39, 0x3a, - 0x30, 0x33, 0x3a, 0x33, 0x33, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x74, - 0x69, 0x6d, 0x65, 0x72, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, - 0x36, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x36, 0x2f, 0x30, 0x39, 0x2f, 0x31, 0x36, 0x20, 0x32, 0x33, 0x3a, - 0x34, 0x31, 0x3a, 0x34, 0x35, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x74, - 0x69, 0x6d, 0x65, 0x72, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, - 0x38, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x36, 0x2f, 0x30, 0x39, 0x2f, 0x31, 0x36, 0x20, 0x32, 0x33, 0x3a, - 0x34, 0x32, 0x3a, 0x30, 0x38, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x74, - 0x69, 0x6d, 0x65, 0x72, 0x69, 0x6e, 0x74, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, - 0x36, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x37, 0x2f, 0x30, 0x31, 0x2f, 0x31, 0x35, 0x20, 0x31, 0x38, 0x3a, - 0x31, 0x30, 0x3a, 0x30, 0x39, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x75, - 0x74, 0x69, 0x6c, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, - 0x33, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, 0x31, 0x36, 0x3a, - 0x35, 0x39, 0x3a, 0x30, 0x39, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x75, - 0x74, 0x69, 0x6c, 0x2e, 0x73, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, - 0x34, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x37, 0x2f, 0x30, 0x31, 0x2f, 0x32, 0x31, 0x20, 0x31, 0x37, 0x3a, - 0x30, 0x36, 0x3a, 0x35, 0x32, 0x20, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; diff --git a/sys/dev/digi/EPCX.bios.h b/sys/dev/digi/EPCX.bios.h deleted file mode 100644 index c0a1a7e523a8..000000000000 --- a/sys/dev/digi/EPCX.bios.h +++ /dev/null @@ -1,2257 +0,0 @@ -/*- - * Copyright (c) 2001 Brian Somers <brian@Awfulhak.org> - * based on work by Slawa Olhovchenkov - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - */ - -static const u_char EPCX_bios[] = { - 0x4f, 0x53, 0x71, 0x3e, 0x53, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9b, 0xd0, - 0x3c, 0x48, 0x00, 0x00, 0x00, 0x00, 0x40, 0x28, 0x23, 0x29, 0x66, 0x78, 0x62, - 0x69, 0x6f, 0x73, 0x2e, 0x62, 0x69, 0x6e, 0x20, 0x20, 0x20, 0x20, 0x32, 0x2e, - 0x33, 0x2e, 0x32, 0x20, 0x20, 0x30, 0x36, 0x2f, 0x30, 0x32, 0x2f, 0x39, 0x37, - 0x00, 0x40, 0x28, 0x23, 0x29, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, - 0x74, 0x20, 0x28, 0x43, 0x29, 0x20, 0x31, 0x39, 0x39, 0x32, 0x2c, 0x20, 0x44, - 0x49, 0x47, 0x49, 0x20, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x61, 0x6c, 0x2e, 0x20, 0x41, 0x6c, 0x6c, 0x20, 0x52, 0x69, 0x67, - 0x68, 0x74, 0x73, 0x20, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x2e, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x43, 0x50, 0x55, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x6e, 0x27, 0x74, 0x20, - 0x77, 0x6f, 0x72, 0x6b, 0x5d, 0x00, 0x1e, 0x24, 0x00, 0xa3, 0x01, 0x3c, 0x10, - 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0x00, 0xa3, 0x04, 0x3c, 0x80, 0x01, - 0x84, 0x34, 0x0c, 0x00, 0x88, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, - 0x35, 0x0c, 0x00, 0x88, 0xac, 0x03, 0x83, 0x04, 0x3c, 0x90, 0x00, 0x84, 0x24, - 0xff, 0x03, 0x05, 0x24, 0x24, 0x20, 0x85, 0x00, 0x00, 0xa3, 0x05, 0x3c, 0x00, - 0x10, 0xa5, 0x34, 0x21, 0x20, 0x85, 0x00, 0x6d, 0x00, 0x05, 0x24, 0x10, 0x00, - 0x08, 0x24, 0x00, 0xa3, 0x09, 0x3c, 0x00, 0x02, 0x29, 0x35, 0x00, 0x00, 0x8a, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, 0x11, 0x00, 0x00, 0x2a, 0xa1, - 0x01, 0x00, 0x84, 0x24, 0x01, 0x00, 0x29, 0x25, 0xff, 0xff, 0x08, 0x25, 0xf8, - 0xff, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x01, 0x3c, 0x10, 0x02, - 0x25, 0xac, 0x00, 0xa3, 0x01, 0x3c, 0x14, 0x02, 0x3f, 0xac, 0x00, 0xa3, 0x01, - 0x3c, 0x18, 0x02, 0x3d, 0xac, 0x01, 0x00, 0x08, 0x24, 0x00, 0xa3, 0x01, 0x3c, - 0x10, 0x0c, 0x28, 0xac, 0x00, 0xa3, 0x1d, 0x3c, 0x00, 0x04, 0xbd, 0x37, 0xc0, - 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x10, 0x00, 0x00, - 0x00, 0x00, 0xb3, 0x00, 0x1e, 0x24, 0x00, 0xa3, 0x01, 0x3c, 0x10, 0x00, 0x3e, - 0xac, 0x00, 0x00, 0x1e, 0x24, 0x00, 0x10, 0x08, 0x3c, 0x00, 0x60, 0x88, 0x40, - 0x00, 0xa3, 0x04, 0x3c, 0x00, 0xa3, 0x05, 0x3c, 0x00, 0x10, 0xa5, 0x34, 0x00, - 0x00, 0x80, 0xac, 0x04, 0x00, 0x84, 0x24, 0xfd, 0xff, 0x85, 0x14, 0x00, 0x00, - 0x00, 0x00, 0xc8, 0x00, 0x1e, 0x24, 0x00, 0xa3, 0x01, 0x3c, 0x10, 0x00, 0x3e, - 0xac, 0x00, 0x00, 0x1e, 0x24, 0xff, 0xff, 0x08, 0x24, 0xb5, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x25, 0xb2, 0x00, 0x00, 0x15, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x08, 0x24, 0x21, 0x08, 0x00, 0x01, 0xae, 0x00, - 0x28, 0x14, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x21, 0x24, 0xab, 0x00, 0x20, - 0x14, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x24, 0xa8, 0x00, 0x48, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0xa5, 0x00, 0x40, 0x14, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x24, 0xa2, 0x00, 0x68, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x63, 0x24, 0x9f, 0x00, 0x60, 0x14, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x04, 0x24, 0x9c, 0x00, 0x88, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x84, 0x24, 0x99, 0x00, 0x80, 0x14, 0x00, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x05, 0x24, 0x96, 0x00, 0xa8, 0x14, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0xa5, 0x24, 0x93, 0x00, 0xa0, 0x14, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x06, - 0x24, 0x90, 0x00, 0xc8, 0x14, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xc6, 0x24, - 0x8d, 0x00, 0xc0, 0x14, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x07, 0x24, 0x8a, - 0x00, 0xe8, 0x14, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xe7, 0x24, 0x87, 0x00, - 0xe0, 0x14, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x09, 0x24, 0x84, 0x00, 0x28, - 0x15, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x29, 0x25, 0x81, 0x00, 0x20, 0x15, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0a, 0x24, 0x7e, 0x00, 0x48, 0x15, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x4a, 0x25, 0x7b, 0x00, 0x40, 0x15, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x0b, 0x24, 0x78, 0x00, 0x68, 0x15, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x6b, 0x25, 0x75, 0x00, 0x60, 0x15, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x0c, 0x24, 0x72, 0x00, 0x88, 0x15, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x8c, 0x25, 0x6f, 0x00, 0x80, 0x15, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x0d, 0x24, 0x6c, 0x00, 0xa8, 0x15, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xad, - 0x25, 0x69, 0x00, 0xa0, 0x15, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0e, 0x24, - 0x66, 0x00, 0xc8, 0x15, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xce, 0x25, 0x63, - 0x00, 0xc0, 0x15, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0f, 0x24, 0x60, 0x00, - 0xe8, 0x15, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xef, 0x25, 0x5d, 0x00, 0xe0, - 0x15, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x18, 0x24, 0x5a, 0x00, 0x08, 0x17, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x18, 0x27, 0x57, 0x00, 0x00, 0x17, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x10, 0x24, 0x54, 0x00, 0x08, 0x16, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x10, 0x26, 0x51, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x11, 0x24, 0x4e, 0x00, 0x28, 0x16, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x31, 0x26, 0x4b, 0x00, 0x20, 0x16, 0x00, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x12, 0x24, 0x48, 0x00, 0x48, 0x16, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x52, 0x26, 0x45, 0x00, 0x40, 0x16, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x13, - 0x24, 0x42, 0x00, 0x68, 0x16, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x73, 0x26, - 0x3f, 0x00, 0x60, 0x16, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x14, 0x24, 0x3c, - 0x00, 0x88, 0x16, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x94, 0x26, 0x39, 0x00, - 0x80, 0x16, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x15, 0x24, 0x36, 0x00, 0xa8, - 0x16, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xb5, 0x26, 0x33, 0x00, 0xa0, 0x16, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x16, 0x24, 0x30, 0x00, 0xc8, 0x16, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0xd6, 0x26, 0x2d, 0x00, 0xc0, 0x16, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x17, 0x24, 0x2a, 0x00, 0xe8, 0x16, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0xf7, 0x26, 0x27, 0x00, 0xe0, 0x16, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x1a, 0x24, 0x24, 0x00, 0x48, 0x17, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x5a, 0x27, 0x21, 0x00, 0x40, 0x17, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x1b, 0x24, 0x1e, 0x00, 0x68, 0x17, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x7b, - 0x27, 0x1b, 0x00, 0x60, 0x17, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1c, 0x24, - 0x18, 0x00, 0x88, 0x17, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x9c, 0x27, 0x15, - 0x00, 0x80, 0x17, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1d, 0x24, 0x12, 0x00, - 0xa8, 0x17, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xbd, 0x27, 0x0f, 0x00, 0xa0, - 0x17, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1e, 0x24, 0x0c, 0x00, 0xc8, 0x17, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xde, 0x27, 0x09, 0x00, 0xc0, 0x17, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x1f, 0x24, 0x06, 0x00, 0xe8, 0x17, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0xff, 0x27, 0x03, 0x00, 0xe0, 0x17, 0x00, 0x00, 0x00, - 0x00, 0x0e, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6b, 0x01, 0x1e, 0x24, - 0x00, 0xa3, 0x01, 0x3c, 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0x03, - 0x83, 0x04, 0x3c, 0xa0, 0x00, 0x84, 0x24, 0xff, 0x03, 0x05, 0x24, 0x24, 0x20, - 0x85, 0x00, 0x00, 0xa3, 0x05, 0x3c, 0x00, 0x10, 0xa5, 0x34, 0x21, 0x20, 0x85, - 0x00, 0x08, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7d, 0x01, 0x1e, 0x24, - 0x00, 0xa3, 0x01, 0x3c, 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0x04, - 0x83, 0x1c, 0x3c, 0x20, 0xdd, 0x9c, 0x27, 0x81, 0x01, 0x1e, 0x24, 0x00, 0xa3, - 0x01, 0x3c, 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0x01, 0x00, 0x11, - 0x04, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x01, 0x1e, 0x24, 0x00, 0xa3, 0x01, 0x3c, - 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0x03, 0x83, 0x05, 0x3c, 0x00, - 0x00, 0xa5, 0x24, 0x03, 0x83, 0x06, 0x3c, 0x80, 0x68, 0xc6, 0x24, 0x03, 0x83, - 0x04, 0x3c, 0xd8, 0x04, 0x84, 0x24, 0x23, 0x20, 0xe4, 0x03, 0x21, 0x20, 0x86, - 0x00, 0xfc, 0xff, 0x84, 0x24, 0xfc, 0xff, 0xc6, 0x24, 0x00, 0x00, 0x88, 0x8c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0xac, 0x2b, 0x08, 0xa6, 0x00, 0xf9, - 0xff, 0x20, 0x14, 0x00, 0x00, 0x00, 0x00, 0xac, 0x01, 0x1e, 0x24, 0x00, 0xa3, - 0x01, 0x3c, 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0xb7, 0x01, 0x1e, - 0x24, 0x00, 0xa3, 0x01, 0x3c, 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, - 0x03, 0x83, 0x1f, 0x3c, 0x68, 0x05, 0xff, 0x27, 0x03, 0x83, 0x04, 0x3c, 0x40, - 0x06, 0x84, 0x24, 0x00, 0xa0, 0x01, 0x3c, 0x25, 0x20, 0x81, 0x00, 0x08, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x01, 0x1e, 0x24, 0x00, 0xa3, 0x01, - 0x3c, 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0x00, 0xa0, 0x08, 0x3c, - 0x80, 0x00, 0x08, 0x35, 0x03, 0x83, 0x09, 0x3c, 0xc0, 0x05, 0x29, 0x25, 0x03, - 0x83, 0x0a, 0x3c, 0x10, 0x06, 0x4a, 0x25, 0x03, 0xa3, 0x0b, 0x3c, 0x25, 0x48, - 0x2b, 0x01, 0x25, 0x50, 0x4b, 0x01, 0x00, 0x00, 0x2b, 0x8d, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0b, 0xad, 0x04, 0x00, 0x08, 0x25, 0x04, 0x00, 0x29, 0x25, - 0xfa, 0xff, 0x2a, 0x15, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xa3, 0x1a, 0x3c, 0x80, 0x01, 0x5a, 0x37, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x40, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x1a, - 0x40, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1b, 0x3c, 0xfe, 0x00, 0x7b, 0x37, - 0x00, 0x00, 0x00, 0x00, 0x24, 0xd0, 0x5b, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x60, 0x9a, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x1a, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x10, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x09, 0x02, 0x1e, 0x24, 0x00, 0xa3, 0x01, 0x3c, - 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0x03, 0x83, 0x1d, 0x3c, 0x68, - 0x6c, 0xbd, 0x27, 0xc8, 0xc3, 0xc0, 0x0c, 0x00, 0x00, 0x1e, 0x24, 0x55, 0xc0, - 0xc0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x15, 0x00, 0x1e, 0x24, 0x00, 0xa3, 0x01, 0x3c, 0x10, 0x00, 0x3e, 0xac, - 0x00, 0x00, 0x1e, 0x24, 0x03, 0x83, 0x08, 0x3c, 0x68, 0x06, 0x08, 0x25, 0x00, - 0xa0, 0x01, 0x3c, 0x25, 0x40, 0x01, 0x01, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x60, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x05, - 0x3c, 0x00, 0x60, 0x85, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xa0, 0x09, 0x3c, 0x01, 0x00, 0x01, 0x3c, 0x23, 0x40, 0x21, 0x01, 0x03, - 0x00, 0x00, 0xa1, 0x04, 0x00, 0x08, 0x25, 0xfd, 0xff, 0x09, 0x15, 0x00, 0x00, - 0x00, 0x00, 0x03, 0x00, 0x05, 0x3c, 0x00, 0x60, 0x85, 0x40, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x09, 0x3c, 0x01, 0x00, 0x01, 0x3c, - 0x23, 0x40, 0x21, 0x01, 0x03, 0x00, 0x00, 0xa1, 0x04, 0x00, 0x08, 0x25, 0xfd, - 0xff, 0x09, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x60, 0x84, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x10, 0x04, 0x40, 0xff, 0xff, 0x08, 0x3c, 0xff, 0x3f, 0x08, 0x35, - 0x24, 0x20, 0x88, 0x00, 0x00, 0x10, 0x84, 0x40, 0x03, 0x83, 0x08, 0x3c, 0x80, - 0x68, 0x08, 0x25, 0x03, 0x83, 0x09, 0x3c, 0x90, 0x6c, 0x29, 0x25, 0xfc, 0xff, - 0x01, 0x24, 0x24, 0x48, 0x21, 0x01, 0xfc, 0xff, 0x01, 0x24, 0x24, 0x40, 0x01, - 0x01, 0x00, 0x00, 0x00, 0xad, 0x04, 0x00, 0x08, 0x25, 0xfd, 0xff, 0x09, 0x15, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x60, 0x02, 0x40, 0xff, 0xff, 0x01, 0x3c, 0xfe, 0x00, 0x21, 0x34, 0x25, 0x20, - 0x81, 0x00, 0x24, 0x40, 0x44, 0x00, 0x00, 0x60, 0x88, 0x40, 0x01, 0xff, 0x42, - 0x30, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x02, 0x40, - 0x00, 0x00, 0x00, 0x00, 0x26, 0x40, 0x44, 0x00, 0x01, 0xff, 0x08, 0x31, 0x26, - 0x40, 0x02, 0x01, 0x00, 0x60, 0x88, 0x40, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x60, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, - 0x24, 0x24, 0x48, 0x01, 0x01, 0x00, 0x60, 0x89, 0x40, 0x00, 0x68, 0x02, 0x40, - 0x00, 0x03, 0x84, 0x30, 0x25, 0x18, 0x44, 0x00, 0x00, 0x68, 0x83, 0x40, 0x00, - 0x60, 0x88, 0x40, 0x24, 0x10, 0x44, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x60, 0x08, 0x40, 0x00, 0x03, 0x84, 0x30, 0xfe, 0xff, 0x01, - 0x24, 0x24, 0x48, 0x01, 0x01, 0x00, 0x60, 0x89, 0x40, 0x00, 0x68, 0x02, 0x40, - 0x27, 0x18, 0x80, 0x00, 0x24, 0x18, 0x62, 0x00, 0x00, 0x68, 0x83, 0x40, 0x00, - 0x60, 0x88, 0x40, 0x24, 0x10, 0x44, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x10, 0x08, 0x3c, 0x00, 0x60, 0x88, 0x40, 0xc0, 0xbf, 0x08, - 0x3c, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x08, 0x40, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x09, 0x3c, 0xfe, 0x00, 0x29, 0x35, 0x00, - 0x00, 0x00, 0x00, 0x24, 0x40, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, 0x25, 0x40, - 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x88, 0x40, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xa8, 0xff, 0xbd, 0x27, 0x50, 0x00, 0xbf, 0xaf, 0x4c, 0x00, 0xb1, 0xaf, 0x48, - 0x00, 0xb0, 0xaf, 0x00, 0xa3, 0x11, 0x3c, 0x00, 0x80, 0x84, 0x27, 0xcc, 0xc7, - 0xc0, 0x0c, 0x80, 0x01, 0x31, 0x36, 0x00, 0xa3, 0x01, 0x3c, 0x04, 0x01, 0x22, - 0xac, 0x01, 0x01, 0x02, 0x24, 0x24, 0x00, 0x22, 0xae, 0x0c, 0x00, 0x20, 0xae, - 0x20, 0x00, 0x05, 0x3c, 0x21, 0x30, 0x00, 0x00, 0x18, 0x00, 0xa7, 0x27, 0x02, - 0x00, 0x08, 0x3c, 0x80, 0x18, 0x06, 0x00, 0x21, 0x18, 0x67, 0x00, 0x42, 0x20, - 0x05, 0x00, 0x00, 0xa3, 0x02, 0x3c, 0x21, 0x10, 0x44, 0x00, 0xf8, 0xff, 0x42, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0xac, 0x00, 0xa3, 0x02, 0x3c, - 0x21, 0x10, 0x44, 0x00, 0xfc, 0xff, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x18, - 0x00, 0x62, 0xac, 0x21, 0x28, 0x80, 0x00, 0x2b, 0x10, 0x05, 0x01, 0xf0, 0xff, - 0x40, 0x14, 0x01, 0x00, 0xc6, 0x24, 0x20, 0x00, 0x05, 0x3c, 0x21, 0x30, 0x00, - 0x00, 0x23, 0x01, 0x04, 0x3c, 0x67, 0x45, 0x84, 0x34, 0xdc, 0xfe, 0x03, 0x3c, - 0x98, 0xba, 0x63, 0x34, 0xf0, 0xf0, 0x09, 0x3c, 0xf0, 0xf0, 0x29, 0x35, 0x0f, - 0x0f, 0x08, 0x3c, 0x0f, 0x0f, 0x08, 0x35, 0x02, 0x00, 0x07, 0x3c, 0x00, 0xa3, - 0x01, 0x3c, 0x21, 0x08, 0x25, 0x00, 0xf8, 0xff, 0x24, 0xac, 0x00, 0xa3, 0x01, - 0x3c, 0x21, 0x08, 0x25, 0x00, 0xfc, 0xff, 0x23, 0xac, 0x42, 0x10, 0x05, 0x00, - 0x00, 0xa3, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0xf8, 0xff, 0x29, 0xac, 0x00, - 0xa3, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0xfc, 0xff, 0x28, 0xac, 0x00, 0xa3, - 0x02, 0x3c, 0x21, 0x10, 0x45, 0x00, 0xf8, 0xff, 0x42, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x07, 0x00, 0x44, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x02, 0x3c, - 0x21, 0x10, 0x45, 0x00, 0xfc, 0xff, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x05, - 0x00, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0x42, 0x28, 0x05, 0x00, 0x2b, 0x10, - 0xe5, 0x00, 0xe4, 0xff, 0x40, 0x14, 0x01, 0x00, 0xc6, 0x24, 0x42, 0x20, 0x05, - 0x00, 0x80, 0x10, 0x06, 0x00, 0x18, 0x00, 0xa3, 0x27, 0x21, 0x10, 0x43, 0x00, - 0x00, 0x00, 0x43, 0x8c, 0x00, 0xa3, 0x01, 0x3c, 0x21, 0x08, 0x24, 0x00, 0xf8, - 0xff, 0x23, 0xac, 0x18, 0x00, 0x42, 0x8c, 0x00, 0xa3, 0x01, 0x3c, 0x21, 0x08, - 0x24, 0x00, 0xfc, 0xff, 0x22, 0xac, 0x10, 0x00, 0x25, 0xae, 0x08, 0x80, 0x84, - 0x27, 0xcc, 0xc7, 0xc0, 0x0c, 0x00, 0xa3, 0x10, 0x3c, 0x00, 0xa3, 0x01, 0x3c, - 0x04, 0x01, 0x22, 0xac, 0x10, 0x80, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x80, - 0x01, 0x10, 0x36, 0x28, 0x80, 0x84, 0x27, 0x10, 0x00, 0x05, 0x8e, 0x86, 0xc9, - 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x80, 0x84, 0x27, 0x86, 0xc9, 0xc0, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x54, 0x80, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x83, 0x04, 0x3c, 0x00, 0x00, 0x84, 0x24, 0x03, - 0x83, 0x05, 0x3c, 0xbc, 0xc7, 0xc0, 0x0c, 0x80, 0x68, 0xa5, 0x24, 0x20, 0x00, - 0x02, 0xae, 0x5c, 0x80, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x20, 0x00, 0x03, 0x8e, 0xff, 0xff, 0x02, 0x24, 0x0b, 0x00, 0x62, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x42, 0x34, 0x0c, 0x00, 0x02, 0xae, 0x74, 0x80, 0x84, 0x27, 0x20, 0x00, - 0x05, 0x8e, 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xc2, 0xc0, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x54, 0x80, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0x90, 0x80, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x94, 0x80, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x02, 0x24, 0x10, 0x00, 0xa2, 0xaf, 0x00, 0xa3, 0x04, - 0x3c, 0x00, 0x10, 0x84, 0x34, 0x02, 0xa3, 0x05, 0x3c, 0xf0, 0xff, 0xa5, 0x34, - 0x01, 0x00, 0x06, 0x24, 0xef, 0xcb, 0xc0, 0x0c, 0x21, 0x38, 0x00, 0x00, 0x07, - 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x22, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x08, 0x00, 0x42, 0x34, 0x0c, 0x00, 0x22, 0xae, 0xa5, 0xc2, 0xc0, - 0x08, 0x00, 0xa3, 0x10, 0x3c, 0x71, 0xc7, 0xc0, 0x0c, 0x0a, 0x00, 0x04, 0x24, - 0x00, 0xa3, 0x10, 0x3c, 0x80, 0x01, 0x10, 0x36, 0x10, 0x00, 0x03, 0x8e, 0x04, - 0x00, 0x02, 0x3c, 0x2b, 0x10, 0x43, 0x00, 0x1e, 0x00, 0x40, 0x10, 0x00, 0x00, - 0x00, 0x00, 0xa0, 0x80, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x10, 0x00, 0x05, 0x8e, 0xff, 0xff, 0x02, 0x3c, 0x10, 0x00, 0x42, 0x34, - 0x21, 0x28, 0xa2, 0x00, 0x00, 0xa3, 0x02, 0x3c, 0x25, 0x28, 0xa2, 0x00, 0xff, - 0x1f, 0x02, 0x3c, 0xff, 0xff, 0x42, 0x34, 0x24, 0x28, 0xa2, 0x00, 0x00, 0xa0, - 0x03, 0x3c, 0x01, 0x00, 0x02, 0x24, 0x10, 0x00, 0xa2, 0xaf, 0x04, 0xa3, 0x04, - 0x3c, 0x25, 0x28, 0xa3, 0x00, 0x01, 0x00, 0x06, 0x24, 0xef, 0xcb, 0xc0, 0x0c, - 0x21, 0x38, 0x00, 0x00, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0c, - 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x42, 0x34, 0xc8, 0xc2, - 0xc0, 0x08, 0x0c, 0x00, 0x22, 0xae, 0x71, 0xc7, 0xc0, 0x0c, 0x0a, 0x00, 0x04, - 0x24, 0xa8, 0x80, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x02, 0x24, 0x10, 0x00, 0xa2, 0xaf, 0x00, 0xa0, 0x04, 0x3c, 0x00, - 0x10, 0x84, 0x34, 0x03, 0xa0, 0x05, 0x3c, 0xf0, 0xff, 0xa5, 0x34, 0x01, 0x00, - 0x06, 0x24, 0xef, 0xcb, 0xc0, 0x0c, 0x21, 0x38, 0x00, 0x00, 0x06, 0x00, 0x40, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x08, 0x00, 0x42, 0x34, 0xdd, 0xc2, 0xc0, 0x08, 0x0c, 0x00, 0x22, 0xae, 0x71, - 0xc7, 0xc0, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0xb0, 0x80, 0x84, 0x27, 0x86, 0xc9, - 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xa0, 0xaf, 0x00, 0xa3, 0x04, - 0x3c, 0x00, 0x10, 0x84, 0x34, 0x00, 0xa3, 0x05, 0x3c, 0x00, 0x20, 0xa5, 0x34, - 0x01, 0x00, 0x06, 0x24, 0xef, 0xcb, 0xc0, 0x0c, 0x21, 0x38, 0x00, 0x00, 0x06, - 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x22, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x08, 0x00, 0x42, 0x34, 0xf1, 0xc2, 0xc0, 0x08, 0x0c, 0x00, 0x22, - 0xae, 0x71, 0xc7, 0xc0, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0xc4, 0x80, 0x84, 0x27, - 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xa0, 0xaf, 0x00, - 0xa0, 0x04, 0x3c, 0x00, 0x10, 0x84, 0x34, 0x00, 0xa0, 0x05, 0x3c, 0x00, 0x20, - 0xa5, 0x34, 0x01, 0x00, 0x06, 0x24, 0xef, 0xcb, 0xc0, 0x0c, 0x21, 0x38, 0x00, - 0x00, 0x07, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x22, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x42, 0x34, 0x0c, 0x00, 0x22, 0xae, 0x07, - 0xc3, 0xc0, 0x08, 0x05, 0xa2, 0x03, 0x3c, 0x71, 0xc7, 0xc0, 0x0c, 0x0a, 0x00, - 0x04, 0x24, 0x05, 0xa2, 0x03, 0x3c, 0x81, 0x00, 0x02, 0x24, 0x50, 0x8f, 0x82, - 0xaf, 0x81, 0x00, 0x02, 0x24, 0x00, 0x00, 0x62, 0xa4, 0x00, 0xa3, 0x02, 0x3c, - 0x80, 0x01, 0x42, 0x34, 0x49, 0x00, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, 0x33, - 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x80, 0x84, 0x27, 0xcc, 0xc7, - 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x01, 0x3c, 0x04, 0x01, 0x22, - 0xac, 0xbd, 0xca, 0xc0, 0x0c, 0x21, 0x20, 0x00, 0x00, 0x07, 0x00, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x00, 0x42, 0x34, 0x0c, 0x00, 0x22, 0xae, 0x23, 0xc3, 0xc0, 0x08, 0x00, 0xa3, - 0x02, 0x3c, 0x71, 0xc7, 0xc0, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x00, 0xa3, 0x02, - 0x3c, 0x80, 0x01, 0x42, 0x34, 0x49, 0x00, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x80, 0x84, 0x27, 0xcc, - 0xc7, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x01, 0x3c, 0x04, 0x01, - 0x22, 0xac, 0x10, 0x00, 0xa0, 0xaf, 0x01, 0x00, 0x02, 0x24, 0x14, 0x00, 0xa2, - 0xaf, 0x21, 0x20, 0x00, 0x00, 0xff, 0xff, 0x05, 0x24, 0x00, 0x01, 0x06, 0x24, - 0x5c, 0xd0, 0xc0, 0x0c, 0xff, 0xff, 0x07, 0x24, 0x06, 0x00, 0x40, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x0c, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, - 0x42, 0x34, 0x3e, 0xc3, 0xc0, 0x08, 0x0c, 0x00, 0x22, 0xae, 0x71, 0xc7, 0xc0, - 0x0c, 0x0a, 0x00, 0x04, 0x24, 0xe4, 0x80, 0x84, 0x27, 0xcc, 0xc7, 0xc0, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x01, 0x3c, 0x04, 0x01, 0x22, 0xac, 0x50, - 0x00, 0xbf, 0x8f, 0x4c, 0x00, 0xb1, 0x8f, 0x48, 0x00, 0xb0, 0x8f, 0x08, 0x00, - 0xe0, 0x03, 0x58, 0x00, 0xbd, 0x27, 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, - 0xaf, 0xec, 0x80, 0x84, 0x27, 0x3a, 0xc0, 0xc0, 0x0c, 0xfb, 0x00, 0x05, 0x24, - 0x10, 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, - 0x00, 0x00, 0x00, 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0xec, 0x80, - 0x84, 0x27, 0x3a, 0xc0, 0xc0, 0x0c, 0x05, 0x01, 0x05, 0x24, 0x10, 0x00, 0xbf, - 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, - 0xd8, 0xff, 0xbd, 0x27, 0x24, 0x00, 0xbf, 0xaf, 0x20, 0x00, 0xb4, 0xaf, 0x1c, - 0x00, 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, - 0xb0, 0xaf, 0x21, 0x90, 0x80, 0x00, 0xff, 0xff, 0x10, 0x24, 0x00, 0xa3, 0x14, - 0x3c, 0x80, 0x01, 0x94, 0x36, 0xff, 0xff, 0x13, 0x24, 0x49, 0x00, 0x82, 0x92, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x40, 0x14, 0x00, 0xa3, 0x03, 0x3c, 0x80, - 0x01, 0x63, 0x34, 0x49, 0x00, 0x62, 0x90, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xff, - 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x91, 0x92, 0x49, 0x00, 0x80, - 0xa2, 0x00, 0x16, 0x11, 0x00, 0x03, 0x1e, 0x02, 0x00, 0x0a, 0x00, 0x02, 0x24, - 0x0a, 0x00, 0x62, 0x10, 0x0b, 0x00, 0x62, 0x28, 0x05, 0x00, 0x40, 0x10, 0x08, - 0x00, 0x02, 0x24, 0x08, 0x00, 0x62, 0x10, 0x10, 0x00, 0x02, 0x24, 0x96, 0xc3, - 0xc0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x02, 0x24, 0x18, 0x00, 0x62, - 0x14, 0x10, 0x00, 0x02, 0x24, 0xc0, 0xc3, 0xc0, 0x08, 0x21, 0x10, 0x00, 0x02, - 0xe4, 0xff, 0x13, 0x12, 0x00, 0x00, 0x00, 0x00, 0x40, 0xca, 0xc0, 0x0c, 0x08, - 0x00, 0x04, 0x24, 0x40, 0xca, 0xc0, 0x0c, 0x20, 0x00, 0x04, 0x24, 0x40, 0xca, - 0xc0, 0x0c, 0x08, 0x00, 0x04, 0x24, 0x1a, 0x00, 0x12, 0x02, 0x02, 0x00, 0x40, - 0x16, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x07, 0x00, 0xff, 0xff, 0x01, 0x24, - 0x04, 0x00, 0x41, 0x16, 0x00, 0x80, 0x01, 0x3c, 0x02, 0x00, 0x01, 0x16, 0x00, - 0x00, 0x00, 0x00, 0x0d, 0x00, 0x06, 0x00, 0x12, 0x80, 0x00, 0x00, 0x66, 0xc3, - 0xc0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x42, 0x16, 0xd0, 0xff, 0x22, - 0x26, 0x9f, 0xff, 0x22, 0x26, 0xff, 0x00, 0x42, 0x30, 0x06, 0x00, 0x42, 0x2c, - 0x03, 0x00, 0x40, 0x10, 0xbf, 0xff, 0x22, 0x26, 0xe0, 0xff, 0x31, 0x26, 0xbf, - 0xff, 0x22, 0x26, 0xff, 0x00, 0x42, 0x30, 0x06, 0x00, 0x42, 0x2c, 0x0d, 0x00, - 0x40, 0x10, 0xd0, 0xff, 0x22, 0x26, 0x03, 0x00, 0x13, 0x16, 0x18, 0x00, 0x12, - 0x02, 0x21, 0x80, 0x00, 0x00, 0x18, 0x00, 0x12, 0x02, 0x00, 0x26, 0x11, 0x00, - 0x03, 0x26, 0x04, 0x00, 0x12, 0x28, 0x00, 0x00, 0x21, 0x10, 0xa4, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x40, 0xca, 0xc0, 0x0c, 0xc9, 0xff, 0x50, 0x24, 0xd0, 0xff, - 0x22, 0x26, 0xff, 0x00, 0x42, 0x30, 0x0a, 0x00, 0x42, 0x2c, 0xb4, 0xff, 0x40, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x13, 0x16, 0x18, 0x00, 0x12, 0x02, - 0x21, 0x80, 0x00, 0x00, 0x18, 0x00, 0x12, 0x02, 0x00, 0x26, 0x11, 0x00, 0x03, - 0x26, 0x04, 0x00, 0x12, 0x28, 0x00, 0x00, 0x21, 0x10, 0xa4, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x40, 0xca, 0xc0, 0x0c, 0xd0, 0xff, 0x50, 0x24, 0x66, 0xc3, 0xc0, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0xbf, 0x8f, 0x20, 0x00, 0xb4, 0x8f, - 0x1c, 0x00, 0xb3, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, - 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x28, 0x00, 0xbd, 0x27, 0x90, 0xff, - 0xbd, 0x27, 0x6c, 0x00, 0xbf, 0xaf, 0x68, 0x00, 0xbe, 0xaf, 0x64, 0x00, 0xb7, - 0xaf, 0x60, 0x00, 0xb6, 0xaf, 0x5c, 0x00, 0xb5, 0xaf, 0x58, 0x00, 0xb4, 0xaf, - 0x54, 0x00, 0xb3, 0xaf, 0x50, 0x00, 0xb2, 0xaf, 0x4c, 0x00, 0xb1, 0xaf, 0x2c, - 0xd4, 0xc0, 0x0c, 0x48, 0x00, 0xb0, 0xaf, 0x05, 0xa2, 0x03, 0x3c, 0x01, 0x00, - 0x10, 0x24, 0x50, 0x8f, 0x90, 0xaf, 0x01, 0x00, 0x02, 0x24, 0x00, 0x00, 0x62, - 0xa4, 0x10, 0xca, 0xc0, 0x0c, 0x00, 0xa3, 0x11, 0x3c, 0xfc, 0x80, 0x84, 0x27, - 0xcc, 0xc7, 0xc0, 0x0c, 0x00, 0x01, 0x31, 0x36, 0x04, 0x81, 0x84, 0x27, 0xcc, - 0xc7, 0xc0, 0x0c, 0x00, 0x00, 0x22, 0xae, 0x0c, 0x81, 0x84, 0x27, 0xcc, 0xc7, - 0xc0, 0x0c, 0x04, 0x00, 0x22, 0xae, 0x14, 0x81, 0x84, 0x27, 0xcc, 0xc7, 0xc0, - 0x0c, 0x08, 0x00, 0x22, 0xae, 0x0c, 0x00, 0x22, 0xae, 0x03, 0x00, 0x02, 0x24, - 0x14, 0x00, 0x22, 0xae, 0x00, 0xa3, 0x02, 0x3c, 0xca, 0x01, 0x42, 0x34, 0x18, - 0x00, 0x22, 0xae, 0x00, 0xa3, 0x02, 0x3c, 0x30, 0x0c, 0x42, 0x34, 0x1c, 0x00, - 0x22, 0xae, 0x00, 0xa3, 0x02, 0x3c, 0x80, 0x01, 0x42, 0x34, 0x20, 0x00, 0x22, - 0xae, 0x04, 0x00, 0x40, 0xac, 0x08, 0x00, 0x40, 0xac, 0x14, 0x00, 0x40, 0xac, - 0x18, 0x00, 0x40, 0xac, 0x1c, 0x00, 0x50, 0xac, 0x01, 0x01, 0x03, 0x24, 0x24, - 0x00, 0x43, 0xac, 0x28, 0x00, 0x40, 0xa4, 0x2a, 0x00, 0x40, 0xa4, 0x4a, 0x00, - 0x40, 0xa4, 0x4c, 0x00, 0x40, 0xa4, 0xff, 0x01, 0x03, 0x24, 0x4e, 0x00, 0x43, - 0xa4, 0x10, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x52, 0x2c, - 0x09, 0x00, 0x40, 0x12, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x81, 0x84, 0x27, 0xcc, - 0xc7, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x80, 0x84, 0x27, 0xcc, 0xc7, - 0xc0, 0x0c, 0x21, 0x80, 0x40, 0x00, 0x26, 0x80, 0x02, 0x02, 0x10, 0x00, 0x30, - 0xae, 0x08, 0xc2, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x02, 0x24, - 0x00, 0xa3, 0x01, 0x3c, 0x00, 0x0c, 0x22, 0xa0, 0x44, 0x00, 0x02, 0x24, 0x00, - 0xa3, 0x01, 0x3c, 0x01, 0x0c, 0x22, 0xa0, 0x00, 0xa3, 0x02, 0x3c, 0x30, 0x0c, - 0x42, 0x34, 0x00, 0x00, 0x40, 0xa0, 0x02, 0x00, 0x40, 0xa0, 0x08, 0x00, 0x40, - 0xa4, 0x45, 0x23, 0x02, 0x3c, 0x89, 0x67, 0x42, 0x34, 0x00, 0xa3, 0x01, 0x3c, - 0x10, 0x00, 0x22, 0xac, 0x2c, 0x81, 0x84, 0x27, 0x02, 0x00, 0x40, 0x12, 0x00, - 0x00, 0x00, 0x00, 0x24, 0x81, 0x84, 0x27, 0xcc, 0xc7, 0xc0, 0x0c, 0x00, 0xa3, - 0x15, 0x3c, 0x00, 0xa3, 0x01, 0x3c, 0x04, 0x01, 0x22, 0xac, 0x80, 0x01, 0xb5, - 0x36, 0x18, 0x00, 0xa8, 0x27, 0x40, 0x00, 0xa8, 0xaf, 0x00, 0xa3, 0x02, 0x3c, - 0x10, 0x00, 0x42, 0x34, 0x00, 0x00, 0x43, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x63, 0x24, 0xc0, 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x43, 0xac, 0x00, 0xa3, - 0x02, 0x3c, 0x10, 0x01, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x40, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x81, 0x84, 0x27, 0xcc, 0xc7, 0xc0, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0xfc, 0x80, 0x84, 0x27, 0xcc, 0xc7, 0xc0, 0x0c, 0x21, - 0x80, 0x40, 0x00, 0x26, 0x80, 0x02, 0x02, 0x00, 0xa3, 0x01, 0x3c, 0x10, 0x01, - 0x30, 0xac, 0x24, 0x81, 0x84, 0x27, 0xcc, 0xc7, 0xc0, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xa3, 0x01, 0x3c, 0x04, 0x01, 0x22, 0xac, 0x49, 0x00, 0xa2, 0x92, - 0x00, 0x00, 0x00, 0x00, 0xe4, 0xff, 0x40, 0x10, 0x00, 0xa3, 0x02, 0x3c, 0x48, - 0x00, 0xb4, 0x92, 0x49, 0x00, 0xa0, 0xa2, 0x21, 0x90, 0x00, 0x00, 0x21, 0x88, - 0x00, 0x00, 0x80, 0x10, 0x11, 0x00, 0x40, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x21, 0x10, 0x48, 0x00, 0x10, 0x00, 0x40, 0xac, 0x00, 0x00, 0x40, 0xac, - 0x01, 0x00, 0x31, 0x26, 0x04, 0x00, 0x22, 0x2a, 0xf8, 0xff, 0x40, 0x14, 0x80, - 0x10, 0x11, 0x00, 0xff, 0x00, 0x82, 0x32, 0xfc, 0xff, 0x43, 0x24, 0x85, 0x00, - 0x62, 0x2c, 0x07, 0x03, 0x40, 0x10, 0x80, 0x10, 0x03, 0x00, 0x03, 0x83, 0x01, - 0x3c, 0x21, 0x08, 0x22, 0x00, 0xa0, 0x53, 0x22, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x81, 0x84, 0x27, 0x86, - 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x81, 0x84, 0x27, 0x86, 0xc9, - 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x81, 0x84, 0x27, 0x86, 0xc9, 0xc0, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x81, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0xd8, 0x81, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0xfc, 0x81, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x20, 0x82, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x58, 0x82, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x7c, 0x82, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x2a, - 0xc4, 0xc0, 0x08, 0x00, 0xa3, 0x02, 0x3c, 0xac, 0x82, 0x84, 0x27, 0x86, 0xc9, - 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x5a, 0xc3, 0xc0, 0x0c, 0x0a, 0x00, 0x04, - 0x24, 0xd0, 0x82, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x21, 0x88, 0x40, 0x00, - 0xa4, 0xff, 0x20, 0x12, 0x00, 0xa3, 0x02, 0x3c, 0x0d, 0xc5, 0xc0, 0x08, 0xff, - 0xff, 0x31, 0x26, 0x01, 0x00, 0x52, 0x26, 0x80, 0x81, 0x84, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x86, 0xc9, 0xc0, 0x0c, 0x21, 0x28, 0x40, 0x02, 0xbd, 0xca, 0xc0, - 0x0c, 0x21, 0x20, 0x00, 0x00, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x9b, - 0xc4, 0xc0, 0x08, 0x18, 0x00, 0xa2, 0xaf, 0x28, 0x00, 0xa2, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x28, 0x00, 0xa2, 0xaf, 0x49, 0x00, 0xa2, - 0x92, 0x00, 0x00, 0x00, 0x00, 0x72, 0x00, 0x40, 0x14, 0x01, 0x00, 0x10, 0x26, - 0x14, 0x00, 0x02, 0x2a, 0xe9, 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x80, - 0x81, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x86, 0xc9, 0xc0, 0x0c, 0x21, 0x28, - 0x40, 0x02, 0x10, 0x00, 0xa0, 0xaf, 0x00, 0xa3, 0x04, 0x3c, 0x10, 0x7f, 0x84, - 0x34, 0x02, 0xa3, 0x05, 0x3c, 0xf0, 0xff, 0xa5, 0x34, 0x01, 0x00, 0x06, 0x24, - 0xef, 0xcb, 0xc0, 0x0c, 0x21, 0x38, 0x00, 0x00, 0x06, 0x00, 0x40, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x1c, 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x42, 0x24, 0xb9, 0xc4, 0xc0, 0x08, 0x1c, 0x00, 0xa2, 0xaf, 0x2c, 0x00, 0xa2, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x2c, 0x00, 0xa2, 0xaf, - 0x49, 0x00, 0xa2, 0x92, 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x40, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x81, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x86, 0xc9, - 0xc0, 0x0c, 0x21, 0x28, 0x40, 0x02, 0x10, 0x00, 0xa0, 0xaf, 0x00, 0xa0, 0x04, - 0x3c, 0x10, 0x7f, 0x84, 0x34, 0x03, 0xa0, 0x05, 0x3c, 0xf0, 0xff, 0xa5, 0x34, - 0x01, 0x00, 0x06, 0x24, 0xef, 0xcb, 0xc0, 0x0c, 0x21, 0x38, 0x00, 0x00, 0x06, - 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0xa2, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0xd4, 0xc4, 0xc0, 0x08, 0x1c, 0x00, 0xa2, - 0xaf, 0x2c, 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, - 0x2c, 0x00, 0xa2, 0xaf, 0x49, 0x00, 0xa2, 0x92, 0x00, 0x00, 0x00, 0x00, 0x39, - 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x80, 0x81, 0x84, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x86, 0xc9, 0xc0, 0x0c, 0x21, 0x28, 0x40, 0x02, 0x10, 0x00, 0xa0, - 0xaf, 0x01, 0x00, 0x08, 0x24, 0x14, 0x00, 0xa8, 0xaf, 0x21, 0x20, 0x00, 0x00, - 0xff, 0xff, 0x05, 0x24, 0x00, 0x01, 0x06, 0x24, 0x5c, 0xd0, 0xc0, 0x0c, 0xff, - 0xff, 0x07, 0x24, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, - 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0xef, 0xc4, 0xc0, - 0x08, 0x20, 0x00, 0xa2, 0xaf, 0x30, 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x42, 0x24, 0x30, 0x00, 0xa2, 0xaf, 0x49, 0x00, 0xa2, 0x92, 0x00, - 0x00, 0x00, 0x00, 0x1e, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x80, 0x81, - 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x86, 0xc9, 0xc0, 0x0c, 0x21, 0x28, 0x40, - 0x02, 0x10, 0x00, 0xa0, 0xaf, 0x14, 0x00, 0xa0, 0xaf, 0x21, 0x20, 0x00, 0x00, - 0xff, 0xff, 0x05, 0x24, 0x00, 0x01, 0x06, 0x24, 0x5c, 0xd0, 0xc0, 0x0c, 0xff, - 0xff, 0x07, 0x24, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, - 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x09, 0xc5, 0xc0, - 0x08, 0x24, 0x00, 0xa2, 0xaf, 0x34, 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x42, 0x24, 0x34, 0x00, 0xa2, 0xaf, 0x49, 0x00, 0xa2, 0x92, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x14, 0xff, 0xff, 0x31, 0x26, 0xff, 0xff, - 0x02, 0x24, 0x7a, 0xff, 0x22, 0x16, 0x21, 0x80, 0x00, 0x00, 0xd4, 0x82, 0x84, - 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x21, 0x88, 0x00, 0x00, 0xe8, 0x82, 0x84, 0x27, - 0x86, 0xc9, 0xc0, 0x0c, 0x21, 0x28, 0x40, 0x02, 0x01, 0x00, 0x30, 0x26, 0x80, - 0x10, 0x11, 0x00, 0x40, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, - 0x48, 0x00, 0xfc, 0x82, 0x84, 0x27, 0x10, 0x00, 0x46, 0x8c, 0x00, 0x00, 0x47, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x86, 0xc9, 0xc0, 0x0c, 0x21, 0x28, 0x00, 0x02, - 0x21, 0x88, 0x00, 0x02, 0x04, 0x00, 0x22, 0x2a, 0xf3, 0xff, 0x40, 0x14, 0x01, - 0x00, 0x30, 0x26, 0x49, 0x00, 0xa0, 0xa2, 0x2a, 0xc4, 0xc0, 0x08, 0x00, 0xa3, - 0x02, 0x3c, 0x20, 0x83, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x01, 0x00, 0x52, - 0x26, 0x80, 0x81, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x86, 0xc9, 0xc0, 0x0c, - 0x21, 0x28, 0x40, 0x02, 0xbd, 0xca, 0xc0, 0x0c, 0x21, 0x20, 0x00, 0x00, 0x06, - 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0xa2, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x3c, 0xc5, 0xc0, 0x08, 0x18, 0x00, 0xa2, - 0xaf, 0x28, 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, - 0x28, 0x00, 0xa2, 0xaf, 0x49, 0x00, 0xa2, 0x92, 0x00, 0x00, 0x00, 0x00, 0xec, - 0xff, 0x40, 0x10, 0x01, 0x00, 0x52, 0x26, 0x3c, 0x83, 0x84, 0x27, 0x86, 0xc9, - 0xc0, 0x0c, 0xff, 0xff, 0x52, 0x26, 0xe8, 0x82, 0x84, 0x27, 0x86, 0xc9, 0xc0, - 0x0c, 0x21, 0x28, 0x40, 0x02, 0x58, 0x83, 0x84, 0x27, 0x28, 0x00, 0xa5, 0x8f, - 0x18, 0x00, 0xa6, 0x8f, 0x89, 0xc5, 0xc0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x78, - 0x83, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x5a, 0xc3, - 0xc0, 0x0c, 0x10, 0x00, 0x04, 0x24, 0x21, 0x98, 0x40, 0x00, 0xff, 0xff, 0x02, - 0x24, 0x03, 0x00, 0x62, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x13, 0x3c, - 0x00, 0x10, 0x73, 0x36, 0x88, 0x83, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x5a, 0xc3, 0xc0, 0x0c, 0x10, 0x00, 0x04, 0x24, 0x21, 0x88, - 0x40, 0x00, 0xff, 0xff, 0x02, 0x24, 0x03, 0x00, 0x22, 0x16, 0x00, 0x00, 0x00, - 0x00, 0x02, 0xa3, 0x11, 0x3c, 0xf0, 0xff, 0x31, 0x36, 0x98, 0x83, 0x84, 0x27, - 0x86, 0xc9, 0xc0, 0x0c, 0x01, 0x00, 0x52, 0x26, 0x20, 0x83, 0x84, 0x27, 0x86, - 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x80, 0x81, 0x84, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x86, 0xc9, 0xc0, 0x0c, 0x21, 0x28, 0x40, 0x02, 0x10, 0x00, 0xa0, - 0xaf, 0x21, 0x20, 0x60, 0x02, 0x21, 0x28, 0x20, 0x02, 0x01, 0x00, 0x06, 0x24, - 0xef, 0xcb, 0xc0, 0x0c, 0x21, 0x38, 0x00, 0x00, 0x06, 0x00, 0x40, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x1c, 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x42, 0x24, 0x7c, 0xc5, 0xc0, 0x08, 0x1c, 0x00, 0xa2, 0xaf, 0x2c, 0x00, 0xa2, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x2c, 0x00, 0xa2, 0xaf, - 0x49, 0x00, 0xa2, 0x92, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xff, 0x40, 0x10, 0x01, - 0x00, 0x52, 0x26, 0x9c, 0x83, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0xff, 0xff, - 0x52, 0x26, 0xe8, 0x82, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x21, 0x28, 0x40, - 0x02, 0xb4, 0x83, 0x84, 0x27, 0x2c, 0x00, 0xa5, 0x8f, 0x1c, 0x00, 0xa6, 0x8f, - 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0xa0, 0xa2, 0x2a, - 0xc4, 0xc0, 0x08, 0x00, 0xa3, 0x02, 0x3c, 0xff, 0xff, 0x10, 0x24, 0x48, 0x8b, - 0x85, 0x8f, 0xd4, 0x83, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0xff, 0xff, 0xa5, - 0x24, 0x5a, 0xc3, 0xc0, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x21, 0x88, 0x40, 0x00, - 0x05, 0x00, 0x30, 0x16, 0x21, 0xb8, 0x00, 0x00, 0x18, 0x84, 0x84, 0x27, 0x86, - 0xc9, 0xc0, 0x0c, 0x41, 0x00, 0x17, 0x24, 0x01, 0x00, 0x52, 0x26, 0x1c, 0x84, - 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0xff, 0x00, 0x93, 0x32, 0x5a, 0xc3, 0xc0, - 0x0c, 0x10, 0x00, 0x04, 0x24, 0x54, 0x84, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, - 0x21, 0x80, 0x40, 0x00, 0x33, 0x00, 0x62, 0x3a, 0x01, 0x00, 0x42, 0x2c, 0x38, - 0x00, 0xa2, 0xaf, 0x80, 0x18, 0x13, 0x00, 0x40, 0x00, 0xa8, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x21, 0xf0, 0x68, 0x00, 0x64, 0xff, 0xa2, 0x27, 0x21, 0xb0, 0x43, - 0x00, 0x41, 0x00, 0x08, 0x24, 0x37, 0x00, 0xe8, 0x16, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x31, 0x26, 0x48, 0x8b, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x03, - 0x00, 0x22, 0x16, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x52, 0x26, 0x21, 0x88, - 0x00, 0x00, 0xf6, 0xff, 0x20, 0x06, 0x41, 0x00, 0x08, 0x24, 0x48, 0x8b, 0x82, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x22, 0x02, 0xf1, 0xff, 0x40, 0x10, - 0x40, 0x10, 0x11, 0x00, 0x21, 0x10, 0x51, 0x00, 0x80, 0x10, 0x02, 0x00, 0x03, - 0x83, 0x03, 0x3c, 0x21, 0x18, 0x62, 0x00, 0x78, 0x59, 0x63, 0x8c, 0x03, 0x83, - 0x08, 0x3c, 0xd4, 0x58, 0x08, 0x25, 0xe7, 0xff, 0x68, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x03, 0x83, 0x02, 0x3c, 0x84, 0x58, 0x42, 0x24, 0x0a, 0x00, 0x62, 0x10, - 0x33, 0x00, 0x02, 0x24, 0x03, 0x83, 0x02, 0x3c, 0xbc, 0x58, 0x42, 0x24, 0x06, - 0x00, 0x62, 0x10, 0x33, 0x00, 0x02, 0x24, 0x03, 0x83, 0x02, 0x3c, 0xa0, 0x58, - 0x42, 0x24, 0x04, 0x00, 0x62, 0x14, 0x40, 0x10, 0x11, 0x00, 0x33, 0x00, 0x02, - 0x24, 0xd8, 0xff, 0x62, 0x12, 0x40, 0x10, 0x11, 0x00, 0x21, 0x10, 0x51, 0x00, - 0x80, 0x10, 0x02, 0x00, 0x03, 0x83, 0x03, 0x3c, 0x21, 0x18, 0x62, 0x00, 0x7c, - 0x59, 0x63, 0x8c, 0x90, 0x8a, 0x82, 0x27, 0xd1, 0xff, 0x62, 0x10, 0x41, 0x00, - 0x08, 0x24, 0x98, 0x8a, 0x82, 0x27, 0xce, 0xff, 0x62, 0x10, 0x00, 0x00, 0x00, - 0x00, 0xa0, 0x8a, 0x82, 0x27, 0xcb, 0xff, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, - 0xe7, 0xc5, 0xc0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x52, 0x26, 0x80, - 0x81, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x86, 0xc9, 0xc0, 0x0c, 0x21, 0x28, - 0x40, 0x02, 0x41, 0x00, 0x08, 0x24, 0x08, 0x00, 0xe8, 0x12, 0x21, 0x20, 0x20, - 0x02, 0x10, 0x00, 0xa0, 0xaf, 0x38, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x14, 0x00, 0xa8, 0xaf, 0x21, 0x28, 0x20, 0x02, 0xfb, 0xc5, 0xc0, 0x08, 0x00, - 0x10, 0x06, 0x24, 0x10, 0x00, 0xa0, 0xaf, 0x38, 0x00, 0xa8, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x14, 0x00, 0xa8, 0xaf, 0x21, 0x28, 0x20, 0x02, 0x00, 0x01, 0x06, - 0x24, 0x5c, 0xd0, 0xc0, 0x0c, 0x21, 0x38, 0x00, 0x02, 0x06, 0x00, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0xff, 0xc2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x42, 0x24, 0x08, 0xc6, 0xc0, 0x08, 0x3c, 0xff, 0xc2, 0xaf, 0x00, 0x00, - 0xc2, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, 0xc2, - 0xae, 0x49, 0x00, 0xa2, 0x92, 0x00, 0x00, 0x00, 0x00, 0xa3, 0xff, 0x40, 0x10, - 0x41, 0x00, 0x08, 0x24, 0x74, 0x84, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0xe8, 0x82, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x21, 0x28, - 0x40, 0x02, 0xff, 0x00, 0x85, 0x32, 0x80, 0x10, 0x05, 0x00, 0x21, 0x18, 0xa2, - 0x03, 0x40, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x48, 0x00, - 0x8c, 0x84, 0x84, 0x27, 0x64, 0xff, 0x66, 0x8c, 0x3c, 0xff, 0x47, 0x8c, 0x86, - 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0xa0, 0xa2, 0x2a, 0xc4, - 0xc0, 0x08, 0x00, 0xa3, 0x02, 0x3c, 0x05, 0xa2, 0x04, 0x3c, 0x50, 0x8f, 0x83, - 0x97, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x62, 0x38, 0x00, 0x00, 0x82, 0xa4, - 0x00, 0xa3, 0x02, 0x3c, 0x00, 0x00, 0x42, 0x8c, 0x00, 0x00, 0x83, 0xa4, 0xb0, - 0x84, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xc4, - 0xc0, 0x08, 0x00, 0xa3, 0x02, 0x3c, 0xd0, 0x84, 0x84, 0x27, 0x86, 0xc9, 0xc0, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x5a, 0xc3, 0xc0, 0x0c, 0x10, 0x00, 0x04, 0x24, - 0x21, 0x98, 0x40, 0x00, 0xff, 0xff, 0x02, 0x24, 0xf5, 0xfd, 0x62, 0x12, 0x00, - 0xa3, 0x02, 0x3c, 0x98, 0x83, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0xff, 0x00, 0x83, 0x32, 0x64, 0x00, 0x02, 0x24, 0x06, 0x00, 0x62, - 0x10, 0x04, 0x00, 0x02, 0x24, 0x04, 0x00, 0x62, 0x10, 0x44, 0x00, 0x02, 0x24, - 0x1d, 0x00, 0x62, 0x14, 0x72, 0x00, 0x02, 0x24, 0xff, 0x00, 0x83, 0x32, 0x64, - 0x00, 0x02, 0x24, 0x04, 0x00, 0x62, 0x10, 0x21, 0x88, 0x00, 0x00, 0x10, 0x00, - 0x22, 0x2a, 0xe3, 0xfd, 0x40, 0x10, 0x00, 0xa3, 0x02, 0x3c, 0x00, 0x81, 0x11, - 0x00, 0x21, 0x80, 0x70, 0x02, 0xe0, 0x84, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, - 0x21, 0x28, 0x00, 0x02, 0x00, 0xa0, 0x04, 0x3c, 0x25, 0x20, 0x04, 0x02, 0x65, - 0xca, 0xc0, 0x0c, 0x10, 0x00, 0x05, 0x24, 0x98, 0x83, 0x84, 0x27, 0x86, 0xc9, - 0xc0, 0x0c, 0x01, 0x00, 0x31, 0x26, 0xff, 0x00, 0x83, 0x32, 0x64, 0x00, 0x02, - 0x24, 0xef, 0xff, 0x62, 0x14, 0x10, 0x00, 0x22, 0x2a, 0x04, 0x00, 0x22, 0x2a, - 0xef, 0xff, 0x40, 0x14, 0x00, 0x81, 0x11, 0x00, 0x2a, 0xc4, 0xc0, 0x08, 0x00, - 0xa3, 0x02, 0x3c, 0x09, 0x00, 0x62, 0x14, 0xff, 0x00, 0x83, 0x32, 0x00, 0xa0, - 0x02, 0x3c, 0x25, 0x10, 0x62, 0x02, 0xe8, 0x84, 0x84, 0x27, 0x00, 0x00, 0x45, - 0x90, 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xc4, 0xc0, 0x08, - 0x00, 0xa3, 0x02, 0x3c, 0x12, 0x00, 0x02, 0x24, 0x09, 0x00, 0x62, 0x14, 0xff, - 0x00, 0x83, 0x32, 0x00, 0xa0, 0x02, 0x3c, 0x25, 0x10, 0x62, 0x02, 0xf0, 0x84, - 0x84, 0x27, 0x00, 0x00, 0x45, 0x94, 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x2a, 0xc4, 0xc0, 0x08, 0x00, 0xa3, 0x02, 0x3c, 0x52, 0x00, 0x02, 0x24, - 0x09, 0x00, 0x62, 0x14, 0xff, 0x00, 0x83, 0x32, 0x00, 0xa0, 0x02, 0x3c, 0x25, - 0x10, 0x62, 0x02, 0xf8, 0x84, 0x84, 0x27, 0x00, 0x00, 0x45, 0x8c, 0x86, 0xc9, - 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xc4, 0xc0, 0x08, 0x00, 0xa3, 0x02, - 0x3c, 0x66, 0x00, 0x02, 0x24, 0x03, 0x00, 0x62, 0x10, 0x77, 0x00, 0x02, 0x24, - 0x04, 0x00, 0x62, 0x14, 0xff, 0x00, 0x83, 0x32, 0x00, 0x85, 0x84, 0x27, 0x8e, - 0xc6, 0xc0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x24, 0x03, 0x00, - 0x62, 0x10, 0x17, 0x00, 0x02, 0x24, 0x04, 0x00, 0x62, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x85, 0x84, 0x27, 0x8e, 0xc6, 0xc0, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x08, 0x85, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x0c, - 0x85, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x5a, 0xc3, - 0xc0, 0x0c, 0x10, 0x00, 0x04, 0x24, 0x98, 0x83, 0x84, 0x27, 0x86, 0xc9, 0xc0, - 0x0c, 0x21, 0x88, 0x40, 0x00, 0xff, 0x00, 0x83, 0x32, 0x66, 0x00, 0x02, 0x24, - 0x05, 0x00, 0x62, 0x10, 0x06, 0x00, 0x02, 0x24, 0x03, 0x00, 0x62, 0x10, 0x46, - 0x00, 0x02, 0x24, 0x0b, 0x00, 0x62, 0x14, 0x21, 0x80, 0x00, 0x00, 0x20, 0x85, - 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x5a, 0xc3, 0xc0, - 0x0c, 0x10, 0x00, 0x04, 0x24, 0x98, 0x83, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, - 0xff, 0xff, 0x50, 0x24, 0xab, 0xc6, 0xc0, 0x08, 0x00, 0xa0, 0x02, 0x3c, 0x00, - 0xa0, 0x02, 0x3c, 0x25, 0x98, 0x62, 0x02, 0xff, 0x00, 0x83, 0x32, 0x77, 0x00, - 0x07, 0x24, 0x66, 0x00, 0x06, 0x24, 0x17, 0x00, 0x05, 0x24, 0x06, 0x00, 0x04, - 0x24, 0x03, 0x00, 0x67, 0x10, 0x21, 0x10, 0x70, 0x02, 0x03, 0x00, 0x66, 0x14, - 0x00, 0x00, 0x00, 0x00, 0xc1, 0xc6, 0xc0, 0x08, 0x00, 0x00, 0x51, 0xa0, 0x04, - 0x00, 0x65, 0x10, 0x40, 0x10, 0x10, 0x00, 0x05, 0x00, 0x64, 0x14, 0x80, 0x10, - 0x10, 0x00, 0x40, 0x10, 0x10, 0x00, 0x21, 0x10, 0x53, 0x00, 0xc1, 0xc6, 0xc0, - 0x08, 0x00, 0x00, 0x51, 0xa4, 0x21, 0x10, 0x53, 0x00, 0x00, 0x00, 0x51, 0xac, - 0xff, 0xff, 0x10, 0x26, 0xee, 0xff, 0x01, 0x06, 0x00, 0xa3, 0x02, 0x3c, 0x2b, - 0xc4, 0xc0, 0x08, 0x10, 0x00, 0x42, 0x34, 0xbd, 0xca, 0xc0, 0x0c, 0x21, 0x20, - 0x00, 0x00, 0x5b, 0xc7, 0xc0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xa2, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x51, 0x38, 0x0f, 0x00, 0x31, 0x32, - 0x08, 0x00, 0xa4, 0x8e, 0x08, 0x00, 0xb2, 0x8e, 0x08, 0x00, 0xa2, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x00, 0xa2, 0xae, 0x08, 0x00, 0xa2, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x07, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xa3, - 0x8e, 0x02, 0x00, 0x02, 0x3c, 0xf0, 0xef, 0x42, 0x34, 0x2b, 0x10, 0x43, 0x00, - 0x06, 0x00, 0x40, 0x10, 0x00, 0xa3, 0x05, 0x3c, 0x02, 0x00, 0x04, 0x3c, 0xf0, - 0xef, 0x84, 0x34, 0x1b, 0x00, 0x12, 0x3c, 0x04, 0x00, 0xa4, 0xae, 0x00, 0xa3, - 0x05, 0x3c, 0x00, 0x10, 0xa5, 0x34, 0x21, 0x28, 0x85, 0x00, 0xff, 0x1f, 0x13, - 0x3c, 0xff, 0xff, 0x73, 0x36, 0x00, 0xa0, 0x14, 0x3c, 0x24, 0x28, 0xb3, 0x00, - 0x10, 0x00, 0xb1, 0xaf, 0x00, 0xa3, 0x04, 0x3c, 0x00, 0x10, 0x84, 0x34, 0x25, - 0x28, 0xb4, 0x00, 0x21, 0x30, 0x00, 0x00, 0xef, 0xcb, 0xc0, 0x0c, 0x21, 0x38, - 0x00, 0x00, 0x21, 0x80, 0x40, 0x00, 0x10, 0x00, 0xa3, 0x8e, 0x1f, 0x00, 0x02, - 0x3c, 0xff, 0xff, 0x42, 0x34, 0x2b, 0x10, 0x43, 0x00, 0x0a, 0x00, 0x40, 0x10, - 0x04, 0xa3, 0x05, 0x3c, 0x21, 0x28, 0x45, 0x02, 0x24, 0x28, 0xb3, 0x00, 0x10, - 0x00, 0xb1, 0xaf, 0x04, 0xa3, 0x04, 0x3c, 0x25, 0x28, 0xb4, 0x00, 0x21, 0x30, - 0x00, 0x00, 0xef, 0xcb, 0xc0, 0x0c, 0x21, 0x38, 0x00, 0x00, 0x25, 0x80, 0x02, - 0x02, 0x08, 0x00, 0xb0, 0xae, 0x5d, 0xc7, 0xc0, 0x08, 0x01, 0x00, 0x08, 0x24, - 0x08, 0x00, 0xb1, 0x8e, 0x10, 0x00, 0xa0, 0xaf, 0x01, 0x00, 0x08, 0x24, 0x14, - 0x00, 0xa8, 0xaf, 0x21, 0x20, 0x20, 0x02, 0x21, 0x28, 0x20, 0x02, 0x00, 0x10, - 0x06, 0x24, 0x5c, 0xd0, 0xc0, 0x0c, 0xff, 0xff, 0x07, 0x24, 0x5b, 0xc7, 0xc0, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xb1, 0x8e, 0x10, 0x00, 0xa0, 0xaf, - 0x14, 0x00, 0xa0, 0xaf, 0x21, 0x20, 0x20, 0x02, 0x21, 0x28, 0x20, 0x02, 0x00, - 0x10, 0x06, 0x24, 0x5c, 0xd0, 0xc0, 0x0c, 0xff, 0xff, 0x07, 0x24, 0x5b, 0xc7, - 0xc0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xa2, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0xff, 0x00, 0x51, 0x30, 0x08, 0x00, 0xa2, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x12, 0x02, 0x00, 0x54, 0x8f, 0x82, 0xa3, 0x54, 0x8f, 0x82, 0x93, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x43, 0x24, 0x10, 0x00, 0x62, 0x2c, 0x27, 0x00, - 0x40, 0x10, 0x80, 0x10, 0x03, 0x00, 0x03, 0x83, 0x01, 0x3c, 0x21, 0x08, 0x22, - 0x00, 0xb8, 0x55, 0x22, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x05, 0xa2, 0x03, 0x3c, 0x50, 0x8f, 0x80, 0xaf, 0x00, - 0x00, 0x60, 0xa4, 0x50, 0x8f, 0x80, 0xaf, 0x00, 0x00, 0x60, 0xa4, 0x3b, 0xc7, - 0xc0, 0x08, 0x60, 0x00, 0x02, 0x24, 0x05, 0xa2, 0x03, 0x3c, 0x50, 0x8f, 0x80, - 0xaf, 0x00, 0x00, 0x60, 0xa4, 0x06, 0x00, 0x02, 0x24, 0x50, 0x8f, 0x82, 0xaf, - 0x00, 0x00, 0x62, 0xa4, 0x66, 0x00, 0x02, 0x24, 0x50, 0x8f, 0x82, 0xaf, 0x00, - 0x00, 0x62, 0xa4, 0x66, 0x0c, 0x02, 0x24, 0x50, 0x8f, 0x82, 0xaf, 0x00, 0x00, - 0x62, 0xa4, 0x4b, 0xc7, 0xc0, 0x08, 0x10, 0x00, 0xa0, 0xaf, 0x05, 0xa2, 0x02, - 0x3c, 0x50, 0x8f, 0x80, 0xaf, 0x00, 0x00, 0x40, 0xa4, 0x50, 0x8f, 0x80, 0xaf, - 0x00, 0x00, 0x40, 0xa4, 0x60, 0x00, 0x03, 0x24, 0x50, 0x8f, 0x83, 0xaf, 0x00, - 0x00, 0x43, 0xa4, 0x78, 0x00, 0x03, 0x24, 0x50, 0x8f, 0x83, 0xaf, 0x00, 0x00, - 0x43, 0xa4, 0x10, 0x00, 0xa0, 0xaf, 0x14, 0x00, 0xa0, 0xaf, 0x21, 0x20, 0x20, - 0x02, 0x21, 0x28, 0x20, 0x02, 0x00, 0x10, 0x06, 0x24, 0x5c, 0xd0, 0xc0, 0x0c, - 0xff, 0xff, 0x07, 0x24, 0x08, 0x00, 0xa2, 0xae, 0x01, 0x00, 0x08, 0x24, 0x48, - 0x00, 0xa8, 0xa2, 0x54, 0x8f, 0x80, 0xa3, 0x2a, 0xc4, 0xc0, 0x08, 0x00, 0xa3, - 0x02, 0x3c, 0x08, 0x00, 0xa4, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x19, 0xd4, 0xc0, - 0x0c, 0xff, 0x00, 0x84, 0x30, 0x08, 0x00, 0xa2, 0xae, 0x01, 0x00, 0x08, 0x24, - 0x48, 0x00, 0xa8, 0xa2, 0x2a, 0xc4, 0xc0, 0x08, 0x00, 0xa3, 0x02, 0x3c, 0x30, - 0x85, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xc4, - 0xc0, 0x08, 0x00, 0xa3, 0x02, 0x3c, 0x6c, 0x00, 0xbf, 0x8f, 0x68, 0x00, 0xbe, - 0x8f, 0x64, 0x00, 0xb7, 0x8f, 0x60, 0x00, 0xb6, 0x8f, 0x5c, 0x00, 0xb5, 0x8f, - 0x58, 0x00, 0xb4, 0x8f, 0x54, 0x00, 0xb3, 0x8f, 0x50, 0x00, 0xb2, 0x8f, 0x4c, - 0x00, 0xb1, 0x8f, 0x48, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x70, 0x00, - 0xbd, 0x27, 0x00, 0xa3, 0x05, 0x3c, 0x80, 0x01, 0xa5, 0x34, 0x4a, 0x00, 0xa2, - 0x94, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x30, 0x21, 0x10, 0x45, 0x00, - 0x50, 0x00, 0x44, 0xa0, 0x4a, 0x00, 0xa2, 0x94, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x42, 0x24, 0x4e, 0x00, 0xa3, 0x94, 0x00, 0x00, 0x00, 0x00, 0x24, 0x20, - 0x62, 0x00, 0x4c, 0x00, 0xa3, 0x94, 0xff, 0xff, 0x82, 0x30, 0x02, 0x00, 0x43, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x00, 0xa4, 0xa4, 0x08, 0x00, 0xe0, 0x03, - 0x00, 0x00, 0x00, 0x00, 0xe8, 0xff, 0xbd, 0x27, 0x14, 0x00, 0xbf, 0xaf, 0x10, - 0x00, 0xb0, 0xaf, 0x00, 0xa3, 0x02, 0x3c, 0x80, 0x01, 0x42, 0x34, 0x00, 0x00, - 0x43, 0x8c, 0x01, 0x00, 0x02, 0x24, 0x07, 0x00, 0x62, 0x14, 0x00, 0xa3, 0x10, - 0x3c, 0x52, 0x85, 0x83, 0x97, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x62, 0x24, - 0x52, 0x85, 0x82, 0xa7, 0x11, 0x00, 0x60, 0x14, 0x00, 0x00, 0x00, 0x00, 0x80, - 0x01, 0x10, 0x36, 0x2a, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x42, 0x24, 0x2a, 0x00, 0x02, 0xa6, 0x2a, 0x00, 0x02, 0x96, 0xe8, 0x03, 0x02, - 0x24, 0x52, 0x85, 0x82, 0xa7, 0x06, 0xa2, 0x02, 0x3c, 0x00, 0x00, 0x40, 0xa4, - 0xfa, 0xc1, 0xc0, 0x0c, 0x21, 0x20, 0x00, 0x00, 0x01, 0x00, 0x02, 0x24, 0x00, - 0x00, 0x02, 0xae, 0xfa, 0xc1, 0xc0, 0x0c, 0x01, 0x04, 0x04, 0x24, 0x14, 0x00, - 0xbf, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x18, 0x00, 0xbd, - 0x27, 0x00, 0xa3, 0x03, 0x3c, 0x80, 0x01, 0x63, 0x34, 0x4c, 0x00, 0x62, 0x94, - 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4c, - 0x00, 0x62, 0x94, 0x4a, 0x00, 0x63, 0x94, 0xff, 0xff, 0x42, 0x30, 0x08, 0x00, - 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x04, 0x3c, 0x80, 0x01, 0x84, - 0x34, 0x4c, 0x00, 0x82, 0x94, 0x4a, 0x00, 0x83, 0x94, 0xff, 0xff, 0x42, 0x30, - 0xfc, 0xff, 0x43, 0x14, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x00, - 0x00, 0x00, 0x00, 0x2b, 0x10, 0x85, 0x00, 0x0a, 0x00, 0x40, 0x10, 0x21, 0x18, - 0x00, 0x00, 0x00, 0x00, 0x82, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x62, - 0x00, 0x04, 0x00, 0x84, 0x24, 0x2b, 0x18, 0x43, 0x00, 0x21, 0x18, 0x43, 0x00, - 0x2b, 0x10, 0x85, 0x00, 0xf8, 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0xe0, 0x03, 0x21, 0x10, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x21, 0x30, 0x00, 0x00, 0x21, 0x28, 0x00, 0x00, 0x21, 0x10, 0x85, - 0x00, 0x00, 0x00, 0x42, 0x80, 0xc0, 0x18, 0x05, 0x00, 0x04, 0x10, 0x62, 0x00, - 0x25, 0x30, 0xc2, 0x00, 0x01, 0x00, 0xa5, 0x24, 0x04, 0x00, 0xa2, 0x2c, 0xf8, - 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x21, 0x10, - 0xc0, 0x00, 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0xcc, 0xc7, 0xc0, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x02, 0x00, 0x00, 0x1a, 0x02, 0x00, - 0xff, 0x00, 0x04, 0x3c, 0x24, 0x18, 0x64, 0x00, 0x25, 0x28, 0xa3, 0x00, 0x02, - 0x1a, 0x02, 0x00, 0x00, 0xff, 0x63, 0x30, 0x25, 0x28, 0xa3, 0x00, 0x02, 0x16, - 0x02, 0x00, 0x10, 0x00, 0xbf, 0x8f, 0x25, 0x10, 0xa2, 0x00, 0x08, 0x00, 0xe0, - 0x03, 0x18, 0x00, 0xbd, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xa8, 0xff, 0xbd, 0x27, 0x54, 0x00, 0xbf, 0xaf, 0x50, 0x00, 0xb4, 0xaf, 0x4c, - 0x00, 0xb3, 0xaf, 0x48, 0x00, 0xb2, 0xaf, 0x44, 0x00, 0xb1, 0xaf, 0x40, 0x00, - 0xb0, 0xaf, 0x21, 0x80, 0xe0, 0x00, 0x68, 0x00, 0xa7, 0x8f, 0x21, 0x98, 0xc0, - 0x00, 0x07, 0x00, 0xa0, 0x10, 0x21, 0xa0, 0x00, 0x00, 0x06, 0x00, 0xe1, 0x04, - 0x33, 0x00, 0xb1, 0x27, 0x2d, 0x00, 0x14, 0x24, 0x03, 0x00, 0x00, 0x12, 0x23, - 0x38, 0x07, 0x00, 0xff, 0xff, 0x10, 0x26, 0x33, 0x00, 0xb1, 0x27, 0x33, 0x00, - 0xa0, 0xa3, 0xff, 0xff, 0x31, 0x26, 0x1b, 0x00, 0xe4, 0x00, 0x02, 0x00, 0x80, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x07, 0x00, 0x10, 0x10, 0x00, 0x00, - 0x21, 0x08, 0x5c, 0x00, 0x60, 0x85, 0x22, 0x90, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x12, 0x00, 0x00, 0x22, 0xa2, 0xff, 0xff, 0x10, 0x26, 0x1b, 0x00, - 0xe4, 0x00, 0x02, 0x00, 0x80, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x07, - 0x00, 0x12, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xed, 0xff, 0xe0, 0x14, 0xff, 0xff, 0x31, 0x26, 0x01, 0x00, 0x31, 0x26, 0x00, - 0x16, 0x13, 0x00, 0x03, 0x16, 0x02, 0x00, 0x01, 0x00, 0x03, 0x24, 0x0b, 0x00, - 0x43, 0x14, 0x21, 0x20, 0x80, 0x02, 0xff, 0xff, 0x10, 0x26, 0xff, 0xff, 0x02, - 0x24, 0x07, 0x00, 0x02, 0x12, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x12, 0x24, - 0x40, 0xca, 0xc0, 0x0c, 0x20, 0x00, 0x04, 0x24, 0xff, 0xff, 0x10, 0x26, 0xfc, - 0xff, 0x12, 0x16, 0x21, 0x20, 0x80, 0x02, 0x04, 0x00, 0x80, 0x10, 0x00, 0x16, - 0x13, 0x00, 0x40, 0xca, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x13, - 0x00, 0x03, 0x16, 0x02, 0x00, 0x02, 0x00, 0x03, 0x24, 0x0a, 0x00, 0x43, 0x14, - 0xff, 0xff, 0x02, 0x24, 0xff, 0xff, 0x10, 0x26, 0x07, 0x00, 0x02, 0x12, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x12, 0x24, 0x40, 0xca, 0xc0, 0x0c, 0x30, 0x00, - 0x04, 0x24, 0xff, 0xff, 0x10, 0x26, 0xfc, 0xff, 0x12, 0x16, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x40, 0x10, - 0x21, 0x20, 0x40, 0x00, 0x00, 0x26, 0x04, 0x00, 0x01, 0x00, 0x31, 0x26, 0x40, - 0xca, 0xc0, 0x0c, 0x03, 0x26, 0x04, 0x00, 0x00, 0x00, 0x24, 0x92, 0x00, 0x00, - 0x22, 0x82, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x16, 0x13, 0x00, 0x03, 0x16, 0x02, 0x00, 0x03, 0x00, 0x03, 0x24, - 0x09, 0x00, 0x43, 0x14, 0xff, 0xff, 0x10, 0x26, 0xff, 0xff, 0x02, 0x24, 0x06, - 0x00, 0x02, 0x12, 0xff, 0xff, 0x11, 0x24, 0x40, 0xca, 0xc0, 0x0c, 0x20, 0x00, - 0x04, 0x24, 0xff, 0xff, 0x10, 0x26, 0xfc, 0xff, 0x11, 0x16, 0x00, 0x00, 0x00, - 0x00, 0x54, 0x00, 0xbf, 0x8f, 0x50, 0x00, 0xb4, 0x8f, 0x4c, 0x00, 0xb3, 0x8f, - 0x48, 0x00, 0xb2, 0x8f, 0x44, 0x00, 0xb1, 0x8f, 0x40, 0x00, 0xb0, 0x8f, 0x08, - 0x00, 0xe0, 0x03, 0x58, 0x00, 0xbd, 0x27, 0x5c, 0xc8, 0xc0, 0x08, 0x21, 0x18, - 0x00, 0x00, 0x01, 0x00, 0x63, 0x24, 0x00, 0x00, 0x82, 0x80, 0x00, 0x00, 0x00, - 0x00, 0xfc, 0xff, 0x40, 0x14, 0x01, 0x00, 0x84, 0x24, 0x08, 0x00, 0xe0, 0x03, - 0x21, 0x10, 0x60, 0x00, 0xd8, 0xff, 0xbd, 0x27, 0x20, 0x00, 0xbf, 0xaf, 0x1c, - 0x00, 0xb1, 0xaf, 0x18, 0x00, 0xb0, 0xaf, 0x21, 0x88, 0xc0, 0x00, 0x00, 0x00, - 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x40, 0x10, 0x21, 0x18, 0x40, - 0x00, 0x21, 0x80, 0x60, 0x00, 0xff, 0x00, 0x03, 0x32, 0x0a, 0x00, 0x02, 0x24, - 0x0c, 0x00, 0x62, 0x10, 0x0b, 0x00, 0x62, 0x28, 0x05, 0x00, 0x40, 0x10, 0x09, - 0x00, 0x02, 0x24, 0x10, 0x00, 0x62, 0x10, 0x20, 0x00, 0x62, 0x2c, 0x87, 0xc8, - 0xc0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x02, 0x24, 0x07, 0x00, 0x62, - 0x10, 0xff, 0x00, 0x03, 0x32, 0x87, 0xc8, 0xc0, 0x08, 0x20, 0x00, 0x62, 0x2c, - 0x40, 0xca, 0xc0, 0x0c, 0x5c, 0x00, 0x04, 0x24, 0xa4, 0xc8, 0xc0, 0x08, 0x6e, - 0x00, 0x04, 0x24, 0x40, 0xca, 0xc0, 0x0c, 0x5c, 0x00, 0x04, 0x24, 0xa4, 0xc8, - 0xc0, 0x08, 0x72, 0x00, 0x04, 0x24, 0x40, 0xca, 0xc0, 0x0c, 0x5c, 0x00, 0x04, - 0x24, 0xa4, 0xc8, 0xc0, 0x08, 0x74, 0x00, 0x04, 0x24, 0x03, 0x00, 0x40, 0x14, - 0xff, 0x00, 0x02, 0x24, 0x18, 0x00, 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, 0x40, - 0xca, 0xc0, 0x0c, 0x5c, 0x00, 0x04, 0x24, 0x40, 0xca, 0xc0, 0x0c, 0x30, 0x00, - 0x04, 0x24, 0x40, 0xca, 0xc0, 0x0c, 0x78, 0x00, 0x04, 0x24, 0x02, 0x21, 0x10, - 0x00, 0x0a, 0x00, 0x82, 0x28, 0x03, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x98, 0xc8, 0xc0, 0x08, 0x30, 0x00, 0x84, 0x24, 0x37, 0x00, 0x84, 0x24, 0x40, - 0xca, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x04, 0x32, 0x0a, 0x00, - 0x82, 0x28, 0x03, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xc8, 0xc0, - 0x08, 0x30, 0x00, 0x84, 0x24, 0xa4, 0xc8, 0xc0, 0x08, 0x37, 0x00, 0x84, 0x24, - 0x00, 0x00, 0x24, 0x82, 0x00, 0x00, 0x00, 0x00, 0x40, 0xca, 0xc0, 0x0c, 0x01, - 0x00, 0x31, 0x26, 0x00, 0x00, 0x23, 0x92, 0x00, 0x00, 0x22, 0x82, 0x00, 0x00, - 0x00, 0x00, 0xc2, 0xff, 0x40, 0x14, 0x21, 0x80, 0x60, 0x00, 0x20, 0x00, 0xbf, - 0x8f, 0x1c, 0x00, 0xb1, 0x8f, 0x18, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, - 0x28, 0x00, 0xbd, 0x27, 0xd0, 0xff, 0xbd, 0x27, 0x28, 0x00, 0xbf, 0xaf, 0x24, - 0x00, 0xb3, 0xaf, 0x20, 0x00, 0xb2, 0xaf, 0x1c, 0x00, 0xb1, 0xaf, 0x18, 0x00, - 0xb0, 0xaf, 0x21, 0x80, 0xa0, 0x00, 0x21, 0x88, 0xc0, 0x00, 0x21, 0x98, 0x80, - 0x00, 0x59, 0xc8, 0xc0, 0x0c, 0x21, 0x20, 0x20, 0x02, 0x21, 0x20, 0x40, 0x00, - 0x2a, 0x10, 0x90, 0x00, 0x02, 0x00, 0x40, 0x10, 0x21, 0x18, 0x00, 0x00, 0x23, - 0x18, 0x04, 0x02, 0x21, 0x80, 0x60, 0x00, 0x00, 0x16, 0x13, 0x00, 0x03, 0x16, - 0x02, 0x00, 0x01, 0x00, 0x03, 0x24, 0x0b, 0x00, 0x43, 0x14, 0x00, 0x16, 0x13, - 0x00, 0xff, 0xff, 0x10, 0x26, 0xff, 0xff, 0x02, 0x24, 0x07, 0x00, 0x02, 0x12, - 0x00, 0x16, 0x13, 0x00, 0xff, 0xff, 0x12, 0x24, 0x40, 0xca, 0xc0, 0x0c, 0x20, - 0x00, 0x04, 0x24, 0xff, 0xff, 0x10, 0x26, 0xfc, 0xff, 0x12, 0x16, 0x00, 0x16, - 0x13, 0x00, 0x03, 0x16, 0x02, 0x00, 0x02, 0x00, 0x03, 0x24, 0x0a, 0x00, 0x43, - 0x14, 0xff, 0xff, 0x02, 0x24, 0xff, 0xff, 0x10, 0x26, 0x07, 0x00, 0x02, 0x12, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x12, 0x24, 0x40, 0xca, 0xc0, 0x0c, 0x30, - 0x00, 0x04, 0x24, 0xff, 0xff, 0x10, 0x26, 0xfc, 0xff, 0x12, 0x16, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x40, - 0x10, 0x21, 0x20, 0x40, 0x00, 0x00, 0x26, 0x04, 0x00, 0x01, 0x00, 0x31, 0x26, - 0x40, 0xca, 0xc0, 0x0c, 0x03, 0x26, 0x04, 0x00, 0x00, 0x00, 0x24, 0x92, 0x00, - 0x00, 0x22, 0x82, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x40, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x16, 0x13, 0x00, 0x03, 0x16, 0x02, 0x00, 0x03, 0x00, 0x03, - 0x24, 0x09, 0x00, 0x43, 0x14, 0xff, 0xff, 0x10, 0x26, 0xff, 0xff, 0x02, 0x24, - 0x06, 0x00, 0x02, 0x12, 0xff, 0xff, 0x11, 0x24, 0x40, 0xca, 0xc0, 0x0c, 0x20, - 0x00, 0x04, 0x24, 0xff, 0xff, 0x10, 0x26, 0xfc, 0xff, 0x11, 0x16, 0x00, 0x00, - 0x00, 0x00, 0x28, 0x00, 0xbf, 0x8f, 0x24, 0x00, 0xb3, 0x8f, 0x20, 0x00, 0xb2, - 0x8f, 0x1c, 0x00, 0xb1, 0x8f, 0x18, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, - 0x30, 0x00, 0xbd, 0x27, 0xd0, 0xff, 0xbd, 0x27, 0x2c, 0x00, 0xbf, 0xaf, 0x28, - 0x00, 0xb4, 0xaf, 0x24, 0x00, 0xb3, 0xaf, 0x20, 0x00, 0xb2, 0xaf, 0x1c, 0x00, - 0xb1, 0xaf, 0x18, 0x00, 0xb0, 0xaf, 0x21, 0x98, 0x80, 0x00, 0x21, 0xa0, 0xa0, - 0x00, 0x21, 0x80, 0x00, 0x00, 0x21, 0x88, 0x00, 0x00, 0x01, 0x00, 0x62, 0x82, - 0x00, 0x00, 0x00, 0x00, 0x71, 0x00, 0x40, 0x10, 0x01, 0x00, 0x12, 0x24, 0x21, - 0x10, 0x72, 0x02, 0x00, 0x00, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, 0xdb, 0xff, - 0x42, 0x24, 0x00, 0x16, 0x02, 0x00, 0x03, 0x1e, 0x02, 0x00, 0x54, 0x00, 0x62, - 0x2c, 0x68, 0x00, 0x40, 0x10, 0x80, 0x10, 0x03, 0x00, 0x03, 0x83, 0x01, 0x3c, - 0x21, 0x08, 0x22, 0x00, 0x00, 0x56, 0x22, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xca, 0xc0, 0x0c, 0x25, 0x00, - 0x04, 0x24, 0x66, 0xc9, 0xc0, 0x08, 0x21, 0x10, 0x72, 0x02, 0x21, 0x20, 0x00, - 0x00, 0x74, 0x85, 0x86, 0x27, 0xb0, 0xc8, 0xc0, 0x0c, 0x21, 0x28, 0x00, 0x00, - 0x66, 0xc9, 0xc0, 0x08, 0x21, 0x10, 0x72, 0x02, 0x00, 0x26, 0x14, 0x00, 0x40, - 0xca, 0xc0, 0x0c, 0x03, 0x26, 0x04, 0x00, 0x66, 0xc9, 0xc0, 0x08, 0x21, 0x10, - 0x72, 0x02, 0x10, 0x00, 0xb4, 0xaf, 0x02, 0x00, 0x04, 0x24, 0x21, 0x28, 0x00, - 0x00, 0x21, 0x30, 0x00, 0x02, 0xec, 0xc7, 0xc0, 0x0c, 0x21, 0x38, 0x20, 0x02, - 0x40, 0xca, 0xc0, 0x0c, 0x42, 0x00, 0x04, 0x24, 0x66, 0xc9, 0xc0, 0x08, 0x21, - 0x10, 0x72, 0x02, 0x10, 0x00, 0xb4, 0xaf, 0x08, 0x00, 0x04, 0x24, 0x21, 0x28, - 0x00, 0x00, 0x21, 0x30, 0x00, 0x02, 0xec, 0xc7, 0xc0, 0x0c, 0x21, 0x38, 0x20, - 0x02, 0x40, 0xca, 0xc0, 0x0c, 0x51, 0x00, 0x04, 0x24, 0x66, 0xc9, 0xc0, 0x08, - 0x21, 0x10, 0x72, 0x02, 0x10, 0x00, 0xb4, 0xaf, 0x0a, 0x00, 0x04, 0x24, 0x01, - 0x00, 0x05, 0x24, 0x21, 0x30, 0x00, 0x02, 0xec, 0xc7, 0xc0, 0x0c, 0x21, 0x38, - 0x20, 0x02, 0x66, 0xc9, 0xc0, 0x08, 0x21, 0x10, 0x72, 0x02, 0x10, 0x00, 0xb4, - 0xaf, 0x0a, 0x00, 0x04, 0x24, 0x21, 0x28, 0x00, 0x00, 0x21, 0x30, 0x00, 0x02, - 0xec, 0xc7, 0xc0, 0x0c, 0x21, 0x38, 0x20, 0x02, 0x66, 0xc9, 0xc0, 0x08, 0x21, - 0x10, 0x72, 0x02, 0x21, 0x20, 0x00, 0x00, 0x80, 0x85, 0x86, 0x27, 0xb0, 0xc8, - 0xc0, 0x0c, 0x21, 0x28, 0x00, 0x00, 0x10, 0x00, 0xb4, 0xaf, 0x10, 0x00, 0x04, - 0x24, 0x21, 0x28, 0x00, 0x00, 0x21, 0x30, 0x00, 0x02, 0xec, 0xc7, 0xc0, 0x0c, - 0x21, 0x38, 0x20, 0x02, 0x66, 0xc9, 0xc0, 0x08, 0x21, 0x10, 0x72, 0x02, 0x21, - 0x20, 0x00, 0x02, 0x21, 0x28, 0x20, 0x02, 0xb0, 0xc8, 0xc0, 0x0c, 0x21, 0x30, - 0x80, 0x02, 0x66, 0xc9, 0xc0, 0x08, 0x21, 0x10, 0x72, 0x02, 0x21, 0x20, 0x00, - 0x02, 0x21, 0x28, 0x20, 0x02, 0x62, 0xc8, 0xc0, 0x0c, 0x21, 0x30, 0x80, 0x02, - 0x21, 0x10, 0x72, 0x02, 0x7e, 0xc9, 0xc0, 0x08, 0x01, 0x00, 0x42, 0x24, 0x77, - 0xc9, 0xc0, 0x08, 0x03, 0x00, 0x10, 0x24, 0x03, 0x00, 0x00, 0x16, 0x80, 0x10, - 0x11, 0x00, 0x02, 0x00, 0x10, 0x24, 0x80, 0x10, 0x11, 0x00, 0x21, 0x10, 0x51, - 0x00, 0x40, 0x10, 0x02, 0x00, 0xd0, 0xff, 0x51, 0x24, 0x21, 0x10, 0x72, 0x02, - 0x00, 0x00, 0x42, 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x16, 0x21, - 0x88, 0x22, 0x02, 0x01, 0x00, 0x10, 0x24, 0x01, 0x00, 0x52, 0x26, 0x21, 0x10, - 0x72, 0x02, 0x00, 0x00, 0x42, 0x80, 0x00, 0x00, 0x00, 0x00, 0x92, 0xff, 0x40, - 0x14, 0x21, 0x10, 0x72, 0x02, 0x01, 0x00, 0x62, 0x26, 0x2c, 0x00, 0xbf, 0x8f, - 0x28, 0x00, 0xb4, 0x8f, 0x24, 0x00, 0xb3, 0x8f, 0x20, 0x00, 0xb2, 0x8f, 0x1c, - 0x00, 0xb1, 0x8f, 0x18, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x30, 0x00, - 0xbd, 0x27, 0x00, 0x00, 0xa4, 0xaf, 0x04, 0x00, 0xa5, 0xaf, 0x08, 0x00, 0xa6, - 0xaf, 0x0c, 0x00, 0xa7, 0xaf, 0xd0, 0xff, 0xbd, 0x27, 0x2c, 0x00, 0xbf, 0xaf, - 0x28, 0x00, 0xb4, 0xaf, 0x24, 0x00, 0xb3, 0xaf, 0x20, 0x00, 0xb2, 0xaf, 0x1c, - 0x00, 0xb1, 0xaf, 0x18, 0x00, 0xb0, 0xaf, 0x21, 0x80, 0x80, 0x00, 0x34, 0x00, - 0xb1, 0x27, 0x00, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x40, - 0x10, 0x21, 0x18, 0x40, 0x00, 0x25, 0x00, 0x14, 0x24, 0x45, 0x00, 0x13, 0x24, - 0xfc, 0xff, 0x12, 0x24, 0x00, 0x16, 0x03, 0x00, 0x03, 0x16, 0x02, 0x00, 0x12, - 0x00, 0x54, 0x14, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x82, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x62, 0x10, 0x21, 0x20, 0x00, 0x02, 0x04, 0x00, 0x73, - 0x14, 0x03, 0x00, 0x22, 0x26, 0x21, 0x20, 0x00, 0x02, 0xab, 0xc9, 0xc0, 0x08, - 0x21, 0x28, 0x00, 0x00, 0x24, 0x10, 0x52, 0x00, 0x04, 0x00, 0x51, 0x24, 0x21, - 0x20, 0x00, 0x02, 0xfc, 0xff, 0x25, 0x8e, 0xfe, 0xc8, 0xc0, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0xb3, 0xc9, 0xc0, 0x08, 0x21, 0x80, 0x40, 0x00, 0x00, 0x00, 0x04, - 0x82, 0x00, 0x00, 0x00, 0x00, 0x40, 0xca, 0xc0, 0x0c, 0x01, 0x00, 0x10, 0x26, - 0x00, 0x00, 0x03, 0x92, 0x00, 0x00, 0x02, 0x82, 0x00, 0x00, 0x00, 0x00, 0xe4, - 0xff, 0x40, 0x14, 0x00, 0x16, 0x03, 0x00, 0x2c, 0x00, 0xbf, 0x8f, 0x28, 0x00, - 0xb4, 0x8f, 0x24, 0x00, 0xb3, 0x8f, 0x20, 0x00, 0xb2, 0x8f, 0x1c, 0x00, 0xb1, - 0x8f, 0x18, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x30, 0x00, 0xbd, 0x27, - 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x00, 0xa3, 0x04, 0x3c, 0x30, - 0x0c, 0x84, 0x34, 0x00, 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x00, - 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, - 0x00, 0x3f, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x83, 0x8c, - 0xff, 0x3f, 0x02, 0x3c, 0xff, 0xff, 0x42, 0x34, 0x24, 0x18, 0x62, 0x00, 0x00, - 0x80, 0x02, 0x3c, 0x25, 0x18, 0x62, 0x00, 0x08, 0x00, 0x82, 0x94, 0x00, 0x00, - 0x00, 0x00, 0x81, 0x00, 0x42, 0x2c, 0x04, 0x00, 0x40, 0x14, 0x00, 0xa3, 0x02, - 0x3c, 0x80, 0x00, 0x02, 0x24, 0x08, 0x00, 0x82, 0xa4, 0x00, 0xa3, 0x02, 0x3c, - 0x30, 0x0c, 0x42, 0x34, 0x00, 0x00, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, 0xff, - 0x00, 0x44, 0x30, 0x02, 0x00, 0x02, 0x24, 0x0f, 0x00, 0x82, 0x10, 0x03, 0x00, - 0x82, 0x28, 0x05, 0x00, 0x40, 0x10, 0x01, 0x00, 0x02, 0x24, 0x08, 0x00, 0x82, - 0x10, 0x21, 0x28, 0x60, 0x00, 0x0a, 0xca, 0xc0, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x02, 0x24, 0x1b, 0x00, 0x82, 0x10, 0x00, 0xa3, 0x02, 0x3c, 0x0a, - 0xca, 0xc0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x03, 0x3c, 0xf1, 0xc9, - 0xc0, 0x08, 0x3a, 0x0c, 0x63, 0x34, 0x00, 0xa3, 0x05, 0x3c, 0x3a, 0x0c, 0xa5, - 0x34, 0x00, 0xa3, 0x02, 0x3c, 0x30, 0x0c, 0x42, 0x34, 0x08, 0x00, 0x42, 0x94, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x44, 0x30, 0xff, 0xff, 0x84, 0x24, 0x09, - 0x00, 0x80, 0x04, 0x00, 0xa3, 0x02, 0x3c, 0x00, 0x00, 0xa2, 0x90, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x62, 0xa0, 0x01, 0x00, 0xa5, 0x24, 0xff, 0xff, 0x84, - 0x24, 0xfa, 0xff, 0x81, 0x04, 0x01, 0x00, 0x63, 0x24, 0x00, 0xa3, 0x02, 0x3c, - 0x30, 0x0c, 0x42, 0x34, 0x0a, 0xca, 0xc0, 0x08, 0x00, 0x00, 0x40, 0xa0, 0x30, - 0x0c, 0x42, 0x34, 0x00, 0x00, 0x40, 0xa0, 0x04, 0x00, 0x42, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x09, 0xf8, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xbf, - 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xbd, 0x27, 0x1c, - 0x00, 0xbf, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, - 0xb0, 0xaf, 0x21, 0x90, 0x00, 0x00, 0x03, 0x83, 0x11, 0x3c, 0x80, 0x57, 0x31, - 0x26, 0x21, 0x80, 0x00, 0x00, 0x60, 0x8f, 0x80, 0xaf, 0x21, 0x28, 0x00, 0x00, - 0x21, 0x20, 0x20, 0x02, 0x00, 0x00, 0x82, 0x94, 0x02, 0x00, 0x83, 0x90, 0x04, - 0xa2, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0x00, 0x00, 0x23, 0xa0, 0x60, 0x8f, - 0x80, 0xaf, 0x01, 0x00, 0xa5, 0x24, 0x04, 0x00, 0xa2, 0x28, 0xf7, 0xff, 0x40, - 0x14, 0x04, 0x00, 0x84, 0x24, 0x00, 0x00, 0x82, 0x94, 0x04, 0xa2, 0x01, 0x3c, - 0x21, 0x08, 0x22, 0x00, 0x00, 0x00, 0x22, 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, - 0x00, 0x42, 0x30, 0x08, 0x00, 0x40, 0x10, 0x64, 0x00, 0x02, 0x2a, 0x04, 0x00, - 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x90, 0x85, 0x84, 0x27, 0x3a, 0xc0, 0xc0, - 0x0c, 0x61, 0x00, 0x05, 0x24, 0x19, 0xca, 0xc0, 0x08, 0x01, 0x00, 0x10, 0x26, - 0x05, 0x00, 0x52, 0x26, 0x0f, 0x00, 0x42, 0x2a, 0xe0, 0xff, 0x40, 0x14, 0x14, - 0x00, 0x31, 0x26, 0x1c, 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, - 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x20, 0x00, 0xbd, - 0x27, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xff, 0xbd, 0x27, 0x21, 0x28, 0x80, 0x00, - 0x00, 0x26, 0x04, 0x00, 0x03, 0x26, 0x04, 0x00, 0x0a, 0x00, 0x02, 0x24, 0x06, - 0x00, 0x82, 0x10, 0x10, 0x00, 0xbf, 0xaf, 0x0d, 0x00, 0x02, 0x24, 0x0b, 0x00, - 0x82, 0x10, 0x00, 0x26, 0x05, 0x00, 0x5c, 0xca, 0xc0, 0x08, 0x00, 0x00, 0x00, - 0x00, 0xa0, 0x85, 0x83, 0x93, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x62, 0x30, - 0x11, 0x00, 0x40, 0x14, 0x01, 0x00, 0x62, 0x34, 0xa0, 0x85, 0x82, 0xa3, 0x5d, - 0xca, 0xc0, 0x08, 0x00, 0x26, 0x05, 0x00, 0xa0, 0x85, 0x83, 0x93, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x62, 0x30, 0x09, 0x00, 0x40, 0x14, 0x02, 0x00, 0x62, - 0x34, 0xa0, 0x85, 0x82, 0xa3, 0x5d, 0xca, 0xc0, 0x08, 0x00, 0x26, 0x05, 0x00, - 0xa0, 0x85, 0x80, 0xa3, 0x71, 0xc7, 0xc0, 0x0c, 0x03, 0x26, 0x04, 0x00, 0xa8, - 0xc7, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xbf, 0x8f, 0x18, 0x00, - 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xff, 0xbd, - 0x27, 0x2c, 0x00, 0xbf, 0xaf, 0x28, 0x00, 0xb4, 0xaf, 0x24, 0x00, 0xb3, 0xaf, - 0x20, 0x00, 0xb2, 0xaf, 0x1c, 0x00, 0xb1, 0xaf, 0x18, 0x00, 0xb0, 0xaf, 0x21, - 0x80, 0xa0, 0x00, 0x03, 0x00, 0x00, 0x1e, 0x21, 0x88, 0x80, 0x00, 0x75, 0xca, - 0xc0, 0x08, 0x01, 0x00, 0x10, 0x24, 0x1a, 0x00, 0x02, 0x2a, 0x03, 0x00, 0x40, - 0x14, 0x21, 0x98, 0x20, 0x02, 0x19, 0x00, 0x10, 0x24, 0x21, 0x98, 0x20, 0x02, - 0x21, 0x90, 0x00, 0x02, 0x0a, 0x00, 0x40, 0x12, 0xff, 0xff, 0x50, 0x26, 0xff, - 0xff, 0x14, 0x24, 0xa4, 0x85, 0x84, 0x27, 0x00, 0x00, 0x25, 0x92, 0x00, 0x00, - 0x00, 0x00, 0x86, 0xc9, 0xc0, 0x0c, 0x01, 0x00, 0x31, 0x26, 0xff, 0xff, 0x10, - 0x26, 0xf9, 0xff, 0x14, 0x16, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x42, 0x2a, - 0x15, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x40, 0xca, 0xc0, 0x0c, 0x20, - 0x00, 0x04, 0x24, 0xff, 0xff, 0x52, 0x26, 0xff, 0xff, 0x02, 0x24, 0x0f, 0x00, - 0x42, 0x12, 0xff, 0xff, 0x10, 0x24, 0x00, 0x00, 0x64, 0x92, 0x00, 0x00, 0x00, - 0x00, 0xe0, 0xff, 0x82, 0x24, 0x5f, 0x00, 0x42, 0x2c, 0x03, 0x00, 0x40, 0x10, - 0x00, 0x26, 0x04, 0x00, 0x94, 0xca, 0xc0, 0x08, 0x03, 0x26, 0x04, 0x00, 0x2e, - 0x00, 0x04, 0x24, 0x40, 0xca, 0xc0, 0x0c, 0x01, 0x00, 0x73, 0x26, 0xff, 0xff, - 0x52, 0x26, 0xf3, 0xff, 0x50, 0x16, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0xbf, - 0x8f, 0x28, 0x00, 0xb4, 0x8f, 0x24, 0x00, 0xb3, 0x8f, 0x20, 0x00, 0xb2, 0x8f, - 0x1c, 0x00, 0xb1, 0x8f, 0x18, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x30, - 0x00, 0xbd, 0x27, 0xe8, 0xff, 0xbd, 0x27, 0x14, 0x00, 0xbf, 0xaf, 0x10, 0x00, - 0xb0, 0xaf, 0x40, 0xca, 0xc0, 0x0c, 0x0d, 0x00, 0x04, 0x24, 0x21, 0x80, 0x00, - 0x00, 0x40, 0xca, 0xc0, 0x0c, 0x20, 0x00, 0x04, 0x24, 0x01, 0x00, 0x10, 0x26, - 0x4e, 0x00, 0x02, 0x2a, 0xfb, 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x40, - 0xca, 0xc0, 0x0c, 0x0d, 0x00, 0x04, 0x24, 0x14, 0x00, 0xbf, 0x8f, 0x10, 0x00, - 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x18, 0x00, 0xbd, 0x27, 0xf8, 0xff, 0xbd, - 0x27, 0x05, 0x00, 0x80, 0x10, 0xff, 0xff, 0x82, 0x24, 0xff, 0xff, 0x03, 0x24, - 0xff, 0xff, 0x42, 0x24, 0xff, 0xff, 0x43, 0x14, 0xff, 0xff, 0x42, 0x24, 0x08, - 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xff, - 0xbd, 0x27, 0x2c, 0x00, 0xbf, 0xaf, 0x28, 0x00, 0xb6, 0xaf, 0x24, 0x00, 0xb5, - 0xaf, 0x20, 0x00, 0xb4, 0xaf, 0x1c, 0x00, 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, - 0x14, 0x00, 0xb1, 0xaf, 0x03, 0x00, 0x80, 0x10, 0x10, 0x00, 0xb0, 0xaf, 0xa1, - 0xca, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xac, 0x85, 0x84, 0x27, 0x86, 0xc9, - 0xc0, 0x0c, 0x21, 0x90, 0x00, 0x00, 0x06, 0xa2, 0x02, 0x3c, 0x00, 0x00, 0x40, - 0xa4, 0x63, 0x00, 0x11, 0x24, 0x04, 0xa2, 0x10, 0x3c, 0x34, 0x00, 0x15, 0x24, - 0x10, 0x00, 0x13, 0x24, 0xe2, 0x00, 0x14, 0x24, 0x85, 0xc7, 0xc0, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0xb3, 0xca, 0xc0, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x0c, 0x00, - 0x15, 0xa2, 0xb3, 0xca, 0xc0, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x00, 0x00, 0x13, - 0xa2, 0xb3, 0xca, 0xc0, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x00, 0x00, 0x13, 0xa2, - 0xb3, 0xca, 0xc0, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x0c, 0x00, 0x14, 0xa2, 0xb3, - 0xca, 0xc0, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x00, 0x00, 0x02, 0x92, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x00, 0x42, 0x30, 0x04, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x31, 0x26, 0xe9, 0xff, 0x20, 0x16, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x20, 0x16, 0x63, 0x00, 0x11, 0x24, 0xc4, 0x85, 0x84, 0x27, 0x86, - 0xc9, 0xc0, 0x0c, 0x08, 0x00, 0x52, 0x36, 0x63, 0x00, 0x11, 0x24, 0x04, 0xa2, - 0x10, 0x3c, 0xb4, 0x00, 0x15, 0x24, 0xff, 0x00, 0x13, 0x24, 0xe8, 0x00, 0x14, - 0x24, 0x85, 0xc7, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xb3, 0xca, 0xc0, 0x0c, - 0x0a, 0x00, 0x04, 0x24, 0x0c, 0x00, 0x15, 0xa2, 0xb3, 0xca, 0xc0, 0x0c, 0x0a, - 0x00, 0x04, 0x24, 0x08, 0x00, 0x13, 0xa2, 0xb3, 0xca, 0xc0, 0x0c, 0x0a, 0x00, - 0x04, 0x24, 0x08, 0x00, 0x13, 0xa2, 0xb3, 0xca, 0xc0, 0x0c, 0x0a, 0x00, 0x04, - 0x24, 0x0c, 0x00, 0x14, 0xa2, 0xb3, 0xca, 0xc0, 0x0c, 0x0a, 0x00, 0x04, 0x24, - 0x08, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x42, 0x30, 0x04, - 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x31, 0x26, 0xe9, 0xff, - 0x20, 0x16, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x20, 0x16, 0x02, 0x00, 0x10, - 0x24, 0xe0, 0x85, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x08, 0x00, 0x52, 0x36, - 0x02, 0x00, 0x10, 0x24, 0xff, 0xff, 0x11, 0x24, 0x85, 0xc7, 0xc0, 0x0c, 0xff, - 0xff, 0x10, 0x26, 0xfd, 0xff, 0x11, 0x16, 0xd8, 0x00, 0x02, 0x24, 0x04, 0xa2, - 0x10, 0x3c, 0x0c, 0x00, 0x02, 0xa2, 0xb3, 0xca, 0xc0, 0x0c, 0x0a, 0x00, 0x04, - 0x24, 0x08, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x51, 0x30, - 0xb3, 0xca, 0xc0, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x08, 0x00, 0x02, 0x92, 0x00, - 0x00, 0x00, 0x00, 0xff, 0x00, 0x43, 0x30, 0xff, 0x00, 0x02, 0x24, 0x07, 0x00, - 0x62, 0x14, 0x06, 0xa2, 0x02, 0x3c, 0x05, 0x00, 0x23, 0x16, 0x00, 0x00, 0x00, - 0x00, 0xfc, 0x85, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x06, 0xa2, 0x02, 0x3c, 0x00, 0x00, 0x40, 0xa4, 0xfa, 0xc1, 0xc0, 0x0c, 0x21, - 0x20, 0x00, 0x00, 0x00, 0xa3, 0x10, 0x3c, 0x80, 0x01, 0x10, 0x36, 0x01, 0x00, - 0x11, 0x24, 0x00, 0x00, 0x11, 0xae, 0xfa, 0xc1, 0xc0, 0x0c, 0x01, 0x04, 0x04, - 0x24, 0x00, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x51, 0x10, - 0x06, 0x00, 0x10, 0x3c, 0x14, 0x86, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x01, - 0x00, 0x52, 0x36, 0x06, 0x00, 0x10, 0x3c, 0x7f, 0x1a, 0x10, 0x36, 0x00, 0xa3, - 0x13, 0x3c, 0x80, 0x01, 0x73, 0x36, 0xff, 0xff, 0x11, 0x24, 0x85, 0xc7, 0xc0, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x40, 0x10, 0xff, 0xff, 0x10, 0x26, 0xf9, 0xff, 0x11, 0x16, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xa3, 0x02, 0x3c, 0x80, 0x01, 0x42, 0x34, 0x00, 0x00, - 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x40, 0x10, 0x06, 0xa2, 0x02, - 0x3c, 0x30, 0x86, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x02, 0x00, 0x52, 0x36, - 0x06, 0xa2, 0x02, 0x3c, 0x00, 0x00, 0x40, 0xa4, 0x63, 0x00, 0x11, 0x24, 0x04, - 0xa2, 0x10, 0x3c, 0x34, 0x00, 0x15, 0x24, 0xff, 0x00, 0x13, 0x24, 0xe2, 0x00, - 0x14, 0x24, 0x85, 0xc7, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xb3, 0xca, 0xc0, - 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x0c, 0x00, 0x15, 0xa2, 0xb3, 0xca, 0xc0, 0x0c, - 0x0a, 0x00, 0x04, 0x24, 0x00, 0x00, 0x13, 0xa2, 0xb3, 0xca, 0xc0, 0x0c, 0x0a, - 0x00, 0x04, 0x24, 0x00, 0x00, 0x13, 0xa2, 0xb3, 0xca, 0xc0, 0x0c, 0x0a, 0x00, - 0x04, 0x24, 0x0c, 0x00, 0x14, 0xa2, 0xb3, 0xca, 0xc0, 0x0c, 0x0a, 0x00, 0x04, - 0x24, 0x00, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x42, 0x30, - 0x04, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x31, 0x26, 0xe9, - 0xff, 0x20, 0x16, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x16, 0x00, 0x00, - 0x00, 0x00, 0xc4, 0x85, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x08, 0x00, 0x52, - 0x36, 0xfa, 0xc1, 0xc0, 0x0c, 0x21, 0x20, 0x00, 0x00, 0x00, 0xa3, 0x03, 0x3c, - 0x80, 0x01, 0x63, 0x34, 0x01, 0x00, 0x02, 0x24, 0x00, 0x00, 0x62, 0xac, 0xfa, - 0xc1, 0xc0, 0x0c, 0x01, 0x04, 0x04, 0x24, 0xb3, 0xca, 0xc0, 0x0c, 0x0a, 0x00, - 0x04, 0x24, 0x85, 0xc7, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x02, - 0x3c, 0x80, 0x01, 0x42, 0x34, 0x00, 0x00, 0x43, 0x8c, 0x01, 0x00, 0x02, 0x24, - 0x04, 0x00, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0x50, 0x86, 0x84, 0x27, 0x86, - 0xc9, 0xc0, 0x0c, 0x04, 0x00, 0x52, 0x36, 0xfa, 0xc1, 0xc0, 0x0c, 0x21, 0x20, - 0x00, 0x00, 0x06, 0xa2, 0x02, 0x3c, 0x00, 0x00, 0x40, 0xa4, 0x63, 0x00, 0x11, - 0x24, 0x04, 0xa2, 0x10, 0x3c, 0x34, 0x00, 0x16, 0x24, 0xcc, 0x00, 0x15, 0x24, - 0x1c, 0x00, 0x14, 0x24, 0xe2, 0x00, 0x13, 0x24, 0x85, 0xc7, 0xc0, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0xb3, 0xca, 0xc0, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x0c, 0x00, - 0x16, 0xa2, 0xb3, 0xca, 0xc0, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x00, 0x00, 0x15, - 0xa2, 0xb3, 0xca, 0xc0, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x00, 0x00, 0x14, 0xa2, - 0xb3, 0xca, 0xc0, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x0c, 0x00, 0x13, 0xa2, 0xb3, - 0xca, 0xc0, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x00, 0x00, 0x02, 0x92, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x00, 0x42, 0x30, 0x04, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x31, 0x26, 0xe9, 0xff, 0x20, 0x16, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x20, 0x16, 0x63, 0x00, 0x11, 0x24, 0xc4, 0x85, 0x84, 0x27, 0x86, - 0xc9, 0xc0, 0x0c, 0x08, 0x00, 0x52, 0x36, 0x63, 0x00, 0x11, 0x24, 0x04, 0xa2, - 0x10, 0x3c, 0xb4, 0x00, 0x15, 0x24, 0xff, 0x00, 0x13, 0x24, 0xe8, 0x00, 0x14, - 0x24, 0x85, 0xc7, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xb3, 0xca, 0xc0, 0x0c, - 0x0a, 0x00, 0x04, 0x24, 0x0c, 0x00, 0x15, 0xa2, 0xb3, 0xca, 0xc0, 0x0c, 0x0a, - 0x00, 0x04, 0x24, 0x08, 0x00, 0x13, 0xa2, 0xb3, 0xca, 0xc0, 0x0c, 0x0a, 0x00, - 0x04, 0x24, 0x08, 0x00, 0x13, 0xa2, 0xb3, 0xca, 0xc0, 0x0c, 0x0a, 0x00, 0x04, - 0x24, 0x0c, 0x00, 0x14, 0xa2, 0xb3, 0xca, 0xc0, 0x0c, 0x0a, 0x00, 0x04, 0x24, - 0x08, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x42, 0x30, 0x04, - 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x31, 0x26, 0xe9, 0xff, - 0x20, 0x16, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x20, 0x16, 0x06, 0xa2, 0x02, - 0x3c, 0xe0, 0x85, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x08, 0x00, 0x52, 0x36, - 0x06, 0xa2, 0x02, 0x3c, 0x00, 0x00, 0x40, 0xa4, 0xfa, 0xc1, 0xc0, 0x0c, 0x21, - 0x20, 0x00, 0x00, 0x00, 0xa3, 0x03, 0x3c, 0x80, 0x01, 0x63, 0x34, 0x01, 0x00, - 0x02, 0x24, 0x00, 0x00, 0x62, 0xac, 0xfa, 0xc1, 0xc0, 0x0c, 0x01, 0x04, 0x04, - 0x24, 0x05, 0x00, 0x40, 0x16, 0x21, 0x10, 0x40, 0x02, 0x70, 0x86, 0x84, 0x27, - 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x40, 0x02, 0x2c, - 0x00, 0xbf, 0x8f, 0x28, 0x00, 0xb6, 0x8f, 0x24, 0x00, 0xb5, 0x8f, 0x20, 0x00, - 0xb4, 0x8f, 0x1c, 0x00, 0xb3, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, - 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x30, 0x00, 0xbd, 0x27, - 0xc0, 0xff, 0xbd, 0x27, 0x3c, 0x00, 0xbf, 0xaf, 0x38, 0x00, 0xbe, 0xaf, 0x34, - 0x00, 0xb7, 0xaf, 0x30, 0x00, 0xb6, 0xaf, 0x2c, 0x00, 0xb5, 0xaf, 0x28, 0x00, - 0xb4, 0xaf, 0x24, 0x00, 0xb3, 0xaf, 0x20, 0x00, 0xb2, 0xaf, 0x1c, 0x00, 0xb1, - 0xaf, 0x18, 0x00, 0xb0, 0xaf, 0x21, 0xa8, 0x80, 0x00, 0x21, 0xf0, 0xc0, 0x00, - 0x50, 0x00, 0xb1, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0xc0, 0x13, 0x21, - 0xa0, 0xa0, 0x00, 0x03, 0x00, 0xe0, 0x10, 0x00, 0x00, 0x00, 0x00, 0xa1, 0xca, - 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x86, 0x84, 0x27, 0x21, 0x28, 0xa0, - 0x02, 0x86, 0xc9, 0xc0, 0x0c, 0x21, 0x30, 0x80, 0x02, 0x21, 0x80, 0xa0, 0x02, - 0x2b, 0x10, 0x90, 0x02, 0x06, 0x00, 0x40, 0x14, 0x21, 0x98, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xae, 0x04, 0x00, 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, 0xfc, 0xff, - 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x85, 0xc7, 0xc0, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x8f, 0x00, 0x20, 0x12, 0x21, 0x80, 0xa0, 0x02, 0x2b, 0x10, 0x90, 0x02, - 0x45, 0x00, 0x40, 0x14, 0x2b, 0x10, 0x95, 0x02, 0x11, 0x11, 0x17, 0x3c, 0x11, - 0x11, 0xf7, 0x36, 0x33, 0x33, 0x16, 0x3c, 0x33, 0x33, 0xd6, 0x36, 0x77, 0x77, - 0x12, 0x3c, 0x77, 0x77, 0x52, 0x36, 0xff, 0xff, 0x11, 0x24, 0x00, 0x00, 0x07, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0xe0, 0x10, 0x01, 0x00, 0x05, 0x24, - 0xa0, 0x86, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x86, 0xc9, 0xc0, 0x0c, 0x21, - 0x30, 0x00, 0x00, 0x01, 0x00, 0x73, 0x36, 0x00, 0x00, 0x17, 0xae, 0x00, 0x00, - 0x07, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0xf7, 0x10, 0x02, 0x00, 0x05, - 0x24, 0xa0, 0x86, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x11, 0x11, 0x06, 0x3c, - 0x86, 0xc9, 0xc0, 0x0c, 0x11, 0x11, 0xc6, 0x34, 0x02, 0x00, 0x73, 0x36, 0x00, - 0x00, 0x16, 0xae, 0x00, 0x00, 0x07, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, - 0xf6, 0x10, 0x03, 0x00, 0x05, 0x24, 0xa0, 0x86, 0x84, 0x8f, 0x10, 0x00, 0xb0, - 0xaf, 0x33, 0x33, 0x06, 0x3c, 0x86, 0xc9, 0xc0, 0x0c, 0x33, 0x33, 0xc6, 0x34, - 0x04, 0x00, 0x73, 0x36, 0x00, 0x00, 0x12, 0xae, 0x00, 0x00, 0x07, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x07, 0x00, 0xf2, 0x10, 0x04, 0x00, 0x05, 0x24, 0xa0, 0x86, - 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x77, 0x77, 0x06, 0x3c, 0x86, 0xc9, 0xc0, - 0x0c, 0x77, 0x77, 0xc6, 0x34, 0x08, 0x00, 0x73, 0x36, 0x00, 0x00, 0x11, 0xae, - 0x00, 0x00, 0x07, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0xf1, 0x10, 0x05, - 0x00, 0x05, 0x24, 0xa0, 0x86, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x86, 0xc9, - 0xc0, 0x0c, 0xff, 0xff, 0x06, 0x24, 0x10, 0x00, 0x73, 0x36, 0xff, 0x00, 0x02, - 0x32, 0x03, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x85, 0xc7, 0xc0, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, 0xc4, - 0xff, 0x40, 0x10, 0x2b, 0x10, 0x95, 0x02, 0xd5, 0x01, 0x40, 0x14, 0x21, 0x80, - 0x80, 0x02, 0x77, 0x77, 0x14, 0x3c, 0x77, 0x77, 0x94, 0x36, 0x33, 0x33, 0x12, - 0x3c, 0x33, 0x33, 0x52, 0x36, 0x11, 0x11, 0x11, 0x3c, 0x11, 0x11, 0x31, 0x36, - 0x00, 0x00, 0x07, 0x8e, 0xff, 0xff, 0x02, 0x24, 0x06, 0x00, 0xe2, 0x10, 0x06, - 0x00, 0x05, 0x24, 0xa0, 0x86, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x86, 0xc9, - 0xc0, 0x0c, 0xff, 0xff, 0x06, 0x24, 0x20, 0x00, 0x73, 0x36, 0x00, 0x00, 0x14, - 0xae, 0x00, 0x00, 0x07, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0xf4, 0x10, - 0x07, 0x00, 0x05, 0x24, 0xa0, 0x86, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x77, - 0x77, 0x06, 0x3c, 0x86, 0xc9, 0xc0, 0x0c, 0x77, 0x77, 0xc6, 0x34, 0x40, 0x00, - 0x73, 0x36, 0x00, 0x00, 0x12, 0xae, 0x00, 0x00, 0x07, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x07, 0x00, 0xf2, 0x10, 0x08, 0x00, 0x05, 0x24, 0xa0, 0x86, 0x84, 0x8f, - 0x10, 0x00, 0xb0, 0xaf, 0x33, 0x33, 0x06, 0x3c, 0x86, 0xc9, 0xc0, 0x0c, 0x33, - 0x33, 0xc6, 0x34, 0x80, 0x00, 0x73, 0x36, 0x00, 0x00, 0x11, 0xae, 0x00, 0x00, - 0x07, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0xf1, 0x10, 0x09, 0x00, 0x05, - 0x24, 0xa0, 0x86, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x11, 0x11, 0x06, 0x3c, - 0x86, 0xc9, 0xc0, 0x0c, 0x11, 0x11, 0xc6, 0x34, 0x00, 0x01, 0x73, 0x36, 0x00, - 0x00, 0x00, 0xae, 0x00, 0x00, 0x07, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, - 0xe0, 0x10, 0x0a, 0x00, 0x05, 0x24, 0xa0, 0x86, 0x84, 0x8f, 0x10, 0x00, 0xb0, - 0xaf, 0x86, 0xc9, 0xc0, 0x0c, 0x21, 0x30, 0x00, 0x00, 0x00, 0x02, 0x73, 0x36, - 0xff, 0x00, 0x02, 0x32, 0x03, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x85, - 0xc7, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x10, 0x26, 0x2b, 0x10, - 0x15, 0x02, 0xc4, 0xff, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x32, 0xce, 0xc0, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0x95, 0x02, 0x58, 0x00, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x11, 0x24, 0x21, 0x90, 0x00, 0x00, 0x00, - 0x00, 0x07, 0x92, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xe7, 0x30, 0xff, 0x00, - 0x46, 0x32, 0x07, 0x00, 0xe6, 0x10, 0x25, 0x10, 0x51, 0x02, 0xa0, 0x86, 0x84, - 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x86, 0xc9, 0xc0, 0x0c, 0x01, 0x00, 0x05, 0x24, - 0x01, 0x00, 0x73, 0x36, 0x25, 0x10, 0x51, 0x02, 0x00, 0x00, 0x02, 0xa2, 0x00, - 0x00, 0x07, 0x92, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xe7, 0x30, 0xff, 0x00, - 0x46, 0x30, 0x06, 0x00, 0xe6, 0x10, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x86, 0x84, - 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x86, 0xc9, 0xc0, 0x0c, 0x02, 0x00, 0x05, 0x24, - 0x02, 0x00, 0x73, 0x36, 0x00, 0x00, 0x12, 0xa2, 0x00, 0x00, 0x07, 0x92, 0x00, - 0x00, 0x00, 0x00, 0xff, 0x00, 0xe7, 0x30, 0xff, 0x00, 0x46, 0x32, 0x07, 0x00, - 0xe6, 0x10, 0x25, 0x10, 0x51, 0x02, 0xa0, 0x86, 0x84, 0x8f, 0x10, 0x00, 0xb0, - 0xaf, 0x86, 0xc9, 0xc0, 0x0c, 0x03, 0x00, 0x05, 0x24, 0x04, 0x00, 0x73, 0x36, - 0x25, 0x10, 0x51, 0x02, 0x00, 0x00, 0x02, 0xa2, 0x40, 0x10, 0x11, 0x00, 0x21, - 0x88, 0x40, 0x00, 0xff, 0xff, 0x52, 0x24, 0xff, 0x00, 0x22, 0x32, 0xd5, 0xff, - 0x40, 0x14, 0xff, 0x00, 0x02, 0x32, 0x03, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x85, 0xc7, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x26, - 0x2b, 0x10, 0x90, 0x02, 0xcb, 0xff, 0x40, 0x10, 0x2b, 0x10, 0x95, 0x02, 0x20, - 0x00, 0x40, 0x14, 0x21, 0x80, 0xa0, 0x02, 0x01, 0x00, 0x11, 0x24, 0xfe, 0x00, - 0x12, 0x24, 0x00, 0x00, 0x07, 0x92, 0x25, 0x10, 0x51, 0x02, 0xff, 0x00, 0xe7, - 0x30, 0xff, 0x00, 0x46, 0x30, 0x06, 0x00, 0xe6, 0x10, 0x00, 0x00, 0x00, 0x00, - 0xa0, 0x86, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x86, 0xc9, 0xc0, 0x0c, 0x04, - 0x00, 0x05, 0x24, 0x08, 0x00, 0x73, 0x36, 0x00, 0x00, 0x12, 0xa2, 0x25, 0x10, - 0x51, 0x02, 0x00, 0x00, 0x02, 0xa2, 0x40, 0x88, 0x11, 0x00, 0x40, 0x10, 0x12, - 0x00, 0x01, 0x00, 0x52, 0x34, 0xff, 0x00, 0x22, 0x32, 0xed, 0xff, 0x40, 0x14, - 0xff, 0x00, 0x02, 0x32, 0x03, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x85, - 0xc7, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x26, 0x2b, 0x10, - 0x90, 0x02, 0xe4, 0xff, 0x40, 0x10, 0x01, 0x00, 0x11, 0x24, 0x2b, 0x10, 0x95, - 0x02, 0x3c, 0x00, 0x40, 0x14, 0x21, 0x80, 0x80, 0x02, 0x80, 0x00, 0x11, 0x24, - 0x7f, 0x00, 0x12, 0x24, 0x00, 0x00, 0x07, 0x92, 0x25, 0x10, 0x51, 0x02, 0xff, - 0x00, 0xe7, 0x30, 0xff, 0x00, 0x46, 0x30, 0x06, 0x00, 0xe6, 0x10, 0x00, 0x00, - 0x00, 0x00, 0xa0, 0x86, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x86, 0xc9, 0xc0, - 0x0c, 0x05, 0x00, 0x05, 0x24, 0x10, 0x00, 0x73, 0x36, 0x00, 0x00, 0x12, 0xa2, - 0x25, 0x10, 0x51, 0x02, 0x00, 0x00, 0x02, 0xa2, 0x00, 0x00, 0x12, 0xa2, 0xff, - 0x00, 0x22, 0x32, 0x42, 0x88, 0x02, 0x00, 0xff, 0x00, 0x42, 0x32, 0xed, 0xff, - 0x20, 0x16, 0x42, 0x90, 0x02, 0x00, 0xff, 0x00, 0x02, 0x32, 0x03, 0x00, 0x40, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x85, 0xc7, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x10, 0x26, 0x2b, 0x10, 0x15, 0x02, 0xe3, 0xff, 0x40, 0x10, 0x80, - 0x00, 0x11, 0x24, 0x2b, 0x10, 0x95, 0x02, 0x1a, 0x00, 0x40, 0x14, 0x21, 0x80, - 0x80, 0x02, 0x80, 0x00, 0x11, 0x24, 0x00, 0x00, 0x07, 0x92, 0x00, 0x00, 0x00, - 0x00, 0xff, 0x00, 0xe7, 0x30, 0x06, 0x00, 0xe0, 0x10, 0x06, 0x00, 0x05, 0x24, - 0xa0, 0x86, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x86, 0xc9, 0xc0, 0x0c, 0x21, - 0x30, 0x00, 0x00, 0x20, 0x00, 0x73, 0x36, 0x00, 0x00, 0x11, 0xa2, 0x00, 0x00, - 0x00, 0xa2, 0xff, 0x00, 0x22, 0x32, 0x42, 0x88, 0x02, 0x00, 0xf1, 0xff, 0x20, - 0x16, 0xff, 0x00, 0x02, 0x32, 0x03, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x85, 0xc7, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x10, 0x26, 0x2b, - 0x10, 0x15, 0x02, 0xe9, 0xff, 0x40, 0x10, 0x80, 0x00, 0x11, 0x24, 0x0f, 0x00, - 0x12, 0x24, 0x01, 0x00, 0x42, 0x32, 0x23, 0x10, 0x02, 0x00, 0x00, 0x44, 0x03, - 0x3c, 0x00, 0x11, 0x63, 0x34, 0x24, 0x88, 0x43, 0x00, 0x02, 0x00, 0x42, 0x32, - 0x03, 0x00, 0x40, 0x10, 0x00, 0x11, 0x02, 0x3c, 0x00, 0x44, 0x42, 0x34, 0x25, - 0x88, 0x22, 0x02, 0x04, 0x00, 0x42, 0x32, 0x03, 0x00, 0x40, 0x10, 0x88, 0x00, - 0x02, 0x3c, 0x22, 0x00, 0x42, 0x34, 0x25, 0x88, 0x22, 0x02, 0x08, 0x00, 0x42, - 0x32, 0x03, 0x00, 0x40, 0x10, 0x22, 0x00, 0x02, 0x3c, 0x88, 0x00, 0x42, 0x34, - 0x25, 0x88, 0x22, 0x02, 0x21, 0x80, 0xa0, 0x02, 0x2b, 0x10, 0x90, 0x02, 0x06, - 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xae, 0x04, 0x00, - 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, 0xfc, 0xff, 0x40, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x85, 0xc7, 0xc0, 0x0c, 0x21, 0x80, 0xa0, 0x02, 0x2b, 0x10, 0x90, 0x02, - 0x13, 0x00, 0x40, 0x14, 0x55, 0xaa, 0x02, 0x3c, 0x00, 0x00, 0x07, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x06, 0x00, 0xf1, 0x10, 0x07, 0x00, 0x05, 0x24, 0xa0, 0x86, - 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x86, 0xc9, 0xc0, 0x0c, 0x21, 0x30, 0x20, - 0x02, 0x40, 0x00, 0x73, 0x36, 0xff, 0x00, 0x02, 0x32, 0x03, 0x00, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x85, 0xc7, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x00, 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, 0xef, 0xff, 0x40, 0x10, 0x55, 0xaa, - 0x02, 0x3c, 0x55, 0xaa, 0x42, 0x34, 0x25, 0x88, 0x22, 0x02, 0x21, 0x80, 0xa0, - 0x02, 0x2b, 0x10, 0x90, 0x02, 0x06, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x11, 0xae, 0x04, 0x00, 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, 0xfc, - 0xff, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x85, 0xc7, 0xc0, 0x0c, 0x21, 0x80, - 0xa0, 0x02, 0x2b, 0x10, 0x90, 0x02, 0x13, 0x00, 0x40, 0x14, 0xaa, 0x55, 0x02, - 0x3c, 0x00, 0x00, 0x07, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0xf1, 0x10, - 0x08, 0x00, 0x05, 0x24, 0xa0, 0x86, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x86, - 0xc9, 0xc0, 0x0c, 0x21, 0x30, 0x20, 0x02, 0x80, 0x00, 0x73, 0x36, 0xff, 0x00, - 0x02, 0x32, 0x03, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x85, 0xc7, 0xc0, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, - 0xef, 0xff, 0x40, 0x10, 0xaa, 0x55, 0x02, 0x3c, 0xaa, 0x55, 0x42, 0x34, 0x24, - 0x88, 0x22, 0x02, 0x21, 0x80, 0xa0, 0x02, 0x2b, 0x10, 0x90, 0x02, 0x06, 0x00, - 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xae, 0x04, 0x00, 0x10, - 0x26, 0x2b, 0x10, 0x90, 0x02, 0xfc, 0xff, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x85, 0xc7, 0xc0, 0x0c, 0x21, 0x80, 0xa0, 0x02, 0x2b, 0x10, 0x90, 0x02, 0x13, - 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x06, 0x00, 0xf1, 0x10, 0x09, 0x00, 0x05, 0x24, 0xa0, 0x86, 0x84, - 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x86, 0xc9, 0xc0, 0x0c, 0x21, 0x30, 0x20, 0x02, - 0x00, 0x01, 0x73, 0x36, 0xff, 0x00, 0x02, 0x32, 0x03, 0x00, 0x40, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x85, 0xc7, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, 0xef, 0xff, 0x40, 0x10, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x52, 0x26, 0x87, 0xff, 0x41, 0x06, 0x01, 0x00, 0x42, 0x32, - 0x0f, 0x00, 0x12, 0x24, 0x01, 0x00, 0x42, 0x32, 0x23, 0x10, 0x02, 0x00, 0x00, - 0x88, 0x03, 0x3c, 0x00, 0x22, 0x63, 0x34, 0x24, 0x88, 0x43, 0x00, 0x02, 0x00, - 0x42, 0x32, 0x03, 0x00, 0x40, 0x10, 0x00, 0x22, 0x02, 0x3c, 0x00, 0x88, 0x42, - 0x34, 0x25, 0x88, 0x22, 0x02, 0x04, 0x00, 0x42, 0x32, 0x03, 0x00, 0x40, 0x10, - 0x44, 0x00, 0x02, 0x3c, 0x11, 0x00, 0x42, 0x34, 0x25, 0x88, 0x22, 0x02, 0x08, - 0x00, 0x42, 0x32, 0x03, 0x00, 0x40, 0x10, 0x11, 0x00, 0x02, 0x3c, 0x44, 0x00, - 0x42, 0x34, 0x25, 0x88, 0x22, 0x02, 0x21, 0x80, 0xa0, 0x02, 0x2b, 0x10, 0x90, - 0x02, 0x06, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xae, - 0x04, 0x00, 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, 0xfc, 0xff, 0x40, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x85, 0xc7, 0xc0, 0x0c, 0x21, 0x80, 0xa0, 0x02, 0x2b, 0x10, - 0x90, 0x02, 0x13, 0x00, 0x40, 0x14, 0xaa, 0x55, 0x02, 0x3c, 0x00, 0x00, 0x07, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0xf1, 0x10, 0x0a, 0x00, 0x05, 0x24, - 0xa0, 0x86, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x86, 0xc9, 0xc0, 0x0c, 0x21, - 0x30, 0x20, 0x02, 0x00, 0x02, 0x73, 0x36, 0xff, 0x00, 0x02, 0x32, 0x03, 0x00, - 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x85, 0xc7, 0xc0, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x00, 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, 0xef, 0xff, 0x40, 0x10, - 0xaa, 0x55, 0x02, 0x3c, 0xaa, 0x55, 0x42, 0x34, 0x25, 0x88, 0x22, 0x02, 0x21, - 0x80, 0xa0, 0x02, 0x2b, 0x10, 0x90, 0x02, 0x06, 0x00, 0x40, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x11, 0xae, 0x04, 0x00, 0x10, 0x26, 0x2b, 0x10, 0x90, - 0x02, 0xfc, 0xff, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x85, 0xc7, 0xc0, 0x0c, - 0x21, 0x80, 0xa0, 0x02, 0x2b, 0x10, 0x90, 0x02, 0x13, 0x00, 0x40, 0x14, 0x55, - 0xaa, 0x02, 0x3c, 0x00, 0x00, 0x07, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, - 0xf1, 0x10, 0x0b, 0x00, 0x05, 0x24, 0xa0, 0x86, 0x84, 0x8f, 0x10, 0x00, 0xb0, - 0xaf, 0x86, 0xc9, 0xc0, 0x0c, 0x21, 0x30, 0x20, 0x02, 0x00, 0x02, 0x73, 0x36, - 0xff, 0x00, 0x02, 0x32, 0x03, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x85, - 0xc7, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x26, 0x2b, 0x10, - 0x90, 0x02, 0xef, 0xff, 0x40, 0x10, 0x55, 0xaa, 0x02, 0x3c, 0x55, 0xaa, 0x42, - 0x34, 0x24, 0x88, 0x22, 0x02, 0x21, 0x80, 0xa0, 0x02, 0x2b, 0x10, 0x90, 0x02, - 0x06, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xae, 0x04, - 0x00, 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, 0xfc, 0xff, 0x40, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x85, 0xc7, 0xc0, 0x0c, 0x21, 0x80, 0xa0, 0x02, 0x2b, 0x10, 0x90, - 0x02, 0x13, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0xf1, 0x10, 0x0c, 0x00, 0x05, 0x24, 0xa0, - 0x86, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x86, 0xc9, 0xc0, 0x0c, 0x21, 0x30, - 0x20, 0x02, 0x00, 0x02, 0x73, 0x36, 0xff, 0x00, 0x02, 0x32, 0x03, 0x00, 0x40, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x85, 0xc7, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, 0xef, 0xff, 0x40, 0x10, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x52, 0x26, 0x87, 0xff, 0x41, 0x06, 0x01, 0x00, - 0x42, 0x32, 0x07, 0x00, 0x60, 0x16, 0x21, 0x10, 0x60, 0x02, 0x05, 0x00, 0xc0, - 0x13, 0x00, 0x00, 0x00, 0x00, 0x70, 0x86, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x60, 0x02, 0x3c, 0x00, 0xbf, 0x8f, 0x38, - 0x00, 0xbe, 0x8f, 0x34, 0x00, 0xb7, 0x8f, 0x30, 0x00, 0xb6, 0x8f, 0x2c, 0x00, - 0xb5, 0x8f, 0x28, 0x00, 0xb4, 0x8f, 0x24, 0x00, 0xb3, 0x8f, 0x20, 0x00, 0xb2, - 0x8f, 0x1c, 0x00, 0xb1, 0x8f, 0x18, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, - 0x40, 0x00, 0xbd, 0x27, 0xe0, 0xff, 0xbd, 0x27, 0x18, 0x00, 0xbf, 0xaf, 0x14, - 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x88, 0x80, 0x00, 0x21, 0x80, - 0xa0, 0x00, 0xc4, 0x86, 0x84, 0x27, 0x50, 0x8f, 0x85, 0x8f, 0x86, 0xc9, 0xc0, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x86, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, - 0x21, 0x28, 0x00, 0x02, 0xd8, 0x86, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x21, - 0x28, 0x20, 0x02, 0x0e, 0x00, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8b, - 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x51, 0x00, 0x09, 0x00, 0x40, - 0x14, 0x40, 0x10, 0x11, 0x00, 0x21, 0x10, 0x51, 0x00, 0x80, 0x10, 0x02, 0x00, - 0x03, 0x83, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0x7c, 0x59, 0x22, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x14, 0x40, 0x10, 0x11, 0x00, 0xe4, 0x86, - 0x84, 0x27, 0xeb, 0xce, 0xc0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x51, - 0x00, 0x80, 0x18, 0x02, 0x00, 0x03, 0x83, 0x02, 0x3c, 0x7c, 0x59, 0x42, 0x24, - 0x21, 0x10, 0x62, 0x00, 0x00, 0x83, 0x04, 0x3c, 0x24, 0x10, 0x44, 0x00, 0x08, - 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x03, 0x83, 0x02, 0x3c, 0x21, 0x10, - 0x43, 0x00, 0x7c, 0x59, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x24, 0x10, 0x44, - 0x00, 0x04, 0x00, 0x40, 0x14, 0x40, 0x10, 0x11, 0x00, 0xfc, 0x86, 0x84, 0x27, - 0xeb, 0xce, 0xc0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x51, 0x00, 0x80, - 0x10, 0x02, 0x00, 0x03, 0x83, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0x7c, 0x59, - 0x22, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x4b, 0xa2, 0x2c, 0x0a, 0x00, 0x40, 0x14, 0x40, 0x10, 0x11, 0x00, - 0x62, 0x10, 0x02, 0x3c, 0xd3, 0x4d, 0x42, 0x34, 0x19, 0x00, 0xa2, 0x00, 0x14, - 0x87, 0x84, 0x27, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x96, 0xce, 0xc0, 0x08, 0x82, 0x29, 0x06, 0x00, 0x21, 0x10, 0x51, - 0x00, 0x80, 0x10, 0x02, 0x00, 0x03, 0x83, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, - 0x7c, 0x59, 0x22, 0x8c, 0x1c, 0x87, 0x84, 0x27, 0x00, 0x00, 0x45, 0x8c, 0x86, - 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x11, 0x00, 0x21, 0x10, - 0x51, 0x00, 0x80, 0x10, 0x02, 0x00, 0x03, 0x83, 0x03, 0x3c, 0x21, 0x18, 0x62, - 0x00, 0x78, 0x59, 0x63, 0x8c, 0x03, 0x83, 0x02, 0x3c, 0xd4, 0x58, 0x42, 0x24, - 0x04, 0x00, 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, 0x20, 0x87, 0x84, 0x27, 0xdc, - 0xce, 0xc0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x03, 0x83, 0x02, 0x3c, 0x84, 0x58, - 0x42, 0x24, 0x04, 0x00, 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x87, 0x84, - 0x27, 0xdc, 0xce, 0xc0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x03, 0x83, 0x02, 0x3c, - 0xbc, 0x58, 0x42, 0x24, 0x04, 0x00, 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, 0x38, - 0x87, 0x84, 0x27, 0xdc, 0xce, 0xc0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x03, 0x83, - 0x02, 0x3c, 0xa0, 0x58, 0x42, 0x24, 0x04, 0x00, 0x62, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x44, 0x87, 0x84, 0x27, 0xdc, 0xce, 0xc0, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x83, 0x02, 0x3c, 0x08, 0x59, 0x42, 0x24, 0x04, 0x00, 0x62, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x50, 0x87, 0x84, 0x27, 0xdc, 0xce, 0xc0, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x03, 0x83, 0x02, 0x3c, 0x24, 0x59, 0x42, 0x24, 0x04, 0x00, 0x62, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x87, 0x84, 0x27, 0xdc, 0xce, 0xc0, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x83, 0x02, 0x3c, 0x40, 0x59, 0x42, 0x24, 0x04, - 0x00, 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x87, 0x84, 0x27, 0xdc, 0xce, - 0xc0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x03, 0x83, 0x02, 0x3c, 0x5c, 0x59, 0x42, - 0x24, 0x04, 0x00, 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, 0x78, 0x87, 0x84, 0x27, - 0xdc, 0xce, 0xc0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x03, 0x83, 0x02, 0x3c, 0xec, - 0x58, 0x42, 0x24, 0x94, 0x87, 0x84, 0x27, 0x02, 0x00, 0x62, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x84, 0x87, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x40, 0x10, 0x11, 0x00, 0x21, 0x10, 0x51, 0x00, 0x80, 0x10, 0x02, 0x00, - 0x03, 0x83, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0x80, 0x59, 0x22, 0x94, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x87, - 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x87, 0x84, - 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0xbf, 0x8f, - 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x20, - 0x00, 0xbd, 0x27, 0xd8, 0xff, 0xbd, 0x27, 0x20, 0x00, 0xbf, 0xaf, 0x1c, 0x00, - 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, - 0xaf, 0x21, 0x90, 0x80, 0x00, 0x21, 0x88, 0xa0, 0x00, 0x21, 0x98, 0xc0, 0x00, - 0x54, 0x8f, 0x82, 0x93, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x24, 0x02, - 0x00, 0x42, 0x2c, 0x07, 0x00, 0x40, 0x14, 0x21, 0x80, 0xe0, 0x00, 0x54, 0x8f, - 0x83, 0x93, 0x04, 0x00, 0x02, 0x24, 0x03, 0x00, 0x62, 0x10, 0x10, 0x00, 0x02, - 0x24, 0xdc, 0x00, 0x62, 0x14, 0x21, 0x10, 0x20, 0x02, 0x21, 0x00, 0x42, 0x92, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x34, 0x21, 0x00, 0x42, 0xa2, 0x01, - 0x00, 0x02, 0x3c, 0x9f, 0x86, 0x42, 0x34, 0xff, 0xff, 0x42, 0x24, 0xff, 0xff, - 0x40, 0x14, 0xff, 0xff, 0x42, 0x24, 0x08, 0x00, 0x42, 0x96, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x08, 0x42, 0x30, 0x10, 0x00, 0x40, 0x14, 0x00, 0x40, 0x02, 0x24, - 0x04, 0x10, 0x02, 0x02, 0x20, 0x00, 0x42, 0x24, 0xb4, 0x87, 0x84, 0x27, 0x86, - 0xc9, 0xc0, 0x0c, 0x25, 0x88, 0x22, 0x02, 0x21, 0x20, 0x60, 0x02, 0x46, 0xce, - 0xc0, 0x0c, 0x21, 0x28, 0x00, 0x02, 0xb8, 0x87, 0x84, 0x27, 0x86, 0xc9, 0xc0, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x45, 0x92, 0xcc, 0x87, 0x84, 0x27, - 0x86, 0xc9, 0xc0, 0x0c, 0xff, 0x00, 0xa5, 0x30, 0x21, 0x00, 0x42, 0x92, 0x00, - 0x00, 0x00, 0x00, 0xfe, 0x00, 0x42, 0x30, 0x21, 0x00, 0x42, 0xa2, 0x01, 0x00, - 0x02, 0x3c, 0x9f, 0x86, 0x42, 0x34, 0xff, 0xff, 0x42, 0x24, 0xff, 0xff, 0x40, - 0x14, 0xff, 0xff, 0x42, 0x24, 0x08, 0x00, 0x42, 0x96, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x42, 0x30, 0x0c, 0x00, 0x40, 0x10, 0x00, 0x40, 0x02, 0x24, 0x04, - 0x10, 0x02, 0x02, 0x20, 0x00, 0x42, 0x24, 0xb4, 0x87, 0x84, 0x27, 0x86, 0xc9, - 0xc0, 0x0c, 0x25, 0x88, 0x22, 0x02, 0x21, 0x20, 0x60, 0x02, 0x46, 0xce, 0xc0, - 0x0c, 0x21, 0x28, 0x00, 0x02, 0xdc, 0x87, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x42, 0x92, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x42, 0x34, 0x21, 0x00, 0x42, 0xa2, 0x01, 0x00, 0x02, 0x3c, 0x9f, 0x86, - 0x42, 0x34, 0xff, 0xff, 0x42, 0x24, 0xff, 0xff, 0x40, 0x14, 0xff, 0xff, 0x42, - 0x24, 0x08, 0x00, 0x42, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x42, 0x30, - 0x10, 0x00, 0x40, 0x14, 0x00, 0x40, 0x02, 0x24, 0x04, 0x10, 0x02, 0x02, 0x20, - 0x00, 0x42, 0x24, 0xb4, 0x87, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x25, 0x88, - 0x22, 0x02, 0x21, 0x20, 0x60, 0x02, 0x46, 0xce, 0xc0, 0x0c, 0x21, 0x28, 0x00, - 0x02, 0xb8, 0x87, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x45, 0x92, 0xcc, 0x87, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0xff, - 0x00, 0xa5, 0x30, 0x54, 0x8f, 0x83, 0x93, 0x02, 0x00, 0x02, 0x24, 0x03, 0x00, - 0x62, 0x10, 0x04, 0x00, 0x02, 0x24, 0x83, 0x00, 0x62, 0x14, 0x21, 0x10, 0x20, - 0x02, 0x07, 0xa2, 0x02, 0x3c, 0x00, 0x00, 0x40, 0xa0, 0x01, 0x00, 0x02, 0x3c, - 0x9f, 0x86, 0x42, 0x34, 0xff, 0xff, 0x42, 0x24, 0xff, 0xff, 0x40, 0x14, 0xff, - 0xff, 0x42, 0x24, 0x07, 0xa2, 0x02, 0x3c, 0x00, 0x00, 0x42, 0x90, 0x00, 0x00, - 0x00, 0x00, 0xff, 0x00, 0x42, 0x30, 0x07, 0x10, 0x02, 0x02, 0x01, 0x00, 0x42, - 0x30, 0x0c, 0x00, 0x40, 0x10, 0x00, 0x40, 0x02, 0x24, 0x04, 0x10, 0x02, 0x02, - 0x20, 0x00, 0x42, 0x24, 0xb4, 0x87, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x25, - 0x88, 0x22, 0x02, 0x21, 0x20, 0x60, 0x02, 0x46, 0xce, 0xc0, 0x0c, 0x21, 0x28, - 0x00, 0x02, 0xf0, 0x87, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x00, 0x42, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x42, 0x30, - 0x0c, 0x00, 0x40, 0x10, 0x00, 0x40, 0x02, 0x24, 0x04, 0x10, 0x02, 0x02, 0x20, - 0x00, 0x42, 0x24, 0xb4, 0x87, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x25, 0x88, - 0x22, 0x02, 0x21, 0x20, 0x60, 0x02, 0x46, 0xce, 0xc0, 0x0c, 0x21, 0x28, 0x00, - 0x02, 0x04, 0x88, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x07, 0xa2, 0x03, 0x3c, 0x03, 0x00, 0x02, 0x24, 0x00, 0x00, 0x62, 0xa0, 0x01, - 0x00, 0x02, 0x3c, 0x9f, 0x86, 0x42, 0x34, 0xff, 0xff, 0x42, 0x24, 0xff, 0xff, - 0x40, 0x14, 0xff, 0xff, 0x42, 0x24, 0x07, 0xa2, 0x02, 0x3c, 0x00, 0x00, 0x43, - 0x90, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x63, 0x30, 0x01, 0x00, 0x02, 0x24, - 0x04, 0x10, 0x02, 0x02, 0x24, 0x18, 0x62, 0x00, 0x0c, 0x00, 0x62, 0x10, 0x00, - 0x40, 0x02, 0x24, 0x04, 0x10, 0x02, 0x02, 0x20, 0x00, 0x42, 0x24, 0xb4, 0x87, - 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x25, 0x88, 0x22, 0x02, 0x21, 0x20, 0x60, - 0x02, 0x46, 0xce, 0xc0, 0x0c, 0x21, 0x28, 0x00, 0x02, 0x18, 0x88, 0x84, 0x27, - 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x42, 0x96, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x42, 0x30, 0x0e, 0x00, 0x40, 0x14, 0x07, 0xa2, - 0x02, 0x3c, 0x00, 0x40, 0x02, 0x24, 0x04, 0x10, 0x02, 0x02, 0x20, 0x00, 0x42, - 0x24, 0xb4, 0x87, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x25, 0x88, 0x22, 0x02, - 0x21, 0x20, 0x60, 0x02, 0x46, 0xce, 0xc0, 0x0c, 0x21, 0x28, 0x00, 0x02, 0x2c, - 0x88, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x07, 0xa2, - 0x02, 0x3c, 0x00, 0x00, 0x40, 0xa0, 0x01, 0x00, 0x02, 0x3c, 0x9f, 0x86, 0x42, - 0x34, 0xff, 0xff, 0x42, 0x24, 0xff, 0xff, 0x40, 0x14, 0xff, 0xff, 0x42, 0x24, - 0x07, 0xa2, 0x02, 0x3c, 0x00, 0x00, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, 0xff, - 0x00, 0x42, 0x30, 0x07, 0x10, 0x02, 0x02, 0x01, 0x00, 0x42, 0x30, 0x0c, 0x00, - 0x40, 0x10, 0x00, 0x40, 0x02, 0x24, 0x04, 0x10, 0x02, 0x02, 0x20, 0x00, 0x42, - 0x24, 0xb4, 0x87, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x25, 0x88, 0x22, 0x02, - 0x21, 0x20, 0x60, 0x02, 0x46, 0xce, 0xc0, 0x0c, 0x21, 0x28, 0x00, 0x02, 0x40, - 0x88, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, - 0x42, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x42, 0x30, 0x0c, 0x00, 0x40, - 0x10, 0x00, 0x40, 0x02, 0x24, 0x04, 0x10, 0x02, 0x02, 0x20, 0x00, 0x42, 0x24, - 0xb4, 0x87, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x25, 0x88, 0x22, 0x02, 0x21, - 0x20, 0x60, 0x02, 0x46, 0xce, 0xc0, 0x0c, 0x21, 0x28, 0x00, 0x02, 0x04, 0x88, - 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x20, - 0x02, 0x20, 0x00, 0xbf, 0x8f, 0x1c, 0x00, 0xb3, 0x8f, 0x18, 0x00, 0xb2, 0x8f, - 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x28, - 0x00, 0xbd, 0x27, 0xd0, 0xff, 0xbd, 0x27, 0x2c, 0x00, 0xbf, 0xaf, 0x28, 0x00, - 0xb6, 0xaf, 0x24, 0x00, 0xb5, 0xaf, 0x20, 0x00, 0xb4, 0xaf, 0x1c, 0x00, 0xb3, - 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, - 0x21, 0x90, 0x00, 0x00, 0x21, 0x88, 0x00, 0x00, 0x00, 0xa2, 0x16, 0x3c, 0x02, - 0x00, 0x13, 0x24, 0x12, 0x00, 0x15, 0x24, 0xa5, 0x00, 0x14, 0x24, 0x80, 0x11, - 0x11, 0x00, 0x40, 0x00, 0x42, 0x24, 0x21, 0x18, 0x56, 0x00, 0x21, 0x00, 0x02, - 0x24, 0x18, 0x00, 0x62, 0xa0, 0x1c, 0x00, 0x60, 0xa0, 0x11, 0x00, 0x02, 0x24, - 0x21, 0x00, 0x62, 0xa0, 0x30, 0x00, 0x60, 0xa0, 0x31, 0x00, 0x60, 0xa0, 0x61, - 0x00, 0x02, 0x24, 0x2d, 0x00, 0x62, 0xa0, 0x29, 0x00, 0x73, 0xa0, 0x34, 0x00, - 0x60, 0xa0, 0x2c, 0x00, 0x60, 0xa0, 0x10, 0x00, 0x73, 0xa0, 0x11, 0x00, 0x60, - 0xa0, 0x18, 0x00, 0x73, 0xa0, 0x04, 0x00, 0x62, 0x94, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x42, 0x30, 0x02, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x74, 0xa4, 0x18, 0x00, 0x75, 0xa0, 0x01, 0x00, 0x02, 0x24, 0x10, 0x00, - 0x62, 0xa0, 0x08, 0x00, 0x02, 0x24, 0x14, 0x00, 0x62, 0xa0, 0x18, 0x00, 0x75, - 0xa0, 0x21, 0x20, 0x00, 0x00, 0x04, 0x00, 0x62, 0x94, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x42, 0x30, 0x12, 0x00, 0x40, 0x14, 0x21, 0x80, 0x00, 0x00, 0x21, - 0x00, 0x62, 0x90, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x30, 0x05, 0x00, - 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x62, 0x90, 0x00, 0x00, 0x00, - 0x00, 0x28, 0xd0, 0xc0, 0x08, 0x01, 0x00, 0x42, 0x34, 0x21, 0x00, 0x62, 0x90, - 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x42, 0x30, 0x21, 0x00, 0x62, 0xa0, 0x01, - 0x00, 0x84, 0x24, 0x32, 0x00, 0x82, 0x28, 0xeb, 0xff, 0x40, 0x14, 0x21, 0x80, - 0x00, 0x00, 0x04, 0x00, 0x62, 0x94, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, - 0x30, 0x04, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x94, - 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x50, 0x30, 0x17, 0x00, 0x14, 0x12, 0x00, - 0x40, 0x02, 0x24, 0x04, 0x10, 0x22, 0x02, 0x20, 0x00, 0x42, 0x24, 0xb4, 0x87, - 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x25, 0x90, 0x42, 0x02, 0xc4, 0x86, 0x84, - 0x27, 0x50, 0x8f, 0x85, 0x8f, 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0xd0, 0x86, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x21, 0x28, 0x20, 0x02, 0x5c, - 0x88, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, - 0x84, 0x27, 0xa5, 0x00, 0x05, 0x24, 0x86, 0xc9, 0xc0, 0x0c, 0x21, 0x30, 0x00, - 0x02, 0xa8, 0x87, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x31, 0x26, 0x02, 0x00, 0x22, 0x2a, 0xa9, 0xff, 0x40, 0x14, 0x80, - 0x11, 0x11, 0x00, 0x21, 0x10, 0x40, 0x02, 0x2c, 0x00, 0xbf, 0x8f, 0x28, 0x00, - 0xb6, 0x8f, 0x24, 0x00, 0xb5, 0x8f, 0x20, 0x00, 0xb4, 0x8f, 0x1c, 0x00, 0xb3, - 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, - 0x08, 0x00, 0xe0, 0x03, 0x30, 0x00, 0xbd, 0x27, 0x88, 0xff, 0xbd, 0x27, 0x74, - 0x00, 0xbf, 0xaf, 0x70, 0x00, 0xbe, 0xaf, 0x6c, 0x00, 0xb7, 0xaf, 0x68, 0x00, - 0xb6, 0xaf, 0x64, 0x00, 0xb5, 0xaf, 0x60, 0x00, 0xb4, 0xaf, 0x5c, 0x00, 0xb3, - 0xaf, 0x58, 0x00, 0xb2, 0xaf, 0x54, 0x00, 0xb1, 0xaf, 0x50, 0x00, 0xb0, 0xaf, - 0x21, 0x90, 0x80, 0x00, 0x10, 0x00, 0xa5, 0xaf, 0x18, 0x00, 0xa6, 0xaf, 0xff, - 0xff, 0x02, 0x24, 0x0a, 0x00, 0xa2, 0x14, 0x20, 0x00, 0xa7, 0xaf, 0x88, 0x00, - 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, - 0x00, 0xa1, 0xca, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x88, 0x84, 0x27, - 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x16, 0x24, 0x00, - 0xa2, 0x11, 0x3c, 0xa5, 0x00, 0x10, 0x24, 0x7f, 0xd4, 0xc0, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x11, 0x16, 0x00, 0x21, 0x10, 0x51, 0x00, 0x68, 0x00, 0x50, - 0xa0, 0x68, 0x00, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, 0x21, 0x30, 0x40, 0x00, - 0x04, 0x00, 0xd0, 0x10, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x88, 0x84, 0x27, 0x86, - 0xc9, 0xc0, 0x0c, 0x21, 0x28, 0xc0, 0x02, 0xff, 0xff, 0xd6, 0x26, 0xf1, 0xff, - 0xc1, 0x06, 0x10, 0x00, 0x02, 0x24, 0x30, 0x00, 0xa0, 0xaf, 0x54, 0x8f, 0x83, - 0x93, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x62, 0x14, 0x21, 0xa8, 0x00, 0x00, - 0xe9, 0xcf, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, 0xa8, 0x40, 0x00, 0x21, - 0x98, 0x40, 0x02, 0x21, 0xb0, 0x00, 0x00, 0x21, 0x48, 0x00, 0x00, 0x01, 0x00, - 0x29, 0x39, 0x38, 0x00, 0xa9, 0xaf, 0x18, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x21, 0x10, 0x13, 0x01, 0x21, 0x10, 0x56, 0x00, 0x01, 0x10, 0x42, 0x28, - 0x04, 0x00, 0x40, 0x14, 0x00, 0x10, 0x02, 0x24, 0x23, 0x10, 0x56, 0x00, 0xa4, - 0xd0, 0xc0, 0x08, 0x23, 0xb8, 0x53, 0x00, 0x18, 0x00, 0xa9, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x21, 0x10, 0x33, 0x01, 0x21, 0xb8, 0x56, 0x00, 0x3c, 0x00, 0x60, - 0x06, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8b, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x2a, 0x10, 0x62, 0x02, 0x37, 0x00, 0x40, 0x10, 0xff, 0xff, 0x09, 0x24, 0x10, - 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x09, 0x15, 0x40, 0x10, - 0x13, 0x00, 0x21, 0x10, 0x53, 0x00, 0x80, 0x10, 0x02, 0x00, 0x03, 0x83, 0x03, - 0x3c, 0xd4, 0x58, 0x63, 0x24, 0x03, 0x83, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, - 0x78, 0x59, 0x22, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x29, 0x00, 0x43, 0x10, 0x40, - 0x10, 0x13, 0x00, 0x21, 0x10, 0x53, 0x00, 0x80, 0x10, 0x02, 0x00, 0x03, 0x83, - 0x03, 0x3c, 0x84, 0x58, 0x63, 0x24, 0x03, 0x83, 0x04, 0x3c, 0x21, 0x20, 0x82, - 0x00, 0x78, 0x59, 0x84, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x83, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x83, 0x02, 0x3c, 0xbc, 0x58, 0x42, 0x24, 0x05, - 0x00, 0x82, 0x10, 0x00, 0x00, 0x00, 0x00, 0x03, 0x83, 0x02, 0x3c, 0xa0, 0x58, - 0x42, 0x24, 0x05, 0x00, 0x82, 0x14, 0x40, 0x10, 0x13, 0x00, 0x8c, 0x00, 0xa8, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x15, 0x40, 0x10, 0x13, 0x00, - 0x21, 0x10, 0x53, 0x00, 0x80, 0x10, 0x02, 0x00, 0x03, 0x83, 0x03, 0x3c, 0x21, - 0x18, 0x62, 0x00, 0x7c, 0x59, 0x63, 0x8c, 0x90, 0x8a, 0x82, 0x27, 0x07, 0x00, - 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0x98, 0x8a, 0x82, 0x27, 0x04, 0x00, 0x62, - 0x10, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x8a, 0x82, 0x27, 0x1b, 0x00, 0x62, 0x14, - 0xff, 0xff, 0x08, 0x24, 0x10, 0x00, 0xa9, 0x8f, 0xff, 0xff, 0x08, 0x24, 0x1b, - 0x00, 0x28, 0x15, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xa9, 0x8f, 0xff, 0xff, - 0x08, 0x24, 0x11, 0x03, 0x28, 0x11, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0xa9, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x22, 0x29, 0x0a, 0x00, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x03, - 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0xa1, 0xca, 0xc0, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0xe8, 0x88, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x21, 0x28, 0x60, - 0x02, 0xfa, 0xc1, 0xc0, 0x0c, 0x01, 0x04, 0x04, 0x24, 0x0d, 0xd4, 0xc0, 0x08, - 0x21, 0x10, 0x00, 0x00, 0x10, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x10, - 0x00, 0x28, 0x11, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0xa9, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x03, 0x00, 0x20, 0x11, 0x00, 0x00, 0x00, 0x00, 0xa1, 0xca, 0xc0, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x88, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0xd0, 0x86, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x21, - 0x28, 0xc0, 0x02, 0x20, 0x89, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x21, 0x28, - 0x60, 0x02, 0x28, 0x00, 0xb7, 0xaf, 0x30, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x13, 0x08, 0x00, 0x01, 0xa0, 0x09, 0x3c, 0x00, 0x02, 0x29, 0x35, - 0x21, 0xa0, 0x22, 0x01, 0xff, 0x1f, 0x08, 0x3c, 0xff, 0xff, 0x08, 0x35, 0x24, - 0xa0, 0x88, 0x02, 0x00, 0xa0, 0x09, 0x3c, 0xff, 0xff, 0xf0, 0x26, 0x0f, 0x00, - 0x00, 0x06, 0x25, 0xa0, 0x89, 0x02, 0x20, 0x00, 0xa8, 0x8f, 0xff, 0xff, 0x09, - 0x24, 0x04, 0x00, 0x09, 0x11, 0x21, 0x18, 0x90, 0x02, 0x20, 0x00, 0xa2, 0x93, - 0x22, 0xd1, 0xc0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x26, 0x10, 0x17, 0x02, 0x40, - 0x00, 0x42, 0x34, 0x7f, 0x00, 0x42, 0x30, 0x00, 0x00, 0x62, 0xa0, 0xff, 0xff, - 0x10, 0x26, 0xf3, 0xff, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0xa8, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x39, 0x30, 0x00, 0xa8, 0xaf, - 0x00, 0x13, 0x08, 0x00, 0x01, 0xa0, 0x09, 0x3c, 0x00, 0x02, 0x29, 0x35, 0x21, - 0xa0, 0x22, 0x01, 0xff, 0x1f, 0x08, 0x3c, 0xff, 0xff, 0x08, 0x35, 0x24, 0xa0, - 0x88, 0x02, 0x00, 0xa0, 0x09, 0x3c, 0x28, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x10, 0x25, 0x06, 0x00, 0x00, 0x06, 0x25, 0xa0, 0x89, 0x02, - 0x21, 0x10, 0x90, 0x02, 0x00, 0x00, 0x40, 0xa0, 0xff, 0xff, 0x10, 0x26, 0xfd, - 0xff, 0x01, 0x06, 0x21, 0x10, 0x90, 0x02, 0x7f, 0xd4, 0xc0, 0x0c, 0x63, 0x00, - 0x10, 0x24, 0x01, 0xa0, 0x04, 0x3c, 0x21, 0x48, 0x00, 0x00, 0x01, 0x00, 0x22, - 0x39, 0x40, 0x18, 0x02, 0x00, 0x21, 0x18, 0x62, 0x00, 0x80, 0x18, 0x03, 0x00, - 0x21, 0x18, 0x83, 0x00, 0x02, 0x00, 0x62, 0x24, 0x02, 0x00, 0x82, 0xa4, 0x04, - 0x00, 0x80, 0xac, 0x08, 0x00, 0x80, 0xa4, 0x0a, 0x00, 0x80, 0xa0, 0x02, 0x00, - 0x84, 0x24, 0x02, 0x00, 0x64, 0xa4, 0x04, 0x00, 0x60, 0xac, 0x08, 0x00, 0x60, - 0xa4, 0x0a, 0x00, 0x60, 0xa0, 0x01, 0xa0, 0x04, 0x3c, 0x00, 0x01, 0x84, 0x34, - 0x38, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x40, 0x18, 0x08, 0x00, 0x21, - 0x18, 0x68, 0x00, 0x80, 0x18, 0x03, 0x00, 0x21, 0x18, 0x83, 0x00, 0x02, 0x00, - 0x62, 0x24, 0x02, 0x00, 0x82, 0xa4, 0x04, 0x00, 0x80, 0xac, 0x08, 0x00, 0x80, - 0xa4, 0x0a, 0x00, 0x80, 0xa0, 0x02, 0x00, 0x84, 0x24, 0x02, 0x00, 0x64, 0xa4, - 0x04, 0x00, 0x74, 0xac, 0x08, 0x00, 0x60, 0xa4, 0x0a, 0x00, 0x60, 0xa0, 0x30, - 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x29, 0x39, 0x30, 0x00, - 0xa9, 0xaf, 0x00, 0x13, 0x09, 0x00, 0x01, 0xa0, 0x08, 0x3c, 0x00, 0x02, 0x08, - 0x35, 0x21, 0xa0, 0x02, 0x01, 0xff, 0x1f, 0x09, 0x3c, 0xff, 0xff, 0x29, 0x35, - 0x24, 0xa0, 0x89, 0x02, 0x00, 0xa0, 0x08, 0x3c, 0x25, 0xa0, 0x88, 0x02, 0x21, - 0x20, 0xc0, 0x02, 0x21, 0x28, 0x60, 0x02, 0xae, 0xd4, 0xc0, 0x0c, 0x21, 0x30, - 0x60, 0x02, 0xff, 0xff, 0x1e, 0x24, 0x00, 0xa3, 0x03, 0x3c, 0xaa, 0x01, 0x63, - 0x94, 0x00, 0xa3, 0x02, 0x3c, 0xaa, 0x01, 0x42, 0x94, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x42, 0x30, 0x0b, 0x00, 0x43, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xa3, 0x12, 0x3c, 0x80, 0x01, 0x52, 0x36, 0xff, 0xff, 0x71, 0x30, 0x85, 0xc7, - 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x42, 0x96, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x42, 0x30, 0xfa, 0xff, 0x51, 0x10, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x10, 0x26, 0xec, 0xff, 0x1e, 0x16, 0x00, 0xa2, 0x03, 0x3c, 0x80, - 0x11, 0x16, 0x00, 0x40, 0x00, 0x42, 0x24, 0x21, 0x90, 0x43, 0x00, 0xc0, 0x11, - 0x16, 0x00, 0x00, 0x01, 0x42, 0x24, 0x21, 0x88, 0x43, 0x00, 0x68, 0x00, 0x20, - 0xa2, 0xf1, 0x00, 0x02, 0x24, 0x20, 0x00, 0x22, 0xa2, 0x7f, 0xd4, 0xc0, 0x0c, - 0x60, 0x00, 0x22, 0xa2, 0x21, 0x20, 0xc0, 0x02, 0x21, 0x28, 0x60, 0x02, 0xae, - 0xd4, 0xc0, 0x0c, 0x21, 0x30, 0x60, 0x02, 0x68, 0x00, 0x20, 0xa2, 0x8c, 0x00, - 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x20, 0x11, 0x00, 0x00, 0x00, - 0x00, 0x20, 0x00, 0x42, 0x92, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x42, 0x34, - 0x20, 0x00, 0x42, 0xa2, 0x40, 0x10, 0x13, 0x00, 0x21, 0x10, 0x53, 0x00, 0x80, - 0x10, 0x02, 0x00, 0x03, 0x83, 0x03, 0x3c, 0x21, 0x18, 0x62, 0x00, 0x78, 0x59, - 0x63, 0x8c, 0x03, 0x83, 0x02, 0x3c, 0x84, 0x58, 0x42, 0x24, 0x0d, 0x00, 0x62, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x03, 0x83, 0x02, 0x3c, 0xa0, 0x58, 0x42, 0x24, - 0x09, 0x00, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0x03, 0x83, 0x02, 0x3c, 0x40, - 0x59, 0x42, 0x24, 0x05, 0x00, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0x03, 0x83, - 0x02, 0x3c, 0x5c, 0x59, 0x42, 0x24, 0x04, 0x00, 0x62, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x2d, 0x00, 0x42, 0x92, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x42, 0xa2, - 0x54, 0x8f, 0x82, 0x93, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0x02, 0x00, 0x8c, - 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x2d, 0x24, 0x10, - 0x43, 0x00, 0x06, 0x00, 0x40, 0x10, 0x21, 0x20, 0x40, 0x02, 0x21, 0x28, 0xa0, - 0x02, 0x21, 0x30, 0x60, 0x02, 0xf2, 0xce, 0xc0, 0x0c, 0x21, 0x38, 0xc0, 0x02, - 0x25, 0xa8, 0xa2, 0x02, 0x01, 0xa0, 0x09, 0x3c, 0x00, 0x01, 0x29, 0x35, 0x02, - 0x00, 0x23, 0x35, 0x02, 0x14, 0x03, 0x00, 0x0c, 0x00, 0x22, 0xa2, 0x14, 0x00, - 0x23, 0xa6, 0x38, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x08, - 0x00, 0x21, 0x10, 0x48, 0x00, 0x80, 0x10, 0x02, 0x00, 0x21, 0x10, 0x22, 0x01, - 0x02, 0x00, 0x42, 0x24, 0x10, 0x00, 0x22, 0xa6, 0x00, 0x10, 0x02, 0x24, 0x18, - 0x00, 0x22, 0xa6, 0x01, 0xa0, 0x09, 0x3c, 0x02, 0x00, 0x23, 0x35, 0x02, 0x14, - 0x03, 0x00, 0x4c, 0x00, 0x22, 0xa2, 0x54, 0x00, 0x23, 0xa6, 0x50, 0x00, 0x23, - 0xa6, 0x02, 0x00, 0x10, 0x24, 0x20, 0x00, 0x30, 0xa2, 0x60, 0x00, 0x30, 0xa2, - 0xb3, 0xca, 0xc0, 0x0c, 0xe8, 0x03, 0x04, 0x24, 0x12, 0x00, 0x02, 0x24, 0x18, - 0x00, 0x42, 0xa2, 0x18, 0x00, 0x50, 0xa2, 0xb3, 0xca, 0xc0, 0x0c, 0xe8, 0x03, - 0x04, 0x24, 0x20, 0x00, 0x02, 0x24, 0x60, 0x00, 0x22, 0xa2, 0x04, 0x00, 0x42, - 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x42, 0x30, 0x17, 0x00, 0x40, 0x14, - 0x00, 0x40, 0x08, 0x24, 0x04, 0x10, 0xc8, 0x02, 0x01, 0x00, 0x42, 0x24, 0x25, - 0xa8, 0xa2, 0x02, 0x40, 0x10, 0x13, 0x00, 0x21, 0x10, 0x53, 0x00, 0x80, 0x10, - 0x02, 0x00, 0x03, 0x83, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0x80, 0x59, 0x22, - 0x94, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x10, 0xb5, 0x36, 0xb4, 0x87, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x21, 0x20, 0x60, 0x02, 0x46, 0xce, 0xc0, 0x0c, 0x21, 0x28, - 0xc0, 0x02, 0x2c, 0x89, 0x84, 0x27, 0xf3, 0xd3, 0xc0, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x00, 0x42, 0x96, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x30, - 0x17, 0x00, 0x40, 0x10, 0x00, 0x40, 0x09, 0x24, 0x04, 0x10, 0xc9, 0x02, 0x02, - 0x00, 0x42, 0x24, 0x25, 0xa8, 0xa2, 0x02, 0x40, 0x10, 0x13, 0x00, 0x21, 0x10, - 0x53, 0x00, 0x80, 0x10, 0x02, 0x00, 0x03, 0x83, 0x01, 0x3c, 0x21, 0x08, 0x22, - 0x00, 0x80, 0x59, 0x22, 0x94, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xb5, 0x36, 0xb4, 0x87, 0x84, 0x27, 0x86, - 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, 0x60, 0x02, 0x46, 0xce, - 0xc0, 0x0c, 0x21, 0x28, 0xc0, 0x02, 0x3c, 0x89, 0x84, 0x27, 0xf3, 0xd3, 0xc0, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0xa0, 0x03, 0x3c, 0x04, 0x00, 0x74, 0xac, - 0x08, 0x00, 0x77, 0xa4, 0x81, 0x00, 0x02, 0x24, 0x0a, 0x00, 0x62, 0xa0, 0x21, - 0x40, 0x00, 0x00, 0x01, 0x00, 0x03, 0x39, 0x40, 0x10, 0x03, 0x00, 0x21, 0x10, - 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x01, 0xa0, 0x09, 0x3c, 0x21, 0x10, 0x22, - 0x01, 0x02, 0x00, 0x42, 0x24, 0x54, 0x00, 0x22, 0xa6, 0x60, 0x00, 0x22, 0x92, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x42, 0x30, 0x02, 0x00, 0x40, 0x14, 0x02, - 0x00, 0x02, 0x24, 0x60, 0x00, 0x22, 0xa2, 0xfa, 0xc1, 0xc0, 0x0c, 0x21, 0x20, - 0x00, 0x00, 0x01, 0x00, 0x10, 0x24, 0x00, 0xa3, 0x01, 0x3c, 0x80, 0x01, 0x30, - 0xac, 0xfa, 0xc1, 0xc0, 0x0c, 0x01, 0x18, 0x04, 0x24, 0xb3, 0xca, 0xc0, 0x0c, - 0x32, 0x00, 0x04, 0x24, 0x00, 0xa3, 0x02, 0x3c, 0x80, 0x01, 0x42, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x2a, 0x00, 0x50, 0x10, 0x00, 0x40, 0x08, 0x24, 0x04, 0x10, - 0xc8, 0x02, 0x04, 0x00, 0x42, 0x24, 0x25, 0xa8, 0xa2, 0x02, 0x40, 0x10, 0x13, - 0x00, 0x21, 0x10, 0x53, 0x00, 0x80, 0x10, 0x02, 0x00, 0x03, 0x83, 0x01, 0x3c, - 0x21, 0x08, 0x22, 0x00, 0x80, 0x59, 0x22, 0x94, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xb5, 0x36, 0xb4, 0x87, - 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, 0x60, - 0x02, 0x46, 0xce, 0xc0, 0x0c, 0x21, 0x28, 0xc0, 0x02, 0x20, 0x00, 0x25, 0x92, - 0x60, 0x00, 0x26, 0x92, 0x4c, 0x89, 0x84, 0x27, 0xff, 0x00, 0xa5, 0x30, 0x86, - 0xc9, 0xc0, 0x0c, 0xff, 0x00, 0xc6, 0x30, 0x20, 0x00, 0x22, 0x92, 0x00, 0x00, - 0x00, 0x00, 0x30, 0x00, 0x42, 0x30, 0x06, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x60, 0x00, 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x42, 0x30, - 0x04, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x64, 0x89, 0x84, 0x27, 0x68, - 0xd2, 0xc0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x89, 0x84, 0x27, 0x86, 0xc9, - 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x17, 0x00, 0x21, 0x10, 0x57, - 0x00, 0x00, 0x11, 0x02, 0x00, 0x23, 0x10, 0x57, 0x00, 0xc0, 0x10, 0x02, 0x00, - 0x23, 0x10, 0x57, 0x00, 0xc0, 0x80, 0x02, 0x00, 0x0c, 0x00, 0x00, 0x12, 0x00, - 0x40, 0x09, 0x24, 0x04, 0x00, 0x42, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, - 0x42, 0x30, 0x04, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x10, - 0x26, 0xf9, 0xff, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x16, - 0x40, 0x11, 0x17, 0x00, 0x00, 0x40, 0x09, 0x24, 0x04, 0x10, 0xc9, 0x02, 0x08, - 0x00, 0x42, 0x24, 0x25, 0xa8, 0xa2, 0x02, 0x40, 0x10, 0x13, 0x00, 0x21, 0x10, - 0x53, 0x00, 0x80, 0x10, 0x02, 0x00, 0x03, 0x83, 0x01, 0x3c, 0x21, 0x08, 0x22, - 0x00, 0x80, 0x59, 0x22, 0x94, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xb5, 0x36, 0xb4, 0x87, 0x84, 0x27, 0x86, - 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, 0x60, 0x02, 0x46, 0xce, - 0xc0, 0x0c, 0x21, 0x28, 0xc0, 0x02, 0x98, 0x89, 0x84, 0x27, 0xf3, 0xd3, 0xc0, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0x57, 0x00, 0x80, 0x10, 0x02, 0x00, - 0x21, 0x10, 0x57, 0x00, 0xc0, 0x80, 0x02, 0x00, 0x12, 0x00, 0x00, 0x12, 0x01, - 0xa0, 0x09, 0x3c, 0x38, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, - 0x08, 0x00, 0x21, 0x10, 0x48, 0x00, 0x80, 0x10, 0x02, 0x00, 0x00, 0x01, 0x29, - 0x35, 0x21, 0x18, 0x49, 0x00, 0x0a, 0x00, 0x62, 0x90, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x42, 0x30, 0x04, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x10, 0x26, 0xf9, 0xff, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, - 0x00, 0x16, 0x40, 0x10, 0x17, 0x00, 0x00, 0x40, 0x08, 0x24, 0x04, 0x10, 0xc8, - 0x02, 0x08, 0x00, 0x42, 0x24, 0x25, 0xa8, 0xa2, 0x02, 0x40, 0x10, 0x13, 0x00, - 0x21, 0x10, 0x53, 0x00, 0x80, 0x10, 0x02, 0x00, 0x03, 0x83, 0x01, 0x3c, 0x21, - 0x08, 0x22, 0x00, 0x80, 0x59, 0x22, 0x94, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xb5, 0x36, 0xb4, 0x87, 0x84, - 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, 0x60, 0x02, - 0x46, 0xce, 0xc0, 0x0c, 0x21, 0x28, 0xc0, 0x02, 0xb0, 0x89, 0x84, 0x27, 0xf3, - 0xd3, 0xc0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x57, 0x00, 0xc0, 0x10, - 0x02, 0x00, 0x21, 0x10, 0x57, 0x00, 0x80, 0x80, 0x02, 0x00, 0x0c, 0x00, 0x00, - 0x12, 0x00, 0x40, 0x09, 0x24, 0x00, 0xa3, 0x02, 0x3c, 0x80, 0x01, 0x42, 0x8c, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x10, 0x26, 0xf9, 0xff, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, - 0x00, 0x16, 0xf1, 0x00, 0x02, 0x24, 0x00, 0x40, 0x09, 0x24, 0x04, 0x10, 0xc9, - 0x02, 0x10, 0x00, 0x42, 0x24, 0x25, 0xa8, 0xa2, 0x02, 0x40, 0x10, 0x13, 0x00, - 0x21, 0x10, 0x53, 0x00, 0x80, 0x10, 0x02, 0x00, 0x03, 0x83, 0x01, 0x3c, 0x21, - 0x08, 0x22, 0x00, 0x80, 0x59, 0x22, 0x94, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xb5, 0x36, 0xb4, 0x87, 0x84, - 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, 0x60, 0x02, - 0x46, 0xce, 0xc0, 0x0c, 0x21, 0x28, 0xc0, 0x02, 0xc4, 0x89, 0x84, 0x27, 0xf3, - 0xd3, 0xc0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x22, 0xa2, 0x60, 0x00, - 0x22, 0xa2, 0x21, 0x80, 0x00, 0x00, 0x28, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x2d, 0x00, 0x00, 0x19, 0x21, 0x88, 0x00, 0x00, 0xe8, 0x89, 0x92, 0x27, - 0x21, 0x10, 0x90, 0x02, 0x00, 0x00, 0x42, 0x90, 0x20, 0x00, 0xa9, 0x8f, 0xff, - 0xff, 0x08, 0x24, 0x05, 0x00, 0x28, 0x11, 0xff, 0x00, 0x43, 0x30, 0x08, 0x00, - 0x69, 0x14, 0x00, 0x00, 0x00, 0x00, 0x17, 0xd3, 0xc0, 0x08, 0x01, 0x00, 0x10, - 0x26, 0x26, 0x10, 0x17, 0x02, 0x40, 0x00, 0x42, 0x34, 0x7f, 0x00, 0x42, 0x30, - 0x17, 0x00, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x16, 0x00, - 0x00, 0x00, 0x00, 0xe4, 0x89, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x31, 0x26, 0x08, 0x00, 0x22, 0x2a, 0x0e, 0x00, 0x40, - 0x10, 0x21, 0x10, 0x90, 0x02, 0x00, 0x00, 0x42, 0x90, 0x20, 0x00, 0xa9, 0x8f, - 0xff, 0xff, 0x08, 0x24, 0x04, 0x00, 0x28, 0x11, 0xff, 0x00, 0x45, 0x30, 0x20, - 0x00, 0xa6, 0x8f, 0x14, 0xd3, 0xc0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x26, 0x10, - 0x17, 0x02, 0x40, 0x00, 0x42, 0x34, 0x7f, 0x00, 0x46, 0x30, 0x86, 0xc9, 0xc0, - 0x0c, 0x21, 0x20, 0x40, 0x02, 0x01, 0x00, 0x10, 0x26, 0x28, 0x00, 0xa9, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x09, 0x02, 0xd7, 0xff, 0x40, 0x14, 0x21, - 0x10, 0x90, 0x02, 0x1c, 0x00, 0x20, 0x12, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x89, - 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x14, 0x8a, 0x84, - 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0xa5, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x65, 0xca, 0xc0, 0x0c, 0x21, 0x20, 0x80, 0x02, 0xe4, - 0x89, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, - 0x08, 0x24, 0x04, 0x10, 0xc8, 0x02, 0x00, 0x08, 0x42, 0x24, 0x25, 0xa8, 0xa2, - 0x02, 0x40, 0x10, 0x13, 0x00, 0x21, 0x10, 0x53, 0x00, 0x80, 0x10, 0x02, 0x00, - 0x03, 0x83, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0x80, 0x59, 0x22, 0x94, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, - 0xb5, 0x36, 0x30, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x22, - 0x39, 0x00, 0x13, 0x02, 0x00, 0x01, 0xa0, 0x08, 0x3c, 0x00, 0x02, 0x08, 0x35, - 0x21, 0xa0, 0x02, 0x01, 0xff, 0x1f, 0x09, 0x3c, 0xff, 0xff, 0x29, 0x35, 0x24, - 0xa0, 0x89, 0x02, 0x00, 0xa0, 0x08, 0x3c, 0x25, 0xa0, 0x88, 0x02, 0x38, 0x00, - 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x09, 0x00, 0x21, 0x10, 0x49, - 0x00, 0x80, 0x10, 0x02, 0x00, 0x01, 0xa0, 0x08, 0x3c, 0x00, 0x01, 0x08, 0x35, - 0x21, 0x10, 0x48, 0x00, 0x08, 0x00, 0x43, 0x94, 0x00, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x63, 0x30, 0x28, 0x00, 0xa3, 0xaf, 0x0a, 0x00, 0x42, 0x90, 0x00, 0x00, - 0x00, 0x00, 0x05, 0x00, 0x77, 0x14, 0xff, 0x00, 0x50, 0x30, 0xfc, 0x00, 0x03, - 0x32, 0x80, 0x00, 0x02, 0x24, 0x26, 0x00, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x40, 0x09, 0x24, 0x04, 0x10, 0xc9, 0x02, 0x80, 0x00, 0x42, 0x24, 0x25, - 0xa8, 0xa2, 0x02, 0x40, 0x10, 0x13, 0x00, 0x21, 0x10, 0x53, 0x00, 0x80, 0x10, - 0x02, 0x00, 0x03, 0x83, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0x80, 0x59, 0x22, - 0x94, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x10, 0xb5, 0x36, 0xb4, 0x87, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x21, 0x20, 0x60, 0x02, 0x46, 0xce, 0xc0, 0x0c, 0x21, 0x28, - 0xc0, 0x02, 0x1c, 0x8a, 0x84, 0x27, 0x28, 0x00, 0xa5, 0x8f, 0x21, 0x30, 0xe0, - 0x02, 0x86, 0xc9, 0xc0, 0x0c, 0x21, 0x38, 0x00, 0x02, 0x21, 0x20, 0x80, 0x02, - 0x65, 0xca, 0xc0, 0x0c, 0x21, 0x28, 0xe0, 0x02, 0xe4, 0x89, 0x84, 0x27, 0x86, - 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0xa8, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x2a, 0x10, 0xe8, 0x02, 0x03, 0x00, 0x40, 0x10, 0x21, 0x80, 0x00, - 0x00, 0x28, 0x00, 0xb7, 0xaf, 0x21, 0x80, 0x00, 0x00, 0x28, 0x00, 0xa9, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x20, 0x19, 0x21, 0x88, 0x00, 0x00, 0x4c, - 0x8a, 0x9e, 0x27, 0x08, 0x00, 0x12, 0x24, 0x21, 0x10, 0x90, 0x02, 0x00, 0x00, - 0x42, 0x90, 0x20, 0x00, 0xa8, 0x8f, 0xff, 0xff, 0x09, 0x24, 0x05, 0x00, 0x09, - 0x11, 0xff, 0x00, 0x43, 0x30, 0x08, 0x00, 0x68, 0x14, 0x00, 0x00, 0x00, 0x00, - 0xaf, 0xd3, 0xc0, 0x08, 0x01, 0x00, 0x10, 0x26, 0x26, 0x10, 0x17, 0x02, 0x40, - 0x00, 0x42, 0x34, 0x7f, 0x00, 0x42, 0x30, 0x1b, 0x00, 0x62, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x20, 0x16, 0x00, 0x00, 0x00, 0x00, 0x44, 0x8a, 0x84, - 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x21, 0x28, 0x00, 0x02, 0x01, 0x00, 0x31, 0x26, - 0x08, 0x00, 0x22, 0x2a, 0x12, 0x00, 0x40, 0x10, 0x21, 0x10, 0x90, 0x02, 0x00, - 0x00, 0x42, 0x90, 0x20, 0x00, 0xa8, 0x8f, 0xff, 0xff, 0x09, 0x24, 0x04, 0x00, - 0x09, 0x11, 0xff, 0x00, 0x45, 0x30, 0x20, 0x00, 0xa6, 0x8f, 0xa8, 0xd3, 0xc0, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x26, 0x10, 0x17, 0x02, 0x40, 0x00, 0x42, 0x34, - 0x7f, 0x00, 0x46, 0x30, 0x86, 0xc9, 0xc0, 0x0c, 0x21, 0x20, 0xc0, 0x03, 0x03, - 0x00, 0x32, 0x12, 0x00, 0x00, 0x00, 0x00, 0x40, 0xca, 0xc0, 0x0c, 0x20, 0x00, - 0x04, 0x24, 0x01, 0x00, 0x10, 0x26, 0x28, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x2a, 0x10, 0x08, 0x02, 0xd3, 0xff, 0x40, 0x14, 0x21, 0x10, 0x90, 0x02, - 0x17, 0x00, 0x20, 0x12, 0x00, 0x40, 0x09, 0x24, 0x04, 0x10, 0xc9, 0x02, 0x00, - 0x01, 0x42, 0x24, 0x25, 0xa8, 0xa2, 0x02, 0x40, 0x10, 0x13, 0x00, 0x21, 0x10, - 0x53, 0x00, 0x80, 0x10, 0x02, 0x00, 0x03, 0x83, 0x01, 0x3c, 0x21, 0x08, 0x22, - 0x00, 0x80, 0x59, 0x22, 0x94, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xb5, 0x36, 0xb4, 0x87, 0x84, 0x27, 0x86, - 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, 0x60, 0x02, 0x46, 0xce, - 0xc0, 0x0c, 0x21, 0x28, 0xc0, 0x02, 0x58, 0x8a, 0x84, 0x27, 0x86, 0xc9, 0xc0, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0xfa, 0xc1, 0xc0, 0x0c, 0x21, 0x20, 0x00, 0x00, - 0x01, 0x00, 0x02, 0x24, 0x00, 0xa3, 0x01, 0x3c, 0x80, 0x01, 0x22, 0xac, 0xfa, - 0xc1, 0xc0, 0x0c, 0x01, 0x18, 0x04, 0x24, 0x87, 0x13, 0x10, 0x24, 0xff, 0xff, - 0x10, 0x26, 0xff, 0xff, 0x00, 0x16, 0xff, 0xff, 0x10, 0x26, 0x01, 0x00, 0x10, - 0x26, 0xfa, 0xc1, 0xc0, 0x0c, 0x21, 0x20, 0x00, 0x00, 0x00, 0xa3, 0x03, 0x3c, - 0x80, 0x01, 0x63, 0x8c, 0x01, 0x00, 0x02, 0x24, 0x17, 0x00, 0x62, 0x10, 0x00, - 0x40, 0x08, 0x24, 0x04, 0x10, 0xc8, 0x02, 0x40, 0x00, 0x42, 0x24, 0x25, 0xa8, - 0xa2, 0x02, 0x40, 0x10, 0x13, 0x00, 0x21, 0x10, 0x53, 0x00, 0x80, 0x10, 0x02, - 0x00, 0x03, 0x83, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0x80, 0x59, 0x22, 0x94, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0x36, 0xb4, 0x87, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x21, 0x20, 0x60, 0x02, 0x46, 0xce, 0xc0, 0x0c, 0x21, 0x28, 0xc0, - 0x02, 0x6c, 0x8a, 0x84, 0x27, 0x86, 0xc9, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xa3, 0x01, 0x3c, 0x80, 0x01, 0x20, 0xac, 0x01, 0x00, 0xd6, 0x3a, 0x02, - 0x00, 0xc0, 0x16, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x73, 0x26, 0x10, 0x00, - 0xa9, 0x8f, 0xff, 0xff, 0x08, 0x24, 0x05, 0x00, 0x28, 0x15, 0x2a, 0x10, 0x33, - 0x01, 0x48, 0x8b, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x24, - 0x2a, 0x10, 0x53, 0x00, 0x92, 0xfc, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x00, 0xa0, 0x16, 0x00, 0x00, 0x00, 0x00, 0x70, 0x86, 0x84, 0x27, 0x86, 0xc9, - 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xfa, 0xc1, 0xc0, 0x0c, 0x01, 0x04, 0x04, - 0x24, 0x21, 0x10, 0xa0, 0x02, 0x74, 0x00, 0xbf, 0x8f, 0x70, 0x00, 0xbe, 0x8f, - 0x6c, 0x00, 0xb7, 0x8f, 0x68, 0x00, 0xb6, 0x8f, 0x64, 0x00, 0xb5, 0x8f, 0x60, - 0x00, 0xb4, 0x8f, 0x5c, 0x00, 0xb3, 0x8f, 0x58, 0x00, 0xb2, 0x8f, 0x54, 0x00, - 0xb1, 0x8f, 0x50, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x78, 0x00, 0xbd, - 0x27, 0xe8, 0xff, 0xbd, 0x27, 0x14, 0x00, 0xbf, 0xaf, 0x10, 0x00, 0xb0, 0xaf, - 0x01, 0x00, 0x84, 0x30, 0x06, 0x00, 0x80, 0x10, 0x21, 0x80, 0x00, 0x00, 0xbd, - 0xca, 0xc0, 0x0c, 0x21, 0x20, 0x00, 0x00, 0x03, 0x00, 0x40, 0x10, 0x21, 0x10, - 0x00, 0x02, 0x01, 0x00, 0x10, 0x24, 0x21, 0x10, 0x00, 0x02, 0x14, 0x00, 0xbf, - 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x18, 0x00, 0xbd, 0x27, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xa2, 0x02, 0x3c, 0x40, 0x00, 0x42, 0x34, 0x05, 0x00, 0x82, - 0x14, 0x10, 0x00, 0x0a, 0x24, 0x08, 0x00, 0x0a, 0x24, 0x00, 0x01, 0x02, 0x24, - 0x3a, 0xd4, 0xc0, 0x08, 0x00, 0x04, 0x09, 0x24, 0x00, 0x02, 0x02, 0x24, 0x00, - 0x08, 0x09, 0x24, 0xff, 0xff, 0x19, 0x3c, 0x00, 0x10, 0x39, 0x37, 0x03, 0x83, - 0x18, 0x3c, 0x50, 0x57, 0x18, 0x27, 0x05, 0xa2, 0x08, 0x3c, 0x25, 0x58, 0x42, - 0x01, 0x27, 0x70, 0x0b, 0x00, 0x27, 0x68, 0x02, 0x00, 0xe1, 0x00, 0x0f, 0x3c, - 0x27, 0x60, 0x09, 0x00, 0x00, 0x00, 0xa7, 0x94, 0x00, 0x00, 0x00, 0x00, 0x21, - 0x18, 0xf9, 0x00, 0x09, 0x00, 0x62, 0x2c, 0x2e, 0x00, 0x40, 0x10, 0x80, 0x10, - 0x03, 0x00, 0x21, 0x10, 0x58, 0x00, 0x00, 0x00, 0x42, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x8f, 0x82, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x73, 0xd4, 0xc0, 0x08, 0x24, 0x10, 0xc2, 0x01, 0x50, - 0x8f, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x24, 0x10, 0xa2, 0x01, 0x73, 0xd4, - 0xc0, 0x08, 0x25, 0x10, 0x4a, 0x00, 0x50, 0x8f, 0x82, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x73, 0xd4, 0xc0, 0x08, 0x25, 0x10, 0x62, 0x01, 0x02, 0x00, 0xa3, 0x94, - 0x00, 0x00, 0xc2, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x62, 0x00, 0x12, - 0x18, 0x00, 0x00, 0x42, 0x10, 0x03, 0x00, 0x21, 0x10, 0x4f, 0x00, 0x1b, 0x00, - 0x43, 0x00, 0x02, 0x00, 0x60, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x07, - 0x00, 0x12, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x7b, 0xd4, 0xc0, 0x08, 0x29, 0x00, 0x82, 0xa0, 0x50, 0x8f, 0x82, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x73, 0xd4, 0xc0, 0x08, 0x24, 0x10, 0x82, 0x01, 0x50, 0x8f, - 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x25, 0x10, 0x22, 0x01, 0x50, 0x8f, 0x82, - 0xaf, 0x00, 0x00, 0x02, 0xa5, 0x44, 0xd4, 0xc0, 0x08, 0x04, 0x00, 0xa5, 0x24, - 0x21, 0x18, 0x87, 0x00, 0x02, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x62, 0xa0, 0x44, 0xd4, 0xc0, 0x08, 0x04, 0x00, 0xa5, 0x24, 0x08, 0x00, - 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, - 0xaf, 0x00, 0xa2, 0x04, 0x3c, 0x03, 0x83, 0x05, 0x3c, 0xc0, 0x57, 0xa5, 0x24, - 0x30, 0xd4, 0xc0, 0x0c, 0x21, 0x30, 0x00, 0x00, 0x00, 0xa2, 0x04, 0x3c, 0x40, - 0x00, 0x84, 0x34, 0x03, 0x83, 0x05, 0x3c, 0x18, 0x58, 0xa5, 0x24, 0x30, 0xd4, - 0xc0, 0x0c, 0x21, 0x30, 0x00, 0x00, 0x00, 0xa2, 0x04, 0x3c, 0x00, 0x01, 0x84, - 0x34, 0x03, 0x83, 0x05, 0x3c, 0x6c, 0x58, 0xa5, 0x24, 0x30, 0xd4, 0xc0, 0x0c, - 0x21, 0x30, 0x00, 0x00, 0x00, 0xa2, 0x04, 0x3c, 0x40, 0x01, 0x84, 0x34, 0x03, - 0x83, 0x05, 0x3c, 0x78, 0x58, 0xa5, 0x24, 0x30, 0xd4, 0xc0, 0x0c, 0x21, 0x30, - 0x00, 0x00, 0x00, 0xa2, 0x04, 0x3c, 0x80, 0x00, 0x84, 0x34, 0x03, 0x83, 0x05, - 0x3c, 0x18, 0x58, 0xa5, 0x24, 0x30, 0xd4, 0xc0, 0x0c, 0x21, 0x30, 0x00, 0x00, - 0x00, 0xa2, 0x04, 0x3c, 0x80, 0x01, 0x84, 0x34, 0x03, 0x83, 0x05, 0x3c, 0x6c, - 0x58, 0xa5, 0x24, 0x30, 0xd4, 0xc0, 0x0c, 0x21, 0x30, 0x00, 0x00, 0x00, 0xa2, - 0x04, 0x3c, 0xc0, 0x01, 0x84, 0x34, 0x03, 0x83, 0x05, 0x3c, 0x78, 0x58, 0xa5, - 0x24, 0x30, 0xd4, 0xc0, 0x0c, 0x21, 0x30, 0x00, 0x00, 0x10, 0x00, 0xbf, 0x8f, - 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xd8, - 0xff, 0xbd, 0x27, 0x20, 0x00, 0xbf, 0xaf, 0x1c, 0x00, 0xb3, 0xaf, 0x18, 0x00, - 0xb2, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x98, 0x80, - 0x00, 0x21, 0x88, 0xa0, 0x00, 0x02, 0x00, 0x60, 0x16, 0x04, 0x00, 0x12, 0x24, - 0x02, 0x00, 0x12, 0x24, 0x4e, 0x00, 0xc2, 0x2c, 0x03, 0x00, 0x40, 0x10, 0x4e, - 0x00, 0x22, 0x2e, 0x05, 0x00, 0x40, 0x14, 0x40, 0x80, 0x11, 0x00, 0x4c, 0x8b, - 0x84, 0x27, 0x3a, 0xc0, 0xc0, 0x0c, 0x6e, 0x02, 0x05, 0x24, 0x40, 0x80, 0x11, - 0x00, 0x21, 0x80, 0x11, 0x02, 0x80, 0x80, 0x10, 0x00, 0x03, 0x83, 0x02, 0x3c, - 0x78, 0x59, 0x42, 0x24, 0x21, 0x80, 0x02, 0x02, 0x80, 0x11, 0x13, 0x00, 0x00, - 0xa2, 0x04, 0x3c, 0x40, 0x00, 0x84, 0x34, 0x00, 0x00, 0x05, 0x8e, 0x04, 0x00, - 0x06, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x30, 0xd4, 0xc0, 0x0c, 0x21, 0x20, 0x44, - 0x00, 0x08, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x40, 0x10, - 0x05, 0xa2, 0x03, 0x3c, 0x50, 0x8f, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x25, - 0x10, 0x42, 0x02, 0x50, 0x8f, 0x82, 0xaf, 0xe0, 0xd4, 0xc0, 0x08, 0x00, 0x00, - 0x62, 0xa4, 0x05, 0xa2, 0x02, 0x3c, 0x27, 0x18, 0x12, 0x00, 0x50, 0x8f, 0x84, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x24, 0x18, 0x64, 0x00, 0x50, 0x8f, 0x83, 0xaf, - 0x00, 0x00, 0x43, 0xa4, 0x20, 0x00, 0xbf, 0x8f, 0x1c, 0x00, 0xb3, 0x8f, 0x18, - 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, - 0xe0, 0x03, 0x28, 0x00, 0xbd, 0x27, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x18, 0x03, - 0x83, 0x80, 0x1d, 0x03, 0x83, 0xb4, 0x18, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, - 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, - 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, - 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, - 0x83, 0xb4, 0x18, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, - 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0xb4, 0x18, 0x03, 0x83, 0x80, - 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, - 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, - 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, - 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, - 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, - 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, - 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, - 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0xa0, 0x14, 0x03, 0x83, 0x2c, - 0x15, 0x03, 0x83, 0x38, 0x16, 0x03, 0x83, 0x38, 0x16, 0x03, 0x83, 0x80, 0x1d, - 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, - 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, - 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, - 0x11, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0xf4, 0x11, 0x03, 0x83, 0x80, 0x1d, - 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0xb4, 0x18, 0x03, 0x83, 0x80, 0x1d, 0x03, - 0x83, 0xb4, 0x18, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, - 0x80, 0x18, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, - 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, - 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0xb4, 0x18, 0x03, - 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, - 0x80, 0x1d, 0x03, 0x83, 0xb4, 0x18, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, - 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, - 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, - 0x83, 0x80, 0x1d, 0x03, 0x83, 0xf4, 0x11, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, - 0x80, 0x1d, 0x03, 0x83, 0xb4, 0x18, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0xb4, - 0x18, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x18, - 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, - 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, - 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0xb4, 0x18, 0x03, 0x83, 0x80, - 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, - 0x03, 0x83, 0xb4, 0x18, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, - 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, - 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, 0x1d, 0x03, 0x83, 0x80, - 0x1d, 0x03, 0x83, 0x18, 0x1b, 0x03, 0x83, 0x28, 0x1b, 0x03, 0x83, 0x08, 0x1c, - 0x03, 0x83, 0x34, 0x1c, 0x03, 0x83, 0x5c, 0x1c, 0x03, 0x83, 0x80, 0x1d, 0x03, - 0x83, 0x80, 0x1d, 0x03, 0x83, 0x5c, 0x1d, 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, - 0xa8, 0x1c, 0x03, 0x83, 0xc4, 0x1c, 0x03, 0x83, 0x28, 0x1d, 0x03, 0x83, 0xfc, - 0x1c, 0x03, 0x83, 0x28, 0x1d, 0x03, 0x83, 0x28, 0x1d, 0x03, 0x83, 0x28, 0x1d, - 0x03, 0x83, 0xfc, 0x1c, 0x03, 0x83, 0x28, 0x1d, 0x03, 0x83, 0x28, 0x1d, 0x03, - 0x83, 0x28, 0x1d, 0x03, 0x83, 0x28, 0x1d, 0x03, 0x83, 0x28, 0x1d, 0x03, 0x83, - 0x28, 0x1d, 0x03, 0x83, 0x28, 0x1d, 0x03, 0x83, 0xa8, 0x1c, 0x03, 0x83, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x24, 0x03, 0x83, 0xf4, 0x25, - 0x03, 0x83, 0xf4, 0x25, 0x03, 0x83, 0xf4, 0x25, 0x03, 0x83, 0xf4, 0x25, 0x03, - 0x83, 0xf4, 0x25, 0x03, 0x83, 0xf4, 0x25, 0x03, 0x83, 0xf4, 0x25, 0x03, 0x83, - 0xa0, 0x25, 0x03, 0x83, 0xf4, 0x25, 0x03, 0x83, 0xf4, 0x25, 0x03, 0x83, 0xa8, - 0x25, 0x03, 0x83, 0xb4, 0x25, 0x03, 0x83, 0xb4, 0x25, 0x03, 0x83, 0xb4, 0x25, - 0x03, 0x83, 0xb4, 0x25, 0x03, 0x83, 0xb4, 0x25, 0x03, 0x83, 0xb4, 0x25, 0x03, - 0x83, 0xb4, 0x25, 0x03, 0x83, 0xb4, 0x25, 0x03, 0x83, 0xb4, 0x25, 0x03, 0x83, - 0xf4, 0x25, 0x03, 0x83, 0xf4, 0x25, 0x03, 0x83, 0xf4, 0x25, 0x03, 0x83, 0xf4, - 0x25, 0x03, 0x83, 0xf4, 0x25, 0x03, 0x83, 0xf4, 0x25, 0x03, 0x83, 0xf4, 0x25, - 0x03, 0x83, 0xf4, 0x25, 0x03, 0x83, 0xf4, 0x25, 0x03, 0x83, 0xf4, 0x25, 0x03, - 0x83, 0xf4, 0x25, 0x03, 0x83, 0x80, 0x24, 0x03, 0x83, 0xf4, 0x25, 0x03, 0x83, - 0xf4, 0x25, 0x03, 0x83, 0xf4, 0x25, 0x03, 0x83, 0xf4, 0x25, 0x03, 0x83, 0xf4, - 0x25, 0x03, 0x83, 0xf4, 0x25, 0x03, 0x83, 0xf4, 0x25, 0x03, 0x83, 0xf4, 0x25, - 0x03, 0x83, 0xf4, 0x25, 0x03, 0x83, 0xf4, 0x25, 0x03, 0x83, 0xf4, 0x25, 0x03, - 0x83, 0xf4, 0x25, 0x03, 0x83, 0xf4, 0x25, 0x03, 0x83, 0xf4, 0x25, 0x03, 0x83, - 0xf4, 0x25, 0x03, 0x83, 0xf4, 0x25, 0x03, 0x83, 0xf4, 0x25, 0x03, 0x83, 0xf4, - 0x25, 0x03, 0x83, 0x4c, 0x25, 0x03, 0x83, 0xf4, 0x25, 0x03, 0x83, 0xf4, 0x25, - 0x03, 0x83, 0xf4, 0x25, 0x03, 0x83, 0xf4, 0x25, 0x03, 0x83, 0xf4, 0x25, 0x03, - 0x83, 0xf4, 0x25, 0x03, 0x83, 0xf4, 0x25, 0x03, 0x83, 0xf4, 0x25, 0x03, 0x83, - 0xf4, 0x25, 0x03, 0x83, 0xac, 0x24, 0x03, 0x83, 0x98, 0x24, 0x03, 0x83, 0xfc, - 0x24, 0x03, 0x83, 0xf4, 0x25, 0x03, 0x83, 0xf4, 0x25, 0x03, 0x83, 0xf4, 0x25, - 0x03, 0x83, 0xf4, 0x25, 0x03, 0x83, 0xf4, 0x25, 0x03, 0x83, 0xf4, 0x25, 0x03, - 0x83, 0xf4, 0x25, 0x03, 0x83, 0xdc, 0x25, 0x03, 0x83, 0xf4, 0x25, 0x03, 0x83, - 0xf4, 0x25, 0x03, 0x83, 0xd4, 0x24, 0x03, 0x83, 0xf4, 0x25, 0x03, 0x83, 0xf4, - 0x25, 0x03, 0x83, 0xf4, 0x25, 0x03, 0x83, 0x6c, 0x25, 0x03, 0x83, 0x84, 0x25, - 0x03, 0x83, 0x1c, 0x25, 0x03, 0x83, 0xf4, 0x25, 0x03, 0x83, 0xf4, 0x25, 0x03, - 0x83, 0x3c, 0x25, 0x03, 0x83, 0xf4, 0x51, 0x03, 0x83, 0x70, 0x51, 0x03, 0x83, - 0xdc, 0x51, 0x03, 0x83, 0xdc, 0x51, 0x03, 0x83, 0x3c, 0x51, 0x03, 0x83, 0x60, - 0x51, 0x03, 0x83, 0x4c, 0x51, 0x03, 0x83, 0xb0, 0x51, 0x03, 0x83, 0xc0, 0x51, - 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x34, 0x00, 0x00, 0x00, 0x41, 0x0b, 0x00, 0x00, 0x0b, 0x00, - 0x0c, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x40, 0x00, 0x0c, 0x00, 0x74, 0x00, 0x04, - 0x00, 0x6e, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xe4, 0x00, 0x04, 0x00, - 0x40, 0x00, 0x0c, 0x00, 0xb4, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0xe8, 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x01, 0x00, 0x00, 0x60, 0x01, 0x00, 0x00, 0xa0, 0x01, 0x00, 0x00, 0xe0, - 0x01, 0x00, 0x00, 0x29, 0x01, 0x03, 0x00, 0x69, 0x01, 0x03, 0x00, 0xa9, 0x01, - 0x03, 0x00, 0xe9, 0x01, 0x03, 0x00, 0x58, 0x00, 0x21, 0x00, 0x98, 0x00, 0x21, - 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x09, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x0c, 0x00, 0x28, - 0x00, 0xcc, 0x00, 0x29, 0x00, 0xbb, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x30, 0x00, - 0x10, 0x00, 0x11, 0x00, 0x80, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x18, 0x00, 0x01, - 0x00, 0x18, 0x00, 0x11, 0x00, 0x1c, 0x00, 0x87, 0x00, 0x1d, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x21, 0x00, 0x10, 0x00, 0x2c, - 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x29, 0x00, 0x02, 0x00, 0x30, 0x00, - 0x12, 0x00, 0x31, 0x00, 0x1f, 0x00, 0x34, 0x00, 0x0e, 0x00, 0x10, 0x00, 0xc0, - 0x00, 0x11, 0x00, 0x80, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x28, 0x00, 0x7e, 0x00, 0x00, - 0xf0, 0x00, 0x00, 0x21, 0x00, 0x14, 0x00, 0x28, 0x00, 0x60, 0x00, 0x00, 0xf0, - 0x00, 0x00, 0x21, 0x00, 0x14, 0x00, 0x28, 0x00, 0x40, 0x00, 0x00, 0xf0, 0x00, - 0x00, 0x06, 0xf0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, - 0x2d, 0x00, 0x41, 0x00, 0x01, 0xf0, 0x02, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, - 0xf0, 0x00, 0x00, 0x06, 0xf0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x2c, 0x00, - 0x00, 0x00, 0x2d, 0x00, 0x45, 0x00, 0x01, 0xf0, 0x20, 0x00, 0x07, 0xf0, 0x00, - 0x00, 0x00, 0xf0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, - 0x2d, 0x00, 0x00, 0x00, 0x05, 0xf0, 0x00, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, - 0xf0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2d, 0x00, - 0x00, 0x00, 0x04, 0xf0, 0x00, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, - 0x00, 0x08, 0xf0, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x2c, 0x00, 0x40, 0x00, - 0x2d, 0x00, 0x63, 0x00, 0x01, 0xf0, 0x08, 0x00, 0x04, 0xf0, 0x00, 0x00, 0x00, - 0xf0, 0x00, 0x00, 0x08, 0xf0, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x2c, 0x00, - 0x60, 0x00, 0x2d, 0x00, 0x43, 0x00, 0x01, 0xf0, 0x08, 0x00, 0x04, 0xf0, 0x00, - 0x00, 0x00, 0xf0, 0x00, 0x00, 0x08, 0xf0, 0x00, 0x00, 0x20, 0x00, 0x28, 0x00, - 0x2c, 0x00, 0x60, 0x00, 0x2d, 0x00, 0x44, 0x00, 0x01, 0xf0, 0x10, 0x00, 0x04, - 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x08, 0xf0, 0x00, 0x00, 0x20, 0x00, - 0xc0, 0x00, 0x2c, 0x00, 0x60, 0x00, 0x2d, 0x00, 0x43, 0x00, 0x01, 0xf0, 0x08, - 0x00, 0x04, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x08, 0xf0, 0x00, 0x00, - 0x20, 0x00, 0xc8, 0x00, 0x2c, 0x00, 0x60, 0x00, 0x2d, 0x00, 0x44, 0x00, 0x01, - 0xf0, 0x10, 0x00, 0x04, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xa0, 0x58, - 0x03, 0x83, 0xf8, 0x67, 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, 0x24, 0x59, 0x03, - 0x83, 0x00, 0x68, 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x59, 0x03, 0x83, - 0x08, 0x68, 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x58, 0x03, 0x83, 0xb0, - 0x67, 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x58, 0x03, 0x83, 0xb8, 0x67, - 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x58, 0x03, 0x83, 0xc0, 0x67, 0x03, - 0x83, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x58, 0x03, 0x83, 0xd0, 0x67, 0x03, 0x83, - 0x00, 0x00, 0x00, 0x00, 0xa0, 0x58, 0x03, 0x83, 0xd8, 0x67, 0x03, 0x83, 0x00, - 0x00, 0x00, 0x00, 0xa0, 0x58, 0x03, 0x83, 0xe0, 0x67, 0x03, 0x83, 0x00, 0x00, - 0x00, 0x00, 0xa0, 0x58, 0x03, 0x83, 0xf0, 0x67, 0x03, 0x83, 0x00, 0x00, 0x00, - 0x00, 0xa0, 0x58, 0x03, 0x83, 0xf8, 0x67, 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, - 0x84, 0x58, 0x03, 0x83, 0x00, 0x68, 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, 0x84, - 0x58, 0x03, 0x83, 0x08, 0x68, 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, 0x84, 0x58, - 0x03, 0x83, 0x10, 0x68, 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, 0x84, 0x58, 0x03, - 0x83, 0x18, 0x68, 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x58, 0x03, 0x83, - 0xb0, 0x67, 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x58, 0x03, 0x83, 0xb8, - 0x67, 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x58, 0x03, 0x83, 0xc0, 0x67, - 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x58, 0x03, 0x83, 0xd0, 0x67, 0x03, - 0x83, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x58, 0x03, 0x83, 0xd8, 0x67, 0x03, 0x83, - 0x00, 0x00, 0x00, 0x00, 0xd4, 0x58, 0x03, 0x83, 0xe0, 0x67, 0x03, 0x83, 0x00, - 0x00, 0x00, 0x00, 0xd4, 0x58, 0x03, 0x83, 0xf0, 0x67, 0x03, 0x83, 0x00, 0x00, - 0x00, 0x00, 0xd4, 0x58, 0x03, 0x83, 0xf8, 0x67, 0x03, 0x83, 0x00, 0x00, 0x00, - 0x00, 0xd4, 0x58, 0x03, 0x83, 0x00, 0x68, 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, - 0xd4, 0x58, 0x03, 0x83, 0x08, 0x68, 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, 0xd4, - 0x58, 0x03, 0x83, 0x10, 0x68, 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x58, - 0x03, 0x83, 0x18, 0x68, 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, 0x84, 0x58, 0x03, - 0x83, 0x20, 0x68, 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, 0x84, 0x58, 0x03, 0x83, - 0x28, 0x68, 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, 0x84, 0x58, 0x03, 0x83, 0x30, - 0x68, 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x58, 0x03, 0x83, 0x20, 0x68, - 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x58, 0x03, 0x83, 0x28, 0x68, 0x03, - 0x83, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x58, 0x03, 0x83, 0x30, 0x68, 0x03, 0x83, - 0x00, 0x00, 0x00, 0x00, 0xd4, 0x58, 0x03, 0x83, 0xc8, 0x67, 0x03, 0x83, 0x00, - 0x00, 0x00, 0x00, 0xd4, 0x58, 0x03, 0x83, 0xf8, 0x67, 0x03, 0x83, 0x00, 0x00, - 0x00, 0x00, 0xd4, 0x58, 0x03, 0x83, 0xb0, 0x67, 0x03, 0x83, 0x01, 0x00, 0x00, - 0x00, 0xd4, 0x58, 0x03, 0x83, 0xb8, 0x67, 0x03, 0x83, 0x01, 0x00, 0x00, 0x00, - 0xd4, 0x58, 0x03, 0x83, 0xc0, 0x67, 0x03, 0x83, 0x01, 0x00, 0x00, 0x00, 0xd4, - 0x58, 0x03, 0x83, 0xc8, 0x67, 0x03, 0x83, 0x01, 0x00, 0x00, 0x00, 0xd4, 0x58, - 0x03, 0x83, 0xd0, 0x67, 0x03, 0x83, 0x01, 0x00, 0x00, 0x00, 0xd4, 0x58, 0x03, - 0x83, 0xd8, 0x67, 0x03, 0x83, 0x01, 0x00, 0x00, 0x00, 0xd4, 0x58, 0x03, 0x83, - 0xe0, 0x67, 0x03, 0x83, 0x01, 0x00, 0x00, 0x00, 0xd4, 0x58, 0x03, 0x83, 0xe8, - 0x67, 0x03, 0x83, 0x01, 0x00, 0x00, 0x00, 0xd4, 0x58, 0x03, 0x83, 0xf0, 0x67, - 0x03, 0x83, 0x01, 0x00, 0x00, 0x00, 0xd4, 0x58, 0x03, 0x83, 0xf8, 0x67, 0x03, - 0x83, 0x01, 0x00, 0x00, 0x00, 0xd4, 0x58, 0x03, 0x83, 0xf8, 0x67, 0x03, 0x83, - 0x00, 0x00, 0x00, 0x00, 0xd4, 0x58, 0x03, 0x83, 0xf8, 0x67, 0x03, 0x83, 0x00, - 0x00, 0x00, 0x00, 0xd4, 0x58, 0x03, 0x83, 0xf8, 0x67, 0x03, 0x83, 0x00, 0x00, - 0x00, 0x00, 0xd4, 0x58, 0x03, 0x83, 0xf8, 0x67, 0x03, 0x83, 0x00, 0x00, 0x00, - 0x00, 0xd4, 0x58, 0x03, 0x83, 0xf8, 0x67, 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, - 0xd4, 0x58, 0x03, 0x83, 0xf8, 0x67, 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, 0xd4, - 0x58, 0x03, 0x83, 0xf8, 0x67, 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x58, - 0x03, 0x83, 0xf8, 0x67, 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x58, 0x03, - 0x83, 0xf8, 0x67, 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x58, 0x03, 0x83, - 0xf8, 0x67, 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x58, 0x03, 0x83, 0xf8, - 0x67, 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x58, 0x03, 0x83, 0xf8, 0x67, - 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x58, 0x03, 0x83, 0xf8, 0x67, 0x03, - 0x83, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x58, 0x03, 0x83, 0xf8, 0x67, 0x03, 0x83, - 0x00, 0x00, 0x00, 0x00, 0xd4, 0x58, 0x03, 0x83, 0xf8, 0x67, 0x03, 0x83, 0x00, - 0x00, 0x00, 0x00, 0x24, 0x59, 0x03, 0x83, 0xf8, 0x67, 0x03, 0x83, 0x00, 0x00, - 0x00, 0x00, 0x5c, 0x59, 0x03, 0x83, 0xf8, 0x67, 0x03, 0x83, 0x00, 0x00, 0x00, - 0x00, 0x24, 0x59, 0x03, 0x83, 0x00, 0x68, 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, - 0x5c, 0x59, 0x03, 0x83, 0x00, 0x68, 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, 0x24, - 0x59, 0x03, 0x83, 0x08, 0x68, 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x59, - 0x03, 0x83, 0x08, 0x68, 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, 0x24, 0x59, 0x03, - 0x83, 0x10, 0x68, 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x59, 0x03, 0x83, - 0x10, 0x68, 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, 0x08, 0x59, 0x03, 0x83, 0x38, - 0x68, 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, 0x40, 0x59, 0x03, 0x83, 0x38, 0x68, - 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, 0x84, 0x58, 0x03, 0x83, 0x38, 0x68, 0x03, - 0x83, 0x00, 0x00, 0x00, 0x00, 0x84, 0x58, 0x03, 0x83, 0x40, 0x68, 0x03, 0x83, - 0x00, 0x00, 0x00, 0x00, 0x84, 0x58, 0x03, 0x83, 0x48, 0x68, 0x03, 0x83, 0x00, - 0x00, 0x00, 0x00, 0x84, 0x58, 0x03, 0x83, 0x50, 0x68, 0x03, 0x83, 0x00, 0x00, - 0x00, 0x00, 0xbc, 0x58, 0x03, 0x83, 0x58, 0x68, 0x03, 0x83, 0x00, 0x00, 0x00, - 0x00, 0xa0, 0x58, 0x03, 0x83, 0xc8, 0x67, 0x03, 0x83, 0x01, 0x00, 0x00, 0x00, - 0xa0, 0x58, 0x03, 0x83, 0xe0, 0x67, 0x03, 0x83, 0x01, 0x00, 0x00, 0x00, 0xec, - 0x58, 0x03, 0x83, 0x60, 0x68, 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, 0x42, 0x54, - 0x30, 0x31, 0x00, 0x00, 0x00, 0x00, 0x42, 0x54, 0x30, 0x32, 0x00, 0x00, 0x00, - 0x00, 0x0a, 0x0d, 0x44, 0x69, 0x67, 0x69, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x20, - 0x53, 0x79, 0x6e, 0x63, 0x42, 0x49, 0x4f, 0x53, 0x00, 0x00, 0x00, 0x00, 0x0a, - 0x0d, 0x52, 0x41, 0x4d, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x20, 0x25, 0x30, - 0x38, 0x78, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0d, 0x43, 0x50, 0x55, 0x20, 0x74, - 0x65, 0x73, 0x74, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, - 0x2e, 0x2e, 0x00, 0x00, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x00, 0x00, 0x0a, - 0x0d, 0x63, 0x6f, 0x64, 0x65, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, - 0x6d, 0x20, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x2e, 0x00, 0x00, 0x25, 0x45, 0x20, - 0x62, 0x61, 0x64, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x20, 0x63, 0x68, 0x65, 0x63, - 0x6b, 0x73, 0x75, 0x6d, 0x3a, 0x20, 0x25, 0x30, 0x38, 0x78, 0x00, 0x00, 0x0d, - 0x0a, 0x00, 0x00, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x0a, 0x0d, 0x00, 0x00, - 0x00, 0x00, 0x48, 0x69, 0x67, 0x68, 0x0a, 0x0d, 0x00, 0x00, 0x44, 0x4d, 0x41, - 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x20, - 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x43, - 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x20, 0x44, 0x4d, 0x41, 0x0a, 0x0d, 0x00, - 0x00, 0x00, 0x42, 0x54, 0x30, 0x33, 0x00, 0x00, 0x00, 0x00, 0x42, 0x54, 0x30, - 0x34, 0x00, 0x00, 0x00, 0x00, 0x42, 0x54, 0x30, 0x35, 0x00, 0x00, 0x00, 0x00, - 0x2e, 0x2e, 0x2f, 0x73, 0x79, 0x6e, 0x63, 0x62, 0x69, 0x6f, 0x73, 0x2e, 0x63, - 0x00, 0x00, 0x00, 0x42, 0x49, 0x4f, 0x53, 0x00, 0x00, 0x00, 0x00, 0x20, 0x47, - 0x4f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x20, 0x4f, 0x4b, 0x20, 0x00, 0x00, 0x00, - 0x00, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x47, 0x4f, 0x4f, 0x44, - 0x00, 0x00, 0x00, 0x00, 0x44, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x57, - 0x41, 0x49, 0x54, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x50, 0x61, 0x73, 0x73, 0x20, 0x25, 0x64, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5e, 0x03, 0x83, 0x2d, 0x2d, 0x2d, 0x20, - 0x53, 0x79, 0x6e, 0x63, 0x42, 0x49, 0x4f, 0x53, 0x20, 0x44, 0x69, 0x61, 0x67, - 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x73, 0x20, 0x2d, 0x2d, 0x2d, 0x0a, 0x0d, - 0x00, 0x00, 0x41, 0x20, 0x3d, 0x20, 0x41, 0x6c, 0x6c, 0x20, 0x74, 0x65, 0x73, - 0x74, 0x73, 0x0a, 0x0d, 0x00, 0x31, 0x20, 0x3d, 0x20, 0x54, 0x69, 0x6d, 0x65, - 0x72, 0x20, 0x74, 0x65, 0x73, 0x74, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x32, - 0x20, 0x3d, 0x20, 0x52, 0x41, 0x4d, 0x20, 0x74, 0x65, 0x73, 0x74, 0x0a, 0x0d, - 0x00, 0x00, 0x33, 0x20, 0x3d, 0x20, 0x53, 0x79, 0x6e, 0x63, 0x20, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x20, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, - 0x63, 0x6b, 0x20, 0x74, 0x65, 0x73, 0x74, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x34, - 0x20, 0x3d, 0x20, 0x53, 0x79, 0x6e, 0x63, 0x20, 0x65, 0x78, 0x74, 0x65, 0x72, - 0x6e, 0x61, 0x6c, 0x20, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x20, - 0x74, 0x65, 0x73, 0x74, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x74, 0x2f, 0x5e, 0x54, - 0x2f, 0x54, 0x20, 0x3d, 0x20, 0x48, 0x6f, 0x73, 0x74, 0x20, 0x73, 0x69, 0x64, - 0x65, 0x20, 0x20, 0x38, 0x2f, 0x31, 0x36, 0x2f, 0x33, 0x32, 0x2d, 0x62, 0x69, - 0x74, 0x20, 0x52, 0x41, 0x4d, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x2f, 0x73, 0x74, 0x6f, 0x70, 0x0a, 0x0d, 0x00, 0x00, 0x00, - 0x69, 0x20, 0x3d, 0x20, 0x63, 0x61, 0x72, 0x64, 0x2d, 0x74, 0x6f, 0x2d, 0x68, - 0x6f, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, - 0x20, 0x74, 0x65, 0x73, 0x74, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x64, 0x5e, 0x44, - 0x44, 0x29, 0x75, 0x6d, 0x70, 0x2c, 0x20, 0x72, 0x5e, 0x52, 0x52, 0x29, 0x65, - 0x61, 0x64, 0x2c, 0x20, 0x77, 0x5e, 0x57, 0x57, 0x29, 0x72, 0x69, 0x74, 0x65, - 0x2c, 0x20, 0x66, 0x5e, 0x46, 0x46, 0x29, 0x69, 0x6c, 0x6c, 0x20, 0x52, 0x41, - 0x4d, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x0d, 0x0a, 0x4e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x20, 0x74, 0x6f, - 0x20, 0x64, 0x6f, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x74, 0x65, 0x73, 0x74, 0x73, - 0x3a, 0x20, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x0d, 0x20, 0x20, 0x54, 0x65, - 0x73, 0x74, 0x73, 0x20, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x0a, 0x0d, - 0x00, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x73, - 0x3a, 0x20, 0x25, 0x64, 0x0a, 0x0d, 0x00, 0x00, 0x20, 0x20, 0x54, 0x65, 0x73, - 0x74, 0x20, 0x25, 0x64, 0x3a, 0x20, 0x25, 0x64, 0x20, 0x70, 0x61, 0x73, 0x73, - 0x20, 0x25, 0x64, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x0a, - 0x0d, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x28, 0x70, 0x72, 0x65, 0x73, 0x73, - 0x20, 0x61, 0x6e, 0x79, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x74, 0x6f, 0x20, 0x73, - 0x74, 0x6f, 0x70, 0x29, 0x0a, 0x00, 0x00, 0x0a, 0x0d, 0x20, 0x20, 0x54, 0x69, - 0x6d, 0x65, 0x72, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x73, 0x74, 0x6f, 0x70, - 0x70, 0x65, 0x64, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x54, 0x65, - 0x73, 0x74, 0x20, 0x31, 0x3a, 0x20, 0x25, 0x64, 0x20, 0x70, 0x61, 0x73, 0x73, - 0x20, 0x25, 0x64, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x0a, - 0x0d, 0x00, 0x53, 0x74, 0x61, 0x72, 0x74, 0x20, 0x41, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x3a, 0x20, 0x00, 0x0a, 0x0d, 0x45, 0x6e, 0x64, 0x20, 0x41, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x20, 0x00, 0x0a, 0x0d, 0x00, 0x00, 0x0a, - 0x0d, 0x20, 0x20, 0x52, 0x41, 0x4d, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x73, - 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x0a, 0x0d, 0x00, 0x00, 0x20, 0x20, 0x54, - 0x65, 0x73, 0x74, 0x20, 0x32, 0x3a, 0x20, 0x25, 0x64, 0x20, 0x70, 0x61, 0x73, - 0x73, 0x20, 0x25, 0x64, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, - 0x0a, 0x0d, 0x00, 0x0a, 0x0d, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x20, 0x6d, 0x6f, - 0x64, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x28, 0x30, - 0x2d, 0x25, 0x64, 0x29, 0x20, 0x6f, 0x72, 0x20, 0x63, 0x61, 0x72, 0x72, 0x69, - 0x61, 0x67, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x74, 0x6f, - 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x6d, 0x6f, 0x64, - 0x65, 0x73, 0x3a, 0x20, 0x00, 0x00, 0x41, 0x6c, 0x6c, 0x00, 0x0a, 0x0d, 0x45, - 0x6e, 0x74, 0x65, 0x72, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x74, 0x6f, 0x20, - 0x73, 0x65, 0x6e, 0x64, 0x2c, 0x20, 0x6f, 0x72, 0x20, 0x63, 0x61, 0x72, 0x72, - 0x69, 0x61, 0x67, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, - 0x6f, 0x72, 0x20, 0x30, 0x30, 0x2d, 0x46, 0x46, 0x3a, 0x20, 0x00, 0x00, 0x00, - 0x00, 0x0a, 0x0d, 0x20, 0x20, 0x28, 0x70, 0x72, 0x65, 0x73, 0x73, 0x20, 0x61, - 0x6e, 0x79, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x74, 0x6f, 0x20, 0x73, 0x74, 0x6f, - 0x70, 0x29, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x0a, 0x0d, 0x20, 0x20, 0x53, 0x79, - 0x6e, 0x63, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x73, 0x74, 0x6f, 0x70, 0x70, - 0x65, 0x64, 0x0a, 0x0d, 0x00, 0x20, 0x20, 0x54, 0x65, 0x73, 0x74, 0x20, 0x25, - 0x63, 0x3a, 0x20, 0x25, 0x64, 0x20, 0x70, 0x61, 0x73, 0x73, 0x20, 0x25, 0x64, - 0x20, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x0a, 0x0d, 0x00, 0x00, - 0x00, 0x00, 0x43, 0x61, 0x72, 0x64, 0x2d, 0x74, 0x6f, 0x2d, 0x68, 0x6f, 0x73, - 0x74, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x20, 0x74, - 0x65, 0x73, 0x74, 0x2e, 0x2e, 0x2e, 0x00, 0x00, 0x48, 0x65, 0x78, 0x20, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x20, 0x00, 0x00, 0x00, 0x25, 0x30, - 0x38, 0x78, 0x3a, 0x20, 0x00, 0x00, 0x25, 0x30, 0x32, 0x78, 0x0a, 0x0d, 0x00, - 0x00, 0x25, 0x30, 0x34, 0x78, 0x0a, 0x0d, 0x00, 0x00, 0x25, 0x30, 0x38, 0x78, - 0x0a, 0x0d, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x31, 0x36, 0x00, 0x00, 0x33, - 0x32, 0x00, 0x00, 0x2d, 0x62, 0x69, 0x74, 0x20, 0x48, 0x65, 0x78, 0x20, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x20, 0x00, 0x00, 0x00, 0x00, 0x48, 0x65, 0x78, - 0x20, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x3a, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x50, 0x72, 0x65, 0x73, 0x73, 0x20, 0x27, 0x3f, 0x27, 0x20, 0x66, 0x6f, 0x72, - 0x20, 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x73, 0x20, - 0x6d, 0x65, 0x6e, 0x75, 0x0a, 0x0d, 0x00, 0x00, 0xe8, 0x03, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x31, 0x32, 0x33, - 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x00, - 0x00, 0x00, 0x00, 0x0a, 0x0d, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x20, 0x2d, 0x00, - 0x00, 0x00, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x2e, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x72, - 0x2e, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, - 0x30, 0x32, 0x58, 0x20, 0x00, 0x00, 0x00, 0x0d, 0x54, 0x69, 0x6d, 0x65, 0x72, - 0x20, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, - 0x2e, 0x2e, 0x00, 0x00, 0x00, 0x25, 0x45, 0x20, 0x63, 0x61, 0x6e, 0x27, 0x74, - 0x20, 0x73, 0x65, 0x74, 0x20, 0x75, 0x70, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x72, - 0x20, 0x30, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x25, 0x45, 0x20, 0x63, 0x61, 0x6e, - 0x27, 0x74, 0x20, 0x73, 0x65, 0x74, 0x20, 0x75, 0x70, 0x20, 0x74, 0x69, 0x6d, - 0x65, 0x72, 0x20, 0x32, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x25, 0x45, 0x20, 0x74, - 0x69, 0x6d, 0x65, 0x72, 0x20, 0x32, 0x20, 0x62, 0x61, 0x64, 0x20, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x0a, 0x0d, 0x00, 0x00, 0x25, 0x45, 0x20, 0x74, 0x69, 0x6d, - 0x65, 0x72, 0x20, 0x30, 0x20, 0x49, 0x4e, 0x54, 0x20, 0x73, 0x74, 0x75, 0x63, - 0x6b, 0x20, 0x6f, 0x6e, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x25, 0x45, 0x20, 0x74, - 0x69, 0x6d, 0x65, 0x72, 0x20, 0x30, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, - 0x6f, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x0a, - 0x0d, 0x00, 0x25, 0x45, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x20, 0x30, 0x20, - 0x49, 0x4e, 0x54, 0x20, 0x77, 0x6f, 0x6e, 0x27, 0x74, 0x20, 0x67, 0x6f, 0x20, - 0x61, 0x77, 0x61, 0x79, 0x0a, 0x0d, 0x00, 0x00, 0x70, 0x61, 0x73, 0x73, 0x65, - 0x64, 0x00, 0x00, 0x25, 0x45, 0x20, 0x54, 0x25, 0x64, 0x20, 0x77, 0x72, 0x6f, - 0x74, 0x65, 0x20, 0x25, 0x30, 0x38, 0x78, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, - 0x25, 0x30, 0x38, 0x78, 0x20, 0x61, 0x74, 0x20, 0x25, 0x30, 0x38, 0x78, 0x0a, - 0x0d, 0x00, 0x00, 0x00, 0x98, 0x63, 0x03, 0x83, 0x0d, 0x52, 0x41, 0x4d, 0x20, - 0x74, 0x65, 0x73, 0x74, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, - 0x2e, 0x2e, 0x2e, 0x25, 0x30, 0x38, 0x78, 0x2d, 0x25, 0x30, 0x38, 0x78, 0x20, - 0x00, 0x67, 0x70, 0x70, 0x3d, 0x25, 0x30, 0x33, 0x78, 0x20, 0x00, 0x00, 0x00, - 0x53, 0x25, 0x64, 0x20, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x6f, 0x64, 0x65, 0x20, - 0x25, 0x64, 0x20, 0x00, 0x00, 0x00, 0x00, 0x49, 0x4c, 0x4c, 0x45, 0x47, 0x41, - 0x4c, 0x20, 0x4d, 0x4f, 0x44, 0x45, 0x21, 0x3f, 0x0a, 0x0d, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x00, 0x42, 0x41, 0x44, 0x20, 0x50, 0x4f, 0x49, 0x4e, - 0x54, 0x45, 0x52, 0x21, 0x3f, 0x0a, 0x0d, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x00, 0x00, 0x25, 0x64, 0x6b, 0x62, 0x00, 0x00, 0x00, 0x00, 0x25, 0x64, - 0x62, 0x00, 0x20, 0x4e, 0x52, 0x5a, 0x20, 0x65, 0x78, 0x74, 0x00, 0x00, 0x00, - 0x00, 0x20, 0x4e, 0x52, 0x5a, 0x20, 0x63, 0x6c, 0x6b, 0x2f, 0x32, 0x00, 0x00, - 0x20, 0x4e, 0x52, 0x5a, 0x20, 0x31, 0x30, 0x20, 0x6d, 0x68, 0x7a, 0x00, 0x20, - 0x4e, 0x52, 0x5a, 0x20, 0x63, 0x6c, 0x6b, 0x2f, 0x33, 0x32, 0x00, 0x20, 0x4e, - 0x52, 0x5a, 0x49, 0x20, 0x63, 0x6c, 0x6b, 0x2f, 0x38, 0x00, 0x20, 0x4e, 0x52, - 0x5a, 0x49, 0x20, 0x63, 0x6c, 0x6b, 0x2f, 0x31, 0x36, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x46, 0x4d, 0x30, 0x20, 0x63, 0x6c, 0x6b, 0x2f, 0x38, 0x00, 0x00, 0x20, - 0x46, 0x4d, 0x30, 0x20, 0x63, 0x6c, 0x6b, 0x2f, 0x31, 0x36, 0x00, 0x20, 0x4e, - 0x52, 0x5a, 0x49, 0x20, 0x52, 0x78, 0x20, 0x63, 0x6c, 0x6b, 0x2f, 0x38, 0x00, - 0x00, 0x20, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x21, 0x3f, 0x00, 0x00, - 0x20, 0x52, 0x53, 0x32, 0x33, 0x32, 0x00, 0x00, 0x0a, 0x0d, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x25, 0x45, 0x00, 0x00, 0x20, 0x52, - 0x54, 0x53, 0x2f, 0x43, 0x54, 0x53, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6c, 0x6f, - 0x77, 0x0a, 0x00, 0x00, 0x00, 0x68, 0x63, 0x5f, 0x73, 0x74, 0x32, 0x33, 0x20, - 0x3d, 0x20, 0x25, 0x78, 0x00, 0x00, 0x00, 0x00, 0x20, 0x52, 0x54, 0x53, 0x2f, - 0x43, 0x54, 0x53, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x68, 0x69, 0x67, 0x68, 0x0a, - 0x00, 0x00, 0x20, 0x44, 0x54, 0x52, 0x2f, 0x44, 0x53, 0x52, 0x20, 0x6e, 0x6f, - 0x74, 0x20, 0x6c, 0x6f, 0x77, 0x0a, 0x00, 0x00, 0x00, 0x20, 0x44, 0x54, 0x52, - 0x2f, 0x44, 0x43, 0x44, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x63, 0x6c, 0x65, 0x61, - 0x72, 0x0a, 0x00, 0x20, 0x44, 0x54, 0x52, 0x2f, 0x44, 0x53, 0x52, 0x20, 0x6e, - 0x6f, 0x74, 0x20, 0x68, 0x69, 0x67, 0x68, 0x20, 0x0a, 0x00, 0x20, 0x44, 0x54, - 0x52, 0x2f, 0x44, 0x43, 0x44, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x68, 0x69, 0x67, - 0x68, 0x0a, 0x00, 0x00, 0x20, 0x44, 0x54, 0x52, 0x2f, 0x44, 0x53, 0x52, 0x20, - 0x6e, 0x6f, 0x74, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, - 0x6c, 0x6f, 0x77, 0x0a, 0x00, 0x00, 0x56, 0x2e, 0x31, 0x31, 0x20, 0x53, 0x79, - 0x6e, 0x63, 0x68, 0x72, 0x6f, 0x6e, 0x6f, 0x75, 0x73, 0x20, 0x6d, 0x6f, 0x64, - 0x65, 0x20, 0x2d, 0x20, 0x42, 0x61, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, - 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x20, 0x00, 0x00, 0x0d, 0x0a, - 0x77, 0x72, 0x6f, 0x74, 0x65, 0x20, 0x25, 0x30, 0x32, 0x78, 0x2c, 0x20, 0x72, - 0x65, 0x61, 0x64, 0x20, 0x25, 0x30, 0x32, 0x78, 0x00, 0x0d, 0x53, 0x79, 0x6e, - 0x63, 0x20, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, - 0x2e, 0x2e, 0x2e, 0x2e, 0x00, 0x00, 0x00, 0x25, 0x45, 0x20, 0x53, 0x25, 0x64, - 0x20, 0x68, 0x63, 0x5f, 0x69, 0x64, 0x6c, 0x20, 0x72, 0x65, 0x67, 0x69, 0x73, - 0x74, 0x65, 0x72, 0x3a, 0x20, 0x77, 0x72, 0x6f, 0x74, 0x65, 0x20, 0x30, 0x78, - 0x41, 0x35, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x25, 0x30, 0x32, 0x78, 0x0a, - 0x0d, 0x00, 0x00, 0x0d, 0x53, 0x79, 0x6e, 0x63, 0x20, 0x74, 0x65, 0x73, 0x74, - 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x6d, 0x6f, - 0x64, 0x65, 0x20, 0x25, 0x30, 0x32, 0x64, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x74, 0x65, 0x73, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x00, 0x00, 0x6d, 0x6f, 0x64, 0x65, 0x20, 0x25, - 0x30, 0x32, 0x64, 0x20, 0x00, 0x00, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, - 0x69, 0x74, 0x20, 0x62, 0x75, 0x73, 0x79, 0x0a, 0x00, 0x20, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x20, 0x62, 0x75, 0x73, 0x79, 0x0a, 0x00, 0x00, 0x20, - 0x64, 0x73, 0x72, 0x30, 0x3d, 0x25, 0x30, 0x32, 0x78, 0x20, 0x64, 0x73, 0x72, - 0x31, 0x3d, 0x25, 0x30, 0x32, 0x78, 0x00, 0x00, 0x00, 0x00, 0x20, 0x44, 0x4d, - 0x41, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x6f, 0x76, 0x65, 0x72, - 0x66, 0x6c, 0x6f, 0x77, 0x0a, 0x00, 0x00, 0x00, 0x20, 0x73, 0x79, 0x6e, 0x63, - 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x20, 0x73, 0x74, - 0x75, 0x63, 0x6b, 0x20, 0x6f, 0x6e, 0x0a, 0x00, 0x00, 0x00, 0x20, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x20, 0x6e, 0x65, 0x76, 0x65, 0x72, 0x20, - 0x73, 0x74, 0x6f, 0x70, 0x73, 0x0a, 0x00, 0x00, 0x20, 0x6e, 0x6f, 0x20, 0x64, - 0x61, 0x74, 0x61, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x0a, - 0x0d, 0x00, 0x20, 0x73, 0x79, 0x6e, 0x63, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x72, 0x75, 0x70, 0x74, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, - 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x0a, 0x0d, 0x00, 0x0a, 0x0d, 0x00, 0x00, 0x25, - 0x30, 0x32, 0x78, 0x2d, 0x25, 0x30, 0x32, 0x78, 0x20, 0x00, 0x00, 0x25, 0x45, - 0x20, 0x62, 0x69, 0x74, 0x72, 0x6f, 0x74, 0x20, 0x2d, 0x20, 0x64, 0x61, 0x74, - 0x61, 0x20, 0x68, 0x61, 0x73, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, - 0x0a, 0x0d, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x0a, 0x0d, 0x00, 0x20, - 0x62, 0x61, 0x64, 0x20, 0x6d, 0x73, 0x67, 0x3a, 0x20, 0x6c, 0x65, 0x6e, 0x3d, - 0x25, 0x64, 0x2d, 0x25, 0x64, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x3d, - 0x25, 0x30, 0x32, 0x78, 0x20, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x0a, 0x0d, 0x00, - 0x0a, 0x0d, 0x25, 0x30, 0x34, 0x78, 0x3a, 0x00, 0x25, 0x30, 0x32, 0x78, 0x2d, - 0x25, 0x30, 0x32, 0x78, 0x00, 0x00, 0x00, 0x20, 0x62, 0x61, 0x64, 0x20, 0x64, - 0x61, 0x74, 0x61, 0x20, 0x69, 0x6e, 0x20, 0x6d, 0x73, 0x67, 0x0a, 0x00, 0x00, - 0x00, 0x20, 0x73, 0x79, 0x6e, 0x63, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, - 0x75, 0x70, 0x74, 0x20, 0x77, 0x6f, 0x6e, 0x27, 0x74, 0x20, 0x67, 0x6f, 0x20, - 0x61, 0x77, 0x61, 0x79, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x09, - 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0xc0, 0x12, 0x00, 0x00, 0x1e, 0x00, 0x00, - 0x00, 0x80, 0x25, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x40, 0x38, 0x00, 0x00, - 0x32, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, - 0x96, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x96, 0x00, - 0x00, 0x00, 0x6f, 0xfa, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x01, - 0x00, 0xfa, 0x00, 0x00, 0x00, 0x38, 0xc1, 0x01, 0x00, 0x2c, 0x01, 0x00, 0x00, - 0x70, 0x82, 0x03, 0x00, 0x58, 0x02, 0x00, 0x00, 0xe0, 0x04, 0x07, 0x00, 0xe8, - 0x03, 0x00, 0x00, 0xa8, 0x0d, 0x0e, 0x00, 0x40, 0x06, 0x00, 0x00, 0xc8, 0xc0, - 0x12, 0x00, 0x40, 0x06, 0x00, 0x00, 0x00, 0x20, 0x1c, 0x00, 0x40, 0x06, 0x00, - 0x00, 0x00, 0x80, 0x25, 0x00, 0x40, 0x06, 0x00, 0x00, 0x00, 0x40, 0x38, 0x00, - 0x40, 0x06, 0x00, 0x00, 0x00, 0x20, 0x1c, 0x00, 0xc4, 0x09, 0x00, 0x00, 0x00, - 0x80, 0x25, 0x00, 0xa0, 0x0f, 0x00, 0x00, 0x00, 0x40, 0x38, 0x00, 0x88, 0x13, - 0x00, 0x00, 0x00, 0x80, 0x70, 0x00, 0x88, 0x13, 0x00, 0x00, 0x80, 0x96, 0x98, - 0x00, 0x88, 0x13, 0x00, 0x00, 0x00, 0x40, 0x1f, 0x00, 0xa0, 0x0f, 0x00, 0x00, - 0x4e, 0x00, 0x00, 0x00, 0x2e, 0x2e, 0x2f, 0x73, 0x63, 0x61, 0x2e, 0x63, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0xef, - 0x11, 0x80, 0x40, 0x28, 0x23, 0x29, 0x62, 0x69, 0x6f, 0x73, 0x69, 0x6e, 0x69, - 0x74, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x33, 0x20, 0x24, 0x20, 0x20, 0x24, - 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x32, - 0x2f, 0x30, 0x35, 0x20, 0x31, 0x36, 0x3a, 0x34, 0x32, 0x3a, 0x31, 0x37, 0x20, - 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x62, 0x69, 0x6f, 0x73, 0x69, 0x6e, 0x69, - 0x74, 0x2e, 0x73, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x31, 0x34, 0x20, 0x24, 0x20, 0x20, - 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, - 0x34, 0x2f, 0x32, 0x33, 0x20, 0x31, 0x38, 0x3a, 0x34, 0x38, 0x3a, 0x34, 0x32, - 0x20, 0x24, 0x20, 0x00, 0x40, 0x28, 0x23, 0x29, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x72, 0x61, 0x6e, 0x67, 0x65, 0x2e, 0x63, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x31, 0x2e, 0x33, 0x20, 0x24, 0x20, - 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, - 0x30, 0x39, 0x2f, 0x31, 0x36, 0x20, 0x32, 0x33, 0x3a, 0x32, 0x32, 0x3a, 0x30, - 0x35, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2e, 0x6d, 0x6b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x32, 0x38, 0x20, 0x24, - 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, - 0x2f, 0x30, 0x35, 0x2f, 0x33, 0x30, 0x20, 0x31, 0x35, 0x3a, 0x30, 0x32, 0x3a, - 0x30, 0x36, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x63, 0x74, 0x6f, 0x72, - 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x32, 0x20, 0x24, 0x20, 0x20, 0x24, - 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x30, - 0x2f, 0x31, 0x30, 0x20, 0x32, 0x33, 0x3a, 0x32, 0x37, 0x3a, 0x30, 0x37, 0x20, - 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x64, 0x65, 0x66, 0x73, 0x2e, 0x68, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x31, 0x31, 0x20, 0x24, 0x20, 0x20, - 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, - 0x34, 0x2f, 0x30, 0x39, 0x20, 0x31, 0x35, 0x3a, 0x30, 0x38, 0x3a, 0x30, 0x32, - 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, - 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x31, 0x31, 0x20, 0x24, 0x20, - 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, - 0x30, 0x37, 0x2f, 0x32, 0x33, 0x20, 0x30, 0x31, 0x3a, 0x35, 0x36, 0x3a, 0x35, - 0x35, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x66, 0x78, 0x62, 0x69, 0x6f, - 0x73, 0x2f, 0x4d, 0x61, 0x6b, 0x65, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, - 0x31, 0x2e, 0x33, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, - 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x31, 0x2f, 0x32, 0x37, 0x20, 0x32, - 0x32, 0x3a, 0x31, 0x34, 0x3a, 0x35, 0x37, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, - 0x29, 0x68, 0x6f, 0x73, 0x74, 0x63, 0x6f, 0x6d, 0x6d, 0x2e, 0x63, 0x20, 0x20, - 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, - 0x33, 0x2e, 0x34, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, - 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x30, 0x2f, 0x31, 0x30, 0x20, 0x32, - 0x33, 0x3a, 0x32, 0x37, 0x3a, 0x30, 0x38, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, - 0x29, 0x68, 0x6f, 0x73, 0x74, 0x63, 0x6f, 0x6d, 0x6d, 0x2e, 0x68, 0x20, 0x20, - 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, - 0x33, 0x2e, 0x31, 0x32, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, - 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x34, 0x2f, 0x32, 0x39, 0x20, - 0x31, 0x39, 0x3a, 0x33, 0x31, 0x3a, 0x31, 0x30, 0x20, 0x24, 0x00, 0x40, 0x28, - 0x23, 0x29, 0x6d, 0x69, 0x64, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, - 0x20, 0x33, 0x2e, 0x31, 0x31, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, - 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x30, 0x2f, 0x31, 0x30, - 0x20, 0x32, 0x33, 0x3a, 0x32, 0x37, 0x3a, 0x30, 0x38, 0x20, 0x24, 0x00, 0x40, - 0x28, 0x23, 0x29, 0x6d, 0x6f, 0x64, 0x65, 0x6d, 0x74, 0x73, 0x74, 0x2e, 0x68, - 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x3a, 0x20, 0x33, 0x2e, 0x35, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, - 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x31, 0x2f, 0x32, 0x30, - 0x20, 0x32, 0x30, 0x3a, 0x35, 0x38, 0x3a, 0x34, 0x33, 0x20, 0x24, 0x00, 0x40, - 0x28, 0x23, 0x29, 0x70, 0x61, 0x72, 0x61, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x3a, 0x20, 0x31, 0x2e, 0x32, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, - 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, - 0x20, 0x31, 0x36, 0x3a, 0x35, 0x30, 0x3a, 0x31, 0x36, 0x20, 0x24, 0x00, 0x40, - 0x28, 0x23, 0x29, 0x70, 0x62, 0x75, 0x73, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x3a, 0x20, 0x33, 0x2e, 0x34, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, - 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, - 0x20, 0x31, 0x36, 0x3a, 0x35, 0x30, 0x3a, 0x32, 0x35, 0x20, 0x24, 0x00, 0x40, - 0x28, 0x23, 0x29, 0x70, 0x6c, 0x78, 0x39, 0x30, 0x36, 0x30, 0x2e, 0x68, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x3a, 0x20, 0x33, 0x2e, 0x34, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, - 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, - 0x20, 0x31, 0x36, 0x3a, 0x35, 0x30, 0x3a, 0x34, 0x39, 0x20, 0x24, 0x00, 0x40, - 0x28, 0x23, 0x29, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x66, 0x2e, 0x63, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x3a, 0x20, 0x33, 0x2e, 0x33, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, - 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x31, 0x2f, 0x32, 0x30, - 0x20, 0x32, 0x30, 0x3a, 0x35, 0x38, 0x3a, 0x34, 0x32, 0x20, 0x24, 0x00, 0x40, - 0x28, 0x23, 0x29, 0x72, 0x77, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x3a, 0x20, 0x33, 0x2e, 0x32, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, - 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x30, 0x39, 0x2f, 0x31, 0x36, - 0x20, 0x32, 0x33, 0x3a, 0x32, 0x39, 0x3a, 0x34, 0x34, 0x20, 0x24, 0x00, 0x40, - 0x28, 0x23, 0x29, 0x72, 0x77, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x3a, 0x20, 0x32, 0x2e, 0x34, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, - 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x32, 0x2f, 0x32, 0x30, - 0x20, 0x32, 0x32, 0x3a, 0x32, 0x37, 0x3a, 0x35, 0x30, 0x20, 0x24, 0x00, 0x40, - 0x28, 0x23, 0x29, 0x73, 0x63, 0x61, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x3a, 0x20, 0x33, 0x2e, 0x37, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, - 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x34, 0x2f, 0x30, 0x37, - 0x20, 0x32, 0x31, 0x3a, 0x34, 0x33, 0x3a, 0x31, 0x34, 0x20, 0x24, 0x00, 0x40, - 0x28, 0x23, 0x29, 0x73, 0x63, 0x61, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x3a, 0x20, 0x33, 0x2e, 0x36, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, - 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, - 0x20, 0x31, 0x36, 0x3a, 0x35, 0x33, 0x3a, 0x30, 0x33, 0x20, 0x24, 0x00, 0x40, - 0x28, 0x23, 0x29, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 0x68, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x3a, 0x20, 0x33, 0x2e, 0x32, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, - 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x30, 0x2f, 0x31, 0x30, - 0x20, 0x32, 0x33, 0x3a, 0x32, 0x37, 0x3a, 0x31, 0x31, 0x20, 0x24, 0x00, 0x40, - 0x28, 0x23, 0x29, 0x73, 0x79, 0x6e, 0x63, 0x62, 0x69, 0x6f, 0x73, 0x2e, 0x63, - 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x3a, 0x20, 0x33, 0x2e, 0x31, 0x37, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, - 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, - 0x35, 0x20, 0x31, 0x36, 0x3a, 0x35, 0x35, 0x3a, 0x35, 0x37, 0x20, 0x24, 0x00, - 0x40, 0x28, 0x23, 0x29, 0x73, 0x79, 0x6e, 0x63, 0x62, 0x69, 0x6f, 0x73, 0x2e, - 0x68, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x3a, 0x20, 0x31, 0x2e, 0x37, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, - 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x30, 0x2f, 0x32, - 0x33, 0x20, 0x32, 0x31, 0x3a, 0x34, 0x30, 0x3a, 0x31, 0x32, 0x20, 0x24, 0x00, - 0x40, 0x28, 0x23, 0x29, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x63, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x34, 0x35, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, - 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x34, 0x2f, - 0x31, 0x34, 0x20, 0x31, 0x35, 0x3a, 0x33, 0x38, 0x3a, 0x35, 0x32, 0x20, 0x24, - 0x00, 0x40, 0x28, 0x23, 0x29, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x68, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x35, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, - 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, - 0x30, 0x35, 0x20, 0x31, 0x36, 0x3a, 0x35, 0x37, 0x3a, 0x31, 0x34, 0x20, 0x24, - 0x00, 0x40, 0x28, 0x23, 0x29, 0x74, 0x65, 0x73, 0x74, 0x75, 0x61, 0x72, 0x74, - 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x32, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, - 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x30, 0x2f, - 0x31, 0x30, 0x20, 0x32, 0x33, 0x3a, 0x32, 0x37, 0x3a, 0x31, 0x34, 0x20, 0x24, - 0x00, 0x40, 0x28, 0x23, 0x29, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x2e, 0x63, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x36, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, - 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x30, 0x39, 0x2f, - 0x31, 0x36, 0x20, 0x32, 0x33, 0x3a, 0x34, 0x31, 0x3a, 0x34, 0x35, 0x20, 0x24, - 0x00, 0x40, 0x28, 0x23, 0x29, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x2e, 0x68, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x38, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, - 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x30, 0x39, 0x2f, - 0x31, 0x36, 0x20, 0x32, 0x33, 0x3a, 0x34, 0x32, 0x3a, 0x30, 0x38, 0x20, 0x24, - 0x00, 0x40, 0x28, 0x23, 0x29, 0x75, 0x61, 0x72, 0x74, 0x2e, 0x68, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x36, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, - 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, - 0x30, 0x35, 0x20, 0x31, 0x36, 0x3a, 0x35, 0x38, 0x3a, 0x35, 0x32, 0x20, 0x24, - 0x00, 0x40, 0x28, 0x23, 0x29, 0x75, 0x74, 0x69, 0x6c, 0x2e, 0x73, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x34, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, - 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x31, 0x2f, - 0x32, 0x31, 0x20, 0x31, 0x37, 0x3a, 0x30, 0x36, 0x3a, 0x35, 0x32, 0x20, 0x24, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00 -}; diff --git a/sys/dev/digi/EPCX.c b/sys/dev/digi/EPCX.c deleted file mode 100644 index a920eb66a2e7..000000000000 --- a/sys/dev/digi/EPCX.c +++ /dev/null @@ -1,48 +0,0 @@ -/*- - * Copyright (c) 2001 Brian Somers <brian@Awfulhak.org> - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include <sys/param.h> -#include <sys/conf.h> -#include <sys/kernel.h> -#include <sys/module.h> - -#include <dev/digi/EPCX.bios.h> -#include <dev/digi/EPCX.fepos.h> -#include <dev/digi/digi_mod.h> - -struct digi_mod digi_mod_EPCX = { - DIGI_MOD_VERSION, - { EPCX_bios, sizeof(EPCX_bios) }, - { EPCX_fepos, sizeof(EPCX_fepos) }, - { NULL, 0 } -}; - -MODULE_VERSION(digi_EPCX, 1); -DEV_MODULE(digi_EPCX, 0, 0); diff --git a/sys/dev/digi/EPCX.fepos.h b/sys/dev/digi/EPCX.fepos.h deleted file mode 100644 index ba4de30446ec..000000000000 --- a/sys/dev/digi/EPCX.fepos.h +++ /dev/null @@ -1,2847 +0,0 @@ -/*- - * Copyright (c) 2001 Brian Somers <brian@Awfulhak.org> - * based on work by Slawa Olhovchenkov - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - */ - -static const u_char EPCX_fepos[] = { - 0x4f, 0x53, 0x8f, 0xe5, 0x69, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xd2, - 0xe1, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x40, 0x28, 0x23, 0x29, 0x66, 0x78, 0x66, - 0x65, 0x70, 0x2e, 0x62, 0x69, 0x6e, 0x20, 0x20, 0x20, 0x20, 0x20, 0x32, 0x2e, - 0x33, 0x2e, 0x32, 0x20, 0x20, 0x30, 0x36, 0x2f, 0x30, 0x32, 0x2f, 0x39, 0x37, - 0x00, 0x40, 0x28, 0x23, 0x29, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, - 0x74, 0x20, 0x28, 0x43, 0x29, 0x20, 0x31, 0x39, 0x39, 0x32, 0x2c, 0x20, 0x44, - 0x49, 0x47, 0x49, 0x20, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x61, 0x6c, 0x2e, 0x20, 0x41, 0x6c, 0x6c, 0x20, 0x52, 0x69, 0x67, - 0x68, 0x74, 0x73, 0x20, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x2e, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xa3, 0x01, 0x3c, 0x28, 0x02, 0x22, 0xac, 0x00, 0xa3, 0x02, 0x3c, - 0x20, 0x02, 0x42, 0x34, 0x0c, 0x00, 0x43, 0xac, 0x00, 0x60, 0x03, 0x40, 0x00, - 0x60, 0x80, 0x40, 0x00, 0x00, 0x43, 0xac, 0x00, 0x68, 0x03, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x43, 0xac, 0x10, 0x00, 0x44, 0xac, 0x14, 0x00, 0x45, - 0xac, 0x18, 0x00, 0x46, 0xac, 0x1c, 0x00, 0x47, 0xac, 0x20, 0x00, 0x48, 0xac, - 0x24, 0x00, 0x49, 0xac, 0x28, 0x00, 0x4a, 0xac, 0x2c, 0x00, 0x4b, 0xac, 0x30, - 0x00, 0x4c, 0xac, 0x34, 0x00, 0x4d, 0xac, 0x38, 0x00, 0x4e, 0xac, 0x3c, 0x00, - 0x4f, 0xac, 0x40, 0x00, 0x50, 0xac, 0x44, 0x00, 0x51, 0xac, 0x48, 0x00, 0x52, - 0xac, 0x4c, 0x00, 0x53, 0xac, 0x50, 0x00, 0x54, 0xac, 0x54, 0x00, 0x55, 0xac, - 0x58, 0x00, 0x56, 0xac, 0x5c, 0x00, 0x57, 0xac, 0x60, 0x00, 0x58, 0xac, 0x64, - 0x00, 0x59, 0xac, 0x68, 0x00, 0x5a, 0xac, 0x6c, 0x00, 0x5b, 0xac, 0x70, 0x00, - 0x5c, 0xac, 0x74, 0x00, 0x5d, 0xac, 0x78, 0x00, 0x5e, 0xac, 0x7c, 0x00, 0x5f, - 0xac, 0x10, 0x00, 0x08, 0x24, 0x00, 0xa3, 0x09, 0x3c, 0x00, 0x02, 0x29, 0x35, - 0x00, 0x00, 0x8a, 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, 0x11, 0x00, - 0x00, 0x2a, 0xa1, 0x01, 0x00, 0x84, 0x24, 0x01, 0x00, 0x29, 0x25, 0xff, 0xff, - 0x08, 0x25, 0xf8, 0xff, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x01, - 0x3c, 0x10, 0x02, 0x25, 0xac, 0x00, 0xa3, 0x01, 0x3c, 0x14, 0x02, 0x3f, 0xac, - 0x00, 0xa3, 0x01, 0x3c, 0x18, 0x02, 0x3d, 0xac, 0x02, 0x00, 0x08, 0x24, 0x00, - 0xa3, 0x01, 0x3c, 0x10, 0x0c, 0x28, 0xac, 0x00, 0xa3, 0x1d, 0x3c, 0x00, 0x04, - 0xbd, 0x37, 0xe4, 0x1b, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x08, - 0x3c, 0x10, 0x0c, 0x08, 0x8d, 0x01, 0x00, 0x01, 0x24, 0x25, 0x00, 0x01, 0x11, - 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0xda, - 0x00, 0x1e, 0x24, 0x00, 0xa3, 0x01, 0x3c, 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, - 0x1e, 0x24, 0x00, 0x10, 0x08, 0x3c, 0x00, 0x60, 0x88, 0x40, 0x01, 0x80, 0x1c, - 0x3c, 0x30, 0x12, 0x9c, 0x27, 0xeb, 0x00, 0x1e, 0x24, 0x00, 0xa3, 0x01, 0x3c, - 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0x01, 0x00, 0x11, 0x04, 0x00, - 0x00, 0x00, 0x00, 0x06, 0x01, 0x1e, 0x24, 0x00, 0xa3, 0x01, 0x3c, 0x10, 0x00, - 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0x00, 0x80, 0x05, 0x3c, 0x00, 0x10, 0xa5, - 0x24, 0x01, 0x80, 0x06, 0x3c, 0xc0, 0x93, 0xc6, 0x24, 0x00, 0x80, 0x04, 0x3c, - 0xe4, 0x11, 0x84, 0x24, 0x23, 0x20, 0xe4, 0x03, 0x21, 0x20, 0x86, 0x00, 0xfc, - 0xff, 0x84, 0x24, 0xfc, 0xff, 0xc6, 0x24, 0x00, 0x00, 0x88, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xc8, 0xac, 0x2b, 0x08, 0xa6, 0x00, 0xf9, 0xff, 0x20, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x01, 0x3c, 0xfe, 0x00, 0x21, 0x34, 0x24, 0x40, 0x01, 0x01, 0x00, - 0x60, 0x88, 0x40, 0x00, 0xa3, 0x01, 0x3c, 0x0f, 0x0c, 0x20, 0xa0, 0x5a, 0x01, - 0x1e, 0x24, 0x00, 0xa3, 0x01, 0x3c, 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, - 0x24, 0x00, 0x80, 0x1f, 0x3c, 0x84, 0x12, 0xff, 0x27, 0x00, 0x80, 0x04, 0x3c, - 0x70, 0x17, 0x84, 0x24, 0x00, 0xa0, 0x01, 0x3c, 0x25, 0x20, 0x81, 0x00, 0x08, - 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa1, 0x01, 0x1e, 0x24, 0x00, 0xa3, - 0x01, 0x3c, 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0x01, 0x80, 0x1d, - 0x3c, 0xd0, 0x9b, 0xbd, 0x27, 0x00, 0x00, 0x1e, 0x24, 0x00, 0xa3, 0x01, 0x3c, - 0x10, 0x0c, 0x20, 0xac, 0x3f, 0x00, 0x01, 0x3c, 0xff, 0xff, 0x21, 0x34, 0x24, - 0x70, 0xc1, 0x01, 0x00, 0x80, 0x01, 0x3c, 0x25, 0x70, 0xc1, 0x01, 0x00, 0x80, - 0x04, 0x3c, 0x4a, 0x0e, 0x00, 0x0c, 0x00, 0x10, 0x84, 0x24, 0x6b, 0x04, 0x00, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0xff, 0xbd, 0x27, 0x10, - 0x00, 0xa1, 0xaf, 0x14, 0x00, 0xa2, 0xaf, 0x18, 0x00, 0xa3, 0xaf, 0x1c, 0x00, - 0xa4, 0xaf, 0x20, 0x00, 0xa5, 0xaf, 0x24, 0x00, 0xa6, 0xaf, 0x28, 0x00, 0xa7, - 0xaf, 0x2c, 0x00, 0xa8, 0xaf, 0x30, 0x00, 0xa9, 0xaf, 0x34, 0x00, 0xaa, 0xaf, - 0x38, 0x00, 0xab, 0xaf, 0x3c, 0x00, 0xac, 0xaf, 0x40, 0x00, 0xad, 0xaf, 0x44, - 0x00, 0xae, 0xaf, 0x48, 0x00, 0xaf, 0xaf, 0x4c, 0x00, 0xb8, 0xaf, 0x50, 0x00, - 0xb9, 0xaf, 0x58, 0x00, 0xbe, 0xaf, 0x5c, 0x00, 0xbf, 0xaf, 0x00, 0x70, 0x08, - 0x40, 0x12, 0x48, 0x00, 0x00, 0x10, 0x50, 0x00, 0x00, 0x54, 0x00, 0xa8, 0xaf, - 0x60, 0x00, 0xa9, 0xaf, 0x64, 0x00, 0xaa, 0xaf, 0x00, 0x68, 0x05, 0x40, 0x00, - 0x60, 0x06, 0x40, 0x7c, 0x00, 0xa4, 0x30, 0x66, 0x00, 0x80, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x68, 0x00, 0xa6, 0xaf, 0x24, 0x10, 0xa6, 0x00, 0x00, 0xff, 0x42, - 0x30, 0x00, 0x20, 0x44, 0x30, 0x48, 0x00, 0x80, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x48, 0x30, 0x3b, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x44, 0x30, 0x4d, 0x00, 0x80, 0x14, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0xa6, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x86, 0x40, 0x00, 0x68, 0x05, 0x40, - 0x00, 0x00, 0x00, 0x00, 0x24, 0x10, 0xa6, 0x00, 0x00, 0xff, 0x42, 0x30, 0xec, - 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0xa8, 0x8f, 0x60, 0x00, - 0xa9, 0x8f, 0x64, 0x00, 0xaa, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x88, - 0x40, 0x13, 0x00, 0x20, 0x01, 0x11, 0x00, 0x40, 0x01, 0x14, 0x00, 0xa2, 0x8f, - 0x18, 0x00, 0xa3, 0x8f, 0x1c, 0x00, 0xa4, 0x8f, 0x20, 0x00, 0xa5, 0x8f, 0x24, - 0x00, 0xa6, 0x8f, 0x28, 0x00, 0xa7, 0x8f, 0x2c, 0x00, 0xa8, 0x8f, 0x30, 0x00, - 0xa9, 0x8f, 0x34, 0x00, 0xaa, 0x8f, 0x38, 0x00, 0xab, 0x8f, 0x3c, 0x00, 0xac, - 0x8f, 0x40, 0x00, 0xad, 0x8f, 0x44, 0x00, 0xae, 0x8f, 0x48, 0x00, 0xaf, 0x8f, - 0x4c, 0x00, 0xb8, 0x8f, 0x50, 0x00, 0xb9, 0x8f, 0x58, 0x00, 0xbe, 0x8f, 0x5c, - 0x00, 0xbf, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0xba, 0x8f, 0x10, 0x00, - 0xa1, 0x8f, 0x6c, 0x00, 0xbd, 0x27, 0x08, 0x00, 0x40, 0x03, 0x10, 0x00, 0x00, - 0x42, 0xa4, 0x89, 0x88, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x26, 0x40, 0x06, 0x01, - 0x01, 0xff, 0x08, 0x31, 0x26, 0x30, 0xc8, 0x00, 0x00, 0x00, 0x09, 0x24, 0x00, - 0x68, 0x89, 0x40, 0x00, 0x60, 0x86, 0x40, 0x38, 0x0e, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0xcc, 0xff, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x89, 0x88, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x26, 0x40, 0x06, 0x01, 0x01, 0xff, 0x08, 0x31, - 0x26, 0x30, 0xc8, 0x00, 0x00, 0x60, 0x86, 0x40, 0xd0, 0x1d, 0x00, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0xc2, 0xff, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, - 0x08, 0x3c, 0x84, 0xac, 0x08, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x26, 0x40, 0x06, - 0x01, 0x01, 0xff, 0x08, 0x31, 0x26, 0x30, 0xc8, 0x00, 0x00, 0x60, 0x86, 0x40, - 0x41, 0x0e, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xb7, 0xff, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x80, 0x08, 0x3c, 0x80, 0xac, 0x08, 0x8d, 0x00, 0x00, - 0x00, 0x00, 0x26, 0x40, 0x06, 0x01, 0x01, 0xff, 0x08, 0x31, 0x26, 0x30, 0xc8, - 0x00, 0x00, 0x00, 0x09, 0x24, 0x00, 0x68, 0x89, 0x40, 0x00, 0x60, 0x86, 0x40, - 0x7a, 0x21, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xff, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x80, 0x04, 0x3c, 0x20, 0x8a, 0x84, 0x24, 0x24, 0x04, - 0x00, 0x0c, 0x74, 0x01, 0x05, 0x24, 0xae, 0xff, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x00, 0xec, 0xff, 0xbd, 0x27, 0x08, 0x00, 0xa1, 0xaf, 0x00, 0x70, 0x1a, 0x40, - 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xba, 0xaf, 0x10, 0x00, 0xbf, 0xaf, 0x01, - 0x80, 0x04, 0x3c, 0x20, 0x8a, 0x84, 0x24, 0x24, 0x04, 0x00, 0x0c, 0x96, 0x01, - 0x05, 0x24, 0x10, 0x00, 0xbf, 0x8f, 0x0c, 0x00, 0xba, 0x8f, 0x08, 0x00, 0xa1, - 0x8f, 0x0c, 0x00, 0xbd, 0x27, 0x08, 0x00, 0x40, 0x03, 0x10, 0x00, 0x00, 0x42, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x01, 0x3c, 0x25, - 0x20, 0x81, 0x00, 0x00, 0x20, 0x01, 0x3c, 0x25, 0x28, 0xa1, 0x00, 0x05, 0x00, - 0xc1, 0x2c, 0x74, 0x00, 0x20, 0x14, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x82, - 0x30, 0x03, 0x00, 0xa3, 0x30, 0x23, 0x38, 0x43, 0x00, 0x49, 0x00, 0xe0, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x20, 0x82, 0x00, 0x05, 0x00, 0xe0, 0x1c, 0xc0, - 0x70, 0x02, 0x00, 0x00, 0x00, 0x88, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, - 0x00, 0x10, 0x06, 0x48, 0xc8, 0x01, 0x00, 0x00, 0x89, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x06, 0x48, 0xc9, 0x01, 0x22, 0x78, 0x0e, 0x00, 0x04, 0x00, 0x88, 0x8c, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x50, 0xe8, 0x01, 0x25, 0x48, 0x2a, 0x01, 0x04, - 0x00, 0x84, 0x24, 0x00, 0x00, 0xa9, 0xb8, 0x23, 0x28, 0xa3, 0x00, 0x21, 0x30, - 0xc3, 0x00, 0xec, 0xff, 0xc6, 0x24, 0xc0, 0x70, 0x07, 0x00, 0x1a, 0x00, 0xc0, - 0x18, 0x22, 0x78, 0x0e, 0x00, 0x04, 0x00, 0x89, 0x8c, 0x06, 0x40, 0xc8, 0x01, - 0x08, 0x00, 0x8a, 0x8c, 0x04, 0x60, 0xe9, 0x01, 0x0c, 0x00, 0x8b, 0x8c, 0x25, - 0x60, 0x88, 0x01, 0x10, 0x00, 0x88, 0x8c, 0x04, 0x00, 0xac, 0xac, 0x06, 0x48, - 0xc9, 0x01, 0x04, 0x60, 0xea, 0x01, 0x25, 0x60, 0x89, 0x01, 0x08, 0x00, 0xac, - 0xac, 0x06, 0x50, 0xca, 0x01, 0x04, 0x60, 0xeb, 0x01, 0x25, 0x60, 0x8a, 0x01, - 0x0c, 0x00, 0xac, 0xac, 0x06, 0x58, 0xcb, 0x01, 0x04, 0x60, 0xe8, 0x01, 0x25, - 0x60, 0x8b, 0x01, 0x10, 0x00, 0xac, 0xac, 0x10, 0x00, 0x84, 0x24, 0x10, 0x00, - 0xa5, 0x24, 0xf0, 0xff, 0xc6, 0x24, 0xe8, 0xff, 0xc0, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0xc6, 0x24, 0x0c, 0x00, 0xc0, 0x18, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x48, 0xc8, 0x01, 0x04, 0x00, 0x88, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x50, 0xe8, 0x01, 0x25, 0x50, 0x49, 0x01, 0x04, 0x00, 0xaa, 0xac, 0x04, 0x00, - 0x84, 0x24, 0x04, 0x00, 0xa5, 0x24, 0xfc, 0xff, 0xc6, 0x24, 0xf6, 0xff, 0xc0, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x89, 0x8c, 0x06, 0x40, 0xc8, 0x01, - 0x04, 0x48, 0xe9, 0x01, 0x25, 0x40, 0x09, 0x01, 0x22, 0x48, 0x06, 0x00, 0xc0, - 0x48, 0x09, 0x00, 0x04, 0x40, 0x28, 0x01, 0x21, 0x28, 0xa6, 0x00, 0x08, 0x00, - 0xe0, 0x03, 0x07, 0x00, 0xa8, 0xa8, 0x00, 0x00, 0x88, 0x98, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xa8, 0xb8, 0x23, 0x28, 0xa3, 0x00, 0x23, 0x20, 0x82, 0x00, - 0x21, 0x30, 0xc2, 0x00, 0xec, 0xff, 0xc6, 0x24, 0x0e, 0x00, 0xc0, 0x18, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x89, 0x8c, 0x08, 0x00, 0x8a, 0x8c, 0x0c, 0x00, - 0x8b, 0x8c, 0x10, 0x00, 0x8c, 0x8c, 0x04, 0x00, 0xa9, 0xac, 0x10, 0x00, 0x84, - 0x24, 0x08, 0x00, 0xaa, 0xac, 0xf0, 0xff, 0xc6, 0x24, 0x0c, 0x00, 0xab, 0xac, - 0x10, 0x00, 0xac, 0xac, 0x10, 0x00, 0xa5, 0x24, 0xf4, 0xff, 0xc0, 0x1c, 0x00, - 0x00, 0x00, 0x00, 0x0c, 0x00, 0xc6, 0x24, 0x09, 0x00, 0xc0, 0x18, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x88, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xa8, - 0xac, 0x04, 0x00, 0x84, 0x24, 0x04, 0x00, 0xa5, 0x24, 0xfc, 0xff, 0xc6, 0x24, - 0xf9, 0xff, 0xc0, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, 0x86, 0x00, 0x07, - 0x00, 0x88, 0x88, 0x21, 0x28, 0xa6, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x07, 0x00, - 0xa8, 0xa8, 0x09, 0x00, 0xc0, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xa0, 0x01, 0x00, 0xa5, 0x24, - 0x01, 0x00, 0x84, 0x24, 0xff, 0xff, 0xc6, 0x24, 0xf9, 0xff, 0xc0, 0x1c, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x1e, 0x24, 0x00, 0xa3, 0x01, - 0x3c, 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0x00, 0x80, 0x08, 0x3c, - 0x98, 0x17, 0x08, 0x25, 0x00, 0xa0, 0x01, 0x3c, 0x25, 0x40, 0x01, 0x01, 0x08, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x04, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x05, 0x3c, 0x00, 0x60, 0x85, 0x40, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x09, 0x3c, 0x01, 0x00, 0x01, 0x3c, - 0x23, 0x40, 0x21, 0x01, 0x03, 0x00, 0x00, 0xa1, 0x04, 0x00, 0x08, 0x25, 0xfd, - 0xff, 0x09, 0x15, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x05, 0x3c, 0x00, 0x60, - 0x85, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x09, - 0x3c, 0x01, 0x00, 0x01, 0x3c, 0x23, 0x40, 0x21, 0x01, 0x03, 0x00, 0x00, 0xa1, - 0x04, 0x00, 0x08, 0x25, 0xfd, 0xff, 0x09, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x84, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x40, 0xff, 0xff, 0x08, - 0x3c, 0xff, 0x3f, 0x08, 0x35, 0x24, 0x20, 0x88, 0x00, 0x00, 0x10, 0x84, 0x40, - 0x01, 0x80, 0x08, 0x3c, 0xc0, 0x93, 0x08, 0x25, 0x01, 0x80, 0x09, 0x3c, 0x80, - 0xe0, 0x29, 0x25, 0xfc, 0xff, 0x01, 0x24, 0x24, 0x48, 0x21, 0x01, 0xfc, 0xff, - 0x01, 0x24, 0x24, 0x40, 0x01, 0x01, 0x00, 0x00, 0x00, 0xad, 0x04, 0x00, 0x08, - 0x25, 0xfd, 0xff, 0x09, 0x15, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xe0, 0x03, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x02, 0x40, 0xff, 0xff, 0x01, 0x3c, 0xfe, - 0x00, 0x21, 0x34, 0x25, 0x20, 0x81, 0x00, 0x24, 0x40, 0x44, 0x00, 0x00, 0x60, - 0x88, 0x40, 0x01, 0xff, 0x42, 0x30, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x60, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x26, 0x40, 0x44, 0x00, - 0x01, 0xff, 0x08, 0x31, 0x26, 0x40, 0x02, 0x01, 0x00, 0x60, 0x88, 0x40, 0x08, - 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x08, 0x40, 0x00, 0x00, - 0x00, 0x00, 0xfe, 0xff, 0x01, 0x24, 0x24, 0x48, 0x01, 0x01, 0x00, 0x60, 0x89, - 0x40, 0x00, 0x68, 0x02, 0x40, 0x00, 0x03, 0x84, 0x30, 0x25, 0x18, 0x44, 0x00, - 0x00, 0x68, 0x83, 0x40, 0x00, 0x60, 0x88, 0x40, 0x24, 0x10, 0x44, 0x00, 0x08, - 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x08, 0x40, 0x00, 0x03, - 0x84, 0x30, 0xfe, 0xff, 0x01, 0x24, 0x24, 0x48, 0x01, 0x01, 0x00, 0x60, 0x89, - 0x40, 0x00, 0x68, 0x02, 0x40, 0x27, 0x18, 0x80, 0x00, 0x24, 0x18, 0x62, 0x00, - 0x00, 0x68, 0x83, 0x40, 0x00, 0x60, 0x88, 0x40, 0x24, 0x10, 0x44, 0x00, 0x08, - 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x08, 0x3c, 0x00, 0x60, - 0x88, 0x40, 0xc0, 0xbf, 0x08, 0x3c, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x60, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x09, 0x3c, - 0xfe, 0x00, 0x29, 0x35, 0x00, 0x00, 0x00, 0x00, 0x24, 0x40, 0x09, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x25, 0x40, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, - 0x88, 0x40, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x03, 0x3c, 0x25, 0x18, 0x83, 0x00, - 0x0a, 0x00, 0x60, 0xa4, 0x0c, 0x00, 0x60, 0xa4, 0x12, 0x00, 0x60, 0xa4, 0x14, - 0x00, 0x60, 0xa4, 0x18, 0x00, 0x80, 0xa4, 0x1a, 0x00, 0x80, 0xa4, 0xff, 0xff, - 0x02, 0x34, 0x1c, 0x00, 0x82, 0xa4, 0x20, 0x00, 0x60, 0xa4, 0x22, 0x00, 0x60, - 0xa4, 0x28, 0x00, 0x80, 0xa4, 0x2a, 0x00, 0x80, 0xa4, 0x33, 0x04, 0x02, 0x24, - 0x2c, 0x00, 0x82, 0xa4, 0xee, 0x6f, 0x02, 0x24, 0x2e, 0x00, 0x82, 0xa4, 0x4b, - 0x00, 0x80, 0xa0, 0x01, 0x00, 0x02, 0x24, 0x4c, 0x00, 0x62, 0xa0, 0x4d, 0x00, - 0x62, 0xa0, 0x4e, 0x00, 0x62, 0xa0, 0x4f, 0x00, 0x60, 0xa0, 0x54, 0x00, 0x60, - 0xa0, 0xff, 0x00, 0x02, 0x24, 0x56, 0x00, 0x62, 0xa0, 0x57, 0x00, 0x60, 0xa0, - 0x58, 0x00, 0x60, 0xa0, 0x59, 0x00, 0x60, 0xa0, 0x5a, 0x00, 0x60, 0xa0, 0x5b, - 0x00, 0x60, 0xa0, 0x11, 0x00, 0x02, 0x24, 0x5c, 0x00, 0x82, 0xa0, 0x13, 0x00, - 0x02, 0x24, 0x5d, 0x00, 0x82, 0xa0, 0x16, 0x00, 0x02, 0x24, 0x5e, 0x00, 0x82, - 0xa0, 0x5f, 0x00, 0x80, 0xa0, 0x64, 0x00, 0x80, 0xa0, 0x68, 0x00, 0x80, 0xa0, - 0x6c, 0x00, 0x80, 0xac, 0x10, 0x00, 0x02, 0x24, 0x08, 0x00, 0xe0, 0x03, 0x50, - 0x00, 0x62, 0xa4, 0xe8, 0xff, 0xbd, 0x27, 0x14, 0x00, 0xbf, 0xaf, 0x10, 0x00, - 0xb0, 0xaf, 0x21, 0x80, 0x80, 0x00, 0x48, 0x00, 0x04, 0x92, 0x65, 0x00, 0x03, - 0x92, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x03, 0x00, 0x21, 0x10, 0x43, 0x00, - 0x80, 0x10, 0x02, 0x00, 0x23, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x01, - 0x80, 0x03, 0x3c, 0x21, 0x18, 0x62, 0x00, 0x28, 0x9f, 0x63, 0x8c, 0x06, 0x00, - 0x02, 0x24, 0x06, 0x00, 0x62, 0x14, 0x09, 0x00, 0x82, 0x28, 0x08, 0x00, 0x82, - 0x28, 0x10, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x9a, 0x06, 0x00, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x54, - 0x06, 0x00, 0x0c, 0x21, 0x20, 0x00, 0x02, 0x48, 0x00, 0x03, 0x92, 0x08, 0x00, - 0x02, 0x24, 0x06, 0x00, 0x62, 0x14, 0x00, 0x20, 0x02, 0x3c, 0x25, 0x10, 0x02, - 0x02, 0x20, 0x00, 0x03, 0x24, 0x50, 0x00, 0x43, 0xa4, 0x0d, 0x00, 0x02, 0x24, - 0x2c, 0x00, 0x02, 0xa6, 0x14, 0x00, 0xbf, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, - 0x00, 0xe0, 0x03, 0x18, 0x00, 0xbd, 0x27, 0xe8, 0xff, 0xbd, 0x27, 0x14, 0x00, - 0xbf, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x80, 0x80, 0x00, 0x00, 0x20, 0x02, - 0x3c, 0x25, 0x38, 0x02, 0x02, 0x1f, 0x00, 0xa2, 0x2c, 0xac, 0x00, 0x40, 0x10, - 0x80, 0x10, 0x05, 0x00, 0x01, 0x80, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0x30, - 0x8a, 0x22, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1a, 0x00, 0x06, 0xa6, 0x2e, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x00, 0x42, 0x34, 0x5f, 0x07, 0x00, 0x08, 0x2e, 0x00, 0x02, 0xa6, - 0x1c, 0x00, 0x06, 0xa6, 0x2e, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x42, 0x34, 0x5f, 0x07, 0x00, 0x08, 0x2e, 0x00, 0x02, 0xa6, 0x0a, 0x00, - 0xe2, 0x94, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x30, 0x0c, 0x00, 0xe3, - 0x94, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x63, 0x30, 0x23, 0x20, 0x43, 0x00, - 0x0e, 0x00, 0x03, 0x96, 0x00, 0x00, 0x00, 0x00, 0x24, 0x20, 0x83, 0x00, 0x23, - 0x10, 0x46, 0x00, 0x24, 0x10, 0x43, 0x00, 0x23, 0x20, 0x82, 0x00, 0x09, 0x00, - 0x80, 0x18, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, - 0x00, 0x52, 0x00, 0x02, 0xa6, 0x0e, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, - 0x24, 0x10, 0xc2, 0x00, 0xdf, 0x06, 0x00, 0x08, 0x0c, 0x00, 0xe2, 0xa4, 0x78, - 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x44, 0x00, 0x52, 0x00, - 0x02, 0xa6, 0x2e, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x42, - 0x34, 0x5f, 0x07, 0x00, 0x08, 0x2e, 0x00, 0x02, 0xa6, 0x64, 0x00, 0x02, 0x92, - 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x42, 0x34, 0x57, 0x07, 0x00, 0x08, 0x7f, - 0x00, 0x42, 0x30, 0x64, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, - 0x42, 0x34, 0x57, 0x07, 0x00, 0x08, 0xbf, 0x00, 0x42, 0x30, 0x5a, 0x00, 0xe6, - 0xa0, 0x03, 0x12, 0x06, 0x00, 0x5b, 0x00, 0xe2, 0xa0, 0x2e, 0x00, 0x02, 0x96, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x42, 0x34, 0x5f, 0x07, 0x00, 0x08, 0x2e, - 0x00, 0x02, 0xa6, 0x01, 0x00, 0x02, 0x24, 0x4b, 0x00, 0x02, 0xa2, 0xff, 0xff, - 0x02, 0x34, 0x0a, 0x00, 0xc2, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x02, - 0x8e, 0x04, 0x00, 0xc0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x46, 0x00, - 0x05, 0x07, 0x00, 0x08, 0x6c, 0x00, 0x02, 0xae, 0x19, 0x00, 0x42, 0x24, 0x05, - 0x07, 0x00, 0x08, 0x6c, 0x00, 0x02, 0xae, 0x6c, 0x00, 0x06, 0xae, 0x2e, 0x00, - 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x42, 0x34, 0x5f, 0x07, 0x00, - 0x08, 0x2e, 0x00, 0x02, 0xa6, 0x03, 0x12, 0x06, 0x00, 0x27, 0x10, 0x02, 0x00, - 0x68, 0x00, 0x03, 0x92, 0x00, 0x00, 0x00, 0x00, 0x24, 0x18, 0x62, 0x00, 0x25, - 0x18, 0x66, 0x00, 0x68, 0x00, 0x03, 0xa2, 0x2e, 0x00, 0x02, 0x96, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x42, 0x34, 0x5f, 0x07, 0x00, 0x08, 0x2e, 0x00, 0x02, - 0xa6, 0x28, 0x00, 0x06, 0xa6, 0x2e, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, - 0x40, 0x00, 0x42, 0x34, 0x5f, 0x07, 0x00, 0x08, 0x2e, 0x00, 0x02, 0xa6, 0x5c, - 0x00, 0x06, 0xa2, 0x03, 0x12, 0x06, 0x00, 0x5d, 0x00, 0x02, 0xa2, 0x2e, 0x00, - 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x42, 0x34, 0x5f, 0x07, 0x00, - 0x08, 0x2e, 0x00, 0x02, 0xa6, 0x5f, 0x07, 0x00, 0x08, 0x18, 0x00, 0x06, 0xa6, - 0x64, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x42, 0x34, 0x57, - 0x07, 0x00, 0x08, 0xdf, 0x00, 0x42, 0x30, 0x64, 0x00, 0x02, 0x92, 0x00, 0x00, - 0x00, 0x00, 0x20, 0x00, 0x42, 0x34, 0x57, 0x07, 0x00, 0x08, 0xef, 0x00, 0x42, - 0x30, 0x54, 0x06, 0x00, 0x0c, 0x21, 0x20, 0x00, 0x02, 0x64, 0x00, 0x02, 0x92, - 0x00, 0x00, 0x00, 0x00, 0x57, 0x07, 0x00, 0x08, 0x01, 0x00, 0x42, 0x34, 0x2a, - 0x00, 0x06, 0xa6, 0x2e, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, - 0x42, 0x34, 0x5f, 0x07, 0x00, 0x08, 0x2e, 0x00, 0x02, 0xa6, 0x03, 0x12, 0x06, - 0x00, 0x27, 0x10, 0x02, 0x00, 0x5f, 0x00, 0x03, 0x92, 0x00, 0x00, 0x00, 0x00, - 0x24, 0x18, 0x62, 0x00, 0x25, 0x18, 0x66, 0x00, 0x5f, 0x00, 0x03, 0xa2, 0x2e, - 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x42, 0x34, 0x5f, 0x07, - 0x00, 0x08, 0x2e, 0x00, 0x02, 0xa6, 0x2c, 0x00, 0x06, 0xa6, 0x2e, 0x00, 0x02, - 0x96, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x42, 0x34, 0x5f, 0x07, 0x00, 0x08, - 0x2e, 0x00, 0x02, 0xa6, 0x5e, 0x00, 0x06, 0xa2, 0x2e, 0x00, 0x02, 0x96, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x42, 0x34, 0x5f, 0x07, 0x00, 0x08, 0x2e, 0x00, - 0x02, 0xa6, 0x64, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x42, - 0x34, 0x64, 0x00, 0x02, 0xa2, 0x2e, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x42, 0x34, 0x5f, 0x07, 0x00, 0x08, 0x2e, 0x00, 0x02, 0xa6, 0x60, - 0x07, 0x00, 0x08, 0x21, 0x10, 0x00, 0x00, 0x01, 0x00, 0x02, 0x24, 0x14, 0x00, - 0xbf, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x18, 0x00, 0xbd, - 0x27, 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x48, 0x00, 0x87, 0x90, - 0x65, 0x00, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x03, 0x00, 0x21, - 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x23, 0x10, 0x43, 0x00, 0x80, 0x10, - 0x02, 0x00, 0x01, 0x80, 0x03, 0x3c, 0x21, 0x18, 0x62, 0x00, 0x28, 0x9f, 0x63, - 0x8c, 0x06, 0x00, 0x02, 0x24, 0x06, 0x00, 0x62, 0x14, 0x09, 0x00, 0xe2, 0x28, - 0x08, 0x00, 0xe2, 0x28, 0x05, 0x00, 0x40, 0x14, 0x01, 0x00, 0x02, 0x24, 0x7d, - 0x07, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x40, 0x10, 0x01, 0x00, - 0x02, 0x24, 0xa9, 0x06, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xbf, - 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, - 0xc8, 0xff, 0xbd, 0x27, 0x30, 0x00, 0xbf, 0xaf, 0x2c, 0x00, 0xb5, 0xaf, 0x28, - 0x00, 0xb4, 0xaf, 0x24, 0x00, 0xb3, 0xaf, 0x20, 0x00, 0xb2, 0xaf, 0x1c, 0x00, - 0xb1, 0xaf, 0x18, 0x00, 0xb0, 0xaf, 0x00, 0xa3, 0x02, 0x3c, 0x10, 0x0d, 0x42, - 0x34, 0x00, 0x00, 0x43, 0x94, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x71, 0x30, - 0x02, 0x00, 0x42, 0x94, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x50, 0x30, 0x41, - 0x00, 0x30, 0x12, 0x00, 0xa3, 0x13, 0x3c, 0x00, 0x04, 0x73, 0x36, 0x00, 0x83, - 0x15, 0x3c, 0x00, 0x10, 0xb5, 0x36, 0x00, 0xa3, 0x12, 0x3c, 0x18, 0x0d, 0x52, - 0x36, 0x00, 0xa3, 0x14, 0x3c, 0x10, 0x0d, 0x94, 0x36, 0x25, 0x10, 0x13, 0x02, - 0x03, 0x00, 0x43, 0x88, 0x00, 0x00, 0x43, 0x98, 0x00, 0x00, 0x00, 0x00, 0x13, - 0x00, 0xa3, 0xab, 0x10, 0x00, 0xa3, 0xbb, 0x11, 0x00, 0xa3, 0x93, 0x00, 0x00, - 0x00, 0x00, 0xc0, 0x11, 0x03, 0x00, 0x21, 0x20, 0x55, 0x00, 0x58, 0x92, 0x82, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x18, 0x62, 0x00, 0x12, 0x00, 0x60, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x65, 0x00, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, - 0x10, 0x03, 0x00, 0x21, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x23, 0x10, - 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x10, 0x00, 0xa5, 0x93, 0x01, 0x80, 0x01, - 0x3c, 0x21, 0x08, 0x22, 0x00, 0x10, 0x9f, 0x22, 0x8c, 0x12, 0x00, 0xa6, 0x97, - 0x00, 0x00, 0x00, 0x00, 0x09, 0xf8, 0x40, 0x00, 0x1f, 0x00, 0xa5, 0x30, 0x16, - 0x00, 0x40, 0x14, 0x04, 0x00, 0x02, 0x26, 0x00, 0x00, 0x42, 0x96, 0x00, 0x00, - 0x00, 0x00, 0xfc, 0x03, 0x49, 0x30, 0x02, 0x00, 0x44, 0x96, 0x00, 0x00, 0x00, - 0x00, 0xfc, 0x03, 0x84, 0x30, 0x00, 0xa3, 0x02, 0x3c, 0x00, 0x08, 0x42, 0x34, - 0x25, 0x10, 0x22, 0x01, 0x25, 0x18, 0x13, 0x02, 0x03, 0x00, 0x65, 0x88, 0x00, - 0x00, 0x65, 0x98, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x45, 0xa8, 0x00, 0x00, - 0x45, 0xb8, 0x04, 0x00, 0x22, 0x25, 0xfc, 0x03, 0x49, 0x30, 0x03, 0x00, 0x24, - 0x11, 0x04, 0x00, 0x02, 0x26, 0x00, 0x00, 0x49, 0xa6, 0x04, 0x00, 0x02, 0x26, - 0xfc, 0x03, 0x50, 0x30, 0x02, 0x00, 0x90, 0xa6, 0xc9, 0xff, 0x30, 0x16, 0x25, - 0x10, 0x13, 0x02, 0x30, 0x00, 0xbf, 0x8f, 0x2c, 0x00, 0xb5, 0x8f, 0x28, 0x00, - 0xb4, 0x8f, 0x24, 0x00, 0xb3, 0x8f, 0x20, 0x00, 0xb2, 0x8f, 0x1c, 0x00, 0xb1, - 0x8f, 0x18, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x38, 0x00, 0xbd, 0x27, - 0xc8, 0xff, 0xbd, 0x27, 0x30, 0x00, 0xbf, 0xaf, 0x2c, 0x00, 0xb7, 0xaf, 0x28, - 0x00, 0xb6, 0xaf, 0x24, 0x00, 0xb5, 0xaf, 0x20, 0x00, 0xb4, 0xaf, 0x1c, 0x00, - 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, - 0xaf, 0x21, 0x88, 0x80, 0x00, 0x21, 0xb0, 0xa0, 0x00, 0x21, 0x80, 0x00, 0x00, - 0x21, 0xa0, 0xc0, 0x02, 0x2e, 0x00, 0x32, 0x96, 0x00, 0x00, 0x00, 0x00, 0x78, - 0x00, 0x40, 0x12, 0x21, 0x98, 0x00, 0x00, 0x01, 0x80, 0x17, 0x3c, 0xb0, 0x8a, - 0xf7, 0x26, 0x00, 0x20, 0x02, 0x3c, 0xf5, 0x07, 0x00, 0x08, 0x25, 0xa8, 0x22, - 0x02, 0x02, 0x91, 0x12, 0x00, 0x04, 0x00, 0x73, 0x26, 0x0f, 0x00, 0x42, 0x32, - 0xfc, 0xff, 0x40, 0x10, 0x01, 0x00, 0x42, 0x32, 0x69, 0x00, 0x40, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x48, 0x00, 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x00, - 0x42, 0x24, 0x00, 0x00, 0x82, 0xa2, 0x0f, 0x00, 0x62, 0x2e, 0x5b, 0x00, 0x40, - 0x10, 0x01, 0x00, 0x93, 0xa2, 0x80, 0x10, 0x13, 0x00, 0x21, 0x10, 0x57, 0x00, - 0x00, 0x00, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x64, 0x00, 0x30, 0x92, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x08, - 0x00, 0x08, 0x64, 0x00, 0x20, 0xa2, 0x16, 0x00, 0x30, 0x96, 0x00, 0x00, 0x00, - 0x00, 0x5f, 0x08, 0x00, 0x08, 0x02, 0x00, 0x90, 0xa2, 0x1a, 0x00, 0x23, 0x96, - 0x00, 0x00, 0x00, 0x00, 0x16, 0x08, 0x00, 0x08, 0xc0, 0x1b, 0x03, 0x00, 0x1c, - 0x00, 0x23, 0x96, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x1b, 0x03, 0x00, 0x16, 0x00, - 0x22, 0x96, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x1a, 0x00, 0x62, - 0x00, 0x02, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x07, 0x00, - 0xff, 0xff, 0x01, 0x24, 0x04, 0x00, 0x41, 0x14, 0x00, 0x80, 0x01, 0x3c, 0x02, - 0x00, 0x61, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x06, 0x00, 0x12, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x08, 0x00, - 0x08, 0x02, 0x00, 0x90, 0xa2, 0x52, 0x00, 0x30, 0x96, 0x00, 0x00, 0x00, 0x00, - 0x5f, 0x08, 0x00, 0x08, 0x02, 0x00, 0x90, 0xa2, 0x2c, 0x00, 0x30, 0x96, 0x00, - 0x00, 0x00, 0x00, 0x5f, 0x08, 0x00, 0x08, 0x02, 0x00, 0x90, 0xa2, 0x28, 0x00, - 0x30, 0x96, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x08, 0x00, 0x08, 0x02, 0x00, 0x90, - 0xa2, 0x2a, 0x00, 0x30, 0x96, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x08, 0x00, 0x08, - 0x02, 0x00, 0x90, 0xa2, 0x68, 0x00, 0x30, 0x92, 0x00, 0x00, 0x00, 0x00, 0x5f, - 0x08, 0x00, 0x08, 0x02, 0x00, 0x90, 0xa2, 0x5f, 0x00, 0x30, 0x92, 0x00, 0x00, - 0x00, 0x00, 0x5f, 0x08, 0x00, 0x08, 0x02, 0x00, 0x90, 0xa2, 0x5e, 0x00, 0x30, - 0x92, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x08, 0x00, 0x08, 0x02, 0x00, 0x90, 0xa2, - 0x5d, 0x00, 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x02, 0x00, 0x5c, - 0x00, 0x23, 0x92, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x08, 0x00, 0x08, 0x21, 0x80, - 0x43, 0x00, 0x6c, 0x00, 0x30, 0x8e, 0x6c, 0x00, 0x20, 0xae, 0x78, 0x00, 0x22, - 0x96, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x5e, 0x08, 0x00, 0x08, - 0x78, 0x00, 0x22, 0xa6, 0x5b, 0x00, 0xa2, 0x92, 0x5a, 0x00, 0xa3, 0x92, 0x00, - 0x12, 0x02, 0x00, 0x5e, 0x08, 0x00, 0x08, 0x25, 0x80, 0x43, 0x00, 0x7c, 0x00, - 0x30, 0x96, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x08, 0x00, 0x08, 0x02, 0x00, 0x90, - 0xa2, 0x0c, 0x80, 0x84, 0x27, 0x24, 0x04, 0x00, 0x0c, 0x10, 0x02, 0x05, 0x24, - 0x02, 0x00, 0x90, 0xa2, 0x03, 0x12, 0x10, 0x00, 0x03, 0x00, 0x82, 0xa2, 0x04, - 0x00, 0x94, 0x26, 0x42, 0x90, 0x12, 0x00, 0x91, 0xff, 0x40, 0x16, 0x01, 0x00, - 0x73, 0x26, 0x23, 0x10, 0x96, 0x02, 0x30, 0x00, 0xbf, 0x8f, 0x2c, 0x00, 0xb7, - 0x8f, 0x28, 0x00, 0xb6, 0x8f, 0x24, 0x00, 0xb5, 0x8f, 0x20, 0x00, 0xb4, 0x8f, - 0x1c, 0x00, 0xb3, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, - 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x38, 0x00, 0xbd, 0x27, 0xe8, 0xff, - 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x48, 0x00, 0x86, 0x90, 0x65, 0x00, 0x83, - 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x03, 0x00, 0x21, 0x10, 0x43, 0x00, - 0x80, 0x10, 0x02, 0x00, 0x23, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x01, - 0x80, 0x03, 0x3c, 0x21, 0x18, 0x62, 0x00, 0x28, 0x9f, 0x63, 0x8c, 0x06, 0x00, - 0x02, 0x24, 0x06, 0x00, 0x62, 0x14, 0x09, 0x00, 0xc2, 0x28, 0x08, 0x00, 0xc2, - 0x28, 0x05, 0x00, 0x40, 0x14, 0x01, 0x00, 0x02, 0x24, 0x8a, 0x08, 0x00, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x40, 0x10, 0x01, 0x00, 0x02, 0x24, 0xdc, - 0x07, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xbf, 0x8f, 0x18, 0x00, - 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x78, 0xfe, 0xbd, - 0x27, 0x84, 0x01, 0xbf, 0xaf, 0x80, 0x01, 0xbe, 0xaf, 0x7c, 0x01, 0xb7, 0xaf, - 0x78, 0x01, 0xb6, 0xaf, 0x74, 0x01, 0xb5, 0xaf, 0x70, 0x01, 0xb4, 0xaf, 0x6c, - 0x01, 0xb3, 0xaf, 0x68, 0x01, 0xb2, 0xaf, 0x64, 0x01, 0xb1, 0xaf, 0x60, 0x01, - 0xb0, 0xaf, 0x10, 0x01, 0xa4, 0xaf, 0x18, 0x01, 0xa5, 0xaf, 0x28, 0x01, 0xa0, - 0xaf, 0x18, 0x01, 0xb2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x30, 0x46, 0x02, - 0x30, 0x01, 0xa6, 0xaf, 0x21, 0xf0, 0x00, 0x00, 0x20, 0x01, 0xa0, 0xaf, 0xc0, - 0x89, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x40, 0x10, 0x21, 0xb0, - 0x00, 0x00, 0x00, 0xa3, 0x02, 0x3c, 0x30, 0x0c, 0x42, 0x34, 0x00, 0x00, 0x42, - 0x90, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, - 0xac, 0x89, 0x82, 0x8f, 0x5c, 0x92, 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x23, - 0x10, 0x43, 0x00, 0xff, 0x3f, 0x03, 0x3c, 0xff, 0xff, 0x63, 0x34, 0x2b, 0x18, - 0x62, 0x00, 0x02, 0x00, 0x60, 0x14, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x89, 0x80, - 0xaf, 0xc0, 0x89, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x40, 0x14, - 0x10, 0x00, 0xb7, 0x27, 0x00, 0xa3, 0x04, 0x3c, 0x30, 0x0c, 0x84, 0x34, 0x00, - 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x40, 0x10, 0x10, 0x00, - 0xb7, 0x27, 0x02, 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x42, - 0x30, 0x10, 0x01, 0xab, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x63, 0x8d, - 0x00, 0x00, 0x00, 0x00, 0x45, 0x00, 0x43, 0x14, 0xf4, 0x00, 0x02, 0x24, 0x00, - 0x00, 0x42, 0xa2, 0xb3, 0x00, 0x02, 0x24, 0x01, 0x00, 0x42, 0xa2, 0xc3, 0x00, - 0x02, 0x24, 0x02, 0x00, 0x42, 0xa2, 0x95, 0x00, 0x02, 0x24, 0x03, 0x00, 0x42, - 0xa2, 0x04, 0x00, 0x52, 0x26, 0x08, 0x00, 0x82, 0x94, 0x00, 0x00, 0x00, 0x00, - 0x81, 0x00, 0x42, 0x2c, 0x02, 0x00, 0x40, 0x14, 0x80, 0x00, 0x02, 0x24, 0x08, - 0x00, 0x82, 0xa4, 0x00, 0xa3, 0x04, 0x3c, 0x30, 0x0c, 0x84, 0x34, 0x00, 0x00, - 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x42, 0x30, 0x02, 0x00, 0x03, - 0x24, 0x0e, 0x00, 0x43, 0x10, 0x00, 0xa3, 0x02, 0x3c, 0x00, 0x00, 0x82, 0x90, - 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x42, 0x30, 0x05, 0x00, 0x03, 0x24, 0x08, - 0x00, 0x43, 0x10, 0x00, 0xa3, 0x02, 0x3c, 0x00, 0x00, 0x82, 0x90, 0x00, 0x00, - 0x00, 0x00, 0xff, 0x00, 0x42, 0x30, 0x06, 0x00, 0x03, 0x24, 0x06, 0x00, 0x43, - 0x14, 0x21, 0x80, 0x00, 0x00, 0x00, 0xa3, 0x02, 0x3c, 0x30, 0x0c, 0x42, 0x34, - 0x08, 0x00, 0x42, 0x94, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x50, 0x30, 0x0a, - 0x00, 0x10, 0x26, 0x00, 0xa3, 0x04, 0x3c, 0x30, 0x0c, 0x84, 0x34, 0x21, 0x28, - 0x40, 0x02, 0x58, 0x05, 0x00, 0x0c, 0x21, 0x30, 0x00, 0x02, 0x10, 0x01, 0xac, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x82, 0x8d, 0x00, 0x00, 0x00, 0x00, - 0xc0, 0x89, 0x82, 0xaf, 0x04, 0x00, 0x82, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x70, - 0x00, 0x43, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x80, 0x10, 0x03, 0x00, 0x21, 0x10, - 0x43, 0x00, 0x40, 0x10, 0x02, 0x00, 0xac, 0x89, 0x83, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x21, 0x10, 0x43, 0x00, 0x5c, 0x92, 0x82, 0xaf, 0x21, 0x90, 0x50, 0x02, - 0x30, 0x01, 0xab, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0x4b, 0x02, 0x61, - 0x01, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xb7, 0x27, 0x10, 0x01, - 0xac, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x95, 0x8d, 0x40, 0x00, 0x82, - 0x8d, 0x00, 0x00, 0x00, 0x00, 0xac, 0x00, 0x40, 0x18, 0x21, 0x98, 0x00, 0x00, - 0x00, 0x00, 0xb1, 0x8e, 0x24, 0x00, 0xa2, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x9f, - 0x00, 0x40, 0x10, 0x21, 0xa0, 0x00, 0x00, 0xf0, 0xff, 0x6b, 0x26, 0x38, 0x01, - 0xab, 0xaf, 0x00, 0x20, 0x0c, 0x3c, 0x25, 0x30, 0x2c, 0x02, 0x0a, 0x00, 0xc2, - 0x94, 0x0c, 0x00, 0xc3, 0x94, 0xff, 0xff, 0x42, 0x30, 0x23, 0x10, 0x43, 0x00, - 0x0e, 0x00, 0x23, 0x96, 0x00, 0x00, 0x00, 0x00, 0x24, 0x28, 0x43, 0x00, 0x20, - 0x00, 0xa2, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, 0x18, 0x82, 0x02, 0x04, 0x80, - 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0x62, 0x00, 0x16, 0x00, 0x40, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x2b, 0x10, 0x62, 0x00, 0x11, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x80, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0xa4, 0x00, 0x0c, 0x00, - 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xc2, 0x94, 0x08, 0x80, 0x83, - 0x97, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x43, 0x00, 0x0e, 0x00, 0x23, 0x96, - 0x00, 0x00, 0x00, 0x00, 0x24, 0x10, 0x43, 0x00, 0x0a, 0x00, 0xc2, 0xa4, 0x0e, - 0x00, 0x22, 0x96, 0x00, 0x00, 0x00, 0x00, 0x24, 0x28, 0x44, 0x00, 0x1e, 0x00, - 0x24, 0x96, 0x78, 0x00, 0x22, 0x96, 0x7a, 0x00, 0x23, 0x96, 0x00, 0x00, 0x00, - 0x00, 0x23, 0x10, 0x43, 0x00, 0xff, 0xff, 0x42, 0x30, 0x23, 0x20, 0x82, 0x00, - 0x2b, 0x10, 0x85, 0x00, 0x02, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, - 0x28, 0x80, 0x00, 0x13, 0x00, 0xa0, 0x10, 0x09, 0x00, 0xa2, 0x2c, 0x05, 0x00, - 0x40, 0x14, 0x01, 0x00, 0xa2, 0x24, 0x00, 0x01, 0xa2, 0x2c, 0x02, 0x00, 0x40, - 0x14, 0x02, 0x00, 0xa2, 0x24, 0x03, 0x00, 0xa2, 0x24, 0x21, 0x28, 0x40, 0x00, - 0x00, 0x16, 0x13, 0x00, 0x00, 0x1c, 0x14, 0x00, 0x21, 0x10, 0x43, 0x00, 0x21, - 0x10, 0x45, 0x00, 0x00, 0x00, 0xe2, 0xae, 0x04, 0x00, 0xf7, 0x26, 0x01, 0x00, - 0xd6, 0x26, 0x20, 0x01, 0xab, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x58, 0x65, - 0x01, 0x20, 0x01, 0xab, 0xaf, 0x00, 0xa3, 0x02, 0x3c, 0x10, 0x0d, 0x42, 0x94, - 0x00, 0xa3, 0x03, 0x3c, 0x12, 0x0d, 0x63, 0x94, 0xff, 0xff, 0x42, 0x30, 0x0a, - 0x00, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x10, 0x3c, 0x10, 0x0d, - 0x10, 0x36, 0x81, 0x07, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x96, 0x02, 0x00, 0x03, 0x96, 0xff, 0xff, 0x42, 0x30, 0xfa, 0xff, 0x43, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x22, 0x96, 0x00, 0x00, 0x00, 0x00, 0x13, - 0x00, 0x40, 0x10, 0x00, 0x20, 0x0c, 0x3c, 0x06, 0x00, 0xd3, 0x13, 0x00, 0x00, - 0x00, 0x00, 0x38, 0x01, 0xac, 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, - 0xa2, 0x01, 0x00, 0x52, 0x26, 0x21, 0xf0, 0x60, 0x02, 0x08, 0x00, 0xa2, 0x8e, - 0x21, 0x20, 0x20, 0x02, 0x09, 0xf8, 0x40, 0x00, 0x21, 0x28, 0x40, 0x02, 0x21, - 0x90, 0x42, 0x02, 0x2e, 0x00, 0x20, 0xa6, 0x30, 0x01, 0xab, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x2b, 0x10, 0x4b, 0x02, 0xe7, 0x00, 0x40, 0x10, 0x00, 0x20, 0x0c, - 0x3c, 0x25, 0x10, 0x2c, 0x02, 0x12, 0x00, 0x43, 0x94, 0x14, 0x00, 0x42, 0x94, - 0xff, 0xff, 0x63, 0x30, 0x23, 0x28, 0x62, 0x00, 0x16, 0x00, 0x24, 0x96, 0x00, - 0x00, 0x00, 0x00, 0x24, 0x28, 0xa4, 0x00, 0x7c, 0x00, 0x22, 0x96, 0x7e, 0x00, - 0x23, 0x96, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0x43, 0x00, 0x00, 0x14, 0x02, - 0x00, 0x03, 0x14, 0x02, 0x00, 0x23, 0x10, 0x45, 0x00, 0x82, 0x20, 0x04, 0x00, - 0x2a, 0x20, 0x82, 0x00, 0x19, 0x00, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x06, - 0x00, 0xd3, 0x13, 0x00, 0x00, 0x00, 0x00, 0x38, 0x01, 0xab, 0x93, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x4b, 0xa2, 0x01, 0x00, 0x52, 0x26, 0x21, 0xf0, 0x60, - 0x02, 0x7c, 0x00, 0x22, 0x96, 0x00, 0x00, 0x00, 0x00, 0x23, 0x28, 0x45, 0x00, - 0x7e, 0x00, 0x25, 0xa6, 0xa0, 0x00, 0x82, 0x26, 0x00, 0x00, 0x42, 0xa2, 0x01, - 0x00, 0x52, 0x26, 0x00, 0x00, 0x45, 0xa2, 0x01, 0x00, 0x52, 0x26, 0x02, 0x12, - 0x05, 0x00, 0x00, 0x00, 0x42, 0xa2, 0x01, 0x00, 0x52, 0x26, 0x30, 0x01, 0xac, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0x4c, 0x02, 0xbc, 0x00, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x94, 0x26, 0x24, 0x00, 0xa2, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x2b, 0x10, 0x82, 0x02, 0x65, 0xff, 0x40, 0x14, 0x80, 0x00, - 0x31, 0x26, 0x01, 0x00, 0x73, 0x26, 0x10, 0x01, 0xab, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x40, 0x00, 0x62, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x62, 0x02, - 0x56, 0xff, 0x40, 0x14, 0x2c, 0x00, 0xb5, 0x26, 0x34, 0x00, 0xc0, 0x12, 0x00, - 0x00, 0x00, 0x00, 0x30, 0x01, 0xac, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x23, 0x60, - 0x92, 0x01, 0x28, 0x01, 0xac, 0xaf, 0x28, 0x01, 0xaa, 0x8f, 0x20, 0x01, 0xab, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x8b, 0x01, 0x2a, 0x00, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x28, 0x01, 0xa7, 0x8f, 0x21, 0x20, 0xc0, 0x02, 0x21, - 0x40, 0x00, 0x00, 0x1a, 0x00, 0xe4, 0x00, 0x02, 0x00, 0x80, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x0d, 0x00, 0x07, 0x00, 0xff, 0xff, 0x01, 0x24, 0x04, 0x00, 0x81, - 0x14, 0x00, 0x80, 0x01, 0x3c, 0x02, 0x00, 0xe1, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x06, 0x00, 0x12, 0x60, 0x00, 0x00, 0x28, 0x01, 0xac, 0xaf, 0x21, - 0x48, 0x80, 0x00, 0x21, 0x38, 0x40, 0x01, 0x21, 0x20, 0xc0, 0x02, 0x10, 0x00, - 0xa6, 0x27, 0x0d, 0x00, 0xc0, 0x1a, 0x21, 0x28, 0x00, 0x00, 0x00, 0x00, 0xc3, - 0x94, 0x28, 0x01, 0xab, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x63, 0x01, - 0x03, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x23, 0x38, 0xe3, 0x00, 0xff, - 0xff, 0x84, 0x24, 0x01, 0x00, 0xa5, 0x24, 0x2a, 0x10, 0xb6, 0x00, 0xf5, 0xff, - 0x40, 0x14, 0x04, 0x00, 0xc6, 0x24, 0x07, 0x00, 0x80, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x05, 0x00, 0x89, 0x10, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x25, - 0x04, 0x00, 0x02, 0x29, 0xdb, 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x28, - 0x01, 0xac, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x82, 0x29, 0x09, 0x00, - 0x40, 0x10, 0x40, 0x18, 0x16, 0x00, 0x18, 0x01, 0xab, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x23, 0x10, 0x4b, 0x02, 0x21, 0x10, 0x43, 0x00, 0x2c, 0x01, 0x42, 0x28, - 0x6f, 0x00, 0x40, 0x10, 0x02, 0x00, 0x0c, 0x24, 0x28, 0x01, 0xac, 0xaf, 0x10, - 0x00, 0xb7, 0x27, 0x69, 0x00, 0xc0, 0x1a, 0x21, 0xa8, 0x00, 0x00, 0x00, 0x00, - 0xf1, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x03, 0x26, 0x11, 0x00, 0x03, 0x14, 0x11, - 0x00, 0xff, 0x00, 0x45, 0x30, 0xff, 0xff, 0x31, 0x32, 0x10, 0x01, 0xab, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x63, 0x8d, 0x40, 0x10, 0x04, 0x00, 0x21, - 0x10, 0x44, 0x00, 0x80, 0x10, 0x02, 0x00, 0x23, 0x10, 0x44, 0x00, 0x80, 0x10, - 0x02, 0x00, 0x21, 0x10, 0x43, 0x00, 0xc0, 0x19, 0x05, 0x00, 0x00, 0x00, 0x42, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x21, 0xa0, 0x62, 0x00, 0x01, 0x00, 0x02, 0x24, - 0x05, 0x00, 0xc4, 0x13, 0x4b, 0x00, 0x82, 0xa2, 0xf0, 0xff, 0x82, 0x24, 0x00, - 0x00, 0x42, 0xa2, 0x01, 0x00, 0x52, 0x26, 0x21, 0xf0, 0x80, 0x00, 0x28, 0x01, - 0xac, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x91, 0x01, 0x04, 0x00, 0x40, - 0x10, 0x0a, 0x00, 0x22, 0x2a, 0x28, 0x01, 0xb1, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x0a, 0x00, 0x22, 0x2a, 0x08, 0x00, 0x40, 0x10, 0x02, 0x01, 0x22, 0x2a, 0xff, - 0xff, 0x31, 0x26, 0xff, 0xff, 0x22, 0x26, 0x00, 0x11, 0x02, 0x00, 0x21, 0x10, - 0x45, 0x00, 0x00, 0x00, 0x42, 0xa2, 0x3d, 0x0a, 0x00, 0x08, 0x01, 0x00, 0x52, - 0x26, 0x06, 0x00, 0x40, 0x10, 0x80, 0xff, 0xa2, 0x24, 0xfe, 0xff, 0x31, 0x26, - 0x00, 0x00, 0x42, 0xa2, 0x01, 0x00, 0x51, 0xa2, 0x3d, 0x0a, 0x00, 0x08, 0x02, - 0x00, 0x52, 0x26, 0xfd, 0xff, 0x31, 0x26, 0x90, 0xff, 0xa2, 0x24, 0x00, 0x00, - 0x42, 0xa2, 0x01, 0x00, 0x51, 0xa2, 0x03, 0x12, 0x11, 0x00, 0x02, 0x00, 0x42, - 0xa2, 0x03, 0x00, 0x52, 0x26, 0x78, 0x00, 0x82, 0x96, 0x00, 0x00, 0x00, 0x00, - 0x21, 0x10, 0x51, 0x00, 0x78, 0x00, 0x82, 0xa6, 0x0e, 0x00, 0x83, 0x96, 0x00, - 0x20, 0x0b, 0x3c, 0x25, 0x98, 0x8b, 0x02, 0x0c, 0x00, 0x62, 0x96, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x42, 0x30, 0xff, 0xff, 0x42, 0x24, 0x23, 0x80, 0x62, - 0x00, 0x2a, 0x10, 0x30, 0x02, 0x0e, 0x00, 0x40, 0x14, 0x00, 0x20, 0x0c, 0x3c, - 0x0c, 0x00, 0x64, 0x96, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x84, 0x30, 0x3c, - 0x00, 0x82, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, 0x82, 0x00, 0x21, 0x28, - 0x40, 0x02, 0x58, 0x05, 0x00, 0x0c, 0x21, 0x30, 0x00, 0x02, 0x21, 0x90, 0x50, - 0x02, 0x23, 0x88, 0x30, 0x02, 0x0c, 0x00, 0x60, 0xa6, 0x00, 0x20, 0x0c, 0x3c, - 0x25, 0x80, 0x8c, 0x02, 0x0c, 0x00, 0x04, 0x96, 0x00, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x84, 0x30, 0x3c, 0x00, 0x82, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, - 0x82, 0x00, 0x21, 0x28, 0x40, 0x02, 0x58, 0x05, 0x00, 0x0c, 0x21, 0x30, 0x20, - 0x02, 0x21, 0x90, 0x51, 0x02, 0x0c, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, - 0x21, 0x10, 0x51, 0x00, 0x0c, 0x00, 0x02, 0xa6, 0x01, 0x00, 0xb5, 0x26, 0x2a, - 0x10, 0xb6, 0x02, 0x99, 0xff, 0x40, 0x14, 0x04, 0x00, 0xf7, 0x26, 0x18, 0x01, - 0xab, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0x4b, 0x02, 0x84, 0x01, 0xbf, - 0x8f, 0x80, 0x01, 0xbe, 0x8f, 0x7c, 0x01, 0xb7, 0x8f, 0x78, 0x01, 0xb6, 0x8f, - 0x74, 0x01, 0xb5, 0x8f, 0x70, 0x01, 0xb4, 0x8f, 0x6c, 0x01, 0xb3, 0x8f, 0x68, - 0x01, 0xb2, 0x8f, 0x64, 0x01, 0xb1, 0x8f, 0x60, 0x01, 0xb0, 0x8f, 0x08, 0x00, - 0xe0, 0x03, 0x88, 0x01, 0xbd, 0x27, 0x03, 0x00, 0xa3, 0x90, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1a, 0x03, 0x00, 0x02, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, 0x00, - 0x21, 0x18, 0x62, 0x00, 0x01, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0f, - 0x00, 0x45, 0x30, 0x01, 0x00, 0x02, 0x24, 0x05, 0x00, 0xa2, 0x10, 0x0e, 0x00, - 0x02, 0x24, 0x05, 0x00, 0xa2, 0x10, 0x21, 0x10, 0x00, 0x00, 0x8f, 0x0a, 0x00, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x8e, 0x0a, 0x00, 0x08, 0x1e, 0x00, 0x83, 0xa4, - 0x78, 0x00, 0x83, 0xa4, 0x01, 0x00, 0x02, 0x24, 0x08, 0x00, 0xe0, 0x03, 0x00, - 0x00, 0x00, 0x00, 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x48, 0x00, - 0x86, 0x90, 0x65, 0x00, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x03, - 0x00, 0x21, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x23, 0x10, 0x43, 0x00, - 0x80, 0x10, 0x02, 0x00, 0x01, 0x80, 0x03, 0x3c, 0x21, 0x18, 0x62, 0x00, 0x28, - 0x9f, 0x63, 0x8c, 0x06, 0x00, 0x02, 0x24, 0x06, 0x00, 0x62, 0x14, 0x09, 0x00, - 0xc2, 0x28, 0x08, 0x00, 0xc2, 0x28, 0x05, 0x00, 0x40, 0x14, 0x01, 0x00, 0x02, - 0x24, 0xaa, 0x0a, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x40, 0x10, - 0x01, 0x00, 0x02, 0x24, 0x7b, 0x0a, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x10, - 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x28, 0xff, 0xbd, 0x27, 0xd4, 0x00, 0xbf, 0xaf, 0xd0, 0x00, 0xbe, - 0xaf, 0xcc, 0x00, 0xb7, 0xaf, 0xc8, 0x00, 0xb6, 0xaf, 0xc4, 0x00, 0xb5, 0xaf, - 0xc0, 0x00, 0xb4, 0xaf, 0xbc, 0x00, 0xb3, 0xaf, 0xb8, 0x00, 0xb2, 0xaf, 0xb4, - 0x00, 0xb1, 0xaf, 0xb0, 0x00, 0xb0, 0xaf, 0x21, 0xb0, 0x80, 0x00, 0x21, 0x20, - 0xa0, 0x00, 0x44, 0x00, 0xd2, 0x8e, 0x0c, 0x00, 0xd1, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x06, 0x00, 0x40, 0x12, 0x21, 0x38, 0x00, 0x00, 0x66, 0x00, 0x20, 0xa2, - 0x01, 0x00, 0xe7, 0x24, 0x2b, 0x10, 0xf2, 0x00, 0xfc, 0xff, 0x40, 0x14, 0x80, - 0x00, 0x31, 0x26, 0x21, 0x98, 0x80, 0x00, 0x21, 0x30, 0x66, 0x02, 0xa0, 0x00, - 0xa6, 0xaf, 0x08, 0x00, 0xd5, 0x8e, 0x2b, 0x10, 0x66, 0x02, 0x2f, 0x01, 0x40, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x1e, 0x3c, 0x00, 0xa3, 0x17, 0x3c, - 0x30, 0x0c, 0xf7, 0x36, 0x00, 0x00, 0x62, 0x92, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x19, 0x02, 0x00, 0x10, 0x00, 0x62, 0x2c, 0x1f, 0x01, 0x40, 0x10, 0x80, 0x10, - 0x03, 0x00, 0x01, 0x80, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0xf0, 0x8a, 0x22, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x62, 0x92, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x47, 0x30, 0x00, - 0x00, 0x62, 0x92, 0x00, 0x00, 0x00, 0x00, 0x02, 0x11, 0x02, 0x00, 0x01, 0x00, - 0x52, 0x24, 0xf5, 0x0a, 0x00, 0x08, 0x01, 0x00, 0x73, 0x26, 0x00, 0x00, 0x62, - 0x92, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x47, 0x30, 0x01, 0x00, 0x72, 0x92, - 0x00, 0x00, 0x00, 0x00, 0xf5, 0x0a, 0x00, 0x08, 0x02, 0x00, 0x73, 0x26, 0x00, - 0x00, 0x62, 0x92, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x47, 0x30, 0x02, 0x00, - 0x62, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x02, 0x00, 0x01, 0x00, 0x63, - 0x92, 0x00, 0x00, 0x00, 0x00, 0x21, 0x90, 0x43, 0x00, 0x03, 0x00, 0x73, 0x26, - 0x24, 0x00, 0xa2, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0xe2, 0x00, 0x03, - 0x00, 0x40, 0x14, 0xc0, 0x19, 0x07, 0x00, 0xf5, 0x0b, 0x00, 0x08, 0x21, 0x98, - 0x72, 0x02, 0x00, 0x00, 0xa2, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, 0x88, 0x62, - 0x00, 0x01, 0x00, 0x08, 0x24, 0x66, 0x00, 0x28, 0xa2, 0x25, 0x18, 0x3e, 0x02, - 0x14, 0x00, 0x62, 0x94, 0x12, 0x00, 0x63, 0x94, 0xff, 0xff, 0x42, 0x30, 0x23, - 0x10, 0x43, 0x00, 0xff, 0xff, 0x42, 0x24, 0x16, 0x00, 0x23, 0x96, 0x00, 0x00, - 0x00, 0x00, 0x24, 0x10, 0x43, 0x00, 0x2a, 0x10, 0x52, 0x00, 0xf4, 0x00, 0x40, - 0x14, 0x0d, 0x00, 0x02, 0x24, 0x7c, 0x00, 0x22, 0x96, 0x00, 0x00, 0x00, 0x00, - 0x21, 0x10, 0x52, 0x00, 0x7c, 0x00, 0x22, 0xa6, 0x16, 0x00, 0x23, 0x96, 0x25, - 0xa0, 0x3e, 0x02, 0x12, 0x00, 0x82, 0x96, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x42, 0x30, 0xff, 0xff, 0x42, 0x24, 0x23, 0x80, 0x62, 0x00, 0x2a, 0x10, 0x50, - 0x02, 0x0c, 0x00, 0x40, 0x14, 0x21, 0x20, 0x60, 0x02, 0x12, 0x00, 0x85, 0x96, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xa5, 0x30, 0x38, 0x00, 0x22, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x21, 0x28, 0xa2, 0x00, 0x58, 0x05, 0x00, 0x0c, 0x21, 0x30, - 0x00, 0x02, 0x21, 0x98, 0x70, 0x02, 0x23, 0x90, 0x50, 0x02, 0x12, 0x00, 0x80, - 0xa6, 0x25, 0x80, 0x3e, 0x02, 0x12, 0x00, 0x05, 0x96, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0xa5, 0x30, 0x38, 0x00, 0x22, 0x8e, 0x21, 0x20, 0x60, 0x02, 0x21, - 0x28, 0xa2, 0x00, 0x58, 0x05, 0x00, 0x0c, 0x21, 0x30, 0x40, 0x02, 0x21, 0x98, - 0x72, 0x02, 0x12, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x52, - 0x00, 0xf5, 0x0b, 0x00, 0x08, 0x12, 0x00, 0x02, 0xa6, 0x00, 0x00, 0x62, 0x92, - 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x47, 0x30, 0x24, 0x00, 0xa2, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x2b, 0x10, 0xe2, 0x00, 0x53, 0x00, 0x40, 0x10, 0xc0, 0x19, - 0x07, 0x00, 0x00, 0x00, 0xa2, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, 0x88, 0x62, - 0x00, 0x02, 0x00, 0x72, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0x12, 0x00, - 0x01, 0x00, 0x62, 0x92, 0x00, 0x00, 0x00, 0x00, 0x21, 0x90, 0x42, 0x02, 0x78, - 0x00, 0x22, 0x96, 0x00, 0x00, 0x00, 0x00, 0x23, 0x20, 0x52, 0x00, 0x7a, 0x00, - 0x23, 0x96, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0x43, 0x00, 0xff, 0xff, 0x84, - 0x30, 0xff, 0xff, 0x42, 0x30, 0x2b, 0x10, 0x44, 0x00, 0xb0, 0x00, 0x40, 0x14, - 0x11, 0x00, 0x02, 0x24, 0x7a, 0x00, 0x32, 0xa6, 0x78, 0x00, 0x22, 0x96, 0x00, - 0x00, 0x00, 0x00, 0x3a, 0x00, 0x42, 0x16, 0x25, 0x10, 0x3e, 0x02, 0x0a, 0x00, - 0x43, 0x94, 0x0c, 0x00, 0x42, 0x94, 0xff, 0xff, 0x63, 0x30, 0x35, 0x00, 0x62, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x0b, 0x00, 0x08, 0x4b, 0x00, 0x20, 0xa2, - 0x00, 0x00, 0x62, 0x92, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x47, 0x30, 0x24, - 0x00, 0xa2, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0xe2, 0x00, 0x03, 0x00, - 0x40, 0x14, 0xc0, 0x11, 0x07, 0x00, 0xf5, 0x0b, 0x00, 0x08, 0x04, 0x00, 0x73, - 0x26, 0x00, 0x00, 0xa4, 0x8e, 0x0c, 0x00, 0xa3, 0x8e, 0x21, 0x20, 0x44, 0x00, - 0x09, 0xf8, 0x60, 0x00, 0x21, 0x28, 0x60, 0x02, 0x88, 0x00, 0x40, 0x14, 0x04, - 0x00, 0x73, 0x26, 0x00, 0x0c, 0x00, 0x08, 0x0b, 0x00, 0x02, 0x24, 0x00, 0x00, - 0x62, 0x92, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x47, 0x30, 0x24, 0x00, 0xa2, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0xe2, 0x00, 0x18, 0x00, 0x40, 0x10, - 0xc0, 0x19, 0x07, 0x00, 0x00, 0x00, 0xa2, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, - 0x88, 0x62, 0x00, 0x25, 0x20, 0x3e, 0x02, 0x4f, 0x00, 0x82, 0x90, 0x01, 0x00, - 0x63, 0x92, 0x00, 0x00, 0x00, 0x00, 0x25, 0x10, 0x43, 0x00, 0x4f, 0x00, 0x82, - 0xa0, 0x02, 0x00, 0x63, 0x92, 0x54, 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, - 0x26, 0x18, 0x62, 0x00, 0x56, 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, 0x24, - 0x18, 0x62, 0x00, 0x58, 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, 0x25, 0x10, - 0x43, 0x00, 0x58, 0x00, 0x82, 0xa0, 0x02, 0x00, 0x62, 0x92, 0x00, 0x00, 0x00, - 0x00, 0x54, 0x00, 0x82, 0xa0, 0xf5, 0x0b, 0x00, 0x08, 0x03, 0x00, 0x73, 0x26, - 0x00, 0x00, 0x62, 0x92, 0x00, 0x00, 0x00, 0x00, 0x10, 0xff, 0x43, 0x24, 0x10, - 0x00, 0x62, 0x2c, 0x5d, 0x00, 0x40, 0x10, 0x80, 0x10, 0x03, 0x00, 0x01, 0x80, - 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0x30, 0x8b, 0x22, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0x92, - 0x00, 0x00, 0x00, 0x00, 0x10, 0xff, 0x52, 0x26, 0x40, 0x00, 0xc2, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x2a, 0x10, 0x42, 0x02, 0x09, 0x00, 0x40, 0x10, 0x40, 0x10, - 0x12, 0x00, 0x21, 0x10, 0x52, 0x00, 0x80, 0x10, 0x02, 0x00, 0x23, 0x10, 0x52, - 0x00, 0x80, 0x10, 0x02, 0x00, 0x08, 0x00, 0xc3, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0xf1, 0x0b, 0x00, 0x08, 0x21, 0xa8, 0x43, 0x00, 0x90, 0x81, 0x95, 0x27, 0xf5, - 0x0b, 0x00, 0x08, 0x01, 0x00, 0x73, 0x26, 0x00, 0x00, 0x63, 0x92, 0xf4, 0x00, - 0x02, 0x24, 0x4d, 0x00, 0x62, 0x14, 0x0c, 0x00, 0x02, 0x24, 0x01, 0x00, 0x63, - 0x92, 0xb3, 0x00, 0x02, 0x24, 0x49, 0x00, 0x62, 0x14, 0x0c, 0x00, 0x02, 0x24, - 0x02, 0x00, 0x63, 0x92, 0xc3, 0x00, 0x02, 0x24, 0x45, 0x00, 0x62, 0x14, 0x0c, - 0x00, 0x02, 0x24, 0x03, 0x00, 0x63, 0x92, 0x95, 0x00, 0x02, 0x24, 0x41, 0x00, - 0x62, 0x14, 0x0c, 0x00, 0x02, 0x24, 0x04, 0x00, 0x73, 0x26, 0x21, 0x20, 0x60, - 0x02, 0x10, 0x00, 0xa5, 0x27, 0x58, 0x05, 0x00, 0x0c, 0x0a, 0x00, 0x06, 0x24, - 0x10, 0x00, 0xa2, 0x93, 0x01, 0x00, 0x08, 0x24, 0x02, 0x00, 0x48, 0x14, 0x21, - 0x90, 0x00, 0x00, 0x18, 0x00, 0xb2, 0x97, 0xc0, 0x89, 0x83, 0x8f, 0x4c, 0x00, - 0xc2, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2c, 0xff, 0x62, 0x14, 0x0a, 0x00, 0x52, - 0x26, 0x00, 0x00, 0xe2, 0x92, 0x00, 0x00, 0x00, 0x00, 0x28, 0xff, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe3, 0x92, 0x10, 0x00, 0xa2, 0x93, 0x00, - 0x00, 0x00, 0x00, 0x23, 0xff, 0x43, 0x14, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0xe3, 0x92, 0x12, 0x00, 0xa2, 0x93, 0x00, 0x00, 0x00, 0x00, 0x1e, 0xff, 0x43, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0xa3, 0x8f, 0x04, 0x00, 0xe2, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x19, 0xff, 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0xe3, 0x96, 0x18, 0x00, 0xa2, 0x97, 0x00, 0x00, 0x00, 0x00, 0x14, 0xff, - 0x43, 0x14, 0x21, 0x20, 0x60, 0x02, 0x00, 0xa3, 0x05, 0x3c, 0x30, 0x0c, 0xa5, - 0x34, 0x58, 0x05, 0x00, 0x0c, 0x21, 0x30, 0x40, 0x02, 0x00, 0x00, 0xe0, 0xa2, - 0xc0, 0x89, 0x80, 0xaf, 0xf5, 0x0b, 0x00, 0x08, 0x21, 0x98, 0x72, 0x02, 0x00, - 0x0c, 0x00, 0x08, 0x21, 0x10, 0x00, 0x00, 0xf5, 0x0b, 0x00, 0x08, 0x01, 0x00, - 0x73, 0x26, 0x00, 0x0c, 0x00, 0x08, 0x0a, 0x00, 0x02, 0x24, 0xa0, 0x00, 0xa8, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0x68, 0x02, 0xd6, 0xfe, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x26, - 0x10, 0x68, 0x02, 0x2b, 0x10, 0x02, 0x00, 0x23, 0x10, 0x02, 0x00, 0x0e, 0x00, - 0x42, 0x30, 0xd4, 0x00, 0xbf, 0x8f, 0xd0, 0x00, 0xbe, 0x8f, 0xcc, 0x00, 0xb7, - 0x8f, 0xc8, 0x00, 0xb6, 0x8f, 0xc4, 0x00, 0xb5, 0x8f, 0xc0, 0x00, 0xb4, 0x8f, - 0xbc, 0x00, 0xb3, 0x8f, 0xb8, 0x00, 0xb2, 0x8f, 0xb4, 0x00, 0xb1, 0x8f, 0xb0, - 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0xd8, 0x00, 0xbd, 0x27, 0xe0, 0xff, - 0xbd, 0x27, 0x18, 0x00, 0xbf, 0xaf, 0x48, 0x9a, 0x84, 0x8f, 0x1f, 0x06, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x03, 0x3c, 0x30, 0x0c, 0x63, 0x34, - 0x00, 0x00, 0x62, 0x90, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x40, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x62, 0x90, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, - 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x1b, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0xac, 0x89, 0x8a, 0x8f, 0x00, 0x83, 0x08, 0x3c, 0x00, 0x10, 0x08, 0x35, - 0x58, 0x92, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x40, 0x18, 0x21, - 0x48, 0x00, 0x00, 0x00, 0x20, 0x0d, 0x3c, 0x00, 0xa3, 0x0b, 0x3c, 0x18, 0x0d, - 0x6b, 0x35, 0x00, 0xa3, 0x0c, 0x3c, 0x00, 0x08, 0x8c, 0x35, 0x25, 0x28, 0x0d, - 0x01, 0x55, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x42, 0x34, - 0x4f, 0x00, 0xa3, 0x90, 0x00, 0x00, 0x00, 0x00, 0x24, 0x20, 0x62, 0x00, 0x0a, - 0x00, 0xa2, 0x94, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x46, 0x30, 0x0c, 0x00, - 0xa2, 0x94, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x43, 0x30, 0x4c, 0x00, 0xa2, - 0x90, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x07, 0x00, 0xc3, 0x14, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x02, 0x91, 0x00, - 0x00, 0x00, 0x00, 0x03, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x84, 0x34, 0x4c, 0x00, 0xa0, 0xa0, 0x4d, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, - 0x00, 0x0b, 0x00, 0x40, 0x10, 0x23, 0x18, 0xc3, 0x00, 0x0e, 0x00, 0x02, 0x95, - 0x00, 0x00, 0x00, 0x00, 0x24, 0x18, 0x62, 0x00, 0x18, 0x00, 0x02, 0x95, 0x00, - 0x00, 0x00, 0x00, 0x2a, 0x10, 0x43, 0x00, 0x03, 0x00, 0x40, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x84, 0x34, 0x4d, 0x00, 0xa0, 0xa0, 0x12, 0x00, 0xa2, - 0x94, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x46, 0x30, 0x14, 0x00, 0xa2, 0x94, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x43, 0x30, 0x4e, 0x00, 0xa2, 0x90, 0x00, - 0x00, 0x00, 0x00, 0x19, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, - 0xc3, 0x10, 0x23, 0x18, 0xc3, 0x00, 0x16, 0x00, 0x02, 0x95, 0x00, 0x00, 0x00, - 0x00, 0x24, 0x18, 0x62, 0x00, 0x42, 0x10, 0x02, 0x00, 0x2a, 0x10, 0x43, 0x00, - 0x0d, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xa2, 0x94, 0x00, - 0x00, 0x00, 0x00, 0x23, 0x10, 0x42, 0x01, 0x22, 0x00, 0xa3, 0x94, 0xff, 0xff, - 0x42, 0x30, 0x2b, 0x10, 0x43, 0x00, 0x05, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x66, 0x00, 0x02, 0x91, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0xa0, 0xa0, 0x08, 0x00, 0x84, 0x34, 0x20, - 0x00, 0xaa, 0xa4, 0x54, 0x00, 0xa3, 0x90, 0x57, 0x00, 0xa2, 0x90, 0x00, 0x00, - 0x00, 0x00, 0x26, 0x18, 0x62, 0x00, 0x56, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, - 0x00, 0x24, 0x18, 0x62, 0x00, 0x58, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, 0x00, - 0x25, 0x10, 0x43, 0x00, 0x02, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x20, - 0x00, 0x84, 0x34, 0x26, 0x00, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x62, 0x95, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x46, 0x30, 0x02, 0x00, 0x62, - 0x95, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x43, 0x30, 0x25, 0x38, 0xcc, 0x00, - 0x04, 0x00, 0xc6, 0x24, 0xfc, 0x03, 0xc6, 0x30, 0x07, 0x00, 0xc3, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x4f, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x25, 0x10, - 0x44, 0x00, 0x4f, 0x00, 0xa2, 0xa0, 0xaa, 0x0c, 0x00, 0x08, 0x01, 0x00, 0x29, - 0x25, 0x00, 0x00, 0xe9, 0xa0, 0x01, 0x00, 0xe4, 0xa0, 0x57, 0x00, 0xa2, 0x90, - 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x42, 0x30, 0x03, 0x00, 0xe2, 0xa0, 0x54, - 0x00, 0xa3, 0x90, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x63, 0x30, 0x58, 0x00, - 0xa4, 0x90, 0x26, 0x18, 0x62, 0x00, 0x25, 0x18, 0x64, 0x00, 0x58, 0x00, 0xa0, - 0xa0, 0x4f, 0x00, 0xa0, 0xa0, 0x26, 0x10, 0x43, 0x00, 0x02, 0x00, 0xe2, 0xa0, - 0x57, 0x00, 0xa2, 0xa0, 0x00, 0x00, 0x66, 0xa5, 0xaa, 0x0c, 0x00, 0x08, 0x01, - 0x00, 0x29, 0x25, 0x54, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x57, 0x00, - 0xa2, 0xa0, 0x01, 0x00, 0x29, 0x25, 0x58, 0x92, 0x82, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x2a, 0x10, 0x22, 0x01, 0x7b, 0xff, 0x40, 0x14, 0x80, 0x00, 0x08, 0x25, - 0x00, 0xa3, 0x02, 0x3c, 0x04, 0x0e, 0x42, 0x94, 0x00, 0x00, 0x00, 0x00, 0x29, - 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x8c, 0x82, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x42, 0x24, 0xa0, 0x8c, 0x82, 0xaf, 0x23, 0x00, 0x40, - 0x1c, 0x00, 0xa3, 0x02, 0x3c, 0x00, 0x0d, 0x42, 0x34, 0x00, 0x00, 0x42, 0x94, - 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x40, 0x14, 0x00, 0xa3, 0x02, 0x3c, 0x18, - 0x0d, 0x42, 0x34, 0x00, 0x00, 0x43, 0x94, 0x02, 0x00, 0x42, 0x94, 0xff, 0xff, - 0x63, 0x30, 0x14, 0x00, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x89, 0x84, - 0x8f, 0x16, 0x06, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x05, 0xa2, 0x05, 0x3c, - 0x54, 0x92, 0x84, 0x97, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x82, 0x30, 0x00, - 0x00, 0xa2, 0xa4, 0x00, 0xa3, 0x03, 0x3c, 0x06, 0x0e, 0x63, 0x34, 0x00, 0x00, - 0x62, 0x94, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, - 0xa4, 0x00, 0x00, 0x62, 0x94, 0x00, 0x00, 0xa4, 0xa4, 0x48, 0x9a, 0x84, 0x8f, - 0x1f, 0x06, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x02, 0x3c, 0x04, - 0x0e, 0x42, 0x94, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x8c, 0x82, 0xaf, 0xc5, 0x1c, - 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x18, 0x00, 0xbf, 0x8f, 0x20, 0x00, 0xbd, - 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x80, 0xa4, - 0x7a, 0x00, 0x80, 0xa4, 0x00, 0x20, 0x02, 0x3c, 0x25, 0x10, 0x82, 0x00, 0x12, - 0x00, 0x43, 0x94, 0x14, 0x00, 0x42, 0x94, 0x00, 0x00, 0x00, 0x00, 0x23, 0x18, - 0x62, 0x00, 0x16, 0x00, 0x82, 0x94, 0x00, 0x00, 0x00, 0x00, 0x24, 0x18, 0x62, - 0x00, 0x7c, 0x00, 0x83, 0xa4, 0x7e, 0x00, 0x80, 0xa4, 0xee, 0x6f, 0x02, 0x24, - 0x08, 0x00, 0xe0, 0x03, 0x2e, 0x00, 0x82, 0xa4, 0xe8, 0xff, 0xbd, 0x27, 0x10, - 0x00, 0xbf, 0xaf, 0x48, 0x00, 0x85, 0x90, 0x65, 0x00, 0x83, 0x90, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x10, 0x03, 0x00, 0x21, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, - 0x00, 0x23, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x01, 0x80, 0x03, 0x3c, - 0x21, 0x18, 0x62, 0x00, 0x28, 0x9f, 0x63, 0x8c, 0x06, 0x00, 0x02, 0x24, 0x06, - 0x00, 0x62, 0x14, 0x09, 0x00, 0xa2, 0x28, 0x08, 0x00, 0xa2, 0x28, 0x07, 0x00, - 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0d, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x03, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xe2, 0x0c, 0x00, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, - 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xc8, 0xff, 0xbd, 0x27, 0x34, 0x00, - 0xbf, 0xaf, 0x30, 0x00, 0xb4, 0xaf, 0x2c, 0x00, 0xb3, 0xaf, 0x28, 0x00, 0xb2, - 0xaf, 0x24, 0x00, 0xb1, 0xaf, 0x20, 0x00, 0xb0, 0xaf, 0x21, 0xa0, 0x80, 0x00, - 0x08, 0x00, 0x92, 0x8e, 0x40, 0x00, 0x82, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x16, - 0x00, 0x40, 0x18, 0x21, 0x98, 0x00, 0x00, 0x00, 0x00, 0x51, 0x8e, 0x24, 0x00, - 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x40, 0x10, 0x21, 0x80, 0x00, - 0x00, 0x14, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x09, 0xf8, 0x40, 0x00, - 0x21, 0x20, 0x20, 0x02, 0x01, 0x00, 0x10, 0x26, 0x24, 0x00, 0x42, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x2b, 0x10, 0x02, 0x02, 0xf7, 0xff, 0x40, 0x14, 0x80, 0x00, - 0x31, 0x26, 0x01, 0x00, 0x73, 0x26, 0x40, 0x00, 0x82, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x2a, 0x10, 0x62, 0x02, 0xec, 0xff, 0x40, 0x14, 0x2c, 0x00, 0x52, 0x26, - 0x34, 0x00, 0xbf, 0x8f, 0x30, 0x00, 0xb4, 0x8f, 0x2c, 0x00, 0xb3, 0x8f, 0x28, - 0x00, 0xb2, 0x8f, 0x24, 0x00, 0xb1, 0x8f, 0x20, 0x00, 0xb0, 0x8f, 0x08, 0x00, - 0xe0, 0x03, 0x38, 0x00, 0xbd, 0x27, 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, - 0xaf, 0xd0, 0x8c, 0x87, 0x27, 0x23, 0x38, 0xa7, 0x00, 0x40, 0x19, 0x07, 0x00, - 0x23, 0x18, 0x67, 0x00, 0x40, 0x19, 0x03, 0x00, 0x21, 0x18, 0x67, 0x00, 0xc0, - 0x10, 0x03, 0x00, 0x21, 0x18, 0x62, 0x00, 0xc0, 0x13, 0x03, 0x00, 0x23, 0x10, - 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x21, 0x10, 0x47, 0x00, 0x23, 0x10, 0x02, - 0x00, 0x83, 0x10, 0x02, 0x00, 0x65, 0x00, 0x82, 0xa0, 0x48, 0x00, 0x86, 0xa0, - 0x18, 0x00, 0xa2, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x09, 0xf8, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x10, 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, - 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, - 0xaf, 0x48, 0x00, 0x87, 0x90, 0x65, 0x00, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, - 0x40, 0x10, 0x03, 0x00, 0x21, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x23, - 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x01, 0x80, 0x03, 0x3c, 0x21, 0x18, - 0x62, 0x00, 0x28, 0x9f, 0x63, 0x8c, 0x06, 0x00, 0x02, 0x24, 0x06, 0x00, 0x62, - 0x14, 0x09, 0x00, 0xe2, 0x28, 0x08, 0x00, 0xe2, 0x28, 0x07, 0x00, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x6a, 0x0d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x03, - 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x39, 0x0d, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x10, 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, - 0x03, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xff, 0xbd, 0x27, 0x4c, 0x00, 0xbf, 0xaf, - 0x48, 0x00, 0xbe, 0xaf, 0x44, 0x00, 0xb7, 0xaf, 0x40, 0x00, 0xb6, 0xaf, 0x3c, - 0x00, 0xb5, 0xaf, 0x38, 0x00, 0xb4, 0xaf, 0x34, 0x00, 0xb3, 0xaf, 0x30, 0x00, - 0xb2, 0xaf, 0x2c, 0x00, 0xb1, 0xaf, 0x28, 0x00, 0xb0, 0xaf, 0x00, 0x83, 0x04, - 0x3c, 0x00, 0x10, 0x84, 0x34, 0x00, 0x83, 0x05, 0x3c, 0x05, 0x13, 0x00, 0x0c, - 0x00, 0x80, 0xa5, 0x34, 0x00, 0x83, 0x13, 0x3c, 0x00, 0x10, 0x73, 0x36, 0x10, - 0x93, 0x95, 0x27, 0x00, 0x93, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x5d, 0x00, - 0x40, 0x18, 0x21, 0xb0, 0x00, 0x00, 0x08, 0x00, 0xb0, 0x8e, 0x40, 0x00, 0xa2, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x40, 0x18, 0x21, 0xa0, 0x00, 0x00, - 0x00, 0x80, 0x1e, 0x3c, 0xc8, 0x33, 0xde, 0x27, 0x00, 0x80, 0x17, 0x3c, 0x4c, - 0x35, 0xf7, 0x26, 0x28, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x43, 0x24, 0x16, 0x00, 0x62, 0x2c, 0x2c, 0x00, 0x40, 0x10, 0x80, 0x10, 0x03, - 0x00, 0x01, 0x80, 0x08, 0x3c, 0x70, 0x8b, 0x08, 0x25, 0x21, 0x10, 0x48, 0x00, - 0x00, 0x00, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xae, 0x00, 0x80, 0x02, 0x3c, 0x70, 0x1f, - 0x42, 0x24, 0x08, 0x00, 0x02, 0xae, 0x00, 0x80, 0x02, 0x3c, 0xec, 0x29, 0x42, - 0x24, 0x0c, 0x00, 0x02, 0xae, 0x00, 0x80, 0x02, 0x3c, 0xa4, 0x1a, 0x42, 0x24, - 0x10, 0x00, 0x02, 0xae, 0x00, 0x80, 0x02, 0x3c, 0x50, 0x19, 0x42, 0x24, 0x18, - 0x00, 0x02, 0xae, 0x00, 0x80, 0x02, 0x3c, 0x88, 0x33, 0x42, 0x24, 0x14, 0x00, - 0x02, 0xae, 0x00, 0x80, 0x02, 0x3c, 0xe4, 0x34, 0x42, 0x24, 0xc4, 0x0d, 0x00, - 0x08, 0x1c, 0x00, 0x02, 0xae, 0x00, 0x00, 0x13, 0xae, 0x00, 0x80, 0x08, 0x3c, - 0xc4, 0x21, 0x08, 0x25, 0x08, 0x00, 0x08, 0xae, 0x00, 0x80, 0x08, 0x3c, 0x44, - 0x2a, 0x08, 0x25, 0x0c, 0x00, 0x08, 0xae, 0x00, 0x80, 0x08, 0x3c, 0x90, 0x1d, - 0x08, 0x25, 0x10, 0x00, 0x08, 0xae, 0x00, 0x80, 0x08, 0x3c, 0x04, 0x1a, 0x08, - 0x25, 0x18, 0x00, 0x08, 0xae, 0x14, 0x00, 0x1e, 0xae, 0xc4, 0x0d, 0x00, 0x08, - 0x1c, 0x00, 0x17, 0xae, 0x0c, 0x80, 0x84, 0x27, 0x24, 0x04, 0x00, 0x0c, 0x7d, - 0x06, 0x05, 0x24, 0x24, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x11, - 0x03, 0x00, 0x21, 0x98, 0x62, 0x02, 0x00, 0x00, 0x12, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x60, 0x10, 0x21, 0x88, 0x00, 0x00, 0x1c, 0x00, 0x02, 0x8e, - 0x21, 0x20, 0x40, 0x02, 0x21, 0x28, 0x00, 0x02, 0x09, 0xf8, 0x40, 0x00, 0x21, - 0x30, 0x20, 0x02, 0x01, 0x00, 0x31, 0x26, 0x24, 0x00, 0x02, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x2b, 0x10, 0x22, 0x02, 0xf6, 0xff, 0x40, 0x14, 0x80, 0x00, 0x52, - 0x26, 0x01, 0x00, 0x94, 0x26, 0x40, 0x00, 0xa2, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x2a, 0x10, 0x82, 0x02, 0xb4, 0xff, 0x40, 0x14, 0x2c, 0x00, 0x10, 0x26, 0x01, - 0x00, 0xd6, 0x26, 0x00, 0x93, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, - 0xc2, 0x02, 0xa5, 0xff, 0x40, 0x14, 0x84, 0x00, 0xb5, 0x26, 0x58, 0x92, 0x85, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x29, 0x05, 0x00, 0x00, 0x83, 0x02, 0x3c, - 0x10, 0x10, 0x42, 0x34, 0x21, 0x28, 0xa2, 0x00, 0x00, 0xa0, 0x02, 0x3c, 0x25, - 0x28, 0xa2, 0x00, 0x50, 0x92, 0x85, 0xaf, 0x21, 0x20, 0xa0, 0x00, 0x05, 0x13, - 0x00, 0x0c, 0x0c, 0x04, 0xa5, 0x24, 0x50, 0x92, 0x84, 0x8f, 0x00, 0xa3, 0x11, - 0x3c, 0x80, 0x01, 0x31, 0x36, 0x10, 0x00, 0x22, 0x8e, 0x00, 0xa3, 0x05, 0x3c, - 0x0c, 0x04, 0x84, 0x24, 0x0f, 0x13, 0x00, 0x0c, 0x21, 0x28, 0x45, 0x00, 0x21, - 0x80, 0x40, 0x00, 0x60, 0x92, 0x84, 0x27, 0x01, 0x00, 0x05, 0x24, 0x00, 0x80, - 0x06, 0x3c, 0x30, 0x30, 0xc6, 0x24, 0x4a, 0x1c, 0x00, 0x0c, 0x21, 0x38, 0x00, - 0x00, 0x60, 0x92, 0x84, 0x27, 0x65, 0x1c, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x58, 0x92, 0x82, 0x97, 0x00, 0xa3, 0x01, 0x3c, 0x02, 0x0c, 0x22, 0xa4, 0x00, - 0x93, 0x82, 0x97, 0x00, 0xa3, 0x01, 0x3c, 0x04, 0x0c, 0x22, 0xa4, 0x00, 0xa3, - 0x01, 0x3c, 0x06, 0x0c, 0x30, 0xa4, 0x10, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x82, 0x12, 0x02, 0x00, 0x00, 0xa3, 0x01, 0x3c, 0x08, 0x0c, 0x22, 0xa4, - 0x00, 0xa3, 0x03, 0x3c, 0x10, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x60, 0xa4, 0x02, - 0x00, 0x60, 0xa4, 0x00, 0x04, 0x02, 0x24, 0x04, 0x00, 0x62, 0xa4, 0xfc, 0x03, - 0x04, 0x24, 0x06, 0x00, 0x64, 0xa4, 0x00, 0xa3, 0x02, 0x3c, 0x18, 0x0d, 0x42, - 0x34, 0x00, 0x00, 0x40, 0xa4, 0x02, 0x00, 0x40, 0xa4, 0x00, 0x08, 0x03, 0x24, - 0x04, 0x00, 0x43, 0xa4, 0x06, 0x00, 0x44, 0xa4, 0x4c, 0x00, 0xbf, 0x8f, 0x48, - 0x00, 0xbe, 0x8f, 0x44, 0x00, 0xb7, 0x8f, 0x40, 0x00, 0xb6, 0x8f, 0x3c, 0x00, - 0xb5, 0x8f, 0x38, 0x00, 0xb4, 0x8f, 0x34, 0x00, 0xb3, 0x8f, 0x30, 0x00, 0xb2, - 0x8f, 0x2c, 0x00, 0xb1, 0x8f, 0x28, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, - 0x50, 0x00, 0xbd, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x24, 0x54, 0x9a, 0x82, 0xaf, 0x01, 0x20, - 0x02, 0x24, 0xb0, 0x89, 0x82, 0xaf, 0x01, 0x24, 0x03, 0x24, 0x50, 0x9a, 0x83, - 0xaf, 0xa4, 0x89, 0x83, 0xaf, 0x01, 0x3f, 0x02, 0x24, 0x48, 0x9a, 0x82, 0xaf, - 0x58, 0x9a, 0x83, 0xaf, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe8, - 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x20, 0x80, 0x84, 0x27, 0x24, 0x04, - 0x00, 0x0c, 0x53, 0x00, 0x05, 0x24, 0x10, 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xbd, - 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xff, 0xbd, 0x27, - 0x10, 0x00, 0xbf, 0xaf, 0x20, 0x80, 0x84, 0x27, 0x24, 0x04, 0x00, 0x0c, 0x5f, - 0x00, 0x05, 0x24, 0x10, 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, - 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, - 0xaf, 0x40, 0x1e, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x3c, - 0x08, 0x15, 0x42, 0x24, 0x82, 0x10, 0x02, 0x00, 0xff, 0x03, 0x04, 0x3c, 0xff, - 0xff, 0x84, 0x34, 0x24, 0x10, 0x44, 0x00, 0x00, 0x08, 0x03, 0x3c, 0x25, 0x10, - 0x43, 0x00, 0x00, 0x80, 0x01, 0x3c, 0x00, 0x00, 0x22, 0xac, 0x00, 0x80, 0x01, - 0x3c, 0x04, 0x00, 0x20, 0xac, 0x00, 0x80, 0x02, 0x3c, 0xe0, 0x12, 0x42, 0x24, - 0x82, 0x10, 0x02, 0x00, 0x24, 0x10, 0x44, 0x00, 0x25, 0x10, 0x43, 0x00, 0x00, - 0x80, 0x01, 0x3c, 0x80, 0x00, 0x22, 0xac, 0x00, 0x80, 0x01, 0x3c, 0x84, 0x00, - 0x20, 0xac, 0x00, 0x80, 0x04, 0x3c, 0x00, 0x10, 0x84, 0x24, 0x01, 0x80, 0x05, - 0x3c, 0xe0, 0x12, 0x00, 0x0c, 0xc0, 0x93, 0xa5, 0x24, 0xff, 0xff, 0x03, 0x24, - 0x04, 0x00, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0x20, 0x80, 0x84, 0x27, 0x24, - 0x04, 0x00, 0x0c, 0x79, 0x00, 0x05, 0x24, 0xa0, 0x1d, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x05, 0xa2, 0x03, 0x3c, 0x81, 0x00, 0x02, 0x24, 0x54, 0x92, 0x82, - 0xaf, 0x81, 0x00, 0x02, 0x24, 0x00, 0x00, 0x62, 0xa4, 0x34, 0x06, 0x00, 0x0c, - 0x00, 0x03, 0x04, 0x24, 0x00, 0xa3, 0x02, 0x3c, 0x30, 0x0c, 0x42, 0x34, 0x2c, - 0x0e, 0x00, 0x0c, 0x00, 0x00, 0x40, 0xa0, 0x34, 0x1c, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0xd4, 0x12, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x70, 0x0d, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x60, 0x9a, 0x84, 0x27, 0x21, 0x28, 0x00, 0x00, - 0x00, 0x80, 0x06, 0x3c, 0x70, 0x50, 0xc6, 0x24, 0x4a, 0x1c, 0x00, 0x0c, 0x21, - 0x38, 0x00, 0x00, 0x60, 0x9a, 0x84, 0x27, 0x65, 0x1c, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x4f, 0x00, 0x02, 0x24, 0x00, 0xa3, 0x01, 0x3c, 0x20, 0x0d, 0x22, - 0xa0, 0x00, 0xa3, 0x01, 0x3c, 0x00, 0x0c, 0x22, 0xa0, 0x53, 0x00, 0x02, 0x24, - 0x00, 0xa3, 0x01, 0x3c, 0x21, 0x0d, 0x22, 0xa0, 0x00, 0xa3, 0x01, 0x3c, 0xf6, - 0x1c, 0x00, 0x0c, 0x01, 0x0c, 0x22, 0xa0, 0x10, 0x00, 0xbf, 0x8f, 0x18, 0x00, - 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xbd, 0x27, - 0x1c, 0x00, 0xbf, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, - 0x00, 0xb0, 0xaf, 0xd0, 0x89, 0x87, 0x27, 0x10, 0x93, 0x88, 0x27, 0xd0, 0x8c, - 0x85, 0x27, 0x00, 0x83, 0x0b, 0x3c, 0x00, 0x10, 0x6b, 0x35, 0x00, 0xa3, 0x0a, - 0x3c, 0xd0, 0x0c, 0x4a, 0x35, 0x00, 0x00, 0x42, 0x91, 0x00, 0x00, 0x00, 0x00, - 0xff, 0x00, 0x42, 0x30, 0xff, 0x00, 0x03, 0x24, 0x6e, 0x01, 0x43, 0x10, 0x10, - 0x00, 0x0e, 0x24, 0x1e, 0x00, 0x0f, 0x3c, 0x80, 0x84, 0xef, 0x35, 0x01, 0x00, - 0x0d, 0x24, 0x01, 0x80, 0x11, 0x3c, 0xd0, 0x8b, 0x31, 0x26, 0x15, 0x00, 0x10, - 0x24, 0x16, 0x00, 0x19, 0x24, 0x0f, 0x00, 0x18, 0x24, 0x00, 0x00, 0x42, 0x91, - 0x00, 0x00, 0x00, 0x00, 0x5f, 0x01, 0x40, 0x14, 0x01, 0x00, 0x4a, 0x25, 0xa4, - 0x8c, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x42, 0x28, 0x5a, 0x01, - 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0xee, 0xac, 0x00, 0x00, 0x42, - 0x91, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x49, 0x30, 0x68, 0x81, 0x82, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x22, 0x01, 0x51, 0x01, 0x40, 0x10, 0x01, - 0x00, 0x4a, 0x25, 0x48, 0x00, 0xe9, 0xac, 0x40, 0x10, 0x09, 0x00, 0x21, 0x10, - 0x49, 0x00, 0x80, 0x10, 0x02, 0x00, 0x01, 0x80, 0x06, 0x3c, 0x21, 0x30, 0xc2, - 0x00, 0x8c, 0x8e, 0xc6, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x8c, - 0x00, 0x00, 0x00, 0x00, 0xc2, 0x20, 0x02, 0x00, 0x90, 0x00, 0xe4, 0xac, 0x94, - 0x00, 0xe4, 0xac, 0x1a, 0x00, 0xe4, 0x01, 0x02, 0x00, 0x80, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x0d, 0x00, 0x07, 0x00, 0xff, 0xff, 0x01, 0x24, 0x04, 0x00, 0x81, - 0x14, 0x00, 0x80, 0x01, 0x3c, 0x02, 0x00, 0xe1, 0x15, 0x00, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x06, 0x00, 0x12, 0x10, 0x00, 0x00, 0x70, 0x00, 0xe2, 0xac, 0x04, - 0x00, 0xc2, 0x94, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xe2, 0xac, 0x04, 0x01, - 0xed, 0xa0, 0x05, 0x01, 0xed, 0xa0, 0x48, 0x00, 0xe2, 0x90, 0x00, 0x00, 0x00, - 0x00, 0x06, 0x01, 0xe2, 0xa0, 0xa4, 0x8c, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0xc0, 0x10, 0x02, 0x00, 0x00, 0xa3, 0x03, 0x3c, 0x10, 0x0e, 0x63, 0x34, 0x21, - 0x10, 0x43, 0x00, 0x28, 0x00, 0xe2, 0xac, 0x0c, 0x00, 0xe8, 0xac, 0x14, 0x00, - 0xe8, 0xac, 0x10, 0x00, 0xe8, 0xac, 0x68, 0x00, 0xe0, 0xac, 0x00, 0x00, 0x42, - 0x91, 0x00, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x40, 0x10, 0x07, 0x01, 0xec, 0x24, - 0x00, 0x00, 0x42, 0x91, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x42, 0x30, 0xff, - 0x00, 0x03, 0x24, 0xe3, 0x00, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x93, - 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x62, 0x28, 0x16, 0x01, 0x40, - 0x10, 0x09, 0x00, 0x02, 0x24, 0x04, 0x00, 0x07, 0xad, 0x20, 0x00, 0x02, 0xad, - 0x50, 0x00, 0x0d, 0xad, 0x68, 0x00, 0xe2, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x48, - 0x00, 0x02, 0xad, 0x01, 0x00, 0x62, 0x24, 0x4c, 0x00, 0x02, 0xad, 0x0c, 0x00, - 0x0b, 0xad, 0x00, 0x00, 0x0d, 0xad, 0x10, 0x00, 0x02, 0x25, 0x14, 0x00, 0x02, - 0xad, 0x28, 0x00, 0xe3, 0x8c, 0x68, 0x00, 0xe2, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x21, 0x18, 0x62, 0x00, 0x1c, 0x00, 0x03, 0xad, 0x00, 0x00, 0x6d, 0xa0, 0x08, - 0x00, 0x05, 0xad, 0x0c, 0x00, 0x0b, 0xad, 0x40, 0x00, 0x02, 0x8d, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x40, 0x00, 0x02, 0xad, 0x05, 0x00, 0x42, - 0x28, 0xfb, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x9e, 0x82, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x8c, 0x9e, 0x82, 0xaf, 0x21, - 0x00, 0x42, 0x28, 0xf4, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x58, 0x92, - 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xa2, 0xac, 0x00, 0x00, 0xab, - 0xac, 0x00, 0x00, 0x42, 0x91, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x42, 0x30, - 0xfc, 0xff, 0x43, 0x24, 0x1b, 0x00, 0x62, 0x2c, 0xe9, 0x00, 0x40, 0x10, 0x80, - 0x10, 0x03, 0x00, 0x21, 0x10, 0x51, 0x00, 0x00, 0x00, 0x42, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0xb0, - 0xac, 0x44, 0x0f, 0x00, 0x08, 0x24, 0x00, 0xae, 0xac, 0x28, 0x00, 0xb9, 0xac, - 0x44, 0x0f, 0x00, 0x08, 0x24, 0x00, 0xae, 0xac, 0x44, 0x0f, 0x00, 0x08, 0x28, - 0x00, 0xad, 0xac, 0x04, 0x00, 0x02, 0x24, 0x44, 0x0f, 0x00, 0x08, 0x28, 0x00, - 0xa2, 0xac, 0x06, 0x00, 0x02, 0x24, 0x44, 0x0f, 0x00, 0x08, 0x28, 0x00, 0xa2, - 0xac, 0x28, 0x00, 0xae, 0xac, 0x28, 0x00, 0xa2, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0xeb, 0xff, 0x42, 0x24, 0x02, 0x00, 0x42, 0x2c, 0x39, 0x00, 0x40, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x44, 0x00, 0x03, 0x8d, 0x24, 0x00, 0xa2, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x21, 0x18, 0x62, 0x00, 0x44, 0x00, 0x03, 0xad, 0x41, 0x00, 0x63, - 0x28, 0xc7, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x58, 0x92, 0x82, 0x8f, - 0x24, 0x00, 0xa3, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x18, 0x43, 0x00, 0x58, - 0x92, 0x83, 0xaf, 0xe1, 0x00, 0x62, 0x28, 0xbf, 0x00, 0x40, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x24, 0x00, 0xa2, 0x8c, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x11, 0x02, - 0x00, 0x21, 0x58, 0x62, 0x01, 0x40, 0x00, 0x02, 0x8d, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x42, 0x24, 0x40, 0x00, 0x02, 0xad, 0x05, 0x00, 0x42, 0x28, 0xb4, - 0x00, 0x40, 0x10, 0x2c, 0x00, 0xa5, 0x24, 0x8c, 0x9e, 0x82, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x8c, 0x9e, 0x82, 0xaf, 0x21, 0x00, 0x42, - 0x28, 0xad, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xa3, 0xac, - 0x00, 0x00, 0xab, 0xac, 0x00, 0x00, 0x42, 0x91, 0x00, 0x00, 0x00, 0x00, 0x7f, - 0x00, 0x43, 0x30, 0x18, 0x00, 0x02, 0x24, 0x05, 0x00, 0x62, 0x10, 0x1e, 0x00, - 0x02, 0x24, 0x05, 0x00, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x0f, 0x00, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x7b, 0x0f, 0x00, 0x08, 0x28, 0x00, 0xb0, 0xac, - 0x28, 0x00, 0xb9, 0xac, 0x24, 0x00, 0xb8, 0xac, 0x28, 0x00, 0xa2, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0xeb, 0xff, 0x42, 0x24, 0x02, 0x00, 0x42, 0x2c, 0x05, 0x00, - 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x91, 0x00, 0x00, 0x00, - 0x00, 0x7f, 0x00, 0x42, 0x30, 0x24, 0x00, 0xa2, 0xac, 0x44, 0x00, 0x03, 0x8d, - 0x24, 0x00, 0xa2, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x18, 0x62, 0x00, 0x44, - 0x00, 0x03, 0xad, 0x41, 0x00, 0x63, 0x28, 0x8b, 0x00, 0x60, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x58, 0x92, 0x83, 0x8f, 0x24, 0x00, 0xa2, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x21, 0x18, 0x62, 0x00, 0x58, 0x92, 0x83, 0xaf, 0xe1, 0x00, 0x63, 0x28, - 0x83, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0xa2, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0xc0, 0x11, 0x02, 0x00, 0x21, 0x58, 0x62, 0x01, 0x2c, 0x00, - 0xa5, 0x24, 0x00, 0x00, 0x42, 0x91, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x42, - 0x30, 0x78, 0xff, 0x40, 0x14, 0x01, 0x00, 0x4a, 0x25, 0x40, 0x00, 0x02, 0x8d, - 0x00, 0x00, 0x00, 0x00, 0x75, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x42, 0x91, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x49, 0x30, 0x68, 0x81, - 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x22, 0x01, 0x6d, 0x00, 0x40, - 0x10, 0x01, 0x00, 0x4a, 0x25, 0x00, 0x00, 0x89, 0xa1, 0x40, 0x10, 0x09, 0x00, - 0x21, 0x10, 0x49, 0x00, 0x80, 0x10, 0x02, 0x00, 0x01, 0x80, 0x06, 0x3c, 0x21, - 0x30, 0xc2, 0x00, 0x8c, 0x8e, 0xc6, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xc2, 0x8c, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x20, 0x02, 0x00, 0x1a, 0x00, 0xe4, - 0x01, 0x02, 0x00, 0x80, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x07, 0x00, - 0xff, 0xff, 0x01, 0x24, 0x04, 0x00, 0x81, 0x14, 0x00, 0x80, 0x01, 0x3c, 0x02, - 0x00, 0xe1, 0x15, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x06, 0x00, 0x12, 0x10, - 0x00, 0x00, 0x70, 0x00, 0xe3, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x43, - 0x00, 0x70, 0x00, 0xe2, 0xac, 0x94, 0x00, 0xe2, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x2a, 0x10, 0x82, 0x00, 0x02, 0x00, 0x40, 0x10, 0x01, 0x00, 0x8c, 0x25, 0x94, - 0x00, 0xe4, 0xac, 0x04, 0x00, 0xc3, 0x94, 0x80, 0x00, 0xe2, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x2a, 0x10, 0x62, 0x00, 0x02, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x80, 0x00, 0xe3, 0xac, 0x68, 0x00, 0xe2, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x42, 0x24, 0x68, 0x00, 0xe2, 0xac, 0x00, 0x93, 0x82, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x00, 0x93, 0x82, 0xaf, 0x84, 0x00, - 0x08, 0x25, 0x00, 0x00, 0x42, 0x91, 0x00, 0x00, 0x00, 0x00, 0x19, 0xff, 0x40, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x00, 0xe9, 0xac, 0x80, 0x00, 0xe3, 0x8c, - 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x62, 0x28, 0x02, 0x00, 0x40, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x82, 0x00, 0x03, 0x24, 0x70, 0x00, 0xe2, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x18, 0x00, 0x62, 0x00, 0x12, 0x18, 0x00, 0x00, 0x62, 0x10, 0x02, - 0x3c, 0xd3, 0x4d, 0x42, 0x34, 0x19, 0x00, 0x62, 0x00, 0x10, 0x90, 0x00, 0x00, - 0x82, 0x11, 0x12, 0x00, 0x74, 0x00, 0xe2, 0xac, 0x70, 0x00, 0xe4, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x64, 0x00, 0x84, 0x24, 0x68, 0x00, 0xe3, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x63, 0x24, 0x40, 0x10, 0x03, 0x00, 0x21, 0x10, 0x43, - 0x00, 0xc0, 0x10, 0x02, 0x00, 0x21, 0x10, 0x43, 0x00, 0x40, 0x10, 0x02, 0x00, - 0x21, 0x20, 0x82, 0x00, 0x70, 0x00, 0xe4, 0xac, 0x74, 0x00, 0xe4, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x64, 0x00, 0x84, 0x24, 0x68, 0x00, 0xe3, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x63, 0x24, 0x40, 0x10, 0x03, 0x00, 0x21, 0x10, 0x43, - 0x00, 0xc0, 0x10, 0x02, 0x00, 0x21, 0x10, 0x43, 0x00, 0x40, 0x10, 0x02, 0x00, - 0x21, 0x20, 0x82, 0x00, 0x74, 0x00, 0xe4, 0xac, 0xa4, 0x8c, 0x82, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0xa4, 0x8c, 0x82, 0xaf, 0x68, 0x01, - 0xe7, 0x24, 0x00, 0x00, 0x42, 0x91, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x42, - 0x30, 0xff, 0x00, 0x03, 0x24, 0x06, 0x00, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, - 0xb6, 0x0e, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x30, 0x80, 0x84, 0x27, 0x24, - 0x04, 0x00, 0x0c, 0x46, 0x01, 0x05, 0x24, 0x1c, 0x00, 0xbf, 0x8f, 0x18, 0x00, - 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, - 0x03, 0x20, 0x00, 0xbd, 0x27, 0xd8, 0xff, 0xbd, 0x27, 0x20, 0x00, 0xbf, 0xaf, - 0x1c, 0x00, 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, - 0x00, 0xb0, 0xaf, 0x21, 0x90, 0x80, 0x00, 0x40, 0x00, 0x43, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x10, 0x03, 0x00, 0x21, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, - 0x00, 0x21, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x1c, 0x00, 0x43, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x21, 0x98, 0x43, 0x00, 0x2c, 0x00, 0x42, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x10, 0x00, 0x42, 0x30, 0x1d, 0x00, 0x40, 0x10, 0x21, 0x80, - 0x00, 0x00, 0x01, 0x00, 0x02, 0x24, 0x0c, 0x00, 0x62, 0xae, 0x68, 0x00, 0x42, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x51, 0x24, 0x04, 0x01, 0x50, 0x26, - 0x21, 0x20, 0x00, 0x02, 0x18, 0x00, 0x65, 0x26, 0x58, 0x05, 0x00, 0x0c, 0x21, - 0x30, 0x20, 0x02, 0x21, 0x20, 0x40, 0x02, 0x21, 0x28, 0x00, 0x02, 0xfc, 0x1e, - 0x00, 0x0c, 0x21, 0x30, 0x20, 0x02, 0x21, 0x20, 0x00, 0x00, 0x28, 0x00, 0x42, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x44, 0x00, 0x00, 0x00, 0x43, 0x90, - 0x00, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x63, 0x30, 0x00, 0x00, 0x43, 0xa0, 0x01, - 0x00, 0x84, 0x24, 0x08, 0x00, 0x82, 0x28, 0xf6, 0xff, 0x40, 0x14, 0xdc, 0x00, - 0x10, 0x24, 0x82, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x42, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x42, 0x30, 0x0a, 0x00, 0x40, 0x10, - 0x01, 0x00, 0x02, 0x24, 0x0c, 0x00, 0x62, 0xae, 0x02, 0x00, 0x02, 0x24, 0x18, - 0x00, 0x62, 0xa2, 0x19, 0x00, 0x60, 0xa2, 0x1a, 0x00, 0x60, 0xa2, 0x21, 0x20, - 0x40, 0x02, 0x18, 0x00, 0x65, 0x26, 0x7a, 0x10, 0x00, 0x08, 0x03, 0x00, 0x06, - 0x24, 0x2c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x42, 0x30, - 0x1a, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x50, 0x92, 0x82, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x0a, 0x00, 0x51, 0x94, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, - 0x31, 0x26, 0x0d, 0x04, 0x22, 0x2a, 0x02, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x0c, 0x04, 0x11, 0x24, 0x50, 0x92, 0x84, 0x8f, 0x80, 0x9a, 0x85, 0x27, - 0x58, 0x05, 0x00, 0x0c, 0x21, 0x30, 0x20, 0x02, 0x04, 0x00, 0x02, 0x24, 0x80, - 0x9a, 0x82, 0xa3, 0x02, 0x00, 0x02, 0x24, 0x0c, 0x00, 0x62, 0xae, 0x21, 0x20, - 0x40, 0x02, 0x80, 0x9a, 0x85, 0x27, 0x21, 0x30, 0x20, 0x02, 0xfc, 0x1e, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x50, 0x8e, 0x82, 0x10, 0x00, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x80, 0x84, 0x27, 0x24, 0x04, 0x00, 0x0c, 0xd4, - 0x01, 0x05, 0x24, 0x2c, 0x00, 0x42, 0x8e, 0xfb, 0xff, 0x03, 0x24, 0x24, 0x10, - 0x43, 0x00, 0x2c, 0x00, 0x42, 0xae, 0xac, 0x89, 0x85, 0x8f, 0xe8, 0x00, 0x44, - 0x26, 0x99, 0x1c, 0x00, 0x0c, 0x21, 0x28, 0x05, 0x02, 0x20, 0x00, 0xbf, 0x8f, - 0x1c, 0x00, 0xb3, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, - 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x28, 0x00, 0xbd, 0x27, 0xd8, 0xff, - 0xbd, 0x27, 0x20, 0x00, 0xbf, 0xaf, 0x1c, 0x00, 0xb3, 0xaf, 0x18, 0x00, 0xb2, - 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x90, 0x80, 0x00, - 0x08, 0x00, 0xa6, 0x8c, 0x14, 0x00, 0xa4, 0x8c, 0x00, 0x00, 0xc2, 0x90, 0x00, - 0x00, 0x00, 0x00, 0x0f, 0x00, 0x43, 0x30, 0x02, 0x00, 0x02, 0x24, 0x5e, 0x00, - 0x62, 0x10, 0x03, 0x00, 0x62, 0x28, 0x05, 0x00, 0x40, 0x10, 0x01, 0x00, 0x02, - 0x24, 0x0a, 0x00, 0x62, 0x10, 0x21, 0x10, 0x86, 0x00, 0x76, 0x11, 0x00, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x24, 0x6b, 0x00, 0x62, 0x10, 0x04, - 0x00, 0x02, 0x24, 0x90, 0x00, 0x62, 0x10, 0x0c, 0x00, 0x82, 0x28, 0x76, 0x11, - 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x43, 0x90, 0xff, 0x00, 0x02, - 0x24, 0x02, 0x00, 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x84, 0x24, - 0x68, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x42, 0x24, 0xb7, - 0x00, 0x82, 0x14, 0x00, 0xa3, 0x02, 0x3c, 0x2c, 0x00, 0x42, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x10, 0x00, 0x42, 0x30, 0x79, 0x00, 0x40, 0x10, 0x00, 0xa3, 0x03, - 0x3c, 0x05, 0x01, 0x40, 0xa2, 0x00, 0x00, 0xc2, 0x90, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x99, 0x02, 0x00, 0x68, 0x00, 0x43, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2a, - 0x10, 0x63, 0x02, 0x02, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x21, 0x98, - 0x60, 0x00, 0x0c, 0x00, 0x51, 0x8e, 0x68, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x13, 0x00, 0x40, 0x18, 0x01, 0x00, 0x10, 0x24, 0x2a, 0x10, 0x13, 0x02, - 0x03, 0x00, 0x40, 0x14, 0x84, 0x00, 0x22, 0x26, 0x0c, 0x00, 0x42, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0xae, 0x6c, 0x00, 0x42, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x03, 0x00, 0x62, 0x12, 0x21, 0x20, 0x20, 0x02, 0x78, 0x16, 0x00, - 0x0c, 0x01, 0x00, 0x05, 0x24, 0x01, 0x00, 0x10, 0x26, 0x68, 0x00, 0x42, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x50, 0x00, 0xef, 0xff, 0x40, 0x10, 0x84, - 0x00, 0x31, 0x26, 0x6c, 0x00, 0x53, 0xae, 0x21, 0x80, 0x00, 0x00, 0x2a, 0x10, - 0x13, 0x02, 0x08, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x43, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, 0x18, 0x70, 0x00, 0x00, 0x00, 0x62, 0x90, - 0x00, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x42, 0x30, 0x00, 0x00, 0x62, 0xa0, 0x01, - 0x00, 0x10, 0x26, 0x08, 0x00, 0x02, 0x2a, 0xf4, 0xff, 0x40, 0x14, 0x2a, 0x10, - 0x13, 0x02, 0xc8, 0x00, 0x40, 0xae, 0xcc, 0x00, 0x40, 0xae, 0x6c, 0x00, 0x42, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x40, 0x10, 0xef, 0xff, 0x03, 0x24, - 0x2c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x67, 0x11, 0x00, 0x08, 0x24, - 0x10, 0x43, 0x00, 0xac, 0x89, 0x85, 0x8f, 0xe8, 0x00, 0x44, 0x26, 0x99, 0x1c, - 0x00, 0x0c, 0xe8, 0x03, 0xa5, 0x24, 0x76, 0x11, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x00, 0x02, 0x24, 0x06, 0x00, 0x82, 0x14, 0x03, 0x00, 0x02, 0x24, - 0x03, 0x00, 0xc3, 0x90, 0xff, 0x00, 0x02, 0x24, 0x02, 0x00, 0x62, 0x14, 0x03, - 0x00, 0x02, 0x24, 0x03, 0x00, 0x04, 0x24, 0x67, 0x00, 0x82, 0x14, 0x00, 0xa3, - 0x02, 0x3c, 0x2c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x42, - 0x30, 0x28, 0x00, 0x40, 0x10, 0xdb, 0xff, 0x03, 0x24, 0xc8, 0x00, 0x40, 0xae, - 0xcc, 0x00, 0x40, 0xae, 0x2c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x24, - 0x10, 0x43, 0x00, 0x68, 0x11, 0x00, 0x08, 0x01, 0x00, 0x42, 0x34, 0x06, 0x00, - 0x82, 0x14, 0x03, 0x00, 0x02, 0x24, 0x03, 0x00, 0xc3, 0x90, 0xff, 0x00, 0x02, - 0x24, 0x02, 0x00, 0x62, 0x14, 0x03, 0x00, 0x02, 0x24, 0x03, 0x00, 0x04, 0x24, - 0x52, 0x00, 0x82, 0x14, 0x00, 0xa3, 0x02, 0x3c, 0x2c, 0x00, 0x42, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x20, 0x00, 0x42, 0x30, 0x13, 0x00, 0x40, 0x10, 0xdb, 0xff, - 0x03, 0x24, 0xc8, 0x00, 0x40, 0xae, 0xcc, 0x00, 0x40, 0xae, 0x2c, 0x00, 0x42, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x24, 0x10, 0x43, 0x00, 0x2c, 0x00, 0x42, 0xae, - 0x01, 0x00, 0xc3, 0x90, 0x02, 0x00, 0xc2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x12, 0x02, 0x00, 0x21, 0x18, 0x62, 0x00, 0x50, 0x00, 0x43, 0xae, 0x54, 0x00, - 0x43, 0xae, 0x58, 0x00, 0x40, 0xae, 0x2c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x5f, 0x11, 0x00, 0x08, 0x40, 0x00, 0x42, 0x34, 0x00, 0xa3, 0x03, 0x3c, - 0xe8, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x42, 0x24, 0x76, 0x11, 0x00, 0x08, 0x00, 0x00, 0x62, 0xac, 0x32, 0x00, - 0x40, 0x14, 0x00, 0xa3, 0x02, 0x3c, 0x0a, 0x00, 0xc2, 0x94, 0x00, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x42, 0x24, 0xff, 0xff, 0x42, 0x30, 0x2c, 0x00, 0x82, 0x14, - 0x00, 0xa3, 0x02, 0x3c, 0x2c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x80, - 0x00, 0x42, 0x30, 0x30, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, - 0x45, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xa2, 0x24, 0xff, 0xff, 0x42, - 0x30, 0x2a, 0x00, 0x82, 0x14, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xc3, 0x94, - 0x5c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x25, 0x00, 0x62, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x11, 0x00, 0xa0, 0x10, 0x7b, 0xff, 0x03, 0x24, 0xc8, 0x00, - 0x40, 0xae, 0xcc, 0x00, 0x40, 0xae, 0x58, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x42, 0x24, 0xff, 0x00, 0x42, 0x30, 0x58, 0x00, 0x42, 0xae, - 0x2c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x24, 0x10, 0x43, 0x00, 0x40, - 0x00, 0x42, 0x34, 0x2c, 0x00, 0x42, 0xae, 0x65, 0x1c, 0x00, 0x0c, 0xe8, 0x00, - 0x44, 0x26, 0x76, 0x11, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x42, - 0x8e, 0x7f, 0xff, 0x03, 0x24, 0x24, 0x10, 0x43, 0x00, 0x25, 0x00, 0x42, 0x34, - 0x2c, 0x00, 0x42, 0xae, 0x85, 0x1c, 0x00, 0x0c, 0xe8, 0x00, 0x44, 0x26, 0x76, - 0x11, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x0d, 0x42, 0x34, 0x00, 0x00, - 0x43, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x63, 0x24, 0x00, 0x00, 0x43, - 0xac, 0xc8, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x42, 0x24, - 0xc8, 0x00, 0x42, 0xae, 0x20, 0x00, 0xbf, 0x8f, 0x1c, 0x00, 0xb3, 0x8f, 0x18, - 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, - 0xe0, 0x03, 0x28, 0x00, 0xbd, 0x27, 0xe0, 0xff, 0xbd, 0x27, 0x18, 0x00, 0xbf, - 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x80, 0x80, 0x00, - 0x2c, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x42, 0x30, 0x3c, - 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x11, 0x8e, 0x6c, 0x00, - 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x63, 0x24, 0x61, 0x00, 0x60, - 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x42, 0x30, 0x2b, - 0x00, 0x40, 0x10, 0xff, 0xff, 0x63, 0x24, 0x8c, 0x00, 0x03, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x62, 0x28, 0x20, 0x00, 0x40, 0x14, 0x05, 0x00, 0x62, - 0x28, 0x83, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x03, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x40, 0x11, 0x03, 0x00, 0x23, 0x10, 0x43, 0x00, 0x80, - 0x10, 0x02, 0x00, 0x21, 0x10, 0x43, 0x00, 0xc0, 0x10, 0x02, 0x00, 0x90, 0x00, - 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x43, 0x00, 0x02, 0x00, 0x60, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x07, 0x00, 0xff, 0xff, 0x01, 0x24, - 0x04, 0x00, 0x61, 0x14, 0x00, 0x80, 0x01, 0x3c, 0x02, 0x00, 0x41, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x0d, 0x00, 0x06, 0x00, 0x12, 0x10, 0x00, 0x00, 0xac, 0x89, - 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0x43, 0x00, 0x78, 0x00, 0x03, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x43, 0x00, 0x05, 0x00, 0x42, 0x28, - 0x66, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x9f, 0x14, 0x00, 0x0c, 0x21, - 0x20, 0x20, 0x02, 0x10, 0x00, 0x11, 0xae, 0x6c, 0x00, 0x03, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x63, 0x24, 0x2e, 0x00, 0x60, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x8d, 0x11, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x02, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x42, 0x30, 0x27, 0x00, 0x40, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x8c, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x62, 0x28, 0x20, 0x00, 0x40, 0x14, 0x05, 0x00, 0x62, 0x28, 0x50, 0x00, 0x40, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x40, 0x11, 0x03, 0x00, 0x23, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x21, - 0x10, 0x43, 0x00, 0xc0, 0x10, 0x02, 0x00, 0x90, 0x00, 0x03, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x1a, 0x00, 0x43, 0x00, 0x02, 0x00, 0x60, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x0d, 0x00, 0x07, 0x00, 0xff, 0xff, 0x01, 0x24, 0x04, 0x00, 0x61, 0x14, - 0x00, 0x80, 0x01, 0x3c, 0x02, 0x00, 0x41, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, - 0x00, 0x06, 0x00, 0x12, 0x10, 0x00, 0x00, 0xac, 0x89, 0x83, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x23, 0x10, 0x43, 0x00, 0x78, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x21, 0x10, 0x43, 0x00, 0x05, 0x00, 0x42, 0x28, 0x33, 0x00, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x00, 0x0c, 0x21, 0x20, 0x00, 0x02, 0x5c, - 0x80, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x29, 0x00, 0x40, 0x10, 0xfe, 0xff, - 0x03, 0x24, 0x8c, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x62, - 0x28, 0x20, 0x00, 0x40, 0x14, 0x05, 0x00, 0x62, 0x28, 0x26, 0x00, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x40, - 0x11, 0x03, 0x00, 0x23, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x21, 0x10, - 0x43, 0x00, 0xc0, 0x10, 0x02, 0x00, 0x90, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x1a, 0x00, 0x43, 0x00, 0x02, 0x00, 0x60, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x07, 0x00, 0xff, 0xff, 0x01, 0x24, 0x04, 0x00, 0x61, 0x14, 0x00, - 0x80, 0x01, 0x3c, 0x02, 0x00, 0x41, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, - 0x06, 0x00, 0x12, 0x10, 0x00, 0x00, 0xac, 0x89, 0x83, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x23, 0x10, 0x43, 0x00, 0x78, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x21, 0x10, 0x43, 0x00, 0x05, 0x00, 0x42, 0x28, 0x09, 0x00, 0x40, 0x10, 0x00, - 0x00, 0x00, 0x00, 0xbf, 0x15, 0x00, 0x0c, 0x21, 0x20, 0x00, 0x02, 0xf1, 0x11, - 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x24, 0x10, 0x43, 0x00, 0x2c, 0x00, 0x02, 0xae, 0x18, 0x00, 0xbf, 0x8f, - 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x20, - 0x00, 0xbd, 0x27, 0xe8, 0xff, 0xbd, 0x27, 0x14, 0x00, 0xbf, 0xaf, 0x10, 0x00, - 0xb0, 0xaf, 0x21, 0x80, 0x80, 0x00, 0x2c, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x88, 0x00, 0x42, 0x30, 0x88, 0x00, 0x03, 0x24, 0x0b, 0x00, 0x43, 0x14, - 0xf7, 0xff, 0x02, 0x24, 0x00, 0xa3, 0x03, 0x3c, 0xa0, 0x0d, 0x63, 0x34, 0x00, - 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, - 0x62, 0xac, 0xc5, 0x1c, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0xd0, 0x12, 0x00, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x24, 0x10, 0x62, 0x00, 0x40, 0x00, 0x63, 0x30, 0x17, 0x00, 0x60, 0x14, 0x2c, - 0x00, 0x02, 0xae, 0x00, 0xa3, 0x03, 0x3c, 0xe4, 0x0d, 0x63, 0x34, 0x00, 0x00, - 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, - 0xac, 0xc8, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, - 0xc8, 0x00, 0x02, 0xae, 0xcc, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x42, 0x24, 0xcc, 0x00, 0x02, 0xae, 0x0a, 0x00, 0x42, 0x28, 0x06, 0x00, - 0x40, 0x14, 0x0f, 0xff, 0x03, 0x24, 0x2c, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x24, 0x10, 0x43, 0x00, 0x10, 0x00, 0x42, 0x34, 0x2c, 0x00, 0x02, 0xae, - 0x2c, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x42, 0x30, 0x07, - 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0xae, 0x2c, 0x00, - 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x42, 0x34, 0xc9, 0x12, 0x00, - 0x08, 0x2c, 0x00, 0x02, 0xae, 0x2c, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x62, 0x30, 0x03, 0x00, 0x40, 0x10, 0x05, 0x00, 0x62, 0x34, 0xc9, - 0x12, 0x00, 0x08, 0x2c, 0x00, 0x02, 0xae, 0xc0, 0x00, 0x62, 0x30, 0x63, 0x00, - 0x40, 0x10, 0x37, 0xff, 0x02, 0x24, 0x50, 0x92, 0x84, 0x8f, 0x24, 0x18, 0x62, - 0x00, 0x2c, 0x00, 0x03, 0xae, 0x00, 0xa3, 0x02, 0x3c, 0x00, 0x0d, 0x42, 0x34, - 0x00, 0x00, 0x42, 0x94, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x40, 0x14, 0x48, - 0x00, 0x62, 0x34, 0x58, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, - 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, - 0x00, 0x2d, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x83, 0x94, - 0x50, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x43, 0x00, 0x27, - 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x82, 0x94, 0x54, 0x00, - 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x43, 0x00, 0x0c, 0x00, 0x40, - 0x10, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x12, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x62, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x83, 0x94, 0x5c, 0x00, 0x02, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x16, 0x00, 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x82, - 0x94, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x02, 0xae, 0x58, 0x00, 0x02, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x82, 0x94, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x02, 0xae, 0x04, 0x00, - 0x82, 0x94, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x02, 0xae, 0x06, 0x00, 0x82, - 0x94, 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x02, 0xae, 0x2c, 0x00, 0x02, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x42, 0x34, 0xc9, 0x12, 0x00, 0x08, 0x2c, - 0x00, 0x02, 0xae, 0x01, 0x80, 0x02, 0x3c, 0x2c, 0x9c, 0x42, 0x8c, 0x01, 0x80, - 0x03, 0x3c, 0x94, 0x9d, 0x63, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x25, 0x10, 0x43, - 0x00, 0x08, 0x00, 0x42, 0x30, 0x15, 0x00, 0x40, 0x14, 0x04, 0x00, 0x02, 0x24, - 0x00, 0x00, 0x82, 0xa0, 0x58, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x82, 0xa0, 0x5c, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x82, 0xa4, 0x50, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x82, - 0xa4, 0x54, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x82, 0xa4, - 0x00, 0xa3, 0x02, 0x3c, 0x00, 0x0d, 0x42, 0x34, 0x00, 0x00, 0x44, 0xa4, 0x2c, - 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x12, 0x00, 0x08, 0x48, 0x00, - 0x42, 0x34, 0x2c, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x42, - 0x34, 0x2c, 0x00, 0x02, 0xae, 0xac, 0x89, 0x85, 0x8f, 0xe8, 0x00, 0x04, 0x26, - 0x99, 0x1c, 0x00, 0x0c, 0x0a, 0x00, 0xa5, 0x24, 0x2c, 0x00, 0x02, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x30, 0x03, 0x00, 0x40, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x7d, 0x11, 0x00, 0x0c, 0x21, 0x20, 0x00, 0x02, 0x14, 0x00, 0xbf, - 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x18, 0x00, 0xbd, 0x27, - 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x9c, 0x0e, 0x00, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x44, 0x1b, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, - 0xbf, 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0x85, 0x00, - 0x0a, 0x00, 0x40, 0x10, 0x21, 0x18, 0x00, 0x00, 0x00, 0x00, 0x82, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x21, 0x10, 0x62, 0x00, 0x04, 0x00, 0x84, 0x24, 0x2b, 0x18, - 0x43, 0x00, 0x21, 0x18, 0x43, 0x00, 0x2b, 0x10, 0x85, 0x00, 0xf8, 0xff, 0x40, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x21, 0x10, 0x60, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x81, 0x83, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x40, 0x10, 0x03, 0x00, 0x21, 0x10, 0x43, 0x00, 0x00, 0x11, - 0x02, 0x00, 0x21, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x21, 0x10, 0x43, - 0x00, 0x00, 0x11, 0x02, 0x00, 0x21, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, - 0x21, 0x10, 0x43, 0x00, 0x1f, 0x28, 0x42, 0x24, 0xc0, 0x81, 0x82, 0xaf, 0x02, - 0x14, 0x02, 0x00, 0x18, 0x00, 0x82, 0x00, 0x12, 0x28, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x02, 0x14, 0x05, - 0x00, 0x2b, 0x10, 0x85, 0x00, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x80, 0xac, 0x04, 0x00, 0x84, 0x24, 0x2b, 0x10, 0x85, 0x00, 0xfc, - 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, - 0x00, 0x00, 0xa0, 0xff, 0xbd, 0x27, 0x5c, 0x00, 0xbf, 0xaf, 0x58, 0x00, 0xbe, - 0xaf, 0x54, 0x00, 0xb7, 0xaf, 0x50, 0x00, 0xb6, 0xaf, 0x4c, 0x00, 0xb5, 0xaf, - 0x48, 0x00, 0xb4, 0xaf, 0x44, 0x00, 0xb3, 0xaf, 0x40, 0x00, 0xb2, 0xaf, 0x3c, - 0x00, 0xb1, 0xaf, 0x38, 0x00, 0xb0, 0xaf, 0xff, 0x00, 0x9e, 0x24, 0xff, 0x1f, - 0x03, 0x3c, 0x00, 0xff, 0x63, 0x34, 0x24, 0xf0, 0xc3, 0x03, 0x00, 0xa0, 0x02, - 0x3c, 0x25, 0xf0, 0xc2, 0x03, 0x24, 0xb8, 0xa3, 0x00, 0x25, 0xb8, 0xe2, 0x02, - 0x21, 0x20, 0xc0, 0x03, 0x05, 0x13, 0x00, 0x0c, 0x21, 0x28, 0xe0, 0x02, 0x18, - 0x00, 0xa0, 0xaf, 0x01, 0x80, 0x11, 0x3c, 0x00, 0x9f, 0x31, 0x26, 0x80, 0x05, - 0x22, 0x26, 0x17, 0x00, 0x22, 0x12, 0x10, 0x00, 0xa0, 0xaf, 0x04, 0x00, 0x04, - 0x24, 0x01, 0x80, 0x03, 0x3c, 0x80, 0xa4, 0x63, 0x24, 0x28, 0x00, 0x22, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x44, 0x10, 0x00, 0x00, 0x00, 0x00, 0x24, - 0x00, 0x22, 0x8e, 0x10, 0x00, 0xa6, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x13, - 0x00, 0x08, 0x21, 0x30, 0xc2, 0x00, 0x18, 0x00, 0xa6, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0xc6, 0x24, 0x18, 0x00, 0xa6, 0xaf, 0x10, 0x00, 0xa6, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xc6, 0x24, 0x2c, 0x00, 0x31, 0x26, 0xee, - 0xff, 0x23, 0x16, 0x10, 0x00, 0xa6, 0xaf, 0x10, 0x00, 0x15, 0x24, 0x18, 0x00, - 0xa6, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0xc0, 0x18, 0x00, 0x10, 0xa2, - 0x2a, 0x03, 0x00, 0x40, 0x14, 0x00, 0xe0, 0x02, 0x24, 0x40, 0x10, 0x15, 0x00, - 0x23, 0x10, 0x02, 0x00, 0x24, 0x98, 0xe2, 0x02, 0x00, 0x10, 0xa2, 0x2a, 0x02, - 0x00, 0x40, 0x14, 0x00, 0x10, 0x12, 0x24, 0x21, 0x90, 0xa0, 0x02, 0x23, 0x18, - 0x7e, 0x02, 0x10, 0x00, 0xa6, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x06, - 0x00, 0x18, 0x00, 0xa2, 0x02, 0x12, 0x30, 0x00, 0x00, 0x23, 0x18, 0x66, 0x00, - 0x18, 0x00, 0xa6, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x46, 0x02, 0x12, - 0x30, 0x00, 0x00, 0x23, 0xa0, 0x66, 0x00, 0x2a, 0x10, 0x95, 0x02, 0x08, 0x00, - 0x40, 0x10, 0x11, 0x00, 0xa2, 0x2a, 0xb0, 0x00, 0x40, 0x10, 0x23, 0x10, 0xfe, - 0x02, 0x40, 0x80, 0x84, 0x27, 0x24, 0x04, 0x00, 0x0c, 0xae, 0x00, 0x05, 0x24, - 0x0f, 0x14, 0x00, 0x08, 0x23, 0x10, 0xfe, 0x02, 0x01, 0x80, 0x11, 0x3c, 0x00, - 0x9f, 0x31, 0x26, 0x01, 0x80, 0x06, 0x3c, 0x80, 0xa4, 0xc6, 0x24, 0x34, 0x00, - 0x26, 0x12, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x56, 0x26, 0x21, 0x30, 0xd2, - 0x02, 0x20, 0x00, 0xa6, 0xaf, 0x28, 0x00, 0x22, 0x8e, 0x04, 0x00, 0x06, 0x24, - 0x26, 0x00, 0x46, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x50, 0x24, 0x2a, 0x10, 0x92, 0x02, 0x05, 0x00, - 0x40, 0x14, 0x0e, 0x00, 0x16, 0xa6, 0x20, 0x00, 0xa6, 0x97, 0x00, 0x00, 0x00, - 0x00, 0x0e, 0x00, 0x06, 0xa6, 0x23, 0xa0, 0x92, 0x02, 0x0e, 0x00, 0x02, 0x96, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x23, 0x98, 0x62, 0x02, 0x02, - 0x11, 0x13, 0x00, 0x08, 0x00, 0x02, 0xa6, 0x2b, 0x10, 0x7e, 0x02, 0x07, 0x00, - 0x40, 0x14, 0x3c, 0x00, 0x13, 0xae, 0x0e, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, - 0x00, 0x21, 0x10, 0x53, 0x00, 0x2b, 0x10, 0x57, 0x00, 0x04, 0x00, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x84, 0x27, 0x24, 0x04, 0x00, 0x0c, 0xcb, - 0x00, 0x05, 0x24, 0x0e, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, - 0x02, 0xa6, 0x08, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x02, - 0xa6, 0x3c, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x02, 0xae, - 0x2c, 0x00, 0x31, 0x26, 0x01, 0x80, 0x06, 0x3c, 0x80, 0xa4, 0xc6, 0x24, 0xd3, - 0xff, 0x26, 0x16, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x11, 0x3c, 0x00, 0x9f, - 0x31, 0x26, 0x30, 0x00, 0x26, 0x12, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xb6, - 0x26, 0x21, 0x30, 0xd5, 0x02, 0x28, 0x00, 0xa6, 0xaf, 0x28, 0x00, 0x22, 0x8e, - 0x04, 0x00, 0x06, 0x24, 0x02, 0x00, 0x46, 0x10, 0x08, 0x00, 0x12, 0x24, 0x24, - 0x00, 0x32, 0x8e, 0x00, 0x00, 0x30, 0x8e, 0x20, 0x00, 0x40, 0x12, 0x00, 0x00, - 0x00, 0x00, 0x2a, 0x10, 0x95, 0x02, 0x05, 0x00, 0x40, 0x14, 0x16, 0x00, 0x16, - 0xa6, 0x28, 0x00, 0xa6, 0x97, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x06, 0xa6, - 0x23, 0xa0, 0x95, 0x02, 0x16, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x42, 0x24, 0x23, 0x98, 0x62, 0x02, 0x38, 0x00, 0x13, 0xae, 0x02, 0x11, - 0x13, 0x00, 0x10, 0x00, 0x02, 0xa6, 0x38, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x2b, 0x10, 0x7e, 0x00, 0x07, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x43, 0x00, 0x2b, - 0x10, 0x57, 0x00, 0x04, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, - 0x84, 0x27, 0x24, 0x04, 0x00, 0x0c, 0x00, 0x01, 0x05, 0x24, 0xff, 0xff, 0x52, - 0x26, 0xe2, 0xff, 0x40, 0x16, 0x80, 0x00, 0x10, 0x26, 0x2c, 0x00, 0x31, 0x26, - 0x01, 0x80, 0x06, 0x3c, 0x80, 0xa4, 0xc6, 0x24, 0xd5, 0xff, 0x26, 0x16, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x80, 0x11, 0x3c, 0x00, 0x9f, 0x31, 0x26, 0x01, 0x80, - 0x06, 0x3c, 0x80, 0xa4, 0xc6, 0x24, 0x37, 0x00, 0x26, 0x12, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, 0xb6, 0x26, 0x21, 0x30, 0xd5, 0x02, 0x30, 0x00, 0xa6, 0xaf, - 0x28, 0x00, 0x22, 0x8e, 0x04, 0x00, 0x06, 0x24, 0x02, 0x00, 0x46, 0x10, 0x08, - 0x00, 0x12, 0x24, 0x24, 0x00, 0x32, 0x8e, 0x00, 0x00, 0x30, 0x8e, 0x27, 0x00, - 0x40, 0x12, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x95, 0x02, 0x05, 0x00, 0x40, - 0x14, 0x0e, 0x00, 0x16, 0xa6, 0x30, 0x00, 0xa6, 0x97, 0x00, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x06, 0xa6, 0x23, 0xa0, 0x95, 0x02, 0x0e, 0x00, 0x02, 0x96, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x23, 0x98, 0x62, 0x02, 0x02, 0x11, - 0x13, 0x00, 0x08, 0x00, 0x02, 0xa6, 0x3c, 0x00, 0x13, 0xae, 0x38, 0x00, 0x02, - 0x8e, 0xff, 0x1f, 0x06, 0x3c, 0xff, 0xff, 0xc6, 0x34, 0x24, 0x10, 0x46, 0x00, - 0x00, 0x80, 0x06, 0x3c, 0x25, 0x10, 0x46, 0x00, 0x38, 0x00, 0x02, 0xae, 0x3c, - 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0x7e, 0x00, 0x07, 0x00, - 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, - 0x00, 0x21, 0x10, 0x43, 0x00, 0x2b, 0x10, 0x57, 0x00, 0x04, 0x00, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x84, 0x27, 0x24, 0x04, 0x00, 0x0c, 0x2c, - 0x01, 0x05, 0x24, 0xff, 0xff, 0x52, 0x26, 0xdb, 0xff, 0x40, 0x16, 0x80, 0x00, - 0x10, 0x26, 0x2c, 0x00, 0x31, 0x26, 0x01, 0x80, 0x06, 0x3c, 0x80, 0xa4, 0xc6, - 0x24, 0xce, 0xff, 0x26, 0x16, 0x00, 0x00, 0x00, 0x00, 0x40, 0xa8, 0x15, 0x00, - 0x01, 0x40, 0xa2, 0x2a, 0x34, 0xff, 0x40, 0x14, 0x23, 0x10, 0xfe, 0x02, 0x82, - 0x12, 0x02, 0x00, 0x5c, 0x00, 0xbf, 0x8f, 0x58, 0x00, 0xbe, 0x8f, 0x54, 0x00, - 0xb7, 0x8f, 0x50, 0x00, 0xb6, 0x8f, 0x4c, 0x00, 0xb5, 0x8f, 0x48, 0x00, 0xb4, - 0x8f, 0x44, 0x00, 0xb3, 0x8f, 0x40, 0x00, 0xb2, 0x8f, 0x3c, 0x00, 0xb1, 0x8f, - 0x38, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x60, 0x00, 0xbd, 0x27, 0xe0, - 0xff, 0xbd, 0x27, 0x18, 0x00, 0xbf, 0xaf, 0x48, 0x9a, 0x84, 0x8f, 0x1f, 0x06, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xc5, 0x1c, 0x00, 0x0c, 0x32, 0x00, 0x04, - 0x24, 0x90, 0x9e, 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x94, 0x9e, 0x83, 0xaf, - 0x98, 0x9e, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0x43, 0x00, 0x02, - 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x98, 0x9e, 0x83, 0xaf, 0x90, 0x9e, - 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x82, 0x18, 0x02, 0x00, 0x23, 0x10, 0x43, - 0x00, 0x90, 0x9e, 0x82, 0xaf, 0x98, 0x9e, 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x0b, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x94, 0x9e, 0x82, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x13, 0x02, 0x00, 0x1b, 0x00, 0x43, 0x00, 0x02, 0x00, - 0x60, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x07, 0x00, 0x12, 0x10, 0x00, - 0x00, 0x00, 0xa3, 0x01, 0x3c, 0x08, 0x00, 0x22, 0xa4, 0xc4, 0x81, 0x83, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x62, 0x24, 0xc4, 0x81, 0x82, 0xaf, 0x14, - 0x00, 0x42, 0x28, 0x02, 0x00, 0x40, 0x14, 0xf3, 0xff, 0x62, 0x24, 0xc4, 0x81, - 0x82, 0xaf, 0xd0, 0x89, 0x84, 0x27, 0xa4, 0x8c, 0x82, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x21, 0x40, 0x40, 0x00, 0x34, 0x00, 0x40, 0x18, 0x21, 0x30, 0x00, 0x00, - 0xc4, 0x81, 0x85, 0x8f, 0xcc, 0xcc, 0x07, 0x3c, 0xcd, 0xcc, 0xe7, 0x34, 0xb0, - 0x00, 0x82, 0x8c, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x82, 0xac, 0xb0, 0x00, - 0x83, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x65, 0x00, 0x19, 0x00, 0x47, - 0x00, 0x10, 0x48, 0x00, 0x00, 0x02, 0x11, 0x09, 0x00, 0x23, 0x18, 0x62, 0x00, - 0xb0, 0x00, 0x83, 0xac, 0xa8, 0x00, 0x82, 0x8c, 0x00, 0x00, 0x00, 0x00, 0xac, - 0x00, 0x82, 0xac, 0xa8, 0x00, 0x83, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, - 0x65, 0x00, 0x19, 0x00, 0x47, 0x00, 0x10, 0x48, 0x00, 0x00, 0x02, 0x11, 0x09, - 0x00, 0x23, 0x18, 0x62, 0x00, 0xa8, 0x00, 0x83, 0xac, 0xc0, 0x00, 0x82, 0x8c, - 0x00, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x82, 0xac, 0xc0, 0x00, 0x83, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x21, 0x10, 0x65, 0x00, 0x19, 0x00, 0x47, 0x00, 0x10, 0x48, - 0x00, 0x00, 0x02, 0x11, 0x09, 0x00, 0x23, 0x18, 0x62, 0x00, 0xc0, 0x00, 0x83, - 0xac, 0xb8, 0x00, 0x82, 0x8c, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x82, 0xac, - 0xb8, 0x00, 0x83, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x65, 0x00, 0x19, - 0x00, 0x47, 0x00, 0x10, 0x48, 0x00, 0x00, 0x02, 0x11, 0x09, 0x00, 0x23, 0x18, - 0x62, 0x00, 0xb8, 0x00, 0x83, 0xac, 0x01, 0x00, 0xc6, 0x24, 0x2a, 0x10, 0xc8, - 0x00, 0xd1, 0xff, 0x40, 0x14, 0x68, 0x01, 0x84, 0x24, 0x18, 0x00, 0xbf, 0x8f, - 0x20, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe8, - 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x48, 0x00, 0x83, 0x90, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x19, 0x03, 0x00, 0x00, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, - 0x00, 0x25, 0x10, 0x43, 0x00, 0x00, 0x00, 0xa2, 0xa0, 0x00, 0x00, 0xa3, 0x90, - 0xc3, 0xa5, 0x02, 0x34, 0x23, 0x10, 0x43, 0x00, 0x01, 0x00, 0xa3, 0x90, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x00, 0x23, 0x10, 0x43, 0x00, 0x23, 0x10, - 0x46, 0x00, 0x02, 0x00, 0xa2, 0xa0, 0x02, 0x12, 0x02, 0x00, 0x03, 0x00, 0xa2, - 0xa0, 0x04, 0x00, 0x84, 0x8c, 0xfc, 0x1e, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, - 0x00, 0x00, 0x00, 0xe0, 0xff, 0xbd, 0x27, 0x1c, 0x00, 0xbf, 0xaf, 0x18, 0x00, - 0xb2, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x80, 0x80, - 0x00, 0x04, 0x00, 0x12, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x43, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x03, 0x00, 0x21, 0x10, 0x43, 0x00, 0x80, - 0x10, 0x02, 0x00, 0x21, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x1c, 0x00, - 0x43, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, 0x28, 0x43, 0x00, 0x20, 0x00, 0x02, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x42, 0x30, 0x09, 0x00, 0x03, 0x24, - 0x09, 0x00, 0x43, 0x14, 0x01, 0x00, 0x02, 0x24, 0x0c, 0x00, 0xa2, 0xac, 0x05, - 0x00, 0x02, 0x24, 0x18, 0x00, 0xa2, 0xa0, 0x50, 0x00, 0x02, 0x92, 0x00, 0x00, - 0x00, 0x00, 0x19, 0x00, 0xa2, 0xa0, 0xe5, 0x14, 0x00, 0x08, 0x18, 0x00, 0xa5, - 0x24, 0x20, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x42, 0x30, - 0x14, 0x00, 0x40, 0x10, 0x01, 0x00, 0x02, 0x24, 0x0c, 0x00, 0xa2, 0xac, 0x06, - 0x00, 0x02, 0x24, 0x18, 0x00, 0xa2, 0xa0, 0x19, 0x00, 0xa0, 0xa0, 0x21, 0x20, - 0x00, 0x02, 0x18, 0x00, 0xa5, 0x24, 0x84, 0x14, 0x00, 0x0c, 0x04, 0x00, 0x06, - 0x24, 0x20, 0x00, 0x03, 0x8e, 0x07, 0xff, 0x02, 0x24, 0x24, 0x20, 0x62, 0x00, - 0x20, 0x00, 0x04, 0xae, 0x3c, 0x00, 0x03, 0x8e, 0x38, 0x00, 0x02, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x8d, 0x00, 0x62, 0x10, 0x08, 0x00, 0x82, 0x34, 0x61, 0x15, - 0x00, 0x08, 0x20, 0x00, 0x02, 0xae, 0x20, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x0a, 0x00, 0x42, 0x30, 0x0a, 0x00, 0x03, 0x24, 0x16, 0x00, 0x43, 0x14, - 0x01, 0x00, 0x02, 0x24, 0x0c, 0x00, 0xa2, 0xac, 0x0a, 0x00, 0x02, 0x24, 0x18, - 0x00, 0xa2, 0xa0, 0x30, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, - 0xa2, 0xa0, 0x21, 0x20, 0x00, 0x02, 0x18, 0x00, 0xa5, 0x24, 0x84, 0x14, 0x00, - 0x0c, 0x04, 0x00, 0x06, 0x24, 0x20, 0x00, 0x02, 0x8e, 0xf7, 0xff, 0x03, 0x24, - 0x24, 0x10, 0x43, 0x00, 0x20, 0x00, 0x02, 0xae, 0xac, 0x89, 0x82, 0x8f, 0x74, - 0x00, 0x45, 0x8e, 0x6c, 0x00, 0x04, 0x26, 0x99, 0x1c, 0x00, 0x0c, 0x21, 0x28, - 0x45, 0x00, 0x61, 0x15, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x02, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x42, 0x30, 0x1b, 0x00, 0x40, 0x10, - 0x01, 0x00, 0x02, 0x24, 0x0c, 0x00, 0xa2, 0xac, 0x20, 0x00, 0x02, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x20, 0x00, 0x42, 0x30, 0x02, 0x00, 0x40, 0x10, 0x09, 0x00, - 0x03, 0x24, 0x0b, 0x00, 0x03, 0x24, 0x18, 0x00, 0xa3, 0xa0, 0x30, 0x00, 0x02, - 0x92, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0xa2, 0xa0, 0x21, 0x20, 0x00, 0x02, - 0x18, 0x00, 0xa5, 0x24, 0x84, 0x14, 0x00, 0x0c, 0x04, 0x00, 0x06, 0x24, 0x20, - 0x00, 0x03, 0x8e, 0x1f, 0xff, 0x02, 0x24, 0x24, 0x20, 0x62, 0x00, 0x20, 0x00, - 0x04, 0xae, 0x3c, 0x00, 0x03, 0x8e, 0x38, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x53, 0x00, 0x62, 0x14, 0xf7, 0xff, 0x02, 0x24, 0x60, 0x15, 0x00, 0x08, - 0x24, 0x10, 0x82, 0x00, 0x3c, 0x00, 0x03, 0x8e, 0x38, 0x00, 0x02, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x3d, 0x00, 0x62, 0x10, 0x07, 0x00, 0x02, 0x24, 0x18, 0x00, - 0x11, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x22, 0xa2, 0x3c, 0x00, 0x02, - 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x02, 0x00, 0x30, 0x00, 0x03, 0x92, - 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x43, 0x00, 0x0d, 0x00, 0x22, 0xa2, 0x03, - 0x00, 0x02, 0x24, 0x0c, 0x00, 0xa2, 0xac, 0x10, 0x00, 0xb1, 0xac, 0x04, 0x00, - 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x04, 0x00, 0x22, - 0xae, 0x21, 0x20, 0x00, 0x02, 0x08, 0x00, 0x26, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x84, 0x14, 0x00, 0x0c, 0x0c, 0x00, 0x25, 0x26, 0x3c, 0x00, 0x03, 0x8e, 0x34, - 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x62, 0x14, 0x6c, 0x00, - 0x04, 0x26, 0xac, 0x89, 0x82, 0x8f, 0x74, 0x00, 0x45, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x99, 0x1c, 0x00, 0x0c, 0x21, 0x28, 0x45, 0x00, 0x3c, 0x00, 0x02, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x0f, 0x00, 0x42, 0x30, 0x3c, - 0x00, 0x02, 0xae, 0x00, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, - 0x02, 0xae, 0x3c, 0x00, 0x03, 0x8e, 0x38, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x62, 0x14, 0xf7, 0xff, 0x03, 0x24, 0x20, 0x00, 0x02, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x24, 0x18, 0x43, 0x00, 0x04, 0x00, 0x42, 0x30, 0x06, - 0x00, 0x40, 0x10, 0x20, 0x00, 0x03, 0xae, 0xfb, 0xff, 0x02, 0x24, 0x24, 0x10, - 0x62, 0x00, 0x20, 0x00, 0x02, 0xae, 0x65, 0x1c, 0x00, 0x0c, 0xd0, 0x00, 0x44, - 0x26, 0x20, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x15, 0x00, 0x08, - 0x7f, 0xff, 0x03, 0x24, 0x01, 0x00, 0x02, 0x24, 0x0c, 0x00, 0xa2, 0xac, 0x08, - 0x00, 0x02, 0x24, 0x18, 0x00, 0xa2, 0xa0, 0x30, 0x00, 0x02, 0x92, 0x00, 0x00, - 0x00, 0x00, 0x19, 0x00, 0xa2, 0xa0, 0x21, 0x20, 0x00, 0x02, 0x18, 0x00, 0xa5, - 0x24, 0x84, 0x14, 0x00, 0x0c, 0x04, 0x00, 0x06, 0x24, 0x20, 0x00, 0x02, 0x8e, - 0x77, 0xff, 0x03, 0x24, 0x24, 0x10, 0x43, 0x00, 0x20, 0x00, 0x02, 0xae, 0x1c, - 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, - 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x20, 0x00, 0xbd, 0x27, 0x20, 0x00, 0xa2, - 0x28, 0x1a, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x22, 0x33, 0x0b, 0x3c, - 0x00, 0x11, 0x6b, 0x35, 0x66, 0x77, 0x0a, 0x3c, 0x44, 0x55, 0x4a, 0x35, 0xaa, - 0xbb, 0x09, 0x3c, 0x88, 0x99, 0x29, 0x35, 0xee, 0xff, 0x08, 0x3c, 0xcc, 0xdd, - 0x08, 0x35, 0xa5, 0xa5, 0x07, 0x3c, 0xa5, 0xa5, 0xe7, 0x34, 0xf0, 0xf0, 0x06, - 0x3c, 0xf0, 0xf0, 0xc6, 0x34, 0xff, 0xff, 0x03, 0x24, 0x00, 0x00, 0x8b, 0xac, - 0x04, 0x00, 0x8a, 0xac, 0x08, 0x00, 0x89, 0xac, 0x0c, 0x00, 0x88, 0xac, 0x10, - 0x00, 0x80, 0xac, 0x14, 0x00, 0x87, 0xac, 0x18, 0x00, 0x86, 0xac, 0x1c, 0x00, - 0x83, 0xac, 0xe0, 0xff, 0xa5, 0x24, 0x20, 0x00, 0xa2, 0x28, 0xf5, 0xff, 0x40, - 0x10, 0x20, 0x00, 0x84, 0x24, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x60, 0x80, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x40, 0x14, 0x20, - 0x00, 0xa2, 0x28, 0xbd, 0x15, 0x00, 0x08, 0x21, 0x10, 0x00, 0x00, 0x30, 0x00, - 0x40, 0x14, 0x21, 0x18, 0x00, 0x00, 0x22, 0x33, 0x0b, 0x3c, 0x00, 0x11, 0x6b, - 0x35, 0x66, 0x77, 0x0a, 0x3c, 0x44, 0x55, 0x4a, 0x35, 0xaa, 0xbb, 0x09, 0x3c, - 0x88, 0x99, 0x29, 0x35, 0xee, 0xff, 0x08, 0x3c, 0xcc, 0xdd, 0x08, 0x35, 0xa5, - 0xa5, 0x07, 0x3c, 0xa5, 0xa5, 0xe7, 0x34, 0xf0, 0xf0, 0x06, 0x3c, 0xf0, 0xf0, - 0xc6, 0x34, 0x00, 0x00, 0x82, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x26, 0x10, 0x4b, - 0x00, 0x25, 0x18, 0x62, 0x00, 0x04, 0x00, 0x82, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x26, 0x10, 0x4a, 0x00, 0x25, 0x18, 0x62, 0x00, 0x08, 0x00, 0x82, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x26, 0x10, 0x49, 0x00, 0x25, 0x18, 0x62, 0x00, 0x0c, 0x00, - 0x82, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x26, 0x10, 0x48, 0x00, 0x25, 0x18, 0x62, - 0x00, 0x10, 0x00, 0x82, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x25, 0x18, 0x62, 0x00, - 0x14, 0x00, 0x82, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x26, 0x10, 0x47, 0x00, 0x25, - 0x18, 0x62, 0x00, 0x18, 0x00, 0x82, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x26, 0x10, - 0x46, 0x00, 0x25, 0x18, 0x62, 0x00, 0x1c, 0x00, 0x82, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x27, 0x10, 0x02, 0x00, 0x25, 0x18, 0x62, 0x00, 0xe0, 0xff, 0xa5, 0x24, - 0x20, 0x00, 0xa2, 0x28, 0xde, 0xff, 0x40, 0x10, 0x20, 0x00, 0x84, 0x24, 0x21, - 0x10, 0x60, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, - 0xbd, 0x27, 0x18, 0x00, 0xbf, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, - 0xaf, 0x21, 0x88, 0x80, 0x00, 0x40, 0x00, 0x23, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x40, 0x10, 0x03, 0x00, 0x21, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x21, - 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x1c, 0x00, 0x23, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x21, 0x10, 0x43, 0x00, 0x01, 0x00, 0x03, 0x24, 0x0c, 0x00, 0x43, - 0xac, 0x01, 0x80, 0x04, 0x3c, 0x44, 0xc1, 0x84, 0x24, 0x00, 0x00, 0x82, 0x8c, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x67, - 0x15, 0x00, 0x0c, 0x3c, 0x1f, 0x05, 0x24, 0x68, 0x80, 0x84, 0x8f, 0x64, 0x80, - 0x90, 0x8f, 0x80, 0x00, 0x23, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x64, - 0x00, 0x03, 0x00, 0x40, 0x10, 0x04, 0x00, 0x82, 0x28, 0x21, 0x20, 0x60, 0x00, - 0x04, 0x00, 0x82, 0x28, 0x02, 0x00, 0x40, 0x10, 0x04, 0x00, 0x02, 0x2a, 0x04, - 0x00, 0x04, 0x24, 0x03, 0x00, 0x40, 0x10, 0x2a, 0x10, 0x90, 0x00, 0x04, 0x00, - 0x10, 0x24, 0x2a, 0x10, 0x90, 0x00, 0x02, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x21, 0x80, 0x80, 0x00, 0x23, 0x20, 0x90, 0x00, 0xf0, 0x12, 0x00, 0x0c, - 0x01, 0x00, 0x84, 0x24, 0x21, 0x20, 0x20, 0x02, 0x01, 0x80, 0x05, 0x3c, 0x44, - 0xc1, 0xa5, 0x24, 0xfc, 0x1e, 0x00, 0x0c, 0x21, 0x30, 0x02, 0x02, 0x18, 0x00, - 0xbf, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, - 0x03, 0x20, 0x00, 0xbd, 0x27, 0xd8, 0xff, 0xbd, 0x27, 0x24, 0x00, 0xbf, 0xaf, - 0x20, 0x00, 0xb4, 0xaf, 0x1c, 0x00, 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, - 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x88, 0x80, 0x00, 0x00, 0xa3, - 0x03, 0x3c, 0xd4, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, 0x04, 0x00, 0x33, 0x8e, - 0x3c, 0x00, 0x22, 0x8e, 0x34, 0x00, 0x23, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, - 0xa0, 0x43, 0x00, 0x21, 0x90, 0x60, 0x00, 0x38, 0x00, 0x22, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x30, 0x00, 0x42, 0x12, 0x0f, 0x00, 0x94, 0x32, 0x10, 0x00, 0x30, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x00, 0x22, 0xae, 0x34, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, - 0x10, 0x42, 0x02, 0x0f, 0x00, 0x42, 0x30, 0x2a, 0x10, 0x54, 0x00, 0x08, 0x00, - 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x62, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0xfc, 0xff, 0x42, 0x24, 0x08, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x23, 0x10, 0x43, 0x00, 0x84, 0x00, 0x62, 0xae, 0x04, 0x00, 0x02, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x24, 0x0a, 0x00, 0x42, 0x2c, 0x04, 0x00, - 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x80, 0x84, 0x27, 0x24, 0x04, 0x00, - 0x0c, 0x4f, 0x02, 0x05, 0x24, 0x04, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x42, 0x24, 0x09, 0x00, 0x40, 0x14, 0x04, 0x00, 0x02, 0xae, 0xe4, - 0xaa, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xae, 0xe4, 0xaa, - 0x90, 0xaf, 0x64, 0x00, 0x62, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, - 0x24, 0x64, 0x00, 0x62, 0xae, 0x01, 0x00, 0x42, 0x26, 0x0f, 0x00, 0x52, 0x30, - 0x38, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xd2, 0xff, 0x42, 0x16, 0x00, - 0x00, 0x00, 0x00, 0x10, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x80, 0x84, 0x27, 0x24, 0x04, 0x00, - 0x0c, 0x59, 0x02, 0x05, 0x24, 0x18, 0x00, 0x20, 0xae, 0x10, 0x00, 0x22, 0x26, - 0x14, 0x00, 0x22, 0xae, 0xa8, 0x9e, 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x0f, - 0x00, 0x60, 0x10, 0x01, 0x00, 0x05, 0x24, 0x02, 0x00, 0x04, 0x24, 0x10, 0x00, - 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x45, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x51, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x64, 0xac, 0x00, 0x00, 0x63, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0xf4, 0xff, 0x60, 0x14, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x20, 0xae, 0x3c, 0x00, 0x20, 0xae, 0x34, 0x00, 0x20, 0xae, 0x30, 0x00, 0x20, - 0xae, 0x20, 0x00, 0x23, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x62, 0x30, - 0x05, 0x00, 0x40, 0x10, 0xfb, 0xff, 0x02, 0x24, 0x24, 0x10, 0x62, 0x00, 0x20, - 0x00, 0x22, 0xae, 0x65, 0x1c, 0x00, 0x0c, 0xd0, 0x00, 0x64, 0x26, 0x20, 0x00, - 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x42, 0x34, 0x20, 0x00, 0x22, - 0xae, 0x85, 0x1c, 0x00, 0x0c, 0x6c, 0x00, 0x24, 0x26, 0x65, 0x1c, 0x00, 0x0c, - 0x54, 0x00, 0x24, 0x26, 0x24, 0x00, 0xbf, 0x8f, 0x20, 0x00, 0xb4, 0x8f, 0x1c, - 0x00, 0xb3, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, - 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x28, 0x00, 0xbd, 0x27, 0xe0, 0xff, 0xbd, - 0x27, 0x18, 0x00, 0xbf, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, - 0x21, 0x80, 0x80, 0x00, 0x21, 0x88, 0xa0, 0x00, 0x20, 0x00, 0x02, 0x8e, 0x0d, - 0xff, 0x03, 0x24, 0x24, 0x10, 0x43, 0x00, 0x09, 0x00, 0x42, 0x34, 0xf8, 0x15, - 0x00, 0x0c, 0x20, 0x00, 0x02, 0xae, 0x50, 0x00, 0x11, 0xae, 0x04, 0x00, 0x03, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x42, 0x34, 0x2c, 0x00, 0x62, 0xac, 0x18, 0x00, 0xbf, 0x8f, 0x14, - 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x20, 0x00, - 0xbd, 0x27, 0xd0, 0xff, 0xbd, 0x27, 0x28, 0x00, 0xbf, 0xaf, 0x24, 0x00, 0xb5, - 0xaf, 0x20, 0x00, 0xb4, 0xaf, 0x1c, 0x00, 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, - 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x88, 0x80, 0x00, 0x21, - 0x98, 0xa0, 0x00, 0x04, 0x00, 0x32, 0x8e, 0x08, 0x00, 0x75, 0x8e, 0x14, 0x00, - 0x64, 0x8e, 0x00, 0x00, 0xa2, 0x92, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x42, - 0x30, 0x2f, 0x00, 0x40, 0x14, 0x00, 0xa3, 0x02, 0x3c, 0x7c, 0x0d, 0x42, 0x34, - 0x00, 0x00, 0x43, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x63, 0x24, 0x00, - 0x00, 0x43, 0xac, 0x1c, 0x00, 0x24, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x62, 0x30, 0x03, 0x00, 0x40, - 0x10, 0xfb, 0x00, 0x62, 0x30, 0xb6, 0x16, 0x00, 0x08, 0x00, 0x00, 0x82, 0xa0, - 0x1c, 0x00, 0x23, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x90, 0x00, - 0x00, 0x00, 0x00, 0xfd, 0x00, 0x42, 0x30, 0x00, 0x00, 0x62, 0xa0, 0x20, 0x00, - 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x30, 0x03, 0x00, 0x40, - 0x14, 0x21, 0x20, 0x20, 0x02, 0x78, 0x16, 0x00, 0x0c, 0x05, 0x00, 0x05, 0x24, - 0x20, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x42, 0x34, 0x20, - 0x00, 0x22, 0xae, 0x6c, 0x00, 0x22, 0x26, 0x6c, 0x00, 0x23, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x05, 0x00, 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, 0xf4, 0xaa, 0x82, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x7d, 0x01, 0x43, 0x14, 0x00, 0x00, 0x00, 0x00, - 0xac, 0x89, 0x85, 0x8f, 0x6c, 0x00, 0x24, 0x26, 0x99, 0x1c, 0x00, 0x0c, 0xd0, - 0x07, 0xa5, 0x24, 0x46, 0x18, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xa2, 0x92, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x42, 0x30, 0xfb, 0xff, 0x43, - 0x24, 0x07, 0x00, 0x62, 0x2c, 0x49, 0x00, 0x40, 0x10, 0x80, 0x10, 0x03, 0x00, - 0x01, 0x80, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0x40, 0x8c, 0x22, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x02, 0x24, 0x5e, 0x01, 0x82, 0x14, 0x00, 0xa3, 0x02, 0x3c, 0xcc, 0x0d, 0x42, - 0x34, 0x00, 0x00, 0x43, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x63, 0x24, - 0x00, 0x00, 0x43, 0xac, 0x20, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x42, 0x30, 0x0e, 0x00, 0x40, 0x10, 0xfd, 0xff, 0x03, 0x24, 0xcc, 0x00, - 0x40, 0xae, 0x85, 0x1c, 0x00, 0x0c, 0x6c, 0x00, 0x24, 0x26, 0x20, 0x00, 0x22, - 0x8e, 0xfe, 0xff, 0x03, 0x24, 0x24, 0x18, 0x43, 0x00, 0x08, 0x00, 0x42, 0x30, - 0x54, 0x01, 0x40, 0x10, 0x20, 0x00, 0x23, 0xae, 0xf7, 0xff, 0x02, 0x24, 0x24, - 0x10, 0x62, 0x00, 0x2d, 0x18, 0x00, 0x08, 0x10, 0x00, 0x42, 0x34, 0x20, 0x00, - 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x24, 0x10, 0x43, 0x00, 0x18, 0x00, 0x42, - 0x34, 0x20, 0x00, 0x22, 0xae, 0x2c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x42, 0x34, 0x2c, 0x00, 0x42, 0xae, 0xf8, 0x15, 0x00, 0x0c, 0x21, - 0x20, 0x20, 0x02, 0x46, 0x18, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x02, 0x24, 0x37, 0x01, 0x82, 0x14, 0x00, 0xa3, 0x02, 0x3c, 0x20, 0x00, 0x22, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x30, 0xb8, 0x00, 0x40, 0x10, - 0x00, 0xa3, 0x03, 0x3c, 0xcc, 0x00, 0x40, 0xae, 0x85, 0x1c, 0x00, 0x0c, 0x6c, - 0x00, 0x24, 0x26, 0x20, 0x00, 0x22, 0x8e, 0xf6, 0xff, 0x03, 0x24, 0x24, 0x10, - 0x43, 0x00, 0x46, 0x18, 0x00, 0x08, 0x20, 0x00, 0x22, 0xae, 0x04, 0x00, 0x02, - 0x24, 0x27, 0x01, 0x82, 0x14, 0x00, 0xa3, 0x02, 0x3c, 0x22, 0x17, 0x00, 0x08, - 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x82, 0x24, 0xe9, 0x13, 0x42, 0x2c, 0x21, - 0x01, 0x40, 0x10, 0x00, 0xa3, 0x02, 0x3c, 0x22, 0x17, 0x00, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x6c, 0x80, 0x84, 0x27, 0x24, 0x04, 0x00, 0x0c, 0x5a, 0x03, 0x05, - 0x24, 0x20, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x30, - 0x20, 0x01, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xa2, 0x92, 0x00, - 0x00, 0x00, 0x00, 0x0f, 0x00, 0x45, 0x30, 0xff, 0x00, 0xa3, 0x30, 0x34, 0x00, - 0x24, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, 0x18, 0x64, 0x00, 0x0f, 0x00, 0x63, - 0x30, 0x3c, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0x44, 0x00, - 0x0f, 0x00, 0x42, 0x30, 0x2a, 0x10, 0x43, 0x00, 0x0b, 0x00, 0x40, 0x10, 0x00, - 0xa3, 0x03, 0x3c, 0xc0, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, 0x21, 0x20, 0x20, - 0x02, 0x78, 0x16, 0x00, 0x0c, 0x03, 0x00, 0x05, 0x24, 0x46, 0x18, 0x00, 0x08, - 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xa3, 0x30, 0x34, 0x00, 0x22, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x44, 0x00, 0x43, 0x10, 0xff, 0x00, 0xb4, 0x30, 0x1c, 0x00, - 0x23, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x90, 0x00, 0x00, 0x00, - 0x00, 0x06, 0x00, 0x42, 0x34, 0x00, 0x00, 0x62, 0xa0, 0xc8, 0x00, 0x40, 0xae, - 0xcc, 0x00, 0x40, 0xae, 0x10, 0x00, 0x30, 0x8e, 0x34, 0x00, 0x22, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x0f, 0x00, 0x42, 0x30, 0x34, 0x00, - 0x22, 0xae, 0x00, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x22, - 0xae, 0x04, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x24, - 0x0a, 0x00, 0x42, 0x2c, 0x04, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x6c, - 0x80, 0x84, 0x27, 0x24, 0x04, 0x00, 0x0c, 0x95, 0x03, 0x05, 0x24, 0x04, 0x00, - 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x24, 0x09, 0x00, 0x40, - 0x14, 0x04, 0x00, 0x02, 0xae, 0xe4, 0xaa, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0xae, 0xe4, 0xaa, 0x90, 0xaf, 0x64, 0x00, 0x42, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x64, 0x00, 0x42, 0xae, 0x34, 0x00, - 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xde, 0xff, 0x54, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x10, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, 0x14, - 0x10, 0x00, 0x22, 0x26, 0x14, 0x00, 0x22, 0xae, 0x20, 0x00, 0x22, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x42, 0x30, 0x0f, 0x00, 0x40, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x23, 0x8e, 0x34, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x05, 0x00, 0x62, 0x14, 0x6c, 0x00, 0x24, 0x26, 0x85, 0x1c, 0x00, 0x0c, - 0x6c, 0x00, 0x24, 0x26, 0x88, 0x17, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0xac, - 0x89, 0x82, 0x8f, 0x74, 0x00, 0x45, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x99, 0x1c, - 0x00, 0x0c, 0x21, 0x28, 0x45, 0x00, 0x00, 0x00, 0xa2, 0x92, 0x00, 0x00, 0x00, - 0x00, 0x0f, 0x00, 0x43, 0x30, 0x09, 0x00, 0x02, 0x24, 0x0e, 0x00, 0x62, 0x10, - 0x0a, 0x00, 0x62, 0x28, 0x05, 0x00, 0x40, 0x10, 0x07, 0x00, 0x02, 0x24, 0x61, - 0x00, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0x46, 0x18, 0x00, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x0a, 0x00, 0x02, 0x24, 0x18, 0x00, 0x62, 0x10, 0x0b, 0x00, 0x02, - 0x24, 0x25, 0x00, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0x46, 0x18, 0x00, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x24, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x82, 0x30, 0x0d, 0x00, 0x40, 0x14, 0x00, 0xa3, 0x02, 0x3c, 0x3c, 0x00, - 0x23, 0x8e, 0x38, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x62, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x82, 0x34, 0x20, 0x00, 0x22, 0xae, - 0x2c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x34, 0x2c, - 0x00, 0x42, 0xae, 0x00, 0xa3, 0x02, 0x3c, 0x3e, 0x18, 0x00, 0x08, 0xf0, 0x0d, - 0x42, 0x34, 0x20, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x42, - 0x34, 0x20, 0x00, 0x22, 0xae, 0x2c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x42, 0x34, 0x2c, 0x00, 0x42, 0xae, 0x00, 0xa3, 0x03, 0x3c, 0xf4, - 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x42, 0x24, 0x42, 0x18, 0x00, 0x08, 0x00, 0x00, 0x62, 0xac, 0x20, 0x00, 0x22, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x42, 0x30, 0x08, 0x00, 0x40, 0x14, - 0xf5, 0xff, 0x03, 0x24, 0x00, 0xa3, 0x03, 0x3c, 0xec, 0x0d, 0x63, 0x34, 0x00, - 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x46, 0x18, - 0x00, 0x08, 0x00, 0x00, 0x62, 0xac, 0xcc, 0x00, 0x40, 0xae, 0x20, 0x00, 0x22, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x24, 0x10, 0x43, 0x00, 0x20, 0x00, 0x22, 0xae, - 0x10, 0x00, 0x30, 0x8e, 0x18, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x0d, - 0x00, 0x02, 0x12, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x42, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x42, 0x24, 0x08, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x21, 0x10, 0x43, 0x00, 0x84, 0x00, 0x42, 0xae, 0x00, 0x00, 0x10, 0x8e, - 0x18, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x02, 0x16, 0x00, - 0x00, 0x00, 0x00, 0x34, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x22, 0xae, 0x10, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x22, - 0xae, 0x34, 0x00, 0x23, 0x8e, 0x38, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x22, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x2d, 0x18, 0x00, 0x08, 0x08, 0x00, 0x42, 0x34, 0x85, 0x1c, - 0x00, 0x0c, 0x6c, 0x00, 0x24, 0x26, 0x46, 0x18, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0xa2, 0x92, 0x00, 0x00, 0x00, 0x00, 0x02, 0x21, 0x02, 0x00, - 0xff, 0x00, 0x83, 0x30, 0x30, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2a, - 0x00, 0x62, 0x14, 0xff, 0x00, 0x82, 0x30, 0x01, 0x00, 0x02, 0x24, 0x10, 0x00, - 0x62, 0xae, 0x04, 0x00, 0x71, 0xae, 0x00, 0x00, 0x60, 0xae, 0xa8, 0x9e, 0x82, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, - 0xc0, 0x9e, 0x84, 0x27, 0x65, 0x1c, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xd8, - 0x9e, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0xac, 0xd8, 0x9e, - 0x93, 0xaf, 0x30, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, - 0x24, 0x0f, 0x00, 0x42, 0x30, 0x30, 0x00, 0x22, 0xae, 0x20, 0x00, 0x22, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x42, 0x30, 0x05, 0x00, 0x40, 0x10, 0x00, - 0x00, 0x00, 0x00, 0xac, 0x89, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x46, 0x18, - 0x00, 0x08, 0x28, 0x00, 0x22, 0xae, 0x20, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x80, 0x00, 0x42, 0x34, 0x20, 0x00, 0x22, 0xae, 0x74, 0x00, 0x42, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x82, 0x10, 0x02, 0x00, 0xac, 0x89, 0x83, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x21, 0x10, 0x43, 0x00, 0x46, 0x18, 0x00, 0x08, 0x28, 0x00, - 0x22, 0xae, 0x30, 0x00, 0x23, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0x43, - 0x00, 0x0f, 0x00, 0x42, 0x30, 0x05, 0x00, 0x42, 0x28, 0x0a, 0x00, 0x40, 0x10, - 0x00, 0xa3, 0x03, 0x3c, 0x20, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x40, - 0x00, 0x42, 0x34, 0x20, 0x00, 0x22, 0xae, 0x2c, 0x00, 0x42, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x42, 0x34, 0x46, 0x18, 0x00, 0x08, 0x2c, 0x00, 0x42, - 0xae, 0xc4, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, 0x21, 0x20, 0x20, 0x02, 0x78, - 0x16, 0x00, 0x0c, 0x04, 0x00, 0x05, 0x24, 0x46, 0x18, 0x00, 0x08, 0x00, 0x00, - 0x00, 0x00, 0xbc, 0x0d, 0x42, 0x34, 0x00, 0x00, 0x43, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x63, 0x24, 0x00, 0x00, 0x43, 0xac, 0xc8, 0x00, 0x42, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0xc8, 0x00, 0x42, 0xae, 0x28, - 0x00, 0xbf, 0x8f, 0x24, 0x00, 0xb5, 0x8f, 0x20, 0x00, 0xb4, 0x8f, 0x1c, 0x00, - 0xb3, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, - 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x30, 0x00, 0xbd, 0x27, 0xd0, 0xff, 0xbd, 0x27, - 0x2c, 0x00, 0xbf, 0xaf, 0x28, 0x00, 0xb6, 0xaf, 0x24, 0x00, 0xb5, 0xaf, 0x20, - 0x00, 0xb4, 0xaf, 0x1c, 0x00, 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, - 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0xa0, 0x80, 0x00, 0x21, 0xa8, 0xa0, - 0x00, 0xac, 0x89, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xaa, 0x82, 0xaf, - 0x08, 0x00, 0xb3, 0x8e, 0x14, 0x00, 0xb6, 0x8e, 0x7c, 0x00, 0x83, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x05, 0x00, 0x60, 0x10, 0x2a, 0x10, 0xc3, 0x02, 0x60, 0x00, - 0x40, 0x14, 0x23, 0x10, 0x76, 0x00, 0xc4, 0x18, 0x00, 0x08, 0x21, 0x10, 0x00, - 0x00, 0xa0, 0x9e, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x29, 0x00, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0xf0, 0x12, 0x00, 0x0c, 0x64, 0x00, 0x04, 0x24, 0xa0, - 0x9e, 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x43, 0x00, 0x22, 0x00, - 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0x92, 0x00, 0x00, 0x00, - 0x00, 0xf0, 0x12, 0x00, 0x0c, 0x02, 0x00, 0x04, 0x24, 0x21, 0x88, 0x40, 0x00, - 0xf0, 0x12, 0x00, 0x0c, 0x08, 0x00, 0x04, 0x24, 0x21, 0x80, 0x40, 0x00, 0xf0, - 0x12, 0x00, 0x0c, 0x02, 0x00, 0x04, 0x24, 0x21, 0x88, 0x71, 0x02, 0x80, 0x10, - 0x02, 0x00, 0x04, 0x80, 0x50, 0x00, 0x00, 0x00, 0x22, 0x92, 0x00, 0x00, 0x00, - 0x00, 0x26, 0x10, 0x50, 0x00, 0x00, 0x00, 0x22, 0xa2, 0x00, 0x00, 0x62, 0x92, - 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x43, 0x30, 0x01, 0x00, 0x02, 0x24, 0x05, - 0x00, 0x62, 0x14, 0x0f, 0x00, 0x42, 0x32, 0x04, 0x00, 0x43, 0x10, 0x00, 0xa3, - 0x03, 0x3c, 0x93, 0x18, 0x00, 0x08, 0x00, 0x00, 0x72, 0xa2, 0x00, 0xa3, 0x03, - 0x3c, 0xdc, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, 0x00, 0x00, 0x62, 0x92, 0x00, - 0x00, 0x00, 0x00, 0x0f, 0x00, 0x43, 0x30, 0x44, 0x00, 0x60, 0x10, 0x05, 0x00, - 0x62, 0x28, 0x05, 0x00, 0x40, 0x10, 0x21, 0x20, 0x80, 0x02, 0x91, 0x10, 0x00, - 0x0c, 0x21, 0x28, 0xa0, 0x02, 0xe5, 0x18, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x62, 0x28, 0x3b, 0x00, 0x40, 0x10, 0xc3, 0xa5, 0x02, 0x34, 0x02, - 0x00, 0x63, 0x92, 0x00, 0x00, 0x00, 0x00, 0x23, 0x90, 0x43, 0x00, 0x00, 0x00, - 0x62, 0x92, 0x00, 0x00, 0x00, 0x00, 0x23, 0x90, 0x42, 0x02, 0x01, 0x00, 0x62, - 0x92, 0x03, 0x00, 0x63, 0x92, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x43, 0x00, - 0x00, 0x12, 0x02, 0x00, 0x23, 0x90, 0x42, 0x02, 0xff, 0xff, 0x52, 0x32, 0x17, - 0x00, 0x56, 0x12, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x9e, 0x82, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x13, 0x00, 0x40, 0x14, 0x00, 0xa3, 0x03, 0x3c, 0xac, 0x0d, 0x63, - 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, - 0x00, 0x00, 0x62, 0xac, 0xc8, 0x00, 0x82, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x42, 0x24, 0xc8, 0x00, 0x82, 0xae, 0x14, 0x00, 0xa5, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x2a, 0x10, 0xb2, 0x00, 0x24, 0x00, 0x40, 0x10, 0xa0, 0x0f, 0x42, - 0x2a, 0x22, 0x00, 0x40, 0x10, 0x23, 0x10, 0x45, 0x02, 0xe5, 0x18, 0x00, 0x08, - 0x7c, 0x00, 0x82, 0xae, 0x00, 0x00, 0x62, 0x92, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x11, 0x02, 0x00, 0x07, 0x00, 0x52, 0x30, 0x6c, 0x00, 0x82, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x2a, 0x10, 0x42, 0x02, 0x0a, 0x00, 0x40, 0x10, 0x40, 0x21, 0x12, - 0x00, 0x21, 0x20, 0x92, 0x00, 0x80, 0x20, 0x04, 0x00, 0x0c, 0x00, 0x82, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, 0x82, 0x00, 0x90, 0x16, 0x00, 0x0c, 0x21, - 0x28, 0xa0, 0x02, 0xe5, 0x18, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, - 0x02, 0x3c, 0xdd, 0x18, 0x00, 0x08, 0xb4, 0x0d, 0x42, 0x34, 0x00, 0xa3, 0x02, - 0x3c, 0xb8, 0x0d, 0x42, 0x34, 0x00, 0x00, 0x43, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x63, 0x24, 0x00, 0x00, 0x43, 0xac, 0xc8, 0x00, 0x82, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0xc8, 0x00, 0x82, 0xae, 0x2c, 0x00, - 0xbf, 0x8f, 0x28, 0x00, 0xb6, 0x8f, 0x24, 0x00, 0xb5, 0x8f, 0x20, 0x00, 0xb4, - 0x8f, 0x1c, 0x00, 0xb3, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, - 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x30, 0x00, 0xbd, 0x27, 0xe0, - 0xff, 0xbd, 0x27, 0x18, 0x00, 0xbf, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, - 0xb0, 0xaf, 0xa8, 0x9e, 0x91, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x9e, 0x82, 0xaf, 0x03, 0x00, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0xa8, 0x9e, 0x82, 0x27, 0xd8, 0x9e, 0x82, 0xaf, 0x10, - 0x00, 0x23, 0x8e, 0x01, 0x00, 0x02, 0x24, 0x20, 0x00, 0x62, 0x14, 0x02, 0x00, - 0x02, 0x24, 0x48, 0x9a, 0x84, 0x8f, 0x1f, 0x06, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x44, 0x8c, - 0x08, 0x00, 0x23, 0x8e, 0x14, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, - 0x80, 0x62, 0x00, 0x00, 0x9f, 0x10, 0x26, 0x20, 0x00, 0x85, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x23, 0x80, 0x05, 0x02, 0x04, 0x00, 0x00, 0x1a, 0x21, 0x20, 0xa0, - 0x00, 0x00, 0x61, 0xa5, 0x24, 0x58, 0x05, 0x00, 0x0c, 0x21, 0x30, 0x00, 0x02, - 0x08, 0x00, 0x25, 0x8e, 0x14, 0x00, 0x26, 0x8e, 0x04, 0x00, 0x24, 0x8e, 0x04, - 0x00, 0xa5, 0x24, 0xae, 0x0a, 0x00, 0x0c, 0xfc, 0xff, 0xc6, 0x24, 0x50, 0x9a, - 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x16, 0x06, 0x00, 0x0c, 0x21, 0x80, 0x40, - 0x00, 0x25, 0x19, 0x00, 0x08, 0x10, 0x00, 0x20, 0xae, 0x04, 0x00, 0x62, 0x10, - 0x21, 0x80, 0x00, 0x00, 0x6c, 0x80, 0x84, 0x27, 0x24, 0x04, 0x00, 0x0c, 0x1e, - 0x05, 0x05, 0x24, 0x10, 0x00, 0x20, 0xae, 0x00, 0xa3, 0x03, 0x3c, 0x74, 0x0d, - 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, - 0x24, 0x0b, 0x00, 0x00, 0x12, 0x00, 0x00, 0x62, 0xac, 0x00, 0xa3, 0x03, 0x3c, - 0xc8, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, 0x04, 0x00, 0x24, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x78, 0x16, 0x00, 0x0c, 0x21, 0x28, 0x00, 0x02, 0xa8, 0x9e, 0x82, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, - 0xc0, 0x9e, 0x84, 0x27, 0x65, 0x1c, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x18, - 0x00, 0xbf, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, - 0xe0, 0x03, 0x20, 0x00, 0xbd, 0x27, 0xe8, 0xff, 0xbd, 0x27, 0x14, 0x00, 0xbf, - 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x0f, 0x0d, 0x00, 0x0c, 0x21, 0x80, 0x80, 0x00, - 0x20, 0x00, 0x02, 0x8e, 0xff, 0xfe, 0x03, 0x24, 0x24, 0x10, 0x43, 0x00, 0x20, - 0x00, 0x02, 0xae, 0x14, 0x00, 0xbf, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, - 0xe0, 0x03, 0x18, 0x00, 0xbd, 0x27, 0xd8, 0xff, 0xbd, 0x27, 0x24, 0x00, 0xbf, - 0xaf, 0x20, 0x00, 0xb4, 0xaf, 0x1c, 0x00, 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, - 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x88, 0x80, 0x00, 0x04, - 0x00, 0x33, 0x8e, 0x20, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, - 0x42, 0x30, 0xcd, 0x00, 0x40, 0x14, 0x21, 0x10, 0x00, 0x00, 0x38, 0x00, 0x22, - 0x8e, 0x34, 0x00, 0x23, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0x43, 0x00, - 0x0f, 0x00, 0x42, 0x30, 0x05, 0x00, 0x42, 0x28, 0x19, 0x00, 0x40, 0x14, 0x80, - 0x00, 0x02, 0x24, 0x20, 0x00, 0x24, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, - 0x83, 0x30, 0xc0, 0x00, 0x62, 0x14, 0x21, 0x10, 0x00, 0x00, 0xac, 0x89, 0x82, - 0x8f, 0x28, 0x00, 0x23, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0x43, 0x00, - 0xff, 0x3f, 0x03, 0x3c, 0xff, 0xff, 0x63, 0x34, 0x2b, 0x18, 0x62, 0x00, 0xb7, - 0x00, 0x60, 0x14, 0x21, 0x10, 0x00, 0x00, 0x08, 0x00, 0x82, 0x34, 0x20, 0x00, - 0x22, 0xae, 0x2c, 0x00, 0x62, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, - 0x34, 0x2c, 0x00, 0x62, 0xae, 0x7d, 0x11, 0x00, 0x0c, 0x21, 0x20, 0x60, 0x02, - 0x29, 0x1a, 0x00, 0x08, 0x21, 0x10, 0x00, 0x00, 0xe4, 0xaa, 0x92, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xe4, 0xaa, - 0x82, 0xaf, 0x00, 0x00, 0x40, 0xae, 0x04, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x80, 0x84, 0x27, - 0x24, 0x04, 0x00, 0x0c, 0x76, 0x05, 0x05, 0x24, 0x48, 0x9a, 0x84, 0x8f, 0x1f, - 0x06, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, 0x20, 0x02, 0x80, 0x00, - 0x66, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x8e, 0x08, 0x00, 0x0c, 0x10, 0x00, 0x45, - 0x26, 0x21, 0xa0, 0x40, 0x00, 0x50, 0x80, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x1f, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x62, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x2a, 0x10, 0x82, 0x02, 0x1a, 0x00, 0x40, 0x10, 0x21, 0x10, - 0x54, 0x02, 0xfe, 0x00, 0x03, 0x24, 0x10, 0x00, 0x43, 0xa0, 0x58, 0x80, 0x84, - 0x8f, 0x54, 0x80, 0x90, 0x8f, 0x80, 0x00, 0x63, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x2a, 0x10, 0x64, 0x00, 0x03, 0x00, 0x40, 0x10, 0x2a, 0x10, 0x94, 0x00, 0x21, - 0x20, 0x60, 0x00, 0x2a, 0x10, 0x94, 0x00, 0x02, 0x00, 0x40, 0x10, 0x2a, 0x10, - 0x14, 0x02, 0x21, 0x20, 0x80, 0x02, 0x03, 0x00, 0x40, 0x10, 0x2a, 0x10, 0x90, - 0x00, 0x21, 0x80, 0x80, 0x02, 0x2a, 0x10, 0x90, 0x00, 0x02, 0x00, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x21, 0x80, 0x80, 0x00, 0x23, 0x20, 0x90, 0x00, 0xf0, - 0x12, 0x00, 0x0c, 0x01, 0x00, 0x84, 0x24, 0x21, 0xa0, 0x02, 0x02, 0x50, 0x9a, - 0x84, 0x8f, 0x16, 0x06, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x9e, 0x82, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x54, 0x00, 0x04, 0x00, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x6c, 0x80, 0x84, 0x27, 0x24, 0x04, 0x00, 0x0c, 0x93, - 0x05, 0x05, 0x24, 0x20, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x42, 0x30, 0x07, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xe4, 0xaa, 0x82, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xae, 0xe4, 0xaa, 0x92, 0xaf, - 0x29, 0x1a, 0x00, 0x08, 0x21, 0x10, 0x80, 0x02, 0x23, 0x00, 0x80, 0x16, 0xff, - 0x3f, 0x06, 0x3c, 0xac, 0x89, 0x85, 0x8f, 0x2c, 0x00, 0x22, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x23, 0x10, 0xa2, 0x00, 0xff, 0xff, 0xc6, 0x34, 0x2b, 0x10, 0xc2, - 0x00, 0x1b, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xe4, 0xaa, 0x82, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xae, 0xe4, 0xaa, 0x92, 0xaf, 0x20, - 0x00, 0x24, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x83, 0x30, 0x80, 0x00, - 0x02, 0x24, 0x4b, 0x00, 0x62, 0x14, 0x21, 0x10, 0x80, 0x02, 0x28, 0x00, 0x22, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0xa2, 0x00, 0x2b, 0x10, 0xc2, 0x00, - 0x45, 0x00, 0x40, 0x14, 0x21, 0x10, 0x80, 0x02, 0x08, 0x00, 0x82, 0x34, 0x20, - 0x00, 0x22, 0xae, 0x2c, 0x00, 0x62, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x42, 0x34, 0x2c, 0x00, 0x62, 0xae, 0x7d, 0x11, 0x00, 0x0c, 0x21, 0x20, 0x60, - 0x02, 0x29, 0x1a, 0x00, 0x08, 0x21, 0x10, 0x80, 0x02, 0x04, 0x00, 0x42, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x40, 0x10, 0x01, 0x00, 0x02, 0x24, 0x6c, - 0x80, 0x84, 0x27, 0x24, 0x04, 0x00, 0x0c, 0xda, 0x05, 0x05, 0x24, 0x01, 0x00, - 0x02, 0x24, 0x04, 0x00, 0x42, 0xae, 0x64, 0x00, 0x62, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x42, 0x24, 0x64, 0x00, 0x62, 0xae, 0x00, 0xa3, 0x03, 0x3c, - 0x70, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, 0x04, 0x00, 0x83, 0x26, 0x08, 0x00, - 0x43, 0xae, 0x84, 0x00, 0x62, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x42, - 0x24, 0x21, 0x10, 0x43, 0x00, 0x84, 0x00, 0x62, 0xae, 0x14, 0x00, 0x22, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0xac, 0x14, 0x00, 0x32, 0xae, 0x18, - 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x18, 0x00, 0x32, 0xae, 0x38, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x42, 0x24, 0x0f, 0x00, 0x42, 0x30, 0x38, 0x00, 0x22, 0xae, - 0xac, 0x89, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x88, 0x13, 0x42, 0x24, 0x2c, - 0x00, 0x22, 0xae, 0x20, 0x00, 0x23, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, - 0x62, 0x30, 0x08, 0x00, 0x40, 0x14, 0x08, 0x00, 0x62, 0x34, 0x20, 0x00, 0x22, - 0xae, 0x2c, 0x00, 0x62, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x34, - 0x2c, 0x00, 0x62, 0xae, 0x7d, 0x11, 0x00, 0x0c, 0x21, 0x20, 0x60, 0x02, 0x06, - 0x00, 0x94, 0x26, 0x21, 0x10, 0x80, 0x02, 0x24, 0x00, 0xbf, 0x8f, 0x20, 0x00, - 0xb4, 0x8f, 0x1c, 0x00, 0xb3, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, - 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x28, 0x00, 0xbd, 0x27, - 0xe0, 0xff, 0xbd, 0x27, 0x18, 0x00, 0xbf, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, - 0x00, 0xb0, 0xaf, 0x21, 0x80, 0x80, 0x00, 0x14, 0x00, 0x11, 0x8e, 0x2c, 0x00, - 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x42, 0x30, 0x05, 0x00, 0x40, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x80, 0x82, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x09, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, - 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x62, 0x30, 0x04, 0x00, 0x40, - 0x14, 0x01, 0x00, 0x62, 0x34, 0x2c, 0x00, 0x02, 0xae, 0x7d, 0x11, 0x00, 0x0c, - 0x21, 0x20, 0x00, 0x02, 0xac, 0x89, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2c, - 0x00, 0x22, 0xae, 0x28, 0x00, 0x22, 0xae, 0xc5, 0x1c, 0x00, 0x0c, 0x64, 0x00, - 0x04, 0x24, 0xfa, 0x1a, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x02, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x40, 0x10, 0x00, 0xa3, 0x03, 0x3c, - 0xe4, 0xaa, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x40, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x6c, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, 0x20, 0x00, 0x24, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x83, 0x30, 0x80, 0x00, 0x02, 0x24, - 0x11, 0x00, 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, 0xac, 0x89, 0x82, 0x8f, 0x28, - 0x00, 0x23, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0x43, 0x00, 0xff, 0x3f, - 0x03, 0x3c, 0xff, 0xff, 0x63, 0x34, 0x2b, 0x18, 0x62, 0x00, 0x08, 0x00, 0x60, - 0x14, 0x08, 0x00, 0x82, 0x34, 0x20, 0x00, 0x22, 0xae, 0x2c, 0x00, 0x02, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x34, 0x2c, 0x00, 0x02, 0xae, 0x7d, - 0x11, 0x00, 0x0c, 0x21, 0x20, 0x00, 0x02, 0xc5, 0x1c, 0x00, 0x0c, 0x02, 0x00, - 0x04, 0x24, 0xfa, 0x1a, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x23, - 0x8e, 0x38, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x62, 0x10, - 0x00, 0xa3, 0x02, 0x3c, 0x60, 0x0d, 0x42, 0x34, 0x00, 0x00, 0x43, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x63, 0x24, 0x00, 0x00, 0x43, 0xac, 0x20, 0x00, - 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x42, 0x34, 0xfa, 0x1a, 0x00, - 0x08, 0x20, 0x00, 0x22, 0xae, 0x4f, 0x19, 0x00, 0x0c, 0x21, 0x20, 0x20, 0x02, - 0x21, 0x30, 0x40, 0x00, 0x00, 0x00, 0x31, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x14, - 0x00, 0x11, 0xae, 0xac, 0x89, 0x85, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xff, - 0xa3, 0x24, 0x24, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, 0xc0, - 0x10, 0x23, 0x38, 0x43, 0x00, 0x90, 0x00, 0x03, 0x8e, 0x94, 0x00, 0x02, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x39, 0x00, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0x98, - 0x00, 0x04, 0x8e, 0x9c, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, - 0xa2, 0x00, 0xe8, 0x03, 0x42, 0x2c, 0x0c, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x9c, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, 0x18, 0xa3, 0x00, - 0x40, 0x10, 0x03, 0x00, 0x21, 0x10, 0x43, 0x00, 0xc0, 0x10, 0x02, 0x00, 0x21, - 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x23, 0x20, 0x82, 0x00, 0x02, 0x00, - 0x81, 0x04, 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, 0x00, 0x00, 0x9c, 0x00, 0x05, - 0xae, 0x40, 0x10, 0x06, 0x00, 0x21, 0x10, 0x46, 0x00, 0x80, 0x19, 0x02, 0x00, - 0x21, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x21, 0x10, 0x46, 0x00, 0x80, - 0x10, 0x02, 0x00, 0x21, 0x10, 0x46, 0x00, 0x40, 0x11, 0x02, 0x00, 0x94, 0x00, - 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x43, 0x00, 0x02, 0x00, 0x60, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x07, 0x00, 0xff, 0xff, 0x01, 0x24, - 0x04, 0x00, 0x61, 0x14, 0x00, 0x80, 0x01, 0x3c, 0x02, 0x00, 0x41, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x0d, 0x00, 0x06, 0x00, 0x12, 0x10, 0x00, 0x00, 0x21, 0x20, - 0x82, 0x00, 0x98, 0x00, 0x04, 0xae, 0xeb, 0x51, 0x02, 0x3c, 0x1f, 0x85, 0x42, - 0x34, 0x18, 0x00, 0x82, 0x00, 0x10, 0x40, 0x00, 0x00, 0x43, 0x11, 0x08, 0x00, - 0xc3, 0x1f, 0x04, 0x00, 0x23, 0x10, 0x43, 0x00, 0x9c, 0xff, 0x44, 0x24, 0x2a, - 0x10, 0xe4, 0x00, 0x02, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0x38, - 0x80, 0x00, 0x84, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x40, 0x11, 0x03, - 0x00, 0x23, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x21, 0x10, 0x43, 0x00, - 0xc0, 0x10, 0x02, 0x00, 0x90, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x1a, - 0x00, 0x43, 0x00, 0x02, 0x00, 0x60, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, - 0x07, 0x00, 0xff, 0xff, 0x01, 0x24, 0x04, 0x00, 0x61, 0x14, 0x00, 0x80, 0x01, - 0x3c, 0x02, 0x00, 0x41, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x06, 0x00, - 0x12, 0x20, 0x00, 0x00, 0x78, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, - 0x10, 0xa2, 0x00, 0x23, 0x20, 0x82, 0x00, 0xec, 0xff, 0x84, 0x24, 0x2a, 0x10, - 0xe4, 0x00, 0x02, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0x38, 0x80, - 0x00, 0x03, 0x00, 0xe0, 0x18, 0x21, 0x10, 0xe5, 0x00, 0xf6, 0x1a, 0x00, 0x08, - 0x24, 0x00, 0x22, 0xae, 0x24, 0x00, 0x25, 0xae, 0x24, 0x00, 0x25, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x99, 0x1c, 0x00, 0x0c, 0xd0, 0x00, 0x04, 0x26, 0x18, 0x00, - 0xbf, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, - 0x03, 0x20, 0x00, 0xbd, 0x27, 0xe0, 0xff, 0xbd, 0x27, 0x18, 0x00, 0xbf, 0xaf, - 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x88, 0x80, 0x00, 0x04, - 0x00, 0x30, 0x8e, 0x20, 0x00, 0x23, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x62, 0x30, 0x04, 0x00, 0x40, 0x10, 0xff, 0xfb, 0x02, 0x24, 0x24, 0x10, 0x62, - 0x00, 0x1b, 0x1b, 0x00, 0x08, 0x20, 0x00, 0x22, 0xae, 0x00, 0xa3, 0x03, 0x3c, - 0xe0, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, 0xc8, 0x00, 0x02, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0xc8, 0x00, 0x02, 0xae, 0xcc, 0x00, 0x02, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0xcc, 0x00, 0x02, 0xae, - 0xcc, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x42, 0x28, 0x09, - 0x00, 0x40, 0x14, 0x0f, 0xff, 0x03, 0x24, 0xcc, 0x00, 0x00, 0xae, 0x2c, 0x00, - 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x24, 0x10, 0x43, 0x00, 0x10, 0x00, 0x42, - 0x34, 0x2c, 0x00, 0x02, 0xae, 0x65, 0x1c, 0x00, 0x0c, 0xe8, 0x00, 0x04, 0x26, - 0x20, 0x00, 0x23, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x62, 0x30, 0x0c, - 0x00, 0x40, 0x14, 0x08, 0x00, 0x62, 0x34, 0x3c, 0x00, 0x23, 0x8e, 0x34, 0x00, - 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x62, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x6c, 0x80, 0x84, 0x27, 0x24, 0x04, 0x00, 0x0c, 0xfd, 0x06, 0x05, 0x24, - 0x20, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x42, 0x34, 0x20, - 0x00, 0x22, 0xae, 0x2c, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x42, 0x34, 0x2c, 0x00, 0x02, 0xae, 0x7d, 0x11, 0x00, 0x0c, 0x21, 0x20, 0x00, - 0x02, 0x18, 0x00, 0xbf, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, - 0x08, 0x00, 0xe0, 0x03, 0x20, 0x00, 0xbd, 0x27, 0xc0, 0xff, 0xbd, 0x27, 0x38, - 0x00, 0xbf, 0xaf, 0x34, 0x00, 0xb5, 0xaf, 0x30, 0x00, 0xb4, 0xaf, 0x2c, 0x00, - 0xb3, 0xaf, 0x28, 0x00, 0xb2, 0xaf, 0x24, 0x00, 0xb1, 0xaf, 0xc1, 0x21, 0x00, - 0x0c, 0x20, 0x00, 0xb0, 0xaf, 0x01, 0x80, 0x11, 0x3c, 0x80, 0x9c, 0x31, 0x8e, - 0xa4, 0x8c, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x42, 0x28, 0x09, - 0x00, 0x40, 0x14, 0x2c, 0x01, 0x22, 0x2a, 0x01, 0x80, 0x03, 0x3c, 0xe8, 0x9d, - 0x63, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x23, 0x02, 0x03, 0x00, 0x40, - 0x10, 0x2c, 0x01, 0x22, 0x2a, 0x21, 0x88, 0x60, 0x00, 0x2c, 0x01, 0x22, 0x2a, - 0x03, 0x00, 0x40, 0x10, 0x5f, 0x00, 0x22, 0x26, 0x2c, 0x01, 0x11, 0x24, 0x5f, - 0x00, 0x22, 0x26, 0xf0, 0xff, 0x03, 0x24, 0x24, 0x10, 0x43, 0x00, 0xa4, 0x9e, - 0x82, 0xaf, 0x21, 0x88, 0x00, 0x00, 0xff, 0xff, 0x12, 0x3c, 0x01, 0x00, 0x14, - 0x3c, 0x03, 0xa0, 0x13, 0x3c, 0xff, 0xff, 0x73, 0x36, 0xe0, 0xaa, 0x83, 0x8f, - 0xa4, 0x9e, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x62, 0x00, 0x26, - 0x10, 0x43, 0x00, 0x24, 0x10, 0x52, 0x00, 0x03, 0x00, 0x40, 0x10, 0x21, 0x10, - 0x74, 0x00, 0x24, 0x10, 0x52, 0x00, 0xe0, 0xaa, 0x82, 0xaf, 0xe0, 0xaa, 0x90, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0x70, 0x02, 0x0d, 0x00, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0xa4, 0x9e, 0x85, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, - 0x28, 0x05, 0x02, 0xe0, 0xaa, 0x85, 0xaf, 0x05, 0x13, 0x00, 0x0c, 0x21, 0x20, - 0x00, 0x02, 0xe4, 0xaa, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0xae, 0xe4, 0xaa, 0x90, 0xaf, 0x68, 0x1b, 0x00, 0x08, 0x01, 0x00, 0x31, 0x26, - 0xb0, 0x9e, 0x91, 0xaf, 0xd0, 0x89, 0x91, 0x27, 0xa4, 0x8c, 0x82, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x21, 0x18, 0x40, 0x00, 0x4a, 0x00, 0x40, 0x18, 0x21, 0x98, - 0x00, 0x00, 0x01, 0x00, 0x14, 0x24, 0x09, 0x00, 0x15, 0x24, 0x0a, 0x00, 0x74, - 0x10, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x9e, 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x40, 0x10, 0x03, 0x00, 0x21, 0x10, 0x43, 0x00, 0x02, 0x00, 0x41, 0x04, 0x00, - 0x00, 0x00, 0x00, 0x03, 0x00, 0x42, 0x24, 0x99, 0x1b, 0x00, 0x08, 0x83, 0x10, - 0x02, 0x00, 0xb0, 0x9e, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x22, - 0xae, 0x0c, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x22, 0xae, - 0x0c, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x22, 0xae, 0xd0, - 0x00, 0x30, 0x26, 0x21, 0x20, 0x00, 0x02, 0x02, 0x00, 0x05, 0x24, 0x00, 0x80, - 0x06, 0x3c, 0xc4, 0x68, 0xc6, 0x24, 0x4a, 0x1c, 0x00, 0x0c, 0x21, 0x38, 0x20, - 0x02, 0x65, 0x1c, 0x00, 0x0c, 0x21, 0x20, 0x00, 0x02, 0xe8, 0x00, 0x30, 0x26, - 0x21, 0x20, 0x00, 0x02, 0x03, 0x00, 0x05, 0x24, 0x00, 0x80, 0x06, 0x3c, 0x88, - 0x48, 0xc6, 0x24, 0x4a, 0x1c, 0x00, 0x0c, 0x21, 0x38, 0x20, 0x02, 0xac, 0x89, - 0x85, 0x8f, 0x21, 0x20, 0x00, 0x02, 0x99, 0x1c, 0x00, 0x0c, 0xe8, 0x03, 0xa5, - 0x24, 0x0c, 0x00, 0x30, 0x8e, 0x68, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x40, 0x18, 0x21, 0x90, 0x00, 0x00, 0x20, 0x00, 0x15, 0xae, 0x50, - 0x00, 0x14, 0xae, 0x54, 0x00, 0x04, 0x26, 0x21, 0x28, 0x00, 0x00, 0x00, 0x80, - 0x06, 0x3c, 0x08, 0x65, 0xc6, 0x24, 0x4a, 0x1c, 0x00, 0x0c, 0x21, 0x38, 0x00, - 0x02, 0x6c, 0x00, 0x04, 0x26, 0x03, 0x00, 0x05, 0x24, 0x00, 0x80, 0x06, 0x3c, - 0xfc, 0x6b, 0xc6, 0x24, 0x4a, 0x1c, 0x00, 0x0c, 0x21, 0x38, 0x00, 0x02, 0x01, - 0x00, 0x52, 0x26, 0x68, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, - 0x42, 0x02, 0xed, 0xff, 0x40, 0x14, 0x84, 0x00, 0x10, 0x26, 0x01, 0x00, 0x73, - 0x26, 0xa4, 0x8c, 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x63, 0x02, - 0xba, 0xff, 0x40, 0x14, 0x68, 0x01, 0x31, 0x26, 0xa8, 0x9e, 0x82, 0x27, 0xd8, - 0x9e, 0x82, 0xaf, 0xc0, 0x9e, 0x84, 0x27, 0x01, 0x00, 0x05, 0x24, 0x00, 0x80, - 0x06, 0x3c, 0xbc, 0x63, 0xc6, 0x24, 0x4a, 0x1c, 0x00, 0x0c, 0x21, 0x38, 0x00, - 0x00, 0x38, 0x00, 0xbf, 0x8f, 0x34, 0x00, 0xb5, 0x8f, 0x30, 0x00, 0xb4, 0x8f, - 0x2c, 0x00, 0xb3, 0x8f, 0x28, 0x00, 0xb2, 0x8f, 0x24, 0x00, 0xb1, 0x8f, 0x20, - 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x40, 0x00, 0xbd, 0x27, 0xe8, 0xff, - 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x00, 0xa3, 0x04, 0x3c, 0x30, 0x0c, 0x84, - 0x34, 0x00, 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x00, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3f, - 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x83, 0x8c, 0xff, 0x3f, - 0x02, 0x3c, 0xff, 0xff, 0x42, 0x34, 0x24, 0x18, 0x62, 0x00, 0x00, 0x80, 0x02, - 0x3c, 0x25, 0x18, 0x62, 0x00, 0x08, 0x00, 0x82, 0x94, 0x00, 0x00, 0x00, 0x00, - 0x81, 0x00, 0x42, 0x2c, 0x04, 0x00, 0x40, 0x14, 0x00, 0xa3, 0x02, 0x3c, 0x80, - 0x00, 0x02, 0x24, 0x08, 0x00, 0x82, 0xa4, 0x00, 0xa3, 0x02, 0x3c, 0x30, 0x0c, - 0x42, 0x34, 0x00, 0x00, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x44, - 0x30, 0x02, 0x00, 0x02, 0x24, 0x0f, 0x00, 0x82, 0x10, 0x03, 0x00, 0x82, 0x28, - 0x05, 0x00, 0x40, 0x10, 0x01, 0x00, 0x02, 0x24, 0x08, 0x00, 0x82, 0x10, 0x21, - 0x28, 0x60, 0x00, 0x2e, 0x1c, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, - 0x02, 0x24, 0x1b, 0x00, 0x82, 0x10, 0x00, 0xa3, 0x02, 0x3c, 0x2e, 0x1c, 0x00, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x03, 0x3c, 0x15, 0x1c, 0x00, 0x08, - 0x3a, 0x0c, 0x63, 0x34, 0x00, 0xa3, 0x05, 0x3c, 0x3a, 0x0c, 0xa5, 0x34, 0x00, - 0xa3, 0x02, 0x3c, 0x30, 0x0c, 0x42, 0x34, 0x08, 0x00, 0x42, 0x94, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x44, 0x30, 0xff, 0xff, 0x84, 0x24, 0x09, 0x00, 0x80, - 0x04, 0x00, 0xa3, 0x02, 0x3c, 0x00, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x62, 0xa0, 0x01, 0x00, 0xa5, 0x24, 0xff, 0xff, 0x84, 0x24, 0xfa, - 0xff, 0x81, 0x04, 0x01, 0x00, 0x63, 0x24, 0x00, 0xa3, 0x02, 0x3c, 0x30, 0x0c, - 0x42, 0x34, 0x2e, 0x1c, 0x00, 0x08, 0x00, 0x00, 0x40, 0xa0, 0x30, 0x0c, 0x42, - 0x34, 0x00, 0x00, 0x40, 0xa0, 0x04, 0x00, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x09, 0xf8, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xbf, 0x8f, 0x18, - 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0x89, 0x82, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x42, 0x24, 0xf0, 0xaa, 0x82, 0xaf, 0x21, 0x20, 0x00, 0x00, - 0xb0, 0x8c, 0x83, 0x27, 0x00, 0x00, 0x63, 0xac, 0x04, 0x00, 0x63, 0xac, 0x01, - 0x00, 0x84, 0x24, 0x04, 0x00, 0x82, 0x28, 0xfb, 0xff, 0x40, 0x14, 0x08, 0x00, - 0x63, 0x24, 0x21, 0x20, 0x00, 0x00, 0x80, 0x92, 0x83, 0x27, 0x00, 0x00, 0x63, - 0xac, 0x04, 0x00, 0x63, 0xac, 0x01, 0x00, 0x84, 0x24, 0x10, 0x00, 0x82, 0x28, - 0xfb, 0xff, 0x40, 0x14, 0x08, 0x00, 0x63, 0x24, 0x08, 0x00, 0xe0, 0x03, 0x00, - 0x00, 0x00, 0x00, 0xd8, 0xff, 0xbd, 0x27, 0x20, 0x00, 0xbf, 0xaf, 0x1c, 0x00, - 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, - 0xaf, 0x21, 0x80, 0x80, 0x00, 0x21, 0x88, 0xa0, 0x00, 0x21, 0x90, 0xc0, 0x00, - 0x58, 0x9a, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x16, 0x06, 0x00, 0x0c, 0x21, - 0x98, 0xe0, 0x00, 0x00, 0x00, 0x10, 0xae, 0x04, 0x00, 0x10, 0xae, 0x10, 0x00, - 0x11, 0xae, 0x08, 0x00, 0x12, 0xae, 0x0c, 0x00, 0x13, 0xae, 0x1f, 0x06, 0x00, - 0x0c, 0x21, 0x20, 0x40, 0x00, 0x20, 0x00, 0xbf, 0x8f, 0x1c, 0x00, 0xb3, 0x8f, - 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, - 0x00, 0xe0, 0x03, 0x28, 0x00, 0xbd, 0x27, 0xe8, 0xff, 0xbd, 0x27, 0x14, 0x00, - 0xbf, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x80, 0x80, 0x00, 0x58, 0x9a, 0x84, - 0x8f, 0x16, 0x06, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xac, 0x89, 0x83, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x03, 0xae, 0x04, 0x00, 0x04, 0x8e, 0x00, - 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xac, 0x04, 0x00, - 0x64, 0xac, 0x10, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x18, 0x03, - 0x00, 0xb0, 0x8c, 0x84, 0x27, 0x21, 0x18, 0x64, 0x00, 0x04, 0x00, 0x64, 0x8c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xac, 0x04, 0x00, 0x04, 0xae, 0x00, - 0x00, 0x03, 0xae, 0x04, 0x00, 0x70, 0xac, 0x1f, 0x06, 0x00, 0x0c, 0x21, 0x20, - 0x40, 0x00, 0x14, 0x00, 0xbf, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, - 0x03, 0x18, 0x00, 0xbd, 0x27, 0xe8, 0xff, 0xbd, 0x27, 0x14, 0x00, 0xbf, 0xaf, - 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x80, 0x80, 0x00, 0x58, 0x9a, 0x84, 0x8f, 0x16, - 0x06, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x8e, 0x00, 0x00, - 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xac, 0x04, 0x00, 0x64, - 0xac, 0x04, 0x00, 0x10, 0xae, 0x00, 0x00, 0x10, 0xae, 0x1f, 0x06, 0x00, 0x0c, - 0x21, 0x20, 0x40, 0x00, 0x14, 0x00, 0xbf, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, - 0x00, 0xe0, 0x03, 0x18, 0x00, 0xbd, 0x27, 0xe0, 0xff, 0xbd, 0x27, 0x18, 0x00, - 0xbf, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x80, 0x80, - 0x00, 0x58, 0x9a, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x16, 0x06, 0x00, 0x0c, - 0x21, 0x88, 0xa0, 0x00, 0x21, 0x20, 0x40, 0x00, 0x04, 0x00, 0x03, 0x8e, 0x00, - 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0xac, 0x04, 0x00, - 0x43, 0xac, 0xac, 0x89, 0x85, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x23, 0x18, 0xb1, - 0x00, 0xff, 0x3f, 0x02, 0x3c, 0xff, 0xff, 0x42, 0x34, 0x2b, 0x10, 0x43, 0x00, - 0x06, 0x00, 0x40, 0x14, 0x0f, 0x00, 0x22, 0x32, 0x14, 0x00, 0x05, 0xae, 0x10, - 0x00, 0x02, 0x8e, 0xb0, 0x8c, 0x83, 0x27, 0xb8, 0x1c, 0x00, 0x08, 0xc0, 0x10, - 0x02, 0x00, 0x14, 0x00, 0x11, 0xae, 0xc0, 0x10, 0x02, 0x00, 0x80, 0x92, 0x83, - 0x27, 0x21, 0x18, 0x43, 0x00, 0x04, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x50, 0xac, 0x04, 0x00, 0x02, 0xae, 0x00, 0x00, 0x03, 0xae, 0x1f, - 0x06, 0x00, 0x0c, 0x04, 0x00, 0x70, 0xac, 0x18, 0x00, 0xbf, 0x8f, 0x14, 0x00, - 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x20, 0x00, 0xbd, - 0x27, 0xe8, 0xff, 0xbd, 0x27, 0x14, 0x00, 0xbf, 0xaf, 0x10, 0x00, 0xb0, 0xaf, - 0xf4, 0xaa, 0x90, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x21, 0x20, 0x82, 0x00, 0x14, 0x00, 0x04, 0xae, 0x58, 0x9a, - 0x84, 0x8f, 0x16, 0x06, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, 0x40, - 0x00, 0x04, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x62, 0xac, 0x04, 0x00, 0x43, 0xac, 0xac, 0x89, 0x85, 0x8f, 0x14, - 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, 0x18, 0xa3, 0x00, 0xff, 0x3f, - 0x02, 0x3c, 0xff, 0xff, 0x42, 0x34, 0x2b, 0x10, 0x43, 0x00, 0x06, 0x00, 0x40, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x05, 0xae, 0x10, 0x00, 0x02, 0x8e, - 0xb0, 0x8c, 0x83, 0x27, 0xea, 0x1c, 0x00, 0x08, 0xc0, 0x10, 0x02, 0x00, 0x14, - 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x42, 0x30, 0xc0, 0x10, - 0x02, 0x00, 0x80, 0x92, 0x83, 0x27, 0x21, 0x18, 0x43, 0x00, 0x04, 0x00, 0x62, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xac, 0x04, 0x00, 0x02, 0xae, - 0x00, 0x00, 0x03, 0xae, 0x1f, 0x06, 0x00, 0x0c, 0x04, 0x00, 0x70, 0xac, 0x14, - 0x00, 0xbf, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x18, 0x00, - 0xbd, 0x27, 0xd8, 0xff, 0xbd, 0x27, 0x24, 0x00, 0xbf, 0xaf, 0x20, 0x00, 0xb4, - 0xaf, 0x1c, 0x00, 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb1, 0xaf, - 0x10, 0x00, 0xb0, 0xaf, 0x48, 0x9a, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x1f, - 0x06, 0x00, 0x0c, 0x00, 0xa3, 0x13, 0x3c, 0x10, 0x0d, 0x73, 0x36, 0x80, 0x92, - 0x94, 0x27, 0xff, 0x7f, 0x12, 0x3c, 0xff, 0xff, 0x52, 0x36, 0xb0, 0x8c, 0x91, - 0x27, 0x00, 0xa3, 0x02, 0x3c, 0x0f, 0x0c, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x04, 0x00, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x96, 0x02, 0x00, 0x63, 0x96, 0xff, 0xff, - 0x42, 0x30, 0x09, 0x00, 0x43, 0x10, 0x00, 0xa3, 0x10, 0x3c, 0x10, 0x0d, 0x10, - 0x36, 0x81, 0x07, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x96, - 0x02, 0x00, 0x03, 0x96, 0xff, 0xff, 0x42, 0x30, 0xfa, 0xff, 0x43, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x58, 0x9a, 0x84, 0x8f, 0x16, 0x06, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x45, 0x1d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xaa, 0x82, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0xf0, 0xaa, 0x82, 0xaf, - 0x0f, 0x00, 0x42, 0x30, 0xc0, 0x10, 0x02, 0x00, 0x21, 0x30, 0x54, 0x00, 0x00, - 0x00, 0xc3, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x66, 0x10, 0x21, 0x28, - 0xc0, 0x00, 0xf0, 0xaa, 0x87, 0x8f, 0x14, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x23, 0x10, 0xe2, 0x00, 0x2b, 0x10, 0x42, 0x02, 0x10, 0x00, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xa2, 0xac, 0x04, 0x00, 0x45, 0xac, 0x10, 0x00, 0x62, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0xc0, 0x10, 0x02, 0x00, 0x21, 0x20, 0x51, 0x00, 0x04, 0x00, 0x82, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xac, 0x04, 0x00, 0x62, 0xac, - 0x00, 0x00, 0x64, 0xac, 0x41, 0x1d, 0x00, 0x08, 0x04, 0x00, 0x83, 0xac, 0x21, - 0x28, 0x60, 0x00, 0x00, 0x00, 0xa3, 0x8c, 0x00, 0x00, 0x00, 0x00, 0xe7, 0xff, - 0x66, 0x14, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xaa, 0x83, 0x8f, 0xac, 0x89, 0x82, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0xd6, 0xff, 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, - 0xb0, 0x8c, 0x84, 0x27, 0xb0, 0x8c, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x1f, - 0x00, 0x44, 0x14, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x04, 0x3c, 0xe8, 0x9e, - 0x84, 0x24, 0x01, 0x80, 0x02, 0x3c, 0xe8, 0x9e, 0x42, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x18, 0x00, 0x44, 0x14, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x04, 0x3c, - 0xf0, 0x9e, 0x84, 0x24, 0x01, 0x80, 0x02, 0x3c, 0xf0, 0x9e, 0x42, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x11, 0x00, 0x44, 0x14, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, - 0x04, 0x3c, 0xf8, 0x9e, 0x84, 0x24, 0x01, 0x80, 0x02, 0x3c, 0xf8, 0x9e, 0x42, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x44, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x48, 0x9a, 0x84, 0x8f, 0x1f, 0x06, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x90, - 0x9e, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x90, 0x9e, - 0x82, 0xaf, 0x06, 0x1d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x82, 0xac, 0x04, 0x00, 0x44, 0xac, 0x00, 0x00, 0x63, 0xac, 0x04, - 0x00, 0x63, 0xac, 0xf4, 0xaa, 0x83, 0xaf, 0xac, 0x89, 0x90, 0x8f, 0x08, 0x00, - 0x62, 0x8c, 0x0c, 0x00, 0x64, 0x8c, 0x09, 0xf8, 0x40, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x48, 0x9a, 0x84, 0x8f, 0x1f, 0x06, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0xf4, 0xaa, 0x80, 0xaf, 0xac, 0x89, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x23, - 0x80, 0x50, 0x00, 0x32, 0x00, 0x02, 0x2e, 0x02, 0x00, 0x40, 0x14, 0x21, 0x18, - 0x00, 0x02, 0x31, 0x00, 0x03, 0x24, 0x00, 0xab, 0x82, 0x27, 0x80, 0x18, 0x03, - 0x00, 0x21, 0x18, 0x62, 0x00, 0x21, 0x20, 0x00, 0x02, 0x32, 0x00, 0x82, 0x2c, - 0x03, 0x00, 0x40, 0x14, 0x80, 0x10, 0x04, 0x00, 0x31, 0x00, 0x04, 0x24, 0x80, - 0x10, 0x04, 0x00, 0x21, 0x08, 0x5c, 0x00, 0x00, 0xab, 0x22, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x06, 0x1d, 0x00, 0x08, 0x00, 0x00, 0x62, - 0xac, 0x24, 0x00, 0xbf, 0x8f, 0x20, 0x00, 0xb4, 0x8f, 0x1c, 0x00, 0xb3, 0x8f, - 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, - 0x00, 0xe0, 0x03, 0x28, 0x00, 0xbd, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xbd, 0x27, 0x1c, 0x00, 0xbf, - 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, - 0x21, 0x90, 0x00, 0x00, 0x01, 0x80, 0x11, 0x3c, 0x90, 0x8c, 0x31, 0x26, 0x21, - 0x80, 0x00, 0x00, 0xd0, 0xab, 0x80, 0xaf, 0x21, 0x28, 0x00, 0x00, 0x21, 0x20, - 0x20, 0x02, 0x00, 0x00, 0x82, 0x94, 0x02, 0x00, 0x83, 0x90, 0x04, 0xa2, 0x01, - 0x3c, 0x21, 0x08, 0x22, 0x00, 0x00, 0x00, 0x23, 0xa0, 0xd0, 0xab, 0x80, 0xaf, - 0x01, 0x00, 0xa5, 0x24, 0x04, 0x00, 0xa2, 0x28, 0xf7, 0xff, 0x40, 0x14, 0x04, - 0x00, 0x84, 0x24, 0x00, 0x00, 0x82, 0x94, 0x04, 0xa2, 0x01, 0x3c, 0x21, 0x08, - 0x22, 0x00, 0x00, 0x00, 0x22, 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x42, - 0x30, 0x08, 0x00, 0x40, 0x10, 0x64, 0x00, 0x02, 0x2a, 0x04, 0x00, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x84, 0x27, 0x24, 0x04, 0x00, 0x0c, 0x61, - 0x00, 0x05, 0x24, 0xa9, 0x1d, 0x00, 0x08, 0x01, 0x00, 0x10, 0x26, 0x05, 0x00, - 0x52, 0x26, 0x0f, 0x00, 0x42, 0x2a, 0xe0, 0xff, 0x40, 0x14, 0x14, 0x00, 0x31, - 0x26, 0x1c, 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, - 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x20, 0x00, 0xbd, 0x27, 0x00, - 0x00, 0x00, 0x00, 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x06, 0xa2, - 0x02, 0x3c, 0x00, 0x00, 0x40, 0xa4, 0x70, 0xad, 0x83, 0x8f, 0x2b, 0x00, 0x02, - 0x3c, 0xe8, 0xf5, 0x42, 0x34, 0x21, 0x18, 0x62, 0x00, 0x70, 0x00, 0x02, 0x3c, - 0xff, 0x7f, 0x42, 0x34, 0x2b, 0x10, 0x43, 0x00, 0x0d, 0x00, 0x40, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x8f, 0xff, 0x05, 0x3c, 0x00, 0x80, 0xa5, 0x34, 0x70, 0x00, - 0x04, 0x3c, 0xff, 0x7f, 0x84, 0x34, 0xac, 0x89, 0x82, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x42, 0x24, 0xac, 0x89, 0x82, 0xaf, 0x21, 0x18, 0x65, 0x00, - 0x2b, 0x10, 0x83, 0x00, 0xf9, 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x70, - 0xad, 0x83, 0xaf, 0x90, 0x80, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x3d, 0x00, - 0x40, 0x10, 0x00, 0xa3, 0x02, 0x3c, 0x04, 0xa2, 0x05, 0x3c, 0x80, 0x00, 0x07, - 0x24, 0x00, 0xa3, 0x06, 0x3c, 0xf8, 0x1d, 0x00, 0x08, 0x14, 0x00, 0xc6, 0x34, - 0x00, 0x00, 0xc2, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x00, - 0x00, 0xc2, 0xac, 0x00, 0x00, 0xc2, 0x8c, 0x0c, 0x00, 0xa7, 0xa0, 0xd0, 0xab, - 0x80, 0xaf, 0x08, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x44, - 0x30, 0x08, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x02, 0x00, - 0x25, 0x20, 0x82, 0x00, 0xd0, 0xab, 0x80, 0xaf, 0x0c, 0x00, 0xa7, 0xa0, 0xd0, - 0xab, 0x80, 0xaf, 0x08, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, - 0x43, 0x30, 0x08, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x02, - 0x00, 0x25, 0x18, 0x62, 0x00, 0x23, 0x10, 0x83, 0x00, 0xff, 0xff, 0x42, 0x30, - 0x80, 0x00, 0x42, 0x2c, 0xe4, 0xff, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x74, - 0xad, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x40, 0x10, 0x23, 0x18, - 0x44, 0x00, 0xff, 0xff, 0x63, 0x30, 0x80, 0x10, 0x03, 0x00, 0x21, 0x10, 0x43, - 0x00, 0x00, 0x11, 0x02, 0x00, 0x23, 0x10, 0x43, 0x00, 0xc0, 0x18, 0x02, 0x00, - 0x21, 0x10, 0x43, 0x00, 0xc0, 0x10, 0x02, 0x00, 0x02, 0x1d, 0x02, 0x00, 0x64, - 0x00, 0x62, 0x2c, 0x02, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x63, 0x00, - 0x03, 0x24, 0xe0, 0xab, 0x82, 0x27, 0x80, 0x18, 0x03, 0x00, 0x21, 0x18, 0x62, - 0x00, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, - 0x00, 0x00, 0x62, 0xac, 0x74, 0xad, 0x84, 0xaf, 0x00, 0xa3, 0x02, 0x3c, 0x00, - 0x00, 0x42, 0x8c, 0x00, 0xa3, 0x03, 0x3c, 0x10, 0x0c, 0x63, 0x94, 0x00, 0x00, - 0x00, 0x00, 0x0c, 0x00, 0x60, 0x10, 0x01, 0x00, 0x02, 0x24, 0x05, 0x00, 0x62, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x3b, 0x1e, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x94, 0x80, 0x84, 0x27, 0x24, - 0x04, 0x00, 0x0c, 0xdb, 0x02, 0x05, 0x24, 0x00, 0xa3, 0x01, 0x3c, 0x10, 0x0c, - 0x20, 0xa4, 0x10, 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xe0, 0x03, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xa2, 0x02, 0x3c, 0x40, 0x00, 0x42, 0x34, 0x05, 0x00, 0x82, 0x14, 0x10, 0x00, - 0x0a, 0x24, 0x08, 0x00, 0x0a, 0x24, 0x00, 0x01, 0x02, 0x24, 0x4e, 0x1e, 0x00, - 0x08, 0x00, 0x04, 0x09, 0x24, 0x00, 0x02, 0x02, 0x24, 0x00, 0x08, 0x09, 0x24, - 0xff, 0xff, 0x19, 0x3c, 0x00, 0x10, 0x39, 0x37, 0x01, 0x80, 0x18, 0x3c, 0x60, - 0x8c, 0x18, 0x27, 0x05, 0xa2, 0x08, 0x3c, 0x25, 0x58, 0x42, 0x01, 0x27, 0x70, - 0x0b, 0x00, 0x27, 0x68, 0x02, 0x00, 0xe1, 0x00, 0x0f, 0x3c, 0x27, 0x60, 0x09, - 0x00, 0x00, 0x00, 0xa7, 0x94, 0x00, 0x00, 0x00, 0x00, 0x21, 0x18, 0xf9, 0x00, - 0x09, 0x00, 0x62, 0x2c, 0x2e, 0x00, 0x40, 0x10, 0x80, 0x10, 0x03, 0x00, 0x21, - 0x10, 0x58, 0x00, 0x00, 0x00, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x92, 0x82, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x87, 0x1e, 0x00, 0x08, 0x24, 0x10, 0xc2, 0x01, 0x54, 0x92, 0x82, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x24, 0x10, 0xa2, 0x01, 0x87, 0x1e, 0x00, 0x08, 0x25, - 0x10, 0x4a, 0x00, 0x54, 0x92, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x87, 0x1e, - 0x00, 0x08, 0x25, 0x10, 0x62, 0x01, 0x02, 0x00, 0xa3, 0x94, 0x00, 0x00, 0xc2, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x62, 0x00, 0x12, 0x18, 0x00, 0x00, - 0x42, 0x10, 0x03, 0x00, 0x21, 0x10, 0x4f, 0x00, 0x1b, 0x00, 0x43, 0x00, 0x02, - 0x00, 0x60, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x07, 0x00, 0x12, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x1e, 0x00, - 0x08, 0x29, 0x00, 0x82, 0xa0, 0x54, 0x92, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x87, 0x1e, 0x00, 0x08, 0x24, 0x10, 0x82, 0x01, 0x54, 0x92, 0x82, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x25, 0x10, 0x22, 0x01, 0x54, 0x92, 0x82, 0xaf, 0x00, 0x00, - 0x02, 0xa5, 0x58, 0x1e, 0x00, 0x08, 0x04, 0x00, 0xa5, 0x24, 0x21, 0x18, 0x87, - 0x00, 0x02, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0xa0, - 0x58, 0x1e, 0x00, 0x08, 0x04, 0x00, 0xa5, 0x24, 0x08, 0x00, 0xe0, 0x03, 0x00, - 0x00, 0x00, 0x00, 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x00, 0xa2, - 0x04, 0x3c, 0x01, 0x80, 0x05, 0x3c, 0xd0, 0x8c, 0xa5, 0x24, 0x44, 0x1e, 0x00, - 0x0c, 0x21, 0x30, 0x00, 0x00, 0x00, 0xa2, 0x04, 0x3c, 0x40, 0x00, 0x84, 0x34, - 0x01, 0x80, 0x05, 0x3c, 0x28, 0x8d, 0xa5, 0x24, 0x44, 0x1e, 0x00, 0x0c, 0x21, - 0x30, 0x00, 0x00, 0x00, 0xa2, 0x04, 0x3c, 0x00, 0x01, 0x84, 0x34, 0x01, 0x80, - 0x05, 0x3c, 0x7c, 0x8d, 0xa5, 0x24, 0x44, 0x1e, 0x00, 0x0c, 0x21, 0x30, 0x00, - 0x00, 0x00, 0xa2, 0x04, 0x3c, 0x40, 0x01, 0x84, 0x34, 0x01, 0x80, 0x05, 0x3c, - 0x88, 0x8d, 0xa5, 0x24, 0x44, 0x1e, 0x00, 0x0c, 0x21, 0x30, 0x00, 0x00, 0x00, - 0xa2, 0x04, 0x3c, 0x80, 0x00, 0x84, 0x34, 0x01, 0x80, 0x05, 0x3c, 0x28, 0x8d, - 0xa5, 0x24, 0x44, 0x1e, 0x00, 0x0c, 0x21, 0x30, 0x00, 0x00, 0x00, 0xa2, 0x04, - 0x3c, 0x80, 0x01, 0x84, 0x34, 0x01, 0x80, 0x05, 0x3c, 0x7c, 0x8d, 0xa5, 0x24, - 0x44, 0x1e, 0x00, 0x0c, 0x21, 0x30, 0x00, 0x00, 0x00, 0xa2, 0x04, 0x3c, 0xc0, - 0x01, 0x84, 0x34, 0x01, 0x80, 0x05, 0x3c, 0x88, 0x8d, 0xa5, 0x24, 0x44, 0x1e, - 0x00, 0x0c, 0x21, 0x30, 0x00, 0x00, 0x10, 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xbd, - 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xd8, 0xff, 0xbd, 0x27, - 0x20, 0x00, 0xbf, 0xaf, 0x1c, 0x00, 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, - 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x98, 0x80, 0x00, 0x21, 0x88, - 0xa0, 0x00, 0x02, 0x00, 0x60, 0x16, 0x04, 0x00, 0x12, 0x24, 0x02, 0x00, 0x12, - 0x24, 0x4e, 0x00, 0xc2, 0x2c, 0x03, 0x00, 0x40, 0x10, 0x4e, 0x00, 0x22, 0x2e, - 0x05, 0x00, 0x40, 0x14, 0x40, 0x80, 0x11, 0x00, 0x6c, 0x81, 0x84, 0x27, 0x24, - 0x04, 0x00, 0x0c, 0x6e, 0x02, 0x05, 0x24, 0x40, 0x80, 0x11, 0x00, 0x21, 0x80, - 0x11, 0x02, 0x80, 0x80, 0x10, 0x00, 0x01, 0x80, 0x02, 0x3c, 0x88, 0x8e, 0x42, - 0x24, 0x21, 0x80, 0x02, 0x02, 0x80, 0x11, 0x13, 0x00, 0x00, 0xa2, 0x04, 0x3c, - 0x40, 0x00, 0x84, 0x34, 0x00, 0x00, 0x05, 0x8e, 0x04, 0x00, 0x06, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x44, 0x1e, 0x00, 0x0c, 0x21, 0x20, 0x44, 0x00, 0x08, 0x00, - 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x40, 0x10, 0x05, 0xa2, 0x03, - 0x3c, 0x54, 0x92, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x25, 0x10, 0x42, 0x02, - 0x54, 0x92, 0x82, 0xaf, 0xf4, 0x1e, 0x00, 0x08, 0x00, 0x00, 0x62, 0xa4, 0x05, - 0xa2, 0x02, 0x3c, 0x27, 0x18, 0x12, 0x00, 0x54, 0x92, 0x84, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x24, 0x18, 0x64, 0x00, 0x54, 0x92, 0x83, 0xaf, 0x00, 0x00, 0x43, - 0xa4, 0x20, 0x00, 0xbf, 0x8f, 0x1c, 0x00, 0xb3, 0x8f, 0x18, 0x00, 0xb2, 0x8f, - 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x28, - 0x00, 0xbd, 0x27, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x88, 0x8c, 0x40, 0x00, - 0x87, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x07, 0x00, 0x21, 0x10, 0x47, - 0x00, 0x80, 0x10, 0x02, 0x00, 0x21, 0x10, 0x47, 0x00, 0x80, 0x10, 0x02, 0x00, - 0x1c, 0x00, 0x83, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x43, 0x00, 0x04, - 0x00, 0x45, 0xac, 0x08, 0x00, 0x46, 0xa4, 0x80, 0x00, 0x03, 0x24, 0x0a, 0x00, - 0x43, 0xa0, 0x02, 0x00, 0x42, 0x94, 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x02, - 0xa5, 0x60, 0x00, 0x02, 0x91, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x42, 0x30, - 0x07, 0x00, 0x40, 0x10, 0x00, 0xa3, 0x03, 0x3c, 0x78, 0x0d, 0x63, 0x34, 0x00, - 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x1b, 0x1f, - 0x00, 0x08, 0x00, 0x00, 0x62, 0xac, 0x02, 0x00, 0x02, 0x24, 0x60, 0x00, 0x02, - 0xa1, 0x01, 0x00, 0xe7, 0x24, 0x08, 0x00, 0xe2, 0x28, 0x02, 0x00, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x21, 0x38, 0x00, 0x00, 0x8c, 0x00, 0x82, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x8c, 0x00, 0x82, 0xac, 0x88, 0x00, - 0x82, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0xc2, 0x00, 0x88, 0x00, 0x82, - 0xac, 0x40, 0x00, 0x87, 0xac, 0xac, 0x89, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x08, 0x00, 0xe0, 0x03, 0x78, 0x00, 0x82, 0xac, 0x04, 0x00, 0x86, 0x8c, 0x08, - 0x00, 0x85, 0x8c, 0x11, 0x00, 0x02, 0x24, 0x18, 0x00, 0xc2, 0xa0, 0x01, 0x00, - 0x02, 0x24, 0x29, 0x00, 0xa2, 0xa0, 0x38, 0x00, 0x83, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x40, 0x10, 0x03, 0x00, 0x21, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, - 0x18, 0x00, 0x83, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x43, 0x00, 0x02, - 0x00, 0x42, 0x24, 0x10, 0x00, 0xa2, 0xa4, 0x02, 0x00, 0x02, 0x24, 0x20, 0x00, - 0xa2, 0xa0, 0x12, 0x00, 0x02, 0x24, 0x08, 0x00, 0xe0, 0x03, 0x18, 0x00, 0xc2, - 0xa0, 0xc0, 0xff, 0xbd, 0x27, 0x3c, 0x00, 0xbf, 0xaf, 0x38, 0x00, 0xbe, 0xaf, - 0x34, 0x00, 0xb7, 0xaf, 0x30, 0x00, 0xb6, 0xaf, 0x2c, 0x00, 0xb5, 0xaf, 0x28, - 0x00, 0xb4, 0xaf, 0x24, 0x00, 0xb3, 0xaf, 0x20, 0x00, 0xb2, 0xaf, 0x1c, 0x00, - 0xb1, 0xaf, 0x18, 0x00, 0xb0, 0xaf, 0x21, 0x90, 0x80, 0x00, 0x08, 0x00, 0x47, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xa7, 0xaf, 0x34, 0x00, 0x44, 0x8e, - 0x30, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x82, 0x10, 0x40, - 0x18, 0x04, 0x00, 0x24, 0x00, 0x42, 0x8e, 0x21, 0x18, 0x64, 0x00, 0xc0, 0x18, - 0x03, 0x00, 0x21, 0x18, 0x62, 0x00, 0x10, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x12, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x06, 0x24, - 0x30, 0x00, 0x45, 0x8e, 0x01, 0x00, 0x84, 0x24, 0x02, 0x00, 0x86, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x21, 0x20, 0x00, 0x00, 0x0a, 0x00, 0x85, 0x10, 0x40, 0x18, - 0x04, 0x00, 0x24, 0x00, 0x42, 0x8e, 0x21, 0x18, 0x64, 0x00, 0xc0, 0x18, 0x03, - 0x00, 0x21, 0x18, 0x62, 0x00, 0x10, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0xf4, 0xff, 0x40, 0x10, 0x01, 0x00, 0x84, 0x24, 0xff, 0xff, 0x84, 0x24, 0x34, - 0x00, 0x44, 0xae, 0x41, 0x00, 0x02, 0x24, 0x10, 0x00, 0xa7, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x20, 0x00, 0xe2, 0xa0, 0x10, 0x00, 0xe2, 0x94, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x5e, 0x30, 0x38, 0x00, 0x54, 0x8e, 0x3c, 0x00, 0x57, 0x8e, - 0x18, 0x00, 0x50, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x32, 0x23, - 0x88, 0xc2, 0x03, 0xaa, 0xaa, 0x02, 0x3c, 0xab, 0xaa, 0x42, 0x34, 0x19, 0x00, - 0x22, 0x02, 0x10, 0x38, 0x00, 0x00, 0xc2, 0x88, 0x07, 0x00, 0x61, 0x00, 0x22, - 0x2e, 0x05, 0x00, 0x40, 0x14, 0x40, 0x10, 0x11, 0x00, 0x80, 0x81, 0x84, 0x27, - 0x24, 0x04, 0x00, 0x0c, 0x09, 0x01, 0x05, 0x24, 0x40, 0x10, 0x11, 0x00, 0x21, - 0x10, 0x51, 0x00, 0x80, 0x10, 0x02, 0x00, 0x21, 0x10, 0x02, 0x02, 0x02, 0x00, - 0x42, 0x24, 0xff, 0xff, 0x42, 0x30, 0x05, 0x00, 0xc2, 0x13, 0x23, 0x28, 0x34, - 0x02, 0x80, 0x81, 0x84, 0x27, 0x24, 0x04, 0x00, 0x0c, 0x0a, 0x01, 0x05, 0x24, - 0x23, 0x28, 0x34, 0x02, 0x61, 0x00, 0xa5, 0x24, 0xd0, 0x51, 0x04, 0x3c, 0xaf, - 0x7e, 0x84, 0x34, 0x19, 0x00, 0xa4, 0x00, 0x10, 0x18, 0x00, 0x00, 0x23, 0x10, - 0xa3, 0x00, 0x42, 0x10, 0x02, 0x00, 0x21, 0x18, 0x62, 0x00, 0x82, 0x19, 0x03, - 0x00, 0x40, 0x10, 0x03, 0x00, 0x21, 0x10, 0x43, 0x00, 0x40, 0x11, 0x02, 0x00, - 0x21, 0x10, 0x43, 0x00, 0x23, 0x28, 0xa2, 0x00, 0x23, 0x18, 0xf4, 0x02, 0x61, - 0x00, 0x63, 0x24, 0x19, 0x00, 0x64, 0x00, 0x10, 0x20, 0x00, 0x00, 0x23, 0x10, - 0x64, 0x00, 0x42, 0x10, 0x02, 0x00, 0x21, 0x20, 0x82, 0x00, 0x82, 0x21, 0x04, - 0x00, 0x40, 0x10, 0x04, 0x00, 0x21, 0x10, 0x44, 0x00, 0x40, 0x11, 0x02, 0x00, - 0x21, 0x10, 0x44, 0x00, 0x23, 0x18, 0x62, 0x00, 0x2b, 0x18, 0x65, 0x00, 0x05, - 0x00, 0x60, 0x10, 0x21, 0xb0, 0x00, 0x00, 0x80, 0x81, 0x84, 0x27, 0x24, 0x04, - 0x00, 0x0c, 0x0b, 0x01, 0x05, 0x24, 0x21, 0xb0, 0x00, 0x00, 0x40, 0x10, 0x14, - 0x00, 0x21, 0x10, 0x54, 0x00, 0x80, 0x10, 0x02, 0x00, 0x18, 0x00, 0x43, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x21, 0x80, 0x43, 0x00, 0x04, 0x00, 0x15, 0x8e, 0x21, - 0x98, 0x00, 0x00, 0x02, 0x00, 0x02, 0x26, 0xff, 0xff, 0x42, 0x30, 0xad, 0x00, - 0x5e, 0x10, 0x06, 0x00, 0xc2, 0x2a, 0x05, 0x00, 0x97, 0x12, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x80, 0x81, 0x84, 0x27, 0x24, 0x04, 0x00, 0x0c, 0x1d, - 0x01, 0x05, 0x24, 0x01, 0x00, 0x94, 0x26, 0x61, 0x00, 0x82, 0x2a, 0x02, 0x00, - 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x21, 0xa0, 0x00, 0x00, 0x08, 0x00, 0x02, - 0x96, 0x0a, 0x00, 0x10, 0x92, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x16, - 0x21, 0x98, 0x62, 0x02, 0x00, 0x01, 0x07, 0x24, 0x05, 0x00, 0x47, 0x10, 0x40, - 0x10, 0x14, 0x00, 0x80, 0x81, 0x84, 0x27, 0x24, 0x04, 0x00, 0x0c, 0x25, 0x01, - 0x05, 0x24, 0x40, 0x10, 0x14, 0x00, 0x21, 0x10, 0x54, 0x00, 0x80, 0x10, 0x02, - 0x00, 0x18, 0x00, 0x43, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xbe, 0x1f, 0x00, 0x08, - 0x21, 0x80, 0x43, 0x00, 0x80, 0x00, 0x02, 0x32, 0x04, 0x00, 0x40, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x81, 0x84, 0x27, 0x24, 0x04, 0x00, 0x0c, 0x2a, 0x01, - 0x05, 0x24, 0xc0, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x62, - 0x02, 0xc0, 0x00, 0x42, 0xae, 0xb8, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x42, 0x24, 0xb8, 0x00, 0x42, 0xae, 0x7c, 0x00, 0x02, 0x32, 0x2d, - 0x00, 0x40, 0x10, 0x40, 0x00, 0x02, 0x32, 0x06, 0x00, 0x40, 0x10, 0x00, 0xa3, - 0x03, 0x3c, 0x8c, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, 0x20, 0x00, 0x02, 0x32, - 0x06, 0x00, 0x40, 0x10, 0x00, 0xa3, 0x03, 0x3c, 0x90, 0x0d, 0x63, 0x34, 0x00, - 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, - 0x62, 0xac, 0x10, 0x00, 0x02, 0x32, 0x06, 0x00, 0x40, 0x10, 0x00, 0xa3, 0x03, - 0x3c, 0x9c, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, 0x08, 0x00, 0x02, 0x32, 0x06, - 0x00, 0x40, 0x10, 0x00, 0xa3, 0x03, 0x3c, 0x94, 0x0d, 0x63, 0x34, 0x00, 0x00, - 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, - 0xac, 0x04, 0x00, 0x02, 0x32, 0x06, 0x00, 0x40, 0x10, 0x00, 0xa3, 0x03, 0x3c, - 0x98, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, 0xc8, 0x00, 0x42, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x6b, 0x20, 0x00, 0x08, 0xc8, 0x00, 0x42, - 0xae, 0x00, 0x00, 0xa3, 0x8e, 0x22, 0x33, 0x02, 0x3c, 0x00, 0x11, 0x42, 0x34, - 0x10, 0x00, 0x62, 0x14, 0x21, 0x30, 0xb3, 0x02, 0x00, 0x9f, 0xc6, 0x24, 0x20, - 0x00, 0x45, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, 0x30, 0xc5, 0x00, 0x03, 0x00, - 0xc0, 0x18, 0x21, 0x20, 0xa0, 0x00, 0x58, 0x05, 0x00, 0x0c, 0x00, 0x61, 0xa5, - 0x24, 0x21, 0x20, 0xa0, 0x02, 0x85, 0x15, 0x00, 0x0c, 0x21, 0x28, 0x60, 0x02, - 0x3b, 0x00, 0x40, 0x10, 0x00, 0xa3, 0x03, 0x3c, 0x52, 0x20, 0x00, 0x08, 0xfc, - 0x0d, 0x63, 0x34, 0xec, 0xaa, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, - 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x12, 0x00, 0x0c, 0x64, 0x00, 0x04, - 0x24, 0xec, 0xaa, 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x18, 0x62, 0x00, - 0x03, 0x00, 0x60, 0x14, 0x00, 0xa3, 0x03, 0x3c, 0x52, 0x20, 0x00, 0x08, 0xd8, - 0x0d, 0x63, 0x34, 0x30, 0x00, 0x50, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, - 0x10, 0x00, 0x21, 0x10, 0x50, 0x00, 0xc0, 0x10, 0x02, 0x00, 0x24, 0x00, 0x43, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, 0x88, 0x43, 0x00, 0x01, 0x00, 0x10, 0x26, - 0x40, 0x00, 0x02, 0x24, 0x02, 0x00, 0x02, 0x16, 0x00, 0x00, 0x00, 0x00, 0x21, - 0x80, 0x00, 0x00, 0x34, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, - 0x02, 0x16, 0x00, 0xa3, 0x03, 0x3c, 0xb0, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x6b, 0x20, 0x00, 0x08, - 0x00, 0x00, 0x62, 0xac, 0x10, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x80, 0x81, 0x84, 0x27, 0x24, 0x04, - 0x00, 0x0c, 0x7f, 0x01, 0x05, 0x24, 0x38, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x22, 0xae, 0x08, 0x00, 0x35, 0xae, 0x14, 0x00, 0x33, 0xae, - 0x21, 0x20, 0x40, 0x02, 0x4f, 0x18, 0x00, 0x0c, 0x21, 0x28, 0x20, 0x02, 0x10, - 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x30, 0x00, 0x50, 0xae, 0x38, 0x00, 0x54, 0xae, 0xb6, 0x1f, 0x00, - 0x08, 0x01, 0x00, 0xd6, 0x26, 0x03, 0x00, 0x40, 0x14, 0x80, 0x10, 0x16, 0x00, - 0x05, 0x00, 0x16, 0x24, 0x80, 0x10, 0x16, 0x00, 0x00, 0xa3, 0x03, 0x3c, 0x48, - 0x0d, 0x63, 0x34, 0x21, 0x10, 0x43, 0x00, 0x00, 0x00, 0x43, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x63, 0x24, 0x23, 0xb0, 0x97, 0x02, 0x02, 0x00, 0xc1, - 0x06, 0x00, 0x00, 0x43, 0xac, 0x61, 0x00, 0xd6, 0x26, 0x61, 0x00, 0xc2, 0x2a, - 0x04, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x80, 0x81, 0x84, 0x27, 0x24, - 0x04, 0x00, 0x0c, 0xa0, 0x01, 0x05, 0x24, 0x80, 0xad, 0x82, 0x27, 0x80, 0x18, - 0x16, 0x00, 0x21, 0x18, 0x62, 0x00, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, 0x30, 0x00, 0x42, 0x8e, - 0x34, 0x00, 0x44, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x44, 0x10, 0x40, - 0x10, 0x04, 0x00, 0x24, 0x00, 0x43, 0x8e, 0x21, 0x10, 0x44, 0x00, 0xc0, 0x10, - 0x02, 0x00, 0x21, 0x10, 0x43, 0x00, 0x0c, 0x00, 0x57, 0x8c, 0x9a, 0x20, 0x00, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x40, 0x10, 0x60, 0x00, 0x17, 0x24, 0xff, 0xff, 0x57, 0x24, 0x3c, - 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0xe2, 0x12, 0x40, 0x10, - 0x17, 0x00, 0x21, 0x10, 0x57, 0x00, 0x80, 0x10, 0x02, 0x00, 0x18, 0x00, 0x43, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x43, 0x00, 0x02, 0x00, 0x42, 0x24, - 0x10, 0x00, 0xa7, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0xe2, 0xa4, 0x3c, - 0x00, 0x57, 0xae, 0x10, 0x00, 0xa7, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, - 0xe2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x42, 0x30, 0x02, 0x00, 0x03, - 0x24, 0x0a, 0x00, 0x43, 0x10, 0x00, 0xa3, 0x02, 0x3c, 0x80, 0x0d, 0x42, 0x34, - 0x00, 0x00, 0x43, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x63, 0x24, 0x00, - 0x00, 0x43, 0xac, 0x21, 0x00, 0x02, 0x24, 0x20, 0x00, 0xe2, 0xa0, 0x2d, 0x1f, - 0x00, 0x0c, 0x21, 0x20, 0x40, 0x02, 0x3c, 0x00, 0xbf, 0x8f, 0x38, 0x00, 0xbe, - 0x8f, 0x34, 0x00, 0xb7, 0x8f, 0x30, 0x00, 0xb6, 0x8f, 0x2c, 0x00, 0xb5, 0x8f, - 0x28, 0x00, 0xb4, 0x8f, 0x24, 0x00, 0xb3, 0x8f, 0x20, 0x00, 0xb2, 0x8f, 0x1c, - 0x00, 0xb1, 0x8f, 0x18, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x40, 0x00, - 0xbd, 0x27, 0xd0, 0xff, 0xbd, 0x27, 0x28, 0x00, 0xbf, 0xaf, 0x24, 0x00, 0xb5, - 0xaf, 0x20, 0x00, 0xb4, 0xaf, 0x1c, 0x00, 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, - 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x88, 0x80, 0x00, 0x00, - 0xa3, 0x02, 0x3c, 0x44, 0x0d, 0x42, 0x34, 0x00, 0x00, 0x43, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x63, 0x24, 0x00, 0x00, 0x43, 0xac, 0x04, 0x00, 0x24, - 0x8e, 0x08, 0x00, 0x25, 0x8e, 0x04, 0x00, 0x82, 0x94, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x80, 0x42, 0x30, 0x08, 0x00, 0x40, 0x10, 0x00, 0xa3, 0x02, 0x3c, 0xa4, - 0x0d, 0x42, 0x34, 0x00, 0x00, 0x43, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x63, 0x24, 0x00, 0x00, 0x43, 0xac, 0x00, 0x80, 0x02, 0x34, 0x04, 0x00, 0x82, - 0xa4, 0x41, 0x00, 0x02, 0x24, 0x60, 0x00, 0xa2, 0xa0, 0x50, 0x00, 0xa2, 0x94, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x55, 0x30, 0x44, 0x00, 0x33, 0x8e, 0x40, - 0x00, 0x34, 0x8e, 0x1c, 0x00, 0x30, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x02, 0x32, 0x23, 0x90, 0xa2, 0x02, 0xc4, 0x4e, 0x02, 0x3c, 0x4f, 0xec, 0x42, - 0x34, 0x19, 0x00, 0x42, 0x02, 0x10, 0x30, 0x00, 0x00, 0x02, 0x91, 0x06, 0x00, - 0x08, 0x00, 0x42, 0x2e, 0x05, 0x00, 0x40, 0x14, 0x40, 0x10, 0x12, 0x00, 0x80, - 0x81, 0x84, 0x27, 0x24, 0x04, 0x00, 0x0c, 0x01, 0x02, 0x05, 0x24, 0x40, 0x10, - 0x12, 0x00, 0x21, 0x10, 0x52, 0x00, 0x80, 0x10, 0x02, 0x00, 0x21, 0x10, 0x52, - 0x00, 0x80, 0x10, 0x02, 0x00, 0x21, 0x10, 0x02, 0x02, 0x02, 0x00, 0x42, 0x24, - 0xff, 0xff, 0x42, 0x30, 0x05, 0x00, 0xa2, 0x12, 0x23, 0x18, 0x53, 0x02, 0x80, - 0x81, 0x84, 0x27, 0x24, 0x04, 0x00, 0x0c, 0x03, 0x02, 0x05, 0x24, 0x23, 0x18, - 0x53, 0x02, 0x08, 0x00, 0x63, 0x24, 0x07, 0x00, 0x63, 0x30, 0x23, 0x10, 0x93, - 0x02, 0x08, 0x00, 0x42, 0x24, 0x07, 0x00, 0x42, 0x30, 0x2b, 0x10, 0x43, 0x00, - 0x4e, 0x00, 0x40, 0x10, 0x21, 0xa0, 0x00, 0x00, 0x80, 0x81, 0x84, 0x27, 0x24, - 0x04, 0x00, 0x0c, 0x09, 0x02, 0x05, 0x24, 0x5b, 0x21, 0x00, 0x08, 0x21, 0xa0, - 0x00, 0x00, 0x40, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x62, - 0x16, 0x00, 0x00, 0x00, 0x00, 0x80, 0x81, 0x84, 0x27, 0x24, 0x04, 0x00, 0x0c, - 0x1c, 0x02, 0x05, 0x24, 0x08, 0x00, 0x12, 0x96, 0x0c, 0x00, 0x03, 0x8e, 0x02, - 0x00, 0x02, 0x24, 0x22, 0x00, 0x62, 0x10, 0x03, 0x00, 0x02, 0x24, 0x25, 0x00, - 0x62, 0x14, 0x01, 0x00, 0x02, 0x24, 0x10, 0x00, 0x10, 0x8e, 0x84, 0x00, 0x22, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x42, 0x24, 0x08, 0x00, 0x03, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0x43, 0x00, 0x84, 0x00, 0x22, 0xae, 0x04, - 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x24, 0x0a, 0x00, - 0x42, 0x2c, 0x04, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x80, 0x81, 0x84, - 0x27, 0x24, 0x04, 0x00, 0x0c, 0x39, 0x02, 0x05, 0x24, 0x04, 0x00, 0x02, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x24, 0x14, 0x00, 0x40, 0x14, 0x04, - 0x00, 0x02, 0xae, 0xe4, 0xaa, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0xae, 0xe4, 0xaa, 0x90, 0xaf, 0x64, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x42, 0x24, 0x4a, 0x21, 0x00, 0x08, 0x64, 0x00, 0x22, 0xae, - 0x2c, 0x00, 0x22, 0x8e, 0xf7, 0xff, 0x03, 0x24, 0x24, 0x10, 0x43, 0x00, 0x4a, - 0x21, 0x00, 0x08, 0x2c, 0x00, 0x22, 0xae, 0x04, 0x00, 0x62, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x81, 0x84, 0x27, 0x24, 0x04, 0x00, 0x0c, 0x5a, 0x02, 0x05, - 0x24, 0x88, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0x52, 0x00, - 0x88, 0x00, 0x22, 0xae, 0xb0, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, - 0x10, 0x42, 0x02, 0xb0, 0x00, 0x22, 0xae, 0xa8, 0x00, 0x22, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0xa8, 0x00, 0x22, 0xae, 0x01, 0x00, 0x73, - 0x26, 0x08, 0x00, 0x62, 0x2e, 0x02, 0x00, 0x40, 0x14, 0x01, 0x00, 0x94, 0x26, - 0x21, 0x98, 0x00, 0x00, 0x40, 0x10, 0x13, 0x00, 0x21, 0x10, 0x53, 0x00, 0x80, - 0x10, 0x02, 0x00, 0x21, 0x10, 0x53, 0x00, 0x80, 0x10, 0x02, 0x00, 0x1c, 0x00, - 0x23, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, 0x80, 0x43, 0x00, 0x02, 0x00, 0x02, - 0x26, 0xff, 0xff, 0x42, 0x30, 0x23, 0x10, 0xa2, 0x02, 0x34, 0x00, 0x42, 0x2c, - 0xab, 0xff, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x33, 0xae, 0xac, - 0x89, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x22, 0xae, 0x8c, 0x00, - 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0x54, 0x00, 0x8c, 0x00, 0x22, - 0xae, 0x28, 0x00, 0xbf, 0x8f, 0x24, 0x00, 0xb5, 0x8f, 0x20, 0x00, 0xb4, 0x8f, - 0x1c, 0x00, 0xb3, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, - 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x30, 0x00, 0xbd, 0x27, 0xe0, 0xff, - 0xbd, 0x27, 0x1c, 0x00, 0xbf, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb1, - 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x00, 0xa3, 0x03, 0x3c, 0x40, 0x0d, 0x63, 0x34, - 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x00, - 0x00, 0x62, 0xac, 0x00, 0xa2, 0x02, 0x3c, 0x20, 0x00, 0x42, 0x94, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x50, 0x30, 0x31, 0x00, 0x00, 0x12, 0x00, 0xa2, 0x11, - 0x3c, 0x01, 0x80, 0x12, 0x3c, 0x2c, 0x9c, 0x52, 0x26, 0x0c, 0x08, 0x02, 0x32, - 0x05, 0x00, 0x40, 0x10, 0xc0, 0x80, 0x02, 0x32, 0xd0, 0x89, 0x84, 0x27, 0xc5, - 0x20, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x80, 0x02, 0x32, 0x05, 0x00, - 0x40, 0x10, 0x03, 0x03, 0x02, 0x32, 0x01, 0x80, 0x04, 0x3c, 0xc5, 0x20, 0x00, - 0x0c, 0x68, 0x9d, 0x84, 0x24, 0x03, 0x03, 0x02, 0x32, 0x05, 0x00, 0x40, 0x10, - 0x30, 0x30, 0x02, 0x32, 0xd0, 0x89, 0x84, 0x27, 0x42, 0x1f, 0x00, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x30, 0x30, 0x02, 0x32, 0x04, 0x00, 0x40, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x80, 0x04, 0x3c, 0x42, 0x1f, 0x00, 0x0c, 0x68, 0x9d, 0x84, - 0x24, 0x01, 0x80, 0x02, 0x3c, 0x2c, 0x9c, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x42, 0x30, 0x03, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x7d, - 0x11, 0x00, 0x0c, 0xd4, 0xff, 0x44, 0x26, 0x01, 0x80, 0x02, 0x3c, 0x94, 0x9d, - 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x30, 0x04, 0x00, 0x40, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x04, 0x3c, 0x7d, 0x11, 0x00, 0x0c, - 0x68, 0x9d, 0x84, 0x24, 0x20, 0x00, 0x22, 0x96, 0x00, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x50, 0x30, 0xd4, 0xff, 0x00, 0x16, 0x0c, 0x08, 0x02, 0x32, 0x1c, 0x00, - 0xbf, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, - 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x20, 0x00, 0xbd, 0x27, 0xc8, 0xff, 0xbd, 0x27, - 0x30, 0x00, 0xbf, 0xaf, 0x2c, 0x00, 0xb5, 0xaf, 0x28, 0x00, 0xb4, 0xaf, 0x24, - 0x00, 0xb3, 0xaf, 0x20, 0x00, 0xb2, 0xaf, 0x1c, 0x00, 0xb1, 0xaf, 0x18, 0x00, - 0xb0, 0xaf, 0x00, 0xa3, 0x04, 0x3c, 0x40, 0x0d, 0x84, 0x34, 0x00, 0xa3, 0x05, - 0x3c, 0x05, 0x13, 0x00, 0x0c, 0x00, 0x0e, 0xa5, 0x34, 0x01, 0x80, 0x03, 0x3c, - 0x80, 0xe0, 0x63, 0x24, 0x00, 0xa0, 0x02, 0x3c, 0x25, 0x18, 0x62, 0x00, 0xe0, - 0xaa, 0x83, 0xaf, 0xa0, 0x01, 0x62, 0x24, 0x26, 0x10, 0x43, 0x00, 0xff, 0xff, - 0x04, 0x3c, 0x24, 0x10, 0x44, 0x00, 0x04, 0x00, 0x40, 0x10, 0x01, 0x00, 0x02, - 0x3c, 0x21, 0x10, 0x62, 0x00, 0x24, 0x10, 0x44, 0x00, 0xe0, 0xaa, 0x82, 0xaf, - 0xe0, 0xaa, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x9e, 0x82, 0xaf, 0x40, - 0x03, 0x43, 0x24, 0xe0, 0xaa, 0x83, 0xaf, 0x58, 0x0c, 0x42, 0x24, 0x26, 0x10, - 0x43, 0x00, 0xff, 0xff, 0x04, 0x3c, 0x24, 0x10, 0x44, 0x00, 0x04, 0x00, 0x40, - 0x10, 0x01, 0x00, 0x02, 0x3c, 0x21, 0x10, 0x62, 0x00, 0x24, 0x10, 0x44, 0x00, - 0xe0, 0xaa, 0x82, 0xaf, 0xe0, 0xaa, 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xb4, - 0x9e, 0x83, 0xaf, 0x17, 0x0a, 0x63, 0x24, 0x00, 0xff, 0x02, 0x24, 0x24, 0x18, - 0x62, 0x00, 0xe0, 0xaa, 0x83, 0xaf, 0xac, 0x9e, 0x83, 0xaf, 0x00, 0xe8, 0x02, - 0x34, 0x21, 0x18, 0x62, 0x00, 0xe0, 0xaa, 0x83, 0xaf, 0x04, 0xa0, 0x02, 0x3c, - 0x2b, 0x10, 0x43, 0x00, 0x04, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x80, - 0x81, 0x84, 0x27, 0x24, 0x04, 0x00, 0x0c, 0xdd, 0x02, 0x05, 0x24, 0x01, 0x80, - 0x02, 0x3c, 0x80, 0xe0, 0x42, 0x24, 0x00, 0xa0, 0x04, 0x3c, 0xe0, 0xaa, 0x85, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x05, 0x13, 0x00, 0x0c, 0x25, 0x20, 0x44, 0x00, - 0x93, 0x1e, 0x00, 0x0c, 0x21, 0x98, 0x00, 0x00, 0xd0, 0x89, 0x92, 0x27, 0xa4, - 0x8c, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x76, 0x00, 0x40, 0x18, 0x00, 0xa2, - 0x15, 0x3c, 0x02, 0x00, 0x14, 0x24, 0x40, 0x28, 0x13, 0x00, 0x21, 0x28, 0xb3, - 0x00, 0x40, 0x12, 0x05, 0x00, 0xe0, 0x9e, 0x83, 0x27, 0x21, 0x10, 0x43, 0x00, - 0x24, 0x00, 0x42, 0xae, 0xc0, 0x20, 0x13, 0x00, 0x23, 0x10, 0x93, 0x00, 0x80, - 0x10, 0x02, 0x00, 0x21, 0x10, 0x53, 0x00, 0x80, 0x12, 0x02, 0x00, 0xac, 0x9e, - 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x43, 0x00, 0x20, 0x00, 0x42, - 0xae, 0x80, 0x28, 0x05, 0x00, 0x21, 0x28, 0xb3, 0x00, 0x40, 0x29, 0x05, 0x00, - 0xdc, 0x9e, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x28, 0xa2, 0x00, 0x1c, - 0x00, 0x45, 0xae, 0x21, 0x20, 0x93, 0x00, 0xc0, 0x20, 0x04, 0x00, 0x21, 0x20, - 0x93, 0x00, 0x80, 0x20, 0x04, 0x00, 0x23, 0x20, 0x93, 0x00, 0x80, 0x20, 0x04, - 0x00, 0xb4, 0x9e, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, 0x82, 0x00, - 0x18, 0x00, 0x44, 0xae, 0x1c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x6c, - 0x01, 0x43, 0x24, 0x02, 0x00, 0x42, 0x24, 0x02, 0x00, 0x62, 0xa4, 0x07, 0x00, - 0x04, 0x24, 0x21, 0x10, 0x60, 0x00, 0xcc, 0xff, 0x63, 0x24, 0x02, 0x00, 0x42, - 0x24, 0xff, 0xff, 0x84, 0x24, 0xfb, 0xff, 0x80, 0x14, 0x02, 0x00, 0x62, 0xa4, - 0x18, 0x00, 0x45, 0x8e, 0x20, 0x00, 0x42, 0x8e, 0x80, 0x04, 0xa3, 0x24, 0x00, - 0x60, 0x46, 0x24, 0x04, 0x00, 0x66, 0xac, 0x02, 0x00, 0xa2, 0x24, 0x02, 0x00, - 0x62, 0xa4, 0x60, 0x00, 0x04, 0x24, 0x21, 0x28, 0x60, 0x00, 0xf4, 0xff, 0x63, - 0x24, 0x00, 0xff, 0xc6, 0x24, 0x04, 0x00, 0x66, 0xac, 0x02, 0x00, 0xa2, 0x24, - 0xff, 0xff, 0x84, 0x24, 0xf9, 0xff, 0x80, 0x14, 0x02, 0x00, 0x62, 0xa4, 0x3c, - 0x00, 0x40, 0xae, 0x01, 0x00, 0x02, 0x24, 0x38, 0x00, 0x42, 0xae, 0x00, 0x00, - 0x55, 0xae, 0x80, 0x89, 0x13, 0x00, 0x40, 0x00, 0x31, 0x26, 0x21, 0x88, 0x35, - 0x02, 0x04, 0x00, 0x51, 0xae, 0xc0, 0x81, 0x13, 0x00, 0x00, 0x01, 0x10, 0x26, - 0x21, 0x80, 0x15, 0x02, 0x08, 0x00, 0x50, 0xae, 0x48, 0x00, 0x45, 0x8e, 0x4c, - 0x00, 0x46, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x1e, 0x00, 0x0c, 0x21, 0x20, - 0x60, 0x02, 0x18, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x42, - 0x24, 0x02, 0x14, 0x02, 0x00, 0x0c, 0x00, 0x02, 0xa2, 0x18, 0x00, 0x42, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x42, 0x24, 0x14, 0x00, 0x02, 0xa6, 0x18, - 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x42, 0x24, 0x10, 0x00, - 0x02, 0xa6, 0x00, 0x01, 0x02, 0x24, 0x18, 0x00, 0x02, 0xa6, 0x1c, 0x00, 0x42, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x42, 0x24, 0x02, 0x14, 0x02, 0x00, - 0x4c, 0x00, 0x02, 0xa2, 0x1c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x42, 0x24, 0x50, 0x00, 0x02, 0xa6, 0x1c, 0x00, 0x42, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x42, 0x24, 0x54, 0x00, 0x02, 0xa6, 0x20, 0x00, 0x14, - 0xa2, 0x60, 0x00, 0x14, 0xa2, 0x12, 0x00, 0x02, 0x24, 0x18, 0x00, 0x22, 0xa2, - 0x18, 0x00, 0x34, 0xa2, 0x01, 0x00, 0x73, 0x26, 0xa4, 0x8c, 0x82, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x2a, 0x10, 0x62, 0x02, 0x8d, 0xff, 0x40, 0x14, 0x68, 0x01, - 0x52, 0x26, 0x30, 0x00, 0xbf, 0x8f, 0x2c, 0x00, 0xb5, 0x8f, 0x28, 0x00, 0xb4, - 0x8f, 0x24, 0x00, 0xb3, 0x8f, 0x20, 0x00, 0xb2, 0x8f, 0x1c, 0x00, 0xb1, 0x8f, - 0x18, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x38, 0x00, 0xbd, 0x27, 0x2e, - 0x2e, 0x2f, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x73, - 0x00, 0x00, 0xe0, 0x1a, 0x00, 0x80, 0xf8, 0x1a, 0x00, 0x80, 0x10, 0x1b, 0x00, - 0x80, 0x90, 0x1b, 0x00, 0x80, 0xa4, 0x1b, 0x00, 0x80, 0x74, 0x1d, 0x00, 0x80, - 0xb8, 0x1b, 0x00, 0x80, 0x74, 0x1d, 0x00, 0x80, 0xd8, 0x1b, 0x00, 0x80, 0x28, - 0x1c, 0x00, 0x80, 0x58, 0x1c, 0x00, 0x80, 0x70, 0x1c, 0x00, 0x80, 0x90, 0x1c, - 0x00, 0x80, 0x74, 0x1d, 0x00, 0x80, 0x98, 0x1c, 0x00, 0x80, 0xac, 0x1c, 0x00, - 0x80, 0xc0, 0x1c, 0x00, 0x80, 0x74, 0x1d, 0x00, 0x80, 0x74, 0x1d, 0x00, 0x80, - 0xd8, 0x1c, 0x00, 0x80, 0xf0, 0x1c, 0x00, 0x80, 0x20, 0x1d, 0x00, 0x80, 0x38, - 0x1d, 0x00, 0x80, 0x74, 0x1d, 0x00, 0x80, 0x74, 0x1d, 0x00, 0x80, 0x74, 0x1d, - 0x00, 0x80, 0x74, 0x1d, 0x00, 0x80, 0x74, 0x1d, 0x00, 0x80, 0x74, 0x1d, 0x00, - 0x80, 0x74, 0x1d, 0x00, 0x80, 0x50, 0x1d, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x20, 0x00, 0x80, 0x2c, 0x20, 0x00, 0x80, 0x3c, 0x20, 0x00, 0x80, 0x4c, - 0x20, 0x00, 0x80, 0xa0, 0x20, 0x00, 0x80, 0xb0, 0x20, 0x00, 0x80, 0xc0, 0x20, - 0x00, 0x80, 0xd0, 0x20, 0x00, 0x80, 0xe0, 0x20, 0x00, 0x80, 0xf0, 0x20, 0x00, - 0x80, 0x00, 0x21, 0x00, 0x80, 0x10, 0x21, 0x00, 0x80, 0x2c, 0x21, 0x00, 0x80, - 0x48, 0x21, 0x00, 0x80, 0x5c, 0x21, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x6c, - 0x2b, 0x00, 0x80, 0x6c, 0x2b, 0x00, 0x80, 0x6c, 0x2b, 0x00, 0x80, 0x6c, 0x2b, - 0x00, 0x80, 0x6c, 0x2b, 0x00, 0x80, 0x6c, 0x2b, 0x00, 0x80, 0x6c, 0x2b, 0x00, - 0x80, 0x6c, 0x2b, 0x00, 0x80, 0x90, 0x2b, 0x00, 0x80, 0xac, 0x2b, 0x00, 0x80, - 0xd4, 0x2c, 0x00, 0x80, 0x74, 0x2d, 0x00, 0x80, 0xc0, 0x2d, 0x00, 0x80, 0xcc, - 0x2f, 0x00, 0x80, 0xcc, 0x2f, 0x00, 0x80, 0x44, 0x2e, 0x00, 0x80, 0x74, 0x2e, - 0x00, 0x80, 0x74, 0x2e, 0x00, 0x80, 0x74, 0x2e, 0x00, 0x80, 0x74, 0x2e, 0x00, - 0x80, 0xc0, 0x2e, 0x00, 0x80, 0xcc, 0x2f, 0x00, 0x80, 0xcc, 0x2f, 0x00, 0x80, - 0xcc, 0x2f, 0x00, 0x80, 0xcc, 0x2f, 0x00, 0x80, 0xcc, 0x2f, 0x00, 0x80, 0xcc, - 0x2f, 0x00, 0x80, 0xcc, 0x2f, 0x00, 0x80, 0xcc, 0x2f, 0x00, 0x80, 0xcc, 0x2f, - 0x00, 0x80, 0xbc, 0x2f, 0x00, 0x80, 0xc4, 0x2f, 0x00, 0x80, 0x74, 0x36, 0x00, - 0x80, 0x04, 0x37, 0x00, 0x80, 0x74, 0x36, 0x00, 0x80, 0xc4, 0x36, 0x00, 0x80, - 0x04, 0x37, 0x00, 0x80, 0xc4, 0x36, 0x00, 0x80, 0x04, 0x37, 0x00, 0x80, 0x04, - 0x37, 0x00, 0x80, 0x04, 0x37, 0x00, 0x80, 0x04, 0x37, 0x00, 0x80, 0x04, 0x37, - 0x00, 0x80, 0x04, 0x37, 0x00, 0x80, 0x04, 0x37, 0x00, 0x80, 0x04, 0x37, 0x00, - 0x80, 0x04, 0x37, 0x00, 0x80, 0xc4, 0x36, 0x00, 0x80, 0x04, 0x37, 0x00, 0x80, - 0x04, 0x37, 0x00, 0x80, 0x04, 0x37, 0x00, 0x80, 0x04, 0x37, 0x00, 0x80, 0x74, - 0x36, 0x00, 0x80, 0x74, 0x36, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0c, 0x3d, 0x00, 0x80, 0x60, 0x40, 0x00, 0x80, 0x60, 0x40, 0x00, - 0x80, 0x60, 0x40, 0x00, 0x80, 0x00, 0x3d, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, - 0x60, 0x40, 0x00, 0x80, 0x60, 0x40, 0x00, 0x80, 0x60, 0x40, 0x00, 0x80, 0x60, - 0x40, 0x00, 0x80, 0x60, 0x40, 0x00, 0x80, 0x60, 0x40, 0x00, 0x80, 0xec, 0x3c, - 0x00, 0x80, 0x60, 0x40, 0x00, 0x80, 0x60, 0x40, 0x00, 0x80, 0x60, 0x40, 0x00, - 0x80, 0x60, 0x40, 0x00, 0x80, 0x60, 0x40, 0x00, 0x80, 0x60, 0x40, 0x00, 0x80, - 0x60, 0x40, 0x00, 0x80, 0xd4, 0x3c, 0x00, 0x80, 0x60, 0x40, 0x00, 0x80, 0x60, - 0x40, 0x00, 0x80, 0x60, 0x40, 0x00, 0x80, 0x60, 0x40, 0x00, 0x80, 0x60, 0x40, - 0x00, 0x80, 0xe0, 0x3c, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x74, 0x5b, 0x00, - 0x80, 0x10, 0x5c, 0x00, 0x80, 0x64, 0x5c, 0x00, 0x80, 0x50, 0x5c, 0x00, 0x80, - 0x50, 0x5c, 0x00, 0x80, 0x50, 0x5c, 0x00, 0x80, 0x50, 0x5c, 0x00, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x44, 0x7a, 0x00, 0x80, 0xc0, 0x79, 0x00, 0x80, 0x2c, 0x7a, - 0x00, 0x80, 0x2c, 0x7a, 0x00, 0x80, 0x8c, 0x79, 0x00, 0x80, 0xb0, 0x79, 0x00, - 0x80, 0x9c, 0x79, 0x00, 0x80, 0x00, 0x7a, 0x00, 0x80, 0x10, 0x7a, 0x00, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, - 0x00, 0x34, 0x00, 0x00, 0x00, 0x41, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x0c, 0x00, - 0xe2, 0x00, 0x00, 0x00, 0x40, 0x00, 0x0c, 0x00, 0x74, 0x00, 0x04, 0x00, 0x6e, - 0x00, 0x04, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xe4, 0x00, 0x04, 0x00, 0x40, 0x00, - 0x0c, 0x00, 0xb4, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0c, - 0x00, 0xe8, 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x01, - 0x00, 0x00, 0x60, 0x01, 0x00, 0x00, 0xa0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, - 0x00, 0x29, 0x01, 0x03, 0x00, 0x69, 0x01, 0x03, 0x00, 0xa9, 0x01, 0x03, 0x00, - 0xe9, 0x01, 0x03, 0x00, 0x58, 0x00, 0x21, 0x00, 0x98, 0x00, 0x21, 0x00, 0x04, - 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, - 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x0c, 0x00, 0x28, 0x00, 0xcc, - 0x00, 0x29, 0x00, 0xbb, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x10, 0x00, - 0x11, 0x00, 0x80, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x18, 0x00, 0x01, 0x00, 0x18, - 0x00, 0x11, 0x00, 0x1c, 0x00, 0x87, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x20, 0x00, - 0x00, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x21, 0x00, 0x10, 0x00, 0x2c, 0x00, 0x00, - 0x00, 0x2d, 0x00, 0x00, 0x00, 0x29, 0x00, 0x02, 0x00, 0x30, 0x00, 0x12, 0x00, - 0x31, 0x00, 0x1f, 0x00, 0x34, 0x00, 0x0e, 0x00, 0x10, 0x00, 0xc0, 0x00, 0x11, - 0x00, 0x80, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x24, 0x00, - 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x28, 0x00, 0x7e, 0x00, 0x00, 0xf0, 0x00, - 0x00, 0x21, 0x00, 0x14, 0x00, 0x28, 0x00, 0x60, 0x00, 0x00, 0xf0, 0x00, 0x00, - 0x21, 0x00, 0x14, 0x00, 0x28, 0x00, 0x40, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x06, - 0xf0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2d, 0x00, - 0x41, 0x00, 0x01, 0xf0, 0x02, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, - 0x00, 0x06, 0xf0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, - 0x2d, 0x00, 0x45, 0x00, 0x01, 0xf0, 0x20, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, - 0xf0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2d, 0x00, - 0x00, 0x00, 0x05, 0xf0, 0x00, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, - 0x00, 0x20, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, - 0x04, 0xf0, 0x00, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x08, - 0xf0, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x2c, 0x00, 0x40, 0x00, 0x2d, 0x00, - 0x63, 0x00, 0x01, 0xf0, 0x08, 0x00, 0x04, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, - 0x00, 0x08, 0xf0, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x2c, 0x00, 0x60, 0x00, - 0x2d, 0x00, 0x43, 0x00, 0x01, 0xf0, 0x08, 0x00, 0x04, 0xf0, 0x00, 0x00, 0x00, - 0xf0, 0x00, 0x00, 0x08, 0xf0, 0x00, 0x00, 0x20, 0x00, 0x28, 0x00, 0x2c, 0x00, - 0x60, 0x00, 0x2d, 0x00, 0x44, 0x00, 0x01, 0xf0, 0x10, 0x00, 0x04, 0xf0, 0x00, - 0x00, 0x00, 0xf0, 0x00, 0x00, 0x08, 0xf0, 0x00, 0x00, 0x20, 0x00, 0xc0, 0x00, - 0x2c, 0x00, 0x60, 0x00, 0x2d, 0x00, 0x43, 0x00, 0x01, 0xf0, 0x08, 0x00, 0x04, - 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x08, 0xf0, 0x00, 0x00, 0x20, 0x00, - 0xc8, 0x00, 0x2c, 0x00, 0x60, 0x00, 0x2d, 0x00, 0x44, 0x00, 0x01, 0xf0, 0x10, - 0x00, 0x04, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xb0, 0x8d, 0x00, 0x80, - 0x28, 0x93, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x34, 0x8e, 0x00, 0x80, 0x30, - 0x93, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x8e, 0x00, 0x80, 0x38, 0x93, - 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x8d, 0x00, 0x80, 0xe0, 0x92, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x8d, 0x00, 0x80, 0xe8, 0x92, 0x00, 0x80, - 0x00, 0x00, 0x00, 0x00, 0xb0, 0x8d, 0x00, 0x80, 0xf0, 0x92, 0x00, 0x80, 0x00, - 0x00, 0x00, 0x00, 0xb0, 0x8d, 0x00, 0x80, 0x00, 0x93, 0x00, 0x80, 0x00, 0x00, - 0x00, 0x00, 0xb0, 0x8d, 0x00, 0x80, 0x08, 0x93, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x00, 0xb0, 0x8d, 0x00, 0x80, 0x10, 0x93, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, - 0xb0, 0x8d, 0x00, 0x80, 0x20, 0x93, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0xb0, - 0x8d, 0x00, 0x80, 0x28, 0x93, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x94, 0x8d, - 0x00, 0x80, 0x30, 0x93, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x94, 0x8d, 0x00, - 0x80, 0x38, 0x93, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x94, 0x8d, 0x00, 0x80, - 0x40, 0x93, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x94, 0x8d, 0x00, 0x80, 0x48, - 0x93, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x8d, 0x00, 0x80, 0xe0, 0x92, - 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x8d, 0x00, 0x80, 0xe8, 0x92, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x8d, 0x00, 0x80, 0xf0, 0x92, 0x00, 0x80, - 0x00, 0x00, 0x00, 0x00, 0xe4, 0x8d, 0x00, 0x80, 0x00, 0x93, 0x00, 0x80, 0x00, - 0x00, 0x00, 0x00, 0xe4, 0x8d, 0x00, 0x80, 0x08, 0x93, 0x00, 0x80, 0x00, 0x00, - 0x00, 0x00, 0xe4, 0x8d, 0x00, 0x80, 0x10, 0x93, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x00, 0xe4, 0x8d, 0x00, 0x80, 0x20, 0x93, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, - 0xe4, 0x8d, 0x00, 0x80, 0x28, 0x93, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0xe4, - 0x8d, 0x00, 0x80, 0x30, 0x93, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x8d, - 0x00, 0x80, 0x38, 0x93, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x8d, 0x00, - 0x80, 0x40, 0x93, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x8d, 0x00, 0x80, - 0x48, 0x93, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x94, 0x8d, 0x00, 0x80, 0x50, - 0x93, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x94, 0x8d, 0x00, 0x80, 0x58, 0x93, - 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x94, 0x8d, 0x00, 0x80, 0x60, 0x93, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x8d, 0x00, 0x80, 0x50, 0x93, 0x00, 0x80, - 0x00, 0x00, 0x00, 0x00, 0xe4, 0x8d, 0x00, 0x80, 0x58, 0x93, 0x00, 0x80, 0x00, - 0x00, 0x00, 0x00, 0xe4, 0x8d, 0x00, 0x80, 0x60, 0x93, 0x00, 0x80, 0x00, 0x00, - 0x00, 0x00, 0xe4, 0x8d, 0x00, 0x80, 0xf8, 0x92, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x00, 0xe4, 0x8d, 0x00, 0x80, 0x28, 0x93, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, - 0xe4, 0x8d, 0x00, 0x80, 0xe0, 0x92, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0xe4, - 0x8d, 0x00, 0x80, 0xe8, 0x92, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0xe4, 0x8d, - 0x00, 0x80, 0xf0, 0x92, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0xe4, 0x8d, 0x00, - 0x80, 0xf8, 0x92, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0xe4, 0x8d, 0x00, 0x80, - 0x00, 0x93, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0xe4, 0x8d, 0x00, 0x80, 0x08, - 0x93, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0xe4, 0x8d, 0x00, 0x80, 0x10, 0x93, - 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0xe4, 0x8d, 0x00, 0x80, 0x18, 0x93, 0x00, - 0x80, 0x01, 0x00, 0x00, 0x00, 0xe4, 0x8d, 0x00, 0x80, 0x20, 0x93, 0x00, 0x80, - 0x01, 0x00, 0x00, 0x00, 0xe4, 0x8d, 0x00, 0x80, 0x28, 0x93, 0x00, 0x80, 0x01, - 0x00, 0x00, 0x00, 0xe4, 0x8d, 0x00, 0x80, 0x28, 0x93, 0x00, 0x80, 0x00, 0x00, - 0x00, 0x00, 0xe4, 0x8d, 0x00, 0x80, 0x28, 0x93, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x00, 0xe4, 0x8d, 0x00, 0x80, 0x28, 0x93, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, - 0xe4, 0x8d, 0x00, 0x80, 0x28, 0x93, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0xe4, - 0x8d, 0x00, 0x80, 0x28, 0x93, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x8d, - 0x00, 0x80, 0x28, 0x93, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x8d, 0x00, - 0x80, 0x28, 0x93, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x8d, 0x00, 0x80, - 0x28, 0x93, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x8d, 0x00, 0x80, 0x28, - 0x93, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x8d, 0x00, 0x80, 0x28, 0x93, - 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x8d, 0x00, 0x80, 0x28, 0x93, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x8d, 0x00, 0x80, 0x28, 0x93, 0x00, 0x80, - 0x00, 0x00, 0x00, 0x00, 0xe4, 0x8d, 0x00, 0x80, 0x28, 0x93, 0x00, 0x80, 0x00, - 0x00, 0x00, 0x00, 0xe4, 0x8d, 0x00, 0x80, 0x28, 0x93, 0x00, 0x80, 0x00, 0x00, - 0x00, 0x00, 0xe4, 0x8d, 0x00, 0x80, 0x28, 0x93, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x34, 0x8e, 0x00, 0x80, 0x28, 0x93, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x6c, 0x8e, 0x00, 0x80, 0x28, 0x93, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x34, - 0x8e, 0x00, 0x80, 0x30, 0x93, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x8e, - 0x00, 0x80, 0x30, 0x93, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x34, 0x8e, 0x00, - 0x80, 0x38, 0x93, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x8e, 0x00, 0x80, - 0x38, 0x93, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x34, 0x8e, 0x00, 0x80, 0x40, - 0x93, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x8e, 0x00, 0x80, 0x40, 0x93, - 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x18, 0x8e, 0x00, 0x80, 0x68, 0x93, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x50, 0x8e, 0x00, 0x80, 0x68, 0x93, 0x00, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x94, 0x8d, 0x00, 0x80, 0x68, 0x93, 0x00, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x94, 0x8d, 0x00, 0x80, 0x70, 0x93, 0x00, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x94, 0x8d, 0x00, 0x80, 0x78, 0x93, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x94, 0x8d, 0x00, 0x80, 0x80, 0x93, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, - 0xcc, 0x8d, 0x00, 0x80, 0x88, 0x93, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0xb0, - 0x8d, 0x00, 0x80, 0xf8, 0x92, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0xb0, 0x8d, - 0x00, 0x80, 0x10, 0x93, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0xfc, 0x8d, 0x00, - 0x80, 0x90, 0x93, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 0x2e, 0x2e, 0x2f, 0x73, 0x79, - 0x6e, 0x63, 0x66, 0x65, 0x70, 0x2e, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x2e, 0x2e, 0x2f, 0x73, 0x79, 0x6e, 0x63, 0x6d, 0x61, 0x69, 0x6e, - 0x2e, 0x63, 0x00, 0x00, 0x00, 0x2e, 0x2e, 0x2f, 0x73, 0x79, 0x6e, 0x63, 0x70, - 0x72, 0x6f, 0x74, 0x2e, 0x63, 0x00, 0x00, 0x00, 0x2e, 0x2e, 0x2f, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, - 0x2e, 0x2e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x2e, 0x2f, 0x74, 0x69, 0x6d, - 0x65, 0x72, 0x2e, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x2e, 0x2e, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x69, 0x6e, 0x74, 0x2e, - 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x60, 0x09, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0xc0, 0x12, - 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x80, 0x25, 0x00, 0x00, 0x28, 0x00, 0x00, - 0x00, 0x40, 0x38, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, - 0xe1, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x6f, 0xfa, 0x00, 0x00, 0xc8, 0x00, - 0x00, 0x00, 0x00, 0x2c, 0x01, 0x00, 0xfa, 0x00, 0x00, 0x00, 0x38, 0xc1, 0x01, - 0x00, 0x2c, 0x01, 0x00, 0x00, 0x70, 0x82, 0x03, 0x00, 0x58, 0x02, 0x00, 0x00, - 0xe0, 0x04, 0x07, 0x00, 0xe8, 0x03, 0x00, 0x00, 0xa8, 0x0d, 0x0e, 0x00, 0x40, - 0x06, 0x00, 0x00, 0xc8, 0xc0, 0x12, 0x00, 0x40, 0x06, 0x00, 0x00, 0x00, 0x20, - 0x1c, 0x00, 0x40, 0x06, 0x00, 0x00, 0x00, 0x80, 0x25, 0x00, 0x40, 0x06, 0x00, - 0x00, 0x00, 0x40, 0x38, 0x00, 0x40, 0x06, 0x00, 0x00, 0x00, 0x20, 0x1c, 0x00, - 0xc4, 0x09, 0x00, 0x00, 0x00, 0x80, 0x25, 0x00, 0xa0, 0x0f, 0x00, 0x00, 0x00, - 0x40, 0x38, 0x00, 0x88, 0x13, 0x00, 0x00, 0x00, 0x80, 0x70, 0x00, 0x88, 0x13, - 0x00, 0x00, 0x80, 0x96, 0x98, 0x00, 0x88, 0x13, 0x00, 0x00, 0x00, 0x40, 0x1f, - 0x00, 0xa0, 0x0f, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x2e, 0x2e, 0x2f, 0x73, - 0x63, 0x61, 0x2e, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x2e, 0x2e, 0x2f, 0x73, 0x63, 0x61, 0x70, 0x72, 0x6f, 0x74, - 0x2e, 0x63, 0x00, 0x00, 0x00, 0x00, 0x54, 0x29, 0x66, 0xf8, 0x40, 0x28, 0x23, - 0x29, 0x62, 0x69, 0x6f, 0x73, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x68, 0x20, 0x20, - 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, - 0x33, 0x2e, 0x33, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, - 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, 0x31, - 0x36, 0x3a, 0x34, 0x32, 0x3a, 0x31, 0x37, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, - 0x29, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 0x68, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, - 0x33, 0x2e, 0x32, 0x31, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, - 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x30, 0x2f, 0x30, 0x37, 0x20, - 0x31, 0x37, 0x3a, 0x31, 0x38, 0x3a, 0x30, 0x36, 0x20, 0x24, 0x00, 0x40, 0x28, - 0x23, 0x29, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x2e, - 0x63, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, - 0x20, 0x31, 0x2e, 0x33, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, - 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x30, 0x39, 0x2f, 0x31, 0x36, 0x20, - 0x32, 0x33, 0x3a, 0x32, 0x32, 0x3a, 0x30, 0x35, 0x20, 0x24, 0x00, 0x40, 0x28, - 0x23, 0x29, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x2e, - 0x68, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, - 0x20, 0x33, 0x2e, 0x33, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, - 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, - 0x31, 0x36, 0x3a, 0x34, 0x33, 0x3a, 0x33, 0x37, 0x20, 0x24, 0x00, 0x40, 0x28, - 0x23, 0x29, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x63, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, - 0x20, 0x33, 0x2e, 0x31, 0x38, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, - 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x32, 0x2f, 0x32, 0x36, - 0x20, 0x32, 0x32, 0x3a, 0x30, 0x37, 0x3a, 0x35, 0x39, 0x20, 0x24, 0x00, 0x40, - 0x28, 0x23, 0x29, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x68, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x3a, 0x20, 0x33, 0x2e, 0x32, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, - 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x30, 0x2f, 0x31, 0x30, - 0x20, 0x32, 0x33, 0x3a, 0x32, 0x37, 0x3a, 0x30, 0x35, 0x20, 0x24, 0x00, 0x40, - 0x28, 0x23, 0x29, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6d, 0x6b, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x3a, 0x20, 0x33, 0x2e, 0x32, 0x38, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, - 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x35, 0x2f, 0x33, - 0x30, 0x20, 0x31, 0x35, 0x3a, 0x30, 0x32, 0x3a, 0x30, 0x36, 0x20, 0x24, 0x00, - 0x40, 0x28, 0x23, 0x29, 0x63, 0x6f, 0x6e, 0x63, 0x70, 0x72, 0x6f, 0x74, 0x2e, - 0x68, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x33, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, - 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, - 0x35, 0x20, 0x31, 0x36, 0x3a, 0x34, 0x36, 0x3a, 0x32, 0x38, 0x20, 0x24, 0x00, - 0x40, 0x28, 0x23, 0x29, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x63, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, - 0x33, 0x2e, 0x32, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, - 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x30, 0x2f, 0x31, 0x30, 0x20, 0x32, - 0x33, 0x3a, 0x32, 0x37, 0x3a, 0x30, 0x37, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, - 0x29, 0x64, 0x65, 0x66, 0x73, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, - 0x33, 0x2e, 0x31, 0x31, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, - 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x34, 0x2f, 0x30, 0x39, 0x20, - 0x31, 0x35, 0x3a, 0x30, 0x38, 0x3a, 0x30, 0x32, 0x20, 0x24, 0x00, 0x40, 0x28, - 0x23, 0x29, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x68, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, - 0x20, 0x33, 0x2e, 0x31, 0x31, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, - 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x30, 0x37, 0x2f, 0x32, 0x33, - 0x20, 0x30, 0x31, 0x3a, 0x35, 0x36, 0x3a, 0x35, 0x35, 0x20, 0x24, 0x00, 0x40, - 0x28, 0x23, 0x29, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x73, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x3a, 0x20, 0x33, 0x2e, 0x33, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, - 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x30, 0x33, 0x2f, 0x31, 0x39, - 0x20, 0x32, 0x30, 0x3a, 0x35, 0x37, 0x3a, 0x35, 0x36, 0x20, 0x24, 0x00, 0x40, - 0x28, 0x23, 0x29, 0x66, 0x65, 0x70, 0x6d, 0x73, 0x67, 0x2e, 0x68, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x3a, 0x20, 0x32, 0x2e, 0x35, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, - 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x30, 0x2f, 0x30, 0x37, - 0x20, 0x31, 0x39, 0x3a, 0x32, 0x39, 0x3a, 0x34, 0x33, 0x20, 0x24, 0x00, 0x40, - 0x28, 0x23, 0x29, 0x66, 0x78, 0x66, 0x65, 0x70, 0x2f, 0x4d, 0x61, 0x6b, 0x65, - 0x66, 0x69, 0x6c, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x31, 0x2e, 0x32, 0x20, 0x24, - 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, - 0x2f, 0x31, 0x30, 0x2f, 0x30, 0x39, 0x20, 0x30, 0x33, 0x3a, 0x35, 0x30, 0x3a, - 0x30, 0x32, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x68, 0x6f, 0x73, 0x74, - 0x63, 0x6f, 0x6d, 0x6d, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x31, 0x32, 0x20, - 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, - 0x37, 0x2f, 0x30, 0x34, 0x2f, 0x32, 0x39, 0x20, 0x31, 0x39, 0x3a, 0x33, 0x31, - 0x3a, 0x31, 0x30, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x68, 0x6f, 0x73, - 0x74, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x32, 0x20, - 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, - 0x36, 0x2f, 0x31, 0x30, 0x2f, 0x31, 0x30, 0x20, 0x32, 0x33, 0x3a, 0x32, 0x37, - 0x3a, 0x30, 0x38, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x68, 0x6f, 0x73, - 0x74, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x73, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x38, 0x20, - 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, - 0x37, 0x2f, 0x30, 0x31, 0x2f, 0x32, 0x31, 0x20, 0x31, 0x37, 0x3a, 0x30, 0x36, - 0x3a, 0x35, 0x32, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x69, 0x75, 0x73, - 0x63, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x32, 0x2e, 0x33, 0x20, - 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, - 0x32, 0x2f, 0x30, 0x35, 0x2f, 0x32, 0x34, 0x20, 0x30, 0x30, 0x3a, 0x30, 0x36, - 0x3a, 0x32, 0x39, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x6d, 0x69, 0x64, - 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x31, 0x31, - 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, - 0x39, 0x36, 0x2f, 0x31, 0x30, 0x2f, 0x31, 0x30, 0x20, 0x32, 0x33, 0x3a, 0x32, - 0x37, 0x3a, 0x30, 0x38, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x6d, 0x6f, - 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, - 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x34, - 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, - 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, 0x31, 0x36, 0x3a, 0x34, - 0x39, 0x3a, 0x33, 0x33, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x6d, 0x6f, - 0x76, 0x65, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, - 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x32, - 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, - 0x39, 0x36, 0x2f, 0x31, 0x30, 0x2f, 0x31, 0x30, 0x20, 0x32, 0x33, 0x3a, 0x32, - 0x37, 0x3a, 0x31, 0x30, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x6d, 0x6f, - 0x76, 0x65, 0x2e, 0x73, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, - 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x31, - 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, - 0x39, 0x33, 0x2f, 0x30, 0x38, 0x2f, 0x32, 0x30, 0x20, 0x31, 0x35, 0x3a, 0x32, - 0x34, 0x3a, 0x32, 0x32, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x24, - 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x31, - 0x30, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x37, 0x2f, 0x30, 0x34, 0x2f, 0x32, 0x39, 0x20, 0x31, 0x39, 0x3a, - 0x33, 0x31, 0x3a, 0x31, 0x31, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, - 0x37, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x37, 0x2f, 0x30, 0x34, 0x2f, 0x32, 0x39, 0x20, 0x31, 0x39, 0x3a, - 0x33, 0x31, 0x3a, 0x31, 0x32, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x72, - 0x77, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, - 0x32, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x36, 0x2f, 0x30, 0x39, 0x2f, 0x31, 0x36, 0x20, 0x32, 0x33, 0x3a, - 0x32, 0x39, 0x3a, 0x34, 0x34, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x72, - 0x77, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x32, 0x2e, - 0x34, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x37, 0x2f, 0x30, 0x32, 0x2f, 0x32, 0x30, 0x20, 0x32, 0x32, 0x3a, - 0x32, 0x37, 0x3a, 0x35, 0x30, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, - 0x63, 0x61, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, - 0x37, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x37, 0x2f, 0x30, 0x34, 0x2f, 0x30, 0x37, 0x20, 0x32, 0x31, 0x3a, - 0x34, 0x33, 0x3a, 0x31, 0x34, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, - 0x63, 0x61, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, - 0x36, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, 0x31, 0x36, 0x3a, - 0x35, 0x33, 0x3a, 0x30, 0x33, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, - 0x63, 0x61, 0x70, 0x72, 0x6f, 0x74, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, - 0x38, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x37, 0x2f, 0x30, 0x31, 0x2f, 0x32, 0x39, 0x20, 0x32, 0x31, 0x3a, - 0x31, 0x39, 0x3a, 0x31, 0x35, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, - 0x63, 0x68, 0x65, 0x64, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, - 0x35, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x36, 0x2f, 0x30, 0x39, 0x2f, 0x31, 0x36, 0x20, 0x32, 0x33, 0x3a, - 0x33, 0x32, 0x3a, 0x32, 0x36, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, - 0x63, 0x68, 0x65, 0x64, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, - 0x33, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x36, 0x2f, 0x30, 0x39, 0x2f, 0x32, 0x34, 0x20, 0x31, 0x35, 0x3a, - 0x30, 0x31, 0x3a, 0x34, 0x39, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, - 0x79, 0x6e, 0x63, 0x62, 0x69, 0x6f, 0x73, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x31, 0x2e, - 0x37, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x36, 0x2f, 0x31, 0x30, 0x2f, 0x32, 0x33, 0x20, 0x32, 0x31, 0x3a, - 0x34, 0x30, 0x3a, 0x31, 0x32, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, - 0x79, 0x6e, 0x63, 0x63, 0x68, 0x61, 0x6e, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, - 0x33, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x37, 0x2f, 0x30, 0x31, 0x2f, 0x31, 0x35, 0x20, 0x31, 0x38, 0x3a, - 0x30, 0x38, 0x3a, 0x33, 0x35, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, - 0x79, 0x6e, 0x63, 0x66, 0x65, 0x70, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, - 0x32, 0x30, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, - 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x32, 0x2f, 0x31, 0x30, 0x20, 0x31, 0x35, - 0x3a, 0x34, 0x32, 0x3a, 0x32, 0x31, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, - 0x73, 0x79, 0x6e, 0x63, 0x6d, 0x61, 0x69, 0x6e, 0x2e, 0x63, 0x20, 0x20, 0x20, - 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, - 0x2e, 0x31, 0x30, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, - 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x31, 0x2f, 0x31, 0x35, 0x20, 0x31, - 0x38, 0x3a, 0x30, 0x37, 0x3a, 0x30, 0x39, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, - 0x29, 0x73, 0x79, 0x6e, 0x63, 0x70, 0x72, 0x6f, 0x74, 0x2e, 0x63, 0x20, 0x20, - 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, - 0x33, 0x2e, 0x31, 0x32, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, - 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x35, 0x2f, 0x31, 0x32, 0x20, - 0x31, 0x39, 0x3a, 0x30, 0x33, 0x3a, 0x33, 0x33, 0x20, 0x24, 0x00, 0x40, 0x28, - 0x23, 0x29, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, - 0x20, 0x33, 0x2e, 0x36, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, - 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x30, 0x39, 0x2f, 0x31, 0x36, 0x20, - 0x32, 0x33, 0x3a, 0x34, 0x31, 0x3a, 0x34, 0x35, 0x20, 0x24, 0x00, 0x40, 0x28, - 0x23, 0x29, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, - 0x20, 0x33, 0x2e, 0x38, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, - 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x30, 0x39, 0x2f, 0x31, 0x36, 0x20, - 0x32, 0x33, 0x3a, 0x34, 0x32, 0x3a, 0x30, 0x38, 0x20, 0x24, 0x00, 0x40, 0x28, - 0x23, 0x29, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x69, 0x6e, 0x74, 0x2e, 0x63, 0x20, - 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, - 0x20, 0x33, 0x2e, 0x36, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, - 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x31, 0x2f, 0x31, 0x35, 0x20, - 0x31, 0x38, 0x3a, 0x31, 0x30, 0x3a, 0x30, 0x39, 0x20, 0x24, 0x00, 0x40, 0x28, - 0x23, 0x29, 0x75, 0x74, 0x69, 0x6c, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, - 0x20, 0x33, 0x2e, 0x33, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, - 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, - 0x31, 0x36, 0x3a, 0x35, 0x39, 0x3a, 0x30, 0x39, 0x20, 0x24, 0x00, 0x40, 0x28, - 0x23, 0x29, 0x75, 0x74, 0x69, 0x6c, 0x2e, 0x73, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, - 0x20, 0x33, 0x2e, 0x34, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, - 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x31, 0x2f, 0x32, 0x31, 0x20, - 0x31, 0x37, 0x3a, 0x30, 0x36, 0x3a, 0x35, 0x32, 0x20, 0x24, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; diff --git a/sys/dev/digi/EPCX_PCI.bios.h b/sys/dev/digi/EPCX_PCI.bios.h deleted file mode 100644 index e471a3615d27..000000000000 --- a/sys/dev/digi/EPCX_PCI.bios.h +++ /dev/null @@ -1,2355 +0,0 @@ -/*- - * Copyright (c) 2001 Brian Somers <brian@Awfulhak.org> - * based on work by Slawa Olhovchenkov - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - */ - -static const u_char EPCX_PCI_bios[] = { - 0x4f, 0x53, 0x76, 0x7f, 0x53, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xee, - 0x76, 0x75, 0x00, 0x00, 0x00, 0x00, 0x40, 0x28, 0x23, 0x29, 0x70, 0x63, 0x69, - 0x62, 0x69, 0x6f, 0x73, 0x2e, 0x62, 0x69, 0x6e, 0x20, 0x20, 0x20, 0x20, 0x32, - 0x2e, 0x33, 0x2e, 0x32, 0x20, 0x20, 0x30, 0x36, 0x2f, 0x30, 0x32, 0x2f, 0x39, - 0x37, 0x00, 0x40, 0x28, 0x23, 0x29, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, - 0x68, 0x74, 0x20, 0x28, 0x43, 0x29, 0x20, 0x31, 0x39, 0x39, 0x32, 0x2c, 0x20, - 0x44, 0x49, 0x47, 0x49, 0x20, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2e, 0x20, 0x41, 0x6c, 0x6c, 0x20, 0x52, 0x69, - 0x67, 0x68, 0x74, 0x73, 0x20, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, - 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x43, 0x50, 0x55, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x6e, 0x27, 0x74, 0x20, - 0x77, 0x6f, 0x72, 0x6b, 0x5d, 0x00, 0x1e, 0x24, 0x00, 0xa0, 0x01, 0x3c, 0x10, - 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0x00, 0xa0, 0x04, 0x3c, 0x80, 0x01, - 0x84, 0x34, 0x0c, 0x00, 0x88, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, - 0x35, 0x0c, 0x00, 0x88, 0xac, 0x0f, 0x80, 0x04, 0x3c, 0x90, 0x00, 0x84, 0x24, - 0xff, 0x03, 0x05, 0x24, 0x24, 0x20, 0x85, 0x00, 0x00, 0xa0, 0x05, 0x3c, 0x00, - 0x10, 0xa5, 0x34, 0x21, 0x20, 0x85, 0x00, 0x6d, 0x00, 0x05, 0x24, 0x10, 0x00, - 0x08, 0x24, 0x00, 0xa0, 0x09, 0x3c, 0x00, 0x02, 0x29, 0x35, 0x00, 0x00, 0x8a, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, 0x11, 0x00, 0x00, 0x2a, 0xa1, - 0x01, 0x00, 0x84, 0x24, 0x01, 0x00, 0x29, 0x25, 0xff, 0xff, 0x08, 0x25, 0xf8, - 0xff, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x01, 0x3c, 0x10, 0x02, - 0x25, 0xac, 0x00, 0xa0, 0x01, 0x3c, 0x14, 0x02, 0x3f, 0xac, 0x00, 0xa0, 0x01, - 0x3c, 0x18, 0x02, 0x3d, 0xac, 0x01, 0x00, 0x08, 0x24, 0x00, 0xa0, 0x01, 0x3c, - 0x10, 0x0c, 0x28, 0xac, 0x00, 0xa0, 0x1d, 0x3c, 0x00, 0x04, 0xbd, 0x37, 0x78, - 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x10, 0x00, 0x00, - 0x00, 0x00, 0xb3, 0x00, 0x1e, 0x24, 0x00, 0xa0, 0x01, 0x3c, 0x10, 0x00, 0x3e, - 0xac, 0x00, 0x00, 0x1e, 0x24, 0x00, 0x10, 0x08, 0x3c, 0x00, 0x60, 0x88, 0x40, - 0x00, 0xa0, 0x04, 0x3c, 0x00, 0xa0, 0x05, 0x3c, 0x00, 0x10, 0xa5, 0x34, 0x00, - 0x00, 0x80, 0xac, 0x04, 0x00, 0x84, 0x24, 0xfd, 0xff, 0x85, 0x14, 0x00, 0x00, - 0x00, 0x00, 0xc8, 0x00, 0x1e, 0x24, 0x00, 0xa0, 0x01, 0x3c, 0x10, 0x00, 0x3e, - 0xac, 0x00, 0x00, 0x1e, 0x24, 0xff, 0xff, 0x08, 0x24, 0xb5, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x25, 0xb2, 0x00, 0x00, 0x15, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x08, 0x24, 0x21, 0x08, 0x00, 0x01, 0xae, 0x00, - 0x28, 0x14, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x21, 0x24, 0xab, 0x00, 0x20, - 0x14, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x24, 0xa8, 0x00, 0x48, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0xa5, 0x00, 0x40, 0x14, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x24, 0xa2, 0x00, 0x68, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x63, 0x24, 0x9f, 0x00, 0x60, 0x14, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x04, 0x24, 0x9c, 0x00, 0x88, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x84, 0x24, 0x99, 0x00, 0x80, 0x14, 0x00, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x05, 0x24, 0x96, 0x00, 0xa8, 0x14, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0xa5, 0x24, 0x93, 0x00, 0xa0, 0x14, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x06, - 0x24, 0x90, 0x00, 0xc8, 0x14, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xc6, 0x24, - 0x8d, 0x00, 0xc0, 0x14, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x07, 0x24, 0x8a, - 0x00, 0xe8, 0x14, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xe7, 0x24, 0x87, 0x00, - 0xe0, 0x14, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x09, 0x24, 0x84, 0x00, 0x28, - 0x15, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x29, 0x25, 0x81, 0x00, 0x20, 0x15, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0a, 0x24, 0x7e, 0x00, 0x48, 0x15, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x4a, 0x25, 0x7b, 0x00, 0x40, 0x15, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x0b, 0x24, 0x78, 0x00, 0x68, 0x15, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x6b, 0x25, 0x75, 0x00, 0x60, 0x15, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x0c, 0x24, 0x72, 0x00, 0x88, 0x15, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x8c, 0x25, 0x6f, 0x00, 0x80, 0x15, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x0d, 0x24, 0x6c, 0x00, 0xa8, 0x15, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xad, - 0x25, 0x69, 0x00, 0xa0, 0x15, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0e, 0x24, - 0x66, 0x00, 0xc8, 0x15, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xce, 0x25, 0x63, - 0x00, 0xc0, 0x15, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0f, 0x24, 0x60, 0x00, - 0xe8, 0x15, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xef, 0x25, 0x5d, 0x00, 0xe0, - 0x15, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x18, 0x24, 0x5a, 0x00, 0x08, 0x17, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x18, 0x27, 0x57, 0x00, 0x00, 0x17, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x10, 0x24, 0x54, 0x00, 0x08, 0x16, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x10, 0x26, 0x51, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x11, 0x24, 0x4e, 0x00, 0x28, 0x16, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x31, 0x26, 0x4b, 0x00, 0x20, 0x16, 0x00, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x12, 0x24, 0x48, 0x00, 0x48, 0x16, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x52, 0x26, 0x45, 0x00, 0x40, 0x16, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x13, - 0x24, 0x42, 0x00, 0x68, 0x16, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x73, 0x26, - 0x3f, 0x00, 0x60, 0x16, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x14, 0x24, 0x3c, - 0x00, 0x88, 0x16, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x94, 0x26, 0x39, 0x00, - 0x80, 0x16, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x15, 0x24, 0x36, 0x00, 0xa8, - 0x16, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xb5, 0x26, 0x33, 0x00, 0xa0, 0x16, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x16, 0x24, 0x30, 0x00, 0xc8, 0x16, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0xd6, 0x26, 0x2d, 0x00, 0xc0, 0x16, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x17, 0x24, 0x2a, 0x00, 0xe8, 0x16, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0xf7, 0x26, 0x27, 0x00, 0xe0, 0x16, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x1a, 0x24, 0x24, 0x00, 0x48, 0x17, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x5a, 0x27, 0x21, 0x00, 0x40, 0x17, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x1b, 0x24, 0x1e, 0x00, 0x68, 0x17, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x7b, - 0x27, 0x1b, 0x00, 0x60, 0x17, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1c, 0x24, - 0x18, 0x00, 0x88, 0x17, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x9c, 0x27, 0x15, - 0x00, 0x80, 0x17, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1d, 0x24, 0x12, 0x00, - 0xa8, 0x17, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xbd, 0x27, 0x0f, 0x00, 0xa0, - 0x17, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1e, 0x24, 0x0c, 0x00, 0xc8, 0x17, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xde, 0x27, 0x09, 0x00, 0xc0, 0x17, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x1f, 0x24, 0x06, 0x00, 0xe8, 0x17, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0xff, 0x27, 0x03, 0x00, 0xe0, 0x17, 0x00, 0x00, 0x00, - 0x00, 0x0e, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6b, 0x01, 0x1e, 0x24, - 0x00, 0xa0, 0x01, 0x3c, 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0x0f, - 0x80, 0x04, 0x3c, 0xa0, 0x00, 0x84, 0x24, 0xff, 0x03, 0x05, 0x24, 0x24, 0x20, - 0x85, 0x00, 0x00, 0xa0, 0x05, 0x3c, 0x00, 0x10, 0xa5, 0x34, 0x21, 0x20, 0x85, - 0x00, 0x08, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7d, 0x01, 0x1e, 0x24, - 0x00, 0xa0, 0x01, 0x3c, 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0x10, - 0x80, 0x1c, 0x3c, 0xb0, 0xe1, 0x9c, 0x27, 0x81, 0x01, 0x1e, 0x24, 0x00, 0xa0, - 0x01, 0x3c, 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0x01, 0x00, 0x11, - 0x04, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x01, 0x1e, 0x24, 0x00, 0xa0, 0x01, 0x3c, - 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0x0f, 0x80, 0x05, 0x3c, 0x00, - 0x00, 0xa5, 0x24, 0x0f, 0x80, 0x06, 0x3c, 0xd0, 0x6d, 0xc6, 0x24, 0x0f, 0x80, - 0x04, 0x3c, 0xd8, 0x04, 0x84, 0x24, 0x23, 0x20, 0xe4, 0x03, 0x21, 0x20, 0x86, - 0x00, 0xfc, 0xff, 0x84, 0x24, 0xfc, 0xff, 0xc6, 0x24, 0x00, 0x00, 0x88, 0x8c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0xac, 0x2b, 0x08, 0xa6, 0x00, 0xf9, - 0xff, 0x20, 0x14, 0x00, 0x00, 0x00, 0x00, 0xac, 0x01, 0x1e, 0x24, 0x00, 0xa0, - 0x01, 0x3c, 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0xb7, 0x01, 0x1e, - 0x24, 0x00, 0xa0, 0x01, 0x3c, 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, - 0x0f, 0x80, 0x1f, 0x3c, 0x68, 0x05, 0xff, 0x27, 0x0f, 0x80, 0x04, 0x3c, 0x40, - 0x06, 0x84, 0x24, 0x00, 0xa0, 0x01, 0x3c, 0x25, 0x20, 0x81, 0x00, 0x08, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x01, 0x1e, 0x24, 0x00, 0xa0, 0x01, - 0x3c, 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0x00, 0xa0, 0x08, 0x3c, - 0x80, 0x00, 0x08, 0x35, 0x0f, 0x80, 0x09, 0x3c, 0xc0, 0x05, 0x29, 0x25, 0x0f, - 0x80, 0x0a, 0x3c, 0x10, 0x06, 0x4a, 0x25, 0x0f, 0xa0, 0x0b, 0x3c, 0x25, 0x48, - 0x2b, 0x01, 0x25, 0x50, 0x4b, 0x01, 0x00, 0x00, 0x2b, 0x8d, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0b, 0xad, 0x04, 0x00, 0x08, 0x25, 0x04, 0x00, 0x29, 0x25, - 0xfa, 0xff, 0x2a, 0x15, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xa0, 0x1a, 0x3c, 0x80, 0x01, 0x5a, 0x37, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x40, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x1a, - 0x40, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1b, 0x3c, 0xfe, 0x00, 0x7b, 0x37, - 0x00, 0x00, 0x00, 0x00, 0x24, 0xd0, 0x5b, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x60, 0x9a, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x1a, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x10, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x09, 0x02, 0x1e, 0x24, 0x00, 0xa0, 0x01, 0x3c, - 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0x0f, 0x80, 0x1d, 0x3c, 0xb8, - 0x71, 0xbd, 0x27, 0x48, 0xc6, 0x03, 0x0c, 0x00, 0x00, 0x1e, 0x24, 0x55, 0xc0, - 0x03, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x15, 0x00, 0x1e, 0x24, 0x00, 0xa0, 0x01, 0x3c, 0x10, 0x00, 0x3e, 0xac, - 0x00, 0x00, 0x1e, 0x24, 0x0f, 0x80, 0x08, 0x3c, 0x68, 0x06, 0x08, 0x25, 0x00, - 0xa0, 0x01, 0x3c, 0x25, 0x40, 0x01, 0x01, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x60, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x05, - 0x3c, 0x00, 0x60, 0x85, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xa0, 0x09, 0x3c, 0x01, 0x00, 0x01, 0x3c, 0x23, 0x40, 0x21, 0x01, 0x03, - 0x00, 0x00, 0xa1, 0x04, 0x00, 0x08, 0x25, 0xfd, 0xff, 0x09, 0x15, 0x00, 0x00, - 0x00, 0x00, 0x03, 0x00, 0x05, 0x3c, 0x00, 0x60, 0x85, 0x40, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x09, 0x3c, 0x01, 0x00, 0x01, 0x3c, - 0x23, 0x40, 0x21, 0x01, 0x03, 0x00, 0x00, 0xa1, 0x04, 0x00, 0x08, 0x25, 0xfd, - 0xff, 0x09, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x60, 0x84, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x10, 0x04, 0x40, 0xff, 0xff, 0x08, 0x3c, 0xff, 0x3f, 0x08, 0x35, - 0x24, 0x20, 0x88, 0x00, 0x00, 0x10, 0x84, 0x40, 0x0f, 0x80, 0x08, 0x3c, 0xd0, - 0x6d, 0x08, 0x25, 0x0f, 0x80, 0x09, 0x3c, 0xe0, 0x71, 0x29, 0x25, 0xfc, 0xff, - 0x01, 0x24, 0x24, 0x48, 0x21, 0x01, 0xfc, 0xff, 0x01, 0x24, 0x24, 0x40, 0x01, - 0x01, 0x00, 0x00, 0x00, 0xad, 0x04, 0x00, 0x08, 0x25, 0xfd, 0xff, 0x09, 0x15, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x60, 0x02, 0x40, 0xff, 0xff, 0x01, 0x3c, 0xfe, 0x00, 0x21, 0x34, 0x25, 0x20, - 0x81, 0x00, 0x24, 0x40, 0x44, 0x00, 0x00, 0x60, 0x88, 0x40, 0x01, 0xff, 0x42, - 0x30, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x02, 0x40, - 0x00, 0x00, 0x00, 0x00, 0x26, 0x40, 0x44, 0x00, 0x01, 0xff, 0x08, 0x31, 0x26, - 0x40, 0x02, 0x01, 0x00, 0x60, 0x88, 0x40, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x60, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, - 0x24, 0x24, 0x48, 0x01, 0x01, 0x00, 0x60, 0x89, 0x40, 0x00, 0x68, 0x02, 0x40, - 0x00, 0x03, 0x84, 0x30, 0x25, 0x18, 0x44, 0x00, 0x00, 0x68, 0x83, 0x40, 0x00, - 0x60, 0x88, 0x40, 0x24, 0x10, 0x44, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x60, 0x08, 0x40, 0x00, 0x03, 0x84, 0x30, 0xfe, 0xff, 0x01, - 0x24, 0x24, 0x48, 0x01, 0x01, 0x00, 0x60, 0x89, 0x40, 0x00, 0x68, 0x02, 0x40, - 0x27, 0x18, 0x80, 0x00, 0x24, 0x18, 0x62, 0x00, 0x00, 0x68, 0x83, 0x40, 0x00, - 0x60, 0x88, 0x40, 0x24, 0x10, 0x44, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x10, 0x08, 0x3c, 0x00, 0x60, 0x88, 0x40, 0xc0, 0xbf, 0x08, - 0x3c, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x08, 0x40, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x09, 0x3c, 0xfe, 0x00, 0x29, 0x35, 0x00, - 0x00, 0x00, 0x00, 0x24, 0x40, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, 0x25, 0x40, - 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x88, 0x40, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2b, 0x10, 0x85, 0x00, 0x0a, 0x00, 0x40, 0x10, 0x21, 0x18, 0x00, 0x00, 0x00, - 0x00, 0x82, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x62, 0x00, 0x04, 0x00, - 0x84, 0x24, 0x2b, 0x18, 0x43, 0x00, 0x21, 0x18, 0x43, 0x00, 0x2b, 0x10, 0x85, - 0x00, 0xf8, 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xe0, 0x03, - 0x21, 0x10, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, - 0x30, 0x00, 0x00, 0x21, 0x28, 0x00, 0x00, 0x21, 0x10, 0x85, 0x00, 0x00, 0x00, - 0x42, 0x80, 0xc0, 0x18, 0x05, 0x00, 0x04, 0x10, 0x62, 0x00, 0x25, 0x30, 0xc2, - 0x00, 0x01, 0x00, 0xa5, 0x24, 0x04, 0x00, 0xa2, 0x2c, 0xf8, 0xff, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x21, 0x10, 0xc0, 0x00, 0xe8, - 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x18, 0xc2, 0x03, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x2e, 0x02, 0x00, 0x00, 0x1a, 0x02, 0x00, 0xff, 0x00, 0x04, - 0x3c, 0x24, 0x18, 0x64, 0x00, 0x25, 0x28, 0xa3, 0x00, 0x02, 0x1a, 0x02, 0x00, - 0x00, 0xff, 0x63, 0x30, 0x25, 0x28, 0xa3, 0x00, 0x02, 0x16, 0x02, 0x00, 0x10, - 0x00, 0xbf, 0x8f, 0x25, 0x10, 0xa2, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x18, 0x00, - 0xbd, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xbd, - 0x27, 0x18, 0x00, 0xa8, 0x8f, 0x02, 0xa2, 0x02, 0x3c, 0x04, 0x01, 0x42, 0x34, - 0x00, 0x00, 0x44, 0xac, 0x02, 0xa2, 0x03, 0x3c, 0x08, 0x01, 0x63, 0x34, 0x3f, - 0x00, 0x02, 0x3c, 0xff, 0xff, 0x42, 0x34, 0x24, 0x28, 0xa2, 0x00, 0x00, 0x00, - 0x65, 0xac, 0x02, 0xa2, 0x02, 0x3c, 0x0c, 0x01, 0x42, 0x34, 0x00, 0x00, 0x46, - 0xac, 0x02, 0xa2, 0x02, 0x3c, 0x10, 0x01, 0x42, 0x34, 0x00, 0x00, 0x47, 0xac, - 0x02, 0xa2, 0x02, 0x3c, 0x00, 0x01, 0x42, 0x34, 0x00, 0x00, 0x48, 0xac, 0x02, - 0xa2, 0x03, 0x3c, 0x28, 0x01, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xa2, 0xaf, 0x00, 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xff, 0x42, 0x30, 0x00, 0x00, 0xa2, 0xaf, 0x00, 0x00, 0xa2, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x42, 0x34, 0x00, 0x00, 0xa2, 0xaf, 0x00, - 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0xac, 0x10, 0x27, - 0x03, 0x24, 0x02, 0xa2, 0x04, 0x3c, 0x28, 0x01, 0x84, 0x34, 0x00, 0x00, 0x82, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x42, 0x30, 0x04, 0x00, 0x40, 0x14, - 0x21, 0x10, 0x60, 0x00, 0xff, 0xff, 0x63, 0x24, 0xf9, 0xff, 0x60, 0x1c, 0x21, - 0x10, 0x60, 0x00, 0x08, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, - 0x00, 0x00, 0xd0, 0xff, 0xbd, 0x27, 0x2c, 0x00, 0xbf, 0xaf, 0x28, 0x00, 0xb4, - 0xaf, 0x24, 0x00, 0xb3, 0xaf, 0x20, 0x00, 0xb2, 0xaf, 0x1c, 0x00, 0xb1, 0xaf, - 0x18, 0x00, 0xb0, 0xaf, 0x21, 0x90, 0x80, 0x00, 0x21, 0x98, 0xa0, 0x00, 0x21, - 0xa0, 0xe0, 0x00, 0x00, 0x80, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x21, 0x80, - 0xc0, 0x00, 0xff, 0x00, 0x10, 0x32, 0x06, 0x00, 0x00, 0x12, 0x21, 0x88, 0x00, - 0x00, 0x01, 0x00, 0x02, 0x24, 0x11, 0x00, 0x02, 0x12, 0x21, 0x10, 0x20, 0x02, - 0x9a, 0xc2, 0x03, 0x08, 0x00, 0x00, 0x00, 0x00, 0x43, 0x00, 0x02, 0x24, 0x10, - 0x00, 0xa2, 0xaf, 0x21, 0x20, 0x40, 0x02, 0x21, 0x28, 0x60, 0x02, 0x21, 0x30, - 0x80, 0x02, 0x38, 0xc2, 0x03, 0x0c, 0x02, 0x00, 0x07, 0x24, 0x13, 0x00, 0x40, - 0x14, 0x21, 0x10, 0x20, 0x02, 0x24, 0x80, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, - 0x01, 0x00, 0x31, 0x36, 0x9a, 0xc2, 0x03, 0x08, 0x21, 0x10, 0x20, 0x02, 0x43, - 0x01, 0x02, 0x24, 0x10, 0x00, 0xa2, 0xaf, 0x21, 0x20, 0x40, 0x02, 0x21, 0x28, - 0x60, 0x02, 0x21, 0x30, 0x80, 0x02, 0x38, 0xc2, 0x03, 0x0c, 0x0a, 0x00, 0x07, - 0x24, 0x05, 0x00, 0x40, 0x14, 0x21, 0x10, 0x20, 0x02, 0x50, 0x80, 0x84, 0x27, - 0x3e, 0xc4, 0x03, 0x0c, 0x02, 0x00, 0x31, 0x36, 0x21, 0x10, 0x20, 0x02, 0x2c, - 0x00, 0xbf, 0x8f, 0x28, 0x00, 0xb4, 0x8f, 0x24, 0x00, 0xb3, 0x8f, 0x20, 0x00, - 0xb2, 0x8f, 0x1c, 0x00, 0xb1, 0x8f, 0x18, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, - 0x03, 0x30, 0x00, 0xbd, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xa8, 0xff, 0xbd, 0x27, 0x54, 0x00, 0xbf, 0xaf, 0x50, 0x00, 0xb4, 0xaf, 0x4c, - 0x00, 0xb3, 0xaf, 0x48, 0x00, 0xb2, 0xaf, 0x44, 0x00, 0xb1, 0xaf, 0x40, 0x00, - 0xb0, 0xaf, 0x21, 0x80, 0xe0, 0x00, 0x68, 0x00, 0xa7, 0x8f, 0x21, 0x98, 0xc0, - 0x00, 0x07, 0x00, 0xa0, 0x10, 0x21, 0xa0, 0x00, 0x00, 0x06, 0x00, 0xe1, 0x04, - 0x33, 0x00, 0xb1, 0x27, 0x2d, 0x00, 0x14, 0x24, 0x03, 0x00, 0x00, 0x12, 0x23, - 0x38, 0x07, 0x00, 0xff, 0xff, 0x10, 0x26, 0x33, 0x00, 0xb1, 0x27, 0x33, 0x00, - 0xa0, 0xa3, 0xff, 0xff, 0x31, 0x26, 0x1b, 0x00, 0xe4, 0x00, 0x02, 0x00, 0x80, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x07, 0x00, 0x10, 0x10, 0x00, 0x00, - 0x21, 0x08, 0x5c, 0x00, 0x80, 0x80, 0x22, 0x90, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x12, 0x00, 0x00, 0x22, 0xa2, 0xff, 0xff, 0x10, 0x26, 0x1b, 0x00, - 0xe4, 0x00, 0x02, 0x00, 0x80, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x07, - 0x00, 0x12, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xed, 0xff, 0xe0, 0x14, 0xff, 0xff, 0x31, 0x26, 0x01, 0x00, 0x31, 0x26, 0x00, - 0x16, 0x13, 0x00, 0x03, 0x16, 0x02, 0x00, 0x01, 0x00, 0x03, 0x24, 0x0b, 0x00, - 0x43, 0x14, 0x21, 0x20, 0x80, 0x02, 0xff, 0xff, 0x10, 0x26, 0xff, 0xff, 0x02, - 0x24, 0x07, 0x00, 0x02, 0x12, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x12, 0x24, - 0x8c, 0xca, 0x03, 0x0c, 0x20, 0x00, 0x04, 0x24, 0xff, 0xff, 0x10, 0x26, 0xfc, - 0xff, 0x12, 0x16, 0x21, 0x20, 0x80, 0x02, 0x04, 0x00, 0x80, 0x10, 0x00, 0x16, - 0x13, 0x00, 0x8c, 0xca, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x13, - 0x00, 0x03, 0x16, 0x02, 0x00, 0x02, 0x00, 0x03, 0x24, 0x0a, 0x00, 0x43, 0x14, - 0xff, 0xff, 0x02, 0x24, 0xff, 0xff, 0x10, 0x26, 0x07, 0x00, 0x02, 0x12, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x12, 0x24, 0x8c, 0xca, 0x03, 0x0c, 0x30, 0x00, - 0x04, 0x24, 0xff, 0xff, 0x10, 0x26, 0xfc, 0xff, 0x12, 0x16, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x40, 0x10, - 0x21, 0x20, 0x40, 0x00, 0x00, 0x26, 0x04, 0x00, 0x01, 0x00, 0x31, 0x26, 0x8c, - 0xca, 0x03, 0x0c, 0x03, 0x26, 0x04, 0x00, 0x00, 0x00, 0x24, 0x92, 0x00, 0x00, - 0x22, 0x82, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x16, 0x13, 0x00, 0x03, 0x16, 0x02, 0x00, 0x03, 0x00, 0x03, 0x24, - 0x09, 0x00, 0x43, 0x14, 0xff, 0xff, 0x10, 0x26, 0xff, 0xff, 0x02, 0x24, 0x06, - 0x00, 0x02, 0x12, 0xff, 0xff, 0x11, 0x24, 0x8c, 0xca, 0x03, 0x0c, 0x20, 0x00, - 0x04, 0x24, 0xff, 0xff, 0x10, 0x26, 0xfc, 0xff, 0x11, 0x16, 0x00, 0x00, 0x00, - 0x00, 0x54, 0x00, 0xbf, 0x8f, 0x50, 0x00, 0xb4, 0x8f, 0x4c, 0x00, 0xb3, 0x8f, - 0x48, 0x00, 0xb2, 0x8f, 0x44, 0x00, 0xb1, 0x8f, 0x40, 0x00, 0xb0, 0x8f, 0x08, - 0x00, 0xe0, 0x03, 0x58, 0x00, 0xbd, 0x27, 0x14, 0xc3, 0x03, 0x08, 0x21, 0x18, - 0x00, 0x00, 0x01, 0x00, 0x63, 0x24, 0x00, 0x00, 0x82, 0x80, 0x00, 0x00, 0x00, - 0x00, 0xfc, 0xff, 0x40, 0x14, 0x01, 0x00, 0x84, 0x24, 0x08, 0x00, 0xe0, 0x03, - 0x21, 0x10, 0x60, 0x00, 0xd8, 0xff, 0xbd, 0x27, 0x20, 0x00, 0xbf, 0xaf, 0x1c, - 0x00, 0xb1, 0xaf, 0x18, 0x00, 0xb0, 0xaf, 0x21, 0x88, 0xc0, 0x00, 0x00, 0x00, - 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x40, 0x10, 0x21, 0x18, 0x40, - 0x00, 0x21, 0x80, 0x60, 0x00, 0xff, 0x00, 0x03, 0x32, 0x0a, 0x00, 0x02, 0x24, - 0x0c, 0x00, 0x62, 0x10, 0x0b, 0x00, 0x62, 0x28, 0x05, 0x00, 0x40, 0x10, 0x09, - 0x00, 0x02, 0x24, 0x10, 0x00, 0x62, 0x10, 0x20, 0x00, 0x62, 0x2c, 0x3f, 0xc3, - 0x03, 0x08, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x02, 0x24, 0x07, 0x00, 0x62, - 0x10, 0xff, 0x00, 0x03, 0x32, 0x3f, 0xc3, 0x03, 0x08, 0x20, 0x00, 0x62, 0x2c, - 0x8c, 0xca, 0x03, 0x0c, 0x5c, 0x00, 0x04, 0x24, 0x5c, 0xc3, 0x03, 0x08, 0x6e, - 0x00, 0x04, 0x24, 0x8c, 0xca, 0x03, 0x0c, 0x5c, 0x00, 0x04, 0x24, 0x5c, 0xc3, - 0x03, 0x08, 0x72, 0x00, 0x04, 0x24, 0x8c, 0xca, 0x03, 0x0c, 0x5c, 0x00, 0x04, - 0x24, 0x5c, 0xc3, 0x03, 0x08, 0x74, 0x00, 0x04, 0x24, 0x03, 0x00, 0x40, 0x14, - 0xff, 0x00, 0x02, 0x24, 0x18, 0x00, 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, 0x8c, - 0xca, 0x03, 0x0c, 0x5c, 0x00, 0x04, 0x24, 0x8c, 0xca, 0x03, 0x0c, 0x30, 0x00, - 0x04, 0x24, 0x8c, 0xca, 0x03, 0x0c, 0x78, 0x00, 0x04, 0x24, 0x02, 0x21, 0x10, - 0x00, 0x0a, 0x00, 0x82, 0x28, 0x03, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x50, 0xc3, 0x03, 0x08, 0x30, 0x00, 0x84, 0x24, 0x37, 0x00, 0x84, 0x24, 0x8c, - 0xca, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x04, 0x32, 0x0a, 0x00, - 0x82, 0x28, 0x03, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5c, 0xc3, 0x03, - 0x08, 0x30, 0x00, 0x84, 0x24, 0x5c, 0xc3, 0x03, 0x08, 0x37, 0x00, 0x84, 0x24, - 0x00, 0x00, 0x24, 0x82, 0x00, 0x00, 0x00, 0x00, 0x8c, 0xca, 0x03, 0x0c, 0x01, - 0x00, 0x31, 0x26, 0x00, 0x00, 0x23, 0x92, 0x00, 0x00, 0x22, 0x82, 0x00, 0x00, - 0x00, 0x00, 0xc2, 0xff, 0x40, 0x14, 0x21, 0x80, 0x60, 0x00, 0x20, 0x00, 0xbf, - 0x8f, 0x1c, 0x00, 0xb1, 0x8f, 0x18, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, - 0x28, 0x00, 0xbd, 0x27, 0xd0, 0xff, 0xbd, 0x27, 0x28, 0x00, 0xbf, 0xaf, 0x24, - 0x00, 0xb3, 0xaf, 0x20, 0x00, 0xb2, 0xaf, 0x1c, 0x00, 0xb1, 0xaf, 0x18, 0x00, - 0xb0, 0xaf, 0x21, 0x80, 0xa0, 0x00, 0x21, 0x88, 0xc0, 0x00, 0x21, 0x98, 0x80, - 0x00, 0x11, 0xc3, 0x03, 0x0c, 0x21, 0x20, 0x20, 0x02, 0x21, 0x20, 0x40, 0x00, - 0x2a, 0x10, 0x90, 0x00, 0x02, 0x00, 0x40, 0x10, 0x21, 0x18, 0x00, 0x00, 0x23, - 0x18, 0x04, 0x02, 0x21, 0x80, 0x60, 0x00, 0x00, 0x16, 0x13, 0x00, 0x03, 0x16, - 0x02, 0x00, 0x01, 0x00, 0x03, 0x24, 0x0b, 0x00, 0x43, 0x14, 0x00, 0x16, 0x13, - 0x00, 0xff, 0xff, 0x10, 0x26, 0xff, 0xff, 0x02, 0x24, 0x07, 0x00, 0x02, 0x12, - 0x00, 0x16, 0x13, 0x00, 0xff, 0xff, 0x12, 0x24, 0x8c, 0xca, 0x03, 0x0c, 0x20, - 0x00, 0x04, 0x24, 0xff, 0xff, 0x10, 0x26, 0xfc, 0xff, 0x12, 0x16, 0x00, 0x16, - 0x13, 0x00, 0x03, 0x16, 0x02, 0x00, 0x02, 0x00, 0x03, 0x24, 0x0a, 0x00, 0x43, - 0x14, 0xff, 0xff, 0x02, 0x24, 0xff, 0xff, 0x10, 0x26, 0x07, 0x00, 0x02, 0x12, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x12, 0x24, 0x8c, 0xca, 0x03, 0x0c, 0x30, - 0x00, 0x04, 0x24, 0xff, 0xff, 0x10, 0x26, 0xfc, 0xff, 0x12, 0x16, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x40, - 0x10, 0x21, 0x20, 0x40, 0x00, 0x00, 0x26, 0x04, 0x00, 0x01, 0x00, 0x31, 0x26, - 0x8c, 0xca, 0x03, 0x0c, 0x03, 0x26, 0x04, 0x00, 0x00, 0x00, 0x24, 0x92, 0x00, - 0x00, 0x22, 0x82, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x40, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x16, 0x13, 0x00, 0x03, 0x16, 0x02, 0x00, 0x03, 0x00, 0x03, - 0x24, 0x09, 0x00, 0x43, 0x14, 0xff, 0xff, 0x10, 0x26, 0xff, 0xff, 0x02, 0x24, - 0x06, 0x00, 0x02, 0x12, 0xff, 0xff, 0x11, 0x24, 0x8c, 0xca, 0x03, 0x0c, 0x20, - 0x00, 0x04, 0x24, 0xff, 0xff, 0x10, 0x26, 0xfc, 0xff, 0x11, 0x16, 0x00, 0x00, - 0x00, 0x00, 0x28, 0x00, 0xbf, 0x8f, 0x24, 0x00, 0xb3, 0x8f, 0x20, 0x00, 0xb2, - 0x8f, 0x1c, 0x00, 0xb1, 0x8f, 0x18, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, - 0x30, 0x00, 0xbd, 0x27, 0xd0, 0xff, 0xbd, 0x27, 0x2c, 0x00, 0xbf, 0xaf, 0x28, - 0x00, 0xb4, 0xaf, 0x24, 0x00, 0xb3, 0xaf, 0x20, 0x00, 0xb2, 0xaf, 0x1c, 0x00, - 0xb1, 0xaf, 0x18, 0x00, 0xb0, 0xaf, 0x21, 0x98, 0x80, 0x00, 0x21, 0xa0, 0xa0, - 0x00, 0x21, 0x80, 0x00, 0x00, 0x21, 0x88, 0x00, 0x00, 0x01, 0x00, 0x62, 0x82, - 0x00, 0x00, 0x00, 0x00, 0x71, 0x00, 0x40, 0x10, 0x01, 0x00, 0x12, 0x24, 0x21, - 0x10, 0x72, 0x02, 0x00, 0x00, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, 0xdb, 0xff, - 0x42, 0x24, 0x00, 0x16, 0x02, 0x00, 0x03, 0x1e, 0x02, 0x00, 0x54, 0x00, 0x62, - 0x2c, 0x68, 0x00, 0x40, 0x10, 0x80, 0x10, 0x03, 0x00, 0x0f, 0x80, 0x01, 0x3c, - 0x21, 0x08, 0x22, 0x00, 0x30, 0x58, 0x22, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0xca, 0x03, 0x0c, 0x25, 0x00, - 0x04, 0x24, 0x1e, 0xc4, 0x03, 0x08, 0x21, 0x10, 0x72, 0x02, 0x21, 0x20, 0x00, - 0x00, 0x94, 0x80, 0x86, 0x27, 0x68, 0xc3, 0x03, 0x0c, 0x21, 0x28, 0x00, 0x00, - 0x1e, 0xc4, 0x03, 0x08, 0x21, 0x10, 0x72, 0x02, 0x00, 0x26, 0x14, 0x00, 0x8c, - 0xca, 0x03, 0x0c, 0x03, 0x26, 0x04, 0x00, 0x1e, 0xc4, 0x03, 0x08, 0x21, 0x10, - 0x72, 0x02, 0x10, 0x00, 0xb4, 0xaf, 0x02, 0x00, 0x04, 0x24, 0x21, 0x28, 0x00, - 0x00, 0x21, 0x30, 0x00, 0x02, 0xa4, 0xc2, 0x03, 0x0c, 0x21, 0x38, 0x20, 0x02, - 0x8c, 0xca, 0x03, 0x0c, 0x42, 0x00, 0x04, 0x24, 0x1e, 0xc4, 0x03, 0x08, 0x21, - 0x10, 0x72, 0x02, 0x10, 0x00, 0xb4, 0xaf, 0x08, 0x00, 0x04, 0x24, 0x21, 0x28, - 0x00, 0x00, 0x21, 0x30, 0x00, 0x02, 0xa4, 0xc2, 0x03, 0x0c, 0x21, 0x38, 0x20, - 0x02, 0x8c, 0xca, 0x03, 0x0c, 0x51, 0x00, 0x04, 0x24, 0x1e, 0xc4, 0x03, 0x08, - 0x21, 0x10, 0x72, 0x02, 0x10, 0x00, 0xb4, 0xaf, 0x0a, 0x00, 0x04, 0x24, 0x01, - 0x00, 0x05, 0x24, 0x21, 0x30, 0x00, 0x02, 0xa4, 0xc2, 0x03, 0x0c, 0x21, 0x38, - 0x20, 0x02, 0x1e, 0xc4, 0x03, 0x08, 0x21, 0x10, 0x72, 0x02, 0x10, 0x00, 0xb4, - 0xaf, 0x0a, 0x00, 0x04, 0x24, 0x21, 0x28, 0x00, 0x00, 0x21, 0x30, 0x00, 0x02, - 0xa4, 0xc2, 0x03, 0x0c, 0x21, 0x38, 0x20, 0x02, 0x1e, 0xc4, 0x03, 0x08, 0x21, - 0x10, 0x72, 0x02, 0x21, 0x20, 0x00, 0x00, 0xa0, 0x80, 0x86, 0x27, 0x68, 0xc3, - 0x03, 0x0c, 0x21, 0x28, 0x00, 0x00, 0x10, 0x00, 0xb4, 0xaf, 0x10, 0x00, 0x04, - 0x24, 0x21, 0x28, 0x00, 0x00, 0x21, 0x30, 0x00, 0x02, 0xa4, 0xc2, 0x03, 0x0c, - 0x21, 0x38, 0x20, 0x02, 0x1e, 0xc4, 0x03, 0x08, 0x21, 0x10, 0x72, 0x02, 0x21, - 0x20, 0x00, 0x02, 0x21, 0x28, 0x20, 0x02, 0x68, 0xc3, 0x03, 0x0c, 0x21, 0x30, - 0x80, 0x02, 0x1e, 0xc4, 0x03, 0x08, 0x21, 0x10, 0x72, 0x02, 0x21, 0x20, 0x00, - 0x02, 0x21, 0x28, 0x20, 0x02, 0x1a, 0xc3, 0x03, 0x0c, 0x21, 0x30, 0x80, 0x02, - 0x21, 0x10, 0x72, 0x02, 0x36, 0xc4, 0x03, 0x08, 0x01, 0x00, 0x42, 0x24, 0x2f, - 0xc4, 0x03, 0x08, 0x03, 0x00, 0x10, 0x24, 0x03, 0x00, 0x00, 0x16, 0x80, 0x10, - 0x11, 0x00, 0x02, 0x00, 0x10, 0x24, 0x80, 0x10, 0x11, 0x00, 0x21, 0x10, 0x51, - 0x00, 0x40, 0x10, 0x02, 0x00, 0xd0, 0xff, 0x51, 0x24, 0x21, 0x10, 0x72, 0x02, - 0x00, 0x00, 0x42, 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x16, 0x21, - 0x88, 0x22, 0x02, 0x01, 0x00, 0x10, 0x24, 0x01, 0x00, 0x52, 0x26, 0x21, 0x10, - 0x72, 0x02, 0x00, 0x00, 0x42, 0x80, 0x00, 0x00, 0x00, 0x00, 0x92, 0xff, 0x40, - 0x14, 0x21, 0x10, 0x72, 0x02, 0x01, 0x00, 0x62, 0x26, 0x2c, 0x00, 0xbf, 0x8f, - 0x28, 0x00, 0xb4, 0x8f, 0x24, 0x00, 0xb3, 0x8f, 0x20, 0x00, 0xb2, 0x8f, 0x1c, - 0x00, 0xb1, 0x8f, 0x18, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x30, 0x00, - 0xbd, 0x27, 0x00, 0x00, 0xa4, 0xaf, 0x04, 0x00, 0xa5, 0xaf, 0x08, 0x00, 0xa6, - 0xaf, 0x0c, 0x00, 0xa7, 0xaf, 0xd0, 0xff, 0xbd, 0x27, 0x2c, 0x00, 0xbf, 0xaf, - 0x28, 0x00, 0xb4, 0xaf, 0x24, 0x00, 0xb3, 0xaf, 0x20, 0x00, 0xb2, 0xaf, 0x1c, - 0x00, 0xb1, 0xaf, 0x18, 0x00, 0xb0, 0xaf, 0x21, 0x80, 0x80, 0x00, 0x34, 0x00, - 0xb1, 0x27, 0x00, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x40, - 0x10, 0x21, 0x18, 0x40, 0x00, 0x25, 0x00, 0x14, 0x24, 0x45, 0x00, 0x13, 0x24, - 0xfc, 0xff, 0x12, 0x24, 0x00, 0x16, 0x03, 0x00, 0x03, 0x16, 0x02, 0x00, 0x12, - 0x00, 0x54, 0x14, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x82, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x62, 0x10, 0x21, 0x20, 0x00, 0x02, 0x04, 0x00, 0x73, - 0x14, 0x03, 0x00, 0x22, 0x26, 0x21, 0x20, 0x00, 0x02, 0x63, 0xc4, 0x03, 0x08, - 0x21, 0x28, 0x00, 0x00, 0x24, 0x10, 0x52, 0x00, 0x04, 0x00, 0x51, 0x24, 0x21, - 0x20, 0x00, 0x02, 0xfc, 0xff, 0x25, 0x8e, 0xb6, 0xc3, 0x03, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x6b, 0xc4, 0x03, 0x08, 0x21, 0x80, 0x40, 0x00, 0x00, 0x00, 0x04, - 0x82, 0x00, 0x00, 0x00, 0x00, 0x8c, 0xca, 0x03, 0x0c, 0x01, 0x00, 0x10, 0x26, - 0x00, 0x00, 0x03, 0x92, 0x00, 0x00, 0x02, 0x82, 0x00, 0x00, 0x00, 0x00, 0xe4, - 0xff, 0x40, 0x14, 0x00, 0x16, 0x03, 0x00, 0x2c, 0x00, 0xbf, 0x8f, 0x28, 0x00, - 0xb4, 0x8f, 0x24, 0x00, 0xb3, 0x8f, 0x20, 0x00, 0xb2, 0x8f, 0x1c, 0x00, 0xb1, - 0x8f, 0x18, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x30, 0x00, 0xbd, 0x27, - 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x00, 0xa0, 0x04, 0x3c, 0x30, - 0x0c, 0x84, 0x34, 0x00, 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x00, - 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, - 0x00, 0x3f, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x83, 0x8c, - 0xff, 0x3f, 0x02, 0x3c, 0xff, 0xff, 0x42, 0x34, 0x24, 0x18, 0x62, 0x00, 0x00, - 0x80, 0x02, 0x3c, 0x25, 0x18, 0x62, 0x00, 0x08, 0x00, 0x82, 0x94, 0x00, 0x00, - 0x00, 0x00, 0x81, 0x00, 0x42, 0x2c, 0x04, 0x00, 0x40, 0x14, 0x00, 0xa0, 0x02, - 0x3c, 0x80, 0x00, 0x02, 0x24, 0x08, 0x00, 0x82, 0xa4, 0x00, 0xa0, 0x02, 0x3c, - 0x30, 0x0c, 0x42, 0x34, 0x00, 0x00, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, 0xff, - 0x00, 0x44, 0x30, 0x02, 0x00, 0x02, 0x24, 0x0f, 0x00, 0x82, 0x10, 0x03, 0x00, - 0x82, 0x28, 0x05, 0x00, 0x40, 0x10, 0x01, 0x00, 0x02, 0x24, 0x08, 0x00, 0x82, - 0x10, 0x21, 0x28, 0x60, 0x00, 0xc2, 0xc4, 0x03, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x02, 0x24, 0x1b, 0x00, 0x82, 0x10, 0x00, 0xa0, 0x02, 0x3c, 0xc2, - 0xc4, 0x03, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x03, 0x3c, 0xa9, 0xc4, - 0x03, 0x08, 0x3a, 0x0c, 0x63, 0x34, 0x00, 0xa0, 0x05, 0x3c, 0x3a, 0x0c, 0xa5, - 0x34, 0x00, 0xa0, 0x02, 0x3c, 0x30, 0x0c, 0x42, 0x34, 0x08, 0x00, 0x42, 0x94, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x44, 0x30, 0xff, 0xff, 0x84, 0x24, 0x09, - 0x00, 0x80, 0x04, 0x00, 0xa0, 0x02, 0x3c, 0x00, 0x00, 0xa2, 0x90, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x62, 0xa0, 0x01, 0x00, 0xa5, 0x24, 0xff, 0xff, 0x84, - 0x24, 0xfa, 0xff, 0x81, 0x04, 0x01, 0x00, 0x63, 0x24, 0x00, 0xa0, 0x02, 0x3c, - 0x30, 0x0c, 0x42, 0x34, 0xc2, 0xc4, 0x03, 0x08, 0x00, 0x00, 0x40, 0xa0, 0x30, - 0x0c, 0x42, 0x34, 0x00, 0x00, 0x40, 0xa0, 0x04, 0x00, 0x42, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x09, 0xf8, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xbf, - 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xff, 0xbd, 0x27, 0x50, - 0x00, 0xbf, 0xaf, 0x4c, 0x00, 0xb1, 0xaf, 0x48, 0x00, 0xb0, 0xaf, 0x00, 0xa0, - 0x11, 0x3c, 0xb0, 0x80, 0x84, 0x27, 0x18, 0xc2, 0x03, 0x0c, 0x80, 0x01, 0x31, - 0x36, 0x00, 0xa0, 0x01, 0x3c, 0x04, 0x01, 0x22, 0xac, 0x01, 0x01, 0x02, 0x24, - 0x24, 0x00, 0x22, 0xae, 0x0c, 0x00, 0x20, 0xae, 0x20, 0x00, 0x05, 0x3c, 0x21, - 0x30, 0x00, 0x00, 0x18, 0x00, 0xa7, 0x27, 0x02, 0x00, 0x08, 0x3c, 0x80, 0x18, - 0x06, 0x00, 0x21, 0x18, 0x67, 0x00, 0x42, 0x20, 0x05, 0x00, 0x00, 0xa3, 0x02, - 0x3c, 0x21, 0x10, 0x44, 0x00, 0xf8, 0xff, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x62, 0xac, 0x00, 0xa3, 0x02, 0x3c, 0x21, 0x10, 0x44, 0x00, 0xfc, - 0xff, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x62, 0xac, 0x21, 0x28, - 0x80, 0x00, 0x2b, 0x10, 0x05, 0x01, 0xf0, 0xff, 0x40, 0x14, 0x01, 0x00, 0xc6, - 0x24, 0x20, 0x00, 0x05, 0x3c, 0x21, 0x30, 0x00, 0x00, 0x23, 0x01, 0x04, 0x3c, - 0x67, 0x45, 0x84, 0x34, 0xdc, 0xfe, 0x03, 0x3c, 0x98, 0xba, 0x63, 0x34, 0xf0, - 0xf0, 0x09, 0x3c, 0xf0, 0xf0, 0x29, 0x35, 0x0f, 0x0f, 0x08, 0x3c, 0x0f, 0x0f, - 0x08, 0x35, 0x02, 0x00, 0x07, 0x3c, 0x00, 0xa3, 0x01, 0x3c, 0x21, 0x08, 0x25, - 0x00, 0xf8, 0xff, 0x24, 0xac, 0x00, 0xa3, 0x01, 0x3c, 0x21, 0x08, 0x25, 0x00, - 0xfc, 0xff, 0x23, 0xac, 0x42, 0x10, 0x05, 0x00, 0x00, 0xa3, 0x01, 0x3c, 0x21, - 0x08, 0x22, 0x00, 0xf8, 0xff, 0x29, 0xac, 0x00, 0xa3, 0x01, 0x3c, 0x21, 0x08, - 0x22, 0x00, 0xfc, 0xff, 0x28, 0xac, 0x00, 0xa3, 0x02, 0x3c, 0x21, 0x10, 0x45, - 0x00, 0xf8, 0xff, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x44, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x02, 0x3c, 0x21, 0x10, 0x45, 0x00, 0xfc, - 0xff, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x43, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x42, 0x28, 0x05, 0x00, 0x2b, 0x10, 0xe5, 0x00, 0xe4, 0xff, 0x40, - 0x14, 0x01, 0x00, 0xc6, 0x24, 0x42, 0x20, 0x05, 0x00, 0x80, 0x10, 0x06, 0x00, - 0x18, 0x00, 0xa3, 0x27, 0x21, 0x10, 0x43, 0x00, 0x00, 0x00, 0x43, 0x8c, 0x00, - 0xa3, 0x01, 0x3c, 0x21, 0x08, 0x24, 0x00, 0xf8, 0xff, 0x23, 0xac, 0x18, 0x00, - 0x42, 0x8c, 0x00, 0xa3, 0x01, 0x3c, 0x21, 0x08, 0x24, 0x00, 0xfc, 0xff, 0x22, - 0xac, 0x10, 0x00, 0x25, 0xae, 0xb8, 0x80, 0x84, 0x27, 0x18, 0xc2, 0x03, 0x0c, - 0x00, 0xa0, 0x10, 0x3c, 0x00, 0xa0, 0x01, 0x3c, 0x04, 0x01, 0x22, 0xac, 0xc0, - 0x80, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x80, 0x01, 0x10, 0x36, 0xd4, 0x80, - 0x84, 0x27, 0x10, 0x00, 0x05, 0x8e, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0xe8, 0x80, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x81, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x0f, - 0x80, 0x04, 0x3c, 0x00, 0x00, 0x84, 0x24, 0x0f, 0x80, 0x05, 0x3c, 0x08, 0xc2, - 0x03, 0x0c, 0xd0, 0x6d, 0xa5, 0x24, 0x20, 0x00, 0x02, 0xae, 0x08, 0x81, 0x84, - 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x03, 0x8e, - 0xff, 0xff, 0x02, 0x24, 0x0b, 0x00, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0c, - 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x42, 0x34, 0x0c, 0x00, - 0x02, 0xae, 0x20, 0x81, 0x84, 0x27, 0x20, 0x00, 0x05, 0x8e, 0x3e, 0xc4, 0x03, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xc5, 0x03, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x81, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x3c, - 0x81, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x40, 0x81, - 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, - 0x24, 0x10, 0x00, 0xa2, 0xaf, 0x00, 0xa0, 0x04, 0x3c, 0x00, 0x10, 0x84, 0x34, - 0x0e, 0xa0, 0x05, 0x3c, 0x00, 0xf0, 0xa5, 0x34, 0x01, 0x00, 0x06, 0x24, 0xda, - 0xcc, 0x03, 0x0c, 0x21, 0x38, 0x00, 0x00, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x0c, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x42, - 0x34, 0x63, 0xc5, 0x03, 0x08, 0x0c, 0x00, 0x22, 0xae, 0xfc, 0xc9, 0x03, 0x0c, - 0x0a, 0x00, 0x04, 0x24, 0x50, 0x81, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x24, 0x10, 0x00, 0xa2, 0xaf, 0x10, 0xa0, - 0x04, 0x3c, 0x1f, 0xa0, 0x05, 0x3c, 0x01, 0x00, 0x06, 0x24, 0xda, 0xcc, 0x03, - 0x0c, 0x21, 0x38, 0x00, 0x00, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x42, 0x34, 0x76, - 0xc5, 0x03, 0x08, 0x0c, 0x00, 0x22, 0xae, 0xfc, 0xc9, 0x03, 0x0c, 0x0a, 0x00, - 0x04, 0x24, 0x60, 0x81, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x10, 0x00, 0xa0, 0xaf, 0x00, 0xa0, 0x04, 0x3c, 0x00, 0x10, 0x84, 0x34, - 0x00, 0xa0, 0x05, 0x3c, 0x00, 0x20, 0xa5, 0x34, 0x01, 0x00, 0x06, 0x24, 0xda, - 0xcc, 0x03, 0x0c, 0x21, 0x38, 0x00, 0x00, 0x07, 0x00, 0x40, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x0c, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x42, - 0x34, 0x0c, 0x00, 0x22, 0xae, 0x8c, 0xc5, 0x03, 0x08, 0x00, 0xa0, 0x02, 0x3c, - 0xfc, 0xc9, 0x03, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x00, 0xa0, 0x02, 0x3c, 0x80, - 0x01, 0x42, 0x34, 0x49, 0x00, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, - 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x74, 0x81, 0x84, 0x27, 0x18, 0xc2, 0x03, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x01, 0x3c, 0x04, 0x01, 0x22, 0xac, - 0x09, 0xcb, 0x03, 0x0c, 0x21, 0x20, 0x00, 0x00, 0x07, 0x00, 0x40, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x0c, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x42, 0x34, 0x0c, 0x00, 0x22, 0xae, 0xa3, 0xc5, 0x03, 0x08, 0x00, 0xa0, 0x02, - 0x3c, 0xfc, 0xc9, 0x03, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x00, 0xa0, 0x02, 0x3c, - 0x80, 0x01, 0x42, 0x34, 0x49, 0x00, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1c, - 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x81, 0x84, 0x27, 0x18, 0xc2, - 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x01, 0x3c, 0x04, 0x01, 0x22, - 0xac, 0x10, 0x00, 0xa0, 0xaf, 0x01, 0x00, 0x02, 0x24, 0x14, 0x00, 0xa2, 0xaf, - 0x21, 0x20, 0x00, 0x00, 0xff, 0xff, 0x05, 0x24, 0x00, 0x01, 0x06, 0x24, 0x65, - 0xd1, 0x03, 0x0c, 0xff, 0xff, 0x07, 0x24, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x0c, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x42, - 0x34, 0xbe, 0xc5, 0x03, 0x08, 0x0c, 0x00, 0x22, 0xae, 0xfc, 0xc9, 0x03, 0x0c, - 0x0a, 0x00, 0x04, 0x24, 0x84, 0x81, 0x84, 0x27, 0x18, 0xc2, 0x03, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xa0, 0x01, 0x3c, 0x04, 0x01, 0x22, 0xac, 0x50, 0x00, - 0xbf, 0x8f, 0x4c, 0x00, 0xb1, 0x8f, 0x48, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, - 0x03, 0x58, 0x00, 0xbd, 0x27, 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, - 0x8c, 0x81, 0x84, 0x27, 0x3a, 0xc0, 0x03, 0x0c, 0xfb, 0x00, 0x05, 0x24, 0x10, - 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, - 0x00, 0x00, 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x8c, 0x81, 0x84, - 0x27, 0x3a, 0xc0, 0x03, 0x0c, 0x05, 0x01, 0x05, 0x24, 0x10, 0x00, 0xbf, 0x8f, - 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xd8, - 0xff, 0xbd, 0x27, 0x24, 0x00, 0xbf, 0xaf, 0x20, 0x00, 0xb4, 0xaf, 0x1c, 0x00, - 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, - 0xaf, 0x21, 0x90, 0x80, 0x00, 0xff, 0xff, 0x10, 0x24, 0x00, 0xa0, 0x14, 0x3c, - 0x80, 0x01, 0x94, 0x36, 0xff, 0xff, 0x13, 0x24, 0x49, 0x00, 0x82, 0x92, 0x00, - 0x00, 0x00, 0x00, 0x06, 0x00, 0x40, 0x14, 0x00, 0xa0, 0x03, 0x3c, 0x80, 0x01, - 0x63, 0x34, 0x49, 0x00, 0x62, 0x90, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xff, 0x40, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x91, 0x92, 0x49, 0x00, 0x80, 0xa2, - 0x00, 0x16, 0x11, 0x00, 0x03, 0x1e, 0x02, 0x00, 0x0a, 0x00, 0x02, 0x24, 0x0a, - 0x00, 0x62, 0x10, 0x0b, 0x00, 0x62, 0x28, 0x05, 0x00, 0x40, 0x10, 0x08, 0x00, - 0x02, 0x24, 0x08, 0x00, 0x62, 0x10, 0x10, 0x00, 0x02, 0x24, 0x16, 0xc6, 0x03, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x02, 0x24, 0x18, 0x00, 0x62, 0x14, - 0x10, 0x00, 0x02, 0x24, 0x40, 0xc6, 0x03, 0x08, 0x21, 0x10, 0x00, 0x02, 0xe4, - 0xff, 0x13, 0x12, 0x00, 0x00, 0x00, 0x00, 0x8c, 0xca, 0x03, 0x0c, 0x08, 0x00, - 0x04, 0x24, 0x8c, 0xca, 0x03, 0x0c, 0x20, 0x00, 0x04, 0x24, 0x8c, 0xca, 0x03, - 0x0c, 0x08, 0x00, 0x04, 0x24, 0x1a, 0x00, 0x12, 0x02, 0x02, 0x00, 0x40, 0x16, - 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x07, 0x00, 0xff, 0xff, 0x01, 0x24, 0x04, - 0x00, 0x41, 0x16, 0x00, 0x80, 0x01, 0x3c, 0x02, 0x00, 0x01, 0x16, 0x00, 0x00, - 0x00, 0x00, 0x0d, 0x00, 0x06, 0x00, 0x12, 0x80, 0x00, 0x00, 0xe6, 0xc5, 0x03, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x42, 0x16, 0xd0, 0xff, 0x22, 0x26, - 0x9f, 0xff, 0x22, 0x26, 0xff, 0x00, 0x42, 0x30, 0x06, 0x00, 0x42, 0x2c, 0x03, - 0x00, 0x40, 0x10, 0xbf, 0xff, 0x22, 0x26, 0xe0, 0xff, 0x31, 0x26, 0xbf, 0xff, - 0x22, 0x26, 0xff, 0x00, 0x42, 0x30, 0x06, 0x00, 0x42, 0x2c, 0x0d, 0x00, 0x40, - 0x10, 0xd0, 0xff, 0x22, 0x26, 0x03, 0x00, 0x13, 0x16, 0x18, 0x00, 0x12, 0x02, - 0x21, 0x80, 0x00, 0x00, 0x18, 0x00, 0x12, 0x02, 0x00, 0x26, 0x11, 0x00, 0x03, - 0x26, 0x04, 0x00, 0x12, 0x28, 0x00, 0x00, 0x21, 0x10, 0xa4, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x8c, 0xca, 0x03, 0x0c, 0xc9, 0xff, 0x50, 0x24, 0xd0, 0xff, 0x22, - 0x26, 0xff, 0x00, 0x42, 0x30, 0x0a, 0x00, 0x42, 0x2c, 0xb4, 0xff, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x13, 0x16, 0x18, 0x00, 0x12, 0x02, 0x21, - 0x80, 0x00, 0x00, 0x18, 0x00, 0x12, 0x02, 0x00, 0x26, 0x11, 0x00, 0x03, 0x26, - 0x04, 0x00, 0x12, 0x28, 0x00, 0x00, 0x21, 0x10, 0xa4, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x8c, 0xca, 0x03, 0x0c, 0xd0, 0xff, 0x50, 0x24, 0xe6, 0xc5, 0x03, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0xbf, 0x8f, 0x20, 0x00, 0xb4, 0x8f, 0x1c, - 0x00, 0xb3, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, - 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x28, 0x00, 0xbd, 0x27, 0x90, 0xff, 0xbd, - 0x27, 0x6c, 0x00, 0xbf, 0xaf, 0x68, 0x00, 0xbe, 0xaf, 0x64, 0x00, 0xb7, 0xaf, - 0x60, 0x00, 0xb6, 0xaf, 0x5c, 0x00, 0xb5, 0xaf, 0x58, 0x00, 0xb4, 0xaf, 0x54, - 0x00, 0xb3, 0xaf, 0x50, 0x00, 0xb2, 0xaf, 0x4c, 0x00, 0xb1, 0xaf, 0x50, 0xd5, - 0x03, 0x0c, 0x48, 0x00, 0xb0, 0xaf, 0x05, 0xa2, 0x04, 0x3c, 0x10, 0x90, 0x82, - 0x8f, 0xfe, 0xff, 0x03, 0x24, 0x24, 0x10, 0x43, 0x00, 0x10, 0x90, 0x82, 0xaf, - 0x00, 0x00, 0x82, 0xa4, 0x04, 0xa2, 0x03, 0x3c, 0x00, 0x00, 0x63, 0x8c, 0x34, - 0x12, 0x02, 0x24, 0x04, 0x00, 0x62, 0x14, 0x01, 0x00, 0x02, 0x24, 0x00, 0xa0, - 0x01, 0x3c, 0x64, 0xc6, 0x03, 0x08, 0x20, 0x0c, 0x22, 0xa0, 0x00, 0xa0, 0x01, - 0x3c, 0x20, 0x0c, 0x20, 0xa0, 0x48, 0xca, 0x03, 0x0c, 0x00, 0xa0, 0x11, 0x3c, - 0x9c, 0x81, 0x84, 0x27, 0x18, 0xc2, 0x03, 0x0c, 0x00, 0x01, 0x31, 0x36, 0xa4, - 0x81, 0x84, 0x27, 0x18, 0xc2, 0x03, 0x0c, 0x00, 0x00, 0x22, 0xae, 0xac, 0x81, - 0x84, 0x27, 0x18, 0xc2, 0x03, 0x0c, 0x04, 0x00, 0x22, 0xae, 0xb4, 0x81, 0x84, - 0x27, 0x18, 0xc2, 0x03, 0x0c, 0x08, 0x00, 0x22, 0xae, 0x0c, 0x00, 0x22, 0xae, - 0x03, 0x00, 0x02, 0x24, 0x14, 0x00, 0x22, 0xae, 0x00, 0xa0, 0x02, 0x3c, 0xca, - 0x01, 0x42, 0x34, 0x18, 0x00, 0x22, 0xae, 0x00, 0xa0, 0x02, 0x3c, 0x30, 0x0c, - 0x42, 0x34, 0x1c, 0x00, 0x22, 0xae, 0x00, 0xa0, 0x02, 0x3c, 0x80, 0x01, 0x42, - 0x34, 0x20, 0x00, 0x22, 0xae, 0x04, 0x00, 0x40, 0xac, 0x08, 0x00, 0x40, 0xac, - 0x14, 0x00, 0x40, 0xac, 0x18, 0x00, 0x40, 0xac, 0x01, 0x00, 0x03, 0x24, 0x1c, - 0x00, 0x43, 0xac, 0x01, 0x01, 0x03, 0x24, 0x24, 0x00, 0x43, 0xac, 0x28, 0x00, - 0x40, 0xa4, 0x2a, 0x00, 0x40, 0xa4, 0x4a, 0x00, 0x40, 0xa4, 0x4c, 0x00, 0x40, - 0xa4, 0xff, 0x01, 0x03, 0x24, 0x4e, 0x00, 0x43, 0xa4, 0x10, 0x00, 0x22, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x52, 0x2c, 0x0a, 0x00, 0x40, 0x12, 0x00, - 0xa0, 0x03, 0x3c, 0xbc, 0x81, 0x84, 0x27, 0x18, 0xc2, 0x03, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x9c, 0x81, 0x84, 0x27, 0x18, 0xc2, 0x03, 0x0c, 0x21, 0x80, 0x40, - 0x00, 0x26, 0x80, 0x02, 0x02, 0x10, 0x00, 0x30, 0xae, 0x00, 0xa0, 0x03, 0x3c, - 0x80, 0x01, 0x63, 0x34, 0x00, 0xa0, 0x02, 0x3c, 0x00, 0x20, 0x42, 0x34, 0x54, - 0x02, 0x62, 0xac, 0x0d, 0x00, 0x02, 0x3c, 0x00, 0xe0, 0x42, 0x34, 0xc8, 0xc4, - 0x03, 0x0c, 0x58, 0x02, 0x62, 0xac, 0x47, 0x00, 0x02, 0x24, 0x00, 0xa0, 0x01, - 0x3c, 0x00, 0x0c, 0x22, 0xa0, 0x44, 0x00, 0x02, 0x24, 0x00, 0xa0, 0x01, 0x3c, - 0x01, 0x0c, 0x22, 0xa0, 0x00, 0xa0, 0x02, 0x3c, 0x30, 0x0c, 0x42, 0x34, 0x00, - 0x00, 0x40, 0xa0, 0x02, 0x00, 0x40, 0xa0, 0x08, 0x00, 0x40, 0xa4, 0x45, 0x23, - 0x02, 0x3c, 0x89, 0x67, 0x42, 0x34, 0x00, 0xa0, 0x01, 0x3c, 0x10, 0x00, 0x22, - 0xac, 0xcc, 0x81, 0x84, 0x27, 0x02, 0x00, 0x40, 0x12, 0x00, 0x00, 0x00, 0x00, - 0xc4, 0x81, 0x84, 0x27, 0x18, 0xc2, 0x03, 0x0c, 0x00, 0xa0, 0x15, 0x3c, 0x00, - 0xa0, 0x01, 0x3c, 0x04, 0x01, 0x22, 0xac, 0x80, 0x01, 0xb5, 0x36, 0x18, 0x00, - 0xa8, 0x27, 0x40, 0x00, 0xa8, 0xaf, 0x00, 0xa0, 0x02, 0x3c, 0x10, 0x00, 0x42, - 0x34, 0x00, 0x00, 0x43, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x63, 0x24, - 0x78, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x43, 0xac, 0x00, 0xa0, 0x02, 0x3c, 0x10, - 0x01, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x40, 0x14, 0x00, 0x00, - 0x00, 0x00, 0xbc, 0x81, 0x84, 0x27, 0x18, 0xc2, 0x03, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x9c, 0x81, 0x84, 0x27, 0x18, 0xc2, 0x03, 0x0c, 0x21, 0x80, 0x40, 0x00, - 0x26, 0x80, 0x02, 0x02, 0x00, 0xa0, 0x01, 0x3c, 0x10, 0x01, 0x30, 0xac, 0xc4, - 0x81, 0x84, 0x27, 0x18, 0xc2, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, - 0x01, 0x3c, 0x04, 0x01, 0x22, 0xac, 0x49, 0x00, 0xa2, 0x92, 0x00, 0x00, 0x00, - 0x00, 0xe4, 0xff, 0x40, 0x10, 0x00, 0xa0, 0x02, 0x3c, 0x48, 0x00, 0xb4, 0x92, - 0x49, 0x00, 0xa0, 0xa2, 0x21, 0x90, 0x00, 0x00, 0x21, 0x88, 0x00, 0x00, 0x80, - 0x10, 0x11, 0x00, 0x40, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, - 0x48, 0x00, 0x10, 0x00, 0x40, 0xac, 0x00, 0x00, 0x40, 0xac, 0x01, 0x00, 0x31, - 0x26, 0x04, 0x00, 0x22, 0x2a, 0xf8, 0xff, 0x40, 0x14, 0x80, 0x10, 0x11, 0x00, - 0xff, 0x00, 0x82, 0x32, 0xfc, 0xff, 0x43, 0x24, 0x86, 0x00, 0x62, 0x2c, 0xff, - 0x02, 0x40, 0x10, 0x80, 0x10, 0x03, 0x00, 0x0f, 0x80, 0x01, 0x3c, 0x21, 0x08, - 0x22, 0x00, 0x80, 0x59, 0x22, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x82, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0x44, 0x82, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x54, 0x82, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x68, 0x82, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x78, 0x82, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x9c, 0x82, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xc0, - 0x82, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x82, - 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x83, 0x84, - 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xbd, 0xc6, 0x03, 0x08, - 0x00, 0xa0, 0x02, 0x3c, 0x4c, 0x83, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0xda, 0xc5, 0x03, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x70, 0x83, - 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x21, 0x88, 0x40, 0x00, 0xa4, 0xff, 0x20, - 0x12, 0x00, 0xa0, 0x02, 0x3c, 0x9e, 0xc7, 0x03, 0x08, 0xff, 0xff, 0x31, 0x26, - 0x01, 0x00, 0x52, 0x26, 0x20, 0x82, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x3e, - 0xc4, 0x03, 0x0c, 0x21, 0x28, 0x40, 0x02, 0x09, 0xcb, 0x03, 0x0c, 0x21, 0x20, - 0x00, 0x00, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0xa2, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x2e, 0xc7, 0x03, 0x08, - 0x18, 0x00, 0xa2, 0xaf, 0x28, 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x42, 0x24, 0x28, 0x00, 0xa2, 0xaf, 0x49, 0x00, 0xa2, 0x92, 0x00, 0x00, - 0x00, 0x00, 0x70, 0x00, 0x40, 0x14, 0x01, 0x00, 0x10, 0x26, 0x14, 0x00, 0x02, - 0x2a, 0xe9, 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x20, 0x82, 0x84, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x3e, 0xc4, 0x03, 0x0c, 0x21, 0x28, 0x40, 0x02, 0x10, - 0x00, 0xa0, 0xaf, 0x00, 0xa0, 0x04, 0x3c, 0x10, 0x7f, 0x84, 0x34, 0x0e, 0xa0, - 0x05, 0x3c, 0xf0, 0xff, 0xa5, 0x34, 0x01, 0x00, 0x06, 0x24, 0xda, 0xcc, 0x03, - 0x0c, 0x21, 0x38, 0x00, 0x00, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x4c, - 0xc7, 0x03, 0x08, 0x1c, 0x00, 0xa2, 0xaf, 0x2c, 0x00, 0xa2, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x2c, 0x00, 0xa2, 0xaf, 0x49, 0x00, 0xa2, - 0x92, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x82, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x3e, 0xc4, 0x03, 0x0c, 0x21, - 0x28, 0x40, 0x02, 0x10, 0x00, 0xa0, 0xaf, 0x10, 0xa0, 0x04, 0x3c, 0x1f, 0xa0, - 0x05, 0x3c, 0x01, 0x00, 0x06, 0x24, 0xda, 0xcc, 0x03, 0x0c, 0x21, 0x38, 0x00, - 0x00, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0xa2, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x65, 0xc7, 0x03, 0x08, 0x1c, - 0x00, 0xa2, 0xaf, 0x2c, 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x42, 0x24, 0x2c, 0x00, 0xa2, 0xaf, 0x49, 0x00, 0xa2, 0x92, 0x00, 0x00, 0x00, - 0x00, 0x39, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x20, 0x82, 0x84, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x3e, 0xc4, 0x03, 0x0c, 0x21, 0x28, 0x40, 0x02, 0x10, - 0x00, 0xa0, 0xaf, 0x01, 0x00, 0x08, 0x24, 0x14, 0x00, 0xa8, 0xaf, 0x21, 0x20, - 0x00, 0x00, 0xff, 0xff, 0x05, 0x24, 0x00, 0x01, 0x06, 0x24, 0x65, 0xd1, 0x03, - 0x0c, 0xff, 0xff, 0x07, 0x24, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x80, - 0xc7, 0x03, 0x08, 0x20, 0x00, 0xa2, 0xaf, 0x30, 0x00, 0xa2, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x30, 0x00, 0xa2, 0xaf, 0x49, 0x00, 0xa2, - 0x92, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x82, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x3e, 0xc4, 0x03, 0x0c, 0x21, - 0x28, 0x40, 0x02, 0x10, 0x00, 0xa0, 0xaf, 0x14, 0x00, 0xa0, 0xaf, 0x21, 0x20, - 0x00, 0x00, 0xff, 0xff, 0x05, 0x24, 0x00, 0x01, 0x06, 0x24, 0x65, 0xd1, 0x03, - 0x0c, 0xff, 0xff, 0x07, 0x24, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x24, 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x9a, - 0xc7, 0x03, 0x08, 0x24, 0x00, 0xa2, 0xaf, 0x34, 0x00, 0xa2, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x34, 0x00, 0xa2, 0xaf, 0x49, 0x00, 0xa2, - 0x92, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x14, 0xff, 0xff, 0x31, 0x26, - 0xff, 0xff, 0x02, 0x24, 0x7c, 0xff, 0x22, 0x16, 0x21, 0x80, 0x00, 0x00, 0x74, - 0x83, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x21, 0x88, 0x00, 0x00, 0x88, 0x83, - 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x21, 0x28, 0x40, 0x02, 0x01, 0x00, 0x30, - 0x26, 0x80, 0x10, 0x11, 0x00, 0x40, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x21, 0x10, 0x48, 0x00, 0x9c, 0x83, 0x84, 0x27, 0x10, 0x00, 0x46, 0x8c, 0x00, - 0x00, 0x47, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x3e, 0xc4, 0x03, 0x0c, 0x21, 0x28, - 0x00, 0x02, 0x21, 0x88, 0x00, 0x02, 0x04, 0x00, 0x22, 0x2a, 0xf3, 0xff, 0x40, - 0x14, 0x01, 0x00, 0x30, 0x26, 0x49, 0x00, 0xa0, 0xa2, 0xbd, 0xc6, 0x03, 0x08, - 0x00, 0xa0, 0x02, 0x3c, 0xc0, 0x83, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x01, - 0x00, 0x52, 0x26, 0x20, 0x82, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x3e, 0xc4, - 0x03, 0x0c, 0x21, 0x28, 0x40, 0x02, 0x09, 0xcb, 0x03, 0x0c, 0x21, 0x20, 0x00, - 0x00, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0xa2, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0xcd, 0xc7, 0x03, 0x08, 0x18, - 0x00, 0xa2, 0xaf, 0x28, 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x42, 0x24, 0x28, 0x00, 0xa2, 0xaf, 0x49, 0x00, 0xa2, 0x92, 0x00, 0x00, 0x00, - 0x00, 0xec, 0xff, 0x40, 0x10, 0x01, 0x00, 0x52, 0x26, 0xdc, 0x83, 0x84, 0x27, - 0x3e, 0xc4, 0x03, 0x0c, 0xff, 0xff, 0x52, 0x26, 0x88, 0x83, 0x84, 0x27, 0x3e, - 0xc4, 0x03, 0x0c, 0x21, 0x28, 0x40, 0x02, 0xf8, 0x83, 0x84, 0x27, 0x28, 0x00, - 0xa5, 0x8f, 0x18, 0x00, 0xa6, 0x8f, 0x1a, 0xc8, 0x03, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x18, 0x84, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0xda, 0xc5, 0x03, 0x0c, 0x10, 0x00, 0x04, 0x24, 0x21, 0x98, 0x40, 0x00, 0xff, - 0xff, 0x02, 0x24, 0x03, 0x00, 0x62, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, - 0x13, 0x3c, 0x00, 0x10, 0x73, 0x36, 0x28, 0x84, 0x84, 0x27, 0x3e, 0xc4, 0x03, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0xda, 0xc5, 0x03, 0x0c, 0x10, 0x00, 0x04, 0x24, - 0x21, 0x88, 0x40, 0x00, 0xff, 0xff, 0x02, 0x24, 0x03, 0x00, 0x22, 0x16, 0x00, - 0x00, 0x00, 0x00, 0x0e, 0xa0, 0x11, 0x3c, 0xf0, 0xff, 0x31, 0x36, 0x38, 0x84, - 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x01, 0x00, 0x52, 0x26, 0xc0, 0x83, 0x84, - 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x20, 0x82, 0x84, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x3e, 0xc4, 0x03, 0x0c, 0x21, 0x28, 0x40, 0x02, 0x10, - 0x00, 0xa0, 0xaf, 0x21, 0x20, 0x60, 0x02, 0x21, 0x28, 0x20, 0x02, 0x01, 0x00, - 0x06, 0x24, 0xda, 0xcc, 0x03, 0x0c, 0x21, 0x38, 0x00, 0x00, 0x06, 0x00, 0x40, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x42, 0x24, 0x0d, 0xc8, 0x03, 0x08, 0x1c, 0x00, 0xa2, 0xaf, 0x2c, - 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x2c, 0x00, - 0xa2, 0xaf, 0x49, 0x00, 0xa2, 0x92, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xff, 0x40, - 0x10, 0x01, 0x00, 0x52, 0x26, 0x3c, 0x84, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, - 0xff, 0xff, 0x52, 0x26, 0x88, 0x83, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x21, - 0x28, 0x40, 0x02, 0x54, 0x84, 0x84, 0x27, 0x2c, 0x00, 0xa5, 0x8f, 0x1c, 0x00, - 0xa6, 0x8f, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0xa0, - 0xa2, 0xbd, 0xc6, 0x03, 0x08, 0x00, 0xa0, 0x02, 0x3c, 0xff, 0xff, 0x10, 0x24, - 0x08, 0x8c, 0x85, 0x8f, 0x74, 0x84, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0xff, - 0xff, 0xa5, 0x24, 0xda, 0xc5, 0x03, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x21, 0x88, - 0x40, 0x00, 0x05, 0x00, 0x30, 0x16, 0x21, 0xb8, 0x00, 0x00, 0xb8, 0x84, 0x84, - 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x41, 0x00, 0x17, 0x24, 0x01, 0x00, 0x52, 0x26, - 0xbc, 0x84, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0xff, 0x00, 0x93, 0x32, 0xda, - 0xc5, 0x03, 0x0c, 0x10, 0x00, 0x04, 0x24, 0xf4, 0x84, 0x84, 0x27, 0x3e, 0xc4, - 0x03, 0x0c, 0x21, 0x80, 0x40, 0x00, 0x33, 0x00, 0x62, 0x3a, 0x01, 0x00, 0x42, - 0x2c, 0x38, 0x00, 0xa2, 0xaf, 0x80, 0x18, 0x13, 0x00, 0x40, 0x00, 0xa8, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x21, 0xf0, 0x68, 0x00, 0x64, 0xff, 0xa2, 0x27, 0x21, - 0xb0, 0x43, 0x00, 0x41, 0x00, 0x08, 0x24, 0x37, 0x00, 0xe8, 0x16, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x31, 0x26, 0x08, 0x8c, 0x82, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x03, 0x00, 0x22, 0x16, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x52, 0x26, - 0x21, 0x88, 0x00, 0x00, 0xf6, 0xff, 0x20, 0x06, 0x41, 0x00, 0x08, 0x24, 0x08, - 0x8c, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x22, 0x02, 0xf1, 0xff, - 0x40, 0x10, 0x40, 0x10, 0x11, 0x00, 0x21, 0x10, 0x51, 0x00, 0x80, 0x10, 0x02, - 0x00, 0x0f, 0x80, 0x03, 0x3c, 0x21, 0x18, 0x62, 0x00, 0x08, 0x5e, 0x63, 0x8c, - 0x0f, 0x80, 0x08, 0x3c, 0x64, 0x5d, 0x08, 0x25, 0xe7, 0xff, 0x68, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x0f, 0x80, 0x02, 0x3c, 0x14, 0x5d, 0x42, 0x24, 0x0a, 0x00, - 0x62, 0x10, 0x33, 0x00, 0x02, 0x24, 0x0f, 0x80, 0x02, 0x3c, 0x4c, 0x5d, 0x42, - 0x24, 0x06, 0x00, 0x62, 0x10, 0x33, 0x00, 0x02, 0x24, 0x0f, 0x80, 0x02, 0x3c, - 0x30, 0x5d, 0x42, 0x24, 0x04, 0x00, 0x62, 0x14, 0x40, 0x10, 0x11, 0x00, 0x33, - 0x00, 0x02, 0x24, 0xd8, 0xff, 0x62, 0x12, 0x40, 0x10, 0x11, 0x00, 0x21, 0x10, - 0x51, 0x00, 0x80, 0x10, 0x02, 0x00, 0x0f, 0x80, 0x03, 0x3c, 0x21, 0x18, 0x62, - 0x00, 0x0c, 0x5e, 0x63, 0x8c, 0x50, 0x8b, 0x82, 0x27, 0xd1, 0xff, 0x62, 0x10, - 0x41, 0x00, 0x08, 0x24, 0x58, 0x8b, 0x82, 0x27, 0xce, 0xff, 0x62, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x60, 0x8b, 0x82, 0x27, 0xcb, 0xff, 0x62, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x78, 0xc8, 0x03, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x52, - 0x26, 0x20, 0x82, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x3e, 0xc4, 0x03, 0x0c, - 0x21, 0x28, 0x40, 0x02, 0x41, 0x00, 0x08, 0x24, 0x08, 0x00, 0xe8, 0x12, 0x21, - 0x20, 0x20, 0x02, 0x10, 0x00, 0xa0, 0xaf, 0x38, 0x00, 0xa8, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x14, 0x00, 0xa8, 0xaf, 0x21, 0x28, 0x20, 0x02, 0x8c, 0xc8, 0x03, - 0x08, 0x00, 0x10, 0x06, 0x24, 0x10, 0x00, 0xa0, 0xaf, 0x38, 0x00, 0xa8, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0xa8, 0xaf, 0x21, 0x28, 0x20, 0x02, 0x00, - 0x01, 0x06, 0x24, 0x65, 0xd1, 0x03, 0x0c, 0x21, 0x38, 0x00, 0x02, 0x06, 0x00, - 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3c, 0xff, 0xc2, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x42, 0x24, 0x99, 0xc8, 0x03, 0x08, 0x3c, 0xff, 0xc2, 0xaf, - 0x00, 0x00, 0xc2, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x00, - 0x00, 0xc2, 0xae, 0x49, 0x00, 0xa2, 0x92, 0x00, 0x00, 0x00, 0x00, 0xa3, 0xff, - 0x40, 0x10, 0x41, 0x00, 0x08, 0x24, 0x14, 0x85, 0x84, 0x27, 0x3e, 0xc4, 0x03, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x88, 0x83, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, - 0x21, 0x28, 0x40, 0x02, 0xff, 0x00, 0x85, 0x32, 0x80, 0x10, 0x05, 0x00, 0x21, - 0x18, 0xa2, 0x03, 0x40, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, - 0x48, 0x00, 0x2c, 0x85, 0x84, 0x27, 0x64, 0xff, 0x66, 0x8c, 0x3c, 0xff, 0x47, - 0x8c, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0xa0, 0xa2, - 0xbd, 0xc6, 0x03, 0x08, 0x00, 0xa0, 0x02, 0x3c, 0x05, 0xa2, 0x04, 0x3c, 0x10, - 0x90, 0x83, 0x97, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x62, 0x38, 0x00, 0x00, - 0x82, 0xa4, 0x00, 0xa0, 0x02, 0x3c, 0x00, 0x00, 0x42, 0x8c, 0x00, 0x00, 0x83, - 0xa4, 0x50, 0x85, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0xbd, 0xc6, 0x03, 0x08, 0x00, 0xa0, 0x02, 0x3c, 0x70, 0x85, 0x84, 0x27, 0x3e, - 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xda, 0xc5, 0x03, 0x0c, 0x10, 0x00, - 0x04, 0x24, 0x21, 0x98, 0x40, 0x00, 0xff, 0xff, 0x02, 0x24, 0xf7, 0xfd, 0x62, - 0x12, 0x00, 0xa0, 0x02, 0x3c, 0x38, 0x84, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x83, 0x32, 0x64, 0x00, 0x02, 0x24, 0x06, - 0x00, 0x62, 0x10, 0x04, 0x00, 0x02, 0x24, 0x04, 0x00, 0x62, 0x10, 0x44, 0x00, - 0x02, 0x24, 0x1d, 0x00, 0x62, 0x14, 0x72, 0x00, 0x02, 0x24, 0xff, 0x00, 0x83, - 0x32, 0x64, 0x00, 0x02, 0x24, 0x04, 0x00, 0x62, 0x10, 0x21, 0x88, 0x00, 0x00, - 0x10, 0x00, 0x22, 0x2a, 0xe5, 0xfd, 0x40, 0x10, 0x00, 0xa0, 0x02, 0x3c, 0x00, - 0x81, 0x11, 0x00, 0x21, 0x80, 0x70, 0x02, 0x80, 0x85, 0x84, 0x27, 0x3e, 0xc4, - 0x03, 0x0c, 0x21, 0x28, 0x00, 0x02, 0x00, 0xa0, 0x04, 0x3c, 0x25, 0x20, 0x04, - 0x02, 0xb1, 0xca, 0x03, 0x0c, 0x10, 0x00, 0x05, 0x24, 0x38, 0x84, 0x84, 0x27, - 0x3e, 0xc4, 0x03, 0x0c, 0x01, 0x00, 0x31, 0x26, 0xff, 0x00, 0x83, 0x32, 0x64, - 0x00, 0x02, 0x24, 0xef, 0xff, 0x62, 0x14, 0x10, 0x00, 0x22, 0x2a, 0x04, 0x00, - 0x22, 0x2a, 0xef, 0xff, 0x40, 0x14, 0x00, 0x81, 0x11, 0x00, 0xbd, 0xc6, 0x03, - 0x08, 0x00, 0xa0, 0x02, 0x3c, 0x09, 0x00, 0x62, 0x14, 0xff, 0x00, 0x83, 0x32, - 0x00, 0xa0, 0x02, 0x3c, 0x25, 0x10, 0x62, 0x02, 0x88, 0x85, 0x84, 0x27, 0x00, - 0x00, 0x45, 0x90, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xbd, 0xc6, - 0x03, 0x08, 0x00, 0xa0, 0x02, 0x3c, 0x12, 0x00, 0x02, 0x24, 0x09, 0x00, 0x62, - 0x14, 0xff, 0x00, 0x83, 0x32, 0x00, 0xa0, 0x02, 0x3c, 0x25, 0x10, 0x62, 0x02, - 0x90, 0x85, 0x84, 0x27, 0x00, 0x00, 0x45, 0x94, 0x3e, 0xc4, 0x03, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0xbd, 0xc6, 0x03, 0x08, 0x00, 0xa0, 0x02, 0x3c, 0x52, 0x00, - 0x02, 0x24, 0x09, 0x00, 0x62, 0x14, 0xff, 0x00, 0x83, 0x32, 0x00, 0xa0, 0x02, - 0x3c, 0x25, 0x10, 0x62, 0x02, 0x98, 0x85, 0x84, 0x27, 0x00, 0x00, 0x45, 0x8c, - 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xbd, 0xc6, 0x03, 0x08, 0x00, - 0xa0, 0x02, 0x3c, 0x66, 0x00, 0x02, 0x24, 0x03, 0x00, 0x62, 0x10, 0x77, 0x00, - 0x02, 0x24, 0x04, 0x00, 0x62, 0x14, 0xff, 0x00, 0x83, 0x32, 0xa0, 0x85, 0x84, - 0x27, 0x1f, 0xc9, 0x03, 0x08, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x24, - 0x03, 0x00, 0x62, 0x10, 0x17, 0x00, 0x02, 0x24, 0x04, 0x00, 0x62, 0x14, 0x00, - 0x00, 0x00, 0x00, 0xa4, 0x85, 0x84, 0x27, 0x1f, 0xc9, 0x03, 0x08, 0x00, 0x00, - 0x00, 0x00, 0xa8, 0x85, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0xac, 0x85, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0xda, 0xc5, 0x03, 0x0c, 0x10, 0x00, 0x04, 0x24, 0x38, 0x84, 0x84, 0x27, 0x3e, - 0xc4, 0x03, 0x0c, 0x21, 0x88, 0x40, 0x00, 0xff, 0x00, 0x83, 0x32, 0x66, 0x00, - 0x02, 0x24, 0x05, 0x00, 0x62, 0x10, 0x06, 0x00, 0x02, 0x24, 0x03, 0x00, 0x62, - 0x10, 0x46, 0x00, 0x02, 0x24, 0x0b, 0x00, 0x62, 0x14, 0x21, 0x80, 0x00, 0x00, - 0xc0, 0x85, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xda, - 0xc5, 0x03, 0x0c, 0x10, 0x00, 0x04, 0x24, 0x38, 0x84, 0x84, 0x27, 0x3e, 0xc4, - 0x03, 0x0c, 0xff, 0xff, 0x50, 0x24, 0x3c, 0xc9, 0x03, 0x08, 0x00, 0xa0, 0x02, - 0x3c, 0x00, 0xa0, 0x02, 0x3c, 0x25, 0x98, 0x62, 0x02, 0xff, 0x00, 0x83, 0x32, - 0x77, 0x00, 0x07, 0x24, 0x66, 0x00, 0x06, 0x24, 0x17, 0x00, 0x05, 0x24, 0x06, - 0x00, 0x04, 0x24, 0x03, 0x00, 0x67, 0x10, 0x21, 0x10, 0x70, 0x02, 0x03, 0x00, - 0x66, 0x14, 0x00, 0x00, 0x00, 0x00, 0x52, 0xc9, 0x03, 0x08, 0x00, 0x00, 0x51, - 0xa0, 0x04, 0x00, 0x65, 0x10, 0x40, 0x10, 0x10, 0x00, 0x05, 0x00, 0x64, 0x14, - 0x80, 0x10, 0x10, 0x00, 0x40, 0x10, 0x10, 0x00, 0x21, 0x10, 0x53, 0x00, 0x52, - 0xc9, 0x03, 0x08, 0x00, 0x00, 0x51, 0xa4, 0x21, 0x10, 0x53, 0x00, 0x00, 0x00, - 0x51, 0xac, 0xff, 0xff, 0x10, 0x26, 0xee, 0xff, 0x01, 0x06, 0x00, 0xa0, 0x02, - 0x3c, 0xbe, 0xc6, 0x03, 0x08, 0x10, 0x00, 0x42, 0x34, 0x09, 0xcb, 0x03, 0x0c, - 0x21, 0x20, 0x00, 0x00, 0xe6, 0xc9, 0x03, 0x08, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x00, 0xa2, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x53, 0x38, 0x0f, 0x00, - 0x73, 0x32, 0x08, 0x00, 0xb1, 0x8e, 0x08, 0x00, 0xb4, 0x8e, 0x08, 0x00, 0xa2, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xa2, 0xae, 0x08, 0x00, 0xa2, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0xa3, 0x8e, 0x0e, 0x00, 0x02, 0x3c, 0xf0, 0xef, 0x42, 0x34, 0x2b, 0x10, - 0x43, 0x00, 0x06, 0x00, 0x40, 0x10, 0x00, 0xa0, 0x05, 0x3c, 0x0e, 0x00, 0x11, - 0x3c, 0xf0, 0xef, 0x31, 0x36, 0x0f, 0x00, 0x14, 0x3c, 0x04, 0x00, 0xb1, 0xae, - 0x00, 0xa0, 0x05, 0x3c, 0x00, 0x10, 0xa5, 0x34, 0x21, 0x28, 0x25, 0x02, 0xff, - 0x1f, 0x11, 0x3c, 0xff, 0xff, 0x31, 0x36, 0x00, 0xa0, 0x12, 0x3c, 0x24, 0x28, - 0xb1, 0x00, 0x10, 0x00, 0xb3, 0xaf, 0x00, 0xa0, 0x04, 0x3c, 0x00, 0x10, 0x84, - 0x34, 0x25, 0x28, 0xb2, 0x00, 0x21, 0x30, 0x00, 0x00, 0xda, 0xcc, 0x03, 0x0c, - 0x21, 0x38, 0x00, 0x00, 0x21, 0x80, 0x40, 0x00, 0x10, 0xa0, 0x05, 0x3c, 0x21, - 0x28, 0x85, 0x02, 0x24, 0x88, 0xb1, 0x00, 0x10, 0x00, 0xb3, 0xaf, 0x10, 0xa0, - 0x04, 0x3c, 0x25, 0x28, 0x32, 0x02, 0x21, 0x30, 0x00, 0x00, 0xda, 0xcc, 0x03, - 0x0c, 0x21, 0x38, 0x00, 0x00, 0x25, 0x80, 0x02, 0x02, 0x08, 0x00, 0xb0, 0xae, - 0xe8, 0xc9, 0x03, 0x08, 0x01, 0x00, 0x08, 0x24, 0x08, 0x00, 0xb1, 0x8e, 0x10, - 0x00, 0xa0, 0xaf, 0x01, 0x00, 0x08, 0x24, 0x14, 0x00, 0xa8, 0xaf, 0x21, 0x20, - 0x20, 0x02, 0x21, 0x28, 0x20, 0x02, 0x00, 0x10, 0x06, 0x24, 0x65, 0xd1, 0x03, - 0x0c, 0xff, 0xff, 0x07, 0x24, 0xe6, 0xc9, 0x03, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x08, 0x00, 0xb1, 0x8e, 0x10, 0x00, 0xa0, 0xaf, 0x14, 0x00, 0xa0, 0xaf, 0x21, - 0x20, 0x20, 0x02, 0x21, 0x28, 0x20, 0x02, 0x00, 0x10, 0x06, 0x24, 0x65, 0xd1, - 0x03, 0x0c, 0xff, 0xff, 0x07, 0x24, 0xe6, 0xc9, 0x03, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x00, 0xa2, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x51, 0x30, - 0x08, 0x00, 0xa2, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x12, 0x02, 0x00, 0x14, - 0x90, 0x82, 0xa3, 0x14, 0x90, 0x82, 0x93, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x43, 0x24, 0x10, 0x00, 0x62, 0x2c, 0x1b, 0x00, 0x40, 0x10, 0x80, 0x10, 0x03, - 0x00, 0x0f, 0x80, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0x98, 0x5b, 0x22, 0x8c, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, - 0xa2, 0x02, 0x3c, 0x10, 0x90, 0x80, 0xaf, 0x00, 0x00, 0x40, 0xa4, 0x10, 0x90, - 0x80, 0xaf, 0x00, 0x00, 0x40, 0xa4, 0x10, 0x90, 0x80, 0xaf, 0x00, 0x00, 0x40, - 0xa4, 0xcb, 0xc9, 0x03, 0x08, 0x10, 0x00, 0xa0, 0xaf, 0x05, 0xa2, 0x02, 0x3c, - 0x10, 0x90, 0x80, 0xaf, 0x00, 0x00, 0x40, 0xa4, 0x06, 0x00, 0x03, 0x24, 0x10, - 0x90, 0x83, 0xaf, 0x00, 0x00, 0x43, 0xa4, 0x10, 0x90, 0x83, 0xaf, 0x00, 0x00, - 0x43, 0xa4, 0x06, 0x0c, 0x03, 0x24, 0x10, 0x90, 0x83, 0xaf, 0x00, 0x00, 0x43, - 0xa4, 0x10, 0x00, 0xa0, 0xaf, 0x14, 0x00, 0xa0, 0xaf, 0x21, 0x20, 0x20, 0x02, - 0x21, 0x28, 0x20, 0x02, 0x00, 0x10, 0x06, 0x24, 0x65, 0xd1, 0x03, 0x0c, 0xff, - 0xff, 0x07, 0x24, 0x08, 0x00, 0xa2, 0xae, 0x01, 0x00, 0x08, 0x24, 0x48, 0x00, - 0xa8, 0xa2, 0x14, 0x90, 0x80, 0xa3, 0xbd, 0xc6, 0x03, 0x08, 0x00, 0xa0, 0x02, - 0x3c, 0x08, 0x00, 0xa4, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x22, 0xd5, 0x03, 0x0c, - 0xff, 0x00, 0x84, 0x30, 0xe6, 0xc9, 0x03, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0xa4, 0x8e, 0x04, 0x00, 0xa2, 0x8e, 0xff, 0x00, 0x07, 0x3c, 0xff, 0xff, - 0xe7, 0x34, 0x04, 0x00, 0xa6, 0x8e, 0x54, 0x02, 0xa5, 0x8e, 0x02, 0x36, 0x06, - 0x00, 0x6a, 0xc2, 0x03, 0x0c, 0x24, 0x38, 0x47, 0x00, 0x08, 0x00, 0xa2, 0xae, - 0x01, 0x00, 0x08, 0x24, 0x48, 0x00, 0xa8, 0xa2, 0xbd, 0xc6, 0x03, 0x08, 0x00, - 0xa0, 0x02, 0x3c, 0xd0, 0x85, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0xbd, 0xc6, 0x03, 0x08, 0x00, 0xa0, 0x02, 0x3c, 0x6c, 0x00, 0xbf, - 0x8f, 0x68, 0x00, 0xbe, 0x8f, 0x64, 0x00, 0xb7, 0x8f, 0x60, 0x00, 0xb6, 0x8f, - 0x5c, 0x00, 0xb5, 0x8f, 0x58, 0x00, 0xb4, 0x8f, 0x54, 0x00, 0xb3, 0x8f, 0x50, - 0x00, 0xb2, 0x8f, 0x4c, 0x00, 0xb1, 0x8f, 0x48, 0x00, 0xb0, 0x8f, 0x08, 0x00, - 0xe0, 0x03, 0x70, 0x00, 0xbd, 0x27, 0x00, 0xa0, 0x05, 0x3c, 0x80, 0x01, 0xa5, - 0x34, 0x4a, 0x00, 0xa2, 0x94, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x30, - 0x21, 0x10, 0x45, 0x00, 0x50, 0x00, 0x44, 0xa0, 0x4a, 0x00, 0xa2, 0x94, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x4e, 0x00, 0xa3, 0x94, 0x00, 0x00, - 0x00, 0x00, 0x24, 0x20, 0x62, 0x00, 0x4c, 0x00, 0xa3, 0x94, 0xff, 0xff, 0x82, - 0x30, 0x02, 0x00, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x00, 0xa4, 0xa4, - 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xff, 0xbd, 0x27, 0x14, - 0x00, 0xbf, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x00, 0xa0, 0x02, 0x3c, 0x80, 0x01, - 0x42, 0x34, 0x00, 0x00, 0x43, 0x8c, 0x01, 0x00, 0x02, 0x24, 0x07, 0x00, 0x62, - 0x14, 0x00, 0xa0, 0x10, 0x3c, 0xf2, 0x85, 0x83, 0x97, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x62, 0x24, 0xf2, 0x85, 0x82, 0xa7, 0x11, 0x00, 0x60, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x01, 0x10, 0x36, 0x2a, 0x00, 0x02, 0x96, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x2a, 0x00, 0x02, 0xa6, 0x2a, 0x00, 0x02, - 0x96, 0xe8, 0x03, 0x02, 0x24, 0xf2, 0x85, 0x82, 0xa7, 0x06, 0xa2, 0x02, 0x3c, - 0x00, 0x00, 0x40, 0xa4, 0xfa, 0xc1, 0x03, 0x0c, 0x21, 0x20, 0x00, 0x00, 0x01, - 0x00, 0x02, 0x24, 0x00, 0x00, 0x02, 0xae, 0xfa, 0xc1, 0x03, 0x0c, 0x01, 0x04, - 0x04, 0x24, 0x14, 0x00, 0xbf, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, - 0x03, 0x18, 0x00, 0xbd, 0x27, 0x00, 0xa0, 0x03, 0x3c, 0x80, 0x01, 0x63, 0x34, - 0x4c, 0x00, 0x62, 0x94, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x40, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x4c, 0x00, 0x62, 0x94, 0x4a, 0x00, 0x63, 0x94, 0xff, 0xff, - 0x42, 0x30, 0x08, 0x00, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x04, - 0x3c, 0x80, 0x01, 0x84, 0x34, 0x4c, 0x00, 0x82, 0x94, 0x4a, 0x00, 0x83, 0x94, - 0xff, 0xff, 0x42, 0x30, 0xfc, 0xff, 0x43, 0x14, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xff, - 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x00, 0xa0, 0x03, 0x3c, 0x20, 0x0c, 0x63, - 0x90, 0x01, 0x00, 0x02, 0x24, 0x09, 0x00, 0x62, 0x14, 0x04, 0xa2, 0x03, 0x3c, - 0x85, 0x1e, 0x02, 0x24, 0x00, 0x00, 0x62, 0xac, 0x04, 0xa2, 0x03, 0x3c, 0x28, - 0x00, 0x63, 0x34, 0x03, 0x00, 0x02, 0x3c, 0xff, 0xff, 0x42, 0x34, 0x59, 0xca, - 0x03, 0x08, 0x00, 0x00, 0x62, 0xac, 0x5d, 0xca, 0x03, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x10, 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, - 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xbd, 0x27, 0x1c, 0x00, 0xbf, 0xaf, 0x18, - 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x90, - 0x00, 0x00, 0x0f, 0x80, 0x11, 0x3c, 0x10, 0x5c, 0x31, 0x26, 0x21, 0x80, 0x00, - 0x00, 0x20, 0x90, 0x80, 0xaf, 0x21, 0x28, 0x00, 0x00, 0x21, 0x20, 0x20, 0x02, - 0x00, 0x00, 0x82, 0x94, 0x02, 0x00, 0x83, 0x90, 0x04, 0xa2, 0x01, 0x3c, 0x21, - 0x08, 0x22, 0x00, 0x00, 0x00, 0x23, 0xa0, 0x20, 0x90, 0x80, 0xaf, 0x01, 0x00, - 0xa5, 0x24, 0x04, 0x00, 0xa2, 0x28, 0xf7, 0xff, 0x40, 0x14, 0x04, 0x00, 0x84, - 0x24, 0x00, 0x00, 0x82, 0x94, 0x04, 0xa2, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, - 0x00, 0x00, 0x22, 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x42, 0x30, 0x08, - 0x00, 0x40, 0x10, 0x64, 0x00, 0x02, 0x2a, 0x04, 0x00, 0x40, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x86, 0x84, 0x27, 0x3a, 0xc0, 0x03, 0x0c, 0x61, 0x00, 0x05, - 0x24, 0x66, 0xca, 0x03, 0x08, 0x01, 0x00, 0x10, 0x26, 0x05, 0x00, 0x52, 0x26, - 0x0f, 0x00, 0x42, 0x2a, 0xe0, 0xff, 0x40, 0x14, 0x14, 0x00, 0x31, 0x26, 0x1c, - 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, - 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x20, 0x00, 0xbd, 0x27, 0xe8, 0xff, 0xbd, - 0x27, 0x21, 0x28, 0x80, 0x00, 0x00, 0x26, 0x04, 0x00, 0x03, 0x26, 0x04, 0x00, - 0x0a, 0x00, 0x02, 0x24, 0x06, 0x00, 0x82, 0x10, 0x10, 0x00, 0xbf, 0xaf, 0x0d, - 0x00, 0x02, 0x24, 0x0b, 0x00, 0x82, 0x10, 0x00, 0x26, 0x05, 0x00, 0xa8, 0xca, - 0x03, 0x08, 0x00, 0x00, 0x00, 0x00, 0x10, 0x86, 0x83, 0x93, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x62, 0x30, 0x11, 0x00, 0x40, 0x14, 0x01, 0x00, 0x62, 0x34, - 0x10, 0x86, 0x82, 0xa3, 0xa9, 0xca, 0x03, 0x08, 0x00, 0x26, 0x05, 0x00, 0x10, - 0x86, 0x83, 0x93, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x62, 0x30, 0x09, 0x00, - 0x40, 0x14, 0x02, 0x00, 0x62, 0x34, 0x10, 0x86, 0x82, 0xa3, 0xa9, 0xca, 0x03, - 0x08, 0x00, 0x26, 0x05, 0x00, 0x10, 0x86, 0x80, 0xa3, 0xfc, 0xc9, 0x03, 0x0c, - 0x03, 0x26, 0x04, 0x00, 0x33, 0xca, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x10, - 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, - 0x00, 0x00, 0xd0, 0xff, 0xbd, 0x27, 0x2c, 0x00, 0xbf, 0xaf, 0x28, 0x00, 0xb4, - 0xaf, 0x24, 0x00, 0xb3, 0xaf, 0x20, 0x00, 0xb2, 0xaf, 0x1c, 0x00, 0xb1, 0xaf, - 0x18, 0x00, 0xb0, 0xaf, 0x21, 0x80, 0xa0, 0x00, 0x03, 0x00, 0x00, 0x1e, 0x21, - 0x88, 0x80, 0x00, 0xc1, 0xca, 0x03, 0x08, 0x01, 0x00, 0x10, 0x24, 0x1a, 0x00, - 0x02, 0x2a, 0x03, 0x00, 0x40, 0x14, 0x21, 0x98, 0x20, 0x02, 0x19, 0x00, 0x10, - 0x24, 0x21, 0x98, 0x20, 0x02, 0x21, 0x90, 0x00, 0x02, 0x0a, 0x00, 0x40, 0x12, - 0xff, 0xff, 0x50, 0x26, 0xff, 0xff, 0x14, 0x24, 0x14, 0x86, 0x84, 0x27, 0x00, - 0x00, 0x25, 0x92, 0x00, 0x00, 0x00, 0x00, 0x3e, 0xc4, 0x03, 0x0c, 0x01, 0x00, - 0x31, 0x26, 0xff, 0xff, 0x10, 0x26, 0xf9, 0xff, 0x14, 0x16, 0x00, 0x00, 0x00, - 0x00, 0x11, 0x00, 0x42, 0x2a, 0x15, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x8c, 0xca, 0x03, 0x0c, 0x20, 0x00, 0x04, 0x24, 0xff, 0xff, 0x52, 0x26, 0xff, - 0xff, 0x02, 0x24, 0x0f, 0x00, 0x42, 0x12, 0xff, 0xff, 0x10, 0x24, 0x00, 0x00, - 0x64, 0x92, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x82, 0x24, 0x5f, 0x00, 0x42, - 0x2c, 0x03, 0x00, 0x40, 0x10, 0x00, 0x26, 0x04, 0x00, 0xe0, 0xca, 0x03, 0x08, - 0x03, 0x26, 0x04, 0x00, 0x2e, 0x00, 0x04, 0x24, 0x8c, 0xca, 0x03, 0x0c, 0x01, - 0x00, 0x73, 0x26, 0xff, 0xff, 0x52, 0x26, 0xf3, 0xff, 0x50, 0x16, 0x00, 0x00, - 0x00, 0x00, 0x2c, 0x00, 0xbf, 0x8f, 0x28, 0x00, 0xb4, 0x8f, 0x24, 0x00, 0xb3, - 0x8f, 0x20, 0x00, 0xb2, 0x8f, 0x1c, 0x00, 0xb1, 0x8f, 0x18, 0x00, 0xb0, 0x8f, - 0x08, 0x00, 0xe0, 0x03, 0x30, 0x00, 0xbd, 0x27, 0xe8, 0xff, 0xbd, 0x27, 0x14, - 0x00, 0xbf, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x8c, 0xca, 0x03, 0x0c, 0x0d, 0x00, - 0x04, 0x24, 0x21, 0x80, 0x00, 0x00, 0x8c, 0xca, 0x03, 0x0c, 0x20, 0x00, 0x04, - 0x24, 0x01, 0x00, 0x10, 0x26, 0x4e, 0x00, 0x02, 0x2a, 0xfb, 0xff, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x8c, 0xca, 0x03, 0x0c, 0x0d, 0x00, 0x04, 0x24, 0x14, - 0x00, 0xbf, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x18, 0x00, - 0xbd, 0x27, 0xf8, 0xff, 0xbd, 0x27, 0x05, 0x00, 0x80, 0x10, 0xff, 0xff, 0x82, - 0x24, 0xff, 0xff, 0x03, 0x24, 0xff, 0xff, 0x42, 0x24, 0xff, 0xff, 0x43, 0x14, - 0xff, 0xff, 0x42, 0x24, 0x08, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, - 0x00, 0x00, 0x00, 0xd0, 0xff, 0xbd, 0x27, 0x2c, 0x00, 0xbf, 0xaf, 0x28, 0x00, - 0xb6, 0xaf, 0x24, 0x00, 0xb5, 0xaf, 0x20, 0x00, 0xb4, 0xaf, 0x1c, 0x00, 0xb3, - 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, - 0x00, 0xa0, 0x02, 0x3c, 0x20, 0x0c, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, 0x05, - 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x43, 0xcc, 0x03, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x39, 0xcc, 0x03, 0x08, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x80, - 0x10, 0x00, 0x00, 0x00, 0x00, 0xed, 0xca, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x86, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x21, 0x90, 0x00, 0x00, 0x06, - 0xa2, 0x02, 0x3c, 0x00, 0x00, 0x40, 0xa4, 0x63, 0x00, 0x11, 0x24, 0x04, 0xa2, - 0x10, 0x3c, 0x34, 0x00, 0x15, 0x24, 0x10, 0x00, 0x13, 0x24, 0xe2, 0x00, 0x14, - 0x24, 0x10, 0xca, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xff, 0xca, 0x03, 0x0c, - 0x0a, 0x00, 0x04, 0x24, 0x0c, 0x00, 0x15, 0xa2, 0xff, 0xca, 0x03, 0x0c, 0x0a, - 0x00, 0x04, 0x24, 0x00, 0x00, 0x13, 0xa2, 0xff, 0xca, 0x03, 0x0c, 0x0a, 0x00, - 0x04, 0x24, 0x00, 0x00, 0x13, 0xa2, 0xff, 0xca, 0x03, 0x0c, 0x0a, 0x00, 0x04, - 0x24, 0x0c, 0x00, 0x14, 0xa2, 0xff, 0xca, 0x03, 0x0c, 0x0a, 0x00, 0x04, 0x24, - 0x00, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x42, 0x30, 0x04, - 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x31, 0x26, 0xe9, 0xff, - 0x20, 0x16, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x20, 0x16, 0x63, 0x00, 0x11, - 0x24, 0x34, 0x86, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x08, 0x00, 0x52, 0x36, - 0x63, 0x00, 0x11, 0x24, 0x04, 0xa2, 0x10, 0x3c, 0xb4, 0x00, 0x15, 0x24, 0xff, - 0x00, 0x13, 0x24, 0xe8, 0x00, 0x14, 0x24, 0x10, 0xca, 0x03, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xca, 0x03, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x0c, 0x00, 0x15, - 0xa2, 0xff, 0xca, 0x03, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x08, 0x00, 0x13, 0xa2, - 0xff, 0xca, 0x03, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x08, 0x00, 0x13, 0xa2, 0xff, - 0xca, 0x03, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x0c, 0x00, 0x14, 0xa2, 0xff, 0xca, - 0x03, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x08, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, - 0x00, 0x40, 0x00, 0x42, 0x30, 0x04, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x31, 0x26, 0xe9, 0xff, 0x20, 0x16, 0x00, 0x00, 0x00, 0x00, 0x05, - 0x00, 0x20, 0x16, 0x02, 0x00, 0x10, 0x24, 0x50, 0x86, 0x84, 0x27, 0x3e, 0xc4, - 0x03, 0x0c, 0x08, 0x00, 0x52, 0x36, 0x02, 0x00, 0x10, 0x24, 0xff, 0xff, 0x11, - 0x24, 0x10, 0xca, 0x03, 0x0c, 0xff, 0xff, 0x10, 0x26, 0xfd, 0xff, 0x11, 0x16, - 0xd8, 0x00, 0x02, 0x24, 0x04, 0xa2, 0x10, 0x3c, 0x0c, 0x00, 0x02, 0xa2, 0xff, - 0xca, 0x03, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x08, 0x00, 0x02, 0x92, 0x00, 0x00, - 0x00, 0x00, 0xff, 0x00, 0x51, 0x30, 0xff, 0xca, 0x03, 0x0c, 0x0a, 0x00, 0x04, - 0x24, 0x08, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x43, 0x30, - 0xff, 0x00, 0x02, 0x24, 0x07, 0x00, 0x62, 0x14, 0x06, 0xa2, 0x02, 0x3c, 0x05, - 0x00, 0x23, 0x16, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x86, 0x84, 0x27, 0x3e, 0xc4, - 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x06, 0xa2, 0x02, 0x3c, 0x00, 0x00, 0x40, - 0xa4, 0xfa, 0xc1, 0x03, 0x0c, 0x21, 0x20, 0x00, 0x00, 0x00, 0xa0, 0x10, 0x3c, - 0x80, 0x01, 0x10, 0x36, 0x01, 0x00, 0x11, 0x24, 0x00, 0x00, 0x11, 0xae, 0xfa, - 0xc1, 0x03, 0x0c, 0x01, 0x04, 0x04, 0x24, 0x00, 0x00, 0x02, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x05, 0x00, 0x51, 0x10, 0x15, 0x00, 0x10, 0x3c, 0x84, 0x86, 0x84, - 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x01, 0x00, 0x52, 0x36, 0x15, 0x00, 0x10, 0x3c, - 0xbf, 0x5c, 0x10, 0x36, 0x00, 0xa0, 0x04, 0x3c, 0x80, 0x01, 0x84, 0x34, 0xff, - 0xff, 0x03, 0x24, 0x00, 0x00, 0x82, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, - 0x40, 0x10, 0xff, 0xff, 0x10, 0x26, 0xfb, 0xff, 0x03, 0x16, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xa0, 0x02, 0x3c, 0x80, 0x01, 0x42, 0x34, 0x00, 0x00, 0x42, 0x8c, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x40, 0x10, 0x06, 0xa2, 0x02, 0x3c, 0xa0, - 0x86, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x02, 0x00, 0x52, 0x36, 0x06, 0xa2, - 0x02, 0x3c, 0x00, 0x00, 0x40, 0xa4, 0x63, 0x00, 0x11, 0x24, 0x04, 0xa2, 0x10, - 0x3c, 0x34, 0x00, 0x15, 0x24, 0xff, 0x00, 0x13, 0x24, 0xe2, 0x00, 0x14, 0x24, - 0x10, 0xca, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xff, 0xca, 0x03, 0x0c, 0x0a, - 0x00, 0x04, 0x24, 0x0c, 0x00, 0x15, 0xa2, 0xff, 0xca, 0x03, 0x0c, 0x0a, 0x00, - 0x04, 0x24, 0x00, 0x00, 0x13, 0xa2, 0xff, 0xca, 0x03, 0x0c, 0x0a, 0x00, 0x04, - 0x24, 0x00, 0x00, 0x13, 0xa2, 0xff, 0xca, 0x03, 0x0c, 0x0a, 0x00, 0x04, 0x24, - 0x0c, 0x00, 0x14, 0xa2, 0xff, 0xca, 0x03, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x00, - 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x42, 0x30, 0x04, 0x00, - 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x31, 0x26, 0xe9, 0xff, 0x20, - 0x16, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x16, 0x00, 0x00, 0x00, 0x00, - 0x34, 0x86, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x08, 0x00, 0x52, 0x36, 0xfa, - 0xc1, 0x03, 0x0c, 0x21, 0x20, 0x00, 0x00, 0x00, 0xa0, 0x03, 0x3c, 0x80, 0x01, - 0x63, 0x34, 0x01, 0x00, 0x02, 0x24, 0x00, 0x00, 0x62, 0xac, 0xfa, 0xc1, 0x03, - 0x0c, 0x01, 0x04, 0x04, 0x24, 0xff, 0xca, 0x03, 0x0c, 0x0a, 0x00, 0x04, 0x24, - 0x10, 0xca, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x02, 0x3c, 0x80, - 0x01, 0x42, 0x34, 0x00, 0x00, 0x43, 0x8c, 0x01, 0x00, 0x02, 0x24, 0x04, 0x00, - 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x86, 0x84, 0x27, 0x3e, 0xc4, 0x03, - 0x0c, 0x04, 0x00, 0x52, 0x36, 0xfa, 0xc1, 0x03, 0x0c, 0x21, 0x20, 0x00, 0x00, - 0x06, 0xa2, 0x02, 0x3c, 0x00, 0x00, 0x40, 0xa4, 0x63, 0x00, 0x11, 0x24, 0x04, - 0xa2, 0x10, 0x3c, 0x34, 0x00, 0x16, 0x24, 0xcc, 0x00, 0x15, 0x24, 0x1c, 0x00, - 0x14, 0x24, 0xe2, 0x00, 0x13, 0x24, 0x10, 0xca, 0x03, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xca, 0x03, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x0c, 0x00, 0x16, 0xa2, - 0xff, 0xca, 0x03, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x00, 0x00, 0x15, 0xa2, 0xff, - 0xca, 0x03, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x00, 0x00, 0x14, 0xa2, 0xff, 0xca, - 0x03, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x0c, 0x00, 0x13, 0xa2, 0xff, 0xca, 0x03, - 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x00, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, - 0x40, 0x00, 0x42, 0x30, 0x04, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x31, 0x26, 0xe9, 0xff, 0x20, 0x16, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, - 0x20, 0x16, 0x63, 0x00, 0x11, 0x24, 0x34, 0x86, 0x84, 0x27, 0x3e, 0xc4, 0x03, - 0x0c, 0x08, 0x00, 0x52, 0x36, 0x63, 0x00, 0x11, 0x24, 0x04, 0xa2, 0x10, 0x3c, - 0xb4, 0x00, 0x15, 0x24, 0xff, 0x00, 0x13, 0x24, 0xe8, 0x00, 0x14, 0x24, 0x10, - 0xca, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xff, 0xca, 0x03, 0x0c, 0x0a, 0x00, - 0x04, 0x24, 0x0c, 0x00, 0x15, 0xa2, 0xff, 0xca, 0x03, 0x0c, 0x0a, 0x00, 0x04, - 0x24, 0x08, 0x00, 0x13, 0xa2, 0xff, 0xca, 0x03, 0x0c, 0x0a, 0x00, 0x04, 0x24, - 0x08, 0x00, 0x13, 0xa2, 0xff, 0xca, 0x03, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x0c, - 0x00, 0x14, 0xa2, 0xff, 0xca, 0x03, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x08, 0x00, - 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x42, 0x30, 0x04, 0x00, 0x40, - 0x10, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x31, 0x26, 0xe9, 0xff, 0x20, 0x16, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x20, 0x16, 0x06, 0xa2, 0x02, 0x3c, 0x50, - 0x86, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x08, 0x00, 0x52, 0x36, 0x06, 0xa2, - 0x02, 0x3c, 0x00, 0x00, 0x40, 0xa4, 0xfa, 0xc1, 0x03, 0x0c, 0x21, 0x20, 0x00, - 0x00, 0x00, 0xa0, 0x03, 0x3c, 0x80, 0x01, 0x63, 0x34, 0x01, 0x00, 0x02, 0x24, - 0x00, 0x00, 0x62, 0xac, 0xfa, 0xc1, 0x03, 0x0c, 0x01, 0x04, 0x04, 0x24, 0x05, - 0x00, 0x40, 0x16, 0x21, 0x10, 0x40, 0x02, 0xe0, 0x86, 0x84, 0x27, 0x3e, 0xc4, - 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x40, 0x02, 0x2c, 0x00, 0xbf, - 0x8f, 0x28, 0x00, 0xb6, 0x8f, 0x24, 0x00, 0xb5, 0x8f, 0x20, 0x00, 0xb4, 0x8f, - 0x1c, 0x00, 0xb3, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, - 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x30, 0x00, 0xbd, 0x27, 0xd8, 0xff, - 0xbd, 0x27, 0x20, 0x00, 0xbf, 0xaf, 0x1c, 0x00, 0xb3, 0xaf, 0x18, 0x00, 0xb2, - 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x03, 0x00, 0x80, 0x10, 0x10, 0x00, 0xb0, 0xaf, - 0xed, 0xca, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xe8, 0x86, 0x84, 0x27, 0x3e, - 0xc4, 0x03, 0x0c, 0x21, 0x90, 0x00, 0x00, 0x06, 0xa2, 0x02, 0x3c, 0x10, 0xca, - 0x03, 0x0c, 0x00, 0x00, 0x40, 0xa4, 0xff, 0xca, 0x03, 0x0c, 0x0a, 0x00, 0x04, - 0x24, 0x04, 0xa2, 0x02, 0x3c, 0x00, 0x00, 0x42, 0x8c, 0x03, 0x00, 0x03, 0x3c, - 0xff, 0xff, 0x63, 0x34, 0x24, 0x10, 0x43, 0x00, 0x85, 0x1e, 0x03, 0x24, 0x04, - 0x00, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x86, 0x84, 0x27, 0x3e, 0xc4, - 0x03, 0x0c, 0x08, 0x00, 0x52, 0x36, 0x10, 0xca, 0x03, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xca, 0x03, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x04, 0xa2, 0x02, 0x3c, - 0x28, 0x00, 0x42, 0x34, 0x00, 0x00, 0x42, 0x8c, 0x03, 0x00, 0x03, 0x3c, 0xff, - 0xff, 0x63, 0x34, 0x24, 0x10, 0x43, 0x00, 0x05, 0x00, 0x43, 0x10, 0x02, 0x00, - 0x10, 0x24, 0x04, 0x87, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x08, 0x00, 0x52, - 0x36, 0x02, 0x00, 0x10, 0x24, 0xff, 0xff, 0x11, 0x24, 0x10, 0xca, 0x03, 0x0c, - 0xff, 0xff, 0x10, 0x26, 0xfd, 0xff, 0x11, 0x16, 0x00, 0x00, 0x00, 0x00, 0x04, - 0xa2, 0x11, 0x3c, 0x3c, 0x00, 0x31, 0x36, 0x00, 0x00, 0x22, 0x8e, 0x03, 0x00, - 0x10, 0x3c, 0xff, 0xff, 0x10, 0x36, 0x24, 0x98, 0x50, 0x00, 0xff, 0xca, 0x03, - 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x00, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x24, 0x10, 0x50, 0x00, 0x07, 0x00, 0x40, 0x14, 0x06, 0xa2, 0x02, 0x3c, 0x05, - 0x00, 0x60, 0x16, 0x00, 0x00, 0x00, 0x00, 0x20, 0x87, 0x84, 0x27, 0x3e, 0xc4, - 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x06, 0xa2, 0x02, 0x3c, 0x00, 0x00, 0x40, - 0xa4, 0xfa, 0xc1, 0x03, 0x0c, 0x21, 0x20, 0x00, 0x00, 0x00, 0xa0, 0x03, 0x3c, - 0x80, 0x01, 0x63, 0x34, 0x01, 0x00, 0x02, 0x24, 0x00, 0x00, 0x62, 0xac, 0xfa, - 0xc1, 0x03, 0x0c, 0x01, 0x04, 0x04, 0x24, 0x4f, 0xc3, 0x10, 0x34, 0x00, 0xa0, - 0x04, 0x3c, 0x80, 0x01, 0x84, 0x34, 0xff, 0xff, 0x03, 0x24, 0x00, 0x00, 0x82, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x40, 0x10, 0xff, 0xff, 0x10, 0x26, - 0xfb, 0xff, 0x03, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x02, 0x3c, 0x80, - 0x01, 0x42, 0x34, 0x00, 0x00, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, - 0x40, 0x10, 0x04, 0xa2, 0x02, 0x3c, 0xa0, 0x86, 0x84, 0x27, 0x3e, 0xc4, 0x03, - 0x0c, 0x02, 0x00, 0x52, 0x36, 0x04, 0xa2, 0x02, 0x3c, 0x00, 0x00, 0x40, 0xac, - 0x4f, 0xc3, 0x10, 0x34, 0xff, 0xff, 0x11, 0x24, 0x10, 0xca, 0x03, 0x0c, 0xff, - 0xff, 0x10, 0x26, 0xfd, 0xff, 0x11, 0x16, 0x00, 0x00, 0x00, 0x00, 0xff, 0xca, - 0x03, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x06, 0xa2, 0x02, 0x3c, 0x00, 0x00, 0x40, - 0xa4, 0xfa, 0xc1, 0x03, 0x0c, 0x21, 0x20, 0x00, 0x00, 0x00, 0xa0, 0x10, 0x3c, - 0x80, 0x01, 0x10, 0x36, 0x01, 0x00, 0x11, 0x24, 0x00, 0x00, 0x11, 0xae, 0xfa, - 0xc1, 0x03, 0x0c, 0x01, 0x04, 0x04, 0x24, 0x00, 0x00, 0x02, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x51, 0x10, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x86, 0x84, - 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x04, 0x00, 0x52, 0x36, 0xfa, 0xc1, 0x03, 0x0c, - 0x21, 0x20, 0x00, 0x00, 0x06, 0xa2, 0x02, 0x3c, 0x00, 0x00, 0x40, 0xa4, 0xfa, - 0xc1, 0x03, 0x0c, 0x21, 0x20, 0x00, 0x00, 0x00, 0xa0, 0x03, 0x3c, 0x80, 0x01, - 0x63, 0x34, 0x01, 0x00, 0x02, 0x24, 0x00, 0x00, 0x62, 0xac, 0xfa, 0xc1, 0x03, - 0x0c, 0x01, 0x04, 0x04, 0x24, 0x04, 0xa2, 0x03, 0x3c, 0x85, 0x1e, 0x02, 0x24, - 0x00, 0x00, 0x62, 0xac, 0x05, 0x00, 0x40, 0x16, 0x21, 0x10, 0x40, 0x02, 0xe0, - 0x86, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, - 0x40, 0x02, 0x20, 0x00, 0xbf, 0x8f, 0x1c, 0x00, 0xb3, 0x8f, 0x18, 0x00, 0xb2, - 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, - 0x28, 0x00, 0xbd, 0x27, 0xc0, 0xff, 0xbd, 0x27, 0x3c, 0x00, 0xbf, 0xaf, 0x38, - 0x00, 0xbe, 0xaf, 0x34, 0x00, 0xb7, 0xaf, 0x30, 0x00, 0xb6, 0xaf, 0x2c, 0x00, - 0xb5, 0xaf, 0x28, 0x00, 0xb4, 0xaf, 0x24, 0x00, 0xb3, 0xaf, 0x20, 0x00, 0xb2, - 0xaf, 0x1c, 0x00, 0xb1, 0xaf, 0x18, 0x00, 0xb0, 0xaf, 0x21, 0xa8, 0x80, 0x00, - 0x21, 0xf0, 0xc0, 0x00, 0x50, 0x00, 0xb1, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x09, - 0x00, 0xc0, 0x13, 0x21, 0xa0, 0xa0, 0x00, 0x03, 0x00, 0xe0, 0x10, 0x00, 0x00, - 0x00, 0x00, 0xed, 0xca, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x64, 0x87, 0x84, - 0x27, 0x21, 0x28, 0xa0, 0x02, 0x3e, 0xc4, 0x03, 0x0c, 0x21, 0x30, 0x80, 0x02, - 0x21, 0x80, 0xa0, 0x02, 0x2b, 0x10, 0x90, 0x02, 0x06, 0x00, 0x40, 0x14, 0x21, - 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0xae, 0x04, 0x00, 0x10, 0x26, 0x2b, 0x10, - 0x90, 0x02, 0xfc, 0xff, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0xca, 0x03, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x20, 0x12, 0x21, 0x80, 0xa0, 0x02, - 0x2b, 0x10, 0x90, 0x02, 0x45, 0x00, 0x40, 0x14, 0x2b, 0x10, 0x95, 0x02, 0x11, - 0x11, 0x17, 0x3c, 0x11, 0x11, 0xf7, 0x36, 0x33, 0x33, 0x16, 0x3c, 0x33, 0x33, - 0xd6, 0x36, 0x77, 0x77, 0x12, 0x3c, 0x77, 0x77, 0x52, 0x36, 0xff, 0xff, 0x11, - 0x24, 0x00, 0x00, 0x07, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0xe0, 0x10, - 0x01, 0x00, 0x05, 0x24, 0x60, 0x87, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x3e, - 0xc4, 0x03, 0x0c, 0x21, 0x30, 0x00, 0x00, 0x01, 0x00, 0x73, 0x36, 0x00, 0x00, - 0x17, 0xae, 0x00, 0x00, 0x07, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0xf7, - 0x10, 0x02, 0x00, 0x05, 0x24, 0x60, 0x87, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, - 0x11, 0x11, 0x06, 0x3c, 0x3e, 0xc4, 0x03, 0x0c, 0x11, 0x11, 0xc6, 0x34, 0x02, - 0x00, 0x73, 0x36, 0x00, 0x00, 0x16, 0xae, 0x00, 0x00, 0x07, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x07, 0x00, 0xf6, 0x10, 0x03, 0x00, 0x05, 0x24, 0x60, 0x87, 0x84, - 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x33, 0x33, 0x06, 0x3c, 0x3e, 0xc4, 0x03, 0x0c, - 0x33, 0x33, 0xc6, 0x34, 0x04, 0x00, 0x73, 0x36, 0x00, 0x00, 0x12, 0xae, 0x00, - 0x00, 0x07, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0xf2, 0x10, 0x04, 0x00, - 0x05, 0x24, 0x60, 0x87, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x77, 0x77, 0x06, - 0x3c, 0x3e, 0xc4, 0x03, 0x0c, 0x77, 0x77, 0xc6, 0x34, 0x08, 0x00, 0x73, 0x36, - 0x00, 0x00, 0x11, 0xae, 0x00, 0x00, 0x07, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x06, - 0x00, 0xf1, 0x10, 0x05, 0x00, 0x05, 0x24, 0x60, 0x87, 0x84, 0x8f, 0x10, 0x00, - 0xb0, 0xaf, 0x3e, 0xc4, 0x03, 0x0c, 0xff, 0xff, 0x06, 0x24, 0x10, 0x00, 0x73, - 0x36, 0xff, 0x00, 0x02, 0x32, 0x03, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xca, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x26, 0x2b, - 0x10, 0x90, 0x02, 0xc4, 0xff, 0x40, 0x10, 0x2b, 0x10, 0x95, 0x02, 0xd5, 0x01, - 0x40, 0x14, 0x21, 0x80, 0x80, 0x02, 0x77, 0x77, 0x14, 0x3c, 0x77, 0x77, 0x94, - 0x36, 0x33, 0x33, 0x12, 0x3c, 0x33, 0x33, 0x52, 0x36, 0x11, 0x11, 0x11, 0x3c, - 0x11, 0x11, 0x31, 0x36, 0x00, 0x00, 0x07, 0x8e, 0xff, 0xff, 0x02, 0x24, 0x06, - 0x00, 0xe2, 0x10, 0x06, 0x00, 0x05, 0x24, 0x60, 0x87, 0x84, 0x8f, 0x10, 0x00, - 0xb0, 0xaf, 0x3e, 0xc4, 0x03, 0x0c, 0xff, 0xff, 0x06, 0x24, 0x20, 0x00, 0x73, - 0x36, 0x00, 0x00, 0x14, 0xae, 0x00, 0x00, 0x07, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x07, 0x00, 0xf4, 0x10, 0x07, 0x00, 0x05, 0x24, 0x60, 0x87, 0x84, 0x8f, 0x10, - 0x00, 0xb0, 0xaf, 0x77, 0x77, 0x06, 0x3c, 0x3e, 0xc4, 0x03, 0x0c, 0x77, 0x77, - 0xc6, 0x34, 0x40, 0x00, 0x73, 0x36, 0x00, 0x00, 0x12, 0xae, 0x00, 0x00, 0x07, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0xf2, 0x10, 0x08, 0x00, 0x05, 0x24, - 0x60, 0x87, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x33, 0x33, 0x06, 0x3c, 0x3e, - 0xc4, 0x03, 0x0c, 0x33, 0x33, 0xc6, 0x34, 0x80, 0x00, 0x73, 0x36, 0x00, 0x00, - 0x11, 0xae, 0x00, 0x00, 0x07, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0xf1, - 0x10, 0x09, 0x00, 0x05, 0x24, 0x60, 0x87, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, - 0x11, 0x11, 0x06, 0x3c, 0x3e, 0xc4, 0x03, 0x0c, 0x11, 0x11, 0xc6, 0x34, 0x00, - 0x01, 0x73, 0x36, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x07, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x06, 0x00, 0xe0, 0x10, 0x0a, 0x00, 0x05, 0x24, 0x60, 0x87, 0x84, - 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x3e, 0xc4, 0x03, 0x0c, 0x21, 0x30, 0x00, 0x00, - 0x00, 0x02, 0x73, 0x36, 0xff, 0x00, 0x02, 0x32, 0x03, 0x00, 0x40, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x10, 0xca, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, - 0x10, 0x26, 0x2b, 0x10, 0x15, 0x02, 0xc4, 0xff, 0x40, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x1d, 0xcf, 0x03, 0x08, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0x95, 0x02, - 0x58, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x11, 0x24, 0x21, - 0x90, 0x00, 0x00, 0x00, 0x00, 0x07, 0x92, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, - 0xe7, 0x30, 0xff, 0x00, 0x46, 0x32, 0x07, 0x00, 0xe6, 0x10, 0x25, 0x10, 0x51, - 0x02, 0x60, 0x87, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x3e, 0xc4, 0x03, 0x0c, - 0x01, 0x00, 0x05, 0x24, 0x01, 0x00, 0x73, 0x36, 0x25, 0x10, 0x51, 0x02, 0x00, - 0x00, 0x02, 0xa2, 0x00, 0x00, 0x07, 0x92, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, - 0xe7, 0x30, 0xff, 0x00, 0x46, 0x30, 0x06, 0x00, 0xe6, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x60, 0x87, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x3e, 0xc4, 0x03, 0x0c, - 0x02, 0x00, 0x05, 0x24, 0x02, 0x00, 0x73, 0x36, 0x00, 0x00, 0x12, 0xa2, 0x00, - 0x00, 0x07, 0x92, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xe7, 0x30, 0xff, 0x00, - 0x46, 0x32, 0x07, 0x00, 0xe6, 0x10, 0x25, 0x10, 0x51, 0x02, 0x60, 0x87, 0x84, - 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x3e, 0xc4, 0x03, 0x0c, 0x03, 0x00, 0x05, 0x24, - 0x04, 0x00, 0x73, 0x36, 0x25, 0x10, 0x51, 0x02, 0x00, 0x00, 0x02, 0xa2, 0x40, - 0x10, 0x11, 0x00, 0x21, 0x88, 0x40, 0x00, 0xff, 0xff, 0x52, 0x24, 0xff, 0x00, - 0x22, 0x32, 0xd5, 0xff, 0x40, 0x14, 0xff, 0x00, 0x02, 0x32, 0x03, 0x00, 0x40, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x10, 0xca, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, 0xcb, 0xff, 0x40, 0x10, 0x2b, - 0x10, 0x95, 0x02, 0x20, 0x00, 0x40, 0x14, 0x21, 0x80, 0xa0, 0x02, 0x01, 0x00, - 0x11, 0x24, 0xfe, 0x00, 0x12, 0x24, 0x00, 0x00, 0x07, 0x92, 0x25, 0x10, 0x51, - 0x02, 0xff, 0x00, 0xe7, 0x30, 0xff, 0x00, 0x46, 0x30, 0x06, 0x00, 0xe6, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x60, 0x87, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x3e, - 0xc4, 0x03, 0x0c, 0x04, 0x00, 0x05, 0x24, 0x08, 0x00, 0x73, 0x36, 0x00, 0x00, - 0x12, 0xa2, 0x25, 0x10, 0x51, 0x02, 0x00, 0x00, 0x02, 0xa2, 0x40, 0x88, 0x11, - 0x00, 0x40, 0x10, 0x12, 0x00, 0x01, 0x00, 0x52, 0x34, 0xff, 0x00, 0x22, 0x32, - 0xed, 0xff, 0x40, 0x14, 0xff, 0x00, 0x02, 0x32, 0x03, 0x00, 0x40, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x10, 0xca, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, 0xe4, 0xff, 0x40, 0x10, 0x01, 0x00, 0x11, - 0x24, 0x2b, 0x10, 0x95, 0x02, 0x3c, 0x00, 0x40, 0x14, 0x21, 0x80, 0x80, 0x02, - 0x80, 0x00, 0x11, 0x24, 0x7f, 0x00, 0x12, 0x24, 0x00, 0x00, 0x07, 0x92, 0x25, - 0x10, 0x51, 0x02, 0xff, 0x00, 0xe7, 0x30, 0xff, 0x00, 0x46, 0x30, 0x06, 0x00, - 0xe6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x60, 0x87, 0x84, 0x8f, 0x10, 0x00, 0xb0, - 0xaf, 0x3e, 0xc4, 0x03, 0x0c, 0x05, 0x00, 0x05, 0x24, 0x10, 0x00, 0x73, 0x36, - 0x00, 0x00, 0x12, 0xa2, 0x25, 0x10, 0x51, 0x02, 0x00, 0x00, 0x02, 0xa2, 0x00, - 0x00, 0x12, 0xa2, 0xff, 0x00, 0x22, 0x32, 0x42, 0x88, 0x02, 0x00, 0xff, 0x00, - 0x42, 0x32, 0xed, 0xff, 0x20, 0x16, 0x42, 0x90, 0x02, 0x00, 0xff, 0x00, 0x02, - 0x32, 0x03, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x10, 0xca, 0x03, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x10, 0x26, 0x2b, 0x10, 0x15, 0x02, 0xe3, - 0xff, 0x40, 0x10, 0x80, 0x00, 0x11, 0x24, 0x2b, 0x10, 0x95, 0x02, 0x1a, 0x00, - 0x40, 0x14, 0x21, 0x80, 0x80, 0x02, 0x80, 0x00, 0x11, 0x24, 0x00, 0x00, 0x07, - 0x92, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xe7, 0x30, 0x06, 0x00, 0xe0, 0x10, - 0x06, 0x00, 0x05, 0x24, 0x60, 0x87, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x3e, - 0xc4, 0x03, 0x0c, 0x21, 0x30, 0x00, 0x00, 0x20, 0x00, 0x73, 0x36, 0x00, 0x00, - 0x11, 0xa2, 0x00, 0x00, 0x00, 0xa2, 0xff, 0x00, 0x22, 0x32, 0x42, 0x88, 0x02, - 0x00, 0xf1, 0xff, 0x20, 0x16, 0xff, 0x00, 0x02, 0x32, 0x03, 0x00, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x10, 0xca, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x10, 0x26, 0x2b, 0x10, 0x15, 0x02, 0xe9, 0xff, 0x40, 0x10, 0x80, 0x00, - 0x11, 0x24, 0x0f, 0x00, 0x12, 0x24, 0x01, 0x00, 0x42, 0x32, 0x23, 0x10, 0x02, - 0x00, 0x00, 0x44, 0x03, 0x3c, 0x00, 0x11, 0x63, 0x34, 0x24, 0x88, 0x43, 0x00, - 0x02, 0x00, 0x42, 0x32, 0x03, 0x00, 0x40, 0x10, 0x00, 0x11, 0x02, 0x3c, 0x00, - 0x44, 0x42, 0x34, 0x25, 0x88, 0x22, 0x02, 0x04, 0x00, 0x42, 0x32, 0x03, 0x00, - 0x40, 0x10, 0x88, 0x00, 0x02, 0x3c, 0x22, 0x00, 0x42, 0x34, 0x25, 0x88, 0x22, - 0x02, 0x08, 0x00, 0x42, 0x32, 0x03, 0x00, 0x40, 0x10, 0x22, 0x00, 0x02, 0x3c, - 0x88, 0x00, 0x42, 0x34, 0x25, 0x88, 0x22, 0x02, 0x21, 0x80, 0xa0, 0x02, 0x2b, - 0x10, 0x90, 0x02, 0x06, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x11, 0xae, 0x04, 0x00, 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, 0xfc, 0xff, 0x40, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0xca, 0x03, 0x0c, 0x21, 0x80, 0xa0, 0x02, - 0x2b, 0x10, 0x90, 0x02, 0x13, 0x00, 0x40, 0x14, 0x55, 0xaa, 0x02, 0x3c, 0x00, - 0x00, 0x07, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0xf1, 0x10, 0x07, 0x00, - 0x05, 0x24, 0x60, 0x87, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x3e, 0xc4, 0x03, - 0x0c, 0x21, 0x30, 0x20, 0x02, 0x40, 0x00, 0x73, 0x36, 0xff, 0x00, 0x02, 0x32, - 0x03, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x10, 0xca, 0x03, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, 0xef, 0xff, - 0x40, 0x10, 0x55, 0xaa, 0x02, 0x3c, 0x55, 0xaa, 0x42, 0x34, 0x25, 0x88, 0x22, - 0x02, 0x21, 0x80, 0xa0, 0x02, 0x2b, 0x10, 0x90, 0x02, 0x06, 0x00, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xae, 0x04, 0x00, 0x10, 0x26, 0x2b, - 0x10, 0x90, 0x02, 0xfc, 0xff, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0xca, - 0x03, 0x0c, 0x21, 0x80, 0xa0, 0x02, 0x2b, 0x10, 0x90, 0x02, 0x13, 0x00, 0x40, - 0x14, 0xaa, 0x55, 0x02, 0x3c, 0x00, 0x00, 0x07, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0xf1, 0x10, 0x08, 0x00, 0x05, 0x24, 0x60, 0x87, 0x84, 0x8f, 0x10, - 0x00, 0xb0, 0xaf, 0x3e, 0xc4, 0x03, 0x0c, 0x21, 0x30, 0x20, 0x02, 0x80, 0x00, - 0x73, 0x36, 0xff, 0x00, 0x02, 0x32, 0x03, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x10, 0xca, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x26, - 0x2b, 0x10, 0x90, 0x02, 0xef, 0xff, 0x40, 0x10, 0xaa, 0x55, 0x02, 0x3c, 0xaa, - 0x55, 0x42, 0x34, 0x24, 0x88, 0x22, 0x02, 0x21, 0x80, 0xa0, 0x02, 0x2b, 0x10, - 0x90, 0x02, 0x06, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, - 0xae, 0x04, 0x00, 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, 0xfc, 0xff, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x10, 0xca, 0x03, 0x0c, 0x21, 0x80, 0xa0, 0x02, 0x2b, - 0x10, 0x90, 0x02, 0x13, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x07, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0xf1, 0x10, 0x09, 0x00, 0x05, - 0x24, 0x60, 0x87, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x3e, 0xc4, 0x03, 0x0c, - 0x21, 0x30, 0x20, 0x02, 0x00, 0x01, 0x73, 0x36, 0xff, 0x00, 0x02, 0x32, 0x03, - 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x10, 0xca, 0x03, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, 0xef, 0xff, 0x40, - 0x10, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x52, 0x26, 0x87, 0xff, 0x41, 0x06, - 0x01, 0x00, 0x42, 0x32, 0x0f, 0x00, 0x12, 0x24, 0x01, 0x00, 0x42, 0x32, 0x23, - 0x10, 0x02, 0x00, 0x00, 0x88, 0x03, 0x3c, 0x00, 0x22, 0x63, 0x34, 0x24, 0x88, - 0x43, 0x00, 0x02, 0x00, 0x42, 0x32, 0x03, 0x00, 0x40, 0x10, 0x00, 0x22, 0x02, - 0x3c, 0x00, 0x88, 0x42, 0x34, 0x25, 0x88, 0x22, 0x02, 0x04, 0x00, 0x42, 0x32, - 0x03, 0x00, 0x40, 0x10, 0x44, 0x00, 0x02, 0x3c, 0x11, 0x00, 0x42, 0x34, 0x25, - 0x88, 0x22, 0x02, 0x08, 0x00, 0x42, 0x32, 0x03, 0x00, 0x40, 0x10, 0x11, 0x00, - 0x02, 0x3c, 0x44, 0x00, 0x42, 0x34, 0x25, 0x88, 0x22, 0x02, 0x21, 0x80, 0xa0, - 0x02, 0x2b, 0x10, 0x90, 0x02, 0x06, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x11, 0xae, 0x04, 0x00, 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, 0xfc, - 0xff, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0xca, 0x03, 0x0c, 0x21, 0x80, - 0xa0, 0x02, 0x2b, 0x10, 0x90, 0x02, 0x13, 0x00, 0x40, 0x14, 0xaa, 0x55, 0x02, - 0x3c, 0x00, 0x00, 0x07, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0xf1, 0x10, - 0x0a, 0x00, 0x05, 0x24, 0x60, 0x87, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x3e, - 0xc4, 0x03, 0x0c, 0x21, 0x30, 0x20, 0x02, 0x00, 0x02, 0x73, 0x36, 0xff, 0x00, - 0x02, 0x32, 0x03, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x10, 0xca, 0x03, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, - 0xef, 0xff, 0x40, 0x10, 0xaa, 0x55, 0x02, 0x3c, 0xaa, 0x55, 0x42, 0x34, 0x25, - 0x88, 0x22, 0x02, 0x21, 0x80, 0xa0, 0x02, 0x2b, 0x10, 0x90, 0x02, 0x06, 0x00, - 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xae, 0x04, 0x00, 0x10, - 0x26, 0x2b, 0x10, 0x90, 0x02, 0xfc, 0xff, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xca, 0x03, 0x0c, 0x21, 0x80, 0xa0, 0x02, 0x2b, 0x10, 0x90, 0x02, 0x13, - 0x00, 0x40, 0x14, 0x55, 0xaa, 0x02, 0x3c, 0x00, 0x00, 0x07, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x06, 0x00, 0xf1, 0x10, 0x0b, 0x00, 0x05, 0x24, 0x60, 0x87, 0x84, - 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x3e, 0xc4, 0x03, 0x0c, 0x21, 0x30, 0x20, 0x02, - 0x00, 0x02, 0x73, 0x36, 0xff, 0x00, 0x02, 0x32, 0x03, 0x00, 0x40, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x10, 0xca, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, 0xef, 0xff, 0x40, 0x10, 0x55, 0xaa, 0x02, - 0x3c, 0x55, 0xaa, 0x42, 0x34, 0x24, 0x88, 0x22, 0x02, 0x21, 0x80, 0xa0, 0x02, - 0x2b, 0x10, 0x90, 0x02, 0x06, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x11, 0xae, 0x04, 0x00, 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, 0xfc, 0xff, - 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0xca, 0x03, 0x0c, 0x21, 0x80, 0xa0, - 0x02, 0x2b, 0x10, 0x90, 0x02, 0x13, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x07, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0xf1, 0x10, 0x0c, - 0x00, 0x05, 0x24, 0x60, 0x87, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x3e, 0xc4, - 0x03, 0x0c, 0x21, 0x30, 0x20, 0x02, 0x00, 0x02, 0x73, 0x36, 0xff, 0x00, 0x02, - 0x32, 0x03, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x10, 0xca, 0x03, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, 0xef, - 0xff, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x52, 0x26, 0x87, 0xff, - 0x41, 0x06, 0x01, 0x00, 0x42, 0x32, 0x07, 0x00, 0x60, 0x16, 0x21, 0x10, 0x60, - 0x02, 0x05, 0x00, 0xc0, 0x13, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x86, 0x84, 0x27, - 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x60, 0x02, 0x3c, - 0x00, 0xbf, 0x8f, 0x38, 0x00, 0xbe, 0x8f, 0x34, 0x00, 0xb7, 0x8f, 0x30, 0x00, - 0xb6, 0x8f, 0x2c, 0x00, 0xb5, 0x8f, 0x28, 0x00, 0xb4, 0x8f, 0x24, 0x00, 0xb3, - 0x8f, 0x20, 0x00, 0xb2, 0x8f, 0x1c, 0x00, 0xb1, 0x8f, 0x18, 0x00, 0xb0, 0x8f, - 0x08, 0x00, 0xe0, 0x03, 0x40, 0x00, 0xbd, 0x27, 0xd8, 0xff, 0xbd, 0x27, 0x20, - 0x00, 0xbf, 0xaf, 0x1c, 0x00, 0xb1, 0xaf, 0x18, 0x00, 0xb0, 0xaf, 0x21, 0x88, - 0x80, 0x00, 0x21, 0x80, 0xa0, 0x00, 0x84, 0x87, 0x84, 0x27, 0x10, 0x90, 0x85, - 0x8f, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x90, 0x87, 0x84, 0x27, - 0x3e, 0xc4, 0x03, 0x0c, 0x21, 0x28, 0x00, 0x02, 0x98, 0x87, 0x84, 0x27, 0x3e, - 0xc4, 0x03, 0x0c, 0x21, 0x28, 0x20, 0x02, 0x0e, 0x00, 0x20, 0x06, 0x00, 0x00, - 0x00, 0x00, 0x08, 0x8c, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x51, - 0x00, 0x09, 0x00, 0x40, 0x14, 0x40, 0x10, 0x11, 0x00, 0x21, 0x10, 0x51, 0x00, - 0x80, 0x10, 0x02, 0x00, 0x0f, 0x80, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0x0c, - 0x5e, 0x22, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x14, 0x40, 0x10, - 0x11, 0x00, 0xa4, 0x87, 0x84, 0x27, 0xd4, 0xcf, 0x03, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x21, 0x10, 0x51, 0x00, 0x80, 0x20, 0x02, 0x00, 0x0f, 0x80, 0x02, 0x3c, - 0x0c, 0x5e, 0x42, 0x24, 0x21, 0x10, 0x82, 0x00, 0x08, 0x00, 0x41, 0x04, 0x00, - 0x80, 0x03, 0x3c, 0x0f, 0x80, 0x02, 0x3c, 0x21, 0x10, 0x44, 0x00, 0x0c, 0x5e, - 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x24, 0x10, 0x43, 0x00, 0x04, 0x00, 0x40, - 0x14, 0x40, 0x10, 0x11, 0x00, 0xbc, 0x87, 0x84, 0x27, 0xd4, 0xcf, 0x03, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x51, 0x00, 0x80, 0x10, 0x02, 0x00, 0x0f, - 0x80, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0x0c, 0x5e, 0x22, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x45, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xa2, - 0x2c, 0x0a, 0x00, 0x40, 0x14, 0x40, 0x10, 0x11, 0x00, 0x62, 0x10, 0x02, 0x3c, - 0xd3, 0x4d, 0x42, 0x34, 0x19, 0x00, 0xa2, 0x00, 0xd4, 0x87, 0x84, 0x27, 0x10, - 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xcf, - 0x03, 0x08, 0x82, 0x29, 0x06, 0x00, 0x21, 0x10, 0x51, 0x00, 0x80, 0x10, 0x02, - 0x00, 0x0f, 0x80, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0x0c, 0x5e, 0x22, 0x8c, - 0xdc, 0x87, 0x84, 0x27, 0x00, 0x00, 0x45, 0x8c, 0x3e, 0xc4, 0x03, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x40, 0x10, 0x11, 0x00, 0x21, 0x10, 0x51, 0x00, 0x80, 0x10, - 0x02, 0x00, 0x0f, 0x80, 0x03, 0x3c, 0x21, 0x18, 0x62, 0x00, 0x08, 0x5e, 0x63, - 0x8c, 0x0f, 0x80, 0x02, 0x3c, 0x64, 0x5d, 0x42, 0x24, 0x04, 0x00, 0x62, 0x14, - 0x00, 0x00, 0x00, 0x00, 0xe0, 0x87, 0x84, 0x27, 0xc5, 0xcf, 0x03, 0x08, 0x00, - 0x00, 0x00, 0x00, 0x0f, 0x80, 0x02, 0x3c, 0x14, 0x5d, 0x42, 0x24, 0x04, 0x00, - 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, 0xec, 0x87, 0x84, 0x27, 0xc5, 0xcf, 0x03, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x02, 0x3c, 0x4c, 0x5d, 0x42, 0x24, - 0x04, 0x00, 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x87, 0x84, 0x27, 0xc5, - 0xcf, 0x03, 0x08, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x02, 0x3c, 0x30, 0x5d, - 0x42, 0x24, 0x04, 0x00, 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, 0x04, 0x88, 0x84, - 0x27, 0xc5, 0xcf, 0x03, 0x08, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x02, 0x3c, - 0x98, 0x5d, 0x42, 0x24, 0x04, 0x00, 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, 0x10, - 0x88, 0x84, 0x27, 0xc5, 0xcf, 0x03, 0x08, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, - 0x02, 0x3c, 0xb4, 0x5d, 0x42, 0x24, 0x04, 0x00, 0x62, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x1c, 0x88, 0x84, 0x27, 0xc5, 0xcf, 0x03, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x0f, 0x80, 0x02, 0x3c, 0xd0, 0x5d, 0x42, 0x24, 0x04, 0x00, 0x62, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x2c, 0x88, 0x84, 0x27, 0xc5, 0xcf, 0x03, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x0f, 0x80, 0x02, 0x3c, 0xec, 0x5d, 0x42, 0x24, 0x04, 0x00, 0x62, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x38, 0x88, 0x84, 0x27, 0xc5, 0xcf, 0x03, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x02, 0x3c, 0x7c, 0x5d, 0x42, 0x24, 0x54, - 0x88, 0x84, 0x27, 0x02, 0x00, 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, 0x44, 0x88, - 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x11, - 0x00, 0x21, 0x10, 0x51, 0x00, 0x80, 0x10, 0x02, 0x00, 0x0f, 0x80, 0x01, 0x3c, - 0x21, 0x08, 0x22, 0x00, 0x10, 0x5e, 0x22, 0x94, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x60, 0x88, 0x84, 0x27, 0x3e, 0xc4, - 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x68, 0x88, 0x84, 0x27, 0x3e, 0xc4, 0x03, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xbf, 0x8f, 0x1c, 0x00, 0xb1, 0x8f, - 0x18, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x28, 0x00, 0xbd, 0x27, 0xd8, - 0xff, 0xbd, 0x27, 0x20, 0x00, 0xbf, 0xaf, 0x1c, 0x00, 0xb3, 0xaf, 0x18, 0x00, - 0xb2, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x90, 0x80, - 0x00, 0x21, 0x88, 0xa0, 0x00, 0x21, 0x98, 0xc0, 0x00, 0x14, 0x90, 0x82, 0x93, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x24, 0x02, 0x00, 0x42, 0x2c, 0x07, - 0x00, 0x40, 0x14, 0x21, 0x80, 0xe0, 0x00, 0x14, 0x90, 0x83, 0x93, 0x04, 0x00, - 0x02, 0x24, 0x03, 0x00, 0x62, 0x10, 0x10, 0x00, 0x02, 0x24, 0xfc, 0x00, 0x62, - 0x14, 0x21, 0x10, 0x20, 0x02, 0x21, 0x00, 0x42, 0x92, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x42, 0x34, 0x21, 0x00, 0x42, 0xa2, 0x01, 0x00, 0x02, 0x3c, 0x9f, - 0x86, 0x42, 0x34, 0xff, 0xff, 0x42, 0x24, 0xff, 0xff, 0x40, 0x14, 0xff, 0xff, - 0x42, 0x24, 0x08, 0x00, 0x42, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x42, - 0x30, 0x10, 0x00, 0x40, 0x14, 0x00, 0x40, 0x02, 0x24, 0x04, 0x10, 0x02, 0x02, - 0x20, 0x00, 0x42, 0x24, 0x74, 0x88, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x25, - 0x88, 0x22, 0x02, 0x21, 0x20, 0x60, 0x02, 0x31, 0xcf, 0x03, 0x0c, 0x21, 0x28, - 0x00, 0x02, 0x78, 0x88, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x21, 0x00, 0x45, 0x92, 0x8c, 0x88, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, - 0xff, 0x00, 0xa5, 0x30, 0x21, 0x00, 0x42, 0x92, 0x00, 0x00, 0x00, 0x00, 0xfe, - 0x00, 0x42, 0x30, 0x21, 0x00, 0x42, 0xa2, 0x01, 0x00, 0x02, 0x3c, 0x9f, 0x86, - 0x42, 0x34, 0xff, 0xff, 0x42, 0x24, 0xff, 0xff, 0x40, 0x14, 0xff, 0xff, 0x42, - 0x24, 0x08, 0x00, 0x42, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x42, 0x30, - 0x0c, 0x00, 0x40, 0x10, 0x00, 0x40, 0x02, 0x24, 0x04, 0x10, 0x02, 0x02, 0x20, - 0x00, 0x42, 0x24, 0x74, 0x88, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x25, 0x88, - 0x22, 0x02, 0x21, 0x20, 0x60, 0x02, 0x31, 0xcf, 0x03, 0x0c, 0x21, 0x28, 0x00, - 0x02, 0x9c, 0x88, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x42, 0x92, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x34, 0x21, - 0x00, 0x42, 0xa2, 0x01, 0x00, 0x02, 0x3c, 0x9f, 0x86, 0x42, 0x34, 0xff, 0xff, - 0x42, 0x24, 0xff, 0xff, 0x40, 0x14, 0xff, 0xff, 0x42, 0x24, 0x08, 0x00, 0x42, - 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x42, 0x30, 0x10, 0x00, 0x40, 0x14, - 0x00, 0x40, 0x02, 0x24, 0x04, 0x10, 0x02, 0x02, 0x20, 0x00, 0x42, 0x24, 0x74, - 0x88, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x25, 0x88, 0x22, 0x02, 0x21, 0x20, - 0x60, 0x02, 0x31, 0xcf, 0x03, 0x0c, 0x21, 0x28, 0x00, 0x02, 0x78, 0x88, 0x84, - 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x45, 0x92, - 0x8c, 0x88, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0xff, 0x00, 0xa5, 0x30, 0x14, - 0x90, 0x83, 0x93, 0x02, 0x00, 0x02, 0x24, 0x05, 0x00, 0x62, 0x10, 0x04, 0x00, - 0x02, 0x24, 0x08, 0x00, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0xeb, 0xd0, 0x03, - 0x08, 0x21, 0x10, 0x20, 0x02, 0x07, 0xa2, 0x03, 0x3c, 0x30, 0x00, 0x02, 0x24, - 0x00, 0x00, 0x62, 0xa0, 0x14, 0x90, 0x83, 0x93, 0x04, 0x00, 0x02, 0x24, 0x05, - 0x00, 0x62, 0x14, 0x01, 0x00, 0x02, 0x3c, 0x07, 0xa2, 0x03, 0x3c, 0x0c, 0x00, - 0x02, 0x24, 0x00, 0x00, 0x62, 0xa0, 0x01, 0x00, 0x02, 0x3c, 0x9f, 0x86, 0x42, - 0x34, 0xff, 0xff, 0x42, 0x24, 0xff, 0xff, 0x40, 0x14, 0xff, 0xff, 0x42, 0x24, - 0x07, 0xa2, 0x02, 0x3c, 0x00, 0x00, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, 0xff, - 0x00, 0x42, 0x30, 0x07, 0x10, 0x02, 0x02, 0x01, 0x00, 0x42, 0x30, 0x0c, 0x00, - 0x40, 0x10, 0x00, 0x40, 0x02, 0x24, 0x04, 0x10, 0x02, 0x02, 0x20, 0x00, 0x42, - 0x24, 0x74, 0x88, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x25, 0x88, 0x22, 0x02, - 0x21, 0x20, 0x60, 0x02, 0x31, 0xcf, 0x03, 0x0c, 0x21, 0x28, 0x00, 0x02, 0xb0, - 0x88, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, - 0x42, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x42, 0x30, 0x0c, 0x00, 0x40, - 0x10, 0x00, 0x40, 0x02, 0x24, 0x04, 0x10, 0x02, 0x02, 0x20, 0x00, 0x42, 0x24, - 0x74, 0x88, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x25, 0x88, 0x22, 0x02, 0x21, - 0x20, 0x60, 0x02, 0x31, 0xcf, 0x03, 0x0c, 0x21, 0x28, 0x00, 0x02, 0xc4, 0x88, - 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x14, 0x90, 0x83, - 0x93, 0x02, 0x00, 0x02, 0x24, 0x06, 0x00, 0x62, 0x14, 0x04, 0x00, 0x02, 0x24, - 0x07, 0xa2, 0x03, 0x3c, 0x33, 0x00, 0x02, 0x24, 0x00, 0x00, 0x62, 0xa0, 0x14, - 0x90, 0x83, 0x93, 0x04, 0x00, 0x02, 0x24, 0x05, 0x00, 0x62, 0x14, 0x01, 0x00, - 0x02, 0x3c, 0x07, 0xa2, 0x03, 0x3c, 0x0f, 0x00, 0x02, 0x24, 0x00, 0x00, 0x62, - 0xa0, 0x01, 0x00, 0x02, 0x3c, 0x9f, 0x86, 0x42, 0x34, 0xff, 0xff, 0x42, 0x24, - 0xff, 0xff, 0x40, 0x14, 0xff, 0xff, 0x42, 0x24, 0x07, 0xa2, 0x02, 0x3c, 0x00, - 0x00, 0x43, 0x90, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x63, 0x30, 0x01, 0x00, - 0x02, 0x24, 0x04, 0x10, 0x02, 0x02, 0x24, 0x18, 0x62, 0x00, 0x0c, 0x00, 0x62, - 0x10, 0x00, 0x40, 0x02, 0x24, 0x04, 0x10, 0x02, 0x02, 0x20, 0x00, 0x42, 0x24, - 0x74, 0x88, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x25, 0x88, 0x22, 0x02, 0x21, - 0x20, 0x60, 0x02, 0x31, 0xcf, 0x03, 0x0c, 0x21, 0x28, 0x00, 0x02, 0xd8, 0x88, - 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x42, - 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x42, 0x30, 0x0c, 0x00, 0x40, 0x14, - 0x00, 0x40, 0x02, 0x24, 0x04, 0x10, 0x02, 0x02, 0x20, 0x00, 0x42, 0x24, 0x74, - 0x88, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x25, 0x88, 0x22, 0x02, 0x21, 0x20, - 0x60, 0x02, 0x31, 0xcf, 0x03, 0x0c, 0x21, 0x28, 0x00, 0x02, 0xec, 0x88, 0x84, - 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x14, 0x90, 0x83, 0x93, - 0x02, 0x00, 0x02, 0x24, 0x06, 0x00, 0x62, 0x14, 0x04, 0x00, 0x02, 0x24, 0x07, - 0xa2, 0x03, 0x3c, 0x30, 0x00, 0x02, 0x24, 0x00, 0x00, 0x62, 0xa0, 0x14, 0x90, - 0x83, 0x93, 0x04, 0x00, 0x02, 0x24, 0x05, 0x00, 0x62, 0x14, 0x01, 0x00, 0x02, - 0x3c, 0x07, 0xa2, 0x03, 0x3c, 0x0c, 0x00, 0x02, 0x24, 0x00, 0x00, 0x62, 0xa0, - 0x01, 0x00, 0x02, 0x3c, 0x9f, 0x86, 0x42, 0x34, 0xff, 0xff, 0x42, 0x24, 0xff, - 0xff, 0x40, 0x14, 0xff, 0xff, 0x42, 0x24, 0x07, 0xa2, 0x02, 0x3c, 0x00, 0x00, - 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x42, 0x30, 0x07, 0x10, 0x02, - 0x02, 0x01, 0x00, 0x42, 0x30, 0x0c, 0x00, 0x40, 0x10, 0x00, 0x40, 0x02, 0x24, - 0x04, 0x10, 0x02, 0x02, 0x20, 0x00, 0x42, 0x24, 0x74, 0x88, 0x84, 0x27, 0x3e, - 0xc4, 0x03, 0x0c, 0x25, 0x88, 0x22, 0x02, 0x21, 0x20, 0x60, 0x02, 0x31, 0xcf, - 0x03, 0x0c, 0x21, 0x28, 0x00, 0x02, 0x00, 0x89, 0x84, 0x27, 0x3e, 0xc4, 0x03, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x42, 0x96, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x42, 0x30, 0x0c, 0x00, 0x40, 0x10, 0x00, 0x40, 0x02, 0x24, 0x04, - 0x10, 0x02, 0x02, 0x20, 0x00, 0x42, 0x24, 0x74, 0x88, 0x84, 0x27, 0x3e, 0xc4, - 0x03, 0x0c, 0x25, 0x88, 0x22, 0x02, 0x21, 0x20, 0x60, 0x02, 0x31, 0xcf, 0x03, - 0x0c, 0x21, 0x28, 0x00, 0x02, 0xc4, 0x88, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x20, 0x02, 0x20, 0x00, 0xbf, 0x8f, 0x1c, - 0x00, 0xb3, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, - 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x28, 0x00, 0xbd, 0x27, 0xd0, 0xff, 0xbd, - 0x27, 0x2c, 0x00, 0xbf, 0xaf, 0x28, 0x00, 0xb6, 0xaf, 0x24, 0x00, 0xb5, 0xaf, - 0x20, 0x00, 0xb4, 0xaf, 0x1c, 0x00, 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, - 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x90, 0x00, 0x00, 0x21, 0x88, - 0x00, 0x00, 0x00, 0xa2, 0x16, 0x3c, 0x02, 0x00, 0x13, 0x24, 0x12, 0x00, 0x15, - 0x24, 0xa5, 0x00, 0x14, 0x24, 0x80, 0x11, 0x11, 0x00, 0x40, 0x00, 0x42, 0x24, - 0x21, 0x18, 0x56, 0x00, 0x21, 0x00, 0x02, 0x24, 0x18, 0x00, 0x62, 0xa0, 0x1c, - 0x00, 0x60, 0xa0, 0x11, 0x00, 0x02, 0x24, 0x21, 0x00, 0x62, 0xa0, 0x30, 0x00, - 0x60, 0xa0, 0x31, 0x00, 0x60, 0xa0, 0x61, 0x00, 0x02, 0x24, 0x2d, 0x00, 0x62, - 0xa0, 0x29, 0x00, 0x73, 0xa0, 0x34, 0x00, 0x60, 0xa0, 0x2c, 0x00, 0x60, 0xa0, - 0x10, 0x00, 0x73, 0xa0, 0x11, 0x00, 0x60, 0xa0, 0x18, 0x00, 0x73, 0xa0, 0x04, - 0x00, 0x62, 0x94, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x42, 0x30, 0x02, 0x00, - 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0xa4, 0x18, 0x00, 0x75, - 0xa0, 0x01, 0x00, 0x02, 0x24, 0x10, 0x00, 0x62, 0xa0, 0x08, 0x00, 0x02, 0x24, - 0x14, 0x00, 0x62, 0xa0, 0x18, 0x00, 0x75, 0xa0, 0x21, 0x20, 0x00, 0x00, 0x04, - 0x00, 0x62, 0x94, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x30, 0x12, 0x00, - 0x40, 0x14, 0x21, 0x80, 0x00, 0x00, 0x21, 0x00, 0x62, 0x90, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x42, 0x30, 0x05, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x62, 0x90, 0x00, 0x00, 0x00, 0x00, 0x31, 0xd1, 0x03, 0x08, 0x01, - 0x00, 0x42, 0x34, 0x21, 0x00, 0x62, 0x90, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, - 0x42, 0x30, 0x21, 0x00, 0x62, 0xa0, 0x01, 0x00, 0x84, 0x24, 0x32, 0x00, 0x82, - 0x28, 0xeb, 0xff, 0x40, 0x14, 0x21, 0x80, 0x00, 0x00, 0x04, 0x00, 0x62, 0x94, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x30, 0x04, 0x00, 0x40, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x94, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, - 0x50, 0x30, 0x17, 0x00, 0x14, 0x12, 0x00, 0x40, 0x02, 0x24, 0x04, 0x10, 0x22, - 0x02, 0x20, 0x00, 0x42, 0x24, 0x74, 0x88, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, - 0x25, 0x90, 0x42, 0x02, 0x84, 0x87, 0x84, 0x27, 0x10, 0x90, 0x85, 0x8f, 0x3e, - 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x90, 0x87, 0x84, 0x27, 0x3e, 0xc4, - 0x03, 0x0c, 0x21, 0x28, 0x20, 0x02, 0x1c, 0x89, 0x84, 0x27, 0x3e, 0xc4, 0x03, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x48, 0x89, 0x84, 0x27, 0xa5, 0x00, 0x05, 0x24, - 0x3e, 0xc4, 0x03, 0x0c, 0x21, 0x30, 0x00, 0x02, 0x68, 0x88, 0x84, 0x27, 0x3e, - 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x31, 0x26, 0x02, 0x00, - 0x22, 0x2a, 0xa9, 0xff, 0x40, 0x14, 0x80, 0x11, 0x11, 0x00, 0x21, 0x10, 0x40, - 0x02, 0x2c, 0x00, 0xbf, 0x8f, 0x28, 0x00, 0xb6, 0x8f, 0x24, 0x00, 0xb5, 0x8f, - 0x20, 0x00, 0xb4, 0x8f, 0x1c, 0x00, 0xb3, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, - 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x30, 0x00, - 0xbd, 0x27, 0x88, 0xff, 0xbd, 0x27, 0x74, 0x00, 0xbf, 0xaf, 0x70, 0x00, 0xbe, - 0xaf, 0x6c, 0x00, 0xb7, 0xaf, 0x68, 0x00, 0xb6, 0xaf, 0x64, 0x00, 0xb5, 0xaf, - 0x60, 0x00, 0xb4, 0xaf, 0x5c, 0x00, 0xb3, 0xaf, 0x58, 0x00, 0xb2, 0xaf, 0x54, - 0x00, 0xb1, 0xaf, 0x50, 0x00, 0xb0, 0xaf, 0x21, 0x90, 0x80, 0x00, 0x10, 0x00, - 0xa5, 0xaf, 0x18, 0x00, 0xa6, 0xaf, 0xff, 0xff, 0x02, 0x24, 0x0a, 0x00, 0xa2, - 0x14, 0x20, 0x00, 0xa7, 0xaf, 0x88, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0xed, 0xca, 0x03, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x60, 0x89, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x16, 0x24, 0x00, 0xa2, 0x11, 0x3c, 0xa5, 0x00, 0x10, - 0x24, 0xa3, 0xd5, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x80, 0x11, 0x16, 0x00, - 0x21, 0x10, 0x51, 0x00, 0x68, 0x00, 0x50, 0xa0, 0x68, 0x00, 0x42, 0x90, 0x00, - 0x00, 0x00, 0x00, 0x21, 0x30, 0x40, 0x00, 0x04, 0x00, 0xd0, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x78, 0x89, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x21, 0x28, 0xc0, - 0x02, 0xff, 0xff, 0xd6, 0x26, 0xf1, 0xff, 0xc1, 0x06, 0x10, 0x00, 0x02, 0x24, - 0x30, 0x00, 0xa0, 0xaf, 0x14, 0x90, 0x83, 0x93, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x00, 0x62, 0x14, 0x21, 0xa8, 0x00, 0x00, 0xf2, 0xd0, 0x03, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x21, 0xa8, 0x40, 0x00, 0x21, 0x98, 0x40, 0x02, 0x21, 0xb0, 0x00, - 0x00, 0x21, 0x48, 0x00, 0x00, 0x01, 0x00, 0x29, 0x39, 0x38, 0x00, 0xa9, 0xaf, - 0x18, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x13, 0x01, 0x21, - 0x10, 0x56, 0x00, 0x01, 0x10, 0x42, 0x28, 0x04, 0x00, 0x40, 0x14, 0x00, 0x10, - 0x02, 0x24, 0x23, 0x10, 0x56, 0x00, 0xad, 0xd1, 0x03, 0x08, 0x23, 0xb8, 0x53, - 0x00, 0x18, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x33, 0x01, - 0x21, 0xb8, 0x56, 0x00, 0x3c, 0x00, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x8c, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x62, 0x02, 0x37, 0x00, - 0x40, 0x10, 0xff, 0xff, 0x09, 0x24, 0x10, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x0b, 0x00, 0x09, 0x15, 0x40, 0x10, 0x13, 0x00, 0x21, 0x10, 0x53, 0x00, - 0x80, 0x10, 0x02, 0x00, 0x0f, 0x80, 0x03, 0x3c, 0x64, 0x5d, 0x63, 0x24, 0x0f, - 0x80, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0x08, 0x5e, 0x22, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x29, 0x00, 0x43, 0x10, 0x40, 0x10, 0x13, 0x00, 0x21, 0x10, 0x53, - 0x00, 0x80, 0x10, 0x02, 0x00, 0x0f, 0x80, 0x03, 0x3c, 0x14, 0x5d, 0x63, 0x24, - 0x0f, 0x80, 0x04, 0x3c, 0x21, 0x20, 0x82, 0x00, 0x08, 0x5e, 0x84, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x09, 0x00, 0x83, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, - 0x02, 0x3c, 0x4c, 0x5d, 0x42, 0x24, 0x05, 0x00, 0x82, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x0f, 0x80, 0x02, 0x3c, 0x30, 0x5d, 0x42, 0x24, 0x05, 0x00, 0x82, 0x14, - 0x40, 0x10, 0x13, 0x00, 0x8c, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x13, - 0x00, 0x00, 0x15, 0x40, 0x10, 0x13, 0x00, 0x21, 0x10, 0x53, 0x00, 0x80, 0x10, - 0x02, 0x00, 0x0f, 0x80, 0x03, 0x3c, 0x21, 0x18, 0x62, 0x00, 0x0c, 0x5e, 0x63, - 0x8c, 0x50, 0x8b, 0x82, 0x27, 0x07, 0x00, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x58, 0x8b, 0x82, 0x27, 0x04, 0x00, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0x60, - 0x8b, 0x82, 0x27, 0x1b, 0x00, 0x62, 0x14, 0xff, 0xff, 0x08, 0x24, 0x10, 0x00, - 0xa9, 0x8f, 0xff, 0xff, 0x08, 0x24, 0x1b, 0x00, 0x28, 0x15, 0x00, 0x00, 0x00, - 0x00, 0x10, 0x00, 0xa9, 0x8f, 0xff, 0xff, 0x08, 0x24, 0x11, 0x03, 0x28, 0x11, - 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x22, 0x29, 0x0a, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, - 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, - 0x00, 0xed, 0xca, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x89, 0x84, 0x27, - 0x3e, 0xc4, 0x03, 0x0c, 0x21, 0x28, 0x60, 0x02, 0xfa, 0xc1, 0x03, 0x0c, 0x01, - 0x04, 0x04, 0x24, 0x16, 0xd5, 0x03, 0x08, 0x21, 0x10, 0x00, 0x00, 0x10, 0x00, - 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x28, 0x11, 0x00, 0x00, 0x00, - 0x00, 0x88, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x20, 0x11, - 0x00, 0x00, 0x00, 0x00, 0xed, 0xca, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x60, - 0x89, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x90, 0x87, - 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x21, 0x28, 0xc0, 0x02, 0xe0, 0x89, 0x84, - 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x21, 0x28, 0x60, 0x02, 0x28, 0x00, 0xb7, 0xaf, - 0x30, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x08, 0x00, 0x01, - 0xa0, 0x09, 0x3c, 0x00, 0x02, 0x29, 0x35, 0x21, 0xa0, 0x22, 0x01, 0xff, 0x1f, - 0x08, 0x3c, 0xff, 0xff, 0x08, 0x35, 0x24, 0xa0, 0x88, 0x02, 0x00, 0xa0, 0x09, - 0x3c, 0xff, 0xff, 0xf0, 0x26, 0x0f, 0x00, 0x00, 0x06, 0x25, 0xa0, 0x89, 0x02, - 0x20, 0x00, 0xa8, 0x8f, 0xff, 0xff, 0x09, 0x24, 0x04, 0x00, 0x09, 0x11, 0x21, - 0x18, 0x90, 0x02, 0x20, 0x00, 0xa2, 0x93, 0x2b, 0xd2, 0x03, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x26, 0x10, 0x17, 0x02, 0x40, 0x00, 0x42, 0x34, 0x7f, 0x00, 0x42, - 0x30, 0x00, 0x00, 0x62, 0xa0, 0xff, 0xff, 0x10, 0x26, 0xf3, 0xff, 0x01, 0x06, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x08, 0x39, 0x30, 0x00, 0xa8, 0xaf, 0x00, 0x13, 0x08, 0x00, 0x01, 0xa0, - 0x09, 0x3c, 0x00, 0x02, 0x29, 0x35, 0x21, 0xa0, 0x22, 0x01, 0xff, 0x1f, 0x08, - 0x3c, 0xff, 0xff, 0x08, 0x35, 0x24, 0xa0, 0x88, 0x02, 0x00, 0xa0, 0x09, 0x3c, - 0x28, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x10, 0x25, 0x06, - 0x00, 0x00, 0x06, 0x25, 0xa0, 0x89, 0x02, 0x21, 0x10, 0x90, 0x02, 0x00, 0x00, - 0x40, 0xa0, 0xff, 0xff, 0x10, 0x26, 0xfd, 0xff, 0x01, 0x06, 0x21, 0x10, 0x90, - 0x02, 0xa3, 0xd5, 0x03, 0x0c, 0x63, 0x00, 0x10, 0x24, 0x01, 0xa0, 0x04, 0x3c, - 0x21, 0x48, 0x00, 0x00, 0x01, 0x00, 0x22, 0x39, 0x40, 0x18, 0x02, 0x00, 0x21, - 0x18, 0x62, 0x00, 0x80, 0x18, 0x03, 0x00, 0x21, 0x18, 0x83, 0x00, 0x02, 0x00, - 0x62, 0x24, 0x02, 0x00, 0x82, 0xa4, 0x04, 0x00, 0x80, 0xac, 0x08, 0x00, 0x80, - 0xa4, 0x0a, 0x00, 0x80, 0xa0, 0x02, 0x00, 0x84, 0x24, 0x02, 0x00, 0x64, 0xa4, - 0x04, 0x00, 0x60, 0xac, 0x08, 0x00, 0x60, 0xa4, 0x0a, 0x00, 0x60, 0xa0, 0x01, - 0xa0, 0x04, 0x3c, 0x00, 0x01, 0x84, 0x34, 0x38, 0x00, 0xa8, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x18, 0x08, 0x00, 0x21, 0x18, 0x68, 0x00, 0x80, 0x18, 0x03, - 0x00, 0x21, 0x18, 0x83, 0x00, 0x02, 0x00, 0x62, 0x24, 0x02, 0x00, 0x82, 0xa4, - 0x04, 0x00, 0x80, 0xac, 0x08, 0x00, 0x80, 0xa4, 0x0a, 0x00, 0x80, 0xa0, 0x02, - 0x00, 0x84, 0x24, 0x02, 0x00, 0x64, 0xa4, 0x04, 0x00, 0x74, 0xac, 0x08, 0x00, - 0x60, 0xa4, 0x0a, 0x00, 0x60, 0xa0, 0x30, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x29, 0x39, 0x30, 0x00, 0xa9, 0xaf, 0x00, 0x13, 0x09, 0x00, - 0x01, 0xa0, 0x08, 0x3c, 0x00, 0x02, 0x08, 0x35, 0x21, 0xa0, 0x02, 0x01, 0xff, - 0x1f, 0x09, 0x3c, 0xff, 0xff, 0x29, 0x35, 0x24, 0xa0, 0x89, 0x02, 0x00, 0xa0, - 0x08, 0x3c, 0x25, 0xa0, 0x88, 0x02, 0x21, 0x20, 0xc0, 0x02, 0x21, 0x28, 0x60, - 0x02, 0xd2, 0xd5, 0x03, 0x0c, 0x21, 0x30, 0x60, 0x02, 0xff, 0xff, 0x1e, 0x24, - 0x00, 0xa0, 0x03, 0x3c, 0xaa, 0x01, 0x63, 0x94, 0x00, 0xa0, 0x02, 0x3c, 0xaa, - 0x01, 0x42, 0x94, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x30, 0x0b, 0x00, - 0x43, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x12, 0x3c, 0x80, 0x01, 0x52, - 0x36, 0xff, 0xff, 0x71, 0x30, 0x10, 0xca, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x2a, 0x00, 0x42, 0x96, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x30, 0xfa, - 0xff, 0x51, 0x10, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x10, 0x26, 0xec, 0xff, - 0x1e, 0x16, 0x00, 0xa2, 0x03, 0x3c, 0x80, 0x11, 0x16, 0x00, 0x40, 0x00, 0x42, - 0x24, 0x21, 0x90, 0x43, 0x00, 0xc0, 0x11, 0x16, 0x00, 0x00, 0x01, 0x42, 0x24, - 0x21, 0x88, 0x43, 0x00, 0x68, 0x00, 0x20, 0xa2, 0xf1, 0x00, 0x02, 0x24, 0x20, - 0x00, 0x22, 0xa2, 0xa3, 0xd5, 0x03, 0x0c, 0x60, 0x00, 0x22, 0xa2, 0x21, 0x20, - 0xc0, 0x02, 0x21, 0x28, 0x60, 0x02, 0xd2, 0xd5, 0x03, 0x0c, 0x21, 0x30, 0x60, - 0x02, 0x68, 0x00, 0x20, 0xa2, 0x8c, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x20, 0x11, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x42, 0x92, 0x00, - 0x00, 0x00, 0x00, 0x03, 0x00, 0x42, 0x34, 0x20, 0x00, 0x42, 0xa2, 0x40, 0x10, - 0x13, 0x00, 0x21, 0x10, 0x53, 0x00, 0x80, 0x10, 0x02, 0x00, 0x0f, 0x80, 0x03, - 0x3c, 0x21, 0x18, 0x62, 0x00, 0x08, 0x5e, 0x63, 0x8c, 0x0f, 0x80, 0x02, 0x3c, - 0x14, 0x5d, 0x42, 0x24, 0x0d, 0x00, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0f, - 0x80, 0x02, 0x3c, 0x30, 0x5d, 0x42, 0x24, 0x09, 0x00, 0x62, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x0f, 0x80, 0x02, 0x3c, 0xd0, 0x5d, 0x42, 0x24, 0x05, 0x00, 0x62, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x02, 0x3c, 0xec, 0x5d, 0x42, 0x24, - 0x04, 0x00, 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x42, 0x92, 0x00, - 0x00, 0x00, 0x00, 0x2c, 0x00, 0x42, 0xa2, 0x14, 0x90, 0x82, 0x93, 0x00, 0x00, - 0x00, 0x00, 0x2b, 0x10, 0x02, 0x00, 0x8c, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x03, 0x2d, 0x24, 0x10, 0x43, 0x00, 0x06, 0x00, 0x40, 0x10, - 0x21, 0x20, 0x40, 0x02, 0x21, 0x28, 0xa0, 0x02, 0x21, 0x30, 0x60, 0x02, 0xdb, - 0xcf, 0x03, 0x0c, 0x21, 0x38, 0xc0, 0x02, 0x25, 0xa8, 0xa2, 0x02, 0x01, 0xa0, - 0x09, 0x3c, 0x00, 0x01, 0x29, 0x35, 0x02, 0x00, 0x23, 0x35, 0x02, 0x14, 0x03, - 0x00, 0x0c, 0x00, 0x22, 0xa2, 0x14, 0x00, 0x23, 0xa6, 0x38, 0x00, 0xa8, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x08, 0x00, 0x21, 0x10, 0x48, 0x00, 0x80, - 0x10, 0x02, 0x00, 0x21, 0x10, 0x22, 0x01, 0x02, 0x00, 0x42, 0x24, 0x10, 0x00, - 0x22, 0xa6, 0x00, 0x10, 0x02, 0x24, 0x18, 0x00, 0x22, 0xa6, 0x01, 0xa0, 0x09, - 0x3c, 0x02, 0x00, 0x23, 0x35, 0x02, 0x14, 0x03, 0x00, 0x4c, 0x00, 0x22, 0xa2, - 0x54, 0x00, 0x23, 0xa6, 0x50, 0x00, 0x23, 0xa6, 0x02, 0x00, 0x10, 0x24, 0x20, - 0x00, 0x30, 0xa2, 0x60, 0x00, 0x30, 0xa2, 0xff, 0xca, 0x03, 0x0c, 0xe8, 0x03, - 0x04, 0x24, 0x12, 0x00, 0x02, 0x24, 0x18, 0x00, 0x42, 0xa2, 0x18, 0x00, 0x50, - 0xa2, 0xff, 0xca, 0x03, 0x0c, 0xe8, 0x03, 0x04, 0x24, 0x20, 0x00, 0x02, 0x24, - 0x60, 0x00, 0x22, 0xa2, 0x04, 0x00, 0x42, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x40, 0x42, 0x30, 0x17, 0x00, 0x40, 0x14, 0x00, 0x40, 0x08, 0x24, 0x04, 0x10, - 0xc8, 0x02, 0x01, 0x00, 0x42, 0x24, 0x25, 0xa8, 0xa2, 0x02, 0x40, 0x10, 0x13, - 0x00, 0x21, 0x10, 0x53, 0x00, 0x80, 0x10, 0x02, 0x00, 0x0f, 0x80, 0x01, 0x3c, - 0x21, 0x08, 0x22, 0x00, 0x10, 0x5e, 0x22, 0x94, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xb5, 0x36, 0x74, 0x88, - 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, 0x60, - 0x02, 0x31, 0xcf, 0x03, 0x0c, 0x21, 0x28, 0xc0, 0x02, 0xec, 0x89, 0x84, 0x27, - 0xfc, 0xd4, 0x03, 0x08, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x42, 0x96, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x30, 0x17, 0x00, 0x40, 0x10, 0x00, 0x40, - 0x09, 0x24, 0x04, 0x10, 0xc9, 0x02, 0x02, 0x00, 0x42, 0x24, 0x25, 0xa8, 0xa2, - 0x02, 0x40, 0x10, 0x13, 0x00, 0x21, 0x10, 0x53, 0x00, 0x80, 0x10, 0x02, 0x00, - 0x0f, 0x80, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0x10, 0x5e, 0x22, 0x94, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, - 0xb5, 0x36, 0x74, 0x88, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x21, 0x20, 0x60, 0x02, 0x31, 0xcf, 0x03, 0x0c, 0x21, 0x28, 0xc0, 0x02, - 0xfc, 0x89, 0x84, 0x27, 0xfc, 0xd4, 0x03, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, - 0xa0, 0x03, 0x3c, 0x04, 0x00, 0x74, 0xac, 0x08, 0x00, 0x77, 0xa4, 0x81, 0x00, - 0x02, 0x24, 0x0a, 0x00, 0x62, 0xa0, 0x21, 0x40, 0x00, 0x00, 0x01, 0x00, 0x03, - 0x39, 0x40, 0x10, 0x03, 0x00, 0x21, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, - 0x01, 0xa0, 0x09, 0x3c, 0x21, 0x10, 0x22, 0x01, 0x02, 0x00, 0x42, 0x24, 0x54, - 0x00, 0x22, 0xa6, 0x60, 0x00, 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x42, 0x30, 0x02, 0x00, 0x40, 0x14, 0x02, 0x00, 0x02, 0x24, 0x60, 0x00, 0x22, - 0xa2, 0xfa, 0xc1, 0x03, 0x0c, 0x21, 0x20, 0x00, 0x00, 0x01, 0x00, 0x10, 0x24, - 0x00, 0xa0, 0x01, 0x3c, 0x80, 0x01, 0x30, 0xac, 0xfa, 0xc1, 0x03, 0x0c, 0x01, - 0x18, 0x04, 0x24, 0xff, 0xca, 0x03, 0x0c, 0x32, 0x00, 0x04, 0x24, 0x00, 0xa0, - 0x02, 0x3c, 0x80, 0x01, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x50, - 0x10, 0x00, 0x40, 0x08, 0x24, 0x04, 0x10, 0xc8, 0x02, 0x04, 0x00, 0x42, 0x24, - 0x25, 0xa8, 0xa2, 0x02, 0x40, 0x10, 0x13, 0x00, 0x21, 0x10, 0x53, 0x00, 0x80, - 0x10, 0x02, 0x00, 0x0f, 0x80, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0x10, 0x5e, - 0x22, 0x94, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x10, 0xb5, 0x36, 0x74, 0x88, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, 0x60, 0x02, 0x31, 0xcf, 0x03, 0x0c, 0x21, - 0x28, 0xc0, 0x02, 0x20, 0x00, 0x25, 0x92, 0x60, 0x00, 0x26, 0x92, 0x0c, 0x8a, - 0x84, 0x27, 0xff, 0x00, 0xa5, 0x30, 0x3e, 0xc4, 0x03, 0x0c, 0xff, 0x00, 0xc6, - 0x30, 0x20, 0x00, 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x42, 0x30, - 0x06, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x22, 0x92, 0x00, - 0x00, 0x00, 0x00, 0x30, 0x00, 0x42, 0x30, 0x04, 0x00, 0x40, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x24, 0x8a, 0x84, 0x27, 0x71, 0xd3, 0x03, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x3c, 0x8a, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x40, 0x10, 0x17, 0x00, 0x21, 0x10, 0x57, 0x00, 0x00, 0x11, 0x02, 0x00, 0x23, - 0x10, 0x57, 0x00, 0xc0, 0x10, 0x02, 0x00, 0x23, 0x10, 0x57, 0x00, 0xc0, 0x80, - 0x02, 0x00, 0x0c, 0x00, 0x00, 0x12, 0x00, 0x40, 0x09, 0x24, 0x04, 0x00, 0x42, - 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x42, 0x30, 0x04, 0x00, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x10, 0x26, 0xf9, 0xff, 0x00, 0x16, 0x00, - 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x16, 0x40, 0x11, 0x17, 0x00, 0x00, 0x40, - 0x09, 0x24, 0x04, 0x10, 0xc9, 0x02, 0x08, 0x00, 0x42, 0x24, 0x25, 0xa8, 0xa2, - 0x02, 0x40, 0x10, 0x13, 0x00, 0x21, 0x10, 0x53, 0x00, 0x80, 0x10, 0x02, 0x00, - 0x0f, 0x80, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0x10, 0x5e, 0x22, 0x94, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, - 0xb5, 0x36, 0x74, 0x88, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x21, 0x20, 0x60, 0x02, 0x31, 0xcf, 0x03, 0x0c, 0x21, 0x28, 0xc0, 0x02, - 0x58, 0x8a, 0x84, 0x27, 0xfc, 0xd4, 0x03, 0x08, 0x00, 0x00, 0x00, 0x00, 0x23, - 0x10, 0x57, 0x00, 0x80, 0x10, 0x02, 0x00, 0x21, 0x10, 0x57, 0x00, 0xc0, 0x80, - 0x02, 0x00, 0x12, 0x00, 0x00, 0x12, 0x01, 0xa0, 0x09, 0x3c, 0x38, 0x00, 0xa8, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x08, 0x00, 0x21, 0x10, 0x48, 0x00, - 0x80, 0x10, 0x02, 0x00, 0x00, 0x01, 0x29, 0x35, 0x21, 0x18, 0x49, 0x00, 0x0a, - 0x00, 0x62, 0x90, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x42, 0x30, 0x04, 0x00, - 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x10, 0x26, 0xf9, 0xff, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x16, 0x40, 0x10, 0x17, 0x00, - 0x00, 0x40, 0x08, 0x24, 0x04, 0x10, 0xc8, 0x02, 0x08, 0x00, 0x42, 0x24, 0x25, - 0xa8, 0xa2, 0x02, 0x40, 0x10, 0x13, 0x00, 0x21, 0x10, 0x53, 0x00, 0x80, 0x10, - 0x02, 0x00, 0x0f, 0x80, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0x10, 0x5e, 0x22, - 0x94, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x10, 0xb5, 0x36, 0x74, 0x88, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x21, 0x20, 0x60, 0x02, 0x31, 0xcf, 0x03, 0x0c, 0x21, 0x28, - 0xc0, 0x02, 0x70, 0x8a, 0x84, 0x27, 0xfc, 0xd4, 0x03, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x21, 0x10, 0x57, 0x00, 0xc0, 0x10, 0x02, 0x00, 0x21, 0x10, 0x57, 0x00, - 0x80, 0x80, 0x02, 0x00, 0x0c, 0x00, 0x00, 0x12, 0x00, 0x40, 0x09, 0x24, 0x00, - 0xa0, 0x02, 0x3c, 0x80, 0x01, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x10, 0x26, 0xf9, 0xff, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x16, 0xf1, 0x00, 0x02, 0x24, - 0x00, 0x40, 0x09, 0x24, 0x04, 0x10, 0xc9, 0x02, 0x10, 0x00, 0x42, 0x24, 0x25, - 0xa8, 0xa2, 0x02, 0x40, 0x10, 0x13, 0x00, 0x21, 0x10, 0x53, 0x00, 0x80, 0x10, - 0x02, 0x00, 0x0f, 0x80, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0x10, 0x5e, 0x22, - 0x94, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x10, 0xb5, 0x36, 0x74, 0x88, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x21, 0x20, 0x60, 0x02, 0x31, 0xcf, 0x03, 0x0c, 0x21, 0x28, - 0xc0, 0x02, 0x84, 0x8a, 0x84, 0x27, 0xfc, 0xd4, 0x03, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x20, 0x00, 0x22, 0xa2, 0x60, 0x00, 0x22, 0xa2, 0x21, 0x80, 0x00, 0x00, - 0x28, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x19, 0x21, - 0x88, 0x00, 0x00, 0xa8, 0x8a, 0x92, 0x27, 0x21, 0x10, 0x90, 0x02, 0x00, 0x00, - 0x42, 0x90, 0x20, 0x00, 0xa9, 0x8f, 0xff, 0xff, 0x08, 0x24, 0x05, 0x00, 0x28, - 0x11, 0xff, 0x00, 0x43, 0x30, 0x08, 0x00, 0x69, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x20, 0xd4, 0x03, 0x08, 0x01, 0x00, 0x10, 0x26, 0x26, 0x10, 0x17, 0x02, 0x40, - 0x00, 0x42, 0x34, 0x7f, 0x00, 0x42, 0x30, 0x17, 0x00, 0x62, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x20, 0x16, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x8a, 0x84, - 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x31, 0x26, - 0x08, 0x00, 0x22, 0x2a, 0x0e, 0x00, 0x40, 0x10, 0x21, 0x10, 0x90, 0x02, 0x00, - 0x00, 0x42, 0x90, 0x20, 0x00, 0xa9, 0x8f, 0xff, 0xff, 0x08, 0x24, 0x04, 0x00, - 0x28, 0x11, 0xff, 0x00, 0x45, 0x30, 0x20, 0x00, 0xa6, 0x8f, 0x1d, 0xd4, 0x03, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x26, 0x10, 0x17, 0x02, 0x40, 0x00, 0x42, 0x34, - 0x7f, 0x00, 0x46, 0x30, 0x3e, 0xc4, 0x03, 0x0c, 0x21, 0x20, 0x40, 0x02, 0x01, - 0x00, 0x10, 0x26, 0x28, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, - 0x09, 0x02, 0xd7, 0xff, 0x40, 0x14, 0x21, 0x10, 0x90, 0x02, 0x1c, 0x00, 0x20, - 0x12, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x8a, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0xd4, 0x8a, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x28, 0x00, 0xa5, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xb1, 0xca, - 0x03, 0x0c, 0x21, 0x20, 0x80, 0x02, 0xa4, 0x8a, 0x84, 0x27, 0x3e, 0xc4, 0x03, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x08, 0x24, 0x04, 0x10, 0xc8, 0x02, - 0x00, 0x08, 0x42, 0x24, 0x25, 0xa8, 0xa2, 0x02, 0x40, 0x10, 0x13, 0x00, 0x21, - 0x10, 0x53, 0x00, 0x80, 0x10, 0x02, 0x00, 0x0f, 0x80, 0x01, 0x3c, 0x21, 0x08, - 0x22, 0x00, 0x10, 0x5e, 0x22, 0x94, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xb5, 0x36, 0x30, 0x00, 0xa9, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x22, 0x39, 0x00, 0x13, 0x02, 0x00, 0x01, - 0xa0, 0x08, 0x3c, 0x00, 0x02, 0x08, 0x35, 0x21, 0xa0, 0x02, 0x01, 0xff, 0x1f, - 0x09, 0x3c, 0xff, 0xff, 0x29, 0x35, 0x24, 0xa0, 0x89, 0x02, 0x00, 0xa0, 0x08, - 0x3c, 0x25, 0xa0, 0x88, 0x02, 0x38, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x40, 0x10, 0x09, 0x00, 0x21, 0x10, 0x49, 0x00, 0x80, 0x10, 0x02, 0x00, 0x01, - 0xa0, 0x08, 0x3c, 0x00, 0x01, 0x08, 0x35, 0x21, 0x10, 0x48, 0x00, 0x08, 0x00, - 0x43, 0x94, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x63, 0x30, 0x28, 0x00, 0xa3, - 0xaf, 0x0a, 0x00, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x77, 0x14, - 0xff, 0x00, 0x50, 0x30, 0xfc, 0x00, 0x03, 0x32, 0x80, 0x00, 0x02, 0x24, 0x26, - 0x00, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x09, 0x24, 0x04, 0x10, - 0xc9, 0x02, 0x80, 0x00, 0x42, 0x24, 0x25, 0xa8, 0xa2, 0x02, 0x40, 0x10, 0x13, - 0x00, 0x21, 0x10, 0x53, 0x00, 0x80, 0x10, 0x02, 0x00, 0x0f, 0x80, 0x01, 0x3c, - 0x21, 0x08, 0x22, 0x00, 0x10, 0x5e, 0x22, 0x94, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xb5, 0x36, 0x74, 0x88, - 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, 0x60, - 0x02, 0x31, 0xcf, 0x03, 0x0c, 0x21, 0x28, 0xc0, 0x02, 0xdc, 0x8a, 0x84, 0x27, - 0x28, 0x00, 0xa5, 0x8f, 0x21, 0x30, 0xe0, 0x02, 0x3e, 0xc4, 0x03, 0x0c, 0x21, - 0x38, 0x00, 0x02, 0x21, 0x20, 0x80, 0x02, 0xb1, 0xca, 0x03, 0x0c, 0x21, 0x28, - 0xe0, 0x02, 0xa4, 0x8a, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x28, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0xe8, 0x02, - 0x03, 0x00, 0x40, 0x10, 0x21, 0x80, 0x00, 0x00, 0x28, 0x00, 0xb7, 0xaf, 0x21, - 0x80, 0x00, 0x00, 0x28, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, - 0x20, 0x19, 0x21, 0x88, 0x00, 0x00, 0x0c, 0x8b, 0x9e, 0x27, 0x08, 0x00, 0x12, - 0x24, 0x21, 0x10, 0x90, 0x02, 0x00, 0x00, 0x42, 0x90, 0x20, 0x00, 0xa8, 0x8f, - 0xff, 0xff, 0x09, 0x24, 0x05, 0x00, 0x09, 0x11, 0xff, 0x00, 0x43, 0x30, 0x08, - 0x00, 0x68, 0x14, 0x00, 0x00, 0x00, 0x00, 0xb8, 0xd4, 0x03, 0x08, 0x01, 0x00, - 0x10, 0x26, 0x26, 0x10, 0x17, 0x02, 0x40, 0x00, 0x42, 0x34, 0x7f, 0x00, 0x42, - 0x30, 0x1b, 0x00, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x16, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x8b, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x21, - 0x28, 0x00, 0x02, 0x01, 0x00, 0x31, 0x26, 0x08, 0x00, 0x22, 0x2a, 0x12, 0x00, - 0x40, 0x10, 0x21, 0x10, 0x90, 0x02, 0x00, 0x00, 0x42, 0x90, 0x20, 0x00, 0xa8, - 0x8f, 0xff, 0xff, 0x09, 0x24, 0x04, 0x00, 0x09, 0x11, 0xff, 0x00, 0x45, 0x30, - 0x20, 0x00, 0xa6, 0x8f, 0xb1, 0xd4, 0x03, 0x08, 0x00, 0x00, 0x00, 0x00, 0x26, - 0x10, 0x17, 0x02, 0x40, 0x00, 0x42, 0x34, 0x7f, 0x00, 0x46, 0x30, 0x3e, 0xc4, - 0x03, 0x0c, 0x21, 0x20, 0xc0, 0x03, 0x03, 0x00, 0x32, 0x12, 0x00, 0x00, 0x00, - 0x00, 0x8c, 0xca, 0x03, 0x0c, 0x20, 0x00, 0x04, 0x24, 0x01, 0x00, 0x10, 0x26, - 0x28, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x08, 0x02, 0xd3, - 0xff, 0x40, 0x14, 0x21, 0x10, 0x90, 0x02, 0x17, 0x00, 0x20, 0x12, 0x00, 0x40, - 0x09, 0x24, 0x04, 0x10, 0xc9, 0x02, 0x00, 0x01, 0x42, 0x24, 0x25, 0xa8, 0xa2, - 0x02, 0x40, 0x10, 0x13, 0x00, 0x21, 0x10, 0x53, 0x00, 0x80, 0x10, 0x02, 0x00, - 0x0f, 0x80, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0x10, 0x5e, 0x22, 0x94, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, - 0xb5, 0x36, 0x74, 0x88, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x21, 0x20, 0x60, 0x02, 0x31, 0xcf, 0x03, 0x0c, 0x21, 0x28, 0xc0, 0x02, - 0x18, 0x8b, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xfa, - 0xc1, 0x03, 0x0c, 0x21, 0x20, 0x00, 0x00, 0x01, 0x00, 0x02, 0x24, 0x00, 0xa0, - 0x01, 0x3c, 0x80, 0x01, 0x22, 0xac, 0xfa, 0xc1, 0x03, 0x0c, 0x01, 0x18, 0x04, - 0x24, 0x87, 0x13, 0x10, 0x24, 0xff, 0xff, 0x10, 0x26, 0xff, 0xff, 0x00, 0x16, - 0xff, 0xff, 0x10, 0x26, 0x01, 0x00, 0x10, 0x26, 0xfa, 0xc1, 0x03, 0x0c, 0x21, - 0x20, 0x00, 0x00, 0x00, 0xa0, 0x03, 0x3c, 0x80, 0x01, 0x63, 0x8c, 0x01, 0x00, - 0x02, 0x24, 0x17, 0x00, 0x62, 0x10, 0x00, 0x40, 0x08, 0x24, 0x04, 0x10, 0xc8, - 0x02, 0x40, 0x00, 0x42, 0x24, 0x25, 0xa8, 0xa2, 0x02, 0x40, 0x10, 0x13, 0x00, - 0x21, 0x10, 0x53, 0x00, 0x80, 0x10, 0x02, 0x00, 0x0f, 0x80, 0x01, 0x3c, 0x21, - 0x08, 0x22, 0x00, 0x10, 0x5e, 0x22, 0x94, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xb5, 0x36, 0x74, 0x88, 0x84, - 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, 0x60, 0x02, - 0x31, 0xcf, 0x03, 0x0c, 0x21, 0x28, 0xc0, 0x02, 0x2c, 0x8b, 0x84, 0x27, 0x3e, - 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x01, 0x3c, 0x80, 0x01, - 0x20, 0xac, 0x01, 0x00, 0xd6, 0x3a, 0x02, 0x00, 0xc0, 0x16, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x73, 0x26, 0x10, 0x00, 0xa9, 0x8f, 0xff, 0xff, 0x08, 0x24, - 0x05, 0x00, 0x28, 0x15, 0x2a, 0x10, 0x33, 0x01, 0x08, 0x8c, 0x82, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x24, 0x2a, 0x10, 0x53, 0x00, 0x92, 0xfc, - 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xa0, 0x16, 0x00, 0x00, 0x00, - 0x00, 0xe0, 0x86, 0x84, 0x27, 0x3e, 0xc4, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0xc1, 0x03, 0x0c, 0x01, 0x04, 0x04, 0x24, 0x21, 0x10, 0xa0, 0x02, 0x74, - 0x00, 0xbf, 0x8f, 0x70, 0x00, 0xbe, 0x8f, 0x6c, 0x00, 0xb7, 0x8f, 0x68, 0x00, - 0xb6, 0x8f, 0x64, 0x00, 0xb5, 0x8f, 0x60, 0x00, 0xb4, 0x8f, 0x5c, 0x00, 0xb3, - 0x8f, 0x58, 0x00, 0xb2, 0x8f, 0x54, 0x00, 0xb1, 0x8f, 0x50, 0x00, 0xb0, 0x8f, - 0x08, 0x00, 0xe0, 0x03, 0x78, 0x00, 0xbd, 0x27, 0xd8, 0xff, 0xbd, 0x27, 0x20, - 0x00, 0xbf, 0xaf, 0x1c, 0x00, 0xb1, 0xaf, 0x18, 0x00, 0xb0, 0xaf, 0x21, 0x88, - 0x80, 0x00, 0x01, 0x00, 0x22, 0x32, 0x06, 0x00, 0x40, 0x10, 0x21, 0x80, 0x00, - 0x00, 0x09, 0xcb, 0x03, 0x0c, 0x21, 0x20, 0x00, 0x00, 0x03, 0x00, 0x40, 0x10, - 0x02, 0x00, 0x22, 0x32, 0x01, 0x00, 0x10, 0x24, 0x02, 0x00, 0x22, 0x32, 0x0c, - 0x00, 0x40, 0x10, 0x01, 0x00, 0x02, 0x24, 0x10, 0x00, 0xa2, 0xaf, 0x00, 0xa0, - 0x04, 0x3c, 0x00, 0x10, 0x84, 0x34, 0x00, 0xa0, 0x05, 0x3c, 0xf0, 0x7f, 0xa5, - 0x34, 0x21, 0x30, 0x00, 0x00, 0xda, 0xcc, 0x03, 0x0c, 0x21, 0x38, 0x00, 0x00, - 0x03, 0x00, 0x40, 0x10, 0x04, 0x00, 0x22, 0x32, 0x02, 0x00, 0x10, 0x36, 0x04, - 0x00, 0x22, 0x32, 0x0b, 0x00, 0x40, 0x10, 0x01, 0x00, 0x02, 0x24, 0x10, 0x00, - 0xa0, 0xaf, 0x14, 0x00, 0xa2, 0xaf, 0x21, 0x20, 0x00, 0x00, 0xff, 0xff, 0x05, - 0x24, 0x00, 0x01, 0x06, 0x24, 0x65, 0xd1, 0x03, 0x0c, 0xff, 0xff, 0x07, 0x24, - 0x03, 0x00, 0x40, 0x10, 0x21, 0x10, 0x00, 0x02, 0x04, 0x00, 0x10, 0x36, 0x21, - 0x10, 0x00, 0x02, 0x20, 0x00, 0xbf, 0x8f, 0x1c, 0x00, 0xb1, 0x8f, 0x18, 0x00, - 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x28, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xa2, 0x02, 0x3c, 0x40, 0x00, 0x42, 0x34, 0x05, 0x00, 0x82, 0x14, 0x10, - 0x00, 0x0a, 0x24, 0x08, 0x00, 0x0a, 0x24, 0x00, 0x01, 0x02, 0x24, 0x5e, 0xd5, - 0x03, 0x08, 0x00, 0x04, 0x09, 0x24, 0x00, 0x02, 0x02, 0x24, 0x00, 0x08, 0x09, - 0x24, 0xff, 0xff, 0x19, 0x3c, 0x00, 0x10, 0x39, 0x37, 0x0f, 0x80, 0x18, 0x3c, - 0xe0, 0x5b, 0x18, 0x27, 0x05, 0xa2, 0x08, 0x3c, 0x25, 0x58, 0x42, 0x01, 0x27, - 0x70, 0x0b, 0x00, 0x27, 0x68, 0x02, 0x00, 0xe1, 0x00, 0x0f, 0x3c, 0x27, 0x60, - 0x09, 0x00, 0x00, 0x00, 0xa7, 0x94, 0x00, 0x00, 0x00, 0x00, 0x21, 0x18, 0xf9, - 0x00, 0x09, 0x00, 0x62, 0x2c, 0x2e, 0x00, 0x40, 0x10, 0x80, 0x10, 0x03, 0x00, - 0x21, 0x10, 0x58, 0x00, 0x00, 0x00, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x90, 0x82, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x97, 0xd5, 0x03, 0x08, 0x24, 0x10, 0xc2, 0x01, 0x10, 0x90, 0x82, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x24, 0x10, 0xa2, 0x01, 0x97, 0xd5, 0x03, 0x08, - 0x25, 0x10, 0x4a, 0x00, 0x10, 0x90, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x97, - 0xd5, 0x03, 0x08, 0x25, 0x10, 0x62, 0x01, 0x02, 0x00, 0xa3, 0x94, 0x00, 0x00, - 0xc2, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x62, 0x00, 0x12, 0x18, 0x00, - 0x00, 0x42, 0x10, 0x03, 0x00, 0x21, 0x10, 0x4f, 0x00, 0x1b, 0x00, 0x43, 0x00, - 0x02, 0x00, 0x60, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x07, 0x00, 0x12, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xd5, - 0x03, 0x08, 0x29, 0x00, 0x82, 0xa0, 0x10, 0x90, 0x82, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x97, 0xd5, 0x03, 0x08, 0x24, 0x10, 0x82, 0x01, 0x10, 0x90, 0x82, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x25, 0x10, 0x22, 0x01, 0x10, 0x90, 0x82, 0xaf, 0x00, - 0x00, 0x02, 0xa5, 0x68, 0xd5, 0x03, 0x08, 0x04, 0x00, 0xa5, 0x24, 0x21, 0x18, - 0x87, 0x00, 0x02, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, - 0xa0, 0x68, 0xd5, 0x03, 0x08, 0x04, 0x00, 0xa5, 0x24, 0x08, 0x00, 0xe0, 0x03, - 0x00, 0x00, 0x00, 0x00, 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x00, - 0xa2, 0x04, 0x3c, 0x0f, 0x80, 0x05, 0x3c, 0x50, 0x5c, 0xa5, 0x24, 0x54, 0xd5, - 0x03, 0x0c, 0x21, 0x30, 0x00, 0x00, 0x00, 0xa2, 0x04, 0x3c, 0x40, 0x00, 0x84, - 0x34, 0x0f, 0x80, 0x05, 0x3c, 0xa8, 0x5c, 0xa5, 0x24, 0x54, 0xd5, 0x03, 0x0c, - 0x21, 0x30, 0x00, 0x00, 0x00, 0xa2, 0x04, 0x3c, 0x00, 0x01, 0x84, 0x34, 0x0f, - 0x80, 0x05, 0x3c, 0xfc, 0x5c, 0xa5, 0x24, 0x54, 0xd5, 0x03, 0x0c, 0x21, 0x30, - 0x00, 0x00, 0x00, 0xa2, 0x04, 0x3c, 0x40, 0x01, 0x84, 0x34, 0x0f, 0x80, 0x05, - 0x3c, 0x08, 0x5d, 0xa5, 0x24, 0x54, 0xd5, 0x03, 0x0c, 0x21, 0x30, 0x00, 0x00, - 0x00, 0xa2, 0x04, 0x3c, 0x80, 0x00, 0x84, 0x34, 0x0f, 0x80, 0x05, 0x3c, 0xa8, - 0x5c, 0xa5, 0x24, 0x54, 0xd5, 0x03, 0x0c, 0x21, 0x30, 0x00, 0x00, 0x00, 0xa2, - 0x04, 0x3c, 0x80, 0x01, 0x84, 0x34, 0x0f, 0x80, 0x05, 0x3c, 0xfc, 0x5c, 0xa5, - 0x24, 0x54, 0xd5, 0x03, 0x0c, 0x21, 0x30, 0x00, 0x00, 0x00, 0xa2, 0x04, 0x3c, - 0xc0, 0x01, 0x84, 0x34, 0x0f, 0x80, 0x05, 0x3c, 0x08, 0x5d, 0xa5, 0x24, 0x54, - 0xd5, 0x03, 0x0c, 0x21, 0x30, 0x00, 0x00, 0x10, 0x00, 0xbf, 0x8f, 0x18, 0x00, - 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xd8, 0xff, 0xbd, - 0x27, 0x20, 0x00, 0xbf, 0xaf, 0x1c, 0x00, 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, - 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x98, 0x80, 0x00, 0x21, - 0x88, 0xa0, 0x00, 0x02, 0x00, 0x60, 0x16, 0x04, 0x00, 0x12, 0x24, 0x02, 0x00, - 0x12, 0x24, 0x4e, 0x00, 0xc2, 0x2c, 0x03, 0x00, 0x40, 0x10, 0x4e, 0x00, 0x22, - 0x2e, 0x05, 0x00, 0x40, 0x14, 0x40, 0x80, 0x11, 0x00, 0x0c, 0x8c, 0x84, 0x27, - 0x3a, 0xc0, 0x03, 0x0c, 0x6e, 0x02, 0x05, 0x24, 0x40, 0x80, 0x11, 0x00, 0x21, - 0x80, 0x11, 0x02, 0x80, 0x80, 0x10, 0x00, 0x0f, 0x80, 0x02, 0x3c, 0x08, 0x5e, - 0x42, 0x24, 0x21, 0x80, 0x02, 0x02, 0x80, 0x11, 0x13, 0x00, 0x00, 0xa2, 0x04, - 0x3c, 0x40, 0x00, 0x84, 0x34, 0x00, 0x00, 0x05, 0x8e, 0x04, 0x00, 0x06, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x54, 0xd5, 0x03, 0x0c, 0x21, 0x20, 0x44, 0x00, 0x08, - 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x40, 0x10, 0x05, 0xa2, - 0x03, 0x3c, 0x10, 0x90, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x25, 0x10, 0x42, - 0x02, 0x10, 0x90, 0x82, 0xaf, 0x04, 0xd6, 0x03, 0x08, 0x00, 0x00, 0x62, 0xa4, - 0x05, 0xa2, 0x02, 0x3c, 0x27, 0x18, 0x12, 0x00, 0x10, 0x90, 0x84, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x24, 0x18, 0x64, 0x00, 0x10, 0x90, 0x83, 0xaf, 0x00, 0x00, - 0x43, 0xa4, 0x20, 0x00, 0xbf, 0x8f, 0x1c, 0x00, 0xb3, 0x8f, 0x18, 0x00, 0xb2, - 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, - 0x28, 0x00, 0xbd, 0x27, 0x00, 0x00, 0x00, 0x00, 0x50, 0x0f, 0x0f, 0x80, 0xd4, - 0x10, 0x0f, 0x80, 0xd4, 0x10, 0x0f, 0x80, 0xd4, 0x10, 0x0f, 0x80, 0xd4, 0x10, - 0x0f, 0x80, 0xd4, 0x10, 0x0f, 0x80, 0xd4, 0x10, 0x0f, 0x80, 0xd4, 0x10, 0x0f, - 0x80, 0x80, 0x10, 0x0f, 0x80, 0xd4, 0x10, 0x0f, 0x80, 0xd4, 0x10, 0x0f, 0x80, - 0x88, 0x10, 0x0f, 0x80, 0x94, 0x10, 0x0f, 0x80, 0x94, 0x10, 0x0f, 0x80, 0x94, - 0x10, 0x0f, 0x80, 0x94, 0x10, 0x0f, 0x80, 0x94, 0x10, 0x0f, 0x80, 0x94, 0x10, - 0x0f, 0x80, 0x94, 0x10, 0x0f, 0x80, 0x94, 0x10, 0x0f, 0x80, 0x94, 0x10, 0x0f, - 0x80, 0xd4, 0x10, 0x0f, 0x80, 0xd4, 0x10, 0x0f, 0x80, 0xd4, 0x10, 0x0f, 0x80, - 0xd4, 0x10, 0x0f, 0x80, 0xd4, 0x10, 0x0f, 0x80, 0xd4, 0x10, 0x0f, 0x80, 0xd4, - 0x10, 0x0f, 0x80, 0xd4, 0x10, 0x0f, 0x80, 0xd4, 0x10, 0x0f, 0x80, 0xd4, 0x10, - 0x0f, 0x80, 0xd4, 0x10, 0x0f, 0x80, 0x60, 0x0f, 0x0f, 0x80, 0xd4, 0x10, 0x0f, - 0x80, 0xd4, 0x10, 0x0f, 0x80, 0xd4, 0x10, 0x0f, 0x80, 0xd4, 0x10, 0x0f, 0x80, - 0xd4, 0x10, 0x0f, 0x80, 0xd4, 0x10, 0x0f, 0x80, 0xd4, 0x10, 0x0f, 0x80, 0xd4, - 0x10, 0x0f, 0x80, 0xd4, 0x10, 0x0f, 0x80, 0xd4, 0x10, 0x0f, 0x80, 0xd4, 0x10, - 0x0f, 0x80, 0xd4, 0x10, 0x0f, 0x80, 0xd4, 0x10, 0x0f, 0x80, 0xd4, 0x10, 0x0f, - 0x80, 0xd4, 0x10, 0x0f, 0x80, 0xd4, 0x10, 0x0f, 0x80, 0xd4, 0x10, 0x0f, 0x80, - 0xd4, 0x10, 0x0f, 0x80, 0x2c, 0x10, 0x0f, 0x80, 0xd4, 0x10, 0x0f, 0x80, 0xd4, - 0x10, 0x0f, 0x80, 0xd4, 0x10, 0x0f, 0x80, 0xd4, 0x10, 0x0f, 0x80, 0xd4, 0x10, - 0x0f, 0x80, 0xd4, 0x10, 0x0f, 0x80, 0xd4, 0x10, 0x0f, 0x80, 0xd4, 0x10, 0x0f, - 0x80, 0xd4, 0x10, 0x0f, 0x80, 0x8c, 0x0f, 0x0f, 0x80, 0x78, 0x0f, 0x0f, 0x80, - 0xdc, 0x0f, 0x0f, 0x80, 0xd4, 0x10, 0x0f, 0x80, 0xd4, 0x10, 0x0f, 0x80, 0xd4, - 0x10, 0x0f, 0x80, 0xd4, 0x10, 0x0f, 0x80, 0xd4, 0x10, 0x0f, 0x80, 0xd4, 0x10, - 0x0f, 0x80, 0xd4, 0x10, 0x0f, 0x80, 0xbc, 0x10, 0x0f, 0x80, 0xd4, 0x10, 0x0f, - 0x80, 0xd4, 0x10, 0x0f, 0x80, 0xb4, 0x0f, 0x0f, 0x80, 0xd4, 0x10, 0x0f, 0x80, - 0xd4, 0x10, 0x0f, 0x80, 0xd4, 0x10, 0x0f, 0x80, 0x4c, 0x10, 0x0f, 0x80, 0x64, - 0x10, 0x0f, 0x80, 0xfc, 0x0f, 0x0f, 0x80, 0xd4, 0x10, 0x0f, 0x80, 0xd4, 0x10, - 0x0f, 0x80, 0x1c, 0x10, 0x0f, 0x80, 0xf8, 0x22, 0x0f, 0x80, 0xac, 0x27, 0x0f, - 0x80, 0xf8, 0x22, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, - 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, - 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, - 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xf8, 0x22, 0x0f, - 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, - 0xac, 0x27, 0x0f, 0x80, 0xf8, 0x22, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, - 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, - 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, - 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, - 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, - 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, - 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, - 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, - 0xac, 0x27, 0x0f, 0x80, 0xe4, 0x1e, 0x0f, 0x80, 0x70, 0x1f, 0x0f, 0x80, 0x7c, - 0x20, 0x0f, 0x80, 0x7c, 0x20, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, - 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, - 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, - 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xcc, 0x1b, 0x0f, 0x80, 0xac, - 0x27, 0x0f, 0x80, 0x40, 0x1c, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, - 0x0f, 0x80, 0xf8, 0x22, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xf8, 0x22, 0x0f, - 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xc4, 0x22, 0x0f, 0x80, - 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, - 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, - 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xf8, 0x22, 0x0f, 0x80, 0xac, 0x27, 0x0f, - 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, - 0xf8, 0x22, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, - 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, - 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, - 0x80, 0x40, 0x1c, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, - 0xf8, 0x22, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xf8, 0x22, 0x0f, 0x80, 0xac, - 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xc4, 0x22, 0x0f, 0x80, 0xac, 0x27, - 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, - 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, - 0xac, 0x27, 0x0f, 0x80, 0xf8, 0x22, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, - 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xf8, 0x22, - 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, - 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, - 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0x5c, - 0x25, 0x0f, 0x80, 0x6c, 0x25, 0x0f, 0x80, 0x38, 0x26, 0x0f, 0x80, 0x64, 0x26, - 0x0f, 0x80, 0x8c, 0x26, 0x0f, 0x80, 0xac, 0x27, 0x0f, 0x80, 0xac, 0x27, 0x0f, - 0x80, 0x5c, 0x27, 0x0f, 0x80, 0x74, 0x27, 0x0f, 0x80, 0xd8, 0x26, 0x0f, 0x80, - 0xfc, 0x26, 0x0f, 0x80, 0x28, 0x27, 0x0f, 0x80, 0xd8, 0x26, 0x0f, 0x80, 0x28, - 0x27, 0x0f, 0x80, 0x28, 0x27, 0x0f, 0x80, 0x28, 0x27, 0x0f, 0x80, 0xd8, 0x26, - 0x0f, 0x80, 0x28, 0x27, 0x0f, 0x80, 0x28, 0x27, 0x0f, 0x80, 0x28, 0x27, 0x0f, - 0x80, 0x28, 0x27, 0x0f, 0x80, 0x28, 0x27, 0x0f, 0x80, 0x28, 0x27, 0x0f, 0x80, - 0x28, 0x27, 0x0f, 0x80, 0xd8, 0x26, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x84, 0x56, 0x0f, 0x80, 0x00, 0x56, 0x0f, 0x80, 0x6c, 0x56, - 0x0f, 0x80, 0x6c, 0x56, 0x0f, 0x80, 0xcc, 0x55, 0x0f, 0x80, 0xf0, 0x55, 0x0f, - 0x80, 0xdc, 0x55, 0x0f, 0x80, 0x40, 0x56, 0x0f, 0x80, 0x50, 0x56, 0x0f, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, - 0x00, 0x34, 0x00, 0x00, 0x00, 0x41, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x0c, 0x00, - 0xe2, 0x00, 0x00, 0x00, 0x40, 0x00, 0x0c, 0x00, 0x74, 0x00, 0x04, 0x00, 0x6e, - 0x00, 0x04, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xe4, 0x00, 0x04, 0x00, 0x40, 0x00, - 0x0c, 0x00, 0xb4, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0c, - 0x00, 0xe8, 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x01, - 0x00, 0x00, 0x60, 0x01, 0x00, 0x00, 0xa0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, - 0x00, 0x29, 0x01, 0x03, 0x00, 0x69, 0x01, 0x03, 0x00, 0xa9, 0x01, 0x03, 0x00, - 0xe9, 0x01, 0x03, 0x00, 0x58, 0x00, 0x21, 0x00, 0x98, 0x00, 0x21, 0x00, 0x04, - 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, - 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x0c, 0x00, 0x28, 0x00, 0xcc, - 0x00, 0x29, 0x00, 0xbb, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x10, 0x00, - 0x11, 0x00, 0x80, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x18, 0x00, 0x01, 0x00, 0x18, - 0x00, 0x11, 0x00, 0x1c, 0x00, 0x87, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x20, 0x00, - 0x00, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x21, 0x00, 0x10, 0x00, 0x2c, 0x00, 0x00, - 0x00, 0x2d, 0x00, 0x00, 0x00, 0x29, 0x00, 0x02, 0x00, 0x30, 0x00, 0x12, 0x00, - 0x31, 0x00, 0x1f, 0x00, 0x34, 0x00, 0x0e, 0x00, 0x10, 0x00, 0xc0, 0x00, 0x11, - 0x00, 0x80, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x24, 0x00, - 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x28, 0x00, 0x7e, 0x00, 0x00, 0xf0, 0x00, - 0x00, 0x21, 0x00, 0x14, 0x00, 0x28, 0x00, 0x60, 0x00, 0x00, 0xf0, 0x00, 0x00, - 0x21, 0x00, 0x14, 0x00, 0x28, 0x00, 0x40, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x06, - 0xf0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2d, 0x00, - 0x41, 0x00, 0x01, 0xf0, 0x02, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, - 0x00, 0x06, 0xf0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, - 0x2d, 0x00, 0x45, 0x00, 0x01, 0xf0, 0x20, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, - 0xf0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2d, 0x00, - 0x00, 0x00, 0x05, 0xf0, 0x00, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, - 0x00, 0x20, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, - 0x04, 0xf0, 0x00, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x08, - 0xf0, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x2c, 0x00, 0x40, 0x00, 0x2d, 0x00, - 0x63, 0x00, 0x01, 0xf0, 0x08, 0x00, 0x04, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, - 0x00, 0x08, 0xf0, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x2c, 0x00, 0x60, 0x00, - 0x2d, 0x00, 0x43, 0x00, 0x01, 0xf0, 0x08, 0x00, 0x04, 0xf0, 0x00, 0x00, 0x00, - 0xf0, 0x00, 0x00, 0x08, 0xf0, 0x00, 0x00, 0x20, 0x00, 0x28, 0x00, 0x2c, 0x00, - 0x60, 0x00, 0x2d, 0x00, 0x44, 0x00, 0x01, 0xf0, 0x10, 0x00, 0x04, 0xf0, 0x00, - 0x00, 0x00, 0xf0, 0x00, 0x00, 0x08, 0xf0, 0x00, 0x00, 0x20, 0x00, 0xc0, 0x00, - 0x2c, 0x00, 0x60, 0x00, 0x2d, 0x00, 0x43, 0x00, 0x01, 0xf0, 0x08, 0x00, 0x04, - 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x08, 0xf0, 0x00, 0x00, 0x20, 0x00, - 0xc8, 0x00, 0x2c, 0x00, 0x60, 0x00, 0x2d, 0x00, 0x44, 0x00, 0x01, 0xf0, 0x10, - 0x00, 0x04, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x30, 0x5d, 0x0f, 0x80, - 0x48, 0x6d, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x5d, 0x0f, 0x80, 0x50, - 0x6d, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0xec, 0x5d, 0x0f, 0x80, 0x58, 0x6d, - 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x30, 0x5d, 0x0f, 0x80, 0x00, 0x6d, 0x0f, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x30, 0x5d, 0x0f, 0x80, 0x08, 0x6d, 0x0f, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x5d, 0x0f, 0x80, 0x10, 0x6d, 0x0f, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x30, 0x5d, 0x0f, 0x80, 0x20, 0x6d, 0x0f, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x30, 0x5d, 0x0f, 0x80, 0x28, 0x6d, 0x0f, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x30, 0x5d, 0x0f, 0x80, 0x30, 0x6d, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x30, 0x5d, 0x0f, 0x80, 0x40, 0x6d, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x30, - 0x5d, 0x0f, 0x80, 0x48, 0x6d, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x14, 0x5d, - 0x0f, 0x80, 0x50, 0x6d, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x14, 0x5d, 0x0f, - 0x80, 0x58, 0x6d, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x14, 0x5d, 0x0f, 0x80, - 0x60, 0x6d, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x14, 0x5d, 0x0f, 0x80, 0x68, - 0x6d, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x64, 0x5d, 0x0f, 0x80, 0x00, 0x6d, - 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x64, 0x5d, 0x0f, 0x80, 0x08, 0x6d, 0x0f, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x64, 0x5d, 0x0f, 0x80, 0x10, 0x6d, 0x0f, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x64, 0x5d, 0x0f, 0x80, 0x20, 0x6d, 0x0f, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x64, 0x5d, 0x0f, 0x80, 0x28, 0x6d, 0x0f, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x64, 0x5d, 0x0f, 0x80, 0x30, 0x6d, 0x0f, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x64, 0x5d, 0x0f, 0x80, 0x40, 0x6d, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x64, 0x5d, 0x0f, 0x80, 0x48, 0x6d, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x64, - 0x5d, 0x0f, 0x80, 0x50, 0x6d, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x64, 0x5d, - 0x0f, 0x80, 0x58, 0x6d, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x64, 0x5d, 0x0f, - 0x80, 0x60, 0x6d, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x64, 0x5d, 0x0f, 0x80, - 0x68, 0x6d, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x14, 0x5d, 0x0f, 0x80, 0x70, - 0x6d, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x14, 0x5d, 0x0f, 0x80, 0x78, 0x6d, - 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x14, 0x5d, 0x0f, 0x80, 0x80, 0x6d, 0x0f, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x64, 0x5d, 0x0f, 0x80, 0x70, 0x6d, 0x0f, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x64, 0x5d, 0x0f, 0x80, 0x78, 0x6d, 0x0f, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x64, 0x5d, 0x0f, 0x80, 0x80, 0x6d, 0x0f, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x64, 0x5d, 0x0f, 0x80, 0x18, 0x6d, 0x0f, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x64, 0x5d, 0x0f, 0x80, 0x48, 0x6d, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x64, 0x5d, 0x0f, 0x80, 0x00, 0x6d, 0x0f, 0x80, 0x01, 0x00, 0x00, 0x00, 0x64, - 0x5d, 0x0f, 0x80, 0x08, 0x6d, 0x0f, 0x80, 0x01, 0x00, 0x00, 0x00, 0x64, 0x5d, - 0x0f, 0x80, 0x10, 0x6d, 0x0f, 0x80, 0x01, 0x00, 0x00, 0x00, 0x64, 0x5d, 0x0f, - 0x80, 0x18, 0x6d, 0x0f, 0x80, 0x01, 0x00, 0x00, 0x00, 0x64, 0x5d, 0x0f, 0x80, - 0x20, 0x6d, 0x0f, 0x80, 0x01, 0x00, 0x00, 0x00, 0x64, 0x5d, 0x0f, 0x80, 0x28, - 0x6d, 0x0f, 0x80, 0x01, 0x00, 0x00, 0x00, 0x64, 0x5d, 0x0f, 0x80, 0x30, 0x6d, - 0x0f, 0x80, 0x01, 0x00, 0x00, 0x00, 0x64, 0x5d, 0x0f, 0x80, 0x38, 0x6d, 0x0f, - 0x80, 0x01, 0x00, 0x00, 0x00, 0x64, 0x5d, 0x0f, 0x80, 0x40, 0x6d, 0x0f, 0x80, - 0x01, 0x00, 0x00, 0x00, 0x64, 0x5d, 0x0f, 0x80, 0x48, 0x6d, 0x0f, 0x80, 0x01, - 0x00, 0x00, 0x00, 0x64, 0x5d, 0x0f, 0x80, 0x48, 0x6d, 0x0f, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x64, 0x5d, 0x0f, 0x80, 0x48, 0x6d, 0x0f, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x64, 0x5d, 0x0f, 0x80, 0x48, 0x6d, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x64, 0x5d, 0x0f, 0x80, 0x48, 0x6d, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x64, - 0x5d, 0x0f, 0x80, 0x48, 0x6d, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x64, 0x5d, - 0x0f, 0x80, 0x48, 0x6d, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x64, 0x5d, 0x0f, - 0x80, 0x48, 0x6d, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x64, 0x5d, 0x0f, 0x80, - 0x48, 0x6d, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x64, 0x5d, 0x0f, 0x80, 0x48, - 0x6d, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x64, 0x5d, 0x0f, 0x80, 0x48, 0x6d, - 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x64, 0x5d, 0x0f, 0x80, 0x48, 0x6d, 0x0f, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x64, 0x5d, 0x0f, 0x80, 0x48, 0x6d, 0x0f, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x64, 0x5d, 0x0f, 0x80, 0x48, 0x6d, 0x0f, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x64, 0x5d, 0x0f, 0x80, 0x48, 0x6d, 0x0f, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x64, 0x5d, 0x0f, 0x80, 0x48, 0x6d, 0x0f, 0x80, 0x00, 0x00, 0x00, - 0x00, 0xb4, 0x5d, 0x0f, 0x80, 0x48, 0x6d, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, - 0xec, 0x5d, 0x0f, 0x80, 0x48, 0x6d, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0xb4, - 0x5d, 0x0f, 0x80, 0x50, 0x6d, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0xec, 0x5d, - 0x0f, 0x80, 0x50, 0x6d, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x5d, 0x0f, - 0x80, 0x58, 0x6d, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0xec, 0x5d, 0x0f, 0x80, - 0x58, 0x6d, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x5d, 0x0f, 0x80, 0x60, - 0x6d, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0xec, 0x5d, 0x0f, 0x80, 0x60, 0x6d, - 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x98, 0x5d, 0x0f, 0x80, 0x88, 0x6d, 0x0f, - 0x80, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x5d, 0x0f, 0x80, 0x88, 0x6d, 0x0f, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x14, 0x5d, 0x0f, 0x80, 0x88, 0x6d, 0x0f, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x14, 0x5d, 0x0f, 0x80, 0x90, 0x6d, 0x0f, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x14, 0x5d, 0x0f, 0x80, 0x98, 0x6d, 0x0f, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x14, 0x5d, 0x0f, 0x80, 0xa0, 0x6d, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x4c, 0x5d, 0x0f, 0x80, 0xa8, 0x6d, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x30, - 0x5d, 0x0f, 0x80, 0x18, 0x6d, 0x0f, 0x80, 0x01, 0x00, 0x00, 0x00, 0x30, 0x5d, - 0x0f, 0x80, 0x30, 0x6d, 0x0f, 0x80, 0x01, 0x00, 0x00, 0x00, 0x7c, 0x5d, 0x0f, - 0x80, 0xb0, 0x6d, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x53, 0x79, 0x6e, - 0x63, 0x50, 0x6f, 0x72, 0x74, 0x20, 0x50, 0x4c, 0x58, 0x20, 0x44, 0x4d, 0x41, - 0x20, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, - 0x2e, 0x2e, 0x2e, 0x00, 0x00, 0x00, 0x25, 0x45, 0x20, 0x48, 0x6f, 0x73, 0x74, - 0x20, 0x74, 0x6f, 0x20, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x66, 0x65, 0x72, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x63, 0x6f, 0x6d, - 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x20, 0x00, 0x00, 0x00, 0x00, 0x25, 0x45, - 0x20, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x74, 0x6f, 0x20, 0x48, 0x6f, 0x73, - 0x74, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x20, 0x6e, 0x6f, - 0x74, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x20, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, - 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x00, 0x00, 0x00, - 0x00, 0x0a, 0x0d, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x20, 0x2d, 0x00, 0x00, 0x00, - 0x30, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x42, 0x54, 0x30, 0x31, 0x00, 0x00, 0x00, 0x00, 0x42, 0x54, - 0x30, 0x32, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0d, 0x44, 0x69, 0x67, 0x69, 0x42, - 0x6f, 0x61, 0x72, 0x64, 0x20, 0x50, 0x63, 0x69, 0x42, 0x49, 0x4f, 0x53, 0x00, - 0x0a, 0x0d, 0x52, 0x41, 0x4d, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x20, 0x25, - 0x30, 0x38, 0x78, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0d, 0x43, 0x50, 0x55, 0x20, - 0x74, 0x65, 0x73, 0x74, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, - 0x2e, 0x2e, 0x2e, 0x00, 0x00, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x00, 0x00, - 0x0a, 0x0d, 0x63, 0x6f, 0x64, 0x65, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, - 0x75, 0x6d, 0x20, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x2e, 0x00, 0x00, 0x25, 0x45, - 0x20, 0x62, 0x61, 0x64, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x20, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x3a, 0x20, 0x25, 0x30, 0x38, 0x78, 0x00, 0x00, - 0x0d, 0x0a, 0x00, 0x00, 0x4c, 0x6f, 0x77, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, - 0x64, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x48, 0x69, 0x67, 0x68, 0x20, 0x73, - 0x68, 0x61, 0x72, 0x65, 0x64, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x43, 0x6f, 0x6d, - 0x70, 0x6c, 0x65, 0x78, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x0a, 0x0d, - 0x00, 0x00, 0x00, 0x00, 0x42, 0x54, 0x30, 0x33, 0x00, 0x00, 0x00, 0x00, 0x42, - 0x54, 0x30, 0x34, 0x00, 0x00, 0x00, 0x00, 0x42, 0x54, 0x30, 0x35, 0x00, 0x00, - 0x00, 0x00, 0x2e, 0x2e, 0x2f, 0x73, 0x79, 0x6e, 0x63, 0x62, 0x69, 0x6f, 0x73, - 0x2e, 0x63, 0x00, 0x00, 0x00, 0x42, 0x49, 0x4f, 0x53, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x47, 0x4f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x20, 0x4f, 0x4b, 0x20, 0x00, - 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x47, 0x4f, - 0x4f, 0x44, 0x00, 0x00, 0x00, 0x00, 0x44, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, - 0x00, 0x57, 0x41, 0x49, 0x54, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x73, 0x73, 0x20, 0x25, 0x64, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x84, 0x63, 0x0f, 0x80, 0x2d, 0x2d, - 0x2d, 0x20, 0x50, 0x63, 0x69, 0x42, 0x49, 0x4f, 0x53, 0x20, 0x44, 0x69, 0x61, - 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x73, 0x20, 0x2d, 0x2d, 0x2d, 0x0a, - 0x0d, 0x00, 0x00, 0x00, 0x41, 0x20, 0x3d, 0x20, 0x41, 0x6c, 0x6c, 0x20, 0x74, - 0x65, 0x73, 0x74, 0x73, 0x0a, 0x0d, 0x00, 0x31, 0x20, 0x3d, 0x20, 0x54, 0x69, - 0x6d, 0x65, 0x72, 0x20, 0x74, 0x65, 0x73, 0x74, 0x0a, 0x0d, 0x00, 0x00, 0x00, - 0x00, 0x32, 0x20, 0x3d, 0x20, 0x52, 0x41, 0x4d, 0x20, 0x74, 0x65, 0x73, 0x74, - 0x0a, 0x0d, 0x00, 0x00, 0x33, 0x20, 0x3d, 0x20, 0x53, 0x79, 0x6e, 0x63, 0x20, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x20, 0x6c, 0x6f, 0x6f, 0x70, - 0x62, 0x61, 0x63, 0x6b, 0x20, 0x74, 0x65, 0x73, 0x74, 0x0a, 0x0d, 0x00, 0x00, - 0x00, 0x34, 0x20, 0x3d, 0x20, 0x53, 0x79, 0x6e, 0x63, 0x20, 0x65, 0x78, 0x74, - 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x20, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, - 0x6b, 0x20, 0x74, 0x65, 0x73, 0x74, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x74, 0x2f, - 0x5e, 0x54, 0x2f, 0x54, 0x20, 0x3d, 0x20, 0x48, 0x6f, 0x73, 0x74, 0x20, 0x73, - 0x69, 0x64, 0x65, 0x20, 0x20, 0x38, 0x2f, 0x31, 0x36, 0x2f, 0x33, 0x32, 0x2d, - 0x62, 0x69, 0x74, 0x20, 0x52, 0x41, 0x4d, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x2f, 0x73, 0x74, 0x6f, 0x70, 0x0a, 0x0d, 0x00, - 0x00, 0x00, 0x69, 0x20, 0x3d, 0x20, 0x63, 0x61, 0x72, 0x64, 0x2d, 0x74, 0x6f, - 0x2d, 0x68, 0x6f, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, - 0x70, 0x74, 0x20, 0x74, 0x65, 0x73, 0x74, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x64, - 0x5e, 0x44, 0x44, 0x29, 0x75, 0x6d, 0x70, 0x2c, 0x20, 0x72, 0x5e, 0x52, 0x52, - 0x29, 0x65, 0x61, 0x64, 0x2c, 0x20, 0x77, 0x5e, 0x57, 0x57, 0x29, 0x72, 0x69, - 0x74, 0x65, 0x2c, 0x20, 0x66, 0x5e, 0x46, 0x46, 0x29, 0x69, 0x6c, 0x6c, 0x20, - 0x52, 0x41, 0x4d, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x0d, 0x0a, 0x4e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x20, - 0x74, 0x6f, 0x20, 0x64, 0x6f, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x74, 0x65, 0x73, - 0x74, 0x73, 0x3a, 0x20, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x0d, 0x20, 0x20, - 0x54, 0x65, 0x73, 0x74, 0x73, 0x20, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, - 0x0a, 0x0d, 0x00, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x20, 0x70, 0x61, 0x73, 0x73, - 0x65, 0x73, 0x3a, 0x20, 0x25, 0x64, 0x0a, 0x0d, 0x00, 0x00, 0x20, 0x20, 0x54, - 0x65, 0x73, 0x74, 0x20, 0x25, 0x64, 0x3a, 0x20, 0x25, 0x64, 0x20, 0x70, 0x61, - 0x73, 0x73, 0x20, 0x25, 0x64, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, - 0x73, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x28, 0x70, 0x72, 0x65, - 0x73, 0x73, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x74, 0x6f, - 0x20, 0x73, 0x74, 0x6f, 0x70, 0x29, 0x0a, 0x00, 0x00, 0x0a, 0x0d, 0x20, 0x20, - 0x54, 0x69, 0x6d, 0x65, 0x72, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x73, 0x74, - 0x6f, 0x70, 0x70, 0x65, 0x64, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, - 0x54, 0x65, 0x73, 0x74, 0x20, 0x31, 0x3a, 0x20, 0x25, 0x64, 0x20, 0x70, 0x61, - 0x73, 0x73, 0x20, 0x25, 0x64, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, - 0x73, 0x0a, 0x0d, 0x00, 0x53, 0x74, 0x61, 0x72, 0x74, 0x20, 0x41, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x3a, 0x20, 0x00, 0x0a, 0x0d, 0x45, 0x6e, 0x64, 0x20, - 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x20, 0x00, 0x0a, 0x0d, 0x00, - 0x00, 0x0a, 0x0d, 0x20, 0x20, 0x52, 0x41, 0x4d, 0x20, 0x74, 0x65, 0x73, 0x74, - 0x20, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x0a, 0x0d, 0x00, 0x00, 0x20, - 0x20, 0x54, 0x65, 0x73, 0x74, 0x20, 0x32, 0x3a, 0x20, 0x25, 0x64, 0x20, 0x70, - 0x61, 0x73, 0x73, 0x20, 0x25, 0x64, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, - 0x65, 0x73, 0x0a, 0x0d, 0x00, 0x0a, 0x0d, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x20, - 0x6d, 0x6f, 0x64, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, - 0x28, 0x30, 0x2d, 0x25, 0x64, 0x29, 0x20, 0x6f, 0x72, 0x20, 0x63, 0x61, 0x72, - 0x72, 0x69, 0x61, 0x67, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, - 0x74, 0x6f, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x6d, - 0x6f, 0x64, 0x65, 0x73, 0x3a, 0x20, 0x00, 0x00, 0x41, 0x6c, 0x6c, 0x00, 0x0a, - 0x0d, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x74, - 0x6f, 0x20, 0x73, 0x65, 0x6e, 0x64, 0x2c, 0x20, 0x6f, 0x72, 0x20, 0x63, 0x61, - 0x72, 0x72, 0x69, 0x61, 0x67, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, - 0x20, 0x66, 0x6f, 0x72, 0x20, 0x30, 0x30, 0x2d, 0x46, 0x46, 0x3a, 0x20, 0x00, - 0x00, 0x00, 0x00, 0x0a, 0x0d, 0x20, 0x20, 0x28, 0x70, 0x72, 0x65, 0x73, 0x73, - 0x20, 0x61, 0x6e, 0x79, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x74, 0x6f, 0x20, 0x73, - 0x74, 0x6f, 0x70, 0x29, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x0a, 0x0d, 0x20, 0x20, - 0x53, 0x79, 0x6e, 0x63, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x73, 0x74, 0x6f, - 0x70, 0x70, 0x65, 0x64, 0x0a, 0x0d, 0x00, 0x20, 0x20, 0x54, 0x65, 0x73, 0x74, - 0x20, 0x25, 0x63, 0x3a, 0x20, 0x25, 0x64, 0x20, 0x70, 0x61, 0x73, 0x73, 0x20, - 0x25, 0x64, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x0a, 0x0d, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x61, 0x72, 0x64, 0x2d, 0x74, 0x6f, 0x2d, 0x68, - 0x6f, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, - 0x20, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x2e, 0x2e, 0x00, 0x00, 0x48, 0x65, 0x78, - 0x20, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x20, 0x00, 0x00, 0x00, - 0x25, 0x30, 0x38, 0x78, 0x3a, 0x20, 0x00, 0x00, 0x25, 0x30, 0x32, 0x78, 0x0a, - 0x0d, 0x00, 0x00, 0x25, 0x30, 0x34, 0x78, 0x0a, 0x0d, 0x00, 0x00, 0x25, 0x30, - 0x38, 0x78, 0x0a, 0x0d, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x31, 0x36, 0x00, - 0x00, 0x33, 0x32, 0x00, 0x00, 0x2d, 0x62, 0x69, 0x74, 0x20, 0x48, 0x65, 0x78, - 0x20, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x20, 0x00, 0x00, 0x00, 0x00, 0x48, - 0x65, 0x78, 0x20, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x3a, 0x20, 0x00, 0x00, - 0x00, 0x00, 0x50, 0x72, 0x65, 0x73, 0x73, 0x20, 0x27, 0x3f, 0x27, 0x20, 0x66, - 0x6f, 0x72, 0x20, 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, - 0x73, 0x20, 0x6d, 0x65, 0x6e, 0x75, 0x0a, 0x0d, 0x00, 0x00, 0xe8, 0x03, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x2e, - 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x2e, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x30, 0x32, 0x58, 0x20, 0x00, 0x00, 0x00, - 0x0d, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x20, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x2e, - 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x00, 0x00, 0x00, 0x25, 0x45, - 0x20, 0x63, 0x61, 0x6e, 0x27, 0x74, 0x20, 0x73, 0x65, 0x74, 0x20, 0x75, 0x70, - 0x20, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x20, 0x30, 0x0a, 0x0d, 0x00, 0x00, 0x00, - 0x25, 0x45, 0x20, 0x63, 0x61, 0x6e, 0x27, 0x74, 0x20, 0x73, 0x65, 0x74, 0x20, - 0x75, 0x70, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x20, 0x32, 0x0a, 0x0d, 0x00, - 0x00, 0x00, 0x25, 0x45, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x20, 0x32, 0x20, - 0x62, 0x61, 0x64, 0x20, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x0a, 0x0d, 0x00, 0x00, - 0x25, 0x45, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x20, 0x30, 0x20, 0x49, 0x4e, - 0x54, 0x20, 0x73, 0x74, 0x75, 0x63, 0x6b, 0x20, 0x6f, 0x6e, 0x0a, 0x0d, 0x00, - 0x00, 0x00, 0x25, 0x45, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x20, 0x30, 0x20, - 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x72, 0x75, 0x70, 0x74, 0x0a, 0x0d, 0x00, 0x25, 0x45, 0x20, 0x74, 0x69, - 0x6d, 0x65, 0x72, 0x20, 0x30, 0x20, 0x49, 0x4e, 0x54, 0x20, 0x77, 0x6f, 0x6e, - 0x27, 0x74, 0x20, 0x67, 0x6f, 0x20, 0x61, 0x77, 0x61, 0x79, 0x0a, 0x0d, 0x00, - 0x00, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x00, 0x00, 0x0d, 0x46, 0x50, 0x47, - 0x41, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x20, 0x74, 0x65, 0x73, 0x74, 0x2e, - 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x00, 0x00, 0x25, 0x45, - 0x20, 0x63, 0x61, 0x6e, 0x27, 0x74, 0x20, 0x73, 0x65, 0x74, 0x20, 0x75, 0x70, - 0x20, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x20, 0x31, 0x0a, 0x0d, 0x00, 0x00, 0x00, - 0x25, 0x45, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x20, 0x31, 0x20, 0x62, 0x61, - 0x64, 0x20, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x0a, 0x0d, 0x00, 0x00, 0x25, 0x45, - 0x20, 0x54, 0x25, 0x64, 0x20, 0x77, 0x72, 0x6f, 0x74, 0x65, 0x20, 0x25, 0x30, - 0x38, 0x78, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x25, 0x30, 0x38, 0x78, 0x20, - 0x61, 0x74, 0x20, 0x25, 0x30, 0x38, 0x78, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0xe8, - 0x68, 0x0f, 0x80, 0x0d, 0x52, 0x41, 0x4d, 0x20, 0x74, 0x65, 0x73, 0x74, 0x2e, - 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x25, 0x30, - 0x38, 0x78, 0x2d, 0x25, 0x30, 0x38, 0x78, 0x20, 0x00, 0x67, 0x70, 0x70, 0x3d, - 0x25, 0x30, 0x33, 0x78, 0x20, 0x00, 0x00, 0x00, 0x53, 0x25, 0x64, 0x20, 0x00, - 0x00, 0x00, 0x00, 0x6d, 0x6f, 0x64, 0x65, 0x20, 0x25, 0x64, 0x20, 0x00, 0x00, - 0x00, 0x00, 0x49, 0x4c, 0x4c, 0x45, 0x47, 0x41, 0x4c, 0x20, 0x4d, 0x4f, 0x44, - 0x45, 0x21, 0x3f, 0x0a, 0x0d, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, - 0x42, 0x41, 0x44, 0x20, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x21, 0x3f, - 0x0a, 0x0d, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x25, 0x64, - 0x6b, 0x62, 0x00, 0x00, 0x00, 0x00, 0x25, 0x64, 0x62, 0x00, 0x20, 0x4e, 0x52, - 0x5a, 0x20, 0x65, 0x78, 0x74, 0x00, 0x00, 0x00, 0x00, 0x20, 0x4e, 0x52, 0x5a, - 0x20, 0x63, 0x6c, 0x6b, 0x2f, 0x32, 0x00, 0x00, 0x20, 0x4e, 0x52, 0x5a, 0x20, - 0x31, 0x30, 0x20, 0x6d, 0x68, 0x7a, 0x00, 0x20, 0x4e, 0x52, 0x5a, 0x20, 0x63, - 0x6c, 0x6b, 0x2f, 0x33, 0x32, 0x00, 0x20, 0x4e, 0x52, 0x5a, 0x49, 0x20, 0x63, - 0x6c, 0x6b, 0x2f, 0x38, 0x00, 0x20, 0x4e, 0x52, 0x5a, 0x49, 0x20, 0x63, 0x6c, - 0x6b, 0x2f, 0x31, 0x36, 0x00, 0x00, 0x00, 0x00, 0x20, 0x46, 0x4d, 0x30, 0x20, - 0x63, 0x6c, 0x6b, 0x2f, 0x38, 0x00, 0x00, 0x20, 0x46, 0x4d, 0x30, 0x20, 0x63, - 0x6c, 0x6b, 0x2f, 0x31, 0x36, 0x00, 0x20, 0x4e, 0x52, 0x5a, 0x49, 0x20, 0x52, - 0x78, 0x20, 0x63, 0x6c, 0x6b, 0x2f, 0x38, 0x00, 0x00, 0x20, 0x55, 0x4e, 0x4b, - 0x4e, 0x4f, 0x57, 0x4e, 0x21, 0x3f, 0x00, 0x00, 0x20, 0x52, 0x53, 0x32, 0x33, - 0x32, 0x00, 0x00, 0x0a, 0x0d, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, - 0x00, 0x00, 0x25, 0x45, 0x00, 0x00, 0x20, 0x52, 0x54, 0x53, 0x2f, 0x43, 0x54, - 0x53, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6c, 0x6f, 0x77, 0x0a, 0x00, 0x00, 0x00, - 0x68, 0x63, 0x5f, 0x73, 0x74, 0x32, 0x33, 0x20, 0x3d, 0x20, 0x25, 0x78, 0x00, - 0x00, 0x00, 0x00, 0x20, 0x52, 0x54, 0x53, 0x2f, 0x43, 0x54, 0x53, 0x20, 0x6e, - 0x6f, 0x74, 0x20, 0x68, 0x69, 0x67, 0x68, 0x0a, 0x00, 0x00, 0x20, 0x44, 0x54, - 0x52, 0x2f, 0x44, 0x53, 0x52, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6c, 0x6f, 0x77, - 0x0a, 0x00, 0x00, 0x00, 0x20, 0x44, 0x54, 0x52, 0x2f, 0x44, 0x43, 0x44, 0x20, - 0x6e, 0x6f, 0x74, 0x20, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x0a, 0x00, 0x20, 0x44, - 0x54, 0x52, 0x2f, 0x44, 0x53, 0x52, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x68, 0x69, - 0x67, 0x68, 0x20, 0x0a, 0x00, 0x20, 0x44, 0x54, 0x52, 0x2f, 0x44, 0x43, 0x44, - 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x68, 0x69, 0x67, 0x68, 0x0a, 0x00, 0x00, 0x20, - 0x44, 0x54, 0x52, 0x2f, 0x44, 0x53, 0x52, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x6c, 0x6f, 0x77, 0x0a, 0x00, - 0x00, 0x56, 0x2e, 0x31, 0x31, 0x20, 0x53, 0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f, - 0x6e, 0x6f, 0x75, 0x73, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x20, 0x2d, 0x20, 0x42, - 0x61, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, - 0x76, 0x65, 0x64, 0x20, 0x00, 0x00, 0x0d, 0x0a, 0x77, 0x72, 0x6f, 0x74, 0x65, - 0x20, 0x25, 0x30, 0x32, 0x78, 0x2c, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x25, - 0x30, 0x32, 0x78, 0x00, 0x0d, 0x53, 0x79, 0x6e, 0x63, 0x20, 0x74, 0x65, 0x73, - 0x74, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x00, - 0x00, 0x00, 0x25, 0x45, 0x20, 0x53, 0x25, 0x64, 0x20, 0x68, 0x63, 0x5f, 0x69, - 0x64, 0x6c, 0x20, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x3a, 0x20, - 0x77, 0x72, 0x6f, 0x74, 0x65, 0x20, 0x30, 0x78, 0x41, 0x35, 0x20, 0x72, 0x65, - 0x61, 0x64, 0x20, 0x25, 0x30, 0x32, 0x78, 0x0a, 0x0d, 0x00, 0x00, 0x0d, 0x53, - 0x79, 0x6e, 0x63, 0x20, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, - 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x20, 0x25, 0x30, - 0x32, 0x64, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, - 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x74, 0x65, 0x73, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x00, 0x00, 0x6d, 0x6f, 0x64, 0x65, 0x20, 0x25, 0x30, 0x32, 0x64, 0x20, 0x00, - 0x00, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x20, 0x62, 0x75, - 0x73, 0x79, 0x0a, 0x00, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x20, - 0x62, 0x75, 0x73, 0x79, 0x0a, 0x00, 0x00, 0x20, 0x64, 0x73, 0x72, 0x30, 0x3d, - 0x25, 0x30, 0x32, 0x78, 0x20, 0x64, 0x73, 0x72, 0x31, 0x3d, 0x25, 0x30, 0x32, - 0x78, 0x00, 0x00, 0x00, 0x00, 0x20, 0x44, 0x4d, 0x41, 0x20, 0x62, 0x75, 0x66, - 0x66, 0x65, 0x72, 0x20, 0x6f, 0x76, 0x65, 0x72, 0x66, 0x6c, 0x6f, 0x77, 0x0a, - 0x00, 0x00, 0x00, 0x20, 0x73, 0x79, 0x6e, 0x63, 0x20, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x72, 0x75, 0x70, 0x74, 0x20, 0x73, 0x74, 0x75, 0x63, 0x6b, 0x20, 0x6f, - 0x6e, 0x0a, 0x00, 0x00, 0x00, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, - 0x74, 0x20, 0x6e, 0x65, 0x76, 0x65, 0x72, 0x20, 0x73, 0x74, 0x6f, 0x70, 0x73, - 0x0a, 0x00, 0x00, 0x20, 0x6e, 0x6f, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x72, - 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x0a, 0x0d, 0x00, 0x20, 0x73, 0x79, - 0x6e, 0x63, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x20, - 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x77, 0x6f, 0x72, 0x6b, - 0x0a, 0x0d, 0x00, 0x0a, 0x0d, 0x00, 0x00, 0x25, 0x30, 0x32, 0x78, 0x2d, 0x25, - 0x30, 0x32, 0x78, 0x20, 0x00, 0x00, 0x25, 0x45, 0x20, 0x62, 0x69, 0x74, 0x72, - 0x6f, 0x74, 0x20, 0x2d, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x68, 0x61, 0x73, - 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x0a, 0x0d, 0x00, 0x00, 0x64, - 0x61, 0x74, 0x61, 0x3a, 0x0a, 0x0d, 0x00, 0x20, 0x62, 0x61, 0x64, 0x20, 0x6d, - 0x73, 0x67, 0x3a, 0x20, 0x6c, 0x65, 0x6e, 0x3d, 0x25, 0x64, 0x2d, 0x25, 0x64, - 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x3d, 0x25, 0x30, 0x32, 0x78, 0x20, - 0x64, 0x61, 0x74, 0x61, 0x3a, 0x0a, 0x0d, 0x00, 0x0a, 0x0d, 0x25, 0x30, 0x34, - 0x78, 0x3a, 0x00, 0x25, 0x30, 0x32, 0x78, 0x2d, 0x25, 0x30, 0x32, 0x78, 0x00, - 0x00, 0x00, 0x20, 0x62, 0x61, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x69, - 0x6e, 0x20, 0x6d, 0x73, 0x67, 0x0a, 0x00, 0x00, 0x00, 0x20, 0x73, 0x79, 0x6e, - 0x63, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x20, 0x77, - 0x6f, 0x6e, 0x27, 0x74, 0x20, 0x67, 0x6f, 0x20, 0x61, 0x77, 0x61, 0x79, 0x0a, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x09, 0x00, 0x00, 0x14, 0x00, 0x00, - 0x00, 0xc0, 0x12, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x80, 0x25, 0x00, 0x00, - 0x28, 0x00, 0x00, 0x00, 0x40, 0x38, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, - 0x4b, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x64, 0x00, - 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x6f, 0xfa, 0x00, - 0x00, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x01, 0x00, 0xfa, 0x00, 0x00, 0x00, - 0x38, 0xc1, 0x01, 0x00, 0x2c, 0x01, 0x00, 0x00, 0x70, 0x82, 0x03, 0x00, 0x58, - 0x02, 0x00, 0x00, 0xe0, 0x04, 0x07, 0x00, 0xe8, 0x03, 0x00, 0x00, 0xa8, 0x0d, - 0x0e, 0x00, 0x40, 0x06, 0x00, 0x00, 0xc8, 0xc0, 0x12, 0x00, 0x40, 0x06, 0x00, - 0x00, 0x00, 0x20, 0x1c, 0x00, 0x40, 0x06, 0x00, 0x00, 0x00, 0x80, 0x25, 0x00, - 0x40, 0x06, 0x00, 0x00, 0x00, 0x40, 0x38, 0x00, 0x40, 0x06, 0x00, 0x00, 0x00, - 0x20, 0x1c, 0x00, 0xc4, 0x09, 0x00, 0x00, 0x00, 0x80, 0x25, 0x00, 0xa0, 0x0f, - 0x00, 0x00, 0x00, 0x40, 0x38, 0x00, 0x88, 0x13, 0x00, 0x00, 0x00, 0x80, 0x70, - 0x00, 0x88, 0x13, 0x00, 0x00, 0x80, 0x96, 0x98, 0x00, 0x88, 0x13, 0x00, 0x00, - 0x00, 0x40, 0x1f, 0x00, 0xa0, 0x0f, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x2e, - 0x2e, 0x2f, 0x73, 0x63, 0x61, 0x2e, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0xab, 0xfa, 0xee, 0x40, 0x28, 0x23, - 0x29, 0x62, 0x69, 0x6f, 0x73, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x68, 0x20, 0x20, - 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, - 0x33, 0x2e, 0x33, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, - 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, 0x31, - 0x36, 0x3a, 0x34, 0x32, 0x3a, 0x31, 0x37, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, - 0x29, 0x62, 0x69, 0x6f, 0x73, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x73, 0x20, 0x20, - 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, - 0x33, 0x2e, 0x31, 0x34, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, - 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x34, 0x2f, 0x32, 0x33, 0x20, - 0x31, 0x38, 0x3a, 0x34, 0x38, 0x3a, 0x34, 0x32, 0x20, 0x24, 0x20, 0x00, 0x40, - 0x28, 0x23, 0x29, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x72, 0x61, 0x6e, 0x67, 0x65, - 0x2e, 0x63, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x3a, 0x20, 0x31, 0x2e, 0x33, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, - 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x30, 0x39, 0x2f, 0x31, 0x36, - 0x20, 0x32, 0x33, 0x3a, 0x32, 0x32, 0x3a, 0x30, 0x35, 0x20, 0x24, 0x00, 0x40, - 0x28, 0x23, 0x29, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6d, 0x6b, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x3a, 0x20, 0x33, 0x2e, 0x32, 0x38, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, - 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x35, 0x2f, 0x33, - 0x30, 0x20, 0x31, 0x35, 0x3a, 0x30, 0x32, 0x3a, 0x30, 0x36, 0x20, 0x24, 0x00, - 0x40, 0x28, 0x23, 0x29, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x63, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, - 0x33, 0x2e, 0x32, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, - 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x30, 0x2f, 0x31, 0x30, 0x20, 0x32, - 0x33, 0x3a, 0x32, 0x37, 0x3a, 0x30, 0x37, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, - 0x29, 0x64, 0x65, 0x66, 0x73, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, - 0x33, 0x2e, 0x31, 0x31, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, - 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x34, 0x2f, 0x30, 0x39, 0x20, - 0x31, 0x35, 0x3a, 0x30, 0x38, 0x3a, 0x30, 0x32, 0x20, 0x24, 0x00, 0x40, 0x28, - 0x23, 0x29, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x68, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, - 0x20, 0x33, 0x2e, 0x31, 0x31, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, - 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x30, 0x37, 0x2f, 0x32, 0x33, - 0x20, 0x30, 0x31, 0x3a, 0x35, 0x36, 0x3a, 0x35, 0x35, 0x20, 0x24, 0x00, 0x40, - 0x28, 0x23, 0x29, 0x68, 0x6f, 0x73, 0x74, 0x63, 0x6f, 0x6d, 0x6d, 0x2e, 0x63, - 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x3a, 0x20, 0x33, 0x2e, 0x34, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, - 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x30, 0x2f, 0x31, 0x30, - 0x20, 0x32, 0x33, 0x3a, 0x32, 0x37, 0x3a, 0x30, 0x38, 0x20, 0x24, 0x00, 0x40, - 0x28, 0x23, 0x29, 0x68, 0x6f, 0x73, 0x74, 0x63, 0x6f, 0x6d, 0x6d, 0x2e, 0x68, - 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x3a, 0x20, 0x33, 0x2e, 0x31, 0x32, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, - 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x34, 0x2f, 0x32, - 0x39, 0x20, 0x31, 0x39, 0x3a, 0x33, 0x31, 0x3a, 0x31, 0x30, 0x20, 0x24, 0x00, - 0x40, 0x28, 0x23, 0x29, 0x6d, 0x69, 0x64, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x31, 0x31, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, - 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x30, 0x2f, - 0x31, 0x30, 0x20, 0x32, 0x33, 0x3a, 0x32, 0x37, 0x3a, 0x30, 0x38, 0x20, 0x24, - 0x00, 0x40, 0x28, 0x23, 0x29, 0x6d, 0x6f, 0x64, 0x65, 0x6d, 0x74, 0x73, 0x74, - 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x35, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, - 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x31, 0x2f, - 0x32, 0x30, 0x20, 0x32, 0x30, 0x3a, 0x35, 0x38, 0x3a, 0x34, 0x33, 0x20, 0x24, - 0x00, 0x40, 0x28, 0x23, 0x29, 0x70, 0x61, 0x72, 0x61, 0x2e, 0x68, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x3a, 0x20, 0x31, 0x2e, 0x32, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, - 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, - 0x30, 0x35, 0x20, 0x31, 0x36, 0x3a, 0x35, 0x30, 0x3a, 0x31, 0x36, 0x20, 0x24, - 0x00, 0x40, 0x28, 0x23, 0x29, 0x70, 0x62, 0x75, 0x73, 0x2e, 0x68, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x34, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, - 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, - 0x30, 0x35, 0x20, 0x31, 0x36, 0x3a, 0x35, 0x30, 0x3a, 0x32, 0x35, 0x20, 0x24, - 0x00, 0x40, 0x28, 0x23, 0x29, 0x70, 0x63, 0x69, 0x62, 0x69, 0x6f, 0x73, 0x2f, - 0x4d, 0x61, 0x6b, 0x65, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x31, 0x2e, - 0x34, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x36, 0x2f, 0x31, 0x31, 0x2f, 0x32, 0x37, 0x20, 0x32, 0x32, 0x3a, - 0x31, 0x34, 0x3a, 0x35, 0x37, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x70, - 0x6c, 0x78, 0x39, 0x30, 0x36, 0x30, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, - 0x35, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, 0x31, 0x36, 0x3a, - 0x35, 0x30, 0x3a, 0x34, 0x33, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x70, - 0x6c, 0x78, 0x39, 0x30, 0x36, 0x30, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, - 0x34, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, 0x31, 0x36, 0x3a, - 0x35, 0x30, 0x3a, 0x34, 0x39, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x70, - 0x72, 0x69, 0x6e, 0x74, 0x66, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, - 0x33, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x37, 0x2f, 0x30, 0x31, 0x2f, 0x32, 0x30, 0x20, 0x32, 0x30, 0x3a, - 0x35, 0x38, 0x3a, 0x34, 0x32, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x72, - 0x77, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, - 0x32, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x36, 0x2f, 0x30, 0x39, 0x2f, 0x31, 0x36, 0x20, 0x32, 0x33, 0x3a, - 0x32, 0x39, 0x3a, 0x34, 0x34, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x72, - 0x77, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x32, 0x2e, - 0x34, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x37, 0x2f, 0x30, 0x32, 0x2f, 0x32, 0x30, 0x20, 0x32, 0x32, 0x3a, - 0x32, 0x37, 0x3a, 0x35, 0x30, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, - 0x63, 0x61, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, - 0x37, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x37, 0x2f, 0x30, 0x34, 0x2f, 0x30, 0x37, 0x20, 0x32, 0x31, 0x3a, - 0x34, 0x33, 0x3a, 0x31, 0x34, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, - 0x63, 0x61, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, - 0x36, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, 0x31, 0x36, 0x3a, - 0x35, 0x33, 0x3a, 0x30, 0x33, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x63, - 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, - 0x32, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x36, 0x2f, 0x31, 0x30, 0x2f, 0x31, 0x30, 0x20, 0x32, 0x33, 0x3a, - 0x32, 0x37, 0x3a, 0x31, 0x31, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, - 0x79, 0x6e, 0x63, 0x62, 0x69, 0x6f, 0x73, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, - 0x31, 0x37, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, - 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, 0x31, 0x36, - 0x3a, 0x35, 0x35, 0x3a, 0x35, 0x37, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, - 0x73, 0x79, 0x6e, 0x63, 0x62, 0x69, 0x6f, 0x73, 0x2e, 0x68, 0x20, 0x20, 0x20, - 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x31, - 0x2e, 0x37, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, - 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x30, 0x2f, 0x32, 0x33, 0x20, 0x32, 0x31, - 0x3a, 0x34, 0x30, 0x3a, 0x31, 0x32, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, - 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, - 0x2e, 0x34, 0x35, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, - 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x34, 0x2f, 0x31, 0x34, 0x20, 0x31, - 0x35, 0x3a, 0x33, 0x38, 0x3a, 0x35, 0x32, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, - 0x29, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, - 0x33, 0x2e, 0x35, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, - 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, 0x31, - 0x36, 0x3a, 0x35, 0x37, 0x3a, 0x31, 0x34, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, - 0x29, 0x74, 0x65, 0x73, 0x74, 0x75, 0x61, 0x72, 0x74, 0x2e, 0x68, 0x20, 0x20, - 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, - 0x33, 0x2e, 0x32, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, - 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x30, 0x2f, 0x31, 0x30, 0x20, 0x32, - 0x33, 0x3a, 0x32, 0x37, 0x3a, 0x31, 0x34, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, - 0x29, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, - 0x33, 0x2e, 0x36, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, - 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x30, 0x39, 0x2f, 0x31, 0x36, 0x20, 0x32, - 0x33, 0x3a, 0x34, 0x31, 0x3a, 0x34, 0x35, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, - 0x29, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, - 0x33, 0x2e, 0x38, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, - 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x30, 0x39, 0x2f, 0x31, 0x36, 0x20, 0x32, - 0x33, 0x3a, 0x34, 0x32, 0x3a, 0x30, 0x38, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, - 0x29, 0x75, 0x61, 0x72, 0x74, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, - 0x33, 0x2e, 0x36, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, - 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, 0x31, - 0x36, 0x3a, 0x35, 0x38, 0x3a, 0x35, 0x32, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, - 0x29, 0x75, 0x74, 0x69, 0x6c, 0x2e, 0x73, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, - 0x33, 0x2e, 0x34, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, - 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x31, 0x2f, 0x32, 0x31, 0x20, 0x31, - 0x37, 0x3a, 0x30, 0x36, 0x3a, 0x35, 0x32, 0x20, 0x24, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; diff --git a/sys/dev/digi/EPCX_PCI.c b/sys/dev/digi/EPCX_PCI.c deleted file mode 100644 index a9ef049ea6be..000000000000 --- a/sys/dev/digi/EPCX_PCI.c +++ /dev/null @@ -1,48 +0,0 @@ -/*- - * Copyright (c) 2001 Brian Somers <brian@Awfulhak.org> - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include <sys/param.h> -#include <sys/conf.h> -#include <sys/kernel.h> -#include <sys/module.h> - -#include <dev/digi/EPCX_PCI.bios.h> -#include <dev/digi/EPCX_PCI.fepos.h> -#include <dev/digi/digi_mod.h> - -struct digi_mod digi_mod_EPCX_PCI = { - DIGI_MOD_VERSION, - { EPCX_PCI_bios, sizeof(EPCX_PCI_bios) }, - { EPCX_PCI_fepos, sizeof(EPCX_PCI_fepos) }, - { NULL, 0 } -}; - -MODULE_VERSION(digi_EPCX_PCI, 1); -DEV_MODULE(digi_EPCX_PCI, 0, 0); diff --git a/sys/dev/digi/EPCX_PCI.fepos.h b/sys/dev/digi/EPCX_PCI.fepos.h deleted file mode 100644 index 84b4630fc6b4..000000000000 --- a/sys/dev/digi/EPCX_PCI.fepos.h +++ /dev/null @@ -1,2867 +0,0 @@ -/*- - * Copyright (c) 2001 Brian Somers <brian@Awfulhak.org> - * based on work by Slawa Olhovchenkov - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - */ - -static const u_char EPCX_PCI_fepos[] = { - 0x4f, 0x53, 0x90, 0x75, 0x69, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0xd1, - 0x44, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x40, 0x28, 0x23, 0x29, 0x70, 0x63, 0x69, - 0x66, 0x65, 0x70, 0x2e, 0x62, 0x69, 0x6e, 0x20, 0x20, 0x20, 0x20, 0x32, 0x2e, - 0x33, 0x2e, 0x32, 0x20, 0x20, 0x30, 0x36, 0x2f, 0x30, 0x32, 0x2f, 0x39, 0x37, - 0x00, 0x40, 0x28, 0x23, 0x29, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, - 0x74, 0x20, 0x28, 0x43, 0x29, 0x20, 0x31, 0x39, 0x39, 0x32, 0x2c, 0x20, 0x44, - 0x49, 0x47, 0x49, 0x20, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x61, 0x6c, 0x2e, 0x20, 0x41, 0x6c, 0x6c, 0x20, 0x52, 0x69, 0x67, - 0x68, 0x74, 0x73, 0x20, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x2e, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xa0, 0x01, 0x3c, 0x28, 0x02, 0x22, 0xac, 0x00, 0xa0, 0x02, 0x3c, - 0x20, 0x02, 0x42, 0x34, 0x0c, 0x00, 0x43, 0xac, 0x00, 0x60, 0x03, 0x40, 0x00, - 0x60, 0x80, 0x40, 0x00, 0x00, 0x43, 0xac, 0x00, 0x68, 0x03, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x43, 0xac, 0x10, 0x00, 0x44, 0xac, 0x14, 0x00, 0x45, - 0xac, 0x18, 0x00, 0x46, 0xac, 0x1c, 0x00, 0x47, 0xac, 0x20, 0x00, 0x48, 0xac, - 0x24, 0x00, 0x49, 0xac, 0x28, 0x00, 0x4a, 0xac, 0x2c, 0x00, 0x4b, 0xac, 0x30, - 0x00, 0x4c, 0xac, 0x34, 0x00, 0x4d, 0xac, 0x38, 0x00, 0x4e, 0xac, 0x3c, 0x00, - 0x4f, 0xac, 0x40, 0x00, 0x50, 0xac, 0x44, 0x00, 0x51, 0xac, 0x48, 0x00, 0x52, - 0xac, 0x4c, 0x00, 0x53, 0xac, 0x50, 0x00, 0x54, 0xac, 0x54, 0x00, 0x55, 0xac, - 0x58, 0x00, 0x56, 0xac, 0x5c, 0x00, 0x57, 0xac, 0x60, 0x00, 0x58, 0xac, 0x64, - 0x00, 0x59, 0xac, 0x68, 0x00, 0x5a, 0xac, 0x6c, 0x00, 0x5b, 0xac, 0x70, 0x00, - 0x5c, 0xac, 0x74, 0x00, 0x5d, 0xac, 0x78, 0x00, 0x5e, 0xac, 0x7c, 0x00, 0x5f, - 0xac, 0x10, 0x00, 0x08, 0x24, 0x00, 0xa0, 0x09, 0x3c, 0x00, 0x02, 0x29, 0x35, - 0x00, 0x00, 0x8a, 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, 0x11, 0x00, - 0x00, 0x2a, 0xa1, 0x01, 0x00, 0x84, 0x24, 0x01, 0x00, 0x29, 0x25, 0xff, 0xff, - 0x08, 0x25, 0xf8, 0xff, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x01, - 0x3c, 0x10, 0x02, 0x25, 0xac, 0x00, 0xa0, 0x01, 0x3c, 0x14, 0x02, 0x3f, 0xac, - 0x00, 0xa0, 0x01, 0x3c, 0x18, 0x02, 0x3d, 0xac, 0x02, 0x00, 0x08, 0x24, 0x00, - 0xa0, 0x01, 0x3c, 0x10, 0x0c, 0x28, 0xac, 0x00, 0xa0, 0x1d, 0x3c, 0x00, 0x04, - 0xbd, 0x37, 0xe4, 0x17, 0x04, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x08, - 0x3c, 0x10, 0x0c, 0x08, 0x8d, 0x01, 0x00, 0x01, 0x24, 0x25, 0x00, 0x01, 0x11, - 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0xda, - 0x00, 0x1e, 0x24, 0x00, 0xa0, 0x01, 0x3c, 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, - 0x1e, 0x24, 0x00, 0x10, 0x08, 0x3c, 0x00, 0x60, 0x88, 0x40, 0x11, 0x80, 0x1c, - 0x3c, 0xc0, 0x03, 0x9c, 0x27, 0xeb, 0x00, 0x1e, 0x24, 0x00, 0xa0, 0x01, 0x3c, - 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0x01, 0x00, 0x11, 0x04, 0x00, - 0x00, 0x00, 0x00, 0x06, 0x01, 0x1e, 0x24, 0x00, 0xa0, 0x01, 0x3c, 0x10, 0x00, - 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0x10, 0x80, 0x05, 0x3c, 0x00, 0x00, 0xa5, - 0x24, 0x11, 0x80, 0x06, 0x3c, 0x50, 0x85, 0xc6, 0x24, 0x10, 0x80, 0x04, 0x3c, - 0xe4, 0x01, 0x84, 0x24, 0x23, 0x20, 0xe4, 0x03, 0x21, 0x20, 0x86, 0x00, 0xfc, - 0xff, 0x84, 0x24, 0xfc, 0xff, 0xc6, 0x24, 0x00, 0x00, 0x88, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xc8, 0xac, 0x2b, 0x08, 0xa6, 0x00, 0xf9, 0xff, 0x20, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x01, 0x3c, 0xfe, 0x00, 0x21, 0x34, 0x24, 0x40, 0x01, 0x01, 0x00, - 0x60, 0x88, 0x40, 0x00, 0xa0, 0x01, 0x3c, 0x0f, 0x0c, 0x20, 0xa0, 0x5a, 0x01, - 0x1e, 0x24, 0x00, 0xa0, 0x01, 0x3c, 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, - 0x24, 0x10, 0x80, 0x1f, 0x3c, 0x84, 0x02, 0xff, 0x27, 0x10, 0x80, 0x04, 0x3c, - 0x70, 0x07, 0x84, 0x24, 0x00, 0xa0, 0x01, 0x3c, 0x25, 0x20, 0x81, 0x00, 0x08, - 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa1, 0x01, 0x1e, 0x24, 0x00, 0xa0, - 0x01, 0x3c, 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0x11, 0x80, 0x1d, - 0x3c, 0x60, 0x8d, 0xbd, 0x27, 0x00, 0x00, 0x1e, 0x24, 0x00, 0xa0, 0x01, 0x3c, - 0x10, 0x0c, 0x20, 0xac, 0x3f, 0x00, 0x01, 0x3c, 0xff, 0xff, 0x21, 0x34, 0x24, - 0x70, 0xc1, 0x01, 0x00, 0x80, 0x01, 0x3c, 0x25, 0x70, 0xc1, 0x01, 0x10, 0x80, - 0x04, 0x3c, 0x4a, 0x0a, 0x04, 0x0c, 0x00, 0x00, 0x84, 0x24, 0x6b, 0x00, 0x04, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0xff, 0xbd, 0x27, 0x10, - 0x00, 0xa1, 0xaf, 0x14, 0x00, 0xa2, 0xaf, 0x18, 0x00, 0xa3, 0xaf, 0x1c, 0x00, - 0xa4, 0xaf, 0x20, 0x00, 0xa5, 0xaf, 0x24, 0x00, 0xa6, 0xaf, 0x28, 0x00, 0xa7, - 0xaf, 0x2c, 0x00, 0xa8, 0xaf, 0x30, 0x00, 0xa9, 0xaf, 0x34, 0x00, 0xaa, 0xaf, - 0x38, 0x00, 0xab, 0xaf, 0x3c, 0x00, 0xac, 0xaf, 0x40, 0x00, 0xad, 0xaf, 0x44, - 0x00, 0xae, 0xaf, 0x48, 0x00, 0xaf, 0xaf, 0x4c, 0x00, 0xb8, 0xaf, 0x50, 0x00, - 0xb9, 0xaf, 0x58, 0x00, 0xbe, 0xaf, 0x5c, 0x00, 0xbf, 0xaf, 0x00, 0x70, 0x08, - 0x40, 0x12, 0x48, 0x00, 0x00, 0x10, 0x50, 0x00, 0x00, 0x54, 0x00, 0xa8, 0xaf, - 0x60, 0x00, 0xa9, 0xaf, 0x64, 0x00, 0xaa, 0xaf, 0x00, 0x68, 0x05, 0x40, 0x00, - 0x60, 0x06, 0x40, 0x7c, 0x00, 0xa4, 0x30, 0x66, 0x00, 0x80, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x68, 0x00, 0xa6, 0xaf, 0x24, 0x10, 0xa6, 0x00, 0x00, 0xff, 0x42, - 0x30, 0x00, 0x20, 0x44, 0x30, 0x48, 0x00, 0x80, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x48, 0x30, 0x3b, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x44, 0x30, 0x4d, 0x00, 0x80, 0x14, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0xa6, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x86, 0x40, 0x00, 0x68, 0x05, 0x40, - 0x00, 0x00, 0x00, 0x00, 0x24, 0x10, 0xa6, 0x00, 0x00, 0xff, 0x42, 0x30, 0xec, - 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0xa8, 0x8f, 0x60, 0x00, - 0xa9, 0x8f, 0x64, 0x00, 0xaa, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x88, - 0x40, 0x13, 0x00, 0x20, 0x01, 0x11, 0x00, 0x40, 0x01, 0x14, 0x00, 0xa2, 0x8f, - 0x18, 0x00, 0xa3, 0x8f, 0x1c, 0x00, 0xa4, 0x8f, 0x20, 0x00, 0xa5, 0x8f, 0x24, - 0x00, 0xa6, 0x8f, 0x28, 0x00, 0xa7, 0x8f, 0x2c, 0x00, 0xa8, 0x8f, 0x30, 0x00, - 0xa9, 0x8f, 0x34, 0x00, 0xaa, 0x8f, 0x38, 0x00, 0xab, 0x8f, 0x3c, 0x00, 0xac, - 0x8f, 0x40, 0x00, 0xad, 0x8f, 0x44, 0x00, 0xae, 0x8f, 0x48, 0x00, 0xaf, 0x8f, - 0x4c, 0x00, 0xb8, 0x8f, 0x50, 0x00, 0xb9, 0x8f, 0x58, 0x00, 0xbe, 0x8f, 0x5c, - 0x00, 0xbf, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0xba, 0x8f, 0x10, 0x00, - 0xa1, 0x8f, 0x6c, 0x00, 0xbd, 0x27, 0x08, 0x00, 0x40, 0x03, 0x10, 0x00, 0x00, - 0x42, 0xa4, 0x89, 0x88, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x26, 0x40, 0x06, 0x01, - 0x01, 0xff, 0x08, 0x31, 0x26, 0x30, 0xc8, 0x00, 0x00, 0x00, 0x09, 0x24, 0x00, - 0x68, 0x89, 0x40, 0x00, 0x60, 0x86, 0x40, 0x38, 0x0a, 0x04, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0xcc, 0xff, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x89, 0x88, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x26, 0x40, 0x06, 0x01, 0x01, 0xff, 0x08, 0x31, - 0x26, 0x30, 0xc8, 0x00, 0x00, 0x60, 0x86, 0x40, 0xe4, 0x19, 0x04, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0xc2, 0xff, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x11, 0x80, - 0x08, 0x3c, 0x14, 0x9e, 0x08, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x26, 0x40, 0x06, - 0x01, 0x01, 0xff, 0x08, 0x31, 0x26, 0x30, 0xc8, 0x00, 0x00, 0x60, 0x86, 0x40, - 0x41, 0x0a, 0x04, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xb7, 0xff, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x11, 0x80, 0x08, 0x3c, 0x10, 0x9e, 0x08, 0x8d, 0x00, 0x00, - 0x00, 0x00, 0x26, 0x40, 0x06, 0x01, 0x01, 0xff, 0x08, 0x31, 0x26, 0x30, 0xc8, - 0x00, 0x00, 0x00, 0x09, 0x24, 0x00, 0x68, 0x89, 0x40, 0x00, 0x60, 0x86, 0x40, - 0xde, 0x1d, 0x04, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xff, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x10, 0x80, 0x04, 0x3c, 0xb0, 0x7b, 0x84, 0x24, 0x24, 0x00, - 0x04, 0x0c, 0x74, 0x01, 0x05, 0x24, 0xae, 0xff, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x00, 0xec, 0xff, 0xbd, 0x27, 0x08, 0x00, 0xa1, 0xaf, 0x00, 0x70, 0x1a, 0x40, - 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xba, 0xaf, 0x10, 0x00, 0xbf, 0xaf, 0x10, - 0x80, 0x04, 0x3c, 0xb0, 0x7b, 0x84, 0x24, 0x24, 0x00, 0x04, 0x0c, 0x96, 0x01, - 0x05, 0x24, 0x10, 0x00, 0xbf, 0x8f, 0x0c, 0x00, 0xba, 0x8f, 0x08, 0x00, 0xa1, - 0x8f, 0x0c, 0x00, 0xbd, 0x27, 0x08, 0x00, 0x40, 0x03, 0x10, 0x00, 0x00, 0x42, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x01, 0x3c, 0x25, - 0x20, 0x81, 0x00, 0x00, 0x20, 0x01, 0x3c, 0x25, 0x28, 0xa1, 0x00, 0x05, 0x00, - 0xc1, 0x2c, 0x74, 0x00, 0x20, 0x14, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x82, - 0x30, 0x03, 0x00, 0xa3, 0x30, 0x23, 0x38, 0x43, 0x00, 0x49, 0x00, 0xe0, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x20, 0x82, 0x00, 0x05, 0x00, 0xe0, 0x1c, 0xc0, - 0x70, 0x02, 0x00, 0x00, 0x00, 0x88, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, - 0x00, 0x10, 0x06, 0x48, 0xc8, 0x01, 0x00, 0x00, 0x89, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x06, 0x48, 0xc9, 0x01, 0x22, 0x78, 0x0e, 0x00, 0x04, 0x00, 0x88, 0x8c, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x50, 0xe8, 0x01, 0x25, 0x48, 0x2a, 0x01, 0x04, - 0x00, 0x84, 0x24, 0x00, 0x00, 0xa9, 0xb8, 0x23, 0x28, 0xa3, 0x00, 0x21, 0x30, - 0xc3, 0x00, 0xec, 0xff, 0xc6, 0x24, 0xc0, 0x70, 0x07, 0x00, 0x1a, 0x00, 0xc0, - 0x18, 0x22, 0x78, 0x0e, 0x00, 0x04, 0x00, 0x89, 0x8c, 0x06, 0x40, 0xc8, 0x01, - 0x08, 0x00, 0x8a, 0x8c, 0x04, 0x60, 0xe9, 0x01, 0x0c, 0x00, 0x8b, 0x8c, 0x25, - 0x60, 0x88, 0x01, 0x10, 0x00, 0x88, 0x8c, 0x04, 0x00, 0xac, 0xac, 0x06, 0x48, - 0xc9, 0x01, 0x04, 0x60, 0xea, 0x01, 0x25, 0x60, 0x89, 0x01, 0x08, 0x00, 0xac, - 0xac, 0x06, 0x50, 0xca, 0x01, 0x04, 0x60, 0xeb, 0x01, 0x25, 0x60, 0x8a, 0x01, - 0x0c, 0x00, 0xac, 0xac, 0x06, 0x58, 0xcb, 0x01, 0x04, 0x60, 0xe8, 0x01, 0x25, - 0x60, 0x8b, 0x01, 0x10, 0x00, 0xac, 0xac, 0x10, 0x00, 0x84, 0x24, 0x10, 0x00, - 0xa5, 0x24, 0xf0, 0xff, 0xc6, 0x24, 0xe8, 0xff, 0xc0, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0xc6, 0x24, 0x0c, 0x00, 0xc0, 0x18, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x48, 0xc8, 0x01, 0x04, 0x00, 0x88, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x50, 0xe8, 0x01, 0x25, 0x50, 0x49, 0x01, 0x04, 0x00, 0xaa, 0xac, 0x04, 0x00, - 0x84, 0x24, 0x04, 0x00, 0xa5, 0x24, 0xfc, 0xff, 0xc6, 0x24, 0xf6, 0xff, 0xc0, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x89, 0x8c, 0x06, 0x40, 0xc8, 0x01, - 0x04, 0x48, 0xe9, 0x01, 0x25, 0x40, 0x09, 0x01, 0x22, 0x48, 0x06, 0x00, 0xc0, - 0x48, 0x09, 0x00, 0x04, 0x40, 0x28, 0x01, 0x21, 0x28, 0xa6, 0x00, 0x08, 0x00, - 0xe0, 0x03, 0x07, 0x00, 0xa8, 0xa8, 0x00, 0x00, 0x88, 0x98, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xa8, 0xb8, 0x23, 0x28, 0xa3, 0x00, 0x23, 0x20, 0x82, 0x00, - 0x21, 0x30, 0xc2, 0x00, 0xec, 0xff, 0xc6, 0x24, 0x0e, 0x00, 0xc0, 0x18, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x89, 0x8c, 0x08, 0x00, 0x8a, 0x8c, 0x0c, 0x00, - 0x8b, 0x8c, 0x10, 0x00, 0x8c, 0x8c, 0x04, 0x00, 0xa9, 0xac, 0x10, 0x00, 0x84, - 0x24, 0x08, 0x00, 0xaa, 0xac, 0xf0, 0xff, 0xc6, 0x24, 0x0c, 0x00, 0xab, 0xac, - 0x10, 0x00, 0xac, 0xac, 0x10, 0x00, 0xa5, 0x24, 0xf4, 0xff, 0xc0, 0x1c, 0x00, - 0x00, 0x00, 0x00, 0x0c, 0x00, 0xc6, 0x24, 0x09, 0x00, 0xc0, 0x18, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x88, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xa8, - 0xac, 0x04, 0x00, 0x84, 0x24, 0x04, 0x00, 0xa5, 0x24, 0xfc, 0xff, 0xc6, 0x24, - 0xf9, 0xff, 0xc0, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, 0x86, 0x00, 0x07, - 0x00, 0x88, 0x88, 0x21, 0x28, 0xa6, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x07, 0x00, - 0xa8, 0xa8, 0x09, 0x00, 0xc0, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xa0, 0x01, 0x00, 0xa5, 0x24, - 0x01, 0x00, 0x84, 0x24, 0xff, 0xff, 0xc6, 0x24, 0xf9, 0xff, 0xc0, 0x1c, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x1e, 0x24, 0x00, 0xa0, 0x01, - 0x3c, 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0x10, 0x80, 0x08, 0x3c, - 0x98, 0x07, 0x08, 0x25, 0x00, 0xa0, 0x01, 0x3c, 0x25, 0x40, 0x01, 0x01, 0x08, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x04, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x05, 0x3c, 0x00, 0x60, 0x85, 0x40, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x09, 0x3c, 0x01, 0x00, 0x01, 0x3c, - 0x23, 0x40, 0x21, 0x01, 0x03, 0x00, 0x00, 0xa1, 0x04, 0x00, 0x08, 0x25, 0xfd, - 0xff, 0x09, 0x15, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x05, 0x3c, 0x00, 0x60, - 0x85, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x09, - 0x3c, 0x01, 0x00, 0x01, 0x3c, 0x23, 0x40, 0x21, 0x01, 0x03, 0x00, 0x00, 0xa1, - 0x04, 0x00, 0x08, 0x25, 0xfd, 0xff, 0x09, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x84, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x40, 0xff, 0xff, 0x08, - 0x3c, 0xff, 0x3f, 0x08, 0x35, 0x24, 0x20, 0x88, 0x00, 0x00, 0x10, 0x84, 0x40, - 0x11, 0x80, 0x08, 0x3c, 0x50, 0x85, 0x08, 0x25, 0x11, 0x80, 0x09, 0x3c, 0x10, - 0xd2, 0x29, 0x25, 0xfc, 0xff, 0x01, 0x24, 0x24, 0x48, 0x21, 0x01, 0xfc, 0xff, - 0x01, 0x24, 0x24, 0x40, 0x01, 0x01, 0x00, 0x00, 0x00, 0xad, 0x04, 0x00, 0x08, - 0x25, 0xfd, 0xff, 0x09, 0x15, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xe0, 0x03, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x02, 0x40, 0xff, 0xff, 0x01, 0x3c, 0xfe, - 0x00, 0x21, 0x34, 0x25, 0x20, 0x81, 0x00, 0x24, 0x40, 0x44, 0x00, 0x00, 0x60, - 0x88, 0x40, 0x01, 0xff, 0x42, 0x30, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x60, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x26, 0x40, 0x44, 0x00, - 0x01, 0xff, 0x08, 0x31, 0x26, 0x40, 0x02, 0x01, 0x00, 0x60, 0x88, 0x40, 0x08, - 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x08, 0x40, 0x00, 0x00, - 0x00, 0x00, 0xfe, 0xff, 0x01, 0x24, 0x24, 0x48, 0x01, 0x01, 0x00, 0x60, 0x89, - 0x40, 0x00, 0x68, 0x02, 0x40, 0x00, 0x03, 0x84, 0x30, 0x25, 0x18, 0x44, 0x00, - 0x00, 0x68, 0x83, 0x40, 0x00, 0x60, 0x88, 0x40, 0x24, 0x10, 0x44, 0x00, 0x08, - 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x08, 0x40, 0x00, 0x03, - 0x84, 0x30, 0xfe, 0xff, 0x01, 0x24, 0x24, 0x48, 0x01, 0x01, 0x00, 0x60, 0x89, - 0x40, 0x00, 0x68, 0x02, 0x40, 0x27, 0x18, 0x80, 0x00, 0x24, 0x18, 0x62, 0x00, - 0x00, 0x68, 0x83, 0x40, 0x00, 0x60, 0x88, 0x40, 0x24, 0x10, 0x44, 0x00, 0x08, - 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x08, 0x3c, 0x00, 0x60, - 0x88, 0x40, 0xc0, 0xbf, 0x08, 0x3c, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x60, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x09, 0x3c, - 0xfe, 0x00, 0x29, 0x35, 0x00, 0x00, 0x00, 0x00, 0x24, 0x40, 0x09, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x25, 0x40, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, - 0x88, 0x40, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x03, 0x3c, 0x25, 0x18, 0x83, 0x00, - 0x0a, 0x00, 0x60, 0xa4, 0x0c, 0x00, 0x60, 0xa4, 0x12, 0x00, 0x60, 0xa4, 0x14, - 0x00, 0x60, 0xa4, 0x18, 0x00, 0x80, 0xa4, 0x1a, 0x00, 0x80, 0xa4, 0xff, 0xff, - 0x02, 0x34, 0x1c, 0x00, 0x82, 0xa4, 0x20, 0x00, 0x60, 0xa4, 0x22, 0x00, 0x60, - 0xa4, 0x28, 0x00, 0x80, 0xa4, 0x2a, 0x00, 0x80, 0xa4, 0x33, 0x04, 0x02, 0x24, - 0x2c, 0x00, 0x82, 0xa4, 0xee, 0x6f, 0x02, 0x24, 0x2e, 0x00, 0x82, 0xa4, 0x4b, - 0x00, 0x80, 0xa0, 0x01, 0x00, 0x02, 0x24, 0x4c, 0x00, 0x62, 0xa0, 0x4d, 0x00, - 0x62, 0xa0, 0x4e, 0x00, 0x62, 0xa0, 0x4f, 0x00, 0x60, 0xa0, 0x54, 0x00, 0x60, - 0xa0, 0xff, 0x00, 0x02, 0x24, 0x56, 0x00, 0x62, 0xa0, 0x57, 0x00, 0x60, 0xa0, - 0x58, 0x00, 0x60, 0xa0, 0x59, 0x00, 0x60, 0xa0, 0x5a, 0x00, 0x60, 0xa0, 0x5b, - 0x00, 0x60, 0xa0, 0x11, 0x00, 0x02, 0x24, 0x5c, 0x00, 0x82, 0xa0, 0x13, 0x00, - 0x02, 0x24, 0x5d, 0x00, 0x82, 0xa0, 0x16, 0x00, 0x02, 0x24, 0x5e, 0x00, 0x82, - 0xa0, 0x5f, 0x00, 0x80, 0xa0, 0x64, 0x00, 0x80, 0xa0, 0x68, 0x00, 0x80, 0xa0, - 0x6c, 0x00, 0x80, 0xac, 0x10, 0x00, 0x02, 0x24, 0x08, 0x00, 0xe0, 0x03, 0x50, - 0x00, 0x62, 0xa4, 0xe8, 0xff, 0xbd, 0x27, 0x14, 0x00, 0xbf, 0xaf, 0x10, 0x00, - 0xb0, 0xaf, 0x21, 0x80, 0x80, 0x00, 0x48, 0x00, 0x04, 0x92, 0x65, 0x00, 0x03, - 0x92, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x03, 0x00, 0x21, 0x10, 0x43, 0x00, - 0x80, 0x10, 0x02, 0x00, 0x23, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x11, - 0x80, 0x03, 0x3c, 0x21, 0x18, 0x62, 0x00, 0xb8, 0x90, 0x63, 0x8c, 0x06, 0x00, - 0x02, 0x24, 0x06, 0x00, 0x62, 0x14, 0x09, 0x00, 0x82, 0x28, 0x08, 0x00, 0x82, - 0x28, 0x10, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x9a, 0x02, 0x04, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x54, - 0x02, 0x04, 0x0c, 0x21, 0x20, 0x00, 0x02, 0x48, 0x00, 0x03, 0x92, 0x08, 0x00, - 0x02, 0x24, 0x06, 0x00, 0x62, 0x14, 0x00, 0x20, 0x02, 0x3c, 0x25, 0x10, 0x02, - 0x02, 0x20, 0x00, 0x03, 0x24, 0x50, 0x00, 0x43, 0xa4, 0x0d, 0x00, 0x02, 0x24, - 0x2c, 0x00, 0x02, 0xa6, 0x14, 0x00, 0xbf, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, - 0x00, 0xe0, 0x03, 0x18, 0x00, 0xbd, 0x27, 0xe8, 0xff, 0xbd, 0x27, 0x14, 0x00, - 0xbf, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x80, 0x80, 0x00, 0x00, 0x20, 0x02, - 0x3c, 0x25, 0x38, 0x02, 0x02, 0x1f, 0x00, 0xa2, 0x2c, 0xac, 0x00, 0x40, 0x10, - 0x80, 0x10, 0x05, 0x00, 0x10, 0x80, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0xc0, - 0x7b, 0x22, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1a, 0x00, 0x06, 0xa6, 0x2e, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x00, 0x42, 0x34, 0x5f, 0x03, 0x04, 0x08, 0x2e, 0x00, 0x02, 0xa6, - 0x1c, 0x00, 0x06, 0xa6, 0x2e, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x42, 0x34, 0x5f, 0x03, 0x04, 0x08, 0x2e, 0x00, 0x02, 0xa6, 0x0a, 0x00, - 0xe2, 0x94, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x30, 0x0c, 0x00, 0xe3, - 0x94, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x63, 0x30, 0x23, 0x20, 0x43, 0x00, - 0x0e, 0x00, 0x03, 0x96, 0x00, 0x00, 0x00, 0x00, 0x24, 0x20, 0x83, 0x00, 0x23, - 0x10, 0x46, 0x00, 0x24, 0x10, 0x43, 0x00, 0x23, 0x20, 0x82, 0x00, 0x09, 0x00, - 0x80, 0x18, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, - 0x00, 0x52, 0x00, 0x02, 0xa6, 0x0e, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, - 0x24, 0x10, 0xc2, 0x00, 0xdf, 0x02, 0x04, 0x08, 0x0c, 0x00, 0xe2, 0xa4, 0x78, - 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x44, 0x00, 0x52, 0x00, - 0x02, 0xa6, 0x2e, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x42, - 0x34, 0x5f, 0x03, 0x04, 0x08, 0x2e, 0x00, 0x02, 0xa6, 0x64, 0x00, 0x02, 0x92, - 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x42, 0x34, 0x57, 0x03, 0x04, 0x08, 0x7f, - 0x00, 0x42, 0x30, 0x64, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, - 0x42, 0x34, 0x57, 0x03, 0x04, 0x08, 0xbf, 0x00, 0x42, 0x30, 0x5a, 0x00, 0xe6, - 0xa0, 0x03, 0x12, 0x06, 0x00, 0x5b, 0x00, 0xe2, 0xa0, 0x2e, 0x00, 0x02, 0x96, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x42, 0x34, 0x5f, 0x03, 0x04, 0x08, 0x2e, - 0x00, 0x02, 0xa6, 0x01, 0x00, 0x02, 0x24, 0x4b, 0x00, 0x02, 0xa2, 0xff, 0xff, - 0x02, 0x34, 0x0a, 0x00, 0xc2, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x02, - 0x8e, 0x04, 0x00, 0xc0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x46, 0x00, - 0x05, 0x03, 0x04, 0x08, 0x6c, 0x00, 0x02, 0xae, 0x19, 0x00, 0x42, 0x24, 0x05, - 0x03, 0x04, 0x08, 0x6c, 0x00, 0x02, 0xae, 0x6c, 0x00, 0x06, 0xae, 0x2e, 0x00, - 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x42, 0x34, 0x5f, 0x03, 0x04, - 0x08, 0x2e, 0x00, 0x02, 0xa6, 0x03, 0x12, 0x06, 0x00, 0x27, 0x10, 0x02, 0x00, - 0x68, 0x00, 0x03, 0x92, 0x00, 0x00, 0x00, 0x00, 0x24, 0x18, 0x62, 0x00, 0x25, - 0x18, 0x66, 0x00, 0x68, 0x00, 0x03, 0xa2, 0x2e, 0x00, 0x02, 0x96, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x42, 0x34, 0x5f, 0x03, 0x04, 0x08, 0x2e, 0x00, 0x02, - 0xa6, 0x28, 0x00, 0x06, 0xa6, 0x2e, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, - 0x40, 0x00, 0x42, 0x34, 0x5f, 0x03, 0x04, 0x08, 0x2e, 0x00, 0x02, 0xa6, 0x5c, - 0x00, 0x06, 0xa2, 0x03, 0x12, 0x06, 0x00, 0x5d, 0x00, 0x02, 0xa2, 0x2e, 0x00, - 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x42, 0x34, 0x5f, 0x03, 0x04, - 0x08, 0x2e, 0x00, 0x02, 0xa6, 0x5f, 0x03, 0x04, 0x08, 0x18, 0x00, 0x06, 0xa6, - 0x64, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x42, 0x34, 0x57, - 0x03, 0x04, 0x08, 0xdf, 0x00, 0x42, 0x30, 0x64, 0x00, 0x02, 0x92, 0x00, 0x00, - 0x00, 0x00, 0x20, 0x00, 0x42, 0x34, 0x57, 0x03, 0x04, 0x08, 0xef, 0x00, 0x42, - 0x30, 0x54, 0x02, 0x04, 0x0c, 0x21, 0x20, 0x00, 0x02, 0x64, 0x00, 0x02, 0x92, - 0x00, 0x00, 0x00, 0x00, 0x57, 0x03, 0x04, 0x08, 0x01, 0x00, 0x42, 0x34, 0x2a, - 0x00, 0x06, 0xa6, 0x2e, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, - 0x42, 0x34, 0x5f, 0x03, 0x04, 0x08, 0x2e, 0x00, 0x02, 0xa6, 0x03, 0x12, 0x06, - 0x00, 0x27, 0x10, 0x02, 0x00, 0x5f, 0x00, 0x03, 0x92, 0x00, 0x00, 0x00, 0x00, - 0x24, 0x18, 0x62, 0x00, 0x25, 0x18, 0x66, 0x00, 0x5f, 0x00, 0x03, 0xa2, 0x2e, - 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x42, 0x34, 0x5f, 0x03, - 0x04, 0x08, 0x2e, 0x00, 0x02, 0xa6, 0x2c, 0x00, 0x06, 0xa6, 0x2e, 0x00, 0x02, - 0x96, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x42, 0x34, 0x5f, 0x03, 0x04, 0x08, - 0x2e, 0x00, 0x02, 0xa6, 0x5e, 0x00, 0x06, 0xa2, 0x2e, 0x00, 0x02, 0x96, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x42, 0x34, 0x5f, 0x03, 0x04, 0x08, 0x2e, 0x00, - 0x02, 0xa6, 0x64, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x42, - 0x34, 0x64, 0x00, 0x02, 0xa2, 0x2e, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x42, 0x34, 0x5f, 0x03, 0x04, 0x08, 0x2e, 0x00, 0x02, 0xa6, 0x60, - 0x03, 0x04, 0x08, 0x21, 0x10, 0x00, 0x00, 0x01, 0x00, 0x02, 0x24, 0x14, 0x00, - 0xbf, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x18, 0x00, 0xbd, - 0x27, 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x48, 0x00, 0x87, 0x90, - 0x65, 0x00, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x03, 0x00, 0x21, - 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x23, 0x10, 0x43, 0x00, 0x80, 0x10, - 0x02, 0x00, 0x11, 0x80, 0x03, 0x3c, 0x21, 0x18, 0x62, 0x00, 0xb8, 0x90, 0x63, - 0x8c, 0x06, 0x00, 0x02, 0x24, 0x06, 0x00, 0x62, 0x14, 0x09, 0x00, 0xe2, 0x28, - 0x08, 0x00, 0xe2, 0x28, 0x05, 0x00, 0x40, 0x14, 0x01, 0x00, 0x02, 0x24, 0x7d, - 0x03, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x40, 0x10, 0x01, 0x00, - 0x02, 0x24, 0xa9, 0x02, 0x04, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xbf, - 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, - 0xc8, 0xff, 0xbd, 0x27, 0x30, 0x00, 0xbf, 0xaf, 0x2c, 0x00, 0xb5, 0xaf, 0x28, - 0x00, 0xb4, 0xaf, 0x24, 0x00, 0xb3, 0xaf, 0x20, 0x00, 0xb2, 0xaf, 0x1c, 0x00, - 0xb1, 0xaf, 0x18, 0x00, 0xb0, 0xaf, 0x00, 0xa0, 0x02, 0x3c, 0x10, 0x0d, 0x42, - 0x34, 0x00, 0x00, 0x43, 0x94, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x71, 0x30, - 0x02, 0x00, 0x42, 0x94, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x50, 0x30, 0x41, - 0x00, 0x30, 0x12, 0x00, 0xa0, 0x13, 0x3c, 0x00, 0x04, 0x73, 0x36, 0x00, 0x80, - 0x15, 0x3c, 0x00, 0x10, 0xb5, 0x36, 0x00, 0xa0, 0x12, 0x3c, 0x18, 0x0d, 0x52, - 0x36, 0x00, 0xa0, 0x14, 0x3c, 0x10, 0x0d, 0x94, 0x36, 0x25, 0x10, 0x13, 0x02, - 0x03, 0x00, 0x43, 0x88, 0x00, 0x00, 0x43, 0x98, 0x00, 0x00, 0x00, 0x00, 0x13, - 0x00, 0xa3, 0xab, 0x10, 0x00, 0xa3, 0xbb, 0x11, 0x00, 0xa3, 0x93, 0x00, 0x00, - 0x00, 0x00, 0xc0, 0x11, 0x03, 0x00, 0x21, 0x20, 0x55, 0x00, 0x58, 0x92, 0x82, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x18, 0x62, 0x00, 0x12, 0x00, 0x60, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x65, 0x00, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, - 0x10, 0x03, 0x00, 0x21, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x23, 0x10, - 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x10, 0x00, 0xa5, 0x93, 0x11, 0x80, 0x01, - 0x3c, 0x21, 0x08, 0x22, 0x00, 0xa0, 0x90, 0x22, 0x8c, 0x12, 0x00, 0xa6, 0x97, - 0x00, 0x00, 0x00, 0x00, 0x09, 0xf8, 0x40, 0x00, 0x1f, 0x00, 0xa5, 0x30, 0x16, - 0x00, 0x40, 0x14, 0x04, 0x00, 0x02, 0x26, 0x00, 0x00, 0x42, 0x96, 0x00, 0x00, - 0x00, 0x00, 0xfc, 0x03, 0x49, 0x30, 0x02, 0x00, 0x44, 0x96, 0x00, 0x00, 0x00, - 0x00, 0xfc, 0x03, 0x84, 0x30, 0x00, 0xa0, 0x02, 0x3c, 0x00, 0x08, 0x42, 0x34, - 0x25, 0x10, 0x22, 0x01, 0x25, 0x18, 0x13, 0x02, 0x03, 0x00, 0x65, 0x88, 0x00, - 0x00, 0x65, 0x98, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x45, 0xa8, 0x00, 0x00, - 0x45, 0xb8, 0x04, 0x00, 0x22, 0x25, 0xfc, 0x03, 0x49, 0x30, 0x03, 0x00, 0x24, - 0x11, 0x04, 0x00, 0x02, 0x26, 0x00, 0x00, 0x49, 0xa6, 0x04, 0x00, 0x02, 0x26, - 0xfc, 0x03, 0x50, 0x30, 0x02, 0x00, 0x90, 0xa6, 0xc9, 0xff, 0x30, 0x16, 0x25, - 0x10, 0x13, 0x02, 0x30, 0x00, 0xbf, 0x8f, 0x2c, 0x00, 0xb5, 0x8f, 0x28, 0x00, - 0xb4, 0x8f, 0x24, 0x00, 0xb3, 0x8f, 0x20, 0x00, 0xb2, 0x8f, 0x1c, 0x00, 0xb1, - 0x8f, 0x18, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x38, 0x00, 0xbd, 0x27, - 0xc8, 0xff, 0xbd, 0x27, 0x30, 0x00, 0xbf, 0xaf, 0x2c, 0x00, 0xb7, 0xaf, 0x28, - 0x00, 0xb6, 0xaf, 0x24, 0x00, 0xb5, 0xaf, 0x20, 0x00, 0xb4, 0xaf, 0x1c, 0x00, - 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, - 0xaf, 0x21, 0x88, 0x80, 0x00, 0x21, 0xb0, 0xa0, 0x00, 0x21, 0x80, 0x00, 0x00, - 0x21, 0xa0, 0xc0, 0x02, 0x2e, 0x00, 0x32, 0x96, 0x00, 0x00, 0x00, 0x00, 0x78, - 0x00, 0x40, 0x12, 0x21, 0x98, 0x00, 0x00, 0x10, 0x80, 0x17, 0x3c, 0x40, 0x7c, - 0xf7, 0x26, 0x00, 0x20, 0x02, 0x3c, 0xf5, 0x03, 0x04, 0x08, 0x25, 0xa8, 0x22, - 0x02, 0x02, 0x91, 0x12, 0x00, 0x04, 0x00, 0x73, 0x26, 0x0f, 0x00, 0x42, 0x32, - 0xfc, 0xff, 0x40, 0x10, 0x01, 0x00, 0x42, 0x32, 0x69, 0x00, 0x40, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x48, 0x00, 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x00, - 0x42, 0x24, 0x00, 0x00, 0x82, 0xa2, 0x0f, 0x00, 0x62, 0x2e, 0x5b, 0x00, 0x40, - 0x10, 0x01, 0x00, 0x93, 0xa2, 0x80, 0x10, 0x13, 0x00, 0x21, 0x10, 0x57, 0x00, - 0x00, 0x00, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x64, 0x00, 0x30, 0x92, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x04, - 0x04, 0x08, 0x64, 0x00, 0x20, 0xa2, 0x16, 0x00, 0x30, 0x96, 0x00, 0x00, 0x00, - 0x00, 0x5f, 0x04, 0x04, 0x08, 0x02, 0x00, 0x90, 0xa2, 0x1a, 0x00, 0x23, 0x96, - 0x00, 0x00, 0x00, 0x00, 0x16, 0x04, 0x04, 0x08, 0xc0, 0x1b, 0x03, 0x00, 0x1c, - 0x00, 0x23, 0x96, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x1b, 0x03, 0x00, 0x16, 0x00, - 0x22, 0x96, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x1a, 0x00, 0x62, - 0x00, 0x02, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x07, 0x00, - 0xff, 0xff, 0x01, 0x24, 0x04, 0x00, 0x41, 0x14, 0x00, 0x80, 0x01, 0x3c, 0x02, - 0x00, 0x61, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x06, 0x00, 0x12, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x04, 0x04, - 0x08, 0x02, 0x00, 0x90, 0xa2, 0x52, 0x00, 0x30, 0x96, 0x00, 0x00, 0x00, 0x00, - 0x5f, 0x04, 0x04, 0x08, 0x02, 0x00, 0x90, 0xa2, 0x2c, 0x00, 0x30, 0x96, 0x00, - 0x00, 0x00, 0x00, 0x5f, 0x04, 0x04, 0x08, 0x02, 0x00, 0x90, 0xa2, 0x28, 0x00, - 0x30, 0x96, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x04, 0x04, 0x08, 0x02, 0x00, 0x90, - 0xa2, 0x2a, 0x00, 0x30, 0x96, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x04, 0x04, 0x08, - 0x02, 0x00, 0x90, 0xa2, 0x68, 0x00, 0x30, 0x92, 0x00, 0x00, 0x00, 0x00, 0x5f, - 0x04, 0x04, 0x08, 0x02, 0x00, 0x90, 0xa2, 0x5f, 0x00, 0x30, 0x92, 0x00, 0x00, - 0x00, 0x00, 0x5f, 0x04, 0x04, 0x08, 0x02, 0x00, 0x90, 0xa2, 0x5e, 0x00, 0x30, - 0x92, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x04, 0x04, 0x08, 0x02, 0x00, 0x90, 0xa2, - 0x5d, 0x00, 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x02, 0x00, 0x5c, - 0x00, 0x23, 0x92, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x04, 0x04, 0x08, 0x21, 0x80, - 0x43, 0x00, 0x6c, 0x00, 0x30, 0x8e, 0x6c, 0x00, 0x20, 0xae, 0x78, 0x00, 0x22, - 0x96, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x5e, 0x04, 0x04, 0x08, - 0x78, 0x00, 0x22, 0xa6, 0x5b, 0x00, 0xa2, 0x92, 0x5a, 0x00, 0xa3, 0x92, 0x00, - 0x12, 0x02, 0x00, 0x5e, 0x04, 0x04, 0x08, 0x25, 0x80, 0x43, 0x00, 0x7c, 0x00, - 0x30, 0x96, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x04, 0x04, 0x08, 0x02, 0x00, 0x90, - 0xa2, 0x0c, 0x80, 0x84, 0x27, 0x24, 0x00, 0x04, 0x0c, 0x10, 0x02, 0x05, 0x24, - 0x02, 0x00, 0x90, 0xa2, 0x03, 0x12, 0x10, 0x00, 0x03, 0x00, 0x82, 0xa2, 0x04, - 0x00, 0x94, 0x26, 0x42, 0x90, 0x12, 0x00, 0x91, 0xff, 0x40, 0x16, 0x01, 0x00, - 0x73, 0x26, 0x23, 0x10, 0x96, 0x02, 0x30, 0x00, 0xbf, 0x8f, 0x2c, 0x00, 0xb7, - 0x8f, 0x28, 0x00, 0xb6, 0x8f, 0x24, 0x00, 0xb5, 0x8f, 0x20, 0x00, 0xb4, 0x8f, - 0x1c, 0x00, 0xb3, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, - 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x38, 0x00, 0xbd, 0x27, 0xe8, 0xff, - 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x48, 0x00, 0x86, 0x90, 0x65, 0x00, 0x83, - 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x03, 0x00, 0x21, 0x10, 0x43, 0x00, - 0x80, 0x10, 0x02, 0x00, 0x23, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x11, - 0x80, 0x03, 0x3c, 0x21, 0x18, 0x62, 0x00, 0xb8, 0x90, 0x63, 0x8c, 0x06, 0x00, - 0x02, 0x24, 0x06, 0x00, 0x62, 0x14, 0x09, 0x00, 0xc2, 0x28, 0x08, 0x00, 0xc2, - 0x28, 0x05, 0x00, 0x40, 0x14, 0x01, 0x00, 0x02, 0x24, 0x8a, 0x04, 0x04, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x40, 0x10, 0x01, 0x00, 0x02, 0x24, 0xdc, - 0x03, 0x04, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xbf, 0x8f, 0x18, 0x00, - 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x78, 0xfe, 0xbd, - 0x27, 0x84, 0x01, 0xbf, 0xaf, 0x80, 0x01, 0xbe, 0xaf, 0x7c, 0x01, 0xb7, 0xaf, - 0x78, 0x01, 0xb6, 0xaf, 0x74, 0x01, 0xb5, 0xaf, 0x70, 0x01, 0xb4, 0xaf, 0x6c, - 0x01, 0xb3, 0xaf, 0x68, 0x01, 0xb2, 0xaf, 0x64, 0x01, 0xb1, 0xaf, 0x60, 0x01, - 0xb0, 0xaf, 0x10, 0x01, 0xa4, 0xaf, 0x18, 0x01, 0xa5, 0xaf, 0x28, 0x01, 0xa0, - 0xaf, 0x18, 0x01, 0xb2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x30, 0x46, 0x02, - 0x30, 0x01, 0xa6, 0xaf, 0x21, 0xf0, 0x00, 0x00, 0x20, 0x01, 0xa0, 0xaf, 0xc0, - 0x89, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x40, 0x10, 0x21, 0xb0, - 0x00, 0x00, 0x00, 0xa0, 0x02, 0x3c, 0x30, 0x0c, 0x42, 0x34, 0x00, 0x00, 0x42, - 0x90, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, - 0xac, 0x89, 0x82, 0x8f, 0x5c, 0x92, 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x23, - 0x10, 0x43, 0x00, 0xff, 0x3f, 0x03, 0x3c, 0xff, 0xff, 0x63, 0x34, 0x2b, 0x18, - 0x62, 0x00, 0x02, 0x00, 0x60, 0x14, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x89, 0x80, - 0xaf, 0xc0, 0x89, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x40, 0x14, - 0x10, 0x00, 0xb7, 0x27, 0x00, 0xa0, 0x04, 0x3c, 0x30, 0x0c, 0x84, 0x34, 0x00, - 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x40, 0x10, 0x10, 0x00, - 0xb7, 0x27, 0x02, 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x42, - 0x30, 0x10, 0x01, 0xab, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x63, 0x8d, - 0x00, 0x00, 0x00, 0x00, 0x45, 0x00, 0x43, 0x14, 0xf4, 0x00, 0x02, 0x24, 0x00, - 0x00, 0x42, 0xa2, 0xb3, 0x00, 0x02, 0x24, 0x01, 0x00, 0x42, 0xa2, 0xc3, 0x00, - 0x02, 0x24, 0x02, 0x00, 0x42, 0xa2, 0x95, 0x00, 0x02, 0x24, 0x03, 0x00, 0x42, - 0xa2, 0x04, 0x00, 0x52, 0x26, 0x08, 0x00, 0x82, 0x94, 0x00, 0x00, 0x00, 0x00, - 0x81, 0x00, 0x42, 0x2c, 0x02, 0x00, 0x40, 0x14, 0x80, 0x00, 0x02, 0x24, 0x08, - 0x00, 0x82, 0xa4, 0x00, 0xa0, 0x04, 0x3c, 0x30, 0x0c, 0x84, 0x34, 0x00, 0x00, - 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x42, 0x30, 0x02, 0x00, 0x03, - 0x24, 0x0e, 0x00, 0x43, 0x10, 0x00, 0xa0, 0x02, 0x3c, 0x00, 0x00, 0x82, 0x90, - 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x42, 0x30, 0x05, 0x00, 0x03, 0x24, 0x08, - 0x00, 0x43, 0x10, 0x00, 0xa0, 0x02, 0x3c, 0x00, 0x00, 0x82, 0x90, 0x00, 0x00, - 0x00, 0x00, 0xff, 0x00, 0x42, 0x30, 0x06, 0x00, 0x03, 0x24, 0x06, 0x00, 0x43, - 0x14, 0x21, 0x80, 0x00, 0x00, 0x00, 0xa0, 0x02, 0x3c, 0x30, 0x0c, 0x42, 0x34, - 0x08, 0x00, 0x42, 0x94, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x50, 0x30, 0x0a, - 0x00, 0x10, 0x26, 0x00, 0xa0, 0x04, 0x3c, 0x30, 0x0c, 0x84, 0x34, 0x21, 0x28, - 0x40, 0x02, 0x58, 0x01, 0x04, 0x0c, 0x21, 0x30, 0x00, 0x02, 0x10, 0x01, 0xac, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x82, 0x8d, 0x00, 0x00, 0x00, 0x00, - 0xc0, 0x89, 0x82, 0xaf, 0x04, 0x00, 0x82, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x70, - 0x00, 0x43, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x80, 0x10, 0x03, 0x00, 0x21, 0x10, - 0x43, 0x00, 0x40, 0x10, 0x02, 0x00, 0xac, 0x89, 0x83, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x21, 0x10, 0x43, 0x00, 0x5c, 0x92, 0x82, 0xaf, 0x21, 0x90, 0x50, 0x02, - 0x30, 0x01, 0xab, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0x4b, 0x02, 0x61, - 0x01, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xb7, 0x27, 0x10, 0x01, - 0xac, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x95, 0x8d, 0x40, 0x00, 0x82, - 0x8d, 0x00, 0x00, 0x00, 0x00, 0xac, 0x00, 0x40, 0x18, 0x21, 0x98, 0x00, 0x00, - 0x00, 0x00, 0xb1, 0x8e, 0x24, 0x00, 0xa2, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x9f, - 0x00, 0x40, 0x10, 0x21, 0xa0, 0x00, 0x00, 0xf0, 0xff, 0x6b, 0x26, 0x38, 0x01, - 0xab, 0xaf, 0x00, 0x20, 0x0c, 0x3c, 0x25, 0x30, 0x2c, 0x02, 0x0a, 0x00, 0xc2, - 0x94, 0x0c, 0x00, 0xc3, 0x94, 0xff, 0xff, 0x42, 0x30, 0x23, 0x10, 0x43, 0x00, - 0x0e, 0x00, 0x23, 0x96, 0x00, 0x00, 0x00, 0x00, 0x24, 0x28, 0x43, 0x00, 0x20, - 0x00, 0xa2, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, 0x18, 0x82, 0x02, 0x04, 0x80, - 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0x62, 0x00, 0x16, 0x00, 0x40, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x2b, 0x10, 0x62, 0x00, 0x11, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x80, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0xa4, 0x00, 0x0c, 0x00, - 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xc2, 0x94, 0x08, 0x80, 0x83, - 0x97, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x43, 0x00, 0x0e, 0x00, 0x23, 0x96, - 0x00, 0x00, 0x00, 0x00, 0x24, 0x10, 0x43, 0x00, 0x0a, 0x00, 0xc2, 0xa4, 0x0e, - 0x00, 0x22, 0x96, 0x00, 0x00, 0x00, 0x00, 0x24, 0x28, 0x44, 0x00, 0x1e, 0x00, - 0x24, 0x96, 0x78, 0x00, 0x22, 0x96, 0x7a, 0x00, 0x23, 0x96, 0x00, 0x00, 0x00, - 0x00, 0x23, 0x10, 0x43, 0x00, 0xff, 0xff, 0x42, 0x30, 0x23, 0x20, 0x82, 0x00, - 0x2b, 0x10, 0x85, 0x00, 0x02, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, - 0x28, 0x80, 0x00, 0x13, 0x00, 0xa0, 0x10, 0x09, 0x00, 0xa2, 0x2c, 0x05, 0x00, - 0x40, 0x14, 0x01, 0x00, 0xa2, 0x24, 0x00, 0x01, 0xa2, 0x2c, 0x02, 0x00, 0x40, - 0x14, 0x02, 0x00, 0xa2, 0x24, 0x03, 0x00, 0xa2, 0x24, 0x21, 0x28, 0x40, 0x00, - 0x00, 0x16, 0x13, 0x00, 0x00, 0x1c, 0x14, 0x00, 0x21, 0x10, 0x43, 0x00, 0x21, - 0x10, 0x45, 0x00, 0x00, 0x00, 0xe2, 0xae, 0x04, 0x00, 0xf7, 0x26, 0x01, 0x00, - 0xd6, 0x26, 0x20, 0x01, 0xab, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x58, 0x65, - 0x01, 0x20, 0x01, 0xab, 0xaf, 0x00, 0xa0, 0x02, 0x3c, 0x10, 0x0d, 0x42, 0x94, - 0x00, 0xa0, 0x03, 0x3c, 0x12, 0x0d, 0x63, 0x94, 0xff, 0xff, 0x42, 0x30, 0x0a, - 0x00, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x10, 0x3c, 0x10, 0x0d, - 0x10, 0x36, 0x81, 0x03, 0x04, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x96, 0x02, 0x00, 0x03, 0x96, 0xff, 0xff, 0x42, 0x30, 0xfa, 0xff, 0x43, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x22, 0x96, 0x00, 0x00, 0x00, 0x00, 0x13, - 0x00, 0x40, 0x10, 0x00, 0x20, 0x0c, 0x3c, 0x06, 0x00, 0xd3, 0x13, 0x00, 0x00, - 0x00, 0x00, 0x38, 0x01, 0xac, 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, - 0xa2, 0x01, 0x00, 0x52, 0x26, 0x21, 0xf0, 0x60, 0x02, 0x08, 0x00, 0xa2, 0x8e, - 0x21, 0x20, 0x20, 0x02, 0x09, 0xf8, 0x40, 0x00, 0x21, 0x28, 0x40, 0x02, 0x21, - 0x90, 0x42, 0x02, 0x2e, 0x00, 0x20, 0xa6, 0x30, 0x01, 0xab, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x2b, 0x10, 0x4b, 0x02, 0xe7, 0x00, 0x40, 0x10, 0x00, 0x20, 0x0c, - 0x3c, 0x25, 0x10, 0x2c, 0x02, 0x12, 0x00, 0x43, 0x94, 0x14, 0x00, 0x42, 0x94, - 0xff, 0xff, 0x63, 0x30, 0x23, 0x28, 0x62, 0x00, 0x16, 0x00, 0x24, 0x96, 0x00, - 0x00, 0x00, 0x00, 0x24, 0x28, 0xa4, 0x00, 0x7c, 0x00, 0x22, 0x96, 0x7e, 0x00, - 0x23, 0x96, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0x43, 0x00, 0x00, 0x14, 0x02, - 0x00, 0x03, 0x14, 0x02, 0x00, 0x23, 0x10, 0x45, 0x00, 0x82, 0x20, 0x04, 0x00, - 0x2a, 0x20, 0x82, 0x00, 0x19, 0x00, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x06, - 0x00, 0xd3, 0x13, 0x00, 0x00, 0x00, 0x00, 0x38, 0x01, 0xab, 0x93, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x4b, 0xa2, 0x01, 0x00, 0x52, 0x26, 0x21, 0xf0, 0x60, - 0x02, 0x7c, 0x00, 0x22, 0x96, 0x00, 0x00, 0x00, 0x00, 0x23, 0x28, 0x45, 0x00, - 0x7e, 0x00, 0x25, 0xa6, 0xa0, 0x00, 0x82, 0x26, 0x00, 0x00, 0x42, 0xa2, 0x01, - 0x00, 0x52, 0x26, 0x00, 0x00, 0x45, 0xa2, 0x01, 0x00, 0x52, 0x26, 0x02, 0x12, - 0x05, 0x00, 0x00, 0x00, 0x42, 0xa2, 0x01, 0x00, 0x52, 0x26, 0x30, 0x01, 0xac, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0x4c, 0x02, 0xbc, 0x00, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x94, 0x26, 0x24, 0x00, 0xa2, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x2b, 0x10, 0x82, 0x02, 0x65, 0xff, 0x40, 0x14, 0x80, 0x00, - 0x31, 0x26, 0x01, 0x00, 0x73, 0x26, 0x10, 0x01, 0xab, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x40, 0x00, 0x62, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x62, 0x02, - 0x56, 0xff, 0x40, 0x14, 0x2c, 0x00, 0xb5, 0x26, 0x34, 0x00, 0xc0, 0x12, 0x00, - 0x00, 0x00, 0x00, 0x30, 0x01, 0xac, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x23, 0x60, - 0x92, 0x01, 0x28, 0x01, 0xac, 0xaf, 0x28, 0x01, 0xaa, 0x8f, 0x20, 0x01, 0xab, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x8b, 0x01, 0x2a, 0x00, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x28, 0x01, 0xa7, 0x8f, 0x21, 0x20, 0xc0, 0x02, 0x21, - 0x40, 0x00, 0x00, 0x1a, 0x00, 0xe4, 0x00, 0x02, 0x00, 0x80, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x0d, 0x00, 0x07, 0x00, 0xff, 0xff, 0x01, 0x24, 0x04, 0x00, 0x81, - 0x14, 0x00, 0x80, 0x01, 0x3c, 0x02, 0x00, 0xe1, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x06, 0x00, 0x12, 0x60, 0x00, 0x00, 0x28, 0x01, 0xac, 0xaf, 0x21, - 0x48, 0x80, 0x00, 0x21, 0x38, 0x40, 0x01, 0x21, 0x20, 0xc0, 0x02, 0x10, 0x00, - 0xa6, 0x27, 0x0d, 0x00, 0xc0, 0x1a, 0x21, 0x28, 0x00, 0x00, 0x00, 0x00, 0xc3, - 0x94, 0x28, 0x01, 0xab, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x63, 0x01, - 0x03, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x23, 0x38, 0xe3, 0x00, 0xff, - 0xff, 0x84, 0x24, 0x01, 0x00, 0xa5, 0x24, 0x2a, 0x10, 0xb6, 0x00, 0xf5, 0xff, - 0x40, 0x14, 0x04, 0x00, 0xc6, 0x24, 0x07, 0x00, 0x80, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x05, 0x00, 0x89, 0x10, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x25, - 0x04, 0x00, 0x02, 0x29, 0xdb, 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x28, - 0x01, 0xac, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x82, 0x29, 0x09, 0x00, - 0x40, 0x10, 0x40, 0x18, 0x16, 0x00, 0x18, 0x01, 0xab, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x23, 0x10, 0x4b, 0x02, 0x21, 0x10, 0x43, 0x00, 0x2c, 0x01, 0x42, 0x28, - 0x6f, 0x00, 0x40, 0x10, 0x02, 0x00, 0x0c, 0x24, 0x28, 0x01, 0xac, 0xaf, 0x10, - 0x00, 0xb7, 0x27, 0x69, 0x00, 0xc0, 0x1a, 0x21, 0xa8, 0x00, 0x00, 0x00, 0x00, - 0xf1, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x03, 0x26, 0x11, 0x00, 0x03, 0x14, 0x11, - 0x00, 0xff, 0x00, 0x45, 0x30, 0xff, 0xff, 0x31, 0x32, 0x10, 0x01, 0xab, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x63, 0x8d, 0x40, 0x10, 0x04, 0x00, 0x21, - 0x10, 0x44, 0x00, 0x80, 0x10, 0x02, 0x00, 0x23, 0x10, 0x44, 0x00, 0x80, 0x10, - 0x02, 0x00, 0x21, 0x10, 0x43, 0x00, 0xc0, 0x19, 0x05, 0x00, 0x00, 0x00, 0x42, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x21, 0xa0, 0x62, 0x00, 0x01, 0x00, 0x02, 0x24, - 0x05, 0x00, 0xc4, 0x13, 0x4b, 0x00, 0x82, 0xa2, 0xf0, 0xff, 0x82, 0x24, 0x00, - 0x00, 0x42, 0xa2, 0x01, 0x00, 0x52, 0x26, 0x21, 0xf0, 0x80, 0x00, 0x28, 0x01, - 0xac, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x91, 0x01, 0x04, 0x00, 0x40, - 0x10, 0x0a, 0x00, 0x22, 0x2a, 0x28, 0x01, 0xb1, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x0a, 0x00, 0x22, 0x2a, 0x08, 0x00, 0x40, 0x10, 0x02, 0x01, 0x22, 0x2a, 0xff, - 0xff, 0x31, 0x26, 0xff, 0xff, 0x22, 0x26, 0x00, 0x11, 0x02, 0x00, 0x21, 0x10, - 0x45, 0x00, 0x00, 0x00, 0x42, 0xa2, 0x3d, 0x06, 0x04, 0x08, 0x01, 0x00, 0x52, - 0x26, 0x06, 0x00, 0x40, 0x10, 0x80, 0xff, 0xa2, 0x24, 0xfe, 0xff, 0x31, 0x26, - 0x00, 0x00, 0x42, 0xa2, 0x01, 0x00, 0x51, 0xa2, 0x3d, 0x06, 0x04, 0x08, 0x02, - 0x00, 0x52, 0x26, 0xfd, 0xff, 0x31, 0x26, 0x90, 0xff, 0xa2, 0x24, 0x00, 0x00, - 0x42, 0xa2, 0x01, 0x00, 0x51, 0xa2, 0x03, 0x12, 0x11, 0x00, 0x02, 0x00, 0x42, - 0xa2, 0x03, 0x00, 0x52, 0x26, 0x78, 0x00, 0x82, 0x96, 0x00, 0x00, 0x00, 0x00, - 0x21, 0x10, 0x51, 0x00, 0x78, 0x00, 0x82, 0xa6, 0x0e, 0x00, 0x83, 0x96, 0x00, - 0x20, 0x0b, 0x3c, 0x25, 0x98, 0x8b, 0x02, 0x0c, 0x00, 0x62, 0x96, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x42, 0x30, 0xff, 0xff, 0x42, 0x24, 0x23, 0x80, 0x62, - 0x00, 0x2a, 0x10, 0x30, 0x02, 0x0e, 0x00, 0x40, 0x14, 0x00, 0x20, 0x0c, 0x3c, - 0x0c, 0x00, 0x64, 0x96, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x84, 0x30, 0x3c, - 0x00, 0x82, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, 0x82, 0x00, 0x21, 0x28, - 0x40, 0x02, 0x58, 0x01, 0x04, 0x0c, 0x21, 0x30, 0x00, 0x02, 0x21, 0x90, 0x50, - 0x02, 0x23, 0x88, 0x30, 0x02, 0x0c, 0x00, 0x60, 0xa6, 0x00, 0x20, 0x0c, 0x3c, - 0x25, 0x80, 0x8c, 0x02, 0x0c, 0x00, 0x04, 0x96, 0x00, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x84, 0x30, 0x3c, 0x00, 0x82, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, - 0x82, 0x00, 0x21, 0x28, 0x40, 0x02, 0x58, 0x01, 0x04, 0x0c, 0x21, 0x30, 0x20, - 0x02, 0x21, 0x90, 0x51, 0x02, 0x0c, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, - 0x21, 0x10, 0x51, 0x00, 0x0c, 0x00, 0x02, 0xa6, 0x01, 0x00, 0xb5, 0x26, 0x2a, - 0x10, 0xb6, 0x02, 0x99, 0xff, 0x40, 0x14, 0x04, 0x00, 0xf7, 0x26, 0x18, 0x01, - 0xab, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0x4b, 0x02, 0x84, 0x01, 0xbf, - 0x8f, 0x80, 0x01, 0xbe, 0x8f, 0x7c, 0x01, 0xb7, 0x8f, 0x78, 0x01, 0xb6, 0x8f, - 0x74, 0x01, 0xb5, 0x8f, 0x70, 0x01, 0xb4, 0x8f, 0x6c, 0x01, 0xb3, 0x8f, 0x68, - 0x01, 0xb2, 0x8f, 0x64, 0x01, 0xb1, 0x8f, 0x60, 0x01, 0xb0, 0x8f, 0x08, 0x00, - 0xe0, 0x03, 0x88, 0x01, 0xbd, 0x27, 0x03, 0x00, 0xa3, 0x90, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1a, 0x03, 0x00, 0x02, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, 0x00, - 0x21, 0x18, 0x62, 0x00, 0x01, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0f, - 0x00, 0x45, 0x30, 0x01, 0x00, 0x02, 0x24, 0x05, 0x00, 0xa2, 0x10, 0x0e, 0x00, - 0x02, 0x24, 0x05, 0x00, 0xa2, 0x10, 0x21, 0x10, 0x00, 0x00, 0x8f, 0x06, 0x04, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x8e, 0x06, 0x04, 0x08, 0x1e, 0x00, 0x83, 0xa4, - 0x78, 0x00, 0x83, 0xa4, 0x01, 0x00, 0x02, 0x24, 0x08, 0x00, 0xe0, 0x03, 0x00, - 0x00, 0x00, 0x00, 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x48, 0x00, - 0x86, 0x90, 0x65, 0x00, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x03, - 0x00, 0x21, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x23, 0x10, 0x43, 0x00, - 0x80, 0x10, 0x02, 0x00, 0x11, 0x80, 0x03, 0x3c, 0x21, 0x18, 0x62, 0x00, 0xb8, - 0x90, 0x63, 0x8c, 0x06, 0x00, 0x02, 0x24, 0x06, 0x00, 0x62, 0x14, 0x09, 0x00, - 0xc2, 0x28, 0x08, 0x00, 0xc2, 0x28, 0x05, 0x00, 0x40, 0x14, 0x01, 0x00, 0x02, - 0x24, 0xaa, 0x06, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x40, 0x10, - 0x01, 0x00, 0x02, 0x24, 0x7b, 0x06, 0x04, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x10, - 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x28, 0xff, 0xbd, 0x27, 0xd4, 0x00, 0xbf, 0xaf, 0xd0, 0x00, 0xbe, - 0xaf, 0xcc, 0x00, 0xb7, 0xaf, 0xc8, 0x00, 0xb6, 0xaf, 0xc4, 0x00, 0xb5, 0xaf, - 0xc0, 0x00, 0xb4, 0xaf, 0xbc, 0x00, 0xb3, 0xaf, 0xb8, 0x00, 0xb2, 0xaf, 0xb4, - 0x00, 0xb1, 0xaf, 0xb0, 0x00, 0xb0, 0xaf, 0x21, 0xb0, 0x80, 0x00, 0x21, 0x20, - 0xa0, 0x00, 0x44, 0x00, 0xd2, 0x8e, 0x0c, 0x00, 0xd1, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x06, 0x00, 0x40, 0x12, 0x21, 0x38, 0x00, 0x00, 0x66, 0x00, 0x20, 0xa2, - 0x01, 0x00, 0xe7, 0x24, 0x2b, 0x10, 0xf2, 0x00, 0xfc, 0xff, 0x40, 0x14, 0x80, - 0x00, 0x31, 0x26, 0x21, 0x98, 0x80, 0x00, 0x21, 0x30, 0x66, 0x02, 0xa0, 0x00, - 0xa6, 0xaf, 0x08, 0x00, 0xd5, 0x8e, 0x2b, 0x10, 0x66, 0x02, 0x2f, 0x01, 0x40, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x1e, 0x3c, 0x00, 0xa0, 0x17, 0x3c, - 0x30, 0x0c, 0xf7, 0x36, 0x00, 0x00, 0x62, 0x92, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x19, 0x02, 0x00, 0x10, 0x00, 0x62, 0x2c, 0x1f, 0x01, 0x40, 0x10, 0x80, 0x10, - 0x03, 0x00, 0x10, 0x80, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0x80, 0x7c, 0x22, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x62, 0x92, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x47, 0x30, 0x00, - 0x00, 0x62, 0x92, 0x00, 0x00, 0x00, 0x00, 0x02, 0x11, 0x02, 0x00, 0x01, 0x00, - 0x52, 0x24, 0xf5, 0x06, 0x04, 0x08, 0x01, 0x00, 0x73, 0x26, 0x00, 0x00, 0x62, - 0x92, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x47, 0x30, 0x01, 0x00, 0x72, 0x92, - 0x00, 0x00, 0x00, 0x00, 0xf5, 0x06, 0x04, 0x08, 0x02, 0x00, 0x73, 0x26, 0x00, - 0x00, 0x62, 0x92, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x47, 0x30, 0x02, 0x00, - 0x62, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x02, 0x00, 0x01, 0x00, 0x63, - 0x92, 0x00, 0x00, 0x00, 0x00, 0x21, 0x90, 0x43, 0x00, 0x03, 0x00, 0x73, 0x26, - 0x24, 0x00, 0xa2, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0xe2, 0x00, 0x03, - 0x00, 0x40, 0x14, 0xc0, 0x19, 0x07, 0x00, 0xf5, 0x07, 0x04, 0x08, 0x21, 0x98, - 0x72, 0x02, 0x00, 0x00, 0xa2, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, 0x88, 0x62, - 0x00, 0x01, 0x00, 0x08, 0x24, 0x66, 0x00, 0x28, 0xa2, 0x25, 0x18, 0x3e, 0x02, - 0x14, 0x00, 0x62, 0x94, 0x12, 0x00, 0x63, 0x94, 0xff, 0xff, 0x42, 0x30, 0x23, - 0x10, 0x43, 0x00, 0xff, 0xff, 0x42, 0x24, 0x16, 0x00, 0x23, 0x96, 0x00, 0x00, - 0x00, 0x00, 0x24, 0x10, 0x43, 0x00, 0x2a, 0x10, 0x52, 0x00, 0xf4, 0x00, 0x40, - 0x14, 0x0d, 0x00, 0x02, 0x24, 0x7c, 0x00, 0x22, 0x96, 0x00, 0x00, 0x00, 0x00, - 0x21, 0x10, 0x52, 0x00, 0x7c, 0x00, 0x22, 0xa6, 0x16, 0x00, 0x23, 0x96, 0x25, - 0xa0, 0x3e, 0x02, 0x12, 0x00, 0x82, 0x96, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x42, 0x30, 0xff, 0xff, 0x42, 0x24, 0x23, 0x80, 0x62, 0x00, 0x2a, 0x10, 0x50, - 0x02, 0x0c, 0x00, 0x40, 0x14, 0x21, 0x20, 0x60, 0x02, 0x12, 0x00, 0x85, 0x96, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xa5, 0x30, 0x38, 0x00, 0x22, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x21, 0x28, 0xa2, 0x00, 0x58, 0x01, 0x04, 0x0c, 0x21, 0x30, - 0x00, 0x02, 0x21, 0x98, 0x70, 0x02, 0x23, 0x90, 0x50, 0x02, 0x12, 0x00, 0x80, - 0xa6, 0x25, 0x80, 0x3e, 0x02, 0x12, 0x00, 0x05, 0x96, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0xa5, 0x30, 0x38, 0x00, 0x22, 0x8e, 0x21, 0x20, 0x60, 0x02, 0x21, - 0x28, 0xa2, 0x00, 0x58, 0x01, 0x04, 0x0c, 0x21, 0x30, 0x40, 0x02, 0x21, 0x98, - 0x72, 0x02, 0x12, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x52, - 0x00, 0xf5, 0x07, 0x04, 0x08, 0x12, 0x00, 0x02, 0xa6, 0x00, 0x00, 0x62, 0x92, - 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x47, 0x30, 0x24, 0x00, 0xa2, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x2b, 0x10, 0xe2, 0x00, 0x53, 0x00, 0x40, 0x10, 0xc0, 0x19, - 0x07, 0x00, 0x00, 0x00, 0xa2, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, 0x88, 0x62, - 0x00, 0x02, 0x00, 0x72, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0x12, 0x00, - 0x01, 0x00, 0x62, 0x92, 0x00, 0x00, 0x00, 0x00, 0x21, 0x90, 0x42, 0x02, 0x78, - 0x00, 0x22, 0x96, 0x00, 0x00, 0x00, 0x00, 0x23, 0x20, 0x52, 0x00, 0x7a, 0x00, - 0x23, 0x96, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0x43, 0x00, 0xff, 0xff, 0x84, - 0x30, 0xff, 0xff, 0x42, 0x30, 0x2b, 0x10, 0x44, 0x00, 0xb0, 0x00, 0x40, 0x14, - 0x11, 0x00, 0x02, 0x24, 0x7a, 0x00, 0x32, 0xa6, 0x78, 0x00, 0x22, 0x96, 0x00, - 0x00, 0x00, 0x00, 0x3a, 0x00, 0x42, 0x16, 0x25, 0x10, 0x3e, 0x02, 0x0a, 0x00, - 0x43, 0x94, 0x0c, 0x00, 0x42, 0x94, 0xff, 0xff, 0x63, 0x30, 0x35, 0x00, 0x62, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x07, 0x04, 0x08, 0x4b, 0x00, 0x20, 0xa2, - 0x00, 0x00, 0x62, 0x92, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x47, 0x30, 0x24, - 0x00, 0xa2, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0xe2, 0x00, 0x03, 0x00, - 0x40, 0x14, 0xc0, 0x11, 0x07, 0x00, 0xf5, 0x07, 0x04, 0x08, 0x04, 0x00, 0x73, - 0x26, 0x00, 0x00, 0xa4, 0x8e, 0x0c, 0x00, 0xa3, 0x8e, 0x21, 0x20, 0x44, 0x00, - 0x09, 0xf8, 0x60, 0x00, 0x21, 0x28, 0x60, 0x02, 0x88, 0x00, 0x40, 0x14, 0x04, - 0x00, 0x73, 0x26, 0x00, 0x08, 0x04, 0x08, 0x0b, 0x00, 0x02, 0x24, 0x00, 0x00, - 0x62, 0x92, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x47, 0x30, 0x24, 0x00, 0xa2, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0xe2, 0x00, 0x18, 0x00, 0x40, 0x10, - 0xc0, 0x19, 0x07, 0x00, 0x00, 0x00, 0xa2, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, - 0x88, 0x62, 0x00, 0x25, 0x20, 0x3e, 0x02, 0x4f, 0x00, 0x82, 0x90, 0x01, 0x00, - 0x63, 0x92, 0x00, 0x00, 0x00, 0x00, 0x25, 0x10, 0x43, 0x00, 0x4f, 0x00, 0x82, - 0xa0, 0x02, 0x00, 0x63, 0x92, 0x54, 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, - 0x26, 0x18, 0x62, 0x00, 0x56, 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, 0x24, - 0x18, 0x62, 0x00, 0x58, 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, 0x25, 0x10, - 0x43, 0x00, 0x58, 0x00, 0x82, 0xa0, 0x02, 0x00, 0x62, 0x92, 0x00, 0x00, 0x00, - 0x00, 0x54, 0x00, 0x82, 0xa0, 0xf5, 0x07, 0x04, 0x08, 0x03, 0x00, 0x73, 0x26, - 0x00, 0x00, 0x62, 0x92, 0x00, 0x00, 0x00, 0x00, 0x10, 0xff, 0x43, 0x24, 0x10, - 0x00, 0x62, 0x2c, 0x5d, 0x00, 0x40, 0x10, 0x80, 0x10, 0x03, 0x00, 0x10, 0x80, - 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0xc0, 0x7c, 0x22, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0x92, - 0x00, 0x00, 0x00, 0x00, 0x10, 0xff, 0x52, 0x26, 0x40, 0x00, 0xc2, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x2a, 0x10, 0x42, 0x02, 0x09, 0x00, 0x40, 0x10, 0x40, 0x10, - 0x12, 0x00, 0x21, 0x10, 0x52, 0x00, 0x80, 0x10, 0x02, 0x00, 0x23, 0x10, 0x52, - 0x00, 0x80, 0x10, 0x02, 0x00, 0x08, 0x00, 0xc3, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0xf1, 0x07, 0x04, 0x08, 0x21, 0xa8, 0x43, 0x00, 0x90, 0x81, 0x95, 0x27, 0xf5, - 0x07, 0x04, 0x08, 0x01, 0x00, 0x73, 0x26, 0x00, 0x00, 0x63, 0x92, 0xf4, 0x00, - 0x02, 0x24, 0x4d, 0x00, 0x62, 0x14, 0x0c, 0x00, 0x02, 0x24, 0x01, 0x00, 0x63, - 0x92, 0xb3, 0x00, 0x02, 0x24, 0x49, 0x00, 0x62, 0x14, 0x0c, 0x00, 0x02, 0x24, - 0x02, 0x00, 0x63, 0x92, 0xc3, 0x00, 0x02, 0x24, 0x45, 0x00, 0x62, 0x14, 0x0c, - 0x00, 0x02, 0x24, 0x03, 0x00, 0x63, 0x92, 0x95, 0x00, 0x02, 0x24, 0x41, 0x00, - 0x62, 0x14, 0x0c, 0x00, 0x02, 0x24, 0x04, 0x00, 0x73, 0x26, 0x21, 0x20, 0x60, - 0x02, 0x10, 0x00, 0xa5, 0x27, 0x58, 0x01, 0x04, 0x0c, 0x0a, 0x00, 0x06, 0x24, - 0x10, 0x00, 0xa2, 0x93, 0x01, 0x00, 0x08, 0x24, 0x02, 0x00, 0x48, 0x14, 0x21, - 0x90, 0x00, 0x00, 0x18, 0x00, 0xb2, 0x97, 0xc0, 0x89, 0x83, 0x8f, 0x4c, 0x00, - 0xc2, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2c, 0xff, 0x62, 0x14, 0x0a, 0x00, 0x52, - 0x26, 0x00, 0x00, 0xe2, 0x92, 0x00, 0x00, 0x00, 0x00, 0x28, 0xff, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe3, 0x92, 0x10, 0x00, 0xa2, 0x93, 0x00, - 0x00, 0x00, 0x00, 0x23, 0xff, 0x43, 0x14, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0xe3, 0x92, 0x12, 0x00, 0xa2, 0x93, 0x00, 0x00, 0x00, 0x00, 0x1e, 0xff, 0x43, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0xa3, 0x8f, 0x04, 0x00, 0xe2, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x19, 0xff, 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0xe3, 0x96, 0x18, 0x00, 0xa2, 0x97, 0x00, 0x00, 0x00, 0x00, 0x14, 0xff, - 0x43, 0x14, 0x21, 0x20, 0x60, 0x02, 0x00, 0xa0, 0x05, 0x3c, 0x30, 0x0c, 0xa5, - 0x34, 0x58, 0x01, 0x04, 0x0c, 0x21, 0x30, 0x40, 0x02, 0x00, 0x00, 0xe0, 0xa2, - 0xc0, 0x89, 0x80, 0xaf, 0xf5, 0x07, 0x04, 0x08, 0x21, 0x98, 0x72, 0x02, 0x00, - 0x08, 0x04, 0x08, 0x21, 0x10, 0x00, 0x00, 0xf5, 0x07, 0x04, 0x08, 0x01, 0x00, - 0x73, 0x26, 0x00, 0x08, 0x04, 0x08, 0x0a, 0x00, 0x02, 0x24, 0xa0, 0x00, 0xa8, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0x68, 0x02, 0xd6, 0xfe, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x26, - 0x10, 0x68, 0x02, 0x2b, 0x10, 0x02, 0x00, 0x23, 0x10, 0x02, 0x00, 0x0e, 0x00, - 0x42, 0x30, 0xd4, 0x00, 0xbf, 0x8f, 0xd0, 0x00, 0xbe, 0x8f, 0xcc, 0x00, 0xb7, - 0x8f, 0xc8, 0x00, 0xb6, 0x8f, 0xc4, 0x00, 0xb5, 0x8f, 0xc0, 0x00, 0xb4, 0x8f, - 0xbc, 0x00, 0xb3, 0x8f, 0xb8, 0x00, 0xb2, 0x8f, 0xb4, 0x00, 0xb1, 0x8f, 0xb0, - 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0xd8, 0x00, 0xbd, 0x27, 0xe0, 0xff, - 0xbd, 0x27, 0x18, 0x00, 0xbf, 0xaf, 0x48, 0x9a, 0x84, 0x8f, 0x1f, 0x02, 0x04, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x03, 0x3c, 0x30, 0x0c, 0x63, 0x34, - 0x00, 0x00, 0x62, 0x90, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x40, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x62, 0x90, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, - 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x17, 0x04, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0xac, 0x89, 0x8a, 0x8f, 0x00, 0x80, 0x08, 0x3c, 0x00, 0x10, 0x08, 0x35, - 0x58, 0x92, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x40, 0x18, 0x21, - 0x48, 0x00, 0x00, 0x00, 0x20, 0x0d, 0x3c, 0x00, 0xa0, 0x0b, 0x3c, 0x18, 0x0d, - 0x6b, 0x35, 0x00, 0xa0, 0x0c, 0x3c, 0x00, 0x08, 0x8c, 0x35, 0x25, 0x28, 0x0d, - 0x01, 0x55, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x42, 0x34, - 0x4f, 0x00, 0xa3, 0x90, 0x00, 0x00, 0x00, 0x00, 0x24, 0x20, 0x62, 0x00, 0x0a, - 0x00, 0xa2, 0x94, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x46, 0x30, 0x0c, 0x00, - 0xa2, 0x94, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x43, 0x30, 0x4c, 0x00, 0xa2, - 0x90, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x07, 0x00, 0xc3, 0x14, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x02, 0x91, 0x00, - 0x00, 0x00, 0x00, 0x03, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x84, 0x34, 0x4c, 0x00, 0xa0, 0xa0, 0x4d, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, - 0x00, 0x0b, 0x00, 0x40, 0x10, 0x23, 0x18, 0xc3, 0x00, 0x0e, 0x00, 0x02, 0x95, - 0x00, 0x00, 0x00, 0x00, 0x24, 0x18, 0x62, 0x00, 0x18, 0x00, 0x02, 0x95, 0x00, - 0x00, 0x00, 0x00, 0x2a, 0x10, 0x43, 0x00, 0x03, 0x00, 0x40, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x84, 0x34, 0x4d, 0x00, 0xa0, 0xa0, 0x12, 0x00, 0xa2, - 0x94, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x46, 0x30, 0x14, 0x00, 0xa2, 0x94, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x43, 0x30, 0x4e, 0x00, 0xa2, 0x90, 0x00, - 0x00, 0x00, 0x00, 0x19, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, - 0xc3, 0x10, 0x23, 0x18, 0xc3, 0x00, 0x16, 0x00, 0x02, 0x95, 0x00, 0x00, 0x00, - 0x00, 0x24, 0x18, 0x62, 0x00, 0x42, 0x10, 0x02, 0x00, 0x2a, 0x10, 0x43, 0x00, - 0x0d, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xa2, 0x94, 0x00, - 0x00, 0x00, 0x00, 0x23, 0x10, 0x42, 0x01, 0x22, 0x00, 0xa3, 0x94, 0xff, 0xff, - 0x42, 0x30, 0x2b, 0x10, 0x43, 0x00, 0x05, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x66, 0x00, 0x02, 0x91, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0xa0, 0xa0, 0x08, 0x00, 0x84, 0x34, 0x20, - 0x00, 0xaa, 0xa4, 0x54, 0x00, 0xa3, 0x90, 0x57, 0x00, 0xa2, 0x90, 0x00, 0x00, - 0x00, 0x00, 0x26, 0x18, 0x62, 0x00, 0x56, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, - 0x00, 0x24, 0x18, 0x62, 0x00, 0x58, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, 0x00, - 0x25, 0x10, 0x43, 0x00, 0x02, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x20, - 0x00, 0x84, 0x34, 0x26, 0x00, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x62, 0x95, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x46, 0x30, 0x02, 0x00, 0x62, - 0x95, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x43, 0x30, 0x25, 0x38, 0xcc, 0x00, - 0x04, 0x00, 0xc6, 0x24, 0xfc, 0x03, 0xc6, 0x30, 0x07, 0x00, 0xc3, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x4f, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x25, 0x10, - 0x44, 0x00, 0x4f, 0x00, 0xa2, 0xa0, 0xaa, 0x08, 0x04, 0x08, 0x01, 0x00, 0x29, - 0x25, 0x00, 0x00, 0xe9, 0xa0, 0x01, 0x00, 0xe4, 0xa0, 0x57, 0x00, 0xa2, 0x90, - 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x42, 0x30, 0x03, 0x00, 0xe2, 0xa0, 0x54, - 0x00, 0xa3, 0x90, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x63, 0x30, 0x58, 0x00, - 0xa4, 0x90, 0x26, 0x18, 0x62, 0x00, 0x25, 0x18, 0x64, 0x00, 0x58, 0x00, 0xa0, - 0xa0, 0x4f, 0x00, 0xa0, 0xa0, 0x26, 0x10, 0x43, 0x00, 0x02, 0x00, 0xe2, 0xa0, - 0x57, 0x00, 0xa2, 0xa0, 0x00, 0x00, 0x66, 0xa5, 0xaa, 0x08, 0x04, 0x08, 0x01, - 0x00, 0x29, 0x25, 0x54, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x57, 0x00, - 0xa2, 0xa0, 0x01, 0x00, 0x29, 0x25, 0x58, 0x92, 0x82, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x2a, 0x10, 0x22, 0x01, 0x7b, 0xff, 0x40, 0x14, 0x80, 0x00, 0x08, 0x25, - 0x00, 0xa0, 0x02, 0x3c, 0x04, 0x0e, 0x42, 0x94, 0x00, 0x00, 0x00, 0x00, 0x2b, - 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x8c, 0x82, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x42, 0x24, 0xa0, 0x8c, 0x82, 0xaf, 0x25, 0x00, 0x40, - 0x1c, 0x00, 0xa0, 0x02, 0x3c, 0x00, 0x0d, 0x42, 0x34, 0x00, 0x00, 0x42, 0x94, - 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x40, 0x14, 0x00, 0xa0, 0x02, 0x3c, 0x18, - 0x0d, 0x42, 0x34, 0x00, 0x00, 0x43, 0x94, 0x02, 0x00, 0x42, 0x94, 0xff, 0xff, - 0x63, 0x30, 0x16, 0x00, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x89, 0x84, - 0x8f, 0x16, 0x02, 0x04, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x05, 0xa2, 0x05, 0x3c, - 0x54, 0x92, 0x84, 0x97, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x86, 0x30, 0x00, - 0x00, 0xa6, 0xa4, 0x00, 0xa0, 0x03, 0x3c, 0x06, 0x0e, 0x63, 0x34, 0x00, 0x00, - 0x62, 0x94, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, - 0xa4, 0x00, 0x00, 0x62, 0x94, 0x01, 0x00, 0x84, 0x34, 0x00, 0x00, 0xa4, 0xa4, - 0x00, 0x00, 0xa6, 0xa4, 0x48, 0x9a, 0x84, 0x8f, 0x1f, 0x02, 0x04, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xa0, 0x02, 0x3c, 0x04, 0x0e, 0x42, 0x94, 0x00, 0x00, - 0x00, 0x00, 0xa0, 0x8c, 0x82, 0xaf, 0xc5, 0x18, 0x04, 0x0c, 0x0a, 0x00, 0x04, - 0x24, 0x18, 0x00, 0xbf, 0x8f, 0x20, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, - 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x80, 0xa4, 0x7a, 0x00, 0x80, 0xa4, 0x00, - 0x20, 0x02, 0x3c, 0x25, 0x10, 0x82, 0x00, 0x12, 0x00, 0x43, 0x94, 0x14, 0x00, - 0x42, 0x94, 0x00, 0x00, 0x00, 0x00, 0x23, 0x18, 0x62, 0x00, 0x16, 0x00, 0x82, - 0x94, 0x00, 0x00, 0x00, 0x00, 0x24, 0x18, 0x62, 0x00, 0x7c, 0x00, 0x83, 0xa4, - 0x7e, 0x00, 0x80, 0xa4, 0xee, 0x6f, 0x02, 0x24, 0x08, 0x00, 0xe0, 0x03, 0x2e, - 0x00, 0x82, 0xa4, 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x48, 0x00, - 0x85, 0x90, 0x65, 0x00, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x03, - 0x00, 0x21, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x23, 0x10, 0x43, 0x00, - 0x80, 0x10, 0x02, 0x00, 0x11, 0x80, 0x03, 0x3c, 0x21, 0x18, 0x62, 0x00, 0xb8, - 0x90, 0x63, 0x8c, 0x06, 0x00, 0x02, 0x24, 0x06, 0x00, 0x62, 0x14, 0x09, 0x00, - 0xa2, 0x28, 0x08, 0x00, 0xa2, 0x28, 0x07, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x0b, 0x09, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0xe4, 0x08, 0x04, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x10, - 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, - 0x00, 0x00, 0xc8, 0xff, 0xbd, 0x27, 0x34, 0x00, 0xbf, 0xaf, 0x30, 0x00, 0xb4, - 0xaf, 0x2c, 0x00, 0xb3, 0xaf, 0x28, 0x00, 0xb2, 0xaf, 0x24, 0x00, 0xb1, 0xaf, - 0x20, 0x00, 0xb0, 0xaf, 0x21, 0xa0, 0x80, 0x00, 0x08, 0x00, 0x92, 0x8e, 0x40, - 0x00, 0x82, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x40, 0x18, 0x21, 0x98, - 0x00, 0x00, 0x00, 0x00, 0x51, 0x8e, 0x24, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x0b, 0x00, 0x40, 0x10, 0x21, 0x80, 0x00, 0x00, 0x14, 0x00, 0x42, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x09, 0xf8, 0x40, 0x00, 0x21, 0x20, 0x20, 0x02, 0x01, - 0x00, 0x10, 0x26, 0x24, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, - 0x02, 0x02, 0xf7, 0xff, 0x40, 0x14, 0x80, 0x00, 0x31, 0x26, 0x01, 0x00, 0x73, - 0x26, 0x40, 0x00, 0x82, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x62, 0x02, - 0xec, 0xff, 0x40, 0x14, 0x2c, 0x00, 0x52, 0x26, 0x34, 0x00, 0xbf, 0x8f, 0x30, - 0x00, 0xb4, 0x8f, 0x2c, 0x00, 0xb3, 0x8f, 0x28, 0x00, 0xb2, 0x8f, 0x24, 0x00, - 0xb1, 0x8f, 0x20, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x38, 0x00, 0xbd, - 0x27, 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0xd0, 0x8c, 0x87, 0x27, - 0x23, 0x38, 0xa7, 0x00, 0x40, 0x19, 0x07, 0x00, 0x23, 0x18, 0x67, 0x00, 0x40, - 0x19, 0x03, 0x00, 0x21, 0x18, 0x67, 0x00, 0xc0, 0x10, 0x03, 0x00, 0x21, 0x18, - 0x62, 0x00, 0xc0, 0x13, 0x03, 0x00, 0x23, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, - 0x00, 0x21, 0x10, 0x47, 0x00, 0x23, 0x10, 0x02, 0x00, 0x83, 0x10, 0x02, 0x00, - 0x65, 0x00, 0x82, 0xa0, 0x48, 0x00, 0x86, 0xa0, 0x18, 0x00, 0xa2, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x09, 0xf8, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, - 0xbf, 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, - 0x00, 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x48, 0x00, 0x87, 0x90, - 0x65, 0x00, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x03, 0x00, 0x21, - 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x23, 0x10, 0x43, 0x00, 0x80, 0x10, - 0x02, 0x00, 0x11, 0x80, 0x03, 0x3c, 0x21, 0x18, 0x62, 0x00, 0xb8, 0x90, 0x63, - 0x8c, 0x06, 0x00, 0x02, 0x24, 0x06, 0x00, 0x62, 0x14, 0x09, 0x00, 0xe2, 0x28, - 0x08, 0x00, 0xe2, 0x28, 0x07, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6c, - 0x09, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x40, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x3b, 0x09, 0x04, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xbf, - 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, - 0xb0, 0xff, 0xbd, 0x27, 0x4c, 0x00, 0xbf, 0xaf, 0x48, 0x00, 0xbe, 0xaf, 0x44, - 0x00, 0xb7, 0xaf, 0x40, 0x00, 0xb6, 0xaf, 0x3c, 0x00, 0xb5, 0xaf, 0x38, 0x00, - 0xb4, 0xaf, 0x34, 0x00, 0xb3, 0xaf, 0x30, 0x00, 0xb2, 0xaf, 0x2c, 0x00, 0xb1, - 0xaf, 0x28, 0x00, 0xb0, 0xaf, 0x00, 0x80, 0x04, 0x3c, 0x00, 0x10, 0x84, 0x34, - 0x00, 0x80, 0x05, 0x3c, 0x0d, 0x0f, 0x04, 0x0c, 0x00, 0x80, 0xa5, 0x34, 0x00, - 0x80, 0x13, 0x3c, 0x00, 0x10, 0x73, 0x36, 0x10, 0x93, 0x95, 0x27, 0x00, 0x93, - 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x40, 0x18, 0x21, 0xb0, 0x00, - 0x00, 0x08, 0x00, 0xb0, 0x8e, 0x40, 0x00, 0xa2, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x52, 0x00, 0x40, 0x18, 0x21, 0xa0, 0x00, 0x00, 0x10, 0x80, 0x1e, 0x3c, 0xd0, - 0x23, 0xde, 0x27, 0x10, 0x80, 0x17, 0x3c, 0x54, 0x25, 0xf7, 0x26, 0x28, 0x00, - 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x43, 0x24, 0x16, 0x00, 0x62, - 0x2c, 0x2c, 0x00, 0x40, 0x10, 0x80, 0x10, 0x03, 0x00, 0x10, 0x80, 0x08, 0x3c, - 0x00, 0x7d, 0x08, 0x25, 0x21, 0x10, 0x48, 0x00, 0x00, 0x00, 0x42, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x13, 0xae, 0x10, 0x80, 0x02, 0x3c, 0x70, 0x0f, 0x42, 0x24, 0x08, 0x00, 0x02, - 0xae, 0x10, 0x80, 0x02, 0x3c, 0xec, 0x19, 0x42, 0x24, 0x0c, 0x00, 0x02, 0xae, - 0x10, 0x80, 0x02, 0x3c, 0xa4, 0x0a, 0x42, 0x24, 0x10, 0x00, 0x02, 0xae, 0x10, - 0x80, 0x02, 0x3c, 0x50, 0x09, 0x42, 0x24, 0x18, 0x00, 0x02, 0xae, 0x10, 0x80, - 0x02, 0x3c, 0x90, 0x23, 0x42, 0x24, 0x14, 0x00, 0x02, 0xae, 0x10, 0x80, 0x02, - 0x3c, 0xec, 0x24, 0x42, 0x24, 0xc6, 0x09, 0x04, 0x08, 0x1c, 0x00, 0x02, 0xae, - 0x00, 0x00, 0x13, 0xae, 0x10, 0x80, 0x08, 0x3c, 0xc4, 0x11, 0x08, 0x25, 0x08, - 0x00, 0x08, 0xae, 0x10, 0x80, 0x08, 0x3c, 0x44, 0x1a, 0x08, 0x25, 0x0c, 0x00, - 0x08, 0xae, 0x10, 0x80, 0x08, 0x3c, 0x90, 0x0d, 0x08, 0x25, 0x10, 0x00, 0x08, - 0xae, 0x10, 0x80, 0x08, 0x3c, 0x04, 0x0a, 0x08, 0x25, 0x18, 0x00, 0x08, 0xae, - 0x14, 0x00, 0x1e, 0xae, 0xc6, 0x09, 0x04, 0x08, 0x1c, 0x00, 0x17, 0xae, 0x0c, - 0x80, 0x84, 0x27, 0x24, 0x00, 0x04, 0x0c, 0x7d, 0x06, 0x05, 0x24, 0x24, 0x00, - 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x11, 0x03, 0x00, 0x21, 0x98, 0x62, - 0x02, 0x00, 0x00, 0x12, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x60, 0x10, - 0x21, 0x88, 0x00, 0x00, 0x1c, 0x00, 0x02, 0x8e, 0x21, 0x20, 0x40, 0x02, 0x21, - 0x28, 0x00, 0x02, 0x09, 0xf8, 0x40, 0x00, 0x21, 0x30, 0x20, 0x02, 0x01, 0x00, - 0x31, 0x26, 0x24, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0x22, - 0x02, 0xf6, 0xff, 0x40, 0x14, 0x80, 0x00, 0x52, 0x26, 0x01, 0x00, 0x94, 0x26, - 0x40, 0x00, 0xa2, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x82, 0x02, 0xb4, - 0xff, 0x40, 0x14, 0x2c, 0x00, 0x10, 0x26, 0x01, 0x00, 0xd6, 0x26, 0x00, 0x93, - 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0xc2, 0x02, 0xa5, 0xff, 0x40, - 0x14, 0x84, 0x00, 0xb5, 0x26, 0x58, 0x92, 0x85, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0xc0, 0x29, 0x05, 0x00, 0x00, 0x80, 0x02, 0x3c, 0x10, 0x10, 0x42, 0x34, 0x21, - 0x28, 0xa2, 0x00, 0x00, 0xa0, 0x02, 0x3c, 0x25, 0x28, 0xa2, 0x00, 0x50, 0x92, - 0x85, 0xaf, 0x21, 0x20, 0xa0, 0x00, 0x0d, 0x0f, 0x04, 0x0c, 0x0c, 0x04, 0xa5, - 0x24, 0x50, 0x92, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x04, 0x84, 0x24, - 0x0f, 0xa0, 0x05, 0x3c, 0x17, 0x0f, 0x04, 0x0c, 0x00, 0xf0, 0xa5, 0x34, 0x21, - 0x80, 0x40, 0x00, 0x60, 0x92, 0x84, 0x27, 0x01, 0x00, 0x05, 0x24, 0x10, 0x80, - 0x06, 0x3c, 0x30, 0x20, 0xc6, 0x24, 0x4a, 0x18, 0x04, 0x0c, 0x21, 0x38, 0x00, - 0x00, 0x60, 0x92, 0x84, 0x27, 0x65, 0x18, 0x04, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x58, 0x92, 0x82, 0x97, 0x00, 0xa0, 0x01, 0x3c, 0x02, 0x0c, 0x22, 0xa4, 0x00, - 0x93, 0x82, 0x97, 0x00, 0xa0, 0x01, 0x3c, 0x04, 0x0c, 0x22, 0xa4, 0x00, 0xa0, - 0x01, 0x3c, 0x06, 0x0c, 0x30, 0xa4, 0x00, 0xa0, 0x02, 0x3c, 0x80, 0x01, 0x42, - 0x34, 0x10, 0x00, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x82, 0x12, 0x02, 0x00, - 0x00, 0xa0, 0x01, 0x3c, 0x08, 0x0c, 0x22, 0xa4, 0x00, 0xa0, 0x03, 0x3c, 0x10, - 0x0d, 0x63, 0x34, 0x00, 0x00, 0x60, 0xa4, 0x02, 0x00, 0x60, 0xa4, 0x00, 0x04, - 0x02, 0x24, 0x04, 0x00, 0x62, 0xa4, 0xfc, 0x03, 0x04, 0x24, 0x06, 0x00, 0x64, - 0xa4, 0x00, 0xa0, 0x02, 0x3c, 0x18, 0x0d, 0x42, 0x34, 0x00, 0x00, 0x40, 0xa4, - 0x02, 0x00, 0x40, 0xa4, 0x00, 0x08, 0x03, 0x24, 0x04, 0x00, 0x43, 0xa4, 0x06, - 0x00, 0x44, 0xa4, 0x4c, 0x00, 0xbf, 0x8f, 0x48, 0x00, 0xbe, 0x8f, 0x44, 0x00, - 0xb7, 0x8f, 0x40, 0x00, 0xb6, 0x8f, 0x3c, 0x00, 0xb5, 0x8f, 0x38, 0x00, 0xb4, - 0x8f, 0x34, 0x00, 0xb3, 0x8f, 0x30, 0x00, 0xb2, 0x8f, 0x2c, 0x00, 0xb1, 0x8f, - 0x28, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x50, 0x00, 0xbd, 0x27, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x24, 0x54, 0x9a, 0x82, 0xaf, 0x01, 0x20, - 0x02, 0x24, 0xb0, 0x89, 0x82, 0xaf, 0x01, 0x24, 0x03, 0x24, 0x50, 0x9a, 0x83, - 0xaf, 0xa4, 0x89, 0x83, 0xaf, 0x01, 0x3f, 0x02, 0x24, 0x48, 0x9a, 0x82, 0xaf, - 0x58, 0x9a, 0x83, 0xaf, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe8, - 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x20, 0x80, 0x84, 0x27, 0x24, 0x00, - 0x04, 0x0c, 0x53, 0x00, 0x05, 0x24, 0x10, 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xbd, - 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xff, 0xbd, 0x27, - 0x10, 0x00, 0xbf, 0xaf, 0x20, 0x80, 0x84, 0x27, 0x24, 0x00, 0x04, 0x0c, 0x5f, - 0x00, 0x05, 0x24, 0x10, 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, - 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, - 0xaf, 0xa4, 0x1a, 0x04, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x10, 0x80, 0x02, 0x3c, - 0x08, 0x05, 0x42, 0x24, 0x82, 0x10, 0x02, 0x00, 0xff, 0x03, 0x04, 0x3c, 0xff, - 0xff, 0x84, 0x34, 0x24, 0x10, 0x44, 0x00, 0x00, 0x08, 0x03, 0x3c, 0x25, 0x10, - 0x43, 0x00, 0x00, 0x80, 0x01, 0x3c, 0x00, 0x00, 0x22, 0xac, 0x00, 0x80, 0x01, - 0x3c, 0x04, 0x00, 0x20, 0xac, 0x10, 0x80, 0x02, 0x3c, 0xe0, 0x02, 0x42, 0x24, - 0x82, 0x10, 0x02, 0x00, 0x24, 0x10, 0x44, 0x00, 0x25, 0x10, 0x43, 0x00, 0x00, - 0x80, 0x01, 0x3c, 0x80, 0x00, 0x22, 0xac, 0x00, 0x80, 0x01, 0x3c, 0x84, 0x00, - 0x20, 0xac, 0x10, 0x80, 0x04, 0x3c, 0x00, 0x00, 0x84, 0x24, 0x11, 0x80, 0x05, - 0x3c, 0xe8, 0x0e, 0x04, 0x0c, 0x50, 0x85, 0xa5, 0x24, 0xff, 0xff, 0x03, 0x24, - 0x04, 0x00, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0x20, 0x80, 0x84, 0x27, 0x24, - 0x00, 0x04, 0x0c, 0x79, 0x00, 0x05, 0x24, 0xa0, 0x19, 0x04, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xa0, 0x03, 0x3c, 0x20, 0x0c, 0x63, 0x90, 0x01, 0x00, 0x02, - 0x24, 0x05, 0x00, 0x62, 0x14, 0x05, 0xa2, 0x02, 0x3c, 0xe0, 0x00, 0x03, 0x24, - 0x54, 0x92, 0x83, 0xaf, 0x7c, 0x0a, 0x04, 0x08, 0xe0, 0x00, 0x03, 0x24, 0x81, - 0x00, 0x03, 0x24, 0x54, 0x92, 0x83, 0xaf, 0x81, 0x00, 0x03, 0x24, 0x00, 0x00, - 0x43, 0xa4, 0x34, 0x02, 0x04, 0x0c, 0x00, 0x03, 0x04, 0x24, 0x00, 0xa0, 0x02, - 0x3c, 0x30, 0x0c, 0x42, 0x34, 0x2c, 0x0a, 0x04, 0x0c, 0x00, 0x00, 0x40, 0xa0, - 0x34, 0x18, 0x04, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x0e, 0x04, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x72, 0x09, 0x04, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x60, 0x9a, - 0x84, 0x27, 0x21, 0x28, 0x00, 0x00, 0x10, 0x80, 0x06, 0x3c, 0x70, 0x40, 0xc6, - 0x24, 0x4a, 0x18, 0x04, 0x0c, 0x21, 0x38, 0x00, 0x00, 0x60, 0x9a, 0x84, 0x27, - 0x65, 0x18, 0x04, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x02, 0x24, 0x00, - 0xa0, 0x01, 0x3c, 0x20, 0x0d, 0x22, 0xa0, 0x00, 0xa0, 0x01, 0x3c, 0x00, 0x0c, - 0x22, 0xa0, 0x53, 0x00, 0x02, 0x24, 0x00, 0xa0, 0x01, 0x3c, 0x21, 0x0d, 0x22, - 0xa0, 0x00, 0xa0, 0x01, 0x3c, 0xf6, 0x18, 0x04, 0x0c, 0x01, 0x0c, 0x22, 0xa0, - 0x10, 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xe0, 0xff, 0xbd, 0x27, 0x1c, 0x00, 0xbf, 0xaf, 0x18, 0x00, 0xb2, - 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0xd0, 0x89, 0x87, 0x27, - 0x10, 0x93, 0x88, 0x27, 0xd0, 0x8c, 0x85, 0x27, 0x00, 0x80, 0x0b, 0x3c, 0x00, - 0x10, 0x6b, 0x35, 0x00, 0xa0, 0x0a, 0x3c, 0xd0, 0x0c, 0x4a, 0x35, 0x00, 0x00, - 0x42, 0x91, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x42, 0x30, 0xff, 0x00, 0x03, - 0x24, 0x6e, 0x01, 0x43, 0x10, 0x10, 0x00, 0x0e, 0x24, 0x1e, 0x00, 0x0f, 0x3c, - 0x80, 0x84, 0xef, 0x35, 0x01, 0x00, 0x0d, 0x24, 0x10, 0x80, 0x11, 0x3c, 0x60, - 0x7d, 0x31, 0x26, 0x15, 0x00, 0x10, 0x24, 0x16, 0x00, 0x19, 0x24, 0x0f, 0x00, - 0x18, 0x24, 0x00, 0x00, 0x42, 0x91, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x01, 0x40, - 0x14, 0x01, 0x00, 0x4a, 0x25, 0xa4, 0x8c, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x42, 0x28, 0x5a, 0x01, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x2c, - 0x00, 0xee, 0xac, 0x00, 0x00, 0x42, 0x91, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, - 0x49, 0x30, 0x68, 0x81, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x22, - 0x01, 0x51, 0x01, 0x40, 0x10, 0x01, 0x00, 0x4a, 0x25, 0x48, 0x00, 0xe9, 0xac, - 0x40, 0x10, 0x09, 0x00, 0x21, 0x10, 0x49, 0x00, 0x80, 0x10, 0x02, 0x00, 0x11, - 0x80, 0x06, 0x3c, 0x21, 0x30, 0xc2, 0x00, 0x1c, 0x80, 0xc6, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xc2, 0x8c, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x20, 0x02, - 0x00, 0x90, 0x00, 0xe4, 0xac, 0x94, 0x00, 0xe4, 0xac, 0x1a, 0x00, 0xe4, 0x01, - 0x02, 0x00, 0x80, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x07, 0x00, 0xff, - 0xff, 0x01, 0x24, 0x04, 0x00, 0x81, 0x14, 0x00, 0x80, 0x01, 0x3c, 0x02, 0x00, - 0xe1, 0x15, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x06, 0x00, 0x12, 0x10, 0x00, - 0x00, 0x70, 0x00, 0xe2, 0xac, 0x04, 0x00, 0xc2, 0x94, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x00, 0xe2, 0xac, 0x04, 0x01, 0xed, 0xa0, 0x05, 0x01, 0xed, 0xa0, 0x48, - 0x00, 0xe2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x06, 0x01, 0xe2, 0xa0, 0xa4, 0x8c, - 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x10, 0x02, 0x00, 0x00, 0xa0, 0x03, - 0x3c, 0x10, 0x0e, 0x63, 0x34, 0x21, 0x10, 0x43, 0x00, 0x28, 0x00, 0xe2, 0xac, - 0x0c, 0x00, 0xe8, 0xac, 0x14, 0x00, 0xe8, 0xac, 0x10, 0x00, 0xe8, 0xac, 0x68, - 0x00, 0xe0, 0xac, 0x00, 0x00, 0x42, 0x91, 0x00, 0x00, 0x00, 0x00, 0xe9, 0x00, - 0x40, 0x10, 0x07, 0x01, 0xec, 0x24, 0x00, 0x00, 0x42, 0x91, 0x00, 0x00, 0x00, - 0x00, 0xff, 0x00, 0x42, 0x30, 0xff, 0x00, 0x03, 0x24, 0xe3, 0x00, 0x43, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x93, 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x0e, - 0x00, 0x62, 0x28, 0x16, 0x01, 0x40, 0x10, 0x09, 0x00, 0x02, 0x24, 0x04, 0x00, - 0x07, 0xad, 0x20, 0x00, 0x02, 0xad, 0x50, 0x00, 0x0d, 0xad, 0x68, 0x00, 0xe2, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x02, 0xad, 0x01, 0x00, 0x62, 0x24, - 0x4c, 0x00, 0x02, 0xad, 0x0c, 0x00, 0x0b, 0xad, 0x00, 0x00, 0x0d, 0xad, 0x10, - 0x00, 0x02, 0x25, 0x14, 0x00, 0x02, 0xad, 0x28, 0x00, 0xe3, 0x8c, 0x68, 0x00, - 0xe2, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x18, 0x62, 0x00, 0x1c, 0x00, 0x03, - 0xad, 0x00, 0x00, 0x6d, 0xa0, 0x08, 0x00, 0x05, 0xad, 0x0c, 0x00, 0x0b, 0xad, - 0x40, 0x00, 0x02, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x40, - 0x00, 0x02, 0xad, 0x05, 0x00, 0x42, 0x28, 0xfb, 0x00, 0x40, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x8c, 0x9e, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, - 0x24, 0x8c, 0x9e, 0x82, 0xaf, 0x21, 0x00, 0x42, 0x28, 0xf4, 0x00, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x58, 0x92, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x20, - 0x00, 0xa2, 0xac, 0x00, 0x00, 0xab, 0xac, 0x00, 0x00, 0x42, 0x91, 0x00, 0x00, - 0x00, 0x00, 0x7f, 0x00, 0x42, 0x30, 0xfc, 0xff, 0x43, 0x24, 0x1b, 0x00, 0x62, - 0x2c, 0xe9, 0x00, 0x40, 0x10, 0x80, 0x10, 0x03, 0x00, 0x21, 0x10, 0x51, 0x00, - 0x00, 0x00, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x28, 0x00, 0xb0, 0xac, 0x4c, 0x0b, 0x04, 0x08, 0x24, 0x00, - 0xae, 0xac, 0x28, 0x00, 0xb9, 0xac, 0x4c, 0x0b, 0x04, 0x08, 0x24, 0x00, 0xae, - 0xac, 0x4c, 0x0b, 0x04, 0x08, 0x28, 0x00, 0xad, 0xac, 0x04, 0x00, 0x02, 0x24, - 0x4c, 0x0b, 0x04, 0x08, 0x28, 0x00, 0xa2, 0xac, 0x06, 0x00, 0x02, 0x24, 0x4c, - 0x0b, 0x04, 0x08, 0x28, 0x00, 0xa2, 0xac, 0x28, 0x00, 0xae, 0xac, 0x28, 0x00, - 0xa2, 0x8c, 0x00, 0x00, 0x00, 0x00, 0xeb, 0xff, 0x42, 0x24, 0x02, 0x00, 0x42, - 0x2c, 0x39, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x03, 0x8d, - 0x24, 0x00, 0xa2, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x18, 0x62, 0x00, 0x44, - 0x00, 0x03, 0xad, 0x41, 0x00, 0x63, 0x28, 0xc7, 0x00, 0x60, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x58, 0x92, 0x82, 0x8f, 0x24, 0x00, 0xa3, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x21, 0x18, 0x43, 0x00, 0x58, 0x92, 0x83, 0xaf, 0xe1, 0x00, 0x62, 0x28, - 0xbf, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0xa2, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0xc0, 0x11, 0x02, 0x00, 0x21, 0x58, 0x62, 0x01, 0x40, 0x00, - 0x02, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x40, 0x00, 0x02, - 0xad, 0x05, 0x00, 0x42, 0x28, 0xb4, 0x00, 0x40, 0x10, 0x2c, 0x00, 0xa5, 0x24, - 0x8c, 0x9e, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x8c, - 0x9e, 0x82, 0xaf, 0x21, 0x00, 0x42, 0x28, 0xad, 0x00, 0x40, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x20, 0x00, 0xa3, 0xac, 0x00, 0x00, 0xab, 0xac, 0x00, 0x00, 0x42, - 0x91, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x43, 0x30, 0x18, 0x00, 0x02, 0x24, - 0x05, 0x00, 0x62, 0x10, 0x1e, 0x00, 0x02, 0x24, 0x05, 0x00, 0x62, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x84, 0x0b, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x83, 0x0b, - 0x04, 0x08, 0x28, 0x00, 0xb0, 0xac, 0x28, 0x00, 0xb9, 0xac, 0x24, 0x00, 0xb8, - 0xac, 0x28, 0x00, 0xa2, 0x8c, 0x00, 0x00, 0x00, 0x00, 0xeb, 0xff, 0x42, 0x24, - 0x02, 0x00, 0x42, 0x2c, 0x05, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x42, 0x91, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x42, 0x30, 0x24, 0x00, - 0xa2, 0xac, 0x44, 0x00, 0x03, 0x8d, 0x24, 0x00, 0xa2, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x21, 0x18, 0x62, 0x00, 0x44, 0x00, 0x03, 0xad, 0x41, 0x00, 0x63, 0x28, - 0x8b, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x58, 0x92, 0x83, 0x8f, 0x24, - 0x00, 0xa2, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x18, 0x62, 0x00, 0x58, 0x92, - 0x83, 0xaf, 0xe1, 0x00, 0x63, 0x28, 0x83, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x24, 0x00, 0xa2, 0x8c, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x11, 0x02, 0x00, - 0x21, 0x58, 0x62, 0x01, 0x2c, 0x00, 0xa5, 0x24, 0x00, 0x00, 0x42, 0x91, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x00, 0x42, 0x30, 0x78, 0xff, 0x40, 0x14, 0x01, 0x00, - 0x4a, 0x25, 0x40, 0x00, 0x02, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x75, 0x00, 0x40, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x91, 0x00, 0x00, 0x00, 0x00, - 0xff, 0x00, 0x49, 0x30, 0x68, 0x81, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, - 0x10, 0x22, 0x01, 0x6d, 0x00, 0x40, 0x10, 0x01, 0x00, 0x4a, 0x25, 0x00, 0x00, - 0x89, 0xa1, 0x40, 0x10, 0x09, 0x00, 0x21, 0x10, 0x49, 0x00, 0x80, 0x10, 0x02, - 0x00, 0x11, 0x80, 0x06, 0x3c, 0x21, 0x30, 0xc2, 0x00, 0x1c, 0x80, 0xc6, 0x8c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x8c, 0x00, 0x00, 0x00, 0x00, 0xc2, - 0x20, 0x02, 0x00, 0x1a, 0x00, 0xe4, 0x01, 0x02, 0x00, 0x80, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x0d, 0x00, 0x07, 0x00, 0xff, 0xff, 0x01, 0x24, 0x04, 0x00, 0x81, - 0x14, 0x00, 0x80, 0x01, 0x3c, 0x02, 0x00, 0xe1, 0x15, 0x00, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x06, 0x00, 0x12, 0x10, 0x00, 0x00, 0x70, 0x00, 0xe3, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x21, 0x10, 0x43, 0x00, 0x70, 0x00, 0xe2, 0xac, 0x94, 0x00, - 0xe2, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x82, 0x00, 0x02, 0x00, 0x40, - 0x10, 0x01, 0x00, 0x8c, 0x25, 0x94, 0x00, 0xe4, 0xac, 0x04, 0x00, 0xc3, 0x94, - 0x80, 0x00, 0xe2, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x62, 0x00, 0x02, - 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xe3, 0xac, 0x68, 0x00, - 0xe2, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x68, 0x00, 0xe2, - 0xac, 0x00, 0x93, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, - 0x00, 0x93, 0x82, 0xaf, 0x84, 0x00, 0x08, 0x25, 0x00, 0x00, 0x42, 0x91, 0x00, - 0x00, 0x00, 0x00, 0x19, 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x00, - 0xe9, 0xac, 0x80, 0x00, 0xe3, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x62, - 0x28, 0x02, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x03, 0x24, - 0x70, 0x00, 0xe2, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x62, 0x00, 0x12, - 0x18, 0x00, 0x00, 0x62, 0x10, 0x02, 0x3c, 0xd3, 0x4d, 0x42, 0x34, 0x19, 0x00, - 0x62, 0x00, 0x10, 0x90, 0x00, 0x00, 0x82, 0x11, 0x12, 0x00, 0x74, 0x00, 0xe2, - 0xac, 0x70, 0x00, 0xe4, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x84, 0x24, - 0x68, 0x00, 0xe3, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x63, 0x24, 0x40, - 0x10, 0x03, 0x00, 0x21, 0x10, 0x43, 0x00, 0xc0, 0x10, 0x02, 0x00, 0x21, 0x10, - 0x43, 0x00, 0x40, 0x10, 0x02, 0x00, 0x21, 0x20, 0x82, 0x00, 0x70, 0x00, 0xe4, - 0xac, 0x74, 0x00, 0xe4, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x84, 0x24, - 0x68, 0x00, 0xe3, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x63, 0x24, 0x40, - 0x10, 0x03, 0x00, 0x21, 0x10, 0x43, 0x00, 0xc0, 0x10, 0x02, 0x00, 0x21, 0x10, - 0x43, 0x00, 0x40, 0x10, 0x02, 0x00, 0x21, 0x20, 0x82, 0x00, 0x74, 0x00, 0xe4, - 0xac, 0xa4, 0x8c, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, - 0xa4, 0x8c, 0x82, 0xaf, 0x68, 0x01, 0xe7, 0x24, 0x00, 0x00, 0x42, 0x91, 0x00, - 0x00, 0x00, 0x00, 0xff, 0x00, 0x42, 0x30, 0xff, 0x00, 0x03, 0x24, 0x06, 0x00, - 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0xbe, 0x0a, 0x04, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x30, 0x80, 0x84, 0x27, 0x24, 0x00, 0x04, 0x0c, 0x46, 0x01, 0x05, 0x24, - 0x1c, 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, - 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x20, 0x00, 0xbd, 0x27, 0xd8, 0xff, - 0xbd, 0x27, 0x20, 0x00, 0xbf, 0xaf, 0x1c, 0x00, 0xb3, 0xaf, 0x18, 0x00, 0xb2, - 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x90, 0x80, 0x00, - 0x40, 0x00, 0x43, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x03, 0x00, 0x21, - 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x21, 0x10, 0x43, 0x00, 0x80, 0x10, - 0x02, 0x00, 0x1c, 0x00, 0x43, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, 0x98, 0x43, - 0x00, 0x2c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x42, 0x30, - 0x1d, 0x00, 0x40, 0x10, 0x21, 0x80, 0x00, 0x00, 0x01, 0x00, 0x02, 0x24, 0x0c, - 0x00, 0x62, 0xae, 0x68, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, - 0x51, 0x24, 0x04, 0x01, 0x50, 0x26, 0x21, 0x20, 0x00, 0x02, 0x18, 0x00, 0x65, - 0x26, 0x58, 0x01, 0x04, 0x0c, 0x21, 0x30, 0x20, 0x02, 0x21, 0x20, 0x40, 0x02, - 0x21, 0x28, 0x00, 0x02, 0x60, 0x1b, 0x04, 0x0c, 0x21, 0x30, 0x20, 0x02, 0x21, - 0x20, 0x00, 0x00, 0x28, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, - 0x44, 0x00, 0x00, 0x00, 0x43, 0x90, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x63, - 0x30, 0x00, 0x00, 0x43, 0xa0, 0x01, 0x00, 0x84, 0x24, 0x08, 0x00, 0x82, 0x28, - 0xf6, 0xff, 0x40, 0x14, 0xdc, 0x00, 0x10, 0x24, 0x8a, 0x0c, 0x04, 0x08, 0x00, - 0x00, 0x00, 0x00, 0x2c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, - 0x42, 0x30, 0x0a, 0x00, 0x40, 0x10, 0x01, 0x00, 0x02, 0x24, 0x0c, 0x00, 0x62, - 0xae, 0x02, 0x00, 0x02, 0x24, 0x18, 0x00, 0x62, 0xa2, 0x19, 0x00, 0x60, 0xa2, - 0x1a, 0x00, 0x60, 0xa2, 0x21, 0x20, 0x40, 0x02, 0x18, 0x00, 0x65, 0x26, 0x82, - 0x0c, 0x04, 0x08, 0x03, 0x00, 0x06, 0x24, 0x2c, 0x00, 0x42, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x00, 0x42, 0x30, 0x1a, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x50, 0x92, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x51, 0x94, - 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x31, 0x26, 0x0d, 0x04, 0x22, 0x2a, 0x02, - 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x04, 0x11, 0x24, 0x50, 0x92, - 0x84, 0x8f, 0x80, 0x9a, 0x85, 0x27, 0x58, 0x01, 0x04, 0x0c, 0x21, 0x30, 0x20, - 0x02, 0x04, 0x00, 0x02, 0x24, 0x80, 0x9a, 0x82, 0xa3, 0x02, 0x00, 0x02, 0x24, - 0x0c, 0x00, 0x62, 0xae, 0x21, 0x20, 0x40, 0x02, 0x80, 0x9a, 0x85, 0x27, 0x21, - 0x30, 0x20, 0x02, 0x60, 0x1b, 0x04, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, - 0x50, 0x8e, 0x8a, 0x0c, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x30, 0x80, 0x84, - 0x27, 0x24, 0x00, 0x04, 0x0c, 0xd4, 0x01, 0x05, 0x24, 0x2c, 0x00, 0x42, 0x8e, - 0xfb, 0xff, 0x03, 0x24, 0x24, 0x10, 0x43, 0x00, 0x2c, 0x00, 0x42, 0xae, 0xac, - 0x89, 0x85, 0x8f, 0xe8, 0x00, 0x44, 0x26, 0x99, 0x18, 0x04, 0x0c, 0x21, 0x28, - 0x05, 0x02, 0x20, 0x00, 0xbf, 0x8f, 0x1c, 0x00, 0xb3, 0x8f, 0x18, 0x00, 0xb2, - 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, - 0x28, 0x00, 0xbd, 0x27, 0xd8, 0xff, 0xbd, 0x27, 0x20, 0x00, 0xbf, 0xaf, 0x1c, - 0x00, 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, - 0xb0, 0xaf, 0x21, 0x90, 0x80, 0x00, 0x08, 0x00, 0xa6, 0x8c, 0x14, 0x00, 0xa4, - 0x8c, 0x00, 0x00, 0xc2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x43, 0x30, - 0x02, 0x00, 0x02, 0x24, 0x5e, 0x00, 0x62, 0x10, 0x03, 0x00, 0x62, 0x28, 0x05, - 0x00, 0x40, 0x10, 0x01, 0x00, 0x02, 0x24, 0x0a, 0x00, 0x62, 0x10, 0x21, 0x10, - 0x86, 0x00, 0x7e, 0x0d, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, - 0x24, 0x6b, 0x00, 0x62, 0x10, 0x04, 0x00, 0x02, 0x24, 0x90, 0x00, 0x62, 0x10, - 0x0c, 0x00, 0x82, 0x28, 0x7e, 0x0d, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x43, 0x90, 0xff, 0x00, 0x02, 0x24, 0x02, 0x00, 0x62, 0x14, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x84, 0x24, 0x68, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x03, 0x00, 0x42, 0x24, 0xb7, 0x00, 0x82, 0x14, 0x00, 0xa0, 0x02, 0x3c, - 0x2c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x42, 0x30, 0x79, - 0x00, 0x40, 0x10, 0x00, 0xa0, 0x03, 0x3c, 0x05, 0x01, 0x40, 0xa2, 0x00, 0x00, - 0xc2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x02, 0x99, 0x02, 0x00, 0x68, 0x00, 0x43, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x63, 0x02, 0x02, 0x00, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x21, 0x98, 0x60, 0x00, 0x0c, 0x00, 0x51, 0x8e, 0x68, - 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x40, 0x18, 0x01, 0x00, - 0x10, 0x24, 0x2a, 0x10, 0x13, 0x02, 0x03, 0x00, 0x40, 0x14, 0x84, 0x00, 0x22, - 0x26, 0x0c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0xae, - 0x6c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x62, 0x12, 0x21, - 0x20, 0x20, 0x02, 0x78, 0x12, 0x04, 0x0c, 0x01, 0x00, 0x05, 0x24, 0x01, 0x00, - 0x10, 0x26, 0x68, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x50, - 0x00, 0xef, 0xff, 0x40, 0x10, 0x84, 0x00, 0x31, 0x26, 0x6c, 0x00, 0x53, 0xae, - 0x21, 0x80, 0x00, 0x00, 0x2a, 0x10, 0x13, 0x02, 0x08, 0x00, 0x40, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x28, 0x00, 0x43, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, 0x18, - 0x70, 0x00, 0x00, 0x00, 0x62, 0x90, 0x00, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x42, - 0x30, 0x00, 0x00, 0x62, 0xa0, 0x01, 0x00, 0x10, 0x26, 0x08, 0x00, 0x02, 0x2a, - 0xf4, 0xff, 0x40, 0x14, 0x2a, 0x10, 0x13, 0x02, 0xc8, 0x00, 0x40, 0xae, 0xcc, - 0x00, 0x40, 0xae, 0x6c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, - 0x40, 0x10, 0xef, 0xff, 0x03, 0x24, 0x2c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x6f, 0x0d, 0x04, 0x08, 0x24, 0x10, 0x43, 0x00, 0xac, 0x89, 0x85, 0x8f, - 0xe8, 0x00, 0x44, 0x26, 0x99, 0x18, 0x04, 0x0c, 0xe8, 0x03, 0xa5, 0x24, 0x7e, - 0x0d, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x06, 0x00, - 0x82, 0x14, 0x03, 0x00, 0x02, 0x24, 0x03, 0x00, 0xc3, 0x90, 0xff, 0x00, 0x02, - 0x24, 0x02, 0x00, 0x62, 0x14, 0x03, 0x00, 0x02, 0x24, 0x03, 0x00, 0x04, 0x24, - 0x67, 0x00, 0x82, 0x14, 0x00, 0xa0, 0x02, 0x3c, 0x2c, 0x00, 0x42, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x20, 0x00, 0x42, 0x30, 0x28, 0x00, 0x40, 0x10, 0xdb, 0xff, - 0x03, 0x24, 0xc8, 0x00, 0x40, 0xae, 0xcc, 0x00, 0x40, 0xae, 0x2c, 0x00, 0x42, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x24, 0x10, 0x43, 0x00, 0x70, 0x0d, 0x04, 0x08, - 0x01, 0x00, 0x42, 0x34, 0x06, 0x00, 0x82, 0x14, 0x03, 0x00, 0x02, 0x24, 0x03, - 0x00, 0xc3, 0x90, 0xff, 0x00, 0x02, 0x24, 0x02, 0x00, 0x62, 0x14, 0x03, 0x00, - 0x02, 0x24, 0x03, 0x00, 0x04, 0x24, 0x52, 0x00, 0x82, 0x14, 0x00, 0xa0, 0x02, - 0x3c, 0x2c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x42, 0x30, - 0x13, 0x00, 0x40, 0x10, 0xdb, 0xff, 0x03, 0x24, 0xc8, 0x00, 0x40, 0xae, 0xcc, - 0x00, 0x40, 0xae, 0x2c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x24, 0x10, - 0x43, 0x00, 0x2c, 0x00, 0x42, 0xae, 0x01, 0x00, 0xc3, 0x90, 0x02, 0x00, 0xc2, - 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x02, 0x00, 0x21, 0x18, 0x62, 0x00, - 0x50, 0x00, 0x43, 0xae, 0x54, 0x00, 0x43, 0xae, 0x58, 0x00, 0x40, 0xae, 0x2c, - 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x67, 0x0d, 0x04, 0x08, 0x40, 0x00, - 0x42, 0x34, 0x00, 0xa0, 0x03, 0x3c, 0xe8, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x7e, 0x0d, 0x04, 0x08, - 0x00, 0x00, 0x62, 0xac, 0x32, 0x00, 0x40, 0x14, 0x00, 0xa0, 0x02, 0x3c, 0x0a, - 0x00, 0xc2, 0x94, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x42, 0x24, 0xff, 0xff, - 0x42, 0x30, 0x2c, 0x00, 0x82, 0x14, 0x00, 0xa0, 0x02, 0x3c, 0x2c, 0x00, 0x42, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x42, 0x30, 0x30, 0x00, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x45, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x0c, - 0x00, 0xa2, 0x24, 0xff, 0xff, 0x42, 0x30, 0x2a, 0x00, 0x82, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0xc3, 0x94, 0x5c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x25, 0x00, 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0xa0, 0x10, - 0x7b, 0xff, 0x03, 0x24, 0xc8, 0x00, 0x40, 0xae, 0xcc, 0x00, 0x40, 0xae, 0x58, - 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0xff, 0x00, - 0x42, 0x30, 0x58, 0x00, 0x42, 0xae, 0x2c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x24, 0x10, 0x43, 0x00, 0x40, 0x00, 0x42, 0x34, 0x2c, 0x00, 0x42, 0xae, - 0x65, 0x18, 0x04, 0x0c, 0xe8, 0x00, 0x44, 0x26, 0x7e, 0x0d, 0x04, 0x08, 0x00, - 0x00, 0x00, 0x00, 0x2c, 0x00, 0x42, 0x8e, 0x7f, 0xff, 0x03, 0x24, 0x24, 0x10, - 0x43, 0x00, 0x25, 0x00, 0x42, 0x34, 0x2c, 0x00, 0x42, 0xae, 0x85, 0x18, 0x04, - 0x0c, 0xe8, 0x00, 0x44, 0x26, 0x7e, 0x0d, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, - 0xbc, 0x0d, 0x42, 0x34, 0x00, 0x00, 0x43, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x63, 0x24, 0x00, 0x00, 0x43, 0xac, 0xc8, 0x00, 0x42, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x42, 0x24, 0xc8, 0x00, 0x42, 0xae, 0x20, 0x00, 0xbf, - 0x8f, 0x1c, 0x00, 0xb3, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, - 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x28, 0x00, 0xbd, 0x27, 0xe0, - 0xff, 0xbd, 0x27, 0x18, 0x00, 0xbf, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, - 0xb0, 0xaf, 0x21, 0x80, 0x80, 0x00, 0x2c, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0xf0, 0x00, 0x42, 0x30, 0x3c, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x00, 0x11, 0x8e, 0x6c, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x63, 0x24, 0x61, 0x00, 0x60, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x31, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x78, 0x00, 0x42, 0x30, 0x2b, 0x00, 0x40, 0x10, 0xff, 0xff, 0x63, 0x24, - 0x8c, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x62, 0x28, 0x20, - 0x00, 0x40, 0x14, 0x05, 0x00, 0x62, 0x28, 0x83, 0x00, 0x40, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x88, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x40, 0x11, 0x03, - 0x00, 0x23, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x21, 0x10, 0x43, 0x00, - 0xc0, 0x10, 0x02, 0x00, 0x90, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x1a, - 0x00, 0x43, 0x00, 0x02, 0x00, 0x60, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, - 0x07, 0x00, 0xff, 0xff, 0x01, 0x24, 0x04, 0x00, 0x61, 0x14, 0x00, 0x80, 0x01, - 0x3c, 0x02, 0x00, 0x41, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x06, 0x00, - 0x12, 0x10, 0x00, 0x00, 0xac, 0x89, 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x23, - 0x10, 0x43, 0x00, 0x78, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, - 0x43, 0x00, 0x05, 0x00, 0x42, 0x28, 0x66, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x9f, 0x10, 0x04, 0x0c, 0x21, 0x20, 0x20, 0x02, 0x10, 0x00, 0x11, 0xae, - 0x6c, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x63, 0x24, 0x2e, - 0x00, 0x60, 0x04, 0x00, 0x00, 0x00, 0x00, 0x95, 0x0d, 0x04, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x2c, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x42, - 0x30, 0x27, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x03, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x62, 0x28, 0x20, 0x00, 0x40, 0x14, 0x05, - 0x00, 0x62, 0x28, 0x50, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, - 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x40, 0x11, 0x03, 0x00, 0x23, 0x10, 0x43, - 0x00, 0x80, 0x10, 0x02, 0x00, 0x21, 0x10, 0x43, 0x00, 0xc0, 0x10, 0x02, 0x00, - 0x90, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x43, 0x00, 0x02, - 0x00, 0x60, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x07, 0x00, 0xff, 0xff, - 0x01, 0x24, 0x04, 0x00, 0x61, 0x14, 0x00, 0x80, 0x01, 0x3c, 0x02, 0x00, 0x41, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x06, 0x00, 0x12, 0x10, 0x00, 0x00, - 0xac, 0x89, 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0x43, 0x00, 0x78, - 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x43, 0x00, 0x05, 0x00, - 0x42, 0x28, 0x33, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x29, 0x0c, 0x04, - 0x0c, 0x21, 0x20, 0x00, 0x02, 0x5c, 0x80, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x29, 0x00, 0x40, 0x10, 0xfe, 0xff, 0x03, 0x24, 0x8c, 0x00, 0x03, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x62, 0x28, 0x20, 0x00, 0x40, 0x14, 0x05, 0x00, - 0x62, 0x28, 0x26, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x03, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x40, 0x11, 0x03, 0x00, 0x23, 0x10, 0x43, 0x00, - 0x80, 0x10, 0x02, 0x00, 0x21, 0x10, 0x43, 0x00, 0xc0, 0x10, 0x02, 0x00, 0x90, - 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x43, 0x00, 0x02, 0x00, - 0x60, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x07, 0x00, 0xff, 0xff, 0x01, - 0x24, 0x04, 0x00, 0x61, 0x14, 0x00, 0x80, 0x01, 0x3c, 0x02, 0x00, 0x41, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x06, 0x00, 0x12, 0x10, 0x00, 0x00, 0xac, - 0x89, 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0x43, 0x00, 0x78, 0x00, - 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x43, 0x00, 0x05, 0x00, 0x42, - 0x28, 0x09, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xbf, 0x11, 0x04, 0x0c, - 0x21, 0x20, 0x00, 0x02, 0xf9, 0x0d, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x2c, - 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x24, 0x10, 0x43, 0x00, 0x2c, 0x00, - 0x02, 0xae, 0x18, 0x00, 0xbf, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, - 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x20, 0x00, 0xbd, 0x27, 0xe8, 0xff, 0xbd, 0x27, - 0x14, 0x00, 0xbf, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x80, 0x80, 0x00, 0x2c, - 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x42, 0x30, 0x88, 0x00, - 0x03, 0x24, 0x0b, 0x00, 0x43, 0x14, 0xf7, 0xff, 0x02, 0x24, 0x00, 0xa0, 0x03, - 0x3c, 0xa0, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, 0xc5, 0x18, 0x04, 0x0c, 0x0a, - 0x00, 0x04, 0x24, 0xd8, 0x0e, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, - 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x24, 0x10, 0x62, 0x00, 0x40, 0x00, 0x63, - 0x30, 0x17, 0x00, 0x60, 0x14, 0x2c, 0x00, 0x02, 0xae, 0x00, 0xa0, 0x03, 0x3c, - 0xe4, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, 0xc8, 0x00, 0x02, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0xc8, 0x00, 0x02, 0xae, 0xcc, 0x00, 0x02, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0xcc, 0x00, 0x02, 0xae, - 0x0a, 0x00, 0x42, 0x28, 0x06, 0x00, 0x40, 0x14, 0x0f, 0xff, 0x03, 0x24, 0x2c, - 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x24, 0x10, 0x43, 0x00, 0x10, 0x00, - 0x42, 0x34, 0x2c, 0x00, 0x02, 0xae, 0x2c, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x10, 0x00, 0x42, 0x30, 0x07, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, - 0xcc, 0x00, 0x00, 0xae, 0x2c, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x05, - 0x00, 0x42, 0x34, 0xd1, 0x0e, 0x04, 0x08, 0x2c, 0x00, 0x02, 0xae, 0x2c, 0x00, - 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x62, 0x30, 0x03, 0x00, 0x40, - 0x10, 0x05, 0x00, 0x62, 0x34, 0xd1, 0x0e, 0x04, 0x08, 0x2c, 0x00, 0x02, 0xae, - 0xc0, 0x00, 0x62, 0x30, 0x63, 0x00, 0x40, 0x10, 0x37, 0xff, 0x02, 0x24, 0x50, - 0x92, 0x84, 0x8f, 0x24, 0x18, 0x62, 0x00, 0x2c, 0x00, 0x03, 0xae, 0x00, 0xa0, - 0x02, 0x3c, 0x00, 0x0d, 0x42, 0x34, 0x00, 0x00, 0x42, 0x94, 0x00, 0x00, 0x00, - 0x00, 0x55, 0x00, 0x40, 0x14, 0x48, 0x00, 0x62, 0x34, 0x58, 0x00, 0x02, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x40, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x83, 0x94, 0x50, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x2a, 0x10, 0x43, 0x00, 0x27, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x82, 0x94, 0x54, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2a, - 0x10, 0x43, 0x00, 0x0c, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xac, 0x0e, - 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x83, 0x90, 0x00, 0x00, 0x00, - 0x00, 0x1b, 0x00, 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x83, 0x94, - 0x5c, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x62, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x0a, 0x00, 0x82, 0x94, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, - 0x02, 0xae, 0x58, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x40, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x82, 0x94, 0x00, 0x00, 0x00, 0x00, - 0x5c, 0x00, 0x02, 0xae, 0x04, 0x00, 0x82, 0x94, 0x00, 0x00, 0x00, 0x00, 0x50, - 0x00, 0x02, 0xae, 0x06, 0x00, 0x82, 0x94, 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, - 0x02, 0xae, 0x2c, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x42, - 0x34, 0xd1, 0x0e, 0x04, 0x08, 0x2c, 0x00, 0x02, 0xae, 0x11, 0x80, 0x02, 0x3c, - 0xbc, 0x8d, 0x42, 0x8c, 0x11, 0x80, 0x03, 0x3c, 0x24, 0x8f, 0x63, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x25, 0x10, 0x43, 0x00, 0x08, 0x00, 0x42, 0x30, 0x15, 0x00, - 0x40, 0x14, 0x04, 0x00, 0x02, 0x24, 0x00, 0x00, 0x82, 0xa0, 0x58, 0x00, 0x02, - 0x92, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x82, 0xa0, 0x5c, 0x00, 0x02, 0x96, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x82, 0xa4, 0x50, 0x00, 0x02, 0x96, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x82, 0xa4, 0x54, 0x00, 0x02, 0x96, 0x00, 0x00, - 0x00, 0x00, 0x06, 0x00, 0x82, 0xa4, 0x00, 0xa0, 0x02, 0x3c, 0x00, 0x0d, 0x42, - 0x34, 0x00, 0x00, 0x44, 0xa4, 0x2c, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0xcc, 0x0e, 0x04, 0x08, 0x48, 0x00, 0x42, 0x34, 0x2c, 0x00, 0x02, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x40, 0x00, 0x42, 0x34, 0x2c, 0x00, 0x02, 0xae, 0xac, 0x89, - 0x85, 0x8f, 0xe8, 0x00, 0x04, 0x26, 0x99, 0x18, 0x04, 0x0c, 0x0a, 0x00, 0xa5, - 0x24, 0x2c, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x30, - 0x03, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x85, 0x0d, 0x04, 0x0c, 0x21, - 0x20, 0x00, 0x02, 0x14, 0x00, 0xbf, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, - 0xe0, 0x03, 0x18, 0x00, 0xbd, 0x27, 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, - 0xaf, 0xa4, 0x0a, 0x04, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x44, 0x17, 0x04, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, - 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x2b, 0x10, 0x85, 0x00, 0x0a, 0x00, 0x40, 0x10, 0x21, 0x18, 0x00, - 0x00, 0x00, 0x00, 0x82, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x62, 0x00, - 0x04, 0x00, 0x84, 0x24, 0x2b, 0x18, 0x43, 0x00, 0x21, 0x18, 0x43, 0x00, 0x2b, - 0x10, 0x85, 0x00, 0xf8, 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, - 0xe0, 0x03, 0x21, 0x10, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xc0, 0x81, 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x03, 0x00, - 0x21, 0x10, 0x43, 0x00, 0x00, 0x11, 0x02, 0x00, 0x21, 0x10, 0x43, 0x00, 0x80, - 0x10, 0x02, 0x00, 0x21, 0x10, 0x43, 0x00, 0x00, 0x11, 0x02, 0x00, 0x21, 0x10, - 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x21, 0x10, 0x43, 0x00, 0x1f, 0x28, 0x42, - 0x24, 0xc0, 0x81, 0x82, 0xaf, 0x02, 0x14, 0x02, 0x00, 0x18, 0x00, 0x82, 0x00, - 0x12, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0xe0, 0x03, 0x02, 0x14, 0x05, 0x00, 0x2b, 0x10, 0x85, 0x00, 0x06, 0x00, - 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xac, 0x04, 0x00, 0x84, - 0x24, 0x2b, 0x10, 0x85, 0x00, 0xfc, 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xff, 0xbd, 0x27, 0x5c, - 0x00, 0xbf, 0xaf, 0x58, 0x00, 0xbe, 0xaf, 0x54, 0x00, 0xb7, 0xaf, 0x50, 0x00, - 0xb6, 0xaf, 0x4c, 0x00, 0xb5, 0xaf, 0x48, 0x00, 0xb4, 0xaf, 0x44, 0x00, 0xb3, - 0xaf, 0x40, 0x00, 0xb2, 0xaf, 0x3c, 0x00, 0xb1, 0xaf, 0x38, 0x00, 0xb0, 0xaf, - 0xff, 0x00, 0x97, 0x24, 0xff, 0x1f, 0x03, 0x3c, 0x00, 0xff, 0x63, 0x34, 0x24, - 0xb8, 0xe3, 0x02, 0x00, 0xa0, 0x02, 0x3c, 0x25, 0xb8, 0xe2, 0x02, 0x24, 0xf0, - 0xa3, 0x00, 0x25, 0xf0, 0xc2, 0x03, 0x21, 0x20, 0xe0, 0x02, 0x0d, 0x0f, 0x04, - 0x0c, 0x21, 0x28, 0xc0, 0x03, 0x18, 0x00, 0xa0, 0xaf, 0x11, 0x80, 0x11, 0x3c, - 0x90, 0x90, 0x31, 0x26, 0x80, 0x05, 0x22, 0x26, 0x17, 0x00, 0x22, 0x12, 0x10, - 0x00, 0xa0, 0xaf, 0x04, 0x00, 0x04, 0x24, 0x11, 0x80, 0x03, 0x3c, 0x10, 0x96, - 0x63, 0x24, 0x28, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x44, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x22, 0x8e, 0x10, 0x00, 0xa6, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x46, 0x0f, 0x04, 0x08, 0x21, 0x30, 0xc2, 0x00, 0x18, - 0x00, 0xa6, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xc6, 0x24, 0x18, 0x00, - 0xa6, 0xaf, 0x10, 0x00, 0xa6, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xc6, - 0x24, 0x2c, 0x00, 0x31, 0x26, 0xee, 0xff, 0x23, 0x16, 0x10, 0x00, 0xa6, 0xaf, - 0x10, 0x00, 0x15, 0x24, 0x21, 0x98, 0xc0, 0x03, 0x00, 0x10, 0xa2, 0x2a, 0x02, - 0x00, 0x40, 0x14, 0x00, 0x10, 0x12, 0x24, 0x21, 0x90, 0xa0, 0x02, 0x23, 0x18, - 0x77, 0x02, 0x10, 0x00, 0xa6, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x06, - 0x00, 0x18, 0x00, 0xa2, 0x02, 0x12, 0x30, 0x00, 0x00, 0x23, 0x18, 0x66, 0x00, - 0x18, 0x00, 0xa6, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x46, 0x02, 0x12, - 0x30, 0x00, 0x00, 0x23, 0xa0, 0x66, 0x00, 0x2a, 0x10, 0x95, 0x02, 0x08, 0x00, - 0x40, 0x10, 0x11, 0x00, 0xa2, 0x2a, 0xb0, 0x00, 0x40, 0x10, 0x23, 0x10, 0xd7, - 0x03, 0x40, 0x80, 0x84, 0x27, 0x24, 0x00, 0x04, 0x0c, 0xae, 0x00, 0x05, 0x24, - 0x0f, 0x10, 0x04, 0x08, 0x23, 0x10, 0xd7, 0x03, 0x11, 0x80, 0x11, 0x3c, 0x90, - 0x90, 0x31, 0x26, 0x11, 0x80, 0x06, 0x3c, 0x10, 0x96, 0xc6, 0x24, 0x34, 0x00, - 0x26, 0x12, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x56, 0x26, 0x21, 0x30, 0xd2, - 0x02, 0x20, 0x00, 0xa6, 0xaf, 0x28, 0x00, 0x22, 0x8e, 0x04, 0x00, 0x06, 0x24, - 0x26, 0x00, 0x46, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x50, 0x24, 0x2a, 0x10, 0x92, 0x02, 0x05, 0x00, - 0x40, 0x14, 0x0e, 0x00, 0x16, 0xa6, 0x20, 0x00, 0xa6, 0x97, 0x00, 0x00, 0x00, - 0x00, 0x0e, 0x00, 0x06, 0xa6, 0x23, 0xa0, 0x92, 0x02, 0x0e, 0x00, 0x02, 0x96, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x23, 0x98, 0x62, 0x02, 0x02, - 0x11, 0x13, 0x00, 0x08, 0x00, 0x02, 0xa6, 0x2b, 0x10, 0x77, 0x02, 0x07, 0x00, - 0x40, 0x14, 0x3c, 0x00, 0x13, 0xae, 0x0e, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, - 0x00, 0x21, 0x10, 0x53, 0x00, 0x2b, 0x10, 0x5e, 0x00, 0x04, 0x00, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x84, 0x27, 0x24, 0x00, 0x04, 0x0c, 0xcb, - 0x00, 0x05, 0x24, 0x0e, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, - 0x02, 0xa6, 0x08, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x02, - 0xa6, 0x3c, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x02, 0xae, - 0x2c, 0x00, 0x31, 0x26, 0x11, 0x80, 0x06, 0x3c, 0x10, 0x96, 0xc6, 0x24, 0xd3, - 0xff, 0x26, 0x16, 0x00, 0x00, 0x00, 0x00, 0x11, 0x80, 0x11, 0x3c, 0x90, 0x90, - 0x31, 0x26, 0x30, 0x00, 0x26, 0x12, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xb6, - 0x26, 0x21, 0x30, 0xd5, 0x02, 0x28, 0x00, 0xa6, 0xaf, 0x28, 0x00, 0x22, 0x8e, - 0x04, 0x00, 0x06, 0x24, 0x02, 0x00, 0x46, 0x10, 0x08, 0x00, 0x12, 0x24, 0x24, - 0x00, 0x32, 0x8e, 0x00, 0x00, 0x30, 0x8e, 0x20, 0x00, 0x40, 0x12, 0x00, 0x00, - 0x00, 0x00, 0x2a, 0x10, 0x95, 0x02, 0x05, 0x00, 0x40, 0x14, 0x16, 0x00, 0x16, - 0xa6, 0x28, 0x00, 0xa6, 0x97, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x06, 0xa6, - 0x23, 0xa0, 0x95, 0x02, 0x16, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x42, 0x24, 0x23, 0x98, 0x62, 0x02, 0x38, 0x00, 0x13, 0xae, 0x02, 0x11, - 0x13, 0x00, 0x10, 0x00, 0x02, 0xa6, 0x38, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x2b, 0x10, 0x77, 0x00, 0x07, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x43, 0x00, 0x2b, - 0x10, 0x5e, 0x00, 0x04, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, - 0x84, 0x27, 0x24, 0x00, 0x04, 0x0c, 0x00, 0x01, 0x05, 0x24, 0xff, 0xff, 0x52, - 0x26, 0xe2, 0xff, 0x40, 0x16, 0x80, 0x00, 0x10, 0x26, 0x2c, 0x00, 0x31, 0x26, - 0x11, 0x80, 0x06, 0x3c, 0x10, 0x96, 0xc6, 0x24, 0xd5, 0xff, 0x26, 0x16, 0x00, - 0x00, 0x00, 0x00, 0x11, 0x80, 0x11, 0x3c, 0x90, 0x90, 0x31, 0x26, 0x11, 0x80, - 0x06, 0x3c, 0x10, 0x96, 0xc6, 0x24, 0x37, 0x00, 0x26, 0x12, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, 0xb6, 0x26, 0x21, 0x30, 0xd5, 0x02, 0x30, 0x00, 0xa6, 0xaf, - 0x28, 0x00, 0x22, 0x8e, 0x04, 0x00, 0x06, 0x24, 0x02, 0x00, 0x46, 0x10, 0x08, - 0x00, 0x12, 0x24, 0x24, 0x00, 0x32, 0x8e, 0x00, 0x00, 0x30, 0x8e, 0x27, 0x00, - 0x40, 0x12, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x95, 0x02, 0x05, 0x00, 0x40, - 0x14, 0x0e, 0x00, 0x16, 0xa6, 0x30, 0x00, 0xa6, 0x97, 0x00, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x06, 0xa6, 0x23, 0xa0, 0x95, 0x02, 0x0e, 0x00, 0x02, 0x96, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x23, 0x98, 0x62, 0x02, 0x02, 0x11, - 0x13, 0x00, 0x08, 0x00, 0x02, 0xa6, 0x3c, 0x00, 0x13, 0xae, 0x38, 0x00, 0x02, - 0x8e, 0xff, 0x1f, 0x06, 0x3c, 0xff, 0xff, 0xc6, 0x34, 0x24, 0x10, 0x46, 0x00, - 0x00, 0x80, 0x06, 0x3c, 0x25, 0x10, 0x46, 0x00, 0x38, 0x00, 0x02, 0xae, 0x3c, - 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0x77, 0x00, 0x07, 0x00, - 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, - 0x00, 0x21, 0x10, 0x43, 0x00, 0x2b, 0x10, 0x5e, 0x00, 0x04, 0x00, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x84, 0x27, 0x24, 0x00, 0x04, 0x0c, 0x2c, - 0x01, 0x05, 0x24, 0xff, 0xff, 0x52, 0x26, 0xdb, 0xff, 0x40, 0x16, 0x80, 0x00, - 0x10, 0x26, 0x2c, 0x00, 0x31, 0x26, 0x11, 0x80, 0x06, 0x3c, 0x10, 0x96, 0xc6, - 0x24, 0xce, 0xff, 0x26, 0x16, 0x00, 0x00, 0x00, 0x00, 0x40, 0xa8, 0x15, 0x00, - 0x01, 0x40, 0xa2, 0x2a, 0x3c, 0xff, 0x40, 0x14, 0x23, 0x10, 0xd7, 0x03, 0x82, - 0x12, 0x02, 0x00, 0x5c, 0x00, 0xbf, 0x8f, 0x58, 0x00, 0xbe, 0x8f, 0x54, 0x00, - 0xb7, 0x8f, 0x50, 0x00, 0xb6, 0x8f, 0x4c, 0x00, 0xb5, 0x8f, 0x48, 0x00, 0xb4, - 0x8f, 0x44, 0x00, 0xb3, 0x8f, 0x40, 0x00, 0xb2, 0x8f, 0x3c, 0x00, 0xb1, 0x8f, - 0x38, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x60, 0x00, 0xbd, 0x27, 0xe0, - 0xff, 0xbd, 0x27, 0x18, 0x00, 0xbf, 0xaf, 0x48, 0x9a, 0x84, 0x8f, 0x1f, 0x02, - 0x04, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xc5, 0x18, 0x04, 0x0c, 0x32, 0x00, 0x04, - 0x24, 0x90, 0x9e, 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x94, 0x9e, 0x83, 0xaf, - 0x98, 0x9e, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0x43, 0x00, 0x02, - 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x98, 0x9e, 0x83, 0xaf, 0x90, 0x9e, - 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x82, 0x18, 0x02, 0x00, 0x23, 0x10, 0x43, - 0x00, 0x90, 0x9e, 0x82, 0xaf, 0x98, 0x9e, 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x0b, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x94, 0x9e, 0x82, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x13, 0x02, 0x00, 0x1b, 0x00, 0x43, 0x00, 0x02, 0x00, - 0x60, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x07, 0x00, 0x12, 0x10, 0x00, - 0x00, 0x00, 0xa0, 0x01, 0x3c, 0x08, 0x00, 0x22, 0xa4, 0xc4, 0x81, 0x83, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x62, 0x24, 0xc4, 0x81, 0x82, 0xaf, 0x14, - 0x00, 0x42, 0x28, 0x02, 0x00, 0x40, 0x14, 0xf3, 0xff, 0x62, 0x24, 0xc4, 0x81, - 0x82, 0xaf, 0xd0, 0x89, 0x84, 0x27, 0xa4, 0x8c, 0x82, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x21, 0x40, 0x40, 0x00, 0x34, 0x00, 0x40, 0x18, 0x21, 0x30, 0x00, 0x00, - 0xc4, 0x81, 0x85, 0x8f, 0xcc, 0xcc, 0x07, 0x3c, 0xcd, 0xcc, 0xe7, 0x34, 0xb0, - 0x00, 0x82, 0x8c, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x82, 0xac, 0xb0, 0x00, - 0x83, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x65, 0x00, 0x19, 0x00, 0x47, - 0x00, 0x10, 0x48, 0x00, 0x00, 0x02, 0x11, 0x09, 0x00, 0x23, 0x18, 0x62, 0x00, - 0xb0, 0x00, 0x83, 0xac, 0xa8, 0x00, 0x82, 0x8c, 0x00, 0x00, 0x00, 0x00, 0xac, - 0x00, 0x82, 0xac, 0xa8, 0x00, 0x83, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, - 0x65, 0x00, 0x19, 0x00, 0x47, 0x00, 0x10, 0x48, 0x00, 0x00, 0x02, 0x11, 0x09, - 0x00, 0x23, 0x18, 0x62, 0x00, 0xa8, 0x00, 0x83, 0xac, 0xc0, 0x00, 0x82, 0x8c, - 0x00, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x82, 0xac, 0xc0, 0x00, 0x83, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x21, 0x10, 0x65, 0x00, 0x19, 0x00, 0x47, 0x00, 0x10, 0x48, - 0x00, 0x00, 0x02, 0x11, 0x09, 0x00, 0x23, 0x18, 0x62, 0x00, 0xc0, 0x00, 0x83, - 0xac, 0xb8, 0x00, 0x82, 0x8c, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x82, 0xac, - 0xb8, 0x00, 0x83, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x65, 0x00, 0x19, - 0x00, 0x47, 0x00, 0x10, 0x48, 0x00, 0x00, 0x02, 0x11, 0x09, 0x00, 0x23, 0x18, - 0x62, 0x00, 0xb8, 0x00, 0x83, 0xac, 0x01, 0x00, 0xc6, 0x24, 0x2a, 0x10, 0xc8, - 0x00, 0xd1, 0xff, 0x40, 0x14, 0x68, 0x01, 0x84, 0x24, 0x18, 0x00, 0xbf, 0x8f, - 0x20, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe8, - 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x48, 0x00, 0x83, 0x90, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x19, 0x03, 0x00, 0x00, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, - 0x00, 0x25, 0x10, 0x43, 0x00, 0x00, 0x00, 0xa2, 0xa0, 0x00, 0x00, 0xa3, 0x90, - 0xc3, 0xa5, 0x02, 0x34, 0x23, 0x10, 0x43, 0x00, 0x01, 0x00, 0xa3, 0x90, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x00, 0x23, 0x10, 0x43, 0x00, 0x23, 0x10, - 0x46, 0x00, 0x02, 0x00, 0xa2, 0xa0, 0x02, 0x12, 0x02, 0x00, 0x03, 0x00, 0xa2, - 0xa0, 0x04, 0x00, 0x84, 0x8c, 0x60, 0x1b, 0x04, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, - 0x00, 0x00, 0x00, 0xe0, 0xff, 0xbd, 0x27, 0x1c, 0x00, 0xbf, 0xaf, 0x18, 0x00, - 0xb2, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x80, 0x80, - 0x00, 0x04, 0x00, 0x12, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x43, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x03, 0x00, 0x21, 0x10, 0x43, 0x00, 0x80, - 0x10, 0x02, 0x00, 0x21, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x1c, 0x00, - 0x43, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, 0x28, 0x43, 0x00, 0x20, 0x00, 0x02, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x42, 0x30, 0x09, 0x00, 0x03, 0x24, - 0x09, 0x00, 0x43, 0x14, 0x01, 0x00, 0x02, 0x24, 0x0c, 0x00, 0xa2, 0xac, 0x05, - 0x00, 0x02, 0x24, 0x18, 0x00, 0xa2, 0xa0, 0x50, 0x00, 0x02, 0x92, 0x00, 0x00, - 0x00, 0x00, 0x19, 0x00, 0xa2, 0xa0, 0xe5, 0x10, 0x04, 0x08, 0x18, 0x00, 0xa5, - 0x24, 0x20, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x42, 0x30, - 0x14, 0x00, 0x40, 0x10, 0x01, 0x00, 0x02, 0x24, 0x0c, 0x00, 0xa2, 0xac, 0x06, - 0x00, 0x02, 0x24, 0x18, 0x00, 0xa2, 0xa0, 0x19, 0x00, 0xa0, 0xa0, 0x21, 0x20, - 0x00, 0x02, 0x18, 0x00, 0xa5, 0x24, 0x84, 0x10, 0x04, 0x0c, 0x04, 0x00, 0x06, - 0x24, 0x20, 0x00, 0x03, 0x8e, 0x07, 0xff, 0x02, 0x24, 0x24, 0x20, 0x62, 0x00, - 0x20, 0x00, 0x04, 0xae, 0x3c, 0x00, 0x03, 0x8e, 0x38, 0x00, 0x02, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x8d, 0x00, 0x62, 0x10, 0x08, 0x00, 0x82, 0x34, 0x61, 0x11, - 0x04, 0x08, 0x20, 0x00, 0x02, 0xae, 0x20, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x0a, 0x00, 0x42, 0x30, 0x0a, 0x00, 0x03, 0x24, 0x16, 0x00, 0x43, 0x14, - 0x01, 0x00, 0x02, 0x24, 0x0c, 0x00, 0xa2, 0xac, 0x0a, 0x00, 0x02, 0x24, 0x18, - 0x00, 0xa2, 0xa0, 0x30, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, - 0xa2, 0xa0, 0x21, 0x20, 0x00, 0x02, 0x18, 0x00, 0xa5, 0x24, 0x84, 0x10, 0x04, - 0x0c, 0x04, 0x00, 0x06, 0x24, 0x20, 0x00, 0x02, 0x8e, 0xf7, 0xff, 0x03, 0x24, - 0x24, 0x10, 0x43, 0x00, 0x20, 0x00, 0x02, 0xae, 0xac, 0x89, 0x82, 0x8f, 0x74, - 0x00, 0x45, 0x8e, 0x6c, 0x00, 0x04, 0x26, 0x99, 0x18, 0x04, 0x0c, 0x21, 0x28, - 0x45, 0x00, 0x61, 0x11, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x02, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x42, 0x30, 0x1b, 0x00, 0x40, 0x10, - 0x01, 0x00, 0x02, 0x24, 0x0c, 0x00, 0xa2, 0xac, 0x20, 0x00, 0x02, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x20, 0x00, 0x42, 0x30, 0x02, 0x00, 0x40, 0x10, 0x09, 0x00, - 0x03, 0x24, 0x0b, 0x00, 0x03, 0x24, 0x18, 0x00, 0xa3, 0xa0, 0x30, 0x00, 0x02, - 0x92, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0xa2, 0xa0, 0x21, 0x20, 0x00, 0x02, - 0x18, 0x00, 0xa5, 0x24, 0x84, 0x10, 0x04, 0x0c, 0x04, 0x00, 0x06, 0x24, 0x20, - 0x00, 0x03, 0x8e, 0x1f, 0xff, 0x02, 0x24, 0x24, 0x20, 0x62, 0x00, 0x20, 0x00, - 0x04, 0xae, 0x3c, 0x00, 0x03, 0x8e, 0x38, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x53, 0x00, 0x62, 0x14, 0xf7, 0xff, 0x02, 0x24, 0x60, 0x11, 0x04, 0x08, - 0x24, 0x10, 0x82, 0x00, 0x3c, 0x00, 0x03, 0x8e, 0x38, 0x00, 0x02, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x3d, 0x00, 0x62, 0x10, 0x07, 0x00, 0x02, 0x24, 0x18, 0x00, - 0x11, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x22, 0xa2, 0x3c, 0x00, 0x02, - 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x02, 0x00, 0x30, 0x00, 0x03, 0x92, - 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x43, 0x00, 0x0d, 0x00, 0x22, 0xa2, 0x03, - 0x00, 0x02, 0x24, 0x0c, 0x00, 0xa2, 0xac, 0x10, 0x00, 0xb1, 0xac, 0x04, 0x00, - 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x04, 0x00, 0x22, - 0xae, 0x21, 0x20, 0x00, 0x02, 0x08, 0x00, 0x26, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x84, 0x10, 0x04, 0x0c, 0x0c, 0x00, 0x25, 0x26, 0x3c, 0x00, 0x03, 0x8e, 0x34, - 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x62, 0x14, 0x6c, 0x00, - 0x04, 0x26, 0xac, 0x89, 0x82, 0x8f, 0x74, 0x00, 0x45, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x99, 0x18, 0x04, 0x0c, 0x21, 0x28, 0x45, 0x00, 0x3c, 0x00, 0x02, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x0f, 0x00, 0x42, 0x30, 0x3c, - 0x00, 0x02, 0xae, 0x00, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, - 0x02, 0xae, 0x3c, 0x00, 0x03, 0x8e, 0x38, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x62, 0x14, 0xf7, 0xff, 0x03, 0x24, 0x20, 0x00, 0x02, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x24, 0x18, 0x43, 0x00, 0x04, 0x00, 0x42, 0x30, 0x06, - 0x00, 0x40, 0x10, 0x20, 0x00, 0x03, 0xae, 0xfb, 0xff, 0x02, 0x24, 0x24, 0x10, - 0x62, 0x00, 0x20, 0x00, 0x02, 0xae, 0x65, 0x18, 0x04, 0x0c, 0xd0, 0x00, 0x44, - 0x26, 0x20, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x11, 0x04, 0x08, - 0x7f, 0xff, 0x03, 0x24, 0x01, 0x00, 0x02, 0x24, 0x0c, 0x00, 0xa2, 0xac, 0x08, - 0x00, 0x02, 0x24, 0x18, 0x00, 0xa2, 0xa0, 0x30, 0x00, 0x02, 0x92, 0x00, 0x00, - 0x00, 0x00, 0x19, 0x00, 0xa2, 0xa0, 0x21, 0x20, 0x00, 0x02, 0x18, 0x00, 0xa5, - 0x24, 0x84, 0x10, 0x04, 0x0c, 0x04, 0x00, 0x06, 0x24, 0x20, 0x00, 0x02, 0x8e, - 0x77, 0xff, 0x03, 0x24, 0x24, 0x10, 0x43, 0x00, 0x20, 0x00, 0x02, 0xae, 0x1c, - 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, - 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x20, 0x00, 0xbd, 0x27, 0x20, 0x00, 0xa2, - 0x28, 0x1a, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x22, 0x33, 0x0b, 0x3c, - 0x00, 0x11, 0x6b, 0x35, 0x66, 0x77, 0x0a, 0x3c, 0x44, 0x55, 0x4a, 0x35, 0xaa, - 0xbb, 0x09, 0x3c, 0x88, 0x99, 0x29, 0x35, 0xee, 0xff, 0x08, 0x3c, 0xcc, 0xdd, - 0x08, 0x35, 0xa5, 0xa5, 0x07, 0x3c, 0xa5, 0xa5, 0xe7, 0x34, 0xf0, 0xf0, 0x06, - 0x3c, 0xf0, 0xf0, 0xc6, 0x34, 0xff, 0xff, 0x03, 0x24, 0x00, 0x00, 0x8b, 0xac, - 0x04, 0x00, 0x8a, 0xac, 0x08, 0x00, 0x89, 0xac, 0x0c, 0x00, 0x88, 0xac, 0x10, - 0x00, 0x80, 0xac, 0x14, 0x00, 0x87, 0xac, 0x18, 0x00, 0x86, 0xac, 0x1c, 0x00, - 0x83, 0xac, 0xe0, 0xff, 0xa5, 0x24, 0x20, 0x00, 0xa2, 0x28, 0xf5, 0xff, 0x40, - 0x10, 0x20, 0x00, 0x84, 0x24, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x60, 0x80, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x40, 0x14, 0x20, - 0x00, 0xa2, 0x28, 0xbd, 0x11, 0x04, 0x08, 0x21, 0x10, 0x00, 0x00, 0x30, 0x00, - 0x40, 0x14, 0x21, 0x18, 0x00, 0x00, 0x22, 0x33, 0x0b, 0x3c, 0x00, 0x11, 0x6b, - 0x35, 0x66, 0x77, 0x0a, 0x3c, 0x44, 0x55, 0x4a, 0x35, 0xaa, 0xbb, 0x09, 0x3c, - 0x88, 0x99, 0x29, 0x35, 0xee, 0xff, 0x08, 0x3c, 0xcc, 0xdd, 0x08, 0x35, 0xa5, - 0xa5, 0x07, 0x3c, 0xa5, 0xa5, 0xe7, 0x34, 0xf0, 0xf0, 0x06, 0x3c, 0xf0, 0xf0, - 0xc6, 0x34, 0x00, 0x00, 0x82, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x26, 0x10, 0x4b, - 0x00, 0x25, 0x18, 0x62, 0x00, 0x04, 0x00, 0x82, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x26, 0x10, 0x4a, 0x00, 0x25, 0x18, 0x62, 0x00, 0x08, 0x00, 0x82, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x26, 0x10, 0x49, 0x00, 0x25, 0x18, 0x62, 0x00, 0x0c, 0x00, - 0x82, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x26, 0x10, 0x48, 0x00, 0x25, 0x18, 0x62, - 0x00, 0x10, 0x00, 0x82, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x25, 0x18, 0x62, 0x00, - 0x14, 0x00, 0x82, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x26, 0x10, 0x47, 0x00, 0x25, - 0x18, 0x62, 0x00, 0x18, 0x00, 0x82, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x26, 0x10, - 0x46, 0x00, 0x25, 0x18, 0x62, 0x00, 0x1c, 0x00, 0x82, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x27, 0x10, 0x02, 0x00, 0x25, 0x18, 0x62, 0x00, 0xe0, 0xff, 0xa5, 0x24, - 0x20, 0x00, 0xa2, 0x28, 0xde, 0xff, 0x40, 0x10, 0x20, 0x00, 0x84, 0x24, 0x21, - 0x10, 0x60, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, - 0xbd, 0x27, 0x18, 0x00, 0xbf, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, - 0xaf, 0x21, 0x88, 0x80, 0x00, 0x40, 0x00, 0x23, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x40, 0x10, 0x03, 0x00, 0x21, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x21, - 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x1c, 0x00, 0x23, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x21, 0x10, 0x43, 0x00, 0x01, 0x00, 0x03, 0x24, 0x0c, 0x00, 0x43, - 0xac, 0x11, 0x80, 0x04, 0x3c, 0xd4, 0xb2, 0x84, 0x24, 0x00, 0x00, 0x82, 0x8c, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x67, - 0x11, 0x04, 0x0c, 0x3c, 0x1f, 0x05, 0x24, 0x68, 0x80, 0x84, 0x8f, 0x64, 0x80, - 0x90, 0x8f, 0x80, 0x00, 0x23, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x64, - 0x00, 0x03, 0x00, 0x40, 0x10, 0x04, 0x00, 0x82, 0x28, 0x21, 0x20, 0x60, 0x00, - 0x04, 0x00, 0x82, 0x28, 0x02, 0x00, 0x40, 0x10, 0x04, 0x00, 0x02, 0x2a, 0x04, - 0x00, 0x04, 0x24, 0x03, 0x00, 0x40, 0x10, 0x2a, 0x10, 0x90, 0x00, 0x04, 0x00, - 0x10, 0x24, 0x2a, 0x10, 0x90, 0x00, 0x02, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x21, 0x80, 0x80, 0x00, 0x23, 0x20, 0x90, 0x00, 0xf8, 0x0e, 0x04, 0x0c, - 0x01, 0x00, 0x84, 0x24, 0x21, 0x20, 0x20, 0x02, 0x11, 0x80, 0x05, 0x3c, 0xd4, - 0xb2, 0xa5, 0x24, 0x60, 0x1b, 0x04, 0x0c, 0x21, 0x30, 0x02, 0x02, 0x18, 0x00, - 0xbf, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, - 0x03, 0x20, 0x00, 0xbd, 0x27, 0xd8, 0xff, 0xbd, 0x27, 0x24, 0x00, 0xbf, 0xaf, - 0x20, 0x00, 0xb4, 0xaf, 0x1c, 0x00, 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, - 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x88, 0x80, 0x00, 0x00, 0xa0, - 0x03, 0x3c, 0xd4, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, 0x04, 0x00, 0x33, 0x8e, - 0x3c, 0x00, 0x22, 0x8e, 0x34, 0x00, 0x23, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, - 0xa0, 0x43, 0x00, 0x21, 0x90, 0x60, 0x00, 0x38, 0x00, 0x22, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x30, 0x00, 0x42, 0x12, 0x0f, 0x00, 0x94, 0x32, 0x10, 0x00, 0x30, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x00, 0x22, 0xae, 0x34, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, - 0x10, 0x42, 0x02, 0x0f, 0x00, 0x42, 0x30, 0x2a, 0x10, 0x54, 0x00, 0x08, 0x00, - 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x62, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0xfc, 0xff, 0x42, 0x24, 0x08, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x23, 0x10, 0x43, 0x00, 0x84, 0x00, 0x62, 0xae, 0x04, 0x00, 0x02, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x24, 0x0a, 0x00, 0x42, 0x2c, 0x04, 0x00, - 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x80, 0x84, 0x27, 0x24, 0x00, 0x04, - 0x0c, 0x4f, 0x02, 0x05, 0x24, 0x04, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x42, 0x24, 0x09, 0x00, 0x40, 0x14, 0x04, 0x00, 0x02, 0xae, 0xe4, - 0xaa, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xae, 0xe4, 0xaa, - 0x90, 0xaf, 0x64, 0x00, 0x62, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, - 0x24, 0x64, 0x00, 0x62, 0xae, 0x01, 0x00, 0x42, 0x26, 0x0f, 0x00, 0x52, 0x30, - 0x38, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xd2, 0xff, 0x42, 0x16, 0x00, - 0x00, 0x00, 0x00, 0x10, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x80, 0x84, 0x27, 0x24, 0x00, 0x04, - 0x0c, 0x59, 0x02, 0x05, 0x24, 0x18, 0x00, 0x20, 0xae, 0x10, 0x00, 0x22, 0x26, - 0x14, 0x00, 0x22, 0xae, 0xa8, 0x9e, 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x0f, - 0x00, 0x60, 0x10, 0x01, 0x00, 0x05, 0x24, 0x02, 0x00, 0x04, 0x24, 0x10, 0x00, - 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x45, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x51, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x64, 0xac, 0x00, 0x00, 0x63, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0xf4, 0xff, 0x60, 0x14, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x20, 0xae, 0x3c, 0x00, 0x20, 0xae, 0x34, 0x00, 0x20, 0xae, 0x30, 0x00, 0x20, - 0xae, 0x20, 0x00, 0x23, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x62, 0x30, - 0x05, 0x00, 0x40, 0x10, 0xfb, 0xff, 0x02, 0x24, 0x24, 0x10, 0x62, 0x00, 0x20, - 0x00, 0x22, 0xae, 0x65, 0x18, 0x04, 0x0c, 0xd0, 0x00, 0x64, 0x26, 0x20, 0x00, - 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x42, 0x34, 0x20, 0x00, 0x22, - 0xae, 0x85, 0x18, 0x04, 0x0c, 0x6c, 0x00, 0x24, 0x26, 0x65, 0x18, 0x04, 0x0c, - 0x54, 0x00, 0x24, 0x26, 0x24, 0x00, 0xbf, 0x8f, 0x20, 0x00, 0xb4, 0x8f, 0x1c, - 0x00, 0xb3, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, - 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x28, 0x00, 0xbd, 0x27, 0xe0, 0xff, 0xbd, - 0x27, 0x18, 0x00, 0xbf, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, - 0x21, 0x80, 0x80, 0x00, 0x21, 0x88, 0xa0, 0x00, 0x20, 0x00, 0x02, 0x8e, 0x0d, - 0xff, 0x03, 0x24, 0x24, 0x10, 0x43, 0x00, 0x09, 0x00, 0x42, 0x34, 0xf8, 0x11, - 0x04, 0x0c, 0x20, 0x00, 0x02, 0xae, 0x50, 0x00, 0x11, 0xae, 0x04, 0x00, 0x03, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x42, 0x34, 0x2c, 0x00, 0x62, 0xac, 0x18, 0x00, 0xbf, 0x8f, 0x14, - 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x20, 0x00, - 0xbd, 0x27, 0xd0, 0xff, 0xbd, 0x27, 0x28, 0x00, 0xbf, 0xaf, 0x24, 0x00, 0xb5, - 0xaf, 0x20, 0x00, 0xb4, 0xaf, 0x1c, 0x00, 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, - 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x88, 0x80, 0x00, 0x21, - 0x98, 0xa0, 0x00, 0x04, 0x00, 0x32, 0x8e, 0x08, 0x00, 0x75, 0x8e, 0x14, 0x00, - 0x64, 0x8e, 0x00, 0x00, 0xa2, 0x92, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x42, - 0x30, 0x2f, 0x00, 0x40, 0x14, 0x00, 0xa0, 0x02, 0x3c, 0x7c, 0x0d, 0x42, 0x34, - 0x00, 0x00, 0x43, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x63, 0x24, 0x00, - 0x00, 0x43, 0xac, 0x1c, 0x00, 0x24, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x62, 0x30, 0x03, 0x00, 0x40, - 0x10, 0xfb, 0x00, 0x62, 0x30, 0xb6, 0x12, 0x04, 0x08, 0x00, 0x00, 0x82, 0xa0, - 0x1c, 0x00, 0x23, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x90, 0x00, - 0x00, 0x00, 0x00, 0xfd, 0x00, 0x42, 0x30, 0x00, 0x00, 0x62, 0xa0, 0x20, 0x00, - 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x30, 0x03, 0x00, 0x40, - 0x14, 0x21, 0x20, 0x20, 0x02, 0x78, 0x12, 0x04, 0x0c, 0x05, 0x00, 0x05, 0x24, - 0x20, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x42, 0x34, 0x20, - 0x00, 0x22, 0xae, 0x6c, 0x00, 0x22, 0x26, 0x6c, 0x00, 0x23, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x05, 0x00, 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, 0xf4, 0xaa, 0x82, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x7d, 0x01, 0x43, 0x14, 0x00, 0x00, 0x00, 0x00, - 0xac, 0x89, 0x85, 0x8f, 0x6c, 0x00, 0x24, 0x26, 0x99, 0x18, 0x04, 0x0c, 0xd0, - 0x07, 0xa5, 0x24, 0x46, 0x14, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xa2, 0x92, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x42, 0x30, 0xfb, 0xff, 0x43, - 0x24, 0x07, 0x00, 0x62, 0x2c, 0x49, 0x00, 0x40, 0x10, 0x80, 0x10, 0x03, 0x00, - 0x10, 0x80, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0xd0, 0x7d, 0x22, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x02, 0x24, 0x5e, 0x01, 0x82, 0x14, 0x00, 0xa0, 0x02, 0x3c, 0xcc, 0x0d, 0x42, - 0x34, 0x00, 0x00, 0x43, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x63, 0x24, - 0x00, 0x00, 0x43, 0xac, 0x20, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x42, 0x30, 0x0e, 0x00, 0x40, 0x10, 0xfd, 0xff, 0x03, 0x24, 0xcc, 0x00, - 0x40, 0xae, 0x85, 0x18, 0x04, 0x0c, 0x6c, 0x00, 0x24, 0x26, 0x20, 0x00, 0x22, - 0x8e, 0xfe, 0xff, 0x03, 0x24, 0x24, 0x18, 0x43, 0x00, 0x08, 0x00, 0x42, 0x30, - 0x54, 0x01, 0x40, 0x10, 0x20, 0x00, 0x23, 0xae, 0xf7, 0xff, 0x02, 0x24, 0x24, - 0x10, 0x62, 0x00, 0x2d, 0x14, 0x04, 0x08, 0x10, 0x00, 0x42, 0x34, 0x20, 0x00, - 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x24, 0x10, 0x43, 0x00, 0x18, 0x00, 0x42, - 0x34, 0x20, 0x00, 0x22, 0xae, 0x2c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x42, 0x34, 0x2c, 0x00, 0x42, 0xae, 0xf8, 0x11, 0x04, 0x0c, 0x21, - 0x20, 0x20, 0x02, 0x46, 0x14, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x02, 0x24, 0x37, 0x01, 0x82, 0x14, 0x00, 0xa0, 0x02, 0x3c, 0x20, 0x00, 0x22, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x30, 0xb8, 0x00, 0x40, 0x10, - 0x00, 0xa0, 0x03, 0x3c, 0xcc, 0x00, 0x40, 0xae, 0x85, 0x18, 0x04, 0x0c, 0x6c, - 0x00, 0x24, 0x26, 0x20, 0x00, 0x22, 0x8e, 0xf6, 0xff, 0x03, 0x24, 0x24, 0x10, - 0x43, 0x00, 0x46, 0x14, 0x04, 0x08, 0x20, 0x00, 0x22, 0xae, 0x04, 0x00, 0x02, - 0x24, 0x27, 0x01, 0x82, 0x14, 0x00, 0xa0, 0x02, 0x3c, 0x22, 0x13, 0x04, 0x08, - 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x82, 0x24, 0xe9, 0x13, 0x42, 0x2c, 0x21, - 0x01, 0x40, 0x10, 0x00, 0xa0, 0x02, 0x3c, 0x22, 0x13, 0x04, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x6c, 0x80, 0x84, 0x27, 0x24, 0x00, 0x04, 0x0c, 0x5a, 0x03, 0x05, - 0x24, 0x20, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x30, - 0x20, 0x01, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xa2, 0x92, 0x00, - 0x00, 0x00, 0x00, 0x0f, 0x00, 0x45, 0x30, 0xff, 0x00, 0xa3, 0x30, 0x34, 0x00, - 0x24, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, 0x18, 0x64, 0x00, 0x0f, 0x00, 0x63, - 0x30, 0x3c, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0x44, 0x00, - 0x0f, 0x00, 0x42, 0x30, 0x2a, 0x10, 0x43, 0x00, 0x0b, 0x00, 0x40, 0x10, 0x00, - 0xa0, 0x03, 0x3c, 0xc0, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, 0x21, 0x20, 0x20, - 0x02, 0x78, 0x12, 0x04, 0x0c, 0x03, 0x00, 0x05, 0x24, 0x46, 0x14, 0x04, 0x08, - 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xa3, 0x30, 0x34, 0x00, 0x22, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x44, 0x00, 0x43, 0x10, 0xff, 0x00, 0xb4, 0x30, 0x1c, 0x00, - 0x23, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x90, 0x00, 0x00, 0x00, - 0x00, 0x06, 0x00, 0x42, 0x34, 0x00, 0x00, 0x62, 0xa0, 0xc8, 0x00, 0x40, 0xae, - 0xcc, 0x00, 0x40, 0xae, 0x10, 0x00, 0x30, 0x8e, 0x34, 0x00, 0x22, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x0f, 0x00, 0x42, 0x30, 0x34, 0x00, - 0x22, 0xae, 0x00, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x22, - 0xae, 0x04, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x24, - 0x0a, 0x00, 0x42, 0x2c, 0x04, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x6c, - 0x80, 0x84, 0x27, 0x24, 0x00, 0x04, 0x0c, 0x95, 0x03, 0x05, 0x24, 0x04, 0x00, - 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x24, 0x09, 0x00, 0x40, - 0x14, 0x04, 0x00, 0x02, 0xae, 0xe4, 0xaa, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0xae, 0xe4, 0xaa, 0x90, 0xaf, 0x64, 0x00, 0x42, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x64, 0x00, 0x42, 0xae, 0x34, 0x00, - 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xde, 0xff, 0x54, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x10, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, 0x14, - 0x10, 0x00, 0x22, 0x26, 0x14, 0x00, 0x22, 0xae, 0x20, 0x00, 0x22, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x42, 0x30, 0x0f, 0x00, 0x40, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x23, 0x8e, 0x34, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x05, 0x00, 0x62, 0x14, 0x6c, 0x00, 0x24, 0x26, 0x85, 0x18, 0x04, 0x0c, - 0x6c, 0x00, 0x24, 0x26, 0x88, 0x13, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0xac, - 0x89, 0x82, 0x8f, 0x74, 0x00, 0x45, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x99, 0x18, - 0x04, 0x0c, 0x21, 0x28, 0x45, 0x00, 0x00, 0x00, 0xa2, 0x92, 0x00, 0x00, 0x00, - 0x00, 0x0f, 0x00, 0x43, 0x30, 0x09, 0x00, 0x02, 0x24, 0x0e, 0x00, 0x62, 0x10, - 0x0a, 0x00, 0x62, 0x28, 0x05, 0x00, 0x40, 0x10, 0x07, 0x00, 0x02, 0x24, 0x61, - 0x00, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0x46, 0x14, 0x04, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x0a, 0x00, 0x02, 0x24, 0x18, 0x00, 0x62, 0x10, 0x0b, 0x00, 0x02, - 0x24, 0x25, 0x00, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0x46, 0x14, 0x04, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x24, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x82, 0x30, 0x0d, 0x00, 0x40, 0x14, 0x00, 0xa0, 0x02, 0x3c, 0x3c, 0x00, - 0x23, 0x8e, 0x38, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x62, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x82, 0x34, 0x20, 0x00, 0x22, 0xae, - 0x2c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x34, 0x2c, - 0x00, 0x42, 0xae, 0x00, 0xa0, 0x02, 0x3c, 0x3e, 0x14, 0x04, 0x08, 0xf0, 0x0d, - 0x42, 0x34, 0x20, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x42, - 0x34, 0x20, 0x00, 0x22, 0xae, 0x2c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x42, 0x34, 0x2c, 0x00, 0x42, 0xae, 0x00, 0xa0, 0x03, 0x3c, 0xf4, - 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x42, 0x24, 0x42, 0x14, 0x04, 0x08, 0x00, 0x00, 0x62, 0xac, 0x20, 0x00, 0x22, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x42, 0x30, 0x08, 0x00, 0x40, 0x14, - 0xf5, 0xff, 0x03, 0x24, 0x00, 0xa0, 0x03, 0x3c, 0xec, 0x0d, 0x63, 0x34, 0x00, - 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x46, 0x14, - 0x04, 0x08, 0x00, 0x00, 0x62, 0xac, 0xcc, 0x00, 0x40, 0xae, 0x20, 0x00, 0x22, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x24, 0x10, 0x43, 0x00, 0x20, 0x00, 0x22, 0xae, - 0x10, 0x00, 0x30, 0x8e, 0x18, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x0d, - 0x00, 0x02, 0x12, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x42, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x42, 0x24, 0x08, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x21, 0x10, 0x43, 0x00, 0x84, 0x00, 0x42, 0xae, 0x00, 0x00, 0x10, 0x8e, - 0x18, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x02, 0x16, 0x00, - 0x00, 0x00, 0x00, 0x34, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x22, 0xae, 0x10, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x22, - 0xae, 0x34, 0x00, 0x23, 0x8e, 0x38, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x22, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x2d, 0x14, 0x04, 0x08, 0x08, 0x00, 0x42, 0x34, 0x85, 0x18, - 0x04, 0x0c, 0x6c, 0x00, 0x24, 0x26, 0x46, 0x14, 0x04, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0xa2, 0x92, 0x00, 0x00, 0x00, 0x00, 0x02, 0x21, 0x02, 0x00, - 0xff, 0x00, 0x83, 0x30, 0x30, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2a, - 0x00, 0x62, 0x14, 0xff, 0x00, 0x82, 0x30, 0x01, 0x00, 0x02, 0x24, 0x10, 0x00, - 0x62, 0xae, 0x04, 0x00, 0x71, 0xae, 0x00, 0x00, 0x60, 0xae, 0xa8, 0x9e, 0x82, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, - 0xc0, 0x9e, 0x84, 0x27, 0x65, 0x18, 0x04, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xd8, - 0x9e, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0xac, 0xd8, 0x9e, - 0x93, 0xaf, 0x30, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, - 0x24, 0x0f, 0x00, 0x42, 0x30, 0x30, 0x00, 0x22, 0xae, 0x20, 0x00, 0x22, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x42, 0x30, 0x05, 0x00, 0x40, 0x10, 0x00, - 0x00, 0x00, 0x00, 0xac, 0x89, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x46, 0x14, - 0x04, 0x08, 0x28, 0x00, 0x22, 0xae, 0x20, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x80, 0x00, 0x42, 0x34, 0x20, 0x00, 0x22, 0xae, 0x74, 0x00, 0x42, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x82, 0x10, 0x02, 0x00, 0xac, 0x89, 0x83, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x21, 0x10, 0x43, 0x00, 0x46, 0x14, 0x04, 0x08, 0x28, 0x00, - 0x22, 0xae, 0x30, 0x00, 0x23, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0x43, - 0x00, 0x0f, 0x00, 0x42, 0x30, 0x05, 0x00, 0x42, 0x28, 0x0a, 0x00, 0x40, 0x10, - 0x00, 0xa0, 0x03, 0x3c, 0x20, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x40, - 0x00, 0x42, 0x34, 0x20, 0x00, 0x22, 0xae, 0x2c, 0x00, 0x42, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x42, 0x34, 0x46, 0x14, 0x04, 0x08, 0x2c, 0x00, 0x42, - 0xae, 0xc4, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, 0x21, 0x20, 0x20, 0x02, 0x78, - 0x12, 0x04, 0x0c, 0x04, 0x00, 0x05, 0x24, 0x46, 0x14, 0x04, 0x08, 0x00, 0x00, - 0x00, 0x00, 0xbc, 0x0d, 0x42, 0x34, 0x00, 0x00, 0x43, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x63, 0x24, 0x00, 0x00, 0x43, 0xac, 0xc8, 0x00, 0x42, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0xc8, 0x00, 0x42, 0xae, 0x28, - 0x00, 0xbf, 0x8f, 0x24, 0x00, 0xb5, 0x8f, 0x20, 0x00, 0xb4, 0x8f, 0x1c, 0x00, - 0xb3, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, - 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x30, 0x00, 0xbd, 0x27, 0xd0, 0xff, 0xbd, 0x27, - 0x2c, 0x00, 0xbf, 0xaf, 0x28, 0x00, 0xb6, 0xaf, 0x24, 0x00, 0xb5, 0xaf, 0x20, - 0x00, 0xb4, 0xaf, 0x1c, 0x00, 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, - 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0xa0, 0x80, 0x00, 0x21, 0xa8, 0xa0, - 0x00, 0xac, 0x89, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xaa, 0x82, 0xaf, - 0x08, 0x00, 0xb3, 0x8e, 0x14, 0x00, 0xb6, 0x8e, 0x7c, 0x00, 0x83, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x05, 0x00, 0x60, 0x10, 0x2a, 0x10, 0xc3, 0x02, 0x60, 0x00, - 0x40, 0x14, 0x23, 0x10, 0x76, 0x00, 0xc4, 0x14, 0x04, 0x08, 0x21, 0x10, 0x00, - 0x00, 0xa0, 0x9e, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x29, 0x00, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0e, 0x04, 0x0c, 0x64, 0x00, 0x04, 0x24, 0xa0, - 0x9e, 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x43, 0x00, 0x22, 0x00, - 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0x92, 0x00, 0x00, 0x00, - 0x00, 0xf8, 0x0e, 0x04, 0x0c, 0x02, 0x00, 0x04, 0x24, 0x21, 0x88, 0x40, 0x00, - 0xf8, 0x0e, 0x04, 0x0c, 0x08, 0x00, 0x04, 0x24, 0x21, 0x80, 0x40, 0x00, 0xf8, - 0x0e, 0x04, 0x0c, 0x02, 0x00, 0x04, 0x24, 0x21, 0x88, 0x71, 0x02, 0x80, 0x10, - 0x02, 0x00, 0x04, 0x80, 0x50, 0x00, 0x00, 0x00, 0x22, 0x92, 0x00, 0x00, 0x00, - 0x00, 0x26, 0x10, 0x50, 0x00, 0x00, 0x00, 0x22, 0xa2, 0x00, 0x00, 0x62, 0x92, - 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x43, 0x30, 0x01, 0x00, 0x02, 0x24, 0x05, - 0x00, 0x62, 0x14, 0x0f, 0x00, 0x42, 0x32, 0x04, 0x00, 0x43, 0x10, 0x00, 0xa0, - 0x03, 0x3c, 0x93, 0x14, 0x04, 0x08, 0x00, 0x00, 0x72, 0xa2, 0x00, 0xa0, 0x03, - 0x3c, 0xdc, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, 0x00, 0x00, 0x62, 0x92, 0x00, - 0x00, 0x00, 0x00, 0x0f, 0x00, 0x43, 0x30, 0x44, 0x00, 0x60, 0x10, 0x05, 0x00, - 0x62, 0x28, 0x05, 0x00, 0x40, 0x10, 0x21, 0x20, 0x80, 0x02, 0x99, 0x0c, 0x04, - 0x0c, 0x21, 0x28, 0xa0, 0x02, 0xe5, 0x14, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x62, 0x28, 0x3b, 0x00, 0x40, 0x10, 0xc3, 0xa5, 0x02, 0x34, 0x02, - 0x00, 0x63, 0x92, 0x00, 0x00, 0x00, 0x00, 0x23, 0x90, 0x43, 0x00, 0x00, 0x00, - 0x62, 0x92, 0x00, 0x00, 0x00, 0x00, 0x23, 0x90, 0x42, 0x02, 0x01, 0x00, 0x62, - 0x92, 0x03, 0x00, 0x63, 0x92, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x43, 0x00, - 0x00, 0x12, 0x02, 0x00, 0x23, 0x90, 0x42, 0x02, 0xff, 0xff, 0x52, 0x32, 0x17, - 0x00, 0x56, 0x12, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x9e, 0x82, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x13, 0x00, 0x40, 0x14, 0x00, 0xa0, 0x03, 0x3c, 0xac, 0x0d, 0x63, - 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, - 0x00, 0x00, 0x62, 0xac, 0xc8, 0x00, 0x82, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x42, 0x24, 0xc8, 0x00, 0x82, 0xae, 0x14, 0x00, 0xa5, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x2a, 0x10, 0xb2, 0x00, 0x24, 0x00, 0x40, 0x10, 0xa0, 0x0f, 0x42, - 0x2a, 0x22, 0x00, 0x40, 0x10, 0x23, 0x10, 0x45, 0x02, 0xe5, 0x14, 0x04, 0x08, - 0x7c, 0x00, 0x82, 0xae, 0x00, 0x00, 0x62, 0x92, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x11, 0x02, 0x00, 0x07, 0x00, 0x52, 0x30, 0x6c, 0x00, 0x82, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x2a, 0x10, 0x42, 0x02, 0x0a, 0x00, 0x40, 0x10, 0x40, 0x21, 0x12, - 0x00, 0x21, 0x20, 0x92, 0x00, 0x80, 0x20, 0x04, 0x00, 0x0c, 0x00, 0x82, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, 0x82, 0x00, 0x90, 0x12, 0x04, 0x0c, 0x21, - 0x28, 0xa0, 0x02, 0xe5, 0x14, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, - 0x02, 0x3c, 0xdd, 0x14, 0x04, 0x08, 0xb4, 0x0d, 0x42, 0x34, 0x00, 0xa0, 0x02, - 0x3c, 0xb8, 0x0d, 0x42, 0x34, 0x00, 0x00, 0x43, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x63, 0x24, 0x00, 0x00, 0x43, 0xac, 0xc8, 0x00, 0x82, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0xc8, 0x00, 0x82, 0xae, 0x2c, 0x00, - 0xbf, 0x8f, 0x28, 0x00, 0xb6, 0x8f, 0x24, 0x00, 0xb5, 0x8f, 0x20, 0x00, 0xb4, - 0x8f, 0x1c, 0x00, 0xb3, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, - 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x30, 0x00, 0xbd, 0x27, 0xe0, - 0xff, 0xbd, 0x27, 0x18, 0x00, 0xbf, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, - 0xb0, 0xaf, 0xa8, 0x9e, 0x91, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x9e, 0x82, 0xaf, 0x03, 0x00, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0xa8, 0x9e, 0x82, 0x27, 0xd8, 0x9e, 0x82, 0xaf, 0x10, - 0x00, 0x23, 0x8e, 0x01, 0x00, 0x02, 0x24, 0x20, 0x00, 0x62, 0x14, 0x02, 0x00, - 0x02, 0x24, 0x48, 0x9a, 0x84, 0x8f, 0x1f, 0x02, 0x04, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x44, 0x8c, - 0x08, 0x00, 0x23, 0x8e, 0x14, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, - 0x80, 0x62, 0x00, 0x00, 0x9f, 0x10, 0x26, 0x20, 0x00, 0x85, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x23, 0x80, 0x05, 0x02, 0x04, 0x00, 0x00, 0x1a, 0x21, 0x20, 0xa0, - 0x00, 0x00, 0x61, 0xa5, 0x24, 0x58, 0x01, 0x04, 0x0c, 0x21, 0x30, 0x00, 0x02, - 0x08, 0x00, 0x25, 0x8e, 0x14, 0x00, 0x26, 0x8e, 0x04, 0x00, 0x24, 0x8e, 0x04, - 0x00, 0xa5, 0x24, 0xae, 0x06, 0x04, 0x0c, 0xfc, 0xff, 0xc6, 0x24, 0x50, 0x9a, - 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x16, 0x02, 0x04, 0x0c, 0x21, 0x80, 0x40, - 0x00, 0x25, 0x15, 0x04, 0x08, 0x10, 0x00, 0x20, 0xae, 0x04, 0x00, 0x62, 0x10, - 0x21, 0x80, 0x00, 0x00, 0x6c, 0x80, 0x84, 0x27, 0x24, 0x00, 0x04, 0x0c, 0x1e, - 0x05, 0x05, 0x24, 0x10, 0x00, 0x20, 0xae, 0x00, 0xa0, 0x03, 0x3c, 0x74, 0x0d, - 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, - 0x24, 0x0b, 0x00, 0x00, 0x12, 0x00, 0x00, 0x62, 0xac, 0x00, 0xa0, 0x03, 0x3c, - 0xc8, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, 0x04, 0x00, 0x24, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x78, 0x12, 0x04, 0x0c, 0x21, 0x28, 0x00, 0x02, 0xa8, 0x9e, 0x82, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, - 0xc0, 0x9e, 0x84, 0x27, 0x65, 0x18, 0x04, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x18, - 0x00, 0xbf, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, - 0xe0, 0x03, 0x20, 0x00, 0xbd, 0x27, 0xe8, 0xff, 0xbd, 0x27, 0x14, 0x00, 0xbf, - 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x11, 0x09, 0x04, 0x0c, 0x21, 0x80, 0x80, 0x00, - 0x20, 0x00, 0x02, 0x8e, 0xff, 0xfe, 0x03, 0x24, 0x24, 0x10, 0x43, 0x00, 0x20, - 0x00, 0x02, 0xae, 0x14, 0x00, 0xbf, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, - 0xe0, 0x03, 0x18, 0x00, 0xbd, 0x27, 0xd8, 0xff, 0xbd, 0x27, 0x24, 0x00, 0xbf, - 0xaf, 0x20, 0x00, 0xb4, 0xaf, 0x1c, 0x00, 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, - 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x88, 0x80, 0x00, 0x04, - 0x00, 0x33, 0x8e, 0x20, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, - 0x42, 0x30, 0xcd, 0x00, 0x40, 0x14, 0x21, 0x10, 0x00, 0x00, 0x38, 0x00, 0x22, - 0x8e, 0x34, 0x00, 0x23, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0x43, 0x00, - 0x0f, 0x00, 0x42, 0x30, 0x05, 0x00, 0x42, 0x28, 0x19, 0x00, 0x40, 0x14, 0x80, - 0x00, 0x02, 0x24, 0x20, 0x00, 0x24, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, - 0x83, 0x30, 0xc0, 0x00, 0x62, 0x14, 0x21, 0x10, 0x00, 0x00, 0xac, 0x89, 0x82, - 0x8f, 0x28, 0x00, 0x23, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0x43, 0x00, - 0xff, 0x3f, 0x03, 0x3c, 0xff, 0xff, 0x63, 0x34, 0x2b, 0x18, 0x62, 0x00, 0xb7, - 0x00, 0x60, 0x14, 0x21, 0x10, 0x00, 0x00, 0x08, 0x00, 0x82, 0x34, 0x20, 0x00, - 0x22, 0xae, 0x2c, 0x00, 0x62, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, - 0x34, 0x2c, 0x00, 0x62, 0xae, 0x85, 0x0d, 0x04, 0x0c, 0x21, 0x20, 0x60, 0x02, - 0x29, 0x16, 0x04, 0x08, 0x21, 0x10, 0x00, 0x00, 0xe4, 0xaa, 0x92, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xe4, 0xaa, - 0x82, 0xaf, 0x00, 0x00, 0x40, 0xae, 0x04, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x80, 0x84, 0x27, - 0x24, 0x00, 0x04, 0x0c, 0x76, 0x05, 0x05, 0x24, 0x48, 0x9a, 0x84, 0x8f, 0x1f, - 0x02, 0x04, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, 0x20, 0x02, 0x80, 0x00, - 0x66, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x8e, 0x04, 0x04, 0x0c, 0x10, 0x00, 0x45, - 0x26, 0x21, 0xa0, 0x40, 0x00, 0x50, 0x80, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x1f, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x62, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x2a, 0x10, 0x82, 0x02, 0x1a, 0x00, 0x40, 0x10, 0x21, 0x10, - 0x54, 0x02, 0xfe, 0x00, 0x03, 0x24, 0x10, 0x00, 0x43, 0xa0, 0x58, 0x80, 0x84, - 0x8f, 0x54, 0x80, 0x90, 0x8f, 0x80, 0x00, 0x63, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x2a, 0x10, 0x64, 0x00, 0x03, 0x00, 0x40, 0x10, 0x2a, 0x10, 0x94, 0x00, 0x21, - 0x20, 0x60, 0x00, 0x2a, 0x10, 0x94, 0x00, 0x02, 0x00, 0x40, 0x10, 0x2a, 0x10, - 0x14, 0x02, 0x21, 0x20, 0x80, 0x02, 0x03, 0x00, 0x40, 0x10, 0x2a, 0x10, 0x90, - 0x00, 0x21, 0x80, 0x80, 0x02, 0x2a, 0x10, 0x90, 0x00, 0x02, 0x00, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x21, 0x80, 0x80, 0x00, 0x23, 0x20, 0x90, 0x00, 0xf8, - 0x0e, 0x04, 0x0c, 0x01, 0x00, 0x84, 0x24, 0x21, 0xa0, 0x02, 0x02, 0x50, 0x9a, - 0x84, 0x8f, 0x16, 0x02, 0x04, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x9e, 0x82, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x54, 0x00, 0x04, 0x00, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x6c, 0x80, 0x84, 0x27, 0x24, 0x00, 0x04, 0x0c, 0x93, - 0x05, 0x05, 0x24, 0x20, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x42, 0x30, 0x07, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xe4, 0xaa, 0x82, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xae, 0xe4, 0xaa, 0x92, 0xaf, - 0x29, 0x16, 0x04, 0x08, 0x21, 0x10, 0x80, 0x02, 0x23, 0x00, 0x80, 0x16, 0xff, - 0x3f, 0x06, 0x3c, 0xac, 0x89, 0x85, 0x8f, 0x2c, 0x00, 0x22, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x23, 0x10, 0xa2, 0x00, 0xff, 0xff, 0xc6, 0x34, 0x2b, 0x10, 0xc2, - 0x00, 0x1b, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xe4, 0xaa, 0x82, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xae, 0xe4, 0xaa, 0x92, 0xaf, 0x20, - 0x00, 0x24, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x83, 0x30, 0x80, 0x00, - 0x02, 0x24, 0x4b, 0x00, 0x62, 0x14, 0x21, 0x10, 0x80, 0x02, 0x28, 0x00, 0x22, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0xa2, 0x00, 0x2b, 0x10, 0xc2, 0x00, - 0x45, 0x00, 0x40, 0x14, 0x21, 0x10, 0x80, 0x02, 0x08, 0x00, 0x82, 0x34, 0x20, - 0x00, 0x22, 0xae, 0x2c, 0x00, 0x62, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x42, 0x34, 0x2c, 0x00, 0x62, 0xae, 0x85, 0x0d, 0x04, 0x0c, 0x21, 0x20, 0x60, - 0x02, 0x29, 0x16, 0x04, 0x08, 0x21, 0x10, 0x80, 0x02, 0x04, 0x00, 0x42, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x40, 0x10, 0x01, 0x00, 0x02, 0x24, 0x6c, - 0x80, 0x84, 0x27, 0x24, 0x00, 0x04, 0x0c, 0xda, 0x05, 0x05, 0x24, 0x01, 0x00, - 0x02, 0x24, 0x04, 0x00, 0x42, 0xae, 0x64, 0x00, 0x62, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x42, 0x24, 0x64, 0x00, 0x62, 0xae, 0x00, 0xa0, 0x03, 0x3c, - 0x70, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, 0x04, 0x00, 0x83, 0x26, 0x08, 0x00, - 0x43, 0xae, 0x84, 0x00, 0x62, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x42, - 0x24, 0x21, 0x10, 0x43, 0x00, 0x84, 0x00, 0x62, 0xae, 0x14, 0x00, 0x22, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0xac, 0x14, 0x00, 0x32, 0xae, 0x18, - 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x18, 0x00, 0x32, 0xae, 0x38, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x42, 0x24, 0x0f, 0x00, 0x42, 0x30, 0x38, 0x00, 0x22, 0xae, - 0xac, 0x89, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x88, 0x13, 0x42, 0x24, 0x2c, - 0x00, 0x22, 0xae, 0x20, 0x00, 0x23, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, - 0x62, 0x30, 0x08, 0x00, 0x40, 0x14, 0x08, 0x00, 0x62, 0x34, 0x20, 0x00, 0x22, - 0xae, 0x2c, 0x00, 0x62, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x34, - 0x2c, 0x00, 0x62, 0xae, 0x85, 0x0d, 0x04, 0x0c, 0x21, 0x20, 0x60, 0x02, 0x06, - 0x00, 0x94, 0x26, 0x21, 0x10, 0x80, 0x02, 0x24, 0x00, 0xbf, 0x8f, 0x20, 0x00, - 0xb4, 0x8f, 0x1c, 0x00, 0xb3, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, - 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x28, 0x00, 0xbd, 0x27, - 0xe0, 0xff, 0xbd, 0x27, 0x18, 0x00, 0xbf, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, - 0x00, 0xb0, 0xaf, 0x21, 0x80, 0x80, 0x00, 0x14, 0x00, 0x11, 0x8e, 0x2c, 0x00, - 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x42, 0x30, 0x05, 0x00, 0x40, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x80, 0x82, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x09, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, - 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x62, 0x30, 0x04, 0x00, 0x40, - 0x14, 0x01, 0x00, 0x62, 0x34, 0x2c, 0x00, 0x02, 0xae, 0x85, 0x0d, 0x04, 0x0c, - 0x21, 0x20, 0x00, 0x02, 0xac, 0x89, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2c, - 0x00, 0x22, 0xae, 0x28, 0x00, 0x22, 0xae, 0xc5, 0x18, 0x04, 0x0c, 0x64, 0x00, - 0x04, 0x24, 0xfa, 0x16, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x02, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x40, 0x10, 0x00, 0xa0, 0x03, 0x3c, - 0xe4, 0xaa, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x40, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x6c, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, 0x20, 0x00, 0x24, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x83, 0x30, 0x80, 0x00, 0x02, 0x24, - 0x11, 0x00, 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, 0xac, 0x89, 0x82, 0x8f, 0x28, - 0x00, 0x23, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0x43, 0x00, 0xff, 0x3f, - 0x03, 0x3c, 0xff, 0xff, 0x63, 0x34, 0x2b, 0x18, 0x62, 0x00, 0x08, 0x00, 0x60, - 0x14, 0x08, 0x00, 0x82, 0x34, 0x20, 0x00, 0x22, 0xae, 0x2c, 0x00, 0x02, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x34, 0x2c, 0x00, 0x02, 0xae, 0x85, - 0x0d, 0x04, 0x0c, 0x21, 0x20, 0x00, 0x02, 0xc5, 0x18, 0x04, 0x0c, 0x02, 0x00, - 0x04, 0x24, 0xfa, 0x16, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x23, - 0x8e, 0x38, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x62, 0x10, - 0x00, 0xa0, 0x02, 0x3c, 0x60, 0x0d, 0x42, 0x34, 0x00, 0x00, 0x43, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x63, 0x24, 0x00, 0x00, 0x43, 0xac, 0x20, 0x00, - 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x42, 0x34, 0xfa, 0x16, 0x04, - 0x08, 0x20, 0x00, 0x22, 0xae, 0x4f, 0x15, 0x04, 0x0c, 0x21, 0x20, 0x20, 0x02, - 0x21, 0x30, 0x40, 0x00, 0x00, 0x00, 0x31, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x14, - 0x00, 0x11, 0xae, 0xac, 0x89, 0x85, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xff, - 0xa3, 0x24, 0x24, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, 0xc0, - 0x10, 0x23, 0x38, 0x43, 0x00, 0x90, 0x00, 0x03, 0x8e, 0x94, 0x00, 0x02, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x39, 0x00, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0x98, - 0x00, 0x04, 0x8e, 0x9c, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, - 0xa2, 0x00, 0xe8, 0x03, 0x42, 0x2c, 0x0c, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x9c, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, 0x18, 0xa3, 0x00, - 0x40, 0x10, 0x03, 0x00, 0x21, 0x10, 0x43, 0x00, 0xc0, 0x10, 0x02, 0x00, 0x21, - 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x23, 0x20, 0x82, 0x00, 0x02, 0x00, - 0x81, 0x04, 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, 0x00, 0x00, 0x9c, 0x00, 0x05, - 0xae, 0x40, 0x10, 0x06, 0x00, 0x21, 0x10, 0x46, 0x00, 0x80, 0x19, 0x02, 0x00, - 0x21, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x21, 0x10, 0x46, 0x00, 0x80, - 0x10, 0x02, 0x00, 0x21, 0x10, 0x46, 0x00, 0x40, 0x11, 0x02, 0x00, 0x94, 0x00, - 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x43, 0x00, 0x02, 0x00, 0x60, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x07, 0x00, 0xff, 0xff, 0x01, 0x24, - 0x04, 0x00, 0x61, 0x14, 0x00, 0x80, 0x01, 0x3c, 0x02, 0x00, 0x41, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x0d, 0x00, 0x06, 0x00, 0x12, 0x10, 0x00, 0x00, 0x21, 0x20, - 0x82, 0x00, 0x98, 0x00, 0x04, 0xae, 0xeb, 0x51, 0x02, 0x3c, 0x1f, 0x85, 0x42, - 0x34, 0x18, 0x00, 0x82, 0x00, 0x10, 0x40, 0x00, 0x00, 0x43, 0x11, 0x08, 0x00, - 0xc3, 0x1f, 0x04, 0x00, 0x23, 0x10, 0x43, 0x00, 0x9c, 0xff, 0x44, 0x24, 0x2a, - 0x10, 0xe4, 0x00, 0x02, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0x38, - 0x80, 0x00, 0x84, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x40, 0x11, 0x03, - 0x00, 0x23, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x21, 0x10, 0x43, 0x00, - 0xc0, 0x10, 0x02, 0x00, 0x90, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x1a, - 0x00, 0x43, 0x00, 0x02, 0x00, 0x60, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, - 0x07, 0x00, 0xff, 0xff, 0x01, 0x24, 0x04, 0x00, 0x61, 0x14, 0x00, 0x80, 0x01, - 0x3c, 0x02, 0x00, 0x41, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x06, 0x00, - 0x12, 0x20, 0x00, 0x00, 0x78, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, - 0x10, 0xa2, 0x00, 0x23, 0x20, 0x82, 0x00, 0xec, 0xff, 0x84, 0x24, 0x2a, 0x10, - 0xe4, 0x00, 0x02, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0x38, 0x80, - 0x00, 0x03, 0x00, 0xe0, 0x18, 0x21, 0x10, 0xe5, 0x00, 0xf6, 0x16, 0x04, 0x08, - 0x24, 0x00, 0x22, 0xae, 0x24, 0x00, 0x25, 0xae, 0x24, 0x00, 0x25, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x99, 0x18, 0x04, 0x0c, 0xd0, 0x00, 0x04, 0x26, 0x18, 0x00, - 0xbf, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, - 0x03, 0x20, 0x00, 0xbd, 0x27, 0xe0, 0xff, 0xbd, 0x27, 0x18, 0x00, 0xbf, 0xaf, - 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x88, 0x80, 0x00, 0x04, - 0x00, 0x30, 0x8e, 0x20, 0x00, 0x23, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x62, 0x30, 0x04, 0x00, 0x40, 0x10, 0xff, 0xfb, 0x02, 0x24, 0x24, 0x10, 0x62, - 0x00, 0x1b, 0x17, 0x04, 0x08, 0x20, 0x00, 0x22, 0xae, 0x00, 0xa0, 0x03, 0x3c, - 0xe0, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, 0xc8, 0x00, 0x02, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0xc8, 0x00, 0x02, 0xae, 0xcc, 0x00, 0x02, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0xcc, 0x00, 0x02, 0xae, - 0xcc, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x42, 0x28, 0x09, - 0x00, 0x40, 0x14, 0x0f, 0xff, 0x03, 0x24, 0xcc, 0x00, 0x00, 0xae, 0x2c, 0x00, - 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x24, 0x10, 0x43, 0x00, 0x10, 0x00, 0x42, - 0x34, 0x2c, 0x00, 0x02, 0xae, 0x65, 0x18, 0x04, 0x0c, 0xe8, 0x00, 0x04, 0x26, - 0x20, 0x00, 0x23, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x62, 0x30, 0x0c, - 0x00, 0x40, 0x14, 0x08, 0x00, 0x62, 0x34, 0x3c, 0x00, 0x23, 0x8e, 0x34, 0x00, - 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x62, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x6c, 0x80, 0x84, 0x27, 0x24, 0x00, 0x04, 0x0c, 0xfd, 0x06, 0x05, 0x24, - 0x20, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x42, 0x34, 0x20, - 0x00, 0x22, 0xae, 0x2c, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x42, 0x34, 0x2c, 0x00, 0x02, 0xae, 0x85, 0x0d, 0x04, 0x0c, 0x21, 0x20, 0x00, - 0x02, 0x18, 0x00, 0xbf, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, - 0x08, 0x00, 0xe0, 0x03, 0x20, 0x00, 0xbd, 0x27, 0xc0, 0xff, 0xbd, 0x27, 0x38, - 0x00, 0xbf, 0xaf, 0x34, 0x00, 0xb5, 0xaf, 0x30, 0x00, 0xb4, 0xaf, 0x2c, 0x00, - 0xb3, 0xaf, 0x28, 0x00, 0xb2, 0xaf, 0x24, 0x00, 0xb1, 0xaf, 0x25, 0x1e, 0x04, - 0x0c, 0x20, 0x00, 0xb0, 0xaf, 0x11, 0x80, 0x11, 0x3c, 0x10, 0x8e, 0x31, 0x8e, - 0xa4, 0x8c, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x42, 0x28, 0x09, - 0x00, 0x40, 0x14, 0x2c, 0x01, 0x22, 0x2a, 0x11, 0x80, 0x03, 0x3c, 0x78, 0x8f, - 0x63, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x23, 0x02, 0x03, 0x00, 0x40, - 0x10, 0x2c, 0x01, 0x22, 0x2a, 0x21, 0x88, 0x60, 0x00, 0x2c, 0x01, 0x22, 0x2a, - 0x03, 0x00, 0x40, 0x10, 0x5f, 0x00, 0x22, 0x26, 0x2c, 0x01, 0x11, 0x24, 0x5f, - 0x00, 0x22, 0x26, 0xf0, 0xff, 0x03, 0x24, 0x24, 0x10, 0x43, 0x00, 0xa4, 0x9e, - 0x82, 0xaf, 0x21, 0x88, 0x00, 0x00, 0xff, 0xff, 0x12, 0x3c, 0x01, 0x00, 0x14, - 0x3c, 0x1f, 0xa0, 0x13, 0x3c, 0xff, 0xef, 0x73, 0x36, 0xe0, 0xaa, 0x83, 0x8f, - 0xa4, 0x9e, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x62, 0x00, 0x26, - 0x10, 0x43, 0x00, 0x24, 0x10, 0x52, 0x00, 0x03, 0x00, 0x40, 0x10, 0x21, 0x10, - 0x74, 0x00, 0x24, 0x10, 0x52, 0x00, 0xe0, 0xaa, 0x82, 0xaf, 0xe0, 0xaa, 0x90, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0x70, 0x02, 0x0d, 0x00, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0xa4, 0x9e, 0x85, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, - 0x28, 0x05, 0x02, 0xe0, 0xaa, 0x85, 0xaf, 0x0d, 0x0f, 0x04, 0x0c, 0x21, 0x20, - 0x00, 0x02, 0xe4, 0xaa, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0xae, 0xe4, 0xaa, 0x90, 0xaf, 0x68, 0x17, 0x04, 0x08, 0x01, 0x00, 0x31, 0x26, - 0xb0, 0x9e, 0x91, 0xaf, 0xd0, 0x89, 0x91, 0x27, 0xa4, 0x8c, 0x82, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x21, 0x18, 0x40, 0x00, 0x4a, 0x00, 0x40, 0x18, 0x21, 0x98, - 0x00, 0x00, 0x01, 0x00, 0x14, 0x24, 0x09, 0x00, 0x15, 0x24, 0x0a, 0x00, 0x74, - 0x10, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x9e, 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x40, 0x10, 0x03, 0x00, 0x21, 0x10, 0x43, 0x00, 0x02, 0x00, 0x41, 0x04, 0x00, - 0x00, 0x00, 0x00, 0x03, 0x00, 0x42, 0x24, 0x99, 0x17, 0x04, 0x08, 0x83, 0x10, - 0x02, 0x00, 0xb0, 0x9e, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x22, - 0xae, 0x0c, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x22, 0xae, - 0x0c, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x22, 0xae, 0xd0, - 0x00, 0x30, 0x26, 0x21, 0x20, 0x00, 0x02, 0x02, 0x00, 0x05, 0x24, 0x10, 0x80, - 0x06, 0x3c, 0xc4, 0x58, 0xc6, 0x24, 0x4a, 0x18, 0x04, 0x0c, 0x21, 0x38, 0x20, - 0x02, 0x65, 0x18, 0x04, 0x0c, 0x21, 0x20, 0x00, 0x02, 0xe8, 0x00, 0x30, 0x26, - 0x21, 0x20, 0x00, 0x02, 0x03, 0x00, 0x05, 0x24, 0x10, 0x80, 0x06, 0x3c, 0xa8, - 0x38, 0xc6, 0x24, 0x4a, 0x18, 0x04, 0x0c, 0x21, 0x38, 0x20, 0x02, 0xac, 0x89, - 0x85, 0x8f, 0x21, 0x20, 0x00, 0x02, 0x99, 0x18, 0x04, 0x0c, 0xe8, 0x03, 0xa5, - 0x24, 0x0c, 0x00, 0x30, 0x8e, 0x68, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x40, 0x18, 0x21, 0x90, 0x00, 0x00, 0x20, 0x00, 0x15, 0xae, 0x50, - 0x00, 0x14, 0xae, 0x54, 0x00, 0x04, 0x26, 0x21, 0x28, 0x00, 0x00, 0x10, 0x80, - 0x06, 0x3c, 0x08, 0x55, 0xc6, 0x24, 0x4a, 0x18, 0x04, 0x0c, 0x21, 0x38, 0x00, - 0x02, 0x6c, 0x00, 0x04, 0x26, 0x03, 0x00, 0x05, 0x24, 0x10, 0x80, 0x06, 0x3c, - 0xfc, 0x5b, 0xc6, 0x24, 0x4a, 0x18, 0x04, 0x0c, 0x21, 0x38, 0x00, 0x02, 0x01, - 0x00, 0x52, 0x26, 0x68, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, - 0x42, 0x02, 0xed, 0xff, 0x40, 0x14, 0x84, 0x00, 0x10, 0x26, 0x01, 0x00, 0x73, - 0x26, 0xa4, 0x8c, 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x63, 0x02, - 0xba, 0xff, 0x40, 0x14, 0x68, 0x01, 0x31, 0x26, 0xa8, 0x9e, 0x82, 0x27, 0xd8, - 0x9e, 0x82, 0xaf, 0xc0, 0x9e, 0x84, 0x27, 0x01, 0x00, 0x05, 0x24, 0x10, 0x80, - 0x06, 0x3c, 0xbc, 0x53, 0xc6, 0x24, 0x4a, 0x18, 0x04, 0x0c, 0x21, 0x38, 0x00, - 0x00, 0x38, 0x00, 0xbf, 0x8f, 0x34, 0x00, 0xb5, 0x8f, 0x30, 0x00, 0xb4, 0x8f, - 0x2c, 0x00, 0xb3, 0x8f, 0x28, 0x00, 0xb2, 0x8f, 0x24, 0x00, 0xb1, 0x8f, 0x20, - 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x40, 0x00, 0xbd, 0x27, 0xe8, 0xff, - 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x00, 0xa0, 0x04, 0x3c, 0x30, 0x0c, 0x84, - 0x34, 0x00, 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x00, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3f, - 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x83, 0x8c, 0xff, 0x3f, - 0x02, 0x3c, 0xff, 0xff, 0x42, 0x34, 0x24, 0x18, 0x62, 0x00, 0x00, 0x80, 0x02, - 0x3c, 0x25, 0x18, 0x62, 0x00, 0x08, 0x00, 0x82, 0x94, 0x00, 0x00, 0x00, 0x00, - 0x81, 0x00, 0x42, 0x2c, 0x04, 0x00, 0x40, 0x14, 0x00, 0xa0, 0x02, 0x3c, 0x80, - 0x00, 0x02, 0x24, 0x08, 0x00, 0x82, 0xa4, 0x00, 0xa0, 0x02, 0x3c, 0x30, 0x0c, - 0x42, 0x34, 0x00, 0x00, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x44, - 0x30, 0x02, 0x00, 0x02, 0x24, 0x0f, 0x00, 0x82, 0x10, 0x03, 0x00, 0x82, 0x28, - 0x05, 0x00, 0x40, 0x10, 0x01, 0x00, 0x02, 0x24, 0x08, 0x00, 0x82, 0x10, 0x21, - 0x28, 0x60, 0x00, 0x2e, 0x18, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, - 0x02, 0x24, 0x1b, 0x00, 0x82, 0x10, 0x00, 0xa0, 0x02, 0x3c, 0x2e, 0x18, 0x04, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x03, 0x3c, 0x15, 0x18, 0x04, 0x08, - 0x3a, 0x0c, 0x63, 0x34, 0x00, 0xa0, 0x05, 0x3c, 0x3a, 0x0c, 0xa5, 0x34, 0x00, - 0xa0, 0x02, 0x3c, 0x30, 0x0c, 0x42, 0x34, 0x08, 0x00, 0x42, 0x94, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x44, 0x30, 0xff, 0xff, 0x84, 0x24, 0x09, 0x00, 0x80, - 0x04, 0x00, 0xa0, 0x02, 0x3c, 0x00, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x62, 0xa0, 0x01, 0x00, 0xa5, 0x24, 0xff, 0xff, 0x84, 0x24, 0xfa, - 0xff, 0x81, 0x04, 0x01, 0x00, 0x63, 0x24, 0x00, 0xa0, 0x02, 0x3c, 0x30, 0x0c, - 0x42, 0x34, 0x2e, 0x18, 0x04, 0x08, 0x00, 0x00, 0x40, 0xa0, 0x30, 0x0c, 0x42, - 0x34, 0x00, 0x00, 0x40, 0xa0, 0x04, 0x00, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x09, 0xf8, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xbf, 0x8f, 0x18, - 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0x89, 0x82, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x42, 0x24, 0xf0, 0xaa, 0x82, 0xaf, 0x21, 0x20, 0x00, 0x00, - 0xb0, 0x8c, 0x83, 0x27, 0x00, 0x00, 0x63, 0xac, 0x04, 0x00, 0x63, 0xac, 0x01, - 0x00, 0x84, 0x24, 0x04, 0x00, 0x82, 0x28, 0xfb, 0xff, 0x40, 0x14, 0x08, 0x00, - 0x63, 0x24, 0x21, 0x20, 0x00, 0x00, 0x80, 0x92, 0x83, 0x27, 0x00, 0x00, 0x63, - 0xac, 0x04, 0x00, 0x63, 0xac, 0x01, 0x00, 0x84, 0x24, 0x10, 0x00, 0x82, 0x28, - 0xfb, 0xff, 0x40, 0x14, 0x08, 0x00, 0x63, 0x24, 0x08, 0x00, 0xe0, 0x03, 0x00, - 0x00, 0x00, 0x00, 0xd8, 0xff, 0xbd, 0x27, 0x20, 0x00, 0xbf, 0xaf, 0x1c, 0x00, - 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, - 0xaf, 0x21, 0x80, 0x80, 0x00, 0x21, 0x88, 0xa0, 0x00, 0x21, 0x90, 0xc0, 0x00, - 0x58, 0x9a, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x16, 0x02, 0x04, 0x0c, 0x21, - 0x98, 0xe0, 0x00, 0x00, 0x00, 0x10, 0xae, 0x04, 0x00, 0x10, 0xae, 0x10, 0x00, - 0x11, 0xae, 0x08, 0x00, 0x12, 0xae, 0x0c, 0x00, 0x13, 0xae, 0x1f, 0x02, 0x04, - 0x0c, 0x21, 0x20, 0x40, 0x00, 0x20, 0x00, 0xbf, 0x8f, 0x1c, 0x00, 0xb3, 0x8f, - 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, - 0x00, 0xe0, 0x03, 0x28, 0x00, 0xbd, 0x27, 0xe8, 0xff, 0xbd, 0x27, 0x14, 0x00, - 0xbf, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x80, 0x80, 0x00, 0x58, 0x9a, 0x84, - 0x8f, 0x16, 0x02, 0x04, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xac, 0x89, 0x83, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x03, 0xae, 0x04, 0x00, 0x04, 0x8e, 0x00, - 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xac, 0x04, 0x00, - 0x64, 0xac, 0x10, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x18, 0x03, - 0x00, 0xb0, 0x8c, 0x84, 0x27, 0x21, 0x18, 0x64, 0x00, 0x04, 0x00, 0x64, 0x8c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xac, 0x04, 0x00, 0x04, 0xae, 0x00, - 0x00, 0x03, 0xae, 0x04, 0x00, 0x70, 0xac, 0x1f, 0x02, 0x04, 0x0c, 0x21, 0x20, - 0x40, 0x00, 0x14, 0x00, 0xbf, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, - 0x03, 0x18, 0x00, 0xbd, 0x27, 0xe8, 0xff, 0xbd, 0x27, 0x14, 0x00, 0xbf, 0xaf, - 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x80, 0x80, 0x00, 0x58, 0x9a, 0x84, 0x8f, 0x16, - 0x02, 0x04, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x8e, 0x00, 0x00, - 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xac, 0x04, 0x00, 0x64, - 0xac, 0x04, 0x00, 0x10, 0xae, 0x00, 0x00, 0x10, 0xae, 0x1f, 0x02, 0x04, 0x0c, - 0x21, 0x20, 0x40, 0x00, 0x14, 0x00, 0xbf, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, - 0x00, 0xe0, 0x03, 0x18, 0x00, 0xbd, 0x27, 0xe0, 0xff, 0xbd, 0x27, 0x18, 0x00, - 0xbf, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x80, 0x80, - 0x00, 0x58, 0x9a, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x16, 0x02, 0x04, 0x0c, - 0x21, 0x88, 0xa0, 0x00, 0x21, 0x20, 0x40, 0x00, 0x04, 0x00, 0x03, 0x8e, 0x00, - 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0xac, 0x04, 0x00, - 0x43, 0xac, 0xac, 0x89, 0x85, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x23, 0x18, 0xb1, - 0x00, 0xff, 0x3f, 0x02, 0x3c, 0xff, 0xff, 0x42, 0x34, 0x2b, 0x10, 0x43, 0x00, - 0x06, 0x00, 0x40, 0x14, 0x0f, 0x00, 0x22, 0x32, 0x14, 0x00, 0x05, 0xae, 0x10, - 0x00, 0x02, 0x8e, 0xb0, 0x8c, 0x83, 0x27, 0xb8, 0x18, 0x04, 0x08, 0xc0, 0x10, - 0x02, 0x00, 0x14, 0x00, 0x11, 0xae, 0xc0, 0x10, 0x02, 0x00, 0x80, 0x92, 0x83, - 0x27, 0x21, 0x18, 0x43, 0x00, 0x04, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x50, 0xac, 0x04, 0x00, 0x02, 0xae, 0x00, 0x00, 0x03, 0xae, 0x1f, - 0x02, 0x04, 0x0c, 0x04, 0x00, 0x70, 0xac, 0x18, 0x00, 0xbf, 0x8f, 0x14, 0x00, - 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x20, 0x00, 0xbd, - 0x27, 0xe8, 0xff, 0xbd, 0x27, 0x14, 0x00, 0xbf, 0xaf, 0x10, 0x00, 0xb0, 0xaf, - 0xf4, 0xaa, 0x90, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x21, 0x20, 0x82, 0x00, 0x14, 0x00, 0x04, 0xae, 0x58, 0x9a, - 0x84, 0x8f, 0x16, 0x02, 0x04, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, 0x40, - 0x00, 0x04, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x62, 0xac, 0x04, 0x00, 0x43, 0xac, 0xac, 0x89, 0x85, 0x8f, 0x14, - 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, 0x18, 0xa3, 0x00, 0xff, 0x3f, - 0x02, 0x3c, 0xff, 0xff, 0x42, 0x34, 0x2b, 0x10, 0x43, 0x00, 0x06, 0x00, 0x40, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x05, 0xae, 0x10, 0x00, 0x02, 0x8e, - 0xb0, 0x8c, 0x83, 0x27, 0xea, 0x18, 0x04, 0x08, 0xc0, 0x10, 0x02, 0x00, 0x14, - 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x42, 0x30, 0xc0, 0x10, - 0x02, 0x00, 0x80, 0x92, 0x83, 0x27, 0x21, 0x18, 0x43, 0x00, 0x04, 0x00, 0x62, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xac, 0x04, 0x00, 0x02, 0xae, - 0x00, 0x00, 0x03, 0xae, 0x1f, 0x02, 0x04, 0x0c, 0x04, 0x00, 0x70, 0xac, 0x14, - 0x00, 0xbf, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x18, 0x00, - 0xbd, 0x27, 0xd8, 0xff, 0xbd, 0x27, 0x24, 0x00, 0xbf, 0xaf, 0x20, 0x00, 0xb4, - 0xaf, 0x1c, 0x00, 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb1, 0xaf, - 0x10, 0x00, 0xb0, 0xaf, 0x48, 0x9a, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x1f, - 0x02, 0x04, 0x0c, 0x00, 0xa0, 0x13, 0x3c, 0x10, 0x0d, 0x73, 0x36, 0x80, 0x92, - 0x94, 0x27, 0xff, 0x7f, 0x12, 0x3c, 0xff, 0xff, 0x52, 0x36, 0xb0, 0x8c, 0x91, - 0x27, 0x00, 0xa0, 0x02, 0x3c, 0x0f, 0x0c, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x04, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x96, 0x02, 0x00, 0x63, 0x96, 0xff, 0xff, - 0x42, 0x30, 0x09, 0x00, 0x43, 0x10, 0x00, 0xa0, 0x10, 0x3c, 0x10, 0x0d, 0x10, - 0x36, 0x81, 0x03, 0x04, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x96, - 0x02, 0x00, 0x03, 0x96, 0xff, 0xff, 0x42, 0x30, 0xfa, 0xff, 0x43, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x58, 0x9a, 0x84, 0x8f, 0x16, 0x02, 0x04, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x45, 0x19, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xaa, 0x82, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0xf0, 0xaa, 0x82, 0xaf, - 0x0f, 0x00, 0x42, 0x30, 0xc0, 0x10, 0x02, 0x00, 0x21, 0x30, 0x54, 0x00, 0x00, - 0x00, 0xc3, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x66, 0x10, 0x21, 0x28, - 0xc0, 0x00, 0xf0, 0xaa, 0x87, 0x8f, 0x14, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x23, 0x10, 0xe2, 0x00, 0x2b, 0x10, 0x42, 0x02, 0x10, 0x00, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xa2, 0xac, 0x04, 0x00, 0x45, 0xac, 0x10, 0x00, 0x62, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0xc0, 0x10, 0x02, 0x00, 0x21, 0x20, 0x51, 0x00, 0x04, 0x00, 0x82, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xac, 0x04, 0x00, 0x62, 0xac, - 0x00, 0x00, 0x64, 0xac, 0x41, 0x19, 0x04, 0x08, 0x04, 0x00, 0x83, 0xac, 0x21, - 0x28, 0x60, 0x00, 0x00, 0x00, 0xa3, 0x8c, 0x00, 0x00, 0x00, 0x00, 0xe7, 0xff, - 0x66, 0x14, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xaa, 0x83, 0x8f, 0xac, 0x89, 0x82, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0xd6, 0xff, 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, - 0xb0, 0x8c, 0x84, 0x27, 0xb0, 0x8c, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x1f, - 0x00, 0x44, 0x14, 0x00, 0x00, 0x00, 0x00, 0x11, 0x80, 0x04, 0x3c, 0x78, 0x90, - 0x84, 0x24, 0x11, 0x80, 0x02, 0x3c, 0x78, 0x90, 0x42, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x18, 0x00, 0x44, 0x14, 0x00, 0x00, 0x00, 0x00, 0x11, 0x80, 0x04, 0x3c, - 0x80, 0x90, 0x84, 0x24, 0x11, 0x80, 0x02, 0x3c, 0x80, 0x90, 0x42, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x11, 0x00, 0x44, 0x14, 0x00, 0x00, 0x00, 0x00, 0x11, 0x80, - 0x04, 0x3c, 0x88, 0x90, 0x84, 0x24, 0x11, 0x80, 0x02, 0x3c, 0x88, 0x90, 0x42, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x44, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x48, 0x9a, 0x84, 0x8f, 0x1f, 0x02, 0x04, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x90, - 0x9e, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x90, 0x9e, - 0x82, 0xaf, 0x06, 0x19, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x82, 0xac, 0x04, 0x00, 0x44, 0xac, 0x00, 0x00, 0x63, 0xac, 0x04, - 0x00, 0x63, 0xac, 0xf4, 0xaa, 0x83, 0xaf, 0xac, 0x89, 0x90, 0x8f, 0x08, 0x00, - 0x62, 0x8c, 0x0c, 0x00, 0x64, 0x8c, 0x09, 0xf8, 0x40, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x48, 0x9a, 0x84, 0x8f, 0x1f, 0x02, 0x04, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0xf4, 0xaa, 0x80, 0xaf, 0xac, 0x89, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x23, - 0x80, 0x50, 0x00, 0x32, 0x00, 0x02, 0x2e, 0x02, 0x00, 0x40, 0x14, 0x21, 0x18, - 0x00, 0x02, 0x31, 0x00, 0x03, 0x24, 0x00, 0xab, 0x82, 0x27, 0x80, 0x18, 0x03, - 0x00, 0x21, 0x18, 0x62, 0x00, 0x21, 0x20, 0x00, 0x02, 0x32, 0x00, 0x82, 0x2c, - 0x03, 0x00, 0x40, 0x14, 0x80, 0x10, 0x04, 0x00, 0x31, 0x00, 0x04, 0x24, 0x80, - 0x10, 0x04, 0x00, 0x21, 0x08, 0x5c, 0x00, 0x00, 0xab, 0x22, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x06, 0x19, 0x04, 0x08, 0x00, 0x00, 0x62, - 0xac, 0x24, 0x00, 0xbf, 0x8f, 0x20, 0x00, 0xb4, 0x8f, 0x1c, 0x00, 0xb3, 0x8f, - 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, - 0x00, 0xe0, 0x03, 0x28, 0x00, 0xbd, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, - 0xaf, 0x00, 0xa0, 0x03, 0x3c, 0x20, 0x0c, 0x63, 0x90, 0x01, 0x00, 0x02, 0x24, - 0x09, 0x00, 0x62, 0x14, 0x04, 0xa2, 0x03, 0x3c, 0x85, 0x1e, 0x02, 0x24, 0x00, - 0x00, 0x62, 0xac, 0x04, 0xa2, 0x03, 0x3c, 0x28, 0x00, 0x63, 0x34, 0x03, 0x00, - 0x02, 0x3c, 0xff, 0xff, 0x42, 0x34, 0xb1, 0x19, 0x04, 0x08, 0x00, 0x00, 0x62, - 0xac, 0xb5, 0x19, 0x04, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xbf, 0x8f, - 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe0, - 0xff, 0xbd, 0x27, 0x1c, 0x00, 0xbf, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, - 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x90, 0x00, 0x00, 0x10, 0x80, 0x11, - 0x3c, 0x20, 0x7e, 0x31, 0x26, 0x21, 0x80, 0x00, 0x00, 0xd0, 0xab, 0x80, 0xaf, - 0x21, 0x28, 0x00, 0x00, 0x21, 0x20, 0x20, 0x02, 0x00, 0x00, 0x82, 0x94, 0x02, - 0x00, 0x83, 0x90, 0x04, 0xa2, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0x00, 0x00, - 0x23, 0xa0, 0xd0, 0xab, 0x80, 0xaf, 0x01, 0x00, 0xa5, 0x24, 0x04, 0x00, 0xa2, - 0x28, 0xf7, 0xff, 0x40, 0x14, 0x04, 0x00, 0x84, 0x24, 0x00, 0x00, 0x82, 0x94, - 0x04, 0xa2, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0x00, 0x00, 0x22, 0x90, 0x00, - 0x00, 0x00, 0x00, 0x40, 0x00, 0x42, 0x30, 0x08, 0x00, 0x40, 0x10, 0x64, 0x00, - 0x02, 0x2a, 0x04, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x84, - 0x27, 0x24, 0x00, 0x04, 0x0c, 0x61, 0x00, 0x05, 0x24, 0xbe, 0x19, 0x04, 0x08, - 0x01, 0x00, 0x10, 0x26, 0x05, 0x00, 0x52, 0x26, 0x0f, 0x00, 0x42, 0x2a, 0xe0, - 0xff, 0x40, 0x14, 0x14, 0x00, 0x31, 0x26, 0x1c, 0x00, 0xbf, 0x8f, 0x18, 0x00, - 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, - 0x03, 0x20, 0x00, 0xbd, 0x27, 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, - 0x06, 0xa2, 0x02, 0x3c, 0x00, 0x00, 0x40, 0xa4, 0x00, 0xa0, 0x03, 0x3c, 0x20, - 0x0c, 0x63, 0x90, 0x01, 0x00, 0x02, 0x24, 0x18, 0x00, 0x62, 0x14, 0x2b, 0x00, - 0x02, 0x3c, 0x70, 0xad, 0x83, 0x8f, 0x77, 0x00, 0x02, 0x3c, 0x88, 0x37, 0x42, - 0x34, 0x21, 0x18, 0x62, 0x00, 0x31, 0x01, 0x02, 0x3c, 0xff, 0x2c, 0x42, 0x34, - 0x2b, 0x10, 0x43, 0x00, 0x23, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xce, - 0xfe, 0x05, 0x3c, 0x00, 0xd3, 0xa5, 0x34, 0x31, 0x01, 0x04, 0x3c, 0xff, 0x2c, - 0x84, 0x34, 0xac, 0x89, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, - 0x24, 0xac, 0x89, 0x82, 0xaf, 0x21, 0x18, 0x65, 0x00, 0x2b, 0x10, 0x83, 0x00, - 0x17, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x19, 0x04, 0x08, 0x00, - 0x00, 0x00, 0x00, 0x70, 0xad, 0x83, 0x8f, 0xe8, 0xf5, 0x42, 0x34, 0x21, 0x18, - 0x62, 0x00, 0x70, 0x00, 0x02, 0x3c, 0xff, 0x7f, 0x42, 0x34, 0x2b, 0x10, 0x43, - 0x00, 0x0d, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x8f, 0xff, 0x05, 0x3c, - 0x00, 0x80, 0xa5, 0x34, 0x70, 0x00, 0x04, 0x3c, 0xff, 0x7f, 0x84, 0x34, 0xac, - 0x89, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0xac, 0x89, - 0x82, 0xaf, 0x21, 0x18, 0x65, 0x00, 0x2b, 0x10, 0x83, 0x00, 0xf9, 0xff, 0x40, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x70, 0xad, 0x83, 0xaf, 0x00, 0xa0, 0x03, 0x3c, - 0x20, 0x0c, 0x63, 0x90, 0x01, 0x00, 0x02, 0x24, 0x32, 0x00, 0x62, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x90, 0x80, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x00, - 0x40, 0x10, 0x04, 0xa2, 0x03, 0x3c, 0x3c, 0x00, 0x63, 0x34, 0x00, 0x00, 0x62, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x44, 0x30, 0x00, 0x00, 0x62, 0x8c, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x43, 0x30, 0x23, 0x10, 0x83, 0x00, 0xff, - 0xff, 0x42, 0x30, 0x80, 0x00, 0x42, 0x2c, 0x15, 0x00, 0x40, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xa0, 0x05, 0x3c, 0x14, 0x00, 0xa5, 0x34, 0x04, 0xa2, 0x06, - 0x3c, 0x3c, 0x00, 0xc6, 0x34, 0x00, 0x00, 0xa2, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, 0xa2, 0xac, 0x00, 0x00, 0xa2, 0x8c, 0x00, - 0x00, 0xc2, 0x8c, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x44, 0x30, 0x00, 0x00, - 0xc2, 0x8c, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x43, 0x30, 0x23, 0x10, 0x83, - 0x00, 0xff, 0xff, 0x42, 0x30, 0x80, 0x00, 0x42, 0x2c, 0xf1, 0xff, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x74, 0xad, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x48, - 0x00, 0x40, 0x10, 0x23, 0x18, 0x44, 0x00, 0xff, 0xff, 0x63, 0x30, 0x40, 0x11, - 0x03, 0x00, 0x21, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x23, 0x10, 0x43, - 0x00, 0x00, 0x11, 0x02, 0x00, 0x21, 0x18, 0x62, 0x00, 0x82, 0x1a, 0x04, 0x08, - 0x02, 0x1d, 0x03, 0x00, 0x90, 0x80, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x3d, - 0x00, 0x40, 0x10, 0x00, 0xa0, 0x02, 0x3c, 0x04, 0xa2, 0x05, 0x3c, 0x80, 0x00, - 0x07, 0x24, 0x00, 0xa0, 0x06, 0x3c, 0x5d, 0x1a, 0x04, 0x08, 0x14, 0x00, 0xc6, - 0x34, 0x00, 0x00, 0xc2, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, - 0x00, 0x00, 0xc2, 0xac, 0x00, 0x00, 0xc2, 0x8c, 0x0c, 0x00, 0xa7, 0xa0, 0xd0, - 0xab, 0x80, 0xaf, 0x08, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, - 0x44, 0x30, 0x08, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x02, - 0x00, 0x25, 0x20, 0x82, 0x00, 0xd0, 0xab, 0x80, 0xaf, 0x0c, 0x00, 0xa7, 0xa0, - 0xd0, 0xab, 0x80, 0xaf, 0x08, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, 0x00, 0xff, - 0x00, 0x43, 0x30, 0x08, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, - 0x02, 0x00, 0x25, 0x18, 0x62, 0x00, 0x23, 0x10, 0x83, 0x00, 0xff, 0xff, 0x42, - 0x30, 0x80, 0x00, 0x42, 0x2c, 0xe4, 0xff, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x74, 0xad, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x40, 0x10, 0x23, - 0x18, 0x44, 0x00, 0xff, 0xff, 0x63, 0x30, 0x80, 0x10, 0x03, 0x00, 0x21, 0x10, - 0x43, 0x00, 0x00, 0x11, 0x02, 0x00, 0x23, 0x10, 0x43, 0x00, 0xc0, 0x18, 0x02, - 0x00, 0x21, 0x10, 0x43, 0x00, 0xc0, 0x10, 0x02, 0x00, 0x02, 0x1d, 0x02, 0x00, - 0x64, 0x00, 0x62, 0x2c, 0x02, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x63, - 0x00, 0x03, 0x24, 0xe0, 0xab, 0x82, 0x27, 0x80, 0x18, 0x03, 0x00, 0x21, 0x18, - 0x62, 0x00, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, - 0x24, 0x00, 0x00, 0x62, 0xac, 0x74, 0xad, 0x84, 0xaf, 0x00, 0xa0, 0x02, 0x3c, - 0x00, 0x00, 0x42, 0x8c, 0x00, 0xa0, 0x03, 0x3c, 0x10, 0x0c, 0x63, 0x94, 0x00, - 0x00, 0x00, 0x00, 0x0c, 0x00, 0x60, 0x10, 0x01, 0x00, 0x02, 0x24, 0x05, 0x00, - 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x04, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0xa0, 0x1a, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x94, 0x80, 0x84, 0x27, - 0x24, 0x00, 0x04, 0x0c, 0xdb, 0x02, 0x05, 0x24, 0x00, 0xa0, 0x01, 0x3c, 0x10, - 0x0c, 0x20, 0xa4, 0x10, 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, - 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x02, 0x3c, - 0x40, 0x00, 0x42, 0x34, 0x05, 0x00, 0x82, 0x14, 0x10, 0x00, 0x0a, 0x24, 0x08, - 0x00, 0x0a, 0x24, 0x00, 0x01, 0x02, 0x24, 0xb2, 0x1a, 0x04, 0x08, 0x00, 0x04, - 0x09, 0x24, 0x00, 0x02, 0x02, 0x24, 0x00, 0x08, 0x09, 0x24, 0xff, 0xff, 0x19, - 0x3c, 0x00, 0x10, 0x39, 0x37, 0x10, 0x80, 0x18, 0x3c, 0xf0, 0x7d, 0x18, 0x27, - 0x05, 0xa2, 0x08, 0x3c, 0x25, 0x58, 0x42, 0x01, 0x27, 0x70, 0x0b, 0x00, 0x27, - 0x68, 0x02, 0x00, 0xe1, 0x00, 0x0f, 0x3c, 0x27, 0x60, 0x09, 0x00, 0x00, 0x00, - 0xa7, 0x94, 0x00, 0x00, 0x00, 0x00, 0x21, 0x18, 0xf9, 0x00, 0x09, 0x00, 0x62, - 0x2c, 0x2e, 0x00, 0x40, 0x10, 0x80, 0x10, 0x03, 0x00, 0x21, 0x10, 0x58, 0x00, - 0x00, 0x00, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x54, 0x92, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xeb, 0x1a, - 0x04, 0x08, 0x24, 0x10, 0xc2, 0x01, 0x54, 0x92, 0x82, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x24, 0x10, 0xa2, 0x01, 0xeb, 0x1a, 0x04, 0x08, 0x25, 0x10, 0x4a, 0x00, - 0x54, 0x92, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xeb, 0x1a, 0x04, 0x08, 0x25, - 0x10, 0x62, 0x01, 0x02, 0x00, 0xa3, 0x94, 0x00, 0x00, 0xc2, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x18, 0x00, 0x62, 0x00, 0x12, 0x18, 0x00, 0x00, 0x42, 0x10, 0x03, - 0x00, 0x21, 0x10, 0x4f, 0x00, 0x1b, 0x00, 0x43, 0x00, 0x02, 0x00, 0x60, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x07, 0x00, 0x12, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf3, 0x1a, 0x04, 0x08, 0x29, 0x00, - 0x82, 0xa0, 0x54, 0x92, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xeb, 0x1a, 0x04, - 0x08, 0x24, 0x10, 0x82, 0x01, 0x54, 0x92, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x25, 0x10, 0x22, 0x01, 0x54, 0x92, 0x82, 0xaf, 0x00, 0x00, 0x02, 0xa5, 0xbc, - 0x1a, 0x04, 0x08, 0x04, 0x00, 0xa5, 0x24, 0x21, 0x18, 0x87, 0x00, 0x02, 0x00, - 0xa2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0xa0, 0xbc, 0x1a, 0x04, - 0x08, 0x04, 0x00, 0xa5, 0x24, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, - 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x00, 0xa2, 0x04, 0x3c, 0x10, - 0x80, 0x05, 0x3c, 0x60, 0x7e, 0xa5, 0x24, 0xa8, 0x1a, 0x04, 0x0c, 0x21, 0x30, - 0x00, 0x00, 0x00, 0xa2, 0x04, 0x3c, 0x40, 0x00, 0x84, 0x34, 0x10, 0x80, 0x05, - 0x3c, 0xb8, 0x7e, 0xa5, 0x24, 0xa8, 0x1a, 0x04, 0x0c, 0x21, 0x30, 0x00, 0x00, - 0x00, 0xa2, 0x04, 0x3c, 0x00, 0x01, 0x84, 0x34, 0x10, 0x80, 0x05, 0x3c, 0x0c, - 0x7f, 0xa5, 0x24, 0xa8, 0x1a, 0x04, 0x0c, 0x21, 0x30, 0x00, 0x00, 0x00, 0xa2, - 0x04, 0x3c, 0x40, 0x01, 0x84, 0x34, 0x10, 0x80, 0x05, 0x3c, 0x18, 0x7f, 0xa5, - 0x24, 0xa8, 0x1a, 0x04, 0x0c, 0x21, 0x30, 0x00, 0x00, 0x00, 0xa2, 0x04, 0x3c, - 0x80, 0x00, 0x84, 0x34, 0x10, 0x80, 0x05, 0x3c, 0xb8, 0x7e, 0xa5, 0x24, 0xa8, - 0x1a, 0x04, 0x0c, 0x21, 0x30, 0x00, 0x00, 0x00, 0xa2, 0x04, 0x3c, 0x80, 0x01, - 0x84, 0x34, 0x10, 0x80, 0x05, 0x3c, 0x0c, 0x7f, 0xa5, 0x24, 0xa8, 0x1a, 0x04, - 0x0c, 0x21, 0x30, 0x00, 0x00, 0x00, 0xa2, 0x04, 0x3c, 0xc0, 0x01, 0x84, 0x34, - 0x10, 0x80, 0x05, 0x3c, 0x18, 0x7f, 0xa5, 0x24, 0xa8, 0x1a, 0x04, 0x0c, 0x21, - 0x30, 0x00, 0x00, 0x10, 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, - 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xd8, 0xff, 0xbd, 0x27, 0x20, 0x00, 0xbf, - 0xaf, 0x1c, 0x00, 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb1, 0xaf, - 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x98, 0x80, 0x00, 0x21, 0x88, 0xa0, 0x00, 0x02, - 0x00, 0x60, 0x16, 0x04, 0x00, 0x12, 0x24, 0x02, 0x00, 0x12, 0x24, 0x4e, 0x00, - 0xc2, 0x2c, 0x03, 0x00, 0x40, 0x10, 0x4e, 0x00, 0x22, 0x2e, 0x05, 0x00, 0x40, - 0x14, 0x40, 0x80, 0x11, 0x00, 0x6c, 0x81, 0x84, 0x27, 0x24, 0x00, 0x04, 0x0c, - 0x6e, 0x02, 0x05, 0x24, 0x40, 0x80, 0x11, 0x00, 0x21, 0x80, 0x11, 0x02, 0x80, - 0x80, 0x10, 0x00, 0x11, 0x80, 0x02, 0x3c, 0x18, 0x80, 0x42, 0x24, 0x21, 0x80, - 0x02, 0x02, 0x80, 0x11, 0x13, 0x00, 0x00, 0xa2, 0x04, 0x3c, 0x40, 0x00, 0x84, - 0x34, 0x00, 0x00, 0x05, 0x8e, 0x04, 0x00, 0x06, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0xa8, 0x1a, 0x04, 0x0c, 0x21, 0x20, 0x44, 0x00, 0x08, 0x00, 0x02, 0x96, 0x00, - 0x00, 0x00, 0x00, 0x07, 0x00, 0x40, 0x10, 0x05, 0xa2, 0x03, 0x3c, 0x54, 0x92, - 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x25, 0x10, 0x42, 0x02, 0x54, 0x92, 0x82, - 0xaf, 0x58, 0x1b, 0x04, 0x08, 0x00, 0x00, 0x62, 0xa4, 0x05, 0xa2, 0x02, 0x3c, - 0x27, 0x18, 0x12, 0x00, 0x54, 0x92, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x24, - 0x18, 0x64, 0x00, 0x54, 0x92, 0x83, 0xaf, 0x00, 0x00, 0x43, 0xa4, 0x20, 0x00, - 0xbf, 0x8f, 0x1c, 0x00, 0xb3, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, - 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x28, 0x00, 0xbd, 0x27, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x88, 0x8c, 0x40, 0x00, 0x87, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x40, 0x10, 0x07, 0x00, 0x21, 0x10, 0x47, 0x00, 0x80, 0x10, - 0x02, 0x00, 0x21, 0x10, 0x47, 0x00, 0x80, 0x10, 0x02, 0x00, 0x1c, 0x00, 0x83, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x43, 0x00, 0x04, 0x00, 0x45, 0xac, - 0x08, 0x00, 0x46, 0xa4, 0x80, 0x00, 0x03, 0x24, 0x0a, 0x00, 0x43, 0xa0, 0x02, - 0x00, 0x42, 0x94, 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x02, 0xa5, 0x60, 0x00, - 0x02, 0x91, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x42, 0x30, 0x07, 0x00, 0x40, - 0x10, 0x00, 0xa0, 0x03, 0x3c, 0x78, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x7f, 0x1b, 0x04, 0x08, 0x00, - 0x00, 0x62, 0xac, 0x02, 0x00, 0x02, 0x24, 0x60, 0x00, 0x02, 0xa1, 0x01, 0x00, - 0xe7, 0x24, 0x08, 0x00, 0xe2, 0x28, 0x02, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x21, 0x38, 0x00, 0x00, 0x8c, 0x00, 0x82, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x42, 0x24, 0x8c, 0x00, 0x82, 0xac, 0x88, 0x00, 0x82, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x21, 0x10, 0xc2, 0x00, 0x88, 0x00, 0x82, 0xac, 0x40, 0x00, - 0x87, 0xac, 0xac, 0x89, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xe0, - 0x03, 0x78, 0x00, 0x82, 0xac, 0x04, 0x00, 0x86, 0x8c, 0x08, 0x00, 0x85, 0x8c, - 0x11, 0x00, 0x02, 0x24, 0x18, 0x00, 0xc2, 0xa0, 0x01, 0x00, 0x02, 0x24, 0x29, - 0x00, 0xa2, 0xa0, 0x38, 0x00, 0x83, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, - 0x03, 0x00, 0x21, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x18, 0x00, 0x83, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x43, 0x00, 0x02, 0x00, 0x42, 0x24, - 0x10, 0x00, 0xa2, 0xa4, 0x02, 0x00, 0x02, 0x24, 0x20, 0x00, 0xa2, 0xa0, 0x12, - 0x00, 0x02, 0x24, 0x08, 0x00, 0xe0, 0x03, 0x18, 0x00, 0xc2, 0xa0, 0xc0, 0xff, - 0xbd, 0x27, 0x3c, 0x00, 0xbf, 0xaf, 0x38, 0x00, 0xbe, 0xaf, 0x34, 0x00, 0xb7, - 0xaf, 0x30, 0x00, 0xb6, 0xaf, 0x2c, 0x00, 0xb5, 0xaf, 0x28, 0x00, 0xb4, 0xaf, - 0x24, 0x00, 0xb3, 0xaf, 0x20, 0x00, 0xb2, 0xaf, 0x1c, 0x00, 0xb1, 0xaf, 0x18, - 0x00, 0xb0, 0xaf, 0x21, 0x90, 0x80, 0x00, 0x08, 0x00, 0x47, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x10, 0x00, 0xa7, 0xaf, 0x34, 0x00, 0x44, 0x8e, 0x30, 0x00, 0x42, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x82, 0x10, 0x40, 0x18, 0x04, 0x00, - 0x24, 0x00, 0x42, 0x8e, 0x21, 0x18, 0x64, 0x00, 0xc0, 0x18, 0x03, 0x00, 0x21, - 0x18, 0x62, 0x00, 0x10, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, - 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x06, 0x24, 0x30, 0x00, 0x45, - 0x8e, 0x01, 0x00, 0x84, 0x24, 0x02, 0x00, 0x86, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x21, 0x20, 0x00, 0x00, 0x0a, 0x00, 0x85, 0x10, 0x40, 0x18, 0x04, 0x00, 0x24, - 0x00, 0x42, 0x8e, 0x21, 0x18, 0x64, 0x00, 0xc0, 0x18, 0x03, 0x00, 0x21, 0x18, - 0x62, 0x00, 0x10, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0xf4, 0xff, 0x40, - 0x10, 0x01, 0x00, 0x84, 0x24, 0xff, 0xff, 0x84, 0x24, 0x34, 0x00, 0x44, 0xae, - 0x41, 0x00, 0x02, 0x24, 0x10, 0x00, 0xa7, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x20, - 0x00, 0xe2, 0xa0, 0x10, 0x00, 0xe2, 0x94, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x5e, 0x30, 0x38, 0x00, 0x54, 0x8e, 0x3c, 0x00, 0x57, 0x8e, 0x18, 0x00, 0x50, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x32, 0x23, 0x88, 0xc2, 0x03, - 0xaa, 0xaa, 0x02, 0x3c, 0xab, 0xaa, 0x42, 0x34, 0x19, 0x00, 0x22, 0x02, 0x10, - 0x38, 0x00, 0x00, 0xc2, 0x88, 0x07, 0x00, 0x61, 0x00, 0x22, 0x2e, 0x05, 0x00, - 0x40, 0x14, 0x40, 0x10, 0x11, 0x00, 0x80, 0x81, 0x84, 0x27, 0x24, 0x00, 0x04, - 0x0c, 0x09, 0x01, 0x05, 0x24, 0x40, 0x10, 0x11, 0x00, 0x21, 0x10, 0x51, 0x00, - 0x80, 0x10, 0x02, 0x00, 0x21, 0x10, 0x02, 0x02, 0x02, 0x00, 0x42, 0x24, 0xff, - 0xff, 0x42, 0x30, 0x05, 0x00, 0xc2, 0x13, 0x23, 0x28, 0x34, 0x02, 0x80, 0x81, - 0x84, 0x27, 0x24, 0x00, 0x04, 0x0c, 0x0a, 0x01, 0x05, 0x24, 0x23, 0x28, 0x34, - 0x02, 0x61, 0x00, 0xa5, 0x24, 0xd0, 0x51, 0x04, 0x3c, 0xaf, 0x7e, 0x84, 0x34, - 0x19, 0x00, 0xa4, 0x00, 0x10, 0x18, 0x00, 0x00, 0x23, 0x10, 0xa3, 0x00, 0x42, - 0x10, 0x02, 0x00, 0x21, 0x18, 0x62, 0x00, 0x82, 0x19, 0x03, 0x00, 0x40, 0x10, - 0x03, 0x00, 0x21, 0x10, 0x43, 0x00, 0x40, 0x11, 0x02, 0x00, 0x21, 0x10, 0x43, - 0x00, 0x23, 0x28, 0xa2, 0x00, 0x23, 0x18, 0xf4, 0x02, 0x61, 0x00, 0x63, 0x24, - 0x19, 0x00, 0x64, 0x00, 0x10, 0x20, 0x00, 0x00, 0x23, 0x10, 0x64, 0x00, 0x42, - 0x10, 0x02, 0x00, 0x21, 0x20, 0x82, 0x00, 0x82, 0x21, 0x04, 0x00, 0x40, 0x10, - 0x04, 0x00, 0x21, 0x10, 0x44, 0x00, 0x40, 0x11, 0x02, 0x00, 0x21, 0x10, 0x44, - 0x00, 0x23, 0x18, 0x62, 0x00, 0x2b, 0x18, 0x65, 0x00, 0x05, 0x00, 0x60, 0x10, - 0x21, 0xb0, 0x00, 0x00, 0x80, 0x81, 0x84, 0x27, 0x24, 0x00, 0x04, 0x0c, 0x0b, - 0x01, 0x05, 0x24, 0x21, 0xb0, 0x00, 0x00, 0x40, 0x10, 0x14, 0x00, 0x21, 0x10, - 0x54, 0x00, 0x80, 0x10, 0x02, 0x00, 0x18, 0x00, 0x43, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x21, 0x80, 0x43, 0x00, 0x04, 0x00, 0x15, 0x8e, 0x21, 0x98, 0x00, 0x00, - 0x02, 0x00, 0x02, 0x26, 0xff, 0xff, 0x42, 0x30, 0xad, 0x00, 0x5e, 0x10, 0x06, - 0x00, 0xc2, 0x2a, 0x05, 0x00, 0x97, 0x12, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, - 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x80, 0x81, 0x84, 0x27, 0x24, 0x00, 0x04, 0x0c, 0x1d, 0x01, 0x05, 0x24, - 0x01, 0x00, 0x94, 0x26, 0x61, 0x00, 0x82, 0x2a, 0x02, 0x00, 0x40, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x21, 0xa0, 0x00, 0x00, 0x08, 0x00, 0x02, 0x96, 0x0a, 0x00, - 0x10, 0x92, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x16, 0x21, 0x98, 0x62, - 0x02, 0x00, 0x01, 0x07, 0x24, 0x05, 0x00, 0x47, 0x10, 0x40, 0x10, 0x14, 0x00, - 0x80, 0x81, 0x84, 0x27, 0x24, 0x00, 0x04, 0x0c, 0x25, 0x01, 0x05, 0x24, 0x40, - 0x10, 0x14, 0x00, 0x21, 0x10, 0x54, 0x00, 0x80, 0x10, 0x02, 0x00, 0x18, 0x00, - 0x43, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x22, 0x1c, 0x04, 0x08, 0x21, 0x80, 0x43, - 0x00, 0x80, 0x00, 0x02, 0x32, 0x04, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x81, 0x84, 0x27, 0x24, 0x00, 0x04, 0x0c, 0x2a, 0x01, 0x05, 0x24, 0xc0, - 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x62, 0x02, 0xc0, 0x00, - 0x42, 0xae, 0xb8, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, - 0x24, 0xb8, 0x00, 0x42, 0xae, 0x7c, 0x00, 0x02, 0x32, 0x2d, 0x00, 0x40, 0x10, - 0x40, 0x00, 0x02, 0x32, 0x06, 0x00, 0x40, 0x10, 0x00, 0xa0, 0x03, 0x3c, 0x8c, - 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, 0x20, 0x00, 0x02, 0x32, 0x06, 0x00, 0x40, - 0x10, 0x00, 0xa0, 0x03, 0x3c, 0x90, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, 0x10, - 0x00, 0x02, 0x32, 0x06, 0x00, 0x40, 0x10, 0x00, 0xa0, 0x03, 0x3c, 0x9c, 0x0d, - 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, - 0x24, 0x00, 0x00, 0x62, 0xac, 0x08, 0x00, 0x02, 0x32, 0x06, 0x00, 0x40, 0x10, - 0x00, 0xa0, 0x03, 0x3c, 0x94, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, 0x04, 0x00, - 0x02, 0x32, 0x06, 0x00, 0x40, 0x10, 0x00, 0xa0, 0x03, 0x3c, 0x98, 0x0d, 0x63, - 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, - 0x00, 0x00, 0x62, 0xac, 0xc8, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x42, 0x24, 0xcf, 0x1c, 0x04, 0x08, 0xc8, 0x00, 0x42, 0xae, 0x00, 0x00, - 0xa3, 0x8e, 0x22, 0x33, 0x02, 0x3c, 0x00, 0x11, 0x42, 0x34, 0x10, 0x00, 0x62, - 0x14, 0x21, 0x30, 0xb3, 0x02, 0x00, 0x9f, 0xc6, 0x24, 0x20, 0x00, 0x45, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x30, 0xc5, 0x00, 0x03, 0x00, 0xc0, 0x18, 0x21, - 0x20, 0xa0, 0x00, 0x58, 0x01, 0x04, 0x0c, 0x00, 0x61, 0xa5, 0x24, 0x21, 0x20, - 0xa0, 0x02, 0x85, 0x11, 0x04, 0x0c, 0x21, 0x28, 0x60, 0x02, 0x3b, 0x00, 0x40, - 0x10, 0x00, 0xa0, 0x03, 0x3c, 0xb6, 0x1c, 0x04, 0x08, 0xfc, 0x0d, 0x63, 0x34, - 0xec, 0xaa, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x40, 0x10, 0x00, - 0x00, 0x00, 0x00, 0xf8, 0x0e, 0x04, 0x0c, 0x64, 0x00, 0x04, 0x24, 0xec, 0xaa, - 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x18, 0x62, 0x00, 0x03, 0x00, 0x60, - 0x14, 0x00, 0xa0, 0x03, 0x3c, 0xb6, 0x1c, 0x04, 0x08, 0xd8, 0x0d, 0x63, 0x34, - 0x30, 0x00, 0x50, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x10, 0x00, 0x21, - 0x10, 0x50, 0x00, 0xc0, 0x10, 0x02, 0x00, 0x24, 0x00, 0x43, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x21, 0x88, 0x43, 0x00, 0x01, 0x00, 0x10, 0x26, 0x40, 0x00, 0x02, - 0x24, 0x02, 0x00, 0x02, 0x16, 0x00, 0x00, 0x00, 0x00, 0x21, 0x80, 0x00, 0x00, - 0x34, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x02, 0x16, 0x00, - 0xa0, 0x03, 0x3c, 0xb0, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0xcf, 0x1c, 0x04, 0x08, 0x00, 0x00, 0x62, - 0xac, 0x10, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x80, 0x81, 0x84, 0x27, 0x24, 0x00, 0x04, 0x0c, 0x7f, - 0x01, 0x05, 0x24, 0x38, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, - 0x22, 0xae, 0x08, 0x00, 0x35, 0xae, 0x14, 0x00, 0x33, 0xae, 0x21, 0x20, 0x40, - 0x02, 0x4f, 0x14, 0x04, 0x0c, 0x21, 0x28, 0x20, 0x02, 0x10, 0x00, 0x22, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x30, - 0x00, 0x50, 0xae, 0x38, 0x00, 0x54, 0xae, 0x1a, 0x1c, 0x04, 0x08, 0x01, 0x00, - 0xd6, 0x26, 0x03, 0x00, 0x40, 0x14, 0x80, 0x10, 0x16, 0x00, 0x05, 0x00, 0x16, - 0x24, 0x80, 0x10, 0x16, 0x00, 0x00, 0xa0, 0x03, 0x3c, 0x48, 0x0d, 0x63, 0x34, - 0x21, 0x10, 0x43, 0x00, 0x00, 0x00, 0x43, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x63, 0x24, 0x23, 0xb0, 0x97, 0x02, 0x02, 0x00, 0xc1, 0x06, 0x00, 0x00, - 0x43, 0xac, 0x61, 0x00, 0xd6, 0x26, 0x61, 0x00, 0xc2, 0x2a, 0x04, 0x00, 0x40, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x80, 0x81, 0x84, 0x27, 0x24, 0x00, 0x04, 0x0c, - 0xa0, 0x01, 0x05, 0x24, 0x80, 0xad, 0x82, 0x27, 0x80, 0x18, 0x16, 0x00, 0x21, - 0x18, 0x62, 0x00, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, 0x30, 0x00, 0x42, 0x8e, 0x34, 0x00, 0x44, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x44, 0x10, 0x40, 0x10, 0x04, 0x00, - 0x24, 0x00, 0x43, 0x8e, 0x21, 0x10, 0x44, 0x00, 0xc0, 0x10, 0x02, 0x00, 0x21, - 0x10, 0x43, 0x00, 0x0c, 0x00, 0x57, 0x8c, 0xfe, 0x1c, 0x04, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x38, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, - 0x10, 0x60, 0x00, 0x17, 0x24, 0xff, 0xff, 0x57, 0x24, 0x3c, 0x00, 0x42, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0xe2, 0x12, 0x40, 0x10, 0x17, 0x00, 0x21, - 0x10, 0x57, 0x00, 0x80, 0x10, 0x02, 0x00, 0x18, 0x00, 0x43, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x21, 0x10, 0x43, 0x00, 0x02, 0x00, 0x42, 0x24, 0x10, 0x00, 0xa7, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0xe2, 0xa4, 0x3c, 0x00, 0x57, 0xae, - 0x10, 0x00, 0xa7, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xe2, 0x90, 0x00, - 0x00, 0x00, 0x00, 0x22, 0x00, 0x42, 0x30, 0x02, 0x00, 0x03, 0x24, 0x0a, 0x00, - 0x43, 0x10, 0x00, 0xa0, 0x02, 0x3c, 0x80, 0x0d, 0x42, 0x34, 0x00, 0x00, 0x43, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x63, 0x24, 0x00, 0x00, 0x43, 0xac, - 0x21, 0x00, 0x02, 0x24, 0x20, 0x00, 0xe2, 0xa0, 0x91, 0x1b, 0x04, 0x0c, 0x21, - 0x20, 0x40, 0x02, 0x3c, 0x00, 0xbf, 0x8f, 0x38, 0x00, 0xbe, 0x8f, 0x34, 0x00, - 0xb7, 0x8f, 0x30, 0x00, 0xb6, 0x8f, 0x2c, 0x00, 0xb5, 0x8f, 0x28, 0x00, 0xb4, - 0x8f, 0x24, 0x00, 0xb3, 0x8f, 0x20, 0x00, 0xb2, 0x8f, 0x1c, 0x00, 0xb1, 0x8f, - 0x18, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x40, 0x00, 0xbd, 0x27, 0xd0, - 0xff, 0xbd, 0x27, 0x28, 0x00, 0xbf, 0xaf, 0x24, 0x00, 0xb5, 0xaf, 0x20, 0x00, - 0xb4, 0xaf, 0x1c, 0x00, 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb1, - 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x88, 0x80, 0x00, 0x00, 0xa0, 0x02, 0x3c, - 0x44, 0x0d, 0x42, 0x34, 0x00, 0x00, 0x43, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x63, 0x24, 0x00, 0x00, 0x43, 0xac, 0x04, 0x00, 0x24, 0x8e, 0x08, 0x00, - 0x25, 0x8e, 0x04, 0x00, 0x82, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x42, - 0x30, 0x08, 0x00, 0x40, 0x10, 0x00, 0xa0, 0x02, 0x3c, 0xa4, 0x0d, 0x42, 0x34, - 0x00, 0x00, 0x43, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x63, 0x24, 0x00, - 0x00, 0x43, 0xac, 0x00, 0x80, 0x02, 0x34, 0x04, 0x00, 0x82, 0xa4, 0x41, 0x00, - 0x02, 0x24, 0x60, 0x00, 0xa2, 0xa0, 0x50, 0x00, 0xa2, 0x94, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x55, 0x30, 0x44, 0x00, 0x33, 0x8e, 0x40, 0x00, 0x34, 0x8e, - 0x1c, 0x00, 0x30, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x32, 0x23, - 0x90, 0xa2, 0x02, 0xc4, 0x4e, 0x02, 0x3c, 0x4f, 0xec, 0x42, 0x34, 0x19, 0x00, - 0x42, 0x02, 0x10, 0x30, 0x00, 0x00, 0x02, 0x91, 0x06, 0x00, 0x08, 0x00, 0x42, - 0x2e, 0x05, 0x00, 0x40, 0x14, 0x40, 0x10, 0x12, 0x00, 0x80, 0x81, 0x84, 0x27, - 0x24, 0x00, 0x04, 0x0c, 0x01, 0x02, 0x05, 0x24, 0x40, 0x10, 0x12, 0x00, 0x21, - 0x10, 0x52, 0x00, 0x80, 0x10, 0x02, 0x00, 0x21, 0x10, 0x52, 0x00, 0x80, 0x10, - 0x02, 0x00, 0x21, 0x10, 0x02, 0x02, 0x02, 0x00, 0x42, 0x24, 0xff, 0xff, 0x42, - 0x30, 0x05, 0x00, 0xa2, 0x12, 0x23, 0x18, 0x53, 0x02, 0x80, 0x81, 0x84, 0x27, - 0x24, 0x00, 0x04, 0x0c, 0x03, 0x02, 0x05, 0x24, 0x23, 0x18, 0x53, 0x02, 0x08, - 0x00, 0x63, 0x24, 0x07, 0x00, 0x63, 0x30, 0x23, 0x10, 0x93, 0x02, 0x08, 0x00, - 0x42, 0x24, 0x07, 0x00, 0x42, 0x30, 0x2b, 0x10, 0x43, 0x00, 0x4e, 0x00, 0x40, - 0x10, 0x21, 0xa0, 0x00, 0x00, 0x80, 0x81, 0x84, 0x27, 0x24, 0x00, 0x04, 0x0c, - 0x09, 0x02, 0x05, 0x24, 0xbf, 0x1d, 0x04, 0x08, 0x21, 0xa0, 0x00, 0x00, 0x40, - 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x62, 0x16, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x81, 0x84, 0x27, 0x24, 0x00, 0x04, 0x0c, 0x1c, 0x02, 0x05, - 0x24, 0x08, 0x00, 0x12, 0x96, 0x0c, 0x00, 0x03, 0x8e, 0x02, 0x00, 0x02, 0x24, - 0x22, 0x00, 0x62, 0x10, 0x03, 0x00, 0x02, 0x24, 0x25, 0x00, 0x62, 0x14, 0x01, - 0x00, 0x02, 0x24, 0x10, 0x00, 0x10, 0x8e, 0x84, 0x00, 0x22, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0xfc, 0xff, 0x42, 0x24, 0x08, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x23, 0x10, 0x43, 0x00, 0x84, 0x00, 0x22, 0xae, 0x04, 0x00, 0x02, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x24, 0x0a, 0x00, 0x42, 0x2c, 0x04, - 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x80, 0x81, 0x84, 0x27, 0x24, 0x00, - 0x04, 0x0c, 0x39, 0x02, 0x05, 0x24, 0x04, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x42, 0x24, 0x14, 0x00, 0x40, 0x14, 0x04, 0x00, 0x02, 0xae, - 0xe4, 0xaa, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xae, 0xe4, - 0xaa, 0x90, 0xaf, 0x64, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x42, 0x24, 0xae, 0x1d, 0x04, 0x08, 0x64, 0x00, 0x22, 0xae, 0x2c, 0x00, 0x22, - 0x8e, 0xf7, 0xff, 0x03, 0x24, 0x24, 0x10, 0x43, 0x00, 0xae, 0x1d, 0x04, 0x08, - 0x2c, 0x00, 0x22, 0xae, 0x04, 0x00, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0x80, - 0x81, 0x84, 0x27, 0x24, 0x00, 0x04, 0x0c, 0x5a, 0x02, 0x05, 0x24, 0x88, 0x00, - 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0x52, 0x00, 0x88, 0x00, 0x22, - 0xae, 0xb0, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x42, 0x02, - 0xb0, 0x00, 0x22, 0xae, 0xa8, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x42, 0x24, 0xa8, 0x00, 0x22, 0xae, 0x01, 0x00, 0x73, 0x26, 0x08, 0x00, - 0x62, 0x2e, 0x02, 0x00, 0x40, 0x14, 0x01, 0x00, 0x94, 0x26, 0x21, 0x98, 0x00, - 0x00, 0x40, 0x10, 0x13, 0x00, 0x21, 0x10, 0x53, 0x00, 0x80, 0x10, 0x02, 0x00, - 0x21, 0x10, 0x53, 0x00, 0x80, 0x10, 0x02, 0x00, 0x1c, 0x00, 0x23, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x21, 0x80, 0x43, 0x00, 0x02, 0x00, 0x02, 0x26, 0xff, 0xff, - 0x42, 0x30, 0x23, 0x10, 0xa2, 0x02, 0x34, 0x00, 0x42, 0x2c, 0xab, 0xff, 0x40, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x33, 0xae, 0xac, 0x89, 0x82, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x22, 0xae, 0x8c, 0x00, 0x22, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x23, 0x10, 0x54, 0x00, 0x8c, 0x00, 0x22, 0xae, 0x28, 0x00, - 0xbf, 0x8f, 0x24, 0x00, 0xb5, 0x8f, 0x20, 0x00, 0xb4, 0x8f, 0x1c, 0x00, 0xb3, - 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, - 0x08, 0x00, 0xe0, 0x03, 0x30, 0x00, 0xbd, 0x27, 0xe0, 0xff, 0xbd, 0x27, 0x1c, - 0x00, 0xbf, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, - 0xb0, 0xaf, 0x00, 0xa0, 0x03, 0x3c, 0x40, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x62, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, - 0x00, 0xa2, 0x02, 0x3c, 0x20, 0x00, 0x42, 0x94, 0x00, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x50, 0x30, 0x31, 0x00, 0x00, 0x12, 0x00, 0xa2, 0x11, 0x3c, 0x11, 0x80, - 0x12, 0x3c, 0xbc, 0x8d, 0x52, 0x26, 0x0c, 0x08, 0x02, 0x32, 0x05, 0x00, 0x40, - 0x10, 0xc0, 0x80, 0x02, 0x32, 0xd0, 0x89, 0x84, 0x27, 0x29, 0x1d, 0x04, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0xc0, 0x80, 0x02, 0x32, 0x05, 0x00, 0x40, 0x10, 0x03, - 0x03, 0x02, 0x32, 0x11, 0x80, 0x04, 0x3c, 0x29, 0x1d, 0x04, 0x0c, 0xf8, 0x8e, - 0x84, 0x24, 0x03, 0x03, 0x02, 0x32, 0x05, 0x00, 0x40, 0x10, 0x30, 0x30, 0x02, - 0x32, 0xd0, 0x89, 0x84, 0x27, 0xa6, 0x1b, 0x04, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x30, 0x30, 0x02, 0x32, 0x04, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x11, - 0x80, 0x04, 0x3c, 0xa6, 0x1b, 0x04, 0x0c, 0xf8, 0x8e, 0x84, 0x24, 0x11, 0x80, - 0x02, 0x3c, 0xbc, 0x8d, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, - 0x30, 0x03, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x85, 0x0d, 0x04, 0x0c, - 0xd4, 0xff, 0x44, 0x26, 0x11, 0x80, 0x02, 0x3c, 0x24, 0x8f, 0x42, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x30, 0x04, 0x00, 0x40, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x11, 0x80, 0x04, 0x3c, 0x85, 0x0d, 0x04, 0x0c, 0xf8, 0x8e, 0x84, - 0x24, 0x20, 0x00, 0x22, 0x96, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x50, 0x30, - 0xd4, 0xff, 0x00, 0x16, 0x0c, 0x08, 0x02, 0x32, 0x1c, 0x00, 0xbf, 0x8f, 0x18, - 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, - 0xe0, 0x03, 0x20, 0x00, 0xbd, 0x27, 0xc8, 0xff, 0xbd, 0x27, 0x30, 0x00, 0xbf, - 0xaf, 0x2c, 0x00, 0xb5, 0xaf, 0x28, 0x00, 0xb4, 0xaf, 0x24, 0x00, 0xb3, 0xaf, - 0x20, 0x00, 0xb2, 0xaf, 0x1c, 0x00, 0xb1, 0xaf, 0x18, 0x00, 0xb0, 0xaf, 0x00, - 0xa0, 0x04, 0x3c, 0x40, 0x0d, 0x84, 0x34, 0x00, 0xa0, 0x05, 0x3c, 0x0d, 0x0f, - 0x04, 0x0c, 0x00, 0x0e, 0xa5, 0x34, 0x11, 0x80, 0x03, 0x3c, 0x10, 0xd2, 0x63, - 0x24, 0x00, 0xa0, 0x02, 0x3c, 0x25, 0x18, 0x62, 0x00, 0xe0, 0xaa, 0x83, 0xaf, - 0xa0, 0x01, 0x62, 0x24, 0x26, 0x10, 0x43, 0x00, 0xff, 0xff, 0x04, 0x3c, 0x24, - 0x10, 0x44, 0x00, 0x04, 0x00, 0x40, 0x10, 0x01, 0x00, 0x02, 0x3c, 0x21, 0x10, - 0x62, 0x00, 0x24, 0x10, 0x44, 0x00, 0xe0, 0xaa, 0x82, 0xaf, 0xe0, 0xaa, 0x82, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x9e, 0x82, 0xaf, 0x40, 0x03, 0x43, 0x24, - 0xe0, 0xaa, 0x83, 0xaf, 0x58, 0x0c, 0x42, 0x24, 0x26, 0x10, 0x43, 0x00, 0xff, - 0xff, 0x04, 0x3c, 0x24, 0x10, 0x44, 0x00, 0x04, 0x00, 0x40, 0x10, 0x01, 0x00, - 0x02, 0x3c, 0x21, 0x10, 0x62, 0x00, 0x24, 0x10, 0x44, 0x00, 0xe0, 0xaa, 0x82, - 0xaf, 0xe0, 0xaa, 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x9e, 0x83, 0xaf, - 0x17, 0x0a, 0x63, 0x24, 0x00, 0xff, 0x02, 0x24, 0x24, 0x18, 0x62, 0x00, 0xe0, - 0xaa, 0x83, 0xaf, 0xac, 0x9e, 0x83, 0xaf, 0x00, 0xe8, 0x02, 0x34, 0x21, 0x18, - 0x62, 0x00, 0xe0, 0xaa, 0x83, 0xaf, 0x1b, 0xa0, 0x02, 0x3c, 0x2b, 0x10, 0x43, - 0x00, 0x04, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x80, 0x81, 0x84, 0x27, - 0x24, 0x00, 0x04, 0x0c, 0xd6, 0x02, 0x05, 0x24, 0x11, 0x80, 0x02, 0x3c, 0x10, - 0xd2, 0x42, 0x24, 0x00, 0xa0, 0x04, 0x3c, 0xe0, 0xaa, 0x85, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x0d, 0x0f, 0x04, 0x0c, 0x25, 0x20, 0x44, 0x00, 0xf7, 0x1a, 0x04, - 0x0c, 0x21, 0x98, 0x00, 0x00, 0xd0, 0x89, 0x92, 0x27, 0xa4, 0x8c, 0x82, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x76, 0x00, 0x40, 0x18, 0x00, 0xa2, 0x15, 0x3c, 0x02, - 0x00, 0x14, 0x24, 0x40, 0x28, 0x13, 0x00, 0x21, 0x28, 0xb3, 0x00, 0x40, 0x12, - 0x05, 0x00, 0xe0, 0x9e, 0x83, 0x27, 0x21, 0x10, 0x43, 0x00, 0x24, 0x00, 0x42, - 0xae, 0xc0, 0x20, 0x13, 0x00, 0x23, 0x10, 0x93, 0x00, 0x80, 0x10, 0x02, 0x00, - 0x21, 0x10, 0x53, 0x00, 0x80, 0x12, 0x02, 0x00, 0xac, 0x9e, 0x83, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x21, 0x10, 0x43, 0x00, 0x20, 0x00, 0x42, 0xae, 0x80, 0x28, - 0x05, 0x00, 0x21, 0x28, 0xb3, 0x00, 0x40, 0x29, 0x05, 0x00, 0xdc, 0x9e, 0x82, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x28, 0xa2, 0x00, 0x1c, 0x00, 0x45, 0xae, - 0x21, 0x20, 0x93, 0x00, 0xc0, 0x20, 0x04, 0x00, 0x21, 0x20, 0x93, 0x00, 0x80, - 0x20, 0x04, 0x00, 0x23, 0x20, 0x93, 0x00, 0x80, 0x20, 0x04, 0x00, 0xb4, 0x9e, - 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, 0x82, 0x00, 0x18, 0x00, 0x44, - 0xae, 0x1c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x01, 0x43, 0x24, - 0x02, 0x00, 0x42, 0x24, 0x02, 0x00, 0x62, 0xa4, 0x07, 0x00, 0x04, 0x24, 0x21, - 0x10, 0x60, 0x00, 0xcc, 0xff, 0x63, 0x24, 0x02, 0x00, 0x42, 0x24, 0xff, 0xff, - 0x84, 0x24, 0xfb, 0xff, 0x80, 0x14, 0x02, 0x00, 0x62, 0xa4, 0x18, 0x00, 0x45, - 0x8e, 0x20, 0x00, 0x42, 0x8e, 0x80, 0x04, 0xa3, 0x24, 0x00, 0x60, 0x46, 0x24, - 0x04, 0x00, 0x66, 0xac, 0x02, 0x00, 0xa2, 0x24, 0x02, 0x00, 0x62, 0xa4, 0x60, - 0x00, 0x04, 0x24, 0x21, 0x28, 0x60, 0x00, 0xf4, 0xff, 0x63, 0x24, 0x00, 0xff, - 0xc6, 0x24, 0x04, 0x00, 0x66, 0xac, 0x02, 0x00, 0xa2, 0x24, 0xff, 0xff, 0x84, - 0x24, 0xf9, 0xff, 0x80, 0x14, 0x02, 0x00, 0x62, 0xa4, 0x3c, 0x00, 0x40, 0xae, - 0x01, 0x00, 0x02, 0x24, 0x38, 0x00, 0x42, 0xae, 0x00, 0x00, 0x55, 0xae, 0x80, - 0x89, 0x13, 0x00, 0x40, 0x00, 0x31, 0x26, 0x21, 0x88, 0x35, 0x02, 0x04, 0x00, - 0x51, 0xae, 0xc0, 0x81, 0x13, 0x00, 0x00, 0x01, 0x10, 0x26, 0x21, 0x80, 0x15, - 0x02, 0x08, 0x00, 0x50, 0xae, 0x48, 0x00, 0x45, 0x8e, 0x4c, 0x00, 0x46, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x26, 0x1b, 0x04, 0x0c, 0x21, 0x20, 0x60, 0x02, 0x18, - 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x42, 0x24, 0x02, 0x14, - 0x02, 0x00, 0x0c, 0x00, 0x02, 0xa2, 0x18, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x42, 0x24, 0x14, 0x00, 0x02, 0xa6, 0x18, 0x00, 0x42, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x42, 0x24, 0x10, 0x00, 0x02, 0xa6, 0x00, - 0x01, 0x02, 0x24, 0x18, 0x00, 0x02, 0xa6, 0x1c, 0x00, 0x42, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x42, 0x24, 0x02, 0x14, 0x02, 0x00, 0x4c, 0x00, 0x02, - 0xa2, 0x1c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x42, 0x24, - 0x50, 0x00, 0x02, 0xa6, 0x1c, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x42, 0x24, 0x54, 0x00, 0x02, 0xa6, 0x20, 0x00, 0x14, 0xa2, 0x60, 0x00, - 0x14, 0xa2, 0x12, 0x00, 0x02, 0x24, 0x18, 0x00, 0x22, 0xa2, 0x18, 0x00, 0x34, - 0xa2, 0x01, 0x00, 0x73, 0x26, 0xa4, 0x8c, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x2a, 0x10, 0x62, 0x02, 0x8d, 0xff, 0x40, 0x14, 0x68, 0x01, 0x52, 0x26, 0x30, - 0x00, 0xbf, 0x8f, 0x2c, 0x00, 0xb5, 0x8f, 0x28, 0x00, 0xb4, 0x8f, 0x24, 0x00, - 0xb3, 0x8f, 0x20, 0x00, 0xb2, 0x8f, 0x1c, 0x00, 0xb1, 0x8f, 0x18, 0x00, 0xb0, - 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x38, 0x00, 0xbd, 0x27, 0x2e, 0x2e, 0x2f, 0x65, - 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x73, 0x00, 0x00, 0xe0, - 0x0a, 0x10, 0x80, 0xf8, 0x0a, 0x10, 0x80, 0x10, 0x0b, 0x10, 0x80, 0x90, 0x0b, - 0x10, 0x80, 0xa4, 0x0b, 0x10, 0x80, 0x74, 0x0d, 0x10, 0x80, 0xb8, 0x0b, 0x10, - 0x80, 0x74, 0x0d, 0x10, 0x80, 0xd8, 0x0b, 0x10, 0x80, 0x28, 0x0c, 0x10, 0x80, - 0x58, 0x0c, 0x10, 0x80, 0x70, 0x0c, 0x10, 0x80, 0x90, 0x0c, 0x10, 0x80, 0x74, - 0x0d, 0x10, 0x80, 0x98, 0x0c, 0x10, 0x80, 0xac, 0x0c, 0x10, 0x80, 0xc0, 0x0c, - 0x10, 0x80, 0x74, 0x0d, 0x10, 0x80, 0x74, 0x0d, 0x10, 0x80, 0xd8, 0x0c, 0x10, - 0x80, 0xf0, 0x0c, 0x10, 0x80, 0x20, 0x0d, 0x10, 0x80, 0x38, 0x0d, 0x10, 0x80, - 0x74, 0x0d, 0x10, 0x80, 0x74, 0x0d, 0x10, 0x80, 0x74, 0x0d, 0x10, 0x80, 0x74, - 0x0d, 0x10, 0x80, 0x74, 0x0d, 0x10, 0x80, 0x74, 0x0d, 0x10, 0x80, 0x74, 0x0d, - 0x10, 0x80, 0x50, 0x0d, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x10, 0x10, - 0x80, 0x2c, 0x10, 0x10, 0x80, 0x3c, 0x10, 0x10, 0x80, 0x4c, 0x10, 0x10, 0x80, - 0xa0, 0x10, 0x10, 0x80, 0xb0, 0x10, 0x10, 0x80, 0xc0, 0x10, 0x10, 0x80, 0xd0, - 0x10, 0x10, 0x80, 0xe0, 0x10, 0x10, 0x80, 0xf0, 0x10, 0x10, 0x80, 0x00, 0x11, - 0x10, 0x80, 0x10, 0x11, 0x10, 0x80, 0x2c, 0x11, 0x10, 0x80, 0x48, 0x11, 0x10, - 0x80, 0x5c, 0x11, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x1b, 0x10, 0x80, - 0x6c, 0x1b, 0x10, 0x80, 0x6c, 0x1b, 0x10, 0x80, 0x6c, 0x1b, 0x10, 0x80, 0x6c, - 0x1b, 0x10, 0x80, 0x6c, 0x1b, 0x10, 0x80, 0x6c, 0x1b, 0x10, 0x80, 0x6c, 0x1b, - 0x10, 0x80, 0x90, 0x1b, 0x10, 0x80, 0xac, 0x1b, 0x10, 0x80, 0xd4, 0x1c, 0x10, - 0x80, 0x74, 0x1d, 0x10, 0x80, 0xc0, 0x1d, 0x10, 0x80, 0xcc, 0x1f, 0x10, 0x80, - 0xcc, 0x1f, 0x10, 0x80, 0x44, 0x1e, 0x10, 0x80, 0x74, 0x1e, 0x10, 0x80, 0x74, - 0x1e, 0x10, 0x80, 0x74, 0x1e, 0x10, 0x80, 0x74, 0x1e, 0x10, 0x80, 0xc0, 0x1e, - 0x10, 0x80, 0xcc, 0x1f, 0x10, 0x80, 0xcc, 0x1f, 0x10, 0x80, 0xcc, 0x1f, 0x10, - 0x80, 0xcc, 0x1f, 0x10, 0x80, 0xcc, 0x1f, 0x10, 0x80, 0xcc, 0x1f, 0x10, 0x80, - 0xcc, 0x1f, 0x10, 0x80, 0xcc, 0x1f, 0x10, 0x80, 0xcc, 0x1f, 0x10, 0x80, 0xbc, - 0x1f, 0x10, 0x80, 0xc4, 0x1f, 0x10, 0x80, 0x7c, 0x26, 0x10, 0x80, 0x0c, 0x27, - 0x10, 0x80, 0x7c, 0x26, 0x10, 0x80, 0xcc, 0x26, 0x10, 0x80, 0x0c, 0x27, 0x10, - 0x80, 0xcc, 0x26, 0x10, 0x80, 0x0c, 0x27, 0x10, 0x80, 0x0c, 0x27, 0x10, 0x80, - 0x0c, 0x27, 0x10, 0x80, 0x0c, 0x27, 0x10, 0x80, 0x0c, 0x27, 0x10, 0x80, 0x0c, - 0x27, 0x10, 0x80, 0x0c, 0x27, 0x10, 0x80, 0x0c, 0x27, 0x10, 0x80, 0x0c, 0x27, - 0x10, 0x80, 0xcc, 0x26, 0x10, 0x80, 0x0c, 0x27, 0x10, 0x80, 0x0c, 0x27, 0x10, - 0x80, 0x0c, 0x27, 0x10, 0x80, 0x0c, 0x27, 0x10, 0x80, 0x7c, 0x26, 0x10, 0x80, - 0x7c, 0x26, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, - 0x2d, 0x10, 0x80, 0x80, 0x30, 0x10, 0x80, 0x80, 0x30, 0x10, 0x80, 0x80, 0x30, - 0x10, 0x80, 0x20, 0x2d, 0x10, 0x80, 0x14, 0x2d, 0x10, 0x80, 0x80, 0x30, 0x10, - 0x80, 0x80, 0x30, 0x10, 0x80, 0x80, 0x30, 0x10, 0x80, 0x80, 0x30, 0x10, 0x80, - 0x80, 0x30, 0x10, 0x80, 0x80, 0x30, 0x10, 0x80, 0x0c, 0x2d, 0x10, 0x80, 0x80, - 0x30, 0x10, 0x80, 0x80, 0x30, 0x10, 0x80, 0x80, 0x30, 0x10, 0x80, 0x80, 0x30, - 0x10, 0x80, 0x80, 0x30, 0x10, 0x80, 0x80, 0x30, 0x10, 0x80, 0x80, 0x30, 0x10, - 0x80, 0xf4, 0x2c, 0x10, 0x80, 0x80, 0x30, 0x10, 0x80, 0x80, 0x30, 0x10, 0x80, - 0x80, 0x30, 0x10, 0x80, 0x80, 0x30, 0x10, 0x80, 0x80, 0x30, 0x10, 0x80, 0x00, - 0x2d, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x74, 0x4b, 0x10, 0x80, 0x10, 0x4c, - 0x10, 0x80, 0x64, 0x4c, 0x10, 0x80, 0x50, 0x4c, 0x10, 0x80, 0x50, 0x4c, 0x10, - 0x80, 0x50, 0x4c, 0x10, 0x80, 0x50, 0x4c, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, - 0xd4, 0x6b, 0x10, 0x80, 0x50, 0x6b, 0x10, 0x80, 0xbc, 0x6b, 0x10, 0x80, 0xbc, - 0x6b, 0x10, 0x80, 0x1c, 0x6b, 0x10, 0x80, 0x40, 0x6b, 0x10, 0x80, 0x2c, 0x6b, - 0x10, 0x80, 0x90, 0x6b, 0x10, 0x80, 0xa0, 0x6b, 0x10, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x34, 0x00, - 0x00, 0x00, 0x41, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0xe2, 0x00, 0x00, - 0x00, 0x40, 0x00, 0x0c, 0x00, 0x74, 0x00, 0x04, 0x00, 0x6e, 0x00, 0x04, 0x00, - 0x00, 0x00, 0x0c, 0x00, 0xe4, 0x00, 0x04, 0x00, 0x40, 0x00, 0x0c, 0x00, 0xb4, - 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xe8, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0x60, - 0x01, 0x00, 0x00, 0xa0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x29, 0x01, - 0x03, 0x00, 0x69, 0x01, 0x03, 0x00, 0xa9, 0x01, 0x03, 0x00, 0xe9, 0x01, 0x03, - 0x00, 0x58, 0x00, 0x21, 0x00, 0x98, 0x00, 0x21, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0c, - 0x00, 0x00, 0x00, 0x10, 0x00, 0x0c, 0x00, 0x28, 0x00, 0xcc, 0x00, 0x29, 0x00, - 0xbb, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x10, 0x00, 0x11, 0x00, 0x80, - 0x00, 0x00, 0xf0, 0x00, 0x00, 0x18, 0x00, 0x01, 0x00, 0x18, 0x00, 0x11, 0x00, - 0x1c, 0x00, 0x87, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x07, - 0xf0, 0x00, 0x00, 0x21, 0x00, 0x10, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2d, 0x00, - 0x00, 0x00, 0x29, 0x00, 0x02, 0x00, 0x30, 0x00, 0x12, 0x00, 0x31, 0x00, 0x1f, - 0x00, 0x34, 0x00, 0x0e, 0x00, 0x10, 0x00, 0xc0, 0x00, 0x11, 0x00, 0x80, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, - 0x00, 0x00, 0x00, 0x28, 0x00, 0x7e, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x21, 0x00, - 0x14, 0x00, 0x28, 0x00, 0x60, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x21, 0x00, 0x14, - 0x00, 0x28, 0x00, 0x40, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x06, 0xf0, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x41, 0x00, 0x01, - 0xf0, 0x02, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x06, 0xf0, - 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x45, - 0x00, 0x01, 0xf0, 0x20, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x05, - 0xf0, 0x00, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x20, 0x00, - 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x04, 0xf0, 0x00, - 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x08, 0xf0, 0x00, 0x00, - 0x20, 0x00, 0x20, 0x00, 0x2c, 0x00, 0x40, 0x00, 0x2d, 0x00, 0x63, 0x00, 0x01, - 0xf0, 0x08, 0x00, 0x04, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x08, 0xf0, - 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x2c, 0x00, 0x60, 0x00, 0x2d, 0x00, 0x43, - 0x00, 0x01, 0xf0, 0x08, 0x00, 0x04, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, - 0x08, 0xf0, 0x00, 0x00, 0x20, 0x00, 0x28, 0x00, 0x2c, 0x00, 0x60, 0x00, 0x2d, - 0x00, 0x44, 0x00, 0x01, 0xf0, 0x10, 0x00, 0x04, 0xf0, 0x00, 0x00, 0x00, 0xf0, - 0x00, 0x00, 0x08, 0xf0, 0x00, 0x00, 0x20, 0x00, 0xc0, 0x00, 0x2c, 0x00, 0x60, - 0x00, 0x2d, 0x00, 0x43, 0x00, 0x01, 0xf0, 0x08, 0x00, 0x04, 0xf0, 0x00, 0x00, - 0x00, 0xf0, 0x00, 0x00, 0x08, 0xf0, 0x00, 0x00, 0x20, 0x00, 0xc8, 0x00, 0x2c, - 0x00, 0x60, 0x00, 0x2d, 0x00, 0x44, 0x00, 0x01, 0xf0, 0x10, 0x00, 0x04, 0xf0, - 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x40, 0x7f, 0x10, 0x80, 0xb8, 0x84, 0x10, - 0x80, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x7f, 0x10, 0x80, 0xc0, 0x84, 0x10, 0x80, - 0x00, 0x00, 0x00, 0x00, 0xfc, 0x7f, 0x10, 0x80, 0xc8, 0x84, 0x10, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x40, 0x7f, 0x10, 0x80, 0x70, 0x84, 0x10, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x7f, 0x10, 0x80, 0x78, 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x40, 0x7f, 0x10, 0x80, 0x80, 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x40, 0x7f, 0x10, 0x80, 0x90, 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x40, - 0x7f, 0x10, 0x80, 0x98, 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7f, - 0x10, 0x80, 0xa0, 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7f, 0x10, - 0x80, 0xb0, 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7f, 0x10, 0x80, - 0xb8, 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x24, 0x7f, 0x10, 0x80, 0xc0, - 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x24, 0x7f, 0x10, 0x80, 0xc8, 0x84, - 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x24, 0x7f, 0x10, 0x80, 0xd0, 0x84, 0x10, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x24, 0x7f, 0x10, 0x80, 0xd8, 0x84, 0x10, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x74, 0x7f, 0x10, 0x80, 0x70, 0x84, 0x10, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x74, 0x7f, 0x10, 0x80, 0x78, 0x84, 0x10, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x74, 0x7f, 0x10, 0x80, 0x80, 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x74, 0x7f, 0x10, 0x80, 0x90, 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x74, 0x7f, 0x10, 0x80, 0x98, 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x74, - 0x7f, 0x10, 0x80, 0xa0, 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x74, 0x7f, - 0x10, 0x80, 0xb0, 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x74, 0x7f, 0x10, - 0x80, 0xb8, 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x74, 0x7f, 0x10, 0x80, - 0xc0, 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x74, 0x7f, 0x10, 0x80, 0xc8, - 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x74, 0x7f, 0x10, 0x80, 0xd0, 0x84, - 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x74, 0x7f, 0x10, 0x80, 0xd8, 0x84, 0x10, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x24, 0x7f, 0x10, 0x80, 0xe0, 0x84, 0x10, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x24, 0x7f, 0x10, 0x80, 0xe8, 0x84, 0x10, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x24, 0x7f, 0x10, 0x80, 0xf0, 0x84, 0x10, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x74, 0x7f, 0x10, 0x80, 0xe0, 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x74, 0x7f, 0x10, 0x80, 0xe8, 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x74, 0x7f, 0x10, 0x80, 0xf0, 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x74, - 0x7f, 0x10, 0x80, 0x88, 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x74, 0x7f, - 0x10, 0x80, 0xb8, 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x74, 0x7f, 0x10, - 0x80, 0x70, 0x84, 0x10, 0x80, 0x01, 0x00, 0x00, 0x00, 0x74, 0x7f, 0x10, 0x80, - 0x78, 0x84, 0x10, 0x80, 0x01, 0x00, 0x00, 0x00, 0x74, 0x7f, 0x10, 0x80, 0x80, - 0x84, 0x10, 0x80, 0x01, 0x00, 0x00, 0x00, 0x74, 0x7f, 0x10, 0x80, 0x88, 0x84, - 0x10, 0x80, 0x01, 0x00, 0x00, 0x00, 0x74, 0x7f, 0x10, 0x80, 0x90, 0x84, 0x10, - 0x80, 0x01, 0x00, 0x00, 0x00, 0x74, 0x7f, 0x10, 0x80, 0x98, 0x84, 0x10, 0x80, - 0x01, 0x00, 0x00, 0x00, 0x74, 0x7f, 0x10, 0x80, 0xa0, 0x84, 0x10, 0x80, 0x01, - 0x00, 0x00, 0x00, 0x74, 0x7f, 0x10, 0x80, 0xa8, 0x84, 0x10, 0x80, 0x01, 0x00, - 0x00, 0x00, 0x74, 0x7f, 0x10, 0x80, 0xb0, 0x84, 0x10, 0x80, 0x01, 0x00, 0x00, - 0x00, 0x74, 0x7f, 0x10, 0x80, 0xb8, 0x84, 0x10, 0x80, 0x01, 0x00, 0x00, 0x00, - 0x74, 0x7f, 0x10, 0x80, 0xb8, 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x74, - 0x7f, 0x10, 0x80, 0xb8, 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x74, 0x7f, - 0x10, 0x80, 0xb8, 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x74, 0x7f, 0x10, - 0x80, 0xb8, 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x74, 0x7f, 0x10, 0x80, - 0xb8, 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x74, 0x7f, 0x10, 0x80, 0xb8, - 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x74, 0x7f, 0x10, 0x80, 0xb8, 0x84, - 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x74, 0x7f, 0x10, 0x80, 0xb8, 0x84, 0x10, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x74, 0x7f, 0x10, 0x80, 0xb8, 0x84, 0x10, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x74, 0x7f, 0x10, 0x80, 0xb8, 0x84, 0x10, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x74, 0x7f, 0x10, 0x80, 0xb8, 0x84, 0x10, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x74, 0x7f, 0x10, 0x80, 0xb8, 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x74, 0x7f, 0x10, 0x80, 0xb8, 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x74, 0x7f, 0x10, 0x80, 0xb8, 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x74, - 0x7f, 0x10, 0x80, 0xb8, 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x7f, - 0x10, 0x80, 0xb8, 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x7f, 0x10, - 0x80, 0xb8, 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x7f, 0x10, 0x80, - 0xc0, 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x7f, 0x10, 0x80, 0xc0, - 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x7f, 0x10, 0x80, 0xc8, 0x84, - 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x7f, 0x10, 0x80, 0xc8, 0x84, 0x10, - 0x80, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x7f, 0x10, 0x80, 0xd0, 0x84, 0x10, 0x80, - 0x00, 0x00, 0x00, 0x00, 0xfc, 0x7f, 0x10, 0x80, 0xd0, 0x84, 0x10, 0x80, 0x00, - 0x00, 0x00, 0x00, 0xa8, 0x7f, 0x10, 0x80, 0xf8, 0x84, 0x10, 0x80, 0x00, 0x00, - 0x00, 0x00, 0xe0, 0x7f, 0x10, 0x80, 0xf8, 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x24, 0x7f, 0x10, 0x80, 0xf8, 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x24, 0x7f, 0x10, 0x80, 0x00, 0x85, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x24, - 0x7f, 0x10, 0x80, 0x08, 0x85, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x24, 0x7f, - 0x10, 0x80, 0x10, 0x85, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x7f, 0x10, - 0x80, 0x18, 0x85, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7f, 0x10, 0x80, - 0x88, 0x84, 0x10, 0x80, 0x01, 0x00, 0x00, 0x00, 0x40, 0x7f, 0x10, 0x80, 0xa0, - 0x84, 0x10, 0x80, 0x01, 0x00, 0x00, 0x00, 0x8c, 0x7f, 0x10, 0x80, 0x20, 0x85, - 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xff, 0x0f, 0x00, 0x00, 0x2e, 0x2e, 0x2f, 0x73, 0x79, 0x6e, 0x63, 0x66, - 0x65, 0x70, 0x2e, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, - 0x2e, 0x2f, 0x73, 0x79, 0x6e, 0x63, 0x6d, 0x61, 0x69, 0x6e, 0x2e, 0x63, 0x00, - 0x00, 0x00, 0x2e, 0x2e, 0x2f, 0x73, 0x79, 0x6e, 0x63, 0x70, 0x72, 0x6f, 0x74, - 0x2e, 0x63, 0x00, 0x00, 0x00, 0x2e, 0x2e, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2e, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, - 0x27, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x2e, 0x2e, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x2e, 0x2e, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x2e, - 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x2e, - 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x69, 0x6e, 0x74, 0x2e, 0x63, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x60, 0x09, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0xc0, 0x12, 0x00, 0x00, 0x1e, - 0x00, 0x00, 0x00, 0x80, 0x25, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x40, 0x38, - 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x3c, 0x00, 0x00, - 0x00, 0x00, 0x96, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, - 0x96, 0x00, 0x00, 0x00, 0x6f, 0xfa, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x00, - 0x2c, 0x01, 0x00, 0xfa, 0x00, 0x00, 0x00, 0x38, 0xc1, 0x01, 0x00, 0x2c, 0x01, - 0x00, 0x00, 0x70, 0x82, 0x03, 0x00, 0x58, 0x02, 0x00, 0x00, 0xe0, 0x04, 0x07, - 0x00, 0xe8, 0x03, 0x00, 0x00, 0xa8, 0x0d, 0x0e, 0x00, 0x40, 0x06, 0x00, 0x00, - 0xc8, 0xc0, 0x12, 0x00, 0x40, 0x06, 0x00, 0x00, 0x00, 0x20, 0x1c, 0x00, 0x40, - 0x06, 0x00, 0x00, 0x00, 0x80, 0x25, 0x00, 0x40, 0x06, 0x00, 0x00, 0x00, 0x40, - 0x38, 0x00, 0x40, 0x06, 0x00, 0x00, 0x00, 0x20, 0x1c, 0x00, 0xc4, 0x09, 0x00, - 0x00, 0x00, 0x80, 0x25, 0x00, 0xa0, 0x0f, 0x00, 0x00, 0x00, 0x40, 0x38, 0x00, - 0x88, 0x13, 0x00, 0x00, 0x00, 0x80, 0x70, 0x00, 0x88, 0x13, 0x00, 0x00, 0x80, - 0x96, 0x98, 0x00, 0x88, 0x13, 0x00, 0x00, 0x00, 0x40, 0x1f, 0x00, 0xa0, 0x0f, - 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x2e, 0x2e, 0x2f, 0x73, 0x63, 0x61, 0x2e, - 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2e, 0x2e, 0x2f, 0x73, 0x63, 0x61, 0x70, 0x72, 0x6f, 0x74, 0x2e, 0x63, 0x00, - 0x00, 0x00, 0x00, 0x1c, 0x1f, 0x0a, 0x49, 0x40, 0x28, 0x23, 0x29, 0x62, 0x69, - 0x6f, 0x73, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x24, - 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x33, - 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, - 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, 0x31, 0x36, 0x3a, 0x34, - 0x32, 0x3a, 0x31, 0x37, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x63, 0x68, - 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, - 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x32, - 0x31, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x36, 0x2f, 0x31, 0x30, 0x2f, 0x30, 0x37, 0x20, 0x31, 0x37, 0x3a, - 0x31, 0x38, 0x3a, 0x30, 0x36, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x63, - 0x68, 0x65, 0x63, 0x6b, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x2e, 0x63, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x31, 0x2e, - 0x33, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x36, 0x2f, 0x30, 0x39, 0x2f, 0x31, 0x36, 0x20, 0x32, 0x33, 0x3a, - 0x32, 0x32, 0x3a, 0x30, 0x35, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x63, - 0x68, 0x65, 0x63, 0x6b, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x2e, 0x68, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, - 0x33, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, 0x31, 0x36, 0x3a, - 0x34, 0x33, 0x3a, 0x33, 0x37, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x63, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, - 0x31, 0x38, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, - 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x32, 0x2f, 0x32, 0x36, 0x20, 0x32, 0x32, - 0x3a, 0x30, 0x37, 0x3a, 0x35, 0x39, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, - 0x2e, 0x32, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, - 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x30, 0x2f, 0x31, 0x30, 0x20, 0x32, 0x33, - 0x3a, 0x32, 0x37, 0x3a, 0x30, 0x35, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6d, 0x6b, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, - 0x2e, 0x32, 0x38, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, - 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x35, 0x2f, 0x33, 0x30, 0x20, 0x31, - 0x35, 0x3a, 0x30, 0x32, 0x3a, 0x30, 0x36, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, - 0x29, 0x63, 0x6f, 0x6e, 0x63, 0x70, 0x72, 0x6f, 0x74, 0x2e, 0x68, 0x20, 0x20, - 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, - 0x33, 0x2e, 0x33, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, - 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, 0x31, - 0x36, 0x3a, 0x34, 0x36, 0x3a, 0x32, 0x38, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, - 0x29, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, - 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x32, - 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, - 0x39, 0x36, 0x2f, 0x31, 0x30, 0x2f, 0x31, 0x30, 0x20, 0x32, 0x33, 0x3a, 0x32, - 0x37, 0x3a, 0x30, 0x37, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x64, 0x65, - 0x66, 0x73, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, - 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x31, - 0x31, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x37, 0x2f, 0x30, 0x34, 0x2f, 0x30, 0x39, 0x20, 0x31, 0x35, 0x3a, - 0x30, 0x38, 0x3a, 0x30, 0x32, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, - 0x31, 0x31, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, - 0x31, 0x39, 0x39, 0x36, 0x2f, 0x30, 0x37, 0x2f, 0x32, 0x33, 0x20, 0x30, 0x31, - 0x3a, 0x35, 0x36, 0x3a, 0x35, 0x35, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, - 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x73, 0x20, 0x20, - 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, - 0x2e, 0x33, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, - 0x31, 0x39, 0x39, 0x36, 0x2f, 0x30, 0x33, 0x2f, 0x31, 0x39, 0x20, 0x32, 0x30, - 0x3a, 0x35, 0x37, 0x3a, 0x35, 0x36, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, - 0x66, 0x65, 0x70, 0x6d, 0x73, 0x67, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x32, - 0x2e, 0x35, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, - 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x30, 0x2f, 0x30, 0x37, 0x20, 0x31, 0x39, - 0x3a, 0x32, 0x39, 0x3a, 0x34, 0x33, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, - 0x68, 0x6f, 0x73, 0x74, 0x63, 0x6f, 0x6d, 0x6d, 0x2e, 0x68, 0x20, 0x20, 0x20, - 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, - 0x2e, 0x31, 0x32, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, - 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x34, 0x2f, 0x32, 0x39, 0x20, 0x31, - 0x39, 0x3a, 0x33, 0x31, 0x3a, 0x31, 0x30, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, - 0x29, 0x68, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x68, 0x20, 0x20, - 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, - 0x33, 0x2e, 0x32, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, - 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x30, 0x2f, 0x31, 0x30, 0x20, 0x32, - 0x33, 0x3a, 0x32, 0x37, 0x3a, 0x30, 0x38, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, - 0x29, 0x68, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x73, 0x20, 0x20, - 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, - 0x33, 0x2e, 0x38, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, - 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x31, 0x2f, 0x32, 0x31, 0x20, 0x31, - 0x37, 0x3a, 0x30, 0x36, 0x3a, 0x35, 0x32, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, - 0x29, 0x69, 0x75, 0x73, 0x63, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, - 0x32, 0x2e, 0x33, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, - 0x20, 0x31, 0x39, 0x39, 0x32, 0x2f, 0x30, 0x35, 0x2f, 0x32, 0x34, 0x20, 0x30, - 0x30, 0x3a, 0x30, 0x36, 0x3a, 0x32, 0x39, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, - 0x29, 0x6d, 0x69, 0x64, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, - 0x33, 0x2e, 0x31, 0x31, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, - 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x30, 0x2f, 0x31, 0x30, 0x20, - 0x32, 0x33, 0x3a, 0x32, 0x37, 0x3a, 0x30, 0x38, 0x20, 0x24, 0x00, 0x40, 0x28, - 0x23, 0x29, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x68, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, - 0x20, 0x33, 0x2e, 0x34, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, - 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, - 0x31, 0x36, 0x3a, 0x34, 0x39, 0x3a, 0x33, 0x33, 0x20, 0x24, 0x00, 0x40, 0x28, - 0x23, 0x29, 0x6d, 0x6f, 0x76, 0x65, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, - 0x20, 0x33, 0x2e, 0x32, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, - 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x30, 0x2f, 0x31, 0x30, 0x20, - 0x32, 0x33, 0x3a, 0x32, 0x37, 0x3a, 0x31, 0x30, 0x20, 0x24, 0x00, 0x40, 0x28, - 0x23, 0x29, 0x6d, 0x6f, 0x76, 0x65, 0x2e, 0x73, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, - 0x20, 0x33, 0x2e, 0x31, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, - 0x3a, 0x20, 0x31, 0x39, 0x39, 0x33, 0x2f, 0x30, 0x38, 0x2f, 0x32, 0x30, 0x20, - 0x31, 0x35, 0x3a, 0x32, 0x34, 0x3a, 0x32, 0x32, 0x20, 0x24, 0x00, 0x40, 0x28, - 0x23, 0x29, 0x70, 0x63, 0x69, 0x66, 0x65, 0x70, 0x2f, 0x4d, 0x61, 0x6b, 0x65, - 0x66, 0x69, 0x6c, 0x65, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, - 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x31, 0x2e, 0x32, 0x20, 0x24, 0x20, 0x20, - 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, - 0x30, 0x2f, 0x30, 0x39, 0x20, 0x30, 0x33, 0x3a, 0x34, 0x39, 0x3a, 0x35, 0x35, - 0x20, 0x24, 0x20, 0x00, 0x40, 0x28, 0x23, 0x29, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x31, 0x30, 0x20, 0x24, - 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, - 0x2f, 0x30, 0x34, 0x2f, 0x32, 0x39, 0x20, 0x31, 0x39, 0x3a, 0x33, 0x31, 0x3a, - 0x31, 0x31, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x37, 0x20, 0x24, - 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, - 0x2f, 0x30, 0x34, 0x2f, 0x32, 0x39, 0x20, 0x31, 0x39, 0x3a, 0x33, 0x31, 0x3a, - 0x31, 0x32, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x72, 0x77, 0x2e, 0x63, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x32, 0x20, 0x24, - 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, - 0x2f, 0x30, 0x39, 0x2f, 0x31, 0x36, 0x20, 0x32, 0x33, 0x3a, 0x32, 0x39, 0x3a, - 0x34, 0x34, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x72, 0x77, 0x2e, 0x68, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x32, 0x2e, 0x34, 0x20, 0x24, - 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, - 0x2f, 0x30, 0x32, 0x2f, 0x32, 0x30, 0x20, 0x32, 0x32, 0x3a, 0x32, 0x37, 0x3a, - 0x35, 0x30, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, 0x63, 0x61, 0x2e, - 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x37, 0x20, 0x24, - 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, - 0x2f, 0x30, 0x34, 0x2f, 0x30, 0x37, 0x20, 0x32, 0x31, 0x3a, 0x34, 0x33, 0x3a, - 0x31, 0x34, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, 0x63, 0x61, 0x2e, - 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x36, 0x20, 0x24, - 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, - 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, 0x31, 0x36, 0x3a, 0x35, 0x33, 0x3a, - 0x30, 0x33, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, 0x63, 0x61, 0x70, - 0x72, 0x6f, 0x74, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x38, 0x20, 0x24, - 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, - 0x2f, 0x30, 0x31, 0x2f, 0x32, 0x39, 0x20, 0x32, 0x31, 0x3a, 0x31, 0x39, 0x3a, - 0x31, 0x35, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, 0x63, 0x68, 0x65, - 0x64, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x35, 0x20, 0x24, - 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, - 0x2f, 0x30, 0x39, 0x2f, 0x31, 0x36, 0x20, 0x32, 0x33, 0x3a, 0x33, 0x32, 0x3a, - 0x32, 0x36, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, 0x63, 0x68, 0x65, - 0x64, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x33, 0x20, 0x24, - 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, - 0x2f, 0x30, 0x39, 0x2f, 0x32, 0x34, 0x20, 0x31, 0x35, 0x3a, 0x30, 0x31, 0x3a, - 0x34, 0x39, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, 0x79, 0x6e, 0x63, - 0x62, 0x69, 0x6f, 0x73, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x31, 0x2e, 0x37, 0x20, 0x24, - 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, - 0x2f, 0x31, 0x30, 0x2f, 0x32, 0x33, 0x20, 0x32, 0x31, 0x3a, 0x34, 0x30, 0x3a, - 0x31, 0x32, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, 0x79, 0x6e, 0x63, - 0x63, 0x68, 0x61, 0x6e, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x33, 0x20, 0x24, - 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, - 0x2f, 0x30, 0x31, 0x2f, 0x31, 0x35, 0x20, 0x31, 0x38, 0x3a, 0x30, 0x38, 0x3a, - 0x33, 0x35, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, 0x79, 0x6e, 0x63, - 0x66, 0x65, 0x70, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x32, 0x30, 0x20, - 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, - 0x37, 0x2f, 0x30, 0x32, 0x2f, 0x31, 0x30, 0x20, 0x31, 0x35, 0x3a, 0x34, 0x32, - 0x3a, 0x32, 0x31, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, 0x79, 0x6e, - 0x63, 0x6d, 0x61, 0x69, 0x6e, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x31, 0x30, - 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, - 0x39, 0x37, 0x2f, 0x30, 0x31, 0x2f, 0x31, 0x35, 0x20, 0x31, 0x38, 0x3a, 0x30, - 0x37, 0x3a, 0x30, 0x39, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, 0x79, - 0x6e, 0x63, 0x70, 0x72, 0x6f, 0x74, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x24, - 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x31, - 0x32, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x37, 0x2f, 0x30, 0x35, 0x2f, 0x31, 0x32, 0x20, 0x31, 0x39, 0x3a, - 0x30, 0x33, 0x3a, 0x33, 0x33, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x74, - 0x69, 0x6d, 0x65, 0x72, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, - 0x36, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x36, 0x2f, 0x30, 0x39, 0x2f, 0x31, 0x36, 0x20, 0x32, 0x33, 0x3a, - 0x34, 0x31, 0x3a, 0x34, 0x35, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x74, - 0x69, 0x6d, 0x65, 0x72, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, - 0x38, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x36, 0x2f, 0x30, 0x39, 0x2f, 0x31, 0x36, 0x20, 0x32, 0x33, 0x3a, - 0x34, 0x32, 0x3a, 0x30, 0x38, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x74, - 0x69, 0x6d, 0x65, 0x72, 0x69, 0x6e, 0x74, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, - 0x36, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x37, 0x2f, 0x30, 0x31, 0x2f, 0x31, 0x35, 0x20, 0x31, 0x38, 0x3a, - 0x31, 0x30, 0x3a, 0x30, 0x39, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x75, - 0x74, 0x69, 0x6c, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, - 0x33, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, 0x31, 0x36, 0x3a, - 0x35, 0x39, 0x3a, 0x30, 0x39, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x75, - 0x74, 0x69, 0x6c, 0x2e, 0x73, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, - 0x34, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x37, 0x2f, 0x30, 0x31, 0x2f, 0x32, 0x31, 0x20, 0x31, 0x37, 0x3a, - 0x30, 0x36, 0x3a, 0x35, 0x32, 0x20, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; diff --git a/sys/dev/digi/Xe.bios.h b/sys/dev/digi/Xe.bios.h deleted file mode 100644 index 53b0ff2eb479..000000000000 --- a/sys/dev/digi/Xe.bios.h +++ /dev/null @@ -1,189 +0,0 @@ -/*- - * Copyright (c) 2001 Brian Somers <brian@Awfulhak.org> - * based on work by Slawa Olhovchenkov - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - */ - -static const u_char Xe_bios[] = { - 0x28, 0x43, 0x29, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, - 0x20, 0x31, 0x39, 0x39, 0x34, 0x2c, 0x20, 0x44, 0x69, 0x67, 0x69, 0x42, 0x6f, - 0x61, 0x72, 0x64, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x00, 0x00, 0x8a, 0xf8, 0x8a, - 0xf8, 0x15, 0xf9, 0x8a, 0xf8, 0x8a, 0xf8, 0x8a, 0xf8, 0x8a, 0xf8, 0x8a, 0xf8, - 0xbc, 0xf8, 0x8a, 0xf8, 0x96, 0xf8, 0x96, 0xf8, 0x96, 0xf8, 0x96, 0xf8, 0x96, - 0xf8, 0x96, 0xf8, 0x8a, 0xf8, 0x8a, 0xf8, 0x96, 0xf8, 0x96, 0xf8, 0x8a, 0xf8, - 0xad, 0xf8, 0xb0, 0xf8, 0x8a, 0xf8, 0x8a, 0xf8, 0x8a, 0xf8, 0x8a, 0xf8, 0x8a, - 0xf8, 0x8a, 0xf8, 0x8a, 0xf8, 0x8a, 0xf8, 0x8a, 0xf8, 0x8a, 0xf8, 0x04, 0x02, - 0x00, 0x02, 0x14, 0x02, 0x10, 0x02, 0x24, 0x02, 0x20, 0x02, 0x34, 0x02, 0x30, - 0x02, 0x44, 0x02, 0x40, 0x02, 0x54, 0x02, 0x50, 0x02, 0x64, 0x02, 0x60, 0x02, - 0x74, 0x02, 0x70, 0x02, 0x04, 0x01, 0x00, 0x01, 0x1e, 0x2e, 0x8e, 0x1e, 0x22, - 0xf8, 0xfe, 0x06, 0x70, 0x00, 0x1f, 0xcf, 0x1e, 0x50, 0x52, 0x2e, 0x8e, 0x1e, - 0x22, 0xf8, 0xfe, 0x06, 0x71, 0x00, 0xb8, 0x00, 0x80, 0xba, 0x22, 0xff, 0xef, - 0x5a, 0x58, 0x1f, 0xcf, 0xb4, 0x80, 0xcf, 0x1e, 0x2e, 0x8e, 0x1e, 0x22, 0xf8, - 0xfe, 0x06, 0x2b, 0x00, 0x1f, 0xcf, 0x1e, 0x52, 0x50, 0x2e, 0x8e, 0x1e, 0x22, - 0xf8, 0xcd, 0x16, 0xfe, 0x06, 0x2a, 0x00, 0x80, 0x3e, 0x2a, 0x00, 0x12, 0x72, - 0x39, 0xc6, 0x06, 0x2a, 0x00, 0x00, 0xfe, 0x06, 0x29, 0x00, 0x80, 0x3e, 0x29, - 0x00, 0x3c, 0x72, 0x29, 0xc6, 0x06, 0x29, 0x00, 0x00, 0xfe, 0x06, 0x28, 0x00, - 0x80, 0x3e, 0x28, 0x00, 0x3c, 0x72, 0x19, 0xc6, 0x06, 0x28, 0x00, 0x00, 0xfe, - 0x06, 0x27, 0x00, 0x80, 0x3e, 0x27, 0x00, 0x18, 0x72, 0x09, 0xc6, 0x06, 0x27, - 0x00, 0x00, 0xff, 0x06, 0x25, 0x00, 0xba, 0x22, 0xff, 0xb8, 0x00, 0x80, 0xef, - 0x58, 0x5a, 0x1f, 0xcf, 0x60, 0x1e, 0x06, 0xfc, 0x2e, 0x8e, 0x06, 0x22, 0xf8, - 0x2e, 0x8e, 0x1e, 0x22, 0xf8, 0x8d, 0x36, 0x40, 0x00, 0xad, 0x3c, 0x3f, 0x7f, - 0x22, 0x3c, 0x1f, 0x7f, 0x22, 0x32, 0xe4, 0xd1, 0xe0, 0x3d, 0x16, 0x00, 0x90, - 0x73, 0x14, 0xbb, 0x56, 0xf9, 0x03, 0xd8, 0x2e, 0xff, 0x17, 0x8d, 0x36, 0x40, - 0x00, 0xb0, 0x00, 0x89, 0x04, 0x07, 0x1f, 0x61, 0xcf, 0xb4, 0x80, 0xeb, 0xf0, - 0xcd, 0x15, 0xeb, 0xec, 0x6c, 0xf9, 0x79, 0xf9, 0xb9, 0xf9, 0xd3, 0xf9, 0xd8, - 0xf9, 0xe1, 0xf9, 0xe9, 0xf9, 0xf2, 0xf9, 0xfa, 0xf9, 0xfd, 0xf9, 0x2a, 0xfa, - 0xe4, 0x00, 0x24, 0xf7, 0xe6, 0x00, 0x0c, 0x08, 0xe6, 0x00, 0xb4, 0x00, 0xc3, - 0x1e, 0xad, 0x8b, 0xd8, 0xad, 0x8e, 0xdb, 0x8b, 0xf0, 0x33, 0xdb, 0x8b, 0x07, - 0x3d, 0x4f, 0x53, 0x75, 0x2a, 0x8a, 0x47, 0x02, 0x32, 0xe4, 0x86, 0xc4, 0x8b, - 0xc8, 0x32, 0xc0, 0x02, 0x07, 0x43, 0xe2, 0xfb, 0x0a, 0xc0, 0x75, 0x16, 0x8c, - 0xd9, 0x1f, 0x89, 0x0e, 0x2e, 0x00, 0x89, 0x36, 0x2c, 0x00, 0x8d, 0x1e, 0x02, - 0x00, 0xc7, 0x07, 0x45, 0x4d, 0x32, 0xe4, 0xc3, 0x1f, 0xb4, 0x80, 0xc3, 0xad, - 0x8b, 0xd8, 0xad, 0x8b, 0xd0, 0xad, 0x8e, 0xc0, 0xad, 0x8b, 0xf8, 0xad, 0x8b, - 0xc8, 0x8b, 0xf2, 0x1e, 0x8e, 0xdb, 0xf3, 0xa4, 0x1f, 0x32, 0xe4, 0xc3, 0xea, - 0xf0, 0xff, 0x00, 0xf0, 0xad, 0x8b, 0xd0, 0xec, 0x88, 0x04, 0x32, 0xe4, 0xc3, - 0xad, 0x8b, 0xd0, 0xac, 0xee, 0x32, 0xe4, 0xc3, 0xad, 0x8b, 0xd0, 0xed, 0x89, - 0x04, 0x32, 0xe4, 0xc3, 0xad, 0x8b, 0xd0, 0xad, 0xef, 0x32, 0xe4, 0xc3, 0xb4, - 0x80, 0xc3, 0xac, 0x3c, 0x12, 0x7f, 0x25, 0xfe, 0xc8, 0x32, 0xe4, 0xd1, 0xe0, - 0x8d, 0x1e, 0x66, 0xf8, 0x03, 0xd8, 0x2e, 0x8b, 0x17, 0xec, 0xac, 0x3c, 0x0f, - 0x7f, 0x10, 0x3c, 0x00, 0x74, 0x03, 0xee, 0x90, 0x90, 0xec, 0x8b, 0xfe, 0x1e, - 0x07, 0xaa, 0x32, 0xe4, 0xc3, 0xb4, 0x80, 0xc3, 0xac, 0x3c, 0x12, 0x7f, 0x1f, - 0xfe, 0xc8, 0x32, 0xe4, 0xd1, 0xe0, 0x8d, 0x1e, 0x66, 0xf8, 0x03, 0xd8, 0x2e, - 0x8b, 0x17, 0xec, 0xac, 0x3c, 0x0f, 0x7f, 0x0a, 0x3c, 0x00, 0x74, 0x01, 0xee, - 0xac, 0xee, 0x32, 0xe4, 0xc3, 0xb4, 0x80, 0xc3, 0xfc, 0x8e, 0xc0, 0xb8, 0xff, - 0xff, 0x8b, 0xcb, 0x33, 0xff, 0xf3, 0xab, 0x8b, 0xcb, 0x33, 0xff, 0xf3, 0xaf, - 0xe3, 0x01, 0xc3, 0x8b, 0xcb, 0xbf, 0x00, 0x00, 0x26, 0x89, 0x3d, 0x83, 0xc7, - 0x02, 0xe2, 0xf8, 0xbe, 0x00, 0x00, 0x8b, 0xcb, 0x26, 0x8b, 0x3c, 0x3b, 0xfe, - 0x74, 0x01, 0xc3, 0x83, 0xc6, 0x02, 0x83, 0xc7, 0x02, 0xe2, 0xf0, 0x33, 0xc0, - 0x8b, 0xcb, 0x33, 0xff, 0xf3, 0xab, 0x8b, 0xcb, 0x33, 0xff, 0xf3, 0xaf, 0xc3, - 0x32, 0xc0, 0x26, 0x80, 0x3e, 0x23, 0x00, 0x00, 0x74, 0x02, 0x0c, 0x01, 0x26, - 0xf7, 0x06, 0x20, 0x00, 0x0f, 0x00, 0x74, 0x02, 0x0c, 0x02, 0x26, 0xf7, 0x06, - 0x20, 0x00, 0xf0, 0x00, 0x74, 0x02, 0x0c, 0x04, 0x26, 0xf7, 0x06, 0x20, 0x00, - 0x00, 0xff, 0x74, 0x02, 0x0c, 0x08, 0x26, 0xa2, 0x24, 0x00, 0xb8, 0x00, 0x40, - 0xba, 0x5e, 0xff, 0xef, 0xba, 0x66, 0xff, 0xef, 0xba, 0x52, 0xff, 0xb8, 0x63, - 0x0e, 0xef, 0xba, 0x56, 0xff, 0xb8, 0x05, 0xe0, 0xef, 0xba, 0x28, 0xff, 0xb8, - 0xfc, 0x00, 0xef, 0xb8, 0x00, 0x02, 0x26, 0xa3, 0x2e, 0x00, 0xb8, 0x04, 0x00, - 0x26, 0xa3, 0x2c, 0x00, 0xb0, 0xc3, 0xe6, 0x08, 0x8a, 0xd8, 0xe4, 0x08, 0x3a, - 0xc3, 0x75, 0x06, 0x26, 0xc6, 0x06, 0xb4, 0x00, 0x01, 0xb0, 0x00, 0xe6, 0x00, - 0xfc, 0x8d, 0x3e, 0x00, 0x00, 0xb8, 0x47, 0x44, 0xab, 0xb8, 0xff, 0xff, 0xab, - 0xab, 0xab, 0xb8, 0x42, 0x49, 0xab, 0xb8, 0x4f, 0x53, 0xab, 0xb8, 0x58, 0x69, - 0x26, 0x80, 0x3e, 0x10, 0x00, 0x04, 0x74, 0x0e, 0xb8, 0x58, 0x65, 0x26, 0x80, - 0x3e, 0x10, 0x00, 0x03, 0x74, 0x03, 0xb8, 0x58, 0x74, 0xab, 0x8d, 0x36, 0xfe, - 0xff, 0x8a, 0x04, 0x8d, 0x36, 0xff, 0xff, 0x8a, 0x24, 0xab, 0xfb, 0x26, 0x81, - 0x0e, 0x12, 0x00, 0x00, 0x08, 0x06, 0x1f, 0xa1, 0x00, 0x00, 0x8b, 0x1e, 0x02, - 0x00, 0x3d, 0x44, 0x47, 0x75, 0x0b, 0x26, 0x81, 0x0e, 0x12, 0x00, 0x00, 0x10, - 0xff, 0x2e, 0x2c, 0x00, 0x81, 0xfb, 0x45, 0x4d, 0x75, 0xe3, 0x26, 0x81, 0x0e, - 0x12, 0x00, 0x00, 0x20, 0xff, 0x2e, 0x2c, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xba, 0xa8, - 0xff, 0xb8, 0xba, 0x81, 0xef, 0xba, 0xa4, 0xff, 0xb8, 0x3a, 0x00, 0xef, 0x90, - 0xe4, 0x00, 0xa8, 0x60, 0x75, 0x0c, 0x24, 0x06, 0x74, 0x14, 0x3c, 0x02, 0x74, - 0x1c, 0x3c, 0x04, 0x74, 0x24, 0xbb, 0x38, 0xc0, 0xbe, 0xf8, 0x81, 0xbf, 0xba, - 0xa0, 0xeb, 0x22, 0x90, 0xbb, 0x38, 0xf0, 0xbe, 0xf8, 0x41, 0xbf, 0xba, 0x81, - 0xeb, 0x16, 0x90, 0xbb, 0x38, 0xf0, 0xbe, 0xf8, 0xe1, 0xbf, 0xba, 0x88, 0xeb, - 0x0a, 0x90, 0xbb, 0x38, 0xc0, 0xbe, 0xf8, 0x41, 0xbf, 0xba, 0x81, 0xba, 0xa0, - 0xff, 0x8b, 0xc3, 0xef, 0xba, 0xa2, 0xff, 0xb8, 0xf8, 0x0f, 0xef, 0xba, 0xa6, - 0xff, 0x8b, 0xc6, 0xef, 0xba, 0xa8, 0xff, 0x8b, 0xc7, 0xef, 0x8c, 0xc8, 0x8e, - 0xd8, 0xe4, 0x00, 0x24, 0x06, 0x74, 0x17, 0xbb, 0x00, 0x80, 0xbd, 0xc0, 0xe0, - 0x3c, 0x02, 0x74, 0x5a, 0xbd, 0xc0, 0xc0, 0x3c, 0x04, 0x74, 0x53, 0xbd, 0xc0, - 0x80, 0xeb, 0x4e, 0x90, 0xb9, 0x08, 0x00, 0xb8, 0x00, 0x80, 0x8e, 0xc0, 0x26, - 0xa3, 0x00, 0x00, 0x05, 0x00, 0x10, 0xe2, 0xf5, 0xbd, 0xc0, 0xf0, 0xbb, 0x00, - 0x7c, 0xb8, 0x00, 0xe0, 0x8e, 0xc0, 0x26, 0x8b, 0x0e, 0x00, 0x00, 0x3b, 0xc8, - 0x75, 0x28, 0xbb, 0x00, 0x80, 0xbd, 0xc0, 0xe0, 0xb8, 0x00, 0xc0, 0x8e, 0xc0, - 0x26, 0x8b, 0x0e, 0x00, 0x00, 0x3b, 0xc8, 0x75, 0x14, 0xbd, 0xc0, 0xc0, 0xb8, - 0x00, 0x80, 0x8e, 0xc0, 0x26, 0x8b, 0x0e, 0x00, 0x00, 0x3b, 0xc8, 0x75, 0x03, - 0xbd, 0xc0, 0x80, 0x8c, 0xc8, 0x8e, 0xd0, 0xbc, 0xed, 0xfc, 0x8b, 0xc5, 0x25, - 0x00, 0xf0, 0xe9, 0x6c, 0xfd, 0xb4, 0x00, 0x74, 0x06, 0xb4, 0xff, 0xeb, 0x02, - 0xe5, 0xfc, 0x8e, 0xc5, 0x2e, 0x89, 0x2e, 0x22, 0xf8, 0xe4, 0x00, 0x24, 0x16, - 0x26, 0xa2, 0x11, 0x00, 0x26, 0x83, 0x0e, 0x12, 0x00, 0x01, 0x80, 0xfc, 0x00, - 0x74, 0x06, 0x26, 0x83, 0x0e, 0x14, 0x00, 0x01, 0x26, 0xc7, 0x06, 0x18, 0x00, - 0x40, 0x00, 0x26, 0xc6, 0x06, 0x10, 0x00, 0x03, 0xa8, 0x10, 0x74, 0x06, 0x26, - 0xc6, 0x06, 0x10, 0x00, 0x04, 0xb8, 0x00, 0x00, 0x8e, 0xc0, 0xb8, 0xaa, 0x55, - 0x26, 0xa3, 0x00, 0x00, 0x26, 0xc7, 0x06, 0x02, 0x00, 0x00, 0x00, 0x26, 0xc7, - 0x06, 0x04, 0x00, 0x00, 0x00, 0x8b, 0xcd, 0x81, 0xe1, 0x00, 0xf0, 0x8e, 0xc1, - 0x26, 0x8b, 0x1e, 0x00, 0x00, 0x3b, 0xc3, 0x75, 0x13, 0x8e, 0xc5, 0x26, 0xc6, - 0x06, 0x10, 0x00, 0x05, 0xb8, 0x40, 0x00, 0x8e, 0xd0, 0xbc, 0x00, 0x04, 0xe9, - 0x99, 0x00, 0x8c, 0xc8, 0x8e, 0xd0, 0xbc, 0x7c, 0xfd, 0xb8, 0x00, 0x00, 0xbb, - 0x00, 0x20, 0xe9, 0xdd, 0xfc, 0xb4, 0x00, 0x74, 0x06, 0xb4, 0xff, 0xeb, 0x02, - 0x74, 0xfd, 0x8e, 0xc5, 0x80, 0xfc, 0x00, 0x74, 0x08, 0x26, 0x83, 0x0e, 0x14, - 0x00, 0x02, 0xeb, 0x0d, 0x26, 0xc7, 0x06, 0x16, 0x00, 0x10, 0x00, 0x26, 0x83, - 0x0e, 0x12, 0x00, 0x02, 0xb8, 0x40, 0x00, 0x8e, 0xd0, 0xbc, 0x00, 0x04, 0xe4, - 0x00, 0xa8, 0x60, 0x75, 0x07, 0xba, 0xa2, 0xff, 0xb8, 0xfc, 0x0f, 0xef, 0xb8, - 0x00, 0x04, 0x8e, 0xc0, 0xb8, 0xaa, 0x55, 0x26, 0xa3, 0x00, 0x00, 0x26, 0xc7, - 0x06, 0x02, 0x00, 0x00, 0x00, 0x26, 0xc7, 0x06, 0x04, 0x00, 0x00, 0x00, 0xb9, - 0x00, 0x00, 0x8e, 0xc1, 0x26, 0x8b, 0x1e, 0x00, 0x00, 0x3b, 0xc3, 0x75, 0x02, - 0xeb, 0x24, 0x8e, 0xc5, 0x26, 0x83, 0x0e, 0x12, 0x00, 0x04, 0xb8, 0x00, 0x04, - 0xbb, 0x00, 0x60, 0x06, 0xe8, 0x66, 0xfc, 0x07, 0x75, 0x09, 0x26, 0xc7, 0x06, - 0x16, 0x00, 0x40, 0x00, 0xeb, 0x06, 0x26, 0x83, 0x0e, 0x14, 0x00, 0x04, 0x8e, - 0xc5, 0x8c, 0xc0, 0x3d, 0xc0, 0xf0, 0x75, 0x03, 0xe9, 0x9f, 0x00, 0x3d, 0xc0, - 0x80, 0x74, 0x62, 0x3d, 0xc0, 0xc0, 0x74, 0x23, 0x26, 0x83, 0x0e, 0x12, 0x00, - 0x08, 0xb8, 0x00, 0xf0, 0xbb, 0x00, 0x7c, 0x06, 0xe8, 0x2e, 0xfc, 0x07, 0x75, - 0x08, 0x26, 0x83, 0x06, 0x18, 0x00, 0x40, 0xeb, 0x06, 0x26, 0x83, 0x0e, 0x14, - 0x00, 0x08, 0xeb, 0x72, 0xb9, 0x03, 0x00, 0xb8, 0x00, 0xd0, 0xba, 0x08, 0x00, - 0xbb, 0x00, 0x80, 0x3d, 0x00, 0xf0, 0x75, 0x03, 0xbb, 0x00, 0x7c, 0x26, 0x09, - 0x16, 0x12, 0x00, 0x06, 0x50, 0x51, 0xe8, 0xfc, 0xfb, 0x59, 0x58, 0x07, 0x75, - 0x0f, 0x26, 0x83, 0x06, 0x18, 0x00, 0x40, 0xd1, 0xe2, 0x05, 0x00, 0x10, 0xe2, - 0xd8, 0xeb, 0x05, 0x26, 0x09, 0x16, 0x14, 0x00, 0xeb, 0x38, 0xb9, 0x07, 0x00, - 0xb8, 0x00, 0x90, 0xba, 0x08, 0x00, 0xbb, 0x00, 0x80, 0x3d, 0x00, 0xf0, 0x75, - 0x03, 0xbb, 0x00, 0x7c, 0x26, 0x09, 0x16, 0x12, 0x00, 0x06, 0x50, 0x51, 0xe8, - 0xc2, 0xfb, 0x59, 0x58, 0x07, 0x75, 0x0f, 0x26, 0x83, 0x06, 0x18, 0x00, 0x40, - 0xd1, 0xe2, 0x05, 0x00, 0x10, 0xe2, 0xd8, 0xeb, 0x05, 0x26, 0x09, 0x16, 0x14, - 0x00, 0x26, 0xa1, 0x18, 0x00, 0x2d, 0x10, 0x00, 0x26, 0xa3, 0x1a, 0x00, 0x06, - 0xfc, 0x33, 0xff, 0x8e, 0xc7, 0xb9, 0x00, 0x02, 0xb8, 0x00, 0xf0, 0xf3, 0xab, - 0x33, 0xff, 0xbe, 0x24, 0xf8, 0xb9, 0x20, 0x00, 0xa5, 0x47, 0x47, 0xe2, 0xfb, - 0xbe, 0x64, 0xf8, 0xb9, 0xe0, 0x00, 0x8b, 0x1c, 0x26, 0x89, 0x1d, 0x83, 0xc7, - 0x04, 0xe2, 0xf8, 0x07, 0xba, 0x28, 0xff, 0xb8, 0xfd, 0x00, 0xef, 0xba, 0x32, - 0xff, 0xb8, 0x0d, 0x00, 0xef, 0xba, 0x34, 0xff, 0xb8, 0x0f, 0x00, 0xef, 0xba, - 0x36, 0xff, 0xb8, 0x0e, 0x00, 0xef, 0xba, 0x38, 0xff, 0xb8, 0x19, 0x00, 0xef, - 0xba, 0x3a, 0xff, 0xb8, 0x18, 0x00, 0xef, 0xba, 0x3c, 0xff, 0xb8, 0x0b, 0x00, - 0xef, 0xba, 0x3e, 0xff, 0xb8, 0x1a, 0x00, 0xef, 0x8d, 0x3e, 0x90, 0x00, 0x8d, - 0x36, 0x66, 0xf8, 0xb9, 0x10, 0x00, 0xf3, 0xa5, 0x8d, 0x3e, 0xb0, 0x00, 0x8d, - 0x36, 0x86, 0xf8, 0xb9, 0x02, 0x00, 0xf3, 0xa5, 0xb9, 0x10, 0x00, 0x8d, 0x36, - 0x90, 0x00, 0x83, 0xc6, 0x1e, 0x26, 0x8b, 0x14, 0xb3, 0x10, 0x32, 0xc0, 0xec, - 0xb0, 0x0c, 0xee, 0x8a, 0xc3, 0x8a, 0xc3, 0xee, 0x83, 0xee, 0x02, 0x26, 0x8b, - 0x14, 0xfe, 0xcb, 0xe2, 0xeb, 0xb9, 0x10, 0x00, 0x8d, 0x36, 0x90, 0x00, 0x26, - 0x8b, 0x14, 0xb3, 0x01, 0xbf, 0x00, 0x80, 0xb0, 0x0c, 0xee, 0xf6, 0xe8, 0xec, - 0x3a, 0xc3, 0x75, 0x0e, 0xd1, 0xc7, 0x26, 0x09, 0x3e, 0x20, 0x00, 0x26, 0xfe, - 0x06, 0x22, 0x00, 0xeb, 0x07, 0x33, 0xc0, 0x26, 0x89, 0x04, 0xd1, 0xc7, 0x83, - 0xc6, 0x02, 0x26, 0x8b, 0x14, 0xfe, 0xc3, 0xe2, 0xd7, 0x26, 0xc6, 0x06, 0x23, - 0x00, 0x01, 0x8d, 0x36, 0xb0, 0x00, 0x26, 0x8b, 0x14, 0x32, 0xc0, 0xee, 0xb0, - 0x0c, 0xee, 0xb0, 0x5a, 0xee, 0xb0, 0x0c, 0xee, 0xf6, 0xe8, 0xec, 0x3c, 0x5a, - 0x74, 0x14, 0x26, 0xc7, 0x06, 0xb0, 0x00, 0x00, 0x00, 0x26, 0xc7, 0x06, 0xb2, - 0x00, 0x00, 0x00, 0x26, 0xc6, 0x06, 0x23, 0x00, 0x00, 0xe9, 0xd3, 0xfa, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xea, 0x00, 0xfc, 0x00, 0xf0, 0x4d, 0x2f, 0x50, 0x43, - 0x2f, 0x58, 0x2a, 0x39, 0x34, 0x34, 0x31 -}; diff --git a/sys/dev/digi/Xe.c b/sys/dev/digi/Xe.c deleted file mode 100644 index b1bb5e53f07a..000000000000 --- a/sys/dev/digi/Xe.c +++ /dev/null @@ -1,48 +0,0 @@ -/*- - * Copyright (c) 2001 Brian Somers <brian@Awfulhak.org> - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include <sys/param.h> -#include <sys/conf.h> -#include <sys/kernel.h> -#include <sys/module.h> - -#include <dev/digi/Xe.bios.h> -#include <dev/digi/Xe.fepos.h> -#include <dev/digi/digi_mod.h> - -struct digi_mod digi_mod_Xe = { - DIGI_MOD_VERSION, - { Xe_bios, sizeof(Xe_bios) }, - { Xe_fepos, sizeof(Xe_fepos) }, - { NULL, 0 } -}; - -MODULE_VERSION(digi_Xe, 1); -DEV_MODULE(digi_Xe, 0, 0); diff --git a/sys/dev/digi/Xe.fepos.h b/sys/dev/digi/Xe.fepos.h deleted file mode 100644 index fef506e71441..000000000000 --- a/sys/dev/digi/Xe.fepos.h +++ /dev/null @@ -1,504 +0,0 @@ -/*- - * Copyright (c) 2001 Brian Somers <brian@Awfulhak.org> - * based on work by Slawa Olhovchenkov - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - */ - -static const u_char Xe_fepos[] = { - 0x4f, 0x53, 0x18, 0x80, 0xe9, 0xbf, 0x15, 0x00, 0x40, 0x28, 0x23, 0x29, 0x46, - 0x45, 0x50, 0x4f, 0x53, 0x20, 0x37, 0x2e, 0x30, 0x38, 0x20, 0x34, 0x2f, 0x32, - 0x30, 0x2f, 0x39, 0x35, 0x00, 0x40, 0x28, 0x23, 0x29, 0x28, 0x43, 0x29, 0x43, - 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x31, 0x39, 0x38, 0x39, - 0x2d, 0x31, 0x39, 0x39, 0x35, 0x20, 0x44, 0x69, 0x67, 0x69, 0x42, 0x6f, 0x61, - 0x72, 0x64, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x00, 0xcb, 0x0c, 0xcb, 0x0c, 0xe2, - 0x0c, 0xcb, 0x0c, 0xcb, 0x0c, 0xcb, 0x0c, 0xcb, 0x0c, 0xcb, 0x0c, 0x57, 0x0c, - 0xcb, 0x0c, 0xcb, 0x0c, 0xcb, 0x0c, 0x53, 0x0b, 0xcb, 0x0c, 0xcb, 0x0c, 0x42, - 0x0b, 0xcb, 0x0c, 0xcb, 0x0c, 0x12, 0x0d, 0xcb, 0x0c, 0xcb, 0x0c, 0xcb, 0x0c, - 0xcb, 0x0c, 0xcb, 0x0c, 0xcb, 0x0c, 0xcb, 0x0c, 0xcb, 0x0c, 0xcb, 0x0c, 0xcb, - 0x0c, 0xcb, 0x0c, 0xcb, 0x0c, 0xcb, 0x0c, 0x00, 0x10, 0x80, 0x10, 0x00, 0x11, - 0x80, 0x11, 0x00, 0x12, 0x80, 0x12, 0x00, 0x13, 0x80, 0x13, 0x00, 0x14, 0x80, - 0x14, 0x00, 0x15, 0x80, 0x15, 0x00, 0x16, 0x80, 0x16, 0x00, 0x17, 0x80, 0x17, - 0x78, 0x0b, 0xb9, 0x0b, 0x50, 0x0c, 0xb9, 0x0b, 0x8d, 0x0b, 0x8d, 0x0b, 0x8d, - 0x0b, 0x8d, 0x0b, 0xc0, 0x0b, 0xc0, 0x0b, 0xc0, 0x0b, 0xc0, 0x0b, 0x8d, 0x0b, - 0x8d, 0x0b, 0x8d, 0x0b, 0x8d, 0x0b, 0x50, 0x0c, 0xb9, 0x0b, 0x50, 0x0c, 0xb9, - 0x0b, 0x8d, 0x0b, 0x8d, 0x0b, 0x8d, 0x0b, 0x8d, 0x0b, 0xc0, 0x0b, 0xc0, 0x0b, - 0xc0, 0x0b, 0xc0, 0x0b, 0x8d, 0x0b, 0x8d, 0x0b, 0x8d, 0x0b, 0x8d, 0x0b, 0x94, - 0x0b, 0x94, 0x0b, 0x94, 0x0b, 0x94, 0x0b, 0x94, 0x0b, 0x94, 0x0b, 0x94, 0x0b, - 0x94, 0x0b, 0x94, 0x0b, 0x94, 0x0b, 0x94, 0x0b, 0x94, 0x0b, 0x94, 0x0b, 0x94, - 0x0b, 0x94, 0x0b, 0x94, 0x0b, 0x94, 0x0b, 0x94, 0x0b, 0x94, 0x0b, 0x94, 0x0b, - 0x94, 0x0b, 0x94, 0x0b, 0x94, 0x0b, 0x94, 0x0b, 0x94, 0x0b, 0x94, 0x0b, 0x94, - 0x0b, 0x94, 0x0b, 0x94, 0x0b, 0x94, 0x0b, 0x94, 0x0b, 0x94, 0x0b, 0x16, 0x00, - 0xfe, 0x11, 0xfe, 0x0b, 0x2c, 0x08, 0xb5, 0x06, 0xfe, 0x05, 0x7e, 0x04, 0xfe, - 0x02, 0x7e, 0x01, 0xbe, 0x00, 0x7e, 0x00, 0x5e, 0x00, 0x2e, 0x00, 0x16, 0x00, - 0x0a, 0x00, 0x04, 0x00, 0x16, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0e, - 0x00, 0x06, 0x00, 0x7e, 0x04, 0xfe, 0x02, 0x7e, 0x01, 0xbe, 0x00, 0x7e, 0x00, - 0x5e, 0x00, 0x2e, 0x00, 0x16, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x18, 0x00, 0x86, - 0x13, 0x03, 0x0d, 0xdf, 0x08, 0x41, 0x07, 0x81, 0x06, 0xe0, 0x04, 0x3f, 0x03, - 0x9f, 0x01, 0xce, 0x00, 0x89, 0x00, 0x66, 0x00, 0x32, 0x00, 0x18, 0x00, 0x0b, - 0x00, 0x0b, 0x00, 0x18, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x41, 0x07, - 0x81, 0x06, 0xe0, 0x04, 0x3f, 0x03, 0x9f, 0x01, 0xce, 0x00, 0x89, 0x00, 0x66, - 0x00, 0x32, 0x00, 0x18, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x00, 0x80, 0x40, 0xc0, - 0x1f, 0x3f, 0x7f, 0xff, 0x00, 0x04, 0x02, 0x06, 0x08, 0x0c, 0x0a, 0x0e, 0x00, - 0x04, 0x02, 0x06, 0x08, 0x0c, 0x0a, 0x0e, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, - 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0x1e, 0x06, 0x3e, - 0x06, 0xef, 0x06, 0xf8, 0x05, 0x0e, 0x06, 0x55, 0x07, 0xa0, 0x08, 0xa0, 0x08, - 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, - 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, - 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, - 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, - 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, - 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, - 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, - 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0xa1, 0x05, 0xa1, 0x05, 0xa1, 0x05, - 0xa1, 0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa1, - 0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa1, 0x05, - 0xa1, 0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa1, - 0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa1, 0x05, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, - 0x9d, 0x08, 0x9d, 0x08, 0x5b, 0x05, 0xea, 0x05, 0xea, 0x05, 0xea, 0x05, 0xea, - 0x05, 0xea, 0x05, 0xea, 0x05, 0xea, 0x05, 0xea, 0x05, 0xea, 0x05, 0xea, 0x05, - 0xea, 0x05, 0xea, 0x05, 0xea, 0x05, 0xea, 0x05, 0xea, 0x05, 0xea, 0x05, 0xea, - 0x05, 0xea, 0x05, 0xea, 0x05, 0xea, 0x05, 0xea, 0x05, 0xea, 0x05, 0xea, 0x05, - 0xea, 0x05, 0xea, 0x05, 0xea, 0x05, 0x69, 0x05, 0x77, 0x05, 0x85, 0x05, 0x93, - 0x05, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, - 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, - 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, - 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, - 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, - 0xa0, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, - 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, - 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, - 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, - 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, - 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, - 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, - 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, - 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, - 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, - 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, - 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, - 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, - 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, - 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x00, - 0x00, 0xfa, 0x8a, 0x5c, 0x50, 0xf6, 0xc3, 0x0e, 0x75, 0x3c, 0xf6, 0xc3, 0x40, - 0x75, 0x16, 0xf6, 0xc3, 0x10, 0x74, 0x26, 0xf6, 0xc3, 0x01, 0x75, 0x13, 0xf6, - 0xc3, 0x20, 0x75, 0x15, 0xc7, 0x04, 0xb6, 0x04, 0xe9, 0xcf, 0x00, 0x8b, 0x44, - 0x02, 0x89, 0x04, 0xff, 0xe0, 0xc7, 0x04, 0x03, 0x05, 0xe9, 0x0e, 0x01, 0xc7, - 0x04, 0x66, 0x08, 0xe9, 0x6a, 0x04, 0xf6, 0xc3, 0x20, 0x74, 0x1a, 0xc7, 0x04, - 0xb3, 0x08, 0xe9, 0xab, 0x04, 0x8b, 0x54, 0x20, 0xec, 0x8a, 0xc8, 0xf6, 0xc3, - 0x02, 0x75, 0x42, 0xf6, 0xc3, 0x08, 0x75, 0x0e, 0xeb, 0x69, 0x90, 0xc7, 0x04, - 0x20, 0x04, 0xfb, 0x81, 0xc6, 0x80, 0x00, 0xff, 0x24, 0xf6, 0xc1, 0x04, 0x74, - 0x27, 0x80, 0x64, 0x50, 0xf7, 0xf6, 0x44, 0x51, 0x02, 0x74, 0x13, 0xf6, 0x44, - 0x29, 0x10, 0x74, 0x0d, 0x8a, 0x44, 0x5d, 0x83, 0xc2, 0x02, 0xee, 0x83, 0xea, - 0x02, 0xe9, 0x49, 0x04, 0x8a, 0x44, 0x5c, 0x83, 0xc2, 0x02, 0xee, 0x83, 0xea, - 0x02, 0xe9, 0x3c, 0x04, 0xf6, 0x44, 0x50, 0x04, 0x75, 0x28, 0x83, 0x7c, 0x24, - 0xff, 0x74, 0x1f, 0xa1, 0x00, 0x0e, 0x2b, 0x44, 0x26, 0x3d, 0x64, 0x00, 0x77, - 0x14, 0xb0, 0x05, 0xee, 0x8a, 0x44, 0x75, 0x24, 0xef, 0x88, 0x44, 0x75, 0xee, - 0x80, 0x64, 0x50, 0xfd, 0x80, 0x64, 0x4b, 0xfd, 0xe9, 0x0e, 0x04, 0xb0, 0x01, - 0xee, 0x90, 0x90, 0x90, 0xec, 0xa8, 0x01, 0x74, 0x25, 0xb0, 0x05, 0xee, 0x8a, - 0x44, 0x75, 0x0c, 0x10, 0x88, 0x44, 0x75, 0xee, 0xa1, 0x00, 0x0e, 0x03, 0x44, - 0x24, 0x89, 0x44, 0x26, 0x80, 0x64, 0x50, 0xfb, 0x80, 0x64, 0x4b, 0xfb, 0x80, - 0x4c, 0x50, 0x02, 0x80, 0x4c, 0x4b, 0x02, 0xe9, 0xdb, 0x03, 0xfa, 0x8b, 0x54, - 0x20, 0xec, 0x8a, 0xc8, 0x22, 0x44, 0x52, 0x3a, 0x44, 0x53, 0x75, 0x19, 0x8b, - 0x7c, 0x0c, 0x3b, 0x7c, 0x0a, 0x74, 0x18, 0x8e, 0x44, 0x08, 0x26, 0x8a, 0x05, - 0x47, 0x23, 0x7c, 0x0e, 0x89, 0x7c, 0x0c, 0x83, 0xc2, 0x02, 0xee, 0xfb, 0x81, - 0xc6, 0x80, 0x00, 0xff, 0x24, 0xb0, 0x01, 0xee, 0x90, 0x90, 0x90, 0xec, 0xa8, - 0x01, 0x74, 0x0c, 0x80, 0x64, 0x50, 0xef, 0x80, 0x64, 0x4b, 0xef, 0xc7, 0x04, - 0xc3, 0x03, 0xfb, 0x81, 0xc6, 0x80, 0x00, 0xff, 0x24, 0xfa, 0x8b, 0x54, 0x20, - 0xec, 0x8a, 0xc8, 0x22, 0x44, 0x52, 0x3a, 0x44, 0x53, 0x75, 0x3a, 0x8b, 0x7c, - 0x0c, 0x3b, 0x7c, 0x0a, 0x74, 0x1b, 0x8e, 0x44, 0x08, 0x26, 0x8a, 0x05, 0x47, - 0x23, 0x7c, 0x0e, 0x89, 0x7c, 0x0c, 0x8a, 0xd8, 0x22, 0x5c, 0x62, 0x32, 0xff, - 0x03, 0xdb, 0x2e, 0xff, 0xa7, 0xc1, 0x01, 0xb0, 0x01, 0xee, 0x90, 0x90, 0x90, - 0xec, 0xa8, 0x01, 0x74, 0x0c, 0x80, 0x64, 0x50, 0xef, 0x80, 0x64, 0x4b, 0xef, - 0xc7, 0x04, 0xc3, 0x03, 0xf6, 0xc1, 0x01, 0x75, 0x07, 0xfb, 0x81, 0xc6, 0x80, - 0x00, 0xff, 0x24, 0xe9, 0x61, 0x03, 0xf6, 0x44, 0x2a, 0x01, 0x75, 0x03, 0xe9, - 0x39, 0x03, 0xb0, 0x27, 0xeb, 0x42, 0x90, 0xf6, 0x44, 0x2a, 0x01, 0x75, 0x03, - 0xe9, 0x2b, 0x03, 0xb0, 0x28, 0xeb, 0x34, 0x90, 0xf6, 0x44, 0x2a, 0x01, 0x75, - 0x03, 0xe9, 0x1d, 0x03, 0xb0, 0x21, 0xeb, 0x26, 0x90, 0xf6, 0x44, 0x2a, 0x01, - 0x75, 0x03, 0xe9, 0x0f, 0x03, 0xb0, 0x29, 0xeb, 0x18, 0x90, 0xf6, 0x44, 0x2a, - 0x01, 0x75, 0x03, 0xe9, 0x01, 0x03, 0xb0, 0x5e, 0xeb, 0x0a, 0x90, 0xf6, 0x44, - 0x2a, 0x01, 0x75, 0x03, 0xe9, 0xf3, 0x02, 0x88, 0x44, 0x61, 0xb0, 0x5c, 0x83, - 0xc2, 0x02, 0xee, 0x83, 0xea, 0x02, 0x80, 0x4c, 0x50, 0x40, 0xc7, 0x04, 0xc6, - 0x05, 0xc7, 0x44, 0x02, 0xc6, 0x05, 0xe9, 0xcb, 0x02, 0xfa, 0x8b, 0x54, 0x20, - 0xec, 0x8a, 0xc8, 0x22, 0x44, 0x52, 0x3a, 0x44, 0x53, 0x75, 0x12, 0x80, 0x64, - 0x50, 0xbf, 0xc7, 0x04, 0x03, 0x05, 0x83, 0x44, 0x30, 0x02, 0x8a, 0x44, 0x61, - 0xe9, 0xb9, 0x02, 0xe9, 0xa7, 0x02, 0xf6, 0x44, 0x2a, 0x02, 0x75, 0x03, 0xe9, - 0xaa, 0x02, 0x2c, 0x20, 0xe9, 0xa5, 0x02, 0x83, 0xc2, 0x02, 0xee, 0x83, 0xea, - 0x02, 0xf6, 0x44, 0x2b, 0x40, 0x75, 0x03, 0xe9, 0x89, 0x02, 0xb8, 0x7f, 0x00, - 0xe9, 0x9b, 0x01, 0x83, 0xc2, 0x02, 0xee, 0x83, 0xea, 0x02, 0xf6, 0x44, 0x2b, - 0x80, 0x75, 0xed, 0xe9, 0x73, 0x02, 0x83, 0xc2, 0x02, 0xee, 0x83, 0xea, 0x02, - 0xf7, 0x44, 0x30, 0xff, 0xff, 0x74, 0x03, 0xff, 0x4c, 0x30, 0xf6, 0x44, 0x2b, - 0x20, 0x75, 0x03, 0xe9, 0x59, 0x02, 0xb8, 0x02, 0x00, 0xe9, 0x6b, 0x01, 0xb3, - 0x18, 0x22, 0x5c, 0x2b, 0x75, 0x16, 0x83, 0xc2, 0x02, 0xee, 0x83, 0xea, 0x02, - 0x8b, 0x44, 0x30, 0x05, 0x08, 0x00, 0x25, 0xf8, 0xff, 0x89, 0x44, 0x30, 0xe9, - 0x36, 0x02, 0x80, 0xfb, 0x18, 0x75, 0x57, 0xb0, 0x20, 0x83, 0xc2, 0x02, 0xee, - 0x83, 0xea, 0x02, 0x8b, 0x44, 0x30, 0x8b, 0xd8, 0x05, 0x08, 0x00, 0x25, 0xf8, - 0xff, 0x89, 0x44, 0x30, 0x2b, 0xc3, 0x48, 0x74, 0x38, 0x89, 0x44, 0x32, 0x80, - 0x4c, 0x50, 0x40, 0xc7, 0x44, 0x02, 0x8f, 0x06, 0xc7, 0x04, 0x8f, 0x06, 0xe9, - 0x02, 0x02, 0xfa, 0x8b, 0x54, 0x20, 0xec, 0x8a, 0xc8, 0x22, 0x44, 0x52, 0x3a, - 0x44, 0x53, 0x75, 0x16, 0xb0, 0x20, 0x83, 0xc2, 0x02, 0xee, 0x83, 0xea, 0x02, - 0xff, 0x4c, 0x32, 0x75, 0x08, 0x80, 0x64, 0x50, 0xbf, 0xc7, 0x04, 0x03, 0x05, - 0xe9, 0xda, 0x01, 0x83, 0xc2, 0x02, 0xee, 0x83, 0xea, 0x02, 0x80, 0xfb, 0x08, - 0x75, 0x18, 0x8b, 0x44, 0x30, 0x8b, 0xd8, 0x05, 0x08, 0x00, 0x25, 0xf8, 0xff, - 0x89, 0x44, 0x30, 0x2b, 0xc3, 0x3d, 0x05, 0x00, 0x7c, 0xdc, 0xe9, 0xce, 0x00, - 0x8b, 0x44, 0x30, 0x8b, 0xd8, 0x05, 0x08, 0x00, 0x25, 0xf8, 0xff, 0x89, 0x44, - 0x30, 0xb8, 0x02, 0x00, 0xe9, 0xba, 0x00, 0xf6, 0x44, 0x2a, 0x20, 0x75, 0x43, - 0xf6, 0x44, 0x2a, 0x04, 0x74, 0x42, 0xf6, 0x44, 0x2a, 0x10, 0x74, 0x07, 0xf7, - 0x44, 0x30, 0xff, 0xff, 0x74, 0x30, 0xb0, 0x0d, 0x83, 0xc2, 0x02, 0xee, 0x83, - 0xea, 0x02, 0x80, 0x4c, 0x50, 0x40, 0xc7, 0x04, 0x21, 0x07, 0xc7, 0x44, 0x02, - 0x21, 0x07, 0xe9, 0x70, 0x01, 0xfa, 0x8b, 0x54, 0x20, 0xec, 0x8a, 0xc8, 0x22, - 0x44, 0x52, 0x3a, 0x44, 0x53, 0x75, 0x1c, 0x80, 0x64, 0x50, 0xbf, 0xc7, 0x04, - 0x03, 0x05, 0xb0, 0x0a, 0xeb, 0x2b, 0x90, 0xb0, 0x0a, 0x83, 0xc2, 0x02, 0xee, - 0x83, 0xea, 0x02, 0xf6, 0x44, 0x2b, 0x01, 0x75, 0x03, 0xe9, 0x42, 0x01, 0xb8, - 0x05, 0x00, 0xeb, 0x55, 0x90, 0xf6, 0x44, 0x2a, 0x08, 0x75, 0xe2, 0xf6, 0x44, - 0x2a, 0x10, 0x74, 0x06, 0x83, 0x7c, 0x30, 0x00, 0x74, 0x13, 0x83, 0xc2, 0x02, - 0xee, 0x83, 0xea, 0x02, 0xb3, 0x06, 0x22, 0x5c, 0x2b, 0x75, 0x08, 0xc7, 0x44, - 0x30, 0x00, 0x00, 0xe9, 0x14, 0x01, 0x80, 0xfb, 0x02, 0x75, 0x14, 0x8b, 0x44, - 0x30, 0xc1, 0xe8, 0x04, 0x05, 0x03, 0x00, 0x3d, 0x06, 0x00, 0x72, 0x14, 0xb8, - 0x06, 0x00, 0xeb, 0x0f, 0x90, 0x80, 0xfb, 0x04, 0x75, 0x06, 0xb8, 0x05, 0x00, - 0xeb, 0x04, 0x90, 0xb8, 0x09, 0x00, 0xc7, 0x44, 0x30, 0x00, 0x00, 0xf6, 0x44, - 0x2a, 0x40, 0x74, 0x45, 0x3d, 0x20, 0x00, 0x77, 0x40, 0xbb, 0x01, 0x00, 0x3d, - 0x03, 0x00, 0x7e, 0x03, 0xbb, 0x02, 0x00, 0x89, 0x5c, 0x32, 0x80, 0x4c, 0x50, - 0x40, 0xc7, 0x44, 0x02, 0xd2, 0x07, 0xc7, 0x04, 0xd2, 0x07, 0xe9, 0xbf, 0x00, - 0xfa, 0x8b, 0x54, 0x20, 0xec, 0x8a, 0xc8, 0x22, 0x44, 0x52, 0x3a, 0x44, 0x53, - 0x75, 0x10, 0x8a, 0x44, 0x60, 0x83, 0xc2, 0x02, 0xee, 0x83, 0xea, 0x02, 0x83, - 0x6c, 0x32, 0x01, 0x7e, 0x50, 0xe9, 0x9d, 0x00, 0x05, 0x06, 0x00, 0x03, 0xc0, - 0x89, 0x44, 0x32, 0x80, 0x4c, 0x50, 0x40, 0xc7, 0x44, 0x02, 0x0c, 0x08, 0xc7, - 0x04, 0x0c, 0x08, 0xe9, 0x85, 0x00, 0xfa, 0x8b, 0x54, 0x20, 0xec, 0x8a, 0xc8, - 0xb0, 0x01, 0xee, 0x90, 0x90, 0x90, 0xec, 0xa8, 0x01, 0x74, 0x0f, 0xa1, 0x00, - 0x0e, 0x01, 0x44, 0x32, 0xc7, 0x44, 0x02, 0x30, 0x08, 0xc7, 0x04, 0x30, 0x08, - 0xeb, 0x62, 0x90, 0x8b, 0x54, 0x20, 0xec, 0x8a, 0xc8, 0xa1, 0x00, 0x0e, 0x2b, - 0x44, 0x32, 0x3d, 0xe8, 0x03, 0x77, 0xec, 0x80, 0x64, 0x50, 0xbf, 0xc7, 0x04, - 0x03, 0x05, 0xeb, 0x46, 0x90, 0xb0, 0x01, 0xee, 0x90, 0x90, 0x90, 0xec, 0xa8, - 0x01, 0x74, 0x3a, 0x80, 0x64, 0x50, 0xef, 0x80, 0x64, 0x4b, 0xef, 0xc7, 0x04, - 0xb3, 0x08, 0xeb, 0x2c, 0x90, 0xfa, 0x8b, 0x54, 0x20, 0xec, 0x8a, 0xc8, 0x22, - 0x44, 0x52, 0x3a, 0x44, 0x53, 0x75, 0x1c, 0x8b, 0x7c, 0x0c, 0x3b, 0x7c, 0x0a, - 0x74, 0xcf, 0x8e, 0x44, 0x08, 0x26, 0x8a, 0x05, 0x47, 0x23, 0x7c, 0x0e, 0x89, - 0x7c, 0x0c, 0x83, 0xc2, 0x02, 0xee, 0x83, 0xea, 0x02, 0xf6, 0xc1, 0x01, 0x75, - 0x26, 0xfb, 0x81, 0xc6, 0x80, 0x00, 0xff, 0x24, 0xff, 0x44, 0x30, 0x83, 0xc2, - 0x02, 0xee, 0x83, 0xea, 0x02, 0xf6, 0xc1, 0x01, 0x75, 0x10, 0xfb, 0x81, 0xc6, - 0x80, 0x00, 0xff, 0x24, 0xfa, 0x8b, 0x54, 0x20, 0xec, 0xa8, 0x01, 0x74, 0xda, - 0xc6, 0x44, 0x49, 0x02, 0x8b, 0x7c, 0x12, 0x8e, 0x44, 0x10, 0xb0, 0x01, 0xee, - 0x90, 0x90, 0x90, 0xec, 0x8a, 0xe0, 0x90, 0xb0, 0x30, 0xee, 0x83, 0xc2, 0x02, - 0x90, 0xec, 0x83, 0xea, 0x02, 0x23, 0x44, 0x34, 0xff, 0x64, 0x06, 0xb3, 0x1c, - 0x22, 0x5c, 0x51, 0x75, 0x1a, 0xf6, 0x44, 0x29, 0x04, 0x74, 0x21, 0xf6, 0x44, - 0x29, 0x20, 0x75, 0x2b, 0x80, 0x7c, 0x5e, 0x00, 0x75, 0x1d, 0xc7, 0x44, 0x06, - 0x58, 0x0a, 0xe9, 0x56, 0x01, 0xf6, 0xc3, 0x10, 0x75, 0x2e, 0xf6, 0xc3, 0x04, - 0x75, 0x74, 0xeb, 0x6b, 0x90, 0xc7, 0x44, 0x06, 0x62, 0x0a, 0xe9, 0x4b, 0x01, - 0xc7, 0x44, 0x06, 0x53, 0x0a, 0xe9, 0x34, 0x01, 0x80, 0x7c, 0x5e, 0x00, 0x75, - 0x08, 0xc7, 0x44, 0x06, 0xca, 0x09, 0xe9, 0x9d, 0x00, 0xc7, 0x44, 0x06, 0xc5, - 0x09, 0xe9, 0x90, 0x00, 0x0a, 0xc0, 0x74, 0x2a, 0xfe, 0x4c, 0x63, 0x74, 0x1a, - 0x80, 0xe3, 0xef, 0x75, 0xc4, 0xf6, 0x44, 0x29, 0x04, 0x74, 0x21, 0xf6, 0x44, - 0x29, 0x20, 0x75, 0x21, 0x80, 0x7c, 0x5e, 0x00, 0x75, 0x18, 0xe9, 0x00, 0x01, - 0x80, 0x64, 0x51, 0xef, 0x80, 0xe3, 0xef, 0x75, 0xa6, 0xeb, 0x85, 0x80, 0x64, - 0x51, 0xef, 0xe9, 0x06, 0x01, 0xe9, 0xf5, 0x00, 0xe9, 0xe3, 0x00, 0x80, 0x7c, - 0x5e, 0x00, 0x75, 0x4f, 0xeb, 0x52, 0x90, 0x80, 0x64, 0x51, 0xf7, 0xe9, 0xe2, - 0x00, 0x80, 0x64, 0x53, 0x3f, 0x80, 0x64, 0x54, 0xfe, 0x80, 0x4c, 0x58, 0x01, - 0x80, 0x64, 0x51, 0xfb, 0xf6, 0x44, 0x29, 0x40, 0x75, 0x2c, 0x3a, 0x44, 0x5d, - 0x74, 0x27, 0x3a, 0x44, 0x5c, 0x74, 0x22, 0xf6, 0x44, 0x29, 0x20, 0x74, 0x0a, - 0x3a, 0x44, 0x5a, 0x74, 0x17, 0x3a, 0x44, 0x5b, 0x74, 0x12, 0xf6, 0x44, 0x5e, - 0xff, 0x74, 0x09, 0x3a, 0x44, 0x5e, 0x75, 0x04, 0x80, 0x4c, 0x51, 0x08, 0xe9, - 0xa0, 0x00, 0xe9, 0xab, 0x00, 0x3a, 0x44, 0x5e, 0x74, 0x7d, 0x3a, 0x44, 0x5c, - 0x74, 0x3d, 0x3a, 0x44, 0x5d, 0x74, 0x55, 0x3a, 0x44, 0x5a, 0x74, 0x08, 0x3a, - 0x44, 0x5b, 0x74, 0x18, 0xe9, 0x81, 0x00, 0xf6, 0x44, 0x53, 0x40, 0x74, 0x07, - 0x80, 0x64, 0x53, 0xbf, 0xe9, 0x82, 0x00, 0x3a, 0x44, 0x5b, 0x74, 0x03, 0xeb, - 0x7b, 0x90, 0x80, 0x4c, 0x53, 0x40, 0xf6, 0x44, 0x29, 0x08, 0x74, 0x70, 0x80, - 0x4c, 0x51, 0x04, 0xc7, 0x44, 0x06, 0xe1, 0x08, 0xeb, 0x65, 0x90, 0xf6, 0x44, - 0x53, 0x80, 0x74, 0x0f, 0x80, 0x64, 0x53, 0x7f, 0x80, 0x64, 0x54, 0xfe, 0x80, - 0x4c, 0x58, 0x01, 0xeb, 0x50, 0x90, 0x3a, 0x44, 0x5d, 0x74, 0x03, 0xeb, 0x48, - 0x90, 0x80, 0x4c, 0x53, 0x80, 0x80, 0x4c, 0x54, 0x01, 0x80, 0x4c, 0x58, 0x01, - 0xf6, 0x44, 0x29, 0x08, 0x74, 0x35, 0x80, 0x4c, 0x51, 0x04, 0xc7, 0x44, 0x06, - 0xe1, 0x08, 0xeb, 0x2a, 0x90, 0x80, 0x4c, 0x51, 0x08, 0xc7, 0x44, 0x06, 0xe1, - 0x08, 0xeb, 0x10, 0x90, 0x3a, 0x44, 0x5e, 0x74, 0xef, 0x3a, 0x44, 0x5c, 0x74, - 0xaf, 0x3a, 0x44, 0x5d, 0x74, 0xc7, 0x3d, 0xff, 0x00, 0x73, 0x26, 0xaa, 0x23, - 0x7c, 0x16, 0x3b, 0x7c, 0x14, 0x74, 0x4f, 0xec, 0xa8, 0x01, 0x74, 0x03, 0xe9, - 0x4e, 0xfe, 0x89, 0x7c, 0x12, 0x2b, 0x7c, 0x14, 0x23, 0x7c, 0x16, 0x3b, 0x7c, - 0x1c, 0x73, 0x46, 0xfb, 0x81, 0xc6, 0x80, 0x00, 0xff, 0x24, 0x0a, 0xe4, 0x75, - 0x1e, 0xb3, 0x0c, 0x22, 0x5c, 0x28, 0x80, 0xfb, 0x08, 0x75, 0xcc, 0xaa, 0x23, - 0x7c, 0x16, 0x3b, 0x7c, 0x14, 0x74, 0x1b, 0xaa, 0x23, 0x7c, 0x16, 0x3b, 0x7c, - 0x14, 0x74, 0x12, 0xeb, 0xc1, 0xf6, 0x44, 0x28, 0x04, 0x75, 0xbb, 0xf6, 0x44, - 0x28, 0x08, 0x75, 0x50, 0x32, 0xc0, 0xeb, 0xa8, 0x4f, 0x23, 0x7c, 0x16, 0x89, - 0x7c, 0x12, 0xc6, 0x44, 0x59, 0x01, 0xeb, 0xa4, 0xf6, 0x44, 0x51, 0x02, 0x74, - 0x07, 0xfb, 0x81, 0xc6, 0x80, 0x00, 0xff, 0x24, 0x80, 0x4c, 0x51, 0x02, 0xb0, - 0x05, 0xee, 0xb0, 0x82, 0x22, 0x44, 0x5f, 0xf6, 0xd0, 0x22, 0x44, 0x75, 0x88, - 0x44, 0x75, 0xee, 0xf6, 0x44, 0x29, 0x10, 0x74, 0x10, 0x80, 0x4c, 0x54, 0x04, - 0x80, 0x4c, 0x58, 0x04, 0x80, 0x74, 0x50, 0x08, 0xc7, 0x04, 0xc3, 0x03, 0xfb, - 0x81, 0xc6, 0x80, 0x00, 0xff, 0x24, 0x26, 0xc6, 0x05, 0xff, 0x47, 0x23, 0x7c, - 0x16, 0x3b, 0x7c, 0x14, 0x74, 0xa7, 0x32, 0xff, 0xf6, 0x44, 0x29, 0x80, 0x74, - 0x0a, 0x8a, 0xdc, 0xc0, 0xeb, 0x04, 0x2e, 0x8a, 0xbf, 0xb1, 0x01, 0x26, 0x88, - 0x3d, 0x47, 0x23, 0x7c, 0x16, 0x3b, 0x7c, 0x14, 0x74, 0x89, 0xaa, 0x23, 0x7c, - 0x16, 0x3b, 0x7c, 0x14, 0x74, 0x80, 0xe9, 0x2e, 0xff, 0x1e, 0x2e, 0x8e, 0x1e, - 0xc1, 0x03, 0xff, 0x06, 0x1c, 0x0e, 0x60, 0xbe, 0x00, 0x14, 0xeb, 0x0f, 0x90, - 0x1e, 0x2e, 0x8e, 0x1e, 0xc1, 0x03, 0xff, 0x06, 0x1a, 0x0e, 0x60, 0xbe, 0x00, - 0x10, 0xb9, 0x08, 0x00, 0x8b, 0x54, 0x20, 0xb0, 0x03, 0xee, 0x90, 0x90, 0x32, - 0xff, 0xec, 0x8a, 0xd8, 0x02, 0xd8, 0x2e, 0xff, 0xa7, 0xa9, 0x00, 0x81, 0xc6, - 0x00, 0x01, 0x8b, 0x54, 0x20, 0x0b, 0xd2, 0xe0, 0xe4, 0xb8, 0x00, 0x80, 0xba, - 0x22, 0xff, 0xef, 0x61, 0x1f, 0xcf, 0x81, 0xce, 0x80, 0x00, 0x8b, 0x54, 0x20, - 0xff, 0x06, 0x20, 0x0e, 0xb0, 0x01, 0xee, 0x8a, 0x44, 0x71, 0x24, 0xe7, 0x88, - 0x44, 0x71, 0xee, 0xc6, 0x44, 0x49, 0x02, 0x80, 0x4c, 0x50, 0x20, 0xc7, 0x04, - 0xc3, 0x03, 0x81, 0xe6, 0x7f, 0xff, 0x8b, 0x54, 0x20, 0xeb, 0xae, 0x81, 0xce, - 0x80, 0x00, 0x8b, 0x54, 0x20, 0xff, 0x06, 0x22, 0x0e, 0xec, 0x0a, 0xc0, 0x79, - 0x7a, 0x80, 0x4c, 0x51, 0x10, 0xc7, 0x44, 0x06, 0xe1, 0x08, 0xc6, 0x44, 0x63, - 0x04, 0xf6, 0x44, 0x51, 0x04, 0x74, 0x08, 0x80, 0x64, 0x51, 0xfb, 0x80, 0x64, - 0x53, 0x3f, 0xf6, 0x44, 0x28, 0x01, 0x75, 0x59, 0xf6, 0x44, 0x28, 0x02, 0x75, - 0x4f, 0x8b, 0x7c, 0x12, 0x8c, 0xc3, 0x8e, 0x44, 0x10, 0xf6, 0x44, 0x28, 0x08, - 0x74, 0x1e, 0xb0, 0xff, 0xaa, 0x23, 0x7c, 0x16, 0x3b, 0x7c, 0x14, 0x74, 0x26, - 0x32, 0xc0, 0xf6, 0x44, 0x29, 0x80, 0x74, 0x02, 0xb0, 0x10, 0xaa, 0x23, 0x7c, - 0x16, 0x3b, 0x7c, 0x14, 0x74, 0x13, 0x32, 0xc0, 0xaa, 0x23, 0x7c, 0x16, 0x3b, - 0x7c, 0x14, 0x74, 0x08, 0x8e, 0xc3, 0x89, 0x7c, 0x12, 0xeb, 0x15, 0x90, 0x8e, - 0xc3, 0x4f, 0x23, 0x7c, 0x16, 0x89, 0x7c, 0x12, 0xc6, 0x44, 0x59, 0x01, 0xeb, - 0x05, 0x90, 0x80, 0x4c, 0x4f, 0x01, 0xb0, 0x10, 0xee, 0x81, 0xe6, 0x7f, 0xff, - 0x8b, 0x54, 0x20, 0xe9, 0x17, 0xff, 0xff, 0x06, 0x1e, 0x0e, 0xe9, 0x10, 0xff, - 0x1e, 0x2e, 0x8e, 0x1e, 0xc1, 0x03, 0x50, 0x52, 0x55, 0x8b, 0xec, 0x8b, 0x46, - 0x08, 0xa3, 0x12, 0x0e, 0x32, 0xe4, 0xa0, 0x22, 0x0c, 0xa3, 0x10, 0x0e, 0xff, - 0x06, 0x00, 0x0e, 0x83, 0x06, 0x0e, 0x0e, 0x0a, 0x83, 0x3e, 0x04, 0x0e, 0x00, - 0x74, 0x31, 0x8b, 0x16, 0x00, 0x0e, 0x2b, 0x16, 0x02, 0x0e, 0x3b, 0x16, 0x04, - 0x0e, 0x72, 0x23, 0x8b, 0x16, 0x00, 0x0e, 0x89, 0x16, 0x02, 0x0e, 0x8b, 0x16, - 0x18, 0x0d, 0x3b, 0x16, 0x1a, 0x0d, 0x74, 0x11, 0x80, 0x3e, 0x10, 0x0c, 0x01, - 0x74, 0x16, 0xb0, 0x00, 0x90, 0xe6, 0x00, 0x0c, 0x08, 0x90, 0xe6, 0x00, 0xb8, - 0x00, 0x80, 0xba, 0x22, 0xff, 0xef, 0x5d, 0x5a, 0x58, 0x1f, 0xcf, 0xb0, 0x80, - 0xe6, 0x00, 0xa0, 0x11, 0x0c, 0x0c, 0x10, 0xa2, 0x11, 0x0c, 0xeb, 0xe6, 0x1e, - 0x2e, 0x8e, 0x1e, 0xc1, 0x03, 0xff, 0x06, 0x28, 0x0e, 0x55, 0x8b, 0xec, 0x8b, - 0x6e, 0x02, 0x89, 0x2e, 0x16, 0x0e, 0x5d, 0x1f, 0xcf, 0x1e, 0x2e, 0x8e, 0x1e, - 0xc1, 0x03, 0xff, 0x06, 0x24, 0x0e, 0x55, 0x8b, 0xec, 0x8b, 0x6e, 0x02, 0x89, - 0x2e, 0x14, 0x0e, 0x5d, 0x80, 0x3e, 0x10, 0x0c, 0x01, 0x75, 0x12, 0x50, 0xa0, - 0x11, 0x0c, 0x0c, 0x01, 0xa2, 0x11, 0x0c, 0xe4, 0x00, 0x90, 0x90, 0x24, 0x7f, - 0xe6, 0x00, 0x58, 0x1f, 0xcf, 0x1e, 0x06, 0x60, 0xb8, 0x00, 0x80, 0xba, 0x22, - 0xff, 0xef, 0x2e, 0x8e, 0x1e, 0xc1, 0x03, 0x2e, 0x8e, 0x06, 0xc1, 0x03, 0x2e, - 0xff, 0x06, 0x30, 0x0d, 0xfc, 0xff, 0x26, 0x2e, 0x0e, 0x00, 0x00, 0xfb, 0x40, - 0x43, 0x41, 0x42, 0x46, 0x47, 0x45, 0xeb, 0xf6, 0xc3, 0x00, 0x00, 0x8f, 0x06, - 0x2e, 0x0e, 0x2e, 0xff, 0x06, 0x3d, 0x0d, 0xb8, 0x00, 0x00, 0xba, 0x58, 0xff, - 0xef, 0xb8, 0x00, 0xe0, 0xba, 0x5e, 0xff, 0xef, 0x61, 0x07, 0x1f, 0xcf, 0xc2, - 0xfe, 0xff, 0x8b, 0x7c, 0x0a, 0x2b, 0x7c, 0x0c, 0x23, 0x7c, 0x0e, 0x3b, 0x7c, - 0x18, 0x77, 0x2e, 0xc6, 0x44, 0x4d, 0x00, 0x80, 0x4c, 0x4f, 0x02, 0xeb, 0x5a, - 0x90, 0x8b, 0x7c, 0x0a, 0x3b, 0x7c, 0x0c, 0x75, 0x1b, 0x8b, 0x3e, 0x10, 0x0d, - 0x3b, 0x3e, 0x12, 0x0d, 0x75, 0x53, 0xf6, 0x44, 0x4b, 0xff, 0x75, 0x4d, 0xc6, - 0x44, 0x4c, 0x00, 0x80, 0x4c, 0x4f, 0x04, 0xeb, 0x43, 0x90, 0xf6, 0x44, 0x50, - 0x10, 0x75, 0x3c, 0xeb, 0x09, 0x90, 0x8b, 0x7c, 0x0a, 0x2b, 0x7c, 0x0c, 0x74, - 0x31, 0x80, 0x4c, 0x50, 0x10, 0x80, 0x4c, 0x4b, 0x10, 0xc7, 0x04, 0xc3, 0x03, - 0xeb, 0x23, 0x90, 0xfa, 0x8b, 0x36, 0x08, 0x0e, 0x8b, 0x54, 0x20, 0xec, 0x8a, - 0xf8, 0x8a, 0x5c, 0x54, 0x32, 0xfb, 0xf6, 0x44, 0x4d, 0xff, 0x75, 0x8e, 0xf6, - 0x44, 0x4c, 0xff, 0x75, 0xa1, 0xf6, 0x44, 0x50, 0x10, 0x74, 0xc7, 0xec, 0x32, - 0xc3, 0x22, 0xf8, 0x83, 0x2e, 0x10, 0x0e, 0x01, 0x78, 0x05, 0xd0, 0x6c, 0x49, - 0x72, 0x45, 0x8b, 0x7c, 0x12, 0x2b, 0x7c, 0x14, 0x74, 0x22, 0x80, 0x7c, 0x4e, - 0x00, 0x74, 0x1c, 0x23, 0x7c, 0x16, 0x03, 0xff, 0x3b, 0x7c, 0x16, 0x73, 0x43, - 0x8b, 0x0e, 0x0e, 0x0e, 0x2b, 0x4c, 0x6e, 0x3b, 0x4c, 0x22, 0x73, 0x37, 0x80, - 0x7c, 0x49, 0x00, 0x74, 0x31, 0xf6, 0x44, 0x51, 0x02, 0x75, 0x3c, 0xec, 0x32, - 0xc3, 0x22, 0xf8, 0x80, 0xe7, 0x38, 0xfb, 0x89, 0x1e, 0x30, 0x0e, 0xbe, 0x00, - 0x10, 0xff, 0x14, 0xeb, 0x61, 0x90, 0xb0, 0x01, 0xee, 0x8a, 0x44, 0x71, 0x0c, - 0x10, 0x88, 0x44, 0x71, 0xee, 0x80, 0x64, 0x50, 0xdf, 0xc7, 0x04, 0xc3, 0x03, - 0xeb, 0xa5, 0xc6, 0x44, 0x4e, 0x00, 0x8b, 0x0e, 0x0e, 0x0e, 0x89, 0x4c, 0x6e, - 0x80, 0x4c, 0x4f, 0x08, 0xeb, 0xbe, 0x8b, 0x7c, 0x12, 0x2b, 0x7c, 0x14, 0x23, - 0x7c, 0x16, 0x3b, 0x7c, 0x1a, 0x73, 0xb6, 0x80, 0x64, 0x51, 0xfd, 0xf6, 0x44, - 0x29, 0x10, 0x74, 0x10, 0x80, 0x64, 0x54, 0xfb, 0x80, 0x4c, 0x58, 0x04, 0x80, - 0x74, 0x50, 0x08, 0xc7, 0x04, 0xc3, 0x03, 0xb0, 0x05, 0xee, 0xb0, 0x82, 0x22, - 0x44, 0x5f, 0x0a, 0x44, 0x75, 0x88, 0x44, 0x75, 0xee, 0xeb, 0x8b, 0xfa, 0x8b, - 0x36, 0x08, 0x0e, 0x8b, 0x1e, 0x30, 0x0e, 0x8a, 0xcb, 0xe5, 0x80, 0x23, 0x44, - 0x2e, 0x74, 0x02, 0xf6, 0xd1, 0x80, 0xe1, 0x40, 0x0a, 0xf9, 0x8a, 0xdf, 0x22, - 0x5c, 0x55, 0x30, 0x5c, 0x54, 0x32, 0xfb, 0x88, 0x7c, 0x55, 0x0a, 0x5c, 0x58, - 0x88, 0x5c, 0x58, 0x22, 0x5c, 0x56, 0x75, 0x24, 0x80, 0x7c, 0x4f, 0x00, 0x75, - 0x22, 0xfb, 0x03, 0x74, 0x1e, 0x89, 0x36, 0x08, 0x0e, 0xff, 0x06, 0x26, 0x0e, - 0x8b, 0x3e, 0x12, 0x0d, 0x3b, 0x3e, 0x10, 0x0d, 0x75, 0x46, 0xbe, 0x00, 0x10, - 0xff, 0x14, 0xe9, 0xd3, 0xfe, 0x80, 0x4c, 0x4f, 0x20, 0x8b, 0x3e, 0x18, 0x0d, - 0x8a, 0x44, 0x48, 0x8a, 0x64, 0x4f, 0x89, 0x85, 0x00, 0x08, 0x8a, 0x44, 0x54, - 0x8a, 0x64, 0x57, 0x89, 0x85, 0x02, 0x08, 0x83, 0xc7, 0x04, 0x81, 0xe7, 0xfc, - 0x03, 0x3b, 0x3e, 0x1a, 0x0d, 0x74, 0x13, 0x88, 0x44, 0x57, 0xc6, 0x44, 0x4f, - 0x00, 0x8a, 0x44, 0x56, 0xf6, 0xd0, 0x20, 0x44, 0x58, 0x89, 0x3e, 0x18, 0x0d, - 0xeb, 0xa4, 0xff, 0x06, 0x2c, 0x0e, 0xbe, 0x00, 0x10, 0xff, 0x14, 0xfa, 0x8b, - 0x3e, 0x12, 0x0d, 0x81, 0xc7, 0x00, 0x04, 0x8a, 0x5d, 0x01, 0x83, 0xe3, 0x0f, - 0x03, 0xdb, 0x2e, 0x8b, 0xb7, 0x89, 0x00, 0x8b, 0x54, 0x20, 0x0b, 0xd2, 0x74, - 0x0d, 0x8a, 0x1d, 0x83, 0xe3, 0x1f, 0x03, 0xdb, 0xfa, 0x2e, 0xff, 0xa7, 0x9c, - 0x0f, 0xff, 0x06, 0x2a, 0x0e, 0x8b, 0x3e, 0x12, 0x0d, 0x8b, 0x36, 0x18, 0x0d, - 0x8b, 0x9d, 0x00, 0x04, 0x89, 0x9c, 0x00, 0x08, 0x8b, 0x9d, 0x02, 0x04, 0x89, - 0x9c, 0x02, 0x08, 0x83, 0xc6, 0x04, 0x81, 0xe6, 0xfc, 0x03, 0x3b, 0x36, 0x1a, - 0x0d, 0x74, 0x04, 0x89, 0x36, 0x18, 0x0d, 0xfb, 0x8b, 0x3e, 0x12, 0x0d, 0x83, - 0xc7, 0x04, 0x81, 0xe7, 0xfc, 0x03, 0x89, 0x3e, 0x12, 0x0d, 0xbe, 0x00, 0x10, - 0xff, 0x14, 0xe9, 0x1d, 0xfe, 0xdc, 0x0f, 0xe4, 0x0f, 0xec, 0x0f, 0x0d, 0x10, - 0x1c, 0x10, 0x57, 0x0f, 0x2f, 0x10, 0x57, 0x0f, 0x3b, 0x10, 0x54, 0x10, 0x83, - 0x10, 0xcf, 0x10, 0xdb, 0x10, 0xe4, 0x10, 0xeb, 0x10, 0x35, 0x11, 0x7d, 0x11, - 0x83, 0x11, 0xa1, 0x11, 0xb9, 0x11, 0xf2, 0x11, 0x38, 0x12, 0x03, 0x13, 0x0c, - 0x13, 0x57, 0x0f, 0x57, 0x0f, 0x57, 0x0f, 0x57, 0x0f, 0x57, 0x0f, 0x57, 0x0f, - 0x57, 0x0f, 0x57, 0x0f, 0x8b, 0x45, 0x02, 0x89, 0x44, 0x1a, 0xeb, 0xa0, 0x8b, - 0x45, 0x02, 0x89, 0x44, 0x1c, 0xeb, 0x98, 0x8b, 0x45, 0x02, 0x8b, 0x5c, 0x0a, - 0x2b, 0x5c, 0x0c, 0x23, 0x5c, 0x0e, 0x8b, 0x4c, 0x0a, 0x2b, 0xc8, 0x23, 0x4c, - 0x0e, 0x3b, 0xd9, 0x76, 0x06, 0x23, 0x44, 0x0e, 0x89, 0x44, 0x0c, 0xe9, 0x77, - 0xff, 0x80, 0x4c, 0x53, 0x80, 0x80, 0x4c, 0x54, 0x01, 0x80, 0x4c, 0x58, 0x01, - 0xe9, 0x68, 0xff, 0x80, 0x64, 0x53, 0x3f, 0x80, 0x64, 0x54, 0xfe, 0x80, 0x4c, - 0x58, 0x01, 0x80, 0x64, 0x51, 0xfb, 0xe9, 0x55, 0xff, 0x8b, 0x45, 0x02, 0x88, - 0x44, 0x5a, 0x88, 0x64, 0x5b, 0xe9, 0x49, 0xff, 0x8b, 0x45, 0x02, 0x0b, 0xc0, - 0x74, 0x03, 0x89, 0x44, 0x24, 0x80, 0x4c, 0x50, 0x04, 0x80, 0x4c, 0x4b, 0x04, - 0xc7, 0x04, 0xc3, 0x03, 0xe9, 0x30, 0xff, 0x8b, 0x5d, 0x02, 0xf6, 0xd7, 0x22, - 0x7c, 0x54, 0x0a, 0xdf, 0x8a, 0x44, 0x54, 0x32, 0xc3, 0x24, 0x82, 0x30, 0x44, - 0x54, 0xb0, 0x05, 0xee, 0x8a, 0x44, 0x75, 0x32, 0xd8, 0x8a, 0x7c, 0x5f, 0xf6, - 0xd7, 0x22, 0xdf, 0x80, 0xe3, 0x82, 0x32, 0xc3, 0x88, 0x44, 0x75, 0xee, 0xe9, - 0x01, 0xff, 0x8b, 0x5d, 0x02, 0xf6, 0xc7, 0x04, 0x75, 0x08, 0x80, 0x64, 0x53, - 0x3f, 0x80, 0x64, 0x51, 0xfb, 0x8a, 0x44, 0x29, 0x32, 0xc7, 0xa8, 0x10, 0x74, - 0x0e, 0xf6, 0x44, 0x51, 0x02, 0x74, 0x08, 0x80, 0x74, 0x50, 0x08, 0xc7, 0x04, - 0xc3, 0x03, 0x88, 0x5c, 0x28, 0x88, 0x7c, 0x29, 0xb4, 0x60, 0xf6, 0xc3, 0x10, - 0x74, 0x03, 0x80, 0xcc, 0x10, 0x8a, 0x44, 0x62, 0xf6, 0xc3, 0x20, 0x74, 0x02, - 0x24, 0x7f, 0x89, 0x44, 0x34, 0xc7, 0x44, 0x06, 0xe1, 0x08, 0xe9, 0xb5, 0xfe, - 0x8b, 0x45, 0x02, 0x88, 0x44, 0x5c, 0x88, 0x64, 0x5d, 0xe9, 0xa9, 0xfe, 0x8b, - 0x45, 0x02, 0x89, 0x44, 0x18, 0xe9, 0xa0, 0xfe, 0xff, 0x1e, 0x24, 0x0d, 0xe9, - 0x99, 0xfe, 0xf6, 0x44, 0x51, 0x02, 0x75, 0x41, 0x8b, 0x44, 0x12, 0x2b, 0x44, - 0x14, 0x23, 0x44, 0x16, 0x3b, 0x44, 0x1a, 0x72, 0x33, 0x80, 0x4c, 0x51, 0x02, - 0xf6, 0x44, 0x29, 0x10, 0x74, 0x10, 0x80, 0x4c, 0x54, 0x04, 0x80, 0x4c, 0x58, - 0x04, 0x80, 0x74, 0x50, 0x08, 0xc7, 0x04, 0xc3, 0x03, 0xf6, 0x44, 0x5f, 0x82, - 0x74, 0x13, 0xb0, 0x05, 0xee, 0x8a, 0x44, 0x75, 0xb4, 0x82, 0x22, 0x64, 0x5f, - 0xf6, 0xd4, 0x22, 0xc4, 0x88, 0x44, 0x75, 0xee, 0xe9, 0x4f, 0xfe, 0xf6, 0x44, - 0x51, 0x02, 0x74, 0x3f, 0x8b, 0x44, 0x12, 0x2b, 0x44, 0x14, 0x23, 0x44, 0x16, - 0x3b, 0x44, 0x1c, 0x73, 0xe9, 0x80, 0x64, 0x51, 0xfd, 0xf6, 0x44, 0x29, 0x10, - 0x74, 0x10, 0x80, 0x64, 0x54, 0xfb, 0x80, 0x4c, 0x58, 0x04, 0x80, 0x74, 0x50, - 0x08, 0xc7, 0x04, 0xc3, 0x03, 0xf6, 0x44, 0x5f, 0x02, 0x74, 0x11, 0xb0, 0x05, - 0xee, 0x8a, 0x44, 0x75, 0xb4, 0x82, 0x22, 0x64, 0x5f, 0x0a, 0xc4, 0x88, 0x44, - 0x75, 0xee, 0xe9, 0x07, 0xfe, 0xe8, 0x8a, 0x02, 0xe9, 0x01, 0xfe, 0x8b, 0x45, - 0x02, 0xbb, 0x10, 0x27, 0xf7, 0xe3, 0xbb, 0x0f, 0x00, 0xf7, 0xf3, 0xa3, 0x06, - 0x0e, 0xba, 0x52, 0xff, 0xef, 0xba, 0x50, 0xff, 0xb8, 0x00, 0x00, 0xef, 0xe9, - 0xe3, 0xfd, 0x8b, 0x45, 0x02, 0x3a, 0x06, 0x22, 0x0c, 0x72, 0x0c, 0x3b, 0x06, - 0x1a, 0x0c, 0x77, 0x06, 0xe8, 0xab, 0x01, 0xe9, 0xce, 0xfd, 0xe9, 0x9e, 0xfd, - 0x8b, 0x45, 0x02, 0x88, 0x44, 0x2a, 0x88, 0x64, 0x2b, 0x0b, 0xc0, 0x75, 0x07, - 0x80, 0x64, 0x50, 0xfe, 0xeb, 0x10, 0x90, 0xf6, 0x44, 0x50, 0x01, 0x75, 0x09, - 0x80, 0x4c, 0x50, 0x01, 0xc7, 0x44, 0x30, 0x00, 0x00, 0xa8, 0x80, 0x75, 0x07, - 0xc6, 0x44, 0x60, 0x00, 0xeb, 0x05, 0x90, 0xc6, 0x44, 0x60, 0x7f, 0xc7, 0x04, - 0xc3, 0x03, 0xe9, 0x92, 0xfd, 0x8b, 0x5d, 0x02, 0xf6, 0xd7, 0x22, 0x7c, 0x5f, - 0x0a, 0xdf, 0x8a, 0xfb, 0x88, 0x5c, 0x5f, 0x8a, 0x44, 0x52, 0x8a, 0x64, 0x53, - 0x8b, 0xcb, 0x33, 0xc8, 0x81, 0xe1, 0x38, 0x38, 0x33, 0xc1, 0x88, 0x44, 0x52, - 0x88, 0x64, 0x53, 0xb0, 0x05, 0xee, 0xf6, 0xd3, 0x22, 0x5c, 0x54, 0xf6, 0x44, - 0x51, 0x02, 0x75, 0x02, 0x0a, 0xdf, 0x8a, 0x44, 0x75, 0x32, 0xd8, 0x80, 0xe3, - 0x82, 0x32, 0xc3, 0x88, 0x44, 0x75, 0xee, 0xe9, 0x4c, 0xfd, 0x8b, 0x5d, 0x02, - 0x88, 0x5c, 0x2c, 0x88, 0x7c, 0x2d, 0x8b, 0xcb, 0x83, 0xe3, 0x0f, 0x03, 0xdb, - 0x80, 0x3e, 0x10, 0x0c, 0x01, 0x75, 0x1f, 0xa1, 0x0e, 0x0c, 0x86, 0xe0, 0x3d, - 0x32, 0x31, 0x73, 0x15, 0xf6, 0xc5, 0x04, 0x75, 0x08, 0x2e, 0x8b, 0x9f, 0x69, - 0x01, 0xeb, 0x1b, 0x90, 0x2e, 0x8b, 0x9f, 0x89, 0x01, 0xeb, 0x13, 0x90, 0xf6, - 0xc5, 0x04, 0x75, 0x08, 0x2e, 0x8b, 0x9f, 0x29, 0x01, 0xeb, 0x06, 0x90, 0x2e, - 0x8b, 0x9f, 0x49, 0x01, 0xb0, 0x0c, 0xee, 0x8a, 0xc3, 0x88, 0x44, 0x7c, 0xee, - 0xb0, 0x0d, 0x90, 0x90, 0xee, 0x8a, 0xc7, 0x88, 0x44, 0x7d, 0xee, 0xb0, 0x04, - 0xee, 0xb0, 0x44, 0xf6, 0xc1, 0x40, 0x74, 0x0c, 0xf6, 0xc1, 0x80, 0x74, 0x05, - 0x04, 0x04, 0xeb, 0x03, 0x90, 0x0c, 0x08, 0xf6, 0xc5, 0x01, 0x74, 0x09, 0x0c, - 0x01, 0xf6, 0xc5, 0x02, 0x75, 0x02, 0x0c, 0x02, 0x88, 0x44, 0x74, 0xee, 0xb0, - 0x03, 0x90, 0x90, 0xee, 0x8a, 0xd9, 0x80, 0xe3, 0x30, 0xc0, 0xeb, 0x04, 0x32, - 0xff, 0x2e, 0x8a, 0xa7, 0xa9, 0x01, 0x8a, 0x44, 0x73, 0x24, 0x3f, 0x0a, 0xc4, - 0x88, 0x44, 0x73, 0xee, 0x90, 0x90, 0xb0, 0x05, 0xee, 0xd0, 0xec, 0x8a, 0x44, - 0x75, 0x24, 0x9f, 0x0a, 0xc4, 0x88, 0x44, 0x75, 0xee, 0x2e, 0x8a, 0x87, 0xad, - 0x01, 0x88, 0x44, 0x62, 0xf6, 0x44, 0x28, 0x20, 0x74, 0x02, 0x24, 0x7f, 0x88, - 0x44, 0x34, 0xe9, 0x81, 0xfc, 0x8a, 0x45, 0x02, 0x88, 0x44, 0x5e, 0xe9, 0x78, - 0xfc, 0x8b, 0x45, 0x02, 0xba, 0x5a, 0xff, 0xef, 0x9c, 0xff, 0x36, 0x26, 0x0d, - 0xff, 0x36, 0x24, 0x0d, 0x1e, 0x06, 0x60, 0x8b, 0x36, 0x0a, 0x0e, 0xc7, 0x04, - 0x3f, 0x0d, 0xe9, 0x5a, 0xfc, 0xb8, 0x00, 0x00, 0x8e, 0xc0, 0x8b, 0xf0, 0x8b, - 0xf8, 0x2e, 0x8b, 0x9c, 0x49, 0x00, 0x83, 0xc6, 0x02, 0x26, 0x89, 0x1d, 0x26, - 0x8c, 0x4d, 0x02, 0x83, 0xc7, 0x04, 0x81, 0xff, 0x80, 0x00, 0x72, 0xe8, 0x26, - 0xc7, 0x05, 0xcb, 0x0c, 0x26, 0x8c, 0x4d, 0x02, 0x83, 0xc7, 0x04, 0x81, 0xff, - 0x00, 0x04, 0x72, 0xee, 0xc3, 0xc1, 0xe0, 0x06, 0x8b, 0xd8, 0x8c, 0xda, 0x81, - 0xc2, 0x00, 0x04, 0x8b, 0xfa, 0x8a, 0x0e, 0x22, 0x0c, 0xb5, 0x00, 0xbe, 0x00, - 0x10, 0x33, 0xc0, 0x89, 0x44, 0x0a, 0x89, 0x44, 0x0c, 0x89, 0x44, 0x12, 0x89, - 0x44, 0x14, 0x81, 0xc6, 0x80, 0x00, 0xe2, 0xee, 0x89, 0x36, 0x0a, 0x0e, 0xb8, - 0x01, 0x00, 0x8b, 0xd0, 0xb3, 0x00, 0x8a, 0x0e, 0x22, 0x0c, 0xb5, 0x00, 0xbe, - 0x00, 0x10, 0x2b, 0xda, 0x72, 0x29, 0x89, 0x44, 0x16, 0x81, 0xc6, 0x80, 0x00, - 0xe2, 0xf3, 0x8a, 0x0e, 0x22, 0x0c, 0xb5, 0x00, 0xbe, 0x00, 0x10, 0x2b, 0xda, - 0x72, 0x13, 0x89, 0x44, 0x0e, 0x81, 0xc6, 0x80, 0x00, 0xe2, 0xf3, 0x8b, 0xd0, - 0x03, 0xc0, 0x81, 0xfa, 0x00, 0x02, 0x72, 0xca, 0x8a, 0x0e, 0x22, 0x0c, 0xb5, - 0x00, 0xbe, 0x00, 0x10, 0x89, 0x7c, 0x10, 0x8b, 0x44, 0x16, 0x03, 0xf8, 0x8b, - 0xd7, 0xc1, 0xe0, 0x04, 0x48, 0x89, 0x44, 0x16, 0x81, 0xc6, 0x80, 0x00, 0xe2, - 0xe9, 0x8a, 0x0e, 0x22, 0x0c, 0xb5, 0x00, 0xbe, 0x00, 0x10, 0x89, 0x7c, 0x08, - 0x8b, 0x44, 0x0e, 0x03, 0xf8, 0x8b, 0xd7, 0xc1, 0xe0, 0x04, 0x48, 0x89, 0x44, - 0x0e, 0x81, 0xc6, 0x80, 0x00, 0xe2, 0xe9, 0xc3, 0xc7, 0x04, 0x20, 0x04, 0xc7, - 0x44, 0x06, 0xe1, 0x08, 0x8b, 0xc6, 0x2d, 0x00, 0x10, 0xb1, 0x80, 0xf6, 0xf1, - 0x88, 0x44, 0x48, 0xc7, 0x44, 0x0a, 0x00, 0x00, 0xc7, 0x44, 0x0c, 0x00, 0x00, - 0xc7, 0x44, 0x12, 0x00, 0x00, 0xc7, 0x44, 0x14, 0x00, 0x00, 0xc7, 0x44, 0x18, - 0x00, 0x00, 0xc7, 0x44, 0x1a, 0x00, 0x00, 0xc7, 0x44, 0x1c, 0xff, 0xff, 0x8a, - 0x5c, 0x48, 0x83, 0xe3, 0x0f, 0x03, 0xdb, 0x8b, 0x97, 0x90, 0x0c, 0x89, 0x54, - 0x20, 0xb8, 0x01, 0x00, 0x8a, 0x4c, 0x48, 0xd3, 0xe0, 0x89, 0x44, 0x2e, 0xc7, - 0x44, 0x24, 0x19, 0x00, 0xc7, 0x44, 0x26, 0x00, 0x00, 0xc6, 0x44, 0x4a, 0x00, - 0xc7, 0x44, 0x30, 0x00, 0x00, 0xc7, 0x44, 0x32, 0x00, 0x00, 0xc6, 0x44, 0x4c, - 0x00, 0xc6, 0x44, 0x4d, 0x00, 0xc6, 0x44, 0x4e, 0x00, 0xc6, 0x44, 0x4f, 0x00, - 0xc6, 0x44, 0x50, 0x00, 0xc6, 0x44, 0x4b, 0x00, 0xc6, 0x44, 0x51, 0x00, 0xc6, - 0x44, 0x28, 0x00, 0xc6, 0x44, 0x29, 0x00, 0xc6, 0x44, 0x2a, 0x00, 0xc6, 0x44, - 0x2b, 0x00, 0xc6, 0x44, 0x54, 0x00, 0xc6, 0x44, 0x57, 0x00, 0xc6, 0x44, 0x55, - 0x00, 0xc6, 0x44, 0x56, 0x00, 0xc6, 0x44, 0x58, 0x00, 0xc6, 0x44, 0x52, 0x04, - 0xc6, 0x44, 0x53, 0x04, 0xc6, 0x44, 0x5f, 0x00, 0xc6, 0x44, 0x2c, 0x3d, 0xc6, - 0x44, 0x2d, 0x00, 0xc7, 0x44, 0x34, 0xff, 0x60, 0xc6, 0x44, 0x62, 0xff, 0xc6, - 0x44, 0x5d, 0x13, 0xc6, 0x44, 0x5c, 0x11, 0xc6, 0x44, 0x5e, 0x00, 0xc6, 0x44, - 0x60, 0x23, 0xc6, 0x44, 0x61, 0x23, 0x0b, 0xd2, 0x75, 0x03, 0xe9, 0xd9, 0x00, - 0xb0, 0x09, 0xee, 0x8a, 0x4c, 0x48, 0xb0, 0x80, 0xd2, 0xe8, 0xee, 0xc6, 0x44, - 0x70, 0x00, 0xb0, 0x01, 0xee, 0xb0, 0x11, 0x88, 0x44, 0x71, 0xee, 0xb0, 0x02, - 0x90, 0x90, 0xee, 0x8a, 0x44, 0x48, 0xc0, 0xe0, 0x03, 0x24, 0xf0, 0x88, 0x44, - 0x72, 0xee, 0xb0, 0x03, 0x90, 0x90, 0xee, 0xb0, 0xc0, 0x88, 0x44, 0x73, 0xee, - 0xb0, 0x04, 0x90, 0x90, 0xee, 0xb0, 0x44, 0x88, 0x44, 0x74, 0xee, 0xb0, 0x05, - 0x90, 0xee, 0xb0, 0x60, 0x88, 0x44, 0x75, 0xee, 0xc6, 0x44, 0x76, 0x00, 0xc6, - 0x44, 0x77, 0x00, 0xc6, 0x44, 0x78, 0x00, 0xb0, 0x09, 0xee, 0xb0, 0x09, 0x88, - 0x44, 0x79, 0xee, 0xc6, 0x44, 0x7a, 0x00, 0xb0, 0x0b, 0xee, 0xb0, 0x52, 0x88, - 0x44, 0x7b, 0xee, 0x80, 0x3e, 0x10, 0x0c, 0x01, 0x75, 0x21, 0xa1, 0x0e, 0x0c, - 0x86, 0xe0, 0x3d, 0x32, 0x31, 0x73, 0x17, 0xb0, 0x0c, 0xee, 0xb0, 0x18, 0x88, - 0x44, 0x7c, 0xee, 0xb0, 0x0d, 0x90, 0x90, 0xee, 0xb0, 0x00, 0x88, 0x44, 0x7d, - 0xee, 0xeb, 0x15, 0x90, 0xb0, 0x0c, 0xee, 0xb0, 0x16, 0x88, 0x44, 0x7c, 0xee, - 0xb0, 0x0d, 0x90, 0x90, 0xee, 0xb0, 0x00, 0x88, 0x44, 0x7d, 0xee, 0xb0, 0x0e, - 0x90, 0x90, 0xee, 0xb0, 0x03, 0x88, 0x44, 0x7e, 0xee, 0xb0, 0x0f, 0x90, 0x90, - 0xee, 0xb0, 0x80, 0x88, 0x44, 0x7f, 0xee, 0xb0, 0x03, 0x90, 0x90, 0xee, 0x8a, - 0x44, 0x73, 0x0c, 0x01, 0x88, 0x44, 0x73, 0xee, 0x90, 0x90, 0xb0, 0x05, 0xee, - 0x8a, 0x44, 0x75, 0x0c, 0x08, 0x88, 0x44, 0x75, 0xee, 0xc3, 0xfa, 0x8c, 0xd8, - 0x25, 0x00, 0xf0, 0x8e, 0xd0, 0xbc, 0xfe, 0x1f, 0x8c, 0xd8, 0x25, 0x00, 0xf0, - 0x8e, 0xd8, 0x80, 0x3e, 0x40, 0x0d, 0x01, 0x75, 0x51, 0xa1, 0x0e, 0x0c, 0x86, - 0xe0, 0x3d, 0x30, 0x32, 0x73, 0x47, 0x8b, 0x1e, 0x20, 0x0c, 0x8a, 0x16, 0x23, - 0x0c, 0xc6, 0x06, 0x23, 0x0c, 0x00, 0x83, 0xfb, 0x00, 0x74, 0x07, 0xfe, 0xca, - 0xc6, 0x06, 0x23, 0x0c, 0x01, 0x88, 0x16, 0x22, 0x0c, 0xbe, 0x10, 0x0c, 0xbf, - 0x90, 0x0c, 0xb9, 0x08, 0x00, 0x1e, 0x07, 0xfc, 0xf3, 0xa5, 0xbf, 0xa0, 0x0c, - 0xb8, 0x00, 0x00, 0xb9, 0x08, 0x00, 0xf3, 0xab, 0xc7, 0x06, 0x1a, 0x0c, 0x70, - 0x00, 0xa0, 0x40, 0x0d, 0xa2, 0x10, 0x0c, 0xc6, 0x06, 0x11, 0x0c, 0x00, 0x2e, - 0x8c, 0x1e, 0xc1, 0x03, 0xc7, 0x06, 0x18, 0x0e, 0x02, 0x00, 0xe8, 0xec, 0xfc, - 0xc7, 0x06, 0x24, 0x0d, 0x5a, 0x0d, 0x8c, 0x0e, 0x26, 0x0d, 0xc7, 0x06, 0x18, - 0x0e, 0x06, 0x00, 0xa1, 0x1a, 0x0c, 0xe8, 0x0a, 0xfd, 0xc7, 0x06, 0x18, 0x0e, - 0x0a, 0x00, 0xbe, 0x00, 0x10, 0xc7, 0x44, 0x1e, 0x80, 0x00, 0xe8, 0xa5, 0xfd, - 0x81, 0xc6, 0x80, 0x00, 0x81, 0xfe, 0x00, 0x18, 0x72, 0xee, 0xa0, 0x22, 0x0c, - 0xb4, 0x80, 0xf6, 0xe4, 0xbe, 0x00, 0x10, 0x03, 0xf0, 0x89, 0x36, 0x0a, 0x0e, - 0x29, 0x44, 0x9e, 0xc7, 0x06, 0x00, 0x0e, 0x00, 0x00, 0xc7, 0x06, 0x02, 0x0e, - 0x00, 0x00, 0xc7, 0x06, 0x04, 0x0e, 0x00, 0x00, 0xc7, 0x06, 0x06, 0x0e, 0x9a, - 0x02, 0xba, 0x52, 0xff, 0xa1, 0x06, 0x0e, 0xef, 0xba, 0x50, 0xff, 0xb8, 0x00, - 0x00, 0xef, 0xba, 0x56, 0xff, 0xb8, 0x05, 0xe0, 0xef, 0xba, 0x5e, 0xff, 0xb8, - 0x00, 0x40, 0xef, 0xba, 0x66, 0xff, 0xb8, 0x00, 0x40, 0xef, 0xc7, 0x06, 0x10, - 0x0d, 0x00, 0x00, 0xc7, 0x06, 0x12, 0x0d, 0x00, 0x00, 0xc7, 0x06, 0x14, 0x0d, - 0x00, 0x04, 0xc7, 0x06, 0x16, 0x0d, 0xfc, 0x03, 0xc7, 0x06, 0x18, 0x0d, 0x00, - 0x00, 0xc7, 0x06, 0x1a, 0x0d, 0x00, 0x00, 0xc7, 0x06, 0x1c, 0x0d, 0x00, 0x08, - 0xc7, 0x06, 0x1e, 0x0d, 0xfc, 0x03, 0xb0, 0x00, 0x90, 0xe6, 0x00, 0xc7, 0x06, - 0x18, 0x0e, 0x32, 0x00, 0xba, 0x38, 0xff, 0xb8, 0x11, 0x00, 0xef, 0xba, 0x3a, - 0xff, 0xb8, 0x08, 0x00, 0xef, 0xba, 0x3c, 0xff, 0xb8, 0x08, 0x00, 0xef, 0xba, - 0x3e, 0xff, 0xb8, 0x08, 0x00, 0x80, 0x3e, 0x22, 0x0c, 0x08, 0x76, 0x03, 0xb8, - 0x12, 0x00, 0xef, 0xba, 0x32, 0xff, 0xb8, 0x05, 0x00, 0xef, 0xba, 0x28, 0xff, - 0xb8, 0x6c, 0x00, 0xef, 0xba, 0x22, 0xff, 0xb8, 0x00, 0x80, 0xef, 0xc7, 0x06, - 0x18, 0x0e, 0x33, 0x00, 0xc7, 0x06, 0x20, 0x0d, 0x4f, 0x00, 0xc7, 0x06, 0x21, - 0x0d, 0x53, 0x00, 0x8b, 0x36, 0x0a, 0x0e, 0xc7, 0x04, 0x3c, 0x0d, 0xc7, 0x06, - 0x08, 0x0e, 0x00, 0x10, 0xe9, 0x63, 0xf6, 0x40, 0x28, 0x23, 0x29, 0x20, 0x24, - 0x49, 0x64, 0x3a, 0x20, 0x78, 0x61, 0x63, 0x6f, 0x6f, 0x6b, 0x2e, 0x61, 0x73, - 0x6d, 0x2c, 0x76, 0x20, 0x37, 0x2e, 0x32, 0x35, 0x20, 0x31, 0x39, 0x39, 0x35, - 0x2f, 0x30, 0x31, 0x2f, 0x31, 0x32, 0x20, 0x32, 0x30, 0x3a, 0x35, 0x39, 0x3a, - 0x32, 0x31, 0x20, 0x6d, 0x69, 0x6c, 0x74, 0x20, 0x45, 0x78, 0x70, 0x20, 0x24, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; diff --git a/sys/dev/digi/Xem.bios.h b/sys/dev/digi/Xem.bios.h deleted file mode 100644 index b417571249b9..000000000000 --- a/sys/dev/digi/Xem.bios.h +++ /dev/null @@ -1,3202 +0,0 @@ -/*- - * Copyright (c) 2001 Brian Somers <brian@Awfulhak.org> - * based on work by Slawa Olhovchenkov - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - */ - -static const u_char Xem_bios[] = { - 0x4f, 0x53, 0xa1, 0xb5, 0x53, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0x26, - 0xe2, 0xa6, 0x00, 0x00, 0x00, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, 0x78, 0x62, - 0x69, 0x6f, 0x73, 0x2e, 0x62, 0x69, 0x6e, 0x20, 0x20, 0x20, 0x20, 0x32, 0x2e, - 0x33, 0x2e, 0x32, 0x20, 0x20, 0x30, 0x36, 0x2f, 0x30, 0x32, 0x2f, 0x39, 0x37, - 0x00, 0x40, 0x28, 0x23, 0x29, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, - 0x74, 0x20, 0x28, 0x43, 0x29, 0x20, 0x31, 0x39, 0x39, 0x32, 0x2c, 0x20, 0x44, - 0x49, 0x47, 0x49, 0x20, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x61, 0x6c, 0x2e, 0x20, 0x41, 0x6c, 0x6c, 0x20, 0x52, 0x69, 0x67, - 0x68, 0x74, 0x73, 0x20, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x2e, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x43, 0x50, 0x55, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x6e, 0x27, 0x74, 0x20, - 0x77, 0x6f, 0x72, 0x6b, 0x5d, 0x00, 0x1e, 0x24, 0x00, 0xa3, 0x01, 0x3c, 0x10, - 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0x00, 0xa3, 0x04, 0x3c, 0x80, 0x01, - 0x84, 0x34, 0x0c, 0x00, 0x88, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, - 0x35, 0x0c, 0x00, 0x88, 0xac, 0x01, 0xa0, 0x04, 0x3c, 0x90, 0x80, 0x84, 0x24, - 0xff, 0x03, 0x05, 0x24, 0x24, 0x20, 0x85, 0x00, 0x00, 0xa3, 0x05, 0x3c, 0x00, - 0x10, 0xa5, 0x34, 0x21, 0x20, 0x85, 0x00, 0x6d, 0x00, 0x05, 0x24, 0x10, 0x00, - 0x08, 0x24, 0x00, 0xa3, 0x09, 0x3c, 0x00, 0x02, 0x29, 0x35, 0x00, 0x00, 0x8a, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, 0x11, 0x00, 0x00, 0x2a, 0xa1, - 0x01, 0x00, 0x84, 0x24, 0x01, 0x00, 0x29, 0x25, 0xff, 0xff, 0x08, 0x25, 0xf8, - 0xff, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x01, 0x3c, 0x10, 0x02, - 0x25, 0xac, 0x00, 0xa3, 0x01, 0x3c, 0x14, 0x02, 0x3f, 0xac, 0x00, 0xa3, 0x01, - 0x3c, 0x18, 0x02, 0x3d, 0xac, 0x01, 0x00, 0x08, 0x24, 0x00, 0xa3, 0x01, 0x3c, - 0x10, 0x0c, 0x28, 0xac, 0x00, 0xa3, 0x1d, 0x3c, 0x00, 0x04, 0xbd, 0x37, 0x38, - 0x29, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x10, 0x00, 0x00, - 0x00, 0x00, 0xb3, 0x00, 0x1e, 0x24, 0x00, 0xa3, 0x01, 0x3c, 0x10, 0x00, 0x3e, - 0xac, 0x00, 0x00, 0x1e, 0x24, 0x00, 0x10, 0x08, 0x3c, 0x00, 0x60, 0x88, 0x40, - 0x00, 0xa3, 0x04, 0x3c, 0x00, 0xa3, 0x05, 0x3c, 0x00, 0x10, 0xa5, 0x34, 0x00, - 0x00, 0x80, 0xac, 0x04, 0x00, 0x84, 0x24, 0xfd, 0xff, 0x85, 0x14, 0x00, 0x00, - 0x00, 0x00, 0xc8, 0x00, 0x1e, 0x24, 0x00, 0xa3, 0x01, 0x3c, 0x10, 0x00, 0x3e, - 0xac, 0x00, 0x00, 0x1e, 0x24, 0xff, 0xff, 0x08, 0x24, 0xb5, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x25, 0xb2, 0x00, 0x00, 0x15, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x08, 0x24, 0x21, 0x08, 0x00, 0x01, 0xae, 0x00, - 0x28, 0x14, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x21, 0x24, 0xab, 0x00, 0x20, - 0x14, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x24, 0xa8, 0x00, 0x48, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0xa5, 0x00, 0x40, 0x14, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x24, 0xa2, 0x00, 0x68, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x63, 0x24, 0x9f, 0x00, 0x60, 0x14, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x04, 0x24, 0x9c, 0x00, 0x88, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x84, 0x24, 0x99, 0x00, 0x80, 0x14, 0x00, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x05, 0x24, 0x96, 0x00, 0xa8, 0x14, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0xa5, 0x24, 0x93, 0x00, 0xa0, 0x14, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x06, - 0x24, 0x90, 0x00, 0xc8, 0x14, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xc6, 0x24, - 0x8d, 0x00, 0xc0, 0x14, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x07, 0x24, 0x8a, - 0x00, 0xe8, 0x14, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xe7, 0x24, 0x87, 0x00, - 0xe0, 0x14, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x09, 0x24, 0x84, 0x00, 0x28, - 0x15, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x29, 0x25, 0x81, 0x00, 0x20, 0x15, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0a, 0x24, 0x7e, 0x00, 0x48, 0x15, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x4a, 0x25, 0x7b, 0x00, 0x40, 0x15, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x0b, 0x24, 0x78, 0x00, 0x68, 0x15, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x6b, 0x25, 0x75, 0x00, 0x60, 0x15, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x0c, 0x24, 0x72, 0x00, 0x88, 0x15, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x8c, 0x25, 0x6f, 0x00, 0x80, 0x15, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x0d, 0x24, 0x6c, 0x00, 0xa8, 0x15, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xad, - 0x25, 0x69, 0x00, 0xa0, 0x15, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0e, 0x24, - 0x66, 0x00, 0xc8, 0x15, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xce, 0x25, 0x63, - 0x00, 0xc0, 0x15, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0f, 0x24, 0x60, 0x00, - 0xe8, 0x15, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xef, 0x25, 0x5d, 0x00, 0xe0, - 0x15, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x18, 0x24, 0x5a, 0x00, 0x08, 0x17, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x18, 0x27, 0x57, 0x00, 0x00, 0x17, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x10, 0x24, 0x54, 0x00, 0x08, 0x16, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x10, 0x26, 0x51, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x11, 0x24, 0x4e, 0x00, 0x28, 0x16, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x31, 0x26, 0x4b, 0x00, 0x20, 0x16, 0x00, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x12, 0x24, 0x48, 0x00, 0x48, 0x16, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x52, 0x26, 0x45, 0x00, 0x40, 0x16, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x13, - 0x24, 0x42, 0x00, 0x68, 0x16, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x73, 0x26, - 0x3f, 0x00, 0x60, 0x16, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x14, 0x24, 0x3c, - 0x00, 0x88, 0x16, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x94, 0x26, 0x39, 0x00, - 0x80, 0x16, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x15, 0x24, 0x36, 0x00, 0xa8, - 0x16, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xb5, 0x26, 0x33, 0x00, 0xa0, 0x16, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x16, 0x24, 0x30, 0x00, 0xc8, 0x16, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0xd6, 0x26, 0x2d, 0x00, 0xc0, 0x16, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x17, 0x24, 0x2a, 0x00, 0xe8, 0x16, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0xf7, 0x26, 0x27, 0x00, 0xe0, 0x16, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x1a, 0x24, 0x24, 0x00, 0x48, 0x17, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x5a, 0x27, 0x21, 0x00, 0x40, 0x17, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x1b, 0x24, 0x1e, 0x00, 0x68, 0x17, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x7b, - 0x27, 0x1b, 0x00, 0x60, 0x17, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1c, 0x24, - 0x18, 0x00, 0x88, 0x17, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x9c, 0x27, 0x15, - 0x00, 0x80, 0x17, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1d, 0x24, 0x12, 0x00, - 0xa8, 0x17, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xbd, 0x27, 0x0f, 0x00, 0xa0, - 0x17, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1e, 0x24, 0x0c, 0x00, 0xc8, 0x17, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xde, 0x27, 0x09, 0x00, 0xc0, 0x17, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x1f, 0x24, 0x06, 0x00, 0xe8, 0x17, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0xff, 0x27, 0x03, 0x00, 0xe0, 0x17, 0x00, 0x00, 0x00, - 0x00, 0x0e, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6b, 0x01, 0x1e, 0x24, - 0x00, 0xa3, 0x01, 0x3c, 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0x01, - 0xa0, 0x04, 0x3c, 0xa0, 0x80, 0x84, 0x24, 0xff, 0x03, 0x05, 0x24, 0x24, 0x20, - 0x85, 0x00, 0x00, 0xa3, 0x05, 0x3c, 0x00, 0x10, 0xa5, 0x34, 0x21, 0x20, 0x85, - 0x00, 0x08, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7d, 0x01, 0x1e, 0x24, - 0x00, 0xa3, 0x01, 0x3c, 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0x02, - 0xa0, 0x1c, 0x3c, 0x80, 0x82, 0x9c, 0x27, 0x81, 0x01, 0x1e, 0x24, 0x00, 0xa3, - 0x01, 0x3c, 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0x01, 0x00, 0x11, - 0x04, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x01, 0x1e, 0x24, 0x00, 0xa3, 0x01, 0x3c, - 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0x01, 0xa0, 0x05, 0x3c, 0x00, - 0x80, 0xa5, 0x24, 0x01, 0xa0, 0x06, 0x3c, 0xd0, 0x18, 0xc6, 0x24, 0x01, 0xa0, - 0x04, 0x3c, 0xd8, 0x84, 0x84, 0x24, 0x23, 0x20, 0xe4, 0x03, 0x21, 0x20, 0x86, - 0x00, 0xfc, 0xff, 0x84, 0x24, 0xfc, 0xff, 0xc6, 0x24, 0x00, 0x00, 0x88, 0x8c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0xac, 0x2b, 0x08, 0xa6, 0x00, 0xf9, - 0xff, 0x20, 0x14, 0x00, 0x00, 0x00, 0x00, 0xac, 0x01, 0x1e, 0x24, 0x00, 0xa3, - 0x01, 0x3c, 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0xb7, 0x01, 0x1e, - 0x24, 0x00, 0xa3, 0x01, 0x3c, 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, - 0x01, 0xa0, 0x1f, 0x3c, 0x68, 0x85, 0xff, 0x27, 0x01, 0xa0, 0x04, 0x3c, 0x40, - 0x86, 0x84, 0x24, 0x00, 0xa0, 0x01, 0x3c, 0x25, 0x20, 0x81, 0x00, 0x08, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x01, 0x1e, 0x24, 0x00, 0xa3, 0x01, - 0x3c, 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0x00, 0xa0, 0x08, 0x3c, - 0x80, 0x00, 0x08, 0x35, 0x01, 0xa0, 0x09, 0x3c, 0xc4, 0x85, 0x29, 0x25, 0x01, - 0xa0, 0x0a, 0x3c, 0x14, 0x86, 0x4a, 0x25, 0x00, 0xa0, 0x0b, 0x3c, 0x00, 0x80, - 0x6b, 0x35, 0x25, 0x48, 0x2b, 0x01, 0x25, 0x50, 0x4b, 0x01, 0x00, 0x00, 0x2b, - 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xad, 0x04, 0x00, 0x08, 0x25, - 0x04, 0x00, 0x29, 0x25, 0xfa, 0xff, 0x2a, 0x15, 0x00, 0x00, 0x00, 0x00, 0x15, - 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x1a, 0x3c, 0x80, 0x01, - 0x5a, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xaf, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x60, 0x1a, 0x40, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1b, 0x3c, - 0xfe, 0x00, 0x7b, 0x37, 0x00, 0x00, 0x00, 0x00, 0x24, 0xd0, 0x5b, 0x03, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x60, 0x9a, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, - 0x1a, 0x40, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x00, 0x40, 0x03, 0x00, 0x00, 0x00, 0x00, 0x09, 0x02, 0x1e, 0x24, - 0x00, 0xa3, 0x01, 0x3c, 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0x01, - 0xa0, 0x1d, 0x3c, 0xb8, 0x1c, 0xbd, 0x27, 0x71, 0x2b, 0x00, 0x0c, 0x00, 0x00, - 0x1e, 0x24, 0x55, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x15, 0x00, 0x1e, 0x24, 0x00, 0xa3, 0x01, 0x3c, 0x10, 0x00, 0x3e, 0xac, - 0x00, 0x00, 0x1e, 0x24, 0x01, 0xa0, 0x08, 0x3c, 0x68, 0x86, 0x08, 0x25, 0x00, - 0xa0, 0x01, 0x3c, 0x25, 0x40, 0x01, 0x01, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x60, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x05, - 0x3c, 0x00, 0x60, 0x85, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xa0, 0x09, 0x3c, 0x01, 0x00, 0x01, 0x3c, 0x23, 0x40, 0x21, 0x01, 0x03, - 0x00, 0x00, 0xa1, 0x04, 0x00, 0x08, 0x25, 0xfd, 0xff, 0x09, 0x15, 0x00, 0x00, - 0x00, 0x00, 0x03, 0x00, 0x05, 0x3c, 0x00, 0x60, 0x85, 0x40, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x09, 0x3c, 0x01, 0x00, 0x01, 0x3c, - 0x23, 0x40, 0x21, 0x01, 0x03, 0x00, 0x00, 0xa1, 0x04, 0x00, 0x08, 0x25, 0xfd, - 0xff, 0x09, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x60, 0x84, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x10, 0x04, 0x40, 0xff, 0xff, 0x08, 0x3c, 0xff, 0x3f, 0x08, 0x35, - 0x24, 0x20, 0x88, 0x00, 0x00, 0x10, 0x84, 0x40, 0x01, 0xa0, 0x08, 0x3c, 0xd0, - 0x18, 0x08, 0x25, 0x01, 0xa0, 0x09, 0x3c, 0xe0, 0x1c, 0x29, 0x25, 0xfc, 0xff, - 0x01, 0x24, 0x24, 0x48, 0x21, 0x01, 0xfc, 0xff, 0x01, 0x24, 0x24, 0x40, 0x01, - 0x01, 0x00, 0x00, 0x00, 0xad, 0x04, 0x00, 0x08, 0x25, 0xfd, 0xff, 0x09, 0x15, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x60, 0x02, 0x40, 0xff, 0xff, 0x01, 0x3c, 0xfe, 0x00, 0x21, 0x34, 0x25, 0x20, - 0x81, 0x00, 0x24, 0x40, 0x44, 0x00, 0x00, 0x60, 0x88, 0x40, 0x01, 0xff, 0x42, - 0x30, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x02, 0x40, - 0x00, 0x00, 0x00, 0x00, 0x26, 0x40, 0x44, 0x00, 0x01, 0xff, 0x08, 0x31, 0x26, - 0x40, 0x02, 0x01, 0x00, 0x60, 0x88, 0x40, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x60, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, - 0x24, 0x24, 0x48, 0x01, 0x01, 0x00, 0x60, 0x89, 0x40, 0x00, 0x68, 0x02, 0x40, - 0x00, 0x03, 0x84, 0x30, 0x25, 0x18, 0x44, 0x00, 0x00, 0x68, 0x83, 0x40, 0x00, - 0x60, 0x88, 0x40, 0x24, 0x10, 0x44, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x60, 0x08, 0x40, 0x00, 0x03, 0x84, 0x30, 0xfe, 0xff, 0x01, - 0x24, 0x24, 0x48, 0x01, 0x01, 0x00, 0x60, 0x89, 0x40, 0x00, 0x68, 0x02, 0x40, - 0x27, 0x18, 0x80, 0x00, 0x24, 0x18, 0x62, 0x00, 0x00, 0x68, 0x83, 0x40, 0x00, - 0x60, 0x88, 0x40, 0x24, 0x10, 0x44, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x10, 0x08, 0x3c, 0x00, 0x60, 0x88, 0x40, 0xc0, 0xbf, 0x08, - 0x3c, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x08, 0x40, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x09, 0x3c, 0xfe, 0x00, 0x29, 0x35, 0x00, - 0x00, 0x00, 0x00, 0x24, 0x40, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, 0x25, 0x40, - 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x88, 0x40, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2b, 0x10, 0x85, 0x00, 0x0a, 0x00, 0x40, 0x10, 0x21, 0x18, 0x00, 0x00, 0x00, - 0x00, 0x82, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x62, 0x00, 0x04, 0x00, - 0x84, 0x24, 0x2b, 0x18, 0x43, 0x00, 0x21, 0x18, 0x43, 0x00, 0x2b, 0x10, 0x85, - 0x00, 0xf8, 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xe0, 0x03, - 0x21, 0x10, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, - 0xff, 0xbd, 0x27, 0x1c, 0x00, 0xbf, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, - 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x88, 0xa0, 0x00, 0x21, 0x80, 0x80, - 0x00, 0xd1, 0x27, 0x00, 0x0c, 0x21, 0x20, 0x20, 0x02, 0x21, 0x90, 0x40, 0x00, - 0x00, 0x00, 0x25, 0x82, 0x00, 0x00, 0x00, 0x00, 0x37, 0x22, 0x00, 0x0c, 0x21, - 0x20, 0x00, 0x02, 0x21, 0x80, 0x40, 0x00, 0x08, 0x00, 0x00, 0x12, 0x21, 0x20, - 0x00, 0x02, 0x21, 0x28, 0x20, 0x02, 0x41, 0x22, 0x00, 0x0c, 0x21, 0x30, 0x40, - 0x02, 0x04, 0x00, 0x40, 0x10, 0x21, 0x10, 0x00, 0x02, 0x22, 0x22, 0x00, 0x08, - 0x01, 0x00, 0x10, 0x26, 0x21, 0x10, 0x00, 0x00, 0x1c, 0x00, 0xbf, 0x8f, 0x18, - 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, - 0xe0, 0x03, 0x20, 0x00, 0xbd, 0x27, 0x21, 0x10, 0x80, 0x00, 0x00, 0x00, 0x43, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x65, 0x10, 0x00, 0x00, 0x00, 0x00, - 0xfb, 0xff, 0x60, 0x14, 0x01, 0x00, 0x42, 0x24, 0x21, 0x10, 0x00, 0x00, 0x08, - 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0xc0, 0x10, 0x21, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x87, 0x90, 0x01, 0x00, 0x84, 0x24, 0x00, 0x00, 0xa2, - 0x90, 0xff, 0x00, 0xe3, 0x30, 0xff, 0x00, 0x42, 0x30, 0x03, 0x00, 0x62, 0x10, - 0x01, 0x00, 0xa5, 0x24, 0x51, 0x22, 0x00, 0x08, 0x23, 0x10, 0x62, 0x00, 0x04, - 0x00, 0xe0, 0x10, 0x21, 0x10, 0x00, 0x00, 0xff, 0xff, 0xc6, 0x24, 0xf3, 0xff, - 0xc0, 0x14, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, - 0x00, 0xe8, 0xff, 0xbd, 0x27, 0x14, 0x00, 0xbf, 0xaf, 0x10, 0x00, 0xb0, 0xaf, - 0x21, 0x28, 0x80, 0x00, 0xbf, 0xff, 0xa2, 0x24, 0x1a, 0x00, 0x42, 0x2c, 0x0d, - 0x00, 0x40, 0x14, 0x21, 0x80, 0x00, 0x00, 0x9f, 0xff, 0xa2, 0x24, 0x1a, 0x00, - 0x42, 0x2c, 0x09, 0x00, 0x40, 0x14, 0xd0, 0xff, 0xa2, 0x24, 0x0a, 0x00, 0x42, - 0x2c, 0x06, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x84, 0x27, - 0x37, 0x22, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x40, 0x10, 0x21, - 0x10, 0x00, 0x02, 0x01, 0x00, 0x10, 0x24, 0x21, 0x10, 0x00, 0x02, 0x14, 0x00, - 0xbf, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x18, 0x00, 0xbd, - 0x27, 0x30, 0xff, 0xbd, 0x27, 0xcc, 0x00, 0xbf, 0xaf, 0xc8, 0x00, 0xbe, 0xaf, - 0xc4, 0x00, 0xb7, 0xaf, 0xc0, 0x00, 0xb6, 0xaf, 0xbc, 0x00, 0xb5, 0xaf, 0xb8, - 0x00, 0xb4, 0xaf, 0xb4, 0x00, 0xb3, 0xaf, 0xb0, 0x00, 0xb2, 0xaf, 0xac, 0x00, - 0xb1, 0xaf, 0xa8, 0x00, 0xb0, 0xaf, 0x78, 0x00, 0xa4, 0xaf, 0x21, 0xb8, 0xe0, - 0x00, 0x24, 0x80, 0x82, 0x27, 0x10, 0x00, 0xa2, 0xaf, 0x2c, 0x80, 0x82, 0x27, - 0x14, 0x00, 0xa2, 0xaf, 0x30, 0x80, 0x82, 0x27, 0x18, 0x00, 0xa2, 0xaf, 0x3c, - 0x80, 0x83, 0x27, 0x1c, 0x00, 0xa3, 0xaf, 0x40, 0x80, 0x82, 0x27, 0x20, 0x00, - 0xa2, 0xaf, 0x24, 0x00, 0xa3, 0xaf, 0x21, 0xb0, 0x00, 0x00, 0x78, 0x00, 0xa8, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x80, 0x1b, 0x08, 0x00, 0x01, 0xa1, 0x02, 0x3c, - 0x21, 0x88, 0x62, 0x00, 0xff, 0x00, 0x02, 0x24, 0x00, 0x00, 0x22, 0xa2, 0x21, - 0x18, 0x00, 0x00, 0x01, 0x00, 0x63, 0x24, 0xf4, 0x01, 0x62, 0x28, 0xfe, 0xff, - 0x40, 0x14, 0x01, 0x00, 0x63, 0x24, 0xff, 0xff, 0x63, 0x24, 0x00, 0x00, 0x22, - 0x92, 0x00, 0x00, 0x00, 0x00, 0x82, 0x88, 0x02, 0x00, 0x10, 0x00, 0x02, 0x24, - 0x14, 0x00, 0x22, 0x12, 0x18, 0x00, 0x02, 0x24, 0x0d, 0x00, 0x22, 0x12, 0x14, - 0x00, 0x02, 0x24, 0x0b, 0x00, 0x22, 0x12, 0x1c, 0x00, 0x02, 0x24, 0x0a, 0x00, - 0x22, 0x12, 0x10, 0x00, 0x02, 0x24, 0xcb, 0x00, 0xe0, 0x16, 0x01, 0x00, 0xd6, - 0x36, 0x48, 0x80, 0x84, 0x27, 0x78, 0x00, 0xa5, 0x8f, 0xfe, 0x28, 0x00, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0x64, 0x23, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x10, - 0x00, 0x02, 0x24, 0x03, 0x00, 0x22, 0x12, 0x18, 0x00, 0x02, 0x24, 0x02, 0x00, - 0x22, 0x16, 0x08, 0x00, 0x08, 0x24, 0x04, 0x00, 0x08, 0x24, 0x80, 0x00, 0xa8, - 0xaf, 0x20, 0x80, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x21, 0x80, 0x00, 0x00, 0xf8, 0x14, 0x13, 0x3c, 0x89, - 0xb5, 0x73, 0x36, 0x07, 0x00, 0x12, 0x3c, 0x1f, 0xa1, 0x52, 0x36, 0x18, 0x00, - 0x13, 0x02, 0x10, 0x40, 0x00, 0x00, 0x43, 0x23, 0x08, 0x00, 0xc3, 0x17, 0x10, - 0x00, 0x23, 0x20, 0x82, 0x00, 0x40, 0x10, 0x04, 0x00, 0x21, 0x10, 0x44, 0x00, - 0x80, 0x19, 0x02, 0x00, 0x21, 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x21, - 0x10, 0x44, 0x00, 0x80, 0x10, 0x02, 0x00, 0x21, 0x10, 0x44, 0x00, 0x40, 0x11, - 0x02, 0x00, 0x04, 0x00, 0x02, 0x16, 0x00, 0x00, 0x00, 0x00, 0x68, 0x80, 0x84, - 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x26, - 0x2a, 0x10, 0x50, 0x02, 0xeb, 0xff, 0x40, 0x10, 0x18, 0x00, 0x13, 0x02, 0x01, - 0x00, 0x02, 0x24, 0x20, 0x80, 0x82, 0xaf, 0x06, 0x00, 0xe0, 0x16, 0x00, 0x00, - 0x00, 0x00, 0x6c, 0x80, 0x84, 0x27, 0x78, 0x00, 0xa5, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x30, 0x20, 0x02, 0x80, 0x00, 0xa8, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x11, 0x21, 0x98, 0x00, 0x00, 0x78, - 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x80, 0x43, 0x08, 0x00, 0x88, 0x00, - 0xa8, 0xaf, 0x00, 0xa3, 0x03, 0x3c, 0x80, 0x01, 0x63, 0x34, 0x78, 0x00, 0xa8, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x40, 0x03, 0x01, 0x90, 0x00, 0xa8, 0xaf, - 0x10, 0x00, 0xb4, 0x27, 0x28, 0x00, 0xb5, 0x27, 0x78, 0x00, 0xa8, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x10, 0x08, 0x00, 0x21, 0xf0, 0x43, 0x00, 0x40, 0x11, - 0x13, 0x00, 0x01, 0xa1, 0x03, 0x3c, 0x00, 0x01, 0x63, 0x34, 0x21, 0x10, 0x43, - 0x00, 0x88, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x88, 0x02, 0x01, - 0x08, 0x00, 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x42, 0x34, 0x08, - 0x00, 0x22, 0xa2, 0x90, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, - 0x02, 0x91, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x34, 0x00, 0x02, - 0xa1, 0x34, 0x00, 0x02, 0x91, 0x21, 0x90, 0x00, 0x00, 0x80, 0x10, 0x12, 0x00, - 0x21, 0x10, 0x54, 0x00, 0x00, 0x00, 0x50, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x00, 0xe0, 0x16, 0x21, 0x28, 0x60, 0x02, 0x88, 0x80, 0x84, 0x27, 0xfe, 0x28, - 0x00, 0x0c, 0x21, 0x30, 0x00, 0x02, 0x00, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, - 0x00, 0x09, 0x00, 0x40, 0x10, 0x21, 0x18, 0x40, 0x00, 0x21, 0x10, 0x60, 0x00, - 0x00, 0x00, 0x22, 0xa2, 0x01, 0x00, 0x10, 0x26, 0x00, 0x00, 0x03, 0x92, 0x00, - 0x00, 0x02, 0x82, 0x00, 0x00, 0x00, 0x00, 0xfa, 0xff, 0x40, 0x14, 0x21, 0x10, - 0x60, 0x00, 0x0d, 0x00, 0x02, 0x24, 0x00, 0x00, 0x22, 0xa2, 0x21, 0x20, 0x00, - 0x00, 0x28, 0x00, 0xa0, 0xa3, 0x21, 0x28, 0x00, 0x00, 0x4f, 0x00, 0x82, 0x28, - 0x15, 0x00, 0x40, 0x10, 0x21, 0x18, 0x00, 0x00, 0x1f, 0x23, 0x00, 0x08, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x10, 0x01, 0x00, 0x63, 0x24, 0x14, 0x00, - 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x30, 0xfa, 0xff, 0x40, - 0x10, 0x30, 0x75, 0x62, 0x28, 0x03, 0x00, 0x40, 0x14, 0x21, 0x18, 0xa4, 0x02, - 0x2c, 0x23, 0x00, 0x08, 0x01, 0x00, 0x05, 0x24, 0x00, 0x00, 0x22, 0x92, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0xa0, 0x01, 0x00, 0x84, 0x24, 0x21, 0x10, - 0xa4, 0x02, 0xea, 0xff, 0xa0, 0x10, 0x00, 0x00, 0x40, 0xa0, 0x80, 0x10, 0x12, - 0x00, 0x21, 0x10, 0x54, 0x00, 0x08, 0x00, 0x45, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x22, 0x00, 0x0c, 0x28, 0x00, 0xa4, 0x27, 0x11, 0x00, 0x40, 0x14, 0x02, - 0x00, 0x04, 0x24, 0x80, 0x10, 0x12, 0x00, 0x21, 0x10, 0x54, 0x00, 0x10, 0x00, - 0x45, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x18, 0x22, 0x00, 0x0c, 0x28, 0x00, 0xa4, - 0x27, 0x09, 0x00, 0x40, 0x14, 0x01, 0x00, 0x04, 0x24, 0x21, 0x20, 0x00, 0x00, - 0x01, 0x00, 0xd6, 0x36, 0x01, 0x00, 0x02, 0x24, 0x04, 0x10, 0x42, 0x02, 0x38, - 0x00, 0xc3, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x25, 0x10, 0x43, 0x00, 0x38, 0x00, - 0xc2, 0xaf, 0x12, 0x00, 0xe0, 0x16, 0x01, 0x00, 0x02, 0x24, 0x08, 0x00, 0x82, - 0x10, 0x02, 0x00, 0x02, 0x24, 0x0b, 0x00, 0x82, 0x14, 0x00, 0x00, 0x00, 0x00, - 0xa0, 0x80, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x01, 0x00, 0x52, 0x26, 0x5c, - 0x23, 0x00, 0x08, 0x02, 0x00, 0x42, 0x2a, 0xb8, 0x80, 0x84, 0x27, 0xfe, 0x28, - 0x00, 0x0c, 0x01, 0x00, 0x52, 0x26, 0x5c, 0x23, 0x00, 0x08, 0x02, 0x00, 0x42, - 0x2a, 0xd0, 0x80, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x28, 0x00, 0xa5, 0x27, - 0x01, 0x00, 0x52, 0x26, 0x02, 0x00, 0x42, 0x2a, 0xa2, 0xff, 0x40, 0x14, 0x80, - 0x10, 0x12, 0x00, 0x01, 0x00, 0x73, 0x26, 0x80, 0x00, 0xa8, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x2a, 0x10, 0x68, 0x02, 0x89, 0xff, 0x40, 0x14, 0x40, 0x11, 0x13, - 0x00, 0x07, 0x00, 0xe0, 0x16, 0x00, 0xa3, 0x02, 0x3c, 0x06, 0x00, 0xc0, 0x16, - 0x80, 0x01, 0x42, 0x34, 0xf0, 0x80, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xa3, 0x02, 0x3c, 0x80, 0x01, 0x42, 0x34, 0x78, 0x00, - 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x02, 0x01, 0x01, 0x00, 0x03, - 0x24, 0x30, 0x00, 0x43, 0xa0, 0x21, 0x10, 0xc0, 0x02, 0xcc, 0x00, 0xbf, 0x8f, - 0xc8, 0x00, 0xbe, 0x8f, 0xc4, 0x00, 0xb7, 0x8f, 0xc0, 0x00, 0xb6, 0x8f, 0xbc, - 0x00, 0xb5, 0x8f, 0xb8, 0x00, 0xb4, 0x8f, 0xb4, 0x00, 0xb3, 0x8f, 0xb0, 0x00, - 0xb2, 0x8f, 0xac, 0x00, 0xb1, 0x8f, 0xa8, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, - 0x03, 0xd0, 0x00, 0xbd, 0x27, 0x78, 0xff, 0xbd, 0x27, 0x80, 0x00, 0xbf, 0xaf, - 0x7c, 0x00, 0xb5, 0xaf, 0x78, 0x00, 0xb4, 0xaf, 0x74, 0x00, 0xb3, 0xaf, 0x70, - 0x00, 0xb2, 0xaf, 0x6c, 0x00, 0xb1, 0xaf, 0x68, 0x00, 0xb0, 0xaf, 0x21, 0x80, - 0x80, 0x00, 0x21, 0x88, 0xa0, 0x00, 0x21, 0xa0, 0xc0, 0x00, 0x21, 0x98, 0xe0, - 0x00, 0x21, 0xa8, 0x20, 0x02, 0x21, 0x90, 0x00, 0x00, 0x21, 0x18, 0x00, 0x00, - 0x14, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x42, 0x30, 0x11, - 0x00, 0x40, 0x14, 0x21, 0x10, 0x60, 0x00, 0x50, 0xc3, 0x04, 0x34, 0x2a, 0x10, - 0x82, 0x00, 0x08, 0x00, 0x40, 0x10, 0x01, 0x00, 0x63, 0x24, 0x04, 0x00, 0x60, - 0x16, 0x00, 0x00, 0x00, 0x00, 0x18, 0x81, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0x0c, 0x24, 0x00, 0x08, 0x02, 0x00, 0x52, 0x36, 0x14, - 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x42, 0x30, 0xf2, 0xff, - 0x40, 0x10, 0x21, 0x10, 0x60, 0x00, 0x08, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, - 0x00, 0x06, 0x00, 0x42, 0x34, 0x08, 0x00, 0x02, 0xa2, 0x14, 0x00, 0x02, 0x92, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x30, 0x06, 0x00, 0x40, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x60, 0x16, 0x00, 0x00, 0x00, 0x00, 0x34, 0x81, - 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xd1, 0x27, 0x00, - 0x0c, 0x21, 0x20, 0x20, 0x02, 0x10, 0x00, 0x42, 0x2c, 0x0f, 0x00, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, 0x12, - 0x00, 0x40, 0x10, 0x21, 0x18, 0x40, 0x00, 0x21, 0x10, 0x60, 0x00, 0x00, 0x00, - 0x02, 0xa2, 0x01, 0x00, 0x31, 0x26, 0x00, 0x00, 0x23, 0x92, 0x00, 0x00, 0x22, - 0x82, 0x00, 0x00, 0x00, 0x00, 0xfa, 0xff, 0x40, 0x14, 0x21, 0x10, 0x60, 0x00, - 0xcc, 0x23, 0x00, 0x08, 0x21, 0x18, 0x00, 0x00, 0x04, 0x00, 0x60, 0x16, 0x00, - 0x00, 0x00, 0x00, 0x5c, 0x81, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x0c, 0x24, 0x00, 0x08, 0x01, 0x00, 0x52, 0x36, 0x21, 0x18, 0x00, - 0x00, 0x14, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x42, 0x30, - 0x13, 0x00, 0x40, 0x14, 0x21, 0x28, 0x00, 0x00, 0x50, 0xc3, 0x04, 0x34, 0x21, - 0x10, 0x60, 0x00, 0x2a, 0x10, 0x82, 0x00, 0x08, 0x00, 0x40, 0x10, 0x01, 0x00, - 0x63, 0x24, 0x04, 0x00, 0x60, 0x16, 0x00, 0x00, 0x00, 0x00, 0x70, 0x81, 0x84, - 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x24, 0x00, 0x08, - 0x08, 0x00, 0x52, 0x36, 0x14, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x40, - 0x00, 0x42, 0x30, 0xf2, 0xff, 0x40, 0x10, 0x21, 0x10, 0x60, 0x00, 0x21, 0x28, - 0x00, 0x00, 0x21, 0x20, 0x00, 0x00, 0x21, 0x18, 0x00, 0x00, 0x50, 0xc3, 0x06, - 0x34, 0x10, 0x00, 0xa7, 0x27, 0x4f, 0x00, 0x82, 0x28, 0x15, 0x00, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0xef, 0x23, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x2a, - 0x10, 0xc2, 0x00, 0x0e, 0x00, 0x40, 0x14, 0x01, 0x00, 0x63, 0x24, 0x14, 0x00, - 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x30, 0xf9, 0xff, 0x40, - 0x10, 0x21, 0x10, 0x60, 0x00, 0x09, 0x00, 0xa0, 0x14, 0x21, 0x18, 0xe4, 0x00, - 0x00, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0xa0, 0x01, - 0x00, 0x84, 0x24, 0xe7, 0x23, 0x00, 0x08, 0x21, 0x18, 0x00, 0x00, 0xf4, 0x23, - 0x00, 0x08, 0x01, 0x00, 0x05, 0x24, 0x10, 0x00, 0xb0, 0x27, 0x21, 0x10, 0x04, - 0x02, 0x00, 0x00, 0x40, 0xa0, 0x21, 0x20, 0x00, 0x02, 0x18, 0x22, 0x00, 0x0c, - 0x21, 0x28, 0x80, 0x02, 0x08, 0x00, 0x40, 0x14, 0x21, 0x10, 0x40, 0x02, 0x04, - 0x00, 0x60, 0x16, 0x21, 0x28, 0x00, 0x02, 0x8c, 0x81, 0x84, 0x27, 0xfe, 0x28, - 0x00, 0x0c, 0x21, 0x30, 0xa0, 0x02, 0x04, 0x00, 0x52, 0x36, 0x21, 0x10, 0x40, - 0x02, 0x80, 0x00, 0xbf, 0x8f, 0x7c, 0x00, 0xb5, 0x8f, 0x78, 0x00, 0xb4, 0x8f, - 0x74, 0x00, 0xb3, 0x8f, 0x70, 0x00, 0xb2, 0x8f, 0x6c, 0x00, 0xb1, 0x8f, 0x68, - 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x88, 0x00, 0xbd, 0x27, 0xd0, 0xff, - 0xbd, 0x27, 0x28, 0x00, 0xbf, 0xaf, 0x24, 0x00, 0xb3, 0xaf, 0x20, 0x00, 0xb2, - 0xaf, 0x1c, 0x00, 0xb1, 0xaf, 0x18, 0x00, 0xb0, 0xaf, 0x21, 0x88, 0x80, 0x00, - 0x21, 0x80, 0xa0, 0x00, 0x21, 0x98, 0xc0, 0x00, 0x21, 0x90, 0x00, 0x00, 0x21, - 0x18, 0x00, 0x00, 0x14, 0x00, 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, - 0x42, 0x30, 0x11, 0x00, 0x40, 0x14, 0x50, 0xc3, 0x04, 0x34, 0x21, 0x10, 0x60, - 0x00, 0x2a, 0x10, 0x82, 0x00, 0x08, 0x00, 0x40, 0x10, 0x01, 0x00, 0x63, 0x24, - 0x04, 0x00, 0x60, 0x16, 0x00, 0x00, 0x00, 0x00, 0x18, 0x81, 0x84, 0x27, 0xfe, - 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x6b, 0x24, 0x00, 0x08, 0x02, 0x00, - 0x52, 0x36, 0x14, 0x00, 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x42, - 0x30, 0xf2, 0xff, 0x40, 0x10, 0x21, 0x10, 0x60, 0x00, 0x08, 0x00, 0x22, 0x92, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x42, 0x34, 0x08, 0x00, 0x22, 0xa2, 0xd1, - 0x27, 0x00, 0x0c, 0x21, 0x20, 0x00, 0x02, 0x10, 0x00, 0x42, 0x2c, 0x0f, 0x00, - 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, - 0x00, 0x12, 0x00, 0x40, 0x10, 0x21, 0x18, 0x40, 0x00, 0x21, 0x10, 0x60, 0x00, - 0x00, 0x00, 0x22, 0xa2, 0x01, 0x00, 0x10, 0x26, 0x00, 0x00, 0x03, 0x92, 0x00, - 0x00, 0x02, 0x82, 0x00, 0x00, 0x00, 0x00, 0xfa, 0xff, 0x40, 0x14, 0x21, 0x10, - 0x60, 0x00, 0x55, 0x24, 0x00, 0x08, 0x21, 0x18, 0x00, 0x00, 0x04, 0x00, 0x60, - 0x16, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x81, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0x6b, 0x24, 0x00, 0x08, 0x01, 0x00, 0x52, 0x36, 0x21, - 0x18, 0x00, 0x00, 0x14, 0x00, 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, - 0x42, 0x30, 0x13, 0x00, 0x40, 0x14, 0x21, 0x10, 0x40, 0x02, 0x50, 0xc3, 0x04, - 0x34, 0x21, 0x10, 0x60, 0x00, 0x2a, 0x10, 0x82, 0x00, 0x08, 0x00, 0x40, 0x10, - 0x01, 0x00, 0x63, 0x24, 0x04, 0x00, 0x60, 0x16, 0x00, 0x00, 0x00, 0x00, 0xb8, - 0x81, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x6b, 0x24, - 0x00, 0x08, 0x08, 0x00, 0x52, 0x36, 0x14, 0x00, 0x22, 0x92, 0x00, 0x00, 0x00, - 0x00, 0x40, 0x00, 0x42, 0x30, 0xf2, 0xff, 0x40, 0x10, 0x21, 0x10, 0x60, 0x00, - 0x21, 0x10, 0x40, 0x02, 0x28, 0x00, 0xbf, 0x8f, 0x24, 0x00, 0xb3, 0x8f, 0x20, - 0x00, 0xb2, 0x8f, 0x1c, 0x00, 0xb1, 0x8f, 0x18, 0x00, 0xb0, 0x8f, 0x08, 0x00, - 0xe0, 0x03, 0x30, 0x00, 0xbd, 0x27, 0x18, 0xff, 0xbd, 0x27, 0xe4, 0x00, 0xbf, - 0xaf, 0xe0, 0x00, 0xbe, 0xaf, 0xdc, 0x00, 0xb7, 0xaf, 0xd8, 0x00, 0xb6, 0xaf, - 0xd4, 0x00, 0xb5, 0xaf, 0xd0, 0x00, 0xb4, 0xaf, 0xcc, 0x00, 0xb3, 0xaf, 0xc8, - 0x00, 0xb2, 0xaf, 0xc4, 0x00, 0xb1, 0xaf, 0xc0, 0x00, 0xb0, 0xaf, 0x21, 0xb8, - 0xa0, 0x00, 0xd4, 0x81, 0x85, 0x27, 0x03, 0x00, 0xa2, 0x88, 0x00, 0x00, 0xa2, - 0x98, 0x04, 0x00, 0xa3, 0x80, 0x05, 0x00, 0xa4, 0x80, 0x13, 0x00, 0xa2, 0xab, - 0x10, 0x00, 0xa2, 0xbb, 0x14, 0x00, 0xa3, 0xa3, 0x15, 0x00, 0xa4, 0xa3, 0x21, - 0x98, 0x00, 0x00, 0x00, 0xa3, 0x10, 0x3c, 0x80, 0x01, 0x10, 0x36, 0x08, 0x00, - 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x54, 0x2c, 0x1d, 0x00, 0x80, - 0x12, 0x00, 0xa3, 0x02, 0x3c, 0xdc, 0x81, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, - 0x03, 0x00, 0x05, 0x24, 0x49, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x07, - 0x00, 0x40, 0x14, 0x00, 0xa3, 0x02, 0x3c, 0x00, 0xa3, 0x03, 0x3c, 0x80, 0x01, - 0x63, 0x34, 0x49, 0x00, 0x62, 0x90, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xff, 0x40, - 0x10, 0x00, 0xa3, 0x02, 0x3c, 0x80, 0x01, 0x42, 0x34, 0x48, 0x00, 0x43, 0x90, - 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x72, 0x30, 0xd0, 0xff, 0x52, 0x26, 0x49, - 0x00, 0x40, 0xa0, 0xf8, 0x81, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x28, - 0x40, 0x02, 0x04, 0x00, 0x42, 0x2e, 0x0a, 0x00, 0x40, 0x14, 0x80, 0x13, 0x12, - 0x00, 0xfc, 0x81, 0x84, 0x27, 0x2c, 0x25, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x01, 0x42, 0x34, 0x08, 0x00, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x93, 0x02, 0x00, 0x0f, 0x00, 0x52, 0x32, 0x80, 0x13, 0x12, 0x00, 0x01, 0xa1, - 0x03, 0x3c, 0x21, 0x18, 0x43, 0x00, 0xff, 0x00, 0x02, 0x24, 0x00, 0x00, 0x62, - 0xa0, 0x21, 0x88, 0x00, 0x00, 0x01, 0x00, 0x31, 0x26, 0xf4, 0x01, 0x22, 0x2a, - 0xfe, 0xff, 0x40, 0x14, 0x01, 0x00, 0x31, 0x26, 0xff, 0xff, 0x31, 0x26, 0x00, - 0x00, 0x62, 0x90, 0x00, 0x00, 0x00, 0x00, 0x82, 0x18, 0x02, 0x00, 0x10, 0x00, - 0x02, 0x24, 0x15, 0x00, 0x62, 0x10, 0x18, 0x00, 0x02, 0x24, 0x0e, 0x00, 0x62, - 0x10, 0x14, 0x00, 0x02, 0x24, 0x0c, 0x00, 0x62, 0x10, 0x1c, 0x00, 0x02, 0x24, - 0x0b, 0x00, 0x62, 0x10, 0x10, 0x00, 0x02, 0x24, 0x04, 0x00, 0xe0, 0x16, 0x00, - 0x00, 0x00, 0x00, 0x48, 0x80, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x28, - 0x40, 0x02, 0x01, 0x00, 0x73, 0x36, 0x00, 0x16, 0x12, 0x00, 0x2d, 0x27, 0x00, - 0x08, 0x25, 0x98, 0x62, 0x02, 0x10, 0x00, 0x02, 0x24, 0x03, 0x00, 0x62, 0x10, - 0x18, 0x00, 0x02, 0x24, 0x02, 0x00, 0x62, 0x14, 0x08, 0x00, 0x11, 0x24, 0x04, - 0x00, 0x11, 0x24, 0x45, 0x00, 0x80, 0x12, 0x00, 0xa3, 0x02, 0x3c, 0x14, 0x82, - 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x28, 0x20, 0x02, 0x00, 0xa3, 0x02, - 0x3c, 0x80, 0x01, 0x42, 0x34, 0x49, 0x00, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x40, 0x14, 0x00, 0xa3, 0x03, 0x3c, 0x80, 0x01, 0x63, 0x34, 0x49, - 0x00, 0x62, 0x90, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xff, 0x40, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xa3, 0x03, 0x3c, 0x80, 0x01, 0x63, 0x34, 0x48, 0x00, 0x62, - 0x90, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x50, 0x30, 0xcf, 0xff, 0x10, 0x26, - 0x49, 0x00, 0x60, 0xa0, 0xf8, 0x81, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x01, - 0x00, 0x05, 0x26, 0x04, 0x00, 0x00, 0x06, 0xff, 0xff, 0x22, 0x26, 0x2a, 0x10, - 0x50, 0x00, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x38, 0x82, 0x84, - 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x01, 0x80, 0x73, 0x36, 0x2d, 0x27, 0x00, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x4c, 0x82, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x21, - 0x28, 0x20, 0x02, 0x00, 0xa3, 0x02, 0x3c, 0x80, 0x01, 0x42, 0x34, 0x49, 0x00, - 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x40, 0x14, 0x00, 0xa3, 0x03, - 0x3c, 0x80, 0x01, 0x63, 0x34, 0x49, 0x00, 0x62, 0x90, 0x00, 0x00, 0x00, 0x00, - 0xfd, 0xff, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x03, 0x3c, 0x80, - 0x01, 0x63, 0x34, 0x48, 0x00, 0x62, 0x90, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, - 0x56, 0x30, 0xcf, 0xff, 0xd6, 0x26, 0x49, 0x00, 0x60, 0xa0, 0xf8, 0x81, 0x84, - 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x01, 0x00, 0xc5, 0x26, 0x04, 0x00, 0xc0, 0x06, - 0xff, 0xff, 0x22, 0x26, 0x2a, 0x10, 0x50, 0x00, 0x10, 0x00, 0x40, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x38, 0x82, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x01, 0x40, - 0x73, 0x36, 0x2d, 0x27, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x42, - 0x34, 0x08, 0x00, 0x43, 0x8c, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x70, 0x30, - 0x02, 0x81, 0x10, 0x00, 0xff, 0xff, 0x10, 0x26, 0x08, 0x00, 0x42, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x0f, 0x00, 0x56, 0x30, 0xff, 0xff, 0xd6, 0x26, 0x08, 0x00, - 0x16, 0x16, 0x80, 0x23, 0x12, 0x00, 0x04, 0x00, 0xe0, 0x16, 0x00, 0x00, 0x00, - 0x00, 0x6c, 0x82, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x2d, 0x27, 0x00, 0x08, 0x01, 0x00, 0x73, 0x36, 0x40, 0x11, 0x10, 0x00, 0x01, - 0xa1, 0x03, 0x3c, 0x00, 0x01, 0x63, 0x34, 0x21, 0x10, 0x43, 0x00, 0x21, 0xa0, - 0x82, 0x00, 0x40, 0x11, 0x16, 0x00, 0x21, 0x10, 0x43, 0x00, 0x04, 0x00, 0xe0, - 0x16, 0x21, 0xa8, 0x82, 0x00, 0x8c, 0x82, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x82, 0x92, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x42, 0x34, 0x10, 0x00, 0x82, 0xa2, 0x10, 0x00, 0xa2, 0x92, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x42, 0x34, 0x10, 0x00, 0xa2, 0xa2, 0x08, 0x00, 0x82, - 0x92, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x42, 0x34, 0x08, 0x00, 0x82, 0xa2, - 0x04, 0x00, 0x80, 0xa2, 0x08, 0x00, 0x03, 0x24, 0x00, 0x00, 0x83, 0xa2, 0x08, - 0x00, 0x82, 0x92, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x42, 0x30, 0x08, 0x00, - 0x82, 0xa2, 0x08, 0x00, 0xa2, 0x92, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x42, - 0x34, 0x08, 0x00, 0xa2, 0xa2, 0x04, 0x00, 0xa0, 0xa2, 0x00, 0x00, 0xa3, 0xa2, - 0x08, 0x00, 0xa2, 0x92, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x42, 0x30, 0x08, - 0x00, 0xa2, 0xa2, 0x03, 0x00, 0x02, 0x24, 0x0c, 0x00, 0x82, 0xa2, 0x0c, 0x00, - 0xa2, 0xa2, 0x96, 0x00, 0x02, 0x24, 0x1c, 0x00, 0x82, 0xa2, 0xad, 0x00, 0x02, - 0x24, 0x1c, 0x00, 0xa2, 0xa2, 0x20, 0x00, 0x02, 0x24, 0x00, 0x00, 0x82, 0xa2, - 0x00, 0x00, 0xa2, 0xa2, 0x21, 0x88, 0x00, 0x00, 0x14, 0x00, 0x82, 0x92, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x30, 0x34, 0x00, 0x40, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x25, 0x00, 0xe0, 0x16, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x82, 0x84, - 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x25, 0x00, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x92, 0x00, 0x00, 0x00, 0x00, 0xff, - 0x00, 0x42, 0x30, 0x0e, 0x00, 0xe0, 0x16, 0xb8, 0x00, 0xa2, 0xaf, 0xb8, 0x00, - 0xa4, 0x8f, 0x53, 0x22, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x40, - 0x10, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x00, 0xa4, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x26, 0x04, 0x00, 0x80, 0x25, 0x00, 0x08, 0x03, 0x26, 0x04, 0x00, 0x2e, - 0x00, 0x04, 0x24, 0x64, 0x30, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x31, 0x26, 0x8a, 0x25, 0x00, 0x08, 0xbc, 0x00, 0xa0, 0xaf, 0xbc, 0x00, 0xa2, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0xbc, 0x00, 0xa2, 0xaf, - 0xbc, 0x00, 0xa2, 0x8f, 0xbc, 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xf4, - 0x01, 0x42, 0x28, 0xf7, 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, - 0x82, 0x92, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x30, 0xdd, 0xff, 0x40, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0xe0, 0x16, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x20, 0x12, 0x21, 0x88, 0x00, 0x00, 0xa4, 0x82, 0x84, 0x27, 0xfe, - 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x88, 0x00, 0x00, 0x14, 0x00, - 0xa2, 0x92, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x30, 0x33, 0x00, 0x40, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x25, 0x00, 0xe0, 0x16, 0x00, 0x00, 0x00, 0x00, - 0xa0, 0x82, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xc7, - 0x25, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x92, 0x00, 0x00, - 0x00, 0x00, 0xff, 0x00, 0x42, 0x30, 0x0e, 0x00, 0xe0, 0x16, 0xbc, 0x00, 0xa2, - 0xaf, 0xbc, 0x00, 0xa4, 0x8f, 0x53, 0x22, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x00, 0xa4, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x26, 0x04, 0x00, 0xb8, 0x25, 0x00, 0x08, 0x03, 0x26, - 0x04, 0x00, 0x2e, 0x00, 0x04, 0x24, 0x64, 0x30, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x31, 0x26, 0xc2, 0x25, 0x00, 0x08, 0xb8, 0x00, 0xa0, 0xaf, - 0xb8, 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0xb8, - 0x00, 0xa2, 0xaf, 0xb8, 0x00, 0xa2, 0x8f, 0xb8, 0x00, 0xa2, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0xf4, 0x01, 0x42, 0x28, 0xf7, 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x14, 0x00, 0xa2, 0x92, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x30, - 0xdd, 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0xe0, 0x16, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x12, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x82, - 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x82, - 0x92, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x42, 0x30, 0xc0, 0x00, 0x03, 0x24, - 0x0d, 0x00, 0x43, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x82, 0x92, 0x00, - 0x00, 0x00, 0x00, 0xff, 0x00, 0x42, 0x30, 0x03, 0x00, 0x03, 0x24, 0x07, 0x00, - 0x43, 0x14, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x82, 0x92, 0x00, 0x00, 0x00, - 0x00, 0xff, 0x00, 0x42, 0x30, 0x96, 0x00, 0x03, 0x24, 0x0f, 0x00, 0x43, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xe0, 0x16, 0x00, 0x00, 0x00, 0x00, 0xf8, - 0x82, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, - 0x85, 0x92, 0x0c, 0x00, 0x86, 0x92, 0x1c, 0x00, 0x87, 0x92, 0x1c, 0x83, 0x84, - 0x27, 0xff, 0x00, 0xa5, 0x30, 0xff, 0x00, 0xc6, 0x30, 0xfe, 0x28, 0x00, 0x0c, - 0xff, 0x00, 0xe7, 0x30, 0x02, 0x80, 0x73, 0x36, 0x08, 0x00, 0xa2, 0x92, 0x00, - 0x00, 0x00, 0x00, 0xc0, 0x00, 0x42, 0x30, 0xc0, 0x00, 0x03, 0x24, 0x0d, 0x00, - 0x43, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xa2, 0x92, 0x00, 0x00, 0x00, - 0x00, 0xff, 0x00, 0x42, 0x30, 0x03, 0x00, 0x03, 0x24, 0x07, 0x00, 0x43, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0xa2, 0x92, 0x00, 0x00, 0x00, 0x00, 0xff, - 0x00, 0x42, 0x30, 0xad, 0x00, 0x03, 0x24, 0x0f, 0x00, 0x43, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x0c, 0x00, 0xe0, 0x16, 0x00, 0x00, 0x00, 0x00, 0x34, 0x83, 0x84, - 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xa5, 0x92, - 0x0c, 0x00, 0xa6, 0x92, 0x1c, 0x00, 0xa7, 0x92, 0x1c, 0x83, 0x84, 0x27, 0xff, - 0x00, 0xa5, 0x30, 0xff, 0x00, 0xc6, 0x30, 0xfe, 0x28, 0x00, 0x0c, 0xff, 0x00, - 0xe7, 0x30, 0x02, 0x40, 0x73, 0x36, 0x19, 0x01, 0x60, 0x16, 0x00, 0x00, 0x00, - 0x00, 0x05, 0x00, 0xe0, 0x16, 0x21, 0x20, 0x80, 0x02, 0x58, 0x83, 0x84, 0x27, - 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, 0x80, 0x02, 0x74, - 0x83, 0x85, 0x27, 0x7c, 0x83, 0x86, 0x27, 0x7f, 0x23, 0x00, 0x0c, 0x21, 0x38, - 0xe0, 0x02, 0x21, 0x88, 0x40, 0x00, 0x03, 0x00, 0x20, 0x12, 0x21, 0x20, 0xa0, - 0x02, 0x00, 0x80, 0x73, 0x36, 0x25, 0x98, 0x71, 0x02, 0x74, 0x83, 0x85, 0x27, - 0x7c, 0x83, 0x86, 0x27, 0x7f, 0x23, 0x00, 0x0c, 0x21, 0x38, 0xe0, 0x02, 0x21, - 0x88, 0x40, 0x00, 0x03, 0x00, 0x20, 0x12, 0x21, 0x20, 0x80, 0x02, 0x00, 0x40, - 0x73, 0x36, 0x25, 0x98, 0x71, 0x02, 0x80, 0x83, 0x85, 0x27, 0x7c, 0x83, 0x86, - 0x27, 0x7f, 0x23, 0x00, 0x0c, 0x21, 0x38, 0xe0, 0x02, 0x21, 0x88, 0x40, 0x00, - 0x03, 0x00, 0x20, 0x12, 0x21, 0x20, 0xa0, 0x02, 0x00, 0x80, 0x73, 0x36, 0x25, - 0x98, 0x71, 0x02, 0x80, 0x83, 0x85, 0x27, 0x7c, 0x83, 0x86, 0x27, 0x7f, 0x23, - 0x00, 0x0c, 0x21, 0x38, 0xe0, 0x02, 0x21, 0x88, 0x40, 0x00, 0x03, 0x00, 0x20, - 0x12, 0x21, 0x20, 0x80, 0x02, 0x00, 0x40, 0x73, 0x36, 0x25, 0x98, 0x71, 0x02, - 0x90, 0x83, 0x85, 0x27, 0x7c, 0x83, 0x86, 0x27, 0x7f, 0x23, 0x00, 0x0c, 0x21, - 0x38, 0xe0, 0x02, 0x21, 0x88, 0x40, 0x00, 0x03, 0x00, 0x20, 0x12, 0x21, 0x20, - 0xa0, 0x02, 0x00, 0x80, 0x73, 0x36, 0x25, 0x98, 0x71, 0x02, 0x90, 0x83, 0x85, - 0x27, 0x7c, 0x83, 0x86, 0x27, 0x7f, 0x23, 0x00, 0x0c, 0x21, 0x38, 0xe0, 0x02, - 0x21, 0x88, 0x40, 0x00, 0x03, 0x00, 0x20, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x40, 0x73, 0x36, 0x25, 0x98, 0x71, 0x02, 0x10, 0x00, 0x60, 0x12, 0x30, 0x00, - 0xc2, 0x26, 0xd1, 0x00, 0xe0, 0x16, 0x00, 0x80, 0x62, 0x32, 0x05, 0x00, 0x40, - 0x10, 0x00, 0x40, 0x62, 0x32, 0x9c, 0x83, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x62, 0x32, 0xc9, 0x00, 0x40, 0x10, 0x00, - 0x00, 0x00, 0x00, 0xc4, 0x83, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x25, 0x27, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0xa2, - 0xa3, 0x21, 0x20, 0x80, 0x02, 0x10, 0x00, 0xa5, 0x27, 0xf0, 0x83, 0x86, 0x27, - 0x7f, 0x23, 0x00, 0x0c, 0x21, 0x38, 0xe0, 0x02, 0x21, 0x88, 0x40, 0x00, 0x03, - 0x00, 0x20, 0x12, 0x21, 0x20, 0xa0, 0x02, 0x00, 0x80, 0x73, 0x36, 0x25, 0x98, - 0x71, 0x02, 0xf4, 0x83, 0x85, 0x27, 0xfc, 0x83, 0x86, 0x27, 0x7f, 0x23, 0x00, - 0x0c, 0x21, 0x38, 0xe0, 0x02, 0x21, 0x88, 0x40, 0x00, 0x03, 0x00, 0x20, 0x12, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x73, 0x36, 0x25, 0x98, 0x71, 0x02, 0x04, - 0x00, 0xe0, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x84, 0x27, 0xfe, 0x28, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x60, 0x12, 0x00, 0x00, 0x00, - 0x00, 0xa7, 0x00, 0xe0, 0x16, 0x00, 0x80, 0x62, 0x32, 0x05, 0x00, 0x40, 0x10, - 0x00, 0x40, 0x62, 0x32, 0x1c, 0x84, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x40, 0x62, 0x32, 0x9f, 0x00, 0x40, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x44, 0x84, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x25, 0x27, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x82, 0x92, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x42, 0x34, 0x08, 0x00, 0x82, 0xa2, 0x08, - 0x00, 0xa2, 0x92, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x42, 0x34, 0x08, 0x00, - 0xa2, 0xa2, 0x18, 0x00, 0xa0, 0xa3, 0x68, 0x00, 0xa0, 0xa3, 0x21, 0x90, 0x00, - 0x00, 0x21, 0x88, 0x00, 0x00, 0x21, 0xb0, 0x00, 0x00, 0x18, 0x00, 0xbe, 0x27, - 0x21, 0x10, 0x20, 0x02, 0x4c, 0x00, 0x08, 0x3c, 0x40, 0x4b, 0x08, 0x35, 0x2a, - 0x10, 0x02, 0x01, 0x08, 0x00, 0x40, 0x10, 0x01, 0x00, 0x31, 0x26, 0x04, 0x00, - 0xe0, 0x16, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x84, 0x84, 0x27, 0xfe, 0x28, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x25, 0x27, 0x00, 0x08, 0x08, 0x80, 0x73, 0x36, - 0x14, 0x00, 0x82, 0x92, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x30, 0xf0, - 0xff, 0x40, 0x10, 0x21, 0x10, 0x20, 0x02, 0x00, 0x00, 0x90, 0x92, 0x21, 0x88, - 0x00, 0x00, 0x00, 0x26, 0x10, 0x00, 0x53, 0x22, 0x00, 0x0c, 0x03, 0x26, 0x04, - 0x00, 0x02, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x16, 0x24, - 0xe6, 0xff, 0xc0, 0x12, 0x21, 0x10, 0x20, 0x02, 0x00, 0x16, 0x10, 0x00, 0x03, - 0x16, 0x02, 0x00, 0x0d, 0x00, 0x08, 0x24, 0x04, 0x00, 0x48, 0x10, 0x21, 0x10, - 0xd2, 0x03, 0x00, 0x00, 0x50, 0xa0, 0x9a, 0x26, 0x00, 0x08, 0x01, 0x00, 0x52, - 0x26, 0x18, 0x00, 0xb0, 0x27, 0x21, 0x10, 0x12, 0x02, 0x00, 0x00, 0x40, 0xa0, - 0x94, 0x84, 0x85, 0x27, 0x18, 0x22, 0x00, 0x0c, 0x21, 0x20, 0x00, 0x02, 0x12, - 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x84, 0x85, 0x27, 0x18, 0x22, - 0x00, 0x0c, 0x21, 0x20, 0x00, 0x02, 0x14, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, - 0x00, 0xa4, 0x84, 0x85, 0x27, 0x18, 0x22, 0x00, 0x0c, 0x21, 0x20, 0x00, 0x02, - 0x0f, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xe0, 0x16, 0x00, - 0x00, 0x00, 0x00, 0xac, 0x84, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x28, - 0x00, 0x02, 0x25, 0x27, 0x00, 0x08, 0x20, 0x80, 0x73, 0x36, 0x04, 0x00, 0xe0, - 0x16, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x84, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, - 0x18, 0x00, 0xa5, 0x27, 0x25, 0x27, 0x00, 0x08, 0x10, 0x80, 0x73, 0x36, 0x21, - 0x90, 0x00, 0x00, 0x21, 0x88, 0x00, 0x00, 0x21, 0xb0, 0x00, 0x00, 0x68, 0x00, - 0xbe, 0x27, 0x21, 0x10, 0x20, 0x02, 0x4c, 0x00, 0x08, 0x3c, 0x40, 0x4b, 0x08, - 0x35, 0x2a, 0x10, 0x02, 0x01, 0x08, 0x00, 0x40, 0x10, 0x01, 0x00, 0x31, 0x26, - 0x04, 0x00, 0xe0, 0x16, 0x00, 0x00, 0x00, 0x00, 0xe8, 0x84, 0x84, 0x27, 0xfe, - 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x25, 0x27, 0x00, 0x08, 0x08, 0x40, - 0x73, 0x36, 0x14, 0x00, 0xa2, 0x92, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, - 0x30, 0xf0, 0xff, 0x40, 0x10, 0x21, 0x10, 0x20, 0x02, 0x00, 0x00, 0xb0, 0x92, - 0x21, 0x88, 0x00, 0x00, 0x00, 0x26, 0x10, 0x00, 0x53, 0x22, 0x00, 0x0c, 0x03, - 0x26, 0x04, 0x00, 0x02, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x16, 0x24, 0xe6, 0xff, 0xc0, 0x12, 0x21, 0x10, 0x20, 0x02, 0x00, 0x16, 0x10, - 0x00, 0x03, 0x16, 0x02, 0x00, 0x0d, 0x00, 0x08, 0x24, 0x04, 0x00, 0x48, 0x10, - 0x21, 0x10, 0xd2, 0x03, 0x00, 0x00, 0x50, 0xa0, 0xe2, 0x26, 0x00, 0x08, 0x01, - 0x00, 0x52, 0x26, 0x68, 0x00, 0xb0, 0x27, 0x21, 0x10, 0x12, 0x02, 0x00, 0x00, - 0x40, 0xa0, 0x94, 0x84, 0x85, 0x27, 0x18, 0x22, 0x00, 0x0c, 0x21, 0x20, 0x00, - 0x02, 0x12, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x84, 0x85, 0x27, - 0x18, 0x22, 0x00, 0x0c, 0x21, 0x20, 0x00, 0x02, 0x13, 0x00, 0x40, 0x14, 0x00, - 0x00, 0x00, 0x00, 0xa4, 0x84, 0x85, 0x27, 0x18, 0x22, 0x00, 0x0c, 0x21, 0x20, - 0x00, 0x02, 0x0e, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xe0, - 0x16, 0x00, 0x00, 0x00, 0x00, 0xac, 0x84, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, - 0x21, 0x28, 0x00, 0x02, 0x25, 0x27, 0x00, 0x08, 0x20, 0x40, 0x73, 0x36, 0x04, - 0x00, 0xe0, 0x16, 0x00, 0x00, 0x00, 0x00, 0x14, 0x85, 0x84, 0x27, 0xfe, 0x28, - 0x00, 0x0c, 0x68, 0x00, 0xa5, 0x27, 0x10, 0x40, 0x73, 0x36, 0x10, 0x00, 0x82, - 0x92, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x42, 0x30, 0x10, 0x00, 0x82, 0xa2, - 0x10, 0x00, 0xa2, 0x92, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x42, 0x30, 0x10, - 0x00, 0xa2, 0xa2, 0x07, 0x00, 0xe0, 0x16, 0x21, 0x10, 0x60, 0x02, 0x05, 0x00, - 0x60, 0x16, 0x00, 0x00, 0x00, 0x00, 0x40, 0x85, 0x84, 0x27, 0xfe, 0x28, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x60, 0x02, 0xe4, 0x00, 0xbf, 0x8f, - 0xe0, 0x00, 0xbe, 0x8f, 0xdc, 0x00, 0xb7, 0x8f, 0xd8, 0x00, 0xb6, 0x8f, 0xd4, - 0x00, 0xb5, 0x8f, 0xd0, 0x00, 0xb4, 0x8f, 0xcc, 0x00, 0xb3, 0x8f, 0xc8, 0x00, - 0xb2, 0x8f, 0xc4, 0x00, 0xb1, 0x8f, 0xc0, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, - 0x03, 0xe8, 0x00, 0xbd, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x21, 0x30, 0x00, 0x00, 0x21, 0x28, 0x00, 0x00, 0x21, - 0x10, 0x85, 0x00, 0x00, 0x00, 0x42, 0x80, 0xc0, 0x18, 0x05, 0x00, 0x04, 0x10, - 0x62, 0x00, 0x25, 0x30, 0xc2, 0x00, 0x01, 0x00, 0xa5, 0x24, 0x04, 0x00, 0xa2, - 0x2c, 0xf8, 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xe0, 0x03, - 0x21, 0x10, 0xc0, 0x00, 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x44, - 0x27, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x02, 0x00, 0x00, 0x1a, - 0x02, 0x00, 0xff, 0x00, 0x04, 0x3c, 0x24, 0x18, 0x64, 0x00, 0x25, 0x28, 0xa3, - 0x00, 0x02, 0x1a, 0x02, 0x00, 0x00, 0xff, 0x63, 0x30, 0x25, 0x28, 0xa3, 0x00, - 0x02, 0x16, 0x02, 0x00, 0x10, 0x00, 0xbf, 0x8f, 0x25, 0x10, 0xa2, 0x00, 0x08, - 0x00, 0xe0, 0x03, 0x18, 0x00, 0xbd, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xa8, 0xff, 0xbd, 0x27, 0x54, 0x00, 0xbf, 0xaf, 0x50, 0x00, 0xb4, - 0xaf, 0x4c, 0x00, 0xb3, 0xaf, 0x48, 0x00, 0xb2, 0xaf, 0x44, 0x00, 0xb1, 0xaf, - 0x40, 0x00, 0xb0, 0xaf, 0x21, 0x80, 0xe0, 0x00, 0x68, 0x00, 0xa7, 0x8f, 0x21, - 0x98, 0xc0, 0x00, 0x07, 0x00, 0xa0, 0x10, 0x21, 0xa0, 0x00, 0x00, 0x06, 0x00, - 0xe1, 0x04, 0x33, 0x00, 0xb1, 0x27, 0x2d, 0x00, 0x14, 0x24, 0x03, 0x00, 0x00, - 0x12, 0x23, 0x38, 0x07, 0x00, 0xff, 0xff, 0x10, 0x26, 0x33, 0x00, 0xb1, 0x27, - 0x33, 0x00, 0xa0, 0xa3, 0xff, 0xff, 0x31, 0x26, 0x1b, 0x00, 0xe4, 0x00, 0x02, - 0x00, 0x80, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x07, 0x00, 0x10, 0x10, - 0x00, 0x00, 0x21, 0x08, 0x5c, 0x00, 0x90, 0x85, 0x22, 0x90, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x12, 0x00, 0x00, 0x22, 0xa2, 0xff, 0xff, 0x10, 0x26, - 0x1b, 0x00, 0xe4, 0x00, 0x02, 0x00, 0x80, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, - 0x00, 0x07, 0x00, 0x12, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xed, 0xff, 0xe0, 0x14, 0xff, 0xff, 0x31, 0x26, 0x01, 0x00, 0x31, - 0x26, 0x00, 0x16, 0x13, 0x00, 0x03, 0x16, 0x02, 0x00, 0x01, 0x00, 0x03, 0x24, - 0x0b, 0x00, 0x43, 0x14, 0x21, 0x20, 0x80, 0x02, 0xff, 0xff, 0x10, 0x26, 0xff, - 0xff, 0x02, 0x24, 0x07, 0x00, 0x02, 0x12, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x12, 0x24, 0x64, 0x30, 0x00, 0x0c, 0x20, 0x00, 0x04, 0x24, 0xff, 0xff, 0x10, - 0x26, 0xfc, 0xff, 0x12, 0x16, 0x21, 0x20, 0x80, 0x02, 0x04, 0x00, 0x80, 0x10, - 0x00, 0x16, 0x13, 0x00, 0x64, 0x30, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x16, 0x13, 0x00, 0x03, 0x16, 0x02, 0x00, 0x02, 0x00, 0x03, 0x24, 0x0a, 0x00, - 0x43, 0x14, 0xff, 0xff, 0x02, 0x24, 0xff, 0xff, 0x10, 0x26, 0x07, 0x00, 0x02, - 0x12, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x12, 0x24, 0x64, 0x30, 0x00, 0x0c, - 0x30, 0x00, 0x04, 0x24, 0xff, 0xff, 0x10, 0x26, 0xfc, 0xff, 0x12, 0x16, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, - 0x40, 0x10, 0x21, 0x20, 0x40, 0x00, 0x00, 0x26, 0x04, 0x00, 0x01, 0x00, 0x31, - 0x26, 0x64, 0x30, 0x00, 0x0c, 0x03, 0x26, 0x04, 0x00, 0x00, 0x00, 0x24, 0x92, - 0x00, 0x00, 0x22, 0x82, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x40, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x16, 0x13, 0x00, 0x03, 0x16, 0x02, 0x00, 0x03, 0x00, - 0x03, 0x24, 0x09, 0x00, 0x43, 0x14, 0xff, 0xff, 0x10, 0x26, 0xff, 0xff, 0x02, - 0x24, 0x06, 0x00, 0x02, 0x12, 0xff, 0xff, 0x11, 0x24, 0x64, 0x30, 0x00, 0x0c, - 0x20, 0x00, 0x04, 0x24, 0xff, 0xff, 0x10, 0x26, 0xfc, 0xff, 0x11, 0x16, 0x00, - 0x00, 0x00, 0x00, 0x54, 0x00, 0xbf, 0x8f, 0x50, 0x00, 0xb4, 0x8f, 0x4c, 0x00, - 0xb3, 0x8f, 0x48, 0x00, 0xb2, 0x8f, 0x44, 0x00, 0xb1, 0x8f, 0x40, 0x00, 0xb0, - 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x58, 0x00, 0xbd, 0x27, 0xd4, 0x27, 0x00, 0x08, - 0x21, 0x18, 0x00, 0x00, 0x01, 0x00, 0x63, 0x24, 0x00, 0x00, 0x82, 0x80, 0x00, - 0x00, 0x00, 0x00, 0xfc, 0xff, 0x40, 0x14, 0x01, 0x00, 0x84, 0x24, 0x08, 0x00, - 0xe0, 0x03, 0x21, 0x10, 0x60, 0x00, 0xd8, 0xff, 0xbd, 0x27, 0x20, 0x00, 0xbf, - 0xaf, 0x1c, 0x00, 0xb1, 0xaf, 0x18, 0x00, 0xb0, 0xaf, 0x21, 0x88, 0xc0, 0x00, - 0x00, 0x00, 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x40, 0x10, 0x21, - 0x18, 0x40, 0x00, 0x21, 0x80, 0x60, 0x00, 0xff, 0x00, 0x03, 0x32, 0x0a, 0x00, - 0x02, 0x24, 0x0c, 0x00, 0x62, 0x10, 0x0b, 0x00, 0x62, 0x28, 0x05, 0x00, 0x40, - 0x10, 0x09, 0x00, 0x02, 0x24, 0x10, 0x00, 0x62, 0x10, 0x20, 0x00, 0x62, 0x2c, - 0xff, 0x27, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x02, 0x24, 0x07, - 0x00, 0x62, 0x10, 0xff, 0x00, 0x03, 0x32, 0xff, 0x27, 0x00, 0x08, 0x20, 0x00, - 0x62, 0x2c, 0x64, 0x30, 0x00, 0x0c, 0x5c, 0x00, 0x04, 0x24, 0x1c, 0x28, 0x00, - 0x08, 0x6e, 0x00, 0x04, 0x24, 0x64, 0x30, 0x00, 0x0c, 0x5c, 0x00, 0x04, 0x24, - 0x1c, 0x28, 0x00, 0x08, 0x72, 0x00, 0x04, 0x24, 0x64, 0x30, 0x00, 0x0c, 0x5c, - 0x00, 0x04, 0x24, 0x1c, 0x28, 0x00, 0x08, 0x74, 0x00, 0x04, 0x24, 0x03, 0x00, - 0x40, 0x14, 0xff, 0x00, 0x02, 0x24, 0x18, 0x00, 0x62, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x64, 0x30, 0x00, 0x0c, 0x5c, 0x00, 0x04, 0x24, 0x64, 0x30, 0x00, 0x0c, - 0x30, 0x00, 0x04, 0x24, 0x64, 0x30, 0x00, 0x0c, 0x78, 0x00, 0x04, 0x24, 0x02, - 0x21, 0x10, 0x00, 0x0a, 0x00, 0x82, 0x28, 0x03, 0x00, 0x40, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x10, 0x28, 0x00, 0x08, 0x30, 0x00, 0x84, 0x24, 0x37, 0x00, 0x84, - 0x24, 0x64, 0x30, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x04, 0x32, - 0x0a, 0x00, 0x82, 0x28, 0x03, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1c, - 0x28, 0x00, 0x08, 0x30, 0x00, 0x84, 0x24, 0x1c, 0x28, 0x00, 0x08, 0x37, 0x00, - 0x84, 0x24, 0x00, 0x00, 0x24, 0x82, 0x00, 0x00, 0x00, 0x00, 0x64, 0x30, 0x00, - 0x0c, 0x01, 0x00, 0x31, 0x26, 0x00, 0x00, 0x23, 0x92, 0x00, 0x00, 0x22, 0x82, - 0x00, 0x00, 0x00, 0x00, 0xc2, 0xff, 0x40, 0x14, 0x21, 0x80, 0x60, 0x00, 0x20, - 0x00, 0xbf, 0x8f, 0x1c, 0x00, 0xb1, 0x8f, 0x18, 0x00, 0xb0, 0x8f, 0x08, 0x00, - 0xe0, 0x03, 0x28, 0x00, 0xbd, 0x27, 0xd0, 0xff, 0xbd, 0x27, 0x28, 0x00, 0xbf, - 0xaf, 0x24, 0x00, 0xb3, 0xaf, 0x20, 0x00, 0xb2, 0xaf, 0x1c, 0x00, 0xb1, 0xaf, - 0x18, 0x00, 0xb0, 0xaf, 0x21, 0x80, 0xa0, 0x00, 0x21, 0x88, 0xc0, 0x00, 0x21, - 0x98, 0x80, 0x00, 0xd1, 0x27, 0x00, 0x0c, 0x21, 0x20, 0x20, 0x02, 0x21, 0x20, - 0x40, 0x00, 0x2a, 0x10, 0x90, 0x00, 0x02, 0x00, 0x40, 0x10, 0x21, 0x18, 0x00, - 0x00, 0x23, 0x18, 0x04, 0x02, 0x21, 0x80, 0x60, 0x00, 0x00, 0x16, 0x13, 0x00, - 0x03, 0x16, 0x02, 0x00, 0x01, 0x00, 0x03, 0x24, 0x0b, 0x00, 0x43, 0x14, 0x00, - 0x16, 0x13, 0x00, 0xff, 0xff, 0x10, 0x26, 0xff, 0xff, 0x02, 0x24, 0x07, 0x00, - 0x02, 0x12, 0x00, 0x16, 0x13, 0x00, 0xff, 0xff, 0x12, 0x24, 0x64, 0x30, 0x00, - 0x0c, 0x20, 0x00, 0x04, 0x24, 0xff, 0xff, 0x10, 0x26, 0xfc, 0xff, 0x12, 0x16, - 0x00, 0x16, 0x13, 0x00, 0x03, 0x16, 0x02, 0x00, 0x02, 0x00, 0x03, 0x24, 0x0a, - 0x00, 0x43, 0x14, 0xff, 0xff, 0x02, 0x24, 0xff, 0xff, 0x10, 0x26, 0x07, 0x00, - 0x02, 0x12, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x12, 0x24, 0x64, 0x30, 0x00, - 0x0c, 0x30, 0x00, 0x04, 0x24, 0xff, 0xff, 0x10, 0x26, 0xfc, 0xff, 0x12, 0x16, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, 0x0a, - 0x00, 0x40, 0x10, 0x21, 0x20, 0x40, 0x00, 0x00, 0x26, 0x04, 0x00, 0x01, 0x00, - 0x31, 0x26, 0x64, 0x30, 0x00, 0x0c, 0x03, 0x26, 0x04, 0x00, 0x00, 0x00, 0x24, - 0x92, 0x00, 0x00, 0x22, 0x82, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x13, 0x00, 0x03, 0x16, 0x02, 0x00, 0x03, - 0x00, 0x03, 0x24, 0x09, 0x00, 0x43, 0x14, 0xff, 0xff, 0x10, 0x26, 0xff, 0xff, - 0x02, 0x24, 0x06, 0x00, 0x02, 0x12, 0xff, 0xff, 0x11, 0x24, 0x64, 0x30, 0x00, - 0x0c, 0x20, 0x00, 0x04, 0x24, 0xff, 0xff, 0x10, 0x26, 0xfc, 0xff, 0x11, 0x16, - 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0xbf, 0x8f, 0x24, 0x00, 0xb3, 0x8f, 0x20, - 0x00, 0xb2, 0x8f, 0x1c, 0x00, 0xb1, 0x8f, 0x18, 0x00, 0xb0, 0x8f, 0x08, 0x00, - 0xe0, 0x03, 0x30, 0x00, 0xbd, 0x27, 0xd0, 0xff, 0xbd, 0x27, 0x2c, 0x00, 0xbf, - 0xaf, 0x28, 0x00, 0xb4, 0xaf, 0x24, 0x00, 0xb3, 0xaf, 0x20, 0x00, 0xb2, 0xaf, - 0x1c, 0x00, 0xb1, 0xaf, 0x18, 0x00, 0xb0, 0xaf, 0x21, 0x98, 0x80, 0x00, 0x21, - 0xa0, 0xa0, 0x00, 0x21, 0x80, 0x00, 0x00, 0x21, 0x88, 0x00, 0x00, 0x01, 0x00, - 0x62, 0x82, 0x00, 0x00, 0x00, 0x00, 0x71, 0x00, 0x40, 0x10, 0x01, 0x00, 0x12, - 0x24, 0x21, 0x10, 0x72, 0x02, 0x00, 0x00, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, - 0xdb, 0xff, 0x42, 0x24, 0x00, 0x16, 0x02, 0x00, 0x03, 0x1e, 0x02, 0x00, 0x54, - 0x00, 0x62, 0x2c, 0x68, 0x00, 0x40, 0x10, 0x80, 0x10, 0x03, 0x00, 0x01, 0xa0, - 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0xb0, 0xfc, 0x22, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x30, 0x00, 0x0c, - 0x25, 0x00, 0x04, 0x24, 0xde, 0x28, 0x00, 0x08, 0x21, 0x10, 0x72, 0x02, 0x21, - 0x20, 0x00, 0x00, 0xa4, 0x85, 0x86, 0x27, 0x28, 0x28, 0x00, 0x0c, 0x21, 0x28, - 0x00, 0x00, 0xde, 0x28, 0x00, 0x08, 0x21, 0x10, 0x72, 0x02, 0x00, 0x26, 0x14, - 0x00, 0x64, 0x30, 0x00, 0x0c, 0x03, 0x26, 0x04, 0x00, 0xde, 0x28, 0x00, 0x08, - 0x21, 0x10, 0x72, 0x02, 0x10, 0x00, 0xb4, 0xaf, 0x02, 0x00, 0x04, 0x24, 0x21, - 0x28, 0x00, 0x00, 0x21, 0x30, 0x00, 0x02, 0x64, 0x27, 0x00, 0x0c, 0x21, 0x38, - 0x20, 0x02, 0x64, 0x30, 0x00, 0x0c, 0x42, 0x00, 0x04, 0x24, 0xde, 0x28, 0x00, - 0x08, 0x21, 0x10, 0x72, 0x02, 0x10, 0x00, 0xb4, 0xaf, 0x08, 0x00, 0x04, 0x24, - 0x21, 0x28, 0x00, 0x00, 0x21, 0x30, 0x00, 0x02, 0x64, 0x27, 0x00, 0x0c, 0x21, - 0x38, 0x20, 0x02, 0x64, 0x30, 0x00, 0x0c, 0x51, 0x00, 0x04, 0x24, 0xde, 0x28, - 0x00, 0x08, 0x21, 0x10, 0x72, 0x02, 0x10, 0x00, 0xb4, 0xaf, 0x0a, 0x00, 0x04, - 0x24, 0x01, 0x00, 0x05, 0x24, 0x21, 0x30, 0x00, 0x02, 0x64, 0x27, 0x00, 0x0c, - 0x21, 0x38, 0x20, 0x02, 0xde, 0x28, 0x00, 0x08, 0x21, 0x10, 0x72, 0x02, 0x10, - 0x00, 0xb4, 0xaf, 0x0a, 0x00, 0x04, 0x24, 0x21, 0x28, 0x00, 0x00, 0x21, 0x30, - 0x00, 0x02, 0x64, 0x27, 0x00, 0x0c, 0x21, 0x38, 0x20, 0x02, 0xde, 0x28, 0x00, - 0x08, 0x21, 0x10, 0x72, 0x02, 0x21, 0x20, 0x00, 0x00, 0xb0, 0x85, 0x86, 0x27, - 0x28, 0x28, 0x00, 0x0c, 0x21, 0x28, 0x00, 0x00, 0x10, 0x00, 0xb4, 0xaf, 0x10, - 0x00, 0x04, 0x24, 0x21, 0x28, 0x00, 0x00, 0x21, 0x30, 0x00, 0x02, 0x64, 0x27, - 0x00, 0x0c, 0x21, 0x38, 0x20, 0x02, 0xde, 0x28, 0x00, 0x08, 0x21, 0x10, 0x72, - 0x02, 0x21, 0x20, 0x00, 0x02, 0x21, 0x28, 0x20, 0x02, 0x28, 0x28, 0x00, 0x0c, - 0x21, 0x30, 0x80, 0x02, 0xde, 0x28, 0x00, 0x08, 0x21, 0x10, 0x72, 0x02, 0x21, - 0x20, 0x00, 0x02, 0x21, 0x28, 0x20, 0x02, 0xda, 0x27, 0x00, 0x0c, 0x21, 0x30, - 0x80, 0x02, 0x21, 0x10, 0x72, 0x02, 0xf6, 0x28, 0x00, 0x08, 0x01, 0x00, 0x42, - 0x24, 0xef, 0x28, 0x00, 0x08, 0x03, 0x00, 0x10, 0x24, 0x03, 0x00, 0x00, 0x16, - 0x80, 0x10, 0x11, 0x00, 0x02, 0x00, 0x10, 0x24, 0x80, 0x10, 0x11, 0x00, 0x21, - 0x10, 0x51, 0x00, 0x40, 0x10, 0x02, 0x00, 0xd0, 0xff, 0x51, 0x24, 0x21, 0x10, - 0x72, 0x02, 0x00, 0x00, 0x42, 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x16, 0x21, 0x88, 0x22, 0x02, 0x01, 0x00, 0x10, 0x24, 0x01, 0x00, 0x52, 0x26, - 0x21, 0x10, 0x72, 0x02, 0x00, 0x00, 0x42, 0x80, 0x00, 0x00, 0x00, 0x00, 0x92, - 0xff, 0x40, 0x14, 0x21, 0x10, 0x72, 0x02, 0x01, 0x00, 0x62, 0x26, 0x2c, 0x00, - 0xbf, 0x8f, 0x28, 0x00, 0xb4, 0x8f, 0x24, 0x00, 0xb3, 0x8f, 0x20, 0x00, 0xb2, - 0x8f, 0x1c, 0x00, 0xb1, 0x8f, 0x18, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, - 0x30, 0x00, 0xbd, 0x27, 0x00, 0x00, 0xa4, 0xaf, 0x04, 0x00, 0xa5, 0xaf, 0x08, - 0x00, 0xa6, 0xaf, 0x0c, 0x00, 0xa7, 0xaf, 0xd0, 0xff, 0xbd, 0x27, 0x2c, 0x00, - 0xbf, 0xaf, 0x28, 0x00, 0xb4, 0xaf, 0x24, 0x00, 0xb3, 0xaf, 0x20, 0x00, 0xb2, - 0xaf, 0x1c, 0x00, 0xb1, 0xaf, 0x18, 0x00, 0xb0, 0xaf, 0x21, 0x80, 0x80, 0x00, - 0x34, 0x00, 0xb1, 0x27, 0x00, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x22, - 0x00, 0x40, 0x10, 0x21, 0x18, 0x40, 0x00, 0x25, 0x00, 0x14, 0x24, 0x45, 0x00, - 0x13, 0x24, 0xfc, 0xff, 0x12, 0x24, 0x00, 0x16, 0x03, 0x00, 0x03, 0x16, 0x02, - 0x00, 0x12, 0x00, 0x54, 0x14, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x82, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x62, 0x10, 0x21, 0x20, 0x00, 0x02, 0x04, - 0x00, 0x73, 0x14, 0x03, 0x00, 0x22, 0x26, 0x21, 0x20, 0x00, 0x02, 0x23, 0x29, - 0x00, 0x08, 0x21, 0x28, 0x00, 0x00, 0x24, 0x10, 0x52, 0x00, 0x04, 0x00, 0x51, - 0x24, 0x21, 0x20, 0x00, 0x02, 0xfc, 0xff, 0x25, 0x8e, 0x76, 0x28, 0x00, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0x2b, 0x29, 0x00, 0x08, 0x21, 0x80, 0x40, 0x00, 0x00, - 0x00, 0x04, 0x82, 0x00, 0x00, 0x00, 0x00, 0x64, 0x30, 0x00, 0x0c, 0x01, 0x00, - 0x10, 0x26, 0x00, 0x00, 0x03, 0x92, 0x00, 0x00, 0x02, 0x82, 0x00, 0x00, 0x00, - 0x00, 0xe4, 0xff, 0x40, 0x14, 0x00, 0x16, 0x03, 0x00, 0x2c, 0x00, 0xbf, 0x8f, - 0x28, 0x00, 0xb4, 0x8f, 0x24, 0x00, 0xb3, 0x8f, 0x20, 0x00, 0xb2, 0x8f, 0x1c, - 0x00, 0xb1, 0x8f, 0x18, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x30, 0x00, - 0xbd, 0x27, 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x00, 0xa3, 0x04, - 0x3c, 0x30, 0x0c, 0x84, 0x34, 0x00, 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x82, 0x90, 0x00, - 0x00, 0x00, 0x00, 0x3f, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x83, 0x8c, 0xff, 0x3f, 0x02, 0x3c, 0xff, 0xff, 0x42, 0x34, 0x24, 0x18, 0x62, - 0x00, 0x00, 0x80, 0x02, 0x3c, 0x25, 0x18, 0x62, 0x00, 0x08, 0x00, 0x82, 0x94, - 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x42, 0x2c, 0x04, 0x00, 0x40, 0x14, 0x00, - 0xa3, 0x02, 0x3c, 0x80, 0x00, 0x02, 0x24, 0x08, 0x00, 0x82, 0xa4, 0x00, 0xa3, - 0x02, 0x3c, 0x30, 0x0c, 0x42, 0x34, 0x00, 0x00, 0x42, 0x90, 0x00, 0x00, 0x00, - 0x00, 0xff, 0x00, 0x44, 0x30, 0x02, 0x00, 0x02, 0x24, 0x0f, 0x00, 0x82, 0x10, - 0x03, 0x00, 0x82, 0x28, 0x05, 0x00, 0x40, 0x10, 0x01, 0x00, 0x02, 0x24, 0x08, - 0x00, 0x82, 0x10, 0x21, 0x28, 0x60, 0x00, 0x82, 0x29, 0x00, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x03, 0x00, 0x02, 0x24, 0x1b, 0x00, 0x82, 0x10, 0x00, 0xa3, 0x02, - 0x3c, 0x82, 0x29, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x03, 0x3c, - 0x69, 0x29, 0x00, 0x08, 0x3a, 0x0c, 0x63, 0x34, 0x00, 0xa3, 0x05, 0x3c, 0x3a, - 0x0c, 0xa5, 0x34, 0x00, 0xa3, 0x02, 0x3c, 0x30, 0x0c, 0x42, 0x34, 0x08, 0x00, - 0x42, 0x94, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x44, 0x30, 0xff, 0xff, 0x84, - 0x24, 0x09, 0x00, 0x80, 0x04, 0x00, 0xa3, 0x02, 0x3c, 0x00, 0x00, 0xa2, 0x90, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0xa0, 0x01, 0x00, 0xa5, 0x24, 0xff, - 0xff, 0x84, 0x24, 0xfa, 0xff, 0x81, 0x04, 0x01, 0x00, 0x63, 0x24, 0x00, 0xa3, - 0x02, 0x3c, 0x30, 0x0c, 0x42, 0x34, 0x82, 0x29, 0x00, 0x08, 0x00, 0x00, 0x40, - 0xa0, 0x30, 0x0c, 0x42, 0x34, 0x00, 0x00, 0x40, 0xa0, 0x04, 0x00, 0x42, 0x8c, - 0x00, 0x00, 0x00, 0x00, 0x09, 0xf8, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, - 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xbd, - 0x27, 0x7c, 0x00, 0xbf, 0xaf, 0x78, 0x00, 0xb4, 0xaf, 0x74, 0x00, 0xb3, 0xaf, - 0x70, 0x00, 0xb2, 0xaf, 0x6c, 0x00, 0xb1, 0xaf, 0x68, 0x00, 0xb0, 0xaf, 0x00, - 0xa3, 0x11, 0x3c, 0xc0, 0x85, 0x84, 0x27, 0x44, 0x27, 0x00, 0x0c, 0x80, 0x01, - 0x31, 0x36, 0xc8, 0x85, 0x84, 0x27, 0x44, 0x27, 0x00, 0x0c, 0x58, 0x00, 0xa2, - 0xaf, 0xd0, 0x85, 0x84, 0x27, 0x44, 0x27, 0x00, 0x0c, 0x5c, 0x00, 0xa2, 0xaf, - 0xd8, 0x85, 0x84, 0x27, 0x44, 0x27, 0x00, 0x0c, 0x60, 0x00, 0xa2, 0xaf, 0x64, - 0x00, 0xa2, 0xaf, 0x58, 0x00, 0xa2, 0x8f, 0x5c, 0x00, 0xa3, 0x8f, 0x60, 0x00, - 0xa4, 0x8f, 0x64, 0x00, 0xa5, 0x8f, 0x48, 0x00, 0xa2, 0xaf, 0x4c, 0x00, 0xa3, - 0xaf, 0x50, 0x00, 0xa4, 0xaf, 0x54, 0x00, 0xa5, 0xaf, 0xe0, 0x85, 0x84, 0x27, - 0x44, 0x27, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x01, 0x3c, 0x04, - 0x01, 0x22, 0xac, 0x10, 0x00, 0x05, 0x3c, 0x21, 0x30, 0x00, 0x00, 0x18, 0x00, - 0xa7, 0x27, 0x01, 0x00, 0x08, 0x3c, 0x80, 0x18, 0x06, 0x00, 0x21, 0x18, 0x67, - 0x00, 0x42, 0x20, 0x05, 0x00, 0x00, 0xa3, 0x02, 0x3c, 0x21, 0x10, 0x44, 0x00, - 0xf8, 0xff, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0xac, 0x00, - 0xa3, 0x02, 0x3c, 0x21, 0x10, 0x44, 0x00, 0xfc, 0xff, 0x42, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x18, 0x00, 0x62, 0xac, 0x21, 0x28, 0x80, 0x00, 0x2b, 0x10, 0x05, - 0x01, 0xf0, 0xff, 0x40, 0x14, 0x01, 0x00, 0xc6, 0x24, 0x10, 0x00, 0x05, 0x3c, - 0x21, 0x30, 0x00, 0x00, 0x23, 0x01, 0x04, 0x3c, 0x67, 0x45, 0x84, 0x34, 0xdc, - 0xfe, 0x03, 0x3c, 0x98, 0xba, 0x63, 0x34, 0xf0, 0xf0, 0x09, 0x3c, 0xf0, 0xf0, - 0x29, 0x35, 0x0f, 0x0f, 0x08, 0x3c, 0x0f, 0x0f, 0x08, 0x35, 0x01, 0x00, 0x07, - 0x3c, 0x00, 0xa3, 0x01, 0x3c, 0x21, 0x08, 0x25, 0x00, 0xf8, 0xff, 0x24, 0xac, - 0x00, 0xa3, 0x01, 0x3c, 0x21, 0x08, 0x25, 0x00, 0xfc, 0xff, 0x23, 0xac, 0x42, - 0x10, 0x05, 0x00, 0x00, 0xa3, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0xf8, 0xff, - 0x29, 0xac, 0x00, 0xa3, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0xfc, 0xff, 0x28, - 0xac, 0x00, 0xa3, 0x02, 0x3c, 0x21, 0x10, 0x45, 0x00, 0xf8, 0xff, 0x42, 0x8c, - 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x44, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xa3, 0x02, 0x3c, 0x21, 0x10, 0x45, 0x00, 0xfc, 0xff, 0x42, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x05, 0x00, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0x42, 0x28, 0x05, - 0x00, 0x2b, 0x10, 0xe5, 0x00, 0xe4, 0xff, 0x40, 0x14, 0x01, 0x00, 0xc6, 0x24, - 0x42, 0x20, 0x05, 0x00, 0x80, 0x10, 0x06, 0x00, 0x18, 0x00, 0xa3, 0x27, 0x21, - 0x10, 0x43, 0x00, 0x00, 0x00, 0x43, 0x8c, 0x00, 0xa3, 0x01, 0x3c, 0x21, 0x08, - 0x24, 0x00, 0xf8, 0xff, 0x23, 0xac, 0x18, 0x00, 0x42, 0x8c, 0x00, 0xa3, 0x01, - 0x3c, 0x21, 0x08, 0x24, 0x00, 0xfc, 0xff, 0x22, 0xac, 0x10, 0x00, 0x25, 0xae, - 0xe8, 0x85, 0x84, 0x27, 0x44, 0x27, 0x00, 0x0c, 0x00, 0xa3, 0x10, 0x3c, 0x00, - 0xa3, 0x01, 0x3c, 0x04, 0x01, 0x22, 0xac, 0xf0, 0x85, 0x84, 0x27, 0xfe, 0x28, - 0x00, 0x0c, 0x80, 0x01, 0x10, 0x36, 0x0c, 0x86, 0x84, 0x27, 0x10, 0x00, 0x05, - 0x8e, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x20, 0x86, 0x84, 0x27, - 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x38, 0x86, 0x84, 0x27, 0xfe, - 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa1, 0x03, 0x3c, 0x00, 0x80, - 0x63, 0x34, 0x02, 0x00, 0x02, 0x24, 0x40, 0x9a, 0x82, 0xaf, 0x02, 0x00, 0x02, - 0x24, 0x00, 0x00, 0x62, 0xa4, 0x01, 0xa0, 0x04, 0x3c, 0x00, 0x80, 0x84, 0x24, - 0x01, 0xa0, 0x05, 0x3c, 0x08, 0x22, 0x00, 0x0c, 0xd0, 0x18, 0xa5, 0x24, 0x20, - 0x00, 0x02, 0xae, 0x40, 0x86, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x20, 0x00, 0x03, 0x8e, 0xff, 0xff, 0x02, 0x24, 0x0b, 0x00, 0x62, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x42, 0x34, 0x0c, 0x00, 0x02, 0xae, 0x58, 0x86, 0x84, 0x27, 0x20, - 0x00, 0x05, 0x8e, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x26, 0x2a, - 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x38, 0x86, 0x84, 0x27, 0xfe, 0x28, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x74, 0x86, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0x78, 0x86, 0x84, 0x27, 0x44, 0x27, 0x00, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xa3, 0x01, 0x3c, 0x04, 0x01, 0x22, 0xac, 0x80, 0x86, - 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, - 0x24, 0x10, 0x00, 0xa2, 0xaf, 0x00, 0xa3, 0x04, 0x3c, 0x00, 0x10, 0x84, 0x34, - 0x00, 0xa3, 0x05, 0x3c, 0x10, 0x40, 0xa5, 0x34, 0x01, 0x00, 0x06, 0x24, 0xbd, - 0x32, 0x00, 0x0c, 0x21, 0x38, 0x00, 0x00, 0x07, 0x00, 0x40, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x0c, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x42, - 0x34, 0x0c, 0x00, 0x22, 0xae, 0x45, 0x2a, 0x00, 0x08, 0x00, 0xa3, 0x10, 0x3c, - 0x16, 0x30, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x00, 0xa3, 0x10, 0x3c, 0x80, - 0x01, 0x10, 0x36, 0x10, 0x00, 0x03, 0x8e, 0x04, 0x00, 0x02, 0x3c, 0x2b, 0x10, - 0x43, 0x00, 0x1e, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x86, 0x84, - 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x05, 0x8e, - 0xff, 0xff, 0x02, 0x3c, 0x10, 0x00, 0x42, 0x34, 0x21, 0x28, 0xa2, 0x00, 0x00, - 0xa3, 0x02, 0x3c, 0x25, 0x28, 0xa2, 0x00, 0xff, 0x1f, 0x02, 0x3c, 0xff, 0xff, - 0x42, 0x34, 0x24, 0x28, 0xa2, 0x00, 0x00, 0xa0, 0x03, 0x3c, 0x01, 0x00, 0x02, - 0x24, 0x10, 0x00, 0xa2, 0xaf, 0x04, 0xa3, 0x04, 0x3c, 0x25, 0x28, 0xa3, 0x00, - 0x01, 0x00, 0x06, 0x24, 0xbd, 0x32, 0x00, 0x0c, 0x21, 0x38, 0x00, 0x00, 0x06, - 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x22, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x08, 0x00, 0x42, 0x34, 0x68, 0x2a, 0x00, 0x08, 0x0c, 0x00, 0x22, - 0xae, 0x16, 0x30, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x94, 0x86, 0x84, 0x27, - 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xa0, 0xaf, 0x00, - 0xa3, 0x04, 0x3c, 0x00, 0x10, 0x84, 0x34, 0x00, 0xa3, 0x05, 0x3c, 0x00, 0x20, - 0xa5, 0x34, 0x01, 0x00, 0x06, 0x24, 0xbd, 0x32, 0x00, 0x0c, 0x21, 0x38, 0x00, - 0x00, 0x07, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x22, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x42, 0x34, 0x0c, 0x00, 0x22, 0xae, 0x7e, - 0x2a, 0x00, 0x08, 0x00, 0xa1, 0x03, 0x3c, 0x16, 0x30, 0x00, 0x0c, 0x0a, 0x00, - 0x04, 0x24, 0x00, 0xa1, 0x03, 0x3c, 0x00, 0x80, 0x63, 0x34, 0x82, 0x00, 0x02, - 0x24, 0x40, 0x9a, 0x82, 0xaf, 0x82, 0x00, 0x02, 0x24, 0x00, 0x00, 0x62, 0xa4, - 0x00, 0xa3, 0x02, 0x3c, 0x80, 0x01, 0x42, 0x34, 0x49, 0x00, 0x42, 0x90, 0x00, - 0x00, 0x00, 0x00, 0x61, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x86, - 0x84, 0x27, 0x44, 0x27, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x01, - 0x3c, 0x04, 0x01, 0x22, 0xac, 0xe1, 0x30, 0x00, 0x0c, 0x21, 0x20, 0x00, 0x00, - 0x07, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x22, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x42, 0x34, 0x0c, 0x00, 0x22, 0xae, 0x9b, 0x2a, - 0x00, 0x08, 0x00, 0xa3, 0x02, 0x3c, 0x16, 0x30, 0x00, 0x0c, 0x0a, 0x00, 0x04, - 0x24, 0x00, 0xa3, 0x02, 0x3c, 0x80, 0x01, 0x42, 0x34, 0x49, 0x00, 0x42, 0x90, - 0x00, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x40, 0x14, 0x21, 0x80, 0x00, 0x00, 0x18, - 0x00, 0xb2, 0x27, 0x10, 0x00, 0x14, 0x24, 0x00, 0xa3, 0x13, 0x3c, 0x80, 0x01, - 0x73, 0x36, 0x80, 0x10, 0x10, 0x00, 0x21, 0x10, 0x52, 0x00, 0x30, 0x00, 0x42, - 0x8c, 0x00, 0xa3, 0x01, 0x3c, 0x04, 0x01, 0x22, 0xac, 0x10, 0x00, 0xa0, 0xaf, - 0x21, 0x20, 0x00, 0x02, 0x21, 0x28, 0x00, 0x00, 0x21, 0x30, 0x00, 0x00, 0x2d, - 0x35, 0x00, 0x0c, 0x21, 0x38, 0x00, 0x00, 0x06, 0x00, 0x40, 0x10, 0x04, 0x10, - 0x14, 0x02, 0x0c, 0x00, 0x23, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x25, 0x10, 0x43, - 0x00, 0xb8, 0x2a, 0x00, 0x08, 0x0c, 0x00, 0x22, 0xae, 0x16, 0x30, 0x00, 0x0c, - 0x0a, 0x00, 0x04, 0x24, 0x49, 0x00, 0x62, 0x92, 0x00, 0x00, 0x00, 0x00, 0x2e, - 0x00, 0x40, 0x14, 0x01, 0x00, 0x10, 0x26, 0x04, 0x00, 0x02, 0x2a, 0xe7, 0xff, - 0x40, 0x14, 0x80, 0x10, 0x10, 0x00, 0x03, 0x00, 0x10, 0x24, 0x2f, 0x00, 0x22, - 0x92, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x42, 0x30, 0xff, 0x00, 0x03, 0x24, - 0x0a, 0x00, 0x43, 0x14, 0x21, 0x10, 0x30, 0x02, 0x08, 0x00, 0x00, 0x1a, 0x21, - 0x10, 0x30, 0x02, 0xff, 0xff, 0x10, 0x26, 0x21, 0x10, 0x30, 0x02, 0x2c, 0x00, - 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x42, 0x30, 0xf8, 0xff, 0x43, - 0x10, 0x21, 0x10, 0x30, 0x02, 0x2c, 0x00, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, - 0xff, 0x00, 0x42, 0x30, 0xff, 0x00, 0x03, 0x24, 0x0a, 0x00, 0x43, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x10, 0x26, 0x21, 0x10, 0x30, 0x02, 0x2c, 0x00, 0x42, 0x90, 0x00, 0x00, 0x00, - 0x00, 0xff, 0x00, 0x42, 0x30, 0xf8, 0xff, 0x43, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x0a, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x86, 0x84, 0x27, 0xfe, - 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x02, 0x24, 0x04, 0x10, - 0x02, 0x02, 0x0c, 0x00, 0x23, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x25, 0x10, 0x43, - 0x00, 0x0c, 0x00, 0x22, 0xae, 0x7c, 0x00, 0xbf, 0x8f, 0x78, 0x00, 0xb4, 0x8f, - 0x74, 0x00, 0xb3, 0x8f, 0x70, 0x00, 0xb2, 0x8f, 0x6c, 0x00, 0xb1, 0x8f, 0x68, - 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x80, 0x00, 0xbd, 0x27, 0xe8, 0xff, - 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0xc4, 0x86, 0x84, 0x27, 0x3a, 0x20, 0x00, - 0x0c, 0xef, 0x00, 0x05, 0x24, 0x10, 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xbd, 0x27, - 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xff, 0xbd, 0x27, 0x10, - 0x00, 0xbf, 0xaf, 0xc4, 0x86, 0x84, 0x27, 0x3a, 0x20, 0x00, 0x0c, 0xfa, 0x00, - 0x05, 0x24, 0x10, 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, - 0x03, 0x00, 0x00, 0x00, 0x00, 0xd8, 0xff, 0xbd, 0x27, 0x24, 0x00, 0xbf, 0xaf, - 0x20, 0x00, 0xb4, 0xaf, 0x1c, 0x00, 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, - 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x90, 0x80, 0x00, 0xff, 0xff, - 0x10, 0x24, 0x00, 0xa3, 0x14, 0x3c, 0x80, 0x01, 0x94, 0x36, 0xff, 0xff, 0x13, - 0x24, 0x49, 0x00, 0x82, 0x92, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x40, 0x14, - 0x00, 0xa3, 0x03, 0x3c, 0x80, 0x01, 0x63, 0x34, 0x49, 0x00, 0x62, 0x90, 0x00, - 0x00, 0x00, 0x00, 0xfd, 0xff, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, - 0x91, 0x92, 0x49, 0x00, 0x80, 0xa2, 0x00, 0x16, 0x11, 0x00, 0x03, 0x1e, 0x02, - 0x00, 0x0a, 0x00, 0x02, 0x24, 0x0a, 0x00, 0x62, 0x10, 0x0b, 0x00, 0x62, 0x28, - 0x05, 0x00, 0x40, 0x10, 0x08, 0x00, 0x02, 0x24, 0x08, 0x00, 0x62, 0x10, 0x10, - 0x00, 0x02, 0x24, 0x3f, 0x2b, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, - 0x02, 0x24, 0x18, 0x00, 0x62, 0x14, 0x10, 0x00, 0x02, 0x24, 0x69, 0x2b, 0x00, - 0x08, 0x21, 0x10, 0x00, 0x02, 0xe4, 0xff, 0x13, 0x12, 0x00, 0x00, 0x00, 0x00, - 0x64, 0x30, 0x00, 0x0c, 0x08, 0x00, 0x04, 0x24, 0x64, 0x30, 0x00, 0x0c, 0x20, - 0x00, 0x04, 0x24, 0x64, 0x30, 0x00, 0x0c, 0x08, 0x00, 0x04, 0x24, 0x1a, 0x00, - 0x12, 0x02, 0x02, 0x00, 0x40, 0x16, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x07, - 0x00, 0xff, 0xff, 0x01, 0x24, 0x04, 0x00, 0x41, 0x16, 0x00, 0x80, 0x01, 0x3c, - 0x02, 0x00, 0x01, 0x16, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x06, 0x00, 0x12, - 0x80, 0x00, 0x00, 0x0f, 0x2b, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, - 0x42, 0x16, 0xd0, 0xff, 0x22, 0x26, 0x9f, 0xff, 0x22, 0x26, 0xff, 0x00, 0x42, - 0x30, 0x06, 0x00, 0x42, 0x2c, 0x03, 0x00, 0x40, 0x10, 0xbf, 0xff, 0x22, 0x26, - 0xe0, 0xff, 0x31, 0x26, 0xbf, 0xff, 0x22, 0x26, 0xff, 0x00, 0x42, 0x30, 0x06, - 0x00, 0x42, 0x2c, 0x0d, 0x00, 0x40, 0x10, 0xd0, 0xff, 0x22, 0x26, 0x03, 0x00, - 0x13, 0x16, 0x18, 0x00, 0x12, 0x02, 0x21, 0x80, 0x00, 0x00, 0x18, 0x00, 0x12, - 0x02, 0x00, 0x26, 0x11, 0x00, 0x03, 0x26, 0x04, 0x00, 0x12, 0x28, 0x00, 0x00, - 0x21, 0x10, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x30, 0x00, 0x0c, 0xc9, - 0xff, 0x50, 0x24, 0xd0, 0xff, 0x22, 0x26, 0xff, 0x00, 0x42, 0x30, 0x0a, 0x00, - 0x42, 0x2c, 0xb4, 0xff, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x13, - 0x16, 0x18, 0x00, 0x12, 0x02, 0x21, 0x80, 0x00, 0x00, 0x18, 0x00, 0x12, 0x02, - 0x00, 0x26, 0x11, 0x00, 0x03, 0x26, 0x04, 0x00, 0x12, 0x28, 0x00, 0x00, 0x21, - 0x10, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x30, 0x00, 0x0c, 0xd0, 0xff, - 0x50, 0x24, 0x0f, 0x2b, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0xbf, - 0x8f, 0x20, 0x00, 0xb4, 0x8f, 0x1c, 0x00, 0xb3, 0x8f, 0x18, 0x00, 0xb2, 0x8f, - 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x28, - 0x00, 0xbd, 0x27, 0xd8, 0xfe, 0xbd, 0x27, 0x24, 0x01, 0xbf, 0xaf, 0x20, 0x01, - 0xbe, 0xaf, 0x1c, 0x01, 0xb7, 0xaf, 0x18, 0x01, 0xb6, 0xaf, 0x14, 0x01, 0xb5, - 0xaf, 0x10, 0x01, 0xb4, 0xaf, 0x0c, 0x01, 0xb3, 0xaf, 0x08, 0x01, 0xb2, 0xaf, - 0x04, 0x01, 0xb1, 0xaf, 0x28, 0x3f, 0x00, 0x0c, 0x00, 0x01, 0xb0, 0xaf, 0xff, - 0x00, 0x02, 0x24, 0x00, 0xa2, 0x01, 0x3c, 0x00, 0x00, 0x22, 0xac, 0x00, 0xa1, - 0x03, 0x3c, 0x00, 0x00, 0x63, 0x8c, 0x34, 0x12, 0x02, 0x24, 0x04, 0x00, 0x62, - 0x14, 0x01, 0x00, 0x02, 0x24, 0x00, 0xa3, 0x01, 0x3c, 0x8a, 0x2b, 0x00, 0x08, - 0x20, 0x0c, 0x22, 0xa0, 0x00, 0xa3, 0x01, 0x3c, 0x20, 0x0c, 0x20, 0xa0, 0x48, - 0x37, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa1, 0x03, 0x3c, 0x00, 0x80, - 0x63, 0x34, 0x02, 0x00, 0x02, 0x24, 0x40, 0x9a, 0x82, 0xaf, 0x02, 0x00, 0x02, - 0x24, 0x00, 0x00, 0x62, 0xa4, 0x01, 0xa1, 0x04, 0x3c, 0x00, 0x00, 0x82, 0x90, - 0x00, 0x00, 0x00, 0x00, 0x82, 0x10, 0x02, 0x00, 0x0b, 0x00, 0x03, 0x24, 0x07, - 0x00, 0x43, 0x10, 0x01, 0xa1, 0x03, 0x3c, 0x00, 0x00, 0x82, 0x90, 0x00, 0x00, - 0x00, 0x00, 0x82, 0x10, 0x02, 0x00, 0x0a, 0x00, 0x03, 0x24, 0x06, 0x00, 0x43, - 0x14, 0x01, 0xa1, 0x03, 0x3c, 0x08, 0x00, 0x63, 0x34, 0x00, 0x00, 0x62, 0x90, - 0x00, 0x00, 0x00, 0x00, 0x44, 0x9a, 0x82, 0xa3, 0x00, 0x00, 0x62, 0xa0, 0xd4, - 0x86, 0x84, 0x27, 0x44, 0x27, 0x00, 0x0c, 0x00, 0xa3, 0x11, 0x3c, 0x00, 0x01, - 0x31, 0x36, 0xdc, 0x86, 0x84, 0x27, 0x44, 0x27, 0x00, 0x0c, 0x00, 0x00, 0x22, - 0xae, 0xe4, 0x86, 0x84, 0x27, 0x44, 0x27, 0x00, 0x0c, 0x04, 0x00, 0x22, 0xae, - 0xec, 0x86, 0x84, 0x27, 0x44, 0x27, 0x00, 0x0c, 0x08, 0x00, 0x22, 0xae, 0x0c, - 0x00, 0x22, 0xae, 0x03, 0x00, 0x02, 0x24, 0x14, 0x00, 0x22, 0xae, 0x00, 0xa3, - 0x02, 0x3c, 0xca, 0x01, 0x42, 0x34, 0x18, 0x00, 0x22, 0xae, 0x00, 0xa3, 0x02, - 0x3c, 0x30, 0x0c, 0x42, 0x34, 0x1c, 0x00, 0x22, 0xae, 0x00, 0xa3, 0x02, 0x3c, - 0x80, 0x01, 0x42, 0x34, 0x20, 0x00, 0x22, 0xae, 0x04, 0x00, 0x40, 0xac, 0x08, - 0x00, 0x40, 0xac, 0x14, 0x00, 0x40, 0xac, 0x18, 0x00, 0x40, 0xac, 0x01, 0x00, - 0x03, 0x24, 0x1c, 0x00, 0x43, 0xac, 0x01, 0x01, 0x03, 0x24, 0x24, 0x00, 0x43, - 0xac, 0x28, 0x00, 0x40, 0xa4, 0x2a, 0x00, 0x40, 0xa4, 0x4a, 0x00, 0x40, 0xa4, - 0x4c, 0x00, 0x40, 0xa4, 0xff, 0x01, 0x03, 0x24, 0x4e, 0x00, 0x43, 0xa4, 0x10, - 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x52, 0x2c, 0x09, 0x00, - 0x40, 0x12, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x86, 0x84, 0x27, 0x44, 0x27, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x86, 0x84, 0x27, 0x44, 0x27, 0x00, 0x0c, - 0x21, 0x80, 0x40, 0x00, 0x26, 0x80, 0x02, 0x02, 0x10, 0x00, 0x30, 0xae, 0x88, - 0x29, 0x00, 0x0c, 0x00, 0xa3, 0x10, 0x3c, 0xfc, 0x86, 0x84, 0x27, 0x44, 0x27, - 0x00, 0x0c, 0x00, 0x01, 0x10, 0x36, 0x00, 0xa3, 0x01, 0x3c, 0x04, 0x01, 0x22, - 0xac, 0x47, 0x00, 0x02, 0x24, 0x00, 0xa3, 0x01, 0x3c, 0x00, 0x0c, 0x22, 0xa0, - 0x44, 0x00, 0x02, 0x24, 0x00, 0xa3, 0x01, 0x3c, 0x01, 0x0c, 0x22, 0xa0, 0x00, - 0xa3, 0x02, 0x3c, 0x30, 0x0c, 0x42, 0x34, 0x00, 0x00, 0x40, 0xa0, 0x02, 0x00, - 0x40, 0xa0, 0x08, 0x00, 0x40, 0xa4, 0x45, 0x23, 0x02, 0x3c, 0x89, 0x67, 0x42, - 0x34, 0x00, 0xa3, 0x01, 0x3c, 0x06, 0x00, 0x40, 0x12, 0x10, 0x00, 0x22, 0xac, - 0x04, 0x87, 0x84, 0x27, 0x44, 0x27, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xf9, - 0x2b, 0x00, 0x08, 0x04, 0x00, 0x02, 0xae, 0x0c, 0x87, 0x84, 0x27, 0x44, 0x27, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x01, 0x3c, 0x04, 0x01, 0x22, - 0xac, 0x18, 0x00, 0xa8, 0x27, 0xe8, 0x00, 0xa8, 0xaf, 0xa0, 0x00, 0xa8, 0x27, - 0xd0, 0x00, 0xa8, 0xaf, 0xd4, 0xff, 0xa8, 0x27, 0xd8, 0x00, 0xa8, 0xaf, 0x00, - 0xa3, 0x02, 0x3c, 0x10, 0x00, 0x42, 0x34, 0x00, 0x00, 0x43, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x63, 0x24, 0x38, 0x29, 0x00, 0x0c, 0x00, 0x00, 0x43, - 0xac, 0x00, 0xa3, 0x02, 0x3c, 0x10, 0x01, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x0f, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x86, 0x84, 0x27, 0x44, - 0x27, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x86, 0x84, 0x27, 0x44, 0x27, - 0x00, 0x0c, 0x21, 0x80, 0x40, 0x00, 0x26, 0x80, 0x02, 0x02, 0x00, 0xa3, 0x01, - 0x3c, 0x10, 0x01, 0x30, 0xac, 0x04, 0x87, 0x84, 0x27, 0x44, 0x27, 0x00, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x01, 0x3c, 0x04, 0x01, 0x22, 0xac, 0x00, - 0xa3, 0x02, 0x3c, 0xc9, 0x01, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, 0xe3, 0xff, - 0x40, 0x10, 0x00, 0xa3, 0x02, 0x3c, 0x00, 0xa3, 0x17, 0x3c, 0xc8, 0x01, 0xf7, - 0x92, 0x00, 0xa3, 0x01, 0x3c, 0xc9, 0x01, 0x20, 0xa0, 0x21, 0xb0, 0x00, 0x00, - 0x21, 0x90, 0x00, 0x00, 0x80, 0x10, 0x12, 0x00, 0xe8, 0x00, 0xa8, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x21, 0x10, 0x48, 0x00, 0x98, 0x00, 0x40, 0xac, 0x80, 0x00, - 0x40, 0xac, 0x01, 0x00, 0x52, 0x26, 0x05, 0x00, 0x42, 0x2a, 0xf8, 0xff, 0x40, - 0x14, 0x80, 0x10, 0x12, 0x00, 0xff, 0x00, 0xe2, 0x32, 0xfc, 0xff, 0x43, 0x24, - 0x8d, 0x00, 0x62, 0x2c, 0xd3, 0x03, 0x40, 0x10, 0x80, 0x10, 0x03, 0x00, 0x01, - 0xa0, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0x00, 0xfe, 0x22, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x87, 0x84, - 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x84, 0x87, 0x84, 0x27, - 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x94, 0x87, 0x84, 0x27, 0xfe, - 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x87, 0x84, 0x27, 0xfe, 0x28, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x87, 0x84, 0x27, 0xfe, 0x28, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0xcc, 0x87, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0xf0, 0x87, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x14, 0x88, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x38, 0x88, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x50, 0x88, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x88, 0x88, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xac, - 0x88, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x88, - 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, - 0x08, 0x00, 0xa3, 0x02, 0x3c, 0x65, 0x00, 0x17, 0x24, 0xfc, 0x88, 0x84, 0x27, - 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x03, 0x2b, 0x00, 0x0c, 0x0a, - 0x00, 0x04, 0x24, 0x20, 0x89, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0xf0, - 0x40, 0x00, 0x94, 0xff, 0xc0, 0x13, 0x00, 0xa3, 0x02, 0x3c, 0x01, 0x00, 0x08, - 0x24, 0x10, 0x00, 0xa8, 0xaf, 0x21, 0x20, 0x00, 0x00, 0x02, 0x00, 0x05, 0x24, - 0x18, 0x00, 0xa6, 0x27, 0x2d, 0x35, 0x00, 0x0c, 0x21, 0x38, 0x00, 0x00, 0x01, - 0x00, 0x08, 0x24, 0x10, 0x00, 0xa8, 0xaf, 0x01, 0x00, 0x04, 0x24, 0x02, 0x00, - 0x05, 0x24, 0x18, 0x00, 0xa6, 0x27, 0x2d, 0x35, 0x00, 0x0c, 0x21, 0x38, 0x00, - 0x00, 0x01, 0x00, 0x08, 0x24, 0x10, 0x00, 0xa8, 0xaf, 0x02, 0x00, 0x04, 0x24, - 0x02, 0x00, 0x05, 0x24, 0x18, 0x00, 0xa6, 0x27, 0x2d, 0x35, 0x00, 0x0c, 0x21, - 0x38, 0x00, 0x00, 0x01, 0x00, 0x08, 0x24, 0x10, 0x00, 0xa8, 0xaf, 0x03, 0x00, - 0x04, 0x24, 0x02, 0x00, 0x05, 0x24, 0x18, 0x00, 0xa6, 0x27, 0x2d, 0x35, 0x00, - 0x0c, 0x21, 0x38, 0x00, 0x00, 0xff, 0xff, 0xde, 0x27, 0xff, 0xff, 0x02, 0x24, - 0x70, 0x00, 0xc2, 0x13, 0x65, 0x00, 0x02, 0x24, 0xff, 0x00, 0xf7, 0x32, 0xc8, - 0x00, 0xb7, 0xaf, 0xb8, 0x00, 0xb7, 0x27, 0xc8, 0x00, 0xa8, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x33, 0x00, 0x02, 0x11, 0x01, 0x00, 0xd6, 0x26, 0x21, 0x98, 0x00, - 0x00, 0x60, 0x87, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x28, 0x00, 0x0c, - 0x21, 0x28, 0xc0, 0x02, 0xe1, 0x30, 0x00, 0x0c, 0x21, 0x20, 0x00, 0x00, 0x06, - 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0xa2, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0xa6, 0x2c, 0x00, 0x08, 0x98, 0x00, 0xa2, - 0xaf, 0xb0, 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, - 0xb0, 0x00, 0xa2, 0xaf, 0x00, 0xa3, 0x02, 0x3c, 0xc9, 0x01, 0x42, 0x90, 0x00, - 0x00, 0x00, 0x00, 0x52, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x73, 0x26, 0x14, 0x00, 0x62, 0x2a, 0xe7, 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x60, 0x87, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x28, 0x00, 0x0c, - 0x21, 0x28, 0xc0, 0x02, 0x10, 0x00, 0xa0, 0xaf, 0x00, 0xa3, 0x04, 0x3c, 0x10, - 0x7f, 0x84, 0x34, 0x00, 0xa3, 0x05, 0x3c, 0xf0, 0x7f, 0xa5, 0x34, 0x01, 0x00, - 0x06, 0x24, 0xbd, 0x32, 0x00, 0x0c, 0x21, 0x38, 0x00, 0x00, 0x06, 0x00, 0x40, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x42, 0x24, 0xc6, 0x2c, 0x00, 0x08, 0x9c, 0x00, 0xa2, 0xaf, 0xb4, - 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0xb4, 0x00, - 0xa2, 0xaf, 0x00, 0xa3, 0x02, 0x3c, 0xc9, 0x01, 0x42, 0x90, 0x00, 0x00, 0x00, - 0x00, 0x32, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x21, 0xa8, 0x00, 0x00, - 0x03, 0x00, 0x13, 0x24, 0x21, 0x88, 0x00, 0x00, 0x80, 0x10, 0x15, 0x00, 0xd0, - 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0xa0, 0x02, 0x01, 0x21, 0x90, - 0xe2, 0x02, 0x21, 0x80, 0x00, 0x00, 0x60, 0x87, 0x84, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x28, 0xc0, 0x02, 0x10, 0x00, 0xa0, 0xaf, - 0x21, 0x20, 0x00, 0x02, 0x21, 0x28, 0xa0, 0x02, 0x18, 0x00, 0xa6, 0x27, 0x2d, - 0x35, 0x00, 0x0c, 0x21, 0x38, 0x00, 0x00, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x82, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, - 0x24, 0xe9, 0x2c, 0x00, 0x08, 0x00, 0x00, 0x82, 0xae, 0x00, 0x00, 0x42, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, 0x42, 0xae, 0x00, - 0xa3, 0x02, 0x3c, 0xc9, 0x01, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, - 0x40, 0x14, 0x01, 0x00, 0x10, 0x26, 0x2a, 0x10, 0x70, 0x02, 0xe4, 0xff, 0x40, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x31, 0x26, 0x0a, 0x00, 0x22, 0x2a, - 0xdf, 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xb5, 0x26, 0x02, - 0x00, 0xa2, 0x2a, 0xd5, 0xff, 0x40, 0x14, 0xff, 0xff, 0x02, 0x24, 0xff, 0xff, - 0xde, 0x27, 0x95, 0xff, 0xc2, 0x17, 0x65, 0x00, 0x02, 0x24, 0x24, 0x89, 0x84, - 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x90, 0x00, 0x00, 0x38, 0x89, 0x84, 0x27, - 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x28, 0xc0, 0x02, 0x01, 0x00, 0x50, 0x26, 0x80, - 0x10, 0x12, 0x00, 0xe8, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, - 0x48, 0x00, 0x4c, 0x89, 0x84, 0x27, 0x98, 0x00, 0x46, 0x8c, 0x80, 0x00, 0x47, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x28, 0x00, 0x02, - 0x21, 0x90, 0x00, 0x02, 0x04, 0x00, 0x42, 0x2a, 0xf3, 0xff, 0x40, 0x14, 0x01, - 0x00, 0x50, 0x26, 0x00, 0xa3, 0x01, 0x3c, 0xc9, 0x01, 0x20, 0xa0, 0x00, 0x2c, - 0x00, 0x08, 0x00, 0xa3, 0x02, 0x3c, 0x70, 0x89, 0x84, 0x27, 0xfe, 0x28, 0x00, - 0x0c, 0x01, 0x00, 0xd6, 0x26, 0x60, 0x87, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x28, 0xc0, 0x02, 0xe1, 0x30, 0x00, 0x0c, 0x21, - 0x20, 0x00, 0x00, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x98, 0x00, - 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x29, 0x2d, 0x00, - 0x08, 0x98, 0x00, 0xa2, 0xaf, 0xb0, 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x42, 0x24, 0xb0, 0x00, 0xa2, 0xaf, 0x00, 0xa3, 0x02, 0x3c, 0xc9, - 0x01, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, 0xeb, 0xff, 0x40, 0x10, 0x01, 0x00, - 0xd6, 0x26, 0x8c, 0x89, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0xff, 0xff, 0xd6, - 0x26, 0x38, 0x89, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x28, 0xc0, 0x02, - 0xa8, 0x89, 0x84, 0x27, 0xb0, 0x00, 0xa5, 0x8f, 0x98, 0x00, 0xa6, 0x8f, 0x9e, - 0x2e, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x89, 0x84, 0x27, 0xfe, 0x28, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x03, 0x2b, 0x00, 0x0c, 0x10, 0x00, 0x04, - 0x24, 0x21, 0x88, 0x40, 0x00, 0xff, 0xff, 0x02, 0x24, 0x03, 0x00, 0x22, 0x16, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x11, 0x3c, 0x00, 0x10, 0x31, 0x36, 0xd8, - 0x89, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x03, 0x2b, - 0x00, 0x0c, 0x10, 0x00, 0x04, 0x24, 0x21, 0x80, 0x40, 0x00, 0xff, 0xff, 0x02, - 0x24, 0x03, 0x00, 0x02, 0x16, 0x00, 0x00, 0x00, 0x00, 0x02, 0xa3, 0x10, 0x3c, - 0xf0, 0xff, 0x10, 0x36, 0xe8, 0x89, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x01, - 0x00, 0xd6, 0x26, 0x70, 0x89, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x60, 0x87, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x28, 0x00, - 0x0c, 0x21, 0x28, 0xc0, 0x02, 0x10, 0x00, 0xa0, 0xaf, 0x21, 0x20, 0x20, 0x02, - 0x21, 0x28, 0x00, 0x02, 0x01, 0x00, 0x06, 0x24, 0xbd, 0x32, 0x00, 0x0c, 0x21, - 0x38, 0x00, 0x00, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x00, - 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x6a, 0x2d, 0x00, - 0x08, 0x9c, 0x00, 0xa2, 0xaf, 0xb4, 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x42, 0x24, 0xb4, 0x00, 0xa2, 0xaf, 0x00, 0xa3, 0x02, 0x3c, 0xc9, - 0x01, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, 0xe7, 0xff, 0x40, 0x10, 0x01, 0x00, - 0xd6, 0x26, 0xec, 0x89, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0xff, 0xff, 0xd6, - 0x26, 0x38, 0x89, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x28, 0xc0, 0x02, - 0x04, 0x8a, 0x84, 0x27, 0xb4, 0x00, 0xa5, 0x8f, 0x9c, 0x00, 0xa6, 0x8f, 0x9e, - 0x2e, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x24, 0x8a, 0x84, 0x27, 0xfe, 0x28, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x8a, 0x84, 0x27, 0xfe, 0x28, 0x00, - 0x0c, 0x03, 0x00, 0x05, 0x24, 0x00, 0xa3, 0x02, 0x3c, 0xc9, 0x01, 0x42, 0x90, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x40, 0x14, 0x00, 0xa3, 0x03, 0x3c, 0x80, - 0x01, 0x63, 0x34, 0x49, 0x00, 0x62, 0x90, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xff, - 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x02, 0x3c, 0xc8, 0x01, 0x42, - 0x90, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x51, 0x30, 0x00, 0xa3, 0x01, 0x3c, - 0xc9, 0x01, 0x20, 0xa0, 0xe8, 0x89, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0xd0, 0xff, 0x25, 0x26, 0x04, 0x00, 0xa2, 0x2c, 0x6a, 0xfe, - 0x40, 0x10, 0x00, 0xa3, 0x02, 0x3c, 0x21, 0x98, 0xa0, 0x00, 0x70, 0x8a, 0x84, - 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x90, 0x60, 0x02, 0x03, 0x2b, 0x00, 0x0c, - 0x0a, 0x00, 0x04, 0x24, 0xff, 0xff, 0x51, 0x24, 0x0f, 0x00, 0x31, 0x32, 0x90, - 0x8a, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x33, 0x00, 0x17, 0x24, 0x2a, 0x40, - 0x72, 0x02, 0xf0, 0x00, 0xa8, 0xaf, 0x23, 0xf0, 0x11, 0x00, 0x80, 0xa8, 0x17, - 0x00, 0xd8, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0xa0, 0x15, 0x01, - 0xf0, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x15, 0x21, - 0x80, 0x40, 0x02, 0xec, 0xff, 0xa2, 0x27, 0x21, 0x88, 0x55, 0x00, 0x01, 0x00, - 0xd6, 0x26, 0x60, 0x87, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x28, 0x00, - 0x0c, 0x21, 0x28, 0xc0, 0x02, 0x10, 0x00, 0xa0, 0xaf, 0x21, 0x20, 0x00, 0x02, - 0xff, 0xff, 0xc5, 0x27, 0x21, 0x30, 0x00, 0x00, 0x2d, 0x35, 0x00, 0x0c, 0x21, - 0x38, 0x00, 0x00, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x82, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0xc5, 0x2d, 0x00, - 0x08, 0x00, 0x00, 0x82, 0xae, 0x00, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, 0x22, 0xae, 0x00, 0xa3, 0x02, 0x3c, 0xc9, - 0x01, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x40, 0x14, 0x01, 0x00, - 0x10, 0x26, 0x2a, 0x10, 0x70, 0x02, 0xe4, 0xff, 0x40, 0x10, 0x01, 0x00, 0xd6, - 0x26, 0xa9, 0x2d, 0x00, 0x08, 0xff, 0xff, 0xd6, 0x26, 0xff, 0x00, 0xf5, 0x32, - 0xec, 0x8a, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0xcd, 0xff, 0xb5, 0x26, 0xf8, - 0x8a, 0x84, 0x27, 0x02, 0x00, 0xa0, 0x12, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x8a, - 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x8a, 0x84, - 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x14, 0x8b, 0x84, 0x27, - 0xfe, 0x28, 0x00, 0x0c, 0x03, 0x00, 0x05, 0x24, 0x00, 0xa3, 0x02, 0x3c, 0xc9, - 0x01, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x40, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xa3, 0x03, 0x3c, 0x80, 0x01, 0x63, 0x34, 0x49, 0x00, 0x62, - 0x90, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xff, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xa3, 0x02, 0x3c, 0xc8, 0x01, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, 0xff, - 0x00, 0x51, 0x30, 0x00, 0xa3, 0x01, 0x3c, 0xc9, 0x01, 0x20, 0xa0, 0x61, 0x00, - 0x02, 0x24, 0x03, 0x00, 0x22, 0x12, 0x41, 0x00, 0x02, 0x24, 0x04, 0x00, 0x22, - 0x16, 0xd0, 0xff, 0x25, 0x26, 0x21, 0x90, 0x00, 0x00, 0xfd, 0x2d, 0x00, 0x08, - 0x03, 0x00, 0x13, 0x24, 0x04, 0x00, 0xa2, 0x2c, 0x06, 0xfe, 0x40, 0x10, 0x00, - 0xa3, 0x02, 0x3c, 0x21, 0x98, 0xa0, 0x00, 0x21, 0x90, 0x60, 0x02, 0x70, 0x89, - 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, - 0x24, 0x10, 0x00, 0xa8, 0x16, 0x2a, 0x40, 0x72, 0x02, 0x2a, 0x10, 0x72, 0x02, - 0x0d, 0x00, 0x40, 0x14, 0x21, 0x80, 0x40, 0x02, 0x01, 0x00, 0x08, 0x24, 0x10, - 0x00, 0xa8, 0xaf, 0x21, 0x20, 0x00, 0x02, 0x02, 0x00, 0x05, 0x24, 0x18, 0x00, - 0xa6, 0x27, 0x2d, 0x35, 0x00, 0x0c, 0x21, 0x38, 0x00, 0x00, 0x01, 0x00, 0x10, - 0x26, 0x2a, 0x10, 0x70, 0x02, 0xf7, 0xff, 0x40, 0x10, 0x01, 0x00, 0x08, 0x24, - 0x2a, 0x40, 0x72, 0x02, 0xf8, 0x00, 0xa8, 0xaf, 0x80, 0xf0, 0x17, 0x00, 0xd8, - 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0xa0, 0x1e, 0x01, 0xec, 0xff, - 0xa8, 0x27, 0xe0, 0x00, 0xa8, 0xaf, 0xf8, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x00, 0x15, 0x21, 0x80, 0x40, 0x02, 0xe0, 0x00, 0xa8, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x21, 0x88, 0x1e, 0x01, 0x01, 0x00, 0xd6, 0x26, 0x60, - 0x87, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x28, - 0xc0, 0x02, 0x10, 0x00, 0xa0, 0xaf, 0x21, 0x20, 0x00, 0x02, 0x21, 0x28, 0xa0, - 0x02, 0x18, 0x00, 0xa6, 0x27, 0x2d, 0x35, 0x00, 0x0c, 0x21, 0x38, 0x00, 0x00, - 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x36, 0x2e, 0x00, 0x08, 0x00, 0x00, - 0x82, 0xae, 0x00, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, - 0x24, 0x00, 0x00, 0x22, 0xae, 0x00, 0xa3, 0x02, 0x3c, 0xc9, 0x01, 0x42, 0x90, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x40, 0x14, 0x01, 0x00, 0x10, 0x26, 0x2a, - 0x10, 0x70, 0x02, 0xe4, 0xff, 0x40, 0x10, 0x01, 0x00, 0xd6, 0x26, 0x19, 0x2e, - 0x00, 0x08, 0xff, 0xff, 0xd6, 0x26, 0xb0, 0x8a, 0x84, 0x27, 0xfe, 0x28, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x38, 0x89, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, - 0x21, 0x28, 0xc0, 0x02, 0xff, 0x00, 0xe5, 0x32, 0x80, 0x10, 0x05, 0x00, 0x21, - 0x18, 0xa2, 0x03, 0xd8, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, - 0x02, 0x01, 0xc8, 0x8a, 0x84, 0x27, 0xec, 0xff, 0x66, 0x8c, 0x00, 0x00, 0x47, - 0x8c, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x01, 0x3c, - 0xc9, 0x01, 0x20, 0xa0, 0x00, 0x2c, 0x00, 0x08, 0x00, 0xa3, 0x02, 0x3c, 0x58, - 0x8b, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x95, 0x2e, - 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0xa0, 0x04, 0x3c, 0x00, 0x80, 0x84, - 0x24, 0x01, 0xa0, 0x05, 0x3c, 0xb0, 0xfc, 0xa5, 0x24, 0x08, 0x22, 0x00, 0x0c, - 0x0f, 0xa3, 0x13, 0x3c, 0x70, 0x89, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x21, - 0xa0, 0x40, 0x00, 0xf8, 0xff, 0x73, 0x36, 0x23, 0x01, 0x12, 0x3c, 0x67, 0x45, - 0x52, 0x36, 0x0f, 0xa3, 0x11, 0x3c, 0xfc, 0xff, 0x31, 0x36, 0xdc, 0xfe, 0x10, - 0x3c, 0x98, 0xba, 0x10, 0x36, 0xf0, 0xf0, 0x1e, 0x3c, 0xf0, 0xf0, 0xde, 0x37, - 0x07, 0xa3, 0x17, 0x3c, 0xfc, 0xff, 0xf7, 0x36, 0x0f, 0x0f, 0x15, 0x3c, 0x0f, - 0x0f, 0xb5, 0x36, 0x01, 0x00, 0xd6, 0x26, 0x60, 0x87, 0x84, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x28, 0xc0, 0x02, 0x48, 0x8b, 0x84, - 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0xae, - 0x00, 0x00, 0x30, 0xae, 0x08, 0xa3, 0x01, 0x3c, 0xf8, 0xff, 0x3e, 0xac, 0x00, - 0x00, 0xf5, 0xae, 0x00, 0x00, 0x62, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, - 0x52, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x11, 0x00, 0x50, 0x10, 0x00, 0x00, 0x00, 0x00, 0x01, 0xa0, 0x04, 0x3c, - 0x00, 0x80, 0x84, 0x24, 0x01, 0xa0, 0x05, 0x3c, 0x08, 0x22, 0x00, 0x0c, 0xb0, - 0xfc, 0xa5, 0x24, 0xca, 0xff, 0x82, 0x16, 0x00, 0x00, 0x00, 0x00, 0x38, 0x86, - 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x02, - 0x3c, 0xc9, 0x01, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, 0xde, 0xff, 0x40, 0x10, - 0x01, 0x00, 0xd6, 0x26, 0xff, 0xff, 0xd6, 0x26, 0x80, 0x8b, 0x84, 0x27, 0xfe, - 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x38, 0x89, 0x84, 0x27, 0xfe, 0x28, - 0x00, 0x0c, 0x21, 0x28, 0xc0, 0x02, 0x98, 0x8b, 0x84, 0x27, 0xc0, 0x00, 0xa5, - 0x8f, 0xa8, 0x00, 0xa6, 0x8f, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xa3, 0x01, 0x3c, 0xc9, 0x01, 0x20, 0xa0, 0x00, 0x2c, 0x00, 0x08, 0x00, - 0xa3, 0x02, 0x3c, 0x00, 0xa1, 0x04, 0x3c, 0x00, 0x80, 0x84, 0x34, 0x40, 0x9a, - 0x83, 0x97, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x62, 0x38, 0x00, 0x00, 0x82, - 0xa4, 0x00, 0xa3, 0x02, 0x3c, 0x00, 0x00, 0x42, 0x8c, 0x00, 0x00, 0x83, 0xa4, - 0xb8, 0x8b, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2c, 0x00, 0x08, 0x00, 0xa3, 0x02, 0x3c, 0xd8, 0x8b, 0x84, 0x27, 0xfe, 0x28, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x03, 0x2b, 0x00, 0x0c, 0x10, 0x00, 0x04, - 0x24, 0x21, 0x88, 0x40, 0x00, 0xff, 0xff, 0x02, 0x24, 0x46, 0xfd, 0x22, 0x12, - 0x00, 0xa3, 0x02, 0x3c, 0xe8, 0x89, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0xff, 0x00, 0xe3, 0x32, 0x64, 0x00, 0x02, 0x24, 0x06, 0x00, - 0x62, 0x10, 0x04, 0x00, 0x02, 0x24, 0x04, 0x00, 0x62, 0x10, 0x44, 0x00, 0x02, - 0x24, 0x1d, 0x00, 0x62, 0x14, 0x72, 0x00, 0x02, 0x24, 0xff, 0x00, 0xe3, 0x32, - 0x64, 0x00, 0x02, 0x24, 0x04, 0x00, 0x62, 0x10, 0x21, 0x90, 0x00, 0x00, 0x10, - 0x00, 0x42, 0x2a, 0x34, 0xfd, 0x40, 0x10, 0x00, 0xa3, 0x02, 0x3c, 0x00, 0x81, - 0x12, 0x00, 0x21, 0x80, 0x30, 0x02, 0xe8, 0x8b, 0x84, 0x27, 0xfe, 0x28, 0x00, - 0x0c, 0x21, 0x28, 0x00, 0x02, 0x00, 0xa0, 0x04, 0x3c, 0x25, 0x20, 0x04, 0x02, - 0x89, 0x30, 0x00, 0x0c, 0x10, 0x00, 0x05, 0x24, 0xe8, 0x89, 0x84, 0x27, 0xfe, - 0x28, 0x00, 0x0c, 0x01, 0x00, 0x52, 0x26, 0xff, 0x00, 0xe3, 0x32, 0x64, 0x00, - 0x02, 0x24, 0xef, 0xff, 0x62, 0x14, 0x10, 0x00, 0x42, 0x2a, 0x04, 0x00, 0x42, - 0x2a, 0xef, 0xff, 0x40, 0x14, 0x00, 0x81, 0x12, 0x00, 0x00, 0x2c, 0x00, 0x08, - 0x00, 0xa3, 0x02, 0x3c, 0x09, 0x00, 0x62, 0x14, 0xff, 0x00, 0xe3, 0x32, 0x00, - 0xa0, 0x02, 0x3c, 0x25, 0x10, 0x22, 0x02, 0xf0, 0x8b, 0x84, 0x27, 0x00, 0x00, - 0x45, 0x90, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, - 0x08, 0x00, 0xa3, 0x02, 0x3c, 0x12, 0x00, 0x02, 0x24, 0x09, 0x00, 0x62, 0x14, - 0xff, 0x00, 0xe3, 0x32, 0x00, 0xa0, 0x02, 0x3c, 0x25, 0x10, 0x22, 0x02, 0xf8, - 0x8b, 0x84, 0x27, 0x00, 0x00, 0x45, 0x94, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x2c, 0x00, 0x08, 0x00, 0xa3, 0x02, 0x3c, 0x52, 0x00, 0x02, - 0x24, 0x09, 0x00, 0x62, 0x14, 0xff, 0x00, 0xe3, 0x32, 0x00, 0xa0, 0x02, 0x3c, - 0x25, 0x10, 0x22, 0x02, 0x00, 0x8c, 0x84, 0x27, 0x00, 0x00, 0x45, 0x8c, 0xfe, - 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x08, 0x00, 0xa3, - 0x02, 0x3c, 0x66, 0x00, 0x02, 0x24, 0x03, 0x00, 0x62, 0x10, 0x77, 0x00, 0x02, - 0x24, 0x04, 0x00, 0x62, 0x14, 0xff, 0x00, 0xe3, 0x32, 0x08, 0x8c, 0x84, 0x27, - 0x13, 0x2f, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x24, 0x03, - 0x00, 0x62, 0x10, 0x17, 0x00, 0x02, 0x24, 0x04, 0x00, 0x62, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x0c, 0x8c, 0x84, 0x27, 0x13, 0x2f, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x10, 0x8c, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x14, 0x8c, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x03, - 0x2b, 0x00, 0x0c, 0x10, 0x00, 0x04, 0x24, 0xe8, 0x89, 0x84, 0x27, 0xfe, 0x28, - 0x00, 0x0c, 0x21, 0x80, 0x40, 0x00, 0xff, 0x00, 0xe3, 0x32, 0x66, 0x00, 0x02, - 0x24, 0x05, 0x00, 0x62, 0x10, 0x06, 0x00, 0x02, 0x24, 0x03, 0x00, 0x62, 0x10, - 0x46, 0x00, 0x02, 0x24, 0x0b, 0x00, 0x62, 0x14, 0x21, 0x98, 0x00, 0x00, 0x28, - 0x8c, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x03, 0x2b, - 0x00, 0x0c, 0x10, 0x00, 0x04, 0x24, 0xe8, 0x89, 0x84, 0x27, 0xfe, 0x28, 0x00, - 0x0c, 0xff, 0xff, 0x53, 0x24, 0x30, 0x2f, 0x00, 0x08, 0x00, 0xa0, 0x02, 0x3c, - 0x00, 0xa0, 0x02, 0x3c, 0x25, 0x88, 0x22, 0x02, 0xff, 0x00, 0xe3, 0x32, 0x77, - 0x00, 0x07, 0x24, 0x66, 0x00, 0x06, 0x24, 0x17, 0x00, 0x05, 0x24, 0x06, 0x00, - 0x04, 0x24, 0x03, 0x00, 0x67, 0x10, 0x21, 0x10, 0x33, 0x02, 0x03, 0x00, 0x66, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x46, 0x2f, 0x00, 0x08, 0x00, 0x00, 0x50, 0xa0, - 0x04, 0x00, 0x65, 0x10, 0x40, 0x10, 0x13, 0x00, 0x05, 0x00, 0x64, 0x14, 0x80, - 0x10, 0x13, 0x00, 0x40, 0x10, 0x13, 0x00, 0x21, 0x10, 0x51, 0x00, 0x46, 0x2f, - 0x00, 0x08, 0x00, 0x00, 0x50, 0xa4, 0x21, 0x10, 0x51, 0x00, 0x00, 0x00, 0x50, - 0xac, 0xff, 0xff, 0x73, 0x26, 0xee, 0xff, 0x61, 0x06, 0x00, 0xa3, 0x02, 0x3c, - 0x01, 0x2c, 0x00, 0x08, 0x10, 0x00, 0x42, 0x34, 0x01, 0x00, 0x04, 0x24, 0x73, - 0x24, 0x00, 0x0c, 0x21, 0x28, 0x00, 0x00, 0x00, 0xa3, 0x01, 0x3c, 0x88, 0x01, - 0x22, 0xac, 0x01, 0x00, 0x08, 0x24, 0x00, 0xa3, 0x01, 0x3c, 0xc8, 0x01, 0x28, - 0xa0, 0x00, 0xa3, 0x01, 0x3c, 0xc9, 0x01, 0x20, 0xa0, 0x00, 0x2c, 0x00, 0x08, - 0x00, 0xa3, 0x02, 0x3c, 0xe1, 0x30, 0x00, 0x0c, 0x21, 0x20, 0x00, 0x00, 0xfe, - 0x2f, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x02, 0x3c, 0x84, 0x01, - 0x42, 0x8c, 0x00, 0xa3, 0x02, 0x3c, 0x88, 0x01, 0x42, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x00, 0x40, 0x10, 0x10, 0x30, 0x02, 0x24, 0x00, 0xa3, 0x02, 0x3c, - 0x88, 0x01, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x11, 0x30, 0x42, 0x2c, 0x05, - 0x00, 0x40, 0x14, 0x00, 0xa3, 0x02, 0x3c, 0x10, 0x30, 0x02, 0x24, 0x00, 0xa3, - 0x01, 0x3c, 0x88, 0x01, 0x22, 0xac, 0x00, 0xa3, 0x02, 0x3c, 0x00, 0x10, 0x42, - 0x34, 0x00, 0xa3, 0x05, 0x3c, 0x88, 0x01, 0xa5, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x21, 0x28, 0xa2, 0x00, 0xff, 0x1f, 0x02, 0x3c, 0xff, 0xff, 0x42, 0x34, 0x00, - 0xa0, 0x03, 0x3c, 0x24, 0x28, 0xa2, 0x00, 0x10, 0x00, 0xa0, 0xaf, 0x00, 0xa3, - 0x04, 0x3c, 0x00, 0x10, 0x84, 0x34, 0x25, 0x28, 0xa3, 0x00, 0x21, 0x30, 0x00, - 0x00, 0xbd, 0x32, 0x00, 0x0c, 0x21, 0x38, 0x00, 0x00, 0x00, 0xa3, 0x01, 0x3c, - 0x88, 0x01, 0x22, 0xac, 0x00, 0xa3, 0x02, 0x3c, 0x88, 0x01, 0x42, 0x8c, 0x00, - 0xa3, 0x01, 0x3c, 0x84, 0x01, 0x22, 0xac, 0x01, 0x30, 0x00, 0x08, 0x01, 0x00, - 0x08, 0x24, 0x00, 0xa3, 0x12, 0x3c, 0x88, 0x01, 0x52, 0x8e, 0x10, 0x00, 0xa0, - 0xaf, 0x21, 0x20, 0x40, 0x02, 0x21, 0x28, 0x00, 0x00, 0x21, 0x30, 0x00, 0x00, - 0x2d, 0x35, 0x00, 0x0c, 0x21, 0x38, 0x00, 0x00, 0xfe, 0x2f, 0x00, 0x08, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xa3, 0x02, 0x3c, 0x88, 0x01, 0x42, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0xff, 0x00, 0x52, 0x30, 0x00, 0xa3, 0x02, 0x3c, 0x88, 0x01, 0x42, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x02, 0x9a, 0x02, 0x00, 0xff, 0x00, 0x73, 0x32, - 0x00, 0xa3, 0x02, 0x3c, 0x88, 0x01, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x8c, 0x02, 0x00, 0xff, 0x00, 0x31, 0x32, 0x07, 0x00, 0x20, 0x16, 0x01, 0x00, - 0x08, 0x24, 0x10, 0x00, 0xa0, 0xaf, 0x21, 0x20, 0x40, 0x02, 0x27, 0x28, 0x13, - 0x00, 0x21, 0x30, 0x00, 0x00, 0xaf, 0x2f, 0x00, 0x08, 0x01, 0x00, 0x07, 0x24, - 0x10, 0x00, 0xa8, 0xaf, 0x21, 0x20, 0x40, 0x02, 0x02, 0x00, 0x05, 0x24, 0x18, - 0x00, 0xa6, 0x27, 0x2d, 0x35, 0x00, 0x0c, 0x21, 0x38, 0x00, 0x00, 0x10, 0x00, - 0xa0, 0xaf, 0x21, 0x20, 0x40, 0x02, 0x01, 0x00, 0x05, 0x24, 0x18, 0x00, 0xa6, - 0x27, 0x21, 0x38, 0x00, 0x00, 0x2d, 0x35, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0xfe, 0x2f, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0xa1, 0x02, 0x3c, 0x00, - 0x00, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, 0x82, 0x10, 0x02, 0x00, 0x0b, 0x00, - 0x03, 0x24, 0x04, 0x00, 0x43, 0x14, 0x01, 0xa1, 0x02, 0x3c, 0x44, 0x9a, 0x82, - 0x93, 0xfe, 0x2f, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x90, - 0x00, 0x00, 0x00, 0x00, 0x82, 0x10, 0x02, 0x00, 0x0a, 0x00, 0x03, 0x24, 0x05, - 0x00, 0x43, 0x14, 0x00, 0x00, 0x00, 0x00, 0x44, 0x9a, 0x82, 0x93, 0x00, 0x00, - 0x00, 0x00, 0xfe, 0x2f, 0x00, 0x08, 0x0f, 0x00, 0x42, 0x30, 0xfe, 0x2f, 0x00, - 0x08, 0xff, 0xff, 0x02, 0x34, 0x01, 0xa1, 0x02, 0x3c, 0x00, 0x00, 0x42, 0x90, - 0x00, 0x00, 0x00, 0x00, 0x82, 0x10, 0x02, 0x00, 0x0b, 0x00, 0x03, 0x24, 0x0c, - 0x00, 0x43, 0x14, 0x01, 0xa1, 0x02, 0x3c, 0x00, 0xa3, 0x02, 0x3c, 0x88, 0x01, - 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x02, 0x12, 0x02, 0x00, 0x44, 0x9a, 0x82, - 0xa3, 0x01, 0xa1, 0x03, 0x3c, 0x08, 0x00, 0x63, 0x34, 0x00, 0x00, 0x62, 0xa0, - 0x44, 0x9a, 0x82, 0x93, 0xfe, 0x2f, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, 0x82, 0x10, 0x02, 0x00, 0x0a, 0x00, - 0x03, 0x24, 0x0d, 0x00, 0x43, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x02, - 0x3c, 0x88, 0x01, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x02, 0x12, 0x02, 0x00, - 0x0f, 0x00, 0x42, 0x30, 0x44, 0x9a, 0x82, 0xa3, 0x01, 0xa1, 0x04, 0x3c, 0x08, - 0x00, 0x84, 0x34, 0x21, 0x18, 0x40, 0x00, 0x00, 0x00, 0x83, 0xa0, 0xfe, 0x2f, - 0x00, 0x08, 0xff, 0x00, 0x42, 0x30, 0xfe, 0x2f, 0x00, 0x08, 0xff, 0xff, 0x02, - 0x34, 0x01, 0xa1, 0x02, 0x3c, 0x00, 0x00, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, - 0xfe, 0x2f, 0x00, 0x08, 0xff, 0x00, 0x42, 0x30, 0x00, 0xa3, 0x04, 0x3c, 0x88, - 0x01, 0x84, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x16, 0x37, 0x00, 0x0c, 0xff, 0x00, - 0x84, 0x30, 0xfe, 0x2f, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, 0x00, - 0x00, 0x73, 0x24, 0x00, 0x0c, 0x01, 0x00, 0x05, 0x24, 0x00, 0xa3, 0x01, 0x3c, - 0x88, 0x01, 0x22, 0xac, 0x01, 0x00, 0x08, 0x24, 0x00, 0xa3, 0x01, 0x3c, 0xc8, - 0x01, 0x28, 0xa0, 0x00, 0x2c, 0x00, 0x08, 0x00, 0xa3, 0x02, 0x3c, 0x38, 0x8c, - 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, - 0x08, 0x00, 0xa3, 0x02, 0x3c, 0x24, 0x01, 0xbf, 0x8f, 0x20, 0x01, 0xbe, 0x8f, - 0x1c, 0x01, 0xb7, 0x8f, 0x18, 0x01, 0xb6, 0x8f, 0x14, 0x01, 0xb5, 0x8f, 0x10, - 0x01, 0xb4, 0x8f, 0x0c, 0x01, 0xb3, 0x8f, 0x08, 0x01, 0xb2, 0x8f, 0x04, 0x01, - 0xb1, 0x8f, 0x00, 0x01, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x28, 0x01, 0xbd, - 0x27, 0x00, 0xa3, 0x05, 0x3c, 0x80, 0x01, 0xa5, 0x34, 0x4a, 0x00, 0xa2, 0x94, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x30, 0x21, 0x10, 0x45, 0x00, 0x50, - 0x00, 0x44, 0xa0, 0x4a, 0x00, 0xa2, 0x94, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x42, 0x24, 0x4e, 0x00, 0xa3, 0x94, 0x00, 0x00, 0x00, 0x00, 0x24, 0x20, 0x62, - 0x00, 0x4c, 0x00, 0xa3, 0x94, 0xff, 0xff, 0x82, 0x30, 0x02, 0x00, 0x43, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x4a, 0x00, 0xa4, 0xa4, 0x08, 0x00, 0xe0, 0x03, 0x00, - 0x00, 0x00, 0x00, 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x00, 0xa3, - 0x02, 0x3c, 0x80, 0x01, 0x42, 0x34, 0x00, 0x00, 0x43, 0x8c, 0x01, 0x00, 0x02, - 0x24, 0x07, 0x00, 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x8c, 0x83, 0x97, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x62, 0x24, 0x5c, 0x8c, 0x82, 0xa7, 0x12, - 0x00, 0x60, 0x14, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x8c, 0x82, 0x97, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x5a, 0x8c, 0x82, 0xa7, 0xe8, 0x03, 0x02, - 0x24, 0x5c, 0x8c, 0x82, 0xa7, 0x00, 0xa1, 0x02, 0x3c, 0x00, 0x40, 0x42, 0x34, - 0x00, 0x00, 0x40, 0xa4, 0xfa, 0x21, 0x00, 0x0c, 0x21, 0x20, 0x00, 0x00, 0x00, - 0xa3, 0x03, 0x3c, 0x80, 0x01, 0x63, 0x34, 0x01, 0x00, 0x02, 0x24, 0x00, 0x00, - 0x62, 0xac, 0xfa, 0x21, 0x00, 0x0c, 0x01, 0x04, 0x04, 0x24, 0x10, 0x00, 0xbf, - 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xa3, 0x03, 0x3c, 0x80, 0x01, 0x63, 0x34, 0x4c, 0x00, 0x62, 0x94, 0x00, - 0x00, 0x00, 0x00, 0x0d, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x00, - 0x62, 0x94, 0x4a, 0x00, 0x63, 0x94, 0xff, 0xff, 0x42, 0x30, 0x08, 0x00, 0x43, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x04, 0x3c, 0x80, 0x01, 0x84, 0x34, - 0x4c, 0x00, 0x82, 0x94, 0x4a, 0x00, 0x83, 0x94, 0xff, 0xff, 0x42, 0x30, 0xfc, - 0xff, 0x43, 0x14, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xe8, 0xff, 0xbd, 0x27, 0x21, 0x28, 0x80, 0x00, 0x00, 0x26, 0x04, 0x00, - 0x03, 0x26, 0x04, 0x00, 0x0a, 0x00, 0x02, 0x24, 0x06, 0x00, 0x82, 0x10, 0x10, - 0x00, 0xbf, 0xaf, 0x0d, 0x00, 0x02, 0x24, 0x0b, 0x00, 0x82, 0x10, 0x00, 0x26, - 0x05, 0x00, 0x80, 0x30, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x60, 0x8c, 0x83, - 0x93, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x62, 0x30, 0x11, 0x00, 0x40, 0x14, - 0x01, 0x00, 0x62, 0x34, 0x60, 0x8c, 0x82, 0xa3, 0x81, 0x30, 0x00, 0x08, 0x00, - 0x26, 0x05, 0x00, 0x60, 0x8c, 0x83, 0x93, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x62, 0x30, 0x09, 0x00, 0x40, 0x14, 0x02, 0x00, 0x62, 0x34, 0x60, 0x8c, 0x82, - 0xa3, 0x81, 0x30, 0x00, 0x08, 0x00, 0x26, 0x05, 0x00, 0x60, 0x8c, 0x80, 0xa3, - 0x16, 0x30, 0x00, 0x0c, 0x03, 0x26, 0x04, 0x00, 0x4d, 0x30, 0x00, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x10, 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, - 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xff, 0xbd, 0x27, 0x2c, 0x00, 0xbf, - 0xaf, 0x28, 0x00, 0xb4, 0xaf, 0x24, 0x00, 0xb3, 0xaf, 0x20, 0x00, 0xb2, 0xaf, - 0x1c, 0x00, 0xb1, 0xaf, 0x18, 0x00, 0xb0, 0xaf, 0x21, 0x80, 0xa0, 0x00, 0x03, - 0x00, 0x00, 0x1e, 0x21, 0x88, 0x80, 0x00, 0x99, 0x30, 0x00, 0x08, 0x01, 0x00, - 0x10, 0x24, 0x1a, 0x00, 0x02, 0x2a, 0x03, 0x00, 0x40, 0x14, 0x21, 0x98, 0x20, - 0x02, 0x19, 0x00, 0x10, 0x24, 0x21, 0x98, 0x20, 0x02, 0x21, 0x90, 0x00, 0x02, - 0x0a, 0x00, 0x40, 0x12, 0xff, 0xff, 0x50, 0x26, 0xff, 0xff, 0x14, 0x24, 0x64, - 0x8c, 0x84, 0x27, 0x00, 0x00, 0x25, 0x92, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x28, - 0x00, 0x0c, 0x01, 0x00, 0x31, 0x26, 0xff, 0xff, 0x10, 0x26, 0xf9, 0xff, 0x14, - 0x16, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x42, 0x2a, 0x15, 0x00, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x64, 0x30, 0x00, 0x0c, 0x20, 0x00, 0x04, 0x24, 0xff, - 0xff, 0x52, 0x26, 0xff, 0xff, 0x02, 0x24, 0x0f, 0x00, 0x42, 0x12, 0xff, 0xff, - 0x10, 0x24, 0x00, 0x00, 0x64, 0x92, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x82, - 0x24, 0x5f, 0x00, 0x42, 0x2c, 0x03, 0x00, 0x40, 0x10, 0x00, 0x26, 0x04, 0x00, - 0xb8, 0x30, 0x00, 0x08, 0x03, 0x26, 0x04, 0x00, 0x2e, 0x00, 0x04, 0x24, 0x64, - 0x30, 0x00, 0x0c, 0x01, 0x00, 0x73, 0x26, 0xff, 0xff, 0x52, 0x26, 0xf3, 0xff, - 0x50, 0x16, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0xbf, 0x8f, 0x28, 0x00, 0xb4, - 0x8f, 0x24, 0x00, 0xb3, 0x8f, 0x20, 0x00, 0xb2, 0x8f, 0x1c, 0x00, 0xb1, 0x8f, - 0x18, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x30, 0x00, 0xbd, 0x27, 0xe8, - 0xff, 0xbd, 0x27, 0x14, 0x00, 0xbf, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x64, 0x30, - 0x00, 0x0c, 0x0d, 0x00, 0x04, 0x24, 0x21, 0x80, 0x00, 0x00, 0x64, 0x30, 0x00, - 0x0c, 0x20, 0x00, 0x04, 0x24, 0x01, 0x00, 0x10, 0x26, 0x4e, 0x00, 0x02, 0x2a, - 0xfb, 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x64, 0x30, 0x00, 0x0c, 0x0d, - 0x00, 0x04, 0x24, 0x14, 0x00, 0xbf, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, - 0xe0, 0x03, 0x18, 0x00, 0xbd, 0x27, 0xf8, 0xff, 0xbd, 0x27, 0x05, 0x00, 0x80, - 0x10, 0xff, 0xff, 0x82, 0x24, 0xff, 0xff, 0x03, 0x24, 0xff, 0xff, 0x42, 0x24, - 0xff, 0xff, 0x43, 0x14, 0xff, 0xff, 0x42, 0x24, 0x08, 0x00, 0xbd, 0x27, 0x08, - 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xff, 0xbd, 0x27, 0x2c, 0x00, - 0xbf, 0xaf, 0x28, 0x00, 0xb6, 0xaf, 0x24, 0x00, 0xb5, 0xaf, 0x20, 0x00, 0xb4, - 0xaf, 0x1c, 0x00, 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb1, 0xaf, - 0x10, 0x00, 0xb0, 0xaf, 0x00, 0xa3, 0x02, 0x3c, 0x20, 0x0c, 0x42, 0x90, 0x00, - 0x00, 0x00, 0x00, 0x05, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x22, 0x32, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x18, 0x32, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x03, 0x00, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0xc5, 0x30, 0x00, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0x6c, 0x8c, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x21, - 0x90, 0x00, 0x00, 0x00, 0xa1, 0x02, 0x3c, 0x00, 0x40, 0x42, 0x34, 0x00, 0x00, - 0x40, 0xa4, 0x63, 0x00, 0x11, 0x24, 0x00, 0xa1, 0x10, 0x3c, 0x34, 0x00, 0x15, - 0x24, 0x10, 0x00, 0x13, 0x24, 0xe2, 0x00, 0x14, 0x24, 0x2a, 0x30, 0x00, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0xd7, 0x30, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x0c, - 0x00, 0x15, 0xa2, 0xd7, 0x30, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x00, 0x00, - 0x13, 0xa2, 0xd7, 0x30, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x00, 0x00, 0x13, - 0xa2, 0xd7, 0x30, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x0c, 0x00, 0x14, 0xa2, - 0xd7, 0x30, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x00, 0x00, 0x02, 0x92, 0x00, - 0x00, 0x00, 0x00, 0x40, 0x00, 0x42, 0x30, 0x04, 0x00, 0x40, 0x10, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x31, 0x26, 0xe9, 0xff, 0x20, 0x16, 0x00, 0x00, 0x00, - 0x00, 0x05, 0x00, 0x20, 0x16, 0x63, 0x00, 0x11, 0x24, 0x84, 0x8c, 0x84, 0x27, - 0xfe, 0x28, 0x00, 0x0c, 0x08, 0x00, 0x52, 0x36, 0x63, 0x00, 0x11, 0x24, 0x00, - 0xa1, 0x10, 0x3c, 0xb4, 0x00, 0x15, 0x24, 0xff, 0x00, 0x13, 0x24, 0xe8, 0x00, - 0x14, 0x24, 0x2a, 0x30, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xd7, 0x30, 0x00, - 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x0c, 0x00, 0x15, 0xa2, 0xd7, 0x30, 0x00, 0x0c, - 0x0a, 0x00, 0x04, 0x24, 0x08, 0x00, 0x13, 0xa2, 0xd7, 0x30, 0x00, 0x0c, 0x0a, - 0x00, 0x04, 0x24, 0x08, 0x00, 0x13, 0xa2, 0xd7, 0x30, 0x00, 0x0c, 0x0a, 0x00, - 0x04, 0x24, 0x0c, 0x00, 0x14, 0xa2, 0xd7, 0x30, 0x00, 0x0c, 0x0a, 0x00, 0x04, - 0x24, 0x08, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x42, 0x30, - 0x04, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x31, 0x26, 0xe9, - 0xff, 0x20, 0x16, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x20, 0x16, 0x02, 0x00, - 0x10, 0x24, 0xa0, 0x8c, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x08, 0x00, 0x52, - 0x36, 0x02, 0x00, 0x10, 0x24, 0xff, 0xff, 0x11, 0x24, 0x2a, 0x30, 0x00, 0x0c, - 0xff, 0xff, 0x10, 0x26, 0xfd, 0xff, 0x11, 0x16, 0xd8, 0x00, 0x02, 0x24, 0x00, - 0xa1, 0x10, 0x3c, 0x0c, 0x00, 0x02, 0xa2, 0xd7, 0x30, 0x00, 0x0c, 0x0a, 0x00, - 0x04, 0x24, 0x08, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x51, - 0x30, 0xd7, 0x30, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x08, 0x00, 0x02, 0x92, - 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x43, 0x30, 0xff, 0x00, 0x02, 0x24, 0x07, - 0x00, 0x62, 0x14, 0x00, 0xa1, 0x02, 0x3c, 0x06, 0x00, 0x23, 0x16, 0x00, 0x40, - 0x42, 0x34, 0xbc, 0x8c, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xa1, 0x02, 0x3c, 0x00, 0x40, 0x42, 0x34, 0x00, 0x00, 0x40, 0xa4, - 0xfa, 0x21, 0x00, 0x0c, 0x21, 0x20, 0x00, 0x00, 0x00, 0xa3, 0x10, 0x3c, 0x80, - 0x01, 0x10, 0x36, 0x01, 0x00, 0x11, 0x24, 0x00, 0x00, 0x11, 0xae, 0xfa, 0x21, - 0x00, 0x0c, 0x01, 0x04, 0x04, 0x24, 0x00, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x05, 0x00, 0x51, 0x10, 0x06, 0x00, 0x10, 0x3c, 0xd4, 0x8c, 0x84, 0x27, - 0xfe, 0x28, 0x00, 0x0c, 0x01, 0x00, 0x52, 0x36, 0x06, 0x00, 0x10, 0x3c, 0x7f, - 0x1a, 0x10, 0x36, 0x00, 0xa3, 0x13, 0x3c, 0x80, 0x01, 0x73, 0x36, 0xff, 0xff, - 0x11, 0x24, 0x2a, 0x30, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x40, 0x10, 0xff, 0xff, 0x10, 0x26, - 0xf9, 0xff, 0x11, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x02, 0x3c, 0x80, - 0x01, 0x42, 0x34, 0x00, 0x00, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, - 0x40, 0x10, 0x00, 0xa1, 0x02, 0x3c, 0xf0, 0x8c, 0x84, 0x27, 0xfe, 0x28, 0x00, - 0x0c, 0x02, 0x00, 0x52, 0x36, 0x00, 0xa1, 0x02, 0x3c, 0x00, 0x40, 0x42, 0x34, - 0x00, 0x00, 0x40, 0xa4, 0x63, 0x00, 0x11, 0x24, 0x00, 0xa1, 0x10, 0x3c, 0x34, - 0x00, 0x15, 0x24, 0xff, 0x00, 0x13, 0x24, 0xe2, 0x00, 0x14, 0x24, 0x2a, 0x30, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xd7, 0x30, 0x00, 0x0c, 0x0a, 0x00, 0x04, - 0x24, 0x0c, 0x00, 0x15, 0xa2, 0xd7, 0x30, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, - 0x00, 0x00, 0x13, 0xa2, 0xd7, 0x30, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x00, - 0x00, 0x13, 0xa2, 0xd7, 0x30, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x0c, 0x00, - 0x14, 0xa2, 0xd7, 0x30, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x00, 0x00, 0x02, - 0x92, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x42, 0x30, 0x04, 0x00, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x31, 0x26, 0xe9, 0xff, 0x20, 0x16, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x16, 0x00, 0x00, 0x00, 0x00, 0x84, 0x8c, - 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x08, 0x00, 0x52, 0x36, 0xfa, 0x21, 0x00, - 0x0c, 0x21, 0x20, 0x00, 0x00, 0x00, 0xa3, 0x03, 0x3c, 0x80, 0x01, 0x63, 0x34, - 0x01, 0x00, 0x02, 0x24, 0x00, 0x00, 0x62, 0xac, 0xfa, 0x21, 0x00, 0x0c, 0x01, - 0x04, 0x04, 0x24, 0xd7, 0x30, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x2a, 0x30, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x02, 0x3c, 0x80, 0x01, 0x42, - 0x34, 0x00, 0x00, 0x43, 0x8c, 0x01, 0x00, 0x02, 0x24, 0x04, 0x00, 0x62, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x10, 0x8d, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x04, - 0x00, 0x52, 0x36, 0xfa, 0x21, 0x00, 0x0c, 0x21, 0x20, 0x00, 0x00, 0x00, 0xa1, - 0x02, 0x3c, 0x00, 0x40, 0x42, 0x34, 0x00, 0x00, 0x40, 0xa4, 0x63, 0x00, 0x11, - 0x24, 0x00, 0xa1, 0x10, 0x3c, 0x34, 0x00, 0x16, 0x24, 0xcc, 0x00, 0x15, 0x24, - 0x1c, 0x00, 0x14, 0x24, 0xe2, 0x00, 0x13, 0x24, 0x2a, 0x30, 0x00, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0xd7, 0x30, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x0c, 0x00, - 0x16, 0xa2, 0xd7, 0x30, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x00, 0x00, 0x15, - 0xa2, 0xd7, 0x30, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x00, 0x00, 0x14, 0xa2, - 0xd7, 0x30, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x0c, 0x00, 0x13, 0xa2, 0xd7, - 0x30, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x00, 0x00, 0x02, 0x92, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x00, 0x42, 0x30, 0x04, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x31, 0x26, 0xe9, 0xff, 0x20, 0x16, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x20, 0x16, 0x63, 0x00, 0x11, 0x24, 0x84, 0x8c, 0x84, 0x27, 0xfe, - 0x28, 0x00, 0x0c, 0x08, 0x00, 0x52, 0x36, 0x63, 0x00, 0x11, 0x24, 0x00, 0xa1, - 0x10, 0x3c, 0xb4, 0x00, 0x15, 0x24, 0xff, 0x00, 0x13, 0x24, 0xe8, 0x00, 0x14, - 0x24, 0x2a, 0x30, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xd7, 0x30, 0x00, 0x0c, - 0x0a, 0x00, 0x04, 0x24, 0x0c, 0x00, 0x15, 0xa2, 0xd7, 0x30, 0x00, 0x0c, 0x0a, - 0x00, 0x04, 0x24, 0x08, 0x00, 0x13, 0xa2, 0xd7, 0x30, 0x00, 0x0c, 0x0a, 0x00, - 0x04, 0x24, 0x08, 0x00, 0x13, 0xa2, 0xd7, 0x30, 0x00, 0x0c, 0x0a, 0x00, 0x04, - 0x24, 0x0c, 0x00, 0x14, 0xa2, 0xd7, 0x30, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, - 0x08, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x42, 0x30, 0x04, - 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x31, 0x26, 0xe9, 0xff, - 0x20, 0x16, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x20, 0x16, 0x00, 0xa1, 0x02, - 0x3c, 0xa0, 0x8c, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x08, 0x00, 0x52, 0x36, - 0x00, 0xa1, 0x02, 0x3c, 0x00, 0x40, 0x42, 0x34, 0x00, 0x00, 0x40, 0xa4, 0xfa, - 0x21, 0x00, 0x0c, 0x21, 0x20, 0x00, 0x00, 0x00, 0xa3, 0x03, 0x3c, 0x80, 0x01, - 0x63, 0x34, 0x01, 0x00, 0x02, 0x24, 0x00, 0x00, 0x62, 0xac, 0xfa, 0x21, 0x00, - 0x0c, 0x01, 0x04, 0x04, 0x24, 0x05, 0x00, 0x40, 0x16, 0x21, 0x10, 0x40, 0x02, - 0x30, 0x8d, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, - 0x10, 0x40, 0x02, 0x2c, 0x00, 0xbf, 0x8f, 0x28, 0x00, 0xb6, 0x8f, 0x24, 0x00, - 0xb5, 0x8f, 0x20, 0x00, 0xb4, 0x8f, 0x1c, 0x00, 0xb3, 0x8f, 0x18, 0x00, 0xb2, - 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, - 0x30, 0x00, 0xbd, 0x27, 0xd8, 0xff, 0xbd, 0x27, 0x20, 0x00, 0xbf, 0xaf, 0x1c, - 0x00, 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x03, 0x00, - 0x80, 0x10, 0x10, 0x00, 0xb0, 0xaf, 0xc5, 0x30, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x38, 0x8d, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x90, 0x00, 0x00, - 0x00, 0xa1, 0x02, 0x3c, 0x00, 0x40, 0x42, 0x34, 0x2a, 0x30, 0x00, 0x0c, 0x00, - 0x00, 0x40, 0xa4, 0xd7, 0x30, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x00, 0xa1, - 0x02, 0x3c, 0x00, 0x00, 0x42, 0x8c, 0x03, 0x00, 0x03, 0x3c, 0xff, 0xff, 0x63, - 0x34, 0x24, 0x10, 0x43, 0x00, 0x85, 0x1e, 0x03, 0x24, 0x04, 0x00, 0x43, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x84, 0x8c, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x08, - 0x00, 0x52, 0x36, 0x2a, 0x30, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xd7, 0x30, - 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x00, 0xa1, 0x02, 0x3c, 0x28, 0x00, 0x42, - 0x34, 0x00, 0x00, 0x42, 0x8c, 0x03, 0x00, 0x03, 0x3c, 0xff, 0xff, 0x63, 0x34, - 0x24, 0x10, 0x43, 0x00, 0x05, 0x00, 0x43, 0x10, 0x02, 0x00, 0x10, 0x24, 0x54, - 0x8d, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x08, 0x00, 0x52, 0x36, 0x02, 0x00, - 0x10, 0x24, 0xff, 0xff, 0x11, 0x24, 0x2a, 0x30, 0x00, 0x0c, 0xff, 0xff, 0x10, - 0x26, 0xfd, 0xff, 0x11, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa1, 0x11, 0x3c, - 0x3c, 0x00, 0x31, 0x36, 0x00, 0x00, 0x22, 0x8e, 0x03, 0x00, 0x10, 0x3c, 0xff, - 0xff, 0x10, 0x36, 0x24, 0x98, 0x50, 0x00, 0xd7, 0x30, 0x00, 0x0c, 0x0a, 0x00, - 0x04, 0x24, 0x00, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x24, 0x10, 0x50, - 0x00, 0x07, 0x00, 0x40, 0x14, 0x00, 0xa1, 0x02, 0x3c, 0x06, 0x00, 0x60, 0x16, - 0x00, 0x40, 0x42, 0x34, 0x70, 0x8d, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xa1, 0x02, 0x3c, 0x00, 0x40, 0x42, 0x34, 0x00, 0x00, - 0x40, 0xa4, 0xfa, 0x21, 0x00, 0x0c, 0x21, 0x20, 0x00, 0x00, 0x00, 0xa3, 0x03, - 0x3c, 0x80, 0x01, 0x63, 0x34, 0x01, 0x00, 0x02, 0x24, 0x00, 0x00, 0x62, 0xac, - 0xfa, 0x21, 0x00, 0x0c, 0x01, 0x04, 0x04, 0x24, 0x4f, 0xc3, 0x10, 0x34, 0x00, - 0xa3, 0x04, 0x3c, 0x80, 0x01, 0x84, 0x34, 0xff, 0xff, 0x03, 0x24, 0x00, 0x00, - 0x82, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x40, 0x10, 0xff, 0xff, 0x10, - 0x26, 0xfb, 0xff, 0x03, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x02, 0x3c, - 0x80, 0x01, 0x42, 0x34, 0x00, 0x00, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x05, - 0x00, 0x40, 0x10, 0x00, 0xa1, 0x02, 0x3c, 0xf0, 0x8c, 0x84, 0x27, 0xfe, 0x28, - 0x00, 0x0c, 0x02, 0x00, 0x52, 0x36, 0x00, 0xa1, 0x02, 0x3c, 0x00, 0x00, 0x40, - 0xac, 0x4f, 0xc3, 0x10, 0x34, 0xff, 0xff, 0x11, 0x24, 0x2a, 0x30, 0x00, 0x0c, - 0xff, 0xff, 0x10, 0x26, 0xfd, 0xff, 0x11, 0x16, 0x00, 0x00, 0x00, 0x00, 0xd7, - 0x30, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x00, 0xa1, 0x02, 0x3c, 0x00, 0x40, - 0x42, 0x34, 0x00, 0x00, 0x40, 0xa4, 0xfa, 0x21, 0x00, 0x0c, 0x21, 0x20, 0x00, - 0x00, 0x00, 0xa3, 0x10, 0x3c, 0x80, 0x01, 0x10, 0x36, 0x01, 0x00, 0x11, 0x24, - 0x00, 0x00, 0x11, 0xae, 0xfa, 0x21, 0x00, 0x0c, 0x01, 0x04, 0x04, 0x24, 0x00, - 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x51, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x10, 0x8d, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x04, 0x00, 0x52, - 0x36, 0xfa, 0x21, 0x00, 0x0c, 0x21, 0x20, 0x00, 0x00, 0x00, 0xa1, 0x02, 0x3c, - 0x00, 0x40, 0x42, 0x34, 0x00, 0x00, 0x40, 0xa4, 0xfa, 0x21, 0x00, 0x0c, 0x21, - 0x20, 0x00, 0x00, 0x00, 0xa3, 0x03, 0x3c, 0x80, 0x01, 0x63, 0x34, 0x01, 0x00, - 0x02, 0x24, 0x00, 0x00, 0x62, 0xac, 0xfa, 0x21, 0x00, 0x0c, 0x01, 0x04, 0x04, - 0x24, 0x00, 0xa1, 0x03, 0x3c, 0x85, 0x1e, 0x02, 0x24, 0x00, 0x00, 0x62, 0xac, - 0x05, 0x00, 0x40, 0x16, 0x21, 0x10, 0x40, 0x02, 0x30, 0x8d, 0x84, 0x27, 0xfe, - 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x40, 0x02, 0x20, 0x00, - 0xbf, 0x8f, 0x1c, 0x00, 0xb3, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, - 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x28, 0x00, 0xbd, 0x27, - 0xc0, 0xff, 0xbd, 0x27, 0x3c, 0x00, 0xbf, 0xaf, 0x38, 0x00, 0xbe, 0xaf, 0x34, - 0x00, 0xb7, 0xaf, 0x30, 0x00, 0xb6, 0xaf, 0x2c, 0x00, 0xb5, 0xaf, 0x28, 0x00, - 0xb4, 0xaf, 0x24, 0x00, 0xb3, 0xaf, 0x20, 0x00, 0xb2, 0xaf, 0x1c, 0x00, 0xb1, - 0xaf, 0x18, 0x00, 0xb0, 0xaf, 0x21, 0xa8, 0x80, 0x00, 0x21, 0xf0, 0xc0, 0x00, - 0x50, 0x00, 0xb1, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0xc0, 0x13, 0x21, - 0xa0, 0xa0, 0x00, 0x03, 0x00, 0xe0, 0x10, 0x00, 0x00, 0x00, 0x00, 0xc5, 0x30, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x8d, 0x84, 0x27, 0x21, 0x28, 0xa0, - 0x02, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x30, 0x80, 0x02, 0x21, 0x80, 0xa0, 0x02, - 0x2b, 0x10, 0x90, 0x02, 0x06, 0x00, 0x40, 0x14, 0x21, 0x98, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xae, 0x04, 0x00, 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, 0xfc, 0xff, - 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x30, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x8f, 0x00, 0x20, 0x12, 0x21, 0x80, 0xa0, 0x02, 0x2b, 0x10, 0x90, 0x02, - 0x45, 0x00, 0x40, 0x14, 0x2b, 0x10, 0x95, 0x02, 0x11, 0x11, 0x17, 0x3c, 0x11, - 0x11, 0xf7, 0x36, 0x33, 0x33, 0x16, 0x3c, 0x33, 0x33, 0xd6, 0x36, 0x77, 0x77, - 0x12, 0x3c, 0x77, 0x77, 0x52, 0x36, 0xff, 0xff, 0x11, 0x24, 0x00, 0x00, 0x07, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0xe0, 0x10, 0x01, 0x00, 0x05, 0x24, - 0xb0, 0x8d, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0xfe, 0x28, 0x00, 0x0c, 0x21, - 0x30, 0x00, 0x00, 0x01, 0x00, 0x73, 0x36, 0x00, 0x00, 0x17, 0xae, 0x00, 0x00, - 0x07, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0xf7, 0x10, 0x02, 0x00, 0x05, - 0x24, 0xb0, 0x8d, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x11, 0x11, 0x06, 0x3c, - 0xfe, 0x28, 0x00, 0x0c, 0x11, 0x11, 0xc6, 0x34, 0x02, 0x00, 0x73, 0x36, 0x00, - 0x00, 0x16, 0xae, 0x00, 0x00, 0x07, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, - 0xf6, 0x10, 0x03, 0x00, 0x05, 0x24, 0xb0, 0x8d, 0x84, 0x8f, 0x10, 0x00, 0xb0, - 0xaf, 0x33, 0x33, 0x06, 0x3c, 0xfe, 0x28, 0x00, 0x0c, 0x33, 0x33, 0xc6, 0x34, - 0x04, 0x00, 0x73, 0x36, 0x00, 0x00, 0x12, 0xae, 0x00, 0x00, 0x07, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x07, 0x00, 0xf2, 0x10, 0x04, 0x00, 0x05, 0x24, 0xb0, 0x8d, - 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x77, 0x77, 0x06, 0x3c, 0xfe, 0x28, 0x00, - 0x0c, 0x77, 0x77, 0xc6, 0x34, 0x08, 0x00, 0x73, 0x36, 0x00, 0x00, 0x11, 0xae, - 0x00, 0x00, 0x07, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0xf1, 0x10, 0x05, - 0x00, 0x05, 0x24, 0xb0, 0x8d, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0xfe, 0x28, - 0x00, 0x0c, 0xff, 0xff, 0x06, 0x24, 0x10, 0x00, 0x73, 0x36, 0xff, 0x00, 0x02, - 0x32, 0x03, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x30, 0x00, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, 0xc4, - 0xff, 0x40, 0x10, 0x2b, 0x10, 0x95, 0x02, 0xd5, 0x01, 0x40, 0x14, 0x21, 0x80, - 0x80, 0x02, 0x77, 0x77, 0x14, 0x3c, 0x77, 0x77, 0x94, 0x36, 0x33, 0x33, 0x12, - 0x3c, 0x33, 0x33, 0x52, 0x36, 0x11, 0x11, 0x11, 0x3c, 0x11, 0x11, 0x31, 0x36, - 0x00, 0x00, 0x07, 0x8e, 0xff, 0xff, 0x02, 0x24, 0x06, 0x00, 0xe2, 0x10, 0x06, - 0x00, 0x05, 0x24, 0xb0, 0x8d, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0xfe, 0x28, - 0x00, 0x0c, 0xff, 0xff, 0x06, 0x24, 0x20, 0x00, 0x73, 0x36, 0x00, 0x00, 0x14, - 0xae, 0x00, 0x00, 0x07, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0xf4, 0x10, - 0x07, 0x00, 0x05, 0x24, 0xb0, 0x8d, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x77, - 0x77, 0x06, 0x3c, 0xfe, 0x28, 0x00, 0x0c, 0x77, 0x77, 0xc6, 0x34, 0x40, 0x00, - 0x73, 0x36, 0x00, 0x00, 0x12, 0xae, 0x00, 0x00, 0x07, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x07, 0x00, 0xf2, 0x10, 0x08, 0x00, 0x05, 0x24, 0xb0, 0x8d, 0x84, 0x8f, - 0x10, 0x00, 0xb0, 0xaf, 0x33, 0x33, 0x06, 0x3c, 0xfe, 0x28, 0x00, 0x0c, 0x33, - 0x33, 0xc6, 0x34, 0x80, 0x00, 0x73, 0x36, 0x00, 0x00, 0x11, 0xae, 0x00, 0x00, - 0x07, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0xf1, 0x10, 0x09, 0x00, 0x05, - 0x24, 0xb0, 0x8d, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0x11, 0x11, 0x06, 0x3c, - 0xfe, 0x28, 0x00, 0x0c, 0x11, 0x11, 0xc6, 0x34, 0x00, 0x01, 0x73, 0x36, 0x00, - 0x00, 0x00, 0xae, 0x00, 0x00, 0x07, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, - 0xe0, 0x10, 0x0a, 0x00, 0x05, 0x24, 0xb0, 0x8d, 0x84, 0x8f, 0x10, 0x00, 0xb0, - 0xaf, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x30, 0x00, 0x00, 0x00, 0x02, 0x73, 0x36, - 0xff, 0x00, 0x02, 0x32, 0x03, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x2a, - 0x30, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x10, 0x26, 0x2b, 0x10, - 0x15, 0x02, 0xc4, 0xff, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0x95, 0x02, 0x58, 0x00, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x11, 0x24, 0x21, 0x90, 0x00, 0x00, 0x00, - 0x00, 0x07, 0x92, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xe7, 0x30, 0xff, 0x00, - 0x46, 0x32, 0x07, 0x00, 0xe6, 0x10, 0x25, 0x10, 0x51, 0x02, 0xb0, 0x8d, 0x84, - 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0xfe, 0x28, 0x00, 0x0c, 0x01, 0x00, 0x05, 0x24, - 0x01, 0x00, 0x73, 0x36, 0x25, 0x10, 0x51, 0x02, 0x00, 0x00, 0x02, 0xa2, 0x00, - 0x00, 0x07, 0x92, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xe7, 0x30, 0xff, 0x00, - 0x46, 0x30, 0x06, 0x00, 0xe6, 0x10, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x8d, 0x84, - 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0xfe, 0x28, 0x00, 0x0c, 0x02, 0x00, 0x05, 0x24, - 0x02, 0x00, 0x73, 0x36, 0x00, 0x00, 0x12, 0xa2, 0x00, 0x00, 0x07, 0x92, 0x00, - 0x00, 0x00, 0x00, 0xff, 0x00, 0xe7, 0x30, 0xff, 0x00, 0x46, 0x32, 0x07, 0x00, - 0xe6, 0x10, 0x25, 0x10, 0x51, 0x02, 0xb0, 0x8d, 0x84, 0x8f, 0x10, 0x00, 0xb0, - 0xaf, 0xfe, 0x28, 0x00, 0x0c, 0x03, 0x00, 0x05, 0x24, 0x04, 0x00, 0x73, 0x36, - 0x25, 0x10, 0x51, 0x02, 0x00, 0x00, 0x02, 0xa2, 0x40, 0x10, 0x11, 0x00, 0x21, - 0x88, 0x40, 0x00, 0xff, 0xff, 0x52, 0x24, 0xff, 0x00, 0x22, 0x32, 0xd5, 0xff, - 0x40, 0x14, 0xff, 0x00, 0x02, 0x32, 0x03, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x2a, 0x30, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x26, - 0x2b, 0x10, 0x90, 0x02, 0xcb, 0xff, 0x40, 0x10, 0x2b, 0x10, 0x95, 0x02, 0x20, - 0x00, 0x40, 0x14, 0x21, 0x80, 0xa0, 0x02, 0x01, 0x00, 0x11, 0x24, 0xfe, 0x00, - 0x12, 0x24, 0x00, 0x00, 0x07, 0x92, 0x25, 0x10, 0x51, 0x02, 0xff, 0x00, 0xe7, - 0x30, 0xff, 0x00, 0x46, 0x30, 0x06, 0x00, 0xe6, 0x10, 0x00, 0x00, 0x00, 0x00, - 0xb0, 0x8d, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0xfe, 0x28, 0x00, 0x0c, 0x04, - 0x00, 0x05, 0x24, 0x08, 0x00, 0x73, 0x36, 0x00, 0x00, 0x12, 0xa2, 0x25, 0x10, - 0x51, 0x02, 0x00, 0x00, 0x02, 0xa2, 0x40, 0x88, 0x11, 0x00, 0x40, 0x10, 0x12, - 0x00, 0x01, 0x00, 0x52, 0x34, 0xff, 0x00, 0x22, 0x32, 0xed, 0xff, 0x40, 0x14, - 0xff, 0x00, 0x02, 0x32, 0x03, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x2a, - 0x30, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x26, 0x2b, 0x10, - 0x90, 0x02, 0xe4, 0xff, 0x40, 0x10, 0x01, 0x00, 0x11, 0x24, 0x2b, 0x10, 0x95, - 0x02, 0x3c, 0x00, 0x40, 0x14, 0x21, 0x80, 0x80, 0x02, 0x80, 0x00, 0x11, 0x24, - 0x7f, 0x00, 0x12, 0x24, 0x00, 0x00, 0x07, 0x92, 0x25, 0x10, 0x51, 0x02, 0xff, - 0x00, 0xe7, 0x30, 0xff, 0x00, 0x46, 0x30, 0x06, 0x00, 0xe6, 0x10, 0x00, 0x00, - 0x00, 0x00, 0xb0, 0x8d, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0xfe, 0x28, 0x00, - 0x0c, 0x05, 0x00, 0x05, 0x24, 0x10, 0x00, 0x73, 0x36, 0x00, 0x00, 0x12, 0xa2, - 0x25, 0x10, 0x51, 0x02, 0x00, 0x00, 0x02, 0xa2, 0x00, 0x00, 0x12, 0xa2, 0xff, - 0x00, 0x22, 0x32, 0x42, 0x88, 0x02, 0x00, 0xff, 0x00, 0x42, 0x32, 0xed, 0xff, - 0x20, 0x16, 0x42, 0x90, 0x02, 0x00, 0xff, 0x00, 0x02, 0x32, 0x03, 0x00, 0x40, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x30, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x10, 0x26, 0x2b, 0x10, 0x15, 0x02, 0xe3, 0xff, 0x40, 0x10, 0x80, - 0x00, 0x11, 0x24, 0x2b, 0x10, 0x95, 0x02, 0x1a, 0x00, 0x40, 0x14, 0x21, 0x80, - 0x80, 0x02, 0x80, 0x00, 0x11, 0x24, 0x00, 0x00, 0x07, 0x92, 0x00, 0x00, 0x00, - 0x00, 0xff, 0x00, 0xe7, 0x30, 0x06, 0x00, 0xe0, 0x10, 0x06, 0x00, 0x05, 0x24, - 0xb0, 0x8d, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0xfe, 0x28, 0x00, 0x0c, 0x21, - 0x30, 0x00, 0x00, 0x20, 0x00, 0x73, 0x36, 0x00, 0x00, 0x11, 0xa2, 0x00, 0x00, - 0x00, 0xa2, 0xff, 0x00, 0x22, 0x32, 0x42, 0x88, 0x02, 0x00, 0xf1, 0xff, 0x20, - 0x16, 0xff, 0x00, 0x02, 0x32, 0x03, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x2a, 0x30, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x10, 0x26, 0x2b, - 0x10, 0x15, 0x02, 0xe9, 0xff, 0x40, 0x10, 0x80, 0x00, 0x11, 0x24, 0x0f, 0x00, - 0x12, 0x24, 0x01, 0x00, 0x42, 0x32, 0x23, 0x10, 0x02, 0x00, 0x00, 0x44, 0x03, - 0x3c, 0x00, 0x11, 0x63, 0x34, 0x24, 0x88, 0x43, 0x00, 0x02, 0x00, 0x42, 0x32, - 0x03, 0x00, 0x40, 0x10, 0x00, 0x11, 0x02, 0x3c, 0x00, 0x44, 0x42, 0x34, 0x25, - 0x88, 0x22, 0x02, 0x04, 0x00, 0x42, 0x32, 0x03, 0x00, 0x40, 0x10, 0x88, 0x00, - 0x02, 0x3c, 0x22, 0x00, 0x42, 0x34, 0x25, 0x88, 0x22, 0x02, 0x08, 0x00, 0x42, - 0x32, 0x03, 0x00, 0x40, 0x10, 0x22, 0x00, 0x02, 0x3c, 0x88, 0x00, 0x42, 0x34, - 0x25, 0x88, 0x22, 0x02, 0x21, 0x80, 0xa0, 0x02, 0x2b, 0x10, 0x90, 0x02, 0x06, - 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xae, 0x04, 0x00, - 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, 0xfc, 0xff, 0x40, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x2a, 0x30, 0x00, 0x0c, 0x21, 0x80, 0xa0, 0x02, 0x2b, 0x10, 0x90, 0x02, - 0x13, 0x00, 0x40, 0x14, 0x55, 0xaa, 0x02, 0x3c, 0x00, 0x00, 0x07, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x06, 0x00, 0xf1, 0x10, 0x07, 0x00, 0x05, 0x24, 0xb0, 0x8d, - 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x30, 0x20, - 0x02, 0x40, 0x00, 0x73, 0x36, 0xff, 0x00, 0x02, 0x32, 0x03, 0x00, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x2a, 0x30, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x00, 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, 0xef, 0xff, 0x40, 0x10, 0x55, 0xaa, - 0x02, 0x3c, 0x55, 0xaa, 0x42, 0x34, 0x25, 0x88, 0x22, 0x02, 0x21, 0x80, 0xa0, - 0x02, 0x2b, 0x10, 0x90, 0x02, 0x06, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x11, 0xae, 0x04, 0x00, 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, 0xfc, - 0xff, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x30, 0x00, 0x0c, 0x21, 0x80, - 0xa0, 0x02, 0x2b, 0x10, 0x90, 0x02, 0x13, 0x00, 0x40, 0x14, 0xaa, 0x55, 0x02, - 0x3c, 0x00, 0x00, 0x07, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0xf1, 0x10, - 0x08, 0x00, 0x05, 0x24, 0xb0, 0x8d, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0xfe, - 0x28, 0x00, 0x0c, 0x21, 0x30, 0x20, 0x02, 0x80, 0x00, 0x73, 0x36, 0xff, 0x00, - 0x02, 0x32, 0x03, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x30, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, - 0xef, 0xff, 0x40, 0x10, 0xaa, 0x55, 0x02, 0x3c, 0xaa, 0x55, 0x42, 0x34, 0x24, - 0x88, 0x22, 0x02, 0x21, 0x80, 0xa0, 0x02, 0x2b, 0x10, 0x90, 0x02, 0x06, 0x00, - 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xae, 0x04, 0x00, 0x10, - 0x26, 0x2b, 0x10, 0x90, 0x02, 0xfc, 0xff, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x2a, 0x30, 0x00, 0x0c, 0x21, 0x80, 0xa0, 0x02, 0x2b, 0x10, 0x90, 0x02, 0x13, - 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x06, 0x00, 0xf1, 0x10, 0x09, 0x00, 0x05, 0x24, 0xb0, 0x8d, 0x84, - 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x30, 0x20, 0x02, - 0x00, 0x01, 0x73, 0x36, 0xff, 0x00, 0x02, 0x32, 0x03, 0x00, 0x40, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x2a, 0x30, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, 0xef, 0xff, 0x40, 0x10, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x52, 0x26, 0x87, 0xff, 0x41, 0x06, 0x01, 0x00, 0x42, 0x32, - 0x0f, 0x00, 0x12, 0x24, 0x01, 0x00, 0x42, 0x32, 0x23, 0x10, 0x02, 0x00, 0x00, - 0x88, 0x03, 0x3c, 0x00, 0x22, 0x63, 0x34, 0x24, 0x88, 0x43, 0x00, 0x02, 0x00, - 0x42, 0x32, 0x03, 0x00, 0x40, 0x10, 0x00, 0x22, 0x02, 0x3c, 0x00, 0x88, 0x42, - 0x34, 0x25, 0x88, 0x22, 0x02, 0x04, 0x00, 0x42, 0x32, 0x03, 0x00, 0x40, 0x10, - 0x44, 0x00, 0x02, 0x3c, 0x11, 0x00, 0x42, 0x34, 0x25, 0x88, 0x22, 0x02, 0x08, - 0x00, 0x42, 0x32, 0x03, 0x00, 0x40, 0x10, 0x11, 0x00, 0x02, 0x3c, 0x44, 0x00, - 0x42, 0x34, 0x25, 0x88, 0x22, 0x02, 0x21, 0x80, 0xa0, 0x02, 0x2b, 0x10, 0x90, - 0x02, 0x06, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xae, - 0x04, 0x00, 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, 0xfc, 0xff, 0x40, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x2a, 0x30, 0x00, 0x0c, 0x21, 0x80, 0xa0, 0x02, 0x2b, 0x10, - 0x90, 0x02, 0x13, 0x00, 0x40, 0x14, 0xaa, 0x55, 0x02, 0x3c, 0x00, 0x00, 0x07, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0xf1, 0x10, 0x0a, 0x00, 0x05, 0x24, - 0xb0, 0x8d, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0xfe, 0x28, 0x00, 0x0c, 0x21, - 0x30, 0x20, 0x02, 0x00, 0x02, 0x73, 0x36, 0xff, 0x00, 0x02, 0x32, 0x03, 0x00, - 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x30, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x00, 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, 0xef, 0xff, 0x40, 0x10, - 0xaa, 0x55, 0x02, 0x3c, 0xaa, 0x55, 0x42, 0x34, 0x25, 0x88, 0x22, 0x02, 0x21, - 0x80, 0xa0, 0x02, 0x2b, 0x10, 0x90, 0x02, 0x06, 0x00, 0x40, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x11, 0xae, 0x04, 0x00, 0x10, 0x26, 0x2b, 0x10, 0x90, - 0x02, 0xfc, 0xff, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x30, 0x00, 0x0c, - 0x21, 0x80, 0xa0, 0x02, 0x2b, 0x10, 0x90, 0x02, 0x13, 0x00, 0x40, 0x14, 0x55, - 0xaa, 0x02, 0x3c, 0x00, 0x00, 0x07, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, - 0xf1, 0x10, 0x0b, 0x00, 0x05, 0x24, 0xb0, 0x8d, 0x84, 0x8f, 0x10, 0x00, 0xb0, - 0xaf, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x30, 0x20, 0x02, 0x00, 0x02, 0x73, 0x36, - 0xff, 0x00, 0x02, 0x32, 0x03, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x2a, - 0x30, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x26, 0x2b, 0x10, - 0x90, 0x02, 0xef, 0xff, 0x40, 0x10, 0x55, 0xaa, 0x02, 0x3c, 0x55, 0xaa, 0x42, - 0x34, 0x24, 0x88, 0x22, 0x02, 0x21, 0x80, 0xa0, 0x02, 0x2b, 0x10, 0x90, 0x02, - 0x06, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xae, 0x04, - 0x00, 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, 0xfc, 0xff, 0x40, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x2a, 0x30, 0x00, 0x0c, 0x21, 0x80, 0xa0, 0x02, 0x2b, 0x10, 0x90, - 0x02, 0x13, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0xf1, 0x10, 0x0c, 0x00, 0x05, 0x24, 0xb0, - 0x8d, 0x84, 0x8f, 0x10, 0x00, 0xb0, 0xaf, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x30, - 0x20, 0x02, 0x00, 0x02, 0x73, 0x36, 0xff, 0x00, 0x02, 0x32, 0x03, 0x00, 0x40, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x30, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x10, 0x26, 0x2b, 0x10, 0x90, 0x02, 0xef, 0xff, 0x40, 0x10, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x52, 0x26, 0x87, 0xff, 0x41, 0x06, 0x01, 0x00, - 0x42, 0x32, 0x07, 0x00, 0x60, 0x16, 0x21, 0x10, 0x60, 0x02, 0x05, 0x00, 0xc0, - 0x13, 0x00, 0x00, 0x00, 0x00, 0x30, 0x8d, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x60, 0x02, 0x3c, 0x00, 0xbf, 0x8f, 0x38, - 0x00, 0xbe, 0x8f, 0x34, 0x00, 0xb7, 0x8f, 0x30, 0x00, 0xb6, 0x8f, 0x2c, 0x00, - 0xb5, 0x8f, 0x28, 0x00, 0xb4, 0x8f, 0x24, 0x00, 0xb3, 0x8f, 0x20, 0x00, 0xb2, - 0x8f, 0x1c, 0x00, 0xb1, 0x8f, 0x18, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, - 0x40, 0x00, 0xbd, 0x27, 0xf8, 0xff, 0xbd, 0x27, 0x10, 0x27, 0x02, 0x24, 0x00, - 0x00, 0xa2, 0xaf, 0x00, 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x42, 0x24, 0x00, 0x00, 0xa2, 0xaf, 0x00, 0x00, 0xa3, 0x8f, 0xff, 0xff, 0x02, - 0x24, 0x0d, 0x00, 0x62, 0x10, 0xff, 0xff, 0x03, 0x24, 0x2c, 0x00, 0x82, 0x90, - 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x24, 0x00, 0x00, - 0xa2, 0xaf, 0x00, 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x43, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x08, 0x00, 0xbd, 0x27, - 0x68, 0xff, 0xbd, 0x27, 0x94, 0x00, 0xbf, 0xaf, 0x90, 0x00, 0xbe, 0xaf, 0x8c, - 0x00, 0xb7, 0xaf, 0x88, 0x00, 0xb6, 0xaf, 0x84, 0x00, 0xb5, 0xaf, 0x80, 0x00, - 0xb4, 0xaf, 0x7c, 0x00, 0xb3, 0xaf, 0x78, 0x00, 0xb2, 0xaf, 0x74, 0x00, 0xb1, - 0xaf, 0x70, 0x00, 0xb0, 0xaf, 0x21, 0x98, 0x80, 0x00, 0x21, 0xb8, 0xa0, 0x00, - 0x48, 0x00, 0xa6, 0xaf, 0x21, 0xf0, 0xe0, 0x00, 0xd4, 0x8d, 0x85, 0x27, 0x00, - 0x00, 0xa2, 0x8c, 0x04, 0x00, 0xa3, 0x8c, 0x08, 0x00, 0xa4, 0x8c, 0x38, 0x00, - 0xa2, 0xaf, 0x3c, 0x00, 0xa3, 0xaf, 0x40, 0x00, 0xa4, 0xaf, 0x0c, 0x00, 0xa2, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0xa2, 0xaf, 0x80, 0x1b, 0x13, 0x00, - 0x01, 0xa1, 0x02, 0x3c, 0x21, 0x88, 0x62, 0x00, 0x50, 0x00, 0xb1, 0xaf, 0xff, - 0x00, 0x02, 0x24, 0x00, 0x00, 0x22, 0xa2, 0x21, 0x80, 0x00, 0x00, 0x01, 0x00, - 0x10, 0x26, 0xf4, 0x01, 0x02, 0x2a, 0xfe, 0xff, 0x40, 0x14, 0x01, 0x00, 0x10, - 0x26, 0xff, 0xff, 0x10, 0x26, 0x00, 0x00, 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, - 0x0f, 0x00, 0x60, 0x12, 0xff, 0x00, 0x55, 0x30, 0x1c, 0x00, 0x02, 0x24, 0x0b, - 0x00, 0xa2, 0x12, 0x20, 0x00, 0x02, 0x24, 0x09, 0x00, 0xa2, 0x12, 0x28, 0x00, - 0x02, 0x24, 0x07, 0x00, 0xa2, 0x12, 0x2c, 0x00, 0x02, 0x24, 0x05, 0x00, 0xa2, - 0x12, 0x44, 0x00, 0x02, 0x24, 0x03, 0x00, 0xa2, 0x12, 0x48, 0x00, 0x02, 0x24, - 0x03, 0x00, 0xa2, 0x16, 0x00, 0xa3, 0x03, 0x3c, 0xff, 0x00, 0x15, 0x24, 0x00, - 0xa3, 0x03, 0x3c, 0x80, 0x01, 0x63, 0x34, 0x21, 0x10, 0x63, 0x02, 0x2c, 0x00, - 0x55, 0xa0, 0x30, 0x00, 0x40, 0xa0, 0x34, 0x00, 0x40, 0xa0, 0x80, 0x10, 0x13, - 0x00, 0x21, 0x10, 0x43, 0x00, 0x38, 0x00, 0x40, 0xac, 0x21, 0xb0, 0x00, 0x00, - 0x82, 0xa0, 0x15, 0x00, 0x10, 0x00, 0x08, 0x24, 0x58, 0x00, 0xa8, 0xaf, 0x04, - 0x00, 0x02, 0x24, 0x12, 0x00, 0x82, 0x12, 0x60, 0x00, 0xa0, 0xaf, 0x0c, 0x00, - 0x02, 0x24, 0x0f, 0x00, 0x82, 0x12, 0x06, 0x00, 0x02, 0x24, 0x0d, 0x00, 0x82, - 0x12, 0x0e, 0x00, 0x02, 0x24, 0x0b, 0x00, 0x82, 0x12, 0x08, 0x00, 0x02, 0x24, - 0x09, 0x00, 0x82, 0x12, 0x0b, 0x00, 0x02, 0x24, 0x07, 0x00, 0x82, 0x12, 0x14, - 0x00, 0x02, 0x24, 0x05, 0x00, 0x82, 0x12, 0x1c, 0x00, 0x02, 0x24, 0x03, 0x00, - 0x82, 0x12, 0x12, 0x00, 0x02, 0x24, 0x04, 0x00, 0x82, 0x16, 0x04, 0x00, 0x02, - 0x24, 0x08, 0x00, 0x08, 0x24, 0x58, 0x00, 0xa8, 0xaf, 0x04, 0x00, 0x02, 0x24, - 0x03, 0x00, 0x82, 0x12, 0x0c, 0x00, 0x02, 0x24, 0x04, 0x00, 0x82, 0x16, 0x07, - 0x00, 0x02, 0x24, 0x01, 0x00, 0x08, 0x24, 0x60, 0x00, 0xa8, 0xaf, 0x07, 0x00, - 0x02, 0x24, 0x09, 0x00, 0x82, 0x12, 0x0a, 0x00, 0x02, 0x24, 0x07, 0x00, 0x82, - 0x12, 0x10, 0x00, 0x02, 0x24, 0x05, 0x00, 0x82, 0x12, 0x18, 0x00, 0x02, 0x24, - 0x03, 0x00, 0x82, 0x12, 0x11, 0x00, 0x02, 0x24, 0x04, 0x00, 0x82, 0x16, 0x01, - 0x00, 0x02, 0x24, 0x04, 0x00, 0x08, 0x24, 0x58, 0x00, 0xa8, 0xaf, 0x01, 0x00, - 0x02, 0x24, 0x00, 0x00, 0x42, 0x24, 0x68, 0x00, 0xa2, 0xaf, 0xff, 0xff, 0x83, - 0x26, 0x7f, 0x00, 0x62, 0x2c, 0x5a, 0x01, 0x40, 0x10, 0x80, 0x10, 0x03, 0x00, - 0x01, 0xa0, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0x40, 0x00, 0x22, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, - 0xe0, 0x12, 0xf7, 0xff, 0x02, 0x24, 0x1c, 0x01, 0xe2, 0x16, 0x00, 0x00, 0x00, - 0x00, 0xe4, 0x8d, 0x84, 0x27, 0x21, 0x28, 0x60, 0x02, 0xfe, 0x28, 0x00, 0x0c, - 0x21, 0x30, 0xa0, 0x02, 0x80, 0x1b, 0x13, 0x00, 0x01, 0xa1, 0x02, 0x3c, 0x00, - 0x08, 0x42, 0x34, 0x21, 0x88, 0x62, 0x00, 0x14, 0x35, 0x00, 0x0c, 0x21, 0x20, - 0x20, 0x02, 0x81, 0x00, 0x02, 0x24, 0x2c, 0x00, 0x22, 0xa2, 0x0f, 0x00, 0x10, - 0x3c, 0x40, 0x42, 0x10, 0x36, 0x3c, 0x00, 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, - 0x0b, 0x00, 0x40, 0x14, 0xf3, 0x01, 0x07, 0x24, 0xff, 0xff, 0x03, 0x24, 0xff, - 0xff, 0x10, 0x26, 0x07, 0x00, 0x03, 0x12, 0xf3, 0x01, 0x07, 0x24, 0x3c, 0x00, - 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xff, 0x40, 0x10, 0xff, 0xff, 0x10, - 0x26, 0x01, 0x00, 0x10, 0x26, 0xf3, 0x01, 0x07, 0x24, 0xff, 0xff, 0xe7, 0x24, - 0xff, 0xff, 0xe0, 0x14, 0xff, 0xff, 0xe7, 0x24, 0x01, 0x00, 0xe7, 0x24, 0xed, - 0x00, 0x02, 0x24, 0x10, 0x00, 0x22, 0xa2, 0x21, 0x90, 0x00, 0x00, 0x10, 0x00, - 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x42, 0x30, 0xed, 0x00, 0x03, - 0x24, 0xde, 0x00, 0x43, 0x14, 0x00, 0xa3, 0x03, 0x3c, 0x80, 0x01, 0x63, 0x34, - 0x21, 0x18, 0x63, 0x02, 0x34, 0x00, 0x62, 0x90, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x42, 0x24, 0x34, 0x00, 0x62, 0xa0, 0x34, 0x00, 0x62, 0x90, 0x10, 0x00, - 0x20, 0xa2, 0x10, 0x00, 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x43, - 0x30, 0xff, 0x00, 0x02, 0x24, 0x10, 0x00, 0x22, 0xa2, 0x10, 0x00, 0x22, 0x92, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x60, 0x14, 0xff, 0x00, 0x47, 0x30, 0xff, - 0x00, 0x02, 0x24, 0x06, 0x00, 0xe2, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x52, 0x36, 0x00, 0x8e, 0x84, 0x27, 0x21, 0x28, 0x60, 0x02, 0xfe, 0x28, 0x00, - 0x0c, 0x21, 0x30, 0x60, 0x00, 0x28, 0x00, 0x20, 0xa2, 0x14, 0x35, 0x00, 0x0c, - 0x21, 0x20, 0x20, 0x02, 0x80, 0x00, 0x02, 0x24, 0x2c, 0x00, 0x22, 0xa2, 0xf3, - 0x01, 0x07, 0x24, 0xff, 0xff, 0xe7, 0x24, 0xff, 0xff, 0xe0, 0x14, 0xff, 0xff, - 0xe7, 0x24, 0x14, 0x35, 0x00, 0x0c, 0x21, 0x20, 0x20, 0x02, 0x42, 0x00, 0x02, - 0x24, 0x2c, 0x00, 0x22, 0xa2, 0xf3, 0x01, 0x07, 0x24, 0xff, 0xff, 0xe7, 0x24, - 0xff, 0xff, 0xe0, 0x14, 0xff, 0xff, 0xe7, 0x24, 0x01, 0x00, 0xe7, 0x24, 0x48, - 0x00, 0x22, 0x92, 0x21, 0x80, 0x00, 0x00, 0x48, 0x00, 0x30, 0xa2, 0x01, 0x00, - 0x10, 0x26, 0x80, 0x00, 0x02, 0x2a, 0xfc, 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x21, 0x80, 0x00, 0x00, 0x48, 0x00, 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, - 0xff, 0x00, 0x43, 0x30, 0x06, 0x00, 0x70, 0x10, 0x21, 0x28, 0x60, 0x02, 0x10, - 0x00, 0x52, 0x36, 0x3c, 0x8e, 0x84, 0x27, 0x21, 0x30, 0x00, 0x02, 0xfe, 0x28, - 0x00, 0x0c, 0x21, 0x38, 0x60, 0x00, 0x01, 0x00, 0x10, 0x26, 0x80, 0x00, 0x02, - 0x2a, 0xf3, 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x14, 0x35, 0x00, 0x0c, - 0x21, 0x20, 0x20, 0x02, 0x42, 0x00, 0x02, 0x24, 0x2c, 0x00, 0x22, 0xa2, 0xf3, - 0x01, 0x07, 0x24, 0xff, 0xff, 0xe7, 0x24, 0xff, 0xff, 0xe0, 0x14, 0xff, 0xff, - 0xe7, 0x24, 0x14, 0x35, 0x00, 0x0c, 0x21, 0x20, 0x20, 0x02, 0x43, 0x00, 0x02, - 0x24, 0x2c, 0x00, 0x22, 0xa2, 0x08, 0x00, 0x10, 0x24, 0xfa, 0x21, 0x00, 0x0c, - 0x21, 0x20, 0x00, 0x00, 0x00, 0xa3, 0x03, 0x3c, 0x80, 0x01, 0x63, 0x34, 0x01, - 0x00, 0x02, 0x24, 0x00, 0x00, 0x62, 0xac, 0x80, 0x10, 0x13, 0x00, 0x21, 0x10, - 0xa2, 0x03, 0x38, 0x00, 0x44, 0x8c, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x21, 0x00, - 0x0c, 0x01, 0x00, 0x84, 0x24, 0x87, 0x13, 0x07, 0x24, 0xff, 0xff, 0xe7, 0x24, - 0xff, 0xff, 0xe0, 0x14, 0xff, 0xff, 0xe7, 0x24, 0x01, 0x00, 0xe7, 0x24, 0x00, - 0xa3, 0x02, 0x3c, 0x80, 0x01, 0x42, 0x34, 0x00, 0x00, 0x43, 0x8c, 0x01, 0x00, - 0x02, 0x24, 0x06, 0x00, 0x62, 0x10, 0x08, 0x00, 0x03, 0x32, 0x40, 0x00, 0x52, - 0x36, 0x70, 0x8e, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x28, 0x60, 0x02, - 0x08, 0x00, 0x03, 0x32, 0x08, 0x00, 0x63, 0x24, 0x43, 0x18, 0x03, 0x00, 0x80, - 0x13, 0x13, 0x00, 0x21, 0x10, 0x43, 0x00, 0x01, 0xa1, 0x01, 0x3c, 0x21, 0x08, - 0x22, 0x00, 0x00, 0x00, 0x22, 0x90, 0x07, 0x00, 0x03, 0x32, 0x07, 0x10, 0x62, - 0x00, 0x01, 0x00, 0x42, 0x30, 0x05, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x40, 0x00, 0x52, 0x36, 0x9c, 0x8e, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x21, - 0x28, 0x60, 0x02, 0x00, 0x00, 0x20, 0xa2, 0x05, 0x00, 0x02, 0x24, 0x10, 0x00, - 0x22, 0xa2, 0x14, 0x00, 0x22, 0xa2, 0x14, 0x35, 0x00, 0x0c, 0x21, 0x20, 0x20, - 0x02, 0x18, 0x00, 0x02, 0x24, 0x2c, 0x00, 0x22, 0xa2, 0x81, 0x00, 0x02, 0x24, - 0x04, 0x00, 0x22, 0xa2, 0x3f, 0x9c, 0x07, 0x34, 0xff, 0xff, 0xe7, 0x24, 0xff, - 0xff, 0xe0, 0x14, 0xff, 0xff, 0xe7, 0x24, 0x08, 0x00, 0x03, 0x32, 0x08, 0x00, - 0x63, 0x24, 0x43, 0x18, 0x03, 0x00, 0x80, 0x13, 0x13, 0x00, 0x21, 0x10, 0x43, - 0x00, 0x01, 0xa1, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0x00, 0x00, 0x22, 0x90, - 0x07, 0x00, 0x03, 0x32, 0x07, 0x10, 0x62, 0x00, 0x01, 0x00, 0x42, 0x30, 0x05, - 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x52, 0x36, 0xd8, 0x8e, - 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x28, 0x60, 0x02, 0x40, 0x00, 0x20, - 0xa2, 0x30, 0x00, 0x20, 0xa2, 0x10, 0x00, 0x20, 0xa2, 0x14, 0x00, 0x20, 0xa2, - 0x14, 0x35, 0x00, 0x0c, 0x21, 0x20, 0x20, 0x02, 0x10, 0x00, 0x02, 0x24, 0x2c, - 0x00, 0x22, 0xa2, 0x00, 0x00, 0x20, 0xa2, 0x04, 0x00, 0x20, 0xa2, 0x00, 0xa3, - 0x02, 0x3c, 0x80, 0x01, 0x42, 0x34, 0x00, 0x00, 0x42, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x05, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x52, 0x36, - 0x14, 0x8f, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x28, 0x60, 0x02, 0xfa, - 0x21, 0x00, 0x0c, 0x21, 0x20, 0x00, 0x00, 0x00, 0xa3, 0x03, 0x3c, 0x80, 0x01, - 0x63, 0x34, 0x01, 0x00, 0x02, 0x24, 0x00, 0x00, 0x62, 0xac, 0x80, 0x10, 0x13, - 0x00, 0x21, 0x10, 0xa2, 0x03, 0x38, 0x00, 0x44, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x21, 0x00, 0x0c, 0x01, 0x00, 0x84, 0x24, 0x3f, 0x9c, 0x07, 0x34, 0xff, - 0xff, 0xe7, 0x24, 0xff, 0xff, 0xe0, 0x14, 0xff, 0xff, 0xe7, 0x24, 0x01, 0x00, - 0xe7, 0x24, 0x00, 0xa3, 0x02, 0x3c, 0x80, 0x01, 0x42, 0x34, 0x00, 0x00, 0x43, - 0x8c, 0x01, 0x00, 0x02, 0x24, 0x06, 0x00, 0x62, 0x10, 0x08, 0x00, 0x03, 0x32, - 0x00, 0x01, 0x52, 0x36, 0x48, 0x8f, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x21, - 0x28, 0x60, 0x02, 0x08, 0x00, 0x03, 0x32, 0x08, 0x00, 0x63, 0x24, 0x43, 0x18, - 0x03, 0x00, 0x80, 0x13, 0x13, 0x00, 0x21, 0x10, 0x43, 0x00, 0x01, 0xa1, 0x01, - 0x3c, 0x21, 0x08, 0x22, 0x00, 0x00, 0x00, 0x22, 0x90, 0x07, 0x00, 0x03, 0x32, - 0x07, 0x10, 0x62, 0x00, 0x01, 0x00, 0x42, 0x30, 0x05, 0x00, 0x40, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x40, 0x00, 0x52, 0x36, 0x7c, 0x8f, 0x84, 0x27, 0xfe, 0x28, - 0x00, 0x0c, 0x21, 0x28, 0x60, 0x02, 0xfa, 0x21, 0x00, 0x0c, 0x21, 0x20, 0x00, - 0x00, 0xb6, 0x36, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x52, 0x36, - 0xb8, 0x8f, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x28, 0x60, 0x02, 0x09, - 0x00, 0x40, 0x12, 0x00, 0xa3, 0x02, 0x3c, 0x80, 0x01, 0x42, 0x34, 0x80, 0x18, - 0x13, 0x00, 0x21, 0x18, 0x62, 0x00, 0x38, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x42, 0x34, 0x38, 0x00, 0x62, 0xac, 0x01, 0x00, 0xd6, 0x36, - 0x14, 0x35, 0x00, 0x0c, 0x21, 0x20, 0x20, 0x02, 0x42, 0x00, 0x02, 0x24, 0x2c, - 0x00, 0x22, 0xa2, 0xf7, 0xff, 0x02, 0x24, 0x41, 0x00, 0xe2, 0x12, 0x00, 0x00, - 0x00, 0x00, 0xa8, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xa8, - 0xaf, 0x14, 0x00, 0xb5, 0xaf, 0x18, 0x00, 0xb4, 0xaf, 0x1c, 0x00, 0xa0, 0xaf, - 0x58, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xa8, 0xaf, 0x24, - 0x00, 0xb1, 0xaf, 0x50, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, - 0xa8, 0xaf, 0x68, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0xa8, - 0xaf, 0x30, 0x00, 0xb6, 0xaf, 0x60, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x34, 0x00, 0xa8, 0xaf, 0x21, 0x20, 0x60, 0x02, 0x21, 0x28, 0xe0, 0x02, 0x48, - 0x00, 0xa6, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x37, 0x00, 0x0c, 0x21, 0x38, - 0xc0, 0x03, 0x07, 0x37, 0x00, 0x08, 0x25, 0xb0, 0xc2, 0x02, 0xa8, 0x00, 0xa8, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xa8, 0xaf, 0x21, 0x20, 0x60, 0x02, - 0x21, 0x28, 0xe0, 0x02, 0x48, 0x00, 0xa6, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x6d, - 0x22, 0x00, 0x0c, 0x21, 0x38, 0xc0, 0x03, 0x07, 0x37, 0x00, 0x08, 0x25, 0xb0, - 0xc2, 0x02, 0x18, 0x00, 0xc0, 0x17, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x00, 0xa8, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, - 0xc5, 0x30, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x8f, 0x84, 0x27, 0xfe, - 0x28, 0x00, 0x0c, 0x21, 0x28, 0x60, 0x02, 0x07, 0x37, 0x00, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x0b, 0x00, 0xc0, 0x17, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x00, 0xa8, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, - 0xc5, 0x30, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x8f, 0x84, 0x27, 0x21, - 0x28, 0x60, 0x02, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x30, 0xa0, 0x02, 0xfa, 0x21, - 0x00, 0x0c, 0x01, 0x04, 0x04, 0x24, 0x21, 0x10, 0xc0, 0x02, 0x94, 0x00, 0xbf, - 0x8f, 0x90, 0x00, 0xbe, 0x8f, 0x8c, 0x00, 0xb7, 0x8f, 0x88, 0x00, 0xb6, 0x8f, - 0x84, 0x00, 0xb5, 0x8f, 0x80, 0x00, 0xb4, 0x8f, 0x7c, 0x00, 0xb3, 0x8f, 0x78, - 0x00, 0xb2, 0x8f, 0x74, 0x00, 0xb1, 0x8f, 0x70, 0x00, 0xb0, 0x8f, 0x08, 0x00, - 0xe0, 0x03, 0x98, 0x00, 0xbd, 0x27, 0x58, 0xff, 0xbd, 0x27, 0xa4, 0x00, 0xbf, - 0xaf, 0xa0, 0x00, 0xb2, 0xaf, 0x9c, 0x00, 0xb1, 0xaf, 0x98, 0x00, 0xb0, 0xaf, - 0x21, 0x80, 0x80, 0x00, 0x01, 0x00, 0x02, 0x32, 0x04, 0x00, 0x40, 0x10, 0x21, - 0x88, 0x00, 0x00, 0xe1, 0x30, 0x00, 0x0c, 0x21, 0x20, 0x00, 0x00, 0x2b, 0x88, - 0x02, 0x00, 0x02, 0x00, 0x02, 0x32, 0x0c, 0x00, 0x40, 0x10, 0x01, 0x00, 0x02, - 0x24, 0x10, 0x00, 0xa2, 0xaf, 0x00, 0xa3, 0x04, 0x3c, 0x00, 0x10, 0x84, 0x34, - 0x00, 0xa3, 0x05, 0x3c, 0xf0, 0x7f, 0xa5, 0x34, 0x21, 0x30, 0x00, 0x00, 0xbd, - 0x32, 0x00, 0x0c, 0x21, 0x38, 0x00, 0x00, 0x03, 0x00, 0x40, 0x10, 0x04, 0x00, - 0x02, 0x32, 0x02, 0x00, 0x31, 0x36, 0x04, 0x00, 0x02, 0x32, 0x10, 0x00, 0x40, - 0x10, 0x21, 0x10, 0x20, 0x02, 0x03, 0x00, 0x12, 0x24, 0x21, 0x80, 0x00, 0x00, - 0x10, 0x00, 0xa0, 0xaf, 0x21, 0x20, 0x00, 0x02, 0x21, 0x28, 0x00, 0x00, 0x18, - 0x00, 0xa6, 0x27, 0x2d, 0x35, 0x00, 0x0c, 0x21, 0x38, 0x00, 0x00, 0x02, 0x00, - 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x31, 0x36, 0x01, 0x00, 0x10, - 0x26, 0x2a, 0x10, 0x50, 0x02, 0xf4, 0xff, 0x40, 0x10, 0x21, 0x10, 0x20, 0x02, - 0xa4, 0x00, 0xbf, 0x8f, 0xa0, 0x00, 0xb2, 0x8f, 0x9c, 0x00, 0xb1, 0x8f, 0x98, - 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0xa8, 0x00, 0xbd, 0x27, 0xe8, 0xff, - 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x00, 0xa3, 0x03, 0x3c, 0x20, 0x0c, 0x63, - 0x90, 0x01, 0x00, 0x02, 0x24, 0x09, 0x00, 0x62, 0x14, 0x00, 0xa1, 0x03, 0x3c, - 0x85, 0x1e, 0x02, 0x24, 0x00, 0x00, 0x62, 0xac, 0x00, 0xa1, 0x03, 0x3c, 0x28, - 0x00, 0x63, 0x34, 0x03, 0x00, 0x02, 0x3c, 0xff, 0xff, 0x42, 0x34, 0x59, 0x37, - 0x00, 0x08, 0x00, 0x00, 0x62, 0xac, 0x5d, 0x37, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x10, 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, - 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xbd, 0x27, 0x1c, 0x00, 0xbf, 0xaf, 0x18, - 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x90, - 0x00, 0x00, 0x01, 0xa0, 0x11, 0x3c, 0x40, 0x02, 0x31, 0x26, 0x21, 0x80, 0x00, - 0x00, 0x50, 0x9a, 0x80, 0xaf, 0x21, 0x28, 0x00, 0x00, 0x21, 0x20, 0x20, 0x02, - 0x00, 0x00, 0x82, 0x94, 0x02, 0x00, 0x83, 0x90, 0x00, 0xa1, 0x01, 0x3c, 0x21, - 0x08, 0x22, 0x00, 0x00, 0x00, 0x23, 0xa0, 0x50, 0x9a, 0x80, 0xaf, 0x01, 0x00, - 0xa5, 0x24, 0x04, 0x00, 0xa2, 0x28, 0xf7, 0xff, 0x40, 0x14, 0x04, 0x00, 0x84, - 0x24, 0x00, 0x00, 0x82, 0x94, 0x00, 0xa1, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, - 0x00, 0x00, 0x22, 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x42, 0x30, 0x08, - 0x00, 0x40, 0x10, 0x64, 0x00, 0x02, 0x2a, 0x04, 0x00, 0x40, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x90, 0x84, 0x27, 0x3a, 0x20, 0x00, 0x0c, 0x61, 0x00, 0x05, - 0x24, 0x66, 0x37, 0x00, 0x08, 0x01, 0x00, 0x10, 0x26, 0x05, 0x00, 0x52, 0x26, - 0x0f, 0x00, 0x42, 0x2a, 0xe0, 0xff, 0x40, 0x14, 0x14, 0x00, 0x31, 0x26, 0x1c, - 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, - 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x20, 0x00, 0xbd, 0x27, 0x48, 0xff, 0xbd, - 0x27, 0xb4, 0x00, 0xbf, 0xaf, 0xb0, 0x00, 0xbe, 0xaf, 0xac, 0x00, 0xb7, 0xaf, - 0xa8, 0x00, 0xb6, 0xaf, 0xa4, 0x00, 0xb5, 0xaf, 0xa0, 0x00, 0xb4, 0xaf, 0x9c, - 0x00, 0xb3, 0xaf, 0x98, 0x00, 0xb2, 0xaf, 0x94, 0x00, 0xb1, 0xaf, 0x90, 0x00, - 0xb0, 0xaf, 0x21, 0xf0, 0x80, 0x00, 0x40, 0x00, 0xa5, 0xaf, 0x48, 0x00, 0xa6, - 0xaf, 0xc8, 0x00, 0xa2, 0x8f, 0x54, 0x90, 0x86, 0x27, 0x03, 0x00, 0xc3, 0x88, - 0x00, 0x00, 0xc3, 0x98, 0x07, 0x00, 0xc4, 0x88, 0x04, 0x00, 0xc4, 0x98, 0x0b, - 0x00, 0xc5, 0x88, 0x08, 0x00, 0xc5, 0x98, 0x1b, 0x00, 0xa3, 0xab, 0x18, 0x00, - 0xa3, 0xbb, 0x1f, 0x00, 0xa4, 0xab, 0x1c, 0x00, 0xa4, 0xbb, 0x23, 0x00, 0xa5, - 0xab, 0x20, 0x00, 0xa5, 0xbb, 0x0f, 0x00, 0xc3, 0x88, 0x0c, 0x00, 0xc3, 0x98, - 0x13, 0x00, 0xc4, 0x88, 0x10, 0x00, 0xc4, 0x98, 0x14, 0x00, 0xc5, 0x80, 0x27, - 0x00, 0xa3, 0xab, 0x24, 0x00, 0xa3, 0xbb, 0x2b, 0x00, 0xa4, 0xab, 0x28, 0x00, - 0xa4, 0xbb, 0x2c, 0x00, 0xa5, 0xa3, 0x15, 0x00, 0xc3, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x2d, 0x00, 0xa3, 0xa3, 0x6c, 0x90, 0x86, 0x27, 0x00, 0x00, 0xc3, 0x8c, - 0x04, 0x00, 0xc4, 0x8c, 0x08, 0x00, 0xc5, 0x8c, 0x30, 0x00, 0xa3, 0xaf, 0x34, - 0x00, 0xa4, 0xaf, 0x38, 0x00, 0xa5, 0xaf, 0x0c, 0x00, 0xc3, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xa3, 0xaf, 0x04, 0x00, 0x40, 0x10, 0x02, 0x00, 0x02, - 0x24, 0xc5, 0x30, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x24, - 0x40, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x02, 0x15, 0x00, - 0x00, 0x00, 0x00, 0x7c, 0x90, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x28, - 0xc0, 0x03, 0x09, 0x00, 0xc0, 0x17, 0xff, 0x00, 0x02, 0x24, 0x50, 0x90, 0x82, - 0xaf, 0xd5, 0x37, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x94, 0x90, 0x84, 0x27, - 0xcc, 0x00, 0xa6, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x28, 0x00, 0x0c, 0x21, - 0x28, 0xc0, 0x03, 0x40, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x36, 0x02, - 0x20, 0x15, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x00, 0xb3, 0x8f, 0xd8, 0x00, 0xa8, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x68, 0x02, 0xf0, 0x01, 0x40, 0x10, - 0x80, 0x4b, 0x1e, 0x00, 0x68, 0x00, 0xa9, 0xaf, 0x00, 0xa3, 0x17, 0x3c, 0x80, - 0x01, 0xf7, 0x36, 0x21, 0x40, 0xd7, 0x03, 0x70, 0x00, 0xa8, 0xaf, 0x21, 0xb0, - 0x00, 0x00, 0x40, 0x11, 0x13, 0x00, 0x01, 0xa1, 0x03, 0x3c, 0x00, 0x01, 0x63, - 0x34, 0x21, 0x10, 0x43, 0x00, 0x68, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x21, 0xa0, 0x22, 0x01, 0xed, 0x00, 0x02, 0x24, 0x1c, 0x00, 0x82, 0xa2, 0x1c, - 0x00, 0x82, 0x92, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x42, 0x30, 0xed, 0x00, - 0x03, 0x24, 0xc1, 0x01, 0x43, 0x14, 0x80, 0x10, 0x1e, 0x00, 0x07, 0x00, 0xc0, - 0x17, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0xe2, 0x96, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x42, 0x30, 0xff, 0xff, 0x42, 0x24, 0xb9, 0x01, 0x62, 0x12, 0x80, - 0x10, 0x1e, 0x00, 0x70, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, - 0x02, 0x91, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x34, 0x00, 0x02, - 0xa1, 0x34, 0x00, 0x02, 0x91, 0x1c, 0x00, 0x80, 0xa2, 0x7f, 0x00, 0x09, 0x24, - 0x0c, 0x00, 0x89, 0xa2, 0x1c, 0x00, 0x82, 0x92, 0x00, 0x00, 0x00, 0x00, 0xff, - 0x00, 0x52, 0x30, 0xff, 0x00, 0x02, 0x24, 0x1c, 0x00, 0x82, 0xa2, 0x0c, 0x00, - 0x80, 0xa2, 0x1c, 0x00, 0x82, 0x92, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, - 0x16, 0xff, 0x00, 0x50, 0x30, 0xff, 0x00, 0x02, 0x24, 0x0a, 0x00, 0x02, 0x12, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xd6, 0x36, 0x10, 0x00, 0xb0, 0xaf, 0xb0, - 0x90, 0x84, 0x27, 0x21, 0x28, 0xc0, 0x03, 0xe4, 0x00, 0xa8, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x21, 0x30, 0x68, 0x02, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x38, 0x40, - 0x02, 0x1c, 0x00, 0x80, 0xa2, 0x07, 0x00, 0x09, 0x24, 0x08, 0x00, 0x89, 0xa2, - 0x01, 0x00, 0x03, 0x24, 0x08, 0x00, 0x83, 0xa2, 0x8f, 0x00, 0x02, 0x24, 0x0c, - 0x00, 0x82, 0xa2, 0x04, 0x00, 0x02, 0x24, 0x00, 0x00, 0x82, 0xa2, 0x04, 0x00, - 0x80, 0xa2, 0x0f, 0x00, 0x02, 0x24, 0x0c, 0x00, 0x82, 0xa2, 0x04, 0x00, 0x83, - 0xa2, 0x1b, 0x00, 0x02, 0x24, 0x10, 0x00, 0x82, 0xa2, 0x3f, 0x00, 0x12, 0x24, - 0xff, 0xff, 0x03, 0x24, 0x00, 0x00, 0x82, 0x92, 0xff, 0xff, 0x52, 0x26, 0xfd, - 0xff, 0x43, 0x16, 0x00, 0x00, 0x00, 0x00, 0xd7, 0x30, 0x00, 0x0c, 0xc4, 0x09, - 0x04, 0x24, 0x21, 0x90, 0x00, 0x00, 0x0e, 0x00, 0x15, 0x24, 0xd0, 0x00, 0xa8, - 0x8f, 0x05, 0x00, 0x09, 0x24, 0x07, 0x00, 0x09, 0x11, 0x7f, 0x00, 0x09, 0x24, - 0x05, 0x00, 0x09, 0x11, 0x0c, 0x00, 0x09, 0x24, 0x03, 0x00, 0x09, 0x11, 0x00, - 0x00, 0x00, 0x00, 0x06, 0x00, 0x15, 0x15, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, - 0x82, 0x92, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x30, 0x68, 0x01, 0x40, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x82, 0x92, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x42, 0x30, 0x5a, 0x01, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x82, 0x92, 0x00, 0x00, 0x92, 0xa2, 0x14, 0x00, 0x82, 0x92, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x00, 0x42, 0x30, 0x48, 0x01, 0x40, 0x14, 0xc3, 0x09, 0x10, - 0x24, 0xff, 0xff, 0x11, 0x24, 0x2a, 0x30, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x08, 0x00, 0x82, 0x92, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x30, 0x04, - 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x10, 0x26, 0xf7, 0xff, - 0x11, 0x16, 0x00, 0x00, 0x00, 0x00, 0x38, 0x01, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x00, 0x14, 0x00, 0x82, 0x92, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x42, 0x30, - 0x22, 0x00, 0x40, 0x10, 0x21, 0x28, 0xc0, 0x03, 0x08, 0x00, 0xd6, 0x36, 0x9c, - 0x91, 0x84, 0x27, 0xe4, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x28, - 0x00, 0x0c, 0x21, 0x30, 0x68, 0x02, 0x14, 0x00, 0x82, 0x92, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x42, 0x30, 0x04, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, - 0xb0, 0x91, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x14, - 0x00, 0x82, 0x92, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x42, 0x30, 0x04, 0x00, - 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x91, 0x84, 0x27, 0xfe, 0x28, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x82, 0x92, 0x00, 0x00, 0x00, 0x00, - 0x08, 0x00, 0x42, 0x30, 0x04, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xd0, - 0x91, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x91, - 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x00, 0xa9, - 0x8f, 0x05, 0x00, 0x08, 0x24, 0x07, 0x00, 0x28, 0x11, 0x7f, 0x00, 0x08, 0x24, - 0x05, 0x00, 0x28, 0x11, 0x0c, 0x00, 0x08, 0x24, 0x03, 0x00, 0x28, 0x11, 0x00, - 0x00, 0x00, 0x00, 0x06, 0x00, 0x35, 0x15, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, - 0x82, 0x92, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x30, 0x00, 0x01, 0x40, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x92, 0xd0, 0x00, 0xa9, 0x8f, - 0x05, 0x00, 0x08, 0x24, 0x08, 0x00, 0x28, 0x11, 0xff, 0x00, 0x50, 0x30, 0x7f, - 0x00, 0x08, 0x24, 0x05, 0x00, 0x28, 0x11, 0x0c, 0x00, 0x08, 0x24, 0x03, 0x00, - 0x28, 0x11, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x35, 0x15, 0x00, 0x00, 0x00, - 0x00, 0x14, 0x00, 0x82, 0x92, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x30, - 0xec, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x12, 0x21, - 0x28, 0xc0, 0x03, 0x10, 0x00, 0xd6, 0x36, 0x10, 0x00, 0xb0, 0xaf, 0x38, 0x92, - 0x84, 0x27, 0xe4, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x30, 0x69, - 0x02, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x38, 0x40, 0x02, 0x01, 0x00, 0x52, 0x26, - 0x00, 0x01, 0x42, 0x2a, 0x85, 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x21, - 0x90, 0x00, 0x00, 0x0c, 0x00, 0x43, 0x32, 0x01, 0x00, 0x42, 0x32, 0x40, 0x10, - 0x02, 0x00, 0x10, 0x00, 0x42, 0x34, 0x25, 0x18, 0x62, 0x00, 0x02, 0x00, 0x42, - 0x32, 0x43, 0x10, 0x02, 0x00, 0x25, 0x18, 0x62, 0x00, 0x10, 0x00, 0x83, 0xa2, - 0xd7, 0x30, 0x00, 0x0c, 0xfa, 0x00, 0x04, 0x24, 0x18, 0x00, 0x82, 0x92, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x81, 0x02, 0x00, 0x28, 0x00, 0x12, 0x12, 0x21, 0x28, - 0xc0, 0x03, 0x20, 0x00, 0xd6, 0x36, 0x10, 0x00, 0xb0, 0xaf, 0x64, 0x92, 0x84, - 0x27, 0xe4, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x30, 0x68, 0x02, - 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x38, 0x40, 0x02, 0x26, 0x10, 0x12, 0x02, 0x01, - 0x00, 0x42, 0x30, 0x05, 0x00, 0x40, 0x10, 0x26, 0x10, 0x12, 0x02, 0x98, 0x92, - 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x26, 0x10, 0x12, - 0x02, 0x02, 0x00, 0x42, 0x30, 0x05, 0x00, 0x40, 0x10, 0x26, 0x10, 0x12, 0x02, - 0xa4, 0x92, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x26, - 0x10, 0x12, 0x02, 0x04, 0x00, 0x42, 0x30, 0x05, 0x00, 0x40, 0x10, 0x26, 0x10, - 0x12, 0x02, 0xb0, 0x92, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x26, 0x10, 0x12, 0x02, 0x08, 0x00, 0x42, 0x30, 0x04, 0x00, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0xbc, 0x92, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0xe0, 0x91, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x52, 0x26, 0x10, 0x00, 0x42, 0x2a, 0xc7, 0xff, 0x40, - 0x14, 0x0c, 0x00, 0x43, 0x32, 0x1b, 0x00, 0x02, 0x24, 0x10, 0x00, 0x82, 0xa2, - 0xfa, 0x21, 0x00, 0x0c, 0x21, 0x20, 0x00, 0x00, 0x01, 0x00, 0x02, 0x24, 0x00, - 0x00, 0xe2, 0xae, 0x80, 0x10, 0x1e, 0x00, 0x21, 0x10, 0xa2, 0x03, 0x30, 0x00, - 0x44, 0x8c, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x21, 0x00, 0x0c, 0x01, 0x00, 0x84, - 0x24, 0x01, 0x00, 0x02, 0x24, 0x04, 0x00, 0x82, 0xa2, 0x00, 0x00, 0x82, 0x92, - 0x08, 0x00, 0x82, 0x92, 0xc3, 0x09, 0x10, 0x24, 0xff, 0xff, 0x10, 0x26, 0xff, - 0xff, 0x00, 0x16, 0xff, 0xff, 0x10, 0x26, 0x01, 0x00, 0x10, 0x26, 0x00, 0x00, - 0xe3, 0x8e, 0x01, 0x00, 0x02, 0x24, 0x07, 0x00, 0x62, 0x10, 0x21, 0x28, 0xc0, - 0x03, 0x40, 0x00, 0xd6, 0x36, 0xc8, 0x92, 0x84, 0x27, 0xe4, 0x00, 0xa9, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x30, 0x69, 0x02, 0x08, - 0x00, 0x62, 0x32, 0x08, 0x00, 0x42, 0x24, 0x43, 0x10, 0x02, 0x00, 0x68, 0x00, - 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x02, 0x01, 0x01, 0xa1, 0x01, - 0x3c, 0x21, 0x08, 0x22, 0x00, 0x00, 0x00, 0x22, 0x90, 0x07, 0x00, 0x63, 0x32, - 0x07, 0x10, 0x62, 0x00, 0x01, 0x00, 0x42, 0x30, 0x07, 0x00, 0x40, 0x10, 0x21, - 0x28, 0xc0, 0x03, 0x40, 0x00, 0xd6, 0x36, 0xe8, 0x92, 0x84, 0x27, 0xe4, 0x00, - 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x30, 0x69, - 0x02, 0x2a, 0x00, 0x02, 0x24, 0x00, 0x00, 0x82, 0xa2, 0xc3, 0x09, 0x10, 0x24, - 0x00, 0x00, 0xe2, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x40, 0x10, 0xff, - 0xff, 0x10, 0x26, 0xfb, 0xff, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x09, - 0x10, 0x24, 0xff, 0xff, 0x10, 0x26, 0xff, 0xff, 0x00, 0x16, 0xff, 0xff, 0x10, - 0x26, 0x01, 0x00, 0x10, 0x26, 0x08, 0x00, 0x62, 0x32, 0x08, 0x00, 0x42, 0x24, - 0x43, 0x10, 0x02, 0x00, 0x68, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, - 0x10, 0x02, 0x01, 0x01, 0xa1, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0x00, 0x00, - 0x22, 0x90, 0x07, 0x00, 0x63, 0x32, 0x07, 0x10, 0x62, 0x00, 0x01, 0x00, 0x42, - 0x30, 0x07, 0x00, 0x40, 0x14, 0x21, 0x28, 0xc0, 0x03, 0x40, 0x00, 0xd6, 0x36, - 0x18, 0x93, 0x84, 0x27, 0xe4, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xfe, - 0x28, 0x00, 0x0c, 0x21, 0x30, 0x69, 0x02, 0x00, 0x00, 0x82, 0x92, 0x08, 0x00, - 0x82, 0x92, 0x00, 0x00, 0xe2, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x40, - 0x10, 0x21, 0x28, 0xc0, 0x03, 0x80, 0x00, 0xd6, 0x36, 0x48, 0x93, 0x84, 0x27, - 0xe4, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x28, 0x00, 0x0c, 0x21, - 0x30, 0x68, 0x02, 0xfa, 0x21, 0x00, 0x0c, 0x21, 0x20, 0x00, 0x00, 0x01, 0x00, - 0x02, 0x24, 0x00, 0x00, 0xe2, 0xae, 0x80, 0x10, 0x1e, 0x00, 0x21, 0x10, 0xa2, - 0x03, 0x30, 0x00, 0x44, 0x8c, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x21, 0x00, 0x0c, - 0x01, 0x00, 0x84, 0x24, 0xc3, 0x09, 0x10, 0x24, 0xff, 0xff, 0x10, 0x26, 0xff, - 0xff, 0x00, 0x16, 0xff, 0xff, 0x10, 0x26, 0x01, 0x00, 0x10, 0x26, 0x00, 0x00, - 0xe3, 0x8e, 0x01, 0x00, 0x02, 0x24, 0x07, 0x00, 0x62, 0x10, 0x21, 0x28, 0xc0, - 0x03, 0x00, 0x01, 0xd6, 0x36, 0x70, 0x93, 0x84, 0x27, 0xe4, 0x00, 0xa9, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x30, 0x69, 0x02, 0x08, - 0x00, 0x62, 0x32, 0x08, 0x00, 0x42, 0x24, 0x43, 0x10, 0x02, 0x00, 0x68, 0x00, - 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x02, 0x01, 0x01, 0xa1, 0x01, - 0x3c, 0x21, 0x08, 0x22, 0x00, 0x00, 0x00, 0x22, 0x90, 0x07, 0x00, 0x63, 0x32, - 0x07, 0x10, 0x62, 0x00, 0x01, 0x00, 0x42, 0x30, 0x07, 0x00, 0x40, 0x10, 0x21, - 0x28, 0xc0, 0x03, 0x40, 0x00, 0xd6, 0x36, 0x98, 0x93, 0x84, 0x27, 0xe4, 0x00, - 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x30, 0x69, - 0x02, 0xfa, 0x21, 0x00, 0x0c, 0x21, 0x20, 0x00, 0x00, 0x04, 0x00, 0x80, 0xa2, - 0x07, 0x00, 0x08, 0x24, 0x08, 0x00, 0x88, 0xa2, 0x01, 0x00, 0x02, 0x24, 0x08, - 0x00, 0x82, 0xa2, 0x87, 0x00, 0x02, 0x24, 0x0c, 0x00, 0x82, 0xa2, 0x30, 0x00, - 0x02, 0x24, 0x00, 0x00, 0x82, 0xa2, 0x04, 0x00, 0x80, 0xa2, 0x07, 0x00, 0x09, - 0x24, 0x0c, 0x00, 0x89, 0xa2, 0x08, 0x00, 0x02, 0x24, 0x10, 0x00, 0x82, 0xa2, - 0x00, 0x00, 0x82, 0x92, 0xbb, 0x39, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x0c, - 0x92, 0x84, 0x27, 0xa4, 0x39, 0x00, 0x08, 0x01, 0x00, 0xd6, 0x36, 0xe4, 0x91, - 0x84, 0x27, 0xad, 0x39, 0x00, 0x08, 0x01, 0x00, 0xd6, 0x36, 0x74, 0x91, 0x84, - 0x27, 0xa4, 0x39, 0x00, 0x08, 0x00, 0x04, 0xd6, 0x36, 0x04, 0x00, 0xd6, 0x36, - 0x40, 0x91, 0x84, 0x27, 0x21, 0x28, 0xc0, 0x03, 0xe4, 0x00, 0xa9, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x30, 0x69, 0x02, 0xd7, 0x30, - 0x00, 0x0c, 0xc4, 0x09, 0x04, 0x24, 0xb2, 0x38, 0x00, 0x08, 0x21, 0x90, 0x00, - 0x00, 0x02, 0x00, 0xd6, 0x36, 0x1c, 0x91, 0x84, 0x27, 0x21, 0x28, 0xc0, 0x03, - 0xe4, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x28, 0x00, 0x0c, 0x21, - 0x30, 0x68, 0x02, 0xb2, 0x38, 0x00, 0x08, 0x21, 0x90, 0x00, 0x00, 0x01, 0x00, - 0xd6, 0x36, 0xf4, 0x90, 0x84, 0x27, 0x21, 0x28, 0xc0, 0x03, 0xe4, 0x00, 0xa9, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x30, 0x69, 0x02, - 0xb2, 0x38, 0x00, 0x08, 0x21, 0x90, 0x00, 0x00, 0x21, 0x10, 0x57, 0x00, 0x01, - 0x00, 0x03, 0x24, 0x04, 0x18, 0x63, 0x02, 0x38, 0x00, 0x44, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x25, 0x18, 0x64, 0x00, 0x38, 0x00, 0x43, 0xac, 0x0c, 0x00, 0xc0, - 0x12, 0x80, 0x10, 0x1e, 0x00, 0x21, 0x10, 0x57, 0x00, 0x01, 0x00, 0x03, 0x24, - 0x04, 0x18, 0x63, 0x02, 0x38, 0x00, 0x44, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x25, - 0x18, 0x64, 0x00, 0x38, 0x00, 0x43, 0xac, 0xe8, 0x00, 0xa8, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x08, 0x35, 0xe8, 0x00, 0xa8, 0xaf, 0x01, 0x00, 0x73, - 0x26, 0xd8, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x69, 0x02, - 0x18, 0xfe, 0x40, 0x14, 0x21, 0xb0, 0x00, 0x00, 0x00, 0xa3, 0x04, 0x3c, 0x80, - 0x01, 0x84, 0x34, 0x21, 0x10, 0xc4, 0x03, 0x34, 0x00, 0x42, 0x90, 0x00, 0x00, - 0x00, 0x00, 0xff, 0x00, 0x43, 0x30, 0x04, 0x00, 0xc0, 0x17, 0x21, 0x10, 0x00, - 0x00, 0x28, 0x00, 0x82, 0x94, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0x02, 0x00, - 0x21, 0x18, 0x62, 0x00, 0xd8, 0x00, 0xa8, 0x8f, 0xd4, 0x00, 0xa9, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x23, 0x38, 0x09, 0x01, 0xec, 0x00, 0xa8, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x21, 0x10, 0xe8, 0x00, 0x12, 0x00, 0x62, 0x10, 0x00, 0xa3, 0x02, - 0x3c, 0xe8, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x29, 0x35, - 0xe8, 0x00, 0xa9, 0xaf, 0x80, 0x01, 0x42, 0x34, 0x21, 0x10, 0xc2, 0x03, 0x34, - 0x00, 0x46, 0x90, 0x10, 0x00, 0xa8, 0xaf, 0xc8, 0x93, 0x84, 0x27, 0x21, 0x28, - 0xc0, 0x03, 0xfe, 0x28, 0x00, 0x0c, 0xff, 0x00, 0xc6, 0x30, 0xf4, 0x93, 0x84, - 0x27, 0xd8, 0x00, 0xa5, 0x8f, 0xd4, 0x00, 0xa6, 0x8f, 0xfe, 0x28, 0x00, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0xe8, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x12, - 0x00, 0x00, 0x15, 0x00, 0xa3, 0x02, 0x3c, 0x80, 0x01, 0x42, 0x34, 0x21, 0x18, - 0xc2, 0x03, 0x34, 0x00, 0x62, 0x90, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x65, 0x90, 0x14, 0x94, 0x84, 0x27, - 0xfe, 0x28, 0x00, 0x0c, 0xff, 0x00, 0xa5, 0x30, 0x20, 0x94, 0x84, 0x27, 0x06, - 0x3a, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x28, 0x94, 0x84, 0x27, 0xfe, 0x28, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x02, 0x3c, 0x80, 0x01, 0x42, - 0x34, 0x21, 0x10, 0xc2, 0x03, 0x01, 0x00, 0x03, 0x24, 0x19, 0x3f, 0x00, 0x08, - 0x30, 0x00, 0x43, 0xa0, 0x08, 0x00, 0x21, 0x05, 0x00, 0x00, 0x00, 0x00, 0xd4, - 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x25, 0x23, 0x10, - 0x49, 0x00, 0x50, 0x00, 0xa2, 0xaf, 0x1c, 0x3a, 0x00, 0x08, 0x01, 0x00, 0x49, - 0x24, 0xd4, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0xa8, 0xaf, - 0xd8, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x58, 0x00, 0xa9, 0xaf, 0x50, - 0x00, 0xb3, 0x8f, 0x58, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, - 0x68, 0x02, 0x26, 0x00, 0x40, 0x10, 0x02, 0x00, 0x02, 0x24, 0x80, 0x8b, 0x1e, - 0x00, 0x01, 0x00, 0x10, 0x24, 0x8f, 0x00, 0x17, 0x24, 0x04, 0x00, 0x16, 0x24, - 0x0f, 0x00, 0x15, 0x24, 0x08, 0x00, 0x12, 0x24, 0x40, 0x11, 0x13, 0x00, 0x01, - 0xa1, 0x09, 0x3c, 0x00, 0x01, 0x29, 0x35, 0x21, 0x10, 0x49, 0x00, 0x08, 0x00, - 0xc0, 0x17, 0x21, 0xa0, 0x22, 0x02, 0x00, 0xa3, 0x02, 0x3c, 0xa8, 0x01, 0x42, - 0x94, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x30, 0xff, 0xff, 0x42, 0x24, - 0x0a, 0x00, 0x62, 0x12, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x08, 0x24, 0x08, - 0x00, 0x88, 0xa2, 0x08, 0x00, 0x90, 0xa2, 0x0c, 0x00, 0x97, 0xa2, 0x00, 0x00, - 0x96, 0xa2, 0x04, 0x00, 0x80, 0xa2, 0x0c, 0x00, 0x95, 0xa2, 0x04, 0x00, 0x90, - 0xa2, 0x10, 0x00, 0x92, 0xa2, 0xd7, 0x30, 0x00, 0x0c, 0xc4, 0x09, 0x04, 0x24, - 0x01, 0x00, 0x73, 0x26, 0x58, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, - 0x10, 0x69, 0x02, 0xe4, 0xff, 0x40, 0x14, 0x40, 0x11, 0x13, 0x00, 0x02, 0x00, - 0x02, 0x24, 0x40, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x99, 0x01, 0x02, - 0x15, 0x21, 0x98, 0x00, 0x00, 0x40, 0x11, 0x1e, 0x00, 0x48, 0x00, 0xa9, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x21, 0x18, 0x49, 0x00, 0xff, 0xff, 0x04, 0x24, 0x40, - 0x10, 0x13, 0x00, 0x21, 0x10, 0x43, 0x00, 0x00, 0x00, 0x44, 0xa4, 0x01, 0x00, - 0x73, 0x26, 0x10, 0x00, 0x62, 0x2a, 0xfb, 0xff, 0x40, 0x14, 0x40, 0x10, 0x13, - 0x00, 0x01, 0x00, 0x02, 0x24, 0xec, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x6a, 0x00, 0x02, 0x15, 0xff, 0x00, 0x02, 0x24, 0x50, 0x90, 0x83, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x0c, 0x00, 0x62, 0x14, 0x80, 0x00, 0x62, 0x30, 0x80, 0x00, - 0xc2, 0x27, 0x50, 0x90, 0x82, 0xaf, 0x80, 0x1b, 0x1e, 0x00, 0x01, 0xa1, 0x02, - 0x3c, 0x00, 0x08, 0x42, 0x34, 0x21, 0xa0, 0x62, 0x00, 0x14, 0x35, 0x00, 0x0c, - 0x21, 0x20, 0x80, 0x02, 0x42, 0x00, 0x02, 0x24, 0xc6, 0x3a, 0x00, 0x08, 0x2c, - 0x00, 0x82, 0xa2, 0x59, 0x00, 0x40, 0x10, 0x80, 0x00, 0xc2, 0x27, 0x57, 0x00, - 0x62, 0x10, 0x80, 0x13, 0x1e, 0x00, 0x01, 0xa1, 0x13, 0x3c, 0x00, 0x08, 0x73, - 0x36, 0x21, 0xa0, 0x53, 0x00, 0x03, 0x00, 0x02, 0x24, 0x28, 0x00, 0x82, 0xa2, - 0x14, 0x35, 0x00, 0x0c, 0x21, 0x20, 0x80, 0x02, 0x80, 0x00, 0x12, 0x24, 0x2c, - 0x00, 0x92, 0xa2, 0x08, 0x00, 0x02, 0x24, 0x78, 0x00, 0x82, 0xa2, 0x14, 0x35, - 0x00, 0x0c, 0x21, 0x20, 0x80, 0x02, 0x42, 0x00, 0x11, 0x24, 0x2c, 0x00, 0x91, - 0xa2, 0x04, 0x00, 0x10, 0x24, 0x08, 0x00, 0x90, 0xa2, 0x0c, 0x00, 0x90, 0xa2, - 0x50, 0x90, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x55, 0x30, 0x80, - 0x13, 0x15, 0x00, 0x21, 0xa8, 0x53, 0x00, 0x28, 0x00, 0xa0, 0xa2, 0x14, 0x35, - 0x00, 0x0c, 0x21, 0x20, 0xa0, 0x02, 0x2c, 0x00, 0xb2, 0xa2, 0x09, 0x00, 0x02, - 0x24, 0x78, 0x00, 0xa2, 0xa2, 0x14, 0x35, 0x00, 0x0c, 0x21, 0x20, 0xa0, 0x02, - 0x2c, 0x00, 0xb1, 0xa2, 0x08, 0x00, 0xb0, 0xa2, 0x0c, 0x00, 0xb0, 0xa2, 0x14, - 0x35, 0x00, 0x0c, 0x21, 0x20, 0xa0, 0x02, 0x43, 0x00, 0x10, 0x24, 0x2c, 0x00, - 0xb0, 0xa2, 0x14, 0x35, 0x00, 0x0c, 0x21, 0x20, 0x80, 0x02, 0x2c, 0x00, 0x90, - 0xa2, 0x50, 0x00, 0xc2, 0x27, 0x48, 0x00, 0xa2, 0xa2, 0x0f, 0x27, 0x13, 0x24, - 0xff, 0xff, 0x10, 0x24, 0x2a, 0x30, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x38, - 0x00, 0x82, 0x92, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x40, 0x14, 0xff, 0xff, - 0x73, 0x26, 0xf9, 0xff, 0x70, 0x16, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x82, - 0x92, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x42, 0x30, 0x50, 0x00, 0xc3, 0x27, - 0x13, 0x00, 0x43, 0x14, 0x40, 0x11, 0x1e, 0x00, 0xd8, 0x00, 0xa9, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x40, 0x20, 0x09, 0x00, 0x48, 0x00, 0xa8, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x21, 0x10, 0x48, 0x00, 0x21, 0x10, 0x82, 0x00, 0x50, 0x90, 0x83, - 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xa4, 0x50, 0x90, 0x82, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x42, 0x30, 0x40, 0x11, 0x02, 0x00, 0x21, - 0x10, 0x48, 0x00, 0x21, 0x20, 0x82, 0x00, 0x80, 0x00, 0xc2, 0x27, 0x00, 0x00, - 0x82, 0xa4, 0x14, 0x35, 0x00, 0x0c, 0x21, 0x20, 0xa0, 0x02, 0x42, 0x00, 0x10, - 0x24, 0x2c, 0x00, 0xb0, 0xa2, 0x14, 0x35, 0x00, 0x0c, 0x21, 0x20, 0x80, 0x02, - 0x2c, 0x00, 0x90, 0xa2, 0xff, 0x00, 0x02, 0x24, 0x50, 0x90, 0x82, 0xaf, 0xd4, - 0x00, 0xb3, 0x8f, 0xd8, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, - 0x69, 0x02, 0x16, 0x00, 0x40, 0x10, 0x80, 0x1b, 0x1e, 0x00, 0x01, 0xa1, 0x05, - 0x3c, 0x00, 0x01, 0xa5, 0x34, 0x00, 0xa3, 0x04, 0x3c, 0x80, 0x01, 0x84, 0x34, - 0x40, 0x11, 0x13, 0x00, 0x21, 0x10, 0x45, 0x00, 0x07, 0x00, 0xc0, 0x17, 0x21, - 0xa0, 0x62, 0x00, 0x28, 0x00, 0x82, 0x94, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x42, 0x30, 0xff, 0xff, 0x42, 0x24, 0x02, 0x00, 0x62, 0x12, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x93, 0xa2, 0x01, 0x00, 0x73, 0x26, 0xd8, 0x00, 0xa8, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x68, 0x02, 0xf1, 0xff, 0x40, 0x14, 0x40, - 0x11, 0x13, 0x00, 0xd7, 0x30, 0x00, 0x0c, 0x10, 0x27, 0x04, 0x24, 0xd4, 0x00, - 0xb3, 0x8f, 0xd8, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x69, - 0x02, 0x6b, 0x00, 0x40, 0x10, 0x80, 0x43, 0x1e, 0x00, 0x78, 0x00, 0xa8, 0xaf, - 0x00, 0xa3, 0x17, 0x3c, 0x80, 0x01, 0xf7, 0x36, 0x40, 0x11, 0x1e, 0x00, 0x48, - 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0xa8, 0x49, 0x00, 0xff, 0xff, - 0x16, 0x24, 0x40, 0x11, 0x13, 0x00, 0x01, 0xa1, 0x03, 0x3c, 0x00, 0x01, 0x63, - 0x34, 0x21, 0x10, 0x43, 0x00, 0x78, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x07, 0x00, 0xc0, 0x17, 0x21, 0xa0, 0x02, 0x01, 0x28, 0x00, 0xe2, 0x96, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x30, 0xff, 0xff, 0x42, 0x24, 0x4e, 0x00, - 0x62, 0x12, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x82, 0x92, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x42, 0x30, 0x04, 0x00, 0x40, 0x10, 0xff, 0x00, 0x12, 0x24, - 0x00, 0x00, 0x82, 0x92, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x52, 0x30, 0xff, - 0x00, 0x02, 0x24, 0x43, 0x00, 0x42, 0x12, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x00, - 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x49, 0x02, 0x35, 0x00, 0x40, - 0x14, 0x40, 0x80, 0x13, 0x00, 0xd8, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x2a, 0x10, 0x48, 0x02, 0x31, 0x00, 0x40, 0x10, 0x21, 0x80, 0x15, 0x02, 0x07, - 0x00, 0xc0, 0x17, 0x40, 0x10, 0x13, 0x00, 0x28, 0x00, 0xe2, 0x96, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x42, 0x30, 0xff, 0xff, 0x42, 0x24, 0x27, 0x00, 0x42, - 0x12, 0x40, 0x10, 0x13, 0x00, 0x21, 0x10, 0x55, 0x00, 0x00, 0x00, 0x42, 0x84, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x56, 0x10, 0x00, 0x00, 0x00, 0x00, 0x09, - 0x00, 0x52, 0x14, 0x40, 0x88, 0x13, 0x00, 0x40, 0x10, 0x12, 0x00, 0x21, 0x10, - 0x55, 0x00, 0x00, 0x00, 0x42, 0x84, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x56, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x53, 0x10, 0x40, 0x88, 0x13, 0x00, - 0x21, 0x88, 0x35, 0x02, 0x00, 0x00, 0x25, 0x86, 0x40, 0x80, 0x12, 0x00, 0x21, - 0x80, 0x15, 0x02, 0x00, 0x00, 0x06, 0x86, 0xe4, 0x00, 0xa9, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x21, 0x10, 0x49, 0x02, 0x10, 0x00, 0xa2, 0xaf, 0x38, 0x94, 0x84, - 0x27, 0x21, 0x28, 0xa9, 0x00, 0x21, 0x30, 0xc9, 0x00, 0xfe, 0x28, 0x00, 0x0c, - 0x21, 0x38, 0x69, 0x02, 0x4b, 0x3b, 0x00, 0x08, 0x00, 0x00, 0x36, 0xa6, 0x40, - 0x10, 0x13, 0x00, 0x21, 0x10, 0x55, 0x00, 0x00, 0x00, 0x52, 0xa4, 0x40, 0x10, - 0x12, 0x00, 0x21, 0x10, 0x55, 0x00, 0x4c, 0x3b, 0x00, 0x08, 0x00, 0x00, 0x53, - 0xa4, 0x40, 0x80, 0x13, 0x00, 0x21, 0x80, 0x15, 0x02, 0x00, 0x00, 0x05, 0x86, - 0x70, 0x94, 0x84, 0x27, 0xe4, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, - 0x28, 0xa8, 0x00, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x30, 0x48, 0x02, 0x00, 0x00, - 0x16, 0xa6, 0x01, 0x00, 0x73, 0x26, 0xd8, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x2a, 0x10, 0x69, 0x02, 0xa1, 0xff, 0x40, 0x14, 0x40, 0x11, 0x13, 0x00, - 0xd4, 0x00, 0xb3, 0x8f, 0xd8, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, - 0x10, 0x68, 0x02, 0x34, 0x00, 0x40, 0x10, 0x21, 0x90, 0x00, 0x00, 0x40, 0x11, - 0x1e, 0x00, 0x48, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x88, 0x49, - 0x00, 0xff, 0xff, 0x15, 0x24, 0x00, 0xa3, 0x14, 0x3c, 0x80, 0x01, 0x94, 0x36, - 0x40, 0x10, 0x13, 0x00, 0x21, 0x80, 0x51, 0x00, 0x00, 0x00, 0x02, 0x86, 0x00, - 0x00, 0x00, 0x00, 0x16, 0x00, 0x55, 0x10, 0x2a, 0x10, 0x53, 0x00, 0x1f, 0x00, - 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x98, 0x94, 0x84, 0x27, 0xe4, 0x00, 0xa8, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x28, 0x68, 0x02, - 0x00, 0x00, 0x02, 0x86, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x62, 0x12, 0x00, - 0x00, 0x00, 0x00, 0x9c, 0x94, 0x84, 0x27, 0xe4, 0x00, 0xa9, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x28, 0x49, 0x00, 0x01, 0x00, 0x52, - 0x26, 0x64, 0x30, 0x00, 0x0c, 0x20, 0x00, 0x04, 0x24, 0x85, 0x3b, 0x00, 0x08, - 0x01, 0x00, 0x52, 0x26, 0x07, 0x00, 0xc0, 0x17, 0x00, 0x00, 0x00, 0x00, 0x28, - 0x00, 0x82, 0x96, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x30, 0xff, 0xff, - 0x42, 0x24, 0x04, 0x00, 0x62, 0x12, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x94, 0x84, - 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x73, 0x26, - 0xd8, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x68, 0x02, 0xd6, - 0xff, 0x40, 0x14, 0x40, 0x10, 0x13, 0x00, 0x01, 0x00, 0x02, 0x24, 0xec, 0x00, - 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x22, 0x15, 0x40, 0x11, 0x1e, - 0x00, 0xd8, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x40, 0x18, 0x08, 0x00, - 0x48, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x49, 0x00, 0x21, - 0x18, 0x62, 0x00, 0x00, 0x00, 0x65, 0x94, 0x00, 0x00, 0x63, 0x84, 0xff, 0xff, - 0x02, 0x24, 0x04, 0x00, 0x62, 0x10, 0x7f, 0x00, 0xa5, 0x30, 0xa4, 0x94, 0x84, - 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x30, 0xc0, 0x03, 0x0f, 0x00, 0xc0, 0x17, - 0x00, 0xa3, 0x03, 0x3c, 0x80, 0x01, 0x63, 0x34, 0x28, 0x00, 0x62, 0x94, 0x00, - 0x00, 0x00, 0x00, 0x0a, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, - 0x65, 0x94, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xa5, 0x30, 0xe4, 0x00, 0xa8, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x25, 0xb0, 0x94, 0x84, 0x27, - 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x28, 0xa2, 0x00, 0x08, 0x00, 0x40, 0x16, 0x00, - 0x00, 0x00, 0x00, 0xbc, 0x94, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0xe8, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x29, - 0x35, 0xe8, 0x00, 0xa9, 0xaf, 0x07, 0x00, 0xc0, 0x17, 0x00, 0xa3, 0x02, 0x3c, - 0x80, 0x01, 0x42, 0x34, 0x28, 0x00, 0x42, 0x94, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x52, 0x26, 0xe0, 0x94, - 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x00, 0xa8, - 0x8f, 0xd4, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0x09, 0x01, - 0x2a, 0x10, 0x42, 0x02, 0x05, 0x00, 0x40, 0x10, 0x01, 0x00, 0x02, 0x24, 0xe4, - 0x94, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x02, 0x24, 0xec, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x48, 0x03, 0x02, - 0x15, 0x40, 0x11, 0x1e, 0x00, 0xd8, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x40, 0x18, 0x09, 0x00, 0x48, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, - 0x10, 0x48, 0x00, 0x21, 0x18, 0x62, 0x00, 0x00, 0x00, 0x63, 0x84, 0xff, 0xff, - 0x02, 0x24, 0x3d, 0x03, 0x62, 0x14, 0xff, 0x00, 0x02, 0x24, 0x50, 0x90, 0x83, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x39, 0x03, 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x14, 0x95, 0x84, 0x27, 0x17, 0x3f, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x50, - 0x90, 0x80, 0xaf, 0x40, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, - 0x20, 0x05, 0x21, 0xb0, 0x00, 0x00, 0x01, 0x00, 0x02, 0x24, 0xec, 0x00, 0xa8, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x02, 0x15, 0x00, 0x00, 0x00, 0x00, - 0x48, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x20, 0x11, 0x40, - 0x11, 0x1e, 0x00, 0xd8, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x40, 0x18, - 0x08, 0x00, 0x21, 0x10, 0x49, 0x00, 0x21, 0xa8, 0x62, 0x00, 0x00, 0x00, 0xa3, - 0x86, 0xff, 0xff, 0x02, 0x24, 0x7f, 0x00, 0x62, 0x10, 0x80, 0x13, 0x1e, 0x00, - 0x01, 0xa1, 0x13, 0x3c, 0x00, 0x08, 0x73, 0x36, 0x21, 0xa0, 0x53, 0x00, 0x03, - 0x00, 0x02, 0x24, 0x28, 0x00, 0x82, 0xa2, 0x14, 0x35, 0x00, 0x0c, 0x21, 0x20, - 0x80, 0x02, 0x80, 0x00, 0x12, 0x24, 0x2c, 0x00, 0x92, 0xa2, 0x08, 0x00, 0x02, - 0x24, 0x78, 0x00, 0x82, 0xa2, 0x14, 0x35, 0x00, 0x0c, 0x21, 0x20, 0x80, 0x02, - 0x42, 0x00, 0x11, 0x24, 0x2c, 0x00, 0x91, 0xa2, 0x04, 0x00, 0x10, 0x24, 0x08, - 0x00, 0x90, 0xa2, 0x0c, 0x00, 0x90, 0xa2, 0x00, 0x00, 0xa2, 0x96, 0x00, 0x00, - 0x00, 0x00, 0x7f, 0x00, 0x55, 0x30, 0x80, 0x13, 0x15, 0x00, 0x21, 0xa8, 0x53, - 0x00, 0x28, 0x00, 0xa0, 0xa2, 0x14, 0x35, 0x00, 0x0c, 0x21, 0x20, 0xa0, 0x02, - 0x2c, 0x00, 0xb2, 0xa2, 0x09, 0x00, 0x02, 0x24, 0x78, 0x00, 0xa2, 0xa2, 0x14, - 0x35, 0x00, 0x0c, 0x21, 0x20, 0xa0, 0x02, 0x2c, 0x00, 0xb1, 0xa2, 0x08, 0x00, - 0xb0, 0xa2, 0x0c, 0x00, 0xb0, 0xa2, 0x14, 0x35, 0x00, 0x0c, 0x21, 0x20, 0x80, - 0x02, 0x43, 0x00, 0x10, 0x24, 0x2c, 0x00, 0x90, 0xa2, 0x14, 0x35, 0x00, 0x0c, - 0x21, 0x20, 0xa0, 0x02, 0x2c, 0x00, 0xb0, 0xa2, 0x14, 0x35, 0x00, 0x0c, 0x21, - 0x20, 0x80, 0x02, 0x14, 0x35, 0x00, 0x0c, 0x21, 0x20, 0xa0, 0x02, 0x21, 0x98, - 0x00, 0x00, 0x18, 0x00, 0xa3, 0x27, 0x21, 0x10, 0x73, 0x00, 0x00, 0x00, 0x42, - 0x90, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0xa2, 0xa2, 0x01, 0x00, 0x73, 0x26, - 0x16, 0x00, 0x62, 0x2a, 0xfa, 0xff, 0x40, 0x14, 0x21, 0x10, 0x73, 0x00, 0x0f, - 0x27, 0x13, 0x24, 0xff, 0xff, 0x10, 0x24, 0x2a, 0x30, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x38, 0x00, 0x82, 0x92, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x42, - 0x2c, 0x03, 0x00, 0x40, 0x10, 0xff, 0xff, 0x73, 0x26, 0xf8, 0xff, 0x70, 0x16, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x82, 0x92, 0x00, 0x00, 0x00, 0x00, 0xff, - 0x00, 0x42, 0x30, 0x16, 0x00, 0x03, 0x24, 0x13, 0x00, 0x43, 0x10, 0x40, 0x11, - 0x1e, 0x00, 0xd8, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x40, 0x18, 0x09, - 0x00, 0x48, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x48, 0x00, - 0x21, 0x18, 0x62, 0x00, 0x00, 0x00, 0x65, 0x94, 0x38, 0x00, 0x82, 0x92, 0x00, - 0x00, 0x00, 0x00, 0xff, 0x00, 0x42, 0x30, 0x10, 0x00, 0xa2, 0xaf, 0x40, 0x95, - 0x84, 0x27, 0x7f, 0x00, 0xa5, 0x30, 0x16, 0x00, 0x06, 0x24, 0xfe, 0x28, 0x00, - 0x0c, 0x21, 0x38, 0xc0, 0x03, 0x00, 0x04, 0xd6, 0x36, 0x21, 0x98, 0x00, 0x00, - 0x18, 0x00, 0xb1, 0x27, 0xd8, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x40, - 0x18, 0x09, 0x00, 0x40, 0x11, 0x1e, 0x00, 0x48, 0x00, 0xa8, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x21, 0x10, 0x48, 0x00, 0x21, 0x80, 0x62, 0x00, 0x48, 0x00, 0x82, - 0x92, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x52, 0x30, 0x21, 0x10, 0x33, 0x02, - 0x00, 0x00, 0x46, 0x90, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x46, 0x12, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x96, 0x10, 0x00, 0xb2, 0xaf, 0x8c, 0x95, - 0x84, 0x27, 0x7f, 0x00, 0xa5, 0x30, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x38, 0xc0, - 0x03, 0x10, 0x00, 0xd6, 0x36, 0x01, 0x00, 0x73, 0x26, 0x16, 0x00, 0x62, 0x2a, - 0xee, 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x14, 0x35, 0x00, 0x0c, 0x21, - 0x20, 0xa0, 0x02, 0x42, 0x00, 0x10, 0x24, 0x2c, 0x00, 0xb0, 0xa2, 0x14, 0x35, - 0x00, 0x0c, 0x21, 0x20, 0x80, 0x02, 0x2c, 0x00, 0x90, 0xa2, 0x50, 0x00, 0xb3, - 0x8f, 0x58, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x69, 0x02, - 0x5d, 0x02, 0x40, 0x10, 0x80, 0x43, 0x1e, 0x00, 0x88, 0x00, 0xa8, 0xaf, 0x40, - 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x21, 0x05, 0x40, 0x10, - 0x13, 0x00, 0xe9, 0x3c, 0x00, 0x08, 0x60, 0x00, 0xb3, 0xaf, 0x40, 0x19, 0x1e, - 0x00, 0x48, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x18, 0x68, 0x00, - 0x21, 0x10, 0x43, 0x00, 0x00, 0x00, 0x42, 0x84, 0x00, 0x00, 0x00, 0x00, 0x60, - 0x00, 0xa2, 0xaf, 0xff, 0xff, 0x02, 0x24, 0x60, 0x00, 0xa9, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x58, 0x00, 0x22, 0x15, 0x40, 0x11, 0x13, 0x00, 0x00, 0xa3, 0x02, - 0x3c, 0xa8, 0x01, 0x42, 0x94, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x30, - 0xff, 0xff, 0x42, 0x24, 0x3c, 0x02, 0x53, 0x10, 0x40, 0x11, 0x13, 0x00, 0x01, - 0xa1, 0x08, 0x3c, 0x00, 0x01, 0x08, 0x35, 0x21, 0x10, 0x48, 0x00, 0x88, 0x00, - 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0xa0, 0x22, 0x01, 0x14, 0x00, 0x82, - 0x92, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x42, 0x30, 0x09, 0x00, 0x40, 0x14, - 0x55, 0x00, 0x02, 0x24, 0x02, 0x00, 0xd6, 0x36, 0x1c, 0x91, 0x84, 0x27, 0x21, - 0x28, 0xc0, 0x03, 0xe4, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x28, - 0x00, 0x0c, 0x21, 0x30, 0x68, 0x02, 0x55, 0x00, 0x02, 0x24, 0x00, 0x00, 0x82, - 0xa2, 0x21, 0x90, 0x00, 0x00, 0x01, 0x00, 0x42, 0x32, 0x40, 0x10, 0x02, 0x00, - 0x08, 0x00, 0x42, 0x34, 0x02, 0x00, 0x43, 0x32, 0x43, 0x18, 0x03, 0x00, 0x25, - 0x10, 0x43, 0x00, 0x10, 0x00, 0x82, 0xa2, 0xd7, 0x30, 0x00, 0x0c, 0xfa, 0x00, - 0x04, 0x24, 0x01, 0x00, 0x52, 0x26, 0x04, 0x00, 0x42, 0x2a, 0xf5, 0xff, 0x40, - 0x14, 0x01, 0x00, 0x42, 0x32, 0xd6, 0x3e, 0x00, 0x08, 0x01, 0x00, 0x73, 0x26, - 0x01, 0x00, 0xd6, 0x36, 0xf4, 0x90, 0x84, 0x27, 0x60, 0x00, 0xa9, 0x8f, 0xe4, - 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x30, - 0x28, 0x01, 0x79, 0x3d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x91, 0x84, - 0x27, 0xe2, 0x3c, 0x00, 0x08, 0x02, 0x00, 0xd6, 0x36, 0x04, 0x00, 0xd6, 0x36, - 0x40, 0x91, 0x84, 0x27, 0x21, 0x28, 0xc0, 0x03, 0xe4, 0x00, 0xa8, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x30, 0x68, 0x02, 0xd7, 0x30, - 0x00, 0x0c, 0xc4, 0x09, 0x04, 0x24, 0x79, 0x3d, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x74, 0x91, 0x84, 0x27, 0xe2, 0x3c, 0x00, 0x08, 0x00, 0x04, 0xd6, 0x36, - 0x01, 0x00, 0xd6, 0x36, 0xe4, 0x91, 0x84, 0x27, 0xe4, 0x00, 0xa8, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x30, 0x68, 0x02, 0x79, 0x3d, - 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xd6, 0x36, 0x0c, 0x92, 0x84, - 0x27, 0x21, 0x28, 0xc0, 0x03, 0xe4, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x30, 0x69, 0x02, 0x79, 0x3d, 0x00, 0x08, 0x00, - 0x00, 0x00, 0x00, 0x40, 0x11, 0x13, 0x00, 0x01, 0xa1, 0x08, 0x3c, 0x00, 0x01, - 0x08, 0x35, 0x21, 0x10, 0x48, 0x00, 0x88, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x21, 0xa0, 0x22, 0x01, 0x60, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x40, 0x11, 0x08, 0x00, 0x01, 0xa1, 0x09, 0x3c, 0x00, 0x01, 0x29, 0x35, 0x21, - 0x10, 0x49, 0x00, 0x88, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0xa8, - 0x02, 0x01, 0x21, 0x90, 0x00, 0x00, 0x0e, 0x00, 0x17, 0x24, 0xd0, 0x00, 0xa9, - 0x8f, 0x05, 0x00, 0x08, 0x24, 0x07, 0x00, 0x28, 0x11, 0x7f, 0x00, 0x08, 0x24, - 0x05, 0x00, 0x28, 0x11, 0x0c, 0x00, 0x08, 0x24, 0x03, 0x00, 0x28, 0x11, 0x00, - 0x00, 0x00, 0x00, 0x06, 0x00, 0x37, 0x15, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, - 0xa2, 0x92, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x30, 0xb5, 0xff, 0x40, - 0x14, 0x21, 0x28, 0xc0, 0x03, 0x14, 0x00, 0x82, 0x92, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x42, 0x30, 0xb9, 0xff, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xa2, 0x92, 0x00, 0x00, 0x92, 0xa2, 0x14, 0x00, 0x82, 0x92, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x00, 0x42, 0x30, 0xb5, 0xff, 0x40, 0x14, 0xc3, 0x09, 0x10, - 0x24, 0xff, 0xff, 0x11, 0x24, 0x2a, 0x30, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x08, 0x00, 0xa2, 0x92, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x30, 0x04, - 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x10, 0x26, 0xf7, 0xff, - 0x11, 0x16, 0x00, 0x00, 0x00, 0x00, 0xb3, 0xff, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x00, 0x14, 0x00, 0xa2, 0x92, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x42, 0x30, - 0x23, 0x00, 0x40, 0x10, 0x21, 0x28, 0xc0, 0x03, 0x08, 0x00, 0xd6, 0x36, 0x9c, - 0x91, 0x84, 0x27, 0x60, 0x00, 0xa9, 0x8f, 0xe4, 0x00, 0xa8, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x30, 0x28, 0x01, 0x14, 0x00, 0xa2, - 0x92, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x42, 0x30, 0x04, 0x00, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0xb0, 0x91, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x14, 0x00, 0xa2, 0x92, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x42, 0x30, 0x04, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x91, 0x84, - 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0xa2, 0x92, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x42, 0x30, 0x04, 0x00, 0x40, 0x10, 0x00, - 0x00, 0x00, 0x00, 0xd0, 0x91, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0xe0, 0x91, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0xd0, 0x00, 0xa9, 0x8f, 0x05, 0x00, 0x08, 0x24, 0x07, 0x00, 0x28, 0x11, - 0x7f, 0x00, 0x08, 0x24, 0x05, 0x00, 0x28, 0x11, 0x0c, 0x00, 0x08, 0x24, 0x03, - 0x00, 0x28, 0x11, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x37, 0x15, 0x00, 0x00, - 0x00, 0x00, 0x14, 0x00, 0xa2, 0x92, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, - 0x30, 0x80, 0xff, 0x40, 0x10, 0x21, 0x28, 0xc0, 0x03, 0x00, 0x00, 0xa2, 0x92, - 0xd0, 0x00, 0xa9, 0x8f, 0x05, 0x00, 0x08, 0x24, 0x08, 0x00, 0x28, 0x11, 0xff, - 0x00, 0x50, 0x30, 0x7f, 0x00, 0x08, 0x24, 0x05, 0x00, 0x28, 0x11, 0x0c, 0x00, - 0x08, 0x24, 0x03, 0x00, 0x28, 0x11, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x37, - 0x15, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0xa2, 0x92, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x42, 0x30, 0x77, 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0a, - 0x00, 0x12, 0x12, 0x21, 0x28, 0xc0, 0x03, 0x10, 0x00, 0xd6, 0x36, 0x10, 0x00, - 0xb0, 0xaf, 0x38, 0x92, 0x84, 0x27, 0x60, 0x00, 0xa9, 0x8f, 0xe4, 0x00, 0xa8, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x30, 0x28, 0x01, 0xfe, 0x28, 0x00, 0x0c, - 0x21, 0x38, 0x40, 0x02, 0x01, 0x00, 0x52, 0x26, 0x00, 0x01, 0x42, 0x2a, 0x83, - 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x00, 0xa9, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0xef, 0xff, 0x22, 0x25, 0x02, 0x00, 0x42, 0x2c, 0x05, 0x00, 0x40, - 0x14, 0x21, 0x90, 0x00, 0x00, 0x09, 0x00, 0x02, 0x24, 0x57, 0x00, 0x22, 0x15, - 0x01, 0x00, 0x43, 0x32, 0x21, 0x90, 0x00, 0x00, 0xe4, 0x00, 0xa8, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x21, 0xb8, 0x68, 0x02, 0x40, 0x10, 0x12, 0x00, 0x08, 0x00, - 0x42, 0x34, 0x10, 0x00, 0x82, 0xa2, 0xd7, 0x30, 0x00, 0x0c, 0xfa, 0x00, 0x04, - 0x24, 0x18, 0x00, 0xa2, 0x92, 0x18, 0x00, 0xa2, 0x92, 0x18, 0x00, 0xa2, 0x92, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x81, 0x02, 0x00, 0x18, 0x00, 0x82, 0x92, 0x18, - 0x00, 0x82, 0x92, 0x18, 0x00, 0x82, 0x92, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, - 0x12, 0x12, 0x02, 0x89, 0x02, 0x00, 0x18, 0x00, 0x32, 0x12, 0x21, 0x28, 0xc0, - 0x03, 0x20, 0x00, 0xd6, 0x36, 0x10, 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb0, 0xaf, - 0xd0, 0x95, 0x84, 0x27, 0x21, 0x30, 0xe0, 0x02, 0x60, 0x00, 0xa9, 0x8f, 0xe4, - 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x38, - 0x28, 0x01, 0x0c, 0x96, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x10, 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0xd0, 0x95, 0x84, 0x27, - 0x21, 0x28, 0xc0, 0x03, 0x21, 0x30, 0xe0, 0x02, 0xfe, 0x28, 0x00, 0x0c, 0x21, - 0x38, 0xe0, 0x02, 0x0c, 0x96, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x52, 0x26, 0x02, 0x00, 0x42, 0x2a, 0xd5, 0xff, 0x40, - 0x14, 0x40, 0x10, 0x12, 0x00, 0x40, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x64, 0x00, 0x21, 0x05, 0x08, 0x00, 0x02, 0x24, 0x21, 0x90, 0x00, 0x00, 0x08, - 0x00, 0x42, 0x36, 0x10, 0x00, 0x82, 0xa2, 0xd7, 0x30, 0x00, 0x0c, 0xfa, 0x00, - 0x04, 0x24, 0x18, 0x00, 0x82, 0x92, 0x18, 0x00, 0x82, 0x92, 0x18, 0x00, 0x82, - 0x92, 0x00, 0x00, 0x00, 0x00, 0x02, 0x81, 0x02, 0x00, 0x40, 0x10, 0x12, 0x00, - 0x0f, 0x00, 0x02, 0x12, 0x21, 0x28, 0xc0, 0x03, 0x20, 0x00, 0xd6, 0x36, 0x10, - 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb0, 0xaf, 0xd0, 0x95, 0x84, 0x27, 0xe4, 0x00, - 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x30, 0x68, 0x02, 0x60, 0x00, 0xa9, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x38, 0x28, 0x01, - 0x18, 0x96, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x52, 0x26, 0x02, 0x00, 0x42, 0x2a, 0xe4, 0xff, 0x40, 0x14, 0x08, 0x00, - 0x42, 0x36, 0x1a, 0x3e, 0x00, 0x08, 0x08, 0x00, 0x02, 0x24, 0x40, 0x18, 0x03, - 0x00, 0x08, 0x00, 0x63, 0x34, 0x02, 0x00, 0x42, 0x32, 0x43, 0x10, 0x02, 0x00, - 0x25, 0x18, 0x62, 0x00, 0x10, 0x00, 0x83, 0xa2, 0xd7, 0x30, 0x00, 0x0c, 0xfa, - 0x00, 0x04, 0x24, 0x18, 0x00, 0xa2, 0x92, 0x18, 0x00, 0xa2, 0x92, 0x18, 0x00, - 0xa2, 0x92, 0x00, 0x00, 0x00, 0x00, 0x02, 0x81, 0x02, 0x00, 0x80, 0x10, 0x12, - 0x00, 0x21, 0x10, 0x42, 0x02, 0x2d, 0x00, 0x02, 0x12, 0x21, 0x28, 0xc0, 0x03, - 0x20, 0x00, 0xd6, 0x36, 0x10, 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb0, 0xaf, 0xd0, - 0x95, 0x84, 0x27, 0xe4, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x30, - 0x68, 0x02, 0x60, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x28, 0x00, - 0x0c, 0x21, 0x38, 0x28, 0x01, 0x26, 0x10, 0x12, 0x02, 0x01, 0x00, 0x42, 0x30, - 0x05, 0x00, 0x40, 0x10, 0x26, 0x10, 0x12, 0x02, 0x98, 0x92, 0x84, 0x27, 0xfe, - 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x26, 0x10, 0x12, 0x02, 0x02, 0x00, - 0x42, 0x30, 0x05, 0x00, 0x40, 0x10, 0x80, 0x10, 0x12, 0x00, 0xa4, 0x92, 0x84, - 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x80, 0x10, 0x12, 0x00, - 0x26, 0x10, 0x02, 0x02, 0x04, 0x00, 0x42, 0x30, 0x05, 0x00, 0x40, 0x10, 0x80, - 0x10, 0x12, 0x00, 0x24, 0x96, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x10, 0x12, 0x00, 0x26, 0x10, 0x02, 0x02, 0x08, 0x00, 0x42, - 0x30, 0x04, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x96, 0x84, 0x27, - 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x91, 0x84, 0x27, 0xfe, - 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x52, 0x26, 0x04, 0x00, - 0x42, 0x2a, 0xc0, 0xff, 0x40, 0x14, 0x01, 0x00, 0x43, 0x32, 0x08, 0x00, 0x02, - 0x24, 0x10, 0x00, 0x82, 0xa2, 0xfa, 0x21, 0x00, 0x0c, 0x21, 0x20, 0x00, 0x00, - 0x01, 0x00, 0x02, 0x24, 0x00, 0xa3, 0x01, 0x3c, 0x80, 0x01, 0x22, 0xac, 0x80, - 0x10, 0x1e, 0x00, 0x21, 0x10, 0xa2, 0x03, 0x30, 0x00, 0x44, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0xfa, 0x21, 0x00, 0x0c, 0x01, 0x00, 0x84, 0x24, 0x01, 0x00, 0x02, - 0x24, 0x04, 0x00, 0xa2, 0xa2, 0xd4, 0x00, 0xb2, 0x8f, 0xd8, 0x00, 0xa8, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x48, 0x02, 0x11, 0x00, 0x40, 0x10, 0x40, - 0x11, 0x12, 0x00, 0x01, 0xa1, 0x09, 0x3c, 0x00, 0x01, 0x29, 0x35, 0x21, 0x10, - 0x49, 0x00, 0x88, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0xa8, 0x02, - 0x01, 0x00, 0x00, 0xa2, 0x92, 0x00, 0x00, 0xa2, 0x92, 0x00, 0x00, 0xa2, 0x92, - 0x08, 0x00, 0xa2, 0x92, 0x01, 0x00, 0x52, 0x26, 0xd8, 0x00, 0xa9, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x2a, 0x10, 0x49, 0x02, 0xf1, 0xff, 0x40, 0x14, 0x40, 0x11, - 0x12, 0x00, 0x60, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x40, 0x11, 0x08, - 0x00, 0x01, 0xa1, 0x09, 0x3c, 0x00, 0x01, 0x29, 0x35, 0x21, 0x10, 0x49, 0x00, - 0x88, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0xa8, 0x02, 0x01, 0xc3, - 0x09, 0x10, 0x24, 0xff, 0xff, 0x10, 0x26, 0xff, 0xff, 0x00, 0x16, 0xff, 0xff, - 0x10, 0x26, 0x01, 0x00, 0x10, 0x26, 0x00, 0xa3, 0x03, 0x3c, 0x80, 0x01, 0x63, - 0x8c, 0x01, 0x00, 0x02, 0x24, 0x08, 0x00, 0x62, 0x10, 0x21, 0x28, 0xc0, 0x03, - 0x40, 0x00, 0xd6, 0x36, 0xc8, 0x92, 0x84, 0x27, 0x60, 0x00, 0xa9, 0x8f, 0xe4, - 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x30, - 0x28, 0x01, 0x60, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x22, - 0x31, 0x08, 0x00, 0x42, 0x24, 0x43, 0x10, 0x02, 0x00, 0x88, 0x00, 0xa8, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x02, 0x01, 0x01, 0xa1, 0x01, 0x3c, 0x21, - 0x08, 0x22, 0x00, 0x00, 0x00, 0x22, 0x90, 0x07, 0x00, 0x23, 0x31, 0x07, 0x10, - 0x62, 0x00, 0x01, 0x00, 0x42, 0x30, 0x07, 0x00, 0x40, 0x10, 0x21, 0x28, 0xc0, - 0x03, 0x40, 0x00, 0xd6, 0x36, 0xe8, 0x92, 0x84, 0x27, 0xe4, 0x00, 0xa8, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x30, 0x28, 0x01, 0x2a, - 0x00, 0x02, 0x24, 0x00, 0x00, 0x82, 0xa2, 0xc3, 0x09, 0x10, 0x24, 0x00, 0xa3, - 0x02, 0x3c, 0x80, 0x01, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x40, - 0x10, 0xff, 0xff, 0x10, 0x26, 0xfa, 0xff, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, - 0xc3, 0x09, 0x10, 0x24, 0xff, 0xff, 0x10, 0x26, 0xff, 0xff, 0x00, 0x16, 0xff, - 0xff, 0x10, 0x26, 0x01, 0x00, 0x10, 0x26, 0x60, 0x00, 0xa9, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x08, 0x00, 0x22, 0x31, 0x08, 0x00, 0x42, 0x24, 0x43, 0x10, 0x02, - 0x00, 0x88, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x02, 0x01, - 0x01, 0xa1, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0x00, 0x00, 0x22, 0x90, 0x07, - 0x00, 0x23, 0x31, 0x07, 0x10, 0x62, 0x00, 0x01, 0x00, 0x42, 0x30, 0x07, 0x00, - 0x40, 0x14, 0x21, 0x28, 0xc0, 0x03, 0x40, 0x00, 0xd6, 0x36, 0x18, 0x93, 0x84, - 0x27, 0xe4, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x28, 0x00, 0x0c, - 0x21, 0x30, 0x28, 0x01, 0x00, 0x00, 0xa2, 0x92, 0x08, 0x00, 0xa2, 0x92, 0x00, - 0xa3, 0x02, 0x3c, 0x80, 0x01, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, - 0x40, 0x10, 0x21, 0x28, 0xc0, 0x03, 0x80, 0x00, 0xd6, 0x36, 0x48, 0x93, 0x84, - 0x27, 0x60, 0x00, 0xa9, 0x8f, 0xe4, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x30, 0x28, 0x01, 0xfa, 0x21, 0x00, 0x0c, 0x21, - 0x20, 0x00, 0x00, 0x01, 0x00, 0x02, 0x24, 0x00, 0xa3, 0x01, 0x3c, 0x80, 0x01, - 0x22, 0xac, 0x80, 0x10, 0x1e, 0x00, 0x21, 0x10, 0xa2, 0x03, 0x30, 0x00, 0x44, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x21, 0x00, 0x0c, 0x01, 0x00, 0x84, 0x24, - 0xc3, 0x09, 0x10, 0x24, 0xff, 0xff, 0x10, 0x26, 0xff, 0xff, 0x00, 0x16, 0xff, - 0xff, 0x10, 0x26, 0x01, 0x00, 0x10, 0x26, 0x00, 0xa3, 0x03, 0x3c, 0x80, 0x01, - 0x63, 0x8c, 0x01, 0x00, 0x02, 0x24, 0x08, 0x00, 0x62, 0x10, 0x21, 0x28, 0xc0, - 0x03, 0x00, 0x01, 0xd6, 0x36, 0x70, 0x93, 0x84, 0x27, 0x60, 0x00, 0xa9, 0x8f, - 0xe4, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x28, 0x00, 0x0c, 0x21, - 0x30, 0x28, 0x01, 0x60, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, - 0x22, 0x31, 0x08, 0x00, 0x42, 0x24, 0x43, 0x10, 0x02, 0x00, 0x88, 0x00, 0xa8, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x02, 0x01, 0x01, 0xa1, 0x01, 0x3c, - 0x21, 0x08, 0x22, 0x00, 0x00, 0x00, 0x22, 0x90, 0x07, 0x00, 0x23, 0x31, 0x07, - 0x10, 0x62, 0x00, 0x01, 0x00, 0x42, 0x30, 0x07, 0x00, 0x40, 0x10, 0x21, 0x28, - 0xc0, 0x03, 0x40, 0x00, 0xd6, 0x36, 0x98, 0x93, 0x84, 0x27, 0xe4, 0x00, 0xa8, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x30, 0x28, 0x01, - 0xfa, 0x21, 0x00, 0x0c, 0x21, 0x20, 0x00, 0x00, 0x01, 0x00, 0x73, 0x26, 0x58, - 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x69, 0x02, 0xa6, 0xfd, - 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0xe8, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x25, 0x40, 0x16, 0x01, 0x3a, 0x00, 0x00, 0x15, 0xe8, 0x00, 0xa8, 0xaf, - 0x40, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x20, 0x05, 0x01, - 0x00, 0x12, 0x24, 0x50, 0x00, 0xb3, 0x8f, 0x58, 0x00, 0xa8, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x2a, 0x10, 0x68, 0x02, 0x13, 0x00, 0x40, 0x10, 0x21, 0x90, 0x00, - 0x00, 0x40, 0x11, 0x1e, 0x00, 0x48, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x21, 0x18, 0x49, 0x00, 0xff, 0xff, 0x04, 0x24, 0x40, 0x10, 0x13, 0x00, 0x21, - 0x10, 0x43, 0x00, 0x00, 0x00, 0x42, 0x84, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x44, 0x10, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x52, 0x26, 0x01, 0x00, 0x73, - 0x26, 0x58, 0x00, 0xa8, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x68, 0x02, - 0xf5, 0xff, 0x40, 0x14, 0x40, 0x10, 0x13, 0x00, 0x1c, 0x00, 0x40, 0x12, 0x00, - 0x00, 0x00, 0x00, 0x38, 0x96, 0x84, 0x27, 0xfe, 0x28, 0x00, 0x0c, 0x21, 0x28, - 0x40, 0x02, 0x01, 0x00, 0x02, 0x24, 0xec, 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x11, 0x00, 0x22, 0x15, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0xa8, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x11, 0x40, 0x11, 0x1e, 0x00, 0xd8, - 0x00, 0xa9, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x40, 0x18, 0x09, 0x00, 0x21, 0x10, - 0x48, 0x00, 0x21, 0x18, 0x62, 0x00, 0x00, 0x00, 0x63, 0x84, 0xff, 0xff, 0x02, - 0x24, 0x04, 0x00, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0x44, 0x96, 0x84, 0x27, - 0xfe, 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x20, 0x94, 0x84, 0x27, 0xfe, - 0x28, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xe8, 0x00, 0xa2, 0x8f, 0xb4, 0x00, - 0xbf, 0x8f, 0xb0, 0x00, 0xbe, 0x8f, 0xac, 0x00, 0xb7, 0x8f, 0xa8, 0x00, 0xb6, - 0x8f, 0xa4, 0x00, 0xb5, 0x8f, 0xa0, 0x00, 0xb4, 0x8f, 0x9c, 0x00, 0xb3, 0x8f, - 0x98, 0x00, 0xb2, 0x8f, 0x94, 0x00, 0xb1, 0x8f, 0x90, 0x00, 0xb0, 0x8f, 0x08, - 0x00, 0xe0, 0x03, 0xb8, 0x00, 0xbd, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xa2, 0x00, 0xa0, 0xd4, 0xa3, 0x00, 0xa0, - 0xd4, 0xa3, 0x00, 0xa0, 0xd4, 0xa3, 0x00, 0xa0, 0xd4, 0xa3, 0x00, 0xa0, 0xd4, - 0xa3, 0x00, 0xa0, 0xd4, 0xa3, 0x00, 0xa0, 0xd4, 0xa3, 0x00, 0xa0, 0x80, 0xa3, - 0x00, 0xa0, 0xd4, 0xa3, 0x00, 0xa0, 0xd4, 0xa3, 0x00, 0xa0, 0x88, 0xa3, 0x00, - 0xa0, 0x94, 0xa3, 0x00, 0xa0, 0x94, 0xa3, 0x00, 0xa0, 0x94, 0xa3, 0x00, 0xa0, - 0x94, 0xa3, 0x00, 0xa0, 0x94, 0xa3, 0x00, 0xa0, 0x94, 0xa3, 0x00, 0xa0, 0x94, - 0xa3, 0x00, 0xa0, 0x94, 0xa3, 0x00, 0xa0, 0x94, 0xa3, 0x00, 0xa0, 0xd4, 0xa3, - 0x00, 0xa0, 0xd4, 0xa3, 0x00, 0xa0, 0xd4, 0xa3, 0x00, 0xa0, 0xd4, 0xa3, 0x00, - 0xa0, 0xd4, 0xa3, 0x00, 0xa0, 0xd4, 0xa3, 0x00, 0xa0, 0xd4, 0xa3, 0x00, 0xa0, - 0xd4, 0xa3, 0x00, 0xa0, 0xd4, 0xa3, 0x00, 0xa0, 0xd4, 0xa3, 0x00, 0xa0, 0xd4, - 0xa3, 0x00, 0xa0, 0x60, 0xa2, 0x00, 0xa0, 0xd4, 0xa3, 0x00, 0xa0, 0xd4, 0xa3, - 0x00, 0xa0, 0xd4, 0xa3, 0x00, 0xa0, 0xd4, 0xa3, 0x00, 0xa0, 0xd4, 0xa3, 0x00, - 0xa0, 0xd4, 0xa3, 0x00, 0xa0, 0xd4, 0xa3, 0x00, 0xa0, 0xd4, 0xa3, 0x00, 0xa0, - 0xd4, 0xa3, 0x00, 0xa0, 0xd4, 0xa3, 0x00, 0xa0, 0xd4, 0xa3, 0x00, 0xa0, 0xd4, - 0xa3, 0x00, 0xa0, 0xd4, 0xa3, 0x00, 0xa0, 0xd4, 0xa3, 0x00, 0xa0, 0xd4, 0xa3, - 0x00, 0xa0, 0xd4, 0xa3, 0x00, 0xa0, 0xd4, 0xa3, 0x00, 0xa0, 0xd4, 0xa3, 0x00, - 0xa0, 0x2c, 0xa3, 0x00, 0xa0, 0xd4, 0xa3, 0x00, 0xa0, 0xd4, 0xa3, 0x00, 0xa0, - 0xd4, 0xa3, 0x00, 0xa0, 0xd4, 0xa3, 0x00, 0xa0, 0xd4, 0xa3, 0x00, 0xa0, 0xd4, - 0xa3, 0x00, 0xa0, 0xd4, 0xa3, 0x00, 0xa0, 0xd4, 0xa3, 0x00, 0xa0, 0xd4, 0xa3, - 0x00, 0xa0, 0x8c, 0xa2, 0x00, 0xa0, 0x78, 0xa2, 0x00, 0xa0, 0xdc, 0xa2, 0x00, - 0xa0, 0xd4, 0xa3, 0x00, 0xa0, 0xd4, 0xa3, 0x00, 0xa0, 0xd4, 0xa3, 0x00, 0xa0, - 0xd4, 0xa3, 0x00, 0xa0, 0xd4, 0xa3, 0x00, 0xa0, 0xd4, 0xa3, 0x00, 0xa0, 0xd4, - 0xa3, 0x00, 0xa0, 0xbc, 0xa3, 0x00, 0xa0, 0xd4, 0xa3, 0x00, 0xa0, 0xd4, 0xa3, - 0x00, 0xa0, 0xb4, 0xa2, 0x00, 0xa0, 0xd4, 0xa3, 0x00, 0xa0, 0xd4, 0xa3, 0x00, - 0xa0, 0xd4, 0xa3, 0x00, 0xa0, 0x4c, 0xa3, 0x00, 0xa0, 0x64, 0xa3, 0x00, 0xa0, - 0xfc, 0xa2, 0x00, 0xa0, 0xd4, 0xa3, 0x00, 0xa0, 0xd4, 0xa3, 0x00, 0xa0, 0x1c, - 0xa3, 0x00, 0xa0, 0xc8, 0xba, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0xc8, 0xba, - 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, - 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, - 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, - 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0xc8, 0xba, 0x00, 0xa0, 0x14, 0xc0, - 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, - 0xa0, 0xc8, 0xba, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, - 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, - 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, - 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, - 0xa0, 0xe8, 0xb5, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, - 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, - 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, - 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, - 0xa0, 0x54, 0xb4, 0x00, 0xa0, 0xe4, 0xb4, 0x00, 0xa0, 0x3c, 0xb7, 0x00, 0xa0, - 0x3c, 0xb7, 0x00, 0xa0, 0x68, 0xb9, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, - 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, - 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, - 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0xe4, 0xb0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, - 0x8c, 0xb1, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0xc8, - 0xba, 0x00, 0xa0, 0x88, 0xb1, 0x00, 0xa0, 0xc8, 0xba, 0x00, 0xa0, 0x14, 0xc0, - 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x90, 0xba, 0x00, 0xa0, 0x14, 0xc0, 0x00, - 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x2c, 0xbd, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, - 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, - 0xc0, 0x00, 0xa0, 0xc8, 0xba, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, - 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0xc8, 0xba, 0x00, - 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, - 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, - 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x8c, 0xb1, - 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0xc8, 0xba, 0x00, - 0xa0, 0x8c, 0xb1, 0x00, 0xa0, 0xc8, 0xba, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, - 0x14, 0xc0, 0x00, 0xa0, 0x90, 0xba, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, - 0xc0, 0x00, 0xa0, 0x2c, 0xbd, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, - 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, - 0xa0, 0xc8, 0xba, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, - 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0xc8, 0xba, 0x00, 0xa0, 0x14, - 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, - 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, - 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x5c, 0xbd, 0x00, 0xa0, - 0x6c, 0xbd, 0x00, 0xa0, 0x10, 0xbe, 0x00, 0xa0, 0x38, 0xbe, 0x00, 0xa0, 0xcc, - 0xbe, 0x00, 0xa0, 0x24, 0xbf, 0x00, 0xa0, 0xbc, 0xbf, 0x00, 0xa0, 0xd0, 0xbf, - 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, - 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, 0x14, 0xc0, 0x00, 0xa0, - 0x14, 0xc0, 0x00, 0xa0, 0xec, 0xbf, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xdb, 0x00, 0xa0, 0x1c, 0xdb, - 0x00, 0xa0, 0x1c, 0xdb, 0x00, 0xa0, 0xa0, 0xd6, 0x00, 0xa0, 0x1c, 0xdb, 0x00, - 0xa0, 0x1c, 0xdb, 0x00, 0xa0, 0x1c, 0xdb, 0x00, 0xa0, 0x1c, 0xdb, 0x00, 0xa0, - 0x1c, 0xdb, 0x00, 0xa0, 0x1c, 0xdb, 0x00, 0xa0, 0x1c, 0xdb, 0x00, 0xa0, 0xa0, - 0xd6, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0x1c, 0xdb, 0x00, 0xa0, 0xec, 0xdb, - 0x00, 0xa0, 0x8c, 0xdb, 0x00, 0xa0, 0x1c, 0xdb, 0x00, 0xa0, 0x1c, 0xdb, 0x00, - 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0x8c, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, - 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0x8c, 0xdb, 0x00, 0xa0, 0xec, - 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0x8c, 0xdb, - 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, - 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, - 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, - 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, - 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, - 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, - 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, - 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, - 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, - 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, - 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xb8, 0xdb, 0x00, 0xa0, 0xec, - 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, - 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, - 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, - 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, - 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, - 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, - 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, - 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, - 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, - 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, - 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, - 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, - 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, - 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, - 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, - 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, - 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, - 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, - 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, 0xec, 0xdb, 0x00, 0xa0, - 0xec, 0xdb, 0x00, 0xa0, 0x1c, 0xdb, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x0c, - 0x00, 0x34, 0x00, 0x00, 0x00, 0x41, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x0c, 0x00, - 0xe2, 0x00, 0x00, 0x00, 0x40, 0x00, 0x0c, 0x00, 0x74, 0x00, 0x04, 0x00, 0x6e, - 0x00, 0x04, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xe4, 0x00, 0x04, 0x00, 0x40, 0x00, - 0x0c, 0x00, 0xb4, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0c, - 0x00, 0xe8, 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x60, - 0x7e, 0x21, 0x40, 0x23, 0x24, 0x25, 0x5e, 0x26, 0x2a, 0x28, 0x29, 0x2d, 0x5f, - 0x3d, 0x2b, 0x5b, 0x5d, 0x5c, 0x7b, 0x7d, 0x7c, 0x3b, 0x27, 0x2c, 0x2e, 0x2f, - 0x3c, 0x3e, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x54, 0x26, 0x46, 0x00, - 0x00, 0x00, 0x00, 0x41, 0x54, 0x5a, 0x00, 0x41, 0x54, 0x26, 0x46, 0x0d, 0x0d, - 0x0a, 0x4f, 0x4b, 0x0d, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x4b, 0x0d, - 0x0a, 0x00, 0x00, 0x00, 0x00, 0x45, 0x42, 0x49, 0x20, 0x25, 0x64, 0x20, 0x64, - 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, - 0x69, 0x6e, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6d, 0x73, 0x0a, 0x00, 0x2e, 0x00, - 0x00, 0x00, 0x0d, 0x54, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x65, 0x62, - 0x69, 0x20, 0x25, 0x64, 0x20, 0x49, 0x44, 0x20, 0x25, 0x58, 0x2e, 0x2e, 0x2e, - 0x00, 0x00, 0x00, 0x00, 0x0d, 0x50, 0x6f, 0x72, 0x74, 0x20, 0x25, 0x64, 0x20, - 0x50, 0x72, 0x6f, 0x62, 0x65, 0x20, 0x27, 0x25, 0x73, 0x27, 0x20, 0x00, 0x00, - 0x00, 0x00, 0x0d, 0x20, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, - 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x0d, 0x00, 0x00, 0x00, 0x00, - 0x0d, 0x20, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, - 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x0d, 0x00, 0x00, 0x0d, 0x20, - 0x55, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x3a, 0x20, 0x27, 0x25, 0x74, 0x27, 0x0a, - 0x00, 0x00, 0x00, 0x00, 0x4d, 0x6f, 0x64, 0x65, 0x6d, 0x20, 0x74, 0x65, 0x73, - 0x74, 0x73, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x0d, 0x00, 0x50, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, - 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x20, 0x70, 0x65, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x0a, 0x00, 0x00, 0x00, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, - 0x74, 0x65, 0x72, 0x73, 0x20, 0x72, 0x65, 0x61, 0x64, 0x79, 0x20, 0x61, 0x66, - 0x74, 0x65, 0x72, 0x20, 0x72, 0x65, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x20, 0x46, 0x49, 0x46, 0x4f, 0x0a, 0x00, 0x00, 0x43, 0x6f, 0x6d, 0x6d, 0x61, - 0x6e, 0x64, 0x20, 0x74, 0x6f, 0x6f, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x0a, 0x00, - 0x00, 0x00, 0x4d, 0x6f, 0x64, 0x65, 0x6d, 0x20, 0x64, 0x69, 0x64, 0x20, 0x6e, - 0x6f, 0x74, 0x20, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x20, 0x54, 0x48, 0x52, 0x0a, - 0x00, 0x00, 0x00, 0x00, 0x55, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, - 0x64, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x27, 0x25, - 0x74, 0x27, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x61, - 0x6e, 0x64, 0x20, 0x27, 0x25, 0x74, 0x27, 0x0a, 0x00, 0x4d, 0x6f, 0x64, 0x65, - 0x6d, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, - 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x0a, 0x00, 0x00, 0x41, 0x54, - 0x44, 0x31, 0x0d, 0x00, 0x00, 0x00, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x20, 0x65, - 0x62, 0x69, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x28, 0x30, 0x20, - 0x74, 0x6f, 0x20, 0x25, 0x64, 0x29, 0x3a, 0x00, 0x25, 0x64, 0x0a, 0x00, 0x0d, - 0x0a, 0x49, 0x6c, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x20, 0x65, 0x62, 0x69, 0x20, - 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x0d, 0x0a, 0x00, 0x00, 0x45, 0x6e, 0x74, - 0x65, 0x72, 0x20, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6e, - 0x67, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x28, 0x31, 0x20, 0x74, 0x6f, 0x20, - 0x25, 0x64, 0x29, 0x3a, 0x00, 0x00, 0x00, 0x0d, 0x0a, 0x49, 0x6c, 0x6c, 0x65, - 0x67, 0x61, 0x6c, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x0d, 0x0a, 0x00, - 0x00, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x69, 0x6e, 0x67, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x28, 0x31, 0x20, 0x74, - 0x6f, 0x20, 0x25, 0x64, 0x29, 0x3a, 0x00, 0x0d, 0x0a, 0x43, 0x61, 0x6e, 0x6e, - 0x6f, 0x74, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x20, 0x74, 0x6f, - 0x20, 0x73, 0x61, 0x6d, 0x65, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x0d, 0x0a, 0x00, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x75, 0x70, 0x20, 0x75, 0x61, - 0x72, 0x74, 0x73, 0x0d, 0x00, 0x00, 0x00, 0x0d, 0x27, 0x00, 0x00, 0x27, 0x20, - 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x6f, - 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x0d, - 0x00, 0x00, 0x00, 0x27, 0x20, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x65, 0x64, - 0x20, 0x69, 0x6e, 0x20, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, - 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, - 0x65, 0x72, 0x0d, 0x00, 0x55, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x6f, - 0x20, 0x73, 0x65, 0x74, 0x20, 0x75, 0x70, 0x20, 0x6f, 0x72, 0x69, 0x67, 0x69, - 0x6e, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x55, 0x41, 0x52, 0x54, 0x0a, 0x00, - 0x00, 0x46, 0x43, 0x52, 0x3d, 0x25, 0x58, 0x20, 0x4c, 0x43, 0x52, 0x3d, 0x25, - 0x58, 0x20, 0x53, 0x50, 0x52, 0x3d, 0x25, 0x58, 0x0a, 0x00, 0x00, 0x00, 0x55, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x73, 0x65, 0x74, 0x20, - 0x75, 0x70, 0x20, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x20, - 0x55, 0x41, 0x52, 0x54, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x49, 0x6e, 0x69, 0x74, - 0x69, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x2e, 0x2e, 0x0d, 0x00, 0x00, 0x00, 0x41, 0x54, - 0x26, 0x46, 0x0d, 0x00, 0x00, 0x00, 0x4f, 0x4b, 0x00, 0x00, 0x41, 0x54, 0x58, - 0x31, 0x57, 0x32, 0x53, 0x36, 0x34, 0x3d, 0x31, 0x30, 0x0d, 0x00, 0x00, 0x00, - 0x41, 0x54, 0x53, 0x37, 0x3d, 0x35, 0x30, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x55, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x70, 0x72, 0x65, 0x70, - 0x61, 0x72, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x64, 0x69, 0x61, 0x6c, 0x69, - 0x6e, 0x67, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x0a, 0x00, - 0x55, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x70, 0x72, 0x65, - 0x70, 0x61, 0x72, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6e, 0x73, 0x77, - 0x65, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, - 0x65, 0x0a, 0x00, 0x00, 0x00, 0x41, 0x54, 0x44, 0x00, 0x41, 0x54, 0x41, 0x0d, - 0x00, 0x00, 0x00, 0x00, 0x41, 0x54, 0x41, 0x00, 0x57, 0x61, 0x69, 0x74, 0x69, - 0x6e, 0x67, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x2e, 0x2e, 0x0d, 0x00, 0x00, 0x55, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, - 0x74, 0x65, 0x20, 0x64, 0x69, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x20, 0x73, 0x65, - 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x55, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x69, 0x6e, 0x69, 0x74, 0x69, - 0x61, 0x74, 0x65, 0x20, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, - 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x0a, 0x00, 0x00, 0x44, - 0x69, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6d, 0x20, - 0x64, 0x69, 0x64, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x0a, 0x00, 0x00, - 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x00, 0x33, 0x33, 0x36, 0x30, 0x30, - 0x00, 0x00, 0x00, 0x32, 0x38, 0x38, 0x30, 0x30, 0x00, 0x00, 0x00, 0x25, 0x74, - 0x20, 0x73, 0x65, 0x65, 0x6d, 0x73, 0x20, 0x73, 0x6c, 0x6f, 0x77, 0x0a, 0x00, - 0x00, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, - 0x6d, 0x6f, 0x64, 0x65, 0x6d, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x20, 0x27, 0x25, 0x74, 0x27, 0x20, 0x75, 0x6e, 0x65, 0x78, 0x70, 0x65, - 0x63, 0x74, 0x65, 0x64, 0x0a, 0x00, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, - 0x6e, 0x67, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6d, 0x20, 0x64, 0x69, 0x64, 0x20, - 0x6e, 0x6f, 0x74, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x20, 0x69, - 0x6e, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x41, 0x6e, - 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6d, - 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x27, 0x25, 0x74, - 0x27, 0x20, 0x75, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x0a, - 0x00, 0x00, 0x00, 0x0d, 0x54, 0x65, 0x73, 0x74, 0x20, 0x70, 0x61, 0x73, 0x73, - 0x65, 0x64, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, - 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x00, 0x00, 0x00, 0x00, 0x0a, - 0x0d, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x20, 0x2d, 0x00, 0x00, 0x00, 0x30, 0x78, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x42, 0x54, 0x34, 0x30, 0x00, 0x00, 0x00, 0x00, 0x42, 0x54, 0x34, 0x31, - 0x00, 0x00, 0x00, 0x00, 0x42, 0x54, 0x34, 0x32, 0x00, 0x00, 0x00, 0x00, 0x42, - 0x54, 0x34, 0x33, 0x00, 0x00, 0x00, 0x00, 0x42, 0x54, 0x30, 0x31, 0x00, 0x00, - 0x00, 0x00, 0x42, 0x54, 0x31, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0d, 0x44, - 0x69, 0x67, 0x69, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x20, 0x53, 0x6d, 0x61, 0x72, - 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x20, 0x42, 0x49, 0x4f, 0x53, 0x00, 0x00, 0x0a, - 0x0d, 0x52, 0x41, 0x4d, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x20, 0x25, 0x30, - 0x38, 0x78, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0d, 0x43, 0x50, 0x55, 0x20, 0x74, - 0x65, 0x73, 0x74, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, - 0x2e, 0x2e, 0x00, 0x00, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x00, 0x00, 0x0a, - 0x0d, 0x63, 0x6f, 0x64, 0x65, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, - 0x6d, 0x20, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x2e, 0x00, 0x00, 0x25, 0x45, 0x20, - 0x62, 0x61, 0x64, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x20, 0x63, 0x68, 0x65, 0x63, - 0x6b, 0x73, 0x75, 0x6d, 0x3a, 0x20, 0x25, 0x30, 0x38, 0x78, 0x00, 0x00, 0x0d, - 0x0a, 0x00, 0x00, 0x42, 0x54, 0x32, 0x30, 0x00, 0x00, 0x00, 0x00, 0x53, 0x69, - 0x6d, 0x70, 0x6c, 0x65, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x48, 0x69, 0x67, - 0x68, 0x0a, 0x0d, 0x00, 0x00, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x0a, - 0x0d, 0x00, 0x00, 0x00, 0x42, 0x54, 0x33, 0x30, 0x00, 0x00, 0x00, 0x00, 0x25, - 0x45, 0x20, 0x47, 0x61, 0x70, 0x20, 0x69, 0x6e, 0x20, 0x45, 0x42, 0x49, 0x20, - 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x0a, 0x0d, 0x00, 0x00, 0x00, - 0x00, 0x2e, 0x2e, 0x2f, 0x73, 0x6d, 0x61, 0x72, 0x74, 0x62, 0x69, 0x6f, 0x73, - 0x2e, 0x63, 0x00, 0x00, 0x42, 0x49, 0x4f, 0x53, 0x00, 0x00, 0x00, 0x00, 0x20, - 0x47, 0x4f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x20, 0x4f, 0x4b, 0x20, 0x00, 0x00, - 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x47, 0x4f, 0x4f, - 0x44, 0x00, 0x00, 0x00, 0x00, 0x42, 0x54, 0x39, 0x39, 0x00, 0x00, 0x00, 0x00, - 0x44, 0x4f, 0x4e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x57, 0x41, 0x49, 0x54, 0x00, - 0x00, 0x00, 0x00, 0x0d, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, - 0x73, 0x73, 0x20, 0x25, 0x64, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, - 0x00, 0x94, 0x09, 0x01, 0xa0, 0x2d, 0x2d, 0x2d, 0x20, 0x53, 0x6d, 0x61, 0x72, - 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x20, 0x44, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x20, 0x2d, 0x2d, 0x2d, 0x0a, 0x0d, 0x00, 0x41, 0x20, - 0x3d, 0x20, 0x41, 0x6c, 0x6c, 0x20, 0x74, 0x65, 0x73, 0x74, 0x73, 0x0a, 0x0d, - 0x00, 0x45, 0x20, 0x3d, 0x20, 0x41, 0x6c, 0x6c, 0x20, 0x45, 0x42, 0x49, 0x20, - 0x74, 0x65, 0x73, 0x74, 0x73, 0x0a, 0x0d, 0x00, 0x31, 0x20, 0x3d, 0x20, 0x54, - 0x69, 0x6d, 0x65, 0x72, 0x20, 0x74, 0x65, 0x73, 0x74, 0x0a, 0x0d, 0x00, 0x00, - 0x00, 0x00, 0x32, 0x20, 0x3d, 0x20, 0x52, 0x41, 0x4d, 0x20, 0x74, 0x65, 0x73, - 0x74, 0x0a, 0x0d, 0x00, 0x00, 0x33, 0x20, 0x3d, 0x20, 0x45, 0x42, 0x49, 0x20, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x20, 0x6c, 0x6f, 0x6f, 0x70, - 0x62, 0x61, 0x63, 0x6b, 0x20, 0x74, 0x65, 0x73, 0x74, 0x0a, 0x0d, 0x00, 0x00, - 0x00, 0x00, 0x34, 0x20, 0x3d, 0x20, 0x45, 0x42, 0x49, 0x20, 0x65, 0x78, 0x74, - 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x20, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, - 0x6b, 0x20, 0x74, 0x65, 0x73, 0x74, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x24, - 0x20, 0x3d, 0x20, 0x45, 0x42, 0x49, 0x20, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, - 0x20, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x20, 0x70, 0x6f, 0x72, - 0x74, 0x20, 0x74, 0x65, 0x73, 0x74, 0x0a, 0x0d, 0x00, 0x35, 0x20, 0x3d, 0x20, - 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x20, 0x50, 0x41, 0x4c, 0x20, 0x74, - 0x65, 0x73, 0x74, 0x0a, 0x0d, 0x00, 0x00, 0x74, 0x2f, 0x5e, 0x54, 0x2f, 0x54, - 0x20, 0x3d, 0x20, 0x48, 0x6f, 0x73, 0x74, 0x20, 0x73, 0x69, 0x64, 0x65, 0x20, - 0x20, 0x38, 0x2f, 0x31, 0x36, 0x2f, 0x33, 0x32, 0x2d, 0x62, 0x69, 0x74, 0x20, - 0x52, 0x41, 0x4d, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x2f, 0x73, 0x74, 0x6f, 0x70, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x69, 0x20, - 0x3d, 0x20, 0x63, 0x61, 0x72, 0x64, 0x2d, 0x74, 0x6f, 0x2d, 0x68, 0x6f, 0x73, - 0x74, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x20, 0x74, - 0x65, 0x73, 0x74, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x64, 0x5e, 0x44, 0x44, 0x29, - 0x75, 0x6d, 0x70, 0x2c, 0x20, 0x72, 0x5e, 0x52, 0x52, 0x29, 0x65, 0x61, 0x64, - 0x2c, 0x20, 0x77, 0x5e, 0x57, 0x57, 0x29, 0x72, 0x69, 0x74, 0x65, 0x2c, 0x20, - 0x66, 0x5e, 0x46, 0x46, 0x29, 0x69, 0x6c, 0x6c, 0x20, 0x52, 0x41, 0x4d, 0x0a, - 0x0d, 0x00, 0x00, 0x00, 0x6c, 0x4c, 0x29, 0x6f, 0x6f, 0x70, 0x20, 0x74, 0x65, - 0x73, 0x74, 0x20, 0x77, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6d, 0x20, 0x64, 0x69, - 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x0d, 0x0a, 0x4e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x20, 0x74, 0x6f, 0x20, 0x64, 0x6f, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x74, - 0x65, 0x73, 0x74, 0x73, 0x3a, 0x20, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x0d, - 0x20, 0x20, 0x54, 0x65, 0x73, 0x74, 0x73, 0x20, 0x73, 0x74, 0x6f, 0x70, 0x70, - 0x65, 0x64, 0x0a, 0x0d, 0x00, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x20, 0x70, 0x61, - 0x73, 0x73, 0x65, 0x73, 0x3a, 0x20, 0x25, 0x64, 0x0a, 0x0d, 0x00, 0x00, 0x20, - 0x20, 0x54, 0x65, 0x73, 0x74, 0x20, 0x25, 0x64, 0x3a, 0x20, 0x25, 0x64, 0x20, - 0x70, 0x61, 0x73, 0x73, 0x20, 0x25, 0x64, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x75, - 0x72, 0x65, 0x73, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x28, 0x70, - 0x72, 0x65, 0x73, 0x73, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x6b, 0x65, 0x79, 0x20, - 0x74, 0x6f, 0x20, 0x73, 0x74, 0x6f, 0x70, 0x29, 0x0a, 0x00, 0x00, 0x0a, 0x0d, - 0x20, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, - 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x20, 0x54, 0x65, 0x73, 0x74, 0x20, 0x31, 0x3a, 0x20, 0x25, 0x64, 0x20, - 0x70, 0x61, 0x73, 0x73, 0x20, 0x25, 0x64, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x75, - 0x72, 0x65, 0x73, 0x0a, 0x0d, 0x00, 0x53, 0x74, 0x61, 0x72, 0x74, 0x20, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x20, 0x00, 0x0a, 0x0d, 0x45, 0x6e, - 0x64, 0x20, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x20, 0x00, 0x0a, - 0x0d, 0x00, 0x00, 0x0a, 0x0d, 0x20, 0x20, 0x52, 0x41, 0x4d, 0x20, 0x74, 0x65, - 0x73, 0x74, 0x20, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x0a, 0x0d, 0x00, - 0x00, 0x20, 0x20, 0x54, 0x65, 0x73, 0x74, 0x20, 0x32, 0x3a, 0x20, 0x25, 0x64, - 0x20, 0x70, 0x61, 0x73, 0x73, 0x20, 0x25, 0x64, 0x20, 0x66, 0x61, 0x69, 0x6c, - 0x75, 0x72, 0x65, 0x73, 0x0a, 0x0d, 0x00, 0x20, 0x20, 0x45, 0x42, 0x49, 0x20, - 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, - 0x61, 0x6c, 0x20, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x20, 0x74, - 0x65, 0x73, 0x74, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x20, 0x20, 0x45, 0x6e, 0x74, - 0x65, 0x72, 0x20, 0x45, 0x42, 0x49, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x20, 0x74, 0x6f, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x28, 0x30, 0x2d, 0x25, - 0x64, 0x29, 0x20, 0x00, 0x00, 0x20, 0x20, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x20, - 0x70, 0x6f, 0x72, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, - 0x28, 0x31, 0x2d, 0x31, 0x36, 0x29, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0d, - 0x20, 0x20, 0x28, 0x70, 0x72, 0x65, 0x73, 0x73, 0x20, 0x61, 0x6e, 0x79, 0x20, - 0x6b, 0x65, 0x79, 0x20, 0x74, 0x6f, 0x20, 0x73, 0x74, 0x6f, 0x70, 0x29, 0x0a, - 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0d, 0x20, 0x20, 0x45, 0x42, 0x49, 0x20, 0x74, - 0x65, 0x73, 0x74, 0x20, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x0a, 0x0d, - 0x00, 0x00, 0x20, 0x20, 0x54, 0x65, 0x73, 0x74, 0x20, 0x25, 0x63, 0x3a, 0x20, - 0x25, 0x64, 0x20, 0x70, 0x61, 0x73, 0x73, 0x20, 0x25, 0x64, 0x20, 0x66, 0x61, - 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x20, - 0x20, 0x45, 0x42, 0x49, 0x20, 0x00, 0x00, 0x65, 0x78, 0x00, 0x00, 0x69, 0x6e, - 0x00, 0x00, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x20, 0x6c, 0x6f, 0x6f, 0x70, - 0x62, 0x61, 0x63, 0x6b, 0x20, 0x74, 0x65, 0x73, 0x74, 0x0a, 0x0d, 0x00, 0x00, - 0x20, 0x20, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x20, 0x45, 0x42, 0x49, 0x20, 0x6e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x65, 0x73, 0x74, - 0x20, 0x28, 0x30, 0x2d, 0x25, 0x64, 0x29, 0x20, 0x6f, 0x72, 0x20, 0x27, 0x41, - 0x27, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x0a, 0x0d, 0x00, 0x00, - 0x0d, 0x50, 0x41, 0x4c, 0x20, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x2e, 0x2e, 0x2e, - 0x2e, 0x00, 0x00, 0x0a, 0x0d, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x20, 0x2d, - 0x20, 0x74, 0x65, 0x6c, 0x6c, 0x20, 0x54, 0x4a, 0x20, 0x43, 0x61, 0x72, 0x74, - 0x65, 0x72, 0x20, 0x61, 0x74, 0x20, 0x39, 0x34, 0x33, 0x2d, 0x35, 0x33, 0x36, - 0x31, 0x0a, 0x0d, 0x00, 0x0a, 0x0d, 0x20, 0x20, 0x50, 0x41, 0x4c, 0x20, 0x74, - 0x65, 0x73, 0x74, 0x20, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x0a, 0x0d, - 0x00, 0x00, 0x20, 0x20, 0x54, 0x65, 0x73, 0x74, 0x20, 0x35, 0x3a, 0x20, 0x25, - 0x64, 0x20, 0x70, 0x61, 0x73, 0x73, 0x20, 0x25, 0x64, 0x20, 0x66, 0x61, 0x69, - 0x6c, 0x75, 0x72, 0x65, 0x73, 0x0a, 0x0d, 0x00, 0x43, 0x61, 0x72, 0x64, 0x2d, - 0x74, 0x6f, 0x2d, 0x68, 0x6f, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x72, 0x75, 0x70, 0x74, 0x20, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x2e, 0x2e, 0x00, - 0x00, 0x48, 0x65, 0x78, 0x20, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, - 0x20, 0x00, 0x00, 0x00, 0x25, 0x30, 0x38, 0x78, 0x3a, 0x20, 0x00, 0x00, 0x25, - 0x30, 0x32, 0x78, 0x0a, 0x0d, 0x00, 0x00, 0x25, 0x30, 0x34, 0x78, 0x0a, 0x0d, - 0x00, 0x00, 0x25, 0x30, 0x38, 0x78, 0x0a, 0x0d, 0x00, 0x00, 0x38, 0x00, 0x00, - 0x00, 0x31, 0x36, 0x00, 0x00, 0x33, 0x32, 0x00, 0x00, 0x2d, 0x62, 0x69, 0x74, - 0x20, 0x48, 0x65, 0x78, 0x20, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x20, 0x00, - 0x00, 0x00, 0x00, 0x48, 0x65, 0x78, 0x20, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x3a, 0x20, 0x00, 0x00, 0x00, 0x00, 0x50, 0x72, 0x65, 0x73, 0x73, 0x20, 0x27, - 0x3f, 0x27, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, - 0x73, 0x74, 0x69, 0x63, 0x73, 0x20, 0x6d, 0x65, 0x6e, 0x75, 0x0a, 0x0d, 0x00, - 0x00, 0x00, 0x00, 0xe8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x30, - 0x32, 0x58, 0x20, 0x00, 0x00, 0x00, 0x0d, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x20, - 0x74, 0x65, 0x73, 0x74, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, - 0x2e, 0x00, 0x00, 0x00, 0x25, 0x45, 0x20, 0x63, 0x61, 0x6e, 0x27, 0x74, 0x20, - 0x73, 0x65, 0x74, 0x20, 0x75, 0x70, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x20, - 0x30, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x25, 0x45, 0x20, 0x63, 0x61, 0x6e, 0x27, - 0x74, 0x20, 0x73, 0x65, 0x74, 0x20, 0x75, 0x70, 0x20, 0x74, 0x69, 0x6d, 0x65, - 0x72, 0x20, 0x32, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x25, 0x45, 0x20, 0x74, 0x69, - 0x6d, 0x65, 0x72, 0x20, 0x32, 0x20, 0x62, 0x61, 0x64, 0x20, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x0a, 0x0d, 0x00, 0x00, 0x25, 0x45, 0x20, 0x74, 0x69, 0x6d, 0x65, - 0x72, 0x20, 0x30, 0x20, 0x49, 0x4e, 0x54, 0x20, 0x73, 0x74, 0x75, 0x63, 0x6b, - 0x20, 0x6f, 0x6e, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x25, 0x45, 0x20, 0x74, 0x69, - 0x6d, 0x65, 0x72, 0x20, 0x30, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, - 0x74, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x0a, 0x0d, - 0x00, 0x25, 0x45, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x20, 0x30, 0x20, 0x49, - 0x4e, 0x54, 0x20, 0x77, 0x6f, 0x6e, 0x27, 0x74, 0x20, 0x67, 0x6f, 0x20, 0x61, - 0x77, 0x61, 0x79, 0x0a, 0x0d, 0x00, 0x00, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, - 0x00, 0x00, 0x0d, 0x46, 0x50, 0x47, 0x41, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x72, - 0x20, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, - 0x2e, 0x2e, 0x00, 0x00, 0x25, 0x45, 0x20, 0x63, 0x61, 0x6e, 0x27, 0x74, 0x20, - 0x73, 0x65, 0x74, 0x20, 0x75, 0x70, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x20, - 0x31, 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x25, 0x45, 0x20, 0x74, 0x69, 0x6d, 0x65, - 0x72, 0x20, 0x31, 0x20, 0x62, 0x61, 0x64, 0x20, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x0a, 0x0d, 0x00, 0x00, 0x25, 0x45, 0x20, 0x54, 0x25, 0x64, 0x20, 0x77, 0x72, - 0x6f, 0x74, 0x65, 0x20, 0x25, 0x30, 0x38, 0x78, 0x20, 0x72, 0x65, 0x61, 0x64, - 0x20, 0x25, 0x30, 0x38, 0x78, 0x20, 0x61, 0x74, 0x20, 0x25, 0x30, 0x38, 0x78, - 0x0a, 0x0d, 0x00, 0x00, 0x00, 0x08, 0x10, 0x01, 0xa0, 0x0d, 0x52, 0x41, 0x4d, - 0x20, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, - 0x2e, 0x2e, 0x2e, 0x2e, 0x25, 0x30, 0x38, 0x78, 0x2d, 0x25, 0x30, 0x38, 0x78, - 0x20, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, - 0x00, 0x00, 0x80, 0x00, 0x00, 0x0d, 0x54, 0x65, 0x73, 0x74, 0x20, 0x45, 0x42, - 0x49, 0x20, 0x25, 0x64, 0x20, 0x50, 0x41, 0x52, 0x41, 0x2d, 0x25, 0x30, 0x32, - 0x58, 0x2e, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x25, 0x45, 0x20, 0x45, 0x42, 0x49, - 0x20, 0x25, 0x64, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x20, - 0x70, 0x6f, 0x72, 0x74, 0x20, 0x54, 0x50, 0x52, 0x20, 0x77, 0x72, 0x6f, 0x74, - 0x65, 0x20, 0x30, 0x78, 0x30, 0x30, 0x20, 0x30, 0x78, 0x46, 0x46, 0x20, 0x72, - 0x65, 0x61, 0x64, 0x20, 0x25, 0x30, 0x32, 0x78, 0x20, 0x25, 0x30, 0x32, 0x78, - 0x0a, 0x00, 0x25, 0x45, 0x20, 0x45, 0x42, 0x49, 0x20, 0x25, 0x64, 0x20, 0x70, - 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x20, - 0x73, 0x65, 0x6e, 0x64, 0x20, 0x25, 0x30, 0x32, 0x78, 0x20, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x64, 0x20, 0x25, 0x30, 0x32, 0x78, 0x0a, 0x00, 0x00, - 0x00, 0x00, 0x25, 0x45, 0x20, 0x45, 0x42, 0x49, 0x20, 0x25, 0x64, 0x20, 0x70, - 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x20, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x20, 0x73, 0x74, 0x75, - 0x63, 0x6b, 0x20, 0x6f, 0x6e, 0x0a, 0x00, 0x25, 0x45, 0x20, 0x45, 0x42, 0x49, - 0x20, 0x25, 0x64, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x20, - 0x70, 0x6f, 0x72, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, - 0x74, 0x20, 0x6d, 0x61, 0x73, 0x6b, 0x20, 0x6f, 0x6e, 0x20, 0x77, 0x2f, 0x6f, - 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x0a, 0x00, 0x00, - 0x00, 0x00, 0x25, 0x45, 0x20, 0x45, 0x42, 0x49, 0x20, 0x25, 0x64, 0x20, 0x70, - 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x20, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x20, 0x6d, 0x61, 0x73, - 0x6b, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x73, 0x65, - 0x74, 0x20, 0x62, 0x69, 0x74, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x25, 0x45, 0x20, - 0x45, 0x42, 0x49, 0x20, 0x25, 0x64, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, - 0x65, 0x6c, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x72, 0x75, 0x70, 0x74, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, - 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x25, 0x45, 0x20, - 0x45, 0x42, 0x49, 0x20, 0x25, 0x64, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, - 0x65, 0x6c, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x72, 0x75, 0x70, 0x74, 0x20, 0x77, 0x6f, 0x6e, 0x27, 0x74, 0x20, 0x67, 0x6f, - 0x20, 0x61, 0x77, 0x61, 0x79, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x25, 0x45, 0x20, - 0x45, 0x42, 0x49, 0x20, 0x25, 0x64, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, - 0x65, 0x6c, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x72, 0x75, 0x70, 0x74, 0x20, 0x6d, 0x61, 0x73, 0x6b, 0x20, 0x64, 0x6f, 0x65, - 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x72, 0x65, 0x73, 0x65, 0x74, 0x20, 0x62, - 0x69, 0x74, 0x0a, 0x00, 0x00, 0x25, 0x45, 0x20, 0x45, 0x42, 0x49, 0x20, 0x25, - 0x64, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x20, 0x70, 0x6f, - 0x72, 0x74, 0x20, 0x54, 0x50, 0x52, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x66, 0x6f, - 0x75, 0x6e, 0x64, 0x0a, 0x00, 0x00, 0x0d, 0x45, 0x42, 0x49, 0x20, 0x25, 0x64, - 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, - 0x2e, 0x2e, 0x6e, 0x6f, 0x6e, 0x65, 0x00, 0x00, 0x0d, 0x45, 0x42, 0x49, 0x20, - 0x25, 0x64, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, - 0x2e, 0x2e, 0x2e, 0x2e, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x20, 0x45, - 0x42, 0x49, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x25, 0x30, 0x32, 0x78, 0x2c, - 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x74, 0x65, 0x73, 0x74, 0x65, 0x64, 0x0d, 0x0a, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x2e, - 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x2e, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, - 0x40, 0x80, 0x7f, 0xbf, 0xdf, 0xef, 0xf7, 0xfb, 0xfd, 0xfe, 0x55, 0xaa, 0xf0, - 0x0f, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, - 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0d, 0x45, 0x42, 0x49, 0x20, 0x25, 0x64, - 0x20, 0x65, 0x78, 0x74, 0x2e, 0x20, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, - 0x6b, 0x3a, 0x20, 0x00, 0x0d, 0x54, 0x65, 0x73, 0x74, 0x20, 0x45, 0x42, 0x49, - 0x20, 0x25, 0x64, 0x20, 0x55, 0x41, 0x52, 0x54, 0x2d, 0x25, 0x30, 0x32, 0x58, - 0x2e, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x25, 0x45, 0x20, 0x45, 0x42, 0x49, 0x20, - 0x25, 0x64, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x25, 0x64, 0x20, 0x73, 0x63, - 0x72, 0x61, 0x74, 0x63, 0x68, 0x20, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, - 0x72, 0x20, 0x77, 0x72, 0x6f, 0x74, 0x65, 0x20, 0x30, 0x78, 0x30, 0x30, 0x20, - 0x30, 0x78, 0x37, 0x46, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x25, 0x30, 0x32, - 0x78, 0x20, 0x25, 0x30, 0x32, 0x78, 0x0a, 0x00, 0x00, 0x25, 0x45, 0x20, 0x45, - 0x42, 0x49, 0x20, 0x25, 0x64, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x25, 0x64, - 0x20, 0x27, 0x64, 0x61, 0x74, 0x61, 0x20, 0x72, 0x65, 0x61, 0x64, 0x79, 0x20, - 0x73, 0x74, 0x75, 0x63, 0x6b, 0x20, 0x6f, 0x6e, 0x0a, 0x00, 0x25, 0x45, 0x20, - 0x45, 0x42, 0x49, 0x20, 0x25, 0x64, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x25, - 0x64, 0x20, 0x54, 0x48, 0x52, 0x45, 0x20, 0x6e, 0x65, 0x76, 0x65, 0x72, 0x20, - 0x72, 0x65, 0x61, 0x64, 0x79, 0x0a, 0x00, 0x25, 0x45, 0x20, 0x45, 0x42, 0x49, - 0x20, 0x25, 0x64, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x25, 0x64, 0x20, 0x6e, - 0x6f, 0x6e, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x20, 0x6c, 0x6f, 0x6f, 0x6b, 0x73, 0x20, - 0x65, 0x6d, 0x70, 0x74, 0x79, 0x0a, 0x00, 0x25, 0x45, 0x20, 0x45, 0x42, 0x49, - 0x20, 0x25, 0x64, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x25, 0x64, 0x20, 0x64, - 0x61, 0x74, 0x61, 0x20, 0x6e, 0x65, 0x76, 0x65, 0x72, 0x20, 0x61, 0x72, 0x72, - 0x69, 0x76, 0x65, 0x64, 0x0a, 0x00, 0x00, 0x00, 0x25, 0x45, 0x20, 0x45, 0x42, - 0x49, 0x20, 0x25, 0x64, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x25, 0x64, 0x00, - 0x00, 0x00, 0x20, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x75, 0x6e, 0x20, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x00, 0x00, 0x20, 0x70, 0x61, 0x72, 0x69, 0x74, 0x79, 0x20, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x00, 0x00, 0x00, 0x20, 0x66, 0x72, 0x61, 0x6d, - 0x69, 0x6e, 0x67, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x00, 0x00, 0x0a, 0x00, - 0x00, 0x00, 0x25, 0x45, 0x20, 0x45, 0x42, 0x49, 0x20, 0x25, 0x64, 0x20, 0x70, - 0x6f, 0x72, 0x74, 0x20, 0x25, 0x64, 0x20, 0x27, 0x64, 0x61, 0x74, 0x61, 0x20, - 0x72, 0x65, 0x61, 0x64, 0x79, 0x27, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x73, 0x65, - 0x74, 0x0a, 0x00, 0x25, 0x45, 0x20, 0x45, 0x42, 0x49, 0x20, 0x25, 0x64, 0x20, - 0x70, 0x6f, 0x72, 0x74, 0x20, 0x25, 0x64, 0x20, 0x27, 0x64, 0x61, 0x74, 0x61, - 0x20, 0x72, 0x65, 0x61, 0x64, 0x79, 0x27, 0x20, 0x73, 0x74, 0x69, 0x6c, 0x6c, - 0x20, 0x73, 0x65, 0x74, 0x0a, 0x00, 0x00, 0x00, 0x25, 0x45, 0x20, 0x45, 0x42, - 0x49, 0x20, 0x25, 0x64, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x25, 0x64, 0x20, - 0x73, 0x65, 0x6e, 0x64, 0x20, 0x25, 0x30, 0x32, 0x78, 0x20, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x64, 0x20, 0x25, 0x30, 0x32, 0x78, 0x0a, 0x00, 0x00, - 0x25, 0x45, 0x20, 0x45, 0x42, 0x49, 0x20, 0x25, 0x64, 0x20, 0x70, 0x6f, 0x72, - 0x74, 0x20, 0x25, 0x64, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6d, 0x20, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x25, 0x30, 0x32, 0x78, - 0x20, 0x69, 0x6e, 0x20, 0x25, 0x30, 0x32, 0x78, 0x0a, 0x0d, 0x00, 0x00, 0x00, - 0x20, 0x43, 0x54, 0x53, 0x2f, 0x52, 0x54, 0x53, 0x00, 0x00, 0x00, 0x00, 0x20, - 0x44, 0x53, 0x52, 0x2f, 0x44, 0x54, 0x52, 0x00, 0x00, 0x00, 0x00, 0x20, 0x52, - 0x49, 0x2f, 0x4f, 0x55, 0x54, 0x31, 0x00, 0x00, 0x00, 0x00, 0x20, 0x44, 0x43, - 0x44, 0x2f, 0x4f, 0x55, 0x54, 0x32, 0x00, 0x00, 0x00, 0x25, 0x45, 0x20, 0x45, - 0x42, 0x49, 0x20, 0x25, 0x64, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x25, 0x64, - 0x20, 0x49, 0x4e, 0x54, 0x20, 0x73, 0x74, 0x75, 0x63, 0x6b, 0x20, 0x6f, 0x6e, - 0x0a, 0x00, 0x25, 0x45, 0x20, 0x45, 0x42, 0x49, 0x20, 0x25, 0x64, 0x20, 0x70, - 0x6f, 0x72, 0x74, 0x20, 0x25, 0x64, 0x20, 0x49, 0x4e, 0x54, 0x20, 0x6d, 0x61, - 0x73, 0x6b, 0x20, 0x6f, 0x6e, 0x20, 0x77, 0x2f, 0x6f, 0x20, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x25, 0x45, - 0x20, 0x45, 0x42, 0x49, 0x20, 0x25, 0x64, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x20, - 0x25, 0x64, 0x20, 0x49, 0x4e, 0x54, 0x20, 0x6d, 0x61, 0x73, 0x6b, 0x20, 0x64, - 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x73, 0x65, 0x74, 0x20, 0x62, - 0x69, 0x74, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x25, 0x45, 0x20, 0x45, 0x42, 0x49, - 0x20, 0x25, 0x64, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x25, 0x64, 0x20, 0x49, - 0x4e, 0x54, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x77, - 0x6f, 0x72, 0x6b, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x25, 0x45, 0x20, 0x45, 0x42, - 0x49, 0x20, 0x25, 0x64, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x25, 0x64, 0x20, - 0x49, 0x4e, 0x54, 0x20, 0x77, 0x6f, 0x6e, 0x27, 0x74, 0x20, 0x67, 0x6f, 0x20, - 0x61, 0x77, 0x61, 0x79, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x25, 0x45, 0x20, 0x45, - 0x42, 0x49, 0x20, 0x25, 0x64, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x25, 0x64, - 0x20, 0x49, 0x4e, 0x54, 0x20, 0x6d, 0x61, 0x73, 0x6b, 0x20, 0x64, 0x6f, 0x65, - 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x72, 0x65, 0x73, 0x65, 0x74, 0x20, 0x62, - 0x69, 0x74, 0x0a, 0x00, 0x00, 0x25, 0x45, 0x20, 0x45, 0x42, 0x49, 0x20, 0x25, - 0x64, 0x20, 0x68, 0x61, 0x73, 0x20, 0x25, 0x64, 0x20, 0x70, 0x6f, 0x72, 0x74, - 0x73, 0x2c, 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x20, - 0x25, 0x64, 0x73, 0x20, 0x25, 0x64, 0x70, 0x0a, 0x00, 0x00, 0x20, 0x20, 0x4d, - 0x61, 0x78, 0x20, 0x75, 0x61, 0x72, 0x74, 0x73, 0x3a, 0x20, 0x25, 0x64, 0x2c, - 0x20, 0x4d, 0x69, 0x6e, 0x20, 0x75, 0x61, 0x72, 0x74, 0x73, 0x3a, 0x20, 0x25, - 0x64, 0x0a, 0x00, 0x25, 0x64, 0x20, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, - 0x20, 0x00, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x00, 0x00, 0x6e, 0x6f, 0x74, - 0x20, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x00, 0x00, 0x00, - 0x25, 0x45, 0x20, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x20, 0x70, - 0x6f, 0x72, 0x74, 0x20, 0x6d, 0x69, 0x73, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x3a, - 0x20, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x25, 0x64, 0x3d, 0x25, 0x64, 0x2c, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x25, 0x64, 0x3d, 0x25, - 0x64, 0x0a, 0x00, 0x00, 0x25, 0x45, 0x20, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, - 0x63, 0x6b, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x6d, 0x69, 0x73, 0x6d, 0x61, - 0x74, 0x63, 0x68, 0x3a, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x25, 0x64, 0x3d, - 0x25, 0x64, 0x3f, 0x0a, 0x00, 0x25, 0x64, 0x00, 0x00, 0x3d, 0x25, 0x64, 0x00, - 0x3f, 0x20, 0x00, 0x00, 0x50, 0x25, 0x64, 0x3d, 0x50, 0x25, 0x64, 0x20, 0x00, - 0x00, 0x00, 0x00, 0x25, 0x64, 0x3d, 0x64, 0x65, 0x62, 0x75, 0x67, 0x00, 0x00, - 0x00, 0x00, 0x25, 0x45, 0x20, 0x4e, 0x6f, 0x20, 0x65, 0x78, 0x74, 0x65, 0x72, - 0x6e, 0x61, 0x6c, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x00, 0x00, 0x00, 0x00, 0x0a, - 0x0d, 0x00, 0x00, 0x57, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x20, 0x2d, 0x20, - 0x4e, 0x6f, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x55, 0x41, 0x52, 0x54, 0x53, - 0x20, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, - 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x0a, 0x0d, 0x00, 0x00, 0x57, - 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x20, 0x2d, 0x20, 0x50, 0x61, 0x72, 0x61, - 0x6c, 0x6c, 0x65, 0x6c, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x20, 0x6e, 0x6f, - 0x74, 0x20, 0x6c, 0x6f, 0x6f, 0x70, 0x65, 0x64, 0x20, 0x62, 0x61, 0x63, 0x6b, - 0x0a, 0x0d, 0x00, 0x00, 0x25, 0x45, 0x20, 0x45, 0x42, 0x49, 0x20, 0x25, 0x64, - 0x20, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x20, 0x70, 0x6f, 0x72, - 0x74, 0x20, 0x73, 0x65, 0x6e, 0x74, 0x20, 0x25, 0x64, 0x20, 0x62, 0x79, 0x74, - 0x65, 0x73, 0x2c, 0x20, 0x45, 0x42, 0x49, 0x20, 0x25, 0x64, 0x20, 0x70, 0x61, - 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x67, - 0x6f, 0x74, 0x20, 0x25, 0x64, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x0a, 0x00, - 0x00, 0x00, 0x25, 0x45, 0x20, 0x45, 0x42, 0x49, 0x20, 0x25, 0x64, 0x20, 0x70, - 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x20, - 0x77, 0x72, 0x6f, 0x74, 0x65, 0x20, 0x25, 0x30, 0x32, 0x78, 0x2c, 0x20, 0x45, - 0x42, 0x49, 0x20, 0x25, 0x64, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, - 0x6c, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x25, - 0x30, 0x32, 0x78, 0x0a, 0x00, 0x25, 0x45, 0x20, 0x45, 0x42, 0x49, 0x20, 0x25, - 0x64, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x25, 0x64, 0x20, 0x26, 0x20, 0x70, - 0x6f, 0x72, 0x74, 0x20, 0x25, 0x64, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6d, 0x20, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x25, 0x30, - 0x32, 0x78, 0x20, 0x69, 0x6e, 0x20, 0x25, 0x30, 0x32, 0x78, 0x0a, 0x0d, 0x00, - 0x20, 0x43, 0x54, 0x53, 0x2f, 0x52, 0x54, 0x53, 0x0a, 0x00, 0x00, 0x00, 0x20, - 0x44, 0x54, 0x52, 0x2f, 0x44, 0x53, 0x52, 0x0a, 0x00, 0x00, 0x00, 0x20, 0x52, - 0x54, 0x53, 0x2f, 0x52, 0x49, 0x00, 0x20, 0x44, 0x54, 0x52, 0x2f, 0x44, 0x43, - 0x44, 0x00, 0x00, 0x00, 0x00, 0x25, 0x64, 0x20, 0x55, 0x41, 0x52, 0x54, 0x73, - 0x20, 0x00, 0x00, 0x00, 0x31, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, - 0x6c, 0x20, 0x00, 0x40, 0xf6, 0x55, 0x49, 0x40, 0x28, 0x23, 0x29, 0x62, 0x69, - 0x6f, 0x73, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x24, - 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x33, - 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, - 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, 0x31, 0x36, 0x3a, 0x34, - 0x32, 0x3a, 0x31, 0x37, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x62, 0x69, - 0x6f, 0x73, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x73, 0x20, 0x20, 0x20, 0x20, 0x24, - 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x31, - 0x34, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x37, 0x2f, 0x30, 0x34, 0x2f, 0x32, 0x33, 0x20, 0x31, 0x38, 0x3a, - 0x34, 0x38, 0x3a, 0x34, 0x32, 0x20, 0x24, 0x20, 0x00, 0x40, 0x28, 0x23, 0x29, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x2e, 0x63, 0x20, - 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x31, - 0x2e, 0x33, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, - 0x31, 0x39, 0x39, 0x36, 0x2f, 0x30, 0x39, 0x2f, 0x31, 0x36, 0x20, 0x32, 0x33, - 0x3a, 0x32, 0x32, 0x3a, 0x30, 0x35, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6d, 0x6b, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, - 0x2e, 0x32, 0x38, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, - 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x35, 0x2f, 0x33, 0x30, 0x20, 0x31, - 0x35, 0x3a, 0x30, 0x32, 0x3a, 0x30, 0x36, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, - 0x29, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, - 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x32, - 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, - 0x39, 0x36, 0x2f, 0x31, 0x30, 0x2f, 0x31, 0x30, 0x20, 0x32, 0x33, 0x3a, 0x32, - 0x37, 0x3a, 0x30, 0x37, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x64, 0x65, - 0x66, 0x73, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, - 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x31, - 0x31, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x37, 0x2f, 0x30, 0x34, 0x2f, 0x30, 0x39, 0x20, 0x31, 0x35, 0x3a, - 0x30, 0x38, 0x3a, 0x30, 0x32, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, - 0x31, 0x31, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, - 0x31, 0x39, 0x39, 0x36, 0x2f, 0x30, 0x37, 0x2f, 0x32, 0x33, 0x20, 0x30, 0x31, - 0x3a, 0x35, 0x36, 0x3a, 0x35, 0x35, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, - 0x68, 0x6f, 0x73, 0x74, 0x63, 0x6f, 0x6d, 0x6d, 0x2e, 0x63, 0x20, 0x20, 0x20, - 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, - 0x2e, 0x34, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, - 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x30, 0x2f, 0x31, 0x30, 0x20, 0x32, 0x33, - 0x3a, 0x32, 0x37, 0x3a, 0x30, 0x38, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, - 0x68, 0x6f, 0x73, 0x74, 0x63, 0x6f, 0x6d, 0x6d, 0x2e, 0x68, 0x20, 0x20, 0x20, - 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, - 0x2e, 0x31, 0x32, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, - 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x34, 0x2f, 0x32, 0x39, 0x20, 0x31, - 0x39, 0x3a, 0x33, 0x31, 0x3a, 0x31, 0x30, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, - 0x29, 0x6d, 0x69, 0x64, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, - 0x33, 0x2e, 0x31, 0x31, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, - 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x30, 0x2f, 0x31, 0x30, 0x20, - 0x32, 0x33, 0x3a, 0x32, 0x37, 0x3a, 0x30, 0x38, 0x20, 0x24, 0x00, 0x40, 0x28, - 0x23, 0x29, 0x6d, 0x6f, 0x64, 0x65, 0x6d, 0x74, 0x73, 0x74, 0x2e, 0x63, 0x20, - 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, - 0x20, 0x33, 0x2e, 0x37, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, - 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, - 0x31, 0x36, 0x3a, 0x34, 0x39, 0x3a, 0x30, 0x39, 0x20, 0x24, 0x00, 0x40, 0x28, - 0x23, 0x29, 0x6d, 0x6f, 0x64, 0x65, 0x6d, 0x74, 0x73, 0x74, 0x2e, 0x68, 0x20, - 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, - 0x20, 0x33, 0x2e, 0x35, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, - 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x31, 0x2f, 0x32, 0x30, 0x20, - 0x32, 0x30, 0x3a, 0x35, 0x38, 0x3a, 0x34, 0x33, 0x20, 0x24, 0x00, 0x40, 0x28, - 0x23, 0x29, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x68, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, - 0x20, 0x33, 0x2e, 0x34, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, - 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, - 0x31, 0x36, 0x3a, 0x34, 0x39, 0x3a, 0x33, 0x33, 0x20, 0x24, 0x00, 0x40, 0x28, - 0x23, 0x29, 0x70, 0x61, 0x72, 0x61, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, - 0x20, 0x31, 0x2e, 0x32, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, - 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, - 0x31, 0x36, 0x3a, 0x35, 0x30, 0x3a, 0x31, 0x36, 0x20, 0x24, 0x00, 0x40, 0x28, - 0x23, 0x29, 0x70, 0x62, 0x75, 0x73, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, - 0x20, 0x33, 0x2e, 0x34, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, - 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, - 0x31, 0x36, 0x3a, 0x35, 0x30, 0x3a, 0x32, 0x35, 0x20, 0x24, 0x00, 0x40, 0x28, - 0x23, 0x29, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x66, 0x2e, 0x63, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, - 0x20, 0x33, 0x2e, 0x33, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, - 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x31, 0x2f, 0x32, 0x30, 0x20, - 0x32, 0x30, 0x3a, 0x35, 0x38, 0x3a, 0x34, 0x32, 0x20, 0x24, 0x00, 0x40, 0x28, - 0x23, 0x29, 0x72, 0x77, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, - 0x20, 0x33, 0x2e, 0x32, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, - 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x30, 0x39, 0x2f, 0x31, 0x36, 0x20, - 0x32, 0x33, 0x3a, 0x32, 0x39, 0x3a, 0x34, 0x34, 0x20, 0x24, 0x00, 0x40, 0x28, - 0x23, 0x29, 0x72, 0x77, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, - 0x20, 0x32, 0x2e, 0x34, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, - 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x32, 0x2f, 0x32, 0x30, 0x20, - 0x32, 0x32, 0x3a, 0x32, 0x37, 0x3a, 0x35, 0x30, 0x20, 0x24, 0x00, 0x40, 0x28, - 0x23, 0x29, 0x73, 0x63, 0x61, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, - 0x20, 0x33, 0x2e, 0x36, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, - 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, - 0x31, 0x36, 0x3a, 0x35, 0x33, 0x3a, 0x30, 0x33, 0x20, 0x24, 0x00, 0x40, 0x28, - 0x23, 0x29, 0x73, 0x6d, 0x61, 0x72, 0x74, 0x62, 0x69, 0x6f, 0x73, 0x2e, 0x63, - 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, - 0x20, 0x33, 0x2e, 0x32, 0x37, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, - 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, - 0x20, 0x31, 0x36, 0x3a, 0x35, 0x34, 0x3a, 0x31, 0x39, 0x20, 0x24, 0x00, 0x40, - 0x28, 0x23, 0x29, 0x73, 0x6d, 0x61, 0x72, 0x74, 0x62, 0x69, 0x6f, 0x73, 0x2e, - 0x68, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x3a, 0x20, 0x33, 0x2e, 0x35, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, - 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x30, 0x39, 0x2f, 0x31, 0x39, - 0x20, 0x32, 0x31, 0x3a, 0x32, 0x33, 0x3a, 0x34, 0x38, 0x20, 0x24, 0x00, 0x40, - 0x28, 0x23, 0x29, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 0x68, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x3a, 0x20, 0x33, 0x2e, 0x32, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, - 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x30, 0x2f, 0x31, 0x30, - 0x20, 0x32, 0x33, 0x3a, 0x32, 0x37, 0x3a, 0x31, 0x31, 0x20, 0x24, 0x00, 0x40, - 0x28, 0x23, 0x29, 0x73, 0x78, 0x62, 0x69, 0x6f, 0x73, 0x2f, 0x4d, 0x61, 0x6b, - 0x65, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x31, 0x2e, 0x35, 0x20, 0x24, - 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, - 0x2f, 0x30, 0x35, 0x2f, 0x32, 0x32, 0x20, 0x32, 0x30, 0x3a, 0x31, 0x36, 0x3a, - 0x33, 0x34, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x74, 0x65, 0x73, 0x74, - 0x73, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x34, 0x35, 0x20, - 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, - 0x37, 0x2f, 0x30, 0x34, 0x2f, 0x31, 0x34, 0x20, 0x31, 0x35, 0x3a, 0x33, 0x38, - 0x3a, 0x35, 0x32, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x74, 0x65, 0x73, - 0x74, 0x73, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x35, 0x20, - 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, - 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, 0x31, 0x36, 0x3a, 0x35, 0x37, - 0x3a, 0x31, 0x34, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x74, 0x65, 0x73, - 0x74, 0x75, 0x61, 0x72, 0x74, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x39, 0x20, - 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, - 0x37, 0x2f, 0x30, 0x31, 0x2f, 0x30, 0x36, 0x20, 0x32, 0x33, 0x3a, 0x32, 0x31, - 0x3a, 0x35, 0x33, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x74, 0x65, 0x73, - 0x74, 0x75, 0x61, 0x72, 0x74, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x32, 0x20, - 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, - 0x36, 0x2f, 0x31, 0x30, 0x2f, 0x31, 0x30, 0x20, 0x32, 0x33, 0x3a, 0x32, 0x37, - 0x3a, 0x31, 0x34, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x74, 0x69, 0x6d, - 0x65, 0x72, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x36, 0x20, - 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, - 0x36, 0x2f, 0x30, 0x39, 0x2f, 0x31, 0x36, 0x20, 0x32, 0x33, 0x3a, 0x34, 0x31, - 0x3a, 0x34, 0x35, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x74, 0x69, 0x6d, - 0x65, 0x72, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x38, 0x20, - 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, - 0x36, 0x2f, 0x30, 0x39, 0x2f, 0x31, 0x36, 0x20, 0x32, 0x33, 0x3a, 0x34, 0x32, - 0x3a, 0x30, 0x38, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x75, 0x61, 0x72, - 0x74, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x36, 0x20, - 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, - 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, 0x31, 0x36, 0x3a, 0x35, 0x38, - 0x3a, 0x35, 0x32, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x75, 0x74, 0x69, - 0x6c, 0x2e, 0x73, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x34, 0x20, - 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, - 0x37, 0x2f, 0x30, 0x31, 0x2f, 0x32, 0x31, 0x20, 0x31, 0x37, 0x3a, 0x30, 0x36, - 0x3a, 0x35, 0x32, 0x20, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; diff --git a/sys/dev/digi/Xem.c b/sys/dev/digi/Xem.c deleted file mode 100644 index fb903b624546..000000000000 --- a/sys/dev/digi/Xem.c +++ /dev/null @@ -1,48 +0,0 @@ -/*- - * Copyright (c) 2001 Brian Somers <brian@Awfulhak.org> - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include <sys/param.h> -#include <sys/conf.h> -#include <sys/kernel.h> -#include <sys/module.h> - -#include <dev/digi/Xem.bios.h> -#include <dev/digi/Xem.fepos.h> -#include <dev/digi/digi_mod.h> - -struct digi_mod digi_mod_Xem = { - DIGI_MOD_VERSION, - { Xem_bios, sizeof(Xem_bios) }, - { Xem_fepos, sizeof(Xem_fepos) }, - { NULL, 0 } -}; - -MODULE_VERSION(digi_Xem, 1); -DEV_MODULE(digi_Xem, 0, 0); diff --git a/sys/dev/digi/Xem.fepos.h b/sys/dev/digi/Xem.fepos.h deleted file mode 100644 index 87df0505e710..000000000000 --- a/sys/dev/digi/Xem.fepos.h +++ /dev/null @@ -1,2217 +0,0 @@ -/*- - * Copyright (c) 2001 Brian Somers <brian@Awfulhak.org> - * based on work by Slawa Olhovchenkov - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - */ - -static const u_char Xem_fepos[] = { - 0x4f, 0x53, 0x6f, 0xbe, 0x69, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0xf9, - 0x30, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, 0x78, 0x66, - 0x65, 0x70, 0x2e, 0x62, 0x69, 0x6e, 0x20, 0x20, 0x20, 0x20, 0x20, 0x32, 0x2e, - 0x33, 0x2e, 0x32, 0x20, 0x20, 0x30, 0x36, 0x2f, 0x30, 0x32, 0x2f, 0x39, 0x37, - 0x00, 0x40, 0x28, 0x23, 0x29, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, - 0x74, 0x20, 0x28, 0x43, 0x29, 0x20, 0x31, 0x39, 0x39, 0x32, 0x2c, 0x20, 0x44, - 0x49, 0x47, 0x49, 0x20, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x61, 0x6c, 0x2e, 0x20, 0x41, 0x6c, 0x6c, 0x20, 0x52, 0x69, 0x67, - 0x68, 0x74, 0x73, 0x20, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x2e, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xa3, 0x01, 0x3c, 0x28, 0x02, 0x22, 0xac, 0x00, 0xa3, 0x02, 0x3c, - 0x20, 0x02, 0x42, 0x34, 0x0c, 0x00, 0x43, 0xac, 0x00, 0x60, 0x03, 0x40, 0x00, - 0x60, 0x80, 0x40, 0x00, 0x00, 0x43, 0xac, 0x00, 0x68, 0x03, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x43, 0xac, 0x10, 0x00, 0x44, 0xac, 0x14, 0x00, 0x45, - 0xac, 0x18, 0x00, 0x46, 0xac, 0x1c, 0x00, 0x47, 0xac, 0x20, 0x00, 0x48, 0xac, - 0x24, 0x00, 0x49, 0xac, 0x28, 0x00, 0x4a, 0xac, 0x2c, 0x00, 0x4b, 0xac, 0x30, - 0x00, 0x4c, 0xac, 0x34, 0x00, 0x4d, 0xac, 0x38, 0x00, 0x4e, 0xac, 0x3c, 0x00, - 0x4f, 0xac, 0x40, 0x00, 0x50, 0xac, 0x44, 0x00, 0x51, 0xac, 0x48, 0x00, 0x52, - 0xac, 0x4c, 0x00, 0x53, 0xac, 0x50, 0x00, 0x54, 0xac, 0x54, 0x00, 0x55, 0xac, - 0x58, 0x00, 0x56, 0xac, 0x5c, 0x00, 0x57, 0xac, 0x60, 0x00, 0x58, 0xac, 0x64, - 0x00, 0x59, 0xac, 0x68, 0x00, 0x5a, 0xac, 0x6c, 0x00, 0x5b, 0xac, 0x70, 0x00, - 0x5c, 0xac, 0x74, 0x00, 0x5d, 0xac, 0x78, 0x00, 0x5e, 0xac, 0x7c, 0x00, 0x5f, - 0xac, 0x10, 0x00, 0x08, 0x24, 0x00, 0xa3, 0x09, 0x3c, 0x00, 0x02, 0x29, 0x35, - 0x00, 0x00, 0x8a, 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, 0x11, 0x00, - 0x00, 0x2a, 0xa1, 0x01, 0x00, 0x84, 0x24, 0x01, 0x00, 0x29, 0x25, 0xff, 0xff, - 0x08, 0x25, 0xf8, 0xff, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x01, - 0x3c, 0x10, 0x02, 0x25, 0xac, 0x00, 0xa3, 0x01, 0x3c, 0x14, 0x02, 0x3f, 0xac, - 0x00, 0xa3, 0x01, 0x3c, 0x18, 0x02, 0x3d, 0xac, 0x02, 0x00, 0x08, 0x24, 0x00, - 0xa3, 0x01, 0x3c, 0x10, 0x0c, 0x28, 0xac, 0x00, 0xa3, 0x1d, 0x3c, 0x00, 0x04, - 0xbd, 0x37, 0x34, 0x19, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x08, - 0x3c, 0x10, 0x0c, 0x08, 0x8d, 0x01, 0x00, 0x01, 0x24, 0x25, 0x00, 0x01, 0x11, - 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0xda, - 0x00, 0x1e, 0x24, 0x00, 0xa3, 0x01, 0x3c, 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, - 0x1e, 0x24, 0x00, 0x10, 0x08, 0x3c, 0x00, 0x60, 0x88, 0x40, 0x01, 0x80, 0x1c, - 0x3c, 0x90, 0x0a, 0x9c, 0x27, 0xeb, 0x00, 0x1e, 0x24, 0x00, 0xa3, 0x01, 0x3c, - 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0x01, 0x00, 0x11, 0x04, 0x00, - 0x00, 0x00, 0x00, 0x06, 0x01, 0x1e, 0x24, 0x00, 0xa3, 0x01, 0x3c, 0x10, 0x00, - 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0x00, 0x80, 0x05, 0x3c, 0x00, 0x30, 0xa5, - 0x24, 0x01, 0x80, 0x06, 0x3c, 0x50, 0x94, 0xc6, 0x24, 0x00, 0x80, 0x04, 0x3c, - 0xe4, 0x31, 0x84, 0x24, 0x23, 0x20, 0xe4, 0x03, 0x21, 0x20, 0x86, 0x00, 0xfc, - 0xff, 0x84, 0x24, 0xfc, 0xff, 0xc6, 0x24, 0x00, 0x00, 0x88, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xc8, 0xac, 0x2b, 0x08, 0xa6, 0x00, 0xf9, 0xff, 0x20, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x01, 0x3c, 0xfe, 0x00, 0x21, 0x34, 0x24, 0x40, 0x01, 0x01, 0x00, - 0x60, 0x88, 0x40, 0x00, 0xa3, 0x01, 0x3c, 0x0f, 0x0c, 0x20, 0xa0, 0x5a, 0x01, - 0x1e, 0x24, 0x00, 0xa3, 0x01, 0x3c, 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, - 0x24, 0x00, 0x80, 0x1f, 0x3c, 0x84, 0x32, 0xff, 0x27, 0x00, 0x80, 0x04, 0x3c, - 0x30, 0x46, 0x84, 0x24, 0x00, 0xa0, 0x01, 0x3c, 0x25, 0x20, 0x81, 0x00, 0x08, - 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa1, 0x01, 0x1e, 0x24, 0x00, 0xa3, - 0x01, 0x3c, 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, 0x1e, 0x24, 0x01, 0x80, 0x1d, - 0x3c, 0x30, 0x9c, 0xbd, 0x27, 0x00, 0x00, 0x1e, 0x24, 0x00, 0xa3, 0x01, 0x3c, - 0x10, 0x0c, 0x20, 0xac, 0x3f, 0x00, 0x01, 0x3c, 0xff, 0xff, 0x21, 0x34, 0x24, - 0x70, 0xc1, 0x01, 0x00, 0x80, 0x01, 0x3c, 0x25, 0x70, 0xc1, 0x01, 0x00, 0x80, - 0x04, 0x3c, 0x65, 0x16, 0x00, 0x0c, 0x00, 0x30, 0x84, 0x24, 0x6b, 0x0c, 0x00, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0xff, 0xbd, 0x27, 0x10, - 0x00, 0xa1, 0xaf, 0x14, 0x00, 0xa2, 0xaf, 0x18, 0x00, 0xa3, 0xaf, 0x1c, 0x00, - 0xa4, 0xaf, 0x20, 0x00, 0xa5, 0xaf, 0x24, 0x00, 0xa6, 0xaf, 0x28, 0x00, 0xa7, - 0xaf, 0x2c, 0x00, 0xa8, 0xaf, 0x30, 0x00, 0xa9, 0xaf, 0x34, 0x00, 0xaa, 0xaf, - 0x38, 0x00, 0xab, 0xaf, 0x3c, 0x00, 0xac, 0xaf, 0x40, 0x00, 0xad, 0xaf, 0x44, - 0x00, 0xae, 0xaf, 0x48, 0x00, 0xaf, 0xaf, 0x4c, 0x00, 0xb8, 0xaf, 0x50, 0x00, - 0xb9, 0xaf, 0x58, 0x00, 0xbe, 0xaf, 0x5c, 0x00, 0xbf, 0xaf, 0x00, 0x70, 0x08, - 0x40, 0x12, 0x48, 0x00, 0x00, 0x10, 0x50, 0x00, 0x00, 0x54, 0x00, 0xa8, 0xaf, - 0x60, 0x00, 0xa9, 0xaf, 0x64, 0x00, 0xaa, 0xaf, 0x00, 0x68, 0x05, 0x40, 0x00, - 0x60, 0x06, 0x40, 0x7c, 0x00, 0xa4, 0x30, 0x56, 0x00, 0x80, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x68, 0x00, 0xa6, 0xaf, 0x24, 0x10, 0xa6, 0x00, 0x00, 0xff, 0x42, - 0x30, 0x00, 0x08, 0x44, 0x30, 0x45, 0x00, 0x80, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x48, 0x30, 0x38, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x2a, - 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0xa6, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x86, 0x40, 0x00, 0x68, 0x05, - 0x40, 0x00, 0x00, 0x00, 0x00, 0x24, 0x10, 0xa6, 0x00, 0x00, 0xff, 0x42, 0x30, - 0xef, 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0xa8, 0x8f, 0x60, - 0x00, 0xa9, 0x8f, 0x64, 0x00, 0xaa, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, - 0x88, 0x40, 0x13, 0x00, 0x20, 0x01, 0x11, 0x00, 0x40, 0x01, 0x14, 0x00, 0xa2, - 0x8f, 0x18, 0x00, 0xa3, 0x8f, 0x1c, 0x00, 0xa4, 0x8f, 0x20, 0x00, 0xa5, 0x8f, - 0x24, 0x00, 0xa6, 0x8f, 0x28, 0x00, 0xa7, 0x8f, 0x2c, 0x00, 0xa8, 0x8f, 0x30, - 0x00, 0xa9, 0x8f, 0x34, 0x00, 0xaa, 0x8f, 0x38, 0x00, 0xab, 0x8f, 0x3c, 0x00, - 0xac, 0x8f, 0x40, 0x00, 0xad, 0x8f, 0x44, 0x00, 0xae, 0x8f, 0x48, 0x00, 0xaf, - 0x8f, 0x4c, 0x00, 0xb8, 0x8f, 0x50, 0x00, 0xb9, 0x8f, 0x58, 0x00, 0xbe, 0x8f, - 0x5c, 0x00, 0xbf, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0xba, 0x8f, 0x10, - 0x00, 0xa1, 0x8f, 0x6c, 0x00, 0xbd, 0x27, 0x08, 0x00, 0x40, 0x03, 0x10, 0x00, - 0x00, 0x42, 0xa4, 0x91, 0x88, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x26, 0x40, 0x06, - 0x01, 0x01, 0xff, 0x08, 0x31, 0x26, 0x30, 0xc8, 0x00, 0x00, 0x00, 0x09, 0x24, - 0x00, 0x68, 0x89, 0x40, 0x00, 0x60, 0x86, 0x40, 0x53, 0x16, 0x00, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0xcc, 0xff, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x91, - 0x88, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x26, 0x40, 0x06, 0x01, 0x01, 0xff, 0x08, - 0x31, 0x26, 0x30, 0xc8, 0x00, 0x00, 0x60, 0x86, 0x40, 0x18, 0x1b, 0x00, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0xc2, 0xff, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x80, 0x08, 0x3c, 0x64, 0x9f, 0x08, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x26, 0x40, - 0x06, 0x01, 0x01, 0xff, 0x08, 0x31, 0x26, 0x30, 0xc8, 0x00, 0x00, 0x60, 0x86, - 0x40, 0x5c, 0x16, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xb7, 0xff, 0x00, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x04, 0x3c, 0xa0, 0x88, 0x84, 0x24, 0x24, - 0x0c, 0x00, 0x0c, 0x74, 0x01, 0x05, 0x24, 0xbb, 0xff, 0x00, 0x10, 0x00, 0x00, - 0x00, 0x00, 0xec, 0xff, 0xbd, 0x27, 0x08, 0x00, 0xa1, 0xaf, 0x00, 0x70, 0x1a, - 0x40, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xba, 0xaf, 0x10, 0x00, 0xbf, 0xaf, - 0x01, 0x80, 0x04, 0x3c, 0xa0, 0x88, 0x84, 0x24, 0x24, 0x0c, 0x00, 0x0c, 0x96, - 0x01, 0x05, 0x24, 0x10, 0x00, 0xbf, 0x8f, 0x0c, 0x00, 0xba, 0x8f, 0x08, 0x00, - 0xa1, 0x8f, 0x0c, 0x00, 0xbd, 0x27, 0x08, 0x00, 0x40, 0x03, 0x10, 0x00, 0x00, - 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0xff, 0xbd, 0x27, - 0x00, 0x00, 0xb0, 0xaf, 0x04, 0x00, 0xb1, 0xaf, 0x08, 0x00, 0xb2, 0xaf, 0x0c, - 0x00, 0xb3, 0xaf, 0x10, 0x00, 0xb4, 0xaf, 0x14, 0x00, 0xb5, 0xaf, 0x18, 0x00, - 0xb6, 0xaf, 0x1c, 0x00, 0xb7, 0xaf, 0x20, 0x00, 0xbf, 0xaf, 0x01, 0x80, 0x10, - 0x3c, 0x30, 0x94, 0x10, 0x8e, 0x00, 0x20, 0x11, 0x3c, 0x10, 0x92, 0x84, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x88, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x21, 0x80, 0x10, 0x02, 0x04, 0x92, - 0x88, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x31, 0x01, 0x80, 0x04, - 0x3c, 0x21, 0x20, 0x88, 0x00, 0xa4, 0x9c, 0x84, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x8a, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x21, 0x80, 0x10, 0x02, 0x04, 0x92, 0x88, 0x8f, 0x01, 0x80, - 0x04, 0x3c, 0x21, 0x20, 0x88, 0x00, 0xac, 0x9c, 0x84, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x00, 0x89, 0x8c, 0x04, 0x00, 0x0a, 0x25, 0x0c, 0x00, 0x4a, 0x31, - 0x04, 0x92, 0x8a, 0xaf, 0x08, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x2c, - 0x92, 0x84, 0x8f, 0x00, 0x92, 0x90, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x10, 0x26, 0x34, 0x00, 0x88, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x09, 0xf8, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x84, 0x8c, 0xf9, 0xff, 0x00, 0x16, - 0x00, 0x00, 0x00, 0x00, 0x2c, 0x92, 0x84, 0xaf, 0x00, 0x00, 0xb0, 0x8f, 0x04, - 0x00, 0xb1, 0x8f, 0x08, 0x00, 0xb2, 0x8f, 0x0c, 0x00, 0xb3, 0x8f, 0x10, 0x00, - 0xb4, 0x8f, 0x14, 0x00, 0xb5, 0x8f, 0x18, 0x00, 0xb6, 0x8f, 0x1c, 0x00, 0xb7, - 0x8f, 0x20, 0x00, 0xbf, 0x8f, 0x24, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, - 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x86, 0x8c, 0x00, 0x00, 0x00, 0x00, 0xbe, - 0x00, 0xc0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x87, 0x94, 0x25, 0x28, - 0x91, 0x00, 0x82, 0x48, 0x07, 0x00, 0x0c, 0x00, 0x29, 0x31, 0x21, 0x08, 0x3c, - 0x01, 0x00, 0x80, 0x29, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x20, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xc2, 0x90, 0x00, 0x00, 0x00, 0x00, 0xc0, - 0x47, 0x02, 0x00, 0xb7, 0x00, 0x11, 0x05, 0x00, 0x00, 0x00, 0x00, 0x02, 0x49, - 0x07, 0x00, 0x7c, 0x00, 0x29, 0x31, 0x44, 0x00, 0x92, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x23, 0x90, 0x50, 0x02, 0xa9, 0x00, 0x41, 0x06, 0x00, 0x00, 0x00, 0x00, - 0x21, 0x08, 0x3c, 0x01, 0x20, 0x80, 0x29, 0x8c, 0x40, 0x00, 0x93, 0x8c, 0x08, - 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x89, 0x94, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x29, 0x31, 0x26, 0x01, 0x20, 0x15, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x49, 0x07, 0x00, 0x0c, 0x00, 0x29, 0x31, 0x21, 0x08, 0x3c, 0x01, - 0x10, 0x80, 0x29, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x20, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x89, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x41, 0x07, 0x00, 0x7c, 0x00, 0x08, 0x31, 0x21, 0x08, 0x1c, 0x01, - 0x20, 0x80, 0x28, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x54, 0x00, 0xa9, 0x90, 0x58, 0x00, 0xaa, 0x90, 0x01, 0x00, - 0xe8, 0x30, 0x09, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x8c, - 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x31, 0x04, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x83, 0x90, 0x03, 0x00, 0x00, 0x10, 0x08, - 0x00, 0x2b, 0x35, 0x5c, 0x00, 0x83, 0x90, 0xf7, 0xff, 0x2b, 0x31, 0x26, 0x48, - 0x2b, 0x01, 0x25, 0x50, 0x49, 0x01, 0x54, 0x00, 0xab, 0xa0, 0x58, 0x00, 0xaa, - 0xa0, 0xff, 0xfd, 0xe7, 0x30, 0x50, 0x00, 0x87, 0xa4, 0x00, 0x00, 0xc3, 0xa0, - 0x21, 0x90, 0x53, 0x02, 0xe1, 0xff, 0x40, 0x06, 0x00, 0x00, 0x00, 0x00, 0x70, - 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0x48, 0x12, 0x02, 0x67, 0x00, - 0x20, 0x15, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xca, 0x90, 0x00, 0x00, 0x00, - 0x00, 0x40, 0x00, 0x4a, 0x35, 0x0c, 0x00, 0xca, 0xa0, 0x00, 0x04, 0xe7, 0x34, - 0x60, 0x00, 0x00, 0x10, 0x50, 0x00, 0x87, 0xa4, 0x6c, 0x00, 0x89, 0x8c, 0xff, - 0xff, 0x01, 0x24, 0x0c, 0x00, 0x21, 0x11, 0x00, 0x00, 0x00, 0x00, 0x23, 0x48, - 0x30, 0x01, 0x08, 0x00, 0x20, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xca, - 0x90, 0x00, 0x00, 0x00, 0x00, 0xbf, 0xff, 0x4a, 0x31, 0x0c, 0x00, 0xca, 0xa0, - 0x00, 0x00, 0x09, 0x24, 0xff, 0xfa, 0xe7, 0x30, 0x50, 0x00, 0x87, 0xa4, 0x6c, - 0x00, 0x89, 0xac, 0x4f, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, - 0x86, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0xc0, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x25, 0x28, 0x91, 0x00, 0x08, 0x00, 0xc2, 0x90, 0x00, 0x00, 0x00, 0x00, - 0xc0, 0x47, 0x02, 0x00, 0x51, 0x00, 0x11, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x84, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x89, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x08, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0a, - 0x3c, 0x2c, 0x38, 0x4a, 0x25, 0x04, 0x00, 0x8a, 0xac, 0x49, 0x00, 0x88, 0x90, - 0x4a, 0x00, 0x89, 0x90, 0x12, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x24, - 0x00, 0x86, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, 0xc0, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x50, 0x00, 0x87, 0x94, 0x25, 0x28, 0x91, 0x00, 0x08, 0x00, 0xc2, - 0x90, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x47, 0x02, 0x00, 0x3a, 0x00, 0x11, 0x05, - 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x92, 0x8c, 0x49, 0x00, 0x88, 0x90, 0x4a, - 0x00, 0x89, 0x90, 0x23, 0x90, 0x50, 0x02, 0x2d, 0x00, 0x41, 0x06, 0x00, 0x00, - 0x00, 0x00, 0x18, 0x00, 0xca, 0x90, 0x0a, 0x00, 0xb5, 0x94, 0x0c, 0x00, 0xb6, - 0x94, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0xb6, 0x12, 0x00, 0x00, 0x00, 0x00, - 0x24, 0x40, 0x0a, 0x01, 0x1e, 0x00, 0x09, 0x15, 0x00, 0x00, 0x00, 0x00, 0x40, - 0x00, 0x93, 0x8c, 0x3c, 0x00, 0x94, 0x8c, 0x0e, 0x00, 0x97, 0x94, 0x21, 0x40, - 0x96, 0x02, 0x00, 0x00, 0x03, 0x91, 0x01, 0x00, 0xd6, 0x26, 0x00, 0x00, 0xc3, - 0xa0, 0x24, 0xb0, 0xd7, 0x02, 0x21, 0x90, 0x53, 0x02, 0x04, 0x00, 0x41, 0x06, - 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xb6, 0x16, 0x21, 0x40, 0x96, 0x02, 0x00, - 0x00, 0x12, 0x24, 0x00, 0x00, 0x88, 0x8c, 0x0c, 0x00, 0xb6, 0xa4, 0x04, 0x00, - 0x09, 0x8d, 0x44, 0x00, 0x92, 0xac, 0x08, 0x00, 0x20, 0x01, 0x21, 0x20, 0x00, - 0x01, 0x21, 0x40, 0x12, 0x02, 0x07, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, - 0x4b, 0x00, 0x80, 0xa0, 0xbf, 0xff, 0xe7, 0x30, 0x50, 0x00, 0x87, 0xa4, 0x00, - 0x80, 0x08, 0x3c, 0xd0, 0x37, 0x08, 0x25, 0x04, 0x00, 0x88, 0xac, 0x00, 0x00, - 0x88, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x09, 0x8d, 0x44, 0x00, 0x80, - 0xac, 0x08, 0x00, 0x20, 0x01, 0x21, 0x20, 0x00, 0x01, 0x00, 0x00, 0x88, 0x8c, - 0x44, 0x00, 0x92, 0xac, 0x04, 0x00, 0x09, 0x8d, 0x21, 0x20, 0x00, 0x01, 0x08, - 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x87, 0x94, 0x6a, 0x00, - 0x92, 0x94, 0x42, 0x42, 0x07, 0x00, 0x7c, 0x00, 0x08, 0x31, 0x21, 0x98, 0x1c, - 0x01, 0xa0, 0x88, 0x73, 0x8e, 0x38, 0x00, 0x94, 0x8c, 0x12, 0x00, 0xb5, 0x94, - 0x14, 0x00, 0xb6, 0x94, 0x16, 0x00, 0x97, 0x94, 0x28, 0x00, 0x8c, 0x94, 0x5c, - 0x00, 0x8e, 0x90, 0x5d, 0x00, 0x8f, 0x90, 0x14, 0x00, 0xc2, 0x90, 0x00, 0x00, - 0xc3, 0x90, 0x00, 0x42, 0x02, 0x00, 0x25, 0x18, 0x68, 0x00, 0x08, 0x00, 0x60, - 0x02, 0x24, 0x18, 0x72, 0x00, 0xff, 0xf9, 0x68, 0x30, 0x90, 0x02, 0x0e, 0x11, - 0x21, 0x48, 0x95, 0x02, 0x9f, 0x02, 0x0f, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x23, 0xa1, 0xff, 0x00, 0x61, 0x2c, 0x12, 0x00, 0x20, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0xb5, 0x26, 0x24, 0xa8, 0xb7, 0x02, 0x20, 0x00, 0xb6, - 0x16, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x02, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x21, 0x48, 0x95, 0x02, 0x00, 0x00, 0x23, 0xa1, 0xff, 0x00, 0x61, 0x2c, 0x07, - 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xb5, 0x26, 0x24, 0xa8, - 0xb7, 0x02, 0x15, 0x00, 0xb6, 0x16, 0x00, 0x00, 0x00, 0x00, 0xeb, 0x02, 0x00, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x68, 0x30, 0x99, 0x02, 0x00, 0x15, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xb5, 0x26, 0x24, 0xa8, 0xb7, 0x02, 0xe4, - 0x02, 0xb6, 0x12, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x8a, 0x31, 0x09, 0x00, - 0x40, 0x11, 0x00, 0x00, 0x00, 0x00, 0x21, 0x48, 0x95, 0x02, 0x00, 0x00, 0x23, - 0xa1, 0x01, 0x00, 0xb5, 0x26, 0x24, 0xa8, 0xb7, 0x02, 0x03, 0x00, 0xb6, 0x16, - 0x00, 0x00, 0x00, 0x00, 0xd7, 0x02, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0xc2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x48, 0x30, 0xca, 0xff, - 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x88, 0x94, 0x23, 0x48, 0xb6, - 0x02, 0x24, 0x48, 0x37, 0x01, 0x12, 0x00, 0xb5, 0xa4, 0x2b, 0x08, 0x28, 0x01, - 0x1f, 0x00, 0x20, 0x14, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xea, 0x30, 0x1c, - 0x00, 0x40, 0x15, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xe7, 0x34, 0x00, 0x10, - 0x88, 0x31, 0x06, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xe7, - 0x38, 0x00, 0x80, 0x13, 0x3c, 0x1c, 0x36, 0x73, 0x26, 0x00, 0x80, 0x1f, 0x3c, - 0x64, 0x36, 0xff, 0x27, 0x5f, 0x00, 0x88, 0x90, 0x00, 0x00, 0x00, 0x00, 0x03, - 0x00, 0x08, 0x31, 0x54, 0x00, 0xa9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x26, 0x48, - 0x28, 0x01, 0x54, 0x00, 0xa9, 0xa0, 0x56, 0x00, 0xa9, 0x90, 0x00, 0x00, 0x00, - 0x00, 0x24, 0x48, 0x28, 0x01, 0x58, 0x00, 0xaa, 0x90, 0x00, 0x00, 0x00, 0x00, - 0x25, 0x50, 0x49, 0x01, 0x58, 0x00, 0xaa, 0xa0, 0x68, 0x00, 0x8b, 0x90, 0x27, - 0x40, 0x00, 0x01, 0x24, 0x58, 0x68, 0x01, 0x10, 0x00, 0xcb, 0xa0, 0x12, 0x00, - 0xb5, 0xa4, 0x08, 0x00, 0xe0, 0x03, 0x50, 0x00, 0x87, 0xa4, 0x24, 0x00, 0x86, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xc0, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x25, 0x28, 0x91, 0x00, 0x18, 0x00, 0xc8, 0x90, 0x54, 0x00, 0xa9, 0x90, 0x00, - 0x00, 0x00, 0x00, 0x26, 0x40, 0x09, 0x01, 0xf0, 0x00, 0x08, 0x31, 0x26, 0x48, - 0x28, 0x01, 0x54, 0x00, 0xa9, 0xa0, 0x56, 0x00, 0xa9, 0x90, 0x00, 0x00, 0x00, - 0x00, 0x24, 0x48, 0x28, 0x01, 0x58, 0x00, 0xaa, 0x90, 0x00, 0x00, 0x00, 0x00, - 0x25, 0x50, 0x49, 0x01, 0x58, 0x00, 0xaa, 0xa0, 0x08, 0x00, 0xe0, 0x03, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x80, 0x0a, 0x3c, 0x4c, 0x3b, 0x4a, 0x25, 0x07, 0x00, - 0x00, 0x10, 0x04, 0x00, 0x8a, 0xac, 0x24, 0x00, 0x86, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x1b, 0x00, 0xc0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x87, 0x94, - 0x25, 0x28, 0x91, 0x00, 0x38, 0x00, 0xc9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x15, - 0x00, 0x20, 0x11, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0xb5, 0x94, 0x14, 0x00, - 0xb6, 0x94, 0x38, 0x00, 0x94, 0x8c, 0x16, 0x00, 0x97, 0x94, 0x21, 0x40, 0x95, - 0x02, 0x01, 0x00, 0xb5, 0x26, 0x24, 0xa8, 0xb7, 0x02, 0x09, 0x00, 0xb6, 0x12, - 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0xc3, 0x90, 0xff, 0xff, 0x29, 0x25, 0x00, - 0x00, 0x03, 0xa1, 0x21, 0x40, 0x95, 0x02, 0xf7, 0xff, 0x20, 0x15, 0x00, 0x00, - 0x00, 0x00, 0x03, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xb5, - 0x26, 0x24, 0xa8, 0xb7, 0x02, 0x12, 0x00, 0xb5, 0xa4, 0x00, 0x00, 0x88, 0x8c, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x09, 0x8d, 0x21, 0x20, 0x00, 0x01, 0x08, - 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0a, 0x3c, 0xec, 0x3b, - 0x4a, 0x25, 0x04, 0x00, 0x00, 0x10, 0x04, 0x00, 0x8a, 0xac, 0x24, 0x00, 0x86, - 0x8c, 0x50, 0x00, 0x87, 0x94, 0x25, 0x28, 0x91, 0x00, 0x0a, 0x00, 0xb5, 0x94, - 0x0c, 0x00, 0xb6, 0x94, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0xb6, 0x12, 0x00, - 0x00, 0x00, 0x00, 0x38, 0x00, 0xc9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, - 0x29, 0x21, 0x22, 0x48, 0x09, 0x00, 0x3c, 0x00, 0x94, 0x8c, 0x0e, 0x00, 0x97, - 0x94, 0x21, 0x40, 0x96, 0x02, 0x08, 0x00, 0x20, 0x19, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x29, 0x25, 0x00, 0x00, 0x03, 0x91, 0x01, 0x00, 0xd6, 0x26, 0x48, - 0x00, 0xc3, 0xa0, 0x24, 0xb0, 0xd7, 0x02, 0xf8, 0xff, 0xb6, 0x16, 0x21, 0x40, - 0x96, 0x02, 0x00, 0x00, 0x88, 0x8c, 0x0c, 0x00, 0xb6, 0xa4, 0x04, 0x00, 0x09, - 0x8d, 0x21, 0x20, 0x00, 0x01, 0x08, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x80, 0x0a, 0x3c, 0x74, 0x3c, 0x4a, 0x25, 0x04, 0x00, 0x00, 0x10, 0x04, - 0x00, 0x8a, 0xac, 0x24, 0x00, 0x86, 0x8c, 0x50, 0x00, 0x87, 0x94, 0x25, 0x28, - 0x91, 0x00, 0x0a, 0x00, 0xb5, 0x94, 0x0c, 0x00, 0xb6, 0x94, 0x00, 0x00, 0x00, - 0x00, 0x55, 0x00, 0xb6, 0x12, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0xc9, 0x90, - 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x29, 0x25, 0x22, 0x48, 0x09, 0x00, 0x3c, - 0x00, 0x94, 0x8c, 0x0e, 0x00, 0x97, 0x94, 0x2a, 0x00, 0x8c, 0x94, 0x63, 0x00, - 0x8e, 0x90, 0x15, 0x00, 0x20, 0x19, 0x21, 0x40, 0x96, 0x02, 0xff, 0xff, 0x29, - 0x25, 0x00, 0x00, 0x08, 0x91, 0x00, 0x00, 0x00, 0x00, 0x21, 0x18, 0x00, 0x01, - 0x80, 0x40, 0x08, 0x00, 0x21, 0x08, 0x1c, 0x01, 0xa0, 0x84, 0x28, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x88, 0x31, 0x02, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x63, - 0x24, 0x01, 0x00, 0xce, 0x25, 0x48, 0x00, 0xc3, 0xa0, 0x01, 0x00, 0xd6, 0x26, - 0x24, 0xb0, 0xd7, 0x02, 0xeb, 0xff, 0xb6, 0x16, 0x00, 0x00, 0x00, 0x00, 0x63, - 0x00, 0x8e, 0xa0, 0x00, 0x00, 0x88, 0x8c, 0x0c, 0x00, 0xb6, 0xa4, 0x04, 0x00, - 0x09, 0x8d, 0x21, 0x20, 0x00, 0x01, 0x08, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, - 0x00, 0xf3, 0xff, 0xc0, 0x11, 0x00, 0x00, 0x00, 0x00, 0xf1, 0xff, 0x00, 0x10, - 0xff, 0xff, 0xce, 0x25, 0x20, 0x00, 0x8a, 0x31, 0x02, 0x00, 0x40, 0x11, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x24, 0x04, 0x00, 0x8a, 0x31, 0xea, 0xff, - 0x40, 0x11, 0x00, 0x00, 0x00, 0x00, 0xed, 0xff, 0x20, 0x11, 0x00, 0x00, 0x0e, - 0x24, 0xff, 0xff, 0x29, 0x25, 0x0d, 0x00, 0x0a, 0x24, 0xe4, 0xff, 0x00, 0x10, - 0x48, 0x00, 0xca, 0xa0, 0x21, 0x40, 0xc0, 0x01, 0x00, 0x00, 0x0e, 0x24, 0x08, - 0x00, 0x8a, 0x31, 0x08, 0x00, 0x40, 0x15, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, - 0x8a, 0x31, 0xdc, 0xff, 0x40, 0x11, 0x00, 0x00, 0x00, 0x00, 0xdb, 0xff, 0x00, - 0x11, 0x00, 0x00, 0x00, 0x00, 0xd8, 0xff, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, - 0xd6, 0xff, 0x00, 0x10, 0x0a, 0x00, 0x03, 0x24, 0x21, 0x40, 0xc0, 0x01, 0x07, - 0x00, 0x08, 0x31, 0x07, 0x00, 0x08, 0x39, 0x2b, 0x08, 0x28, 0x01, 0xd5, 0xff, - 0x20, 0x14, 0x00, 0x00, 0x00, 0x00, 0x23, 0x48, 0x28, 0x01, 0x08, 0x00, 0xce, - 0x25, 0xf8, 0xff, 0xce, 0x31, 0x20, 0x00, 0x03, 0x24, 0x48, 0x00, 0xc3, 0xa0, - 0xff, 0xff, 0x08, 0x25, 0xfd, 0xff, 0x01, 0x05, 0x00, 0x00, 0x00, 0x00, 0xc7, - 0xff, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x80, 0xa0, 0xbf, 0xff, - 0xe7, 0x30, 0x50, 0x00, 0x87, 0xa4, 0x00, 0x80, 0x08, 0x3c, 0xc4, 0x36, 0x08, - 0x25, 0x42, 0x0e, 0x00, 0x08, 0x04, 0x00, 0x88, 0xac, 0x74, 0x00, 0x9f, 0xac, - 0x63, 0x00, 0x8e, 0xa0, 0x00, 0x00, 0x88, 0x8c, 0x0c, 0x00, 0xb6, 0xa4, 0x04, - 0x00, 0x09, 0x8d, 0x44, 0x00, 0x92, 0xac, 0x08, 0x00, 0x20, 0x01, 0x21, 0x20, - 0x00, 0x01, 0x00, 0x80, 0x0a, 0x3c, 0x3c, 0x3e, 0x4a, 0x25, 0x04, 0x00, 0x8a, - 0xac, 0x49, 0x00, 0x88, 0x90, 0x4a, 0x00, 0x89, 0x90, 0x12, 0x00, 0x00, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x86, 0x8c, 0x00, 0x00, 0x00, 0x00, 0xb6, - 0xfe, 0xc0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x87, 0x94, 0x25, 0x28, - 0x91, 0x00, 0x08, 0x00, 0xc2, 0x90, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x47, 0x02, - 0x00, 0xb6, 0xfe, 0x11, 0x05, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x92, 0x8c, - 0x49, 0x00, 0x88, 0x90, 0x4a, 0x00, 0x89, 0x90, 0x23, 0x90, 0x50, 0x02, 0xa9, - 0xfe, 0x41, 0x06, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0xca, 0x90, 0x0a, 0x00, - 0xb5, 0x94, 0x0c, 0x00, 0xb6, 0x94, 0x24, 0x40, 0x0a, 0x01, 0x9d, 0xfe, 0x09, - 0x15, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x93, 0x8c, 0x3c, 0x00, 0x94, 0x8c, - 0x0e, 0x00, 0x97, 0x94, 0x74, 0x00, 0x88, 0x8c, 0x2a, 0x00, 0x8c, 0x94, 0x62, - 0x00, 0x8d, 0x90, 0x63, 0x00, 0x8e, 0x90, 0x09, 0xf8, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x89, 0xfe, 0xb6, 0x12, 0x21, 0x40, 0x96, 0x02, 0x00, 0x00, 0x03, - 0x91, 0x01, 0x00, 0xd6, 0x26, 0x24, 0xb0, 0xd7, 0x02, 0x24, 0x40, 0x6d, 0x00, - 0x80, 0x40, 0x08, 0x00, 0x21, 0x08, 0x1c, 0x01, 0xa0, 0x80, 0x28, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0xce, 0x25, 0x00, 0x00, 0xc3, 0xa0, 0x21, 0x90, 0x53, 0x02, 0xc1, 0xff, 0x41, - 0x06, 0x00, 0x00, 0x00, 0x00, 0xbf, 0xff, 0xb6, 0x12, 0x21, 0x40, 0x96, 0x02, - 0x00, 0x00, 0x03, 0x91, 0x01, 0x00, 0xd6, 0x26, 0x24, 0xb0, 0xd7, 0x02, 0x24, - 0x40, 0x6d, 0x00, 0x80, 0x40, 0x08, 0x00, 0x21, 0x08, 0x1c, 0x01, 0xa0, 0x80, - 0x28, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x88, 0x31, 0xed, 0xff, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x10, 0x27, 0x00, 0x03, 0x24, 0x01, 0x00, 0x88, 0x31, 0xe8, - 0xff, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x10, 0x28, 0x00, - 0x03, 0x24, 0x01, 0x00, 0x88, 0x31, 0xe3, 0xff, 0x00, 0x11, 0x00, 0x00, 0x00, - 0x00, 0x0e, 0x00, 0x00, 0x10, 0x21, 0x00, 0x03, 0x24, 0x01, 0x00, 0x88, 0x31, - 0xde, 0xff, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x10, 0x29, - 0x00, 0x03, 0x24, 0x01, 0x00, 0x88, 0x31, 0xd9, 0xff, 0x00, 0x11, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x10, 0x5e, 0x00, 0x03, 0x24, 0x01, 0x00, 0x88, - 0x31, 0xd4, 0xff, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x08, 0x24, - 0x00, 0x00, 0xc8, 0xa0, 0x02, 0x00, 0xce, 0x25, 0x21, 0x90, 0x53, 0x02, 0xcf, - 0xff, 0x40, 0x06, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x0c, 0x61, 0x00, - 0x83, 0xa0, 0x61, 0x00, 0x83, 0x90, 0xca, 0xff, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x88, 0x31, 0xc6, 0xff, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, - 0xc4, 0xff, 0x00, 0x10, 0xe0, 0xff, 0x63, 0x24, 0x02, 0x00, 0xc0, 0x11, 0x00, - 0x20, 0x89, 0x31, 0xff, 0xff, 0xce, 0x25, 0xc0, 0xff, 0x20, 0x11, 0x02, 0x00, - 0x08, 0x24, 0x57, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x42, 0x4a, 0x0c, - 0x00, 0x0c, 0x00, 0x29, 0x31, 0x21, 0x08, 0x3c, 0x01, 0x20, 0x89, 0x29, 0x8c, - 0x21, 0x40, 0xc0, 0x01, 0x08, 0x00, 0xce, 0x25, 0x08, 0x00, 0x20, 0x01, 0xf8, - 0xff, 0xce, 0x31, 0x23, 0x40, 0xc8, 0x01, 0x05, 0x00, 0x01, 0x29, 0xb2, 0xff, - 0x20, 0x14, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x47, 0x00, 0x00, 0x10, 0x02, 0x00, 0x08, 0x24, 0x23, 0x40, 0xc8, 0x01, - 0x20, 0x00, 0x03, 0x24, 0xff, 0xff, 0x08, 0x25, 0xa9, 0xff, 0x00, 0x19, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xa0, 0x21, 0x90, 0x53, 0x02, 0xf9, 0xff, - 0x40, 0x06, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x0c, 0x61, 0x00, 0x88, - 0xa0, 0x61, 0x00, 0x88, 0x90, 0xf4, 0xff, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x40, 0x89, 0x31, 0x9d, 0xff, 0x20, 0x11, 0x00, 0x00, 0x00, 0x00, 0x34, - 0x00, 0x00, 0x10, 0x7f, 0x00, 0x08, 0x24, 0x00, 0x80, 0x89, 0x31, 0x98, 0xff, - 0x20, 0x11, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x10, 0x7f, 0x00, 0x08, - 0x24, 0x21, 0x40, 0xc0, 0x01, 0x20, 0x00, 0x8a, 0x31, 0x1a, 0x00, 0x40, 0x15, - 0x04, 0x00, 0x89, 0x31, 0x09, 0x00, 0x20, 0x11, 0x0d, 0x00, 0x0a, 0x24, 0x00, - 0x00, 0x0e, 0x24, 0x00, 0x00, 0xca, 0xa0, 0x21, 0x90, 0x53, 0x02, 0x04, 0x00, - 0x40, 0x06, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x0a, 0x00, 0x03, 0x24, 0x00, 0x01, 0x88, 0x31, 0x85, 0xff, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x05, 0x00, 0x08, 0x24, 0x21, - 0x40, 0xc0, 0x01, 0x00, 0x00, 0x0e, 0x24, 0x08, 0x00, 0x89, 0x31, 0x0e, 0x00, - 0x20, 0x15, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x8a, 0x31, 0x03, 0x00, 0x40, - 0x11, 0x00, 0x00, 0x00, 0x00, 0x7d, 0xff, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0e, 0x24, 0xc2, 0x49, 0x0c, 0x00, 0x0c, 0x00, 0x29, 0x31, 0x21, - 0x08, 0x3c, 0x01, 0x30, 0x89, 0x29, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, - 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xff, 0x00, 0x10, 0x0a, 0x00, 0x03, - 0x24, 0x02, 0x41, 0x08, 0x00, 0x05, 0x00, 0x00, 0x10, 0x03, 0x00, 0x08, 0x25, - 0x03, 0x00, 0x00, 0x10, 0x05, 0x00, 0x08, 0x24, 0x01, 0x00, 0x00, 0x10, 0x09, - 0x00, 0x08, 0x24, 0x00, 0x00, 0xc3, 0xa0, 0x21, 0x90, 0x53, 0x02, 0x04, 0x00, - 0x40, 0x06, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x0c, 0x61, 0x00, 0x88, - 0xa0, 0x61, 0x00, 0x88, 0x90, 0x40, 0x00, 0x89, 0x31, 0x11, 0x00, 0x20, 0x11, - 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x01, 0x29, 0x0e, 0x00, 0x20, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x60, 0x00, 0x83, 0x90, 0x04, 0x00, 0x01, 0x29, 0x57, 0xff, - 0x20, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xa0, 0x21, 0x90, 0x53, - 0x02, 0x53, 0xff, 0x40, 0x06, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x83, 0x90, 0x4e, 0xff, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x06, 0x00, 0x08, 0x25, 0x00, 0x1e, 0x09, 0x24, 0x19, 0x00, - 0x09, 0x01, 0x12, 0x40, 0x00, 0x00, 0x0c, 0xff, 0x00, 0x10, 0x21, 0x90, 0x48, - 0x02, 0x01, 0x00, 0x00, 0x8c, 0xff, 0xe7, 0xe7, 0x30, 0x42, 0x42, 0x07, 0x00, - 0x7c, 0x00, 0x08, 0x31, 0x21, 0x98, 0x1c, 0x01, 0xa0, 0x88, 0x73, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x00, 0x60, 0x02, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x00, - 0xb8, 0x90, 0x5b, 0x00, 0xb9, 0x90, 0x5e, 0x00, 0x8d, 0x90, 0x00, 0x80, 0x13, - 0x3c, 0x0c, 0x42, 0x73, 0x26, 0xff, 0xfd, 0x68, 0x30, 0x09, 0x00, 0x0d, 0x15, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x13, 0x3c, 0x90, 0x43, 0x73, 0x26, 0xe7, - 0xfd, 0x00, 0x10, 0x00, 0x08, 0xe7, 0x34, 0x5a, 0x00, 0xb8, 0x90, 0x5b, 0x00, - 0xb9, 0x90, 0x00, 0x80, 0x13, 0x3c, 0x38, 0x42, 0x73, 0x26, 0xff, 0xf9, 0x68, - 0x30, 0x05, 0x00, 0x18, 0x11, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xfd, 0x19, 0x15, - 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4a, - 0x00, 0x88, 0x90, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x09, 0x31, 0x0b, 0x00, - 0x20, 0x11, 0x00, 0x00, 0x00, 0x00, 0xf7, 0xff, 0x08, 0x31, 0x4a, 0x00, 0x88, - 0xa0, 0x54, 0x00, 0xa9, 0x90, 0x58, 0x00, 0xaa, 0x90, 0xfb, 0xff, 0x2b, 0x31, - 0x26, 0x48, 0x2b, 0x01, 0x25, 0x50, 0x49, 0x01, 0x54, 0x00, 0xab, 0xa0, 0xea, - 0xfd, 0x00, 0x10, 0x58, 0x00, 0xaa, 0xa0, 0xe8, 0xfd, 0x19, 0x17, 0x00, 0x00, - 0x00, 0x00, 0x4a, 0x00, 0x88, 0x90, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, - 0x35, 0x4a, 0x00, 0x88, 0xa0, 0x54, 0x00, 0xa9, 0x90, 0x58, 0x00, 0xaa, 0x90, - 0x04, 0x00, 0x2b, 0x35, 0x26, 0x48, 0x2b, 0x01, 0x25, 0x50, 0x49, 0x01, 0x54, - 0x00, 0xab, 0xa0, 0x58, 0x00, 0xaa, 0xa0, 0x00, 0x08, 0x89, 0x31, 0xda, 0xfd, - 0x20, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xe7, 0x34, 0x00, 0x80, 0x13, - 0x3c, 0xd6, 0xfd, 0x00, 0x10, 0xe0, 0x42, 0x73, 0x26, 0x4a, 0x00, 0x88, 0x90, - 0x00, 0x00, 0x00, 0x00, 0xf3, 0xff, 0x08, 0x31, 0x4a, 0x00, 0x88, 0xa0, 0x54, - 0x00, 0xa9, 0x90, 0x58, 0x00, 0xaa, 0x90, 0xfb, 0xff, 0x2b, 0x31, 0x26, 0x48, - 0x2b, 0x01, 0x25, 0x50, 0x49, 0x01, 0x54, 0x00, 0xab, 0xa0, 0x58, 0x00, 0xaa, - 0xa0, 0xff, 0xef, 0xe7, 0x30, 0x42, 0x4a, 0x07, 0x00, 0x7c, 0x00, 0x29, 0x31, - 0x21, 0x98, 0x3c, 0x01, 0xa0, 0x88, 0x73, 0x8e, 0x40, 0x00, 0x88, 0x31, 0xc3, - 0xfd, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfd, 0x68, 0x30, 0xc0, 0xfd, - 0x0e, 0x11, 0x00, 0x00, 0x00, 0x00, 0xbe, 0xfd, 0x0f, 0x11, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x20, 0x89, 0x31, 0x07, 0x00, 0x20, 0x11, 0x00, 0x00, 0x00, 0x00, - 0x5a, 0x00, 0xaa, 0x90, 0x5b, 0x00, 0xab, 0x90, 0xb7, 0xfd, 0x0a, 0x11, 0x00, - 0x00, 0x00, 0x00, 0xb5, 0xfd, 0x0b, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, - 0x89, 0x31, 0x95, 0xfd, 0x20, 0x11, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x8d, - 0x90, 0x00, 0x00, 0x00, 0x00, 0x91, 0xfd, 0x0d, 0x15, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x08, 0xe7, 0x34, 0x00, 0x80, 0x13, 0x3c, 0x8d, 0xfd, 0x00, 0x10, 0x90, - 0x43, 0x73, 0x26, 0xff, 0xf7, 0xe7, 0x30, 0x42, 0x4a, 0x07, 0x00, 0x7c, 0x00, - 0x29, 0x31, 0x21, 0x98, 0x3c, 0x01, 0xa0, 0x88, 0x73, 0x8e, 0x86, 0xfd, 0x00, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x8d, 0x90, 0xff, 0xfd, 0x68, 0x30, - 0x74, 0xfd, 0x0d, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xe7, 0x34, 0x00, - 0x80, 0x13, 0x3c, 0x7e, 0xfd, 0x00, 0x10, 0x90, 0x43, 0x73, 0x26, 0x4a, 0x00, - 0x88, 0x90, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x09, 0x31, 0x0b, 0x00, 0x20, - 0x11, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xff, 0x08, 0x31, 0x4a, 0x00, 0x88, 0xa0, - 0x54, 0x00, 0xa9, 0x90, 0x58, 0x00, 0xaa, 0x90, 0xfb, 0xff, 0x2b, 0x31, 0x26, - 0x48, 0x2b, 0x01, 0x25, 0x50, 0x49, 0x01, 0x54, 0x00, 0xab, 0xa0, 0x8c, 0xfd, - 0x00, 0x10, 0x58, 0x00, 0xaa, 0xa0, 0x8a, 0xfd, 0xcf, 0x15, 0x00, 0x00, 0x00, - 0x00, 0x4a, 0x00, 0x88, 0x90, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x35, - 0x4a, 0x00, 0x88, 0xa0, 0x54, 0x00, 0xa9, 0x90, 0x58, 0x00, 0xaa, 0x90, 0x04, - 0x00, 0x2b, 0x35, 0x26, 0x48, 0x2b, 0x01, 0x25, 0x50, 0x49, 0x01, 0x54, 0x00, - 0xab, 0xa0, 0x58, 0x00, 0xaa, 0xa0, 0x00, 0x08, 0x89, 0x31, 0x7c, 0xfd, 0x20, - 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xe7, 0x34, 0x00, 0x80, 0x13, 0x3c, - 0x78, 0xfd, 0x00, 0x10, 0xe0, 0x42, 0x73, 0x26, 0xc2, 0x51, 0x03, 0x00, 0x3c, - 0x00, 0x4a, 0x31, 0x21, 0x40, 0x5c, 0x01, 0xc0, 0x91, 0x08, 0x8d, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x08, 0x25, 0x21, 0x08, 0x5c, 0x01, 0xc0, 0x91, 0x28, - 0xac, 0x00, 0x10, 0x6a, 0x30, 0x0e, 0x00, 0x40, 0x11, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x8b, 0x31, 0x6a, 0xfd, 0x60, 0x15, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x8a, 0x31, 0x03, 0x00, 0x40, 0x15, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, - 0x00, 0x10, 0x00, 0x10, 0x03, 0x24, 0x4f, 0x00, 0xa8, 0x90, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x08, 0x35, 0x60, 0xfd, 0x00, 0x10, 0x4f, 0x00, 0xa8, 0xa0, - 0x04, 0x00, 0x88, 0x31, 0x5d, 0xfd, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x6a, 0x30, 0x0c, 0x00, 0x40, 0x11, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfd, - 0x63, 0x30, 0x4f, 0x00, 0xa8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x08, - 0x35, 0x4f, 0x00, 0xa8, 0xa0, 0xff, 0x00, 0x0b, 0x24, 0x2a, 0x08, 0x6b, 0x00, - 0x39, 0xfd, 0x20, 0x14, 0x00, 0x00, 0x00, 0x00, 0x40, 0xfd, 0x6b, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x00, 0x88, 0x31, 0x08, 0x00, 0x00, 0x15, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x20, 0xa1, 0x01, 0x00, 0xb5, 0x26, 0x24, 0xa8, 0xb7, - 0x02, 0x47, 0xfd, 0xb6, 0x16, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x10, - 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x08, 0x24, 0x00, 0x00, 0x28, 0xa1, 0x01, - 0x00, 0xb5, 0x26, 0x24, 0xa8, 0xb7, 0x02, 0x17, 0x00, 0xb6, 0x12, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x80, 0x89, 0x31, 0x02, 0x00, 0x20, - 0x11, 0x00, 0x00, 0x00, 0x00, 0x02, 0x42, 0x03, 0x00, 0x21, 0x48, 0x95, 0x02, - 0x00, 0x00, 0x28, 0xa1, 0x01, 0x00, 0xb5, 0x26, 0x24, 0xa8, 0xb7, 0x02, 0x0a, - 0x00, 0xb6, 0x12, 0x00, 0x00, 0x00, 0x00, 0x21, 0x48, 0x95, 0x02, 0x00, 0x00, - 0x23, 0xa1, 0x01, 0x00, 0xb5, 0x26, 0x24, 0xa8, 0xb7, 0x02, 0x2e, 0xfd, 0xb6, - 0x16, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0xb5, 0x26, 0xff, 0xff, 0xb5, 0x26, 0x24, 0xb0, 0xb7, 0x02, 0xff, - 0xff, 0xb5, 0x26, 0x24, 0xa8, 0xb7, 0x02, 0x4f, 0x00, 0xa8, 0x90, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x00, 0x08, 0x35, 0x22, 0xfd, 0x00, 0x10, 0x4f, 0x00, 0xa8, - 0xa0, 0x24, 0x00, 0x86, 0x8c, 0x25, 0x28, 0x91, 0x00, 0x78, 0x00, 0xc8, 0x90, - 0x00, 0x00, 0x00, 0x00, 0x21, 0x48, 0x00, 0x01, 0x50, 0x00, 0x08, 0x31, 0x20, - 0x00, 0x29, 0x31, 0x80, 0x48, 0x09, 0x00, 0x25, 0x40, 0x09, 0x01, 0x70, 0x00, - 0xc9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x42, 0x48, 0x09, 0x00, 0x20, 0x00, 0x29, - 0x31, 0x20, 0x00, 0x29, 0x39, 0x25, 0x40, 0x09, 0x01, 0x54, 0x00, 0xa9, 0x90, - 0x00, 0x00, 0x00, 0x00, 0x26, 0x40, 0x09, 0x01, 0xf0, 0x00, 0x08, 0x31, 0x26, - 0x48, 0x28, 0x01, 0x54, 0x00, 0xa9, 0xa0, 0x56, 0x00, 0xa9, 0x90, 0x00, 0x00, - 0x00, 0x00, 0x24, 0x48, 0x28, 0x01, 0x58, 0x00, 0xaa, 0x90, 0x00, 0x00, 0x00, - 0x00, 0x25, 0x50, 0x49, 0x01, 0x08, 0x00, 0xe0, 0x03, 0x58, 0x00, 0xaa, 0xa0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, - 0x00, 0x1e, 0x24, 0x00, 0xa3, 0x01, 0x3c, 0x10, 0x00, 0x3e, 0xac, 0x00, 0x00, - 0x1e, 0x24, 0x00, 0x80, 0x08, 0x3c, 0x58, 0x46, 0x08, 0x25, 0x00, 0xa0, 0x01, - 0x3c, 0x25, 0x40, 0x01, 0x01, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x60, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x05, 0x3c, 0x00, - 0x60, 0x85, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, - 0x09, 0x3c, 0x01, 0x00, 0x01, 0x3c, 0x23, 0x40, 0x21, 0x01, 0x03, 0x00, 0x00, - 0xa1, 0x04, 0x00, 0x08, 0x25, 0xfd, 0xff, 0x09, 0x15, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x05, 0x3c, 0x00, 0x60, 0x85, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xa0, 0x09, 0x3c, 0x01, 0x00, 0x01, 0x3c, 0x23, 0x40, - 0x21, 0x01, 0x03, 0x00, 0x00, 0xa1, 0x04, 0x00, 0x08, 0x25, 0xfd, 0xff, 0x09, - 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x60, 0x84, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x04, 0x40, 0xff, 0xff, 0x08, 0x3c, 0xff, 0x3f, 0x08, 0x35, 0x24, 0x20, - 0x88, 0x00, 0x00, 0x10, 0x84, 0x40, 0x01, 0x80, 0x08, 0x3c, 0x50, 0x94, 0x08, - 0x25, 0x01, 0x80, 0x09, 0x3c, 0x20, 0xa4, 0x29, 0x25, 0xfc, 0xff, 0x01, 0x24, - 0x24, 0x48, 0x21, 0x01, 0xfc, 0xff, 0x01, 0x24, 0x24, 0x40, 0x01, 0x01, 0x00, - 0x00, 0x00, 0xad, 0x04, 0x00, 0x08, 0x25, 0xfd, 0xff, 0x09, 0x15, 0x00, 0x00, - 0x00, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x02, - 0x40, 0xff, 0xff, 0x01, 0x3c, 0xfe, 0x00, 0x21, 0x34, 0x25, 0x20, 0x81, 0x00, - 0x24, 0x40, 0x44, 0x00, 0x00, 0x60, 0x88, 0x40, 0x01, 0xff, 0x42, 0x30, 0x08, - 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x02, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x26, 0x40, 0x44, 0x00, 0x01, 0xff, 0x08, 0x31, 0x26, 0x40, 0x02, - 0x01, 0x00, 0x60, 0x88, 0x40, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x60, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x24, 0x24, - 0x48, 0x01, 0x01, 0x00, 0x60, 0x89, 0x40, 0x00, 0x68, 0x02, 0x40, 0x00, 0x03, - 0x84, 0x30, 0x25, 0x18, 0x44, 0x00, 0x00, 0x68, 0x83, 0x40, 0x00, 0x60, 0x88, - 0x40, 0x24, 0x10, 0x44, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x60, 0x08, 0x40, 0x00, 0x03, 0x84, 0x30, 0xfe, 0xff, 0x01, 0x24, 0x24, - 0x48, 0x01, 0x01, 0x00, 0x60, 0x89, 0x40, 0x00, 0x68, 0x02, 0x40, 0x27, 0x18, - 0x80, 0x00, 0x24, 0x18, 0x62, 0x00, 0x00, 0x68, 0x83, 0x40, 0x00, 0x60, 0x88, - 0x40, 0x24, 0x10, 0x44, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x40, 0x10, 0x08, 0x3c, 0x00, 0x60, 0x88, 0x40, 0xc0, 0xbf, 0x08, 0x3c, 0x08, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x08, 0x40, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x09, 0x3c, 0xfe, 0x00, 0x29, 0x35, 0x00, 0x00, 0x00, - 0x00, 0x24, 0x40, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, 0x25, 0x40, 0x04, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x88, 0x40, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, - 0xbd, 0x27, 0x1c, 0x00, 0xbf, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb1, - 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x80, 0x80, 0x00, 0x1e, 0x00, 0xa2, 0x2c, - 0xdc, 0x00, 0x40, 0x10, 0x21, 0x88, 0xc0, 0x00, 0x80, 0x10, 0x05, 0x00, 0x01, - 0x80, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0xb0, 0x88, 0x22, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x11, - 0xa6, 0x00, 0x20, 0x03, 0x3c, 0x25, 0x18, 0x03, 0x02, 0x12, 0x00, 0x62, 0x94, - 0x14, 0x00, 0x63, 0x94, 0xff, 0xff, 0x42, 0x30, 0x23, 0x10, 0x43, 0x00, 0x16, - 0x00, 0x03, 0x96, 0x00, 0x00, 0x00, 0x00, 0x24, 0x10, 0x43, 0x00, 0x2b, 0x10, - 0x51, 0x00, 0xcb, 0x00, 0x40, 0x10, 0x01, 0x00, 0x02, 0x24, 0x90, 0x12, 0x00, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x11, 0xa6, 0x00, 0x20, 0x03, 0x3c, - 0x25, 0x18, 0x03, 0x02, 0x12, 0x00, 0x62, 0x94, 0x14, 0x00, 0x63, 0x94, 0xff, - 0xff, 0x42, 0x30, 0x23, 0x10, 0x43, 0x00, 0x16, 0x00, 0x03, 0x96, 0x00, 0x00, - 0x00, 0x00, 0x24, 0x10, 0x43, 0x00, 0x2b, 0x10, 0x22, 0x02, 0xbc, 0x00, 0x40, - 0x10, 0x01, 0x00, 0x02, 0x24, 0x8c, 0x12, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0xb0, 0x91, 0x84, 0x8f, 0xc6, 0x11, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x03, 0x3c, 0x25, 0x18, 0x03, 0x02, 0x0a, 0x00, 0x64, 0x94, 0x00, 0x00, - 0x00, 0x00, 0x65, 0x12, 0x00, 0x08, 0x0c, 0x00, 0x64, 0xa4, 0xb0, 0x91, 0x84, - 0x8f, 0xc6, 0x11, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x03, 0x92, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x63, 0x34, 0x4a, 0x00, 0x03, 0xa2, 0x00, - 0x20, 0x04, 0x3c, 0x25, 0x20, 0x04, 0x02, 0x54, 0x00, 0x83, 0x90, 0x00, 0x00, - 0x00, 0x00, 0xff, 0x00, 0x65, 0x30, 0x58, 0x00, 0x83, 0x90, 0x00, 0x00, 0x00, - 0x00, 0xff, 0x00, 0x66, 0x30, 0x5c, 0x12, 0x00, 0x08, 0x04, 0x00, 0xa3, 0x34, - 0xb0, 0x91, 0x84, 0x8f, 0xc6, 0x11, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x4a, - 0x00, 0x03, 0x92, 0x00, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x63, 0x30, 0x4a, 0x00, - 0x03, 0xa2, 0x00, 0x20, 0x04, 0x3c, 0x25, 0x20, 0x04, 0x02, 0x54, 0x00, 0x83, - 0x90, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x65, 0x30, 0x58, 0x00, 0x83, 0x90, - 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x66, 0x30, 0xfb, 0x00, 0xa3, 0x30, 0x54, - 0x00, 0x83, 0xa0, 0x54, 0x00, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x26, 0x18, - 0x65, 0x00, 0x25, 0x18, 0xc3, 0x00, 0x56, 0x00, 0x85, 0x90, 0x00, 0x00, 0x00, - 0x00, 0x24, 0x18, 0x65, 0x00, 0x58, 0x00, 0x83, 0xa0, 0xcf, 0x11, 0x00, 0x0c, - 0x21, 0x20, 0x40, 0x00, 0xeb, 0x12, 0x00, 0x08, 0x01, 0x00, 0x02, 0x24, 0x00, - 0x20, 0x02, 0x3c, 0x25, 0x10, 0x02, 0x02, 0x5a, 0x00, 0x51, 0xa0, 0x02, 0x1a, - 0x11, 0x00, 0x5b, 0x00, 0x43, 0xa0, 0xeb, 0x12, 0x00, 0x08, 0x01, 0x00, 0x02, - 0x24, 0x02, 0x00, 0x20, 0x16, 0x21, 0x28, 0x20, 0x02, 0x19, 0x00, 0x05, 0x24, - 0xdf, 0x1d, 0x00, 0x0c, 0x21, 0x20, 0x00, 0x02, 0xeb, 0x12, 0x00, 0x08, 0x01, - 0x00, 0x02, 0x24, 0x68, 0x00, 0x05, 0x92, 0x02, 0x12, 0x11, 0x00, 0x27, 0x10, - 0x02, 0x00, 0x24, 0x28, 0xa2, 0x00, 0xff, 0x00, 0x22, 0x32, 0x21, 0x20, 0x00, - 0x02, 0x10, 0x1e, 0x00, 0x0c, 0x25, 0x28, 0xa2, 0x00, 0xeb, 0x12, 0x00, 0x08, - 0x01, 0x00, 0x02, 0x24, 0x21, 0x20, 0x00, 0x02, 0x7a, 0x1d, 0x00, 0x0c, 0x21, - 0x28, 0x20, 0x02, 0xeb, 0x12, 0x00, 0x08, 0x01, 0x00, 0x02, 0x24, 0x5c, 0x00, - 0x11, 0xa2, 0x02, 0x12, 0x11, 0x00, 0xea, 0x12, 0x00, 0x08, 0x5d, 0x00, 0x02, - 0xa2, 0xea, 0x12, 0x00, 0x08, 0x18, 0x00, 0x11, 0xa6, 0x9b, 0x1c, 0x00, 0x0c, - 0x21, 0x20, 0x00, 0x02, 0xeb, 0x12, 0x00, 0x08, 0x01, 0x00, 0x02, 0x24, 0xd7, - 0x1c, 0x00, 0x0c, 0x21, 0x20, 0x00, 0x02, 0xeb, 0x12, 0x00, 0x08, 0x01, 0x00, - 0x02, 0x24, 0xb0, 0x91, 0x84, 0x8f, 0xc6, 0x11, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x21, 0x90, 0x40, 0x00, 0x8f, 0x1e, 0x00, 0x0c, 0x21, 0x20, 0x00, 0x02, - 0xc1, 0x12, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, 0x00, 0x02, 0xb3, - 0x1d, 0x00, 0x0c, 0x21, 0x28, 0x20, 0x02, 0xeb, 0x12, 0x00, 0x08, 0x01, 0x00, - 0x02, 0x24, 0x5f, 0x00, 0x05, 0x92, 0x02, 0x12, 0x11, 0x00, 0x27, 0x10, 0x02, - 0x00, 0x24, 0x28, 0xa2, 0x00, 0xff, 0x00, 0x22, 0x32, 0x21, 0x20, 0x00, 0x02, - 0x50, 0x1e, 0x00, 0x0c, 0x25, 0x28, 0xa2, 0x00, 0xeb, 0x12, 0x00, 0x08, 0x01, - 0x00, 0x02, 0x24, 0x21, 0x20, 0x00, 0x02, 0x13, 0x1d, 0x00, 0x0c, 0x21, 0x28, - 0x20, 0x02, 0xeb, 0x12, 0x00, 0x08, 0x01, 0x00, 0x02, 0x24, 0xb0, 0x91, 0x84, - 0x8f, 0xc6, 0x11, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x90, 0x40, 0x00, - 0x21, 0x10, 0x20, 0x02, 0x5e, 0x00, 0x02, 0xa2, 0xff, 0x00, 0x42, 0x30, 0x05, - 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x02, 0x96, 0x00, 0x00, - 0x00, 0x00, 0xc0, 0x12, 0x00, 0x08, 0x00, 0x20, 0x42, 0x34, 0x50, 0x00, 0x02, - 0x96, 0x00, 0x00, 0x00, 0x00, 0xff, 0xd7, 0x42, 0x30, 0x50, 0x00, 0x02, 0xa6, - 0xcf, 0x11, 0x00, 0x0c, 0x21, 0x20, 0x40, 0x02, 0xeb, 0x12, 0x00, 0x08, 0x01, - 0x00, 0x02, 0x24, 0x65, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x40, 0x18, - 0x02, 0x00, 0x21, 0x18, 0x62, 0x00, 0x00, 0x19, 0x03, 0x00, 0x01, 0x80, 0x02, - 0x3c, 0x21, 0x10, 0x43, 0x00, 0x88, 0x9d, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0xf6, 0xff, 0x42, 0x24, 0x02, 0x00, 0x42, 0x2c, 0x17, 0x00, 0x40, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x16, 0x01, 0x00, 0x02, 0x24, 0x48, 0x00, - 0x03, 0x92, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x62, 0x00, 0x27, 0x10, 0x02, - 0x00, 0xc4, 0x94, 0x83, 0x93, 0x00, 0x00, 0x00, 0x00, 0xe2, 0x12, 0x00, 0x08, - 0x24, 0x10, 0x43, 0x00, 0x48, 0x00, 0x03, 0x92, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x10, 0x62, 0x00, 0xc4, 0x94, 0x83, 0x93, 0x00, 0x00, 0x00, 0x00, 0x25, 0x10, - 0x43, 0x00, 0xc4, 0x94, 0x82, 0xa3, 0x01, 0xa1, 0x03, 0x3c, 0x08, 0x00, 0x63, - 0x34, 0x00, 0x00, 0x62, 0xa0, 0xeb, 0x12, 0x00, 0x08, 0x01, 0x00, 0x02, 0x24, - 0xeb, 0x12, 0x00, 0x08, 0x21, 0x10, 0x00, 0x00, 0x01, 0x00, 0x02, 0x24, 0x1c, - 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, - 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x20, 0x00, 0xbd, 0x27, 0xe0, 0xff, 0xbd, - 0x27, 0x1c, 0x00, 0xbf, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb1, 0xaf, - 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x80, 0x80, 0x00, 0x48, 0x00, 0x02, 0x92, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x00, 0x42, 0x2c, 0x05, 0x00, 0x40, 0x10, 0x21, 0x88, - 0xc0, 0x00, 0x04, 0x12, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x13, 0x00, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x03, 0x92, 0x08, 0x00, 0x02, 0x24, - 0xad, 0x00, 0x62, 0x14, 0x01, 0x00, 0x02, 0x24, 0x65, 0x00, 0x03, 0x92, 0x00, - 0x00, 0x00, 0x00, 0x40, 0x10, 0x03, 0x00, 0x21, 0x10, 0x43, 0x00, 0x00, 0x11, - 0x02, 0x00, 0x01, 0x80, 0x03, 0x3c, 0x21, 0x18, 0x62, 0x00, 0x88, 0x9d, 0x63, - 0x8c, 0x04, 0x00, 0x02, 0x24, 0xa2, 0x00, 0x62, 0x14, 0x01, 0x00, 0x02, 0x24, - 0x17, 0x00, 0xa2, 0x2c, 0x9c, 0x00, 0x40, 0x10, 0x80, 0x10, 0x05, 0x00, 0x01, - 0x80, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0x28, 0x89, 0x22, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x11, - 0xa6, 0x00, 0x20, 0x03, 0x3c, 0x25, 0x18, 0x03, 0x02, 0x12, 0x00, 0x62, 0x94, - 0x14, 0x00, 0x63, 0x94, 0xff, 0xff, 0x42, 0x30, 0x23, 0x10, 0x43, 0x00, 0x16, - 0x00, 0x03, 0x96, 0x00, 0x00, 0x00, 0x00, 0x24, 0x10, 0x43, 0x00, 0x2b, 0x10, - 0x51, 0x00, 0x8c, 0x00, 0x40, 0x10, 0x01, 0x00, 0x02, 0x24, 0x78, 0x13, 0x00, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x11, 0xa6, 0x00, 0x20, 0x03, 0x3c, - 0x25, 0x18, 0x03, 0x02, 0x12, 0x00, 0x62, 0x94, 0x14, 0x00, 0x63, 0x94, 0xff, - 0xff, 0x42, 0x30, 0x23, 0x10, 0x43, 0x00, 0x16, 0x00, 0x03, 0x96, 0x00, 0x00, - 0x00, 0x00, 0x24, 0x10, 0x43, 0x00, 0x2b, 0x10, 0x22, 0x02, 0x7d, 0x00, 0x40, - 0x10, 0x01, 0x00, 0x02, 0x24, 0x74, 0x13, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0xb0, 0x91, 0x84, 0x8f, 0xc6, 0x11, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x03, 0x3c, 0x25, 0x18, 0x03, 0x02, 0x0a, 0x00, 0x64, 0x94, 0x00, 0x00, - 0x00, 0x00, 0x4d, 0x13, 0x00, 0x08, 0x0c, 0x00, 0x64, 0xa4, 0xb0, 0x91, 0x84, - 0x8f, 0xc6, 0x11, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x03, 0x92, - 0x00, 0x00, 0x00, 0x00, 0x4c, 0x13, 0x00, 0x08, 0x04, 0x00, 0x63, 0x34, 0xb0, - 0x91, 0x84, 0x8f, 0xc6, 0x11, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x00, - 0x03, 0x92, 0x00, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x63, 0x30, 0x4a, 0x00, 0x03, - 0xa2, 0xcf, 0x11, 0x00, 0x0c, 0x21, 0x20, 0x40, 0x00, 0xb0, 0x13, 0x00, 0x08, - 0x01, 0x00, 0x02, 0x24, 0x00, 0x20, 0x02, 0x3c, 0x25, 0x10, 0x02, 0x02, 0x5a, - 0x00, 0x51, 0xa0, 0x02, 0x1a, 0x11, 0x00, 0x5b, 0x00, 0x43, 0xa0, 0xb0, 0x13, - 0x00, 0x08, 0x01, 0x00, 0x02, 0x24, 0x02, 0x00, 0x20, 0x16, 0x21, 0x28, 0x20, - 0x02, 0x19, 0x00, 0x05, 0x24, 0x88, 0x1f, 0x00, 0x0c, 0x21, 0x20, 0x00, 0x02, - 0xb0, 0x13, 0x00, 0x08, 0x01, 0x00, 0x02, 0x24, 0x68, 0x00, 0x05, 0x92, 0x02, - 0x12, 0x11, 0x00, 0x27, 0x10, 0x02, 0x00, 0x24, 0x28, 0xa2, 0x00, 0xff, 0x00, - 0x22, 0x32, 0x21, 0x20, 0x00, 0x02, 0xd8, 0x20, 0x00, 0x0c, 0x25, 0x28, 0xa2, - 0x00, 0xb0, 0x13, 0x00, 0x08, 0x01, 0x00, 0x02, 0x24, 0x21, 0x20, 0x00, 0x02, - 0x6b, 0x20, 0x00, 0x0c, 0x21, 0x28, 0x20, 0x02, 0xb0, 0x13, 0x00, 0x08, 0x01, - 0x00, 0x02, 0x24, 0x5c, 0x00, 0x11, 0xa2, 0x02, 0x12, 0x11, 0x00, 0xaf, 0x13, - 0x00, 0x08, 0x5d, 0x00, 0x02, 0xa2, 0xaf, 0x13, 0x00, 0x08, 0x18, 0x00, 0x11, - 0xa6, 0x8a, 0x1f, 0x00, 0x0c, 0x21, 0x20, 0x00, 0x02, 0xb0, 0x13, 0x00, 0x08, - 0x01, 0x00, 0x02, 0x24, 0xb4, 0x1f, 0x00, 0x0c, 0x21, 0x20, 0x00, 0x02, 0xb0, - 0x13, 0x00, 0x08, 0x01, 0x00, 0x02, 0x24, 0xb0, 0x91, 0x84, 0x8f, 0xc6, 0x11, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x90, 0x40, 0x00, 0xe9, 0x20, 0x00, - 0x0c, 0x21, 0x20, 0x00, 0x02, 0xa9, 0x13, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x21, 0x20, 0x00, 0x02, 0xa3, 0x20, 0x00, 0x0c, 0x21, 0x28, 0x20, 0x02, 0xb0, - 0x13, 0x00, 0x08, 0x01, 0x00, 0x02, 0x24, 0x5f, 0x00, 0x05, 0x92, 0x02, 0x12, - 0x11, 0x00, 0x27, 0x10, 0x02, 0x00, 0x24, 0x28, 0xa2, 0x00, 0xff, 0x00, 0x22, - 0x32, 0x21, 0x20, 0x00, 0x02, 0xdd, 0x1f, 0x00, 0x0c, 0x25, 0x28, 0xa2, 0x00, - 0xb0, 0x13, 0x00, 0x08, 0x01, 0x00, 0x02, 0x24, 0x21, 0x20, 0x00, 0x02, 0x7c, - 0x20, 0x00, 0x0c, 0x21, 0x28, 0x20, 0x02, 0xb0, 0x13, 0x00, 0x08, 0x01, 0x00, - 0x02, 0x24, 0xb0, 0x91, 0x84, 0x8f, 0xc6, 0x11, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x21, 0x90, 0x40, 0x00, 0x21, 0x10, 0x20, 0x02, 0x5e, 0x00, 0x02, 0xa2, - 0xff, 0x00, 0x42, 0x30, 0x05, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x50, - 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x13, 0x00, 0x08, 0x00, 0x20, - 0x42, 0x34, 0x50, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0xff, 0xd7, 0x42, - 0x30, 0x50, 0x00, 0x02, 0xa6, 0xcf, 0x11, 0x00, 0x0c, 0x21, 0x20, 0x40, 0x02, - 0xb0, 0x13, 0x00, 0x08, 0x01, 0x00, 0x02, 0x24, 0xb0, 0x13, 0x00, 0x08, 0x21, - 0x10, 0x00, 0x00, 0x01, 0x00, 0x02, 0x24, 0x1c, 0x00, 0xbf, 0x8f, 0x18, 0x00, - 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, - 0x03, 0x20, 0x00, 0xbd, 0x27, 0xc8, 0xff, 0xbd, 0x27, 0x34, 0x00, 0xbf, 0xaf, - 0x30, 0x00, 0xb6, 0xaf, 0x2c, 0x00, 0xb5, 0xaf, 0x28, 0x00, 0xb4, 0xaf, 0x24, - 0x00, 0xb3, 0xaf, 0x20, 0x00, 0xb2, 0xaf, 0x1c, 0x00, 0xb1, 0xaf, 0x18, 0x00, - 0xb0, 0xaf, 0x00, 0xa3, 0x02, 0x3c, 0x10, 0x0d, 0x42, 0x34, 0x00, 0x00, 0x43, - 0x94, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x71, 0x30, 0x02, 0x00, 0x42, 0x94, - 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x50, 0x30, 0x3f, 0x00, 0x30, 0x12, 0x00, - 0xa3, 0x13, 0x3c, 0x00, 0x04, 0x73, 0x36, 0x00, 0x83, 0x16, 0x3c, 0x00, 0x10, - 0xd6, 0x36, 0x00, 0xa3, 0x12, 0x3c, 0x18, 0x0d, 0x52, 0x36, 0x00, 0xa3, 0x15, - 0x3c, 0x00, 0x08, 0xb5, 0x36, 0x00, 0xa3, 0x14, 0x3c, 0x10, 0x0d, 0x94, 0x36, - 0x25, 0x10, 0x13, 0x02, 0x03, 0x00, 0x43, 0x88, 0x00, 0x00, 0x43, 0x98, 0x00, - 0x00, 0x00, 0x00, 0x13, 0x00, 0xa3, 0xab, 0x10, 0x00, 0xa3, 0xbb, 0x11, 0x00, - 0xa3, 0x93, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x11, 0x03, 0x00, 0x21, 0x20, 0x56, - 0x00, 0x94, 0x93, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x18, 0x62, 0x00, - 0x10, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x65, 0x00, 0x83, 0x90, 0x00, - 0x00, 0x00, 0x00, 0x40, 0x10, 0x03, 0x00, 0x21, 0x10, 0x43, 0x00, 0x00, 0x11, - 0x02, 0x00, 0x10, 0x00, 0xa5, 0x93, 0x01, 0x80, 0x01, 0x3c, 0x21, 0x08, 0x22, - 0x00, 0x70, 0x9d, 0x22, 0x8c, 0x12, 0x00, 0xa6, 0x97, 0x00, 0x00, 0x00, 0x00, - 0x09, 0xf8, 0x40, 0x00, 0x1f, 0x00, 0xa5, 0x30, 0x14, 0x00, 0x40, 0x14, 0x04, - 0x00, 0x02, 0x26, 0x00, 0x00, 0x42, 0x96, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, - 0x49, 0x30, 0x02, 0x00, 0x44, 0x96, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x84, - 0x30, 0x25, 0x18, 0x35, 0x01, 0x25, 0x10, 0x13, 0x02, 0x03, 0x00, 0x45, 0x88, - 0x00, 0x00, 0x45, 0x98, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x65, 0xa8, 0x00, - 0x00, 0x65, 0xb8, 0x04, 0x00, 0x22, 0x25, 0xfc, 0x03, 0x49, 0x30, 0x03, 0x00, - 0x24, 0x11, 0x04, 0x00, 0x02, 0x26, 0x00, 0x00, 0x49, 0xa6, 0x04, 0x00, 0x02, - 0x26, 0xfc, 0x03, 0x50, 0x30, 0x02, 0x00, 0x90, 0xa6, 0xcd, 0xff, 0x30, 0x16, - 0x25, 0x10, 0x13, 0x02, 0x34, 0x00, 0xbf, 0x8f, 0x30, 0x00, 0xb6, 0x8f, 0x2c, - 0x00, 0xb5, 0x8f, 0x28, 0x00, 0xb4, 0x8f, 0x24, 0x00, 0xb3, 0x8f, 0x20, 0x00, - 0xb2, 0x8f, 0x1c, 0x00, 0xb1, 0x8f, 0x18, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, - 0x03, 0x38, 0x00, 0xbd, 0x27, 0xb8, 0xff, 0xbd, 0x27, 0x44, 0x00, 0xbf, 0xaf, - 0x40, 0x00, 0xbe, 0xaf, 0x3c, 0x00, 0xb7, 0xaf, 0x38, 0x00, 0xb6, 0xaf, 0x34, - 0x00, 0xb5, 0xaf, 0x30, 0x00, 0xb4, 0xaf, 0x2c, 0x00, 0xb3, 0xaf, 0x28, 0x00, - 0xb2, 0xaf, 0x24, 0x00, 0xb1, 0xaf, 0x20, 0x00, 0xb0, 0xaf, 0xc8, 0x94, 0x84, - 0x8f, 0xcf, 0x11, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x03, 0x3c, - 0x30, 0x0c, 0x63, 0x34, 0x00, 0x00, 0x62, 0x90, 0x00, 0x00, 0x00, 0x00, 0x07, - 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x62, 0x90, 0x00, 0x00, - 0x00, 0x00, 0x03, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x34, 0x19, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0xac, 0x91, 0x9e, 0x8f, 0x00, 0xa3, 0x02, 0x3c, - 0x10, 0x0d, 0x42, 0x34, 0x02, 0x00, 0x42, 0x94, 0x00, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x56, 0x30, 0x00, 0x83, 0x13, 0x3c, 0x00, 0x10, 0x73, 0x36, 0x94, 0x93, - 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x40, 0x18, 0x21, 0xa8, 0x00, - 0x00, 0x00, 0xa3, 0x17, 0x3c, 0x10, 0x0d, 0xf7, 0x36, 0x00, 0x20, 0x02, 0x3c, - 0x25, 0x80, 0x62, 0x02, 0x0a, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x51, 0x30, 0x0c, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x52, 0x30, 0x55, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x42, - 0x34, 0x4f, 0x00, 0x03, 0x92, 0x00, 0x00, 0x00, 0x00, 0x24, 0xa0, 0x62, 0x00, - 0x44, 0x89, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0xa2, 0x02, 0x0a, - 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x40, 0x89, 0x82, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x2a, 0x10, 0xa2, 0x02, 0x05, 0x00, 0x40, 0x14, 0xff, 0xff, 0x43, - 0x26, 0x0e, 0x00, 0x62, 0x96, 0x00, 0x00, 0x00, 0x00, 0x24, 0x88, 0x62, 0x00, - 0x0a, 0x00, 0x11, 0xa6, 0x14, 0x00, 0x32, 0x12, 0x00, 0x00, 0x00, 0x00, 0x50, - 0x00, 0x62, 0x96, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x42, 0x30, 0x0f, 0x00, - 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x91, 0x84, 0x8f, 0xc6, 0x11, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x24, 0x4b, 0x00, 0x63, 0xa2, - 0x50, 0x00, 0x63, 0x96, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x63, 0x34, 0x50, - 0x00, 0x63, 0xa6, 0x00, 0x80, 0x03, 0x3c, 0x1c, 0x36, 0x63, 0x24, 0x04, 0x00, - 0x63, 0xae, 0xcf, 0x11, 0x00, 0x0c, 0x21, 0x20, 0x40, 0x00, 0x4c, 0x00, 0x02, - 0x92, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x32, 0x16, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x94, 0x36, 0x4c, - 0x00, 0x00, 0xa2, 0x4d, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, - 0x40, 0x10, 0x23, 0x18, 0x32, 0x02, 0x0e, 0x00, 0x62, 0x96, 0x00, 0x00, 0x00, - 0x00, 0x24, 0x18, 0x62, 0x00, 0x18, 0x00, 0x62, 0x96, 0x00, 0x00, 0x00, 0x00, - 0x2a, 0x10, 0x43, 0x00, 0x03, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x94, 0x36, 0x4d, 0x00, 0x00, 0xa2, 0x12, 0x00, 0x02, 0x96, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x51, 0x30, 0x14, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x52, 0x30, 0x50, 0x00, 0x62, 0x96, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x42, 0x30, 0x0b, 0x00, 0x40, 0x10, 0x23, 0x10, 0x32, 0x02, 0x16, - 0x00, 0x63, 0x96, 0x00, 0x00, 0x00, 0x00, 0x24, 0x10, 0x43, 0x00, 0x1a, 0x00, - 0x63, 0x96, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x43, 0x00, 0x03, 0x00, 0x40, - 0x10, 0x00, 0x00, 0x00, 0x00, 0xd7, 0x1c, 0x00, 0x0c, 0x21, 0x20, 0x60, 0x02, - 0x4e, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x40, 0x10, 0x40, - 0x10, 0x15, 0x00, 0x1a, 0x00, 0x32, 0x12, 0x23, 0x18, 0x32, 0x02, 0x16, 0x00, - 0x62, 0x96, 0x00, 0x00, 0x00, 0x00, 0x24, 0x18, 0x62, 0x00, 0x42, 0x10, 0x02, - 0x00, 0x2a, 0x10, 0x43, 0x00, 0x0f, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0xc2, 0x03, 0x22, - 0x00, 0x03, 0x96, 0xff, 0xff, 0x42, 0x30, 0x2b, 0x10, 0x43, 0x00, 0x07, 0x00, - 0x40, 0x10, 0x40, 0x10, 0x15, 0x00, 0xa0, 0x93, 0x87, 0x27, 0x21, 0x10, 0x47, - 0x00, 0x00, 0x00, 0x42, 0x94, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x22, 0x16, - 0x40, 0x10, 0x15, 0x00, 0x4e, 0x00, 0x00, 0xa2, 0x08, 0x00, 0x94, 0x36, 0x20, - 0x00, 0x1e, 0xa6, 0x40, 0x10, 0x15, 0x00, 0xa0, 0x93, 0x87, 0x27, 0x21, 0x10, - 0x47, 0x00, 0x00, 0x00, 0x51, 0xa4, 0xb0, 0x91, 0x84, 0x8f, 0xc6, 0x11, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x30, 0x40, 0x00, 0x54, 0x00, 0x03, 0x92, - 0x57, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x26, 0x18, 0x62, 0x00, 0x56, - 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x24, 0x18, 0x62, 0x00, 0x58, 0x00, - 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x25, 0x10, 0x43, 0x00, 0x02, 0x00, 0x40, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x94, 0x36, 0x2b, 0x00, 0x80, 0x12, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x02, 0x3c, 0x18, 0x0d, 0x42, 0x94, 0x00, - 0x00, 0x00, 0x00, 0xfc, 0x03, 0x51, 0x30, 0x00, 0xa3, 0x02, 0x3c, 0x1a, 0x0d, - 0x42, 0x94, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x52, 0x30, 0x00, 0xa3, 0x02, - 0x3c, 0x00, 0x08, 0x42, 0x34, 0x25, 0x28, 0x22, 0x02, 0x04, 0x00, 0x31, 0x26, - 0xfc, 0x03, 0x31, 0x32, 0x06, 0x00, 0x32, 0x16, 0x00, 0x00, 0x00, 0x00, 0x4f, - 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x25, 0x10, 0x54, 0x00, 0xf7, 0x14, - 0x00, 0x08, 0x4f, 0x00, 0x02, 0xa2, 0x00, 0x00, 0xb5, 0xa0, 0x01, 0x00, 0xb4, - 0xa0, 0x57, 0x00, 0x03, 0x92, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x63, 0x30, - 0x03, 0x00, 0xa3, 0xa0, 0x54, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0xff, - 0x00, 0x42, 0x30, 0x58, 0x00, 0x04, 0x92, 0x26, 0x10, 0x43, 0x00, 0x25, 0x10, - 0x44, 0x00, 0x26, 0x18, 0x62, 0x00, 0x58, 0x00, 0x00, 0xa2, 0x4f, 0x00, 0x00, - 0xa2, 0x02, 0x00, 0xa3, 0xa0, 0x02, 0x00, 0xa2, 0x90, 0x00, 0x00, 0x00, 0x00, - 0x57, 0x00, 0x02, 0xa2, 0x00, 0xa3, 0x01, 0x3c, 0xf7, 0x14, 0x00, 0x08, 0x18, - 0x0d, 0x31, 0xa4, 0x54, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x57, 0x00, - 0x02, 0xa2, 0xcf, 0x11, 0x00, 0x0c, 0x21, 0x20, 0xc0, 0x00, 0x00, 0x00, 0xe2, - 0x96, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x30, 0x08, 0x00, 0x56, 0x10, - 0x00, 0x00, 0x00, 0x00, 0xb6, 0x13, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0xe3, 0x96, 0x00, 0x00, 0xe2, 0x96, 0x00, 0x00, 0x00, 0x00, 0xfa, 0xff, - 0x43, 0x14, 0xff, 0xff, 0x76, 0x30, 0x01, 0x00, 0xb5, 0x26, 0x94, 0x93, 0x82, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0xa2, 0x02, 0x2f, 0xff, 0x40, 0x14, - 0x80, 0x00, 0x73, 0x26, 0x00, 0xa3, 0x02, 0x3c, 0x04, 0x0e, 0x42, 0x94, 0x00, - 0x00, 0x00, 0x00, 0x25, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x92, - 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x24, 0xa0, 0x92, 0x82, - 0xaf, 0x1f, 0x00, 0x40, 0x1c, 0x00, 0xa3, 0x02, 0x3c, 0x18, 0x0d, 0x42, 0x34, - 0x00, 0x00, 0x43, 0x94, 0x02, 0x00, 0x42, 0x94, 0xff, 0xff, 0x63, 0x30, 0x15, - 0x00, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x91, 0x84, 0x8f, 0xc6, 0x11, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa1, 0x05, 0x3c, 0x00, 0x80, 0xa5, - 0x34, 0x90, 0x93, 0x84, 0x97, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x82, 0x34, - 0x00, 0x00, 0xa2, 0xa4, 0x00, 0xa3, 0x03, 0x3c, 0x06, 0x0e, 0x63, 0x34, 0x00, - 0x00, 0x62, 0x94, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, - 0x62, 0xa4, 0x00, 0x00, 0x62, 0x94, 0x00, 0x00, 0xa4, 0xa4, 0xc8, 0x94, 0x84, - 0x8f, 0xcf, 0x11, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x02, 0x3c, - 0x04, 0x0e, 0x42, 0x94, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x92, 0x82, 0xaf, 0x01, - 0x1a, 0x00, 0x0c, 0x0a, 0x00, 0x04, 0x24, 0x44, 0x00, 0xbf, 0x8f, 0x40, 0x00, - 0xbe, 0x8f, 0x3c, 0x00, 0xb7, 0x8f, 0x38, 0x00, 0xb6, 0x8f, 0x34, 0x00, 0xb5, - 0x8f, 0x30, 0x00, 0xb4, 0x8f, 0x2c, 0x00, 0xb3, 0x8f, 0x28, 0x00, 0xb2, 0x8f, - 0x24, 0x00, 0xb1, 0x8f, 0x20, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x48, - 0x00, 0xbd, 0x27, 0xc0, 0xff, 0xbd, 0x27, 0x38, 0x00, 0xbf, 0xaf, 0x34, 0x00, - 0xb7, 0xaf, 0x30, 0x00, 0xb6, 0xaf, 0x2c, 0x00, 0xb5, 0xaf, 0x28, 0x00, 0xb4, - 0xaf, 0x24, 0x00, 0xb3, 0xaf, 0x20, 0x00, 0xb2, 0xaf, 0x1c, 0x00, 0xb1, 0xaf, - 0x18, 0x00, 0xb0, 0xaf, 0x00, 0x83, 0x04, 0x3c, 0x00, 0x10, 0x84, 0x34, 0x00, - 0x83, 0x05, 0x3c, 0xa0, 0x17, 0x00, 0x0c, 0x00, 0x30, 0xa5, 0x34, 0x30, 0x92, - 0x80, 0xa3, 0x00, 0x83, 0x14, 0x3c, 0x00, 0x10, 0x94, 0x36, 0xd0, 0x92, 0x90, - 0x27, 0x21, 0x98, 0x00, 0x00, 0xff, 0xff, 0x17, 0x24, 0x04, 0x00, 0x16, 0x24, - 0x00, 0x80, 0x15, 0x3c, 0x80, 0x63, 0xb5, 0x26, 0x80, 0x13, 0x13, 0x00, 0x01, - 0xa1, 0x03, 0x3c, 0x21, 0x90, 0x43, 0x00, 0xff, 0x00, 0x02, 0x24, 0x00, 0x00, - 0x42, 0xa2, 0xf3, 0x01, 0x02, 0x24, 0xff, 0xff, 0x42, 0x24, 0xff, 0xff, 0x57, - 0x14, 0xff, 0xff, 0x42, 0x24, 0x00, 0x00, 0x42, 0x92, 0x00, 0x00, 0x00, 0x00, - 0x82, 0x88, 0x02, 0x00, 0xf6, 0xff, 0x22, 0x26, 0x02, 0x00, 0x42, 0x2c, 0x06, - 0x00, 0x40, 0x10, 0x01, 0xa1, 0x03, 0x3c, 0x08, 0x00, 0x63, 0x34, 0x00, 0x00, - 0x62, 0x90, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x94, 0x82, 0xa3, 0x00, 0x00, 0x62, - 0xa0, 0xff, 0xff, 0x23, 0x26, 0x1c, 0x00, 0x62, 0x2c, 0x88, 0x00, 0x40, 0x10, - 0x80, 0x10, 0x03, 0x00, 0x01, 0x80, 0x01, 0x3c, 0x21, 0x08, 0x22, 0x00, 0x88, - 0x89, 0x22, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x10, 0x00, 0x02, 0x24, 0x0d, 0x00, 0x22, 0x12, 0x00, 0x00, 0x14, - 0xae, 0x18, 0x00, 0x02, 0x24, 0x0a, 0x00, 0x22, 0x12, 0x14, 0x00, 0x02, 0x24, - 0x03, 0x00, 0x22, 0x12, 0x1c, 0x00, 0x02, 0x24, 0x04, 0x00, 0x22, 0x16, 0x10, - 0x00, 0x02, 0x24, 0x08, 0x00, 0x02, 0x24, 0x89, 0x15, 0x00, 0x08, 0x24, 0x00, - 0x02, 0xae, 0x89, 0x15, 0x00, 0x08, 0x24, 0x00, 0x02, 0xae, 0x24, 0x00, 0x16, - 0xae, 0x04, 0x00, 0x12, 0xae, 0x08, 0x00, 0x15, 0xae, 0x0c, 0x00, 0x15, 0xae, - 0x00, 0x80, 0x02, 0x3c, 0x10, 0x48, 0x42, 0x24, 0x10, 0x00, 0x02, 0xae, 0x14, - 0x00, 0x15, 0xae, 0x00, 0x80, 0x02, 0x3c, 0x3c, 0x7a, 0x42, 0x24, 0x18, 0x00, - 0x02, 0xae, 0x00, 0x80, 0x02, 0x3c, 0x6c, 0x7d, 0x42, 0x24, 0x1c, 0x00, 0x02, - 0xae, 0x00, 0x80, 0x02, 0x3c, 0xd0, 0x7b, 0x42, 0x24, 0xcd, 0x15, 0x00, 0x08, - 0x28, 0x00, 0x11, 0xae, 0x40, 0x20, 0x13, 0x00, 0x21, 0x20, 0x93, 0x00, 0xc0, - 0x20, 0x04, 0x00, 0x40, 0x92, 0x82, 0x27, 0x21, 0x20, 0x82, 0x00, 0x01, 0x00, - 0x05, 0x24, 0x01, 0x80, 0x06, 0x3c, 0x34, 0x83, 0xc6, 0x24, 0x9a, 0x19, 0x00, - 0x0c, 0x08, 0x00, 0x87, 0x26, 0xf9, 0xff, 0x22, 0x26, 0x02, 0x00, 0x42, 0x2c, - 0x07, 0x00, 0x40, 0x14, 0xf6, 0xff, 0x22, 0x26, 0x02, 0x00, 0x42, 0x2c, 0x04, - 0x00, 0x40, 0x14, 0xef, 0xff, 0x22, 0x26, 0x02, 0x00, 0x42, 0x2c, 0x03, 0x00, - 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x60, 0x1e, 0x00, 0x00, 0x00, - 0x00, 0x0a, 0x00, 0x36, 0x12, 0x00, 0x00, 0x14, 0xae, 0x07, 0x00, 0x02, 0x24, - 0x05, 0x00, 0x22, 0x12, 0x0a, 0x00, 0x02, 0x24, 0x03, 0x00, 0x22, 0x12, 0x11, - 0x00, 0x02, 0x24, 0x04, 0x00, 0x22, 0x16, 0x08, 0x00, 0x02, 0x24, 0xbd, 0x15, - 0x00, 0x08, 0x24, 0x00, 0x16, 0xae, 0x09, 0x00, 0x02, 0x24, 0x24, 0x00, 0x02, - 0xae, 0x04, 0x00, 0x12, 0xae, 0x08, 0x00, 0x15, 0xae, 0x0c, 0x00, 0x15, 0xae, - 0x00, 0x80, 0x02, 0x3c, 0xc4, 0x4b, 0x42, 0x24, 0x10, 0x00, 0x02, 0xae, 0x14, - 0x00, 0x15, 0xae, 0x01, 0x80, 0x02, 0x3c, 0xa4, 0x83, 0x42, 0x24, 0x18, 0x00, - 0x02, 0xae, 0x01, 0x80, 0x02, 0x3c, 0x94, 0x87, 0x42, 0x24, 0x1c, 0x00, 0x02, - 0xae, 0x28, 0x00, 0x11, 0xae, 0x01, 0x80, 0x02, 0x3c, 0x18, 0x86, 0x42, 0x24, - 0x2c, 0x00, 0x02, 0xae, 0x01, 0x00, 0x03, 0x24, 0x04, 0x18, 0x63, 0x02, 0x30, - 0x92, 0x82, 0x93, 0x00, 0x00, 0x00, 0x00, 0x25, 0x10, 0x43, 0x00, 0x30, 0x92, - 0x82, 0xa3, 0x02, 0x00, 0x02, 0x24, 0x0c, 0x00, 0x42, 0xa2, 0x24, 0x00, 0x03, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x11, 0x03, 0x00, 0x21, 0xa0, 0x82, 0x02, - 0x94, 0x93, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x43, 0x00, 0x94, - 0x93, 0x82, 0xaf, 0x41, 0x00, 0x42, 0x28, 0x04, 0x00, 0x40, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x48, 0x89, 0x84, 0x27, 0x24, 0x0c, 0x00, 0x0c, 0x86, 0x03, 0x05, - 0x24, 0x00, 0x00, 0x11, 0x8e, 0x24, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x40, 0x18, 0x21, 0x90, 0x00, 0x00, 0x24, 0x00, 0x20, 0xae, 0x1c, - 0x00, 0x02, 0x8e, 0x21, 0x20, 0x20, 0x02, 0x21, 0x28, 0x00, 0x02, 0x09, 0xf8, - 0x40, 0x00, 0x21, 0x30, 0x40, 0x02, 0x01, 0x00, 0x52, 0x26, 0x24, 0x00, 0x02, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x42, 0x02, 0xf5, 0xff, 0x40, 0x14, - 0x80, 0x00, 0x31, 0x26, 0xc0, 0x94, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x42, 0x24, 0xc0, 0x94, 0x82, 0xaf, 0x30, 0x00, 0x10, 0x26, 0x01, 0x00, - 0x73, 0x26, 0x04, 0x00, 0x62, 0x2a, 0x5e, 0xff, 0x40, 0x14, 0x80, 0x13, 0x13, - 0x00, 0x94, 0x93, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x42, 0x24, - 0x42, 0x11, 0x02, 0x00, 0x00, 0x92, 0x82, 0xaf, 0x30, 0x92, 0x82, 0x93, 0x00, - 0x00, 0x00, 0x00, 0x18, 0x95, 0x82, 0xa3, 0x14, 0x17, 0x00, 0x0c, 0x00, 0xa3, - 0x10, 0x3c, 0x80, 0x01, 0x10, 0x36, 0x10, 0x00, 0x02, 0x8e, 0x00, 0xa0, 0x05, - 0x3c, 0x01, 0x80, 0x04, 0x3c, 0x20, 0xa4, 0x84, 0x24, 0xaa, 0x17, 0x00, 0x0c, - 0x21, 0x28, 0x45, 0x00, 0x21, 0x90, 0x40, 0x00, 0x20, 0x94, 0x84, 0x27, 0x01, - 0x00, 0x05, 0x24, 0x00, 0x80, 0x06, 0x3c, 0x44, 0x50, 0xc6, 0x24, 0x9a, 0x19, - 0x00, 0x0c, 0x21, 0x38, 0x00, 0x00, 0x20, 0x94, 0x84, 0x27, 0xb5, 0x19, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x94, 0x93, 0x82, 0x97, 0x00, 0xa3, 0x01, 0x3c, - 0x02, 0x0c, 0x22, 0xa4, 0x00, 0xa3, 0x01, 0x3c, 0x04, 0x0c, 0x20, 0xa4, 0x00, - 0xa3, 0x01, 0x3c, 0x06, 0x0c, 0x32, 0xa4, 0x10, 0x00, 0x02, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x82, 0x12, 0x02, 0x00, 0x00, 0xa3, 0x01, 0x3c, 0x08, 0x0c, 0x22, - 0xa4, 0x00, 0xa3, 0x03, 0x3c, 0x10, 0x0d, 0x63, 0x34, 0x00, 0x00, 0x60, 0xa4, - 0x02, 0x00, 0x60, 0xa4, 0x00, 0x04, 0x02, 0x24, 0x04, 0x00, 0x62, 0xa4, 0xfc, - 0x03, 0x04, 0x24, 0x06, 0x00, 0x64, 0xa4, 0x00, 0xa3, 0x02, 0x3c, 0x18, 0x0d, - 0x42, 0x34, 0x00, 0x00, 0x40, 0xa4, 0x02, 0x00, 0x40, 0xa4, 0x00, 0x08, 0x03, - 0x24, 0x04, 0x00, 0x43, 0xa4, 0x06, 0x00, 0x44, 0xa4, 0x38, 0x00, 0xbf, 0x8f, - 0x34, 0x00, 0xb7, 0x8f, 0x30, 0x00, 0xb6, 0x8f, 0x2c, 0x00, 0xb5, 0x8f, 0x28, - 0x00, 0xb4, 0x8f, 0x24, 0x00, 0xb3, 0x8f, 0x20, 0x00, 0xb2, 0x8f, 0x1c, 0x00, - 0xb1, 0x8f, 0x18, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x40, 0x00, 0xbd, - 0x27, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x24, 0xd4, 0x94, 0x82, 0xaf, - 0x01, 0x08, 0x02, 0x24, 0xb4, 0x91, 0x82, 0xaf, 0xd8, 0x94, 0x82, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x08, 0x43, 0x34, 0xb0, 0x91, 0x83, 0xaf, 0x01, 0x0c, - 0x42, 0x34, 0xa0, 0x91, 0x82, 0xaf, 0xd0, 0x94, 0x83, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x25, 0x10, 0x43, 0x00, 0xa4, 0x91, 0x82, 0xaf, 0x00, 0x03, 0x43, 0x34, - 0xc8, 0x94, 0x83, 0xaf, 0xdc, 0x94, 0x82, 0xaf, 0x08, 0x00, 0xe0, 0x03, 0x00, - 0x00, 0x00, 0x00, 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x60, 0x89, - 0x84, 0x27, 0x24, 0x0c, 0x00, 0x0c, 0x5d, 0x00, 0x05, 0x24, 0x10, 0x00, 0xbf, - 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, - 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x60, 0x89, 0x84, 0x27, 0x24, - 0x0c, 0x00, 0x0c, 0x68, 0x00, 0x05, 0x24, 0x10, 0x00, 0xbf, 0x8f, 0x18, 0x00, - 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xff, 0xbd, - 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x24, 0x22, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x80, 0x02, 0x3c, 0xc8, 0x34, 0x42, 0x24, 0x82, 0x10, 0x02, 0x00, 0xff, - 0x03, 0x04, 0x3c, 0xff, 0xff, 0x84, 0x34, 0x24, 0x10, 0x44, 0x00, 0x00, 0x08, - 0x03, 0x3c, 0x25, 0x10, 0x43, 0x00, 0x00, 0x80, 0x01, 0x3c, 0x00, 0x00, 0x22, - 0xac, 0x00, 0x80, 0x01, 0x3c, 0x04, 0x00, 0x20, 0xac, 0x00, 0x80, 0x02, 0x3c, - 0xe0, 0x32, 0x42, 0x24, 0x82, 0x10, 0x02, 0x00, 0x24, 0x10, 0x44, 0x00, 0x25, - 0x10, 0x43, 0x00, 0x00, 0x80, 0x01, 0x3c, 0x80, 0x00, 0x22, 0xac, 0x00, 0x80, - 0x01, 0x3c, 0x84, 0x00, 0x20, 0xac, 0x00, 0x80, 0x04, 0x3c, 0x00, 0x30, 0x84, - 0x24, 0x01, 0x80, 0x05, 0x3c, 0xc4, 0x16, 0x00, 0x0c, 0x50, 0x94, 0xa5, 0x24, - 0xff, 0xff, 0x03, 0x24, 0x04, 0x00, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0x60, - 0x89, 0x84, 0x27, 0x24, 0x0c, 0x00, 0x0c, 0x88, 0x00, 0x05, 0x24, 0xd4, 0x1a, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa1, 0x02, 0x3c, 0x00, 0x80, 0x42, - 0x34, 0x80, 0x00, 0x03, 0x24, 0x90, 0x93, 0x83, 0xaf, 0x80, 0x00, 0x03, 0x24, - 0x00, 0x00, 0x43, 0xa4, 0x21, 0x18, 0x00, 0x00, 0x01, 0x00, 0x63, 0x24, 0x64, - 0x00, 0x62, 0x28, 0xfe, 0xff, 0x40, 0x14, 0x01, 0x00, 0x63, 0x24, 0x00, 0xa1, - 0x03, 0x3c, 0x00, 0x80, 0x63, 0x34, 0x82, 0x00, 0x02, 0x24, 0x90, 0x93, 0x82, - 0xaf, 0x82, 0x00, 0x02, 0x24, 0x00, 0x00, 0x62, 0xa4, 0x00, 0xa3, 0x02, 0x3c, - 0x30, 0x0c, 0x42, 0x34, 0x00, 0x00, 0x40, 0xa0, 0xe4, 0x11, 0x00, 0x0c, 0x00, - 0x03, 0x04, 0x24, 0x40, 0x16, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x84, 0x19, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x19, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x42, 0x15, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x40, 0x16, 0x00, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0xe0, 0x94, 0x84, 0x27, 0x21, 0x28, 0x00, 0x00, 0x00, - 0x80, 0x06, 0x3c, 0xdc, 0x62, 0xc6, 0x24, 0x9a, 0x19, 0x00, 0x0c, 0x21, 0x38, - 0x00, 0x00, 0xe0, 0x94, 0x84, 0x27, 0xb5, 0x19, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x4f, 0x00, 0x02, 0x24, 0x00, 0xa3, 0x01, 0x3c, 0x20, 0x0d, 0x22, 0xa0, - 0x00, 0xa3, 0x01, 0x3c, 0x00, 0x0c, 0x22, 0xa0, 0x53, 0x00, 0x02, 0x24, 0x00, - 0xa3, 0x01, 0x3c, 0x21, 0x0d, 0x22, 0xa0, 0x00, 0xa3, 0x01, 0x3c, 0x32, 0x1a, - 0x00, 0x0c, 0x01, 0x0c, 0x22, 0xa0, 0x10, 0x00, 0xbf, 0x8f, 0x21, 0x10, 0x00, - 0x00, 0x08, 0x00, 0xe0, 0x03, 0x18, 0x00, 0xbd, 0x27, 0x00, 0x00, 0x00, 0x00, - 0x2b, 0x10, 0x85, 0x00, 0x0a, 0x00, 0x40, 0x10, 0x21, 0x18, 0x00, 0x00, 0x00, - 0x00, 0x82, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x62, 0x00, 0x04, 0x00, - 0x84, 0x24, 0x2b, 0x18, 0x43, 0x00, 0x21, 0x18, 0x43, 0x00, 0x2b, 0x10, 0x85, - 0x00, 0xf8, 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xe0, 0x03, - 0x21, 0x10, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, - 0xff, 0xbd, 0x27, 0x1c, 0x00, 0xbf, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, - 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x88, 0x00, 0x00, 0x21, 0x80, 0x00, - 0x00, 0x01, 0xa1, 0x05, 0x3c, 0xff, 0x00, 0x04, 0x24, 0x01, 0x00, 0x03, 0x24, - 0x80, 0x13, 0x10, 0x00, 0x21, 0x10, 0x45, 0x00, 0x00, 0x00, 0x42, 0x90, 0x00, - 0x00, 0x00, 0x00, 0xff, 0x00, 0x42, 0x30, 0x02, 0x00, 0x44, 0x10, 0x04, 0x10, - 0x03, 0x02, 0x25, 0x88, 0x22, 0x02, 0x01, 0x00, 0x10, 0x26, 0x04, 0x00, 0x02, - 0x2a, 0xf6, 0xff, 0x40, 0x14, 0x80, 0x13, 0x10, 0x00, 0x18, 0x95, 0x82, 0x93, - 0x00, 0x00, 0x00, 0x00, 0x26, 0x10, 0x22, 0x02, 0x30, 0x92, 0x83, 0x93, 0x00, - 0x00, 0x00, 0x00, 0x24, 0x10, 0x43, 0x00, 0x17, 0x00, 0x40, 0x10, 0x21, 0x18, - 0x40, 0x00, 0x21, 0x80, 0x00, 0x00, 0xff, 0x00, 0x72, 0x30, 0x07, 0x10, 0x12, - 0x02, 0x01, 0x00, 0x42, 0x30, 0x0d, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x95, 0x82, 0x93, 0x00, 0x00, 0x00, 0x00, 0x07, 0x10, 0x02, 0x02, 0x01, - 0x00, 0x42, 0x30, 0x05, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6f, 0x17, - 0x00, 0x0c, 0x21, 0x20, 0x00, 0x02, 0x05, 0x17, 0x00, 0x08, 0x01, 0x00, 0x10, - 0x26, 0x30, 0x17, 0x00, 0x0c, 0x21, 0x20, 0x00, 0x02, 0x01, 0x00, 0x10, 0x26, - 0x04, 0x00, 0x02, 0x2a, 0xee, 0xff, 0x40, 0x14, 0x07, 0x10, 0x12, 0x02, 0x30, - 0x92, 0x82, 0x93, 0x00, 0x00, 0x00, 0x00, 0x24, 0x10, 0x22, 0x02, 0x18, 0x95, - 0x82, 0xa3, 0x01, 0x1a, 0x00, 0x0c, 0xfa, 0x00, 0x04, 0x24, 0x1c, 0x00, 0xbf, - 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, - 0x08, 0x00, 0xe0, 0x03, 0x20, 0x00, 0xbd, 0x27, 0xe8, 0xff, 0xbd, 0x27, 0x14, - 0x00, 0xbf, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x80, 0x00, 0x00, 0x30, 0x92, - 0x82, 0x93, 0x00, 0x00, 0x00, 0x00, 0x07, 0x10, 0x02, 0x02, 0x01, 0x00, 0x42, - 0x30, 0x03, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x30, 0x17, 0x00, 0x0c, - 0x21, 0x20, 0x00, 0x02, 0x01, 0x00, 0x10, 0x26, 0x04, 0x00, 0x02, 0x2a, 0xf5, - 0xff, 0x40, 0x14, 0x02, 0x00, 0x05, 0x24, 0x00, 0x95, 0x84, 0x27, 0x00, 0x80, - 0x06, 0x3c, 0x50, 0x5b, 0xc6, 0x24, 0x9a, 0x19, 0x00, 0x0c, 0x21, 0x38, 0x00, - 0x00, 0x00, 0x95, 0x84, 0x27, 0xb5, 0x19, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x14, 0x00, 0xbf, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x18, - 0x00, 0xbd, 0x27, 0xc8, 0xff, 0xbd, 0x27, 0x30, 0x00, 0xbf, 0xaf, 0x2c, 0x00, - 0xb5, 0xaf, 0x28, 0x00, 0xb4, 0xaf, 0x24, 0x00, 0xb3, 0xaf, 0x20, 0x00, 0xb2, - 0xaf, 0x1c, 0x00, 0xb1, 0xaf, 0x18, 0x00, 0xb0, 0xaf, 0x40, 0x10, 0x04, 0x00, - 0x21, 0x10, 0x44, 0x00, 0x00, 0x11, 0x02, 0x00, 0xd0, 0x92, 0x83, 0x27, 0x21, - 0x88, 0x43, 0x00, 0x00, 0x00, 0x30, 0x8e, 0x24, 0x00, 0x22, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x25, 0x00, 0x40, 0x10, 0x21, 0x90, 0x00, 0x00, 0x04, 0x00, 0x15, - 0x24, 0x08, 0x00, 0x14, 0x24, 0xb0, 0x91, 0x84, 0x8f, 0xc6, 0x11, 0x00, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0x21, 0x98, 0x40, 0x00, 0x28, 0x00, 0x22, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x0a, 0x00, 0x55, 0x14, 0x40, 0x11, 0x12, 0x00, 0x48, 0x00, - 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x54, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x59, 0x17, 0x00, 0x08, - 0x00, 0x08, 0x42, 0x24, 0x40, 0x11, 0x12, 0x00, 0x00, 0x01, 0x42, 0x24, 0x04, - 0x00, 0x23, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x43, 0x00, 0x24, 0x00, - 0x02, 0xae, 0x2c, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x09, 0xf8, 0x40, - 0x00, 0x21, 0x20, 0x00, 0x02, 0xcf, 0x11, 0x00, 0x0c, 0x21, 0x20, 0x60, 0x02, - 0x01, 0x00, 0x52, 0x26, 0x24, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2b, - 0x10, 0x42, 0x02, 0xdf, 0xff, 0x40, 0x14, 0x80, 0x00, 0x10, 0x26, 0x30, 0x00, - 0xbf, 0x8f, 0x2c, 0x00, 0xb5, 0x8f, 0x28, 0x00, 0xb4, 0x8f, 0x24, 0x00, 0xb3, - 0x8f, 0x20, 0x00, 0xb2, 0x8f, 0x1c, 0x00, 0xb1, 0x8f, 0x18, 0x00, 0xb0, 0x8f, - 0x08, 0x00, 0xe0, 0x03, 0x38, 0x00, 0xbd, 0x27, 0xd0, 0xff, 0xbd, 0x27, 0x28, - 0x00, 0xbf, 0xaf, 0x24, 0x00, 0xb3, 0xaf, 0x20, 0x00, 0xb2, 0xaf, 0x1c, 0x00, - 0xb1, 0xaf, 0x18, 0x00, 0xb0, 0xaf, 0x00, 0xa3, 0x05, 0x3c, 0x21, 0x0c, 0xa5, - 0x34, 0x01, 0x00, 0x03, 0x24, 0x04, 0x18, 0x83, 0x00, 0x00, 0x00, 0xa2, 0x90, - 0x00, 0x00, 0x00, 0x00, 0x25, 0x10, 0x43, 0x00, 0x00, 0x00, 0xa2, 0xa0, 0x40, - 0x10, 0x04, 0x00, 0x21, 0x10, 0x44, 0x00, 0x00, 0x11, 0x02, 0x00, 0xd0, 0x92, - 0x83, 0x27, 0x21, 0x90, 0x43, 0x00, 0x00, 0x00, 0x50, 0x8e, 0x24, 0x00, 0x42, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x40, 0x10, 0x21, 0x88, 0x00, 0x00, - 0x00, 0x20, 0x13, 0x3c, 0xb0, 0x91, 0x84, 0x8f, 0xc6, 0x11, 0x00, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0xae, 0x25, 0x18, 0x13, 0x02, 0x54, 0x00, - 0x60, 0xa0, 0x58, 0x00, 0x60, 0xa0, 0xcf, 0x11, 0x00, 0x0c, 0x21, 0x20, 0x40, - 0x00, 0x01, 0x00, 0x31, 0x26, 0x24, 0x00, 0x42, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x2b, 0x10, 0x22, 0x02, 0xf2, 0xff, 0x40, 0x14, 0x80, 0x00, 0x10, 0x26, 0x28, - 0x00, 0xbf, 0x8f, 0x24, 0x00, 0xb3, 0x8f, 0x20, 0x00, 0xb2, 0x8f, 0x1c, 0x00, - 0xb1, 0x8f, 0x18, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x30, 0x00, 0xbd, - 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0x85, 0x00, - 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xac, 0x04, - 0x00, 0x84, 0x24, 0x2b, 0x10, 0x85, 0x00, 0xfc, 0xff, 0x40, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xff, 0xbd, - 0x27, 0x5c, 0x00, 0xbf, 0xaf, 0x58, 0x00, 0xbe, 0xaf, 0x54, 0x00, 0xb7, 0xaf, - 0x50, 0x00, 0xb6, 0xaf, 0x4c, 0x00, 0xb5, 0xaf, 0x48, 0x00, 0xb4, 0xaf, 0x44, - 0x00, 0xb3, 0xaf, 0x40, 0x00, 0xb2, 0xaf, 0x3c, 0x00, 0xb1, 0xaf, 0x38, 0x00, - 0xb0, 0xaf, 0xff, 0x00, 0x9e, 0x24, 0xff, 0x1f, 0x03, 0x3c, 0x00, 0xff, 0x63, - 0x34, 0x24, 0xf0, 0xc3, 0x03, 0x00, 0xa3, 0x02, 0x3c, 0x25, 0xf0, 0xc2, 0x03, - 0x24, 0xb8, 0xa3, 0x00, 0x25, 0xb8, 0xe2, 0x02, 0x21, 0x20, 0xc0, 0x03, 0xa0, - 0x17, 0x00, 0x0c, 0x21, 0x28, 0xe0, 0x02, 0x18, 0x00, 0xa0, 0xaf, 0x01, 0x80, - 0x11, 0x3c, 0x60, 0x9d, 0x31, 0x26, 0xc0, 0x00, 0x22, 0x26, 0x17, 0x00, 0x22, - 0x12, 0x10, 0x00, 0xa0, 0xaf, 0x04, 0x00, 0x04, 0x24, 0x01, 0x80, 0x03, 0x3c, - 0x20, 0x9e, 0x63, 0x24, 0x28, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x06, - 0x00, 0x44, 0x10, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x22, 0x8e, 0x10, 0x00, - 0xa6, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xd9, 0x17, 0x00, 0x08, 0x21, 0x30, 0xc2, - 0x00, 0x18, 0x00, 0xa6, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xc6, 0x24, - 0x18, 0x00, 0xa6, 0xaf, 0x10, 0x00, 0xa6, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0xc6, 0x24, 0x30, 0x00, 0x31, 0x26, 0xee, 0xff, 0x23, 0x16, 0x10, 0x00, - 0xa6, 0xaf, 0x10, 0x00, 0x15, 0x24, 0x18, 0x00, 0xa6, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x03, 0x00, 0xc0, 0x18, 0x00, 0x10, 0xa2, 0x2a, 0x03, 0x00, 0x40, 0x14, - 0x00, 0xe0, 0x02, 0x24, 0x40, 0x10, 0x15, 0x00, 0x23, 0x10, 0x02, 0x00, 0x24, - 0x98, 0xe2, 0x02, 0x00, 0x10, 0xa2, 0x2a, 0x02, 0x00, 0x40, 0x14, 0x00, 0x10, - 0x12, 0x24, 0x21, 0x90, 0xa0, 0x02, 0x23, 0x18, 0x7e, 0x02, 0x10, 0x00, 0xa6, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x06, 0x00, 0x18, 0x00, 0xa2, 0x02, - 0x12, 0x30, 0x00, 0x00, 0x23, 0x18, 0x66, 0x00, 0x18, 0x00, 0xa6, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x18, 0x00, 0x46, 0x02, 0x12, 0x30, 0x00, 0x00, 0x23, 0xa0, - 0x66, 0x00, 0x2a, 0x10, 0x95, 0x02, 0x08, 0x00, 0x40, 0x10, 0x11, 0x00, 0xa2, - 0x2a, 0xb0, 0x00, 0x40, 0x10, 0x23, 0x10, 0xfe, 0x02, 0x70, 0x89, 0x84, 0x27, - 0x24, 0x0c, 0x00, 0x0c, 0xae, 0x00, 0x05, 0x24, 0xaa, 0x18, 0x00, 0x08, 0x23, - 0x10, 0xfe, 0x02, 0x01, 0x80, 0x11, 0x3c, 0x60, 0x9d, 0x31, 0x26, 0x01, 0x80, - 0x06, 0x3c, 0x20, 0x9e, 0xc6, 0x24, 0x34, 0x00, 0x26, 0x12, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x56, 0x26, 0x21, 0x30, 0xd2, 0x02, 0x20, 0x00, 0xa6, 0xaf, - 0x28, 0x00, 0x22, 0x8e, 0x04, 0x00, 0x06, 0x24, 0x26, 0x00, 0x46, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x50, 0x24, 0x2a, 0x10, 0x92, 0x02, 0x05, 0x00, 0x40, 0x14, 0x0e, 0x00, 0x16, - 0xa6, 0x20, 0x00, 0xa6, 0x97, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x06, 0xa6, - 0x23, 0xa0, 0x92, 0x02, 0x0e, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x42, 0x24, 0x23, 0x98, 0x62, 0x02, 0x02, 0x11, 0x13, 0x00, 0x08, 0x00, - 0x02, 0xa6, 0x2b, 0x10, 0x7e, 0x02, 0x07, 0x00, 0x40, 0x14, 0x3c, 0x00, 0x13, - 0xae, 0x0e, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x53, 0x00, - 0x2b, 0x10, 0x57, 0x00, 0x04, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x70, - 0x89, 0x84, 0x27, 0x24, 0x0c, 0x00, 0x0c, 0xcb, 0x00, 0x05, 0x24, 0x0e, 0x00, - 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x02, 0xa6, 0x08, 0x00, 0x02, - 0x96, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x02, 0xa6, 0x3c, 0x00, 0x02, 0x8e, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x02, 0xae, 0x30, 0x00, 0x31, 0x26, 0x01, - 0x80, 0x06, 0x3c, 0x20, 0x9e, 0xc6, 0x24, 0xd3, 0xff, 0x26, 0x16, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x80, 0x11, 0x3c, 0x60, 0x9d, 0x31, 0x26, 0x30, 0x00, 0x26, - 0x12, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xb6, 0x26, 0x21, 0x30, 0xd5, 0x02, - 0x28, 0x00, 0xa6, 0xaf, 0x28, 0x00, 0x22, 0x8e, 0x04, 0x00, 0x06, 0x24, 0x02, - 0x00, 0x46, 0x10, 0x08, 0x00, 0x12, 0x24, 0x24, 0x00, 0x32, 0x8e, 0x00, 0x00, - 0x30, 0x8e, 0x20, 0x00, 0x40, 0x12, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x10, 0x95, - 0x02, 0x05, 0x00, 0x40, 0x14, 0x16, 0x00, 0x16, 0xa6, 0x28, 0x00, 0xa6, 0x97, - 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x06, 0xa6, 0x23, 0xa0, 0x95, 0x02, 0x16, - 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x23, 0x98, - 0x62, 0x02, 0x38, 0x00, 0x13, 0xae, 0x02, 0x11, 0x13, 0x00, 0x10, 0x00, 0x02, - 0xa6, 0x38, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0x7e, 0x00, - 0x07, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x02, 0x96, 0x00, - 0x00, 0x00, 0x00, 0x21, 0x10, 0x43, 0x00, 0x2b, 0x10, 0x57, 0x00, 0x04, 0x00, - 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x70, 0x89, 0x84, 0x27, 0x24, 0x0c, 0x00, - 0x0c, 0x00, 0x01, 0x05, 0x24, 0xff, 0xff, 0x52, 0x26, 0xe2, 0xff, 0x40, 0x16, - 0x80, 0x00, 0x10, 0x26, 0x30, 0x00, 0x31, 0x26, 0x01, 0x80, 0x06, 0x3c, 0x20, - 0x9e, 0xc6, 0x24, 0xd5, 0xff, 0x26, 0x16, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, - 0x11, 0x3c, 0x60, 0x9d, 0x31, 0x26, 0x01, 0x80, 0x06, 0x3c, 0x20, 0x9e, 0xc6, - 0x24, 0x37, 0x00, 0x26, 0x12, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xb6, 0x26, - 0x21, 0x30, 0xd5, 0x02, 0x30, 0x00, 0xa6, 0xaf, 0x28, 0x00, 0x22, 0x8e, 0x04, - 0x00, 0x06, 0x24, 0x02, 0x00, 0x46, 0x10, 0x08, 0x00, 0x12, 0x24, 0x24, 0x00, - 0x32, 0x8e, 0x00, 0x00, 0x30, 0x8e, 0x27, 0x00, 0x40, 0x12, 0x00, 0x00, 0x00, - 0x00, 0x2a, 0x10, 0x95, 0x02, 0x05, 0x00, 0x40, 0x14, 0x0e, 0x00, 0x16, 0xa6, - 0x30, 0x00, 0xa6, 0x97, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x06, 0xa6, 0x23, - 0xa0, 0x95, 0x02, 0x0e, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x42, 0x24, 0x23, 0x98, 0x62, 0x02, 0x02, 0x11, 0x13, 0x00, 0x08, 0x00, 0x02, - 0xa6, 0x3c, 0x00, 0x13, 0xae, 0x38, 0x00, 0x02, 0x8e, 0xff, 0x1f, 0x06, 0x3c, - 0xff, 0xff, 0xc6, 0x34, 0x24, 0x10, 0x46, 0x00, 0x00, 0x80, 0x06, 0x3c, 0x25, - 0x10, 0x46, 0x00, 0x38, 0x00, 0x02, 0xae, 0x3c, 0x00, 0x03, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x2b, 0x10, 0x7e, 0x00, 0x07, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x0e, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x43, 0x00, - 0x2b, 0x10, 0x57, 0x00, 0x04, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x70, - 0x89, 0x84, 0x27, 0x24, 0x0c, 0x00, 0x0c, 0x2c, 0x01, 0x05, 0x24, 0xff, 0xff, - 0x52, 0x26, 0xdb, 0xff, 0x40, 0x16, 0x80, 0x00, 0x10, 0x26, 0x30, 0x00, 0x31, - 0x26, 0x01, 0x80, 0x06, 0x3c, 0x20, 0x9e, 0xc6, 0x24, 0xce, 0xff, 0x26, 0x16, - 0x00, 0x00, 0x00, 0x00, 0x40, 0xa8, 0x15, 0x00, 0x01, 0x40, 0xa2, 0x2a, 0x34, - 0xff, 0x40, 0x14, 0x23, 0x10, 0xfe, 0x02, 0x82, 0x12, 0x02, 0x00, 0x5c, 0x00, - 0xbf, 0x8f, 0x58, 0x00, 0xbe, 0x8f, 0x54, 0x00, 0xb7, 0x8f, 0x50, 0x00, 0xb6, - 0x8f, 0x4c, 0x00, 0xb5, 0x8f, 0x48, 0x00, 0xb4, 0x8f, 0x44, 0x00, 0xb3, 0x8f, - 0x40, 0x00, 0xb2, 0x8f, 0x3c, 0x00, 0xb1, 0x8f, 0x38, 0x00, 0xb0, 0x8f, 0x08, - 0x00, 0xe0, 0x03, 0x60, 0x00, 0xbd, 0x27, 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, - 0xbf, 0xaf, 0xc8, 0x94, 0x84, 0x8f, 0xcf, 0x11, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x1a, 0x00, 0x0c, 0x32, 0x00, 0x04, 0x24, 0x20, 0x95, 0x83, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x24, 0x95, 0x83, 0xaf, 0x28, 0x95, 0x82, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x2b, 0x10, 0x43, 0x00, 0x02, 0x00, 0x40, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x28, 0x95, 0x83, 0xaf, 0x20, 0x95, 0x82, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x82, 0x18, 0x02, 0x00, 0x23, 0x10, 0x43, 0x00, 0x20, 0x95, 0x82, 0xaf, - 0x28, 0x95, 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x60, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x24, 0x95, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, - 0x02, 0x00, 0x1b, 0x00, 0x43, 0x00, 0x02, 0x00, 0x60, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x0d, 0x00, 0x07, 0x00, 0x12, 0x10, 0x00, 0x00, 0x00, 0xa3, 0x01, 0x3c, - 0x08, 0x00, 0x22, 0xa4, 0x10, 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, - 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x21, 0x10, 0x00, 0x00, 0x00, 0x83, 0x08, - 0x3c, 0x00, 0x10, 0x08, 0x35, 0x21, 0x38, 0x00, 0x00, 0x10, 0x92, 0x89, 0x27, - 0x80, 0x10, 0x07, 0x00, 0xec, 0x18, 0x00, 0x08, 0x21, 0x30, 0x49, 0x00, 0x07, - 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0x30, 0x60, 0x00, 0x00, 0x00, - 0xc3, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0x68, 0x00, 0xf9, 0xff, 0x40, - 0x10, 0x2b, 0x10, 0x64, 0x00, 0x07, 0x00, 0x64, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x17, 0x00, 0xa7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0xfd, 0x18, 0x00, 0x08, 0x00, 0x00, 0xc2, 0xac, 0x01, 0x00, - 0xe7, 0x24, 0x07, 0x00, 0xe2, 0x28, 0xeb, 0xff, 0x40, 0x14, 0x80, 0x10, 0x07, - 0x00, 0x80, 0x10, 0x05, 0x00, 0x10, 0x92, 0x83, 0x27, 0x04, 0x19, 0x00, 0x08, - 0x21, 0x30, 0x43, 0x00, 0x07, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, - 0x30, 0x60, 0x00, 0x00, 0x00, 0xc3, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, - 0x68, 0x00, 0xf9, 0xff, 0x40, 0x10, 0x2b, 0x10, 0x64, 0x00, 0x00, 0x00, 0x83, - 0xac, 0x00, 0x00, 0xc4, 0xac, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x30, 0x95, 0x85, 0x27, 0x30, 0x95, 0x80, 0xaf, 0x00, 0x80, 0x02, 0x3c, 0x5c, - 0x35, 0x42, 0x24, 0x01, 0x80, 0x01, 0x3c, 0xc4, 0x9f, 0x22, 0xac, 0x01, 0x80, - 0x04, 0x3c, 0xc8, 0x9f, 0x84, 0x24, 0x01, 0x80, 0x01, 0x3c, 0xc8, 0x9f, 0x20, - 0xac, 0x00, 0x80, 0x02, 0x3c, 0x8c, 0x35, 0x42, 0x24, 0x01, 0x80, 0x01, 0x3c, - 0xcc, 0x9f, 0x22, 0xac, 0x01, 0x80, 0x03, 0x3c, 0xd0, 0x9f, 0x63, 0x24, 0x01, - 0x80, 0x01, 0x3c, 0xd0, 0x9f, 0x20, 0xac, 0x00, 0x80, 0x02, 0x3c, 0xbc, 0x35, - 0x42, 0x24, 0x01, 0x80, 0x01, 0x3c, 0xd4, 0x9f, 0x22, 0xac, 0x10, 0x92, 0x85, - 0xaf, 0x01, 0x80, 0x01, 0x3c, 0xa8, 0x9c, 0x24, 0xac, 0x01, 0x80, 0x01, 0x3c, - 0xa4, 0x9c, 0x24, 0xac, 0x01, 0x80, 0x01, 0x3c, 0xb8, 0x9c, 0x23, 0xac, 0x01, - 0x80, 0x01, 0x3c, 0xb4, 0x9c, 0x23, 0xac, 0x01, 0x80, 0x01, 0x3c, 0xb0, 0x9c, - 0x23, 0xac, 0x01, 0x80, 0x01, 0x3c, 0x08, 0x00, 0xe0, 0x03, 0xac, 0x9c, 0x23, - 0xac, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x00, 0xa3, 0x04, 0x3c, 0x30, - 0x0c, 0x84, 0x34, 0x00, 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x00, - 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, - 0x00, 0x3f, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x83, 0x8c, - 0xff, 0x3f, 0x02, 0x3c, 0xff, 0xff, 0x42, 0x34, 0x24, 0x18, 0x62, 0x00, 0x00, - 0x80, 0x02, 0x3c, 0x25, 0x18, 0x62, 0x00, 0x08, 0x00, 0x82, 0x94, 0x00, 0x00, - 0x00, 0x00, 0x81, 0x00, 0x42, 0x2c, 0x04, 0x00, 0x40, 0x14, 0x00, 0xa3, 0x02, - 0x3c, 0x80, 0x00, 0x02, 0x24, 0x08, 0x00, 0x82, 0xa4, 0x00, 0xa3, 0x02, 0x3c, - 0x30, 0x0c, 0x42, 0x34, 0x00, 0x00, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, 0xff, - 0x00, 0x44, 0x30, 0x02, 0x00, 0x02, 0x24, 0x0f, 0x00, 0x82, 0x10, 0x03, 0x00, - 0x82, 0x28, 0x05, 0x00, 0x40, 0x10, 0x01, 0x00, 0x02, 0x24, 0x08, 0x00, 0x82, - 0x10, 0x21, 0x28, 0x60, 0x00, 0x7e, 0x19, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x02, 0x24, 0x1b, 0x00, 0x82, 0x10, 0x00, 0xa3, 0x02, 0x3c, 0x7e, - 0x19, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x03, 0x3c, 0x65, 0x19, - 0x00, 0x08, 0x3a, 0x0c, 0x63, 0x34, 0x00, 0xa3, 0x05, 0x3c, 0x3a, 0x0c, 0xa5, - 0x34, 0x00, 0xa3, 0x02, 0x3c, 0x30, 0x0c, 0x42, 0x34, 0x08, 0x00, 0x42, 0x94, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x44, 0x30, 0xff, 0xff, 0x84, 0x24, 0x09, - 0x00, 0x80, 0x04, 0x00, 0xa3, 0x02, 0x3c, 0x00, 0x00, 0xa2, 0x90, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x62, 0xa0, 0x01, 0x00, 0xa5, 0x24, 0xff, 0xff, 0x84, - 0x24, 0xfa, 0xff, 0x81, 0x04, 0x01, 0x00, 0x63, 0x24, 0x00, 0xa3, 0x02, 0x3c, - 0x30, 0x0c, 0x42, 0x34, 0x7e, 0x19, 0x00, 0x08, 0x00, 0x00, 0x40, 0xa0, 0x30, - 0x0c, 0x42, 0x34, 0x00, 0x00, 0x40, 0xa0, 0x04, 0x00, 0x42, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x09, 0xf8, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xbf, - 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0x91, 0x82, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x24, 0x50, 0x95, 0x82, 0xaf, 0x21, 0x20, - 0x00, 0x00, 0xb0, 0x92, 0x83, 0x27, 0x00, 0x00, 0x63, 0xac, 0x04, 0x00, 0x63, - 0xac, 0x01, 0x00, 0x84, 0x24, 0x04, 0x00, 0x82, 0x28, 0xfb, 0xff, 0x40, 0x14, - 0x08, 0x00, 0x63, 0x24, 0x21, 0x20, 0x00, 0x00, 0x40, 0x94, 0x83, 0x27, 0x00, - 0x00, 0x63, 0xac, 0x04, 0x00, 0x63, 0xac, 0x01, 0x00, 0x84, 0x24, 0x10, 0x00, - 0x82, 0x28, 0xfb, 0xff, 0x40, 0x14, 0x08, 0x00, 0x63, 0x24, 0x08, 0x00, 0xe0, - 0x03, 0x00, 0x00, 0x00, 0x00, 0xd8, 0xff, 0xbd, 0x27, 0x20, 0x00, 0xbf, 0xaf, - 0x1c, 0x00, 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, - 0x00, 0xb0, 0xaf, 0x21, 0x80, 0x80, 0x00, 0x21, 0x88, 0xa0, 0x00, 0x21, 0x90, - 0xc0, 0x00, 0xdc, 0x94, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x11, 0x00, - 0x0c, 0x21, 0x98, 0xe0, 0x00, 0x00, 0x00, 0x10, 0xae, 0x04, 0x00, 0x10, 0xae, - 0x10, 0x00, 0x11, 0xae, 0x08, 0x00, 0x12, 0xae, 0x0c, 0x00, 0x13, 0xae, 0xcf, - 0x11, 0x00, 0x0c, 0x21, 0x20, 0x40, 0x00, 0x20, 0x00, 0xbf, 0x8f, 0x1c, 0x00, - 0xb3, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, - 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x28, 0x00, 0xbd, 0x27, 0xe8, 0xff, 0xbd, 0x27, - 0x14, 0x00, 0xbf, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x80, 0x80, 0x00, 0xdc, - 0x94, 0x84, 0x8f, 0xc6, 0x11, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xac, 0x91, - 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x03, 0xae, 0x04, 0x00, 0x04, - 0x8e, 0x00, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xac, - 0x04, 0x00, 0x64, 0xac, 0x10, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0xc0, - 0x18, 0x03, 0x00, 0xb0, 0x92, 0x84, 0x27, 0x21, 0x18, 0x64, 0x00, 0x04, 0x00, - 0x64, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xac, 0x04, 0x00, 0x04, - 0xae, 0x00, 0x00, 0x03, 0xae, 0x04, 0x00, 0x70, 0xac, 0xcf, 0x11, 0x00, 0x0c, - 0x21, 0x20, 0x40, 0x00, 0x14, 0x00, 0xbf, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, - 0x00, 0xe0, 0x03, 0x18, 0x00, 0xbd, 0x27, 0xe0, 0xff, 0xbd, 0x27, 0x18, 0x00, - 0xbf, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x80, 0x80, - 0x00, 0xdc, 0x94, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x11, 0x00, 0x0c, - 0x21, 0x88, 0xa0, 0x00, 0x21, 0x20, 0x40, 0x00, 0x04, 0x00, 0x03, 0x8e, 0x00, - 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0xac, 0x04, 0x00, - 0x43, 0xac, 0xac, 0x91, 0x85, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x23, 0x18, 0xb1, - 0x00, 0xff, 0x3f, 0x02, 0x3c, 0xff, 0xff, 0x42, 0x34, 0x2b, 0x10, 0x43, 0x00, - 0x06, 0x00, 0x40, 0x14, 0x0f, 0x00, 0x22, 0x32, 0x14, 0x00, 0x05, 0xae, 0x10, - 0x00, 0x02, 0x8e, 0xb0, 0x92, 0x83, 0x27, 0xf4, 0x19, 0x00, 0x08, 0xc0, 0x10, - 0x02, 0x00, 0x14, 0x00, 0x11, 0xae, 0xc0, 0x10, 0x02, 0x00, 0x40, 0x94, 0x83, - 0x27, 0x21, 0x18, 0x43, 0x00, 0x04, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x50, 0xac, 0x04, 0x00, 0x02, 0xae, 0x00, 0x00, 0x03, 0xae, 0xcf, - 0x11, 0x00, 0x0c, 0x04, 0x00, 0x70, 0xac, 0x18, 0x00, 0xbf, 0x8f, 0x14, 0x00, - 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x20, 0x00, 0xbd, - 0x27, 0xe8, 0xff, 0xbd, 0x27, 0x14, 0x00, 0xbf, 0xaf, 0x10, 0x00, 0xb0, 0xaf, - 0x54, 0x95, 0x90, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x21, 0x20, 0x82, 0x00, 0x14, 0x00, 0x04, 0xae, 0xdc, 0x94, - 0x84, 0x8f, 0xc6, 0x11, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, 0x40, - 0x00, 0x04, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x62, 0xac, 0x04, 0x00, 0x43, 0xac, 0xac, 0x91, 0x85, 0x8f, 0x14, - 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x23, 0x18, 0xa3, 0x00, 0xff, 0x3f, - 0x02, 0x3c, 0xff, 0xff, 0x42, 0x34, 0x2b, 0x10, 0x43, 0x00, 0x06, 0x00, 0x40, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x05, 0xae, 0x10, 0x00, 0x02, 0x8e, - 0xb0, 0x92, 0x83, 0x27, 0x26, 0x1a, 0x00, 0x08, 0xc0, 0x10, 0x02, 0x00, 0x14, - 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x42, 0x30, 0xc0, 0x10, - 0x02, 0x00, 0x40, 0x94, 0x83, 0x27, 0x21, 0x18, 0x43, 0x00, 0x04, 0x00, 0x62, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xac, 0x04, 0x00, 0x02, 0xae, - 0x00, 0x00, 0x03, 0xae, 0xcf, 0x11, 0x00, 0x0c, 0x04, 0x00, 0x70, 0xac, 0x14, - 0x00, 0xbf, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x18, 0x00, - 0xbd, 0x27, 0xd8, 0xff, 0xbd, 0x27, 0x24, 0x00, 0xbf, 0xaf, 0x20, 0x00, 0xb4, - 0xaf, 0x1c, 0x00, 0xb3, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb1, 0xaf, - 0x10, 0x00, 0xb0, 0xaf, 0xc8, 0x94, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xcf, - 0x11, 0x00, 0x0c, 0x00, 0xa3, 0x13, 0x3c, 0x10, 0x0d, 0x73, 0x36, 0x40, 0x94, - 0x94, 0x27, 0xff, 0x7f, 0x12, 0x3c, 0xff, 0xff, 0x52, 0x36, 0xb0, 0x92, 0x91, - 0x27, 0x00, 0x00, 0x62, 0x96, 0x02, 0x00, 0x63, 0x96, 0xff, 0xff, 0x42, 0x30, - 0x09, 0x00, 0x43, 0x10, 0x00, 0xa3, 0x10, 0x3c, 0x10, 0x0d, 0x10, 0x36, 0xb6, - 0x13, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x96, 0x02, 0x00, - 0x03, 0x96, 0xff, 0xff, 0x42, 0x30, 0xfa, 0xff, 0x43, 0x14, 0x00, 0x00, 0x00, - 0x00, 0xdc, 0x94, 0x84, 0x8f, 0xc6, 0x11, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x7a, 0x1a, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x50, 0x95, 0x82, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x50, 0x95, 0x82, 0xaf, 0x0f, 0x00, - 0x42, 0x30, 0xc0, 0x10, 0x02, 0x00, 0x21, 0x30, 0x54, 0x00, 0x00, 0x00, 0xc3, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x66, 0x10, 0x21, 0x28, 0xc0, 0x00, - 0x50, 0x95, 0x87, 0x8f, 0x14, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x23, - 0x10, 0xe2, 0x00, 0x2b, 0x10, 0x42, 0x02, 0x10, 0x00, 0x40, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa2, - 0xac, 0x04, 0x00, 0x45, 0xac, 0x10, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0xc0, 0x10, 0x02, 0x00, 0x21, 0x20, 0x51, 0x00, 0x04, 0x00, 0x82, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xac, 0x04, 0x00, 0x62, 0xac, 0x00, 0x00, - 0x64, 0xac, 0x76, 0x1a, 0x00, 0x08, 0x04, 0x00, 0x83, 0xac, 0x21, 0x28, 0x60, - 0x00, 0x00, 0x00, 0xa3, 0x8c, 0x00, 0x00, 0x00, 0x00, 0xe7, 0xff, 0x66, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x50, 0x95, 0x83, 0x8f, 0xac, 0x91, 0x82, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0xd6, 0xff, 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x92, - 0x84, 0x27, 0xb0, 0x92, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x44, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x04, 0x3c, 0x48, 0x9d, 0x84, 0x24, - 0x01, 0x80, 0x02, 0x3c, 0x48, 0x9d, 0x42, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x18, - 0x00, 0x44, 0x14, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x04, 0x3c, 0x50, 0x9d, - 0x84, 0x24, 0x01, 0x80, 0x02, 0x3c, 0x50, 0x9d, 0x42, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x11, 0x00, 0x44, 0x14, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x04, 0x3c, - 0x58, 0x9d, 0x84, 0x24, 0x01, 0x80, 0x02, 0x3c, 0x58, 0x9d, 0x42, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x0a, 0x00, 0x44, 0x14, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x94, - 0x84, 0x8f, 0xcf, 0x11, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x20, 0x95, 0x82, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x20, 0x95, 0x82, 0xaf, - 0x42, 0x1a, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x82, 0xac, 0x04, 0x00, 0x44, 0xac, 0x00, 0x00, 0x63, 0xac, 0x04, 0x00, 0x63, - 0xac, 0x54, 0x95, 0x83, 0xaf, 0xac, 0x91, 0x90, 0x8f, 0x08, 0x00, 0x62, 0x8c, - 0x0c, 0x00, 0x64, 0x8c, 0x09, 0xf8, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, - 0x94, 0x84, 0x8f, 0xcf, 0x11, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x54, 0x95, - 0x80, 0xaf, 0xac, 0x91, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x23, 0x80, 0x50, - 0x00, 0x32, 0x00, 0x02, 0x2e, 0x02, 0x00, 0x40, 0x14, 0x21, 0x18, 0x00, 0x02, - 0x31, 0x00, 0x03, 0x24, 0x60, 0x95, 0x82, 0x27, 0x80, 0x18, 0x03, 0x00, 0x21, - 0x18, 0x62, 0x00, 0x21, 0x20, 0x00, 0x02, 0x32, 0x00, 0x82, 0x2c, 0x03, 0x00, - 0x40, 0x14, 0x80, 0x10, 0x04, 0x00, 0x31, 0x00, 0x04, 0x24, 0x80, 0x10, 0x04, - 0x00, 0x21, 0x08, 0x5c, 0x00, 0x60, 0x95, 0x22, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x42, 0x24, 0x42, 0x1a, 0x00, 0x08, 0x00, 0x00, 0x62, 0xac, 0x24, - 0x00, 0xbf, 0x8f, 0x20, 0x00, 0xb4, 0x8f, 0x1c, 0x00, 0xb3, 0x8f, 0x18, 0x00, - 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, - 0x03, 0x28, 0x00, 0xbd, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, 0xaf, 0x00, 0xa3, 0x03, 0x3c, 0x20, - 0x0c, 0x63, 0x90, 0x01, 0x00, 0x02, 0x24, 0x09, 0x00, 0x62, 0x14, 0x00, 0xa1, - 0x03, 0x3c, 0x85, 0x1e, 0x02, 0x24, 0x00, 0x00, 0x62, 0xac, 0x00, 0xa1, 0x03, - 0x3c, 0x28, 0x00, 0x63, 0x34, 0x03, 0x00, 0x02, 0x3c, 0xff, 0xff, 0x42, 0x34, - 0xe5, 0x1a, 0x00, 0x08, 0x00, 0x00, 0x62, 0xac, 0xe9, 0x1a, 0x00, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x10, 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xbd, 0x27, 0x08, 0x00, - 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xbd, 0x27, 0x1c, 0x00, 0xbf, - 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, - 0x21, 0x90, 0x00, 0x00, 0x01, 0x80, 0x11, 0x3c, 0x00, 0x8a, 0x31, 0x26, 0x21, - 0x80, 0x00, 0x00, 0x30, 0x96, 0x80, 0xaf, 0x21, 0x28, 0x00, 0x00, 0x21, 0x20, - 0x20, 0x02, 0x00, 0x00, 0x82, 0x94, 0x02, 0x00, 0x83, 0x90, 0x00, 0xa1, 0x01, - 0x3c, 0x21, 0x08, 0x22, 0x00, 0x00, 0x00, 0x23, 0xa0, 0x30, 0x96, 0x80, 0xaf, - 0x01, 0x00, 0xa5, 0x24, 0x04, 0x00, 0xa2, 0x28, 0xf7, 0xff, 0x40, 0x14, 0x04, - 0x00, 0x84, 0x24, 0x00, 0x00, 0x82, 0x94, 0x00, 0xa1, 0x01, 0x3c, 0x21, 0x08, - 0x22, 0x00, 0x00, 0x00, 0x22, 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x42, - 0x30, 0x08, 0x00, 0x40, 0x10, 0x64, 0x00, 0x02, 0x2a, 0x04, 0x00, 0x40, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x80, 0x89, 0x84, 0x27, 0x24, 0x0c, 0x00, 0x0c, 0x61, - 0x00, 0x05, 0x24, 0xf2, 0x1a, 0x00, 0x08, 0x01, 0x00, 0x10, 0x26, 0x05, 0x00, - 0x52, 0x26, 0x0f, 0x00, 0x42, 0x2a, 0xe0, 0xff, 0x40, 0x14, 0x14, 0x00, 0x31, - 0x26, 0x1c, 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, - 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x20, 0x00, 0xbd, 0x27, 0xd8, - 0xff, 0xbd, 0x27, 0x20, 0x00, 0xbf, 0xaf, 0x1c, 0x00, 0xb3, 0xaf, 0x18, 0x00, - 0xb2, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x00, 0xa1, 0x11, - 0x3c, 0x00, 0xa1, 0x02, 0x3c, 0x00, 0x40, 0x42, 0x34, 0x00, 0x00, 0x40, 0xa4, - 0x7c, 0x99, 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x40, 0x11, 0x03, 0x00, 0x23, - 0x10, 0x43, 0x00, 0x80, 0x10, 0x02, 0x00, 0x21, 0x10, 0x43, 0x00, 0xc0, 0x10, - 0x02, 0x00, 0x70, 0x99, 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x80, 0x43, - 0x00, 0x00, 0xa3, 0x03, 0x3c, 0x20, 0x0c, 0x63, 0x90, 0x01, 0x00, 0x02, 0x24, - 0x7c, 0x00, 0x62, 0x14, 0x70, 0x00, 0x02, 0x3c, 0x31, 0x01, 0x02, 0x3c, 0xff, - 0x2c, 0x42, 0x34, 0x2b, 0x10, 0x50, 0x00, 0x0c, 0x00, 0x40, 0x10, 0x31, 0x01, - 0x03, 0x3c, 0xce, 0xfe, 0x04, 0x3c, 0x00, 0xd3, 0x84, 0x34, 0xff, 0x2c, 0x63, - 0x34, 0xac, 0x91, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, - 0xac, 0x91, 0x82, 0xaf, 0x21, 0x80, 0x04, 0x02, 0x2b, 0x10, 0x70, 0x00, 0xf9, - 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x70, 0x99, 0x90, 0xaf, 0x00, 0xa1, - 0x02, 0x3c, 0x3c, 0x00, 0x42, 0x34, 0x00, 0x00, 0x43, 0x8c, 0x03, 0x00, 0x02, - 0x3c, 0xff, 0xff, 0x42, 0x34, 0x24, 0x90, 0x62, 0x00, 0x94, 0x93, 0x82, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x10, 0x00, 0xa1, 0x02, 0x3c, 0x44, - 0x0d, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa1, 0x02, 0x3c, 0x3c, 0x00, - 0x42, 0x34, 0x00, 0x00, 0x42, 0x8c, 0x03, 0x00, 0x03, 0x3c, 0xff, 0xff, 0x63, - 0x34, 0x24, 0x98, 0x43, 0x00, 0x23, 0x80, 0x53, 0x02, 0x24, 0x80, 0x03, 0x02, - 0x44, 0x96, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0x02, 0x02, 0x40, - 0x96, 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x43, 0x00, 0x40, 0x96, - 0x82, 0xaf, 0x94, 0x89, 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x62, - 0x00, 0x12, 0x18, 0x00, 0x00, 0x82, 0x19, 0x03, 0x00, 0x44, 0x96, 0x83, 0xaf, - 0x98, 0x89, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x43, 0x00, 0x12, - 0x80, 0x00, 0x00, 0x02, 0x19, 0x10, 0x00, 0x90, 0x89, 0x82, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x21, 0x80, 0x62, 0x00, 0x80, 0x99, 0x90, 0xaf, 0x85, 0x1e, 0x02, - 0x2e, 0x02, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x85, 0x1e, 0x10, 0x24, - 0x7c, 0x99, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x50, 0x10, 0x00, - 0xa1, 0x02, 0x3c, 0x00, 0x00, 0x50, 0xac, 0x7c, 0x99, 0x90, 0xaf, 0xa4, 0x89, - 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x78, 0x99, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x40, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x80, 0x52, 0x00, 0x74, 0x99, 0x82, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x74, 0x99, 0x82, 0xaf, 0xe8, 0x03, - 0x42, 0x28, 0x0a, 0x00, 0x40, 0x14, 0xff, 0xff, 0x10, 0x32, 0xa8, 0x89, 0x82, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0x50, 0x00, 0x06, 0x00, 0x40, 0x10, - 0x40, 0x11, 0x10, 0x00, 0xac, 0x89, 0x84, 0x27, 0x24, 0x0c, 0x00, 0x0c, 0x13, - 0x01, 0x05, 0x24, 0x74, 0x99, 0x80, 0xaf, 0x40, 0x11, 0x10, 0x00, 0x21, 0x10, - 0x50, 0x00, 0x80, 0x10, 0x02, 0x00, 0x23, 0x10, 0x50, 0x00, 0x00, 0x11, 0x02, - 0x00, 0x21, 0x80, 0x02, 0x02, 0x02, 0x85, 0x10, 0x00, 0x64, 0x00, 0x02, 0x2e, - 0x02, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x63, 0x00, 0x10, 0x24, 0x50, - 0x96, 0x82, 0x27, 0x80, 0x18, 0x10, 0x00, 0x21, 0x18, 0x62, 0x00, 0x00, 0x00, - 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, - 0xac, 0x78, 0x99, 0x92, 0xaf, 0x23, 0x80, 0x53, 0x02, 0xff, 0xff, 0x10, 0x32, - 0x40, 0x11, 0x10, 0x00, 0x21, 0x10, 0x50, 0x00, 0x80, 0x10, 0x02, 0x00, 0x23, - 0x10, 0x50, 0x00, 0x00, 0x11, 0x02, 0x00, 0x21, 0x80, 0x02, 0x02, 0x64, 0x1c, - 0x00, 0x08, 0x02, 0x85, 0x10, 0x00, 0xff, 0x7f, 0x42, 0x34, 0x2b, 0x10, 0x50, - 0x00, 0x0c, 0x00, 0x40, 0x10, 0x8f, 0xff, 0x04, 0x3c, 0x00, 0x80, 0x84, 0x34, - 0x70, 0x00, 0x03, 0x3c, 0xff, 0x7f, 0x63, 0x34, 0xac, 0x91, 0x82, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0xac, 0x91, 0x82, 0xaf, 0x21, 0x80, - 0x04, 0x02, 0x2b, 0x10, 0x70, 0x00, 0xf9, 0xff, 0x40, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x70, 0x99, 0x90, 0xaf, 0x80, 0x00, 0x04, 0x24, 0x00, 0xa3, 0x03, 0x3c, - 0xc5, 0x1b, 0x00, 0x08, 0x14, 0x00, 0x63, 0x34, 0x00, 0x00, 0x62, 0x8c, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, 0x00, 0x00, - 0x62, 0x8c, 0x0c, 0x00, 0x24, 0xa2, 0x30, 0x96, 0x80, 0xaf, 0x08, 0x00, 0x22, - 0x92, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x52, 0x30, 0x08, 0x00, 0x22, 0x92, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x02, 0x00, 0x25, 0x90, 0x42, 0x02, 0x30, - 0x96, 0x80, 0xaf, 0x0c, 0x00, 0x24, 0xa2, 0x30, 0x96, 0x80, 0xaf, 0x08, 0x00, - 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x50, 0x30, 0x08, 0x00, 0x22, - 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x02, 0x00, 0x25, 0x80, 0x02, 0x02, - 0x23, 0x10, 0x50, 0x02, 0xff, 0xff, 0x50, 0x30, 0x80, 0x00, 0x02, 0x2e, 0xe4, - 0xff, 0x40, 0x10, 0x42, 0x10, 0x10, 0x00, 0x21, 0x90, 0x42, 0x02, 0x94, 0x93, - 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x10, 0x80, 0x00, 0x04, - 0x24, 0x44, 0x0d, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x04, 0x24, - 0x00, 0xa3, 0x03, 0x3c, 0xed, 0x1b, 0x00, 0x08, 0x18, 0x00, 0x63, 0x34, 0x00, - 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, - 0x62, 0xac, 0x00, 0x00, 0x62, 0x8c, 0x0c, 0x00, 0x24, 0xa2, 0x30, 0x96, 0x80, - 0xaf, 0x08, 0x00, 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x53, 0x30, - 0x08, 0x00, 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x02, 0x00, 0x25, - 0x98, 0x62, 0x02, 0x30, 0x96, 0x80, 0xaf, 0x0c, 0x00, 0x24, 0xa2, 0x30, 0x96, - 0x80, 0xaf, 0x08, 0x00, 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x50, - 0x30, 0x08, 0x00, 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x02, 0x00, - 0x25, 0x80, 0x02, 0x02, 0x23, 0x10, 0x70, 0x02, 0xff, 0xff, 0x50, 0x30, 0x80, - 0x00, 0x02, 0x2e, 0xe4, 0xff, 0x40, 0x10, 0x42, 0x10, 0x10, 0x00, 0x21, 0x98, - 0x62, 0x02, 0x23, 0x80, 0x53, 0x02, 0xff, 0xff, 0x10, 0x32, 0x44, 0x96, 0x82, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x23, 0x10, 0x02, 0x02, 0x40, 0x96, 0x83, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0x43, 0x00, 0x40, 0x96, 0x82, 0xaf, 0x94, - 0x89, 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x62, 0x00, 0x12, 0x18, - 0x00, 0x00, 0x82, 0x19, 0x03, 0x00, 0x44, 0x96, 0x83, 0xaf, 0x98, 0x89, 0x82, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x43, 0x00, 0x12, 0x80, 0x00, 0x00, - 0x02, 0x19, 0x10, 0x00, 0x9c, 0x89, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x21, - 0x80, 0x62, 0x00, 0x80, 0x99, 0x90, 0xaf, 0xa0, 0x89, 0x82, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x11, 0x02, 0x00, 0x01, 0x00, 0x43, 0x24, 0x2b, 0x10, 0x03, - 0x02, 0x02, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0x80, 0x60, 0x00, - 0x7c, 0x99, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x50, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xa2, 0x7c, 0x99, 0x90, 0xaf, 0x02, 0x12, - 0x10, 0x00, 0x00, 0x00, 0x22, 0xa2, 0xa4, 0x89, 0x82, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x3e, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x78, 0x99, 0x82, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x40, 0x10, 0x23, 0x80, 0x52, 0x00, 0x74, - 0x99, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x24, 0x74, 0x99, - 0x82, 0xaf, 0xe8, 0x03, 0x42, 0x28, 0x0a, 0x00, 0x40, 0x14, 0xff, 0xff, 0x10, - 0x32, 0xa8, 0x89, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x10, 0x50, 0x00, - 0x06, 0x00, 0x40, 0x10, 0x80, 0x10, 0x10, 0x00, 0xac, 0x89, 0x84, 0x27, 0x24, - 0x0c, 0x00, 0x0c, 0xd4, 0x01, 0x05, 0x24, 0x74, 0x99, 0x80, 0xaf, 0x80, 0x10, - 0x10, 0x00, 0x21, 0x10, 0x50, 0x00, 0x00, 0x11, 0x02, 0x00, 0x23, 0x10, 0x50, - 0x00, 0xc0, 0x18, 0x02, 0x00, 0x21, 0x10, 0x43, 0x00, 0xc0, 0x10, 0x02, 0x00, - 0x02, 0x85, 0x02, 0x00, 0x64, 0x00, 0x02, 0x2e, 0x02, 0x00, 0x40, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x63, 0x00, 0x10, 0x24, 0x50, 0x96, 0x82, 0x27, 0x80, 0x18, - 0x10, 0x00, 0x21, 0x18, 0x62, 0x00, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, 0x78, 0x99, 0x92, 0xaf, - 0x23, 0x80, 0x53, 0x02, 0xff, 0xff, 0x10, 0x32, 0x80, 0x10, 0x10, 0x00, 0x21, - 0x10, 0x50, 0x00, 0x00, 0x11, 0x02, 0x00, 0x23, 0x10, 0x50, 0x00, 0xc0, 0x18, - 0x02, 0x00, 0x21, 0x10, 0x43, 0x00, 0xc0, 0x10, 0x02, 0x00, 0x02, 0x85, 0x02, - 0x00, 0x64, 0x00, 0x02, 0x2e, 0x02, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x63, 0x00, 0x10, 0x24, 0xe0, 0x97, 0x82, 0x27, 0x80, 0x18, 0x10, 0x00, 0x21, - 0x18, 0x62, 0x00, 0x00, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x42, 0x24, 0x00, 0x00, 0x62, 0xac, 0x00, 0xa3, 0x03, 0x3c, 0x10, 0x0c, 0x63, - 0x94, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x60, 0x10, 0x01, 0x00, 0x02, 0x24, - 0x05, 0x00, 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x0c, 0x00, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x7f, 0x1c, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0xac, 0x89, - 0x84, 0x27, 0x24, 0x0c, 0x00, 0x0c, 0xdb, 0x02, 0x05, 0x24, 0x00, 0xa3, 0x01, - 0x3c, 0x10, 0x0c, 0x20, 0xa4, 0x20, 0x00, 0xbf, 0x8f, 0x1c, 0x00, 0xb3, 0x8f, - 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, - 0x00, 0xe0, 0x03, 0x28, 0x00, 0xbd, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x00, 0x83, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x62, - 0x28, 0x0d, 0x00, 0x40, 0x14, 0x21, 0x10, 0x00, 0x00, 0x3c, 0x00, 0x62, 0x28, - 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x82, 0x90, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x30, 0x99, 0x1c, 0x00, 0x08, 0x01, 0x00, - 0x42, 0x24, 0x48, 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x42, - 0x30, 0x03, 0x00, 0x42, 0x24, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, - 0xe0, 0xff, 0xbd, 0x27, 0x18, 0x00, 0xbf, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, - 0x00, 0xb0, 0xaf, 0x21, 0x80, 0x80, 0x00, 0x24, 0x00, 0x02, 0x8e, 0x00, 0x00, - 0x00, 0x00, 0x2f, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x91, 0x84, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x11, 0x00, 0x0c, 0x21, 0x88, 0x40, 0x00, - 0x21, 0x30, 0x40, 0x00, 0x50, 0x00, 0x03, 0x96, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x62, 0x30, 0x23, 0x00, 0x40, 0x14, 0x01, 0x00, 0x63, 0x34, 0x50, 0x00, - 0x03, 0xa6, 0x28, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x42, - 0x30, 0x05, 0x00, 0x40, 0x10, 0x00, 0x02, 0x62, 0x38, 0x50, 0x00, 0x02, 0xa6, - 0x00, 0x80, 0x02, 0x3c, 0x1c, 0x36, 0x42, 0x24, 0x04, 0x00, 0x02, 0xae, 0x68, - 0x00, 0x03, 0x92, 0x5f, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, - 0x42, 0x30, 0x27, 0x10, 0x02, 0x00, 0x24, 0x18, 0x62, 0x00, 0x10, 0x00, 0x23, - 0xa2, 0x00, 0x20, 0x04, 0x3c, 0x25, 0x20, 0x04, 0x02, 0x54, 0x00, 0x82, 0x90, - 0x00, 0x00, 0x00, 0x00, 0x26, 0x28, 0x43, 0x00, 0x03, 0x00, 0xa5, 0x30, 0x54, - 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, 0x26, 0x10, 0x45, 0x00, 0x54, 0x00, - 0x82, 0xa0, 0x56, 0x00, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x24, 0x18, 0xa3, - 0x00, 0x58, 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, 0x25, 0x10, 0x43, 0x00, - 0x58, 0x00, 0x82, 0xa0, 0xcf, 0x11, 0x00, 0x0c, 0x21, 0x20, 0xc0, 0x00, 0x18, - 0x00, 0xbf, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, - 0xe0, 0x03, 0x20, 0x00, 0xbd, 0x27, 0xe0, 0xff, 0xbd, 0x27, 0x18, 0x00, 0xbf, - 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x80, 0x80, 0x00, - 0x24, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x40, 0x10, 0x00, - 0x00, 0x00, 0x00, 0xb0, 0x91, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x11, - 0x00, 0x0c, 0x21, 0x88, 0x40, 0x00, 0x21, 0x30, 0x40, 0x00, 0x50, 0x00, 0x03, - 0x96, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x62, 0x30, 0x23, 0x00, 0x40, 0x10, - 0xfe, 0xff, 0x63, 0x30, 0x50, 0x00, 0x03, 0xa6, 0x28, 0x00, 0x02, 0x96, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x10, 0x42, 0x30, 0x05, 0x00, 0x40, 0x10, 0x00, 0x02, - 0x62, 0x38, 0x50, 0x00, 0x02, 0xa6, 0x00, 0x80, 0x02, 0x3c, 0x1c, 0x36, 0x42, - 0x24, 0x04, 0x00, 0x02, 0xae, 0x5f, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x42, 0x30, 0x68, 0x00, 0x03, 0x92, 0x00, 0x00, 0x00, 0x00, 0x25, - 0x18, 0x62, 0x00, 0x10, 0x00, 0x23, 0xa2, 0x00, 0x20, 0x04, 0x3c, 0x25, 0x20, - 0x04, 0x02, 0x54, 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, 0x26, 0x28, 0x43, - 0x00, 0x03, 0x00, 0xa5, 0x30, 0x54, 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, - 0x26, 0x10, 0x45, 0x00, 0x54, 0x00, 0x82, 0xa0, 0x56, 0x00, 0x83, 0x90, 0x00, - 0x00, 0x00, 0x00, 0x24, 0x18, 0xa3, 0x00, 0x58, 0x00, 0x82, 0x90, 0x00, 0x00, - 0x00, 0x00, 0x25, 0x10, 0x43, 0x00, 0x58, 0x00, 0x82, 0xa0, 0xcf, 0x11, 0x00, - 0x0c, 0x21, 0x20, 0xc0, 0x00, 0x18, 0x00, 0xbf, 0x8f, 0x14, 0x00, 0xb1, 0x8f, - 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x20, 0x00, 0xbd, 0x27, 0xe0, - 0xff, 0xbd, 0x27, 0x1c, 0x00, 0xbf, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, - 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x80, 0x80, 0x00, 0x24, 0x00, 0x02, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x58, 0x00, 0x40, 0x10, 0x21, 0x90, 0xa0, 0x00, - 0xb0, 0x91, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x11, 0x00, 0x0c, 0x21, - 0x88, 0x40, 0x00, 0x21, 0x20, 0x40, 0x00, 0x30, 0x00, 0x47, 0x32, 0x02, 0x39, - 0x07, 0x00, 0x05, 0x00, 0xe7, 0x24, 0x01, 0x00, 0x02, 0x24, 0x04, 0x18, 0xe2, - 0x00, 0xff, 0xff, 0x63, 0x24, 0x62, 0x00, 0x03, 0xa2, 0x28, 0x00, 0x02, 0x96, - 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x42, 0x30, 0x02, 0x00, 0x40, 0x10, 0x02, - 0x00, 0x08, 0x24, 0x7f, 0x00, 0x63, 0x30, 0x6a, 0x00, 0x02, 0x96, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xff, 0x42, 0x30, 0x25, 0x10, 0x43, 0x00, 0x6a, 0x00, 0x02, - 0xa6, 0x00, 0x01, 0x42, 0x32, 0x06, 0x00, 0x40, 0x10, 0xfb, 0xff, 0xe6, 0x24, - 0x00, 0x02, 0x42, 0x32, 0x02, 0x00, 0x40, 0x14, 0x08, 0x00, 0xc6, 0x34, 0x10, - 0x00, 0xc6, 0x34, 0x01, 0x00, 0x08, 0x25, 0x40, 0x00, 0x42, 0x32, 0x03, 0x00, - 0x40, 0x10, 0x0f, 0x00, 0x45, 0x32, 0x04, 0x00, 0xc6, 0x34, 0x01, 0x00, 0x08, - 0x25, 0x00, 0x04, 0x42, 0x32, 0x10, 0x00, 0x40, 0x10, 0x40, 0x28, 0x05, 0x00, - 0x65, 0x00, 0x03, 0x92, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x03, 0x00, 0x21, - 0x10, 0x43, 0x00, 0x00, 0x11, 0x02, 0x00, 0x01, 0x80, 0x03, 0x3c, 0x21, 0x18, - 0x62, 0x00, 0x88, 0x9d, 0x63, 0x8c, 0x03, 0x00, 0x02, 0x24, 0x05, 0x00, 0x62, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x02, 0x3c, 0x60, 0x8a, 0x42, 0x24, - 0x56, 0x1d, 0x00, 0x08, 0x21, 0x10, 0xa2, 0x00, 0x01, 0x80, 0x02, 0x3c, 0x40, - 0x8a, 0x42, 0x24, 0x21, 0x10, 0xa2, 0x00, 0x00, 0x00, 0x43, 0x94, 0x0c, 0x00, - 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x42, 0x34, 0x0c, 0x00, 0x22, - 0xa2, 0x7f, 0x00, 0x02, 0x24, 0x04, 0x00, 0x22, 0xa2, 0x00, 0x00, 0x23, 0xa2, - 0x03, 0x12, 0x03, 0x00, 0x04, 0x00, 0x22, 0xa2, 0x0c, 0x00, 0x22, 0x92, 0x00, - 0x00, 0x00, 0x00, 0x40, 0x00, 0x42, 0x30, 0x21, 0x10, 0x46, 0x00, 0x0c, 0x00, - 0x22, 0xa2, 0x21, 0x10, 0xe8, 0x00, 0x18, 0x00, 0x62, 0x00, 0x12, 0x18, 0x00, - 0x00, 0x40, 0x00, 0x03, 0xae, 0x14, 0x00, 0x63, 0x28, 0x02, 0x00, 0x60, 0x10, - 0x14, 0x00, 0x02, 0x24, 0x40, 0x00, 0x02, 0xae, 0xcf, 0x11, 0x00, 0x0c, 0x2c, - 0x00, 0x12, 0xa6, 0x88, 0x1c, 0x00, 0x0c, 0x21, 0x20, 0x00, 0x02, 0x21, 0x20, - 0x00, 0x02, 0xe2, 0x18, 0x00, 0x0c, 0x21, 0x28, 0x40, 0x00, 0x1c, 0x00, 0xbf, - 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, - 0x08, 0x00, 0xe0, 0x03, 0x20, 0x00, 0xbd, 0x27, 0xe0, 0xff, 0xbd, 0x27, 0x18, - 0x00, 0xbf, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x80, - 0x80, 0x00, 0xb0, 0x91, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x11, 0x00, - 0x0c, 0x21, 0x88, 0xa0, 0x00, 0x21, 0x20, 0x40, 0x00, 0x28, 0x00, 0x02, 0x96, - 0x00, 0x00, 0x00, 0x00, 0x26, 0x10, 0x22, 0x02, 0x00, 0x10, 0x42, 0x30, 0x0a, - 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x03, 0x96, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x62, 0x30, 0x05, 0x00, 0x40, 0x10, 0x00, 0x02, 0x62, - 0x34, 0x50, 0x00, 0x02, 0xa6, 0x00, 0x80, 0x02, 0x3c, 0x1c, 0x36, 0x42, 0x24, - 0x04, 0x00, 0x02, 0xae, 0x62, 0x00, 0x03, 0x92, 0x20, 0x00, 0x22, 0x32, 0x02, - 0x00, 0x40, 0x10, 0x10, 0x00, 0x22, 0x32, 0x7f, 0x00, 0x63, 0x30, 0x02, 0x00, - 0x40, 0x10, 0x00, 0x1a, 0x63, 0x34, 0x00, 0x04, 0x63, 0x34, 0x6a, 0x00, 0x03, - 0xa6, 0x50, 0x00, 0x03, 0x96, 0x00, 0x04, 0x22, 0x32, 0x0a, 0x00, 0x40, 0x10, - 0xfb, 0x3f, 0x63, 0x30, 0x00, 0x20, 0x22, 0x32, 0x02, 0x00, 0x40, 0x10, 0x00, - 0x80, 0x63, 0x34, 0x00, 0x40, 0x63, 0x34, 0x00, 0x08, 0x22, 0x32, 0x04, 0x00, - 0x40, 0x10, 0xff, 0xef, 0x02, 0x24, 0xab, 0x1d, 0x00, 0x08, 0x04, 0x00, 0x63, - 0x34, 0xff, 0xe7, 0x02, 0x24, 0x24, 0x18, 0x62, 0x00, 0x50, 0x00, 0x03, 0xa6, - 0xcf, 0x11, 0x00, 0x0c, 0x28, 0x00, 0x11, 0xa6, 0x18, 0x00, 0xbf, 0x8f, 0x14, - 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x20, 0x00, - 0xbd, 0x27, 0xe0, 0xff, 0xbd, 0x27, 0x18, 0x00, 0xbf, 0xaf, 0x14, 0x00, 0xb1, - 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x80, 0x80, 0x00, 0xb0, 0x91, 0x84, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0xc6, 0x11, 0x00, 0x0c, 0x21, 0x88, 0xa0, 0x00, 0x21, - 0x20, 0x40, 0x00, 0x7f, 0xff, 0x02, 0x24, 0x24, 0x10, 0x22, 0x02, 0x0b, 0x00, - 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, - 0x00, 0x80, 0x00, 0x42, 0x30, 0x02, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x63, 0x00, 0x00, 0xa2, 0x50, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0xce, - 0x1d, 0x00, 0x08, 0x80, 0x00, 0x42, 0x34, 0x50, 0x00, 0x02, 0x96, 0x00, 0x00, - 0x00, 0x00, 0x7f, 0xff, 0x42, 0x30, 0x50, 0x00, 0x02, 0xa6, 0x00, 0x80, 0x02, - 0x3c, 0x1c, 0x36, 0x42, 0x24, 0x04, 0x00, 0x02, 0xae, 0x80, 0x00, 0x22, 0x32, - 0x03, 0x00, 0x40, 0x10, 0x7f, 0x00, 0x02, 0x24, 0xd8, 0x1d, 0x00, 0x08, 0x60, - 0x00, 0x02, 0xa2, 0x60, 0x00, 0x00, 0xa2, 0xcf, 0x11, 0x00, 0x0c, 0x2a, 0x00, - 0x11, 0xa6, 0x18, 0x00, 0xbf, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, - 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x20, 0x00, 0xbd, 0x27, 0xe0, 0xff, 0xbd, 0x27, - 0x18, 0x00, 0xbf, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, - 0x80, 0x80, 0x00, 0xb0, 0x91, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x11, - 0x00, 0x0c, 0x21, 0x88, 0xa0, 0x00, 0x21, 0x20, 0x40, 0x00, 0x6c, 0x00, 0x03, - 0x8e, 0xff, 0xff, 0x02, 0x24, 0x0a, 0x00, 0x62, 0x14, 0x01, 0x00, 0x02, 0x24, - 0xff, 0xff, 0x02, 0x34, 0x07, 0x00, 0x22, 0x12, 0x01, 0x00, 0x02, 0x24, 0x6c, - 0x00, 0x00, 0xae, 0x50, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfe, - 0x42, 0x30, 0x09, 0x1e, 0x00, 0x08, 0x50, 0x00, 0x02, 0xa6, 0x4b, 0x00, 0x02, - 0xa2, 0x50, 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x42, 0x34, - 0x50, 0x00, 0x02, 0xa6, 0x00, 0x80, 0x02, 0x3c, 0x1c, 0x36, 0x42, 0x24, 0x04, - 0x00, 0x02, 0xae, 0xff, 0xff, 0x02, 0x34, 0x07, 0x00, 0x22, 0x12, 0xc0, 0x10, - 0x11, 0x00, 0x21, 0x10, 0x51, 0x00, 0x40, 0x12, 0x02, 0x00, 0x6c, 0x00, 0x03, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x08, 0x1e, 0x00, 0x08, 0x21, 0x10, 0x43, 0x00, - 0xff, 0xff, 0x02, 0x24, 0x6c, 0x00, 0x02, 0xae, 0xcf, 0x11, 0x00, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x18, 0x00, 0xbf, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, - 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x20, 0x00, 0xbd, 0x27, 0xe0, 0xff, 0xbd, - 0x27, 0x1c, 0x00, 0xbf, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb1, 0xaf, - 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x88, 0x80, 0x00, 0x24, 0x00, 0x22, 0x8e, 0x00, - 0x00, 0x00, 0x00, 0x31, 0x00, 0x40, 0x10, 0x21, 0x80, 0xa0, 0x00, 0x21, 0x90, - 0x40, 0x00, 0x10, 0x00, 0x02, 0x32, 0x03, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x22, 0x1e, 0x00, 0x08, 0x1f, 0x00, 0x10, 0x32, 0x03, 0x00, 0x10, 0x32, - 0x08, 0x00, 0x10, 0x36, 0xb0, 0x91, 0x84, 0x8f, 0xc6, 0x11, 0x00, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x21, 0x30, 0x40, 0x00, 0x68, 0x00, 0x30, 0xa2, 0x50, 0x00, - 0x22, 0x96, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x30, 0x07, 0x00, 0x40, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x42, 0x30, 0x27, 0x10, 0x02, 0x00, 0x36, 0x1e, 0x00, 0x08, 0x24, - 0x80, 0x02, 0x02, 0x5f, 0x00, 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, - 0x42, 0x30, 0x25, 0x80, 0x02, 0x02, 0x10, 0x00, 0x50, 0xa2, 0x00, 0x20, 0x04, - 0x3c, 0x25, 0x20, 0x24, 0x02, 0x54, 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, - 0x26, 0x28, 0x50, 0x00, 0x03, 0x00, 0xa5, 0x30, 0x54, 0x00, 0x82, 0x90, 0x00, - 0x00, 0x00, 0x00, 0x26, 0x10, 0x45, 0x00, 0x54, 0x00, 0x82, 0xa0, 0x56, 0x00, - 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x24, 0x18, 0xa3, 0x00, 0x58, 0x00, 0x82, - 0x90, 0x00, 0x00, 0x00, 0x00, 0x25, 0x10, 0x43, 0x00, 0x58, 0x00, 0x82, 0xa0, - 0xcf, 0x11, 0x00, 0x0c, 0x21, 0x20, 0xc0, 0x00, 0x1c, 0x00, 0xbf, 0x8f, 0x18, - 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, - 0xe0, 0x03, 0x20, 0x00, 0xbd, 0x27, 0xe0, 0xff, 0xbd, 0x27, 0x1c, 0x00, 0xbf, - 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, - 0x21, 0x88, 0x80, 0x00, 0x24, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x30, - 0x00, 0x40, 0x10, 0x21, 0x80, 0xa0, 0x00, 0x21, 0x90, 0x40, 0x00, 0xb0, 0x91, - 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x11, 0x00, 0x0c, 0xf3, 0x00, 0x10, - 0x32, 0x21, 0x30, 0x40, 0x00, 0x5f, 0x00, 0x30, 0xa2, 0xf0, 0x00, 0x02, 0x32, - 0x49, 0x00, 0x22, 0xa2, 0x4a, 0x00, 0x23, 0x92, 0x00, 0x00, 0x00, 0x00, 0x0f, - 0x00, 0x63, 0x30, 0x25, 0x18, 0x62, 0x00, 0x4a, 0x00, 0x23, 0xa2, 0x50, 0x00, - 0x22, 0x96, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x30, 0x06, 0x00, 0x40, - 0x10, 0x03, 0x00, 0x10, 0x32, 0x27, 0x80, 0x10, 0x00, 0x68, 0x00, 0x22, 0x92, - 0x00, 0x00, 0x00, 0x00, 0x75, 0x1e, 0x00, 0x08, 0x24, 0x80, 0x02, 0x02, 0x68, - 0x00, 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, 0x25, 0x80, 0x02, 0x02, 0x10, 0x00, - 0x50, 0xa2, 0x00, 0x20, 0x04, 0x3c, 0x25, 0x20, 0x24, 0x02, 0x54, 0x00, 0x82, - 0x90, 0x00, 0x00, 0x00, 0x00, 0x26, 0x28, 0x50, 0x00, 0x03, 0x00, 0xa5, 0x30, - 0x54, 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, 0x26, 0x10, 0x45, 0x00, 0x54, - 0x00, 0x82, 0xa0, 0x56, 0x00, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x24, 0x18, - 0xa3, 0x00, 0x58, 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, 0x25, 0x10, 0x43, - 0x00, 0x58, 0x00, 0x82, 0xa0, 0xcf, 0x11, 0x00, 0x0c, 0x21, 0x20, 0xc0, 0x00, - 0x1c, 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, - 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x20, 0x00, 0xbd, 0x27, 0xe0, 0xff, - 0xbd, 0x27, 0x1c, 0x00, 0xbf, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb1, - 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x88, 0x80, 0x00, 0x00, 0x20, 0x10, 0x3c, - 0x24, 0x00, 0x32, 0x8e, 0xb0, 0x91, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xc6, - 0x11, 0x00, 0x0c, 0x25, 0x80, 0x30, 0x02, 0x21, 0x20, 0x40, 0x00, 0x0a, 0x00, - 0x00, 0xa6, 0x0c, 0x00, 0x00, 0xa6, 0x12, 0x00, 0x00, 0xa6, 0x14, 0x00, 0x00, - 0xa6, 0x18, 0x00, 0x20, 0xa6, 0x1a, 0x00, 0x20, 0xa6, 0xff, 0xff, 0x02, 0x34, - 0x1c, 0x00, 0x22, 0xa6, 0x28, 0x00, 0x20, 0xa6, 0x2a, 0x00, 0x20, 0xa6, 0x3f, - 0x00, 0x02, 0x24, 0x2c, 0x00, 0x22, 0xa6, 0x78, 0x00, 0x02, 0x24, 0x40, 0x00, - 0x22, 0xae, 0x44, 0x00, 0x20, 0xae, 0x4b, 0x00, 0x20, 0xa2, 0x01, 0x00, 0x05, - 0x24, 0x4c, 0x00, 0x05, 0xa2, 0x4d, 0x00, 0x05, 0xa2, 0x4e, 0x00, 0x05, 0xa2, - 0x4f, 0x00, 0x00, 0xa2, 0xff, 0x00, 0x03, 0x24, 0x56, 0x00, 0x03, 0xa2, 0x10, - 0x00, 0x02, 0x24, 0x50, 0x00, 0x22, 0xa6, 0x49, 0x00, 0x20, 0xa2, 0x4a, 0x00, - 0x20, 0xa2, 0x54, 0x00, 0x00, 0xa2, 0x57, 0x00, 0x00, 0xa2, 0x58, 0x00, 0x00, - 0xa2, 0x59, 0x00, 0x00, 0xa2, 0x5a, 0x00, 0x00, 0xa2, 0x5b, 0x00, 0x00, 0xa2, - 0x11, 0x00, 0x02, 0x24, 0x5c, 0x00, 0x22, 0xa2, 0x13, 0x00, 0x02, 0x24, 0x5d, - 0x00, 0x22, 0xa2, 0x5e, 0x00, 0x20, 0xa2, 0x5f, 0x00, 0x20, 0xa2, 0x60, 0x00, - 0x20, 0xa2, 0x61, 0x00, 0x20, 0xa2, 0x62, 0x00, 0x23, 0xa2, 0x63, 0x00, 0x20, - 0xa2, 0x68, 0x00, 0x20, 0xa2, 0xff, 0x0a, 0x02, 0x24, 0x6a, 0x00, 0x22, 0xa6, - 0x6c, 0x00, 0x20, 0xae, 0x00, 0x80, 0x02, 0x3c, 0x1c, 0x36, 0x42, 0x24, 0x04, - 0x00, 0x22, 0xae, 0x00, 0x80, 0x02, 0x3c, 0xbc, 0x3e, 0x42, 0x24, 0x74, 0x00, - 0x22, 0xae, 0x00, 0x80, 0x02, 0x3c, 0xe8, 0x3a, 0x42, 0x24, 0x34, 0x00, 0x22, - 0xae, 0x24, 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x40, 0x10, - 0x80, 0x00, 0x02, 0x24, 0x0c, 0x00, 0x42, 0xa2, 0x0c, 0x00, 0x02, 0x24, 0x00, - 0x00, 0x42, 0xa2, 0x04, 0x00, 0x40, 0xa2, 0x03, 0x00, 0x02, 0x24, 0x0c, 0x00, - 0x42, 0xa2, 0x0f, 0x00, 0x02, 0x24, 0x08, 0x00, 0x42, 0xa2, 0x04, 0x00, 0x45, - 0xa2, 0x08, 0x00, 0x02, 0x24, 0x10, 0x00, 0x42, 0xa2, 0x08, 0x00, 0x42, 0x92, - 0x00, 0x00, 0x42, 0x92, 0x14, 0x00, 0x42, 0x92, 0x18, 0x00, 0x42, 0x92, 0xcf, - 0x11, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x88, 0x1c, 0x00, 0x0c, 0x21, 0x20, - 0x20, 0x02, 0x21, 0x20, 0x20, 0x02, 0xe2, 0x18, 0x00, 0x0c, 0x21, 0x28, 0x40, - 0x00, 0x1c, 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, - 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x20, 0x00, 0xbd, 0x27, 0xe0, - 0xff, 0xbd, 0x27, 0x18, 0x00, 0xbf, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, - 0xb0, 0xaf, 0x21, 0x88, 0x80, 0x00, 0x24, 0x00, 0x30, 0x8e, 0xb0, 0x91, 0x84, - 0x8f, 0xc6, 0x11, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, 0x40, 0x00, - 0x44, 0x00, 0x20, 0xae, 0x2c, 0x00, 0x22, 0x96, 0x00, 0x00, 0x00, 0x00, 0x30, - 0x00, 0x42, 0x30, 0x02, 0x29, 0x02, 0x00, 0x05, 0x00, 0xa5, 0x24, 0x01, 0x00, - 0x02, 0x24, 0x04, 0x18, 0xa2, 0x00, 0xff, 0xff, 0x63, 0x24, 0x62, 0x00, 0x23, - 0xa2, 0x28, 0x00, 0x22, 0x96, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x42, 0x30, - 0x02, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x63, 0x30, 0x6a, - 0x00, 0x22, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x42, 0x30, 0x25, 0x10, - 0x43, 0x00, 0x6a, 0x00, 0x22, 0xa6, 0x2c, 0x00, 0x23, 0x96, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x62, 0x30, 0x05, 0x00, 0x40, 0x10, 0xfb, 0xff, 0xa6, 0x24, - 0x00, 0x02, 0x62, 0x30, 0x02, 0x00, 0x40, 0x14, 0x08, 0x00, 0xc6, 0x34, 0x10, - 0x00, 0xc6, 0x34, 0x2c, 0x00, 0x22, 0x96, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, - 0x42, 0x30, 0x02, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xc6, - 0x34, 0x2c, 0x00, 0x22, 0x96, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x45, 0x30, - 0x00, 0x04, 0x42, 0x30, 0x10, 0x00, 0x40, 0x10, 0x40, 0x28, 0x05, 0x00, 0x65, - 0x00, 0x23, 0x92, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x03, 0x00, 0x21, 0x10, - 0x43, 0x00, 0x00, 0x11, 0x02, 0x00, 0x01, 0x80, 0x03, 0x3c, 0x21, 0x18, 0x62, - 0x00, 0x88, 0x9d, 0x63, 0x8c, 0x03, 0x00, 0x02, 0x24, 0x05, 0x00, 0x62, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x02, 0x3c, 0x60, 0x8a, 0x42, 0x24, 0x3a, - 0x1f, 0x00, 0x08, 0x21, 0x10, 0xa2, 0x00, 0x01, 0x80, 0x02, 0x3c, 0x40, 0x8a, - 0x42, 0x24, 0x21, 0x10, 0xa2, 0x00, 0x00, 0x00, 0x43, 0x94, 0x0c, 0x00, 0x02, - 0x92, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x42, 0x34, 0x0c, 0x00, 0x02, 0xa2, - 0x7f, 0x00, 0x02, 0x24, 0x04, 0x00, 0x02, 0xa2, 0x00, 0x00, 0x03, 0xa2, 0x03, - 0x1a, 0x03, 0x00, 0x04, 0x00, 0x03, 0xa2, 0x0c, 0x00, 0x02, 0x92, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x00, 0x42, 0x30, 0x21, 0x10, 0x46, 0x00, 0x0c, 0x00, 0x02, - 0xa2, 0x01, 0x00, 0x03, 0x24, 0x08, 0x00, 0x03, 0xa2, 0x0f, 0x00, 0x02, 0x24, - 0x08, 0x00, 0x02, 0xa2, 0x04, 0x00, 0x03, 0xa2, 0x08, 0x00, 0x02, 0x24, 0x10, - 0x00, 0x02, 0xa2, 0x08, 0x00, 0x02, 0x92, 0x00, 0x00, 0x02, 0x92, 0x14, 0x00, - 0x02, 0x92, 0x18, 0x00, 0x02, 0x92, 0xcf, 0x11, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x18, 0x00, 0xbf, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, - 0x08, 0x00, 0xe0, 0x03, 0x20, 0x00, 0xbd, 0x27, 0xe8, 0xff, 0xbd, 0x27, 0x14, - 0x00, 0xbf, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x80, 0x80, 0x00, 0xd0, 0x92, - 0x83, 0x27, 0x23, 0x18, 0xa3, 0x00, 0x80, 0x10, 0x03, 0x00, 0x21, 0x10, 0x43, - 0x00, 0x00, 0x19, 0x02, 0x00, 0x21, 0x10, 0x43, 0x00, 0x00, 0x1a, 0x02, 0x00, - 0x21, 0x10, 0x43, 0x00, 0x00, 0x1c, 0x02, 0x00, 0x21, 0x10, 0x43, 0x00, 0x23, - 0x10, 0x02, 0x00, 0x03, 0x11, 0x02, 0x00, 0x65, 0x00, 0x02, 0xa2, 0x48, 0x00, - 0x06, 0xa2, 0x40, 0x31, 0x06, 0x00, 0x00, 0x01, 0xc6, 0x24, 0x04, 0x00, 0xa2, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x30, 0xc2, 0x00, 0x8f, 0x1e, 0x00, 0x0c, - 0x24, 0x00, 0x06, 0xae, 0x2c, 0x92, 0x82, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x03, - 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x80, 0x1f, 0x00, 0x08, 0x30, 0x00, - 0x10, 0xae, 0x2c, 0x92, 0x83, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x62, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x02, 0xae, 0x30, 0x00, 0x70, 0xac, - 0x2c, 0x92, 0x90, 0xaf, 0x14, 0x00, 0xbf, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, - 0x00, 0xe0, 0x03, 0x18, 0x00, 0xbd, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, - 0x00, 0xe8, 0xff, 0xbd, 0x27, 0x14, 0x00, 0xbf, 0xaf, 0x10, 0x00, 0xb0, 0xaf, - 0x21, 0x80, 0x80, 0x00, 0xb0, 0x91, 0x84, 0x8f, 0xc6, 0x11, 0x00, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x21, 0x30, 0x40, 0x00, 0x50, 0x00, 0x03, 0x96, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x62, 0x30, 0x18, 0x00, 0x40, 0x14, 0x01, 0x00, 0x62, - 0x34, 0x50, 0x00, 0x02, 0xa6, 0x68, 0x00, 0x03, 0x92, 0x5f, 0x00, 0x02, 0x92, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x42, 0x30, 0x27, 0x10, 0x02, 0x00, 0x00, - 0x20, 0x04, 0x3c, 0x25, 0x20, 0x04, 0x02, 0x54, 0x00, 0x85, 0x90, 0x24, 0x18, - 0x62, 0x00, 0x26, 0x18, 0x65, 0x00, 0x03, 0x00, 0x63, 0x30, 0x54, 0x00, 0x82, - 0x90, 0x00, 0x00, 0x00, 0x00, 0x26, 0x10, 0x43, 0x00, 0x54, 0x00, 0x82, 0xa0, - 0x56, 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, 0x24, 0x18, 0x62, 0x00, 0x58, - 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, 0x25, 0x10, 0x43, 0x00, 0x58, 0x00, - 0x82, 0xa0, 0xcf, 0x11, 0x00, 0x0c, 0x21, 0x20, 0xc0, 0x00, 0x14, 0x00, 0xbf, - 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x18, 0x00, 0xbd, 0x27, - 0xe8, 0xff, 0xbd, 0x27, 0x14, 0x00, 0xbf, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, - 0x80, 0x80, 0x00, 0xb0, 0x91, 0x84, 0x8f, 0xc6, 0x11, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x21, 0x30, 0x40, 0x00, 0x50, 0x00, 0x03, 0x96, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x62, 0x30, 0x17, 0x00, 0x40, 0x10, 0xfe, 0xff, 0x62, 0x30, - 0x50, 0x00, 0x02, 0xa6, 0x5f, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x03, - 0x00, 0x42, 0x30, 0x68, 0x00, 0x03, 0x92, 0x00, 0x20, 0x04, 0x3c, 0x25, 0x20, - 0x04, 0x02, 0x54, 0x00, 0x85, 0x90, 0x25, 0x18, 0x62, 0x00, 0x26, 0x18, 0x65, - 0x00, 0x03, 0x00, 0x63, 0x30, 0x54, 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, - 0x26, 0x10, 0x43, 0x00, 0x54, 0x00, 0x82, 0xa0, 0x56, 0x00, 0x82, 0x90, 0x00, - 0x00, 0x00, 0x00, 0x24, 0x18, 0x62, 0x00, 0x58, 0x00, 0x82, 0x90, 0x00, 0x00, - 0x00, 0x00, 0x25, 0x10, 0x43, 0x00, 0x58, 0x00, 0x82, 0xa0, 0xcf, 0x11, 0x00, - 0x0c, 0x21, 0x20, 0xc0, 0x00, 0x14, 0x00, 0xbf, 0x8f, 0x10, 0x00, 0xb0, 0x8f, - 0x08, 0x00, 0xe0, 0x03, 0x18, 0x00, 0xbd, 0x27, 0xd8, 0xff, 0xbd, 0x27, 0x24, - 0x00, 0xbf, 0xaf, 0x20, 0x00, 0xb2, 0xaf, 0x1c, 0x00, 0xb1, 0xaf, 0x18, 0x00, - 0xb0, 0xaf, 0x21, 0x88, 0x80, 0x00, 0x24, 0x00, 0x32, 0x8e, 0xb0, 0x91, 0x84, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x11, 0x00, 0x0c, 0xf3, 0x00, 0xb0, 0x30, - 0x21, 0x30, 0x40, 0x00, 0x5f, 0x00, 0x30, 0xa2, 0xf0, 0x00, 0x02, 0x32, 0x49, - 0x00, 0x22, 0xa2, 0x4a, 0x00, 0x23, 0x92, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, - 0x63, 0x30, 0x25, 0x18, 0x62, 0x00, 0x4a, 0x00, 0x23, 0xa2, 0x50, 0x00, 0x22, - 0x96, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x30, 0x06, 0x00, 0x40, 0x10, - 0x03, 0x00, 0x10, 0x32, 0x27, 0x80, 0x10, 0x00, 0x68, 0x00, 0x22, 0x92, 0x00, - 0x00, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x08, 0x24, 0x80, 0x02, 0x02, 0x68, 0x00, - 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, 0x25, 0x80, 0x02, 0x02, 0x28, 0x00, 0x42, - 0x92, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x43, 0x30, 0x4a, 0x00, 0x22, 0x92, - 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x42, 0x30, 0x05, 0x00, 0x40, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x05, 0x00, 0x60, 0x10, 0x00, 0x20, 0x04, 0x3c, 0x54, 0x20, - 0x00, 0x08, 0x25, 0x20, 0x24, 0x02, 0x48, 0x00, 0x60, 0x10, 0x00, 0x20, 0x04, - 0x3c, 0x4a, 0x00, 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x10, 0x02, 0x00, - 0x04, 0x00, 0x42, 0x30, 0x28, 0x00, 0x42, 0xa2, 0x10, 0x27, 0x02, 0x24, 0x10, - 0x00, 0xa2, 0xaf, 0x10, 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x42, 0x24, 0x10, 0x00, 0xa2, 0xaf, 0x10, 0x00, 0xa3, 0x8f, 0xff, 0xff, 0x02, - 0x24, 0x0d, 0x00, 0x62, 0x10, 0xff, 0xff, 0x03, 0x24, 0x2c, 0x00, 0x42, 0x92, - 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x40, 0x10, 0x80, 0x00, 0x02, 0x24, 0x10, - 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x24, 0x10, 0x00, - 0xa2, 0xaf, 0x10, 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x43, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x02, 0x24, 0x2c, 0x00, 0x42, 0xa2, - 0x10, 0x27, 0x02, 0x24, 0x10, 0x00, 0xa2, 0xaf, 0x10, 0x00, 0xa2, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x24, 0x10, 0x00, 0xa2, 0xaf, 0x10, 0x00, - 0xa3, 0x8f, 0xff, 0xff, 0x02, 0x24, 0x0d, 0x00, 0x62, 0x10, 0xff, 0xff, 0x03, - 0x24, 0x2c, 0x00, 0x42, 0x92, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x40, 0x10, - 0x41, 0x00, 0x02, 0x24, 0x10, 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x42, 0x24, 0x10, 0x00, 0xa2, 0xaf, 0x10, 0x00, 0xa2, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0xf5, 0xff, 0x43, 0x14, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x02, - 0x24, 0x2c, 0x00, 0x42, 0xa2, 0x2c, 0x00, 0x23, 0x96, 0x00, 0x00, 0x00, 0x00, - 0x0f, 0x00, 0x65, 0x30, 0x04, 0x00, 0xa2, 0x28, 0x04, 0x00, 0x40, 0x10, 0x00, - 0x04, 0x62, 0x30, 0x02, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0x28, - 0x00, 0x00, 0x01, 0x80, 0x02, 0x3c, 0x21, 0x10, 0x45, 0x00, 0x80, 0x8a, 0x42, - 0x90, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x42, 0xa2, 0x08, 0x00, 0x42, 0x92, - 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x42, 0xa2, 0x00, 0x20, 0x04, 0x3c, 0x25, - 0x20, 0x24, 0x02, 0x54, 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, 0x26, 0x28, - 0x50, 0x00, 0x03, 0x00, 0xa5, 0x30, 0x54, 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, - 0x00, 0x26, 0x10, 0x45, 0x00, 0x54, 0x00, 0x82, 0xa0, 0x56, 0x00, 0x83, 0x90, - 0x00, 0x00, 0x00, 0x00, 0x24, 0x18, 0xa3, 0x00, 0x58, 0x00, 0x82, 0x90, 0x00, - 0x00, 0x00, 0x00, 0x25, 0x10, 0x43, 0x00, 0x58, 0x00, 0x82, 0xa0, 0xcf, 0x11, - 0x00, 0x0c, 0x21, 0x20, 0xc0, 0x00, 0x24, 0x00, 0xbf, 0x8f, 0x20, 0x00, 0xb2, - 0x8f, 0x1c, 0x00, 0xb1, 0x8f, 0x18, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, - 0x28, 0x00, 0xbd, 0x27, 0xe0, 0xff, 0xbd, 0x27, 0x18, 0x00, 0xbf, 0xaf, 0x14, - 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x88, 0x80, 0x00, 0xb0, 0x91, - 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x11, 0x00, 0x0c, 0x21, 0x80, 0xa0, - 0x00, 0x28, 0x00, 0x30, 0xa6, 0xcf, 0x11, 0x00, 0x0c, 0x21, 0x20, 0x40, 0x00, - 0x18, 0x00, 0xbf, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, - 0x00, 0xe0, 0x03, 0x20, 0x00, 0xbd, 0x27, 0xe0, 0xff, 0xbd, 0x27, 0x1c, 0x00, - 0xbf, 0xaf, 0x18, 0x00, 0xb2, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, - 0xaf, 0x21, 0x90, 0x80, 0x00, 0x24, 0x00, 0x51, 0x8e, 0xb0, 0x91, 0x84, 0x8f, - 0x00, 0x00, 0x00, 0x00, 0xc6, 0x11, 0x00, 0x0c, 0x21, 0x80, 0xa0, 0x00, 0x21, - 0x20, 0x40, 0x00, 0x2c, 0x00, 0x50, 0xa6, 0x21, 0x18, 0x00, 0x02, 0x0f, 0x00, - 0x10, 0x32, 0x04, 0x00, 0x02, 0x2e, 0x04, 0x00, 0x40, 0x10, 0x00, 0x04, 0x62, - 0x30, 0x02, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0x80, 0x00, 0x00, - 0x01, 0x80, 0x02, 0x3c, 0x21, 0x10, 0x50, 0x00, 0x80, 0x8a, 0x42, 0x90, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x00, 0x22, 0xa2, 0x08, 0x00, 0x22, 0x92, 0x00, 0x00, - 0x00, 0x00, 0xcf, 0x11, 0x00, 0x0c, 0x0c, 0x00, 0x22, 0xa2, 0x21, 0x20, 0x40, - 0x02, 0xe2, 0x18, 0x00, 0x0c, 0x21, 0x28, 0x00, 0x00, 0x1c, 0x00, 0xbf, 0x8f, - 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, - 0x00, 0xe0, 0x03, 0x20, 0x00, 0xbd, 0x27, 0xe0, 0xff, 0xbd, 0x27, 0x18, 0x00, - 0xbf, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x80, 0x80, - 0x00, 0xb0, 0x91, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x11, 0x00, 0x0c, - 0x21, 0x88, 0xa0, 0x00, 0x21, 0x20, 0x40, 0x00, 0x7f, 0xff, 0x02, 0x24, 0x24, - 0x10, 0x22, 0x02, 0x0b, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, - 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x42, 0x30, 0x02, 0x00, 0x40, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0xa2, 0x50, 0x00, 0x02, 0x96, - 0x00, 0x00, 0x00, 0x00, 0xbe, 0x20, 0x00, 0x08, 0x80, 0x00, 0x42, 0x34, 0x50, - 0x00, 0x02, 0x96, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x42, 0x30, 0x50, 0x00, - 0x02, 0xa6, 0x00, 0x80, 0x02, 0x3c, 0x1c, 0x36, 0x42, 0x24, 0x04, 0x00, 0x02, - 0xae, 0x74, 0x00, 0x00, 0xae, 0x00, 0x80, 0x02, 0x3c, 0xb0, 0x45, 0x42, 0x24, - 0x34, 0x00, 0x02, 0xae, 0xcf, 0x11, 0x00, 0x0c, 0x2a, 0x00, 0x11, 0xa6, 0x18, - 0x00, 0xbf, 0x8f, 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, - 0xe0, 0x03, 0x20, 0x00, 0xbd, 0x27, 0xe8, 0xff, 0xbd, 0x27, 0x10, 0x00, 0xbf, - 0xaf, 0xb0, 0x91, 0x84, 0x8f, 0xc6, 0x11, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0xcf, 0x11, 0x00, 0x0c, 0x21, 0x20, 0x40, 0x00, 0x10, 0x00, 0xbf, 0x8f, 0x18, - 0x00, 0xbd, 0x27, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, - 0xbd, 0x27, 0x18, 0x00, 0xbf, 0xaf, 0x14, 0x00, 0xb1, 0xaf, 0x10, 0x00, 0xb0, - 0xaf, 0x21, 0x88, 0x80, 0x00, 0xb0, 0x91, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0xc6, 0x11, 0x00, 0x0c, 0x21, 0x80, 0xa0, 0x00, 0x68, 0x00, 0x30, 0xa2, 0xcf, - 0x11, 0x00, 0x0c, 0x21, 0x20, 0x40, 0x00, 0x18, 0x00, 0xbf, 0x8f, 0x14, 0x00, - 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x20, 0x00, 0xbd, - 0x27, 0xd8, 0xff, 0xbd, 0x27, 0x24, 0x00, 0xbf, 0xaf, 0x20, 0x00, 0xb2, 0xaf, - 0x1c, 0x00, 0xb1, 0xaf, 0x18, 0x00, 0xb0, 0xaf, 0x21, 0x88, 0x80, 0x00, 0x48, - 0x00, 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x42, 0x2c, 0x05, 0x00, - 0x40, 0x10, 0x08, 0x00, 0x02, 0x24, 0x8f, 0x1e, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x80, 0x21, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x23, 0x92, - 0x00, 0x00, 0x00, 0x00, 0x85, 0x00, 0x62, 0x14, 0x00, 0x00, 0x00, 0x00, 0x65, - 0x00, 0x23, 0x92, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x03, 0x00, 0x21, 0x10, - 0x43, 0x00, 0x00, 0x11, 0x02, 0x00, 0x01, 0x80, 0x03, 0x3c, 0x21, 0x18, 0x62, - 0x00, 0x88, 0x9d, 0x63, 0x8c, 0x06, 0x00, 0x02, 0x24, 0x7a, 0x00, 0x62, 0x10, - 0x00, 0x20, 0x10, 0x3c, 0x24, 0x00, 0x32, 0x8e, 0xb0, 0x91, 0x84, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0xc6, 0x11, 0x00, 0x0c, 0x25, 0x80, 0x30, 0x02, 0x21, 0x20, - 0x40, 0x00, 0x0a, 0x00, 0x00, 0xa6, 0x0c, 0x00, 0x00, 0xa6, 0x12, 0x00, 0x00, - 0xa6, 0x14, 0x00, 0x00, 0xa6, 0x18, 0x00, 0x20, 0xa6, 0x1a, 0x00, 0x20, 0xa6, - 0xff, 0xff, 0x02, 0x34, 0x1c, 0x00, 0x22, 0xa6, 0x28, 0x00, 0x20, 0xa6, 0x2a, - 0x00, 0x20, 0xa6, 0x2c, 0x00, 0x20, 0xa6, 0x40, 0x00, 0x20, 0xae, 0x44, 0x00, - 0x20, 0xae, 0x4b, 0x00, 0x20, 0xa2, 0x01, 0x00, 0x02, 0x24, 0x4c, 0x00, 0x02, - 0xa2, 0x4d, 0x00, 0x02, 0xa2, 0x4e, 0x00, 0x02, 0xa2, 0x4f, 0x00, 0x00, 0xa2, - 0x56, 0x00, 0x00, 0xa2, 0x20, 0x00, 0x02, 0x24, 0x50, 0x00, 0x22, 0xa6, 0x49, - 0x00, 0x20, 0xa2, 0x4a, 0x00, 0x20, 0xa2, 0x54, 0x00, 0x00, 0xa2, 0x57, 0x00, - 0x00, 0xa2, 0x58, 0x00, 0x00, 0xa2, 0x59, 0x00, 0x00, 0xa2, 0x5a, 0x00, 0x00, - 0xa2, 0x5b, 0x00, 0x00, 0xa2, 0x5c, 0x00, 0x20, 0xa2, 0x5d, 0x00, 0x20, 0xa2, - 0x5e, 0x00, 0x20, 0xa2, 0x5f, 0x00, 0x20, 0xa2, 0x60, 0x00, 0x20, 0xa2, 0x61, - 0x00, 0x20, 0xa2, 0x62, 0x00, 0x20, 0xa2, 0x63, 0x00, 0x20, 0xa2, 0x68, 0x00, - 0x20, 0xa2, 0x6a, 0x00, 0x20, 0xa6, 0x6c, 0x00, 0x20, 0xae, 0x00, 0x80, 0x02, - 0x3c, 0x1c, 0x36, 0x42, 0x24, 0x04, 0x00, 0x22, 0xae, 0x74, 0x00, 0x20, 0xae, - 0x00, 0x80, 0x02, 0x3c, 0xb0, 0x45, 0x42, 0x24, 0x34, 0x00, 0x22, 0xae, 0x24, - 0x00, 0x22, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x40, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x28, 0x00, 0x40, 0xa2, 0x10, 0x27, 0x02, 0x24, 0x10, 0x00, 0xa2, - 0xaf, 0x10, 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x24, - 0x10, 0x00, 0xa2, 0xaf, 0x10, 0x00, 0xa3, 0x8f, 0xff, 0xff, 0x02, 0x24, 0x0d, - 0x00, 0x62, 0x10, 0xff, 0xff, 0x03, 0x24, 0x2c, 0x00, 0x42, 0x92, 0x00, 0x00, - 0x00, 0x00, 0x0a, 0x00, 0x40, 0x10, 0x80, 0x00, 0x02, 0x24, 0x10, 0x00, 0xa2, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x24, 0x10, 0x00, 0xa2, 0xaf, - 0x10, 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x43, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x00, 0x02, 0x24, 0x2c, 0x00, 0x42, 0xa2, 0x10, 0x27, - 0x02, 0x24, 0x10, 0x00, 0xa2, 0xaf, 0x10, 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x42, 0x24, 0x10, 0x00, 0xa2, 0xaf, 0x10, 0x00, 0xa3, 0x8f, - 0xff, 0xff, 0x02, 0x24, 0x0d, 0x00, 0x62, 0x10, 0xff, 0xff, 0x03, 0x24, 0x2c, - 0x00, 0x42, 0x92, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x40, 0x10, 0x41, 0x00, - 0x02, 0x24, 0x10, 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, - 0x24, 0x10, 0x00, 0xa2, 0xaf, 0x10, 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0xf5, 0xff, 0x43, 0x14, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x02, 0x24, 0x2c, - 0x00, 0x42, 0xa2, 0x09, 0x00, 0x02, 0x24, 0x78, 0x00, 0x42, 0xa2, 0x01, 0x80, - 0x02, 0x3c, 0x80, 0x8a, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x42, - 0xa2, 0x08, 0x00, 0x42, 0x92, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x42, 0xa2, - 0xcf, 0x11, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, 0x20, 0x02, 0xe2, - 0x18, 0x00, 0x0c, 0x21, 0x28, 0x00, 0x00, 0x24, 0x00, 0xbf, 0x8f, 0x20, 0x00, - 0xb2, 0x8f, 0x1c, 0x00, 0xb1, 0x8f, 0x18, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, - 0x03, 0x28, 0x00, 0xbd, 0x27, 0xe0, 0xff, 0xbd, 0x27, 0x1c, 0x00, 0xbf, 0xaf, - 0x18, 0x00, 0xb0, 0xaf, 0x48, 0x00, 0x82, 0x90, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x42, 0x2c, 0x05, 0x00, 0x40, 0x10, 0x08, 0x00, 0x02, 0x24, 0xf4, 0x1e, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xe1, 0x21, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x48, 0x00, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x62, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x65, 0x00, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, - 0x10, 0x03, 0x00, 0x21, 0x10, 0x43, 0x00, 0x00, 0x11, 0x02, 0x00, 0x01, 0x80, - 0x03, 0x3c, 0x21, 0x18, 0x62, 0x00, 0x88, 0x9d, 0x63, 0x8c, 0x06, 0x00, 0x02, - 0x24, 0x41, 0x00, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x90, 0x8c, - 0xb0, 0x91, 0x84, 0x8f, 0xc6, 0x11, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x21, - 0x20, 0x40, 0x00, 0x28, 0x00, 0x00, 0xa2, 0x10, 0x27, 0x02, 0x24, 0x10, 0x00, - 0xa2, 0xaf, 0x10, 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, - 0x24, 0x10, 0x00, 0xa2, 0xaf, 0x10, 0x00, 0xa3, 0x8f, 0xff, 0xff, 0x02, 0x24, - 0x0d, 0x00, 0x62, 0x10, 0xff, 0xff, 0x03, 0x24, 0x2c, 0x00, 0x02, 0x92, 0x00, - 0x00, 0x00, 0x00, 0x0a, 0x00, 0x40, 0x10, 0x80, 0x00, 0x02, 0x24, 0x10, 0x00, - 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x24, 0x10, 0x00, 0xa2, - 0xaf, 0x10, 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x43, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x02, 0x24, 0x2c, 0x00, 0x02, 0xa2, 0x10, - 0x27, 0x02, 0x24, 0x10, 0x00, 0xa2, 0xaf, 0x10, 0x00, 0xa2, 0x8f, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x42, 0x24, 0x10, 0x00, 0xa2, 0xaf, 0x10, 0x00, 0xa3, - 0x8f, 0xff, 0xff, 0x02, 0x24, 0x0d, 0x00, 0x62, 0x10, 0xff, 0xff, 0x03, 0x24, - 0x2c, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x40, 0x10, 0x41, - 0x00, 0x02, 0x24, 0x10, 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x42, 0x24, 0x10, 0x00, 0xa2, 0xaf, 0x10, 0x00, 0xa2, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0xf5, 0xff, 0x43, 0x14, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x02, 0x24, - 0x2c, 0x00, 0x02, 0xa2, 0x09, 0x00, 0x02, 0x24, 0x78, 0x00, 0x02, 0xa2, 0x01, - 0x80, 0x02, 0x3c, 0x80, 0x8a, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, - 0x02, 0xa2, 0x08, 0x00, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0xcf, 0x11, 0x00, - 0x0c, 0x0c, 0x00, 0x02, 0xa2, 0x1c, 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xb0, 0x8f, - 0x08, 0x00, 0xe0, 0x03, 0x20, 0x00, 0xbd, 0x27, 0xe8, 0xff, 0xbd, 0x27, 0x14, - 0x00, 0xbf, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x21, 0x80, 0x80, 0x00, 0xd0, 0x92, - 0x83, 0x27, 0x23, 0x18, 0xa3, 0x00, 0x80, 0x10, 0x03, 0x00, 0x21, 0x10, 0x43, - 0x00, 0x00, 0x19, 0x02, 0x00, 0x21, 0x10, 0x43, 0x00, 0x00, 0x1a, 0x02, 0x00, - 0x21, 0x10, 0x43, 0x00, 0x00, 0x1c, 0x02, 0x00, 0x21, 0x10, 0x43, 0x00, 0x23, - 0x10, 0x02, 0x00, 0x03, 0x11, 0x02, 0x00, 0x65, 0x00, 0x02, 0xa2, 0x08, 0x00, - 0xc2, 0x28, 0x07, 0x00, 0x40, 0x10, 0x48, 0x00, 0x06, 0xa2, 0x40, 0x11, 0x06, - 0x00, 0x00, 0x01, 0x42, 0x24, 0x04, 0x00, 0xa3, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x09, 0x22, 0x00, 0x08, 0x21, 0x10, 0x43, 0x00, 0x08, 0x00, 0x02, 0x24, 0x1f, - 0x00, 0xc2, 0x14, 0x06, 0x00, 0x02, 0x24, 0x28, 0x00, 0xa3, 0x8c, 0x00, 0x00, - 0x00, 0x00, 0x1b, 0x00, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xa2, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x42, 0x24, 0x24, 0x00, 0x02, 0xae, - 0x08, 0x00, 0xc2, 0x28, 0x05, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x8f, - 0x1e, 0x00, 0x0c, 0x21, 0x20, 0x00, 0x02, 0x13, 0x22, 0x00, 0x08, 0x00, 0x00, - 0x00, 0x00, 0xe9, 0x20, 0x00, 0x0c, 0x21, 0x20, 0x00, 0x02, 0x2c, 0x92, 0x82, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x1f, 0x22, 0x00, 0x08, 0x30, 0x00, 0x10, 0xae, 0x2c, 0x92, 0x83, 0x8f, 0x00, - 0x00, 0x00, 0x00, 0x30, 0x00, 0x62, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, - 0x02, 0xae, 0x30, 0x00, 0x70, 0xac, 0x2c, 0x92, 0x90, 0xaf, 0x14, 0x00, 0xbf, - 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x18, 0x00, 0xbd, 0x27, - 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x2e, 0x2e, 0x2f, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x73, 0x00, 0x00, 0x50, 0x48, 0x00, 0x80, 0x8c, 0x48, 0x00, - 0x80, 0xc8, 0x48, 0x00, 0x80, 0xec, 0x48, 0x00, 0x80, 0x30, 0x49, 0x00, 0x80, - 0xa0, 0x4b, 0x00, 0x80, 0xa4, 0x49, 0x00, 0x80, 0xa0, 0x4b, 0x00, 0x80, 0xc0, - 0x49, 0x00, 0x80, 0xdc, 0x49, 0x00, 0x80, 0x04, 0x4a, 0x00, 0x80, 0x18, 0x4a, - 0x00, 0x80, 0x28, 0x4a, 0x00, 0x80, 0xa0, 0x4b, 0x00, 0x80, 0x30, 0x4a, 0x00, - 0x80, 0x40, 0x4a, 0x00, 0x80, 0x50, 0x4a, 0x00, 0x80, 0xa0, 0x4b, 0x00, 0x80, - 0xa0, 0x4b, 0x00, 0x80, 0x70, 0x4a, 0x00, 0x80, 0x84, 0x4a, 0x00, 0x80, 0xac, - 0x4a, 0x00, 0x80, 0xc0, 0x4a, 0x00, 0x80, 0xa0, 0x4b, 0x00, 0x80, 0xa0, 0x4b, - 0x00, 0x80, 0xa0, 0x4b, 0x00, 0x80, 0xa0, 0x4b, 0x00, 0x80, 0xa0, 0x4b, 0x00, - 0x80, 0xa0, 0x4b, 0x00, 0x80, 0x14, 0x4b, 0x00, 0x80, 0x60, 0x4c, 0x00, 0x80, - 0x9c, 0x4c, 0x00, 0x80, 0xd8, 0x4c, 0x00, 0x80, 0xfc, 0x4c, 0x00, 0x80, 0x18, - 0x4d, 0x00, 0x80, 0xb4, 0x4e, 0x00, 0x80, 0x44, 0x4d, 0x00, 0x80, 0xb4, 0x4e, - 0x00, 0x80, 0x60, 0x4d, 0x00, 0x80, 0x7c, 0x4d, 0x00, 0x80, 0xa4, 0x4d, 0x00, - 0x80, 0xb8, 0x4d, 0x00, 0x80, 0xc8, 0x4d, 0x00, 0x80, 0xb4, 0x4e, 0x00, 0x80, - 0xd0, 0x4d, 0x00, 0x80, 0xe0, 0x4d, 0x00, 0x80, 0xf0, 0x4d, 0x00, 0x80, 0xb4, - 0x4e, 0x00, 0x80, 0xb4, 0x4e, 0x00, 0x80, 0x10, 0x4e, 0x00, 0x80, 0x24, 0x4e, - 0x00, 0x80, 0x4c, 0x4e, 0x00, 0x80, 0x60, 0x4e, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x00, 0xe4, 0x55, 0x00, 0x80, 0xe8, 0x57, 0x00, 0x80, 0xe4, 0x55, 0x00, 0x80, - 0x68, 0x56, 0x00, 0x80, 0xe8, 0x57, 0x00, 0x80, 0x90, 0x56, 0x00, 0x80, 0x90, - 0x56, 0x00, 0x80, 0x90, 0x56, 0x00, 0x80, 0xe4, 0x55, 0x00, 0x80, 0x90, 0x56, - 0x00, 0x80, 0x90, 0x56, 0x00, 0x80, 0xe8, 0x57, 0x00, 0x80, 0xe8, 0x57, 0x00, - 0x80, 0xe8, 0x57, 0x00, 0x80, 0xe8, 0x57, 0x00, 0x80, 0xe4, 0x55, 0x00, 0x80, - 0x90, 0x56, 0x00, 0x80, 0x90, 0x56, 0x00, 0x80, 0xe8, 0x57, 0x00, 0x80, 0xe4, - 0x55, 0x00, 0x80, 0xe8, 0x57, 0x00, 0x80, 0xe8, 0x57, 0x00, 0x80, 0xe8, 0x57, - 0x00, 0x80, 0xe4, 0x55, 0x00, 0x80, 0xe8, 0x57, 0x00, 0x80, 0xe8, 0x57, 0x00, - 0x80, 0xe8, 0x57, 0x00, 0x80, 0xe4, 0x55, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x34, 0x00, 0x00, 0x00, 0x41, 0x0b, 0x00, - 0x00, 0x0b, 0x00, 0x0c, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x40, 0x00, 0x0c, 0x00, - 0x74, 0x00, 0x04, 0x00, 0x6e, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xe4, - 0x00, 0x04, 0x00, 0x40, 0x00, 0x0c, 0x00, 0xb4, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x08, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xe8, 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x24, 0x00, 0x18, 0x5d, 0x10, 0x6f, 0x0d, - 0x00, 0x0c, 0x00, 0x09, 0x00, 0x06, 0x00, 0x03, 0x80, 0x01, 0x00, 0x01, 0xc0, - 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, 0x0c, 0x00, 0x30, 0x00, 0x08, 0x00, - 0x06, 0x00, 0x04, 0x00, 0x20, 0x00, 0x08, 0x00, 0x02, 0x00, 0x06, 0x00, 0x04, - 0x00, 0x02, 0x00, 0x10, 0x00, 0x01, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, - 0x0c, 0x00, 0x04, 0xfa, 0xc8, 0x96, 0x64, 0x32, 0x19, 0x14, 0x0f, 0x0a, 0x08, - 0x06, 0x05, 0x04, 0x04, 0x04, 0xc4, 0x36, 0x00, 0x80, 0x50, 0x36, 0x00, 0x80, - 0x94, 0x36, 0x00, 0x80, 0xc4, 0x36, 0x00, 0x80, 0xe4, 0x3d, 0x00, 0x80, 0xdc, - 0x3b, 0x00, 0x80, 0xe4, 0x3d, 0x00, 0x80, 0x64, 0x3c, 0x00, 0x80, 0xe4, 0x38, - 0x00, 0x80, 0x10, 0x38, 0x00, 0x80, 0xe4, 0x38, 0x00, 0x80, 0x20, 0x3e, 0x00, - 0x80, 0x64, 0x37, 0x00, 0x80, 0x64, 0x37, 0x00, 0x80, 0x64, 0x37, 0x00, 0x80, - 0x64, 0x37, 0x00, 0x80, 0xf8, 0x36, 0x00, 0x80, 0xf8, 0x36, 0x00, 0x80, 0xf8, - 0x36, 0x00, 0x80, 0xf8, 0x36, 0x00, 0x80, 0xf8, 0x36, 0x00, 0x80, 0xf8, 0x36, - 0x00, 0x80, 0xf8, 0x36, 0x00, 0x80, 0xf8, 0x36, 0x00, 0x80, 0x8c, 0x37, 0x00, - 0x80, 0x8c, 0x37, 0x00, 0x80, 0x8c, 0x37, 0x00, 0x80, 0x8c, 0x37, 0x00, 0x80, - 0x8c, 0x37, 0x00, 0x80, 0x8c, 0x37, 0x00, 0x80, 0x8c, 0x37, 0x00, 0x80, 0x8c, - 0x37, 0x00, 0x80, 0x8c, 0x37, 0x00, 0x80, 0x8c, 0x37, 0x00, 0x80, 0x8c, 0x37, - 0x00, 0x80, 0x8c, 0x37, 0x00, 0x80, 0x8c, 0x37, 0x00, 0x80, 0x8c, 0x37, 0x00, - 0x80, 0x8c, 0x37, 0x00, 0x80, 0x8c, 0x37, 0x00, 0x80, 0xf0, 0x3e, 0x00, 0x80, - 0xf0, 0x3e, 0x00, 0x80, 0xf0, 0x3e, 0x00, 0x80, 0xf0, 0x3e, 0x00, 0x80, 0xf0, - 0x3e, 0x00, 0x80, 0xf0, 0x3e, 0x00, 0x80, 0xf0, 0x3e, 0x00, 0x80, 0xf0, 0x3e, - 0x00, 0x80, 0xe0, 0x3f, 0x00, 0x80, 0xfc, 0x3f, 0x00, 0x80, 0x9c, 0x40, 0x00, - 0x80, 0x74, 0x40, 0x00, 0x80, 0x88, 0x40, 0x00, 0x80, 0xe8, 0x40, 0x00, 0x80, - 0xf0, 0x3e, 0x00, 0x80, 0xf0, 0x3e, 0x00, 0x80, 0xf0, 0x3e, 0x00, 0x80, 0xf0, - 0x3e, 0x00, 0x80, 0xf0, 0x3e, 0x00, 0x80, 0xf0, 0x3e, 0x00, 0x80, 0xf0, 0x3e, - 0x00, 0x80, 0xf0, 0x3e, 0x00, 0x80, 0xf0, 0x3e, 0x00, 0x80, 0xf0, 0x3e, 0x00, - 0x80, 0xf0, 0x3e, 0x00, 0x80, 0xf0, 0x3e, 0x00, 0x80, 0xf0, 0x3e, 0x00, 0x80, - 0xf0, 0x3e, 0x00, 0x80, 0xf0, 0x3e, 0x00, 0x80, 0xf0, 0x3e, 0x00, 0x80, 0xf0, - 0x3e, 0x00, 0x80, 0xf0, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, - 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, - 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, - 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, - 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, - 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, - 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, - 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, - 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, - 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, - 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0x94, 0x3f, 0x00, 0x80, - 0x94, 0x3f, 0x00, 0x80, 0x94, 0x3f, 0x00, 0x80, 0x94, 0x3f, 0x00, 0x80, 0x94, - 0x3f, 0x00, 0x80, 0x94, 0x3f, 0x00, 0x80, 0x94, 0x3f, 0x00, 0x80, 0x94, 0x3f, - 0x00, 0x80, 0x94, 0x3f, 0x00, 0x80, 0x94, 0x3f, 0x00, 0x80, 0x94, 0x3f, 0x00, - 0x80, 0x94, 0x3f, 0x00, 0x80, 0x94, 0x3f, 0x00, 0x80, 0x94, 0x3f, 0x00, 0x80, - 0x94, 0x3f, 0x00, 0x80, 0x94, 0x3f, 0x00, 0x80, 0x94, 0x3f, 0x00, 0x80, 0x94, - 0x3f, 0x00, 0x80, 0x94, 0x3f, 0x00, 0x80, 0x94, 0x3f, 0x00, 0x80, 0x94, 0x3f, - 0x00, 0x80, 0x94, 0x3f, 0x00, 0x80, 0x94, 0x3f, 0x00, 0x80, 0x94, 0x3f, 0x00, - 0x80, 0x94, 0x3f, 0x00, 0x80, 0x94, 0x3f, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, - 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, - 0x3e, 0x00, 0x80, 0x30, 0x3f, 0x00, 0x80, 0xcc, 0x3f, 0x00, 0x80, 0xcc, 0x3f, - 0x00, 0x80, 0xcc, 0x3f, 0x00, 0x80, 0xcc, 0x3f, 0x00, 0x80, 0xcc, 0x3f, 0x00, - 0x80, 0xcc, 0x3f, 0x00, 0x80, 0xcc, 0x3f, 0x00, 0x80, 0xcc, 0x3f, 0x00, 0x80, - 0xcc, 0x3f, 0x00, 0x80, 0xcc, 0x3f, 0x00, 0x80, 0xcc, 0x3f, 0x00, 0x80, 0xcc, - 0x3f, 0x00, 0x80, 0xcc, 0x3f, 0x00, 0x80, 0xcc, 0x3f, 0x00, 0x80, 0xcc, 0x3f, - 0x00, 0x80, 0xcc, 0x3f, 0x00, 0x80, 0xcc, 0x3f, 0x00, 0x80, 0xcc, 0x3f, 0x00, - 0x80, 0xcc, 0x3f, 0x00, 0x80, 0xcc, 0x3f, 0x00, 0x80, 0xcc, 0x3f, 0x00, 0x80, - 0xcc, 0x3f, 0x00, 0x80, 0xcc, 0x3f, 0x00, 0x80, 0xcc, 0x3f, 0x00, 0x80, 0xcc, - 0x3f, 0x00, 0x80, 0xcc, 0x3f, 0x00, 0x80, 0x44, 0x3f, 0x00, 0x80, 0x58, 0x3f, - 0x00, 0x80, 0x6c, 0x3f, 0x00, 0x80, 0x80, 0x3f, 0x00, 0x80, 0xf0, 0x3e, 0x00, - 0x80, 0xf0, 0x3e, 0x00, 0x80, 0xf0, 0x3e, 0x00, 0x80, 0xf0, 0x3e, 0x00, 0x80, - 0xf0, 0x3e, 0x00, 0x80, 0xf0, 0x3e, 0x00, 0x80, 0xf0, 0x3e, 0x00, 0x80, 0xf0, - 0x3e, 0x00, 0x80, 0xf0, 0x3e, 0x00, 0x80, 0xf0, 0x3e, 0x00, 0x80, 0xf0, 0x3e, - 0x00, 0x80, 0xf0, 0x3e, 0x00, 0x80, 0xf0, 0x3e, 0x00, 0x80, 0xf0, 0x3e, 0x00, - 0x80, 0xf0, 0x3e, 0x00, 0x80, 0xf0, 0x3e, 0x00, 0x80, 0xf0, 0x3e, 0x00, 0x80, - 0xf0, 0x3e, 0x00, 0x80, 0xf0, 0x3e, 0x00, 0x80, 0xf0, 0x3e, 0x00, 0x80, 0xf0, - 0x3e, 0x00, 0x80, 0xf0, 0x3e, 0x00, 0x80, 0xf0, 0x3e, 0x00, 0x80, 0xf0, 0x3e, - 0x00, 0x80, 0xf0, 0x3e, 0x00, 0x80, 0xf0, 0x3e, 0x00, 0x80, 0xf0, 0x3e, 0x00, - 0x80, 0xf0, 0x3e, 0x00, 0x80, 0xf0, 0x3e, 0x00, 0x80, 0xf0, 0x3e, 0x00, 0x80, - 0xf0, 0x3e, 0x00, 0x80, 0xf0, 0x3e, 0x00, 0x80, 0xf0, 0x3e, 0x00, 0x80, 0xec, - 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, - 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, - 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, - 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, - 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, - 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, - 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, - 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, - 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, - 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, - 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, - 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, - 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, - 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, - 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, - 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, - 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, - 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, - 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, - 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, - 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, - 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, - 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, - 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, - 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, - 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, - 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, - 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, - 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xec, 0x3e, - 0x00, 0x80, 0xec, 0x3e, 0x00, 0x80, 0xf8, 0x3c, 0x00, 0x80, 0xf8, 0x3c, 0x00, - 0x80, 0xf8, 0x3c, 0x00, 0x80, 0xf8, 0x3c, 0x00, 0x80, 0xf8, 0x3c, 0x00, 0x80, - 0xf8, 0x3c, 0x00, 0x80, 0xf8, 0x3c, 0x00, 0x80, 0xf8, 0x3c, 0x00, 0x80, 0x28, - 0x3d, 0x00, 0x80, 0xa4, 0x3d, 0x00, 0x80, 0x38, 0x3d, 0x00, 0x80, 0xf8, 0x3c, - 0x00, 0x80, 0xf8, 0x3c, 0x00, 0x80, 0x6c, 0x3d, 0x00, 0x80, 0xf8, 0x3c, 0x00, - 0x80, 0xf8, 0x3c, 0x00, 0x80, 0xf8, 0x3c, 0x00, 0x80, 0xf8, 0x3c, 0x00, 0x80, - 0xf8, 0x3c, 0x00, 0x80, 0xf8, 0x3c, 0x00, 0x80, 0xf8, 0x3c, 0x00, 0x80, 0xf8, - 0x3c, 0x00, 0x80, 0xf8, 0x3c, 0x00, 0x80, 0xf8, 0x3c, 0x00, 0x80, 0xf8, 0x3c, - 0x00, 0x80, 0xf8, 0x3c, 0x00, 0x80, 0xf8, 0x3c, 0x00, 0x80, 0xf8, 0x3c, 0x00, - 0x80, 0xf8, 0x3c, 0x00, 0x80, 0xf8, 0x3c, 0x00, 0x80, 0xf8, 0x3c, 0x00, 0x80, - 0xf8, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, - 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, - 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, - 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, - 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, - 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, - 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, - 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, - 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, - 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, - 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, - 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, - 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, - 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, - 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, - 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, - 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, - 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, - 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, - 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, - 0xf4, 0x3c, 0x00, 0x80, 0xe4, 0x3c, 0x00, 0x80, 0xe4, 0x3c, 0x00, 0x80, 0xe4, - 0x3c, 0x00, 0x80, 0xe4, 0x3c, 0x00, 0x80, 0xe4, 0x3c, 0x00, 0x80, 0xe4, 0x3c, - 0x00, 0x80, 0xe4, 0x3c, 0x00, 0x80, 0xe4, 0x3c, 0x00, 0x80, 0xe4, 0x3c, 0x00, - 0x80, 0xe4, 0x3c, 0x00, 0x80, 0xe4, 0x3c, 0x00, 0x80, 0xe4, 0x3c, 0x00, 0x80, - 0xe4, 0x3c, 0x00, 0x80, 0xe4, 0x3c, 0x00, 0x80, 0xe4, 0x3c, 0x00, 0x80, 0xe4, - 0x3c, 0x00, 0x80, 0xe4, 0x3c, 0x00, 0x80, 0xe4, 0x3c, 0x00, 0x80, 0xe4, 0x3c, - 0x00, 0x80, 0xe4, 0x3c, 0x00, 0x80, 0xe4, 0x3c, 0x00, 0x80, 0xe4, 0x3c, 0x00, - 0x80, 0xe4, 0x3c, 0x00, 0x80, 0xe4, 0x3c, 0x00, 0x80, 0xe4, 0x3c, 0x00, 0x80, - 0xe4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, - 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf8, 0x3c, 0x00, 0x80, 0xf8, 0x3c, - 0x00, 0x80, 0xf8, 0x3c, 0x00, 0x80, 0xf8, 0x3c, 0x00, 0x80, 0xf8, 0x3c, 0x00, - 0x80, 0xf8, 0x3c, 0x00, 0x80, 0xf8, 0x3c, 0x00, 0x80, 0xf8, 0x3c, 0x00, 0x80, - 0xf8, 0x3c, 0x00, 0x80, 0xf8, 0x3c, 0x00, 0x80, 0xf8, 0x3c, 0x00, 0x80, 0xf8, - 0x3c, 0x00, 0x80, 0xf8, 0x3c, 0x00, 0x80, 0xf8, 0x3c, 0x00, 0x80, 0xf8, 0x3c, - 0x00, 0x80, 0xf8, 0x3c, 0x00, 0x80, 0xf8, 0x3c, 0x00, 0x80, 0xf8, 0x3c, 0x00, - 0x80, 0xf8, 0x3c, 0x00, 0x80, 0xf8, 0x3c, 0x00, 0x80, 0xf8, 0x3c, 0x00, 0x80, - 0xf8, 0x3c, 0x00, 0x80, 0xf8, 0x3c, 0x00, 0x80, 0xf8, 0x3c, 0x00, 0x80, 0xf8, - 0x3c, 0x00, 0x80, 0xf8, 0x3c, 0x00, 0x80, 0xf8, 0x3c, 0x00, 0x80, 0xf8, 0x3c, - 0x00, 0x80, 0xf8, 0x3c, 0x00, 0x80, 0xf8, 0x3c, 0x00, 0x80, 0xf8, 0x3c, 0x00, - 0x80, 0xf8, 0x3c, 0x00, 0x80, 0xf8, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, - 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, - 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, - 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, - 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, - 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, - 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, - 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, - 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, - 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, - 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, - 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, - 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, - 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, - 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, - 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, - 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, - 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, - 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, - 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, - 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, - 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, - 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, - 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, - 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, - 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, - 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, - 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, - 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, - 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, 0x3c, 0x00, 0x80, 0xf4, - 0x3c, 0x00, 0x80, 0xc0, 0x39, 0x00, 0x80, 0x90, 0x43, 0x00, 0x80, 0xe0, 0x42, - 0x00, 0x80, 0xe0, 0x42, 0x00, 0x80, 0xc0, 0x39, 0x00, 0x80, 0x90, 0x43, 0x00, - 0x80, 0xe0, 0x42, 0x00, 0x80, 0xe0, 0x42, 0x00, 0x80, 0xc0, 0x39, 0x00, 0x80, - 0x90, 0x43, 0x00, 0x80, 0xe0, 0x42, 0x00, 0x80, 0xe0, 0x42, 0x00, 0x80, 0xc0, - 0x39, 0x00, 0x80, 0x90, 0x43, 0x00, 0x80, 0xe0, 0x42, 0x00, 0x80, 0xe0, 0x42, - 0x00, 0x80, 0x84, 0x39, 0x00, 0x80, 0x90, 0x43, 0x00, 0x80, 0xe0, 0x42, 0x00, - 0x80, 0xe0, 0x42, 0x00, 0x80, 0xac, 0x43, 0x00, 0x80, 0x90, 0x43, 0x00, 0x80, - 0xe0, 0x42, 0x00, 0x80, 0xe0, 0x42, 0x00, 0x80, 0x28, 0x42, 0x00, 0x80, 0x90, - 0x43, 0x00, 0x80, 0xe0, 0x42, 0x00, 0x80, 0xe0, 0x42, 0x00, 0x80, 0xf8, 0x41, - 0x00, 0x80, 0x90, 0x43, 0x00, 0x80, 0xe0, 0x42, 0x00, 0x80, 0xe0, 0x42, 0x00, - 0x80, 0xf0, 0x3e, 0x00, 0x80, 0x1c, 0x40, 0x00, 0x80, 0x34, 0x40, 0x00, 0x80, - 0x3c, 0x40, 0x00, 0x80, 0xf0, 0x3e, 0x00, 0x80, 0x38, 0x41, 0x00, 0x80, 0x44, - 0x41, 0x00, 0x80, 0x4c, 0x41, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x2e, 0x2e, 0x2f, 0x73, 0x6d, 0x61, 0x72, 0x74, 0x66, 0x65, 0x70, - 0x2e, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2e, 0x2e, 0x2f, 0x73, 0x6d, 0x61, 0x72, 0x74, 0x6d, 0x61, 0x69, 0x6e, 0x2e, - 0x63, 0x00, 0x00, 0x2e, 0x2e, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, - 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x2e, 0x2f, 0x74, 0x69, 0x6d, 0x65, - 0x72, 0x2e, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x01, 0x00, 0x00, - 0x08, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0xb4, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x2e, 0x2e, - 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x69, 0x6e, 0x74, 0x2e, 0x63, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, 0x23, 0xa6, 0xb2, 0x40, 0x28, 0x23, 0x29, - 0x62, 0x69, 0x6f, 0x73, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x68, 0x20, 0x20, 0x20, - 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, - 0x2e, 0x33, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, - 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, 0x31, 0x36, - 0x3a, 0x34, 0x32, 0x3a, 0x31, 0x37, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, - 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, - 0x2e, 0x32, 0x31, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, - 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x30, 0x2f, 0x30, 0x37, 0x20, 0x31, - 0x37, 0x3a, 0x31, 0x38, 0x3a, 0x30, 0x36, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, - 0x29, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x2e, 0x63, - 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, - 0x31, 0x2e, 0x33, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, - 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x30, 0x39, 0x2f, 0x31, 0x36, 0x20, 0x32, - 0x33, 0x3a, 0x32, 0x32, 0x3a, 0x30, 0x35, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, - 0x29, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x2e, 0x68, - 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, - 0x33, 0x2e, 0x33, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, - 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, 0x31, - 0x36, 0x3a, 0x34, 0x33, 0x3a, 0x33, 0x37, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, - 0x29, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, - 0x33, 0x2e, 0x31, 0x38, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, - 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x32, 0x2f, 0x32, 0x36, 0x20, - 0x32, 0x32, 0x3a, 0x30, 0x37, 0x3a, 0x35, 0x39, 0x20, 0x24, 0x00, 0x40, 0x28, - 0x23, 0x29, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x68, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, - 0x20, 0x33, 0x2e, 0x32, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, - 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x30, 0x2f, 0x31, 0x30, 0x20, - 0x32, 0x33, 0x3a, 0x32, 0x37, 0x3a, 0x30, 0x35, 0x20, 0x24, 0x00, 0x40, 0x28, - 0x23, 0x29, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6d, 0x6b, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, - 0x20, 0x33, 0x2e, 0x32, 0x38, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, - 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x35, 0x2f, 0x33, 0x30, - 0x20, 0x31, 0x35, 0x3a, 0x30, 0x32, 0x3a, 0x30, 0x36, 0x20, 0x24, 0x00, 0x40, - 0x28, 0x23, 0x29, 0x63, 0x6f, 0x6e, 0x63, 0x62, 0x69, 0x6f, 0x73, 0x2e, 0x68, - 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x3a, 0x20, 0x32, 0x2e, 0x31, 0x31, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, - 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x30, 0x39, 0x2f, 0x31, - 0x39, 0x20, 0x32, 0x31, 0x3a, 0x32, 0x33, 0x3a, 0x33, 0x39, 0x20, 0x24, 0x00, - 0x40, 0x28, 0x23, 0x29, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x63, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, - 0x33, 0x2e, 0x32, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, - 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x30, 0x2f, 0x31, 0x30, 0x20, 0x32, - 0x33, 0x3a, 0x32, 0x37, 0x3a, 0x30, 0x37, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, - 0x29, 0x64, 0x65, 0x66, 0x73, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, - 0x33, 0x2e, 0x31, 0x31, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, - 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x34, 0x2f, 0x30, 0x39, 0x20, - 0x31, 0x35, 0x3a, 0x30, 0x38, 0x3a, 0x30, 0x32, 0x20, 0x24, 0x00, 0x40, 0x28, - 0x23, 0x29, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x68, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, - 0x20, 0x33, 0x2e, 0x31, 0x31, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, - 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x30, 0x37, 0x2f, 0x32, 0x33, - 0x20, 0x30, 0x31, 0x3a, 0x35, 0x36, 0x3a, 0x35, 0x35, 0x20, 0x24, 0x00, 0x40, - 0x28, 0x23, 0x29, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x73, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x3a, 0x20, 0x33, 0x2e, 0x33, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, - 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x30, 0x33, 0x2f, 0x31, 0x39, - 0x20, 0x32, 0x30, 0x3a, 0x35, 0x37, 0x3a, 0x35, 0x36, 0x20, 0x24, 0x00, 0x40, - 0x28, 0x23, 0x29, 0x68, 0x6f, 0x73, 0x74, 0x63, 0x6f, 0x6d, 0x6d, 0x2e, 0x68, - 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x3a, 0x20, 0x33, 0x2e, 0x31, 0x32, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, - 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x34, 0x2f, 0x32, - 0x39, 0x20, 0x31, 0x39, 0x3a, 0x33, 0x31, 0x3a, 0x31, 0x30, 0x20, 0x24, 0x00, - 0x40, 0x28, 0x23, 0x29, 0x68, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x69, 0x74, 0x2e, - 0x68, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x32, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, - 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x30, 0x2f, 0x31, - 0x30, 0x20, 0x32, 0x33, 0x3a, 0x32, 0x37, 0x3a, 0x30, 0x38, 0x20, 0x24, 0x00, - 0x40, 0x28, 0x23, 0x29, 0x68, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x69, 0x74, 0x2e, - 0x73, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x38, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, - 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x31, 0x2f, 0x32, - 0x31, 0x20, 0x31, 0x37, 0x3a, 0x30, 0x36, 0x3a, 0x35, 0x32, 0x20, 0x24, 0x00, - 0x40, 0x28, 0x23, 0x29, 0x6d, 0x69, 0x64, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x31, 0x31, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, - 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x30, 0x2f, - 0x31, 0x30, 0x20, 0x32, 0x33, 0x3a, 0x32, 0x37, 0x3a, 0x30, 0x38, 0x20, 0x24, - 0x00, 0x40, 0x28, 0x23, 0x29, 0x6d, 0x6f, 0x64, 0x65, 0x6d, 0x63, 0x68, 0x6b, - 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x39, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, - 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x35, 0x2f, - 0x30, 0x39, 0x20, 0x31, 0x38, 0x3a, 0x35, 0x35, 0x3a, 0x33, 0x30, 0x20, 0x24, - 0x00, 0x40, 0x28, 0x23, 0x29, 0x6d, 0x6f, 0x64, 0x65, 0x6d, 0x63, 0x68, 0x6b, - 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, - 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x31, 0x20, 0x24, 0x20, 0x20, - 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, - 0x32, 0x2f, 0x30, 0x35, 0x20, 0x31, 0x37, 0x3a, 0x32, 0x32, 0x3a, 0x34, 0x39, - 0x20, 0x24, 0x0d, 0x00, 0x40, 0x28, 0x23, 0x29, 0x6d, 0x6f, 0x64, 0x75, 0x6c, - 0x65, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x32, 0x2e, 0x32, 0x20, 0x24, 0x20, - 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, - 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, 0x31, 0x36, 0x3a, 0x34, 0x39, 0x3a, 0x32, - 0x36, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x6d, 0x6f, 0x64, 0x75, 0x6c, - 0x65, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x34, 0x20, 0x24, 0x20, - 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, - 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, 0x31, 0x36, 0x3a, 0x34, 0x39, 0x3a, 0x33, - 0x33, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x70, 0x61, 0x72, 0x61, 0x2e, - 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x31, 0x2e, 0x31, 0x33, 0x20, 0x24, - 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, - 0x2f, 0x30, 0x35, 0x2f, 0x30, 0x39, 0x20, 0x31, 0x38, 0x3a, 0x35, 0x35, 0x3a, - 0x33, 0x31, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x70, 0x61, 0x72, 0x61, - 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x31, 0x2e, 0x32, 0x20, 0x24, - 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, - 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, 0x31, 0x36, 0x3a, 0x35, 0x30, 0x3a, - 0x31, 0x36, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x70, 0x62, 0x75, 0x73, - 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x34, 0x20, 0x24, - 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, - 0x2f, 0x31, 0x32, 0x2f, 0x30, 0x35, 0x20, 0x31, 0x36, 0x3a, 0x35, 0x30, 0x3a, - 0x32, 0x35, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x70, 0x6f, 0x6c, 0x6c, - 0x2e, 0x73, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x32, 0x37, 0x20, - 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, - 0x37, 0x2f, 0x30, 0x35, 0x2f, 0x33, 0x30, 0x20, 0x31, 0x36, 0x3a, 0x33, 0x30, - 0x3a, 0x31, 0x37, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x37, 0x20, - 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, - 0x37, 0x2f, 0x30, 0x34, 0x2f, 0x32, 0x39, 0x20, 0x31, 0x39, 0x3a, 0x33, 0x31, - 0x3a, 0x31, 0x32, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x72, 0x77, 0x2e, - 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x32, 0x20, - 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, - 0x36, 0x2f, 0x30, 0x39, 0x2f, 0x31, 0x36, 0x20, 0x32, 0x33, 0x3a, 0x32, 0x39, - 0x3a, 0x34, 0x34, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x72, 0x77, 0x2e, - 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x32, 0x2e, 0x34, 0x20, - 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, - 0x37, 0x2f, 0x30, 0x32, 0x2f, 0x32, 0x30, 0x20, 0x32, 0x32, 0x3a, 0x32, 0x37, - 0x3a, 0x35, 0x30, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, 0x63, 0x68, - 0x65, 0x64, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x35, 0x20, - 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, - 0x36, 0x2f, 0x30, 0x39, 0x2f, 0x31, 0x36, 0x20, 0x32, 0x33, 0x3a, 0x33, 0x32, - 0x3a, 0x32, 0x36, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, 0x63, 0x68, - 0x65, 0x64, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x33, 0x20, - 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, - 0x36, 0x2f, 0x30, 0x39, 0x2f, 0x32, 0x34, 0x20, 0x31, 0x35, 0x3a, 0x30, 0x31, - 0x3a, 0x34, 0x39, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, 0x6d, 0x61, - 0x72, 0x74, 0x62, 0x69, 0x6f, 0x73, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x24, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x35, 0x20, - 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, - 0x36, 0x2f, 0x30, 0x39, 0x2f, 0x31, 0x39, 0x20, 0x32, 0x31, 0x3a, 0x32, 0x33, - 0x3a, 0x34, 0x38, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, 0x6d, 0x61, - 0x72, 0x74, 0x63, 0x68, 0x61, 0x6e, 0x2e, 0x68, 0x20, 0x20, 0x20, 0x24, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x33, 0x20, - 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, - 0x37, 0x2f, 0x30, 0x31, 0x2f, 0x31, 0x35, 0x20, 0x31, 0x38, 0x3a, 0x30, 0x38, - 0x3a, 0x33, 0x34, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, 0x6d, 0x61, - 0x72, 0x74, 0x66, 0x65, 0x70, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x33, 0x36, - 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, - 0x39, 0x37, 0x2f, 0x30, 0x35, 0x2f, 0x30, 0x39, 0x20, 0x31, 0x38, 0x3a, 0x35, - 0x35, 0x3a, 0x33, 0x32, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, 0x6d, - 0x61, 0x72, 0x74, 0x6d, 0x61, 0x69, 0x6e, 0x2e, 0x63, 0x20, 0x20, 0x20, 0x24, - 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x31, - 0x30, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, - 0x39, 0x39, 0x37, 0x2f, 0x30, 0x31, 0x2f, 0x32, 0x31, 0x20, 0x31, 0x37, 0x3a, - 0x30, 0x36, 0x3a, 0x35, 0x32, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x73, - 0x78, 0x66, 0x65, 0x70, 0x2f, 0x4d, 0x61, 0x6b, 0x65, 0x66, 0x69, 0x6c, 0x65, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x3a, 0x20, 0x31, 0x2e, 0x34, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, - 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x31, 0x2f, - 0x30, 0x38, 0x20, 0x31, 0x39, 0x3a, 0x34, 0x36, 0x3a, 0x33, 0x33, 0x20, 0x24, - 0x00, 0x40, 0x28, 0x23, 0x29, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x2e, 0x63, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x36, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, - 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x30, 0x39, 0x2f, - 0x31, 0x36, 0x20, 0x32, 0x33, 0x3a, 0x34, 0x31, 0x3a, 0x34, 0x35, 0x20, 0x24, - 0x00, 0x40, 0x28, 0x23, 0x29, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x2e, 0x68, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x38, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, - 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x30, 0x39, 0x2f, - 0x31, 0x36, 0x20, 0x32, 0x33, 0x3a, 0x34, 0x32, 0x3a, 0x30, 0x38, 0x20, 0x24, - 0x00, 0x40, 0x28, 0x23, 0x29, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x69, 0x6e, 0x74, - 0x2e, 0x63, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x36, 0x20, 0x24, 0x20, 0x20, 0x24, 0x44, - 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x31, 0x2f, - 0x31, 0x35, 0x20, 0x31, 0x38, 0x3a, 0x31, 0x30, 0x3a, 0x30, 0x39, 0x20, 0x24, - 0x00, 0x40, 0x28, 0x23, 0x29, 0x75, 0x61, 0x72, 0x74, 0x2e, 0x63, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x31, 0x38, 0x20, 0x24, 0x20, 0x20, 0x24, - 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x35, - 0x2f, 0x33, 0x30, 0x20, 0x31, 0x35, 0x3a, 0x30, 0x33, 0x3a, 0x34, 0x36, 0x20, - 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x75, 0x61, 0x72, 0x74, 0x2e, 0x68, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x36, 0x20, 0x24, 0x20, 0x20, 0x24, - 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x32, - 0x2f, 0x30, 0x35, 0x20, 0x31, 0x36, 0x3a, 0x35, 0x38, 0x3a, 0x35, 0x32, 0x20, - 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x75, 0x74, 0x69, 0x6c, 0x2e, 0x68, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x33, 0x20, 0x24, 0x20, 0x20, 0x24, - 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2f, 0x31, 0x32, - 0x2f, 0x30, 0x35, 0x20, 0x31, 0x36, 0x3a, 0x35, 0x39, 0x3a, 0x30, 0x39, 0x20, - 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x75, 0x74, 0x69, 0x6c, 0x2e, 0x73, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x2e, 0x34, 0x20, 0x24, 0x20, 0x20, 0x24, - 0x44, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f, 0x30, 0x31, - 0x2f, 0x32, 0x31, 0x20, 0x31, 0x37, 0x3a, 0x30, 0x36, 0x3a, 0x35, 0x32, 0x20, - 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; diff --git a/sys/dev/digi/Xr.bios.h b/sys/dev/digi/Xr.bios.h deleted file mode 100644 index a0805ae9eb3b..000000000000 --- a/sys/dev/digi/Xr.bios.h +++ /dev/null @@ -1,1665 +0,0 @@ -/*- - * Copyright (c) 2001 Brian Somers <brian@Awfulhak.org> - * based on work by Slawa Olhovchenkov - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - */ - -static const u_char Xr_bios[] = { -79,83,158,206,83,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,202,166,75, -0,0,0,0,64,40,35,41,120,114,98,105,111,115,46,98,105,110,32,32,32,32,50, -46,51,46,57,32,49,57,57,56,47,48,50,47,50,54,0,64,40,35,41,67,111,112,121, -114,105,103,104,116,32,40,67,41,32,49,57,57,50,44,32,68,73,71,73,32,73, -110,116,101,114,110,97,116,105,111,110,97,108,46,32,65,108,108,32,82,105, -103,104,116,115,32,82,101,115,101,114,118,101,100,46,0,0,0,0,0,0,0,0,0, -0,0,0,0,67,80,85,32,100,111,101,115,110,39,116,32,119,111,114,107,97,0, -30,36,0,163,1,60,16,0,62,172,0,0,30,36,0,163,4,60,128,1,132,52,12,0,136, -140,0,0,0,0,1,0,8,53,12,0,136,172,1,160,4,60,144,128,132,36,255,3,5,36, -36,32,133,0,0,163,5,60,0,16,165,52,33,32,133,0,113,0,5,36,16,0,8,36,0,163, -9,60,0,2,41,53,0,0,138,128,0,0,0,0,2,0,64,17,0,0,42,161,1,0,132,36,1,0, -41,37,255,255,8,37,248,255,0,29,0,0,0,0,0,163,1,60,16,2,37,172,0,163,1, -60,20,2,63,172,0,163,1,60,24,2,61,172,1,0,8,36,0,163,1,60,16,12,40,172, -0,163,29,60,0,4,189,55,64,41,0,12,0,0,0,0,253,255,0,16,0,0,0,0,183,0,30, -36,0,163,1,60,16,0,62,172,0,0,30,36,0,16,8,60,0,96,136,64,0,163,4,60,0, -163,5,60,0,16,165,52,0,0,128,172,4,0,132,36,253,255,133,20,0,0,0,0,204, -0,30,36,0,163,1,60,16,0,62,172,0,0,30,36,255,255,8,36,181,0,0,17,0,0,0, -0,1,0,8,37,178,0,0,21,0,0,0,0,255,255,8,36,33,8,0,1,174,0,40,20,0,0,0,0, -1,0,33,36,171,0,32,20,0,0,0,0,255,255,2,36,168,0,72,20,0,0,0,0,1,0,66,36, -165,0,64,20,0,0,0,0,255,255,3,36,162,0,104,20,0,0,0,0,1,0,99,36,159,0,96, -20,0,0,0,0,255,255,4,36,156,0,136,20,0,0,0,0,1,0,132,36,153,0,128,20,0, -0,0,0,255,255,5,36,150,0,168,20,0,0,0,0,1,0,165,36,147,0,160,20,0,0,0,0, -255,255,6,36,144,0,200,20,0,0,0,0,1,0,198,36,141,0,192,20,0,0,0,0,255,255, -7,36,138,0,232,20,0,0,0,0,1,0,231,36,135,0,224,20,0,0,0,0,255,255,9,36, -132,0,40,21,0,0,0,0,1,0,41,37,129,0,32,21,0,0,0,0,255,255,10,36,126,0,72, -21,0,0,0,0,1,0,74,37,123,0,64,21,0,0,0,0,255,255,11,36,120,0,104,21,0,0, -0,0,1,0,107,37,117,0,96,21,0,0,0,0,255,255,12,36,114,0,136,21,0,0,0,0,1, -0,140,37,111,0,128,21,0,0,0,0,255,255,13,36,108,0,168,21,0,0,0,0,1,0,173, -37,105,0,160,21,0,0,0,0,255,255,14,36,102,0,200,21,0,0,0,0,1,0,206,37,99, -0,192,21,0,0,0,0,255,255,15,36,96,0,232,21,0,0,0,0,1,0,239,37,93,0,224, -21,0,0,0,0,255,255,24,36,90,0,8,23,0,0,0,0,1,0,24,39,87,0,0,23,0,0,0,0, -255,255,16,36,84,0,8,22,0,0,0,0,1,0,16,38,81,0,0,22,0,0,0,0,255,255,17, -36,78,0,40,22,0,0,0,0,1,0,49,38,75,0,32,22,0,0,0,0,255,255,18,36,72,0,72, -22,0,0,0,0,1,0,82,38,69,0,64,22,0,0,0,0,255,255,19,36,66,0,104,22,0,0,0, -0,1,0,115,38,63,0,96,22,0,0,0,0,255,255,20,36,60,0,136,22,0,0,0,0,1,0,148, -38,57,0,128,22,0,0,0,0,255,255,21,36,54,0,168,22,0,0,0,0,1,0,181,38,51, -0,160,22,0,0,0,0,255,255,22,36,48,0,200,22,0,0,0,0,1,0,214,38,45,0,192, -22,0,0,0,0,255,255,23,36,42,0,232,22,0,0,0,0,1,0,247,38,39,0,224,22,0,0, -0,0,255,255,26,36,36,0,72,23,0,0,0,0,1,0,90,39,33,0,64,23,0,0,0,0,255,255, -27,36,30,0,104,23,0,0,0,0,1,0,123,39,27,0,96,23,0,0,0,0,255,255,28,36,24, -0,136,23,0,0,0,0,1,0,156,39,21,0,128,23,0,0,0,0,255,255,29,36,18,0,168, -23,0,0,0,0,1,0,189,39,15,0,160,23,0,0,0,0,255,255,30,36,12,0,200,23,0,0, -0,0,1,0,222,39,9,0,192,23,0,0,0,0,255,255,31,36,6,0,232,23,0,0,0,0,1,0, -255,39,3,0,224,23,0,0,0,0,14,0,0,16,0,0,0,0,111,1,30,36,0,163,1,60,16,0, -62,172,0,0,30,36,1,160,4,60,160,128,132,36,255,3,5,36,36,32,133,0,0,163, -5,60,0,16,165,52,33,32,133,0,8,0,128,0,0,0,0,0,129,1,30,36,0,163,1,60,16, -0,62,172,0,0,30,36,1,160,28,60,240,126,156,39,133,1,30,36,0,163,1,60,16, -0,62,172,0,0,30,36,1,0,17,4,0,0,0,0,160,1,30,36,0,163,1,60,16,0,62,172, -0,0,30,36,1,160,5,60,0,128,165,36,1,160,6,60,64,21,198,36,1,160,4,60,216, -132,132,36,35,32,228,3,33,32,134,0,252,255,132,36,252,255,198,36,0,0,136, -140,0,0,0,0,0,0,200,172,43,8,166,0,249,255,32,20,0,0,0,0,176,1,30,36,0, -163,1,60,16,0,62,172,0,0,30,36,187,1,30,36,0,163,1,60,16,0,62,172,0,0,30, -36,1,160,31,60,104,133,255,39,1,160,4,60,64,134,132,36,0,160,1,60,37,32, -129,0,8,0,128,0,0,0,0,0,198,1,30,36,0,163,1,60,16,0,62,172,0,0,30,36,0, -160,8,60,128,0,8,53,1,160,9,60,196,133,41,37,1,160,10,60,20,134,74,37,0, -160,11,60,0,128,107,53,37,72,43,1,37,80,75,1,0,0,43,141,0,0,0,0,0,0,11, -173,4,0,8,37,4,0,41,37,250,255,42,21,0,0,0,0,21,0,0,16,0,0,0,0,0,163,26, -60,128,1,90,55,0,0,0,0,0,0,64,175,0,0,0,0,0,96,26,64,0,0,0,0,255,255,27, -60,254,0,123,55,0,0,0,0,36,208,91,3,0,0,0,0,0,96,154,64,0,0,0,0,0,112,26, -64,0,0,0,0,16,0,0,66,0,0,0,0,8,0,64,3,0,0,0,0,13,2,30,36,0,163,1,60,16, -0,62,172,0,0,30,36,1,160,29,60,40,25,189,39,96,43,0,12,0,0,30,36,85,32, -0,8,0,0,0,0,0,0,0,0,21,0,30,36,0,163,1,60,16,0,62,172,0,0,30,36,1,160,8, -60,104,134,8,37,0,160,1,60,37,64,1,1,8,0,0,1,0,0,0,0,0,96,4,64,0,0,0,0, -1,0,5,60,0,96,133,64,0,0,0,0,0,0,0,0,0,160,9,60,1,0,1,60,35,64,33,1,3,0, -0,161,4,0,8,37,253,255,9,21,0,0,0,0,3,0,5,60,0,96,133,64,0,0,0,0,0,0,0, -0,0,160,9,60,1,0,1,60,35,64,33,1,3,0,0,161,4,0,8,37,253,255,9,21,0,0,0, -0,0,0,0,0,0,0,0,0,0,96,132,64,0,0,0,0,0,0,0,0,0,16,4,64,255,255,8,60,255, -63,8,53,36,32,136,0,0,16,132,64,1,160,8,60,64,21,8,37,1,160,9,60,80,25, -41,37,252,255,1,36,36,72,33,1,252,255,1,36,36,64,1,1,0,0,0,173,4,0,8,37, -253,255,9,21,0,0,0,0,8,0,224,3,0,0,0,0,0,96,2,64,255,255,1,60,254,0,33, -52,37,32,129,0,36,64,68,0,0,96,136,64,1,255,66,48,8,0,224,3,0,0,0,0,0,96, -2,64,0,0,0,0,38,64,68,0,1,255,8,49,38,64,2,1,0,96,136,64,8,0,224,3,0,0, -0,0,0,96,8,64,0,0,0,0,254,255,1,36,36,72,1,1,0,96,137,64,0,104,2,64,0,3, -132,48,37,24,68,0,0,104,131,64,0,96,136,64,36,16,68,0,8,0,224,3,0,0,0,0, -0,96,8,64,0,3,132,48,254,255,1,36,36,72,1,1,0,96,137,64,0,104,2,64,39,24, -128,0,36,24,98,0,0,104,131,64,0,96,136,64,36,16,68,0,8,0,224,3,0,0,0,0, -64,16,8,60,0,96,136,64,192,191,8,60,8,0,0,1,0,0,0,0,0,96,8,64,0,0,0,0,255, -255,9,60,254,0,41,53,0,0,0,0,36,64,9,1,0,0,0,0,37,64,4,1,0,0,0,0,0,96,136, -64,0,0,0,0,8,0,224,3,0,0,0,0,0,0,0,0,43,16,133,0,9,0,64,16,33,24,0,0,0, -0,130,140,4,0,132,36,33,16,98,0,43,24,67,0,33,24,67,0,43,16,133,0,249,255, -64,20,0,0,0,0,8,0,224,3,33,16,96,0,0,0,0,0,0,0,0,0,0,0,0,0,224,255,189, -39,20,0,177,175,33,136,160,0,16,0,176,175,33,128,128,0,33,32,32,2,28,0, -191,175,246,39,0,12,24,0,178,175,33,144,64,0,0,0,37,130,0,0,0,0,55,34,0, -12,33,32,0,2,33,128,64,0,8,0,0,18,33,32,0,2,33,40,32,2,65,34,0,12,33,48, -64,2,4,0,64,16,33,16,0,2,34,34,0,8,1,0,16,38,33,16,0,0,28,0,191,143,24, -0,178,143,20,0,177,143,16,0,176,143,8,0,224,3,32,0,189,39,33,16,128,0,0, -0,67,128,0,0,0,0,4,0,101,16,0,0,0,0,251,255,96,20,1,0,66,36,33,16,0,0,8, -0,224,3,0,0,0,0,15,0,192,16,33,16,0,0,0,0,131,144,1,0,132,36,0,0,162,144, -255,0,99,48,255,0,66,48,3,0,98,16,1,0,165,36,81,34,0,8,35,16,98,0,4,0,96, -16,33,16,0,0,255,255,198,36,243,255,192,20,0,0,0,0,8,0,224,3,0,0,0,0,232, -255,189,39,33,40,128,0,16,0,176,175,33,128,0,0,191,255,162,36,26,0,66,44, -13,0,64,20,20,0,191,175,159,255,162,36,26,0,66,44,9,0,64,20,208,255,162, -36,10,0,66,44,6,0,64,20,0,0,0,0,0,128,132,39,55,34,0,12,0,0,0,0,3,0,64, -16,33,16,0,2,1,0,16,36,33,16,0,2,20,0,191,143,16,0,176,143,8,0,224,3,24, -0,189,39,32,255,189,39,212,0,183,175,33,184,224,0,220,0,191,175,216,0,190, -175,208,0,182,175,204,0,181,175,200,0,180,175,196,0,179,175,192,0,178,175, -188,0,177,175,184,0,176,175,120,0,164,175,36,128,130,39,16,0,162,175,44, -128,130,39,20,0,162,175,48,128,130,39,60,128,132,39,24,0,162,175,28,0,164, -175,33,176,0,0,120,0,168,143,1,161,2,60,36,0,164,175,128,27,8,0,33,136, -98,0,243,1,3,36,64,128,130,39,32,0,162,175,255,0,2,36,0,0,34,162,255,255, -99,36,255,255,97,4,255,255,99,36,1,0,99,36,0,0,34,146,0,0,0,0,130,136,2, -0,16,0,2,36,20,0,34,18,24,0,2,36,13,0,34,18,20,0,2,36,11,0,34,18,28,0,2, -36,10,0,34,18,16,0,2,36,195,0,224,22,1,0,214,54,120,0,165,143,72,128,132, -39,7,41,0,12,0,0,0,0,90,35,0,8,0,0,0,0,16,0,2,36,3,0,34,18,24,0,2,36,2, -0,34,22,8,0,8,36,4,0,8,36,128,0,168,175,32,128,130,143,0,0,0,0,31,0,64, -20,0,0,0,0,33,128,0,0,248,20,19,60,137,181,115,54,7,0,18,60,31,161,82,54, -24,0,19,2,195,23,16,0,16,64,0,0,67,35,8,0,35,32,130,0,64,16,4,0,33,16,68, -0,128,25,2,0,33,16,67,0,128,16,2,0,33,16,68,0,128,16,2,0,33,16,68,0,64, -17,2,0,4,0,2,22,0,0,0,0,104,128,132,39,7,41,0,12,0,0,0,0,1,0,16,38,42,16, -80,2,235,255,64,16,24,0,19,2,1,0,2,36,32,128,130,175,6,0,224,22,0,0,0,0, -108,128,132,39,120,0,165,143,0,0,0,0,7,41,0,12,33,48,32,2,128,0,168,143, -0,0,0,0,130,0,0,17,33,168,0,0,120,0,168,143,0,0,0,0,128,67,8,0,0,163,3, -60,136,0,168,175,120,0,168,143,128,1,99,52,33,64,3,1,144,0,168,175,16,0, -168,39,160,0,168,175,120,0,168,143,40,0,180,39,128,16,8,0,33,240,67,0,1, -161,3,60,0,1,99,52,64,17,21,0,136,0,168,143,33,16,67,0,33,136,2,1,8,0,34, -146,0,0,0,0,6,0,66,52,8,0,34,162,144,0,168,143,33,152,0,0,52,0,2,145,160, -0,178,143,1,0,66,36,52,0,2,161,52,0,2,145,0,0,80,142,0,0,0,0,7,0,224,22, -33,40,160,2,136,128,132,39,7,41,0,12,33,48,0,2,3,35,0,8,0,0,0,0,0,0,35, -162,0,0,2,130,0,0,3,146,0,0,0,0,251,255,64,20,1,0,16,38,255,255,16,38,33, -40,0,0,33,32,128,2,79,0,134,38,13,0,2,36,0,0,34,162,40,0,160,163,42,16, -134,0,25,0,64,16,0,0,0,0,20,0,34,146,0,0,0,0,1,0,66,48,9,0,64,20,33,24, -0,0,48,117,98,40,9,0,64,16,0,0,0,0,20,0,34,146,0,0,0,0,1,0,66,48,249,255, -64,16,1,0,99,36,48,117,98,40,3,0,64,20,0,0,0,0,40,35,0,8,1,0,5,36,0,0,34, -146,0,0,0,0,0,0,130,160,1,0,132,36,230,255,160,16,0,0,128,160,8,0,69,142, -0,0,0,0,24,34,0,12,33,32,128,2,14,0,64,20,2,0,4,36,16,0,69,142,0,0,0,0, -24,34,0,12,33,32,128,2,8,0,64,20,1,0,4,36,33,32,0,0,1,0,214,54,1,0,2,36, -56,0,195,143,4,16,98,2,37,24,98,0,56,0,195,175,18,0,224,22,1,0,2,36,8,0, -130,16,2,0,2,36,11,0,130,20,0,0,0,0,160,128,132,39,7,41,0,12,4,0,82,38, -82,35,0,8,1,0,115,38,184,128,132,39,7,41,0,12,4,0,82,38,82,35,0,8,1,0,115, -38,208,128,132,39,7,41,0,12,40,0,165,39,4,0,82,38,1,0,115,38,2,0,98,42, -165,255,64,20,0,0,0,0,128,0,168,143,1,0,181,38,42,16,168,2,144,255,64,20, -1,161,3,60,7,0,224,22,0,163,2,60,6,0,192,22,128,1,66,52,240,128,132,39, -7,41,0,12,0,0,0,0,0,163,2,60,128,1,66,52,120,0,168,143,1,0,3,36,33,16,2, -1,48,0,67,160,33,16,192,2,220,0,191,143,216,0,190,143,212,0,183,143,208, -0,182,143,204,0,181,143,200,0,180,143,196,0,179,143,192,0,178,143,188,0, -177,143,184,0,176,143,8,0,224,3,224,0,189,39,112,255,189,39,112,0,176,175, -33,128,128,0,116,0,177,175,33,136,160,0,128,0,180,175,33,160,192,0,124, -0,179,175,33,152,224,0,120,0,178,175,33,144,0,0,33,24,0,0,136,0,191,175, -132,0,181,175,20,0,2,146,0,0,0,0,32,0,66,48,18,0,64,20,33,168,32,2,80,195, -4,52,33,16,96,0,42,16,130,0,8,0,64,16,1,0,99,36,4,0,96,22,0,0,0,0,24,129, -132,39,7,41,0,12,0,0,0,0,255,35,0,8,2,0,82,54,20,0,2,146,0,0,0,0,32,0,66, -48,242,255,64,16,33,16,96,0,8,0,2,146,0,0,0,0,6,0,66,52,8,0,2,162,20,0, -2,146,0,0,0,0,1,0,66,48,6,0,64,16,0,0,0,0,4,0,96,22,0,0,0,0,52,129,132, -39,7,41,0,12,0,0,0,0,246,39,0,12,33,32,32,2,16,0,66,44,14,0,64,16,0,0,0, -0,0,0,34,130,0,0,35,146,0,0,0,0,16,0,64,16,1,0,49,38,0,0,3,162,0,0,34,130, -0,0,35,146,0,0,0,0,251,255,64,20,1,0,49,38,191,35,0,8,0,0,0,0,4,0,96,22, -0,0,0,0,92,129,132,39,7,41,0,12,0,0,0,0,255,35,0,8,1,0,82,54,20,0,2,146, -0,0,0,0,64,0,66,48,18,0,64,20,33,24,0,0,80,195,4,52,33,16,96,0,42,16,130, -0,8,0,64,16,1,0,99,36,4,0,96,22,0,0,0,0,112,129,132,39,7,41,0,12,0,0,0, -0,255,35,0,8,8,0,82,54,20,0,2,146,0,0,0,0,64,0,66,48,242,255,64,16,33,16, -96,0,33,48,0,0,33,32,0,0,33,24,0,0,80,195,7,52,16,0,165,39,79,0,130,40, -21,0,64,16,0,0,0,0,226,35,0,8,0,0,0,0,42,16,226,0,14,0,64,20,1,0,99,36, -20,0,2,146,0,0,0,0,1,0,66,48,249,255,64,16,33,16,96,0,9,0,192,20,0,0,0, -0,1,0,132,36,0,0,2,146,33,24,0,0,0,0,162,160,218,35,0,8,1,0,165,36,231, -35,0,8,1,0,6,36,16,0,176,39,33,16,4,2,0,0,64,160,33,32,0,2,24,34,0,12,33, -40,128,2,8,0,64,20,33,16,64,2,4,0,96,22,33,40,0,2,140,129,132,39,7,41,0, -12,33,48,160,2,4,0,82,54,33,16,64,2,136,0,191,143,132,0,181,143,128,0,180, -143,124,0,179,143,120,0,178,143,116,0,177,143,112,0,176,143,8,0,224,3,144, -0,189,39,200,255,189,39,36,0,177,175,33,136,128,0,32,0,176,175,33,128,160, -0,44,0,179,175,33,152,192,0,40,0,178,175,33,144,0,0,48,0,191,175,20,0,34, -146,0,0,0,0,32,0,66,48,18,0,64,20,33,24,0,0,80,195,4,52,33,16,96,0,42,16, -130,0,8,0,64,16,1,0,99,36,4,0,96,22,0,0,0,0,24,129,132,39,7,41,0,12,0,0, -0,0,91,36,0,8,2,0,82,54,20,0,34,146,0,0,0,0,32,0,66,48,242,255,64,16,33, -16,96,0,8,0,34,146,33,32,0,2,6,0,66,52,246,39,0,12,8,0,34,162,16,0,66,44, -14,0,64,16,0,0,0,0,0,0,2,130,0,0,3,146,0,0,0,0,16,0,64,16,1,0,16,38,0,0, -35,162,0,0,2,130,0,0,3,146,0,0,0,0,251,255,64,20,1,0,16,38,69,36,0,8,0, -0,0,0,4,0,96,22,0,0,0,0,92,129,132,39,7,41,0,12,0,0,0,0,91,36,0,8,1,0,82, -54,20,0,34,146,0,0,0,0,64,0,66,48,18,0,64,20,33,24,0,0,80,195,4,52,33,16, -96,0,42,16,130,0,8,0,64,16,1,0,99,36,4,0,96,22,0,0,0,0,184,129,132,39,7, -41,0,12,0,0,0,0,91,36,0,8,8,0,82,54,20,0,34,146,0,0,0,0,64,0,66,48,242, -255,64,16,33,16,96,0,33,16,64,2,48,0,191,143,44,0,179,143,40,0,178,143, -36,0,177,143,32,0,176,143,8,0,224,3,56,0,189,39,0,255,189,39,252,0,191, -175,248,0,190,175,244,0,183,175,240,0,182,175,236,0,181,175,232,0,180,175, -228,0,179,175,224,0,178,175,220,0,177,175,216,0,176,175,192,0,165,175,212, -129,133,39,3,0,162,136,0,0,162,152,4,0,163,128,5,0,164,128,19,0,162,171, -16,0,162,187,20,0,163,163,21,0,164,163,0,163,16,60,128,1,16,54,8,0,2,142, -0,0,0,0,1,0,81,44,27,0,32,18,33,240,0,0,220,129,132,39,7,41,0,12,3,0,5, -36,73,0,2,146,0,0,0,0,7,0,64,20,0,163,2,60,0,163,3,60,128,1,99,52,73,0, -98,144,0,0,0,0,253,255,64,16,0,163,2,60,128,1,66,52,72,0,67,144,248,129, -132,39,73,0,64,160,208,255,115,36,7,41,0,12,33,40,96,2,4,0,98,46,9,0,64, -20,128,19,19,0,252,129,132,39,21,37,0,8,0,0,0,0,8,0,2,142,0,0,0,0,2,19, -2,0,15,0,83,48,128,19,19,0,1,161,3,60,33,24,67,0,255,0,2,36,0,0,98,160, -243,1,16,36,255,255,16,38,255,255,1,6,255,255,16,38,1,0,16,38,0,0,98,144, -0,0,0,0,130,24,2,0,16,0,2,36,23,0,98,16,24,0,2,36,16,0,98,16,20,0,2,36, -14,0,98,16,28,0,2,36,13,0,98,16,16,0,2,36,192,0,168,143,0,0,0,0,5,0,0,21, -1,0,195,55,72,128,132,39,7,41,0,12,33,40,96,2,1,0,195,55,0,22,19,0,92,39, -0,8,37,240,98,0,16,0,2,36,3,0,98,16,24,0,2,36,2,0,98,20,8,0,18,36,4,0,18, -36,65,0,32,18,0,163,2,60,20,130,132,39,7,41,0,12,33,40,64,2,0,163,2,60, -128,1,66,52,73,0,66,144,0,0,0,0,7,0,64,20,0,163,16,60,0,163,3,60,128,1, -99,52,73,0,98,144,0,0,0,0,253,255,64,16,0,163,16,60,128,1,16,54,72,0,5, -146,248,129,132,39,73,0,0,162,255,0,165,48,207,255,177,36,7,41,0,12,208, -255,165,36,4,0,32,6,255,255,66,38,42,16,81,0,6,0,64,16,0,0,0,0,56,130,132, -39,7,41,0,12,1,128,222,55,92,39,0,8,0,0,0,0,76,130,132,39,7,41,0,12,33, -40,64,2,73,0,2,146,0,0,0,0,7,0,64,20,0,163,2,60,0,163,3,60,128,1,99,52, -73,0,98,144,0,0,0,0,253,255,64,16,0,163,2,60,128,1,66,52,72,0,69,144,248, -129,132,39,73,0,64,160,255,0,165,48,207,255,180,36,7,41,0,12,208,255,165, -36,4,0,128,6,255,255,66,38,42,16,81,0,14,0,64,16,0,0,0,0,56,130,132,39, -7,41,0,12,1,64,222,55,92,39,0,8,0,0,0,0,128,1,66,52,8,0,67,140,8,0,66,140, -240,0,99,48,2,25,3,0,255,255,113,36,15,0,66,48,255,255,84,36,10,0,52,22, -1,161,4,60,192,0,168,143,0,0,0,0,4,0,0,21,0,0,0,0,108,130,132,39,7,41,0, -12,0,0,0,0,92,39,0,8,1,0,222,55,0,1,132,52,128,27,19,0,64,17,17,0,33,16, -68,0,33,152,98,0,64,17,20,0,33,16,68,0,192,0,168,143,0,0,0,0,4,0,0,21,33, -168,98,0,140,130,132,39,7,41,0,12,0,0,0,0,16,0,98,146,0,0,0,0,1,0,66,52, -16,0,98,162,16,0,162,146,0,0,0,0,1,0,66,52,16,0,162,162,8,0,98,146,8,0, -3,36,128,0,66,52,8,0,98,162,4,0,96,162,0,0,99,162,8,0,98,146,0,0,0,0,127, -0,66,48,8,0,98,162,8,0,162,146,0,0,0,0,128,0,66,52,8,0,162,162,4,0,160, -162,0,0,163,162,8,0,162,146,0,0,0,0,127,0,66,48,8,0,162,162,3,0,2,36,12, -0,98,162,12,0,162,162,150,0,2,36,28,0,98,162,173,0,2,36,28,0,162,162,32, -0,2,36,0,0,98,162,0,0,162,162,20,0,98,146,0,0,0,0,1,0,66,48,58,0,64,16, -33,128,0,0,192,0,168,143,0,0,0,0,40,0,0,21,0,0,0,0,160,130,132,39,7,41, -0,12,0,0,0,0,125,37,0,8,0,0,0,0,0,0,98,146,192,0,168,143,255,0,66,48,14, -0,0,21,184,0,162,175,184,0,164,143,83,34,0,12,0,0,0,0,6,0,64,16,0,0,0,0, -184,0,164,143,0,0,0,0,0,38,4,0,107,37,0,8,3,38,4,0,46,0,4,36,36,48,0,12, -0,0,0,0,188,0,160,175,188,0,162,143,0,0,0,0,244,1,66,40,11,0,64,16,1,0, -16,38,188,0,162,143,0,0,0,0,1,0,66,36,188,0,162,175,188,0,162,143,188,0, -162,143,0,0,0,0,244,1,66,40,247,255,64,20,0,0,0,0,20,0,98,146,0,0,0,0,1, -0,66,48,218,255,64,20,0,0,0,0,192,0,168,143,0,0,0,0,6,0,0,21,0,0,0,0,4, -0,0,18,0,0,0,0,164,130,132,39,7,41,0,12,0,0,0,0,20,0,162,146,0,0,0,0,1, -0,66,48,58,0,64,16,33,128,0,0,192,0,168,143,0,0,0,0,40,0,0,21,0,0,0,0,160, -130,132,39,7,41,0,12,0,0,0,0,187,37,0,8,0,0,0,0,0,0,162,146,192,0,168,143, -255,0,66,48,14,0,0,21,188,0,162,175,188,0,164,143,83,34,0,12,0,0,0,0,6, -0,64,16,0,0,0,0,188,0,164,143,0,0,0,0,0,38,4,0,169,37,0,8,3,38,4,0,46,0, -4,36,36,48,0,12,0,0,0,0,184,0,160,175,184,0,162,143,0,0,0,0,244,1,66,40, -11,0,64,16,1,0,16,38,184,0,162,143,0,0,0,0,1,0,66,36,184,0,162,175,184, -0,162,143,184,0,162,143,0,0,0,0,244,1,66,40,247,255,64,20,0,0,0,0,20,0, -162,146,0,0,0,0,1,0,66,48,218,255,64,20,0,0,0,0,192,0,168,143,0,0,0,0,6, -0,0,21,0,0,0,0,4,0,0,18,0,0,0,0,208,130,132,39,7,41,0,12,0,0,0,0,8,0,98, -146,192,0,3,36,192,0,66,48,9,0,67,20,0,0,0,0,12,0,99,146,3,0,2,36,5,0,98, -20,0,0,0,0,28,0,99,146,150,0,2,36,15,0,98,16,0,0,0,0,192,0,168,143,0,0, -0,0,10,0,0,21,0,0,0,0,248,130,132,39,7,41,0,12,0,0,0,0,28,131,132,39,8, -0,101,146,12,0,102,146,28,0,103,146,7,41,0,12,0,0,0,0,2,128,222,55,8,0, -162,146,192,0,3,36,192,0,66,48,9,0,67,20,0,0,0,0,12,0,163,146,3,0,2,36, -5,0,98,20,0,0,0,0,28,0,163,146,173,0,2,36,15,0,98,16,0,0,0,0,192,0,168, -143,0,0,0,0,10,0,0,21,0,0,0,0,52,131,132,39,7,41,0,12,0,0,0,0,28,131,132, -39,8,0,165,146,12,0,166,146,28,0,167,146,7,41,0,12,0,0,0,0,2,64,222,55, -92,1,192,23,0,0,0,0,192,0,168,143,0,0,0,0,5,0,0,21,33,32,96,2,88,131,132, -39,7,41,0,12,0,0,0,0,33,32,96,2,116,131,146,39,33,40,64,2,124,131,145,39, -192,0,167,143,0,0,0,0,116,35,0,12,33,48,32,2,33,128,64,0,2,0,0,18,33,32, -160,2,0,128,30,54,33,40,64,2,192,0,167,143,0,0,0,0,116,35,0,12,33,48,32, -2,33,128,64,0,2,0,0,18,0,64,194,55,37,240,80,0,33,32,96,2,128,131,146,39, -33,40,64,2,192,0,167,143,0,0,0,0,116,35,0,12,33,48,32,2,33,128,64,0,2,0, -0,18,0,128,194,55,37,240,80,0,33,32,160,2,33,40,64,2,192,0,167,143,0,0, -0,0,116,35,0,12,33,48,32,2,33,128,64,0,2,0,0,18,0,64,194,55,37,240,80,0, -33,32,96,2,144,131,146,39,33,40,64,2,192,0,167,143,0,0,0,0,116,35,0,12, -33,48,32,2,33,128,64,0,2,0,0,18,0,128,194,55,37,240,80,0,33,32,160,2,33, -40,64,2,192,0,167,143,0,0,0,0,116,35,0,12,33,48,32,2,33,128,64,0,2,0,0, -18,0,64,194,55,37,240,80,0,18,0,192,19,48,0,130,38,192,0,168,143,0,0,0, -0,8,1,0,21,0,128,194,51,5,0,64,16,0,64,194,51,156,131,132,39,7,41,0,12, -0,0,0,0,0,64,194,51,0,1,64,16,0,0,0,0,196,131,132,39,7,41,0,12,0,0,0,0, -84,39,0,8,0,0,0,0,33,32,96,2,16,0,165,39,192,0,167,143,240,131,134,39,116, -35,0,12,19,0,162,163,33,128,64,0,2,0,0,18,0,0,0,0,0,128,30,54,244,131,133, -39,192,0,167,143,252,131,134,39,116,35,0,12,33,32,160,2,33,128,64,0,2,0, -0,18,0,64,194,55,37,240,80,0,192,0,168,143,0,0,0,0,4,0,0,21,0,0,0,0,0,132, -132,39,7,41,0,12,0,0,0,0,18,0,192,19,33,176,0,0,192,0,168,143,0,0,0,0,219, -0,0,21,0,128,194,51,5,0,64,16,0,64,194,51,28,132,132,39,7,41,0,12,0,0,0, -0,0,64,194,51,211,0,64,16,0,0,0,0,68,132,132,39,7,41,0,12,0,0,0,0,84,39, -0,8,0,0,0,0,33,128,0,0,76,0,8,60,64,75,8,53,200,0,168,175,8,0,98,146,33, -184,0,0,6,0,66,52,8,0,98,162,8,0,162,146,24,0,180,39,6,0,66,52,8,0,162, -162,24,0,160,163,104,0,160,163,33,16,0,2,200,0,168,143,0,0,0,0,42,16,2, -1,16,0,64,16,1,0,16,38,192,0,168,143,0,0,0,0,4,0,0,21,0,0,0,0,108,132,132, -39,7,41,0,12,0,0,0,0,16,0,98,146,0,0,0,0,254,0,66,48,16,0,98,162,16,0,162, -146,0,0,0,0,90,39,0,8,8,128,222,55,20,0,98,146,0,0,0,0,1,0,66,48,232,255, -64,16,33,16,0,2,0,0,114,146,33,128,0,0,0,22,18,0,3,142,2,0,83,34,0,12,33, -32,32,2,2,0,64,16,0,0,0,0,1,0,23,36,221,255,224,18,33,16,0,2,13,0,8,36, -5,0,40,18,0,0,0,0,0,0,146,162,1,0,148,38,150,38,0,8,1,0,214,38,24,0,176, -39,33,16,22,2,0,0,64,160,148,132,133,39,24,34,0,12,33,32,0,2,26,0,64,16, -0,0,0,0,156,132,133,39,24,34,0,12,33,32,0,2,36,0,64,20,0,0,0,0,164,132, -133,39,24,34,0,12,33,32,0,2,31,0,64,20,0,0,0,0,192,0,168,143,0,0,0,0,4, -0,0,21,0,0,0,0,172,132,132,39,7,41,0,12,33,40,0,2,16,0,98,146,0,0,0,0,254, -0,66,48,16,0,98,162,16,0,162,146,0,0,0,0,90,39,0,8,32,128,222,55,192,0, -168,143,0,0,0,0,4,0,0,21,0,0,0,0,188,132,132,39,7,41,0,12,33,40,0,2,16, -0,98,146,0,0,0,0,254,0,66,48,16,0,98,162,16,0,162,146,0,0,0,0,90,39,0,8, -16,128,222,55,33,176,0,0,33,128,0,0,33,184,0,0,76,0,8,60,64,75,8,53,208, -0,168,175,104,0,180,39,33,16,0,2,208,0,168,143,0,0,0,0,42,16,2,1,16,0,64, -16,1,0,16,38,192,0,168,143,0,0,0,0,4,0,0,21,0,0,0,0,232,132,132,39,7,41, -0,12,0,0,0,0,16,0,98,146,0,0,0,0,254,0,66,48,16,0,98,162,16,0,162,146,0, -0,0,0,90,39,0,8,8,64,222,55,20,0,162,146,0,0,0,0,1,0,66,48,232,255,64,16, -33,16,0,2,0,0,178,146,33,128,0,0,0,22,18,0,3,142,2,0,83,34,0,12,33,32,32, -2,2,0,64,16,0,0,0,0,1,0,23,36,221,255,224,18,33,16,0,2,13,0,8,36,5,0,40, -18,0,0,0,0,0,0,146,162,1,0,148,38,249,38,0,8,1,0,214,38,104,0,176,39,33, -16,22,2,0,0,64,160,148,132,133,39,24,34,0,12,33,32,0,2,26,0,64,16,0,0,0, -0,156,132,133,39,24,34,0,12,33,32,0,2,36,0,64,20,0,0,0,0,164,132,133,39, -24,34,0,12,33,32,0,2,31,0,64,20,0,0,0,0,192,0,168,143,0,0,0,0,4,0,0,21, -0,0,0,0,172,132,132,39,7,41,0,12,33,40,0,2,16,0,98,146,0,0,0,0,254,0,66, -48,16,0,98,162,16,0,162,146,0,0,0,0,90,39,0,8,32,64,222,55,192,0,168,143, -0,0,0,0,4,0,0,21,0,0,0,0,20,133,132,39,7,41,0,12,33,40,0,2,16,0,98,146, -0,0,0,0,254,0,66,48,16,0,98,162,16,0,162,146,0,0,0,0,90,39,0,8,16,64,222, -55,16,0,98,146,0,0,0,0,254,0,66,48,16,0,98,162,16,0,162,146,0,0,0,0,254, -0,66,48,16,0,162,162,192,0,168,143,0,0,0,0,7,0,0,21,33,16,192,3,5,0,192, -23,0,0,0,0,64,133,132,39,7,41,0,12,0,0,0,0,33,16,192,3,252,0,191,143,248, -0,190,143,244,0,183,143,240,0,182,143,236,0,181,143,232,0,180,143,228,0, -179,143,224,0,178,143,220,0,177,143,216,0,176,143,8,0,224,3,0,1,189,39, -0,0,0,0,0,0,0,0,33,48,0,0,33,40,0,0,0,0,130,128,192,24,5,0,1,0,165,36,4, -16,98,0,37,48,194,0,4,0,162,44,249,255,64,20,1,0,132,36,8,0,224,3,33,16, -192,0,232,255,189,39,16,0,191,175,116,39,0,12,0,0,0,0,0,46,2,0,0,26,2,0, -255,0,4,60,36,24,100,0,37,40,163,0,2,26,2,0,0,255,99,48,37,40,163,0,2,22, -2,0,16,0,191,143,37,16,162,0,8,0,224,3,24,0,189,39,0,0,0,0,0,0,0,0,0,0, -0,0,160,255,189,39,112,0,162,143,72,0,176,175,33,128,224,0,88,0,180,175, -33,160,0,0,84,0,179,175,33,152,192,0,92,0,191,175,80,0,178,175,7,0,160, -16,76,0,177,175,6,0,65,4,51,0,177,39,45,0,20,36,3,0,0,18,35,16,2,0,255, -255,16,38,51,0,177,39,51,0,160,163,27,0,68,0,2,0,128,20,0,0,0,0,13,0,7, -0,18,24,0,0,16,16,0,0,33,8,92,0,144,133,34,144,255,255,49,38,2,0,0,18,0, -0,34,162,255,255,16,38,33,16,96,0,242,255,64,20,1,0,3,36,0,22,19,0,3,22, -2,0,11,0,67,20,33,32,128,2,255,255,16,38,255,255,2,36,7,0,2,18,0,0,0,0, -255,255,18,36,36,48,0,12,32,0,4,36,255,255,16,38,252,255,18,22,33,32,128, -2,4,0,128,16,0,22,19,0,36,48,0,12,0,0,0,0,0,22,19,0,3,22,2,0,2,0,3,36,14, -0,67,20,255,255,2,36,255,255,16,38,11,0,2,18,255,255,18,36,36,48,0,12,48, -0,4,36,255,255,16,38,6,0,18,18,0,0,0,0,209,39,0,8,0,0,0,0,0,38,4,0,36,48, -0,12,3,38,4,0,0,0,34,130,0,0,36,146,0,0,0,0,249,255,64,20,1,0,49,38,255, -255,49,38,0,22,19,0,3,22,2,0,3,0,3,36,9,0,67,20,255,255,16,38,255,255,2, -36,6,0,2,18,255,255,17,36,36,48,0,12,32,0,4,36,255,255,16,38,252,255,17, -22,0,0,0,0,92,0,191,143,88,0,180,143,84,0,179,143,80,0,178,143,76,0,177, -143,72,0,176,143,8,0,224,3,96,0,189,39,249,39,0,8,33,24,0,0,1,0,99,36,0, -0,130,128,0,0,0,0,252,255,64,20,1,0,132,36,8,0,224,3,33,16,96,0,208,255, -189,39,36,0,177,175,33,136,192,0,40,0,191,175,64,40,0,8,32,0,176,175,255, -0,3,50,10,0,2,36,12,0,98,16,11,0,98,40,5,0,64,16,9,0,2,36,16,0,98,16,32, -0,98,44,32,40,0,8,0,0,0,0,13,0,2,36,7,0,98,16,255,0,3,50,32,40,0,8,32,0, -98,44,36,48,0,12,92,0,4,36,62,40,0,8,110,0,4,36,36,48,0,12,92,0,4,36,62, -40,0,8,114,0,4,36,36,48,0,12,92,0,4,36,62,40,0,8,116,0,4,36,3,0,64,20,255, -0,2,36,25,0,98,20,0,0,0,0,36,48,0,12,92,0,4,36,36,48,0,12,48,0,4,36,36, -48,0,12,120,0,4,36,240,0,2,50,2,33,2,0,10,0,130,40,3,0,64,16,0,0,0,0,50, -40,0,8,48,0,132,52,55,0,132,36,36,48,0,12,0,0,0,0,15,0,4,50,10,0,130,40, -3,0,64,16,0,0,0,0,62,40,0,8,48,0,132,52,62,40,0,8,55,0,132,36,0,0,36,130, -0,0,0,0,36,48,0,12,1,0,49,38,0,0,34,130,0,0,35,146,0,0,0,0,193,255,64,20, -33,128,96,0,40,0,191,143,36,0,177,143,32,0,176,143,8,0,224,3,48,0,189,39, -200,255,189,39,40,0,178,175,33,144,128,0,32,0,176,175,33,128,160,0,36,0, -177,175,33,136,192,0,33,32,32,2,48,0,191,175,246,39,0,12,44,0,179,175,33, -32,0,0,33,24,64,0,42,16,112,0,2,0,64,16,33,152,64,2,35,32,3,2,0,22,18,0, -3,22,2,0,1,0,3,36,11,0,67,20,33,128,128,0,255,255,16,38,255,255,2,36,8, -0,2,18,0,22,19,0,255,255,18,36,36,48,0,12,32,0,4,36,255,255,16,38,252,255, -18,22,0,0,0,0,0,22,19,0,3,22,2,0,2,0,3,36,14,0,67,20,255,255,2,36,255,255, -16,38,11,0,2,18,255,255,18,36,36,48,0,12,48,0,4,36,255,255,16,38,6,0,18, -18,0,0,0,0,114,40,0,8,0,0,0,0,0,38,4,0,36,48,0,12,3,38,4,0,0,0,34,130,0, -0,36,146,0,0,0,0,249,255,64,20,1,0,49,38,255,255,49,38,0,22,19,0,3,22,2, -0,3,0,3,36,9,0,67,20,255,255,16,38,255,255,2,36,6,0,2,18,255,255,17,36, -36,48,0,12,32,0,4,36,255,255,16,38,252,255,17,22,0,0,0,0,48,0,191,143,44, -0,179,143,40,0,178,143,36,0,177,143,32,0,176,143,8,0,224,3,56,0,189,39, -208,255,189,39,28,0,177,175,33,136,160,0,24,0,176,175,33,128,0,0,40,0,191, -175,36,0,179,175,32,0,178,175,1,0,130,128,0,0,0,0,94,0,64,16,33,144,0,0, -1,0,147,36,0,0,98,146,0,0,0,0,219,255,66,36,0,22,2,0,3,30,2,0,84,0,98,44, -85,0,64,16,128,16,3,0,1,160,1,60,33,8,34,0,32,249,34,140,0,0,0,0,8,0,64, -0,0,0,0,0,201,40,0,8,37,0,4,36,33,32,0,0,164,133,134,39,227,40,0,8,33,40, -0,0,0,38,17,0,201,40,0,8,3,38,4,0,16,0,177,175,2,0,4,36,33,40,0,0,33,48, -0,2,148,39,0,12,33,56,64,2,201,40,0,8,66,0,4,36,16,0,177,175,8,0,4,36,33, -40,0,0,33,48,0,2,148,39,0,12,33,56,64,2,81,0,4,36,36,48,0,12,0,0,0,0,0, -41,0,8,1,0,98,38,16,0,177,175,10,0,4,36,219,40,0,8,1,0,5,36,16,0,177,175, -218,40,0,8,10,0,4,36,33,32,0,0,176,133,134,39,74,40,0,12,33,40,0,0,16,0, -177,175,16,0,4,36,33,40,0,0,33,48,0,2,148,39,0,12,33,56,64,2,0,41,0,8,1, -0,98,38,33,32,0,2,33,40,64,2,33,48,32,2,74,40,0,12,0,0,0,0,0,41,0,8,1,0, -98,38,33,32,0,2,33,40,64,2,255,39,0,12,33,48,32,2,0,41,0,8,1,0,98,38,250, -40,0,8,3,0,16,36,3,0,0,22,128,16,18,0,2,0,16,36,128,16,18,0,33,16,82,0, -64,16,2,0,0,0,99,130,208,255,66,36,2,0,0,22,33,144,67,0,1,0,16,36,1,0,115, -38,0,0,98,130,0,0,0,0,165,255,64,20,0,0,0,0,1,0,130,36,40,0,191,143,36, -0,179,143,32,0,178,143,28,0,177,143,24,0,176,143,8,0,224,3,48,0,189,39, -0,0,164,175,4,0,165,175,8,0,166,175,12,0,167,175,200,255,189,39,32,0,176, -175,33,128,128,0,36,0,177,175,52,0,191,175,48,0,180,175,44,0,179,175,40, -0,178,175,0,0,2,130,0,0,3,146,0,0,0,0,32,0,64,16,60,0,177,39,37,0,20,36, -69,0,19,36,252,255,18,36,0,22,3,0,3,38,2,0,18,0,148,20,0,0,0,0,1,0,3,130, -0,0,0,0,4,0,100,16,33,32,0,2,4,0,115,20,3,0,34,38,33,32,0,2,44,41,0,8,33, -40,0,0,36,16,82,0,4,0,81,36,252,255,37,142,33,32,0,2,150,40,0,12,0,0,0, -0,50,41,0,8,33,128,64,0,36,48,0,12,1,0,16,38,0,0,2,130,0,0,3,146,0,0,0, -0,230,255,64,20,0,22,3,0,52,0,191,143,48,0,180,143,44,0,179,143,40,0,178, -143,36,0,177,143,32,0,176,143,8,0,224,3,56,0,189,39,0,0,0,0,232,255,189, -39,0,163,6,60,48,12,198,52,16,0,191,175,0,0,194,144,0,0,0,0,60,0,64,16, -0,0,0,0,2,0,194,144,0,0,0,0,56,0,64,20,255,63,2,60,255,255,66,52,4,0,195, -140,0,128,4,60,36,24,98,0,8,0,194,148,0,0,0,0,129,0,66,44,3,0,64,20,37, -24,100,0,128,0,2,36,8,0,194,164,0,0,194,144,0,0,0,0,255,0,68,48,2,0,2,36, -17,0,130,16,3,0,130,40,5,0,64,16,1,0,2,36,8,0,130,16,33,40,96,0,131,41, -0,8,0,0,0,0,3,0,2,36,25,0,130,16,0,0,0,0,131,41,0,8,0,0,0,0,0,163,3,60, -8,0,194,148,0,0,0,0,112,41,0,8,58,12,99,52,0,163,5,60,8,0,194,148,58,12, -165,52,255,255,68,48,255,255,132,36,8,0,128,4,0,163,2,60,0,0,162,144,1, -0,165,36,255,255,132,36,0,0,98,160,251,255,129,4,1,0,99,36,0,163,2,60,48, -12,66,52,131,41,0,8,0,0,64,160,0,0,192,160,4,0,194,140,0,0,0,0,9,248,64, -0,0,0,0,0,16,0,191,143,24,0,189,39,8,0,224,3,0,0,0,0,0,0,0,0,128,255,189, -39,112,0,178,175,0,163,18,60,128,1,82,54,124,0,191,175,120,0,180,175,116, -0,179,175,108,0,177,175,192,133,132,39,116,39,0,12,104,0,176,175,200,133, -132,39,116,39,0,12,88,0,162,175,208,133,132,39,116,39,0,12,92,0,162,175, -216,133,132,39,116,39,0,12,96,0,162,175,100,0,162,175,88,0,162,143,92,0, -163,143,96,0,164,143,100,0,165,143,72,0,162,175,76,0,163,175,80,0,164,175, -84,0,165,175,224,133,132,39,116,39,0,12,0,0,0,0,16,0,6,60,1,0,5,60,24,0, -164,39,0,163,1,60,4,1,34,172,66,24,6,0,0,163,2,60,33,16,67,0,248,255,66, -140,0,0,0,0,0,0,130,172,0,163,2,60,33,16,67,0,252,255,66,140,33,48,96,0, -24,0,130,172,43,16,166,0,243,255,64,20,4,0,132,36,16,0,6,60,33,24,0,0,35, -1,7,60,103,69,231,52,220,254,5,60,152,186,165,52,240,240,9,60,240,240,41, -53,15,15,8,60,15,15,8,53,1,0,10,60,66,32,6,0,0,163,1,60,33,8,38,0,248,255, -39,172,0,163,1,60,33,8,38,0,252,255,37,172,0,163,1,60,33,8,36,0,248,255, -41,172,0,163,1,60,33,8,36,0,252,255,40,172,0,163,2,60,33,16,70,0,248,255, -66,140,0,0,0,0,7,0,71,20,0,0,0,0,0,163,2,60,33,16,70,0,252,255,66,140,0, -0,0,0,5,0,69,16,0,0,0,0,33,48,128,0,43,16,70,1,228,255,64,20,1,0,99,36, -232,133,132,39,0,163,16,60,128,24,3,0,24,0,162,39,33,24,98,0,0,0,98,140, -66,40,6,0,0,163,1,60,33,8,37,0,248,255,34,172,24,0,98,140,128,1,16,54,0, -163,1,60,33,8,37,0,252,255,34,172,116,39,0,12,16,0,70,174,240,133,132,39, -0,163,1,60,7,41,0,12,4,1,34,172,16,0,5,142,12,134,132,39,7,41,0,12,0,0, -0,0,32,134,132,39,7,41,0,12,0,0,0,0,56,134,145,39,7,41,0,12,33,32,32,2, -0,161,3,60,0,128,99,52,1,160,4,60,0,128,132,36,1,160,5,60,64,21,165,36, -2,0,2,36,64,154,130,175,2,0,2,36,8,34,0,12,0,0,98,164,64,134,132,39,7,41, -0,12,32,0,2,174,32,0,3,142,255,255,2,36,11,0,98,16,0,0,0,0,12,0,2,142,0, -0,0,0,2,0,66,52,12,0,2,174,32,0,5,142,88,134,132,39,7,41,0,12,0,0,0,0,32, -42,0,8,0,0,0,0,7,41,0,12,33,32,32,2,116,134,132,39,7,41,0,12,0,0,0,0,120, -134,132,39,116,39,0,12,0,0,0,0,128,134,132,39,0,163,1,60,7,41,0,12,4,1, -34,172,0,163,4,60,0,16,132,52,0,163,5,60,16,64,165,52,1,0,6,36,33,56,0, -0,1,0,2,36,109,50,0,12,16,0,162,175,7,0,64,16,0,0,0,0,12,0,66,142,0,0,0, -0,8,0,66,52,12,0,66,174,62,42,0,8,0,163,16,60,221,47,0,12,10,0,4,36,0,163, -16,60,128,1,16,54,16,0,3,142,4,0,2,60,43,16,67,0,30,0,64,16,0,0,0,0,140, -134,132,39,7,41,0,12,0,0,0,0,255,255,3,60,16,0,99,52,255,31,8,60,255,255, -8,53,4,163,4,60,1,0,6,36,33,56,0,0,16,0,5,142,1,0,2,36,16,0,162,175,0,163, -2,60,33,40,163,0,37,40,162,0,36,40,168,0,0,160,2,60,109,50,0,12,37,40,162, -0,6,0,64,16,0,0,0,0,12,0,66,142,0,0,0,0,8,0,66,52,97,42,0,8,12,0,66,174, -221,47,0,12,10,0,4,36,148,134,132,39,7,41,0,12,0,0,0,0,16,0,160,175,0,163, -4,60,0,16,132,52,0,163,5,60,0,32,165,52,1,0,6,36,109,50,0,12,33,56,0,0, -7,0,64,16,0,0,0,0,12,0,66,142,0,0,0,0,8,0,66,52,12,0,66,174,119,42,0,8, -0,161,4,60,221,47,0,12,10,0,4,36,0,161,4,60,0,128,132,52,0,163,3,60,128, -1,99,52,130,0,2,36,0,0,130,164,73,0,99,144,130,0,2,36,64,154,130,175,90, -0,96,20,0,0,0,0,160,134,132,39,116,39,0,12,0,0,0,0,0,163,1,60,4,1,34,172, -160,48,0,12,33,32,0,0,7,0,64,16,0,0,0,0,12,0,66,142,0,0,0,0,4,0,66,52,12, -0,66,174,147,42,0,8,0,163,2,60,221,47,0,12,10,0,4,36,0,163,2,60,128,1,66, -52,73,0,66,144,0,0,0,0,67,0,64,20,33,128,0,0,16,0,20,36,0,163,19,60,128, -1,115,54,24,0,177,39,33,32,0,2,33,40,0,0,33,48,0,0,48,0,34,142,16,0,160, -175,0,163,1,60,4,1,34,172,212,52,0,12,33,56,0,0,6,0,64,16,0,0,0,0,12,0, -66,142,4,24,20,2,37,16,67,0,174,42,0,8,12,0,66,174,221,47,0,12,10,0,4,36, -73,0,98,146,0,0,0,0,41,0,64,20,1,0,16,38,4,0,2,42,232,255,64,20,4,0,49, -38,3,0,16,36,47,0,67,146,255,0,2,36,10,0,98,20,33,16,80,2,255,0,3,36,7, -0,0,26,33,16,80,2,255,255,16,38,33,16,80,2,44,0,66,144,0,0,0,0,249,255, -67,16,33,16,80,2,44,0,67,144,255,0,2,36,10,0,98,16,0,0,0,0,255,0,3,36,7, -0,0,26,0,0,0,0,255,255,16,38,33,16,80,2,44,0,66,144,0,0,0,0,249,255,67, -20,0,0,0,0,9,0,0,18,0,0,0,0,168,134,132,39,7,41,0,12,0,0,0,0,16,0,2,36, -12,0,67,142,4,16,2,2,37,24,98,0,12,0,67,174,124,0,191,143,120,0,180,143, -116,0,179,143,112,0,178,143,108,0,177,143,104,0,176,143,8,0,224,3,128,0, -189,39,232,255,189,39,16,0,191,175,196,134,132,39,58,32,0,12,239,0,5,36, -16,0,191,143,24,0,189,39,8,0,224,3,0,0,0,0,232,255,189,39,16,0,191,175, -196,134,132,39,58,32,0,12,250,0,5,36,16,0,191,143,24,0,189,39,8,0,224,3, -0,0,0,0,216,255,189,39,24,0,178,175,33,144,128,0,16,0,176,175,255,255,16, -36,28,0,179,175,0,163,19,60,128,1,115,54,32,0,180,175,255,255,20,36,36, -0,191,175,20,0,177,175,73,0,98,146,0,0,0,0,6,0,64,20,0,163,3,60,128,1,99, -52,73,0,98,144,0,0,0,0,253,255,64,16,0,0,0,0,72,0,113,146,73,0,96,162,0, -22,17,0,3,30,2,0,10,0,2,36,10,0,98,16,11,0,98,40,5,0,64,16,8,0,2,36,8,0, -98,16,16,0,2,36,48,43,0,8,0,0,0,0,13,0,2,36,24,0,98,20,16,0,2,36,88,43, -0,8,33,16,0,2,228,255,20,18,0,0,0,0,36,48,0,12,8,0,4,36,36,48,0,12,32,0, -4,36,36,48,0,12,8,0,4,36,26,0,18,2,2,0,64,22,0,0,0,0,13,0,7,0,255,255,1, -36,4,0,65,22,0,128,1,60,2,0,1,22,0,0,0,0,13,0,6,0,18,128,0,0,0,43,0,8,0, -0,0,0,22,0,66,22,208,255,34,38,159,255,34,38,255,0,66,48,6,0,66,44,3,0, -64,16,191,255,34,38,224,255,49,38,191,255,34,38,255,0,66,48,6,0,66,44,11, -0,64,16,208,255,34,38,3,0,20,22,0,17,16,0,33,128,0,0,0,17,16,0,0,38,17, -0,3,38,4,0,33,16,68,0,36,48,0,12,201,255,80,36,208,255,34,38,255,0,66,48, -10,0,66,44,182,255,64,16,0,0,0,0,3,0,20,22,24,0,18,2,33,128,0,0,24,0,18, -2,0,38,17,0,3,38,4,0,18,40,0,0,33,16,164,0,0,0,0,0,36,48,0,12,208,255,80, -36,0,43,0,8,0,0,0,0,36,0,191,143,32,0,180,143,28,0,179,143,24,0,178,143, -20,0,177,143,16,0,176,143,8,0,224,3,40,0,189,39,176,254,189,39,76,1,191, -175,72,1,190,175,68,1,183,175,64,1,182,175,60,1,181,175,56,1,180,175,52, -1,179,175,48,1,178,175,44,1,177,175,68,62,0,12,40,1,176,175,0,161,3,60, -0,0,99,140,255,0,2,36,0,162,1,60,0,0,34,172,52,18,2,36,4,0,98,20,1,0,2, -36,0,163,1,60,121,43,0,8,32,12,34,160,0,163,1,60,32,12,32,160,236,54,0, -12,0,0,0,0,0,161,3,60,0,128,99,52,2,0,2,36,1,161,4,60,0,0,98,164,0,0,131, -144,2,0,2,36,64,154,130,175,11,0,2,36,130,24,3,0,6,0,98,16,1,161,3,60,0, -0,130,144,10,0,3,36,130,16,2,0,6,0,67,20,1,161,3,60,8,0,99,52,0,0,98,144, -0,0,0,0,68,154,130,163,0,0,98,160,212,134,144,39,116,39,0,12,33,32,0,2, -0,163,17,60,0,1,49,54,220,134,132,39,116,39,0,12,0,0,34,174,228,134,132, -39,116,39,0,12,4,0,34,174,236,134,132,39,116,39,0,12,8,0,34,174,0,163,3, -60,202,1,99,52,0,163,18,60,48,12,82,54,0,163,4,60,128,1,132,52,12,0,34, -174,3,0,2,36,20,0,34,174,1,0,2,36,24,0,35,174,28,0,50,174,32,0,36,174,4, -0,128,172,8,0,128,172,20,0,128,172,24,0,128,172,28,0,130,172,1,1,2,36,36, -0,130,172,40,0,128,164,42,0,128,164,74,0,128,164,76,0,128,164,16,0,34,142, -255,1,3,36,78,0,131,164,1,0,66,44,9,0,64,16,33,152,64,0,244,134,132,39, -116,39,0,12,0,0,0,0,33,32,0,2,116,39,0,12,33,128,64,0,38,128,2,2,16,0,48, -174,136,41,0,12,0,0,0,0,252,134,132,39,116,39,0,12,0,0,0,0,69,35,3,60,137, -103,99,52,4,0,34,174,71,0,2,36,0,163,1,60,0,12,34,160,68,0,2,36,0,163,1, -60,1,12,34,160,0,0,64,162,2,0,64,162,8,0,64,166,0,163,1,60,16,0,35,172, -12,135,132,39,2,0,96,18,0,0,0,0,4,135,132,39,116,39,0,12,0,163,30,60,4, -0,34,174,0,163,10,60,0,1,74,53,128,1,222,55,24,0,171,39,200,0,170,175,160, -0,170,39,24,1,171,175,212,255,171,39,232,0,170,175,248,0,171,175,0,163, -2,60,16,0,66,52,0,0,67,140,0,0,0,0,1,0,99,36,64,41,0,12,0,0,67,172,200, -0,170,143,0,0,0,0,16,0,66,141,0,0,0,0,15,0,64,20,0,0,0,0,244,134,132,39, -116,39,0,12,0,0,0,0,212,134,132,39,116,39,0,12,33,128,64,0,4,135,132,39, -200,0,171,143,38,128,2,2,116,39,0,12,16,0,112,173,200,0,170,143,0,0,0,0, -4,0,66,173,73,0,194,147,0,0,0,0,227,255,64,16,0,163,2,60,33,184,0,0,72, -0,214,147,24,1,163,143,33,144,0,0,73,0,192,163,152,0,96,172,128,0,96,172, -1,0,82,38,5,0,66,42,251,255,64,20,4,0,99,36,252,255,195,38,141,0,98,44, -182,3,64,16,128,16,3,0,1,160,1,60,33,8,34,0,112,250,34,140,0,0,0,0,8,0, -64,0,0,0,0,0,100,135,132,39,7,41,0,12,0,0,0,0,132,135,132,39,7,41,0,12, -0,0,0,0,148,135,132,39,7,41,0,12,0,0,0,0,168,135,132,39,7,41,0,12,0,0,0, -0,188,135,132,39,7,41,0,12,0,0,0,0,204,135,132,39,7,41,0,12,0,0,0,0,240, -135,132,39,7,41,0,12,0,0,0,0,20,136,132,39,7,41,0,12,0,0,0,0,56,136,132, -39,7,41,0,12,0,0,0,0,80,136,132,39,7,41,0,12,0,0,0,0,136,136,132,39,7,41, -0,12,0,0,0,0,172,136,132,39,7,41,0,12,0,0,0,0,220,136,132,39,7,41,0,12, -0,0,0,0,234,43,0,8,0,163,2,60,101,0,22,36,252,136,132,39,7,41,0,12,0,0, -0,0,244,42,0,12,10,0,4,36,32,137,132,39,7,41,0,12,216,0,162,175,216,0,171, -143,0,0,0,0,152,255,96,17,0,163,2,60,33,32,0,0,2,0,5,36,24,0,166,39,33, -56,0,0,1,0,10,36,212,52,0,12,16,0,170,175,1,0,4,36,2,0,5,36,24,0,166,39, -33,56,0,0,1,0,11,36,212,52,0,12,16,0,171,175,2,0,4,36,2,0,5,36,24,0,166, -39,33,56,0,0,1,0,10,36,212,52,0,12,16,0,170,175,3,0,4,36,2,0,5,36,24,0, -166,39,33,56,0,0,1,0,11,36,212,52,0,12,16,0,171,175,216,0,170,143,255,255, -11,36,255,255,74,37,116,0,75,17,216,0,170,175,255,0,214,50,224,0,182,175, -184,0,170,39,240,0,170,175,224,0,171,143,101,0,2,36,50,0,98,17,1,0,247, -38,33,160,0,0,96,135,132,143,0,0,0,0,7,41,0,12,33,40,224,2,160,48,0,12, -33,32,0,0,6,0,64,16,0,0,0,0,152,0,162,143,0,0,0,0,1,0,66,36,142,44,0,8, -152,0,162,175,176,0,162,143,0,0,0,0,1,0,66,36,176,0,162,175,73,0,194,147, -0,0,0,0,86,0,64,20,0,0,0,0,1,0,148,38,20,0,130,42,232,255,64,20,0,0,0,0, -96,135,132,143,0,0,0,0,7,41,0,12,33,40,224,2,0,163,4,60,16,127,132,52,0, -163,5,60,240,127,165,52,1,0,6,36,33,56,0,0,109,50,0,12,16,0,160,175,6,0, -64,16,0,0,0,0,156,0,162,143,0,0,0,0,1,0,66,36,173,44,0,8,156,0,162,175, -180,0,162,143,0,0,0,0,1,0,66,36,180,0,162,175,73,0,194,147,0,0,0,0,55,0, -64,20,0,0,0,0,240,0,182,143,232,0,181,143,3,0,20,36,208,0,160,175,33,136, -0,0,33,152,160,2,33,144,192,2,33,128,0,0,96,135,132,143,0,0,0,0,7,41,0, -12,33,40,224,2,33,32,0,2,24,0,166,39,208,0,165,143,33,56,0,0,212,52,0,12, -16,0,160,175,6,0,64,16,0,0,0,0,0,0,98,142,0,0,0,0,1,0,66,36,206,44,0,8, -0,0,98,174,0,0,66,142,0,0,0,0,1,0,66,36,0,0,66,174,73,0,194,147,0,0,0,0, -22,0,64,20,0,0,0,0,1,0,16,38,42,16,144,2,228,255,64,16,0,0,0,0,1,0,49,38, -10,0,34,42,223,255,64,20,0,0,0,0,4,0,214,38,208,0,170,143,4,0,181,38,1, -0,74,37,2,0,66,41,213,255,64,20,208,0,170,175,216,0,171,143,0,0,0,0,255, -255,107,37,255,255,10,36,146,255,106,21,216,0,171,175,36,137,132,39,7,41, -0,12,33,144,0,0,56,137,132,39,7,41,0,12,33,40,224,2,76,137,132,39,1,0,69, -38,24,1,171,143,128,16,18,0,33,16,75,0,152,0,70,140,128,0,71,140,0,0,0, -0,7,41,0,12,33,144,160,0,4,0,66,42,244,255,64,20,0,0,0,0,73,0,192,163,234, -43,0,8,0,163,2,60,112,137,132,39,7,41,0,12,1,0,247,38,96,135,132,143,0, -0,0,0,7,41,0,12,33,40,224,2,160,48,0,12,33,32,0,0,6,0,64,16,0,0,0,0,152, -0,162,143,0,0,0,0,1,0,66,36,17,45,0,8,152,0,162,175,176,0,162,143,0,0,0, -0,1,0,66,36,176,0,162,175,73,0,194,147,0,0,0,0,236,255,64,16,1,0,247,38, -140,137,132,39,7,41,0,12,255,255,247,38,56,137,132,39,7,41,0,12,33,40,224, -2,176,0,165,143,152,0,166,143,168,137,132,39,135,46,0,8,0,0,0,0,200,137, -132,39,7,41,0,12,0,0,0,0,244,42,0,12,16,0,4,36,33,136,64,0,255,255,10,36, -3,0,42,22,0,0,0,0,0,163,17,60,0,16,49,54,216,137,132,39,7,41,0,12,0,0,0, -0,244,42,0,12,16,0,4,36,33,128,64,0,255,255,11,36,3,0,11,22,0,0,0,0,2,163, -16,60,240,255,16,54,232,137,132,39,7,41,0,12,1,0,247,38,112,137,132,39, -7,41,0,12,0,0,0,0,96,135,132,143,0,0,0,0,7,41,0,12,33,40,224,2,33,32,32, -2,33,40,0,2,1,0,6,36,33,56,0,0,109,50,0,12,16,0,160,175,6,0,64,16,0,0,0, -0,156,0,162,143,0,0,0,0,1,0,66,36,81,45,0,8,156,0,162,175,180,0,162,143, -0,0,0,0,1,0,66,36,180,0,162,175,73,0,194,147,0,0,0,0,232,255,64,16,1,0, -247,38,236,137,132,39,7,41,0,12,255,255,247,38,56,137,132,39,7,41,0,12, -33,40,224,2,180,0,165,143,156,0,166,143,4,138,132,39,135,46,0,8,0,0,0,0, -36,138,132,39,7,41,0,12,0,0,0,0,76,138,132,39,7,41,0,12,3,0,5,36,73,0,194, -147,0,0,0,0,6,0,64,20,0,163,3,60,128,1,99,52,73,0,98,144,0,0,0,0,253,255, -64,16,0,0,0,0,72,0,194,147,232,137,132,39,73,0,192,163,7,41,0,12,255,0, -81,48,208,255,36,38,4,0,130,44,115,254,64,16,0,163,2,60,33,144,128,0,112, -138,132,39,7,41,0,12,33,160,64,2,244,42,0,12,10,0,4,36,255,255,66,36,15, -0,81,48,144,138,132,39,7,41,0,12,51,0,22,36,248,0,170,143,35,168,17,0,204, -0,83,37,33,88,0,0,254,255,96,21,33,128,64,2,236,255,162,39,204,0,81,36, -1,0,247,38,96,135,132,143,0,0,0,0,7,41,0,12,33,40,224,2,33,32,0,2,255,255, -165,38,33,48,0,0,33,56,0,0,212,52,0,12,16,0,160,175,6,0,64,16,0,0,0,0,0, -0,98,142,0,0,0,0,1,0,66,36,161,45,0,8,0,0,98,174,0,0,34,142,0,0,0,0,1,0, -66,36,0,0,34,174,73,0,194,147,0,0,0,0,7,0,64,20,1,0,16,38,42,16,144,2,229, -255,64,16,1,0,247,38,255,255,247,38,135,45,0,8,33,88,0,0,176,138,132,39, -7,41,0,12,0,0,0,0,56,137,132,39,7,41,0,12,33,40,224,2,255,0,197,50,128, -24,5,0,33,16,163,3,248,0,170,143,236,255,70,140,0,0,0,0,50,46,0,8,33,24, -67,1,205,255,203,38,236,138,132,39,7,41,0,12,208,0,171,175,208,0,170,143, -248,138,132,39,2,0,64,17,0,0,0,0,244,138,132,39,7,41,0,12,0,0,0,0,252,138, -132,39,7,41,0,12,0,0,0,0,20,139,132,39,7,41,0,12,3,0,5,36,73,0,194,147, -0,0,0,0,7,0,64,20,0,0,0,0,0,163,3,60,128,1,99,52,73,0,98,144,0,0,0,0,253, -255,64,16,0,0,0,0,72,0,194,147,73,0,192,163,255,0,81,48,97,0,2,36,3,0,34, -18,65,0,2,36,4,0,34,22,208,255,36,38,33,144,0,0,228,45,0,8,3,0,20,36,4, -0,130,44,9,254,64,16,0,163,2,60,33,144,128,0,33,160,64,2,112,137,132,39, -7,41,0,12,0,0,0,0,208,0,171,143,1,0,10,36,16,0,106,21,42,80,146,2,42,16, -146,2,13,0,64,20,33,128,64,2,1,0,11,36,16,0,171,175,33,32,0,2,2,0,5,36, -24,0,166,39,212,52,0,12,33,56,0,0,1,0,16,38,42,16,144,2,247,255,64,16,1, -0,11,36,42,80,146,2,248,0,171,143,128,168,22,0,32,1,170,175,236,255,170, -39,33,152,117,1,0,1,170,175,32,1,171,143,0,0,0,0,255,255,96,21,33,128,64, -2,0,1,170,143,0,0,0,0,33,136,85,1,1,0,247,38,96,135,132,143,0,0,0,0,7,41, -0,12,33,40,224,2,33,32,0,2,24,0,166,39,208,0,165,143,33,56,0,0,212,52,0, -12,16,0,160,175,6,0,64,16,0,0,0,0,0,0,98,142,0,0,0,0,1,0,66,36,29,46,0, -8,0,0,98,174,0,0,34,142,0,0,0,0,1,0,66,36,0,0,34,174,73,0,194,147,0,0,0, -0,6,0,64,20,1,0,16,38,42,16,144,2,229,255,64,16,1,0,247,38,0,46,0,8,255, -255,247,38,176,138,132,39,7,41,0,12,0,0,0,0,56,137,132,39,7,41,0,12,33, -40,224,2,255,0,197,50,128,24,5,0,33,16,163,3,248,0,171,143,236,255,70,140, -33,24,99,1,0,0,103,140,200,138,132,39,7,41,0,12,0,0,0,0,73,0,192,163,234, -43,0,8,0,163,2,60,88,139,132,39,7,41,0,12,0,0,0,0,126,46,0,8,0,0,0,0,1, -160,4,60,0,128,132,36,1,160,5,60,32,249,165,36,8,34,0,12,15,163,19,60,112, -137,132,39,7,41,0,12,8,1,162,175,248,255,115,54,35,1,18,60,103,69,82,54, -15,163,17,60,252,255,49,54,220,254,16,60,152,186,16,54,7,163,10,60,248, -255,74,53,240,240,22,60,240,240,214,54,7,163,21,60,252,255,181,54,15,15, -20,60,15,15,148,54,16,1,170,175,1,0,247,38,96,135,132,143,0,0,0,0,7,41, -0,12,33,40,224,2,72,139,132,39,7,41,0,12,0,0,0,0,0,0,114,174,0,0,48,174, -16,1,171,143,0,0,0,0,0,0,118,173,0,0,180,174,0,0,98,142,0,0,0,0,5,0,82, -20,0,0,0,0,0,0,34,142,0,0,0,0,18,0,80,16,0,0,0,0,1,160,4,60,0,128,132,36, -1,160,5,60,8,34,0,12,32,249,165,36,8,1,170,143,0,0,0,0,196,255,66,21,0, -0,0,0,56,134,132,39,7,41,0,12,0,0,0,0,73,0,194,147,0,0,0,0,220,255,64,16, -1,0,247,38,255,255,247,38,128,139,132,39,7,41,0,12,0,0,0,0,56,137,132,39, -7,41,0,12,33,40,224,2,192,0,165,143,168,0,166,143,152,139,132,39,7,41,0, -12,0,0,0,0,73,0,192,163,234,43,0,8,0,163,2,60,0,161,5,60,64,154,131,151, -0,128,165,52,1,0,98,56,0,0,162,164,0,163,2,60,0,0,66,140,184,139,132,39, -7,41,0,12,0,0,163,164,234,43,0,8,0,163,2,60,216,139,132,39,7,41,0,12,0, -0,0,0,244,42,0,12,16,0,4,36,33,136,64,0,255,255,11,36,74,253,43,18,0,163, -2,60,232,137,132,39,7,41,0,12,0,0,0,0,255,0,195,50,100,0,2,36,5,0,98,16, -4,0,2,36,3,0,98,16,68,0,2,36,27,0,98,20,114,0,2,36,100,0,2,36,4,0,194,18, -33,144,0,0,16,0,66,42,57,253,64,16,0,163,2,60,232,139,132,39,0,129,18,0, -33,128,48,2,7,41,0,12,33,40,0,2,0,160,4,60,37,32,4,2,73,48,0,12,16,0,5, -36,232,137,132,39,7,41,0,12,1,0,82,38,100,0,2,36,240,255,194,22,16,0,66, -42,4,0,66,42,239,255,64,20,0,163,2,60,235,43,0,8,16,0,66,52,9,0,98,20,18, -0,2,36,0,160,2,60,37,16,34,2,0,0,69,144,240,139,132,39,7,41,0,12,0,0,0, -0,234,43,0,8,0,163,2,60,9,0,98,20,82,0,2,36,0,160,2,60,37,16,34,2,0,0,69, -148,248,139,132,39,7,41,0,12,0,0,0,0,234,43,0,8,0,163,2,60,9,0,98,20,102, -0,2,36,0,160,2,60,37,16,34,2,0,0,69,140,0,140,132,39,7,41,0,12,0,0,0,0, -234,43,0,8,0,163,2,60,3,0,98,16,119,0,2,36,4,0,98,20,6,0,2,36,8,140,132, -39,243,46,0,8,0,0,0,0,3,0,98,16,23,0,2,36,4,0,98,20,0,0,0,0,12,140,132, -39,243,46,0,8,0,0,0,0,16,140,132,39,7,41,0,12,0,0,0,0,20,140,132,39,7,41, -0,12,0,0,0,0,244,42,0,12,16,0,4,36,232,137,132,39,7,41,0,12,33,128,64,0, -255,0,195,50,102,0,2,36,5,0,98,16,6,0,2,36,3,0,98,16,70,0,2,36,11,0,98, -20,33,160,0,0,40,140,132,39,7,41,0,12,0,0,0,0,244,42,0,12,16,0,4,36,232, -137,132,39,7,41,0,12,255,255,84,36,16,47,0,8,0,160,2,60,0,160,2,60,37,136, -34,2,255,0,197,50,119,0,9,36,102,0,8,36,23,0,7,36,6,0,6,36,128,16,20,0, -33,32,81,0,64,16,20,0,33,24,81,0,33,16,145,2,3,0,169,16,0,0,0,0,3,0,168, -20,0,0,0,0,40,47,0,8,0,0,80,160,3,0,167,16,0,0,0,0,3,0,166,20,0,0,0,0,40, -47,0,8,0,0,112,164,0,0,144,172,252,255,132,36,254,255,99,36,255,255,148, -38,239,255,129,6,255,255,66,36,234,43,0,8,0,163,2,60,1,0,4,36,99,36,0,12, -33,40,0,0,8,0,194,175,1,0,10,36,72,0,202,163,73,0,192,163,234,43,0,8,0, -163,2,60,160,48,0,12,33,32,0,0,191,47,0,8,0,0,0,0,4,0,194,143,8,0,194,143, -0,0,0,0,7,0,64,16,16,48,2,36,8,0,194,143,0,0,0,0,17,48,66,44,4,0,64,20, -0,163,2,60,16,48,2,36,8,0,194,175,0,163,2,60,0,16,66,52,255,31,3,60,255, -255,99,52,0,163,4,60,0,16,132,52,33,48,0,0,8,0,197,143,33,56,0,0,16,0,160, -175,33,40,162,0,0,160,2,60,36,40,163,0,109,50,0,12,37,40,162,0,8,0,194, -175,8,0,194,143,0,0,0,0,4,0,194,175,201,47,0,8,1,0,10,36,33,40,0,0,33,48, -0,0,8,0,210,143,33,56,0,0,16,0,160,175,212,52,0,12,33,32,64,2,191,47,0, -8,0,0,0,0,8,0,194,143,8,0,195,143,255,0,82,48,2,26,3,0,8,0,194,143,0,0, -0,0,2,20,2,0,255,0,81,48,6,0,32,22,255,0,116,48,33,32,64,2,39,40,20,0,33, -48,0,0,128,47,0,8,1,0,7,36,33,32,64,2,2,0,5,36,24,0,166,39,33,56,0,0,1, -0,10,36,212,52,0,12,16,0,170,175,33,32,64,2,1,0,5,36,24,0,166,39,33,56, -0,0,212,52,0,12,16,0,160,175,191,47,0,8,0,0,0,0,1,161,4,60,0,0,130,144, -11,0,3,36,130,16,2,0,4,0,67,20,0,0,0,0,68,154,130,147,199,47,0,8,0,0,0, -0,0,0,130,144,10,0,3,36,130,16,2,0,5,0,67,20,0,0,0,0,68,154,130,147,0,0, -0,0,199,47,0,8,15,0,66,48,199,47,0,8,255,255,2,52,1,161,4,60,0,0,130,144, -11,0,3,36,130,16,2,0,8,0,67,20,1,161,3,60,8,0,194,143,8,0,99,52,2,18,2, -0,68,154,130,163,0,0,98,160,191,47,0,8,255,0,66,48,0,0,130,144,10,0,3,36, -130,16,2,0,22,0,67,20,255,255,2,52,1,161,2,60,8,0,195,143,8,0,66,52,2,26, -3,0,15,0,99,48,33,32,96,0,68,154,131,163,255,0,99,48,0,0,68,160,8,0,195, -175,193,47,0,8,1,0,11,36,1,161,2,60,0,0,66,144,0,0,0,0,199,47,0,8,255,0, -66,48,8,0,196,143,0,0,0,0,184,54,0,12,255,0,132,48,8,0,194,175,1,0,11,36, -72,0,203,163,234,43,0,8,0,163,2,60,33,32,0,0,99,36,0,12,1,0,5,36,8,0,194, -175,1,0,10,36,72,0,202,163,234,43,0,8,0,163,2,60,56,140,132,39,7,41,0,12, -0,0,0,0,234,43,0,8,0,163,2,60,76,1,191,143,72,1,190,143,68,1,183,143,64, -1,182,143,60,1,181,143,56,1,180,143,52,1,179,143,48,1,178,143,44,1,177, -143,40,1,176,143,8,0,224,3,80,1,189,39,0,163,5,60,128,1,165,52,74,0,162, -148,0,0,0,0,33,16,69,0,80,0,68,160,74,0,162,148,78,0,163,148,76,0,164,148, -1,0,66,36,36,24,98,0,2,0,100,16,0,0,0,0,74,0,163,164,8,0,224,3,0,0,0,0, -224,255,189,39,16,0,176,175,0,163,16,60,128,1,16,54,24,0,191,175,20,0,177, -175,0,0,2,142,1,0,17,36,7,0,81,20,0,161,5,60,92,140,131,151,0,0,0,0,255, -255,98,36,92,140,130,167,13,0,96,20,0,0,0,0,0,64,165,52,90,140,131,151, -232,3,2,36,92,140,130,167,0,0,160,164,1,0,99,36,90,140,131,167,250,33,0, -12,33,32,0,0,1,4,4,36,250,33,0,12,0,0,17,174,24,0,191,143,20,0,177,143, -16,0,176,143,8,0,224,3,32,0,189,39,0,163,4,60,128,1,132,52,76,0,130,148, -0,0,0,0,13,0,64,16,0,0,0,0,76,0,131,148,74,0,130,148,0,0,0,0,8,0,98,16, -0,0,0,0,0,163,4,60,128,1,132,52,76,0,131,148,74,0,130,148,0,0,0,0,252,255, -98,20,0,0,0,0,8,0,224,3,0,0,0,0,0,0,0,0,0,0,0,0,232,255,189,39,33,40,128, -0,0,38,4,0,3,38,4,0,10,0,2,36,6,0,130,16,16,0,191,175,13,0,2,36,11,0,130, -16,0,38,5,0,64,48,0,8,0,0,0,0,96,140,131,147,0,0,0,0,1,0,98,48,17,0,64, -20,1,0,98,52,96,140,130,163,65,48,0,8,0,38,5,0,96,140,131,147,0,0,0,0,2, -0,98,48,9,0,64,20,2,0,98,52,96,140,130,163,65,48,0,8,0,38,5,0,96,140,128, -163,221,47,0,12,3,38,4,0,14,48,0,12,0,0,0,0,16,0,191,143,24,0,189,39,8, -0,224,3,0,0,0,0,208,255,189,39,28,0,177,175,33,136,128,0,24,0,176,175,33, -128,160,0,44,0,191,175,40,0,180,175,36,0,179,175,3,0,0,30,32,0,178,175, -89,48,0,8,1,0,16,36,26,0,2,42,3,0,64,20,33,152,32,2,25,0,16,36,33,152,32, -2,33,144,0,2,9,0,64,18,255,255,80,38,255,255,20,36,100,140,132,39,0,0,37, -146,1,0,49,38,7,41,0,12,255,255,16,38,250,255,20,22,0,0,0,0,17,0,66,42, -21,0,64,16,0,0,0,0,36,48,0,12,32,0,4,36,255,255,82,38,255,255,2,36,15,0, -66,18,255,255,16,36,0,0,100,146,0,0,0,0,224,255,130,36,95,0,66,44,3,0,64, -16,0,38,4,0,119,48,0,8,3,38,4,0,46,0,4,36,36,48,0,12,1,0,115,38,255,255, -82,38,243,255,80,22,0,0,0,0,44,0,191,143,40,0,180,143,36,0,179,143,32,0, -178,143,28,0,177,143,24,0,176,143,8,0,224,3,48,0,189,39,232,255,189,39, -13,0,4,36,20,0,191,175,36,48,0,12,16,0,176,175,33,128,0,0,36,48,0,12,32, -0,4,36,1,0,16,38,78,0,2,42,251,255,64,20,0,0,0,0,36,48,0,12,13,0,4,36,20, -0,191,143,16,0,176,143,8,0,224,3,24,0,189,39,248,255,189,39,5,0,128,16, -255,255,130,36,255,255,3,36,255,255,66,36,255,255,67,20,255,255,66,36,8, -0,189,39,8,0,224,3,0,0,0,0,0,163,2,60,32,12,66,144,208,255,189,39,44,0, -191,175,40,0,182,175,36,0,181,175,32,0,180,175,28,0,179,175,24,0,178,175, -20,0,177,175,5,0,64,16,16,0,176,175,218,49,0,12,0,0,0,0,208,49,0,8,0,0, -0,0,3,0,128,16,0,0,0,0,132,48,0,12,0,0,0,0,108,140,132,39,7,41,0,12,33, -144,0,0,0,161,2,60,0,64,66,52,0,0,64,164,99,0,17,36,0,161,16,60,52,0,21, -36,16,0,19,36,226,0,20,36,237,47,0,12,0,0,0,0,150,48,0,12,10,0,4,36,10, -0,4,36,150,48,0,12,12,0,21,162,10,0,4,36,150,48,0,12,0,0,19,162,10,0,4, -36,150,48,0,12,0,0,19,162,10,0,4,36,150,48,0,12,12,0,20,162,0,0,2,146,0, -0,0,0,64,0,66,48,4,0,64,16,0,0,0,0,255,255,49,38,233,255,32,22,0,0,0,0, -5,0,32,22,99,0,17,36,132,140,132,39,7,41,0,12,8,0,82,54,99,0,17,36,0,161, -16,60,180,0,21,36,255,0,19,36,232,0,20,36,237,47,0,12,0,0,0,0,150,48,0, -12,10,0,4,36,10,0,4,36,150,48,0,12,12,0,21,162,10,0,4,36,150,48,0,12,8, -0,19,162,10,0,4,36,150,48,0,12,8,0,19,162,10,0,4,36,150,48,0,12,12,0,20, -162,8,0,2,146,0,0,0,0,64,0,66,48,4,0,64,16,0,0,0,0,255,255,49,38,233,255, -32,22,0,0,0,0,5,0,32,22,2,0,16,36,160,140,132,39,7,41,0,12,8,0,82,54,2, -0,16,36,255,255,17,36,237,47,0,12,255,255,16,38,253,255,17,22,10,0,4,36, -0,161,16,60,216,0,2,36,150,48,0,12,12,0,2,162,8,0,2,146,10,0,4,36,150,48, -0,12,255,0,81,48,8,0,2,146,0,0,0,0,255,0,67,48,255,0,2,36,7,0,98,20,0,161, -2,60,6,0,35,22,0,64,66,52,188,140,132,39,7,41,0,12,0,0,0,0,0,161,2,60,0, -64,66,52,33,32,0,0,0,0,64,164,250,33,0,12,0,163,17,60,128,1,49,54,1,4,4, -36,1,0,16,36,250,33,0,12,0,0,48,174,0,0,34,142,0,0,0,0,5,0,80,16,6,0,16, -60,212,140,132,39,7,41,0,12,1,0,82,54,6,0,16,60,127,26,16,54,0,163,17,60, -128,1,49,54,255,255,19,36,237,47,0,12,0,0,0,0,0,0,34,142,0,0,0,0,3,0,64, -16,255,255,16,38,249,255,19,22,0,0,0,0,0,0,34,142,0,0,0,0,5,0,64,16,0,161, -2,60,240,140,132,39,7,41,0,12,2,0,82,54,0,161,2,60,0,64,66,52,0,0,64,164, -99,0,17,36,0,161,16,60,52,0,21,36,255,0,19,36,226,0,20,36,237,47,0,12,0, -0,0,0,150,48,0,12,10,0,4,36,10,0,4,36,150,48,0,12,12,0,21,162,10,0,4,36, -150,48,0,12,0,0,19,162,10,0,4,36,150,48,0,12,0,0,19,162,10,0,4,36,150,48, -0,12,12,0,20,162,0,0,2,146,0,0,0,0,64,0,66,48,4,0,64,16,0,0,0,0,255,255, -49,38,233,255,32,22,0,0,0,0,4,0,32,22,0,0,0,0,132,140,132,39,7,41,0,12, -8,0,82,54,250,33,0,12,33,32,0,0,0,163,17,60,128,1,49,54,1,4,4,36,1,0,16, -36,250,33,0,12,0,0,48,174,150,48,0,12,10,0,4,36,237,47,0,12,0,0,0,0,0,0, -34,142,0,0,0,0,4,0,80,16,0,0,0,0,16,141,132,39,7,41,0,12,4,0,82,54,250, -33,0,12,33,32,0,0,0,161,2,60,0,64,66,52,0,0,64,164,99,0,17,36,0,161,16, -60,52,0,22,36,204,0,21,36,28,0,20,36,226,0,19,36,237,47,0,12,0,0,0,0,150, -48,0,12,10,0,4,36,10,0,4,36,150,48,0,12,12,0,22,162,10,0,4,36,150,48,0, -12,0,0,21,162,10,0,4,36,150,48,0,12,0,0,20,162,10,0,4,36,150,48,0,12,12, -0,19,162,0,0,2,146,0,0,0,0,64,0,66,48,4,0,64,16,0,0,0,0,255,255,49,38,233, -255,32,22,0,0,0,0,5,0,32,22,99,0,17,36,132,140,132,39,7,41,0,12,8,0,82, -54,99,0,17,36,0,161,16,60,180,0,21,36,255,0,19,36,232,0,20,36,237,47,0, -12,0,0,0,0,150,48,0,12,10,0,4,36,10,0,4,36,150,48,0,12,12,0,21,162,10,0, -4,36,150,48,0,12,8,0,19,162,10,0,4,36,150,48,0,12,8,0,19,162,10,0,4,36, -150,48,0,12,12,0,20,162,8,0,2,146,0,0,0,0,64,0,66,48,4,0,64,16,0,0,0,0, -255,255,49,38,233,255,32,22,0,0,0,0,5,0,32,22,0,161,2,60,160,140,132,39, -7,41,0,12,8,0,82,54,0,161,2,60,0,64,66,52,33,32,0,0,250,33,0,12,0,0,64, -164,0,163,3,60,128,1,99,52,1,4,4,36,1,0,2,36,250,33,0,12,0,0,98,172,5,0, -64,22,33,16,64,2,48,141,132,39,7,41,0,12,0,0,0,0,33,16,64,2,44,0,191,143, -40,0,182,143,36,0,181,143,32,0,180,143,28,0,179,143,24,0,178,143,20,0,177, -143,16,0,176,143,8,0,224,3,48,0,189,39,216,255,189,39,32,0,191,175,28,0, -179,175,24,0,178,175,20,0,177,175,3,0,128,16,16,0,176,175,132,48,0,12,0, -0,0,0,56,141,132,39,7,41,0,12,33,152,0,0,0,161,2,60,0,64,66,52,0,0,64,164, -237,47,0,12,3,0,16,60,150,48,0,12,10,0,4,36,0,161,2,60,255,255,16,54,0, -0,66,140,32,78,3,36,36,16,80,0,4,0,67,16,0,0,0,0,132,140,132,39,7,41,0, -12,8,0,19,36,237,47,0,12,0,0,0,0,150,48,0,12,10,0,4,36,0,161,2,60,40,0, -66,52,0,0,66,140,0,0,0,0,36,16,80,0,5,0,80,16,2,0,16,36,84,141,132,39,7, -41,0,12,8,0,115,54,2,0,16,36,255,255,17,36,237,47,0,12,255,255,16,38,253, -255,17,22,0,0,0,0,0,161,17,60,60,0,49,54,3,0,16,60,255,255,16,54,0,0,34, -142,10,0,4,36,150,48,0,12,36,144,80,0,0,0,34,142,0,0,0,0,36,16,80,0,7,0, -64,20,0,161,2,60,6,0,64,22,0,64,66,52,112,141,132,39,7,41,0,12,0,0,0,0, -0,161,2,60,0,64,66,52,33,32,0,0,250,33,0,12,0,0,64,164,0,163,3,60,128,1, -99,52,1,4,4,36,1,0,2,36,0,0,98,172,250,33,0,12,79,195,16,52,0,163,3,60, -128,1,99,52,255,255,4,36,0,0,98,140,0,0,0,0,3,0,64,16,255,255,16,38,251, -255,4,22,0,0,0,0,0,0,98,140,0,0,0,0,5,0,64,16,0,161,2,60,240,140,132,39, -7,41,0,12,2,0,115,54,0,161,2,60,0,0,64,172,79,195,16,52,255,255,17,36,237, -47,0,12,255,255,16,38,253,255,17,22,0,0,0,0,150,48,0,12,10,0,4,36,0,161, -18,60,0,64,82,54,33,32,0,0,0,0,64,166,250,33,0,12,0,163,16,60,128,1,16, -54,1,4,4,36,1,0,17,36,250,33,0,12,0,0,17,174,0,0,2,142,0,0,0,0,4,0,81,16, -0,0,0,0,16,141,132,39,7,41,0,12,4,0,115,54,250,33,0,12,33,32,0,0,33,32, -0,0,250,33,0,12,0,0,64,166,1,4,4,36,250,33,0,12,0,0,17,174,0,161,3,60,32, -78,2,36,0,0,98,172,5,0,96,22,33,16,96,2,48,141,132,39,7,41,0,12,0,0,0,0, -33,16,96,2,32,0,191,143,28,0,179,143,24,0,178,143,20,0,177,143,16,0,176, -143,8,0,224,3,40,0,189,39,192,255,189,39,28,0,177,175,80,0,177,143,52,0, -183,175,33,184,128,0,48,0,182,175,33,176,160,0,56,0,190,175,33,240,192, -0,60,0,191,175,44,0,181,175,40,0,180,175,36,0,179,175,32,0,178,175,9,0, -192,19,24,0,176,175,3,0,224,16,0,0,0,0,132,48,0,12,0,0,0,0,180,141,132, -39,33,40,224,2,7,41,0,12,33,48,192,2,33,128,224,2,43,16,208,2,6,0,64,20, -33,168,0,0,0,0,0,174,4,0,16,38,43,16,208,2,252,255,64,16,0,0,0,0,237,47, -0,12,0,0,0,0,144,0,32,18,33,128,224,2,43,16,208,2,69,0,64,20,0,0,0,0,17, -17,19,60,17,17,115,54,51,51,18,60,51,51,82,54,119,119,17,60,119,119,49, -54,255,255,20,36,0,0,7,142,0,0,0,0,6,0,224,16,1,0,5,36,33,48,0,0,176,141, -132,143,1,0,181,54,7,41,0,12,16,0,176,175,0,0,19,174,0,0,7,142,0,0,0,0, -7,0,243,16,2,0,5,36,17,17,6,60,17,17,198,52,176,141,132,143,2,0,181,54, -7,41,0,12,16,0,176,175,0,0,18,174,0,0,7,142,0,0,0,0,7,0,242,16,3,0,5,36, -51,51,6,60,51,51,198,52,176,141,132,143,4,0,181,54,7,41,0,12,16,0,176,175, -0,0,17,174,0,0,7,142,0,0,0,0,7,0,241,16,4,0,5,36,119,119,6,60,119,119,198, -52,176,141,132,143,8,0,181,54,7,41,0,12,16,0,176,175,0,0,20,174,0,0,7,142, -0,0,0,0,6,0,244,16,5,0,5,36,255,255,6,36,176,141,132,143,16,0,181,54,7, -41,0,12,16,0,176,175,255,0,2,50,3,0,64,20,0,0,0,0,237,47,0,12,0,0,0,0,4, -0,16,38,43,16,208,2,196,255,64,16,0,0,0,0,33,128,192,2,43,16,215,2,203, -1,64,20,119,119,19,60,119,119,115,54,51,51,18,60,51,51,82,54,17,17,17,60, -17,17,49,54,0,0,7,142,255,255,2,36,6,0,226,16,6,0,5,36,255,255,6,36,176, -141,132,143,32,0,181,54,7,41,0,12,16,0,176,175,0,0,19,174,0,0,7,142,0,0, -0,0,7,0,243,16,7,0,5,36,119,119,6,60,119,119,198,52,176,141,132,143,64, -0,181,54,7,41,0,12,16,0,176,175,0,0,18,174,0,0,7,142,0,0,0,0,7,0,242,16, -8,0,5,36,51,51,6,60,51,51,198,52,176,141,132,143,128,0,181,54,7,41,0,12, -16,0,176,175,0,0,17,174,0,0,7,142,0,0,0,0,7,0,241,16,9,0,5,36,17,17,6,60, -17,17,198,52,176,141,132,143,0,1,181,54,7,41,0,12,16,0,176,175,0,0,0,174, -0,0,7,142,0,0,0,0,6,0,224,16,10,0,5,36,33,48,0,0,176,141,132,143,0,2,181, -54,7,41,0,12,16,0,176,175,255,0,2,50,3,0,64,20,0,0,0,0,237,47,0,12,0,0, -0,0,252,255,16,38,43,16,23,2,196,255,64,16,0,0,0,0,167,52,0,8,0,0,0,0,43, -16,215,2,81,0,64,20,0,0,0,0,1,0,18,36,33,136,0,0,0,0,7,146,255,0,51,50, -255,0,231,48,6,0,243,16,1,0,5,36,33,48,96,2,176,141,132,143,1,0,181,54, -7,41,0,12,16,0,176,175,37,160,50,2,0,0,20,162,0,0,7,146,255,0,134,50,255, -0,231,48,5,0,230,16,2,0,5,36,176,141,132,143,2,0,181,54,7,41,0,12,16,0, -176,175,0,0,17,162,0,0,7,146,0,0,0,0,255,0,231,48,6,0,243,16,3,0,5,36,33, -48,96,2,176,141,132,143,4,0,181,54,7,41,0,12,16,0,176,175,0,0,20,162,64, -16,18,0,33,144,64,0,255,255,81,36,255,0,66,50,218,255,64,20,255,0,2,50, -3,0,64,20,0,0,0,0,237,47,0,12,0,0,0,0,1,0,16,38,43,16,208,2,208,255,64, -16,43,16,215,2,30,0,64,20,33,128,224,2,1,0,18,36,254,0,17,36,0,0,7,146, -37,152,50,2,255,0,102,50,255,0,231,48,5,0,230,16,4,0,5,36,176,141,132,143, -8,0,181,54,7,41,0,12,16,0,176,175,64,144,18,0,64,16,17,0,0,0,17,162,1,0, -81,52,255,0,66,50,0,0,19,162,239,255,64,20,255,0,2,50,3,0,64,20,0,0,0,0, -237,47,0,12,0,0,0,0,1,0,16,38,43,16,208,2,230,255,64,16,1,0,18,36,43,16, -215,2,58,0,64,20,33,128,192,2,128,0,18,36,127,0,17,36,0,0,7,146,37,152, -50,2,255,0,102,50,255,0,231,48,5,0,230,16,5,0,5,36,176,141,132,143,16,0, -181,54,7,41,0,12,16,0,176,175,255,0,66,50,66,144,2,0,255,0,34,50,0,0,17, -162,0,0,19,162,0,0,17,162,239,255,64,22,66,136,2,0,255,0,2,50,3,0,64,20, -0,0,0,0,237,47,0,12,0,0,0,0,255,255,16,38,43,16,23,2,229,255,64,16,128, -0,18,36,43,16,215,2,26,0,64,20,33,128,192,2,128,0,18,36,0,0,7,146,0,0,0, -0,255,0,231,48,6,0,224,16,6,0,5,36,33,48,0,0,176,141,132,143,32,0,181,54, -7,41,0,12,16,0,176,175,255,0,66,50,0,0,18,162,66,144,2,0,0,0,0,162,241, -255,64,22,255,0,2,50,3,0,64,20,0,0,0,0,237,47,0,12,0,0,0,0,255,255,16,38, -43,16,23,2,233,255,64,16,128,0,18,36,15,0,18,36,0,68,2,60,0,17,66,52,1, -0,67,50,35,24,3,0,36,136,98,0,2,0,66,50,3,0,64,16,0,17,2,60,0,68,66,52, -37,136,34,2,4,0,66,50,3,0,64,16,136,0,2,60,34,0,66,52,37,136,34,2,8,0,66, -50,3,0,64,16,34,0,2,60,136,0,66,52,37,136,34,2,33,128,224,2,43,16,208,2, -6,0,64,20,0,0,0,0,0,0,17,174,4,0,16,38,43,16,208,2,252,255,64,16,0,0,0, -0,237,47,0,12,33,128,224,2,43,16,208,2,19,0,64,20,85,170,2,60,0,0,7,142, -0,0,0,0,6,0,241,16,7,0,5,36,33,48,32,2,176,141,132,143,64,0,181,54,7,41, -0,12,16,0,176,175,255,0,2,50,3,0,64,20,0,0,0,0,237,47,0,12,0,0,0,0,4,0, -16,38,43,16,208,2,239,255,64,16,85,170,2,60,85,170,66,52,37,136,34,2,33, -128,224,2,43,16,208,2,6,0,64,20,0,0,0,0,0,0,17,174,4,0,16,38,43,16,208, -2,252,255,64,16,0,0,0,0,237,47,0,12,33,128,224,2,43,16,208,2,19,0,64,20, -170,85,2,60,0,0,7,142,0,0,0,0,6,0,241,16,8,0,5,36,33,48,32,2,176,141,132, -143,128,0,181,54,7,41,0,12,16,0,176,175,255,0,2,50,3,0,64,20,0,0,0,0,237, -47,0,12,0,0,0,0,4,0,16,38,43,16,208,2,239,255,64,16,170,85,2,60,170,85, -66,52,36,136,34,2,33,128,224,2,43,16,208,2,6,0,64,20,0,0,0,0,0,0,17,174, -4,0,16,38,43,16,208,2,252,255,64,16,0,0,0,0,237,47,0,12,33,128,224,2,43, -16,208,2,19,0,64,20,0,0,0,0,0,0,7,142,0,0,0,0,6,0,241,16,9,0,5,36,33,48, -32,2,176,141,132,143,0,1,181,54,7,41,0,12,16,0,176,175,255,0,2,50,3,0,64, -20,0,0,0,0,237,47,0,12,0,0,0,0,4,0,16,38,43,16,208,2,239,255,64,16,0,0, -0,0,255,255,82,38,135,255,65,6,0,68,2,60,15,0,18,36,0,136,2,60,0,34,66, -52,1,0,67,50,35,24,3,0,36,136,98,0,2,0,66,50,3,0,64,16,0,34,2,60,0,136, -66,52,37,136,34,2,4,0,66,50,3,0,64,16,68,0,2,60,17,0,66,52,37,136,34,2, -8,0,66,50,3,0,64,16,17,0,2,60,68,0,66,52,37,136,34,2,33,128,224,2,43,16, -208,2,6,0,64,20,0,0,0,0,0,0,17,174,4,0,16,38,43,16,208,2,252,255,64,16, -0,0,0,0,237,47,0,12,33,128,224,2,43,16,208,2,19,0,64,20,170,85,2,60,0,0, -7,142,0,0,0,0,6,0,241,16,10,0,5,36,33,48,32,2,176,141,132,143,0,2,181,54, -7,41,0,12,16,0,176,175,255,0,2,50,3,0,64,20,0,0,0,0,237,47,0,12,0,0,0,0, -4,0,16,38,43,16,208,2,239,255,64,16,170,85,2,60,170,85,66,52,37,136,34, -2,33,128,224,2,43,16,208,2,6,0,64,20,0,0,0,0,0,0,17,174,4,0,16,38,43,16, -208,2,252,255,64,16,0,0,0,0,237,47,0,12,33,128,224,2,43,16,208,2,19,0,64, -20,85,170,2,60,0,0,7,142,0,0,0,0,6,0,241,16,11,0,5,36,33,48,32,2,176,141, -132,143,0,2,181,54,7,41,0,12,16,0,176,175,255,0,2,50,3,0,64,20,0,0,0,0, -237,47,0,12,0,0,0,0,4,0,16,38,43,16,208,2,239,255,64,16,85,170,2,60,85, -170,66,52,36,136,34,2,33,128,224,2,43,16,208,2,6,0,64,20,0,0,0,0,0,0,17, -174,4,0,16,38,43,16,208,2,252,255,64,16,0,0,0,0,237,47,0,12,33,128,224, -2,43,16,208,2,19,0,64,20,0,0,0,0,0,0,7,142,0,0,0,0,6,0,241,16,12,0,5,36, -33,48,32,2,176,141,132,143,0,2,181,54,7,41,0,12,16,0,176,175,255,0,2,50, -3,0,64,20,0,0,0,0,237,47,0,12,0,0,0,0,4,0,16,38,43,16,208,2,239,255,64, -16,0,0,0,0,255,255,82,38,135,255,65,6,0,136,2,60,7,0,160,22,33,16,160,2, -5,0,192,19,0,0,0,0,48,141,132,39,7,41,0,12,0,0,0,0,33,16,160,2,60,0,191, -143,56,0,190,143,52,0,183,143,48,0,182,143,44,0,181,143,40,0,180,143,36, -0,179,143,32,0,178,143,28,0,177,143,24,0,176,143,8,0,224,3,64,0,189,39, -248,255,189,39,16,39,2,36,0,0,162,175,0,0,162,143,0,0,0,0,255,255,66,36, -0,0,162,175,0,0,163,143,255,255,2,36,13,0,98,16,255,255,3,36,44,0,130,144, -0,0,0,0,9,0,64,16,0,0,0,0,0,0,162,143,0,0,0,0,255,255,66,36,0,0,162,175, -0,0,162,143,0,0,0,0,245,255,67,20,0,0,0,0,8,0,224,3,8,0,189,39,96,255,189, -39,132,0,179,175,33,152,128,0,152,0,190,175,33,240,160,0,156,0,191,175, -148,0,183,175,144,0,182,175,140,0,181,175,136,0,180,175,128,0,178,175,124, -0,177,175,120,0,176,175,72,0,166,175,80,0,167,175,212,141,133,39,0,0,162, -140,4,0,163,140,8,0,164,140,56,0,162,175,60,0,163,175,64,0,164,175,12,0, -162,140,0,0,0,0,68,0,162,175,128,27,19,0,1,161,2,60,33,24,98,0,243,1,16, -36,88,0,163,175,88,0,177,143,255,0,2,36,0,0,34,162,255,255,16,38,255,255, -1,6,255,255,16,38,1,0,16,38,0,0,34,146,0,0,0,0,17,0,96,18,255,0,86,48,28, -0,2,36,13,0,194,18,32,0,2,36,11,0,194,18,52,0,2,36,9,0,194,18,40,0,2,36, -7,0,194,18,44,0,2,36,5,0,194,18,68,0,2,36,3,0,194,18,72,0,2,36,3,0,194, -22,0,163,3,60,255,0,22,36,0,163,3,60,128,1,99,52,16,0,8,36,33,16,99,2,96, -0,168,175,104,0,160,175,44,0,86,160,48,0,64,160,52,0,64,160,128,16,19,0, -33,16,67,0,130,160,22,0,56,0,64,172,4,0,2,36,18,0,130,18,33,184,0,0,12, -0,2,36,15,0,130,18,6,0,2,36,13,0,130,18,14,0,2,36,11,0,130,18,8,0,2,36, -9,0,130,18,11,0,2,36,7,0,130,18,20,0,2,36,5,0,130,18,28,0,2,36,3,0,130, -18,18,0,2,36,4,0,130,22,4,0,2,36,8,0,8,36,96,0,168,175,4,0,2,36,3,0,130, -18,12,0,2,36,4,0,130,22,7,0,2,36,1,0,8,36,104,0,168,175,7,0,2,36,9,0,130, -18,10,0,2,36,7,0,130,18,16,0,2,36,5,0,130,18,24,0,2,36,3,0,130,18,17,0, -2,36,4,0,130,22,13,0,2,36,4,0,8,36,96,0,168,175,13,0,2,36,3,0,130,22,1, -0,2,36,2,0,8,36,96,0,168,175,0,0,66,36,112,0,162,175,255,255,131,38,127, -0,98,44,77,1,64,16,128,16,3,0,1,160,1,60,33,8,34,0,176,252,34,140,0,0,0, -0,8,0,64,0,0,0,0,0,3,0,192,19,247,255,2,36,19,1,194,23,0,0,0,0,228,141, -132,39,33,40,96,2,7,41,0,12,33,48,192,2,1,161,3,60,0,8,99,52,128,19,19, -0,33,136,67,0,187,52,0,12,33,32,32,2,15,0,16,60,129,0,2,36,44,0,34,162, -60,0,34,146,0,0,0,0,10,0,64,20,64,66,16,54,255,255,3,36,255,255,16,38,7, -0,3,18,243,1,7,36,60,0,34,146,0,0,0,0,251,255,64,16,255,255,16,38,1,0,16, -38,243,1,7,36,255,255,231,36,255,255,224,20,255,255,231,36,1,0,231,36,33, -144,0,0,237,0,2,36,16,0,34,162,16,0,35,146,237,0,2,36,217,0,98,20,0,163, -3,60,128,1,99,52,33,24,99,2,52,0,98,144,0,0,0,0,1,0,66,36,52,0,98,160,52, -0,98,144,16,0,32,162,16,0,35,146,255,0,2,36,16,0,34,162,16,0,34,146,255, -0,99,48,4,0,96,20,255,0,71,48,255,0,2,36,7,0,226,16,33,32,32,2,0,2,18,36, -0,142,132,39,33,40,96,2,7,41,0,12,33,48,96,0,33,32,32,2,187,52,0,12,40, -0,32,162,243,1,7,36,128,0,2,36,44,0,34,162,255,255,231,36,255,255,224,20, -255,255,231,36,187,52,0,12,33,32,32,2,66,0,2,36,44,0,34,162,243,1,7,36, -255,255,231,36,255,255,224,20,255,255,231,36,1,0,231,36,72,0,34,146,33, -128,0,0,72,0,48,162,1,0,16,38,128,0,2,42,252,255,64,20,0,0,0,0,33,128,0, -0,72,0,34,146,0,0,0,0,255,0,67,48,6,0,112,16,33,40,96,2,16,0,82,54,60,142, -132,39,33,48,0,2,7,41,0,12,33,56,96,0,1,0,16,38,128,0,2,42,243,255,64,20, -0,0,0,0,187,52,0,12,33,32,32,2,66,0,2,36,44,0,34,162,243,1,7,36,255,255, -231,36,255,255,224,20,255,255,231,36,187,52,0,12,33,32,32,2,33,32,0,0,67, -0,2,36,250,33,0,12,44,0,34,162,0,163,3,60,128,1,99,52,1,0,2,36,0,0,98,172, -128,16,19,0,33,16,162,3,56,0,68,140,8,0,16,36,250,33,0,12,1,0,132,36,135, -19,7,36,255,255,231,36,255,255,224,20,255,255,231,36,1,0,231,36,0,163,2, -60,128,1,66,52,0,0,67,140,1,0,2,36,6,0,98,16,8,0,3,50,64,0,82,54,112,142, -132,39,7,41,0,12,33,40,96,2,8,0,3,50,8,0,99,36,67,24,3,0,128,19,19,0,33, -16,67,0,1,161,1,60,33,8,34,0,0,0,34,144,7,0,3,50,7,16,98,0,1,0,66,48,6, -0,64,16,33,32,32,2,64,0,82,54,156,142,132,39,7,41,0,12,33,40,96,2,33,32, -32,2,5,0,2,36,0,0,32,162,16,0,34,162,187,52,0,12,20,0,34,162,63,156,7,52, -24,0,2,36,44,0,34,162,129,0,2,36,4,0,34,162,255,255,231,36,255,255,224, -20,255,255,231,36,8,0,3,50,8,0,99,36,67,24,3,0,128,19,19,0,33,16,67,0,1, -161,1,60,33,8,34,0,0,0,34,144,7,0,3,50,7,16,98,0,1,0,66,48,6,0,64,20,33, -32,32,2,64,0,82,54,216,142,132,39,7,41,0,12,33,40,96,2,33,32,32,2,64,0, -32,162,48,0,32,162,16,0,32,162,20,0,32,162,187,52,0,12,0,163,21,60,128, -1,181,54,16,0,2,36,44,0,34,162,0,0,32,162,4,0,32,162,0,0,162,142,0,0,0, -0,5,0,64,16,0,0,0,0,128,0,82,54,20,143,132,39,7,41,0,12,33,40,96,2,250, -33,0,12,33,32,0,0,1,0,2,36,0,0,162,174,128,16,19,0,33,16,162,3,56,0,68, -140,0,0,0,0,250,33,0,12,1,0,132,36,63,156,7,52,255,255,231,36,255,255,224, -20,255,255,231,36,1,0,231,36,0,163,2,60,128,1,66,52,0,0,67,140,1,0,2,36, -6,0,98,16,8,0,3,50,0,1,82,54,72,143,132,39,7,41,0,12,33,40,96,2,8,0,3,50, -8,0,99,36,67,24,3,0,128,19,19,0,33,16,67,0,1,161,1,60,33,8,34,0,0,0,34, -144,7,0,3,50,7,16,98,0,1,0,66,48,5,0,64,16,0,0,0,0,64,0,82,54,124,143,132, -39,7,41,0,12,33,40,96,2,250,33,0,12,33,32,0,0,91,54,0,8,0,0,0,0,0,2,18, -36,184,143,132,39,7,41,0,12,33,40,96,2,8,0,64,18,0,163,2,60,128,1,66,52, -128,24,19,0,33,24,98,0,56,0,98,140,1,0,247,54,0,2,66,52,56,0,98,172,187, -52,0,12,33,32,32,2,66,0,2,36,44,0,34,162,247,255,2,36,63,0,194,19,0,0,0, -0,176,0,168,143,72,0,166,143,80,0,167,143,16,0,168,175,96,0,168,143,0,0, -0,0,32,0,168,175,88,0,168,143,0,0,0,0,40,0,168,175,112,0,168,143,33,32, -96,2,44,0,168,175,104,0,168,143,33,40,192,3,20,0,182,175,24,0,180,175,28, -0,160,175,36,0,177,175,48,0,183,175,48,55,0,12,52,0,168,175,169,54,0,8, -37,184,226,2,33,32,96,2,176,0,168,143,72,0,166,143,80,0,167,143,33,40,192, -3,109,34,0,12,16,0,168,175,169,54,0,8,37,184,226,2,80,0,168,143,0,0,0,0, -26,0,0,21,0,0,0,0,176,0,168,143,0,0,0,0,3,0,0,17,0,0,0,0,132,48,0,12,0, -0,0,0,224,143,132,39,7,41,0,12,33,40,96,2,169,54,0,8,0,0,0,0,80,0,168,143, -0,0,0,0,11,0,0,21,0,0,0,0,176,0,168,143,0,0,0,0,3,0,0,17,0,0,0,0,132,48, -0,12,0,0,0,0,252,143,132,39,33,40,96,2,7,41,0,12,33,48,192,2,250,33,0,12, -1,4,4,36,33,16,224,2,156,0,191,143,152,0,190,143,148,0,183,143,144,0,182, -143,140,0,181,143,136,0,180,143,132,0,179,143,128,0,178,143,124,0,177,143, -120,0,176,143,8,0,224,3,160,0,189,39,88,255,189,39,152,0,176,175,33,128, -128,0,156,0,177,175,33,136,0,0,1,0,2,50,164,0,191,175,4,0,64,16,160,0,178, -175,160,48,0,12,33,32,0,0,43,136,2,0,2,0,2,50,12,0,64,16,1,0,2,36,16,0, -162,175,0,163,4,60,0,16,132,52,0,163,5,60,240,127,165,52,33,48,0,0,109, -50,0,12,33,56,0,0,3,0,64,16,4,0,2,50,2,0,49,54,4,0,2,50,16,0,64,16,33,16, -32,2,3,0,18,36,33,128,0,0,16,0,160,175,33,32,0,2,33,40,0,0,24,0,166,39, -212,52,0,12,33,56,0,0,2,0,64,16,0,0,0,0,4,0,49,54,1,0,16,38,42,16,80,2, -244,255,64,16,33,16,32,2,164,0,191,143,160,0,178,143,156,0,177,143,152, -0,176,143,8,0,224,3,168,0,189,39,0,0,0,0,0,0,0,0,224,255,189,39,0,163,3, -60,32,12,99,144,1,0,2,36,28,0,191,175,24,0,178,175,20,0,177,175,13,0,98, -20,16,0,176,175,49,1,2,60,0,45,66,52,0,161,5,60,40,0,165,52,3,0,4,60,255, -255,132,52,0,161,3,60,84,154,130,175,32,78,2,36,0,0,98,172,40,55,0,8,0, -0,164,172,112,0,2,60,0,128,66,52,84,154,130,175,33,144,0,0,1,160,17,60, -176,254,49,38,33,128,0,0,80,154,128,175,33,40,0,0,33,32,32,2,1,0,165,36, -0,0,131,148,2,0,130,144,0,161,1,60,33,8,35,0,0,0,34,160,4,0,162,40,80,154, -128,175,247,255,64,20,4,0,132,36,0,0,130,148,0,161,1,60,33,8,34,0,0,0,34, -144,0,0,0,0,64,0,66,48,8,0,64,16,100,0,2,42,4,0,64,20,0,0,0,0,64,144,132, -39,58,32,0,12,120,0,5,36,8,55,0,8,1,0,16,38,5,0,82,38,15,0,66,42,224,255, -64,20,20,0,49,38,28,0,191,143,24,0,178,143,20,0,177,143,16,0,176,143,8, -0,224,3,32,0,189,39,0,0,0,0,0,0,0,0,32,255,189,39,216,0,190,175,33,240, -128,0,220,0,191,175,212,0,183,175,208,0,182,175,204,0,181,175,200,0,180, -175,196,0,179,175,192,0,178,175,188,0,177,175,184,0,176,175,64,0,165,175, -72,0,166,175,84,144,133,39,3,0,162,136,0,0,162,152,7,0,163,136,4,0,163, -152,11,0,164,136,8,0,164,152,27,0,162,171,24,0,162,187,31,0,163,171,28, -0,163,187,35,0,164,171,32,0,164,187,15,0,162,136,12,0,162,152,19,0,163, -136,16,0,163,152,20,0,164,128,39,0,162,171,36,0,162,187,43,0,163,171,40, -0,163,187,44,0,164,163,21,0,162,128,0,0,0,0,45,0,162,163,108,144,133,39, -0,0,162,140,4,0,163,140,8,0,164,140,48,0,162,175,52,0,163,175,56,0,164, -175,12,0,162,140,0,0,0,0,60,0,162,175,240,0,162,143,0,0,0,0,3,0,64,16,0, -0,0,0,132,48,0,12,0,0,0,0,64,0,168,143,2,0,2,36,9,0,2,21,0,0,0,0,124,144, -132,39,7,41,0,12,33,40,192,3,9,0,192,23,255,0,2,36,80,144,130,175,121,55, -0,8,0,0,0,0,148,144,132,39,244,0,166,143,0,0,0,0,7,41,0,12,33,40,192,3, -64,0,169,143,0,0,0,0,2,2,32,21,0,0,0,0,252,0,182,143,0,1,168,143,0,0,0, -0,42,16,200,2,196,1,64,16,128,75,30,0,0,163,23,60,128,1,247,54,104,0,169, -175,12,1,169,143,33,64,215,3,112,0,168,175,33,152,201,2,33,168,0,0,1,161, -3,60,0,1,99,52,64,17,22,0,104,0,168,143,33,16,67,0,33,160,2,1,237,0,2,36, -28,0,130,162,28,0,131,146,237,0,2,36,153,1,98,20,128,16,30,0,6,0,192,23, -0,0,0,0,40,0,226,150,0,0,0,0,255,255,66,36,146,1,194,18,128,16,30,0,112, -0,169,143,0,0,0,0,52,0,34,145,0,0,0,0,1,0,66,36,52,0,34,161,52,0,34,145, -28,0,128,162,127,0,8,36,12,0,136,162,28,0,131,146,255,0,2,36,28,0,130,162, -12,0,128,162,28,0,130,146,255,0,114,48,4,0,64,22,255,0,80,48,255,0,2,36, -8,0,2,18,0,0,0,0,0,2,21,36,16,0,176,175,176,144,132,39,33,40,192,3,33,48, -96,2,7,41,0,12,33,56,64,2,63,0,18,36,255,255,4,36,28,0,128,162,7,0,9,36, -1,0,3,36,143,0,2,36,8,0,137,162,8,0,131,162,12,0,130,162,4,0,2,36,0,0,130, -162,15,0,2,36,4,0,128,162,12,0,130,162,27,0,2,36,4,0,131,162,16,0,130,162, -0,0,130,146,255,255,82,38,253,255,68,22,0,0,0,0,150,48,0,12,196,9,4,36, -33,144,0,0,248,0,168,143,5,0,9,36,7,0,9,17,127,0,9,36,5,0,9,17,12,0,9,36, -3,0,9,17,14,0,9,36,6,0,9,21,0,0,0,0,20,0,130,146,0,0,0,0,1,0,66,48,72,1, -64,20,0,0,0,0,20,0,130,146,0,0,0,0,32,0,66,48,64,1,64,16,0,0,0,0,0,0,130, -146,0,0,146,162,20,0,130,146,0,0,0,0,64,0,66,48,48,1,64,20,195,9,16,36, -255,255,17,36,237,47,0,12,0,0,0,0,8,0,130,146,0,0,0,0,1,0,66,48,4,0,64, -16,0,0,0,0,255,255,16,38,247,255,17,22,0,0,0,0,32,1,0,6,0,0,0,0,20,0,130, -146,0,0,0,0,14,0,66,48,33,0,64,16,33,40,192,3,156,145,132,39,12,1,168,143, -0,0,0,0,7,41,0,12,33,48,200,2,20,0,130,146,0,0,0,0,2,0,66,48,4,0,64,16, -8,0,181,54,176,145,132,39,7,41,0,12,0,0,0,0,20,0,130,146,0,0,0,0,4,0,66, -48,4,0,64,16,0,0,0,0,192,145,132,39,7,41,0,12,0,0,0,0,20,0,130,146,0,0, -0,0,8,0,66,48,4,0,64,16,0,0,0,0,208,145,132,39,7,41,0,12,0,0,0,0,224,145, -132,39,7,41,0,12,0,0,0,0,248,0,169,143,5,0,8,36,7,0,40,17,127,0,8,36,5, -0,40,17,12,0,8,36,3,0,40,17,14,0,8,36,6,0,40,21,5,0,8,36,20,0,130,146,0, -0,0,0,1,0,66,48,233,0,64,16,5,0,8,36,0,0,130,146,248,0,169,143,0,0,0,0, -8,0,40,17,255,0,80,48,127,0,8,36,5,0,40,17,12,0,8,36,3,0,40,17,14,0,8,36, -6,0,40,21,0,0,0,0,20,0,130,146,0,0,0,0,1,0,66,48,213,0,64,20,0,0,0,0,8, -0,18,18,33,40,192,3,16,0,181,54,56,146,132,39,12,1,169,143,33,56,64,2,16, -0,176,175,7,41,0,12,33,48,201,2,1,0,82,38,0,1,66,42,135,255,64,20,0,0,0, -0,33,144,0,0,250,0,4,36,12,0,67,50,1,0,66,50,64,16,2,0,16,0,66,52,37,24, -98,0,2,0,66,50,67,16,2,0,37,24,98,0,150,48,0,12,16,0,131,162,24,0,130,146, -0,0,0,0,2,129,2,0,36,0,18,18,33,40,192,3,32,0,181,54,100,146,132,39,12, -1,168,143,33,56,64,2,16,0,176,175,7,41,0,12,33,48,200,2,38,128,18,2,1,0, -2,50,5,0,64,16,2,0,2,50,152,146,132,39,7,41,0,12,0,0,0,0,2,0,2,50,5,0,64, -16,4,0,2,50,164,146,132,39,7,41,0,12,0,0,0,0,4,0,2,50,5,0,64,16,8,0,2,50, -176,146,132,39,7,41,0,12,0,0,0,0,8,0,2,50,4,0,64,16,0,0,0,0,188,146,132, -39,7,41,0,12,0,0,0,0,224,145,132,39,7,41,0,12,0,0,0,0,1,0,82,38,16,0,66, -42,202,255,64,20,33,32,0,0,27,0,2,36,250,33,0,12,16,0,130,162,1,0,2,36, -0,0,226,174,128,16,30,0,33,16,162,3,48,0,68,140,195,9,16,36,250,33,0,12, -1,0,132,36,1,0,2,36,4,0,130,162,0,0,130,146,8,0,130,146,255,255,16,38,255, -255,0,22,255,255,16,38,1,0,16,38,0,0,227,142,1,0,2,36,5,0,98,16,33,40,192, -3,64,0,181,54,200,146,132,39,7,41,0,12,33,48,96,2,8,0,194,50,8,0,66,36, -104,0,169,143,67,16,2,0,33,16,34,1,1,161,1,60,33,8,34,0,0,0,34,144,7,0, -195,50,7,16,98,0,1,0,66,48,5,0,64,16,33,40,192,3,64,0,181,54,232,146,132, -39,7,41,0,12,33,48,96,2,42,0,2,36,0,0,130,162,195,9,16,36,0,0,226,142,0, -0,0,0,3,0,64,16,255,255,16,38,251,255,0,22,0,0,0,0,195,9,16,36,255,255, -16,38,255,255,0,22,255,255,16,38,1,0,16,38,8,0,194,50,8,0,66,36,104,0,168, -143,67,16,2,0,33,16,2,1,1,161,1,60,33,8,34,0,0,0,34,144,7,0,195,50,7,16, -98,0,1,0,66,48,5,0,64,20,33,40,192,3,64,0,181,54,24,147,132,39,7,41,0,12, -33,48,96,2,0,0,130,146,8,0,130,146,0,0,226,142,0,0,0,0,5,0,64,16,33,40, -192,3,128,0,181,54,72,147,132,39,7,41,0,12,33,48,96,2,250,33,0,12,33,32, -0,0,1,0,2,36,0,0,226,174,128,16,30,0,33,16,162,3,48,0,68,140,195,9,16,36, -250,33,0,12,1,0,132,36,255,255,16,38,255,255,0,22,255,255,16,38,1,0,16, -38,0,0,227,142,1,0,2,36,5,0,98,16,33,40,192,3,0,1,181,54,112,147,132,39, -7,41,0,12,33,48,96,2,8,0,194,50,8,0,66,36,104,0,169,143,67,16,2,0,33,16, -34,1,1,161,1,60,33,8,34,0,0,0,34,144,7,0,195,50,7,16,98,0,1,0,66,48,5,0, -64,16,33,40,192,3,64,0,181,54,152,147,132,39,7,41,0,12,33,48,96,2,250,33, -0,12,33,32,0,0,4,0,128,162,7,0,8,36,1,0,2,36,8,0,136,162,8,0,130,162,135, -0,2,36,12,0,130,162,48,0,2,36,0,0,130,162,4,0,128,162,7,0,9,36,8,0,2,36, -12,0,137,162,16,0,130,162,0,0,130,146,53,57,0,8,0,0,0,0,12,146,132,39,42, -57,0,8,1,0,181,54,228,145,132,39,42,57,0,8,1,0,181,54,116,145,132,39,42, -57,0,8,0,4,181,54,4,0,181,54,64,145,132,39,33,40,192,3,7,41,0,12,33,48, -96,2,150,48,0,12,196,9,4,36,77,56,0,8,33,144,0,0,28,145,132,39,42,57,0, -8,2,0,181,54,1,0,181,54,244,144,132,39,33,40,192,3,7,41,0,12,33,48,96,2, -77,56,0,8,33,144,0,0,33,16,87,0,1,0,3,36,56,0,68,140,4,24,195,2,37,32,131, -0,56,0,68,172,11,0,160,18,128,16,30,0,16,1,168,143,0,0,0,0,1,0,8,53,33, -16,87,0,1,0,3,36,16,1,168,175,56,0,68,140,4,24,195,2,37,32,131,0,56,0,68, -172,0,1,169,143,1,0,214,38,42,16,201,2,69,254,64,20,1,0,115,38,0,163,5, -60,128,1,165,52,33,128,197,3,52,0,2,146,33,32,0,0,4,0,192,23,255,0,67,48, -40,0,162,148,0,0,0,0,43,32,2,0,0,1,168,143,252,0,169,143,0,0,0,0,35,56, -9,1,20,1,168,143,33,24,100,0,33,16,232,0,14,0,98,16,0,0,0,0,16,1,169,143, -200,147,132,39,2,0,41,53,16,1,169,175,52,0,6,146,33,40,192,3,7,41,0,12, -16,0,168,175,0,1,165,143,252,0,166,143,244,147,132,39,7,41,0,12,0,0,0,0, -16,1,168,143,0,0,0,0,16,0,0,21,0,163,2,60,52,0,2,146,0,0,0,0,8,0,64,16, -0,0,0,0,52,0,5,146,20,148,132,39,7,41,0,12,0,0,0,0,32,148,132,39,118,57, -0,8,0,0,0,0,40,148,132,39,7,41,0,12,0,0,0,0,0,163,2,60,128,1,66,52,33,16, -194,3,1,0,3,36,53,62,0,8,48,0,67,160,8,0,33,5,0,0,0,0,252,0,168,143,0,0, -0,0,255,255,2,37,35,16,73,0,1,0,73,36,138,57,0,8,80,0,162,175,252,0,168, -143,0,1,169,143,80,0,168,175,88,0,169,175,80,0,182,143,88,0,168,143,0,0, -0,0,42,16,200,2,35,0,64,16,1,161,3,60,128,155,30,0,0,1,99,52,0,163,18,60, -128,1,82,54,1,0,17,36,15,0,23,36,8,0,21,36,64,17,22,0,33,128,67,0,6,0,192, -23,33,160,112,2,40,0,66,150,0,0,0,0,255,255,66,36,12,0,194,18,0,0,0,0,7, -0,9,36,8,0,137,162,8,0,145,162,143,0,8,36,4,0,9,36,12,0,136,162,0,0,137, -162,4,0,128,162,12,0,151,162,4,0,145,162,16,0,149,162,150,48,0,12,196,9, -4,36,88,0,168,143,1,0,214,38,42,16,200,2,232,255,64,20,32,0,16,38,64,0, -169,143,2,0,2,36,119,1,34,21,255,255,3,36,15,0,22,36,72,0,168,143,64,17, -30,0,33,16,72,0,30,0,66,36,0,0,67,164,255,255,214,38,253,255,193,6,254, -255,66,36,20,1,169,143,1,0,2,36,101,0,34,21,255,0,2,36,80,144,131,143,0, -0,0,0,12,0,98,20,128,0,98,48,1,161,3,60,0,8,99,52,128,19,30,0,33,160,67, -0,128,0,194,39,80,144,130,175,187,52,0,12,33,32,128,2,66,0,2,36,40,58,0, -8,44,0,130,162,84,0,64,16,128,0,194,39,82,0,98,16,1,161,19,60,0,8,115,54, -128,19,30,0,33,160,83,0,33,32,128,2,3,0,2,36,40,0,130,162,187,52,0,12,128, -0,18,36,33,32,128,2,8,0,2,36,44,0,146,162,120,0,130,162,187,52,0,12,15, -39,22,36,66,0,17,36,4,0,16,36,44,0,145,162,8,0,144,162,12,0,144,162,80, -144,130,143,255,255,21,36,127,0,66,48,128,19,2,0,33,152,83,0,33,32,96,2, -187,52,0,12,40,0,96,162,33,32,96,2,9,0,2,36,44,0,114,162,187,52,0,12,120, -0,98,162,33,32,96,2,44,0,113,162,8,0,112,162,12,0,112,162,187,52,0,12,67, -0,16,36,33,32,128,2,187,52,0,12,44,0,112,162,80,0,194,39,44,0,144,162,72, -0,98,162,237,47,0,12,0,0,0,0,56,0,130,146,0,0,0,0,3,0,64,20,255,255,214, -38,249,255,213,22,0,0,0,0,72,0,130,146,80,0,195,39,255,0,66,48,16,0,67, -20,64,25,30,0,0,1,168,143,0,0,0,0,64,32,8,0,72,0,169,143,80,144,133,151, -80,144,130,143,33,24,105,0,33,24,131,0,127,0,66,48,64,17,2,0,33,16,73,0, -33,32,130,0,128,0,194,39,0,0,101,164,0,0,130,164,187,52,0,12,33,32,96,2, -33,32,128,2,66,0,16,36,187,52,0,12,44,0,112,162,255,0,2,36,44,0,144,162, -80,144,130,175,252,0,182,143,0,1,168,143,0,0,0,0,42,16,200,2,20,0,64,16, -128,43,30,0,1,161,3,60,0,1,99,52,0,163,4,60,128,1,132,52,64,17,22,0,33, -24,67,0,6,0,192,23,33,160,163,0,40,0,130,148,0,0,0,0,255,255,66,36,2,0, -194,18,0,0,0,0,0,0,150,162,0,1,169,143,1,0,214,38,42,16,201,2,244,255,64, -20,32,0,99,36,150,48,0,12,16,39,4,36,252,0,182,143,0,1,168,143,0,0,0,0, -42,16,200,2,97,0,64,16,128,75,30,0,0,163,23,60,128,1,247,54,255,255,21, -36,72,0,168,143,64,17,30,0,120,0,169,175,33,152,72,0,64,16,22,0,33,136, -83,0,1,161,3,60,0,1,99,52,64,17,22,0,120,0,169,143,33,16,67,0,6,0,192,23, -33,160,34,1,40,0,226,150,0,0,0,0,255,255,66,36,70,0,194,18,0,0,0,0,20,0, -130,146,0,0,0,0,1,0,66,48,4,0,64,16,255,0,18,36,0,0,130,146,0,0,0,0,127, -0,82,48,255,0,2,36,59,0,66,18,0,0,0,0,252,0,168,143,0,0,0,0,42,16,72,2, -47,0,64,20,0,0,0,0,0,1,169,143,0,0,0,0,42,16,73,2,42,0,64,16,0,0,0,0,6, -0,192,23,0,0,0,0,40,0,226,150,0,0,0,0,255,255,66,36,35,0,66,18,0,0,0,0, -0,0,34,134,0,0,0,0,3,0,85,16,0,0,0,0,9,0,82,20,0,0,0,0,64,16,18,0,33,16, -83,0,0,0,66,132,0,0,0,0,18,0,85,16,0,0,0,0,17,0,86,16,64,16,18,0,56,148, -132,39,64,128,18,0,33,128,19,2,12,1,168,143,0,0,37,134,0,0,6,134,33,56, -200,2,33,16,72,2,33,40,168,0,33,48,200,0,7,41,0,12,16,0,162,175,0,0,53, -166,163,58,0,8,0,0,21,166,64,16,18,0,33,16,83,0,0,0,50,166,163,58,0,8,0, -0,86,164,112,148,132,39,12,1,169,143,0,0,37,134,33,48,73,2,7,41,0,12,33, -40,169,0,0,0,53,166,0,1,168,143,1,0,214,38,42,16,200,2,171,255,64,20,2, -0,49,38,252,0,182,143,0,1,169,143,0,0,0,0,42,16,201,2,47,0,64,16,33,144, -0,0,255,255,19,36,0,163,17,60,128,1,49,54,64,17,30,0,72,0,168,143,64,24, -22,0,33,16,72,0,33,128,98,0,0,0,2,134,0,0,0,0,20,0,83,16,42,16,86,0,28, -0,64,20,0,0,0,0,12,1,169,143,152,148,132,39,7,41,0,12,33,40,201,2,0,0,5, -134,0,0,0,0,6,0,197,18,0,0,0,0,12,1,168,143,156,148,132,39,7,41,0,12,33, -40,168,0,1,0,82,38,36,48,0,12,32,0,4,36,215,58,0,8,1,0,82,38,6,0,192,23, -0,0,0,0,40,0,34,150,0,0,0,0,255,255,66,36,4,0,194,18,0,0,0,0,160,148,132, -39,7,41,0,12,0,0,0,0,0,1,169,143,1,0,214,38,42,16,201,2,219,255,64,20,2, -0,16,38,20,1,168,143,1,0,2,36,15,0,2,21,64,17,30,0,255,255,4,36,0,1,169, -143,72,0,168,143,64,24,9,0,33,16,72,0,33,24,98,0,0,0,98,132,0,0,99,148, -0,0,0,0,4,0,68,16,127,0,101,48,164,148,132,39,7,41,0,12,33,48,192,3,12, -0,192,23,0,163,3,60,128,1,99,52,40,0,98,148,0,0,0,0,7,0,64,16,0,0,0,0,176, -148,132,39,12,1,169,143,40,0,98,148,255,255,37,37,7,41,0,12,33,40,69,0, -8,0,64,22,0,0,0,0,188,148,132,39,7,41,0,12,0,0,0,0,16,1,168,143,0,0,0,0, -0,128,8,53,16,1,168,175,7,0,192,23,0,163,2,60,128,1,66,52,40,0,66,148,0, -0,0,0,2,0,64,16,0,0,0,0,1,0,82,38,224,148,132,39,7,41,0,12,0,0,0,0,0,1, -169,143,252,0,168,143,0,0,0,0,35,16,40,1,42,16,66,2,4,0,64,16,0,0,0,0,228, -148,132,39,7,41,0,12,0,0,0,0,20,1,169,143,1,0,2,36,25,3,34,21,64,17,30, -0,0,1,168,143,72,0,169,143,64,24,8,0,33,16,73,0,33,24,98,0,0,0,99,132,255, -255,2,36,16,3,98,20,255,0,2,36,80,144,131,143,0,0,0,0,12,3,98,20,0,0,0, -0,20,149,132,39,51,62,0,8,0,0,0,0,64,0,168,143,80,144,128,175,128,0,0,5, -33,168,0,0,20,1,169,143,1,0,2,36,124,0,34,21,0,0,0,0,72,0,168,143,0,0,0, -0,120,0,0,17,64,17,30,0,0,1,169,143,33,16,72,0,64,24,9,0,33,176,98,0,0, -0,195,134,255,255,2,36,112,0,98,16,1,161,19,60,0,8,115,54,128,19,30,0,33, -160,83,0,33,32,128,2,3,0,2,36,40,0,130,162,187,52,0,12,128,0,17,36,33,32, -128,2,8,0,2,36,44,0,145,162,120,0,130,162,187,52,0,12,66,0,18,36,4,0,16, -36,44,0,146,162,8,0,144,162,12,0,144,162,0,0,194,150,0,0,0,0,127,0,66,48, -128,19,2,0,33,152,83,0,33,32,96,2,187,52,0,12,40,0,96,162,33,32,96,2,9, -0,2,36,44,0,113,162,187,52,0,12,120,0,98,162,33,32,128,2,44,0,114,162,8, -0,112,162,12,0,112,162,187,52,0,12,67,0,16,36,33,32,96,2,187,52,0,12,44, -0,144,162,33,32,128,2,187,52,0,12,44,0,112,162,187,52,0,12,33,32,96,2,24, -0,163,39,46,0,164,39,0,0,98,144,1,0,99,36,72,0,98,162,42,16,100,0,251,255, -64,20,15,39,22,36,255,255,16,36,237,47,0,12,0,0,0,0,56,0,130,146,0,0,0, -0,22,0,66,44,3,0,64,16,255,255,214,38,248,255,208,22,0,0,0,0,56,0,131,146, -22,0,2,36,15,0,98,16,22,0,6,36,64,149,132,39,33,56,192,3,0,4,181,54,64, -17,30,0,0,1,168,143,72,0,169,143,64,24,8,0,33,16,73,0,33,24,98,0,0,0,101, -148,56,0,130,146,127,0,165,48,7,41,0,12,16,0,162,175,64,17,30,0,24,0,176, -39,46,0,177,39,0,1,168,143,72,0,169,143,64,24,8,0,33,16,73,0,33,176,98, -0,72,0,130,146,0,0,6,146,255,0,82,48,7,0,70,18,33,56,192,3,140,149,132, -39,0,0,197,150,16,0,181,54,16,0,178,175,7,41,0,12,127,0,165,48,1,0,16,38, -42,16,17,2,242,255,64,20,0,0,0,0,187,52,0,12,33,32,96,2,33,32,128,2,66, -0,16,36,187,52,0,12,44,0,112,162,44,0,144,162,80,0,182,143,88,0,168,143, -0,0,0,0,42,16,200,2,70,2,64,16,0,163,9,60,128,1,41,53,128,67,30,0,136,0, -169,175,1,161,9,60,0,1,41,53,64,17,22,0,144,0,168,175,12,1,168,143,33,16, -73,0,152,0,169,175,33,64,200,2,168,0,168,175,176,0,162,175,64,0,169,143, -0,0,0,0,3,0,33,5,64,16,22,0,32,60,0,8,96,0,182,175,72,0,168,143,64,25,30, -0,33,24,104,0,33,16,67,0,0,0,66,132,0,0,0,0,96,0,162,175,96,0,169,143,255, -255,2,36,78,0,34,21,33,144,0,0,136,0,168,143,0,0,0,0,40,0,2,149,0,0,0,0, -255,255,66,36,23,2,86,16,0,0,0,0,144,0,169,143,176,0,168,143,0,0,0,0,33, -160,40,1,20,0,130,146,0,0,0,0,32,0,66,48,8,0,64,20,85,0,2,36,2,0,181,54, -28,145,132,39,168,0,166,143,0,0,0,0,7,41,0,12,33,40,192,3,85,0,2,36,0,0, -130,162,33,144,0,0,1,0,66,50,64,16,2,0,8,0,66,52,2,0,67,50,67,24,3,0,37, -16,67,0,16,0,130,162,150,48,0,12,250,0,4,36,1,0,82,38,4,0,66,42,245,255, -64,20,1,0,66,50,242,61,0,8,1,0,214,38,1,0,181,54,244,144,132,39,96,0,169, -143,12,1,168,143,0,0,0,0,7,41,0,12,33,48,40,1,167,60,0,8,0,0,0,0,28,145, -132,39,26,60,0,8,2,0,181,54,4,0,181,54,64,145,132,39,168,0,166,143,0,0, -0,0,7,41,0,12,33,40,192,3,150,48,0,12,196,9,4,36,167,60,0,8,0,0,0,0,116, -145,132,39,26,60,0,8,0,4,181,54,228,145,132,39,26,60,0,8,1,0,181,54,1,0, -181,54,12,146,132,39,168,0,166,143,0,0,0,0,7,41,0,12,33,40,192,3,167,60, -0,8,0,0,0,0,33,144,0,0,144,0,169,143,176,0,168,143,14,0,23,36,33,160,40, -1,96,0,169,143,152,0,168,143,64,17,9,0,144,0,169,143,33,16,72,0,33,152, -34,1,248,0,168,143,5,0,9,36,7,0,9,17,127,0,9,36,5,0,9,17,12,0,9,36,3,0, -9,17,0,0,0,0,6,0,23,21,0,0,0,0,20,0,98,146,0,0,0,0,1,0,66,48,195,255,64, -20,33,40,192,3,20,0,130,146,0,0,0,0,32,0,66,48,199,255,64,16,0,0,0,0,0, -0,98,146,0,0,146,162,20,0,130,146,0,0,0,0,64,0,66,48,195,255,64,20,195, -9,16,36,255,255,17,36,237,47,0,12,0,0,0,0,8,0,98,146,0,0,0,0,1,0,66,48, -4,0,64,16,0,0,0,0,255,255,16,38,247,255,17,22,0,0,0,0,192,255,0,6,0,0,0, -0,20,0,98,146,0,0,0,0,14,0,66,48,34,0,64,16,33,40,192,3,156,145,132,39, -96,0,168,143,12,1,169,143,0,0,0,0,7,41,0,12,33,48,9,1,20,0,98,146,0,0,0, -0,2,0,66,48,4,0,64,16,8,0,181,54,176,145,132,39,7,41,0,12,0,0,0,0,20,0, -98,146,0,0,0,0,4,0,66,48,4,0,64,16,0,0,0,0,192,145,132,39,7,41,0,12,0,0, -0,0,20,0,98,146,0,0,0,0,8,0,66,48,4,0,64,16,0,0,0,0,208,145,132,39,7,41, -0,12,0,0,0,0,224,145,132,39,7,41,0,12,0,0,0,0,248,0,168,143,5,0,9,36,7, -0,9,17,127,0,9,36,5,0,9,17,12,0,9,36,3,0,9,17,0,0,0,0,6,0,23,21,5,0,9,36, -20,0,98,146,0,0,0,0,1,0,66,48,142,255,64,16,5,0,9,36,0,0,98,146,248,0,168, -143,0,0,0,0,8,0,9,17,255,0,80,48,127,0,9,36,5,0,9,17,12,0,9,36,3,0,9,17, -0,0,0,0,6,0,23,21,0,0,0,0,20,0,98,146,0,0,0,0,1,0,66,48,128,255,64,20,0, -0,0,0,9,0,18,18,33,40,192,3,16,0,181,54,56,146,132,39,96,0,168,143,12,1, -169,143,33,56,64,2,16,0,176,175,7,41,0,12,33,48,9,1,1,0,82,38,0,1,66,42, -133,255,64,20,0,0,0,0,248,0,168,143,0,0,0,0,239,255,2,37,2,0,66,44,5,0, -64,20,33,144,0,0,9,0,2,36,80,0,2,21,33,184,0,0,33,144,0,0,168,0,183,143, -250,0,4,36,64,16,18,0,8,0,66,52,150,48,0,12,16,0,130,162,24,0,98,146,24, -0,98,146,24,0,99,146,24,0,130,146,24,0,130,146,24,0,130,146,2,129,3,0,25, -0,18,18,2,137,2,0,23,0,50,18,33,40,192,3,32,0,181,54,208,149,132,39,96, -0,169,143,12,1,168,143,33,48,224,2,16,0,178,175,20,0,176,175,7,41,0,12, -33,56,40,1,12,150,132,39,7,41,0,12,0,0,0,0,208,149,132,39,33,40,192,3,33, -48,224,2,33,56,224,2,16,0,178,175,7,41,0,12,20,0,177,175,12,150,132,39, -7,41,0,12,0,0,0,0,1,0,82,38,2,0,66,42,216,255,64,20,250,0,4,36,64,0,169, -143,0,0,0,0,94,0,33,5,33,32,0,0,33,144,0,0,250,0,4,36,8,0,66,54,150,48, -0,12,16,0,130,162,24,0,130,146,24,0,130,146,24,0,130,146,0,0,0,0,2,129, -2,0,64,16,18,0,13,0,2,18,33,40,192,3,32,0,181,54,208,149,132,39,12,1,168, -143,96,0,169,143,16,0,178,175,20,0,176,175,33,48,200,2,7,41,0,12,33,56, -40,1,24,150,132,39,7,41,0,12,0,0,0,0,1,0,82,38,2,0,66,42,229,255,64,20, -33,32,0,0,62,61,0,8,8,0,2,36,250,0,4,36,1,0,67,50,64,24,3,0,8,0,99,52,2, -0,66,50,67,16,2,0,37,24,98,0,150,48,0,12,16,0,131,162,24,0,98,146,24,0, -98,146,24,0,98,146,128,64,18,0,2,129,2,0,42,0,23,18,160,0,168,175,32,0, -181,54,208,149,132,39,12,1,169,143,96,0,168,143,33,40,192,3,16,0,178,175, -20,0,176,175,33,48,201,2,7,41,0,12,33,56,9,1,38,136,18,2,1,0,34,50,5,0, -64,16,2,0,34,50,152,146,132,39,7,41,0,12,0,0,0,0,2,0,34,50,4,0,64,16,0, -0,0,0,164,146,132,39,7,41,0,12,0,0,0,0,160,0,169,143,0,0,0,0,38,128,9,2, -4,0,2,50,5,0,64,16,8,0,2,50,36,150,132,39,7,41,0,12,0,0,0,0,8,0,2,50,4, -0,64,16,0,0,0,0,44,150,132,39,7,41,0,12,0,0,0,0,224,145,132,39,7,41,0,12, -0,0,0,0,1,0,82,38,4,0,66,42,196,255,64,20,5,0,247,38,33,32,0,0,8,0,2,36, -250,33,0,12,16,0,130,162,136,0,168,143,1,0,2,36,0,0,2,173,128,16,30,0,33, -16,162,3,48,0,68,140,0,0,0,0,250,33,0,12,1,0,132,36,252,0,178,143,1,0,2, -36,4,0,98,162,0,1,169,143,0,0,0,0,42,16,73,2,17,0,64,16,64,17,18,0,152, -0,168,143,0,0,0,0,33,24,72,0,1,0,82,38,144,0,169,143,0,1,168,143,33,152, -35,1,32,0,99,36,0,0,98,146,0,0,98,146,0,0,98,146,8,0,98,146,42,16,72,2, -248,255,64,20,1,0,82,38,255,255,82,38,195,9,16,36,96,0,169,143,152,0,168, -143,64,17,9,0,144,0,169,143,33,16,72,0,33,152,34,1,255,255,16,38,255,255, -0,22,255,255,16,38,1,0,16,38,136,0,168,143,0,0,0,0,0,0,3,141,1,0,2,36,8, -0,98,16,33,40,192,3,64,0,181,54,200,146,132,39,96,0,169,143,12,1,168,143, -0,0,0,0,7,41,0,12,33,48,40,1,96,0,169,143,144,0,168,143,8,0,34,49,8,0,66, -36,67,16,2,0,33,16,2,1,1,161,1,60,33,8,34,0,0,0,34,144,7,0,35,49,7,16,98, -0,1,0,66,48,7,0,64,16,33,40,192,3,64,0,181,54,232,146,132,39,12,1,168,143, -0,0,0,0,7,41,0,12,33,48,40,1,42,0,2,36,0,0,130,162,195,9,16,36,136,0,169, -143,0,0,0,0,0,0,34,141,0,0,0,0,3,0,64,16,255,255,16,38,249,255,0,22,0,0, -0,0,195,9,16,36,255,255,16,38,255,255,0,22,255,255,16,38,1,0,16,38,96,0, -168,143,144,0,169,143,8,0,2,49,8,0,66,36,67,16,2,0,33,16,34,1,1,161,1,60, -33,8,34,0,0,0,34,144,7,0,3,49,7,16,98,0,1,0,66,48,7,0,64,20,33,40,192,3, -64,0,181,54,24,147,132,39,12,1,169,143,0,0,0,0,7,41,0,12,33,48,9,1,0,0, -98,146,136,0,168,143,8,0,98,146,0,0,2,141,0,0,0,0,8,0,64,16,33,40,192,3, -128,0,181,54,72,147,132,39,96,0,169,143,12,1,168,143,0,0,0,0,7,41,0,12, -33,48,40,1,250,33,0,12,33,32,0,0,136,0,169,143,1,0,2,36,0,0,34,173,128, -16,30,0,33,16,162,3,48,0,68,140,195,9,16,36,250,33,0,12,1,0,132,36,255, -255,16,38,255,255,0,22,255,255,16,38,1,0,16,38,136,0,168,143,0,0,0,0,0, -0,3,141,1,0,2,36,8,0,98,16,33,40,192,3,0,1,181,54,112,147,132,39,96,0,169, -143,12,1,168,143,0,0,0,0,7,41,0,12,33,48,40,1,96,0,169,143,144,0,168,143, -8,0,34,49,8,0,66,36,67,16,2,0,33,16,2,1,1,161,1,60,33,8,34,0,0,0,34,144, -7,0,35,49,7,16,98,0,1,0,66,48,7,0,64,16,33,40,192,3,64,0,181,54,152,147, -132,39,12,1,168,143,0,0,0,0,7,41,0,12,33,48,40,1,250,33,0,12,33,32,0,0, -1,0,214,38,168,0,169,143,176,0,168,143,1,0,41,37,168,0,169,175,88,0,169, -143,32,0,8,37,42,16,201,2,201,253,64,20,176,0,168,175,16,1,168,143,0,0, -0,0,37,64,21,1,54,0,0,21,16,1,168,175,64,0,169,143,0,0,0,0,23,0,32,5,1, -0,18,36,80,0,182,143,88,0,168,143,0,0,0,0,42,16,200,2,17,0,64,16,33,144, -0,0,255,255,4,36,64,17,30,0,72,0,169,143,64,24,22,0,33,16,73,0,33,24,98, -0,0,0,98,132,0,0,0,0,2,0,68,16,0,0,0,0,1,0,82,38,88,0,168,143,1,0,214,38, -42,16,200,2,247,255,64,20,2,0,99,36,26,0,64,18,0,0,0,0,56,150,132,39,7, -41,0,12,33,40,64,2,20,1,169,143,1,0,2,36,16,0,34,21,0,0,0,0,72,0,168,143, -0,0,0,0,12,0,0,17,64,17,30,0,0,1,169,143,33,16,72,0,64,24,9,0,33,24,98, -0,0,0,99,132,255,255,2,36,4,0,98,16,0,0,0,0,68,150,132,39,7,41,0,12,0,0, -0,0,32,148,132,39,7,41,0,12,0,0,0,0,16,1,162,143,220,0,191,143,216,0,190, -143,212,0,183,143,208,0,182,143,204,0,181,143,200,0,180,143,196,0,179,143, -192,0,178,143,188,0,177,143,184,0,176,143,8,0,224,3,224,0,189,39,0,0,0, -0,0,0,0,0,8,0,224,3,0,0,0,0,0,0,0,0,0,0,0,0,196,162,0,160,252,163,0,160, -252,163,0,160,252,163,0,160,252,163,0,160,252,163,0,160,252,163,0,160,252, -163,0,160,180,163,0,160,252,163,0,160,252,163,0,160,188,163,0,160,200,163, -0,160,200,163,0,160,200,163,0,160,200,163,0,160,200,163,0,160,200,163,0, -160,200,163,0,160,200,163,0,160,200,163,0,160,252,163,0,160,252,163,0,160, -252,163,0,160,252,163,0,160,252,163,0,160,252,163,0,160,252,163,0,160,252, -163,0,160,252,163,0,160,252,163,0,160,252,163,0,160,204,162,0,160,252,163, -0,160,252,163,0,160,252,163,0,160,252,163,0,160,252,163,0,160,252,163,0, -160,252,163,0,160,252,163,0,160,252,163,0,160,252,163,0,160,252,163,0,160, -252,163,0,160,252,163,0,160,252,163,0,160,252,163,0,160,252,163,0,160,252, -163,0,160,252,163,0,160,96,163,0,160,252,163,0,160,252,163,0,160,252,163, -0,160,252,163,0,160,252,163,0,160,252,163,0,160,252,163,0,160,252,163,0, -160,252,163,0,160,232,162,0,160,220,162,0,160,52,163,0,160,252,163,0,160, -252,163,0,160,252,163,0,160,252,163,0,160,252,163,0,160,252,163,0,160,252, -163,0,160,232,163,0,160,252,163,0,160,252,163,0,160,8,163,0,160,252,163, -0,160,252,163,0,160,252,163,0,160,128,163,0,160,156,163,0,160,68,163,0, -160,252,163,0,160,252,163,0,160,80,163,0,160,96,186,0,160,48,191,0,160, -96,186,0,160,48,191,0,160,48,191,0,160,48,191,0,160,48,191,0,160,48,191, -0,160,48,191,0,160,48,191,0,160,48,191,0,160,48,191,0,160,48,191,0,160, -48,191,0,160,96,186,0,160,48,191,0,160,48,191,0,160,48,191,0,160,48,191, -0,160,96,186,0,160,48,191,0,160,48,191,0,160,48,191,0,160,48,191,0,160, -48,191,0,160,48,191,0,160,48,191,0,160,48,191,0,160,48,191,0,160,48,191, -0,160,48,191,0,160,48,191,0,160,128,181,0,160,48,191,0,160,48,191,0,160, -48,191,0,160,48,191,0,160,48,191,0,160,48,191,0,160,48,191,0,160,48,191, -0,160,48,191,0,160,48,191,0,160,48,191,0,160,48,191,0,160,244,179,0,160, -128,180,0,160,228,182,0,160,228,182,0,160,248,184,0,160,48,191,0,160,48, -191,0,160,48,191,0,160,48,191,0,160,48,191,0,160,48,191,0,160,48,191,0, -160,48,191,0,160,48,191,0,160,116,176,0,160,48,191,0,160,28,177,0,160,48, -191,0,160,48,191,0,160,96,186,0,160,24,177,0,160,96,186,0,160,48,191,0, -160,48,191,0,160,48,186,0,160,48,191,0,160,48,191,0,160,188,188,0,160,48, -191,0,160,48,191,0,160,48,191,0,160,48,191,0,160,48,191,0,160,96,186,0, -160,48,191,0,160,48,191,0,160,48,191,0,160,48,191,0,160,96,186,0,160,48, -191,0,160,48,191,0,160,48,191,0,160,48,191,0,160,48,191,0,160,48,191,0, -160,48,191,0,160,48,191,0,160,48,191,0,160,28,177,0,160,48,191,0,160,48, -191,0,160,96,186,0,160,28,177,0,160,96,186,0,160,48,191,0,160,48,191,0, -160,48,186,0,160,48,191,0,160,48,191,0,160,188,188,0,160,48,191,0,160,48, -191,0,160,48,191,0,160,48,191,0,160,48,191,0,160,96,186,0,160,48,191,0, -160,48,191,0,160,48,191,0,160,48,191,0,160,96,186,0,160,48,191,0,160,48, -191,0,160,48,191,0,160,48,191,0,160,48,191,0,160,48,191,0,160,48,191,0, -160,48,191,0,160,48,191,0,160,224,188,0,160,240,188,0,160,116,189,0,160, -152,189,0,160,16,190,0,160,96,190,0,160,216,190,0,160,236,190,0,160,48, -191,0,160,48,191,0,160,48,191,0,160,48,191,0,160,48,191,0,160,48,191,0, -160,48,191,0,160,16,191,0,160,0,0,0,0,0,0,0,0,0,0,0,0,172,217,0,160,172, -217,0,160,172,217,0,160,84,213,0,160,172,217,0,160,172,217,0,160,172,217, -0,160,172,217,0,160,172,217,0,160,172,217,0,160,172,217,0,160,84,213,0, -160,172,217,0,160,172,217,0,160,108,218,0,160,12,218,0,160,172,217,0,160, -172,217,0,160,108,218,0,160,12,218,0,160,108,218,0,160,108,218,0,160,108, -218,0,160,12,218,0,160,108,218,0,160,108,218,0,160,108,218,0,160,12,218, -0,160,108,218,0,160,108,218,0,160,108,218,0,160,108,218,0,160,108,218,0, -160,108,218,0,160,108,218,0,160,108,218,0,160,108,218,0,160,108,218,0,160, -108,218,0,160,108,218,0,160,108,218,0,160,108,218,0,160,108,218,0,160,108, -218,0,160,108,218,0,160,108,218,0,160,108,218,0,160,108,218,0,160,108,218, -0,160,108,218,0,160,108,218,0,160,108,218,0,160,108,218,0,160,108,218,0, -160,108,218,0,160,108,218,0,160,108,218,0,160,108,218,0,160,108,218,0,160, -108,218,0,160,108,218,0,160,108,218,0,160,48,218,0,160,108,218,0,160,108, -218,0,160,108,218,0,160,108,218,0,160,108,218,0,160,108,218,0,160,108,218, -0,160,108,218,0,160,108,218,0,160,108,218,0,160,108,218,0,160,108,218,0, -160,108,218,0,160,108,218,0,160,108,218,0,160,108,218,0,160,108,218,0,160, -108,218,0,160,108,218,0,160,108,218,0,160,108,218,0,160,108,218,0,160,108, -218,0,160,108,218,0,160,108,218,0,160,108,218,0,160,108,218,0,160,108,218, -0,160,108,218,0,160,108,218,0,160,108,218,0,160,108,218,0,160,108,218,0, -160,108,218,0,160,108,218,0,160,108,218,0,160,108,218,0,160,108,218,0,160, -108,218,0,160,108,218,0,160,108,218,0,160,108,218,0,160,108,218,0,160,108, -218,0,160,108,218,0,160,108,218,0,160,108,218,0,160,108,218,0,160,108,218, -0,160,108,218,0,160,108,218,0,160,108,218,0,160,108,218,0,160,108,218,0, -160,108,218,0,160,108,218,0,160,108,218,0,160,108,218,0,160,108,218,0,160, -108,218,0,160,108,218,0,160,108,218,0,160,108,218,0,160,172,217,0,160,0, -0,0,0,12,0,52,0,0,0,204,28,0,0,28,0,12,0,226,0,0,0,64,0,12,0,116,0,4,0, -110,0,4,0,0,0,12,0,228,0,4,0,64,0,12,0,180,0,8,0,0,0,8,0,0,0,12,0,232,0, -8,0,64,0,0,0,0,0,34,96,126,33,64,35,36,37,94,38,42,40,41,45,95,61,43,91, -93,92,123,125,124,59,39,44,46,47,60,62,63,0,0,0,0,0,65,84,38,70,0,0,0,0, -65,84,90,0,65,84,38,70,13,13,10,79,75,13,10,0,0,0,0,0,79,75,13,10,0,0,0, -0,69,66,73,32,37,100,32,100,111,101,115,32,110,111,116,32,99,111,110,116, -97,105,110,32,109,111,100,101,109,115,10,0,46,0,0,0,13,84,101,115,116,105, -110,103,32,101,98,105,32,37,100,32,73,68,32,37,88,46,46,46,0,0,0,0,13,80, -111,114,116,32,37,100,32,80,114,111,98,101,32,39,37,115,39,32,0,0,0,0,13, -32,69,120,112,101,99,116,101,100,32,114,101,115,112,111,110,115,101,13, -0,0,0,0,13,32,65,99,99,101,112,116,97,98,108,101,32,114,101,115,112,111, -110,115,101,13,0,0,13,32,85,110,101,120,112,101,99,116,101,100,32,114,101, -115,112,111,110,115,101,58,32,39,37,116,39,10,0,0,0,0,77,111,100,101,109, -32,116,101,115,116,115,32,112,97,115,115,101,100,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,13,0,80,114,101,118,105,111,117,115, -32,99,111,109,109,97,110,100,32,112,101,110,100,105,110,103,10,0,0,0,67, -104,97,114,97,99,116,101,114,115,32,114,101,97,100,121,32,97,102,116,101, -114,32,114,101,115,101,116,116,105,110,103,32,70,73,70,79,10,0,0,67,111, -109,109,97,110,100,32,116,111,111,32,108,111,110,103,10,0,0,0,77,111,100, -101,109,32,100,105,100,32,110,111,116,32,101,109,112,116,121,32,84,72,82, -10,0,0,0,0,85,110,101,120,112,101,99,116,101,100,32,114,101,115,112,111, -110,115,101,32,39,37,116,39,32,102,114,111,109,32,99,111,109,109,97,110, -100,32,39,37,116,39,10,0,77,111,100,101,109,32,110,111,116,32,114,101,97, -100,105,110,103,32,99,111,109,109,97,110,100,10,0,0,65,84,68,49,13,0,0, -0,69,110,116,101,114,32,101,98,105,32,110,117,109,98,101,114,32,40,48,32, -116,111,32,37,100,41,58,0,37,100,10,0,13,10,73,108,108,101,103,97,108,32, -101,98,105,32,110,117,109,98,101,114,13,10,0,0,69,110,116,101,114,32,111, -114,105,103,105,110,97,116,105,110,103,32,108,105,110,101,32,40,49,32,116, -111,32,37,100,41,58,0,0,0,13,10,73,108,108,101,103,97,108,32,110,117,109, -98,101,114,13,10,0,0,69,110,116,101,114,32,114,101,99,101,105,118,105,110, -103,32,108,105,110,101,32,40,49,32,116,111,32,37,100,41,58,0,13,10,67,97, -110,110,111,116,32,99,111,110,110,101,99,116,32,116,111,32,115,97,109,101, -32,112,111,114,116,13,10,0,83,101,116,116,105,110,103,32,117,112,32,117, -97,114,116,115,13,0,0,0,13,39,0,0,39,32,114,101,109,97,105,110,101,100, -32,105,110,32,111,114,105,103,105,110,97,116,105,110,103,32,114,101,99, -101,105,118,101,32,98,117,102,102,101,114,13,0,0,0,39,32,114,101,109,97, -105,110,101,100,32,105,110,32,97,110,115,119,101,114,105,110,103,32,114, -101,99,101,105,118,101,32,98,117,102,102,101,114,13,0,85,110,97,98,108, -101,32,116,111,32,115,101,116,32,117,112,32,111,114,105,103,105,110,97, -116,105,110,103,32,85,65,82,84,10,0,0,70,67,82,61,37,88,32,76,67,82,61, -37,88,32,83,80,82,61,37,88,10,0,0,0,85,110,97,98,108,101,32,116,111,32, -115,101,116,32,117,112,32,97,110,115,119,101,114,105,110,103,32,85,65,82, -84,10,0,0,0,0,73,110,105,116,105,97,116,105,110,103,32,99,111,110,110,101, -99,116,105,111,110,46,46,46,13,0,0,0,65,84,38,70,13,0,0,0,79,75,0,0,65, -84,88,49,87,50,83,54,52,61,49,48,13,0,0,0,65,84,83,55,61,53,48,13,0,0,0, -0,85,110,97,98,108,101,32,116,111,32,112,114,101,112,97,114,101,32,102, -111,114,32,100,105,97,108,105,110,103,32,115,101,113,117,101,110,99,101, -10,0,85,110,97,98,108,101,32,116,111,32,112,114,101,112,97,114,101,32,102, -111,114,32,97,110,115,119,101,114,105,110,103,32,115,101,113,117,101,110, -99,101,10,0,0,0,65,84,68,0,65,84,65,13,0,0,0,0,65,84,65,0,87,97,105,116, -105,110,103,32,102,111,114,32,99,111,110,110,101,99,116,105,111,110,46, -46,46,13,0,0,85,110,97,98,108,101,32,116,111,32,105,110,105,116,105,97, -116,101,32,100,105,97,108,105,110,103,32,115,101,113,117,101,110,99,101, -10,0,0,0,0,85,110,97,98,108,101,32,116,111,32,105,110,105,116,105,97,116, -101,32,97,110,115,119,101,114,105,110,103,32,115,101,113,117,101,110,99, -101,10,0,0,68,105,97,108,105,110,103,32,109,111,100,101,109,32,100,105, -100,32,110,111,116,32,114,101,115,112,111,110,100,32,105,110,32,116,105, -109,101,10,0,0,67,79,78,78,69,67,84,0,51,51,54,48,48,0,0,0,50,56,56,48, -48,0,0,0,37,116,32,115,101,101,109,115,32,115,108,111,119,10,0,0,79,114, -105,103,105,110,97,116,105,110,103,32,109,111,100,101,109,32,114,101,115, -112,111,110,115,101,32,39,37,116,39,32,117,110,101,120,112,101,99,116,101, -100,10,0,65,110,115,119,101,114,105,110,103,32,109,111,100,101,109,32,100, -105,100,32,110,111,116,32,114,101,115,112,111,110,100,32,105,110,32,116, -105,109,101,10,0,0,0,0,65,110,115,119,101,114,105,110,103,32,109,111,100, -101,109,32,114,101,115,112,111,110,115,101,32,39,37,116,39,32,117,110,101, -120,112,101,99,116,101,100,10,0,0,0,13,84,101,115,116,32,112,97,115,115, -101,100,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,49,50,51,52,53, -54,55,56,57,65,66,67,68,69,70,0,0,0,0,10,13,69,82,82,79,82,32,45,0,0,0, -48,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,84,52,48,0,0,0,0,66,84,52,49,0,0, -0,0,66,84,52,50,0,0,0,0,66,84,52,51,0,0,0,0,66,84,48,49,0,0,0,0,66,84,49, -48,0,0,0,0,10,13,68,105,103,105,66,111,97,114,100,32,83,109,97,114,116, -67,111,109,109,32,66,73,79,83,0,0,10,13,82,65,77,32,115,105,122,101,58, -32,37,48,56,120,0,0,0,0,10,13,67,80,85,32,116,101,115,116,46,46,46,46,46, -46,46,46,46,46,46,46,0,0,112,97,115,115,101,100,0,0,10,13,99,111,100,101, -32,99,104,101,99,107,115,117,109,32,116,101,115,116,46,46,0,0,37,69,32, -98,97,100,32,99,111,100,101,32,99,104,101,99,107,115,117,109,58,32,37,48, -56,120,0,0,13,10,0,0,66,84,50,48,0,0,0,0,83,105,109,112,108,101,10,13,0, -0,0,0,72,105,103,104,10,13,0,0,67,111,109,112,108,101,120,10,13,0,0,0,66, -84,51,48,0,0,0,0,37,69,32,71,97,112,32,105,110,32,69,66,73,32,115,101,113, -117,101,110,99,101,10,13,0,0,0,0,46,46,47,115,109,97,114,116,98,105,111, -115,46,99,0,0,66,73,79,83,0,0,0,0,32,71,79,32,0,0,0,0,32,79,75,32,0,0,0, -0,32,32,32,32,0,0,0,0,71,79,79,68,0,0,0,0,66,84,57,57,0,0,0,0,68,79,78, -69,0,0,0,0,87,65,73,84,0,0,0,0,13,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,80,97, -115,115,32,37,100,32,32,32,32,32,0,0,0,0,4,6,1,160,45,45,45,32,83,109,97, -114,116,67,111,109,109,32,68,105,97,103,110,111,115,116,105,99,115,32,45, -45,45,10,13,0,65,32,61,32,65,108,108,32,116,101,115,116,115,10,13,0,69, -32,61,32,65,108,108,32,69,66,73,32,116,101,115,116,115,10,13,0,49,32,61, -32,84,105,109,101,114,32,116,101,115,116,10,13,0,0,0,0,50,32,61,32,82,65, -77,32,116,101,115,116,10,13,0,0,51,32,61,32,69,66,73,32,105,110,116,101, -114,110,97,108,32,108,111,111,112,98,97,99,107,32,116,101,115,116,10,13, -0,0,0,0,52,32,61,32,69,66,73,32,101,120,116,101,114,110,97,108,32,108,111, -111,112,98,97,99,107,32,116,101,115,116,10,13,0,0,0,0,36,32,61,32,69,66, -73,32,115,105,110,103,108,101,32,101,120,116,101,114,110,97,108,32,112, -111,114,116,32,116,101,115,116,10,13,0,53,32,61,32,83,112,101,99,105,97, -108,32,80,65,76,32,116,101,115,116,10,13,0,0,116,47,94,84,47,84,32,61,32, -72,111,115,116,32,115,105,100,101,32,32,56,47,49,54,47,51,50,45,98,105, -116,32,82,65,77,32,116,101,115,116,32,115,116,97,114,116,47,115,116,111, -112,10,13,0,0,0,105,32,61,32,99,97,114,100,45,116,111,45,104,111,115,116, -32,105,110,116,101,114,114,117,112,116,32,116,101,115,116,10,13,0,0,0,100, -94,68,68,41,117,109,112,44,32,114,94,82,82,41,101,97,100,44,32,119,94,87, -87,41,114,105,116,101,44,32,102,94,70,70,41,105,108,108,32,82,65,77,10, -13,0,0,0,108,76,41,111,111,112,32,116,101,115,116,32,119,47,109,111,100, -101,109,32,100,105,97,108,105,110,103,10,13,0,0,0,13,10,78,117,109,98,101, -114,32,111,102,32,116,105,109,101,115,32,116,111,32,100,111,32,97,108,108, -32,116,101,115,116,115,58,32,0,10,0,0,0,10,13,32,32,84,101,115,116,115, -32,115,116,111,112,112,101,100,10,13,0,84,111,116,97,108,32,112,97,115, -115,101,115,58,32,37,100,10,13,0,0,32,32,84,101,115,116,32,37,100,58,32, -37,100,32,112,97,115,115,32,37,100,32,102,97,105,108,117,114,101,115,10, -13,0,0,0,0,32,32,40,112,114,101,115,115,32,97,110,121,32,107,101,121,32, -116,111,32,115,116,111,112,41,10,0,0,10,13,32,32,84,105,109,101,114,32, -116,101,115,116,32,115,116,111,112,112,101,100,10,13,0,0,0,0,32,32,84,101, -115,116,32,49,58,32,37,100,32,112,97,115,115,32,37,100,32,102,97,105,108, -117,114,101,115,10,13,0,83,116,97,114,116,32,65,100,100,114,101,115,115, -58,32,0,10,13,69,110,100,32,65,100,100,114,101,115,115,58,32,0,10,13,0, -0,10,13,32,32,82,65,77,32,116,101,115,116,32,115,116,111,112,112,101,100, -10,13,0,0,32,32,84,101,115,116,32,50,58,32,37,100,32,112,97,115,115,32, -37,100,32,102,97,105,108,117,114,101,115,10,13,0,32,32,69,66,73,32,115, -105,110,103,108,101,32,101,120,116,101,114,110,97,108,32,108,111,111,112, -98,97,99,107,32,116,101,115,116,10,13,0,0,0,32,32,69,110,116,101,114,32, -69,66,73,32,110,117,109,98,101,114,32,116,111,32,116,101,115,116,32,40, -48,45,37,100,41,32,0,0,32,32,69,110,116,101,114,32,112,111,114,116,32,116, -111,32,116,101,115,116,32,40,49,45,49,54,41,32,0,0,0,0,10,13,32,32,40,112, -114,101,115,115,32,97,110,121,32,107,101,121,32,116,111,32,115,116,111, -112,41,10,0,0,0,0,10,13,32,32,69,66,73,32,116,101,115,116,32,115,116,111, -112,112,101,100,10,13,0,0,32,32,84,101,115,116,32,37,99,58,32,37,100,32, -112,97,115,115,32,37,100,32,102,97,105,108,117,114,101,115,10,13,0,0,0, -0,32,32,69,66,73,32,0,0,101,120,0,0,105,110,0,0,116,101,114,110,97,108, -32,108,111,111,112,98,97,99,107,32,116,101,115,116,10,13,0,0,32,32,69,110, -116,101,114,32,69,66,73,32,110,117,109,98,101,114,32,116,111,32,116,101, -115,116,32,40,48,45,37,100,41,32,111,114,32,39,65,39,32,102,111,114,32, -97,108,108,10,13,0,0,13,80,65,76,32,116,101,115,116,46,46,46,46,46,0,0, -10,13,70,65,73,76,69,68,32,45,32,116,101,108,108,32,84,74,32,67,97,114, -116,101,114,32,97,116,32,57,52,51,45,53,51,54,49,10,13,0,10,13,32,32,80, -65,76,32,116,101,115,116,32,115,116,111,112,112,101,100,10,13,0,0,32,32, -84,101,115,116,32,53,58,32,37,100,32,112,97,115,115,32,37,100,32,102,97, -105,108,117,114,101,115,10,13,0,67,97,114,100,45,116,111,45,104,111,115, -116,32,105,110,116,101,114,114,117,112,116,32,116,101,115,116,46,46,46, -0,0,72,101,120,32,65,100,100,114,101,115,115,58,32,0,0,0,37,48,56,120,58, -32,0,0,37,48,50,120,10,13,0,0,37,48,52,120,10,13,0,0,37,48,56,120,10,13, -0,0,56,0,0,0,49,54,0,0,51,50,0,0,45,98,105,116,32,72,101,120,32,86,97,108, -117,101,58,32,0,0,0,0,72,101,120,32,76,101,110,103,116,104,58,32,0,0,0, -0,80,114,101,115,115,32,39,63,39,32,102,111,114,32,100,105,97,103,110,111, -115,116,105,99,115,32,109,101,110,117,10,13,0,0,0,0,232,3,0,0,0,0,0,0,37, -48,50,88,32,0,0,0,13,84,105,109,101,114,32,116,101,115,116,46,46,46,46, -46,46,46,46,46,46,0,0,0,37,69,32,99,97,110,39,116,32,115,101,116,32,117, -112,32,116,105,109,101,114,32,48,10,13,0,0,0,37,69,32,99,97,110,39,116, -32,115,101,116,32,117,112,32,116,105,109,101,114,32,50,10,13,0,0,0,37,69, -32,116,105,109,101,114,32,50,32,98,97,100,32,99,111,117,110,116,10,13,0, -0,37,69,32,116,105,109,101,114,32,48,32,73,78,84,32,115,116,117,99,107, -32,111,110,10,13,0,0,0,37,69,32,116,105,109,101,114,32,48,32,100,111,101, -115,32,110,111,116,32,105,110,116,101,114,114,117,112,116,10,13,0,37,69, -32,116,105,109,101,114,32,48,32,73,78,84,32,119,111,110,39,116,32,103,111, -32,97,119,97,121,10,13,0,0,112,97,115,115,101,100,0,0,13,70,80,71,65,32, -84,105,109,101,114,32,116,101,115,116,46,46,46,46,46,46,46,46,46,46,0,0, -37,69,32,99,97,110,39,116,32,115,101,116,32,117,112,32,116,105,109,101, -114,32,49,10,13,0,0,0,37,69,32,116,105,109,101,114,32,49,32,98,97,100,32, -99,111,117,110,116,10,13,0,0,37,69,32,84,37,100,32,119,114,111,116,101, -32,37,48,56,120,32,114,101,97,100,32,37,48,56,120,32,97,116,32,37,48,56, -120,10,13,0,0,0,120,12,1,160,13,82,65,77,32,116,101,115,116,46,46,46,46, -46,46,46,46,46,46,46,46,37,48,56,120,45,37,48,56,120,32,0,0,16,0,0,0,32, -0,0,0,64,0,0,0,128,0,0,13,84,101,115,116,32,69,66,73,32,37,100,32,80,65, -82,65,45,37,48,50,88,46,46,0,0,0,0,37,69,32,69,66,73,32,37,100,32,112,97, -114,97,108,108,101,108,32,112,111,114,116,32,84,80,82,32,119,114,111,116, -101,32,48,120,48,48,32,48,120,70,70,32,114,101,97,100,32,37,48,50,120,32, -37,48,50,120,10,0,37,69,32,69,66,73,32,37,100,32,112,97,114,97,108,108, -101,108,32,112,111,114,116,32,115,101,110,100,32,37,48,50,120,32,114,101, -99,101,105,118,101,100,32,37,48,50,120,10,0,0,0,0,37,69,32,69,66,73,32, -37,100,32,112,97,114,97,108,108,101,108,32,112,111,114,116,32,105,110,116, -101,114,114,117,112,116,32,115,116,117,99,107,32,111,110,10,0,37,69,32, -69,66,73,32,37,100,32,112,97,114,97,108,108,101,108,32,112,111,114,116, -32,105,110,116,101,114,114,117,112,116,32,109,97,115,107,32,111,110,32, -119,47,111,32,105,110,116,101,114,114,117,112,116,10,0,0,0,0,37,69,32,69, -66,73,32,37,100,32,112,97,114,97,108,108,101,108,32,112,111,114,116,32, -105,110,116,101,114,114,117,112,116,32,109,97,115,107,32,100,111,101,115, -32,110,111,116,32,115,101,116,32,98,105,116,10,0,0,0,0,37,69,32,69,66,73, -32,37,100,32,112,97,114,97,108,108,101,108,32,112,111,114,116,32,105,110, -116,101,114,114,117,112,116,32,100,111,101,115,32,110,111,116,32,119,111, -114,107,10,0,0,0,0,37,69,32,69,66,73,32,37,100,32,112,97,114,97,108,108, -101,108,32,112,111,114,116,32,105,110,116,101,114,114,117,112,116,32,119, -111,110,39,116,32,103,111,32,97,119,97,121,10,0,0,0,0,37,69,32,69,66,73, -32,37,100,32,112,97,114,97,108,108,101,108,32,112,111,114,116,32,105,110, -116,101,114,114,117,112,116,32,109,97,115,107,32,100,111,101,115,32,110, -111,116,32,114,101,115,101,116,32,98,105,116,10,0,0,37,69,32,69,66,73,32, -37,100,32,112,97,114,97,108,108,101,108,32,112,111,114,116,32,84,80,82, -32,110,111,116,32,102,111,117,110,100,10,0,0,13,69,66,73,32,37,100,46,46, -46,46,46,46,46,46,46,46,46,46,46,46,46,110,111,110,101,0,0,13,69,66,73, -32,37,100,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,117,110,107,110, -111,119,110,32,69,66,73,32,116,121,112,101,32,37,48,50,120,44,32,110,111, -116,32,116,101,115,116,101,100,13,10,0,0,0,0,0,0,0,0,0,0,0,46,46,47,116, -105,109,101,114,46,99,0,0,0,0,0,0,0,0,0,0,0,255,1,2,4,8,16,32,64,128,127, -191,223,239,247,251,253,254,85,170,240,15,0,0,0,16,0,0,0,32,0,0,0,64,0, -0,0,128,0,0,13,69,66,73,32,37,100,32,101,120,116,46,32,108,111,111,112, -98,97,99,107,58,32,0,13,84,101,115,116,32,69,66,73,32,37,100,32,85,65,82, -84,45,37,48,50,88,46,46,0,0,0,0,37,69,32,69,66,73,32,37,100,32,112,111, -114,116,32,37,100,32,115,99,114,97,116,99,104,32,114,101,103,105,115,116, -101,114,32,119,114,111,116,101,32,48,120,48,48,32,48,120,55,70,32,114,101, -97,100,32,37,48,50,120,32,37,48,50,120,10,0,0,37,69,32,69,66,73,32,37,100, -32,112,111,114,116,32,37,100,32,39,100,97,116,97,32,114,101,97,100,121, -32,115,116,117,99,107,32,111,110,10,0,37,69,32,69,66,73,32,37,100,32,112, -111,114,116,32,37,100,32,84,72,82,69,32,110,101,118,101,114,32,114,101, -97,100,121,10,0,37,69,32,69,66,73,32,37,100,32,112,111,114,116,32,37,100, -32,110,111,110,101,109,112,116,121,32,116,114,97,110,115,109,105,116,116, -101,114,32,108,111,111,107,115,32,101,109,112,116,121,10,0,37,69,32,69, -66,73,32,37,100,32,112,111,114,116,32,37,100,32,100,97,116,97,32,110,101, -118,101,114,32,97,114,114,105,118,101,100,10,0,0,0,37,69,32,69,66,73,32, -37,100,32,112,111,114,116,32,37,100,0,0,0,32,111,118,101,114,114,117,110, -32,101,114,114,111,114,0,0,32,112,97,114,105,116,121,32,101,114,114,111, -114,0,0,0,32,102,114,97,109,105,110,103,32,101,114,114,111,114,0,0,10,0, -0,0,37,69,32,69,66,73,32,37,100,32,112,111,114,116,32,37,100,32,39,100, -97,116,97,32,114,101,97,100,121,39,32,110,111,116,32,115,101,116,10,0,37, -69,32,69,66,73,32,37,100,32,112,111,114,116,32,37,100,32,39,100,97,116, -97,32,114,101,97,100,121,39,32,115,116,105,108,108,32,115,101,116,10,0, -0,0,37,69,32,69,66,73,32,37,100,32,112,111,114,116,32,37,100,32,115,101, -110,100,32,37,48,50,120,32,114,101,99,101,105,118,101,100,32,37,48,50,120, -10,0,0,37,69,32,69,66,73,32,37,100,32,112,111,114,116,32,37,100,32,109, -111,100,101,109,32,115,116,97,116,117,115,32,111,117,116,32,37,48,50,120, -32,105,110,32,37,48,50,120,10,13,0,0,0,32,67,84,83,47,82,84,83,0,0,0,0, -32,68,83,82,47,68,84,82,0,0,0,0,32,82,73,47,79,85,84,49,0,0,0,0,32,68,67, -68,47,79,85,84,50,0,0,0,37,69,32,69,66,73,32,37,100,32,112,111,114,116, -32,37,100,32,73,78,84,32,115,116,117,99,107,32,111,110,10,0,37,69,32,69, -66,73,32,37,100,32,112,111,114,116,32,37,100,32,73,78,84,32,109,97,115, -107,32,111,110,32,119,47,111,32,105,110,116,101,114,114,117,112,116,10, -0,0,0,0,37,69,32,69,66,73,32,37,100,32,112,111,114,116,32,37,100,32,73, -78,84,32,109,97,115,107,32,100,111,101,115,32,110,111,116,32,115,101,116, -32,98,105,116,10,0,0,0,0,37,69,32,69,66,73,32,37,100,32,112,111,114,116, -32,37,100,32,73,78,84,32,100,111,101,115,32,110,111,116,32,119,111,114, -107,10,0,0,0,0,37,69,32,69,66,73,32,37,100,32,112,111,114,116,32,37,100, -32,73,78,84,32,119,111,110,39,116,32,103,111,32,97,119,97,121,10,0,0,0, -0,37,69,32,69,66,73,32,37,100,32,112,111,114,116,32,37,100,32,73,78,84, -32,109,97,115,107,32,100,111,101,115,32,110,111,116,32,114,101,115,101, -116,32,98,105,116,10,0,0,37,69,32,69,66,73,32,37,100,32,104,97,115,32,37, -100,32,112,111,114,116,115,44,32,115,104,111,117,108,100,32,98,101,32,37, -100,115,32,37,100,112,10,0,0,32,32,77,97,120,32,117,97,114,116,115,58,32, -37,100,44,32,77,105,110,32,117,97,114,116,115,58,32,37,100,10,0,37,100, -32,100,101,118,105,99,101,115,32,0,112,97,115,115,101,100,0,0,110,111,116, -32,112,111,112,117,108,97,116,101,100,0,0,0,37,69,32,108,111,111,112,98, -97,99,107,32,112,111,114,116,32,109,105,115,109,97,116,99,104,58,32,112, -111,114,116,32,37,100,61,37,100,44,32,97,110,100,32,112,111,114,116,32, -37,100,61,37,100,10,0,0,37,69,32,108,111,111,112,98,97,99,107,32,112,111, -114,116,32,109,105,115,109,97,116,99,104,58,32,112,111,114,116,32,37,100, -61,37,100,63,10,0,37,100,0,0,61,37,100,0,63,32,0,0,80,37,100,61,80,37,100, -32,0,0,0,0,37,100,61,100,101,98,117,103,0,0,0,0,37,69,32,78,111,32,101, -120,116,101,114,110,97,108,32,99,111,110,110,101,99,116,105,111,110,115, -32,102,111,117,110,100,0,0,0,0,10,13,0,0,87,65,82,78,73,78,71,32,45,32, -78,111,116,32,97,108,108,32,85,65,82,84,83,32,100,101,116,101,99,116,101, -100,32,105,110,32,108,111,111,112,98,97,99,107,10,13,0,0,87,65,82,78,73, -78,71,32,45,32,80,97,114,97,108,108,101,108,32,112,111,114,116,115,32,110, -111,116,32,108,111,111,112,101,100,32,98,97,99,107,10,13,0,0,37,69,32,69, -66,73,32,37,100,32,112,97,114,97,108,108,101,108,32,112,111,114,116,32, -115,101,110,116,32,37,100,32,98,121,116,101,115,44,32,69,66,73,32,37,100, -32,112,97,114,97,108,108,101,108,32,112,111,114,116,32,103,111,116,32,37, -100,32,98,121,116,101,115,10,0,0,0,37,69,32,69,66,73,32,37,100,32,112,97, -114,97,108,108,101,108,32,112,111,114,116,32,119,114,111,116,101,32,37, -48,50,120,44,32,69,66,73,32,37,100,32,112,97,114,97,108,108,101,108,32, -112,111,114,116,32,114,101,97,100,32,37,48,50,120,10,0,37,69,32,69,66,73, -32,37,100,32,112,111,114,116,32,37,100,32,38,32,112,111,114,116,32,37,100, -32,109,111,100,101,109,32,115,116,97,116,117,115,32,111,117,116,32,37,48, -50,120,32,105,110,32,37,48,50,120,10,13,0,32,67,84,83,47,82,84,83,10,0, -0,0,32,68,84,82,47,68,83,82,10,0,0,0,32,82,84,83,47,82,73,0,32,68,84,82, -47,68,67,68,0,0,0,0,37,100,32,85,65,82,84,115,32,0,0,0,49,32,112,97,114, -97,108,108,101,108,32,0,64,40,35,41,45,120,0,64,40,35,41,50,0,64,40,35, -41,98,105,111,115,105,110,105,116,46,104,32,32,32,32,36,82,101,118,105, -115,105,111,110,58,32,51,46,51,32,36,32,32,36,68,97,116,101,58,32,49,57, -57,54,47,49,50,47,48,53,32,49,54,58,52,50,58,49,55,32,36,0,64,40,35,41, -98,105,111,115,105,110,105,116,46,115,32,32,32,32,36,82,101,118,105,115, -105,111,110,58,32,51,46,49,53,32,36,32,32,36,68,97,116,101,58,32,49,57, -57,55,47,49,48,47,50,55,32,49,53,58,53,54,58,51,49,32,36,32,0,64,40,35, -41,99,104,101,99,107,114,97,110,103,101,46,99,32,32,36,82,101,118,105,115, -105,111,110,58,32,49,46,51,32,36,32,32,36,68,97,116,101,58,32,49,57,57, -54,47,48,57,47,49,54,32,50,51,58,50,50,58,48,53,32,36,0,64,40,35,41,99, -111,109,109,111,110,46,109,107,32,32,32,32,32,36,82,101,118,105,115,105, -111,110,58,32,51,46,51,49,32,36,32,32,36,68,97,116,101,58,32,49,57,57,56, -47,48,50,47,50,51,32,48,57,58,50,55,58,53,56,32,36,0,64,40,35,41,99,116, -111,114,46,99,32,32,32,32,32,36,82,101,118,105,115,105,111,110,58,32,51, -46,50,32,36,32,32,36,68,97,116,101,58,32,49,57,57,54,47,49,48,47,49,48, -32,50,51,58,50,55,58,48,55,32,36,0,64,40,35,41,100,101,102,115,46,104,32, -32,32,32,32,32,32,32,36,82,101,118,105,115,105,111,110,58,32,51,46,49,51, -32,36,32,32,36,68,97,116,101,58,32,49,57,57,56,47,48,50,47,50,53,32,48, -55,58,50,54,58,53,54,32,36,0,64,40,35,41,100,101,118,105,99,101,46,104, -32,32,32,32,32,32,36,82,101,118,105,115,105,111,110,58,32,51,46,49,53,32, -36,32,32,36,68,97,116,101,58,32,49,57,57,56,47,48,50,47,50,51,32,48,57, -58,50,56,58,48,54,32,36,0,64,40,35,41,104,111,115,116,99,111,109,109,46, -99,32,32,32,32,36,82,101,118,105,115,105,111,110,58,32,51,46,52,32,36,32, -32,36,68,97,116,101,58,32,49,57,57,54,47,49,48,47,49,48,32,50,51,58,50, -55,58,48,56,32,36,0,64,40,35,41,104,111,115,116,99,111,109,109,46,104,32, -32,32,32,36,82,101,118,105,115,105,111,110,58,32,51,46,49,57,32,36,32,32, -36,68,97,116,101,58,32,49,57,57,56,47,48,51,47,49,50,32,48,52,58,53,50, -58,50,51,32,36,0,64,40,35,41,109,105,100,46,104,32,32,32,32,32,32,32,32, -32,36,82,101,118,105,115,105,111,110,58,32,51,46,49,50,32,36,32,32,36,68, -97,116,101,58,32,49,57,57,56,47,48,50,47,50,51,32,48,57,58,50,56,58,48, -57,32,36,0,64,40,35,41,109,111,100,101,109,116,115,116,46,99,32,32,32,32, -36,82,101,118,105,115,105,111,110,58,32,51,46,55,32,36,32,32,36,68,97,116, -101,58,32,49,57,57,54,47,49,50,47,48,53,32,49,54,58,52,57,58,48,57,32,36, -0,64,40,35,41,109,111,100,101,109,116,115,116,46,104,32,32,32,32,36,82, -101,118,105,115,105,111,110,58,32,51,46,53,32,36,32,32,36,68,97,116,101, -58,32,49,57,57,55,47,48,49,47,50,48,32,50,48,58,53,56,58,52,51,32,36,0, -64,40,35,41,109,111,100,117,108,101,46,104,32,32,32,32,32,32,36,82,101, -118,105,115,105,111,110,58,32,51,46,55,32,36,32,32,36,68,97,116,101,58, -32,49,57,57,56,47,48,50,47,50,51,32,48,57,58,50,56,58,49,53,32,36,0,64, -40,35,41,112,97,114,97,46,104,32,32,32,32,32,32,32,32,36,82,101,118,105, -115,105,111,110,58,32,49,46,50,32,36,32,32,36,68,97,116,101,58,32,49,57, -57,54,47,49,50,47,48,53,32,49,54,58,53,48,58,49,54,32,36,0,64,40,35,41, -112,98,117,115,46,104,32,32,32,32,32,32,32,32,36,82,101,118,105,115,105, -111,110,58,32,51,46,52,32,36,32,32,36,68,97,116,101,58,32,49,57,57,54,47, -49,50,47,48,53,32,49,54,58,53,48,58,50,53,32,36,0,64,40,35,41,112,114,105, -110,116,102,46,99,32,32,32,32,32,32,36,82,101,118,105,115,105,111,110,58, -32,51,46,51,32,36,32,32,36,68,97,116,101,58,32,49,57,57,55,47,48,49,47, -50,48,32,50,48,58,53,56,58,52,50,32,36,0,64,40,35,41,114,119,46,99,32,32, -32,32,32,32,32,32,32,32,36,82,101,118,105,115,105,111,110,58,32,51,46,50, -32,36,32,32,36,68,97,116,101,58,32,49,57,57,54,47,48,57,47,49,54,32,50, -51,58,50,57,58,52,52,32,36,0,64,40,35,41,114,119,46,104,32,32,32,32,32, -32,32,32,32,32,36,82,101,118,105,115,105,111,110,58,32,50,46,52,32,36,32, -32,36,68,97,116,101,58,32,49,57,57,55,47,48,50,47,50,48,32,50,50,58,50, -55,58,53,48,32,36,0,64,40,35,41,115,99,97,46,104,32,32,32,32,32,32,32,32, -32,36,82,101,118,105,115,105,111,110,58,32,51,46,55,32,36,32,32,36,68,97, -116,101,58,32,49,57,57,56,47,48,49,47,48,54,32,48,50,58,51,57,58,52,54, -32,36,0,64,40,35,41,115,109,97,114,116,98,105,111,115,46,99,32,32,32,36, -82,101,118,105,115,105,111,110,58,32,51,46,50,56,32,36,32,32,36,68,97,116, -101,58,32,49,57,57,56,47,48,50,47,50,51,32,48,57,58,50,56,58,50,54,32,36, -0,64,40,35,41,115,109,97,114,116,98,105,111,115,46,104,32,32,32,36,82,101, -118,105,115,105,111,110,58,32,51,46,53,32,36,32,32,36,68,97,116,101,58, -32,49,57,57,54,47,48,57,47,49,57,32,50,49,58,50,51,58,52,56,32,36,0,64, -40,35,41,99,104,97,110,110,101,108,46,104,32,32,32,32,32,36,82,101,118, -105,115,105,111,110,58,32,51,46,51,32,36,32,32,36,68,97,116,101,58,32,49, -57,57,56,47,48,50,47,50,51,32,48,57,58,50,56,58,51,49,32,36,0,64,40,35, -41,116,101,115,116,115,46,99,32,32,32,32,32,32,32,36,82,101,118,105,115, -105,111,110,58,32,51,46,52,56,32,36,32,32,36,68,97,116,101,58,32,49,57, -57,56,47,48,50,47,50,51,32,48,57,58,50,56,58,52,48,32,36,0,64,40,35,41, -116,101,115,116,115,46,104,32,32,32,32,32,32,32,36,82,101,118,105,115,105, -111,110,58,32,51,46,53,32,36,32,32,36,68,97,116,101,58,32,49,57,57,54,47, -49,50,47,48,53,32,49,54,58,53,55,58,49,52,32,36,0,64,40,35,41,116,101,115, -116,117,97,114,116,46,99,32,32,32,32,36,82,101,118,105,115,105,111,110, -58,32,51,46,57,32,36,32,32,36,68,97,116,101,58,32,49,57,57,55,47,48,49, -47,48,54,32,50,51,58,50,49,58,53,51,32,36,0,64,40,35,41,116,101,115,116, -117,97,114,116,46,104,32,32,32,32,36,82,101,118,105,115,105,111,110,58, -32,51,46,50,32,36,32,32,36,68,97,116,101,58,32,49,57,57,54,47,49,48,47, -49,48,32,50,51,58,50,55,58,49,52,32,36,0,64,40,35,41,116,105,109,101,114, -46,99,32,32,32,32,32,32,32,36,82,101,118,105,115,105,111,110,58,32,51,46, -57,32,36,32,32,36,68,97,116,101,58,32,49,57,57,56,47,48,50,47,50,51,32, -48,57,58,50,56,58,52,51,32,36,0,64,40,35,41,116,105,109,101,114,46,104, -32,32,32,32,32,32,32,36,82,101,118,105,115,105,111,110,58,32,51,46,49,51, -32,36,32,32,36,68,97,116,101,58,32,49,57,57,56,47,48,50,47,50,51,32,48, -57,58,50,56,58,52,52,32,36,0,64,40,35,41,117,97,114,116,46,104,32,32,32, -32,32,32,32,32,36,82,101,118,105,115,105,111,110,58,32,51,46,49,48,32,36, -32,32,36,68,97,116,101,58,32,49,57,57,56,47,48,50,47,50,51,32,48,57,58, -50,56,58,52,57,32,36,0,64,40,35,41,117,116,105,108,46,115,32,32,32,32,32, -32,32,32,36,82,101,118,105,115,105,111,110,58,32,51,46,52,32,36,32,32,36, -68,97,116,101,58,32,49,57,57,55,47,48,49,47,50,49,32,49,55,58,48,54,58, -53,50,32,36,0,64,40,35,41,120,114,98,105,111,115,47,77,97,107,101,102,105, -108,101,32,32,32,32,32,36,82,101,118,105,115,105,111,110,58,32,49,46,50, -32,36,32,32,36,68,97,116,101,58,32,49,57,57,55,47,49,48,47,50,55,32,49, -53,58,53,54,58,51,55,32,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -}; diff --git a/sys/dev/digi/Xr.c b/sys/dev/digi/Xr.c deleted file mode 100644 index 4d68c87d211b..000000000000 --- a/sys/dev/digi/Xr.c +++ /dev/null @@ -1,48 +0,0 @@ -/*- - * Copyright (c) 2001 Brian Somers <brian@Awfulhak.org> - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include <sys/param.h> -#include <sys/conf.h> -#include <sys/kernel.h> -#include <sys/module.h> - -#include <dev/digi/Xr.bios.h> -#include <dev/digi/Xr.fepos.h> -#include <dev/digi/digi_mod.h> - -struct digi_mod digi_mod_Xr = { - DIGI_MOD_VERSION, - { Xr_bios, sizeof(Xr_bios) }, - { Xr_fepos, sizeof(Xr_fepos) }, - { NULL, 0 } -}; - -MODULE_VERSION(digi_Xr, 1); -DEV_MODULE(digi_Xr, 0, 0); diff --git a/sys/dev/digi/Xr.fepos.h b/sys/dev/digi/Xr.fepos.h deleted file mode 100644 index 66fbd10e1d2f..000000000000 --- a/sys/dev/digi/Xr.fepos.h +++ /dev/null @@ -1,1238 +0,0 @@ -/*- - * Copyright (c) 2001 Brian Somers <brian@Awfulhak.org> - * based on work by Slawa Olhovchenkov - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - */ - -static const u_char Xr_fepos[] = { -79,83,117,166,105,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,89,46,124, -0,0,0,0,64,40,35,41,120,114,102,101,112,46,98,105,110,32,32,32,32,32,50, -46,51,46,49,48,32,49,57,57,56,47,48,50,47,50,54,0,64,40,35,41,67,111,112, -121,114,105,103,104,116,32,40,67,41,32,49,57,57,50,44,32,68,73,71,73,32, -73,110,116,101,114,110,97,116,105,111,110,97,108,46,32,65,108,108,32,82, -105,103,104,116,115,32,82,101,115,101,114,118,101,100,46,0,0,0,0,0,0,0, -0,0,0,0,0,0,163,1,60,40,2,34,172,0,163,2,60,32,2,66,52,12,0,67,172,0,96, -3,64,0,96,128,64,0,0,67,172,0,104,3,64,0,0,0,0,4,0,67,172,16,0,68,172,20, -0,69,172,24,0,70,172,28,0,71,172,32,0,72,172,36,0,73,172,40,0,74,172,44, -0,75,172,48,0,76,172,52,0,77,172,56,0,78,172,60,0,79,172,64,0,80,172,68, -0,81,172,72,0,82,172,76,0,83,172,80,0,84,172,84,0,85,172,88,0,86,172,92, -0,87,172,96,0,88,172,100,0,89,172,104,0,90,172,108,0,91,172,112,0,92,172, -116,0,93,172,120,0,94,172,124,0,95,172,16,0,8,36,0,163,9,60,0,2,41,53,0, -0,138,128,0,0,0,0,2,0,64,17,0,0,42,161,1,0,132,36,1,0,41,37,255,255,8,37, -248,255,0,29,0,0,0,0,0,163,1,60,16,2,37,172,0,163,1,60,20,2,63,172,0,163, -1,60,24,2,61,172,2,0,8,36,0,163,1,60,16,12,40,172,0,163,29,60,0,4,189,55, -64,26,0,12,0,0,0,0,0,163,8,60,16,12,8,141,1,0,1,36,37,0,1,17,0,0,0,0,248, -255,0,16,0,0,0,0,225,0,30,36,0,163,1,60,16,0,62,172,0,0,30,36,0,16,8,60, -0,96,136,64,1,128,28,60,96,16,156,39,242,0,30,36,0,163,1,60,16,0,62,172, -0,0,30,36,1,0,17,4,0,0,0,0,13,1,30,36,0,163,1,60,16,0,62,172,0,0,30,36, -0,128,5,60,0,48,165,36,1,128,6,60,32,154,198,36,0,128,4,60,228,49,132,36, -35,32,228,3,33,32,134,0,252,255,132,36,252,255,198,36,0,0,136,140,0,0,0, -0,0,0,200,172,43,8,166,0,249,255,32,20,0,0,0,0,0,96,8,64,0,0,0,0,255,255, -1,60,254,0,33,52,36,64,1,1,0,96,136,64,0,163,1,60,15,12,32,160,97,1,30, -36,0,163,1,60,16,0,62,172,0,0,30,36,0,128,31,60,132,50,255,39,0,128,4,60, -64,70,132,36,0,160,1,60,37,32,129,0,8,0,128,0,0,0,0,0,168,1,30,36,0,163, -1,60,16,0,62,172,0,0,30,36,1,128,29,60,0,162,189,39,0,0,30,36,0,163,1,60, -16,12,32,172,63,0,1,60,255,255,33,52,36,112,193,1,0,128,1,60,37,112,193, -1,0,128,4,60,55,23,0,12,0,48,132,36,107,12,0,8,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,148,255,189,39,16,0,161,175,20,0,162,175,24,0,163,175,28, -0,164,175,32,0,165,175,36,0,166,175,40,0,167,175,44,0,168,175,48,0,169, -175,52,0,170,175,56,0,171,175,60,0,172,175,64,0,173,175,68,0,174,175,72, -0,175,175,76,0,184,175,80,0,185,175,88,0,190,175,92,0,191,175,0,112,8,64, -18,72,0,0,16,80,0,0,84,0,168,175,96,0,169,175,100,0,170,175,0,104,5,64, -0,96,6,64,124,0,164,48,86,0,128,20,0,0,0,0,104,0,166,175,36,16,166,0,0, -255,66,48,0,8,68,48,69,0,128,20,0,0,0,0,0,4,72,48,56,0,0,21,0,0,0,0,42, -0,0,16,0,0,0,0,104,0,166,143,0,0,0,0,0,0,0,0,0,96,134,64,0,104,5,64,0,0, -0,0,36,16,166,0,0,255,66,48,239,255,64,20,0,0,0,0,104,0,168,143,96,0,169, -143,100,0,170,143,0,0,0,0,0,96,136,64,19,0,32,1,17,0,64,1,20,0,162,143, -24,0,163,143,28,0,164,143,32,0,165,143,36,0,166,143,40,0,167,143,44,0,168, -143,48,0,169,143,52,0,170,143,56,0,171,143,60,0,172,143,64,0,173,143,68, -0,174,143,72,0,175,143,76,0,184,143,80,0,185,143,88,0,190,143,92,0,191, -143,0,0,0,0,84,0,186,143,16,0,161,143,108,0,189,39,8,0,64,3,16,0,0,66,164, -145,136,143,0,0,0,0,38,64,6,1,1,255,8,49,38,48,200,0,0,0,9,36,0,104,137, -64,0,96,134,64,37,23,0,12,0,0,0,0,204,255,0,16,0,0,0,0,176,145,136,143, -0,0,0,0,38,64,6,1,1,255,8,49,38,48,200,0,0,96,134,64,122,28,0,12,0,0,0, -0,194,255,0,16,0,0,0,0,1,128,8,60,4,165,8,141,0,0,0,0,38,64,6,1,1,255,8, -49,38,48,200,0,0,96,134,64,46,23,0,12,0,0,0,0,183,255,0,16,0,0,0,0,1,128, -4,60,112,142,132,36,36,12,0,12,116,1,5,36,187,255,0,16,0,0,0,0,236,255, -189,39,8,0,161,175,0,112,26,64,0,0,0,0,12,0,186,175,16,0,191,175,1,128, -4,60,112,142,132,36,36,12,0,12,150,1,5,36,16,0,191,143,12,0,186,143,8,0, -161,143,12,0,189,39,8,0,64,3,16,0,0,66,0,0,0,0,0,0,0,0,220,255,189,39,0, -0,176,175,4,0,177,175,8,0,178,175,12,0,179,175,16,0,180,175,20,0,181,175, -24,0,182,175,28,0,183,175,32,0,191,175,1,128,16,60,120,166,16,142,0,32, -17,60,16,146,132,143,0,0,0,0,4,0,136,140,0,0,0,0,8,0,0,1,0,0,0,0,4,146, -136,143,33,128,16,2,4,0,8,37,4,146,136,175,4,0,8,49,1,128,4,60,33,32,136, -0,116,162,132,140,0,0,0,0,4,0,138,140,0,0,0,0,8,0,64,1,0,0,0,0,4,146,136, -143,33,128,16,2,12,0,8,49,1,128,4,60,33,32,136,0,124,162,132,140,0,0,0, -0,4,0,138,140,0,0,0,0,8,0,64,1,0,0,0,0,48,146,132,143,0,146,144,143,0,0, -0,0,255,255,16,38,52,0,136,140,0,0,0,0,9,248,0,1,0,0,0,0,48,0,132,140,249, -255,0,22,0,0,0,0,48,146,132,175,0,0,176,143,4,0,177,143,8,0,178,143,12, -0,179,143,16,0,180,143,20,0,181,143,24,0,182,143,28,0,183,143,32,0,191, -143,36,0,189,39,8,0,224,3,0,0,0,0,80,0,135,148,36,0,134,140,130,72,7,0, -12,0,41,49,33,8,60,1,0,128,41,140,0,0,0,0,8,0,32,1,0,0,0,0,36,0,134,140, -80,0,135,148,61,14,0,12,37,40,145,0,2,73,7,0,124,0,41,49,68,0,146,140,0, -0,0,0,35,144,80,2,157,0,65,6,0,0,0,0,33,8,60,1,32,128,41,140,64,0,147,140, -8,0,32,1,0,0,0,0,37,40,145,0,44,0,137,148,0,0,0,0,0,8,41,49,81,1,32,21, -0,0,0,0,2,73,7,0,12,0,41,49,33,8,60,1,16,128,41,140,0,0,0,0,8,0,32,1,0, -0,0,0,0,0,132,140,0,0,0,0,4,0,137,140,0,0,0,0,8,0,32,1,0,0,0,0,2,65,7,0, -124,0,8,49,33,8,28,1,32,128,40,140,0,0,0,0,8,0,0,1,0,0,0,0,84,0,169,144, -88,0,170,144,1,0,232,48,9,0,0,17,0,0,0,0,40,0,140,148,0,0,0,0,0,16,136, -49,4,0,0,17,0,0,0,0,93,0,131,144,3,0,0,16,8,0,43,53,92,0,131,144,247,255, -43,49,38,72,43,1,37,80,73,1,84,0,171,160,88,0,170,160,255,253,231,48,80, -0,135,164,0,0,195,160,33,144,83,2,225,255,64,6,0,0,0,0,99,0,0,16,0,0,0, -0,33,72,18,2,90,0,32,21,0,0,0,0,12,0,202,144,0,0,0,0,64,0,74,53,12,0,202, -160,0,4,231,52,83,0,0,16,80,0,135,164,108,0,137,140,255,255,1,36,12,0,33, -17,0,0,0,0,35,72,48,1,8,0,32,29,0,0,0,0,12,0,202,144,0,0,0,0,191,255,74, -49,12,0,202,160,0,0,9,36,255,250,231,48,80,0,135,164,108,0,137,172,66,0, -0,16,0,0,0,0,36,0,134,140,80,0,135,148,61,14,0,12,37,40,145,0,0,0,132,140, -0,0,0,0,4,0,137,140,0,0,0,0,8,0,32,1,0,0,0,0,0,128,10,60,4,56,74,37,4,0, -138,172,73,0,136,144,74,0,137,144,11,0,0,16,0,0,0,0,36,0,134,140,80,0,135, -148,61,14,0,12,37,40,145,0,68,0,146,140,73,0,136,144,74,0,137,144,35,144, -80,2,45,0,65,6,0,0,0,0,24,0,202,144,10,0,181,148,12,0,182,148,0,0,0,0,24, -0,182,18,0,0,0,0,36,64,10,1,30,0,9,21,0,0,0,0,64,0,147,140,60,0,148,140, -14,0,151,148,33,64,150,2,0,0,3,145,1,0,214,38,0,0,195,160,36,176,215,2, -33,144,83,2,4,0,65,6,0,0,0,0,248,255,182,22,33,64,150,2,0,0,18,36,0,0,136, -140,12,0,182,164,4,0,9,141,68,0,146,172,8,0,32,1,33,32,0,1,33,64,18,2,7, -0,0,21,0,0,0,0,75,0,128,160,191,255,231,48,80,0,135,164,0,128,8,60,192, -55,8,37,4,0,136,172,0,0,136,140,68,0,128,172,4,0,9,141,33,32,0,1,8,0,32, -1,0,0,0,0,0,0,136,140,68,0,146,172,4,0,9,141,33,32,0,1,8,0,32,1,0,0,0,0, -20,0,194,144,0,0,0,0,1,0,72,48,52,0,0,21,0,0,0,0,1,0,232,48,41,0,0,17,0, -0,0,0,4,146,136,143,72,0,137,144,130,64,8,0,38,64,9,1,7,0,8,49,34,0,0,21, -0,0,0,0,18,0,181,148,20,0,182,148,22,0,151,148,26,0,136,148,40,0,140,148, -35,72,182,2,36,72,55,1,43,8,40,1,24,0,32,16,0,0,0,0,254,255,231,48,95,0, -136,144,0,0,0,0,3,0,8,49,84,0,169,144,0,0,0,0,37,72,40,1,84,0,169,160,86, -0,169,144,0,0,0,0,36,72,40,1,88,0,170,144,0,0,0,0,37,80,73,1,88,0,170,160, -104,0,139,144,0,0,0,0,37,88,104,1,16,0,203,160,0,16,136,49,4,0,0,21,0,0, -0,0,80,0,135,164,8,0,224,3,0,0,0,0,0,2,231,56,80,0,135,164,0,128,9,60,64, -54,41,37,148,13,0,8,4,0,137,172,106,0,146,148,66,66,7,0,124,0,8,49,33,152, -28,1,160,136,115,142,56,0,148,140,18,0,181,148,20,0,182,148,22,0,151,148, -34,64,213,2,255,255,8,33,36,64,23,1,56,255,8,33,12,0,1,5,0,0,0,0,79,0,168, -144,0,0,0,0,128,0,8,53,79,0,168,160,1,160,9,60,32,162,41,141,0,0,0,0,1, -0,41,37,1,160,1,60,49,0,0,16,32,162,41,172,40,0,140,148,1,128,13,60,212, -169,173,141,92,0,142,144,93,0,143,144,0,0,195,144,0,66,2,0,37,24,104,0, -8,0,96,2,36,24,114,0,255,249,104,48,117,2,14,17,33,72,149,2,132,2,15,17, -0,0,35,161,255,0,97,44,17,0,32,20,0,0,0,0,5,0,0,16,0,0,0,0,33,72,149,2, -255,0,97,44,11,0,32,20,0,0,35,161,0,255,104,48,138,2,0,21,0,0,0,0,8,0,138, -49,5,0,64,17,0,0,0,0,1,0,181,38,36,168,183,2,33,72,149,2,0,0,35,161,255, -255,173,37,12,0,160,25,1,0,181,38,20,0,194,144,36,168,183,2,1,0,72,48,220, -255,0,21,0,0,0,0,28,0,136,148,35,72,182,2,36,72,55,1,43,8,40,1,32,0,32, -20,0,0,0,0,1,0,234,48,29,0,64,21,36,168,183,2,1,0,231,52,95,0,136,144,0, -0,0,0,3,0,8,49,84,0,169,144,0,0,0,0,38,72,40,1,84,0,169,160,86,0,169,144, -0,0,0,0,36,72,40,1,88,0,170,144,0,0,0,0,37,80,73,1,88,0,170,160,104,0,139, -144,39,64,0,1,36,88,104,1,16,0,203,160,0,16,136,49,7,0,0,17,0,0,0,0,0,2, -231,56,0,128,9,60,64,54,41,37,4,0,137,172,0,128,31,60,80,54,255,39,18,0, -181,164,8,0,224,3,80,0,135,164,36,0,134,140,0,0,0,0,16,0,192,16,0,0,0,0, -37,40,145,0,24,0,200,144,84,0,169,144,0,0,0,0,38,64,9,1,240,0,8,49,38,72, -40,1,84,0,169,160,86,0,169,144,0,0,0,0,36,72,40,1,88,0,170,144,0,0,0,0, -37,80,73,1,88,0,170,160,8,0,224,3,0,0,0,0,0,128,10,60,232,59,74,37,4,0, -0,16,4,0,138,172,36,0,134,140,80,0,135,148,37,40,145,0,56,0,201,144,0,0, -0,0,21,0,32,17,0,0,0,0,18,0,181,148,20,0,182,148,56,0,148,140,22,0,151, -148,33,64,149,2,1,0,181,38,36,168,183,2,9,0,182,18,0,0,0,0,72,0,195,144, -255,255,41,37,0,0,3,161,33,64,149,2,247,255,32,21,0,0,0,0,3,0,0,16,0,0, -0,0,255,255,181,38,36,168,183,2,18,0,181,164,0,0,136,140,0,0,0,0,4,0,9, -141,33,32,0,1,8,0,32,1,0,0,0,0,0,128,10,60,124,60,74,37,4,0,0,16,4,0,138, -172,36,0,134,140,80,0,135,148,37,40,145,0,10,0,181,148,12,0,182,148,0,0, -0,0,119,0,182,18,0,0,0,0,56,0,201,144,0,0,0,0,128,255,41,33,34,72,9,0,60, -0,148,140,14,0,151,148,33,64,150,2,8,0,32,25,0,0,0,0,255,255,41,37,0,0, -3,145,1,0,214,38,72,0,195,160,36,176,215,2,248,255,182,22,33,64,150,2,0, -0,136,140,12,0,182,164,4,0,9,141,33,32,0,1,8,0,32,1,0,0,0,0,0,128,10,60, -4,61,74,37,4,0,0,16,4,0,138,172,36,0,134,140,80,0,135,148,37,40,145,0,10, -0,181,148,12,0,182,148,0,0,0,0,85,0,182,18,0,0,0,0,56,0,201,144,0,0,0,0, -128,255,41,37,34,72,9,0,60,0,148,140,14,0,151,148,42,0,140,148,99,0,142, -144,21,0,32,25,33,64,150,2,255,255,41,37,0,0,8,145,0,0,0,0,33,24,0,1,128, -64,8,0,33,8,28,1,160,132,40,140,0,0,0,0,8,0,0,1,0,0,0,0,2,0,136,49,2,0, -0,17,0,0,0,0,224,255,99,36,1,0,206,37,72,0,195,160,1,0,214,38,36,176,215, -2,235,255,182,22,0,0,0,0,99,0,142,160,0,0,136,140,12,0,182,164,4,0,9,141, -33,32,0,1,8,0,32,1,0,0,0,0,243,255,192,17,0,0,0,0,241,255,0,16,255,255, -206,37,32,0,138,49,2,0,64,17,0,0,0,0,0,0,14,36,4,0,138,49,234,255,64,17, -0,0,0,0,237,255,32,17,0,0,14,36,255,255,41,37,13,0,10,36,228,255,0,16,72, -0,202,160,33,64,192,1,0,0,14,36,8,0,138,49,8,0,64,21,0,0,0,0,16,0,138,49, -220,255,64,17,0,0,0,0,219,255,0,17,0,0,0,0,216,255,0,16,0,0,0,0,214,255, -0,16,10,0,3,36,33,64,192,1,7,0,8,49,7,0,8,57,43,8,40,1,213,255,32,20,0, -0,0,0,35,72,40,1,8,0,206,37,248,255,206,49,32,0,3,36,72,0,195,160,255,255, -8,37,253,255,1,5,0,0,0,0,199,255,0,16,0,0,0,0,75,0,128,160,191,255,231, -48,80,0,135,164,0,128,8,60,180,54,8,37,49,14,0,8,4,0,136,172,116,0,159, -172,99,0,142,160,0,0,136,140,12,0,182,164,4,0,9,141,68,0,146,172,8,0,32, -1,33,32,0,1,0,128,10,60,204,62,74,37,4,0,138,172,73,0,136,144,74,0,137, -144,11,0,0,16,0,0,0,0,36,0,134,140,80,0,135,148,61,14,0,12,37,40,145,0, -68,0,146,140,73,0,136,144,74,0,137,144,35,144,80,2,123,254,65,6,0,0,0,0, -24,0,202,144,10,0,181,148,12,0,182,148,36,64,10,1,111,254,9,21,0,0,0,0, -64,0,147,140,60,0,148,140,14,0,151,148,116,0,136,140,42,0,140,148,98,0, -141,144,99,0,142,144,9,248,0,1,0,0,0,0,91,254,182,18,33,64,150,2,0,0,3, -145,1,0,214,38,36,176,215,2,36,64,109,0,128,64,8,0,33,8,28,1,160,128,40, -140,0,0,0,0,8,0,0,1,0,0,0,0,1,0,206,37,0,0,195,160,33,144,83,2,200,255, -65,6,0,0,0,0,198,255,182,18,33,64,150,2,0,0,3,145,1,0,214,38,36,176,215, -2,36,64,109,0,128,64,8,0,33,8,28,1,160,128,40,140,0,0,0,0,8,0,0,1,0,0,0, -0,1,0,136,49,237,255,0,17,0,0,0,0,24,0,0,16,39,0,3,36,1,0,136,49,232,255, -0,17,0,0,0,0,19,0,0,16,40,0,3,36,1,0,136,49,227,255,0,17,0,0,0,0,14,0,0, -16,33,0,3,36,1,0,136,49,222,255,0,17,0,0,0,0,9,0,0,16,41,0,3,36,1,0,136, -49,217,255,0,17,0,0,0,0,4,0,0,16,94,0,3,36,1,0,136,49,212,255,0,17,0,0, -0,0,92,0,8,36,0,0,200,160,2,0,206,37,33,144,83,2,207,255,64,6,0,0,0,0,164, -15,0,12,97,0,131,160,97,0,131,144,202,255,0,16,0,0,0,0,2,0,136,49,198,255, -0,17,0,0,0,0,196,255,0,16,224,255,99,36,2,0,192,17,0,32,137,49,255,255, -206,37,192,255,32,17,2,0,8,36,87,0,0,16,0,0,0,0,66,74,12,0,12,0,41,49,33, -8,60,1,32,137,41,140,33,64,192,1,8,0,206,37,8,0,32,1,248,255,206,49,35, -64,200,1,5,0,1,41,178,255,32,20,0,0,0,0,73,0,0,16,0,0,0,0,71,0,0,16,2,0, -8,36,35,64,200,1,32,0,3,36,255,255,8,37,169,255,0,25,0,0,0,0,0,0,195,160, -33,144,83,2,249,255,64,6,0,0,0,0,164,15,0,12,97,0,136,160,97,0,136,144, -244,255,0,16,0,0,0,0,0,64,137,49,157,255,32,17,0,0,0,0,52,0,0,16,127,0, -8,36,0,128,137,49,152,255,32,17,0,0,0,0,47,0,0,16,127,0,8,36,33,64,192, -1,32,0,138,49,26,0,64,21,4,0,137,49,9,0,32,17,13,0,10,36,0,0,14,36,0,0, -202,160,33,144,83,2,4,0,64,6,0,0,0,0,164,15,0,12,0,0,0,0,10,0,3,36,0,1, -136,49,133,255,0,17,0,0,0,0,28,0,0,16,5,0,8,36,33,64,192,1,0,0,14,36,8, -0,137,49,14,0,32,21,0,0,0,0,16,0,138,49,3,0,64,17,0,0,0,0,125,255,0,17, -0,0,0,0,0,0,14,36,194,73,12,0,12,0,41,49,33,8,60,1,48,137,41,140,0,0,0, -0,8,0,32,1,0,0,0,0,232,255,0,16,10,0,3,36,2,65,8,0,5,0,0,16,3,0,8,37,3, -0,0,16,5,0,8,36,1,0,0,16,9,0,8,36,0,0,195,160,33,144,83,2,4,0,64,6,0,0, -0,0,164,15,0,12,97,0,136,160,97,0,136,144,64,0,137,49,17,0,32,17,0,0,0, -0,32,0,1,41,14,0,32,16,0,0,0,0,96,0,131,144,4,0,1,41,87,255,32,20,0,0,0, -0,0,0,195,160,33,144,83,2,83,255,64,6,0,0,0,0,164,15,0,12,0,0,0,0,96,0, -131,144,78,255,0,16,0,0,0,0,6,0,8,37,0,60,9,36,25,0,9,1,18,64,0,0,19,255, -0,16,33,144,72,2,1,0,0,140,255,231,231,48,66,66,7,0,124,0,8,49,33,152,28, -1,160,136,115,142,0,0,0,0,8,0,96,2,0,0,0,0,90,0,184,144,91,0,185,144,0, -128,19,60,124,66,115,38,94,0,139,144,255,249,104,48,9,0,11,21,0,0,0,0,0, -128,19,60,4,68,115,38,253,253,0,16,0,8,231,52,90,0,184,144,91,0,185,144, -0,128,19,60,172,66,115,38,255,249,104,48,5,0,24,17,0,0,0,0,235,253,25,21, -0,0,0,0,18,0,0,16,0,0,0,0,74,0,136,144,0,0,0,0,8,0,9,49,11,0,32,17,0,0, -0,0,247,255,8,49,74,0,136,160,84,0,169,144,88,0,170,144,251,255,43,49,38, -72,43,1,37,80,73,1,84,0,171,160,244,253,0,16,88,0,170,160,242,253,25,23, -0,0,0,0,74,0,136,144,0,0,0,0,8,0,8,53,74,0,136,160,84,0,169,144,88,0,170, -144,4,0,43,53,38,72,43,1,37,80,73,1,84,0,171,160,88,0,170,160,0,8,137,49, -228,253,32,17,0,0,0,0,0,16,231,52,0,128,19,60,224,253,0,16,84,67,115,38, -74,0,136,144,0,0,0,0,243,255,8,49,74,0,136,160,84,0,169,144,88,0,170,144, -251,255,43,49,38,72,43,1,37,80,73,1,84,0,171,160,88,0,170,160,255,239,231, -48,66,74,7,0,124,0,41,49,33,152,60,1,160,136,115,142,64,0,136,49,205,253, -0,21,0,0,0,0,255,253,104,48,202,253,14,17,0,0,0,0,200,253,15,17,0,0,0,0, -0,32,137,49,7,0,32,17,0,0,0,0,90,0,170,144,91,0,171,144,193,253,10,17,0, -0,0,0,191,253,11,17,0,0,0,0,0,32,137,49,171,253,32,17,0,0,0,0,94,0,139, -144,0,0,0,0,167,253,11,21,0,0,0,0,0,8,231,52,0,128,19,60,163,253,0,16,4, -68,115,38,255,247,231,48,66,74,7,0,124,0,41,49,33,152,60,1,160,136,115, -142,156,253,0,16,0,0,0,0,94,0,139,144,255,253,104,48,143,253,11,21,0,0, -0,0,0,8,231,52,0,128,19,60,148,253,0,16,4,68,115,38,74,0,136,144,0,0,0, -0,4,0,9,49,11,0,32,17,0,0,0,0,251,255,8,49,74,0,136,160,84,0,169,144,88, -0,170,144,251,255,43,49,38,72,43,1,37,80,73,1,84,0,171,160,150,253,0,16, -88,0,170,160,148,253,207,21,0,0,0,0,74,0,136,144,0,0,0,0,4,0,8,53,74,0, -136,160,84,0,169,144,88,0,170,144,4,0,43,53,38,72,43,1,37,80,73,1,84,0, -171,160,88,0,170,160,0,8,137,49,134,253,32,17,0,0,0,0,0,16,231,52,0,128, -19,60,130,253,0,16,84,67,115,38,194,81,3,0,60,0,74,49,1,160,8,60,33,64, -10,1,32,162,8,141,0,0,0,0,1,0,8,37,1,160,1,60,33,8,42,0,32,162,40,172,0, -16,106,48,14,0,64,17,0,0,0,0,1,0,139,49,114,253,96,21,0,0,0,0,2,0,138,49, -3,0,64,21,0,0,0,0,23,0,0,16,0,16,3,36,79,0,168,144,0,0,0,0,1,0,8,53,104, -253,0,16,79,0,168,160,4,0,136,49,101,253,0,21,0,0,0,0,0,2,106,48,12,0,64, -17,0,0,0,0,255,253,99,48,79,0,168,144,0,0,0,0,128,0,8,53,79,0,168,160,255, -0,11,36,42,8,107,0,86,253,32,20,0,0,0,0,77,253,0,16,0,0,0,0,8,0,136,49, -3,0,0,21,0,0,0,0,79,253,0,16,0,0,32,161,255,0,8,36,0,0,40,161,1,0,181,38, -36,168,183,2,0,0,8,36,0,128,137,49,2,0,32,17,0,0,0,0,2,66,3,0,33,72,149, -2,0,0,40,161,1,0,181,38,36,168,183,2,33,72,149,2,63,253,0,16,0,0,35,161, -36,0,134,140,37,40,145,0,120,0,200,144,0,0,0,0,33,72,0,1,80,0,8,49,32,0, -41,49,128,72,9,0,37,64,9,1,112,0,201,144,0,0,0,0,66,72,9,0,32,0,41,49,32, -0,41,57,37,64,9,1,84,0,169,144,0,0,0,0,38,64,9,1,240,0,8,49,38,72,40,1, -84,0,169,160,86,0,169,144,0,0,0,0,36,72,40,1,88,0,170,144,0,0,0,0,37,80, -73,1,8,0,224,3,88,0,170,160,21,0,30,36,0,163,1,60,16,0,62,172,0,0,30,36, -0,128,8,60,104,70,8,37,0,160,1,60,37,64,1,1,8,0,0,1,0,0,0,0,0,96,4,64,0, -0,0,0,1,0,5,60,0,96,133,64,0,0,0,0,0,0,0,0,0,160,9,60,1,0,1,60,35,64,33, -1,3,0,0,161,4,0,8,37,253,255,9,21,0,0,0,0,3,0,5,60,0,96,133,64,0,0,0,0, -0,0,0,0,0,160,9,60,1,0,1,60,35,64,33,1,3,0,0,161,4,0,8,37,253,255,9,21, -0,0,0,0,0,0,0,0,0,0,0,0,0,96,132,64,0,0,0,0,0,0,0,0,0,16,4,64,255,255,8, -60,255,63,8,53,36,32,136,0,0,16,132,64,1,128,8,60,32,154,8,37,1,128,9,60, -224,169,41,37,252,255,1,36,36,72,33,1,252,255,1,36,36,64,1,1,0,0,0,173, -4,0,8,37,253,255,9,21,0,0,0,0,8,0,224,3,0,0,0,0,0,96,2,64,255,255,1,60, -254,0,33,52,37,32,129,0,36,64,68,0,0,96,136,64,1,255,66,48,8,0,224,3,0, -0,0,0,0,96,2,64,0,0,0,0,38,64,68,0,1,255,8,49,38,64,2,1,0,96,136,64,8,0, -224,3,0,0,0,0,0,96,8,64,0,0,0,0,254,255,1,36,36,72,1,1,0,96,137,64,0,104, -2,64,0,3,132,48,37,24,68,0,0,104,131,64,0,96,136,64,36,16,68,0,8,0,224, -3,0,0,0,0,0,96,8,64,0,3,132,48,254,255,1,36,36,72,1,1,0,96,137,64,0,104, -2,64,39,24,128,0,36,24,98,0,0,104,131,64,0,96,136,64,36,16,68,0,8,0,224, -3,0,0,0,0,64,16,8,60,0,96,136,64,192,191,8,60,8,0,0,1,0,0,0,0,0,96,8,64, -0,0,0,0,255,255,9,60,254,0,41,53,0,0,0,0,36,64,9,1,0,0,0,0,37,64,4,1,0, -0,0,0,0,96,136,64,0,0,0,0,8,0,224,3,0,0,0,0,0,0,0,0,224,255,189,39,16,0, -176,175,33,128,128,0,20,0,177,175,33,136,192,0,30,0,162,44,28,0,191,175, -224,0,64,16,24,0,178,175,128,16,5,0,1,128,1,60,33,8,34,0,128,142,34,140, -0,0,0,0,8,0,64,0,0,0,0,0,0,32,3,60,37,24,3,2,26,0,17,166,18,0,98,148,20, -0,99,148,22,0,4,150,35,16,67,0,36,16,68,0,43,16,81,0,209,0,64,16,1,0,2, -36,150,18,0,8,0,0,0,0,0,32,3,60,37,24,3,2,28,0,17,166,18,0,98,148,20,0, -99,148,22,0,4,150,35,16,67,0,36,16,68,0,43,16,34,2,196,0,64,16,1,0,2,36, -146,18,0,8,0,0,0,0,176,145,132,143,202,17,0,12,0,0,0,0,33,144,64,0,0,32, -2,60,37,56,2,2,10,0,227,148,12,0,230,148,14,0,5,150,255,255,99,48,255,255, -198,48,35,32,113,0,36,32,133,0,35,16,38,2,36,16,69,0,33,32,130,0,35,24, -102,0,36,24,101,0,42,24,100,0,129,0,96,20,0,0,0,0,199,18,0,8,12,0,241,164, -176,145,132,143,202,17,0,12,0,0,0,0,74,0,3,146,0,0,0,0,4,0,99,52,74,0,3, -162,0,32,3,60,37,24,3,2,84,0,100,144,88,0,102,144,255,0,135,48,100,18,0, -8,4,0,228,52,176,145,132,143,202,17,0,12,0,0,0,0,74,0,3,146,0,0,0,0,243, -0,99,48,74,0,3,162,0,32,3,60,37,24,3,2,84,0,100,144,88,0,102,144,255,0, -135,48,251,0,228,48,84,0,100,160,33,32,64,0,84,0,101,144,86,0,98,144,38, -40,167,0,37,48,197,0,36,16,70,0,211,17,0,12,88,0,98,160,243,18,0,8,1,0, -2,36,0,32,2,60,37,16,2,2,2,26,17,0,90,0,81,160,91,0,67,160,243,18,0,8,1, -0,2,36,2,0,32,22,33,40,32,2,25,0,5,36,119,31,0,12,33,32,0,2,243,18,0,8, -1,0,2,36,33,32,0,2,104,0,133,144,2,18,17,0,39,16,2,0,36,40,162,0,255,0, -34,50,165,31,0,12,37,40,162,0,243,18,0,8,1,0,2,36,33,32,0,2,21,31,0,12, -33,40,32,2,243,18,0,8,1,0,2,36,2,18,17,0,92,0,17,162,242,18,0,8,93,0,2, -162,242,18,0,8,24,0,17,166,82,29,0,12,33,32,0,2,243,18,0,8,1,0,2,36,135, -29,0,12,33,32,0,2,243,18,0,8,1,0,2,36,176,145,132,143,202,17,0,12,0,0,0, -0,33,144,64,0,21,32,0,12,33,32,0,2,199,18,0,8,0,0,0,0,33,32,0,2,76,31,0, -12,33,40,32,2,243,18,0,8,1,0,2,36,33,32,0,2,95,0,133,144,2,18,17,0,39,16, -2,0,36,40,162,0,255,0,34,50,222,31,0,12,37,40,162,0,243,18,0,8,1,0,2,36, -33,32,0,2,187,29,0,12,33,40,32,2,243,18,0,8,1,0,2,36,176,145,132,143,202, -17,0,12,0,0,0,0,33,144,64,0,33,16,32,2,94,0,2,162,255,0,66,48,5,0,64,16, -0,0,0,0,80,0,2,150,0,0,0,0,198,18,0,8,0,32,66,52,80,0,2,150,0,0,0,0,255, -215,66,48,80,0,2,166,211,17,0,12,33,32,64,2,243,18,0,8,1,0,2,36,101,0,2, -146,0,0,0,0,64,24,2,0,33,24,98,0,0,25,3,0,1,128,2,60,33,16,67,0,104,163, -66,140,0,0,0,0,246,255,66,36,2,0,66,44,28,0,64,16,33,16,0,0,13,0,32,22, -1,161,5,60,1,161,4,60,8,0,132,52,72,0,3,146,1,0,2,36,4,16,98,0,116,148, -131,147,39,16,2,0,36,16,67,0,116,148,130,163,0,0,130,160,243,18,0,8,1,0, -2,36,8,0,165,52,1,0,2,36,72,0,3,146,116,148,132,147,4,16,98,0,37,16,68, -0,116,148,130,163,0,0,162,160,243,18,0,8,1,0,2,36,243,18,0,8,33,16,0,0, -1,0,2,36,28,0,191,143,24,0,178,143,20,0,177,143,16,0,176,143,8,0,224,3, -32,0,189,39,224,255,189,39,16,0,176,175,33,128,128,0,28,0,191,175,24,0, -178,175,20,0,177,175,72,0,3,146,0,0,0,0,8,0,98,44,5,0,64,16,33,136,192, -0,8,18,0,12,0,0,0,0,192,19,0,8,0,0,0,0,8,0,2,36,182,0,98,20,1,0,2,36,101, -0,3,146,0,0,0,0,64,16,3,0,33,16,67,0,0,17,2,0,1,128,3,60,33,24,98,0,104, -163,99,140,4,0,2,36,171,0,98,20,1,0,2,36,23,0,162,44,165,0,64,16,128,16, -5,0,1,128,1,60,33,8,34,0,248,142,34,140,0,0,0,0,8,0,64,0,0,0,0,0,0,32,3, -60,37,24,3,2,26,0,17,166,18,0,98,148,20,0,99,148,22,0,4,150,35,16,67,0, -36,16,68,0,43,16,81,0,151,0,64,16,1,0,2,36,136,19,0,8,0,0,0,0,0,32,3,60, -37,24,3,2,28,0,17,166,18,0,98,148,20,0,99,148,22,0,4,150,35,16,67,0,36, -16,68,0,43,16,34,2,138,0,64,16,1,0,2,36,132,19,0,8,0,0,0,0,176,145,132, -143,202,17,0,12,0,0,0,0,33,144,64,0,0,32,2,60,37,56,2,2,10,0,227,148,12, -0,230,148,14,0,5,150,255,255,99,48,255,255,198,48,35,32,113,0,36,32,133, -0,35,16,38,2,36,16,69,0,33,32,130,0,35,24,102,0,36,24,101,0,42,24,100,0, -108,0,96,20,0,0,0,0,185,19,0,8,12,0,241,164,176,145,132,143,202,17,0,12, -0,0,0,0,74,0,3,146,33,32,64,0,93,19,0,8,4,0,99,52,176,145,132,143,202,17, -0,12,0,0,0,0,74,0,3,146,33,32,64,0,243,0,99,48,211,17,0,12,74,0,3,162,192, -19,0,8,1,0,2,36,0,32,2,60,37,16,2,2,2,26,17,0,90,0,81,160,91,0,67,160,192, -19,0,8,1,0,2,36,2,0,32,22,33,40,32,2,25,0,5,36,36,33,0,12,33,32,0,2,192, -19,0,8,1,0,2,36,33,32,0,2,104,0,133,144,2,18,17,0,39,16,2,0,36,40,162,0, -255,0,34,50,94,34,0,12,37,40,162,0,192,19,0,8,1,0,2,36,33,32,0,2,243,33, -0,12,33,40,32,2,192,19,0,8,1,0,2,36,2,18,17,0,92,0,17,162,191,19,0,8,93, -0,2,162,191,19,0,8,24,0,17,166,38,33,0,12,33,32,0,2,192,19,0,8,1,0,2,36, -75,33,0,12,33,32,0,2,192,19,0,8,1,0,2,36,176,145,132,143,202,17,0,12,0, -0,0,0,33,144,64,0,110,34,0,12,33,32,0,2,185,19,0,8,0,0,0,0,33,32,0,2,42, -34,0,12,33,40,32,2,192,19,0,8,1,0,2,36,33,32,0,2,95,0,133,144,2,18,17,0, -39,16,2,0,36,40,162,0,255,0,34,50,111,33,0,12,37,40,162,0,192,19,0,8,1, -0,2,36,33,32,0,2,3,34,0,12,33,40,32,2,192,19,0,8,1,0,2,36,176,145,132,143, -202,17,0,12,0,0,0,0,33,144,64,0,33,16,32,2,94,0,2,162,255,0,66,48,5,0,64, -16,0,0,0,0,80,0,2,150,0,0,0,0,184,19,0,8,0,32,66,52,80,0,2,150,0,0,0,0, -255,215,66,48,80,0,2,166,211,17,0,12,33,32,64,2,192,19,0,8,1,0,2,36,192, -19,0,8,33,16,0,0,1,0,2,36,28,0,191,143,24,0,178,143,20,0,177,143,16,0,176, -143,8,0,224,3,32,0,189,39,232,255,189,39,1,0,2,36,16,0,191,175,2,0,163, -128,4,0,165,140,0,0,0,0,5,0,98,16,3,0,2,36,7,0,98,16,33,16,0,0,218,19,0, -8,0,0,0,0,136,30,0,12,0,0,0,0,218,19,0,8,1,0,2,36,120,0,130,140,0,0,0,0, -36,0,69,160,1,0,2,36,16,0,191,143,24,0,189,39,8,0,224,3,0,0,0,0,200,255, -189,39,0,163,2,60,16,13,66,52,52,0,191,175,48,0,182,175,44,0,181,175,40, -0,180,175,36,0,179,175,32,0,178,175,28,0,177,175,24,0,176,175,0,0,67,148, -2,0,66,148,0,0,0,0,252,3,82,48,252,3,117,48,66,0,178,18,0,163,17,60,24, -13,49,54,0,163,20,60,0,8,148,54,0,163,22,60,16,13,214,54,0,163,2,60,0,4, -66,52,37,128,66,2,3,0,2,138,0,0,2,154,0,0,0,0,19,0,162,171,16,0,162,187, -0,131,4,60,0,16,132,52,17,0,166,147,16,0,163,147,192,17,6,0,33,32,68,0, -31,0,101,48,31,0,2,36,5,0,162,20,8,0,19,36,198,19,0,12,33,40,0,2,27,20, -0,8,0,0,0,0,164,147,130,143,0,0,0,0,42,16,194,0,14,0,64,16,4,0,19,36,101, -0,130,144,18,0,166,151,64,24,2,0,33,24,98,0,0,25,3,0,1,128,2,60,33,16,67, -0,80,163,66,140,0,0,0,0,9,248,64,0,0,0,0,0,17,0,64,20,33,16,83,2,0,0,34, -150,2,0,35,150,252,3,72,48,37,16,20,1,3,0,4,138,0,0,4,154,0,0,0,0,3,0,68, -168,0,0,68,184,4,0,2,37,252,3,72,48,252,3,99,48,3,0,3,17,33,16,83,2,0,0, -40,166,33,16,83,2,252,3,82,48,2,0,210,166,198,255,178,22,0,163,2,60,52, -0,191,143,48,0,182,143,44,0,181,143,40,0,180,143,36,0,179,143,32,0,178, -143,28,0,177,143,24,0,176,143,8,0,224,3,56,0,189,39,192,255,189,39,44,0, -181,175,0,131,21,60,156,148,132,143,0,16,181,54,48,0,182,175,33,176,0,0, -60,0,191,175,56,0,190,175,52,0,183,175,40,0,180,175,36,0,179,175,32,0,178, -175,28,0,177,175,211,17,0,12,24,0,176,175,0,163,2,60,16,13,66,52,2,0,66, -148,164,147,131,143,0,0,0,0,56,0,96,24,255,255,83,48,0,163,20,60,16,13, -148,54,1,0,30,36,0,128,23,60,28,54,247,38,0,131,16,60,120,16,16,54,0,32, -6,60,37,24,166,2,10,0,98,148,0,0,0,0,255,255,82,48,12,0,98,148,0,0,131, -150,0,0,0,0,8,0,115,16,255,255,81,48,222,19,0,12,0,0,0,0,2,0,130,150,0, -0,131,150,255,255,83,48,250,255,115,20,0,0,0,0,23,0,81,18,0,0,0,0,216,255, -2,150,0,0,0,0,64,0,66,48,18,0,64,20,0,0,0,0,176,145,132,143,202,17,0,12, -0,0,0,0,216,255,3,150,0,0,4,142,211,255,30,162,140,255,23,174,64,0,99,52, -216,255,3,166,36,0,133,144,0,0,0,0,3,0,160,16,33,136,64,0,165,31,0,12,33, -32,160,2,211,17,0,12,33,32,32,2,1,0,214,38,128,0,16,38,164,147,130,143, -0,0,0,0,42,16,194,2,209,255,64,20,128,0,181,38,0,163,4,60,40,12,132,148, -253,26,0,12,0,0,0,0,60,0,191,143,56,0,190,143,52,0,183,143,48,0,182,143, -44,0,181,143,40,0,180,143,36,0,179,143,32,0,178,143,28,0,177,143,24,0,176, -143,8,0,224,3,64,0,189,39,156,148,132,143,160,255,189,39,92,0,191,175,88, -0,190,175,84,0,183,175,80,0,182,175,76,0,181,175,72,0,180,175,68,0,179, -175,64,0,178,175,60,0,177,175,211,17,0,12,56,0,176,175,0,163,3,60,48,12, -99,52,0,0,98,144,0,0,0,0,8,0,64,16,0,163,2,60,2,0,98,144,0,0,0,0,4,0,64, -20,0,163,2,60,64,26,0,12,0,0,0,0,0,163,2,60,16,13,66,52,0,131,22,60,0,16, -214,54,2,0,66,148,172,145,135,143,255,255,66,48,24,0,162,175,164,147,130, -143,33,184,0,0,190,0,64,24,16,0,167,175,0,163,7,60,16,13,231,52,48,0,167, -175,0,163,7,60,24,13,231,52,0,131,20,60,22,16,148,54,176,147,158,39,32, -0,167,175,0,32,2,60,37,128,194,2,10,0,2,150,48,0,167,143,255,255,82,48, -12,0,2,150,0,0,227,148,24,0,167,143,0,0,0,0,10,0,103,16,255,255,81,48,222, -19,0,12,0,0,0,0,48,0,167,143,0,0,0,0,2,0,226,148,0,0,227,148,255,255,66, -48,248,255,98,20,24,0,162,175,85,0,2,146,79,0,3,146,111,0,66,52,28,0,81, -18,36,152,98,0,58,0,130,150,0,0,0,0,64,0,66,48,21,0,64,20,0,0,0,0,176,145, -132,143,202,17,0,12,0,0,0,0,1,0,3,36,53,0,131,162,0,128,3,60,28,54,99,36, -238,255,131,174,58,0,131,150,98,0,132,142,64,0,99,52,58,0,131,166,36,0, -133,144,0,0,0,0,3,0,160,16,33,168,64,0,165,31,0,12,33,32,192,2,211,17,0, -12,33,32,160,2,16,0,81,22,0,0,0,0,98,0,131,142,84,0,2,146,36,0,101,144, -0,0,0,0,36,16,162,0,3,0,64,16,33,32,192,2,165,31,0,12,0,42,5,0,76,0,2,146, -0,0,0,0,3,0,64,16,0,0,0,0,4,0,115,54,76,0,0,162,77,0,2,146,0,0,0,0,9,0, -64,16,35,16,81,2,248,255,132,150,2,0,131,150,36,16,68,0,42,24,98,0,3,0, -96,20,0,0,0,0,2,0,115,54,77,0,0,162,18,0,2,150,0,0,0,0,255,255,82,48,20, -0,2,150,78,0,3,146,0,0,0,0,27,0,96,16,255,255,81,48,25,0,81,18,35,24,81, -2,0,0,130,150,0,0,0,0,36,24,98,0,66,16,2,0,42,16,67,0,13,0,64,20,0,0,0, -0,32,0,2,150,16,0,167,143,34,0,3,150,35,16,226,0,255,255,66,48,43,16,67, -0,5,0,64,16,0,0,0,0,0,0,194,151,0,0,0,0,6,0,66,22,0,0,0,0,8,0,115,54,78, -0,0,162,16,0,167,151,0,0,0,0,32,0,7,166,176,145,132,143,0,0,0,0,202,17, -0,12,0,0,210,167,33,168,64,0,84,0,4,146,87,0,3,146,86,0,2,146,38,32,131, -0,88,0,3,146,36,16,68,0,37,24,98,0,2,0,96,16,0,0,0,0,32,0,115,54,38,0,96, -18,0,163,4,60,32,0,167,143,0,8,132,52,0,0,226,148,2,0,227,148,252,3,82, -48,252,3,113,48,37,40,68,2,4,0,66,38,252,3,82,48,6,0,81,22,0,0,0,0,79,0, -2,146,0,0,0,0,37,16,83,0,113,21,0,8,79,0,2,162,0,0,183,160,1,0,179,160, -87,0,2,146,0,0,0,0,255,0,66,48,3,0,162,160,84,0,3,146,88,0,4,146,88,0,0, -162,79,0,0,162,38,24,98,0,37,32,131,0,38,16,68,0,2,0,162,160,2,0,162,144, -0,0,0,0,87,0,2,162,32,0,167,143,0,0,0,0,113,21,0,8,0,0,242,164,84,0,2,146, -0,0,0,0,87,0,2,162,211,17,0,12,33,32,160,2,2,0,222,39,1,0,247,38,128,0, -148,38,164,147,130,143,0,0,0,0,42,16,226,2,77,255,64,20,128,0,214,38,0, -163,16,60,4,14,16,54,0,0,2,150,0,0,0,0,34,0,64,16,0,0,0,0,176,146,130,143, -0,0,0,0,255,255,66,36,176,146,130,175,28,0,64,28,0,163,2,60,24,13,66,52, -0,0,67,148,2,0,66,148,0,0,0,0,19,0,98,16,0,0,0,0,176,145,132,143,202,17, -0,12,0,0,0,0,0,161,6,60,0,128,198,52,0,163,4,60,160,147,133,151,6,14,132, -52,1,0,163,52,0,0,195,164,0,0,131,148,0,0,0,0,1,0,99,36,0,0,131,164,0,0, -131,148,33,32,64,0,211,17,0,12,0,0,197,164,0,0,2,150,0,0,0,0,176,146,130, -175,0,163,5,60,38,12,165,148,16,0,167,143,208,147,132,39,211,26,0,12,33, -40,229,0,0,163,5,60,40,12,165,148,16,0,167,143,128,148,132,39,211,26,0, -12,33,40,229,0,92,0,191,143,88,0,190,143,84,0,183,143,80,0,182,143,76,0, -181,143,72,0,180,143,68,0,179,143,64,0,178,143,60,0,177,143,56,0,176,143, -8,0,224,3,96,0,189,39,176,255,189,39,0,131,4,60,0,16,132,52,0,131,5,60, -0,20,165,52,76,0,191,175,72,0,190,175,68,0,183,175,64,0,182,175,60,0,181, -175,56,0,180,175,52,0,179,175,48,0,178,175,44,0,177,175,136,24,0,12,40, -0,176,175,0,163,2,60,128,1,66,52,0,131,20,60,0,16,148,54,224,146,150,39, -33,152,0,0,33,168,0,0,0,128,23,60,80,103,247,38,33,240,0,0,1,128,16,60, -100,163,16,38,16,0,160,175,16,0,69,140,0,160,2,60,64,146,128,163,33,40, -162,0,192,254,164,36,232,147,133,175,232,147,132,175,136,24,0,12,0,0,0, -0,232,147,131,143,40,0,2,36,0,163,1,60,66,14,34,164,0,93,2,60,152,148,131, -175,33,24,98,0,152,148,130,151,2,25,3,0,0,163,1,60,68,14,35,164,15,0,66, -48,0,163,1,60,70,14,34,164,128,19,21,0,1,161,3,60,33,136,67,0,255,0,2,36, -0,0,34,162,243,1,2,36,255,255,66,36,255,255,8,36,255,255,72,20,255,255, -66,36,0,0,34,146,0,0,0,0,130,144,2,0,246,255,66,38,2,0,66,44,6,0,64,16, -1,161,3,60,8,0,99,52,0,0,98,144,0,0,0,0,116,148,130,163,0,0,98,160,255, -255,67,38,28,0,98,44,110,0,64,16,128,16,3,0,1,128,1,60,33,8,34,0,88,143, -34,140,0,0,0,0,8,0,64,0,0,0,0,0,16,0,2,36,39,22,0,8,0,0,2,174,99,0,160, -22,0,0,0,0,23,22,0,8,1,0,115,38,95,0,160,22,0,0,0,0,8,0,2,36,39,22,0,8, -0,0,2,174,90,0,160,22,0,0,0,0,32,22,0,8,1,0,115,38,86,0,160,22,0,0,0,0, -4,0,2,36,39,22,0,8,0,0,2,174,81,0,160,22,2,0,8,36,0,0,8,174,1,0,115,38, -214,25,0,12,33,32,160,2,16,0,168,143,64,146,131,147,33,64,2,1,0,128,2,60, -32,72,66,36,16,0,168,175,0,0,212,174,236,255,2,174,1,128,2,60,84,128,66, -36,244,255,2,174,1,128,2,60,240,131,66,36,248,255,2,174,1,128,2,60,36,130, -66,36,8,0,2,174,1,0,2,36,4,16,162,2,37,24,98,0,224,255,17,174,228,255,23, -174,232,255,23,174,240,255,23,174,98,22,0,8,4,0,18,174,80,146,132,39,33, -32,196,3,1,0,5,36,1,128,6,60,76,137,198,36,157,26,0,12,8,0,135,38,9,0,2, -36,0,0,2,174,0,128,2,60,228,75,66,36,0,0,212,174,236,255,2,174,1,128,2, -60,184,137,66,36,244,255,2,174,1,128,2,60,144,141,66,36,248,255,2,174,1, -128,2,60,28,140,66,36,8,0,2,174,1,0,2,36,64,146,131,147,4,16,162,2,224, -255,17,174,228,255,23,174,232,255,23,174,240,255,23,174,4,0,18,174,37,24, -98,0,64,146,131,163,2,0,8,36,12,0,40,162,0,0,4,142,164,147,130,143,192, -25,4,0,33,16,68,0,164,147,130,175,9,0,66,40,4,0,64,20,33,160,131,2,64,137, -132,39,36,12,0,12,194,4,5,36,48,0,16,38,112,148,130,143,48,0,214,38,1,0, -66,36,112,148,130,175,1,0,181,38,4,0,162,42,118,255,64,20,24,0,222,39,112, -148,130,143,16,0,168,143,0,0,0,0,11,0,2,17,7,0,3,60,0,8,99,52,104,1,2,36, -0,163,1,60,36,12,32,160,0,163,1,60,37,12,32,160,24,150,130,175,120,153, -131,175,162,22,0,8,0,0,0,0,12,0,104,18,7,0,2,60,0,8,66,52,1,0,3,36,0,163, -1,60,37,12,35,160,128,2,3,36,0,163,1,60,36,12,32,160,24,150,131,175,120, -153,130,175,162,22,0,8,0,0,0,0,14,0,5,60,0,16,165,52,0,162,4,60,12,0,132, -52,1,0,3,36,160,0,2,36,0,163,1,60,36,12,35,160,0,163,1,60,37,12,35,160, -24,150,130,175,120,153,133,175,0,0,131,160,224,146,150,39,0,131,19,60,0, -16,115,54,112,148,130,143,152,148,148,143,0,0,0,0,30,0,64,24,33,168,0,0, -1,128,18,60,100,163,82,38,0,0,66,142,0,0,0,0,18,0,64,24,33,136,0,0,120, -0,112,38,33,32,96,2,33,40,192,2,33,48,32,2,172,255,0,174,0,0,20,174,128, -0,16,38,128,0,115,38,248,255,66,142,0,0,0,0,9,248,64,0,40,0,148,38,0,0, -66,142,1,0,49,38,42,16,34,2,242,255,64,20,33,32,96,2,48,0,82,38,112,148, -130,143,1,0,181,38,42,16,162,2,230,255,64,20,48,0,214,38,164,147,130,143, -64,146,131,147,31,0,66,36,66,17,2,0,0,146,130,175,232,148,131,163,231,23, -0,12,0,0,0,0,232,147,133,143,1,128,4,60,146,24,0,12,224,169,132,36,33,136, -64,0,208,147,132,39,1,0,5,36,0,128,6,60,100,82,198,36,10,0,2,36,0,163,1, -60,38,12,34,164,2,0,2,36,0,163,1,60,40,12,34,164,157,26,0,12,33,56,0,0, -208,147,132,39,183,26,0,12,0,0,0,0,128,148,132,39,2,0,5,36,0,128,6,60,236, -80,198,36,157,26,0,12,33,56,0,0,128,148,132,39,183,26,0,12,0,0,0,0,0,163, -2,60,128,1,66,52,0,163,3,60,16,13,99,52,0,163,4,60,24,13,132,52,16,0,69, -140,0,4,2,36,252,3,6,36,0,0,96,164,2,0,96,164,4,0,98,164,6,0,102,164,164, -147,131,151,0,8,2,36,0,163,1,60,4,12,32,164,0,163,1,60,6,12,49,164,0,0, -128,164,2,0,128,164,4,0,130,164,6,0,134,164,130,42,5,0,0,163,1,60,2,12, -35,164,0,163,1,60,8,12,37,164,76,0,191,143,72,0,190,143,68,0,183,143,64, -0,182,143,60,0,181,143,56,0,180,143,52,0,179,143,48,0,178,143,44,0,177, -143,40,0,176,143,8,0,224,3,80,0,189,39,1,0,2,36,164,148,130,175,168,148, -130,143,1,8,3,36,180,145,131,175,1,8,67,52,176,145,131,175,160,148,131, -143,1,12,66,52,160,145,130,175,37,16,67,0,0,3,67,52,164,145,130,175,156, -148,131,175,172,148,130,175,8,0,224,3,0,0,0,0,232,255,189,39,16,0,191,175, -80,137,132,39,36,12,0,12,96,0,5,36,16,0,191,143,24,0,189,39,8,0,224,3,0, -0,0,0,232,255,189,39,16,0,191,175,80,137,132,39,36,12,0,12,107,0,5,36,16, -0,191,143,24,0,189,39,8,0,224,3,0,0,0,0,232,255,189,39,16,0,191,175,152, -35,0,12,0,0,0,0,255,3,6,60,255,255,198,52,0,128,4,60,0,48,132,36,1,128, -5,60,32,154,165,36,0,128,2,60,200,52,66,36,130,16,2,0,36,16,70,0,0,8,3, -60,37,16,67,0,0,128,1,60,0,0,34,172,0,128,2,60,224,50,66,36,130,16,2,0, -36,16,70,0,37,16,67,0,0,128,1,60,4,0,32,172,0,128,1,60,128,0,34,172,0,128, -1,60,156,23,0,12,132,0,32,172,255,255,3,36,5,0,67,16,0,161,2,60,80,137, -132,39,36,12,0,12,139,0,5,36,0,161,2,60,0,128,66,52,99,0,4,36,128,0,3,36, -160,147,131,175,128,0,3,36,0,0,67,164,255,255,132,36,255,255,129,4,255, -255,132,36,0,161,5,60,0,128,165,52,0,163,3,60,48,12,99,52,130,0,2,36,160, -147,130,175,130,0,2,36,0,0,162,164,0,0,96,160,232,17,0,12,0,3,4,36,20,23, -0,12,0,0,0,0,136,26,0,12,0,0,0,0,12,26,0,12,0,0,0,0,186,21,0,12,0,0,0,0, -192,27,0,12,0,0,0,0,66,28,0,12,0,0,0,0,20,23,0,12,0,0,0,0,176,148,132,39, -33,40,0,0,0,128,6,60,208,102,198,36,157,26,0,12,33,56,0,0,176,148,132,39, -183,26,0,12,0,0,0,0,79,0,2,36,0,163,1,60,32,13,34,160,0,163,1,60,0,12,34, -160,83,0,2,36,0,163,1,60,33,13,34,160,0,163,1,60,1,12,34,160,53,0,2,36, -0,163,1,60,64,14,34,160,65,0,2,36,0,163,1,60,41,27,0,12,65,14,34,160,16, -0,191,143,33,16,0,0,8,0,224,3,24,0,189,39,43,16,133,0,9,0,64,16,33,24,0, -0,0,0,130,140,4,0,132,36,33,16,98,0,43,24,67,0,33,24,67,0,43,16,133,0,249, -255,64,20,0,0,0,0,8,0,224,3,33,16,96,0,0,0,0,0,0,0,0,0,0,0,0,0,224,255, -189,39,20,0,177,175,33,136,0,0,16,0,176,175,33,128,0,0,255,0,5,36,1,0,4, -36,1,161,3,60,28,0,191,175,24,0,178,175,0,0,98,144,0,0,0,0,2,0,69,16,4, -16,4,2,37,136,34,2,1,0,16,38,4,0,2,42,248,255,64,20,0,64,99,36,232,148, -130,147,64,146,131,147,38,16,81,0,36,24,98,0,23,0,96,16,33,16,96,0,33,128, -0,0,255,0,82,48,7,16,18,2,1,0,66,48,13,0,64,16,0,0,0,0,232,148,130,147, -0,0,0,0,7,16,2,2,1,0,66,48,5,0,64,16,0,0,0,0,86,24,0,12,33,32,0,2,216,23, -0,8,1,0,16,38,3,24,0,12,33,32,0,2,1,0,16,38,4,0,2,42,238,255,64,20,7,16, -18,2,64,146,130,147,0,0,0,0,36,16,34,2,232,148,130,163,253,26,0,12,250, -0,4,36,28,0,191,143,24,0,178,143,20,0,177,143,16,0,176,143,8,0,224,3,32, -0,189,39,232,255,189,39,16,0,176,175,33,128,0,0,20,0,191,175,64,146,130, -147,0,0,0,0,7,16,2,2,1,0,66,48,3,0,64,16,0,0,0,0,3,24,0,12,33,32,0,2,1, -0,16,38,4,0,2,42,245,255,64,20,2,0,5,36,208,148,132,39,0,128,6,60,176,94, -198,36,157,26,0,12,33,56,0,0,208,148,132,39,183,26,0,12,0,0,0,0,20,0,191, -143,16,0,176,143,8,0,224,3,24,0,189,39,192,255,189,39,40,0,180,175,64,16, -4,0,33,16,68,0,0,17,2,0,224,146,131,39,24,0,176,175,33,128,67,0,56,0,191, -175,52,0,183,175,48,0,182,175,44,0,181,175,36,0,179,175,32,0,178,175,28, -0,177,175,36,0,2,142,0,0,18,142,0,0,0,0,53,0,64,16,33,160,0,0,4,0,23,36, -8,0,22,36,72,0,81,38,0,1,21,36,176,145,132,143,202,17,0,12,0,0,0,0,40,0, -3,142,0,0,0,0,9,0,119,20,33,152,64,0,0,0,34,146,0,0,0,0,5,0,86,20,0,0,0, -0,4,0,2,142,0,0,0,0,45,24,0,8,0,8,66,36,4,0,2,142,0,0,0,0,33,16,85,0,220, -255,34,174,44,0,2,142,0,0,0,0,9,248,64,0,33,32,64,2,211,17,0,12,33,32,96, -2,40,0,2,142,0,0,0,0,7,0,87,20,0,0,0,0,0,0,34,146,0,0,0,0,3,0,86,20,33, -32,64,2,66,24,0,8,33,40,0,0,48,29,0,12,33,32,64,2,33,32,64,2,33,40,64,0, -225,25,0,12,32,0,181,38,1,0,148,38,128,0,49,38,36,0,2,142,0,0,0,0,43,16, -130,2,209,255,64,20,128,0,82,38,56,0,191,143,52,0,183,143,48,0,182,143, -44,0,181,143,40,0,180,143,36,0,179,143,32,0,178,143,28,0,177,143,24,0,176, -143,8,0,224,3,64,0,189,39,208,255,189,39,0,163,5,60,33,12,165,52,28,0,177, -175,33,136,0,0,64,16,4,0,33,16,68,0,0,17,2,0,224,146,131,39,32,0,178,175, -33,144,67,0,1,0,3,36,4,24,131,0,40,0,191,175,36,0,179,175,24,0,176,175, -0,0,80,142,0,0,162,144,36,0,68,142,37,16,67,0,21,0,128,16,0,0,162,160,0, -32,19,60,33,32,0,2,225,25,0,12,7,0,5,36,176,145,132,143,0,0,0,0,202,17, -0,12,1,0,49,38,33,32,64,0,37,16,19,2,36,0,0,174,84,0,64,160,88,0,64,160, -211,17,0,12,128,0,16,38,36,0,66,142,0,0,0,0,43,16,34,2,239,255,64,20,33, -32,0,2,40,0,191,143,36,0,179,143,32,0,178,143,28,0,177,143,24,0,176,143, -8,0,224,3,48,0,189,39,0,0,0,0,43,16,133,0,6,0,64,16,0,0,0,0,0,0,128,172, -4,0,132,36,43,16,133,0,252,255,64,20,0,0,0,0,8,0,224,3,0,0,0,0,152,255, -189,39,255,31,3,60,0,255,99,52,255,0,132,36,36,32,131,0,0,163,2,60,37,32, -130,0,36,40,163,0,96,0,190,175,37,240,162,0,16,0,164,175,16,0,164,143,33, -40,192,3,100,0,191,175,92,0,183,175,88,0,182,175,84,0,181,175,80,0,180, -175,76,0,179,175,72,0,178,175,68,0,177,175,136,24,0,12,64,0,176,175,1,128, -17,60,64,163,49,38,192,0,34,38,32,0,160,175,24,0,34,18,24,0,160,175,4,0, -5,36,33,32,64,0,36,0,35,38,4,0,98,140,0,0,0,0,6,0,69,16,0,0,0,0,0,0,98, -140,24,0,169,143,0,0,0,0,194,24,0,8,33,72,34,1,32,0,169,143,0,0,0,0,1,0, -41,37,32,0,169,175,24,0,169,143,0,0,0,0,8,0,41,37,24,0,169,175,48,0,49, -38,237,255,36,22,48,0,99,36,16,0,22,36,255,31,9,60,255,255,41,53,40,0,169, -175,32,0,169,143,0,0,0,0,3,0,32,25,0,16,194,42,3,0,64,20,0,224,2,36,64, -16,22,0,35,16,2,0,36,160,194,3,0,16,194,42,2,0,64,20,0,16,19,36,33,152, -192,2,24,0,169,143,0,0,0,0,64,16,9,0,24,0,194,2,18,48,0,0,32,0,169,143, -0,0,0,0,24,0,105,2,16,0,169,143,0,0,0,0,35,16,137,2,35,16,70,0,18,24,0, -0,35,168,67,0,42,16,182,2,8,0,64,16,17,0,194,42,190,0,64,16,35,16,201,3, -96,137,132,39,36,12,0,12,179,0,5,36,164,25,0,8,0,0,0,0,1,128,17,60,64,163, -49,38,1,128,9,60,0,164,41,37,48,0,49,17,0,0,0,0,255,255,114,38,33,184,83, -2,192,0,38,38,40,0,34,142,4,0,9,36,38,0,73,20,0,0,0,0,0,0,34,142,0,0,0, -0,0,4,80,36,42,16,179,2,3,0,64,20,14,0,18,166,14,0,23,166,35,168,179,2, -14,0,2,150,0,0,0,0,1,0,66,36,35,160,130,2,2,17,20,0,8,0,2,166,60,0,20,174, -16,0,169,143,0,0,0,0,43,16,137,2,7,0,64,20,0,0,0,0,14,0,2,150,0,0,0,0,33, -16,130,2,43,16,94,0,6,0,64,20,0,0,0,0,96,137,132,39,208,0,5,36,36,12,0, -12,48,0,166,175,48,0,166,143,14,0,2,150,8,0,3,150,60,0,4,142,22,0,2,166, -16,0,3,166,56,0,4,174,48,0,49,38,213,255,38,22,0,0,0,0,33,152,0,0,255,255, -215,38,33,56,246,2,1,128,17,60,64,163,49,38,1,128,9,60,0,164,41,37,52,0, -49,17,0,0,0,0,192,49,19,0,192,0,40,38,36,0,50,38,4,0,66,142,4,0,9,36,3, -0,73,16,8,0,3,36,0,0,67,142,0,0,0,0,42,16,99,2,37,0,64,16,0,0,0,0,0,0,34, -142,0,0,0,0,33,128,70,0,42,16,182,2,3,0,64,20,22,0,23,166,22,0,7,166,35, -168,182,2,22,0,2,150,0,0,0,0,1,0,66,36,35,160,130,2,56,0,20,174,56,0,3, -142,2,17,20,0,16,0,2,166,16,0,169,143,0,0,0,0,43,16,105,0,7,0,64,20,0,0, -0,0,22,0,2,150,0,0,0,0,33,16,98,0,43,16,94,0,10,0,64,20,0,0,0,0,96,137, -132,39,251,0,5,36,48,0,166,175,52,0,167,175,36,12,0,12,56,0,168,175,56, -0,168,143,52,0,167,143,48,0,166,143,48,0,49,38,209,255,40,22,48,0,82,38, -1,0,115,38,16,0,98,42,196,255,64,20,0,0,0,0,1,128,17,60,64,163,49,38,1, -128,9,60,0,164,41,37,55,0,49,17,0,0,0,0,255,255,215,38,33,48,246,2,36,0, -50,38,4,0,66,142,4,0,9,36,2,0,73,16,8,0,19,36,0,0,83,142,0,0,48,142,39, -0,96,18,0,0,0,0,14,0,16,38,42,16,182,2,3,0,64,20,0,0,23,166,0,0,6,166,35, -168,182,2,0,0,2,150,42,0,3,142,1,0,66,36,35,160,130,2,2,17,20,0,250,255, -2,166,46,0,20,174,40,0,169,143,46,0,4,142,36,24,105,0,0,128,9,60,37,24, -105,0,42,0,3,174,16,0,169,143,0,0,0,0,43,16,137,0,7,0,64,20,0,0,0,0,0,0, -2,150,0,0,0,0,33,16,130,0,43,16,94,0,6,0,64,20,0,0,0,0,96,137,132,39,80, -1,5,36,36,12,0,12,48,0,166,175,48,0,166,143,255,255,115,38,220,255,96,22, -128,0,16,38,48,0,49,38,1,128,9,60,0,164,41,37,206,255,41,22,48,0,82,38, -64,176,22,0,1,64,194,42,39,255,64,20,0,0,0,0,16,0,169,143,0,0,0,0,35,16, -201,3,130,18,2,0,100,0,191,143,96,0,190,143,92,0,183,143,88,0,182,143,84, -0,181,143,80,0,180,143,76,0,179,143,72,0,178,143,68,0,177,143,64,0,176, -143,8,0,224,3,104,0,189,39,156,148,132,143,232,255,189,39,16,0,191,175, -211,17,0,12,0,0,0,0,253,26,0,12,50,0,4,36,240,148,132,143,248,148,130,143, -0,0,0,0,43,16,68,0,244,148,132,175,2,0,64,16,130,16,4,0,248,148,132,175, -248,148,131,143,35,16,130,0,240,148,130,175,8,0,96,16,0,19,4,0,27,0,67, -0,2,0,96,20,0,0,0,0,13,0,7,0,18,16,0,0,0,163,1,60,8,0,34,164,16,0,191,143, -24,0,189,39,8,0,224,3,0,0,0,0,0,0,0,0,8,0,224,3,33,16,0,0,1,161,2,60,0, -1,66,52,128,35,4,0,33,32,130,0,191,0,2,36,12,0,130,160,8,0,130,144,128, -0,3,36,12,0,131,160,8,0,224,3,1,0,66,44,0,131,8,60,0,16,8,53,33,56,0,0, -16,146,137,39,128,16,7,0,235,25,0,8,33,48,73,0,7,0,64,16,0,0,0,0,33,48, -96,0,0,0,195,140,0,0,0,0,43,16,104,0,249,255,64,16,43,16,100,0,7,0,100, -20,0,0,0,0,23,0,167,16,0,0,0,0,0,0,130,140,0,0,0,0,252,25,0,8,0,0,194,172, -1,0,231,36,7,0,226,40,235,255,64,20,128,16,7,0,128,16,5,0,16,146,131,39, -3,26,0,8,33,48,67,0,7,0,64,16,0,0,0,0,33,48,96,0,0,0,195,140,0,0,0,0,43, -16,104,0,249,255,64,16,43,16,100,0,0,0,131,172,0,0,196,172,8,0,224,3,0, -0,0,0,17,17,4,60,17,17,132,52,51,51,3,60,51,51,99,52,1,128,1,60,124,165, -35,172,164,137,131,143,0,128,2,60,92,53,66,36,1,128,1,60,100,165,34,172, -0,128,2,60,144,53,66,36,1,128,1,60,108,165,34,172,0,128,2,60,188,53,66, -36,1,128,1,60,116,165,34,172,0,149,130,39,16,146,130,175,1,128,2,60,104, -165,66,36,1,128,1,60,120,162,34,172,1,128,1,60,116,162,34,172,1,128,2,60, -112,165,66,36,1,128,1,60,136,162,34,172,1,128,1,60,132,162,34,172,1,128, -1,60,128,162,34,172,1,128,1,60,124,162,34,172,1,128,2,60,152,165,66,36, -0,149,128,175,1,128,1,60,104,165,32,172,1,128,1,60,112,165,32,172,1,128, -1,60,120,165,36,172,1,128,1,60,140,162,34,172,116,153,131,175,8,0,224,3, -0,0,0,0,0,0,0,0,232,255,189,39,0,163,6,60,48,12,198,52,16,0,191,175,0,0, -194,144,0,0,0,0,60,0,64,16,0,0,0,0,2,0,194,144,0,0,0,0,56,0,64,20,255,63, -2,60,255,255,66,52,4,0,195,140,0,128,4,60,36,24,98,0,8,0,194,148,0,0,0, -0,129,0,66,44,3,0,64,20,37,24,100,0,128,0,2,36,8,0,194,164,0,0,194,144, -0,0,0,0,255,0,68,48,2,0,2,36,17,0,130,16,3,0,130,40,5,0,64,16,1,0,2,36, -8,0,130,16,33,40,96,0,131,26,0,8,0,0,0,0,3,0,2,36,25,0,130,16,0,0,0,0,131, -26,0,8,0,0,0,0,0,163,3,60,8,0,194,148,0,0,0,0,112,26,0,8,58,12,99,52,0, -163,5,60,8,0,194,148,58,12,165,52,255,255,68,48,255,255,132,36,8,0,128, -4,0,163,2,60,0,0,162,144,1,0,165,36,255,255,132,36,0,0,98,160,251,255,129, -4,1,0,99,36,0,163,2,60,48,12,66,52,131,26,0,8,0,0,64,160,0,0,192,160,4, -0,194,140,0,0,0,0,9,248,64,0,0,0,0,0,16,0,191,143,24,0,189,39,8,0,224,3, -0,0,0,0,0,0,0,0,33,32,0,0,172,145,130,143,192,146,131,39,255,255,66,36, -32,149,130,175,1,0,132,36,0,0,99,172,4,0,99,172,4,0,130,40,251,255,64,20, -8,0,99,36,33,32,0,0,240,147,131,39,1,0,132,36,0,0,99,172,4,0,99,172,16, -0,130,40,251,255,64,20,8,0,99,36,8,0,224,3,0,0,0,0,216,255,189,39,16,0, -176,175,33,128,128,0,172,148,132,143,20,0,177,175,33,136,160,0,24,0,178, -175,33,144,192,0,28,0,179,175,32,0,191,175,202,17,0,12,33,152,224,0,33, -32,64,0,0,0,16,174,4,0,16,174,16,0,17,174,8,0,18,174,211,17,0,12,12,0,19, -174,32,0,191,143,28,0,179,143,24,0,178,143,20,0,177,143,16,0,176,143,8, -0,224,3,40,0,189,39,232,255,189,39,16,0,176,175,33,128,128,0,172,148,132, -143,20,0,191,175,202,17,0,12,0,0,0,0,172,145,133,143,4,0,4,142,0,0,3,142, -20,0,5,174,0,0,131,172,4,0,100,172,16,0,3,142,192,146,132,39,192,24,3,0, -33,24,100,0,4,0,101,140,33,32,64,0,0,0,176,172,4,0,5,174,0,0,3,174,211, -17,0,12,4,0,112,172,20,0,191,143,16,0,176,143,8,0,224,3,24,0,189,39,224, -255,189,39,16,0,176,175,33,128,128,0,172,148,132,143,20,0,177,175,24,0, -191,175,202,17,0,12,33,136,160,0,255,63,4,60,4,0,5,142,0,0,3,142,255,255, -132,52,0,0,163,172,4,0,101,172,172,145,131,143,33,40,64,0,35,16,113,0,43, -32,130,0,6,0,128,20,0,0,0,0,16,0,2,142,20,0,3,174,192,146,131,39,240,26, -0,8,192,16,2,0,20,0,17,174,15,0,34,50,192,16,2,0,240,147,131,39,33,24,67, -0,4,0,98,140,33,32,160,0,0,0,80,172,4,0,2,174,0,0,3,174,211,17,0,12,4,0, -112,172,24,0,191,143,20,0,177,143,16,0,176,143,8,0,224,3,32,0,189,39,232, -255,189,39,16,0,176,175,36,149,144,143,20,0,191,175,20,0,2,142,0,0,0,0, -33,16,68,0,172,148,132,143,0,0,0,0,202,17,0,12,20,0,2,174,255,63,5,60,4, -0,4,142,0,0,3,142,172,145,134,143,255,255,165,52,0,0,131,172,4,0,100,172, -20,0,3,142,33,32,64,0,35,16,195,0,43,40,162,0,6,0,160,20,0,0,0,0,16,0,2, -142,192,146,131,39,20,0,6,174,29,27,0,8,192,16,2,0,15,0,98,48,192,16,2, -0,240,147,131,39,33,24,67,0,4,0,98,140,0,0,0,0,0,0,80,172,4,0,2,174,0,0, -3,174,211,17,0,12,4,0,112,172,20,0,191,143,16,0,176,143,8,0,224,3,24,0, -189,39,216,255,189,39,24,0,178,175,0,163,18,60,16,13,82,54,32,0,180,175, -240,147,148,39,20,0,177,175,255,127,17,60,156,148,132,143,255,255,49,54, -28,0,179,175,192,146,147,39,36,0,191,175,211,17,0,12,16,0,176,175,0,0,67, -150,2,0,66,150,0,0,0,0,9,0,98,16,0,163,16,60,16,13,16,54,222,19,0,12,0, -0,0,0,0,0,3,150,2,0,2,150,0,0,0,0,250,255,98,20,0,0,0,0,172,148,132,143, -202,17,0,12,0,0,0,0,111,27,0,8,0,0,0,0,32,149,130,143,0,0,0,0,1,0,68,36, -15,0,130,48,192,16,2,0,33,48,84,0,0,0,195,140,32,149,132,175,28,0,102,16, -33,40,192,0,33,56,128,0,20,0,98,140,0,0,0,0,35,16,226,0,43,16,34,2,16,0, -64,20,0,0,0,0,0,0,98,140,0,0,0,0,0,0,162,172,4,0,69,172,16,0,98,140,0,0, -0,0,192,16,2,0,33,32,83,0,4,0,130,140,0,0,0,0,0,0,67,172,4,0,98,172,0,0, -100,172,107,27,0,8,4,0,131,172,33,40,96,0,0,0,163,140,0,0,0,0,231,255,102, -20,0,0,0,0,32,149,131,143,172,145,130,143,0,0,0,0,215,255,98,20,0,0,0,0, -192,146,130,143,192,146,132,39,28,0,68,20,0,0,0,0,1,128,2,60,40,163,66, -140,1,128,4,60,40,163,132,36,22,0,68,20,0,0,0,0,1,128,2,60,48,163,66,140, -1,128,4,60,48,163,132,36,16,0,68,20,0,0,0,0,1,128,2,60,56,163,66,140,1, -128,4,60,56,163,132,36,10,0,68,20,0,0,0,0,156,148,132,143,211,17,0,12,0, -0,0,0,240,148,130,143,0,0,0,0,1,0,66,36,240,148,130,175,56,27,0,8,0,0,0, -0,0,0,131,140,172,145,144,143,0,0,98,140,0,0,0,0,0,0,130,172,4,0,68,172, -12,0,100,140,8,0,98,140,36,149,131,175,0,0,99,172,9,248,64,0,4,0,99,172, -156,148,132,143,211,17,0,12,0,0,0,0,172,145,130,143,36,149,128,175,35,128, -80,0,50,0,4,46,2,0,128,20,33,16,0,2,49,0,2,36,33,24,0,2,48,149,134,39,128, -16,2,0,2,0,128,20,33,40,70,0,49,0,3,36,128,16,3,0,33,16,70,0,0,0,66,140, -0,0,0,0,1,0,66,36,56,27,0,8,0,0,162,172,36,0,191,143,32,0,180,143,28,0, -179,143,24,0,178,143,20,0,177,143,16,0,176,143,8,0,224,3,40,0,189,39,0, -0,0,0,0,0,0,0,224,255,189,39,0,163,3,60,32,12,99,144,1,0,2,36,28,0,191, -175,24,0,178,175,20,0,177,175,13,0,98,20,16,0,176,175,49,1,2,60,0,45,66, -52,0,161,5,60,40,0,165,52,3,0,4,60,255,255,132,52,0,161,3,60,4,150,130, -175,32,78,2,36,0,0,98,172,1,28,0,8,0,0,164,172,112,0,2,60,0,163,3,60,36, -12,99,144,0,128,66,52,4,150,130,175,2,0,96,16,225,0,2,60,4,150,130,175, -33,144,0,0,1,128,17,60,208,143,49,38,33,128,0,0,0,150,128,175,33,40,0,0, -33,32,32,2,1,0,165,36,0,0,131,148,2,0,130,144,0,161,1,60,33,8,35,0,0,0, -34,160,4,0,162,40,0,150,128,175,247,255,64,20,4,0,132,36,0,0,130,148,0, -161,1,60,33,8,34,0,0,0,34,144,0,0,0,0,64,0,66,48,8,0,64,16,100,0,2,42,4, -0,64,20,0,0,0,0,112,137,132,39,36,12,0,12,125,0,5,36,225,27,0,8,1,0,16, -38,5,0,82,38,15,0,66,42,224,255,64,20,20,0,49,38,28,0,191,143,24,0,178, -143,20,0,177,143,16,0,176,143,8,0,224,3,32,0,189,39,0,0,0,0,0,163,2,60, -32,12,66,144,0,0,0,0,5,0,64,16,0,161,2,60,60,0,66,52,0,0,66,140,48,28,0, -8,0,0,0,0,0,161,6,60,128,0,2,36,12,0,194,160,0,150,128,175,8,0,197,144, -8,0,195,144,0,150,128,175,12,0,194,160,0,150,128,175,8,0,196,144,8,0,194, -144,0,0,0,0,0,18,2,0,37,16,130,0,0,26,3,0,37,40,163,0,35,16,162,0,255,255, -66,48,128,0,66,44,11,0,64,20,33,16,160,0,0,163,2,60,20,0,66,52,0,0,67,140, -0,0,0,0,1,0,99,36,0,0,67,172,0,0,66,140,0,0,0,0,19,28,0,8,128,0,2,36,8, -0,224,3,0,0,0,0,0,163,2,60,32,12,66,144,0,0,0,0,5,0,64,16,0,161,2,60,0, -0,68,172,16,150,132,175,64,28,0,8,0,0,0,0,0,161,3,60,3,18,4,0,0,0,100,160, -16,150,132,175,0,0,98,160,8,0,224,3,0,0,0,0,0,163,2,60,32,12,66,144,232, -255,189,39,11,0,64,16,16,0,191,175,248,20,3,60,4,150,130,143,137,181,99, -52,194,16,2,0,25,0,67,0,16,40,0,0,0,0,0,0,0,0,0,0,87,28,0,8,2,18,5,0,4, -150,131,143,183,209,2,60,89,23,66,52,25,0,98,0,16,40,0,0,130,19,5,0,176, -151,130,175,245,16,2,60,0,163,3,60,36,12,99,144,142,194,66,52,92,153,130, -175,2,0,96,16,255,63,2,60,255,31,2,60,255,255,66,52,20,150,130,175,235, -81,3,60,4,150,130,143,31,133,99,52,25,0,67,0,16,40,0,0,24,150,130,143,66, -25,5,0,24,0,98,0,18,32,0,0,227,56,2,60,57,142,66,52,25,0,130,0,84,153,131, -175,16,40,0,0,194,34,5,0,1,0,132,36,88,153,132,175,16,150,132,175,50,28, -0,12,0,0,0,0,16,0,191,143,24,0,189,39,8,0,224,3,0,0,0,0,224,255,189,39, -0,161,4,60,0,64,132,52,16,128,3,60,132,137,130,143,252,255,99,52,24,0,191, -175,20,0,177,175,16,0,176,175,0,0,128,164,4,0,66,36,36,24,67,0,252,0,66, -48,132,137,131,175,0,0,99,144,13,0,64,20,0,0,0,0,84,153,131,143,24,150, -130,143,0,0,0,0,24,0,98,0,18,24,0,0,227,56,2,60,57,142,66,52,25,0,98,0, -16,48,0,0,194,18,6,0,1,0,66,36,88,153,130,175,16,150,131,143,4,150,133, -143,64,17,3,0,35,16,67,0,128,16,2,0,33,16,67,0,80,153,131,143,192,16,2, -0,33,32,98,0,43,16,133,0,8,0,64,20,0,160,2,60,172,145,130,143,35,32,133, -0,1,0,66,36,172,145,130,175,43,16,133,0,250,255,64,16,0,160,2,60,0,0,66, -140,164,147,130,143,80,153,132,175,3,0,66,40,5,0,64,16,0,0,0,0,68,13,0, -12,0,163,16,60,27,29,0,8,16,12,16,54,8,28,0,12,0,0,0,0,68,13,0,12,33,128, -64,0,8,28,0,12,0,0,0,0,33,136,64,0,35,16,17,2,255,255,66,48,176,151,131, -143,88,153,133,143,33,16,67,0,0,33,2,0,28,150,131,143,20,150,130,143,35, -32,131,0,24,0,130,0,16,16,0,0,33,24,98,0,92,153,130,143,0,0,0,0,24,0,98, -0,16,32,0,0,43,16,133,0,28,150,131,175,100,153,132,175,2,0,64,16,0,0,0, -0,33,32,160,0,16,150,130,143,0,0,0,0,3,0,68,16,0,0,0,0,50,28,0,12,0,0,0, -0,128,137,130,143,0,0,0,0,63,0,64,16,0,0,0,0,96,153,130,143,0,0,0,0,29, -0,64,16,35,16,80,0,255,255,68,48,64,16,4,0,33,16,68,0,128,25,2,0,33,16, -67,0,128,16,2,0,33,16,68,0,128,16,2,0,33,16,68,0,4,150,131,143,64,17,2, -0,27,0,67,0,2,0,96,20,0,0,0,0,13,0,7,0,18,32,0,0,100,0,130,44,2,0,64,20, -0,0,0,0,99,0,4,36,1,160,2,60,128,166,66,36,128,24,4,0,33,24,98,0,0,0,98, -140,0,0,0,0,1,0,66,36,0,0,98,172,35,16,17,2,255,255,68,48,64,16,4,0,33, -16,68,0,128,25,2,0,33,16,67,0,128,16,2,0,33,16,68,0,128,16,2,0,33,16,68, -0,4,150,131,143,64,17,2,0,27,0,67,0,2,0,96,20,0,0,0,0,13,0,7,0,18,32,0, -0,96,153,144,175,100,0,130,44,2,0,64,20,0,0,0,0,99,0,4,36,1,160,2,60,32, -168,66,36,128,24,4,0,33,24,98,0,0,0,98,140,0,0,0,0,1,0,66,36,0,0,98,172, -0,163,16,60,16,12,16,54,0,0,3,150,0,0,0,0,11,0,96,16,1,0,2,36,5,0,98,20, -0,0,0,0,141,12,0,12,0,0,0,0,41,29,0,8,0,0,0,0,136,137,132,39,36,12,0,12, -203,1,5,36,0,0,0,166,24,0,191,143,20,0,177,143,16,0,176,143,8,0,224,3,32, -0,189,39,0,0,0,0,0,0,0,0,24,150,130,143,64,0,131,140,255,255,66,36,27,0, -67,0,2,0,96,20,0,0,0,0,13,0,7,0,18,16,0,0,12,0,5,36,0,163,3,60,37,12,99, -144,0,0,0,0,2,0,96,16,1,0,70,36,160,137,133,143,128,16,6,0,42,16,162,0, -6,0,64,20,0,0,0,0,72,0,130,144,0,0,0,0,3,0,66,48,80,29,0,8,3,0,66,36,64, -16,6,0,42,16,162,0,5,0,64,20,33,16,0,0,72,0,130,144,0,0,0,0,1,0,66,48,1, -0,66,36,8,0,224,3,0,0,0,0,224,255,189,39,16,0,176,175,33,128,128,0,24,0, -191,175,20,0,177,175,36,0,17,142,0,0,0,0,40,0,32,18,0,0,0,0,176,145,132, -143,202,17,0,12,0,0,0,0,80,0,3,150,33,48,64,0,1,0,98,48,30,0,64,20,1,0, -99,52,40,0,2,150,0,0,0,0,0,16,66,48,6,0,64,16,80,0,3,166,0,2,98,56,80,0, -2,166,0,128,2,60,28,54,66,36,4,0,2,174,0,32,4,60,37,32,4,2,95,0,2,146,104, -0,3,146,3,0,66,48,39,16,2,0,36,24,98,0,16,0,35,162,84,0,133,144,84,0,130, -144,38,40,163,0,3,0,165,48,38,16,69,0,84,0,130,160,86,0,130,144,88,0,131, -144,36,16,69,0,37,24,98,0,88,0,131,160,211,17,0,12,33,32,192,0,24,0,191, -143,20,0,177,143,16,0,176,143,8,0,224,3,32,0,189,39,224,255,189,39,16,0, -176,175,33,128,128,0,24,0,191,175,20,0,177,175,36,0,17,142,0,0,0,0,39,0, -32,18,0,0,0,0,176,145,132,143,202,17,0,12,0,0,0,0,80,0,3,150,33,48,64,0, -1,0,98,48,29,0,64,16,254,255,99,48,40,0,2,150,0,0,0,0,0,16,66,48,6,0,64, -16,80,0,3,166,0,2,98,56,80,0,2,166,0,128,2,60,28,54,66,36,4,0,2,174,0,32, -4,60,37,32,4,2,95,0,2,146,104,0,3,146,3,0,66,48,37,24,98,0,16,0,35,162, -84,0,133,144,84,0,130,144,38,40,163,0,3,0,165,48,38,16,69,0,84,0,130,160, -86,0,130,144,88,0,131,144,36,16,69,0,37,24,98,0,88,0,131,160,211,17,0,12, -33,32,192,0,24,0,191,143,20,0,177,143,16,0,176,143,8,0,224,3,32,0,189,39, -200,255,189,39,28,0,179,175,33,152,128,0,48,0,191,175,44,0,183,175,40,0, -182,175,36,0,181,175,32,0,180,175,24,0,178,175,20,0,177,175,16,0,176,175, -36,0,99,142,0,0,0,0,180,0,96,16,33,160,160,0,2,0,6,36,48,0,130,50,2,33, -2,0,5,0,135,36,1,0,2,36,4,16,226,0,255,255,87,36,40,0,98,150,0,0,0,0,32, -0,66,48,2,0,64,16,33,176,96,0,127,0,247,50,0,1,130,50,9,0,64,16,33,168, -128,0,0,2,130,50,2,0,64,20,8,0,181,54,16,0,181,54,0,16,130,50,2,0,64,16, -3,0,6,36,32,0,181,54,64,0,130,50,3,0,64,16,0,0,0,0,4,0,181,54,1,0,198,36, -44,0,98,150,0,0,0,0,38,16,130,2,15,4,66,48,4,0,64,16,0,0,0,0,120,0,98,142, -0,0,0,0,16,0,64,172,120,0,98,142,0,0,0,0,16,0,67,140,0,0,0,0,12,0,96,16, -15,0,130,50,120,153,130,143,0,0,0,0,27,0,67,0,2,0,96,20,0,0,0,0,13,0,7, -0,18,136,0,0,0,0,0,0,0,0,0,0,37,30,0,8,14,0,2,60,64,32,2,0,0,4,130,50,16, -0,64,16,0,0,0,0,101,0,99,146,0,0,0,0,64,16,3,0,33,16,67,0,0,17,2,0,1,128, -3,60,33,24,98,0,104,163,99,140,3,0,2,36,5,0,98,16,0,0,0,0,1,128,2,60,48, -144,66,36,23,30,0,8,33,32,130,0,1,128,2,60,16,144,66,36,33,32,130,0,120, -153,131,143,162,145,2,60,197,179,66,52,25,0,98,0,16,64,0,0,0,0,145,148, -130,20,8,0,24,0,34,2,18,136,0,0,0,0,0,0,0,0,0,0,2,0,32,22,14,0,2,60,1,0, -17,36,120,153,132,143,0,16,66,52,27,0,68,0,2,0,128,20,0,0,0,0,13,0,7,0, -18,32,0,0,64,0,101,142,0,0,0,0,27,0,69,0,2,0,160,20,0,0,0,0,13,0,7,0,18, -40,0,0,33,24,230,0,0,0,0,0,24,0,35,2,18,144,0,0,0,0,0,0,0,0,0,0,24,0,68, -2,18,144,0,0,0,0,0,0,0,0,0,0,26,0,82,0,2,0,64,22,0,0,0,0,13,0,7,0,255,255, -1,36,4,0,65,22,0,128,1,60,2,0,65,20,0,0,0,0,13,0,6,0,18,16,0,0,112,153, -131,143,0,0,0,0,35,24,101,0,164,137,133,143,33,24,98,0,176,137,130,143, -0,0,0,0,24,0,98,0,16,32,0,0,172,137,130,143,112,153,131,175,35,128,68,0, -42,16,176,0,2,0,64,16,0,0,0,0,33,128,160,0,168,137,131,143,0,0,0,0,42,16, -3,2,2,0,64,16,0,0,0,0,33,128,96,0,176,145,132,143,202,17,0,12,0,0,0,0,106, -0,99,150,44,0,116,166,98,0,119,162,64,0,114,174,116,153,144,175,0,255,99, -48,37,24,119,0,106,0,99,166,12,0,195,146,0,0,0,0,128,0,99,52,12,0,195,162, -127,0,3,36,4,0,195,162,3,26,17,0,0,0,209,162,4,0,195,162,12,0,195,146,33, -32,64,0,64,0,99,48,33,24,117,0,211,17,0,12,12,0,195,162,48,29,0,12,33,32, -96,2,33,32,96,2,225,25,0,12,33,40,64,0,48,0,191,143,44,0,183,143,40,0,182, -143,36,0,181,143,32,0,180,143,28,0,179,143,24,0,178,143,20,0,177,143,16, -0,176,143,8,0,224,3,56,0,189,39,216,255,189,39,32,0,180,175,33,160,128, -0,36,0,191,175,28,0,179,175,24,0,178,175,20,0,177,175,16,0,176,175,36,0, -147,142,0,0,0,0,122,0,96,18,0,0,0,0,44,0,131,150,0,0,0,0,48,0,98,48,3,33, -2,0,64,0,98,48,2,0,64,16,7,0,135,36,8,0,135,36,0,1,98,48,2,0,64,16,0,0, -0,0,1,0,231,36,120,153,134,143,0,0,0,0,43,16,197,0,2,0,64,16,0,0,0,0,33, -40,192,0,3,0,160,20,66,16,5,0,1,0,5,36,66,16,5,0,33,16,194,0,27,0,69,0, -2,0,160,20,0,0,0,0,13,0,7,0,18,136,0,0,240,255,2,52,42,16,81,0,2,0,64,16, -0,0,0,0,240,255,17,52,27,0,209,0,2,0,32,22,0,0,0,0,13,0,7,0,18,32,0,0,14, -0,2,60,0,16,66,52,27,0,70,0,2,0,192,20,0,0,0,0,13,0,7,0,18,40,0,0,120,0, -131,142,0,0,0,0,16,0,100,172,64,0,132,142,0,0,0,0,27,0,68,0,2,0,128,20, -0,0,0,0,13,0,7,0,18,32,0,0,0,0,0,0,0,0,0,0,24,0,39,2,18,144,0,0,0,0,0,0, -0,0,0,0,24,0,69,2,18,144,0,0,0,0,0,0,0,0,0,0,26,0,82,0,2,0,64,22,0,0,0, -0,13,0,7,0,255,255,1,36,4,0,65,22,0,128,1,60,2,0,65,20,0,0,0,0,13,0,6,0, -18,16,0,0,112,153,131,143,164,137,133,143,35,24,100,0,33,24,98,0,176,137, -130,143,0,0,0,0,24,0,98,0,16,32,0,0,172,137,130,143,112,153,131,175,35, -128,68,0,42,16,176,0,2,0,64,16,0,0,0,0,33,128,160,0,168,137,131,143,0,0, -0,0,42,16,3,2,2,0,64,16,0,0,0,0,33,128,96,0,176,145,132,143,202,17,0,12, -0,0,0,0,64,0,146,174,116,153,144,175,12,0,99,146,0,0,0,0,128,0,99,52,12, -0,99,162,127,0,3,36,4,0,99,162,3,26,17,0,0,0,113,162,4,0,99,162,12,0,99, -146,33,32,64,0,127,0,99,48,211,17,0,12,12,0,99,162,48,29,0,12,33,32,128, -2,33,32,128,2,225,25,0,12,33,40,64,0,36,0,191,143,32,0,180,143,28,0,179, -143,24,0,178,143,20,0,177,143,16,0,176,143,8,0,224,3,40,0,189,39,224,255, -189,39,16,0,176,175,33,128,128,0,176,145,132,143,20,0,177,175,24,0,191, -175,202,17,0,12,33,136,160,0,40,0,3,150,0,0,0,0,38,24,35,2,0,16,99,48,10, -0,96,16,33,32,64,0,80,0,3,150,0,0,0,0,1,0,98,48,5,0,64,16,0,2,98,52,80, -0,2,166,0,128,2,60,28,54,66,36,4,0,2,174,98,0,3,146,32,0,34,50,2,0,64,16, -16,0,34,50,127,0,99,48,2,0,64,16,0,26,99,52,0,4,99,52,80,0,2,150,106,0, -3,166,251,63,67,48,0,4,34,50,9,0,64,16,0,32,34,50,2,0,64,16,0,128,99,52, -0,64,99,52,0,8,34,50,4,0,64,16,255,239,2,36,68,31,0,8,4,0,99,52,255,231, -2,36,36,24,98,0,80,0,3,166,211,17,0,12,40,0,17,166,24,0,191,143,20,0,177, -143,16,0,176,143,8,0,224,3,32,0,189,39,224,255,189,39,16,0,176,175,33,128, -128,0,176,145,132,143,20,0,177,175,24,0,191,175,202,17,0,12,33,136,160, -0,33,32,64,0,127,255,2,36,36,16,34,2,11,0,64,16,0,0,0,0,80,0,2,150,0,0, -0,0,128,0,66,48,2,0,64,20,0,0,0,0,99,0,0,162,80,0,2,150,0,0,0,0,102,31, -0,8,128,0,66,52,80,0,2,150,0,0,0,0,127,255,66,48,80,0,2,166,0,128,2,60, -28,54,66,36,4,0,2,174,128,0,34,50,3,0,64,16,127,0,2,36,112,31,0,8,96,0, -2,162,96,0,0,162,211,17,0,12,42,0,17,166,24,0,191,143,20,0,177,143,16,0, -176,143,8,0,224,3,32,0,189,39,224,255,189,39,16,0,176,175,33,128,128,0, -176,145,132,143,20,0,177,175,24,0,191,175,202,17,0,12,33,136,160,0,33,32, -64,0,108,0,3,142,255,255,2,36,9,0,98,20,1,0,2,36,255,255,2,52,6,0,34,18, -1,0,2,36,80,0,2,150,108,0,0,174,255,254,66,48,158,31,0,8,80,0,2,166,75, -0,2,162,80,0,2,150,0,128,3,60,28,54,99,36,4,0,3,174,0,1,66,52,80,0,2,166, -255,255,2,52,7,0,34,18,192,16,17,0,33,16,81,0,108,0,3,142,128,18,2,0,33, -24,98,0,158,31,0,8,108,0,3,174,255,255,2,36,108,0,2,174,211,17,0,12,0,0, -0,0,24,0,191,143,20,0,177,143,16,0,176,143,8,0,224,3,32,0,189,39,224,255, -189,39,20,0,177,175,33,136,128,0,28,0,191,175,24,0,178,175,16,0,176,175, -36,0,34,142,0,0,0,0,42,0,64,16,33,128,160,0,33,144,64,0,16,0,2,50,3,0,64, -16,0,0,0,0,183,31,0,8,31,0,16,50,3,0,16,50,8,0,16,54,176,145,132,143,202, -17,0,12,0,0,0,0,80,0,35,150,33,32,64,0,1,0,99,48,7,0,96,16,104,0,48,162, -95,0,34,146,0,0,0,0,3,0,66,48,39,16,2,0,201,31,0,8,36,128,2,2,95,0,34,146, -0,0,0,0,3,0,66,48,37,128,2,2,0,32,5,60,37,40,37,2,16,0,80,162,84,0,166, -144,84,0,162,144,38,48,208,0,3,0,198,48,38,16,70,0,84,0,162,160,86,0,162, -144,88,0,163,144,36,16,70,0,37,24,98,0,211,17,0,12,88,0,163,160,28,0,191, -143,24,0,178,143,20,0,177,143,16,0,176,143,8,0,224,3,32,0,189,39,224,255, -189,39,20,0,177,175,33,136,128,0,28,0,191,175,24,0,178,175,16,0,176,175, -36,0,34,142,0,0,0,0,40,0,64,16,33,128,160,0,243,0,16,50,176,145,132,143, -0,0,0,0,202,17,0,12,33,144,64,0,74,0,35,146,240,0,4,50,95,0,48,162,73,0, -36,162,15,0,99,48,37,32,131,0,80,0,35,150,3,0,16,50,74,0,36,162,1,0,99, -48,5,0,96,16,33,32,64,0,104,0,35,146,39,16,16,0,0,32,0,8,36,128,67,0,104, -0,34,146,0,0,0,0,37,128,2,2,0,32,5,60,37,40,37,2,16,0,80,162,84,0,166,144, -84,0,162,144,38,48,208,0,3,0,198,48,38,16,70,0,84,0,162,160,86,0,162,144, -88,0,163,144,36,16,70,0,37,24,98,0,211,17,0,12,88,0,163,160,28,0,191,143, -24,0,178,143,20,0,177,143,16,0,176,143,8,0,224,3,32,0,189,39,224,255,189, -39,16,0,176,175,33,128,128,0,176,145,132,143,0,32,2,60,20,0,177,175,28, -0,191,175,24,0,178,175,36,0,18,142,0,0,0,0,202,17,0,12,37,136,2,2,255,255, -3,52,10,0,32,166,12,0,32,166,18,0,32,166,20,0,32,166,28,0,3,166,63,0,3, -36,64,0,5,142,33,32,64,0,24,0,0,166,26,0,0,166,40,0,0,166,42,0,0,166,12, -0,160,16,44,0,3,166,14,0,3,60,0,16,99,52,27,0,101,0,2,0,160,20,0,0,0,0, -13,0,7,0,18,24,0,0,112,153,130,143,0,0,0,0,35,16,67,0,112,153,130,175,240, -0,2,36,112,153,131,143,1,0,5,36,64,0,2,174,16,0,2,36,68,0,0,174,0,15,99, -36,112,153,131,175,255,0,3,36,75,0,0,162,76,0,37,162,77,0,37,162,78,0,37, -162,79,0,32,162,86,0,35,162,80,0,2,166,73,0,0,162,74,0,0,162,84,0,32,162, -87,0,32,162,88,0,32,162,89,0,32,162,90,0,32,162,91,0,32,162,98,0,3,162, -36,0,3,142,17,0,2,36,92,0,2,162,19,0,2,36,93,0,2,162,255,10,2,36,106,0, -2,166,0,128,2,60,28,54,66,36,4,0,2,174,0,128,2,60,48,63,66,36,116,0,2,174, -0,128,2,60,132,59,66,36,94,0,0,162,95,0,0,162,96,0,0,162,97,0,0,162,99, -0,0,162,104,0,0,162,108,0,0,174,17,0,96,16,52,0,2,174,128,0,2,36,12,0,66, -162,12,0,2,36,0,0,66,162,3,0,2,36,4,0,64,162,12,0,66,162,15,0,2,36,8,0, -69,162,8,0,66,162,8,0,2,36,16,0,66,162,8,0,66,146,0,0,66,146,20,0,66,146, -24,0,66,146,211,17,0,12,0,0,0,0,48,29,0,12,33,32,0,2,33,32,0,2,225,25,0, -12,33,40,64,0,28,0,191,143,24,0,178,143,20,0,177,143,16,0,176,143,8,0,224, -3,32,0,189,39,224,255,189,39,16,0,176,175,33,128,128,0,176,145,132,143, -24,0,191,175,20,0,177,175,36,0,17,142,202,17,0,12,0,0,0,0,44,0,3,150,68, -0,0,174,48,0,99,48,2,49,3,0,5,0,196,36,1,0,3,36,4,24,131,0,255,255,101, -36,40,0,3,150,33,32,64,0,32,0,99,48,2,0,96,16,98,0,5,162,127,0,165,48,106, -0,2,150,44,0,3,150,0,255,66,48,37,16,69,0,106,0,2,166,0,1,98,48,4,0,64, -16,0,2,98,48,2,0,64,20,8,0,198,52,16,0,198,52,44,0,3,150,0,0,0,0,64,0,98, -48,2,0,64,16,0,0,0,0,4,0,198,52,120,0,2,142,0,0,0,0,16,0,69,140,0,0,0,0, -13,0,160,16,15,0,98,48,194,31,5,0,33,24,163,0,120,153,130,143,67,24,3,0, -33,16,67,0,27,0,69,0,2,0,160,20,0,0,0,0,13,0,7,0,18,24,0,0,223,32,0,8,0, -0,0,0,64,40,2,0,0,4,98,48,16,0,64,16,0,0,0,0,101,0,3,146,0,0,0,0,64,16, -3,0,33,16,67,0,0,17,2,0,1,128,3,60,33,24,98,0,104,163,99,140,3,0,2,36,5, -0,98,16,0,0,0,0,1,128,2,60,48,144,66,36,217,32,0,8,33,24,162,0,1,128,2, -60,16,144,66,36,33,24,162,0,0,163,2,60,36,12,66,144,0,0,99,148,2,0,64,16, -0,0,0,0,64,24,3,0,2,0,96,28,127,0,2,36,1,0,3,36,4,0,34,162,3,18,3,0,0,0, -35,162,4,0,34,162,12,0,34,146,0,0,0,0,64,0,66,48,33,16,70,0,12,0,34,162, -1,0,2,36,8,0,34,162,15,0,2,36,8,0,34,162,8,0,2,36,16,0,34,162,8,0,34,146, -0,0,34,146,20,0,34,146,24,0,34,146,211,17,0,12,0,0,0,0,24,0,191,143,20, -0,177,143,16,0,176,143,8,0,224,3,32,0,189,39,232,255,189,39,16,0,176,175, -33,128,128,0,224,146,131,39,35,24,163,0,128,16,3,0,33,16,67,0,0,25,2,0, -33,16,67,0,0,26,2,0,33,16,67,0,0,28,2,0,33,16,67,0,35,16,2,0,3,17,2,0,20, -0,191,175,72,0,6,162,64,49,6,0,0,1,198,36,101,0,2,162,4,0,162,140,0,0,0, -0,33,16,70,0,21,32,0,12,36,0,2,174,48,146,131,143,0,0,0,0,3,0,96,20,0,0, -0,0,31,33,0,8,48,0,16,174,48,0,98,140,0,0,0,0,48,0,2,174,48,0,112,172,48, -146,144,175,20,0,191,143,16,0,176,143,8,0,224,3,24,0,189,39,8,0,224,3,0, -0,0,0,232,255,189,39,16,0,176,175,33,128,128,0,176,145,132,143,20,0,191, -175,202,17,0,12,0,0,0,0,80,0,4,150,33,48,64,0,1,0,130,48,20,0,64,20,1,0, -130,52,0,32,4,60,95,0,3,146,37,32,4,2,80,0,2,166,104,0,2,146,84,0,133,144, -3,0,99,48,39,24,3,0,36,16,67,0,38,40,162,0,84,0,130,144,3,0,165,48,38,16, -69,0,84,0,130,160,86,0,130,144,88,0,131,144,36,16,69,0,37,24,98,0,88,0, -131,160,211,17,0,12,33,32,192,0,20,0,191,143,16,0,176,143,8,0,224,3,24, -0,189,39,232,255,189,39,16,0,176,175,33,128,128,0,176,145,132,143,20,0, -191,175,202,17,0,12,0,0,0,0,80,0,4,150,33,48,64,0,1,0,130,48,19,0,64,16, -254,255,130,48,0,32,4,60,95,0,3,146,37,32,4,2,80,0,2,166,104,0,2,146,84, -0,133,144,3,0,99,48,37,16,67,0,38,40,162,0,84,0,130,144,3,0,165,48,38,16, -69,0,84,0,130,160,86,0,130,144,88,0,131,144,36,16,69,0,37,24,98,0,88,0, -131,160,211,17,0,12,33,32,192,0,20,0,191,143,16,0,176,143,8,0,224,3,24, -0,189,39,216,255,189,39,24,0,176,175,33,128,128,0,176,145,132,143,32,0, -178,175,36,0,191,175,28,0,177,175,36,0,17,142,0,0,0,0,202,17,0,12,243,0, -178,48,74,0,3,146,240,0,68,50,95,0,18,162,73,0,4,162,15,0,99,48,37,32,131, -0,80,0,3,150,3,0,82,50,74,0,4,162,1,0,99,48,5,0,96,16,33,32,64,0,104,0, -3,146,39,16,18,0,141,33,0,8,36,144,67,0,104,0,2,146,0,0,0,0,37,144,66,2, -40,0,35,146,74,0,2,146,0,0,0,0,32,0,66,48,5,0,64,16,4,0,99,48,5,0,96,16, -0,32,5,60,225,33,0,8,37,40,5,2,72,0,96,16,0,32,5,60,74,0,2,146,0,0,0,0, -194,16,2,0,4,0,66,48,40,0,34,162,16,39,2,36,16,0,162,175,16,0,162,143,0, -0,0,0,255,255,66,36,16,0,162,175,16,0,163,143,255,255,2,36,13,0,98,16,255, -255,3,36,44,0,34,146,0,0,0,0,10,0,64,16,128,0,2,36,16,0,162,143,0,0,0,0, -255,255,66,36,16,0,162,175,16,0,162,143,0,0,0,0,245,255,67,20,0,0,0,0,128, -0,2,36,44,0,34,162,16,39,2,36,16,0,162,175,16,0,162,143,0,0,0,0,255,255, -66,36,16,0,162,175,16,0,163,143,255,255,2,36,13,0,98,16,255,255,3,36,44, -0,34,146,0,0,0,0,10,0,64,16,65,0,2,36,16,0,162,143,0,0,0,0,255,255,66,36, -16,0,162,175,16,0,162,143,0,0,0,0,245,255,67,20,0,0,0,0,65,0,2,36,44,0, -34,162,44,0,3,150,0,0,0,0,15,0,102,48,4,0,194,40,4,0,64,16,0,4,98,48,2, -0,64,16,0,0,0,0,33,48,0,0,1,128,2,60,33,16,70,0,80,144,66,144,0,0,0,0,8, -0,34,162,8,0,34,146,0,0,0,0,12,0,34,162,0,32,5,60,37,40,5,2,84,0,163,144, -84,0,162,144,38,24,114,0,3,0,102,48,38,16,70,0,84,0,162,160,86,0,162,144, -88,0,163,144,36,16,70,0,37,24,98,0,211,17,0,12,88,0,163,160,36,0,191,143, -32,0,178,143,28,0,177,143,24,0,176,143,8,0,224,3,40,0,189,39,224,255,189, -39,20,0,177,175,33,136,128,0,176,145,132,143,16,0,176,175,24,0,191,175, -202,17,0,12,33,128,160,0,33,32,64,0,211,17,0,12,40,0,48,166,24,0,191,143, -20,0,177,143,16,0,176,143,8,0,224,3,32,0,189,39,224,255,189,39,24,0,178, -175,33,144,128,0,176,145,132,143,16,0,176,175,28,0,191,175,20,0,177,175, -36,0,81,142,0,0,0,0,202,17,0,12,33,128,160,0,33,24,0,2,44,0,80,166,15,0, -16,50,33,32,64,0,4,0,2,46,4,0,64,16,0,4,98,48,2,0,64,16,0,0,0,0,33,128, -0,0,1,128,2,60,33,16,80,0,80,144,66,144,0,0,0,0,8,0,34,162,8,0,34,146,0, -0,0,0,211,17,0,12,12,0,34,162,33,32,64,2,225,25,0,12,33,40,0,0,28,0,191, -143,24,0,178,143,20,0,177,143,16,0,176,143,8,0,224,3,32,0,189,39,224,255, -189,39,16,0,176,175,33,128,128,0,176,145,132,143,20,0,177,175,24,0,191, -175,202,17,0,12,33,136,160,0,33,32,64,0,127,255,2,36,36,16,34,2,11,0,64, -16,0,0,0,0,80,0,2,150,0,0,0,0,128,0,66,48,2,0,64,20,0,0,0,0,99,0,0,162, -80,0,2,150,0,0,0,0,68,34,0,8,128,0,66,52,80,0,2,150,0,0,0,0,127,255,66, -48,80,0,2,166,0,128,2,60,28,54,66,36,4,0,2,174,0,128,2,60,204,69,66,36, -116,0,0,174,52,0,2,174,211,17,0,12,42,0,17,166,24,0,191,143,20,0,177,143, -16,0,176,143,8,0,224,3,32,0,189,39,176,145,132,143,232,255,189,39,16,0, -191,175,202,17,0,12,0,0,0,0,211,17,0,12,33,32,64,0,16,0,191,143,24,0,189, -39,8,0,224,3,0,0,0,0,224,255,189,39,20,0,177,175,33,136,128,0,176,145,132, -143,16,0,176,175,24,0,191,175,202,17,0,12,33,128,160,0,33,32,64,0,211,17, -0,12,104,0,48,162,24,0,191,143,20,0,177,143,16,0,176,143,8,0,224,3,32,0, -189,39,216,255,189,39,28,0,177,175,33,136,128,0,36,0,191,175,32,0,178,175, -24,0,176,175,72,0,35,146,0,0,0,0,8,0,98,44,5,0,64,16,8,0,2,36,21,32,0,12, -0,0,0,0,1,35,0,8,0,0,0,0,131,0,98,20,0,0,0,0,101,0,35,146,0,0,0,0,64,16, -3,0,33,16,67,0,0,17,2,0,1,128,3,60,33,24,98,0,104,163,99,140,6,0,2,36,120, -0,98,16,0,32,16,60,176,145,132,143,36,0,50,142,0,0,0,0,202,17,0,12,37,128, -48,2,255,255,3,52,10,0,0,166,12,0,0,166,18,0,0,166,20,0,0,166,28,0,35,166, -1,0,3,36,24,0,32,166,26,0,32,166,40,0,32,166,42,0,32,166,44,0,32,166,64, -0,32,174,68,0,32,174,75,0,32,162,76,0,3,162,77,0,3,162,78,0,3,162,32,0, -3,36,79,0,0,162,86,0,0,162,80,0,35,166,0,128,3,60,28,54,99,36,73,0,32,162, -74,0,32,162,84,0,0,162,87,0,0,162,88,0,0,162,89,0,0,162,90,0,0,162,91,0, -0,162,92,0,32,162,93,0,32,162,94,0,32,162,95,0,32,162,96,0,32,162,97,0, -32,162,98,0,32,162,4,0,35,174,0,128,3,60,204,69,99,36,52,0,35,174,36,0, -35,142,33,32,64,0,99,0,32,162,104,0,32,162,106,0,32,166,108,0,32,174,59, -0,96,16,116,0,32,174,16,39,2,36,40,0,64,162,16,0,162,175,16,0,162,143,0, -0,0,0,255,255,66,36,16,0,162,175,16,0,163,143,255,255,2,36,13,0,98,16,255, -255,3,36,44,0,66,146,0,0,0,0,10,0,64,16,128,0,2,36,16,0,162,143,0,0,0,0, -255,255,66,36,16,0,162,175,16,0,162,143,0,0,0,0,245,255,67,20,0,0,0,0,128, -0,2,36,44,0,66,162,16,39,2,36,16,0,162,175,16,0,162,143,0,0,0,0,255,255, -66,36,16,0,162,175,16,0,163,143,255,255,2,36,13,0,98,16,255,255,3,36,44, -0,66,146,0,0,0,0,10,0,64,16,65,0,2,36,16,0,162,143,0,0,0,0,255,255,66,36, -16,0,162,175,16,0,162,143,0,0,0,0,245,255,67,20,0,0,0,0,65,0,2,36,44,0, -66,162,9,0,2,36,120,0,66,162,1,128,2,60,80,144,66,144,0,0,0,0,8,0,66,162, -8,0,66,146,0,0,0,0,12,0,66,162,211,17,0,12,0,0,0,0,33,32,32,2,225,25,0, -12,33,40,0,0,36,0,191,143,32,0,178,143,28,0,177,143,24,0,176,143,8,0,224, -3,40,0,189,39,224,255,189,39,33,40,128,0,28,0,191,175,24,0,176,175,72,0, -163,144,0,0,0,0,8,0,98,44,5,0,64,16,8,0,2,36,137,32,0,12,0,0,0,0,96,35, -0,8,0,0,0,0,75,0,98,20,0,0,0,0,101,0,163,144,0,0,0,0,64,16,3,0,33,16,67, -0,0,17,2,0,1,128,3,60,33,24,98,0,104,163,99,140,6,0,2,36,64,0,98,16,0,0, -0,0,176,145,132,143,36,0,176,140,202,17,0,12,0,0,0,0,16,39,3,36,40,0,0, -162,16,0,163,175,16,0,163,143,33,32,64,0,255,255,99,36,16,0,163,175,16, -0,163,143,255,255,2,36,13,0,98,16,255,255,3,36,44,0,2,146,0,0,0,0,10,0, -64,16,128,0,2,36,16,0,162,143,0,0,0,0,255,255,66,36,16,0,162,175,16,0,162, -143,0,0,0,0,245,255,67,20,0,0,0,0,128,0,2,36,44,0,2,162,16,39,2,36,16,0, -162,175,16,0,162,143,0,0,0,0,255,255,66,36,16,0,162,175,16,0,163,143,255, -255,2,36,13,0,98,16,255,255,3,36,44,0,2,146,0,0,0,0,10,0,64,16,65,0,2,36, -16,0,162,143,0,0,0,0,255,255,66,36,16,0,162,175,16,0,162,143,0,0,0,0,245, -255,67,20,0,0,0,0,65,0,2,36,44,0,2,162,9,0,2,36,120,0,2,162,1,128,2,60, -80,144,66,144,0,0,0,0,8,0,2,162,8,0,2,146,0,0,0,0,211,17,0,12,12,0,2,162, -28,0,191,143,24,0,176,143,8,0,224,3,32,0,189,39,232,255,189,39,16,0,176, -175,33,128,128,0,224,146,131,39,35,24,163,0,128,16,3,0,33,16,67,0,0,25, -2,0,33,16,67,0,0,26,2,0,33,16,67,0,0,28,2,0,33,16,67,0,35,16,2,0,3,17,2, -0,20,0,191,175,101,0,2,162,8,0,2,36,9,0,194,20,72,0,6,162,40,0,163,140, -6,0,2,36,6,0,98,16,8,0,194,40,4,0,162,140,0,0,0,0,0,8,66,36,36,0,2,174, -8,0,194,40,5,0,64,16,0,0,0,0,21,32,0,12,33,32,0,2,137,35,0,8,0,0,0,0,110, -34,0,12,33,32,0,2,48,146,131,143,0,0,0,0,3,0,96,20,0,0,0,0,147,35,0,8,48, -0,16,174,48,0,98,140,0,0,0,0,48,0,2,174,48,0,112,172,48,146,144,175,20, -0,191,143,16,0,176,143,8,0,224,3,24,0,189,39,8,0,224,3,0,0,0,0,0,0,0,0, -0,0,0,0,46,46,47,101,120,99,101,112,116,105,111,110,46,115,0,0,96,72,0, -128,148,72,0,128,200,72,0,128,36,73,0,128,92,73,0,128,192,75,0,128,188, -73,0,128,192,75,0,128,216,73,0,128,244,73,0,128,28,74,0,128,48,74,0,128, -64,74,0,128,192,75,0,128,72,74,0,128,88,74,0,128,104,74,0,128,192,75,0, -128,192,75,0,128,136,74,0,128,156,74,0,128,196,74,0,128,216,74,0,128,192, -75,0,128,192,75,0,128,192,75,0,128,192,75,0,128,192,75,0,128,192,75,0,128, -44,75,0,128,124,76,0,128,176,76,0,128,228,76,0,128,64,77,0,128,92,77,0, -128,244,78,0,128,132,77,0,128,244,78,0,128,160,77,0,128,188,77,0,128,228, -77,0,128,248,77,0,128,8,78,0,128,244,78,0,128,16,78,0,128,32,78,0,128,48, -78,0,128,244,78,0,128,244,78,0,128,80,78,0,128,100,78,0,128,140,78,0,128, -160,78,0,128,0,0,0,0,56,88,0,128,212,89,0,128,56,88,0,128,12,89,0,128,212, -89,0,128,92,88,0,128,104,88,0,128,68,88,0,128,56,88,0,128,120,88,0,128, -84,88,0,128,212,89,0,128,140,88,0,128,212,89,0,128,212,89,0,128,128,88, -0,128,120,88,0,128,84,88,0,128,212,89,0,128,92,88,0,128,212,89,0,128,212, -89,0,128,212,89,0,128,128,88,0,128,212,89,0,128,212,89,0,128,212,89,0,128, -92,88,0,128,0,0,0,0,0,0,0,0,12,0,52,0,0,0,204,28,0,0,28,0,12,0,226,0,0, -0,64,0,12,0,116,0,4,0,110,0,4,0,0,0,12,0,228,0,4,0,64,0,12,0,180,0,8,0, -0,0,8,0,0,0,12,0,232,0,8,0,64,0,0,0,0,0,48,0,0,36,0,24,93,16,111,13,0,12, -0,9,0,6,0,3,128,1,0,1,192,0,96,0,48,0,24,0,12,0,48,0,8,0,6,0,4,0,32,0,8, -0,2,0,6,0,4,0,2,0,16,0,1,0,0,0,48,0,24,0,12,0,4,250,200,150,100,50,25,20, -15,10,8,6,5,4,4,4,180,54,0,128,72,54,0,128,128,54,0,128,180,54,0,128,116, -62,0,128,108,60,0,128,116,62,0,128,244,60,0,128,160,56,0,128,232,55,0,128, -160,56,0,128,176,62,0,128,84,55,0,128,84,55,0,128,84,55,0,128,84,55,0,128, -232,54,0,128,232,54,0,128,232,54,0,128,232,54,0,128,232,54,0,128,232,54, -0,128,232,54,0,128,232,54,0,128,124,55,0,128,124,55,0,128,124,55,0,128, -124,55,0,128,124,55,0,128,124,55,0,128,124,55,0,128,124,55,0,128,124,55, -0,128,124,55,0,128,124,55,0,128,124,55,0,128,124,55,0,128,124,55,0,128, -124,55,0,128,124,55,0,128,100,63,0,128,100,63,0,128,100,63,0,128,100,63, -0,128,100,63,0,128,100,63,0,128,100,63,0,128,100,63,0,128,84,64,0,128,112, -64,0,128,16,65,0,128,232,64,0,128,252,64,0,128,92,65,0,128,100,63,0,128, -100,63,0,128,100,63,0,128,100,63,0,128,100,63,0,128,100,63,0,128,100,63, -0,128,100,63,0,128,100,63,0,128,100,63,0,128,100,63,0,128,100,63,0,128, -100,63,0,128,100,63,0,128,100,63,0,128,100,63,0,128,100,63,0,128,100,63, -0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63, -0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63, -0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63, -0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63, -0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63, -0,128,96,63,0,128,96,63,0,128,96,63,0,128,8,64,0,128,8,64,0,128,8,64,0, -128,8,64,0,128,8,64,0,128,8,64,0,128,8,64,0,128,8,64,0,128,8,64,0,128,8, -64,0,128,8,64,0,128,8,64,0,128,8,64,0,128,8,64,0,128,8,64,0,128,8,64,0, -128,8,64,0,128,8,64,0,128,8,64,0,128,8,64,0,128,8,64,0,128,8,64,0,128,8, -64,0,128,8,64,0,128,8,64,0,128,8,64,0,128,96,63,0,128,96,63,0,128,96,63, -0,128,96,63,0,128,96,63,0,128,164,63,0,128,64,64,0,128,64,64,0,128,64,64, -0,128,64,64,0,128,64,64,0,128,64,64,0,128,64,64,0,128,64,64,0,128,64,64, -0,128,64,64,0,128,64,64,0,128,64,64,0,128,64,64,0,128,64,64,0,128,64,64, -0,128,64,64,0,128,64,64,0,128,64,64,0,128,64,64,0,128,64,64,0,128,64,64, -0,128,64,64,0,128,64,64,0,128,64,64,0,128,64,64,0,128,64,64,0,128,184,63, -0,128,204,63,0,128,224,63,0,128,244,63,0,128,100,63,0,128,100,63,0,128, -100,63,0,128,100,63,0,128,100,63,0,128,100,63,0,128,100,63,0,128,100,63, -0,128,100,63,0,128,100,63,0,128,100,63,0,128,100,63,0,128,100,63,0,128, -100,63,0,128,100,63,0,128,100,63,0,128,100,63,0,128,100,63,0,128,100,63, -0,128,100,63,0,128,100,63,0,128,100,63,0,128,100,63,0,128,100,63,0,128, -100,63,0,128,100,63,0,128,100,63,0,128,100,63,0,128,100,63,0,128,100,63, -0,128,100,63,0,128,100,63,0,128,100,63,0,128,96,63,0,128,96,63,0,128,96, -63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96, -63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96, -63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96, -63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96, -63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96, -63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96, -63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96, -63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96, -63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96, -63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96, -63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96, -63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96, -63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96, -63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96, -63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,96, -63,0,128,96,63,0,128,96,63,0,128,96,63,0,128,136,61,0,128,136,61,0,128, -136,61,0,128,136,61,0,128,136,61,0,128,136,61,0,128,136,61,0,128,136,61, -0,128,184,61,0,128,52,62,0,128,200,61,0,128,136,61,0,128,136,61,0,128,252, -61,0,128,136,61,0,128,136,61,0,128,136,61,0,128,136,61,0,128,136,61,0,128, -136,61,0,128,136,61,0,128,136,61,0,128,136,61,0,128,136,61,0,128,136,61, -0,128,136,61,0,128,136,61,0,128,136,61,0,128,136,61,0,128,136,61,0,128, -136,61,0,128,136,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61, -0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128, -132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61, -0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128, -132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61, -0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128, -132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61, -0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128, -132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61, -0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128, -132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61, -0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128, -132,61,0,128,116,61,0,128,116,61,0,128,116,61,0,128,116,61,0,128,116,61, -0,128,116,61,0,128,116,61,0,128,116,61,0,128,116,61,0,128,116,61,0,128, -116,61,0,128,116,61,0,128,116,61,0,128,116,61,0,128,116,61,0,128,116,61, -0,128,116,61,0,128,116,61,0,128,116,61,0,128,116,61,0,128,116,61,0,128, -116,61,0,128,116,61,0,128,116,61,0,128,116,61,0,128,116,61,0,128,132,61, -0,128,132,61,0,128,132,61,0,128,132,61,0,128,136,61,0,128,136,61,0,128, -136,61,0,128,136,61,0,128,136,61,0,128,136,61,0,128,136,61,0,128,136,61, -0,128,136,61,0,128,136,61,0,128,136,61,0,128,136,61,0,128,136,61,0,128, -136,61,0,128,136,61,0,128,136,61,0,128,136,61,0,128,136,61,0,128,136,61, -0,128,136,61,0,128,136,61,0,128,136,61,0,128,136,61,0,128,136,61,0,128, -136,61,0,128,136,61,0,128,136,61,0,128,136,61,0,128,136,61,0,128,136,61, -0,128,136,61,0,128,136,61,0,128,136,61,0,128,132,61,0,128,132,61,0,128, -132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61, -0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128, -132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61, -0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128, -132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61, -0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128, -132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61, -0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128, -132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61, -0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128, -132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61, -0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128, -132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61, -0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128, -132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61, -0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128, -132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61,0,128,132,61, -0,128,140,58,0,128,4,68,0,128,84,67,0,128,84,67,0,128,140,58,0,128,4,68, -0,128,84,67,0,128,84,67,0,128,140,58,0,128,4,68,0,128,84,67,0,128,84,67, -0,128,140,58,0,128,4,68,0,128,84,67,0,128,84,67,0,128,100,58,0,128,4,68, -0,128,84,67,0,128,84,67,0,128,32,68,0,128,4,68,0,128,84,67,0,128,84,67, -0,128,156,66,0,128,4,68,0,128,84,67,0,128,84,67,0,128,108,66,0,128,4,68, -0,128,84,67,0,128,84,67,0,128,100,63,0,128,144,64,0,128,168,64,0,128,176, -64,0,128,100,63,0,128,172,65,0,128,184,65,0,128,192,65,0,128,46,46,47,115, -109,97,114,116,102,101,112,46,99,0,0,0,46,46,47,115,109,97,114,116,109, -97,105,110,46,99,0,0,46,46,47,99,111,109,109,111,110,46,99,0,0,0,0,0,46, -46,47,116,105,109,101,114,46,99,0,0,0,0,0,0,0,0,0,0,0,0,16,128,46,46,47, -116,105,109,101,114,105,110,116,46,99,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,48, -0,0,0,24,0,0,0,64,0,0,0,207,217,2,0,0,0,0,0,0,0,0,0,0,0,0,0,64,40,35,41, -45,120,0,64,40,35,41,50,0,64,40,35,41,98,105,111,115,105,110,105,116,46, -104,32,32,32,32,36,82,101,118,105,115,105,111,110,58,32,51,46,51,32,36, -32,32,36,68,97,116,101,58,32,49,57,57,54,47,49,50,47,48,53,32,49,54,58, -52,50,58,49,55,32,36,0,64,40,35,41,99,104,97,110,110,101,108,46,104,32, -32,32,32,32,36,82,101,118,105,115,105,111,110,58,32,51,46,50,49,32,36,32, -32,36,68,97,116,101,58,32,49,57,57,54,47,49,48,47,48,55,32,49,55,58,49, -56,58,48,54,32,36,0,64,40,35,41,99,104,101,99,107,114,97,110,103,101,46, -99,32,32,36,82,101,118,105,115,105,111,110,58,32,49,46,51,32,36,32,32,36, -68,97,116,101,58,32,49,57,57,54,47,48,57,47,49,54,32,50,51,58,50,50,58, -48,53,32,36,0,64,40,35,41,99,104,101,99,107,114,97,110,103,101,46,104,32, -32,36,82,101,118,105,115,105,111,110,58,32,51,46,51,32,36,32,32,36,68,97, -116,101,58,32,49,57,57,54,47,49,50,47,48,53,32,49,54,58,52,51,58,51,55, -32,36,0,64,40,35,41,99,111,109,109,111,110,46,99,32,32,32,32,32,32,36,82, -101,118,105,115,105,111,110,58,32,51,46,50,48,32,36,32,32,36,68,97,116, -101,58,32,49,57,57,55,47,48,56,47,48,56,32,49,49,58,53,57,58,51,57,32,36, -0,64,40,35,41,99,111,109,109,111,110,46,104,32,32,32,32,32,32,36,82,101, -118,105,115,105,111,110,58,32,51,46,50,32,36,32,32,36,68,97,116,101,58, -32,49,57,57,54,47,49,48,47,49,48,32,50,51,58,50,55,58,48,53,32,36,0,64, -40,35,41,99,111,109,109,111,110,46,109,107,32,32,32,32,32,36,82,101,118, -105,115,105,111,110,58,32,51,46,51,49,32,36,32,32,36,68,97,116,101,58,32, -49,57,57,56,47,48,50,47,50,51,32,48,57,58,50,55,58,53,56,32,36,0,64,40, -35,41,99,111,110,99,98,105,111,115,46,104,32,32,32,32,36,82,101,118,105, -115,105,111,110,58,32,50,46,49,49,32,36,32,32,36,68,97,116,101,58,32,49, -57,57,54,47,48,57,47,49,57,32,50,49,58,50,51,58,51,57,32,36,0,64,40,35, -41,99,116,111,114,46,99,32,32,32,32,32,36,82,101,118,105,115,105,111,110, -58,32,51,46,50,32,36,32,32,36,68,97,116,101,58,32,49,57,57,54,47,49,48, -47,49,48,32,50,51,58,50,55,58,48,55,32,36,0,64,40,35,41,100,101,102,115, -46,104,32,32,32,32,32,32,32,32,36,82,101,118,105,115,105,111,110,58,32, -51,46,49,51,32,36,32,32,36,68,97,116,101,58,32,49,57,57,56,47,48,50,47, -50,53,32,48,55,58,50,54,58,53,54,32,36,0,64,40,35,41,100,101,118,105,99, -101,46,104,32,32,32,32,32,32,36,82,101,118,105,115,105,111,110,58,32,51, -46,49,53,32,36,32,32,36,68,97,116,101,58,32,49,57,57,56,47,48,50,47,50, -51,32,48,57,58,50,56,58,48,54,32,36,0,64,40,35,41,101,120,99,101,112,116, -105,111,110,46,115,32,32,32,36,82,101,118,105,115,105,111,110,58,32,51, -46,51,32,36,32,32,36,68,97,116,101,58,32,49,57,57,54,47,48,51,47,49,57, -32,50,48,58,53,55,58,53,54,32,36,0,64,40,35,41,101,120,116,99,104,97,110, -46,104,32,32,32,32,32,36,82,101,118,105,115,105,111,110,58,32,51,46,49, -32,36,32,32,36,68,97,116,101,58,32,49,57,57,55,47,48,57,47,50,53,32,49, -51,58,52,57,58,51,57,32,36,0,64,40,35,41,104,111,115,116,99,111,109,109, -46,104,32,32,32,32,36,82,101,118,105,115,105,111,110,58,32,51,46,49,57, -32,36,32,32,36,68,97,116,101,58,32,49,57,57,56,47,48,51,47,49,50,32,48, -52,58,53,50,58,50,51,32,36,0,64,40,35,41,104,111,115,116,105,110,105,116, -46,104,32,32,32,32,36,82,101,118,105,115,105,111,110,58,32,51,46,50,32, -36,32,32,36,68,97,116,101,58,32,49,57,57,54,47,49,48,47,49,48,32,50,51, -58,50,55,58,48,56,32,36,0,64,40,35,41,104,111,115,116,105,110,105,116,46, -115,32,32,32,32,36,82,101,118,105,115,105,111,110,58,32,51,46,49,48,32, -36,32,32,36,68,97,116,101,58,32,49,57,57,55,47,49,50,47,48,50,32,48,56, -58,49,48,58,51,56,32,36,0,64,40,35,41,109,105,100,46,104,32,32,32,32,32, -32,32,32,32,36,82,101,118,105,115,105,111,110,58,32,51,46,49,50,32,36,32, -32,36,68,97,116,101,58,32,49,57,57,56,47,48,50,47,50,51,32,48,57,58,50, -56,58,48,57,32,36,0,64,40,35,41,109,111,100,101,109,99,104,107,46,99,32, -32,32,32,36,82,101,118,105,115,105,111,110,58,32,51,46,49,50,32,36,32,32, -36,68,97,116,101,58,32,49,57,57,56,47,48,50,47,50,51,32,48,57,58,50,56, -58,49,48,32,36,0,64,40,35,41,109,111,100,101,109,99,104,107,46,104,32,32, -32,32,32,32,36,82,101,118,105,115,105,111,110,58,32,51,46,50,32,36,32,32, -36,68,97,116,101,58,32,49,57,57,56,47,48,50,47,50,51,32,48,57,58,50,56, -58,49,50,32,36,0,64,40,35,41,109,111,100,117,108,101,46,99,32,32,32,32, -32,32,36,82,101,118,105,115,105,111,110,58,32,50,46,53,32,36,32,32,36,68, -97,116,101,58,32,49,57,57,56,47,48,50,47,50,53,32,48,55,58,50,54,58,53, -56,32,36,0,64,40,35,41,109,111,100,117,108,101,46,104,32,32,32,32,32,32, -36,82,101,118,105,115,105,111,110,58,32,51,46,55,32,36,32,32,36,68,97,116, -101,58,32,49,57,57,56,47,48,50,47,50,51,32,48,57,58,50,56,58,49,53,32,36, -0,64,40,35,41,112,97,114,97,46,99,32,32,32,32,32,32,32,32,36,82,101,118, -105,115,105,111,110,58,32,49,46,49,55,32,36,32,32,36,68,97,116,101,58,32, -49,57,57,56,47,48,50,47,50,53,32,48,53,58,53,53,58,49,56,32,36,0,64,40, -35,41,112,97,114,97,46,104,32,32,32,32,32,32,32,32,36,82,101,118,105,115, -105,111,110,58,32,49,46,50,32,36,32,32,36,68,97,116,101,58,32,49,57,57, -54,47,49,50,47,48,53,32,49,54,58,53,48,58,49,54,32,36,0,64,40,35,41,112, -98,117,115,46,104,32,32,32,32,32,32,32,32,36,82,101,118,105,115,105,111, -110,58,32,51,46,52,32,36,32,32,36,68,97,116,101,58,32,49,57,57,54,47,49, -50,47,48,53,32,49,54,58,53,48,58,50,53,32,36,0,64,40,35,41,112,111,108, -108,46,115,32,32,32,32,32,32,32,32,36,82,101,118,105,115,105,111,110,58, -32,51,46,51,56,32,36,32,32,36,68,97,116,101,58,32,49,57,57,56,47,48,50, -47,50,51,32,48,57,58,50,56,58,49,56,32,36,0,64,40,35,41,112,114,111,116, -111,99,111,108,46,104,32,32,32,32,36,82,101,118,105,115,105,111,110,58, -32,51,46,57,32,36,32,32,36,68,97,116,101,58,32,49,57,57,56,47,48,49,47, -49,56,32,49,55,58,51,56,58,49,48,32,36,0,64,40,35,41,114,119,46,99,32,32, -32,32,32,32,32,32,32,32,36,82,101,118,105,115,105,111,110,58,32,51,46,50, -32,36,32,32,36,68,97,116,101,58,32,49,57,57,54,47,48,57,47,49,54,32,50, -51,58,50,57,58,52,52,32,36,0,64,40,35,41,114,119,46,104,32,32,32,32,32, -32,32,32,32,32,36,82,101,118,105,115,105,111,110,58,32,50,46,52,32,36,32, -32,36,68,97,116,101,58,32,49,57,57,55,47,48,50,47,50,48,32,50,50,58,50, -55,58,53,48,32,36,0,64,40,35,41,115,99,104,101,100,46,99,32,32,32,32,32, -32,32,36,82,101,118,105,115,105,111,110,58,32,51,46,53,32,36,32,32,36,68, -97,116,101,58,32,49,57,57,54,47,48,57,47,49,54,32,50,51,58,51,50,58,50, -54,32,36,0,64,40,35,41,115,99,104,101,100,46,104,32,32,32,32,32,32,32,36, -82,101,118,105,115,105,111,110,58,32,51,46,52,32,36,32,32,36,68,97,116, -101,58,32,49,57,57,56,47,48,50,47,50,51,32,48,57,58,50,56,58,50,52,32,36, -0,64,40,35,41,115,109,97,114,116,98,105,111,115,46,104,32,32,32,36,82,101, -118,105,115,105,111,110,58,32,51,46,53,32,36,32,32,36,68,97,116,101,58, -32,49,57,57,54,47,48,57,47,49,57,32,50,49,58,50,51,58,52,56,32,36,0,64, -40,35,41,115,109,97,114,116,99,104,97,110,46,104,32,32,32,36,82,101,118, -105,115,105,111,110,58,32,51,46,55,32,36,32,32,36,68,97,116,101,58,32,49, -57,57,55,47,49,48,47,50,55,32,49,53,58,49,54,58,48,50,32,36,0,64,40,35, -41,115,109,97,114,116,102,101,112,46,99,32,32,32,32,36,82,101,118,105,115, -105,111,110,58,32,51,46,52,55,32,36,32,32,36,68,97,116,101,58,32,49,57, -57,56,47,48,50,47,50,54,32,48,54,58,50,54,58,53,51,32,36,0,64,40,35,41, -115,109,97,114,116,109,97,105,110,46,99,32,32,32,36,82,101,118,105,115, -105,111,110,58,32,51,46,49,56,32,36,32,32,36,68,97,116,101,58,32,49,57, -57,56,47,48,50,47,50,51,32,48,57,58,50,56,58,50,57,32,36,0,64,40,35,41, -116,105,109,101,114,46,99,32,32,32,32,32,32,32,36,82,101,118,105,115,105, -111,110,58,32,51,46,57,46,50,46,49,32,36,32,32,36,68,97,116,101,58,32,49, -57,57,56,47,48,51,47,50,52,32,48,50,58,50,49,58,52,52,32,36,0,64,40,35, -41,116,105,109,101,114,46,104,32,32,32,32,32,32,32,36,82,101,118,105,115, -105,111,110,58,32,51,46,49,51,32,36,32,32,36,68,97,116,101,58,32,49,57, -57,56,47,48,50,47,50,51,32,48,57,58,50,56,58,52,52,32,36,0,64,40,35,41, -116,105,109,101,114,105,110,116,46,99,32,32,32,32,36,82,101,118,105,115, -105,111,110,58,32,51,46,49,54,32,36,32,32,36,68,97,116,101,58,32,49,57, -57,56,47,48,50,47,50,53,32,48,56,58,48,56,58,52,50,32,36,0,64,40,35,41, -117,97,114,116,46,99,32,32,32,32,32,32,32,32,36,82,101,118,105,115,105, -111,110,58,32,51,46,51,51,32,36,32,32,36,68,97,116,101,58,32,49,57,57,56, -47,48,50,47,50,54,32,48,54,58,50,54,58,53,53,32,36,0,64,40,35,41,117,97, -114,116,46,104,32,32,32,32,32,32,32,32,36,82,101,118,105,115,105,111,110, -58,32,51,46,49,48,32,36,32,32,36,68,97,116,101,58,32,49,57,57,56,47,48, -50,47,50,51,32,48,57,58,50,56,58,52,57,32,36,0,64,40,35,41,117,116,105, -108,46,104,32,32,32,32,32,32,32,32,36,82,101,118,105,115,105,111,110,58, -32,51,46,51,32,36,32,32,36,68,97,116,101,58,32,49,57,57,54,47,49,50,47, -48,53,32,49,54,58,53,57,58,48,57,32,36,0,64,40,35,41,117,116,105,108,46, -115,32,32,32,32,32,32,32,32,36,82,101,118,105,115,105,111,110,58,32,51, -46,52,32,36,32,32,36,68,97,116,101,58,32,49,57,57,55,47,48,49,47,50,49, -32,49,55,58,48,54,58,53,50,32,36,0,64,40,35,41,120,114,102,101,112,47,77, -97,107,101,102,105,108,101,32,32,32,32,32,32,36,82,101,118,105,115,105, -111,110,58,32,49,46,55,32,36,32,32,36,68,97,116,101,58,32,49,57,57,55,47, -49,49,47,48,54,32,49,55,58,52,49,58,50,56,32,36,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0 - -}; diff --git a/sys/dev/digi/digi.c b/sys/dev/digi/digi.c deleted file mode 100644 index b8ede24a871a..000000000000 --- a/sys/dev/digi/digi.c +++ /dev/null @@ -1,1560 +0,0 @@ -/*- - * Copyright (c) 2001 Brian Somers <brian@Awfulhak.org> - * based on work by Slawa Olhovchenkov - * John Prince <johnp@knight-trosoft.com> - * Eric Hernes - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - */ - -/*- - * TODO: - * Figure out what the con bios stuff is supposed to do - * Test with *LOTS* more cards - I only have a PCI8r and an ISA Xem. - */ - -#include "opt_compat.h" - -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/proc.h> -#include <sys/conf.h> -#include <sys/linker.h> -#include <sys/kernel.h> -#include <sys/mbuf.h> -#include <sys/malloc.h> -#include <sys/module.h> -#include <sys/tty.h> -#include <sys/syslog.h> -#include <sys/fcntl.h> -#include <sys/serial.h> -#include <sys/bus.h> -#include <machine/resource.h> - -#include <sys/digiio.h> -#include <dev/digi/digireg.h> -#include <dev/digi/digi.h> -#include <dev/digi/digi_mod.h> -#include <dev/digi/digi_pci.h> - -static t_open_t digiopen; -static d_open_t digicopen; -static d_close_t digicclose; -static t_ioctl_t digiioctl; -static d_ioctl_t digisioctl; -static d_ioctl_t digicioctl; - -static void digistop(struct tty *tp, int rw); -static void digibreak(struct tty *tp, int brk); -static int digimodem(struct tty *tp, int sigon, int sigoff); -static void digi_poll(void *ptr); -static void digi_freemoduledata(struct digi_softc *); -static void fepcmd(struct digi_p *port, int cmd, int op, int ncmds); -static void digistart(struct tty *tp); -static int digiparam(struct tty *tp, struct termios *t); -static void digiclose(struct tty *tp); -static void digi_intr(void *); -static int digi_init(struct digi_softc *_sc); -static int digi_loadmoduledata(struct digi_softc *); -static int digi_inuse(struct digi_softc *); -static void digi_free_state(struct digi_softc *); - -#define fepcmd_b(port, cmd, op1, op2, ncmds) \ - fepcmd(port, cmd, (op2 << 8) | op1, ncmds) -#define fepcmd_w fepcmd - -struct con_bios { - struct con_bios *next; - u_char *bios; - size_t size; -}; - -static struct con_bios *con_bios_list; -devclass_t digi_devclass; -static char driver_name[] = "digi"; -unsigned digi_debug = 0; - -static struct speedtab digispeedtab[] = { - { 0, 0}, /* old (sysV-like) Bx codes */ - { 50, 1}, - { 75, 2}, - { 110, 3}, - { 134, 4}, - { 150, 5}, - { 200, 6}, - { 300, 7}, - { 600, 8}, - { 1200, 9}, - { 1800, 10}, - { 2400, 11}, - { 4800, 12}, - { 9600, 13}, - { 19200, 14}, - { 38400, 15}, - { 57600, (02000 | 1)}, - { 76800, (02000 | 2)}, - { 115200, (02000 | 3)}, - { 230400, (02000 | 6)}, - { -1, -1} -}; - -const struct digi_control_signals digi_xixe_signals = { - 0x02, 0x08, 0x10, 0x20, 0x40, 0x80 -}; - -const struct digi_control_signals digi_normal_signals = { - 0x02, 0x80, 0x20, 0x10, 0x40, 0x01 -}; - -static struct cdevsw digi_csw = { - .d_version = D_VERSION, - .d_open = digicopen, - .d_close = digicclose, - .d_ioctl = digicioctl, - .d_name = driver_name, - .d_flags = D_TTY | D_NEEDGIANT, -}; - -static void -digi_poll(void *ptr) -{ - struct digi_softc *sc; - - sc = (struct digi_softc *)ptr; - callout_handle_init(&sc->callout); - digi_intr(sc); - sc->callout = timeout(digi_poll, sc, (hz >= 200) ? hz / 100 : 1); -} - -static void -digi_int_test(void *v) -{ - struct digi_softc *sc = v; - - callout_handle_init(&sc->inttest); -#ifdef DIGI_INTERRUPT - if (sc->intr_timestamp.tv_sec || sc->intr_timestamp.tv_usec) { - /* interrupt OK! */ - return; - } - log(LOG_ERR, "digi%d: Interrupt didn't work, use polled mode\n", unit); -#endif - sc->callout = timeout(digi_poll, sc, (hz >= 200) ? hz / 100 : 1); -} - -static void -digi_freemoduledata(struct digi_softc *sc) -{ - if (sc->fep.data != NULL) { - free(sc->fep.data, M_TTYS); - sc->fep.data = NULL; - } - if (sc->link.data != NULL) { - free(sc->link.data, M_TTYS); - sc->link.data = NULL; - } - if (sc->bios.data != NULL) { - free(sc->bios.data, M_TTYS); - sc->bios.data = NULL; - } -} - -static int -digi_bcopy(const void *vfrom, void *vto, size_t sz) -{ - volatile const char *from = (volatile const char *)vfrom; - volatile char *to = (volatile char *)vto; - size_t i; - - for (i = 0; i < sz; i++) - *to++ = *from++; - - from = (const volatile char *)vfrom; - to = (volatile char *)vto; - for (i = 0; i < sz; i++) - if (*to++ != *from++) - return (0); - return (1); -} - -void -digi_delay(struct digi_softc *sc, const char *txt, u_long timo) -{ - if (cold) - DELAY(timo * 1000000 / hz); - else - tsleep(sc, PUSER | PCATCH, txt, timo); -} - -static int -digi_init(struct digi_softc *sc) -{ - int i, cnt, resp; - u_char *ptr; - int lowwater; - struct digi_p *port; - volatile struct board_chan *bc; - struct tty *tp; - - ptr = NULL; - - if (sc->status == DIGI_STATUS_DISABLED) { - log(LOG_ERR, "digi%d: Cannot init a disabled card\n", - sc->res.unit); - return (EIO); - } - if (sc->bios.data == NULL) { - log(LOG_ERR, "digi%d: Cannot init without BIOS\n", - sc->res.unit); - return (EIO); - } -#if 0 - if (sc->link.data == NULL && sc->model >= PCCX) { - log(LOG_ERR, "digi%d: Cannot init without link info\n", - sc->res.unit); - return (EIO); - } -#endif - if (sc->fep.data == NULL) { - log(LOG_ERR, "digi%d: Cannot init without fep code\n", - sc->res.unit); - return (EIO); - } - sc->status = DIGI_STATUS_NOTINIT; - - if (sc->numports) { - /* - * We're re-initialising - maybe because someone's attached - * another port module. For now, we just re-initialise - * everything. - */ - if (digi_inuse(sc)) - return (EBUSY); - - digi_free_state(sc); - } - - ptr = sc->setwin(sc, MISCGLOBAL); - for (i = 0; i < 16; i += 2) - vW(ptr + i) = 0; - - switch (sc->model) { - case PCXEVE: - outb(sc->wport, 0xff); /* window 7 */ - ptr = sc->vmem + (BIOSCODE & 0x1fff); - - if (!digi_bcopy(sc->bios.data, ptr, sc->bios.size)) { - device_printf(sc->dev, "BIOS upload failed\n"); - return (EIO); - } - - outb(sc->port, FEPCLR); - break; - - case PCXE: - case PCXI: - case PCCX: - ptr = sc->setwin(sc, BIOSCODE + ((0xf000 - sc->mem_seg) << 4)); - if (!digi_bcopy(sc->bios.data, ptr, sc->bios.size)) { - device_printf(sc->dev, "BIOS upload failed\n"); - return (EIO); - } - break; - - case PCXEM: - case PCIEPCX: - case PCIXR: - if (sc->pcibus) - PCIPORT = FEPRST; - else - outb(sc->port, FEPRST | FEPMEM); - - for (i = 0; ((sc->pcibus ? PCIPORT : inb(sc->port)) & - FEPMASK) != FEPRST; i++) { - if (i > hz) { - log(LOG_ERR, "digi%d: %s init reset failed\n", - sc->res.unit, sc->name); - return (EIO); - } - digi_delay(sc, "digiinit0", 5); - } - DLOG(DIGIDB_INIT, (sc->dev, "Got init reset after %d us\n", i)); - - /* Now upload the BIOS */ - cnt = (sc->bios.size < sc->win_size - BIOSOFFSET) ? - sc->bios.size : sc->win_size - BIOSOFFSET; - - ptr = sc->setwin(sc, BIOSOFFSET); - if (!digi_bcopy(sc->bios.data, ptr, cnt)) { - device_printf(sc->dev, "BIOS upload (1) failed\n"); - return (EIO); - } - - if (cnt != sc->bios.size) { - /* and the second part */ - ptr = sc->setwin(sc, sc->win_size); - if (!digi_bcopy(sc->bios.data + cnt, ptr, - sc->bios.size - cnt)) { - device_printf(sc->dev, "BIOS upload failed\n"); - return (EIO); - } - } - - ptr = sc->setwin(sc, 0); - vW(ptr + 0) = 0x0401; - vW(ptr + 2) = 0x0bf0; - vW(ptr + 4) = 0x0000; - vW(ptr + 6) = 0x0000; - - break; - } - - DLOG(DIGIDB_INIT, (sc->dev, "BIOS uploaded\n")); - - ptr = sc->setwin(sc, MISCGLOBAL); - W(ptr) = 0; - - if (sc->pcibus) { - PCIPORT = FEPCLR; - resp = FEPRST; - } else if (sc->model == PCXEVE) { - outb(sc->port, FEPCLR); - resp = FEPRST; - } else { - outb(sc->port, FEPCLR | FEPMEM); - resp = FEPRST | FEPMEM; - } - - for (i = 0; ((sc->pcibus ? PCIPORT : inb(sc->port)) & FEPMASK) - == resp; i++) { - if (i > hz) { - log(LOG_ERR, "digi%d: BIOS start failed\n", - sc->res.unit); - return (EIO); - } - digi_delay(sc, "digibios0", 5); - } - - DLOG(DIGIDB_INIT, (sc->dev, "BIOS started after %d us\n", i)); - - for (i = 0; vW(ptr) != *(u_short *)"GD"; i++) { - if (i > 5*hz) { - log(LOG_ERR, "digi%d: BIOS boot failed " - "(0x%02x != 0x%02x)\n", - sc->res.unit, vW(ptr), *(u_short *)"GD"); - return (EIO); - } - digi_delay(sc, "digibios1", 5); - } - - DLOG(DIGIDB_INIT, (sc->dev, "BIOS booted after %d iterations\n", i)); - - if (sc->link.data != NULL) { - DLOG(DIGIDB_INIT, (sc->dev, "Loading link data\n")); - ptr = sc->setwin(sc, 0xcd0); - digi_bcopy(sc->link.data, ptr, 21); /* XXX 21 ? */ - } - - /* load FEP/OS */ - - switch (sc->model) { - case PCXE: - case PCXEVE: - case PCXI: - ptr = sc->setwin(sc, sc->model == PCXI ? 0x2000 : 0x0); - digi_bcopy(sc->fep.data, ptr, sc->fep.size); - - /* A BIOS request to move our data to 0x2000 */ - ptr = sc->setwin(sc, MBOX); - vW(ptr + 0) = 2; - vW(ptr + 2) = sc->mem_seg + FEPCODESEG; - vW(ptr + 4) = 0; - vW(ptr + 6) = FEPCODESEG; - vW(ptr + 8) = 0; - vW(ptr + 10) = sc->fep.size; - - /* Run the BIOS request */ - outb(sc->port, FEPREQ | FEPMEM); - outb(sc->port, FEPCLR | FEPMEM); - - for (i = 0; W(ptr); i++) { - if (i > hz) { - log(LOG_ERR, "digi%d: FEP/OS move failed\n", - sc->res.unit); - sc->hidewin(sc); - return (EIO); - } - digi_delay(sc, "digifep0", 5); - } - DLOG(DIGIDB_INIT, - (sc->dev, "FEP/OS moved after %d iterations\n", i)); - - /* Clear the confirm word */ - ptr = sc->setwin(sc, FEPSTAT); - vW(ptr + 0) = 0; - - /* A BIOS request to execute the FEP/OS */ - ptr = sc->setwin(sc, MBOX); - vW(ptr + 0) = 0x01; - vW(ptr + 2) = FEPCODESEG; - vW(ptr + 4) = 0x04; - - /* Run the BIOS request */ - outb(sc->port, FEPREQ); - outb(sc->port, FEPCLR); - - ptr = sc->setwin(sc, FEPSTAT); - - break; - - case PCXEM: - case PCIEPCX: - case PCIXR: - DLOG(DIGIDB_INIT, (sc->dev, "Loading FEP/OS\n")); - - cnt = (sc->fep.size < sc->win_size - BIOSOFFSET) ? - sc->fep.size : sc->win_size - BIOSOFFSET; - - ptr = sc->setwin(sc, BIOSOFFSET); - digi_bcopy(sc->fep.data, ptr, cnt); - - if (cnt != sc->fep.size) { - ptr = sc->setwin(sc, BIOSOFFSET + cnt); - digi_bcopy(sc->fep.data + cnt, ptr, - sc->fep.size - cnt); - } - - DLOG(DIGIDB_INIT, (sc->dev, "FEP/OS loaded\n")); - - ptr = sc->setwin(sc, 0xc30); - W(ptr + 4) = 0x1004; - W(ptr + 6) = 0xbfc0; - W(ptr + 0) = 0x03; - W(ptr + 2) = 0x00; - - /* Clear the confirm word */ - ptr = sc->setwin(sc, FEPSTAT); - W(ptr + 0) = 0; - - if (sc->port) - outb(sc->port, 0); /* XXX necessary ? */ - - break; - - case PCCX: - ptr = sc->setwin(sc, 0xd000); - digi_bcopy(sc->fep.data, ptr, sc->fep.size); - - /* A BIOS request to execute the FEP/OS */ - ptr = sc->setwin(sc, 0xc40); - W(ptr + 0) = 1; - W(ptr + 2) = FEPCODE >> 4; - W(ptr + 4) = 4; - - /* Clear the confirm word */ - ptr = sc->setwin(sc, FEPSTAT); - W(ptr + 0) = 0; - - /* Run the BIOS request */ - outb(sc->port, FEPREQ | FEPMEM); /* send interrupt to BIOS */ - outb(sc->port, FEPCLR | FEPMEM); - break; - } - - /* Now wait 'till the FEP/OS has booted */ - for (i = 0; vW(ptr) != *(u_short *)"OS"; i++) { - if (i > 2*hz) { - log(LOG_ERR, "digi%d: FEP/OS start failed " - "(0x%02x != 0x%02x)\n", - sc->res.unit, vW(ptr), *(u_short *)"OS"); - sc->hidewin(sc); - return (EIO); - } - digi_delay(sc, "digifep1", 5); - } - - DLOG(DIGIDB_INIT, (sc->dev, "FEP/OS started after %d iterations\n", i)); - - if (sc->model >= PCXEM) { - ptr = sc->setwin(sc, 0xe04); - vW(ptr) = 2; - ptr = sc->setwin(sc, 0xc02); - sc->numports = vW(ptr); - } else { - ptr = sc->setwin(sc, 0xc22); - sc->numports = vW(ptr); - } - - if (sc->numports == 0) { - device_printf(sc->dev, "%s, 0 ports found\n", sc->name); - sc->hidewin(sc); - return (0); - } - - device_printf(sc->dev, "%s, %d ports found\n", sc->name, sc->numports); - - if (sc->ports) - free(sc->ports, M_TTYS); - sc->ports = malloc(sizeof(struct digi_p) * sc->numports, - M_TTYS, M_WAITOK | M_ZERO); - - /* - * XXX Should read port 0xc90 for an array of 2byte values, 1 per - * port. If the value is 0, the port is broken.... - */ - - ptr = sc->setwin(sc, 0); - - /* We should now init per-port structures */ - bc = (volatile struct board_chan *)(ptr + CHANSTRUCT); - sc->gdata = (volatile struct global_data *)(ptr + FEP_GLOBAL); - - sc->memcmd = ptr + sc->gdata->cstart; - sc->memevent = ptr + sc->gdata->istart; - - for (i = 0; i < sc->numports; i++, bc++) { - port = sc->ports + i; - port->pnum = i; - port->sc = sc; - port->status = ENABLED; - port->bc = bc; - tp = port->tp = ttyalloc(); - tp->t_oproc = digistart; - tp->t_param = digiparam; - tp->t_modem = digimodem; - tp->t_break = digibreak; - tp->t_stop = digistop; - tp->t_cioctl = digisioctl; - tp->t_ioctl = digiioctl; - tp->t_open = digiopen; - tp->t_close = digiclose; - tp->t_sc = port; - - if (sc->model == PCXEVE) { - port->txbuf = ptr + - (((bc->tseg - sc->mem_seg) << 4) & 0x1fff); - port->rxbuf = ptr + - (((bc->rseg - sc->mem_seg) << 4) & 0x1fff); - port->txwin = FEPWIN | ((bc->tseg - sc->mem_seg) >> 9); - port->rxwin = FEPWIN | ((bc->rseg - sc->mem_seg) >> 9); - } else if (sc->model == PCXI || sc->model == PCXE) { - port->txbuf = ptr + ((bc->tseg - sc->mem_seg) << 4); - port->rxbuf = ptr + ((bc->rseg - sc->mem_seg) << 4); - port->txwin = port->rxwin = 0; - } else { - port->txbuf = ptr + - (((bc->tseg - sc->mem_seg) << 4) % sc->win_size); - port->rxbuf = ptr + - (((bc->rseg - sc->mem_seg) << 4) % sc->win_size); - port->txwin = FEPWIN | - (((bc->tseg - sc->mem_seg) << 4) / sc->win_size); - port->rxwin = FEPWIN | - (((bc->rseg - sc->mem_seg) << 4) / sc->win_size); - } - port->txbufsize = bc->tmax + 1; - port->rxbufsize = bc->rmax + 1; - - lowwater = port->txbufsize >> 2; - if (lowwater > 1024) - lowwater = 1024; - sc->setwin(sc, 0); - fepcmd_w(port, STXLWATER, lowwater, 10); - fepcmd_w(port, SRXLWATER, port->rxbufsize >> 2, 10); - fepcmd_w(port, SRXHWATER, (3 * port->rxbufsize) >> 2, 10); - - bc->edelay = 100; - - ttyinitmode(tp, 0, 0); - port->send_ring = 1; /* Default action on signal RI */ - ttycreate(tp, TS_CALLOUT, "D%r%r", sc->res.unit, i); - } - - sc->hidewin(sc); - sc->inttest = timeout(digi_int_test, sc, hz); - /* fepcmd_w(&sc->ports[0], 0xff, 0, 0); */ - sc->status = DIGI_STATUS_ENABLED; - - return (0); -} - -static int -digimodem(struct tty *tp, int sigon, int sigoff) -{ - struct digi_softc *sc; - struct digi_p *port; - int bitand, bitor, mstat; - - port = tp->t_sc; - sc = port->sc; - - if (sigon == 0 && sigoff == 0) { - port->sc->setwin(port->sc, 0); - mstat = port->bc->mstat; - port->sc->hidewin(port->sc); - if (mstat & port->sc->csigs->rts) - sigon |= SER_RTS; - if (mstat & port->cd) - sigon |= SER_DCD; - if (mstat & port->dsr) - sigon |= SER_DSR; - if (mstat & port->sc->csigs->cts) - sigon |= SER_CTS; - if (mstat & port->sc->csigs->ri) - sigon |= SER_RI; - if (mstat & port->sc->csigs->dtr) - sigon |= SER_DTR; - return (sigon); - } - - bitand = 0; - bitor = 0; - - if (sigoff & SER_DTR) - bitand |= port->sc->csigs->dtr; - if (sigoff & SER_RTS) - bitand |= port->sc->csigs->rts; - if (sigon & SER_DTR) - bitor |= port->sc->csigs->dtr; - if (sigon & SER_RTS) - bitor |= port->sc->csigs->rts; - fepcmd_b(port, SETMODEM, bitor, ~bitand, 0); - return (0); -} - -static int -digicopen(struct cdev *dev, int flag, int mode, struct thread *td) -{ - struct digi_softc *sc; - - sc = dev->si_drv1; - if (sc->status != DIGI_STATUS_ENABLED) { - DLOG(DIGIDB_OPEN, (sc->dev, "Cannot open a disabled card\n")); - return (ENXIO); - } - sc->opencnt++; - return (0); -} - -static int -digiopen(struct tty *tp, struct cdev *dev) -{ - int error; - struct digi_softc *sc; - struct digi_p *port; - volatile struct board_chan *bc; - - port = tp->t_sc; - sc = port->sc; - - if (sc->status != DIGI_STATUS_ENABLED) { - DLOG(DIGIDB_OPEN, (sc->dev, "Cannot open a disabled card\n")); - return (ENXIO); - } - bc = port->bc; - - /* - * The device isn't open, so there are no conflicts. - * Initialize it. Initialization is done twice in many - * cases: to preempt sleeping callin opens if we are callout, - * and to complete a callin open after DCD rises. - */ - sc->setwin(sc, 0); - - bc->rout = bc->rin; /* clear input queue */ - bc->idata = 1; - bc->iempty = 1; - bc->ilow = 1; - bc->mint = port->cd | port->sc->csigs->ri; - bc->tin = bc->tout; - if (port->ialtpin) { - port->cd = sc->csigs->dsr; - port->dsr = sc->csigs->cd; - } else { - port->cd = sc->csigs->cd; - port->dsr = sc->csigs->dsr; - } - tp->t_wopeners++; /* XXX required ? */ - error = digiparam(tp, &tp->t_termios); - tp->t_wopeners--; - - return (error); -} - -static int -digicclose(struct cdev *dev, int flag, int mode, struct thread *td) -{ - struct digi_softc *sc; - - sc = dev->si_drv1; - sc->opencnt--; - return (0); -} - -static void -digidtrwakeup(void *chan) -{ - struct digi_p *port = chan; - - port->status &= ~DIGI_DTR_OFF; - wakeup(&port->tp->t_dtr_wait); - port->tp->t_wopeners--; -} - -static void -digiclose(struct tty *tp) -{ - volatile struct board_chan *bc; - struct digi_p *port; - int s; - - port = tp->t_sc; - bc = port->bc; - - s = spltty(); - port->sc->setwin(port->sc, 0); - bc->idata = 0; - bc->iempty = 0; - bc->ilow = 0; - bc->mint = 0; - if ((tp->t_cflag & HUPCL) || - (!tp->t_actout && !(bc->mstat & port->cd) && - !(tp->t_init_in.c_cflag & CLOCAL)) || - !(tp->t_state & TS_ISOPEN)) { - digimodem(tp, 0, SER_DTR | SER_RTS); - if (tp->t_dtr_wait != 0) { - /* Schedule a wakeup of any callin devices */ - tp->t_wopeners++; - timeout(&digidtrwakeup, port, tp->t_dtr_wait); - port->status |= DIGI_DTR_OFF; - } - } - tp->t_actout = FALSE; - wakeup(&tp->t_actout); - wakeup(TSA_CARR_ON(tp)); - splx(s); -} - -/* - * Load module "digi_<mod>.ko" and look for a symbol called digi_mod_<mod>. - * - * Populate sc->bios, sc->fep, and sc->link from this data. - * - * sc->fep.data, sc->bios.data and sc->link.data are malloc()d according - * to their respective sizes. - * - * The module is unloaded when we're done. - */ -static int -digi_loadmoduledata(struct digi_softc *sc) -{ - struct digi_mod *digi_mod; - linker_file_t lf; - char *modfile, *sym; - caddr_t symptr; - int modlen, res; - - KASSERT(sc->bios.data == NULL, ("Uninitialised BIOS variable")); - KASSERT(sc->fep.data == NULL, ("Uninitialised FEP variable")); - KASSERT(sc->link.data == NULL, ("Uninitialised LINK variable")); - KASSERT(sc->module != NULL, ("Uninitialised module name")); - - modlen = strlen(sc->module); - modfile = malloc(modlen + 6, M_TEMP, M_WAITOK); - snprintf(modfile, modlen + 6, "digi_%s", sc->module); - if ((res = linker_reference_module(modfile, NULL, &lf)) != 0) - printf("%s: Failed %d to autoload module\n", modfile, res); - free(modfile, M_TEMP); - if (res != 0) - return (res); - - sym = malloc(modlen + 10, M_TEMP, M_WAITOK); - snprintf(sym, modlen + 10, "digi_mod_%s", sc->module); - symptr = linker_file_lookup_symbol(lf, sym, 0); - free(sym, M_TEMP); - if (symptr == NULL) { - printf("digi_%s.ko: Symbol `%s' not found\n", sc->module, sym); - linker_release_module(NULL, NULL, lf); - return (EINVAL); - } - - digi_mod = (struct digi_mod *)symptr; - if (digi_mod->dm_version != DIGI_MOD_VERSION) { - printf("digi_%s.ko: Invalid version %d (need %d)\n", - sc->module, digi_mod->dm_version, DIGI_MOD_VERSION); - linker_release_module(NULL, NULL, lf); - return (EINVAL); - } - - sc->bios.size = digi_mod->dm_bios.size; - if (sc->bios.size != 0 && digi_mod->dm_bios.data != NULL) { - sc->bios.data = malloc(sc->bios.size, M_TTYS, M_WAITOK); - bcopy(digi_mod->dm_bios.data, sc->bios.data, sc->bios.size); - } - - sc->fep.size = digi_mod->dm_fep.size; - if (sc->fep.size != 0 && digi_mod->dm_fep.data != NULL) { - sc->fep.data = malloc(sc->fep.size, M_TTYS, M_WAITOK); - bcopy(digi_mod->dm_fep.data, sc->fep.data, sc->fep.size); - } - - sc->link.size = digi_mod->dm_link.size; - if (sc->link.size != 0 && digi_mod->dm_link.data != NULL) { - sc->link.data = malloc(sc->link.size, M_TTYS, M_WAITOK); - bcopy(digi_mod->dm_link.data, sc->link.data, sc->link.size); - } - - linker_release_module(NULL, NULL, lf); - - return (0); -} - -static int -digisioctl(struct cdev *dev, u_long cmd, caddr_t data, int fflag, struct thread *td) -{ - struct digi_p *port; - struct digi_softc *sc; - - port = dev->si_drv1; - sc = port->sc; - - switch (cmd) { - case DIGIIO_GETALTPIN: - if (ISINIT(dev)) - *(int *)data = port->ialtpin; - else if (ISLOCK(dev)) - *(int *)data = port->laltpin; - else - return (ENOTTY); - break; - case DIGIIO_SETALTPIN: - if (ISINIT(dev)) { - if (!port->laltpin) { - port->ialtpin = !!*(int *)data; - DLOG(DIGIDB_SET, (sc->dev, - "port%d: initial ALTPIN %s\n", port->pnum, - port->ialtpin ? "set" : "cleared")); - } - } else if (ISLOCK(dev)) { - port->laltpin = !!*(int *)data; - DLOG(DIGIDB_SET, (sc->dev, - "port%d: ALTPIN %slocked\n", - port->pnum, port->laltpin ? "" : "un")); - } else - return (ENOTTY); - break; - default: - return (ENOTTY); - } - return (0); -} - -static int -digicioctl(struct cdev *dev, u_long cmd, caddr_t data, int flag, struct thread *td) -{ - int error; - struct digi_softc *sc; - - sc = dev->si_drv1; - - if (sc->status == DIGI_STATUS_DISABLED) - return (ENXIO); - - switch (cmd) { - case DIGIIO_DEBUG: -#ifdef DEBUG - digi_debug = *(int *)data; - return (0); -#else - device_printf(sc->dev, "DEBUG not defined\n"); - return (ENXIO); -#endif - case DIGIIO_REINIT: - digi_loadmoduledata(sc); - error = digi_init(sc); - digi_freemoduledata(sc); - return (error); - - case DIGIIO_MODEL: - *(enum digi_model *)data = sc->model; - return (0); - - case DIGIIO_IDENT: - return (copyout(sc->name, *(char **)data, - strlen(sc->name) + 1)); - default: - return (ENOIOCTL); - } -} - -static int -digiioctl(struct tty *tp, u_long cmd, void *data, int flag, struct thread *td) -{ - struct digi_softc *sc; - struct digi_p *port; -#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ - defined(COMPAT_FREEBSD4) || defined(COMPAT_43) - int ival; -#endif - - port = tp->t_sc; - sc = port->sc; - if (sc->status == DIGI_STATUS_DISABLED) - return (ENXIO); - - if (!(port->status & ENABLED)) - return (ENXIO); - - switch (cmd) { - case DIGIIO_GETALTPIN: - *(int *)data = !!(port->dsr == sc->csigs->cd); - return (0); - - case DIGIIO_SETALTPIN: - if (!port->laltpin) { - if (*(int *)data) { - DLOG(DIGIDB_SET, (sc->dev, - "port%d: ALTPIN set\n", port->pnum)); - port->cd = sc->csigs->dsr; - port->dsr = sc->csigs->cd; - } else { - DLOG(DIGIDB_SET, (sc->dev, - "port%d: ALTPIN cleared\n", port->pnum)); - port->cd = sc->csigs->cd; - port->dsr = sc->csigs->dsr; - } - } - return (0); -#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ - defined(COMPAT_FREEBSD4) || defined(COMPAT_43) - case _IO('e', 'C'): - ival = IOCPARM_IVAL(data); - data = &ival; - /* FALLTHROUGH */ -#endif - case DIGIIO_RING: - port->send_ring = (u_char)*(int *)data; - break; - default: - return (ENOTTY); - } - return (0); -} - -static void -digibreak(struct tty *tp, int brk) -{ - struct digi_p *port; - - port = tp->t_sc; - - /* - * now it sends 400 millisecond break because I don't know - * how to send an infinite break - */ - if (brk) - fepcmd_w(port, SENDBREAK, 400, 10); -} - -static int -digiparam(struct tty *tp, struct termios *t) -{ - struct digi_softc *sc; - struct digi_p *port; - int cflag; - int iflag; - int hflow; - int s; - int window; - - port = tp->t_sc; - sc = port->sc; - DLOG(DIGIDB_SET, (sc->dev, "port%d: setting parameters\n", port->pnum)); - - if (t->c_ispeed == 0) - t->c_ispeed = t->c_ospeed; - - cflag = ttspeedtab(t->c_ospeed, digispeedtab); - - if (cflag < 0 || (cflag > 0 && t->c_ispeed != t->c_ospeed)) - return (EINVAL); - - s = splclock(); - - window = sc->window; - sc->setwin(sc, 0); - - if (cflag == 0) { /* hangup */ - DLOG(DIGIDB_SET, (sc->dev, "port%d: hangup\n", port->pnum)); - digimodem(port->tp, 0, SER_DTR | SER_RTS); - } else { - digimodem(port->tp, SER_DTR | SER_RTS, 0); - - DLOG(DIGIDB_SET, (sc->dev, "port%d: CBAUD = %d\n", port->pnum, - cflag)); - -#if 0 - /* convert flags to sysV-style values */ - if (t->c_cflag & PARODD) - cflag |= 0x0200; - if (t->c_cflag & PARENB) - cflag |= 0x0100; - if (t->c_cflag & CSTOPB) - cflag |= 0x0080; -#else - /* convert flags to sysV-style values */ - if (t->c_cflag & PARODD) - cflag |= FEP_PARODD; - if (t->c_cflag & PARENB) - cflag |= FEP_PARENB; - if (t->c_cflag & CSTOPB) - cflag |= FEP_CSTOPB; - if (t->c_cflag & CLOCAL) - cflag |= FEP_CLOCAL; -#endif - - cflag |= (t->c_cflag & CSIZE) >> 4; - DLOG(DIGIDB_SET, (sc->dev, "port%d: CFLAG = 0x%x\n", port->pnum, - cflag)); - fepcmd_w(port, SETCFLAGS, (unsigned)cflag, 0); - } - - iflag = - t->c_iflag & (IGNBRK | BRKINT | IGNPAR | PARMRK | INPCK | ISTRIP); - if (port->c_iflag & IXON) - iflag |= 0x400; - if (port->c_iflag & IXANY) - iflag |= 0x800; - if (port->c_iflag & IXOFF) - iflag |= 0x1000; - - DLOG(DIGIDB_SET, (sc->dev, "port%d: set iflag = 0x%x\n", port->pnum, iflag)); - fepcmd_w(port, SETIFLAGS, (unsigned)iflag, 0); - - hflow = 0; - if (t->c_cflag & CDTR_IFLOW) - hflow |= sc->csigs->dtr; - if (t->c_cflag & CRTS_IFLOW) - hflow |= sc->csigs->rts; - if (t->c_cflag & CCTS_OFLOW) - hflow |= sc->csigs->cts; - if (t->c_cflag & CDSR_OFLOW) - hflow |= port->dsr; - if (t->c_cflag & CCAR_OFLOW) - hflow |= port->cd; - - DLOG(DIGIDB_SET, (sc->dev, "port%d: set hflow = 0x%x\n", port->pnum, hflow)); - fepcmd_w(port, SETHFLOW, 0xff00 | (unsigned)hflow, 0); - - DLOG(DIGIDB_SET, (sc->dev, "port%d: set startc(0x%x), stopc(0x%x)\n", - port->pnum, t->c_cc[VSTART], t->c_cc[VSTOP])); - fepcmd_b(port, SONOFFC, t->c_cc[VSTART], t->c_cc[VSTOP], 0); - - if (sc->window != 0) - sc->towin(sc, 0); - if (window != 0) - sc->towin(sc, window); - splx(s); - - return (0); -} - -static void -digi_intr(void *vp) -{ - struct digi_p *port; - char *cxcon; - struct digi_softc *sc; - int ehead, etail; - volatile struct board_chan *bc; - struct tty *tp; - int head, tail; - int wrapmask; - int size, window; - struct event { - u_char pnum; - u_char event; - u_char mstat; - u_char lstat; - } event; - - sc = vp; - - if (sc->status != DIGI_STATUS_ENABLED) { - DLOG(DIGIDB_IRQ, (sc->dev, "interrupt on disabled board !\n")); - return; - } - -#ifdef DIGI_INTERRUPT - microtime(&sc->intr_timestamp); -#endif - - window = sc->window; - sc->setwin(sc, 0); - - if (sc->model >= PCXEM && W(sc->vmem + 0xd00)) { - struct con_bios *con = con_bios_list; - register u_char *ptr; - - ptr = sc->vmem + W(sc->vmem + 0xd00); - while (con) { - if (ptr[1] && W(ptr + 2) == W(con->bios + 2)) - /* Not first block -- exact match */ - break; - - if (W(ptr + 4) >= W(con->bios + 4) && - W(ptr + 4) <= W(con->bios + 6)) - /* Initial search concetrator BIOS */ - break; - } - - if (con == NULL) { - log(LOG_ERR, "digi%d: wanted bios LREV = 0x%04x" - " not found!\n", sc->res.unit, W(ptr + 4)); - W(ptr + 10) = 0; - W(sc->vmem + 0xd00) = 0; - goto eoi; - } - cxcon = con->bios; - W(ptr + 4) = W(cxcon + 4); - W(ptr + 6) = W(cxcon + 6); - if (ptr[1] == 0) - W(ptr + 2) = W(cxcon + 2); - W(ptr + 8) = (ptr[1] << 6) + W(cxcon + 8); - size = W(cxcon + 10) - (ptr[1] << 10); - if (size <= 0) { - W(ptr + 8) = W(cxcon + 8); - W(ptr + 10) = 0; - } else { - if (size > 1024) - size = 1024; - W(ptr + 10) = size; - bcopy(cxcon + (ptr[1] << 10), ptr + 12, size); - } - W(sc->vmem + 0xd00) = 0; - goto eoi; - } - - ehead = sc->gdata->ein; - etail = sc->gdata->eout; - if (ehead == etail) { -#ifdef DEBUG - sc->intr_count++; - if (sc->intr_count % 6000 == 0) { - DLOG(DIGIDB_IRQ, (sc->dev, - "6000 useless polls %x %x\n", ehead, etail)); - sc->intr_count = 0; - } -#endif - goto eoi; - } - while (ehead != etail) { - event = *(volatile struct event *)(sc->memevent + etail); - - etail = (etail + 4) & sc->gdata->imax; - - if (event.pnum >= sc->numports) { - log(LOG_ERR, "digi%d: port %d: got event" - " on nonexisting port\n", sc->res.unit, - event.pnum); - continue; - } - port = &sc->ports[event.pnum]; - bc = port->bc; - tp = port->tp; - - if (!(tp->t_state & TS_ISOPEN) && !tp->t_wopeners) { - DLOG(DIGIDB_IRQ, (sc->dev, - "port %d: event 0x%x on closed port\n", - event.pnum, event.event)); - bc->rout = bc->rin; - bc->idata = 0; - bc->iempty = 0; - bc->ilow = 0; - bc->mint = 0; - continue; - } - if (event.event & ~ALL_IND) - log(LOG_ERR, "digi%d: port%d: ? event 0x%x mstat 0x%x" - " lstat 0x%x\n", sc->res.unit, event.pnum, - event.event, event.mstat, event.lstat); - - if (event.event & DATA_IND) { - DLOG(DIGIDB_IRQ, (sc->dev, "port %d: DATA_IND\n", - event.pnum)); - wrapmask = port->rxbufsize - 1; - head = bc->rin; - tail = bc->rout; - - size = 0; - if (!(tp->t_state & TS_ISOPEN)) { - bc->rout = head; - goto end_of_data; - } - while (head != tail) { - int top; - - DLOG(DIGIDB_INT, (sc->dev, - "port %d: p rx head = %d tail = %d\n", - event.pnum, head, tail)); - top = (head > tail) ? head : wrapmask + 1; - sc->towin(sc, port->rxwin); - size = top - tail; - if (tp->t_state & TS_CAN_BYPASS_L_RINT) { - size = b_to_q((char *)port->rxbuf + - tail, size, &tp->t_rawq); - tail = top - size; - ttwakeup(tp); - } else for (; tail < top;) { - ttyld_rint(tp, port->rxbuf[tail]); - sc->towin(sc, port->rxwin); - size--; - tail++; - if (tp->t_state & TS_TBLOCK) - break; - } - tail &= wrapmask; - sc->setwin(sc, 0); - bc->rout = tail; - head = bc->rin; - if (size) - break; - } - - if (bc->orun) { - CE_RECORD(port, CE_OVERRUN); - log(LOG_ERR, "digi%d: port%d: %s\n", - sc->res.unit, event.pnum, - digi_errortxt(CE_OVERRUN)); - bc->orun = 0; - } -end_of_data: - if (size) { - tp->t_state |= TS_TBLOCK; - port->status |= PAUSE_RX; - DLOG(DIGIDB_RX, (sc->dev, "port %d: pause RX\n", - event.pnum)); - } else { - bc->idata = 1; - } - } - - if (event.event & MODEMCHG_IND) { - DLOG(DIGIDB_MODEM, (sc->dev, "port %d: MODEMCHG_IND\n", - event.pnum)); - - if ((event.mstat ^ event.lstat) & port->cd) { - sc->hidewin(sc); - ttyld_modem(tp, event.mstat & port->cd); - sc->setwin(sc, 0); - wakeup(TSA_CARR_ON(tp)); - } - - if (event.mstat & sc->csigs->ri) { - DLOG(DIGIDB_RI, (sc->dev, "port %d: RING\n", - event.pnum)); - if (port->send_ring) { - ttyld_rint(tp, 'R'); - ttyld_rint(tp, 'I'); - ttyld_rint(tp, 'N'); - ttyld_rint(tp, 'G'); - ttyld_rint(tp, '\r'); - ttyld_rint(tp, '\n'); - } - } - } - if (event.event & BREAK_IND) { - DLOG(DIGIDB_MODEM, (sc->dev, "port %d: BREAK_IND\n", - event.pnum)); - ttyld_rint(tp, TTY_BI); - } - if (event.event & (LOWTX_IND | EMPTYTX_IND)) { - DLOG(DIGIDB_IRQ, (sc->dev, "port %d:%s%s\n", - event.pnum, - event.event & LOWTX_IND ? " LOWTX" : "", - event.event & EMPTYTX_IND ? " EMPTYTX" : "")); - ttyld_start(tp); - } - } - sc->gdata->eout = etail; -eoi: - if (sc->window != 0) - sc->towin(sc, 0); - if (window != 0) - sc->towin(sc, window); -} - -static void -digistart(struct tty *tp) -{ - struct digi_p *port; - struct digi_softc *sc; - volatile struct board_chan *bc; - int head, tail; - int size, ocount, totcnt = 0; - int s; - int wmask; - - port = tp->t_sc; - sc = port->sc; - bc = port->bc; - - wmask = port->txbufsize - 1; - - s = spltty(); - port->lcc = tp->t_outq.c_cc; - sc->setwin(sc, 0); - if (!(tp->t_state & TS_TBLOCK)) { - if (port->status & PAUSE_RX) { - DLOG(DIGIDB_RX, (sc->dev, "port %d: resume RX\n", - port->pnum)); - /* - * CAREFUL - braces are needed here if the DLOG is - * optimised out! - */ - } - port->status &= ~PAUSE_RX; - bc->idata = 1; - } - if (!(tp->t_state & TS_TTSTOP) && port->status & PAUSE_TX) { - DLOG(DIGIDB_TX, (sc->dev, "port %d: resume TX\n", port->pnum)); - port->status &= ~PAUSE_TX; - fepcmd_w(port, RESUMETX, 0, 10); - } - if (tp->t_outq.c_cc == 0) - tp->t_state &= ~TS_BUSY; - else - tp->t_state |= TS_BUSY; - - head = bc->tin; - while (tp->t_outq.c_cc != 0) { - tail = bc->tout; - DLOG(DIGIDB_INT, (sc->dev, "port%d: s tx head = %d tail = %d\n", - port->pnum, head, tail)); - - if (head < tail) - size = tail - head - 1; - else { - size = port->txbufsize - head; - if (tail == 0) - size--; - } - - if (size == 0) - break; - sc->towin(sc, port->txwin); - ocount = q_to_b(&tp->t_outq, port->txbuf + head, size); - totcnt += ocount; - head += ocount; - head &= wmask; - sc->setwin(sc, 0); - bc->tin = head; - bc->iempty = 1; - bc->ilow = 1; - } - port->lostcc = tp->t_outq.c_cc; - tail = bc->tout; - if (head < tail) - size = port->txbufsize - tail + head; - else - size = head - tail; - - port->lbuf = size; - DLOG(DIGIDB_INT, (sc->dev, "port%d: s total cnt = %d\n", port->pnum, totcnt)); - ttwwakeup(tp); - splx(s); -} - -static void -digistop(struct tty *tp, int rw) -{ - struct digi_softc *sc; - struct digi_p *port; - - port = tp->t_sc; - sc = port->sc; - - DLOG(DIGIDB_TX, (sc->dev, "port %d: pause TX\n", port->pnum)); - port->status |= PAUSE_TX; - fepcmd_w(port, PAUSETX, 0, 10); -} - -static void -fepcmd(struct digi_p *port, int cmd, int op1, int ncmds) -{ - u_char *mem; - unsigned tail, head; - int count, n; - - mem = port->sc->memcmd; - - port->sc->setwin(port->sc, 0); - - head = port->sc->gdata->cin; - mem[head + 0] = cmd; - mem[head + 1] = port->pnum; - *(u_short *)(mem + head + 2) = op1; - - head = (head + 4) & port->sc->gdata->cmax; - port->sc->gdata->cin = head; - - for (count = FEPTIMEOUT; count > 0; count--) { - head = port->sc->gdata->cin; - tail = port->sc->gdata->cout; - n = (head - tail) & port->sc->gdata->cmax; - - if (n <= ncmds * sizeof(short) * 4) - break; - } - if (count == 0) - log(LOG_ERR, "digi%d: port%d: timeout on FEP command\n", - port->sc->res.unit, port->pnum); -} - -const char * -digi_errortxt(int id) -{ - static const char *error_desc[] = { - "silo overflow", - "interrupt-level buffer overflow", - "tty-level buffer overflow", - }; - - KASSERT(id >= 0 && id < nitems(error_desc), - ("Unexpected digi error id %d\n", id)); - - return (error_desc[id]); -} - -int -digi_attach(struct digi_softc *sc) -{ - sc->res.ctldev = make_dev(&digi_csw, - sc->res.unit << 16, UID_ROOT, GID_WHEEL, - 0600, "digi%r.ctl", sc->res.unit); - sc->res.ctldev->si_drv1 = sc; - - digi_loadmoduledata(sc); - digi_init(sc); - digi_freemoduledata(sc); - - return (0); -} - -static int -digi_inuse(struct digi_softc *sc) -{ - int i; - struct digi_p *port; - - port = &sc->ports[0]; - for (i = 0; i < sc->numports; i++, port++) - if (port->tp->t_state & TS_ISOPEN) { - DLOG(DIGIDB_INIT, (sc->dev, "port%d: busy\n", i)); - return (1); - } else if (port->tp->t_wopeners || port->opencnt) { - DLOG(DIGIDB_INIT, (sc->dev, "port%d: blocked in open\n", - i)); - return (1); - } - return (0); -} - -static void -digi_free_state(struct digi_softc *sc) -{ - int i; - - /* Blow it all away */ - - for (i = 0; i < sc->numports; i++) - ttygone(sc->ports[i].tp); - - /* XXX: this might be better done as a ttypurge method */ - untimeout(digi_poll, sc, sc->callout); - callout_handle_init(&sc->callout); - untimeout(digi_int_test, sc, sc->inttest); - callout_handle_init(&sc->inttest); - - for (i = 0; i < sc->numports; i++) - ttyfree(sc->ports[i].tp); - - bus_teardown_intr(sc->dev, sc->res.irq, sc->res.irqHandler); -#ifdef DIGI_INTERRUPT - if (sc->res.irq != NULL) { - bus_release_resource(dev, SYS_RES_IRQ, sc->res.irqrid, - sc->res.irq); - sc->res.irq = NULL; - } -#endif - if (sc->numports) { - KASSERT(sc->ports, ("digi%d: Lost my ports ?", sc->res.unit)); - free(sc->ports, M_TTYS); - sc->ports = NULL; - sc->numports = 0; - } - - sc->status = DIGI_STATUS_NOTINIT; -} - -int -digi_detach(device_t dev) -{ - struct digi_softc *sc = device_get_softc(dev); - - DLOG(DIGIDB_INIT, (sc->dev, "detaching\n")); - - /* If we're INIT'd, numports must be 0 */ - KASSERT(sc->numports == 0 || sc->status != DIGI_STATUS_NOTINIT, - ("digi%d: numports(%d) & status(%d) are out of sync", - sc->res.unit, sc->numports, (int)sc->status)); - - if (digi_inuse(sc)) - return (EBUSY); - - digi_free_state(sc); - - destroy_dev(sc->res.ctldev); - - if (sc->res.mem != NULL) { - bus_release_resource(dev, SYS_RES_MEMORY, sc->res.mrid, - sc->res.mem); - sc->res.mem = NULL; - } - if (sc->res.io != NULL) { - bus_release_resource(dev, SYS_RES_IOPORT, sc->res.iorid, - sc->res.io); - sc->res.io = NULL; - } - - return (0); -} - -int -digi_shutdown(device_t dev) -{ - return (0); -} - -MODULE_VERSION(digi, 1); diff --git a/sys/dev/digi/digi.h b/sys/dev/digi/digi.h deleted file mode 100644 index 7be171bde763..000000000000 --- a/sys/dev/digi/digi.h +++ /dev/null @@ -1,199 +0,0 @@ -/*- - * Copyright (c) 2001 Brian Somers <brian@Awfulhak.org> - * based on work by Slawa Olhovchenkov - * John Prince <johnp@knight-trosoft.com> - * Eric Hernes - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - */ - -#define W(p) (*(u_int16_t *)(p)) -#define vW(p) (*(u_int16_t volatile *)(p)) -#define D(p) (*(u_int32_t *)(p)) -#define vD(p) (*(u_int32_t volatile *)(p)) - -#define CE_OVERRUN 0 -#define CE_INTERRUPT_BUF_OVERFLOW 1 -#define CE_TTY_BUF_OVERFLOW 2 -#define CE_NTYPES 3 -#define CE_RECORD(com, errnum) (++(com)->delta_error_counts[errnum]) - -/*#define DIGI_INTERRUPT*/ - -#ifndef DEBUG -#define DEBUG -#endif - -#ifdef DEBUG -extern unsigned digi_debug; -#define DLOG(level, args) if (digi_debug & (level)) device_printf args -#else -#define DLOG(level, args) -#endif - - -struct digi_softc; - -/* digiboard port structure */ -struct digi_p { - struct digi_softc *sc; - - int status; -#define ENABLED 1 -#define DIGI_DTR_OFF 2 -#define PAUSE_TX 8 -#define PAUSE_RX 16 - - int opencnt; - u_short txbufsize; - u_short rxbufsize; - volatile struct board_chan *bc; - struct tty *tp; - - u_char *txbuf; - u_char *rxbuf; - u_char txwin; - u_char rxwin; - - u_char pnum; /* port number */ - - u_char modemfake; /* Modem values to be forced */ - u_char mstat; - u_char modem; /* Force values */ - - /* - * The high level of the driver never reads status registers directly - * because there would be too many side effects to handle conveniently. - * Instead, it reads copies of the registers stored here by the - * interrupt handler. - */ - u_char last_modem_status; /* last MSR read by intr handler */ - u_char prev_modem_status; /* last MSR handled by high level */ - - u_long bytes_in, bytes_out; - u_int delta_error_counts[CE_NTYPES]; - u_long error_counts; - - tcflag_t c_iflag; /* hold true IXON/IXOFF/IXANY */ - int lcc, lostcc, lbuf; - u_char send_ring; - - unsigned laltpin : 1; /* Alternate pin settings locked */ - unsigned ialtpin : 1; /* Initial alternate pin settings */ - - int cd; /* Depends on the altpin setting */ - int dsr; -}; - -/* - * Map TIOCM_* values to digiboard values - */ -struct digi_control_signals { - int rts; - int cd; - int dsr; - int cts; - int ri; - int dtr; -}; - -enum digi_board_status { - DIGI_STATUS_NOTINIT, - DIGI_STATUS_ENABLED, - DIGI_STATUS_DISABLED -}; - -/* Digiboard per-board structure */ -struct digi_softc { - /* struct board_info */ - device_t dev; - - const char *name; - enum digi_board_status status; - u_short numports; /* number of ports on card */ - u_int port; /* I/O port */ - u_int wport; /* window select I/O port */ - - struct { - struct resource *mem; - int mrid; - struct resource *irq; - int irqrid; - struct resource *io; - int iorid; - void *irqHandler; - int unit; - struct cdev *ctldev; - } res; - - u_char *vmem; /* virtual memory address */ - u_char *memcmd; - volatile u_char *memevent; - long pmem; /* physical memory address */ - - struct { - u_char *data; - size_t size; - } bios, fep, link; - -#ifdef DIGI_INTERRUPT - struct timeval intr_timestamp; -#endif - - struct digi_p *ports; /* pointer to array of port descriptors */ - volatile struct global_data *gdata; - u_char window; /* saved window */ - int win_size; - int win_bits; - int mem_size; - int mem_seg; - enum digi_model model; - const struct digi_control_signals *csigs; - int opencnt; - unsigned pcibus : 1; /* On a PCI bus ? */ - - struct callout_handle callout; /* poll timeout handle */ - struct callout_handle inttest; /* int test timeout handle */ - const char *module; - - u_char *(*setwin)(struct digi_softc *_sc, unsigned _addr); - void (*hidewin)(struct digi_softc *_sc); - void (*towin)(struct digi_softc *_sc, int _win); -#ifdef DEBUG - int intr_count; -#endif -}; - -extern devclass_t digi_devclass; - -extern const struct digi_control_signals digi_xixe_signals; -extern const struct digi_control_signals digi_normal_signals; - -const char *digi_errortxt(int _id); -int digi_attach(struct digi_softc *); -int digi_detach(device_t _dev); -int digi_shutdown(device_t _dev); -void digi_delay(struct digi_softc *_sc, const char *_txt, - u_long _timo); diff --git a/sys/dev/digi/digi_isa.c b/sys/dev/digi/digi_isa.c deleted file mode 100644 index ea12875fd47a..000000000000 --- a/sys/dev/digi/digi_isa.c +++ /dev/null @@ -1,474 +0,0 @@ -/*- - * Copyright (c) 2001 Brian Somers <brian@Awfulhak.org> - * based on work by Slawa Olhovchenkov - * John Prince <johnp@knight-trosoft.com> - * Eric Hernes - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -/*- - * TODO: - * Figure out how to make the non-Xi boards use memory addresses other - * than 0xd0000 !!! - */ - -#include <sys/param.h> - -#include <sys/systm.h> -#include <sys/kernel.h> -#include <sys/module.h> -#include <sys/tty.h> -#include <sys/bus.h> -#include <machine/bus.h> -#include <sys/rman.h> -#include <machine/resource.h> -#include <vm/vm.h> -#include <vm/pmap.h> - -#include <sys/digiio.h> -#include <dev/digi/digireg.h> -#include <dev/digi/digi.h> - -/* Valid i/o addresses are any of these with either 0 or 4 added */ -static u_long digi_validio[] = { - 0x100, 0x110, 0x120, 0x200, 0x220, 0x300, 0x320 -}; -#define DIGI_NVALIDIO nitems(digi_validio) -#define IO_SIZE 0x04 - -static u_long digi_validmem[] = { - 0x80000, 0x88000, 0x90000, 0x98000, 0xa0000, 0xa8000, 0xb0000, 0xb8000, - 0xc0000, 0xc8000, 0xd0000, 0xd8000, 0xe0000, 0xe8000, 0xf0000, 0xf8000, - 0xf0000000, 0xf1000000, 0xf2000000, 0xf3000000, 0xf4000000, 0xf5000000, - 0xf6000000, 0xf7000000, 0xf8000000, 0xf9000000, 0xfa000000, 0xfb000000, - 0xfc000000, 0xfd000000, 0xfe000000, 0xff000000 -}; -#define DIGI_NVALIDMEM nitems(digi_validmem) - -static u_char * -digi_isa_setwin(struct digi_softc *sc, unsigned int addr) -{ - outb(sc->wport, sc->window = FEPWIN | (addr >> sc->win_bits)); - return (sc->vmem + (addr % sc->win_size)); -} - -static u_char * -digi_xi_setwin(struct digi_softc *sc, unsigned int addr) -{ - outb(sc->wport, sc->window = FEPMEM); - return (sc->vmem + addr); -} - -static void -digi_isa_hidewin(struct digi_softc *sc) -{ - outb(sc->wport, sc->window = 0); - /* outb(sc->port, 0); */ -} - -static void -digi_isa_towin(struct digi_softc *sc, int win) -{ - outb(sc->wport, sc->window = win); -} - -static void -digi_xi_towin(struct digi_softc *sc, int win) -{ - outb(sc->wport, sc->window = FEPMEM); -} - -/* - * sc->port should be set and its resource allocated. - */ -static int -digi_isa_check(struct digi_softc *sc) -{ - int i, ident; - - sc->name = NULL; - - /* Invasive probe - reset the card */ - outb(sc->port, FEPRST); - for (i = 0; (inb(sc->port) & FEPMASK) != FEPRST; i++) { - if (i == hz / 10) - return (0); - digi_delay(sc, "digirst", 1); - } - DLOG(DIGIDB_INIT, (sc->dev, "got reset after %d iterations\n", i)); - - ident = inb(sc->port); - - /* - * NOTE, this probe is all wrong. I haven't got the data sheets ! - */ - - DLOG(DIGIDB_INIT, (sc->dev, "board type is 0x%x\n", ident)); - if (ident & 0x1) { - switch (ident) { - case 0x05: - case 0x15: - case 0x25: - case 0x35: - sc->model = PCXI; - sc->csigs = &digi_xixe_signals; - switch (ident & 0x30) { - case 0: - sc->name = "Digiboard PC/Xi 64K"; - sc->mem_seg = 0xf000; - sc->win_size = 0x10000; - sc->win_bits = 16; - break; - case 0x10: - sc->name = "Digiboard PC/Xi 128K"; - sc->mem_seg = 0xE000; - sc->win_size = 0x20000; - sc->win_bits = 17; - break; - case 0x20: - sc->name = "Digiboard PC/Xi 256K"; - sc->mem_seg = 0xC000; - sc->win_size = 0x40000; - sc->win_bits = 18; - break; - case 0x30: - sc->name = "Digiboard PC/Xi 512K"; - sc->mem_seg = 0x8000; - sc->win_size = 0x80000; - sc->win_bits = 19; - break; - } - sc->wport = sc->port; - sc->module = "Xe"; - - sc->setwin = digi_xi_setwin; - sc->hidewin = digi_isa_hidewin; - sc->towin = digi_xi_towin; - break; - - case 0xf5: - sc->name = "Digiboard PC/Xem"; - sc->model = PCXEM; - sc->csigs = &digi_normal_signals; - sc->win_size = 0x8000; - sc->win_bits = 15; - sc->wport = sc->port + 1; - sc->module = "Xem"; - - sc->setwin = digi_isa_setwin; - sc->hidewin = digi_isa_hidewin; - sc->towin = digi_isa_towin; - break; - } - } else { - outb(sc->port, 1); - ident = inb(sc->port); - - if (ident & 0x1) { - device_printf(sc->dev, "PC/Xm is unsupported\n"); - return (0); - } - - sc->mem_seg = 0xf000; - - if (!(ident & 0xc0)) { - sc->name = "Digiboard PC/Xe 64K"; - sc->model = PCXE; - sc->csigs = &digi_xixe_signals; - sc->win_size = 0x10000; - sc->win_bits = 16; - sc->wport = sc->port; - } else { - sc->name = "Digiboard PC/Xe 64/8K (windowed)"; - sc->model = PCXEVE; - sc->csigs = &digi_normal_signals; - sc->win_size = 0x2000; - sc->win_bits = 13; - sc->wport = sc->port + 1; - } - sc->module = "Xe"; - - sc->setwin = digi_isa_setwin; - sc->hidewin = digi_isa_hidewin; - sc->towin = digi_isa_towin; - } - - return (sc->name != NULL); -} - -static int -digi_isa_probe(device_t dev) -{ - struct digi_softc *sc = device_get_softc(dev); - int i; - - KASSERT(sc, ("digi%d: softc not allocated in digi_isa_probe\n", - device_get_unit(dev))); - - bzero(sc, sizeof(*sc)); - sc->status = DIGI_STATUS_NOTINIT; - sc->dev = dev; - sc->res.unit = device_get_unit(dev); - if (sc->res.unit >= 16) { - /* Don't overflow our control mask */ - device_printf(dev, "At most 16 digiboards may be used\n"); - return (ENXIO); - } - DLOG(DIGIDB_INIT, (sc->dev, "probing on isa bus\n")); - - /* Check that we've got a valid i/o address */ - if ((sc->port = bus_get_resource_start(dev, SYS_RES_IOPORT, 0)) == 0) { - DLOG(DIGIDB_INIT, (sc->dev, "io address not given\n")); - return (ENXIO); - } - for (i = 0; i < DIGI_NVALIDIO; i++) - if (sc->port == digi_validio[i] || - sc->port == digi_validio[i] + 4) - break; - if (i == DIGI_NVALIDIO) { - device_printf(dev, "0x%03x: Invalid i/o address\n", sc->port); - return (ENXIO); - } - - /* Ditto for our memory address */ - if ((sc->pmem = bus_get_resource_start(dev, SYS_RES_MEMORY, 0)) == 0) - return (ENXIO); - for (i = 0; i < DIGI_NVALIDMEM; i++) - if (sc->pmem == digi_validmem[i]) - break; - if (i == DIGI_NVALIDMEM) { - device_printf(dev, "0x%lx: Invalid memory address\n", sc->pmem); - return (ENXIO); - } - if ((sc->pmem & 0xfffffful) != sc->pmem) { - device_printf(dev, "0x%lx: Memory address not supported\n", - sc->pmem); - return (ENXIO); - } - sc->vmem = (u_char *)sc->pmem; - - DLOG(DIGIDB_INIT, (sc->dev, "isa? port 0x%03x mem 0x%lx\n", - sc->port, sc->pmem)); - - /* Temporarily map our io ports */ - sc->res.iorid = 0; - sc->res.io = bus_alloc_resource_anywhere(dev, SYS_RES_IOPORT, - &sc->res.iorid, IO_SIZE, RF_ACTIVE); - if (sc->res.io == NULL) - return (ENXIO); - - /* Check the type of card and get internal memory characteristics */ - if (!digi_isa_check(sc)) { - bus_release_resource(dev, SYS_RES_IOPORT, sc->res.iorid, - sc->res.io); - return (ENXIO); - } - - /* Temporarily map our memory */ - sc->res.mrid = 0; - sc->res.mem = bus_alloc_resource_anywhere(dev, SYS_RES_MEMORY, - &sc->res.mrid, sc->win_size, 0); - if (sc->res.mem == NULL) { - device_printf(dev, "0x%lx: Memory range is in use\n", sc->pmem); - bus_release_resource(dev, SYS_RES_IOPORT, sc->res.iorid, - sc->res.io); - return (ENXIO); - } - - outb(sc->port, FEPCLR); /* drop RESET */ - sc->hidewin(sc); /* set initial sc->window */ - - bus_release_resource(dev, SYS_RES_MEMORY, sc->res.mrid, sc->res.mem); - bus_release_resource(dev, SYS_RES_IOPORT, sc->res.iorid, sc->res.io); - - /* Let digi_isa_attach() know what we've found */ - bus_set_resource(dev, SYS_RES_IOPORT, 0, sc->port, IO_SIZE); - bus_set_resource(dev, SYS_RES_MEMORY, 0, sc->pmem, sc->win_size); - - DLOG(DIGIDB_INIT, (sc->dev, "Probe returns -10\n")); - - return (-10); /* Other drivers are preferred for now */ -} - -static int -digi_isa_attach(device_t dev) -{ - struct digi_softc *sc = device_get_softc(dev); - int i, t, res; - u_char *ptr; - int reset; - u_long msize, iosize; - long scport; - - KASSERT(sc, ("digi%d: softc not allocated in digi_isa_attach\n", - device_get_unit(dev))); - - res = ENXIO; - bzero(sc, sizeof(*sc)); - sc->status = DIGI_STATUS_NOTINIT; - sc->dev = dev; - sc->res.unit = device_get_unit(dev); - DLOG(DIGIDB_INIT, (sc->dev, "attaching\n")); - - bus_get_resource(dev, SYS_RES_IOPORT, 0, &scport, &iosize); - bus_get_resource(dev, SYS_RES_MEMORY, 0, &sc->pmem, &msize); - sc->port = scport; - /* sc->altpin = !!(device_get_flags(dev) & DGBFLAG_ALTPIN); */ - - /* Allocate resources (verified in digi_isa_probe()) */ - sc->res.iorid = 0; - sc->res.io = bus_alloc_resource_anywhere(dev, SYS_RES_IOPORT, - &sc->res.iorid, iosize, RF_ACTIVE); - if (sc->res.io == NULL) - return (ENXIO); - - /* Check the type of card and get internal memory characteristics */ - DLOG(DIGIDB_INIT, (sc->dev, "Checking card type\n")); - if (!digi_isa_check(sc)) - goto failed; - - callout_handle_init(&sc->callout); - callout_handle_init(&sc->inttest); - - sc->res.mrid = 0; - sc->res.mem = bus_alloc_resource_anywhere(dev, SYS_RES_MEMORY, - &sc->res.mrid, msize, RF_ACTIVE); - if (sc->res.mem == NULL) { - device_printf(dev, "0x%lx: Memory range is in use\n", sc->pmem); - sc->hidewin(sc); - goto failed; - } - - /* map memory */ - sc->vmem = pmap_mapdev(sc->pmem, msize); - - DLOG(DIGIDB_INIT, (sc->dev, "internal memory segment 0x%x\n", - sc->mem_seg)); - - /* Start by resetting the card */ - reset = FEPRST; - if (sc->model == PCXI) - reset |= FEPMEM; - - outb(sc->port, reset); - for (i = 0; (inb(sc->port) & FEPMASK) != reset; i++) { - if (i == hz / 10) { - device_printf(dev, "1st reset failed\n"); - sc->hidewin(sc); - goto failed; - } - digi_delay(sc, "digirst1", 1); - } - DLOG(DIGIDB_INIT, (sc->dev, "got reset after %d iterations\n", i)); - - if (sc->model != PCXI) { - t = (sc->pmem >> 8) & 0xffe0; - if (sc->model == PCXEVE) - t |= 0x10; /* enable windowing */ - outb(sc->port + 2, t & 0xff); - outb(sc->port + 3, t >> 8); - } - - if (sc->model == PCXI || sc->model == PCXE) { - outb(sc->port, FEPRST | FEPMEM); - for (i = 0; (inb(sc->port) & FEPMASK) != FEPRST; i++) { - if (i == hz / 10) { - device_printf(dev, - "memory reservation failed (0x%02x)\n", - inb(sc->port)); - sc->hidewin(sc); - goto failed; - } - digi_delay(sc, "digirst2", 1); - } - DLOG(DIGIDB_INIT, (sc->dev, "got memory after %d iterations\n", - i)); - } - - DLOG(DIGIDB_INIT, (sc->dev, "short memory test\n")); - ptr = sc->setwin(sc, BOTWIN); - vD(ptr) = 0xA55A3CC3; - if (vD(ptr) != 0xA55A3CC3) { - device_printf(dev, "1st memory test failed\n"); - sc->hidewin(sc); - goto failed; - } - DLOG(DIGIDB_INIT, (sc->dev, "1st memory test ok\n")); - - ptr = sc->setwin(sc, TOPWIN); - vD(ptr) = 0x5AA5C33C; - if (vD(ptr) != 0x5AA5C33C) { - device_printf(dev, "2nd memory test failed\n"); - sc->hidewin(sc); - goto failed; - } - DLOG(DIGIDB_INIT, (sc->dev, "2nd memory test ok\n")); - - ptr = sc->setwin(sc, BIOSCODE + ((0xf000 - sc->mem_seg) << 4)); - vD(ptr) = 0x5AA5C33C; - if (vD(ptr) != 0x5AA5C33C) { - device_printf(dev, "3rd (BIOS) memory test failed\n"); - sc->hidewin(sc); - goto failed; - } - DLOG(DIGIDB_INIT, (sc->dev, "3rd memory test ok\n")); - - if ((res = digi_attach(sc)) == 0) - return (0); - -failed: - if (sc->res.mem != NULL) { - bus_release_resource(dev, SYS_RES_MEMORY, sc->res.mrid, - sc->res.mem); - sc->res.mem = NULL; - } - if (sc->res.io != NULL) { - bus_release_resource(dev, SYS_RES_IOPORT, sc->res.iorid, - sc->res.io); - sc->res.io = NULL; - } - - return (res); -} - -static device_method_t digi_isa_methods[] = { - /* Device interface */ - DEVMETHOD(device_probe, digi_isa_probe), - DEVMETHOD(device_attach, digi_isa_attach), - DEVMETHOD(device_detach, digi_detach), - DEVMETHOD(device_shutdown, digi_shutdown), - - DEVMETHOD_END -}; - -static driver_t digi_isa_drv = { - "digi", - digi_isa_methods, - sizeof(struct digi_softc), -}; -DRIVER_MODULE(digi, isa, digi_isa_drv, digi_devclass, 0, 0); diff --git a/sys/dev/digi/digi_mod.h b/sys/dev/digi/digi_mod.h deleted file mode 100644 index f1e8ced70374..000000000000 --- a/sys/dev/digi/digi_mod.h +++ /dev/null @@ -1,37 +0,0 @@ -/*- - * Copyright (c) 2001 Brian Somers <brian@Awfulhak.org> - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - */ - -#define DIGI_MOD_VERSION 1 - -struct digi_mod { - int dm_version; - struct { - const u_char *data; - size_t size; - } dm_bios, dm_fep, dm_link; -}; diff --git a/sys/dev/digi/digi_pci.c b/sys/dev/digi/digi_pci.c deleted file mode 100644 index 55814cda4bc4..000000000000 --- a/sys/dev/digi/digi_pci.c +++ /dev/null @@ -1,231 +0,0 @@ -/*- - * Copyright (c) 2001 Brian Somers <brian@Awfulhak.org> - * based on work by Slawa Olhovchenkov - * John Prince <johnp@knight-trosoft.com> - * Eric Hernes - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include <sys/param.h> - -#include <sys/systm.h> -#include <sys/kernel.h> -#include <sys/module.h> -#include <sys/tty.h> -#include <sys/bus.h> -#include <machine/bus.h> -#include <sys/rman.h> -#include <machine/resource.h> -#include <vm/vm.h> -#include <vm/pmap.h> -#include <dev/pci/pcivar.h> - -#include <sys/digiio.h> -#include <dev/digi/digireg.h> -#include <dev/digi/digi.h> -#include <dev/digi/digi_pci.h> - -static u_char * -digi_pci_setwin(struct digi_softc *sc, unsigned int addr) -{ - return (sc->vmem + addr); -} - -static void -digi_pci_hidewin(struct digi_softc *sc) -{ - return; -} - -static void -digi_pci_towin(struct digi_softc *sc, int win) -{ - return; -} - -static int -digi_pci_probe(device_t dev) -{ - unsigned int device_id = pci_get_devid(dev); - - if (device_get_unit(dev) >= 16) { - /* Don't overflow our control mask */ - device_printf(dev, "At most 16 digiboards may be used\n"); - return (ENXIO); - } - - if ((device_id & 0xffff) != PCI_VENDOR_DIGI) - return (ENXIO); - - switch (device_id >> 16) { - case PCI_DEVICE_EPC: - case PCI_DEVICE_XEM: - case PCI_DEVICE_XR: - case PCI_DEVICE_CX: - case PCI_DEVICE_XRJ: - case PCI_DEVICE_EPCJ: - case PCI_DEVICE_920_4: - case PCI_DEVICE_920_8: - case PCI_DEVICE_920_2: - return (BUS_PROBE_DEFAULT); - } - - return (ENXIO); -} - -static int -digi_pci_attach(device_t dev) -{ - struct digi_softc *sc; - u_int32_t device_id; -#ifdef DIGI_INTERRUPT - int retVal = 0; -#endif - - sc = device_get_softc(dev); - KASSERT(sc, ("digi%d: softc not allocated in digi_pci_attach\n", - device_get_unit(dev))); - - bzero(sc, sizeof(*sc)); - sc->dev = dev; - sc->res.unit = device_get_unit(dev); - - device_id = pci_get_devid(dev); - switch (device_id >> 16) { - case PCI_DEVICE_EPC: - sc->name = "Digiboard PCI EPC/X ASIC"; - sc->res.mrid = 0x10; - sc->model = PCIEPCX; - sc->module = "EPCX_PCI"; - break; - case PCI_DEVICE_XEM: - sc->name = "Digiboard PCI PC/Xem ASIC"; - sc->res.mrid = 0x10; - sc->model = PCXEM; - sc->module = "Xem"; - break; - case PCI_DEVICE_XR: - sc->name = "Digiboard PCI PC/Xr ASIC"; - sc->res.mrid = 0x10; - sc->model = PCIXR; - sc->module = "Xr"; - break; - case PCI_DEVICE_CX: - sc->name = "Digiboard PCI C/X ASIC"; - sc->res.mrid = 0x10; - sc->model = PCCX; - sc->module = "CX_PCI"; - break; - case PCI_DEVICE_XRJ: - sc->name = "Digiboard PCI PC/Xr PLX"; - sc->res.mrid = 0x18; - sc->model = PCIXR; - sc->module = "Xr"; - break; - case PCI_DEVICE_EPCJ: - sc->name = "Digiboard PCI EPC/X PLX"; - sc->res.mrid = 0x18; - sc->model = PCIEPCX; - sc->module = "EPCX_PCI"; - break; - case PCI_DEVICE_920_4: /* Digi PCI4r 920 */ - sc->name = "Digiboard PCI4r 920"; - sc->res.mrid = 0x10; - sc->model = PCIXR; - sc->module = "Xr"; - break; - case PCI_DEVICE_920_8: /* Digi PCI8r 920 */ - sc->name = "Digiboard PCI8r 920"; - sc->res.mrid = 0x10; - sc->model = PCIXR; - sc->module = "Xr"; - break; - case PCI_DEVICE_920_2: /* Digi PCI2r 920 */ - sc->name = "Digiboard PCI2r 920"; - sc->res.mrid = 0x10; - sc->model = PCIXR; - sc->module = "Xr"; - break; - default: - device_printf(dev, "Unknown device id = %08x\n", device_id); - return (ENXIO); - } - - pci_write_config(dev, 0x40, 0, 4); - pci_write_config(dev, 0x46, 0, 4); - - sc->res.mem = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &sc->res.mrid, - RF_ACTIVE); - -#ifdef DIGI_INTERRUPT - sc->res.irqrid = 0; - sc->res.irq = bus_alloc_resource_any(dev, SYS_RES_IRQ, &sc->res.irqrid, - RF_SHAREABLE | RF_ACTIVE); - if (sc->res.irq == NULL) { - device_printf(dev, "couldn't map interrupt\n"); - return (ENXIO); - } - retVal = bus_setup_intr(dev, sc->res.irq, INTR_TYPE_TTY, - digiintr, sc, &sc->res.irqHandler); -#else - DLOG(DIGIDB_IRQ, (sc->dev, "Interrupt support compiled out\n")); -#endif - - sc->vmem = rman_get_virtual(sc->res.mem); - sc->pmem = vtophys(sc->vmem); - sc->pcibus = 1; - sc->win_size = 0x200000; - sc->win_bits = 21; - sc->csigs = &digi_normal_signals; - sc->status = DIGI_STATUS_NOTINIT; - callout_handle_init(&sc->callout); - callout_handle_init(&sc->inttest); - sc->setwin = digi_pci_setwin; - sc->hidewin = digi_pci_hidewin; - sc->towin = digi_pci_towin; - - PCIPORT = FEPRST; - - return (digi_attach(sc)); -} - -static device_method_t digi_pci_methods[] = { - /* Device interface */ - DEVMETHOD(device_probe, digi_pci_probe), - DEVMETHOD(device_attach, digi_pci_attach), - DEVMETHOD(device_detach, digi_detach), - DEVMETHOD(device_shutdown, digi_shutdown), - - DEVMETHOD_END -}; - -static driver_t digi_pci_drv = { - "digi", - digi_pci_methods, - sizeof(struct digi_softc), -}; -DRIVER_MODULE(digi, pci, digi_pci_drv, digi_devclass, 0, 0); diff --git a/sys/dev/digi/digi_pci.h b/sys/dev/digi/digi_pci.h deleted file mode 100644 index 2273d0048ded..000000000000 --- a/sys/dev/digi/digi_pci.h +++ /dev/null @@ -1,42 +0,0 @@ -/*- - * Copyright (c) 2001 Brian Somers <brian@Awfulhak.org> - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - */ - -#define PCI_VENDOR_DIGI 0x114F -#define PCI_DEVICE_EPC 0x0002 -#define PCI_DEVICE_RIGHTSWITCH 0x0003 /* For testing */ -#define PCI_DEVICE_XEM 0x0004 -#define PCI_DEVICE_XR 0x0005 -#define PCI_DEVICE_CX 0x0006 -#define PCI_DEVICE_XRJ 0x0009 /* Jupiter boards with */ -#define PCI_DEVICE_EPCJ 0x000a /* PLX 9060 chip for PCI */ -#define PCI_DEVICE_XR_422 0x0012 /* Xr-422 */ -#define PCI_DEVICE_920_4 0x0026 /* XR-Plus 920 K, 4 port */ -#define PCI_DEVICE_920_8 0x0027 /* XR-Plus 920 K, 8 port */ -#define PCI_DEVICE_920_2 0x0034 /* XR-Plus 920 K, 2 port */ - -#define PCIPORT sc->vmem[0x200000] diff --git a/sys/dev/digi/digireg.h b/sys/dev/digi/digireg.h deleted file mode 100644 index 4a1641f92d7e..000000000000 --- a/sys/dev/digi/digireg.h +++ /dev/null @@ -1,208 +0,0 @@ -/*- - * Copyright (c) 2001 Brian Somers <brian@Awfulhak.org> - * based on work by Slawa Olhovchenkov - * John Prince <johnp@knight-trosoft.com> - * Eric Hernes - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - */ - -struct global_data { - volatile u_short cin; - volatile u_short cout; - volatile u_short cstart; - volatile u_short cmax; - volatile u_short ein; - volatile u_short eout; - volatile u_short istart; - volatile u_short imax; -}; - - -struct board_chan { - volatile u_short tpjmp; - volatile u_short tcjmp; - volatile u_short fil1; - volatile u_short rpjmp; - - volatile u_short tseg; - volatile u_short tin; - volatile u_short tout; - volatile u_short tmax; - - volatile u_short rseg; - volatile u_short rin; - volatile u_short rout; - volatile u_short rmax; - - volatile u_short tlow; - volatile u_short rlow; - volatile u_short rhigh; - volatile u_short incr; - - volatile u_short dev; - volatile u_short edelay; - volatile u_short blen; - volatile u_short btime; - - volatile u_short iflag; - volatile u_short oflag; - volatile u_short cflag; - volatile u_short gmask; - - volatile u_short col; - volatile u_short delay; - volatile u_short imask; - volatile u_short tflush; - - volatile u_char _1[16]; - - volatile u_char num; - volatile u_char ract; - volatile u_char bstat; - volatile u_char tbusy; - volatile u_char iempty; - volatile u_char ilow; - volatile u_char idata; - volatile u_char eflag; - - volatile u_char tflag; - volatile u_char rflag; - volatile u_char xmask; - volatile u_char xval; - volatile u_char mstat; - volatile u_char mchange; - volatile u_char mint; - volatile u_char lstat; - - volatile u_char mtran; - volatile u_char orun; - volatile u_char startca; - volatile u_char stopca; - volatile u_char startc; - volatile u_char stopc; - volatile u_char vnext; - volatile u_char hflow; - - volatile u_char fillc; - volatile u_char ochar; - volatile u_char omask; - volatile u_char _2; - - volatile u_char _3[28]; -}; - -#define SRXLWATER 0xe0 -#define SRXHWATER 0xe1 -#define STPTR 0xe2 -#define PAUSETX 0xe3 -#define RESUMETX 0xe4 -#define SAUXONOFFC 0xe6 -#define SENDBREAK 0xe8 -#define SETMODEM 0xe9 -#define SETIFLAGS 0xeA -#define SONOFFC 0xeB -#define STXLWATER 0xeC -#define PAUSERX 0xeE -#define RESUMERX 0xeF -#define RESETCHAN 0xf0 -#define SETBUFFER 0xf2 -#define SETCOOKED 0xf3 -#define SETHFLOW 0xf4 -#define SETCFLAGS 0xf5 -#define SETVNEXT 0xf6 -#define SETBSLICE 0xf7 -#define SETRSMODE 0xfd -#define SETCMDACK 0xfe -#define RESERV 0xff - -#define BREAK_IND 0x01 -#define LOWTX_IND 0x02 -#define EMPTYTX_IND 0x04 -#define DATA_IND 0x08 -#define MODEMCHG_IND 0x20 -#define RECV_OVR_IND 0x40 -#define CMD_ACK_IND 0x40 -#define UART_OVR_IND 0x80 - -#define ALL_IND (BREAK_IND|LOWTX_IND|EMPTYTX_IND|DATA_IND|MODEMCHG_IND) - -#define FEPTIMEOUT 2000 - -#define FEPCLR 0x0 -#define FEPMEM 0x2 -#define FEPRST 0x4 -#define FEPREQ 0x8 -#define FEPWIN 0x80 -#define FEPMASK 0xe -/* #define FEPMASK 0x4 */ - -#define BOTWIN 0x100L -#define TOPWIN 0xFF00L -#define MISCGLOBAL 0x0C00L -#define FEPCODESEG 0x0200L - -/* #define BIOSCODE 0xff800 */ /* Window 15, offset 7800h */ -#define FEPCODE 0x0d000 - -#define FEP_CSTART 0x400L -#define FEP_CMAX 0x800L -#define FEP_ISTART 0x800L -#define FEP_IMAX 0xC00L -#define MBOX 0xC40L -#define FEP_CIN 0xD10L -#define FEP_GLOBAL 0xD10L -#define FEP_EIN 0xD18L -#define FEPSTAT 0xD20L -#define CHANSTRUCT 0x1000L -#define RXTXBUF 0x4000L - -#define BIOSOFFSET 0x1000L -#define BIOSCODE 0xf800L -#define FEPOFFSET 0x2000L - -/* c_cflag bits */ -#define FEP_CSIZE 0x000030 -#define FEP_CS5 0x000000 -#define FEP_CS6 0x000010 -#define FEP_CS7 0x000020 -#define FEP_CS8 0x000030 -#define FEP_CSTOPB 0x000040 -#define FEP_CREAD 0x000080 -#define FEP_PARENB 0x000100 -#define FEP_PARODD 0x000200 -#define FEP_CLOCAL 0x000800 -#define FEP_FASTBAUD 0x000400 - -/* c_iflag bits */ -#define FEP_IGNBRK 0000001 -#define FEP_BRKINT 0000002 -#define FEP_IGNPAR 0000004 -#define FEP_PARMRK 0000010 -#define FEP_INPCK 0000020 -#define FEP_ISTRIP 0000040 -#define FEP_IXON 0002000 -#define FEP_IXANY 0004000 -#define FEP_IXOFF 0010000 diff --git a/sys/dev/en/if_en_pci.c b/sys/dev/en/if_en_pci.c deleted file mode 100644 index d164dc49f943..000000000000 --- a/sys/dev/en/if_en_pci.c +++ /dev/null @@ -1,496 +0,0 @@ -/* $NetBSD: if_en_pci.c,v 1.1 1996/06/22 02:00:31 chuck Exp $ */ -/*- - * Copyright (c) 1996 Charles D. Cranor and Washington University. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by Charles D. Cranor and - * Washington University. - * 4. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -/* - * i f _ e n _ p c i . c - * - * author: Chuck Cranor <chuck@ccrc.wustl.edu> - * started: spring, 1996. - * - * FreeBSD PCI glue for the eni155p card. - * thanks to Matt Thomas for figuring out FreeBSD vs NetBSD vs etc.. diffs. - */ - -#include <sys/param.h> -#include <sys/kernel.h> -#include <sys/module.h> -#include <sys/systm.h> -#include <sys/socket.h> -#include <sys/sysctl.h> -#include <sys/condvar.h> - -#include <sys/bus.h> -#include <machine/bus.h> -#include <sys/rman.h> -#include <machine/resource.h> - -#include <vm/uma.h> - -#include <net/if.h> -#include <net/if_var.h> -#include <net/if_atm.h> -#include <net/if_media.h> -#include <net/if_types.h> - -#include <dev/pci/pcivar.h> -#include <dev/pci/pcireg.h> - -#include <dev/utopia/utopia.h> -#include <dev/en/midwayreg.h> -#include <dev/en/midwayvar.h> - -MODULE_DEPEND(en, pci, 1, 1, 1); -MODULE_DEPEND(en, atm, 1, 1, 1); -MODULE_DEPEND(en, utopia, 1, 1, 1); - -/* - * local structures - */ -struct en_pci_softc { - /* bus independent stuff */ - struct en_softc esc; /* includes "device" structure */ - - /* freebsd newbus glue */ - struct resource *res; /* resource descriptor for registers */ - struct resource *irq; /* resource descriptor for interrupt */ - void *ih; /* interrupt handle */ -}; - -static void eni_get_macaddr(device_t, struct en_pci_softc *); -static void adp_get_macaddr(struct en_pci_softc *); - -/* - * address of config base memory address register in PCI config space - * (this is card specific) - */ -#define PCI_CBMA PCIR_BAR(0) - -/* - * tonga (pci bridge). ENI cards only! - */ -#define EN_TONGA 0x60 /* PCI config addr of tonga reg */ - -#define TONGA_SWAP_DMA 0x80 /* endian swap control */ -#define TONGA_SWAP_BYTE 0x40 -#define TONGA_SWAP_WORD 0x20 -#define TONGA_READ_MULT 0x00 -#define TONGA_READ_MEM 0x04 -#define TONGA_READ_IVAN 0x08 -#define TONGA_READ_KEN 0x0C - -/* - * adaptec pci bridge. ADP cards only! - */ -#define ADP_PCIREG 0x050040 /* PCI control register */ - -#define ADP_PCIREG_RESET 0x1 /* reset card */ -#define ADP_PCIREG_IENABLE 0x2 /* interrupt enable */ -#define ADP_PCIREG_SWAP_WORD 0x4 /* swap byte on slave access */ -#define ADP_PCIREG_SWAP_DMA 0x8 /* swap byte on DMA */ - -#define PCI_VENDOR_EFFICIENTNETS 0x111a /* Efficent Networks */ -#define PCI_PRODUCT_EFFICIENTNETS_ENI155PF 0x0000 /* ENI-155P ATM */ -#define PCI_PRODUCT_EFFICIENTNETS_ENI155PA 0x0002 /* ENI-155P ATM */ -#define PCI_VENDOR_ADP 0x9004 /* adaptec */ -#define PCI_PRODUCT_ADP_AIC5900 0x5900 -#define PCI_PRODUCT_ADP_AIC5905 0x5905 -#define PCI_VENDOR(x) ((x) & 0xFFFF) -#define PCI_CHIPID(x) (((x) >> 16) & 0xFFFF) - -/* - * bus specific reset function [ADP only!] - */ -static void -adp_busreset(void *v) -{ - struct en_softc *sc = (struct en_softc *)v; - uint32_t dummy; - - bus_space_write_4(sc->en_memt, sc->en_base, ADP_PCIREG, - ADP_PCIREG_RESET); - DELAY(1000); /* let it reset */ - dummy = bus_space_read_4(sc->en_memt, sc->en_base, ADP_PCIREG); - bus_space_write_4(sc->en_memt, sc->en_base, ADP_PCIREG, - (ADP_PCIREG_SWAP_DMA | ADP_PCIREG_IENABLE)); - dummy = bus_space_read_4(sc->en_memt, sc->en_base, ADP_PCIREG); - if ((dummy & (ADP_PCIREG_SWAP_WORD | ADP_PCIREG_SWAP_DMA)) != - ADP_PCIREG_SWAP_DMA) - device_printf(sc->dev, "%s: Adaptec ATM did NOT reset!\n", - __func__); -} - -/***********************************************************************/ - -/* - * autoconfig stuff - */ -static int -en_pci_probe(device_t dev) -{ - - switch (pci_get_vendor(dev)) { - - case PCI_VENDOR_EFFICIENTNETS: - switch (pci_get_device(dev)) { - - case PCI_PRODUCT_EFFICIENTNETS_ENI155PF: - case PCI_PRODUCT_EFFICIENTNETS_ENI155PA: - device_set_desc(dev, "Efficient Networks ENI-155p"); - return (BUS_PROBE_DEFAULT); - } - break; - - case PCI_VENDOR_ADP: - switch (pci_get_device(dev)) { - - case PCI_PRODUCT_ADP_AIC5900: - case PCI_PRODUCT_ADP_AIC5905: - device_set_desc(dev, "Adaptec 155 ATM"); - return (BUS_PROBE_DEFAULT); - } - break; - } - return (ENXIO); -} - -static int -en_pci_attach(device_t dev) -{ - struct en_softc *sc; - struct en_pci_softc *scp; - int rid, error = 0; - - sc = device_get_softc(dev); - scp = (struct en_pci_softc *)sc; - sc->dev = dev; - sc->ifp = if_alloc(IFT_ATM); - if (sc->ifp == NULL) { - device_printf(dev, "can not if_alloc()\n"); - error = ENOSPC; - goto fail; - } - - if_initname(sc->ifp, device_get_name(dev), - device_get_unit(dev)); - - /* - * Enable bus mastering. - */ - pci_enable_busmaster(dev); - - /* - * Map control/status registers. - */ - rid = PCI_CBMA; - scp->res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, - RF_ACTIVE); - if (scp->res == NULL) { - device_printf(dev, "could not map memory\n"); - if_free(sc->ifp); - error = ENXIO; - goto fail; - } - - sc->en_memt = rman_get_bustag(scp->res); - sc->en_base = rman_get_bushandle(scp->res); - - /* - * Allocate our interrupt. - */ - rid = 0; - scp->irq = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid, - RF_SHAREABLE | RF_ACTIVE); - if (scp->irq == NULL) { - device_printf(dev, "could not map interrupt\n"); - bus_release_resource(dev, SYS_RES_MEMORY, PCI_CBMA, scp->res); - if_free(sc->ifp); - error = ENXIO; - goto fail; - } - - sc->ipl = 1; /* XXX (required to enable interrupt on midway) */ - - /* figure out if we are an adaptec card or not */ - sc->is_adaptec = (pci_get_vendor(dev) == PCI_VENDOR_ADP) ? 1 : 0; - - /* - * set up pci bridge - */ - if (sc->is_adaptec) { - adp_get_macaddr(scp); - sc->en_busreset = adp_busreset; - adp_busreset(sc); - } else { - eni_get_macaddr(dev, scp); - sc->en_busreset = NULL; - pci_write_config(dev, EN_TONGA, TONGA_SWAP_DMA | TONGA_READ_IVAN, 4); - } - - /* - * Common attach stuff - */ - if ((error = en_attach(sc)) != 0) { - device_printf(dev, "attach failed\n"); - bus_teardown_intr(dev, scp->irq, scp->ih); - bus_release_resource(dev, SYS_RES_IRQ, 0, scp->irq); - bus_release_resource(dev, SYS_RES_MEMORY, PCI_CBMA, scp->res); - if_free(sc->ifp); - goto fail; - } - - /* - * Do the interrupt SETUP last just before returning - */ - error = bus_setup_intr(dev, scp->irq, INTR_TYPE_NET, - NULL, en_intr, sc, &scp->ih); - if (error) { - en_reset(sc); - atm_ifdetach(sc->ifp); - device_printf(dev, "could not setup irq\n"); - bus_release_resource(dev, SYS_RES_IRQ, 0, scp->irq); - bus_release_resource(dev, SYS_RES_MEMORY, PCI_CBMA, scp->res); - en_destroy(sc); - if_free(sc->ifp); - goto fail; - } - - return (0); - - fail: - return (error); -} - -/* - * Detach the adapter - */ -static int -en_pci_detach(device_t dev) -{ - struct en_softc *sc = device_get_softc(dev); - struct en_pci_softc *scp = (struct en_pci_softc *)sc; - - /* - * Stop DMA and drop transmit queue. - */ - if ((sc->ifp->if_drv_flags & IFF_DRV_RUNNING)) { - device_printf(sc->dev, "still running\n"); - sc->ifp->if_drv_flags &= ~IFF_DRV_RUNNING; - } - - /* - * Close down routes etc. - */ - en_reset(sc); - atm_ifdetach(sc->ifp); - - /* - * Deallocate resources. - */ - bus_teardown_intr(dev, scp->irq, scp->ih); - bus_release_resource(dev, SYS_RES_IRQ, 0, scp->irq); - bus_release_resource(dev, SYS_RES_MEMORY, PCI_CBMA, scp->res); - - /* - * Free all the driver internal resources - */ - en_destroy(sc); - if_free(sc->ifp); - - return (0); -} - -static int -en_pci_shutdown(device_t dev) -{ - struct en_pci_softc *psc = device_get_softc(dev); - - en_reset(&psc->esc); - DELAY(10); /* is this necessary? */ - - return (0); -} - -/* - * Get the MAC address from an Adaptec board. No idea how to get - * serial number or other stuff, because I have no documentation for that - * card. - */ -static void -adp_get_macaddr(struct en_pci_softc *scp) -{ - struct en_softc * sc = (struct en_softc *)scp; - int lcv; - - for (lcv = 0; lcv < sizeof(IFP2IFATM(sc->ifp)->mib.esi); lcv++) - IFP2IFATM(sc->ifp)->mib.esi[lcv] = bus_space_read_1(sc->en_memt, - sc->en_base, MID_ADPMACOFF + lcv); -} - -/* - * Read station (MAC) address from serial EEPROM. - * derived from linux drivers/atm/eni.c by Werner Almesberger, EPFL LRC. - */ -#define EN_PROM_MAGIC 0x0c -#define EN_PROM_DATA 0x02 -#define EN_PROM_CLK 0x01 -#define EN_ESI 64 -#define EN_SERIAL 112 - -/* - * Read a byte from the given address in the EEPROM - */ -static uint8_t -eni_get_byte(device_t dev, uint32_t *data, u_int address) -{ - int j; - uint8_t tmp; - - address = (address << 1) + 1; - - /* start operation */ - *data |= EN_PROM_DATA ; - pci_write_config(dev, EN_TONGA, *data, 4); - *data |= EN_PROM_CLK ; - pci_write_config(dev, EN_TONGA, *data, 4); - *data &= ~EN_PROM_DATA ; - pci_write_config(dev, EN_TONGA, *data, 4); - *data &= ~EN_PROM_CLK ; - pci_write_config(dev, EN_TONGA, *data, 4); - /* send address with serial line */ - for ( j = 7 ; j >= 0 ; j --) { - *data = ((address >> j) & 1) ? (*data | EN_PROM_DATA) : - (*data & ~EN_PROM_DATA); - pci_write_config(dev, EN_TONGA, *data, 4); - *data |= EN_PROM_CLK ; - pci_write_config(dev, EN_TONGA, *data, 4); - *data &= ~EN_PROM_CLK ; - pci_write_config(dev, EN_TONGA, *data, 4); - } - /* get ack */ - *data |= EN_PROM_DATA ; - pci_write_config(dev, EN_TONGA, *data, 4); - *data |= EN_PROM_CLK ; - pci_write_config(dev, EN_TONGA, *data, 4); - *data = pci_read_config(dev, EN_TONGA, 4); - *data &= ~EN_PROM_CLK ; - pci_write_config(dev, EN_TONGA, *data, 4); - *data |= EN_PROM_DATA ; - pci_write_config(dev, EN_TONGA, *data, 4); - - tmp = 0; - - for ( j = 7 ; j >= 0 ; j --) { - tmp <<= 1; - *data |= EN_PROM_DATA ; - pci_write_config(dev, EN_TONGA, *data, 4); - *data |= EN_PROM_CLK ; - pci_write_config(dev, EN_TONGA, *data, 4); - *data = pci_read_config(dev, EN_TONGA, 4); - if(*data & EN_PROM_DATA) tmp |= 1; - *data &= ~EN_PROM_CLK ; - pci_write_config(dev, EN_TONGA, *data, 4); - *data |= EN_PROM_DATA ; - pci_write_config(dev, EN_TONGA, *data, 4); - } - /* get ack */ - *data |= EN_PROM_DATA ; - pci_write_config(dev, EN_TONGA, *data, 4); - *data |= EN_PROM_CLK ; - pci_write_config(dev, EN_TONGA, *data, 4); - *data = pci_read_config(dev, EN_TONGA, 4); - *data &= ~EN_PROM_CLK ; - pci_write_config(dev, EN_TONGA, *data, 4); - *data |= EN_PROM_DATA ; - pci_write_config(dev, EN_TONGA, *data, 4); - - return (tmp); -} - -/* - * Get MAC address and other stuff from the EEPROM - */ -static void -eni_get_macaddr(device_t dev, struct en_pci_softc *scp) -{ - struct en_softc * sc = (struct en_softc *)scp; - int i; - uint32_t data, t_data; - - t_data = pci_read_config(dev, EN_TONGA, 4) & 0xffffff00; - - data = EN_PROM_MAGIC | EN_PROM_DATA | EN_PROM_CLK; - pci_write_config(dev, EN_TONGA, data, 4); - - for (i = 0; i < sizeof(IFP2IFATM(sc->ifp)->mib.esi); i ++) - IFP2IFATM(sc->ifp)->mib.esi[i] = eni_get_byte(dev, &data, i + EN_ESI); - - IFP2IFATM(sc->ifp)->mib.serial = 0; - for (i = 0; i < 4; i++) { - IFP2IFATM(sc->ifp)->mib.serial <<= 8; - IFP2IFATM(sc->ifp)->mib.serial |= eni_get_byte(dev, &data, i + EN_SERIAL); - } - /* stop operation */ - data &= ~EN_PROM_DATA; - pci_write_config(dev, EN_TONGA, data, 4); - data |= EN_PROM_CLK; - pci_write_config(dev, EN_TONGA, data, 4); - data |= EN_PROM_DATA; - pci_write_config(dev, EN_TONGA, data, 4); - pci_write_config(dev, EN_TONGA, t_data, 4); -} - -/* - * Driver infrastructure - */ -static device_method_t en_methods[] = { - /* Device interface */ - DEVMETHOD(device_probe, en_pci_probe), - DEVMETHOD(device_attach, en_pci_attach), - DEVMETHOD(device_detach, en_pci_detach), - DEVMETHOD(device_shutdown, en_pci_shutdown), - - { 0, 0 } -}; - -static driver_t en_driver = { - "en", - en_methods, - sizeof(struct en_pci_softc), -}; - -static devclass_t en_devclass; - -DRIVER_MODULE(en, pci, en_driver, en_devclass, en_modevent, 0); diff --git a/sys/dev/en/midway.c b/sys/dev/en/midway.c deleted file mode 100644 index bce650b00ae4..000000000000 --- a/sys/dev/en/midway.c +++ /dev/null @@ -1,3367 +0,0 @@ -/* $NetBSD: midway.c,v 1.30 1997/09/29 17:40:38 chuck Exp $ */ -/* (sync'd to midway.c 1.68) */ - -/*- - * Copyright (c) 1996 Charles D. Cranor and Washington University. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by Charles D. Cranor and - * Washington University. - * 4. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -/* - * - * m i d w a y . c e n i 1 5 5 d r i v e r - * - * author: Chuck Cranor <chuck@ccrc.wustl.edu> - * started: spring, 1996 (written from scratch). - * - * notes from the author: - * Extra special thanks go to Werner Almesberger, EPFL LRC. Werner's - * ENI driver was especially useful in figuring out how this card works. - * I would also like to thank Werner for promptly answering email and being - * generally helpful. - */ - -#define EN_DIAG -#define EN_DDBHOOK 1 /* compile in ddb functions */ - -/* - * Note on EN_ENIDMAFIX: the byte aligner on the ENI version of the card - * appears to be broken. it works just fine if there is no load... however - * when the card is loaded the data get corrupted. to see this, one only - * has to use "telnet" over ATM. do the following command in "telnet": - * cat /usr/share/misc/termcap - * "telnet" seems to generate lots of 1023 byte mbufs (which make great - * use of the byte aligner). watch "netstat -s" for checksum errors. - * - * I further tested this by adding a function that compared the transmit - * data on the card's SRAM with the data in the mbuf chain _after_ the - * "transmit DMA complete" interrupt. using the "telnet" test I got data - * mismatches where the byte-aligned data should have been. using ddb - * and en_dumpmem() I verified that the DTQs fed into the card were - * absolutely correct. thus, we are forced to concluded that the ENI - * hardware is buggy. note that the Adaptec version of the card works - * just fine with byte DMA. - * - * bottom line: we set EN_ENIDMAFIX to 1 to avoid byte DMAs on the ENI - * card. - */ - -#if defined(DIAGNOSTIC) && !defined(EN_DIAG) -#define EN_DIAG /* link in with master DIAG option */ -#endif - -#define EN_COUNT(X) (X)++ - -#ifdef EN_DEBUG - -#undef EN_DDBHOOK -#define EN_DDBHOOK 1 - -/* - * This macro removes almost all the EN_DEBUG conditionals in the code that make - * to code a good deal less readable. - */ -#define DBG(SC, FL, PRINT) do { \ - if ((SC)->debug & DBG_##FL) { \ - device_printf((SC)->dev, "%s: "#FL": ", __func__); \ - printf PRINT; \ - printf("\n"); \ - } \ - } while (0) - -enum { - DBG_INIT = 0x0001, /* debug attach/detach */ - DBG_TX = 0x0002, /* debug transmitting */ - DBG_SERV = 0x0004, /* debug service interrupts */ - DBG_IOCTL = 0x0008, /* debug ioctls */ - DBG_VC = 0x0010, /* debug VC handling */ - DBG_INTR = 0x0020, /* debug interrupts */ - DBG_DMA = 0x0040, /* debug DMA probing */ - DBG_IPACKETS = 0x0080, /* print input packets */ - DBG_REG = 0x0100, /* print all register access */ - DBG_LOCK = 0x0200, /* debug locking */ -}; - -#else /* EN_DEBUG */ - -#define DBG(SC, FL, PRINT) do { } while (0) - -#endif /* EN_DEBUG */ - -#include "opt_inet.h" -#include "opt_natm.h" -#include "opt_ddb.h" - -#ifdef DDB -#undef EN_DDBHOOK -#define EN_DDBHOOK 1 -#endif - -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/queue.h> -#include <sys/sockio.h> -#include <sys/socket.h> -#include <sys/mbuf.h> -#include <sys/endian.h> -#include <sys/stdint.h> -#include <sys/lock.h> -#include <sys/mutex.h> -#include <sys/condvar.h> -#include <vm/uma.h> - -#include <net/if.h> -#include <net/if_var.h> -#include <net/if_media.h> -#include <net/if_atm.h> - -#if defined(NATM) || defined(INET) || defined(INET6) -#include <netinet/in.h> -#if defined(INET) || defined(INET6) -#include <netinet/if_atm.h> -#endif -#endif - -#ifdef NATM -#include <netnatm/natm.h> -#endif - -#include <sys/bus.h> -#include <machine/bus.h> -#include <sys/rman.h> -#include <sys/module.h> -#include <sys/sysctl.h> -#include <sys/malloc.h> -#include <machine/resource.h> -#include <dev/utopia/utopia.h> -#include <dev/en/midwayreg.h> -#include <dev/en/midwayvar.h> - -#include <net/bpf.h> - -/* - * params - */ -#ifndef EN_TXHIWAT -#define EN_TXHIWAT (64 * 1024) /* max 64 KB waiting to be DMAd out */ -#endif - -SYSCTL_DECL(_hw_atm); - -/* - * dma tables - * - * The plan is indexed by the number of words to transfer. - * The maximum index is 15 for 60 words. - */ -struct en_dmatab { - uint8_t bcode; /* code */ - uint8_t divshift; /* byte divisor */ -}; - -static const struct en_dmatab en_dmaplan[] = { - { 0, 0 }, /* 0 */ { MIDDMA_WORD, 2}, /* 1 */ - { MIDDMA_2WORD, 3}, /* 2 */ { MIDDMA_WORD, 2}, /* 3 */ - { MIDDMA_4WORD, 4}, /* 4 */ { MIDDMA_WORD, 2}, /* 5 */ - { MIDDMA_2WORD, 3}, /* 6 */ { MIDDMA_WORD, 2}, /* 7 */ - { MIDDMA_8WORD, 5}, /* 8 */ { MIDDMA_WORD, 2}, /* 9 */ - { MIDDMA_2WORD, 3}, /* 10 */ { MIDDMA_WORD, 2}, /* 11 */ - { MIDDMA_4WORD, 4}, /* 12 */ { MIDDMA_WORD, 2}, /* 13 */ - { MIDDMA_2WORD, 3}, /* 14 */ { MIDDMA_WORD, 2}, /* 15 */ - { MIDDMA_16WORD,6}, /* 16 */ -}; - -/* - * prototypes - */ -#ifdef EN_DDBHOOK -int en_dump(int unit, int level); -int en_dumpmem(int,int,int); -#endif -static void en_close_finish(struct en_softc *sc, struct en_vcc *vc); - -#define EN_LOCK(SC) do { \ - DBG(SC, LOCK, ("ENLOCK %d\n", __LINE__)); \ - mtx_lock(&sc->en_mtx); \ - } while (0) -#define EN_UNLOCK(SC) do { \ - DBG(SC, LOCK, ("ENUNLOCK %d\n", __LINE__)); \ - mtx_unlock(&sc->en_mtx); \ - } while (0) -#define EN_CHECKLOCK(sc) mtx_assert(&sc->en_mtx, MA_OWNED) - -/* - * While a transmit mbuf is waiting to get transmit DMA resources we - * need to keep some information with it. We don't want to allocate - * additional memory for this so we stuff it into free fields in the - * mbuf packet header. Neither the checksum fields nor the rcvif field are used - * so use these. - */ -#define TX_AAL5 0x1 /* transmit AAL5 PDU */ -#define TX_HAS_TBD 0x2 /* TBD did fit into mbuf */ -#define TX_HAS_PAD 0x4 /* padding did fit into mbuf */ -#define TX_HAS_PDU 0x8 /* PDU trailer did fit into mbuf */ - -#define MBUF_SET_TX(M, VCI, FLAGS, DATALEN, PAD, MAP) do { \ - (M)->m_pkthdr.csum_data = (VCI) | ((FLAGS) << MID_VCI_BITS); \ - (M)->m_pkthdr.csum_flags = ((DATALEN) & 0xffff) | \ - ((PAD & 0x3f) << 16); \ - (M)->m_pkthdr.rcvif = (void *)(MAP); \ - } while (0) - -#define MBUF_GET_TX(M, VCI, FLAGS, DATALEN, PAD, MAP) do { \ - (VCI) = (M)->m_pkthdr.csum_data & ((1 << MID_VCI_BITS) - 1); \ - (FLAGS) = ((M)->m_pkthdr.csum_data >> MID_VCI_BITS) & 0xf; \ - (DATALEN) = (M)->m_pkthdr.csum_flags & 0xffff; \ - (PAD) = ((M)->m_pkthdr.csum_flags >> 16) & 0x3f; \ - (MAP) = (void *)((M)->m_pkthdr.rcvif); \ - } while (0) - - -#define EN_WRAPADD(START, STOP, CUR, VAL) do { \ - (CUR) = (CUR) + (VAL); \ - if ((CUR) >= (STOP)) \ - (CUR) = (START) + ((CUR) - (STOP)); \ - } while (0) - -#define WORD_IDX(START, X) (((X) - (START)) / sizeof(uint32_t)) - -#define SETQ_END(SC, VAL) ((SC)->is_adaptec ? \ - ((VAL) | (MID_DMA_END >> 4)) : \ - ((VAL) | (MID_DMA_END))) - -/* - * The dtq and drq members are set for each END entry in the corresponding - * card queue entry. It is used to find out, when a buffer has been - * finished DMAing and can be freed. - * - * We store sc->dtq and sc->drq data in the following format... - * the 0x80000 ensures we != 0 - */ -#define EN_DQ_MK(SLOT, LEN) (((SLOT) << 20) | (LEN) | (0x80000)) -#define EN_DQ_SLOT(X) ((X) >> 20) -#define EN_DQ_LEN(X) ((X) & 0x3ffff) - -/* - * Variables - */ -static uma_zone_t en_vcc_zone; - -/***********************************************************************/ - -/* - * en_read{x}: read a word from the card. These are the only functions - * that read from the card. - */ -static __inline uint32_t -en_readx(struct en_softc *sc, uint32_t r) -{ - uint32_t v; - -#ifdef EN_DIAG - if (r > MID_MAXOFF || (r % 4)) - panic("en_read out of range, r=0x%x", r); -#endif - v = bus_space_read_4(sc->en_memt, sc->en_base, r); - return (v); -} - -static __inline uint32_t -en_read(struct en_softc *sc, uint32_t r) -{ - uint32_t v; - -#ifdef EN_DIAG - if (r > MID_MAXOFF || (r % 4)) - panic("en_read out of range, r=0x%x", r); -#endif - v = bus_space_read_4(sc->en_memt, sc->en_base, r); - DBG(sc, REG, ("en_read(%#x) -> %08x", r, v)); - return (v); -} - -/* - * en_write: write a word to the card. This is the only function that - * writes to the card. - */ -static __inline void -en_write(struct en_softc *sc, uint32_t r, uint32_t v) -{ -#ifdef EN_DIAG - if (r > MID_MAXOFF || (r % 4)) - panic("en_write out of range, r=0x%x", r); -#endif - DBG(sc, REG, ("en_write(%#x) <- %08x", r, v)); - bus_space_write_4(sc->en_memt, sc->en_base, r, v); -} - -/* - * en_k2sz: convert KBytes to a size parameter (a log2) - */ -static __inline int -en_k2sz(int k) -{ - switch(k) { - case 1: return (0); - case 2: return (1); - case 4: return (2); - case 8: return (3); - case 16: return (4); - case 32: return (5); - case 64: return (6); - case 128: return (7); - default: - panic("en_k2sz"); - } - return (0); -} -#define en_log2(X) en_k2sz(X) - -#if 0 -/* - * en_b2sz: convert a DMA burst code to its byte size - */ -static __inline int -en_b2sz(int b) -{ - switch (b) { - case MIDDMA_WORD: return (1*4); - case MIDDMA_2WMAYBE: - case MIDDMA_2WORD: return (2*4); - case MIDDMA_4WMAYBE: - case MIDDMA_4WORD: return (4*4); - case MIDDMA_8WMAYBE: - case MIDDMA_8WORD: return (8*4); - case MIDDMA_16WMAYBE: - case MIDDMA_16WORD: return (16*4); - default: - panic("en_b2sz"); - } - return (0); -} -#endif - -/* - * en_sz2b: convert a burst size (bytes) to DMA burst code - */ -static __inline int -en_sz2b(int sz) -{ - switch (sz) { - case 1*4: return (MIDDMA_WORD); - case 2*4: return (MIDDMA_2WORD); - case 4*4: return (MIDDMA_4WORD); - case 8*4: return (MIDDMA_8WORD); - case 16*4: return (MIDDMA_16WORD); - default: - panic("en_sz2b"); - } - return(0); -} - -#ifdef EN_DEBUG -/* - * Dump a packet - */ -static void -en_dump_packet(struct en_softc *sc, struct mbuf *m) -{ - int plen = m->m_pkthdr.len; - u_int pos = 0; - u_int totlen = 0; - int len; - u_char *ptr; - - device_printf(sc->dev, "packet len=%d", plen); - while (m != NULL) { - totlen += m->m_len; - ptr = mtod(m, u_char *); - for (len = 0; len < m->m_len; len++, pos++, ptr++) { - if (pos % 16 == 8) - printf(" "); - if (pos % 16 == 0) - printf("\n"); - printf(" %02x", *ptr); - } - m = m->m_next; - } - printf("\n"); - if (totlen != plen) - printf("sum of m_len=%u\n", totlen); -} -#endif - -/*********************************************************************/ -/* - * DMA maps - */ - -/* - * Map constructor for a MAP. - * - * This is called each time when a map is allocated - * from the pool and about to be returned to the user. Here we actually - * allocate the map if there isn't one. The problem is that we may fail - * to allocate the DMA map yet have no means to signal this error. Therefor - * when allocating a map, the call must check that there is a map. An - * additional problem is, that i386 maps will be NULL, yet are ok and must - * be freed so let's use a flag to signal allocation. - * - * Caveat: we have no way to know that we are called from an interrupt context - * here. We rely on the fact, that bus_dmamap_create uses M_NOWAIT in all - * its allocations. - * - * LOCK: any, not needed - */ -static int -en_map_ctor(void *mem, int size, void *arg, int flags) -{ - struct en_softc *sc = arg; - struct en_map *map = mem; - int err; - - err = bus_dmamap_create(sc->txtag, 0, &map->map); - if (err != 0) { - device_printf(sc->dev, "cannot create DMA map %d\n", err); - return (err); - } - map->flags = ENMAP_ALLOC; - map->sc = sc; - return (0); -} - -/* - * Map destructor. - * - * Called when a map is disposed into the zone. If the map is loaded, unload - * it. - * - * LOCK: any, not needed - */ -static void -en_map_dtor(void *mem, int size, void *arg) -{ - struct en_map *map = mem; - - if (map->flags & ENMAP_LOADED) { - bus_dmamap_unload(map->sc->txtag, map->map); - map->flags &= ~ENMAP_LOADED; - } -} - -/* - * Map finializer. - * - * This is called each time a map is returned from the zone to the system. - * Get rid of the dmamap here. - * - * LOCK: any, not needed - */ -static void -en_map_fini(void *mem, int size) -{ - struct en_map *map = mem; - - bus_dmamap_destroy(map->sc->txtag, map->map); -} - -/*********************************************************************/ -/* - * Transmission - */ - -/* - * Argument structure to load a transmit DMA map - */ -struct txarg { - struct en_softc *sc; - struct mbuf *m; - u_int vci; - u_int chan; /* transmit channel */ - u_int datalen; /* length of user data */ - u_int flags; - u_int wait; /* return: out of resources */ -}; - -/* - * TX DMA map loader helper. This function is the callback when the map - * is loaded. It should fill the DMA segment descriptors into the hardware. - * - * LOCK: locked, needed - */ -static void -en_txdma_load(void *uarg, bus_dma_segment_t *segs, int nseg, bus_size_t mapsize, - int error) -{ - struct txarg *tx = uarg; - struct en_softc *sc = tx->sc; - struct en_txslot *slot = &sc->txslot[tx->chan]; - uint32_t cur; /* on-card buffer position (bytes offset) */ - uint32_t dtq; /* on-card queue position (byte offset) */ - uint32_t last_dtq; /* last DTQ we have written */ - uint32_t tmp; - u_int free; /* free queue entries on card */ - u_int needalign, cnt; - bus_size_t rest; /* remaining bytes in current segment */ - bus_addr_t addr; - bus_dma_segment_t *s; - uint32_t count, bcode; - int i; - - if (error != 0) - return; - - cur = slot->cur; - dtq = sc->dtq_us; - free = sc->dtq_free; - - last_dtq = 0; /* make gcc happy */ - - /* - * Local macro to add an entry to the transmit DMA area. If there - * are no entries left, return. Save the byte offset of the entry - * in last_dtq for later use. - */ -#define PUT_DTQ_ENTRY(ENI, BCODE, COUNT, ADDR) \ - if (free == 0) { \ - EN_COUNT(sc->stats.txdtqout); \ - tx->wait = 1; \ - return; \ - } \ - last_dtq = dtq; \ - en_write(sc, dtq + 0, (ENI || !sc->is_adaptec) ? \ - MID_MK_TXQ_ENI(COUNT, tx->chan, 0, BCODE) : \ - MID_MK_TXQ_ADP(COUNT, tx->chan, 0, BCODE)); \ - en_write(sc, dtq + 4, ADDR); \ - \ - EN_WRAPADD(MID_DTQOFF, MID_DTQEND, dtq, 8); \ - free--; - - /* - * Local macro to generate a DMA entry to DMA cnt bytes. Updates - * the current buffer byte offset accordingly. - */ -#define DO_DTQ(TYPE) do { \ - rest -= cnt; \ - EN_WRAPADD(slot->start, slot->stop, cur, cnt); \ - DBG(sc, TX, ("tx%d: "TYPE" %u bytes, %ju left, cur %#x", \ - tx->chan, cnt, (uintmax_t)rest, cur)); \ - \ - PUT_DTQ_ENTRY(1, bcode, count, addr); \ - \ - addr += cnt; \ - } while (0) - - if (!(tx->flags & TX_HAS_TBD)) { - /* - * Prepend the TBD - it did not fit into the first mbuf - */ - tmp = MID_TBD_MK1((tx->flags & TX_AAL5) ? - MID_TBD_AAL5 : MID_TBD_NOAAL5, - sc->vccs[tx->vci]->txspeed, - tx->m->m_pkthdr.len / MID_ATMDATASZ); - en_write(sc, cur, tmp); - EN_WRAPADD(slot->start, slot->stop, cur, 4); - - tmp = MID_TBD_MK2(tx->vci, 0, 0); - en_write(sc, cur, tmp); - EN_WRAPADD(slot->start, slot->stop, cur, 4); - - /* update DMA address */ - PUT_DTQ_ENTRY(0, MIDDMA_JK, WORD_IDX(slot->start, cur), 0); - } - - for (i = 0, s = segs; i < nseg; i++, s++) { - rest = s->ds_len; - addr = s->ds_addr; - - if (sc->is_adaptec) { - /* adaptec card - simple */ - - /* advance the on-card buffer pointer */ - EN_WRAPADD(slot->start, slot->stop, cur, rest); - DBG(sc, TX, ("tx%d: adp %ju bytes %#jx (cur now 0x%x)", - tx->chan, (uintmax_t)rest, (uintmax_t)addr, cur)); - - PUT_DTQ_ENTRY(0, 0, rest, addr); - - continue; - } - - /* - * do we need to do a DMA op to align to the maximum - * burst? Note, that we are alway 32-bit aligned. - */ - if (sc->alburst && - (needalign = (addr & sc->bestburstmask)) != 0) { - /* compute number of bytes, words and code */ - cnt = sc->bestburstlen - needalign; - if (cnt > rest) - cnt = rest; - count = cnt / sizeof(uint32_t); - if (sc->noalbursts) { - bcode = MIDDMA_WORD; - } else { - bcode = en_dmaplan[count].bcode; - count = cnt >> en_dmaplan[count].divshift; - } - DO_DTQ("al_dma"); - } - - /* do we need to do a max-sized burst? */ - if (rest >= sc->bestburstlen) { - count = rest >> sc->bestburstshift; - cnt = count << sc->bestburstshift; - bcode = sc->bestburstcode; - DO_DTQ("best_dma"); - } - - /* do we need to do a cleanup burst? */ - if (rest != 0) { - cnt = rest; - count = rest / sizeof(uint32_t); - if (sc->noalbursts) { - bcode = MIDDMA_WORD; - } else { - bcode = en_dmaplan[count].bcode; - count = cnt >> en_dmaplan[count].divshift; - } - DO_DTQ("clean_dma"); - } - } - - KASSERT (tx->flags & TX_HAS_PAD, ("PDU not padded")); - - if ((tx->flags & TX_AAL5) && !(tx->flags & TX_HAS_PDU)) { - /* - * Append the AAL5 PDU trailer - */ - tmp = MID_PDU_MK1(0, 0, tx->datalen); - en_write(sc, cur, tmp); - EN_WRAPADD(slot->start, slot->stop, cur, 4); - - en_write(sc, cur, 0); - EN_WRAPADD(slot->start, slot->stop, cur, 4); - - /* update DMA address */ - PUT_DTQ_ENTRY(0, MIDDMA_JK, WORD_IDX(slot->start, cur), 0); - } - - /* record the end for the interrupt routine */ - sc->dtq[MID_DTQ_A2REG(last_dtq)] = - EN_DQ_MK(tx->chan, tx->m->m_pkthdr.len); - - /* set the end flag in the last descriptor */ - en_write(sc, last_dtq + 0, SETQ_END(sc, en_read(sc, last_dtq + 0))); - -#undef PUT_DTQ_ENTRY -#undef DO_DTQ - - /* commit */ - slot->cur = cur; - sc->dtq_free = free; - sc->dtq_us = dtq; - - /* tell card */ - en_write(sc, MID_DMA_WRTX, MID_DTQ_A2REG(sc->dtq_us)); -} - -/* - * en_txdma: start transmit DMA on the given channel, if possible - * - * This is called from two places: when we got new packets from the upper - * layer or when we found that buffer space has freed up during interrupt - * processing. - * - * LOCK: locked, needed - */ -static void -en_txdma(struct en_softc *sc, struct en_txslot *slot) -{ - struct en_map *map; - struct mbuf *lastm; - struct txarg tx; - u_int pad; - int error; - - DBG(sc, TX, ("tx%td: starting ...", slot - sc->txslot)); - again: - bzero(&tx, sizeof(tx)); - tx.chan = slot - sc->txslot; - tx.sc = sc; - - /* - * get an mbuf waiting for DMA - */ - _IF_DEQUEUE(&slot->q, tx.m); - if (tx.m == NULL) { - DBG(sc, TX, ("tx%td: ...done!", slot - sc->txslot)); - return; - } - MBUF_GET_TX(tx.m, tx.vci, tx.flags, tx.datalen, pad, map); - - /* - * note: don't use the entire buffer space. if WRTX becomes equal - * to RDTX, the transmitter stops assuming the buffer is empty! --kjc - */ - if (tx.m->m_pkthdr.len >= slot->bfree) { - EN_COUNT(sc->stats.txoutspace); - DBG(sc, TX, ("tx%td: out of transmit space", slot - sc->txslot)); - goto waitres; - } - - lastm = NULL; - if (!(tx.flags & TX_HAS_PAD)) { - if (pad != 0) { - /* Append the padding buffer */ - (void)m_length(tx.m, &lastm); - lastm->m_next = sc->padbuf; - sc->padbuf->m_len = pad; - } - tx.flags |= TX_HAS_PAD; - } - - /* - * Try to load that map - */ - error = bus_dmamap_load_mbuf(sc->txtag, map->map, tx.m, - en_txdma_load, &tx, BUS_DMA_NOWAIT); - - if (lastm != NULL) - lastm->m_next = NULL; - - if (error != 0) { - device_printf(sc->dev, "loading TX map failed %d\n", - error); - goto dequeue_drop; - } - map->flags |= ENMAP_LOADED; - if (tx.wait) { - /* probably not enough space */ - bus_dmamap_unload(map->sc->txtag, map->map); - map->flags &= ~ENMAP_LOADED; - - sc->need_dtqs = 1; - DBG(sc, TX, ("tx%td: out of transmit DTQs", slot - sc->txslot)); - goto waitres; - } - - EN_COUNT(sc->stats.launch); - if_inc_counter(sc->ifp, IFCOUNTER_OPACKETS, 1); - - sc->vccs[tx.vci]->opackets++; - sc->vccs[tx.vci]->obytes += tx.datalen; - -#ifdef ENABLE_BPF - if (bpf_peers_present(sc->ifp->if_bpf)) { - /* - * adjust the top of the mbuf to skip the TBD if present - * before passing the packet to bpf. - * Also remove padding and the PDU trailer. Assume both of - * them to be in the same mbuf. pktlen, m_len and m_data - * are not needed anymore so we can change them. - */ - if (tx.flags & TX_HAS_TBD) { - tx.m->m_data += MID_TBD_SIZE; - tx.m->m_len -= MID_TBD_SIZE; - } - tx.m->m_pkthdr.len = m_length(tx.m, &lastm); - if (tx.m->m_pkthdr.len > tx.datalen) { - lastm->m_len -= tx.m->m_pkthdr.len - tx.datalen; - tx.m->m_pkthdr.len = tx.datalen; - } - - bpf_mtap(sc->ifp->if_bpf, tx.m); - } -#endif - - /* - * do some housekeeping and get the next packet - */ - slot->bfree -= tx.m->m_pkthdr.len; - _IF_ENQUEUE(&slot->indma, tx.m); - - goto again; - - /* - * error handling. This is jumped to when we just want to drop - * the packet. Must be unlocked here. - */ - dequeue_drop: - if (map != NULL) - uma_zfree(sc->map_zone, map); - - slot->mbsize -= tx.m->m_pkthdr.len; - - m_freem(tx.m); - - goto again; - - waitres: - _IF_PREPEND(&slot->q, tx.m); -} - -/* - * Create a copy of a single mbuf. It can have either internal or - * external data, it may have a packet header. External data is really - * copied, so the new buffer is writeable. - * - * LOCK: any, not needed - */ -static struct mbuf * -copy_mbuf(struct mbuf *m) -{ - struct mbuf *new; - - MGET(new, M_WAITOK, MT_DATA); - - if (m->m_flags & M_PKTHDR) { - M_MOVE_PKTHDR(new, m); - if (m->m_len > MHLEN) - MCLGET(new, M_WAITOK); - } else { - if (m->m_len > MLEN) - MCLGET(new, M_WAITOK); - } - - bcopy(m->m_data, new->m_data, m->m_len); - new->m_len = m->m_len; - new->m_flags &= ~M_RDONLY; - - return (new); -} - -/* - * This function is called when we have an ENI adapter. It fixes the - * mbuf chain, so that all addresses and lengths are 4 byte aligned. - * The overall length is already padded to multiple of cells plus the - * TBD so this must always succeed. The routine can fail, when it - * needs to copy an mbuf (this may happen if an mbuf is readonly). - * - * We assume here, that aligning the virtual addresses to 4 bytes also - * aligns the physical addresses. - * - * LOCK: locked, needed - */ -static struct mbuf * -en_fix_mchain(struct en_softc *sc, struct mbuf *m0, u_int *pad) -{ - struct mbuf **prev = &m0; - struct mbuf *m = m0; - struct mbuf *new; - u_char *d; - int off; - - while (m != NULL) { - d = mtod(m, u_char *); - if ((off = (uintptr_t)d % sizeof(uint32_t)) != 0) { - EN_COUNT(sc->stats.mfixaddr); - if (M_WRITABLE(m)) { - bcopy(d, d - off, m->m_len); - m->m_data -= off; - } else { - if ((new = copy_mbuf(m)) == NULL) { - EN_COUNT(sc->stats.mfixfail); - m_freem(m0); - return (NULL); - } - new->m_next = m_free(m); - *prev = m = new; - } - } - - if ((off = m->m_len % sizeof(uint32_t)) != 0) { - EN_COUNT(sc->stats.mfixlen); - if (!M_WRITABLE(m)) { - if ((new = copy_mbuf(m)) == NULL) { - EN_COUNT(sc->stats.mfixfail); - m_freem(m0); - return (NULL); - } - new->m_next = m_free(m); - *prev = m = new; - } - d = mtod(m, u_char *) + m->m_len; - off = 4 - off; - while (off) { - while (m->m_next && m->m_next->m_len == 0) - m->m_next = m_free(m->m_next); - - if (m->m_next == NULL) { - *d++ = 0; - KASSERT(*pad > 0, ("no padding space")); - (*pad)--; - } else { - *d++ = *mtod(m->m_next, u_char *); - m->m_next->m_len--; - m->m_next->m_data++; - } - m->m_len++; - off--; - } - } - - prev = &m->m_next; - m = m->m_next; - } - - return (m0); -} - -/* - * en_start: start transmitting the next packet that needs to go out - * if there is one. We take off all packets from the interface's queue and - * put them into the channels queue. - * - * Here we also prepend the transmit packet descriptor and append the padding - * and (for aal5) the PDU trailer. This is different from the original driver: - * we assume, that allocating one or two additional mbufs is actually cheaper - * than all this algorithmic fiddling we would need otherwise. - * - * While the packet is on the channels wait queue we use the csum_* fields - * in the packet header to hold the original datalen, the AAL5 flag and the - * VCI. The packet length field in the header holds the needed buffer space. - * This may actually be more than the length of the current mbuf chain (when - * one or more of TBD, padding and PDU do not fit). - * - * LOCK: unlocked, needed - */ -static void -en_start(struct ifnet *ifp) -{ - struct en_softc *sc = (struct en_softc *)ifp->if_softc; - struct mbuf *m, *lastm; - struct atm_pseudohdr *ap; - u_int pad; /* 0-bytes to pad at PDU end */ - u_int datalen; /* length of user data */ - u_int vci; /* the VCI we are transmitting on */ - u_int flags; - uint32_t tbd[2]; - uint32_t pdu[2]; - struct en_vcc *vc; - struct en_map *map; - struct en_txslot *tx; - - while (1) { - IF_DEQUEUE(&ifp->if_snd, m); - if (m == NULL) - return; - - flags = 0; - - ap = mtod(m, struct atm_pseudohdr *); - vci = ATM_PH_VCI(ap); - - if (ATM_PH_VPI(ap) != 0 || vci >= MID_N_VC || - (vc = sc->vccs[vci]) == NULL || - (vc->vflags & VCC_CLOSE_RX)) { - DBG(sc, TX, ("output vpi=%u, vci=%u -- drop", - ATM_PH_VPI(ap), vci)); - m_freem(m); - continue; - } - if (vc->vcc.aal == ATMIO_AAL_5) - flags |= TX_AAL5; - m_adj(m, sizeof(struct atm_pseudohdr)); - - /* - * (re-)calculate size of packet (in bytes) - */ - m->m_pkthdr.len = datalen = m_length(m, &lastm); - - /* - * computing how much padding we need on the end of the mbuf, - * then see if we can put the TBD at the front of the mbuf - * where the link header goes (well behaved protocols will - * reserve room for us). Last, check if room for PDU tail. - */ - if (flags & TX_AAL5) - m->m_pkthdr.len += MID_PDU_SIZE; - m->m_pkthdr.len = roundup(m->m_pkthdr.len, MID_ATMDATASZ); - pad = m->m_pkthdr.len - datalen; - if (flags & TX_AAL5) - pad -= MID_PDU_SIZE; - m->m_pkthdr.len += MID_TBD_SIZE; - - DBG(sc, TX, ("txvci%d: buflen=%u datalen=%u lead=%d trail=%d", - vci, m->m_pkthdr.len, datalen, (int)M_LEADINGSPACE(m), - (int)M_TRAILINGSPACE(lastm))); - - /* - * From here on we need access to sc - */ - EN_LOCK(sc); - - /* - * Allocate a map. We do this here rather then in en_txdma, - * because en_txdma is also called from the interrupt handler - * and we are going to have a locking problem then. We must - * use NOWAIT here, because the ip_output path holds various - * locks. - */ - map = uma_zalloc_arg(sc->map_zone, sc, M_NOWAIT); - if (map == NULL) { - /* drop that packet */ - EN_COUNT(sc->stats.txnomap); - EN_UNLOCK(sc); - m_freem(m); - continue; - } - - if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) { - EN_UNLOCK(sc); - uma_zfree(sc->map_zone, map); - m_freem(m); - continue; - } - - /* - * Look, whether we can prepend the TBD (8 byte) - */ - if (M_WRITABLE(m) && M_LEADINGSPACE(m) >= MID_TBD_SIZE) { - tbd[0] = htobe32(MID_TBD_MK1((flags & TX_AAL5) ? - MID_TBD_AAL5 : MID_TBD_NOAAL5, - vc->txspeed, m->m_pkthdr.len / MID_ATMDATASZ)); - tbd[1] = htobe32(MID_TBD_MK2(vci, 0, 0)); - - m->m_data -= MID_TBD_SIZE; - bcopy(tbd, m->m_data, MID_TBD_SIZE); - m->m_len += MID_TBD_SIZE; - flags |= TX_HAS_TBD; - } - - /* - * Check whether the padding fits (must be writeable - - * we pad with zero). - */ - if (M_WRITABLE(lastm) && M_TRAILINGSPACE(lastm) >= pad) { - bzero(lastm->m_data + lastm->m_len, pad); - lastm->m_len += pad; - flags |= TX_HAS_PAD; - - if ((flags & TX_AAL5) && - M_TRAILINGSPACE(lastm) > MID_PDU_SIZE) { - pdu[0] = htobe32(MID_PDU_MK1(0, 0, datalen)); - pdu[1] = 0; - bcopy(pdu, lastm->m_data + lastm->m_len, - MID_PDU_SIZE); - lastm->m_len += MID_PDU_SIZE; - flags |= TX_HAS_PDU; - } - } - - if (!sc->is_adaptec && - (m = en_fix_mchain(sc, m, &pad)) == NULL) { - EN_UNLOCK(sc); - uma_zfree(sc->map_zone, map); - continue; - } - - /* - * get assigned channel (will be zero unless txspeed is set) - */ - tx = vc->txslot; - - if (m->m_pkthdr.len > EN_TXSZ * 1024) { - DBG(sc, TX, ("tx%td: packet larger than xmit buffer " - "(%d > %d)\n", tx - sc->txslot, m->m_pkthdr.len, - EN_TXSZ * 1024)); - EN_UNLOCK(sc); - m_freem(m); - uma_zfree(sc->map_zone, map); - continue; - } - - if (tx->mbsize > EN_TXHIWAT) { - EN_COUNT(sc->stats.txmbovr); - DBG(sc, TX, ("tx%td: buffer space shortage", - tx - sc->txslot)); - EN_UNLOCK(sc); - m_freem(m); - uma_zfree(sc->map_zone, map); - continue; - } - - /* commit */ - tx->mbsize += m->m_pkthdr.len; - - DBG(sc, TX, ("tx%td: VCI=%d, speed=0x%x, buflen=%d, mbsize=%d", - tx - sc->txslot, vci, sc->vccs[vci]->txspeed, - m->m_pkthdr.len, tx->mbsize)); - - MBUF_SET_TX(m, vci, flags, datalen, pad, map); - - _IF_ENQUEUE(&tx->q, m); - - en_txdma(sc, tx); - - EN_UNLOCK(sc); - } -} - -/*********************************************************************/ -/* - * VCs - */ - -/* - * en_loadvc: load a vc tab entry from a slot - * - * LOCK: locked, needed - */ -static void -en_loadvc(struct en_softc *sc, struct en_vcc *vc) -{ - uint32_t reg = en_read(sc, MID_VC(vc->vcc.vci)); - - reg = MIDV_SETMODE(reg, MIDV_TRASH); - en_write(sc, MID_VC(vc->vcc.vci), reg); - DELAY(27); - - /* no need to set CRC */ - - /* read pointer = 0, desc. start = 0 */ - en_write(sc, MID_DST_RP(vc->vcc.vci), 0); - /* write pointer = 0 */ - en_write(sc, MID_WP_ST_CNT(vc->vcc.vci), 0); - /* set mode, size, loc */ - en_write(sc, MID_VC(vc->vcc.vci), vc->rxslot->mode); - - vc->rxslot->cur = vc->rxslot->start; - - DBG(sc, VC, ("rx%td: assigned to VCI %d", vc->rxslot - sc->rxslot, - vc->vcc.vci)); -} - -/* - * Open the given vcc. - * - * LOCK: unlocked, needed - */ -static int -en_open_vcc(struct en_softc *sc, struct atmio_openvcc *op) -{ - uint32_t oldmode, newmode; - struct en_rxslot *slot; - struct en_vcc *vc; - int error = 0; - - DBG(sc, IOCTL, ("enable vpi=%d, vci=%d, flags=%#x", - op->param.vpi, op->param.vci, op->param.flags)); - - if (op->param.vpi != 0 || op->param.vci >= MID_N_VC) - return (EINVAL); - - vc = uma_zalloc(en_vcc_zone, M_NOWAIT | M_ZERO); - if (vc == NULL) - return (ENOMEM); - - EN_LOCK(sc); - - if (sc->vccs[op->param.vci] != NULL) { - error = EBUSY; - goto done; - } - - /* find a free receive slot */ - for (slot = sc->rxslot; slot < &sc->rxslot[sc->en_nrx]; slot++) - if (slot->vcc == NULL) - break; - if (slot == &sc->rxslot[sc->en_nrx]) { - error = ENOSPC; - goto done; - } - - vc->rxslot = slot; - vc->rxhand = op->rxhand; - vc->vcc = op->param; - - oldmode = slot->mode; - newmode = (op->param.aal == ATMIO_AAL_5) ? MIDV_AAL5 : MIDV_NOAAL; - slot->mode = MIDV_SETMODE(oldmode, newmode); - slot->vcc = vc; - - KASSERT (_IF_QLEN(&slot->indma) == 0 && _IF_QLEN(&slot->q) == 0, - ("en_rxctl: left over mbufs on enable slot=%td", - vc->rxslot - sc->rxslot)); - - vc->txspeed = 0; - vc->txslot = sc->txslot; - vc->txslot->nref++; /* bump reference count */ - - en_loadvc(sc, vc); /* does debug printf for us */ - - /* don't free below */ - sc->vccs[vc->vcc.vci] = vc; - vc = NULL; - sc->vccs_open++; - - done: - if (vc != NULL) - uma_zfree(en_vcc_zone, vc); - - EN_UNLOCK(sc); - return (error); -} - -/* - * Close finished - */ -static void -en_close_finish(struct en_softc *sc, struct en_vcc *vc) -{ - - if (vc->rxslot != NULL) - vc->rxslot->vcc = NULL; - - DBG(sc, VC, ("vci: %u free (%p)", vc->vcc.vci, vc)); - - sc->vccs[vc->vcc.vci] = NULL; - uma_zfree(en_vcc_zone, vc); - sc->vccs_open--; -} - -/* - * LOCK: unlocked, needed - */ -static int -en_close_vcc(struct en_softc *sc, struct atmio_closevcc *cl) -{ - uint32_t oldmode, newmode; - struct en_vcc *vc; - int error = 0; - - DBG(sc, IOCTL, ("disable vpi=%d, vci=%d", cl->vpi, cl->vci)); - - if (cl->vpi != 0 || cl->vci >= MID_N_VC) - return (EINVAL); - - EN_LOCK(sc); - if ((vc = sc->vccs[cl->vci]) == NULL) { - error = ENOTCONN; - goto done; - } - - /* - * turn off VCI - */ - if (vc->rxslot == NULL) { - error = ENOTCONN; - goto done; - } - if (vc->vflags & VCC_DRAIN) { - error = EINVAL; - goto done; - } - - oldmode = en_read(sc, MID_VC(cl->vci)); - newmode = MIDV_SETMODE(oldmode, MIDV_TRASH) & ~MIDV_INSERVICE; - en_write(sc, MID_VC(cl->vci), (newmode | (oldmode & MIDV_INSERVICE))); - - /* halt in tracks, be careful to preserve inservice bit */ - DELAY(27); - vc->rxslot->mode = newmode; - - vc->txslot->nref--; - - /* if stuff is still going on we are going to have to drain it out */ - if (_IF_QLEN(&vc->rxslot->indma) == 0 && - _IF_QLEN(&vc->rxslot->q) == 0 && - (vc->vflags & VCC_SWSL) == 0) { - en_close_finish(sc, vc); - goto done; - } - - vc->vflags |= VCC_DRAIN; - DBG(sc, IOCTL, ("VCI %u now draining", cl->vci)); - - if (vc->vcc.flags & ATMIO_FLAG_ASYNC) - goto done; - - vc->vflags |= VCC_CLOSE_RX; - while ((sc->ifp->if_drv_flags & IFF_DRV_RUNNING) && - (vc->vflags & VCC_DRAIN)) - cv_wait(&sc->cv_close, &sc->en_mtx); - - en_close_finish(sc, vc); - if (!(sc->ifp->if_drv_flags & IFF_DRV_RUNNING)) { - error = EIO; - goto done; - } - - - done: - EN_UNLOCK(sc); - return (error); -} - -/*********************************************************************/ -/* - * starting/stopping the card - */ - -/* - * en_reset_ul: reset the board, throw away work in progress. - * must en_init to recover. - * - * LOCK: locked, needed - */ -static void -en_reset_ul(struct en_softc *sc) -{ - struct en_map *map; - struct mbuf *m; - struct en_rxslot *rx; - int lcv; - - device_printf(sc->dev, "reset\n"); - sc->ifp->if_drv_flags &= ~IFF_DRV_RUNNING; - - if (sc->en_busreset) - sc->en_busreset(sc); - en_write(sc, MID_RESID, 0x0); /* reset hardware */ - - /* - * recv: dump any mbufs we are dma'ing into, if DRAINing, then a reset - * will free us! Don't release the rxslot from the channel. - */ - for (lcv = 0 ; lcv < MID_N_VC ; lcv++) { - if (sc->vccs[lcv] == NULL) - continue; - rx = sc->vccs[lcv]->rxslot; - - for (;;) { - _IF_DEQUEUE(&rx->indma, m); - if (m == NULL) - break; - map = (void *)m->m_pkthdr.rcvif; - uma_zfree(sc->map_zone, map); - m_freem(m); - } - for (;;) { - _IF_DEQUEUE(&rx->q, m); - if (m == NULL) - break; - m_freem(m); - } - sc->vccs[lcv]->vflags = 0; - } - - /* - * xmit: dump everything - */ - for (lcv = 0 ; lcv < EN_NTX ; lcv++) { - for (;;) { - _IF_DEQUEUE(&sc->txslot[lcv].indma, m); - if (m == NULL) - break; - map = (void *)m->m_pkthdr.rcvif; - uma_zfree(sc->map_zone, map); - m_freem(m); - } - for (;;) { - _IF_DEQUEUE(&sc->txslot[lcv].q, m); - if (m == NULL) - break; - map = (void *)m->m_pkthdr.rcvif; - uma_zfree(sc->map_zone, map); - m_freem(m); - } - sc->txslot[lcv].mbsize = 0; - } - - /* - * Unstop all waiters - */ - cv_broadcast(&sc->cv_close); -} - -/* - * en_reset: reset the board, throw away work in progress. - * must en_init to recover. - * - * LOCK: unlocked, needed - * - * Use en_reset_ul if you alreay have the lock - */ -void -en_reset(struct en_softc *sc) -{ - EN_LOCK(sc); - en_reset_ul(sc); - EN_UNLOCK(sc); -} - - -/* - * en_init: init board and sync the card with the data in the softc. - * - * LOCK: locked, needed - */ -static void -en_init(struct en_softc *sc) -{ - int vc, slot; - uint32_t loc; - - if ((sc->ifp->if_flags & IFF_UP) == 0) { - DBG(sc, INIT, ("going down")); - en_reset(sc); /* to be safe */ - return; - } - - DBG(sc, INIT, ("going up")); - sc->ifp->if_drv_flags |= IFF_DRV_RUNNING; /* enable */ - - if (sc->en_busreset) - sc->en_busreset(sc); - en_write(sc, MID_RESID, 0x0); /* reset */ - - /* zero memory */ - bus_space_set_region_4(sc->en_memt, sc->en_base, - MID_RAMOFF, 0, sc->en_obmemsz / 4); - - /* - * init obmem data structures: vc tab, dma q's, slist. - * - * note that we set drq_free/dtq_free to one less than the total number - * of DTQ/DRQs present. we do this because the card uses the condition - * (drq_chip == drq_us) to mean "list is empty"... but if you allow the - * circular list to be completely full then (drq_chip == drq_us) [i.e. - * the drq_us pointer will wrap all the way around]. by restricting - * the number of active requests to (N - 1) we prevent the list from - * becoming completely full. note that the card will sometimes give - * us an interrupt for a DTQ/DRQ we have already processes... this helps - * keep that interrupt from messing us up. - */ - bzero(&sc->drq, sizeof(sc->drq)); - sc->drq_free = MID_DRQ_N - 1; - sc->drq_chip = MID_DRQ_REG2A(en_read(sc, MID_DMA_RDRX)); - en_write(sc, MID_DMA_WRRX, MID_DRQ_A2REG(sc->drq_chip)); - sc->drq_us = sc->drq_chip; - - bzero(&sc->dtq, sizeof(sc->dtq)); - sc->dtq_free = MID_DTQ_N - 1; - sc->dtq_chip = MID_DTQ_REG2A(en_read(sc, MID_DMA_RDTX)); - en_write(sc, MID_DMA_WRTX, MID_DRQ_A2REG(sc->dtq_chip)); - sc->dtq_us = sc->dtq_chip; - - sc->hwslistp = MID_SL_REG2A(en_read(sc, MID_SERV_WRITE)); - sc->swsl_size = sc->swsl_head = sc->swsl_tail = 0; - - DBG(sc, INIT, ("drq free/chip: %d/0x%x, dtq free/chip: %d/0x%x, " - "hwslist: 0x%x", sc->drq_free, sc->drq_chip, sc->dtq_free, - sc->dtq_chip, sc->hwslistp)); - - for (slot = 0 ; slot < EN_NTX ; slot++) { - sc->txslot[slot].bfree = EN_TXSZ * 1024; - en_write(sc, MIDX_READPTR(slot), 0); - en_write(sc, MIDX_DESCSTART(slot), 0); - loc = sc->txslot[slot].cur = sc->txslot[slot].start; - loc = loc - MID_RAMOFF; - /* mask, cvt to words */ - loc = rounddown2(loc, EN_TXSZ * 1024) >> 2; - /* top 11 bits */ - loc = loc >> MIDV_LOCTOPSHFT; - en_write(sc, MIDX_PLACE(slot), MIDX_MKPLACE(en_k2sz(EN_TXSZ), - loc)); - DBG(sc, INIT, ("tx%d: place 0x%x", slot, - (u_int)en_read(sc, MIDX_PLACE(slot)))); - } - - for (vc = 0; vc < MID_N_VC; vc++) - if (sc->vccs[vc] != NULL) - en_loadvc(sc, sc->vccs[vc]); - - /* - * enable! - */ - en_write(sc, MID_INTENA, MID_INT_TX | MID_INT_DMA_OVR | MID_INT_IDENT | - MID_INT_LERR | MID_INT_DMA_ERR | MID_INT_DMA_RX | MID_INT_DMA_TX | - MID_INT_SERVICE | MID_INT_SUNI | MID_INT_STATS); - en_write(sc, MID_MAST_CSR, MID_SETIPL(sc->ipl) | MID_MCSR_ENDMA | - MID_MCSR_ENTX | MID_MCSR_ENRX); -} - -/*********************************************************************/ -/* - * Ioctls - */ -/* - * en_ioctl: handle ioctl requests - * - * NOTE: if you add an ioctl to set txspeed, you should choose a new - * TX channel/slot. Choose the one with the lowest sc->txslot[slot].nref - * value, subtract one from sc->txslot[0].nref, add one to the - * sc->txslot[slot].nref, set sc->txvc2slot[vci] = slot, and then set - * txspeed[vci]. - * - * LOCK: unlocked, needed - */ -static int -en_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) -{ - struct en_softc *sc = (struct en_softc *)ifp->if_softc; -#if defined(INET) || defined(INET6) - struct ifaddr *ifa = (struct ifaddr *)data; -#endif - struct ifreq *ifr = (struct ifreq *)data; - struct atmio_vcctable *vtab; - int error = 0; - - switch (cmd) { - - case SIOCSIFADDR: - EN_LOCK(sc); - ifp->if_flags |= IFF_UP; -#if defined(INET) || defined(INET6) - if (ifa->ifa_addr->sa_family == AF_INET - || ifa->ifa_addr->sa_family == AF_INET6) { - if (!(ifp->if_drv_flags & IFF_DRV_RUNNING)) { - en_reset_ul(sc); - en_init(sc); - } - ifa->ifa_rtrequest = atm_rtrequest; /* ??? */ - EN_UNLOCK(sc); - break; - } -#endif /* INET */ - if (!(ifp->if_drv_flags & IFF_DRV_RUNNING)) { - en_reset_ul(sc); - en_init(sc); - } - EN_UNLOCK(sc); - break; - - case SIOCSIFFLAGS: - EN_LOCK(sc); - if (ifp->if_flags & IFF_UP) { - if (!(ifp->if_drv_flags & IFF_DRV_RUNNING)) - en_init(sc); - } else { - if (ifp->if_drv_flags & IFF_DRV_RUNNING) - en_reset_ul(sc); - } - EN_UNLOCK(sc); - break; - - case SIOCSIFMTU: - /* - * Set the interface MTU. - */ - if (ifr->ifr_mtu > ATMMTU) { - error = EINVAL; - break; - } - ifp->if_mtu = ifr->ifr_mtu; - break; - - case SIOCSIFMEDIA: - case SIOCGIFMEDIA: - error = ifmedia_ioctl(ifp, ifr, &sc->media, cmd); - break; - - case SIOCATMOPENVCC: /* kernel internal use */ - error = en_open_vcc(sc, (struct atmio_openvcc *)data); - break; - - case SIOCATMCLOSEVCC: /* kernel internal use */ - error = en_close_vcc(sc, (struct atmio_closevcc *)data); - break; - - case SIOCATMGETVCCS: /* internal netgraph use */ - vtab = atm_getvccs((struct atmio_vcc **)sc->vccs, - MID_N_VC, sc->vccs_open, &sc->en_mtx, 0); - if (vtab == NULL) { - error = ENOMEM; - break; - } - *(void **)data = vtab; - break; - - case SIOCATMGVCCS: /* return vcc table */ - vtab = atm_getvccs((struct atmio_vcc **)sc->vccs, - MID_N_VC, sc->vccs_open, &sc->en_mtx, 1); - error = copyout(vtab, ifr->ifr_data, sizeof(*vtab) + - vtab->count * sizeof(vtab->vccs[0])); - free(vtab, M_DEVBUF); - break; - - default: - error = EINVAL; - break; - } - return (error); -} - -/*********************************************************************/ -/* - * Sysctl's - */ - -/* - * Sysctl handler for internal statistics - * - * LOCK: unlocked, needed - */ -static int -en_sysctl_istats(SYSCTL_HANDLER_ARGS) -{ - struct en_softc *sc = arg1; - uint32_t *ret; - int error; - - ret = malloc(sizeof(sc->stats), M_TEMP, M_WAITOK); - - EN_LOCK(sc); - bcopy(&sc->stats, ret, sizeof(sc->stats)); - EN_UNLOCK(sc); - - error = SYSCTL_OUT(req, ret, sizeof(sc->stats)); - free(ret, M_TEMP); - - return (error); -} - -/*********************************************************************/ -/* - * Interrupts - */ - -/* - * Transmit interrupt handler - * - * check for tx complete, if detected then this means that some space - * has come free on the card. we must account for it and arrange to - * kick the channel to life (in case it is stalled waiting on the card). - * - * LOCK: locked, needed - */ -static uint32_t -en_intr_tx(struct en_softc *sc, uint32_t reg) -{ - uint32_t kick; - uint32_t mask; - uint32_t val; - int chan; - - kick = 0; /* bitmask of channels to kick */ - - for (mask = 1, chan = 0; chan < EN_NTX; chan++, mask *= 2) { - if (!(reg & MID_TXCHAN(chan))) - continue; - - kick = kick | mask; - - /* current read pointer */ - val = en_read(sc, MIDX_READPTR(chan)); - /* as offset */ - val = (val * sizeof(uint32_t)) + sc->txslot[chan].start; - if (val > sc->txslot[chan].cur) - sc->txslot[chan].bfree = val - sc->txslot[chan].cur; - else - sc->txslot[chan].bfree = (val + (EN_TXSZ * 1024)) - - sc->txslot[chan].cur; - DBG(sc, INTR, ("tx%d: transmit done. %d bytes now free in " - "buffer", chan, sc->txslot[chan].bfree)); - } - return (kick); -} - -/* - * TX DMA interrupt - * - * check for TX DMA complete, if detected then this means - * that some DTQs are now free. it also means some indma - * mbufs can be freed. if we needed DTQs, kick all channels. - * - * LOCK: locked, needed - */ -static uint32_t -en_intr_tx_dma(struct en_softc *sc) -{ - uint32_t kick = 0; - uint32_t val; - uint32_t idx; - uint32_t slot; - uint32_t dtq; - struct en_map *map; - struct mbuf *m; - - val = en_read(sc, MID_DMA_RDTX); /* chip's current location */ - idx = MID_DTQ_A2REG(sc->dtq_chip); /* where we last saw chip */ - - if (sc->need_dtqs) { - kick = MID_NTX_CH - 1; /* assume power of 2, kick all! */ - sc->need_dtqs = 0; /* recalculated in "kick" loop below */ - DBG(sc, INTR, ("cleared need DTQ condition")); - } - - while (idx != val) { - sc->dtq_free++; - if ((dtq = sc->dtq[idx]) != 0) { - /* don't forget to zero it out when done */ - sc->dtq[idx] = 0; - slot = EN_DQ_SLOT(dtq); - - _IF_DEQUEUE(&sc->txslot[slot].indma, m); - if (m == NULL) - panic("enintr: dtqsync"); - map = (void *)m->m_pkthdr.rcvif; - uma_zfree(sc->map_zone, map); - m_freem(m); - - sc->txslot[slot].mbsize -= EN_DQ_LEN(dtq); - DBG(sc, INTR, ("tx%d: free %d dma bytes, mbsize now " - "%d", slot, EN_DQ_LEN(dtq), - sc->txslot[slot].mbsize)); - } - EN_WRAPADD(0, MID_DTQ_N, idx, 1); - } - sc->dtq_chip = MID_DTQ_REG2A(val); /* sync softc */ - - return (kick); -} - -/* - * Service interrupt - * - * LOCK: locked, needed - */ -static int -en_intr_service(struct en_softc *sc) -{ - uint32_t chip; - uint32_t vci; - int need_softserv = 0; - struct en_vcc *vc; - - chip = MID_SL_REG2A(en_read(sc, MID_SERV_WRITE)); - - while (sc->hwslistp != chip) { - /* fetch and remove it from hardware service list */ - vci = en_read(sc, sc->hwslistp); - EN_WRAPADD(MID_SLOFF, MID_SLEND, sc->hwslistp, 4); - - if ((vc = sc->vccs[vci]) == NULL || - (vc->vcc.flags & ATMIO_FLAG_NORX)) { - DBG(sc, INTR, ("unexpected rx interrupt VCI %d", vci)); - en_write(sc, MID_VC(vci), MIDV_TRASH); /* rx off */ - continue; - } - - /* remove from hwsl */ - en_write(sc, MID_VC(vci), vc->rxslot->mode); - EN_COUNT(sc->stats.hwpull); - - DBG(sc, INTR, ("pulled VCI %d off hwslist", vci)); - - /* add it to the software service list (if needed) */ - if ((vc->vflags & VCC_SWSL) == 0) { - EN_COUNT(sc->stats.swadd); - need_softserv = 1; - vc->vflags |= VCC_SWSL; - sc->swslist[sc->swsl_tail] = vci; - EN_WRAPADD(0, MID_SL_N, sc->swsl_tail, 1); - sc->swsl_size++; - DBG(sc, INTR, ("added VCI %d to swslist", vci)); - } - } - return (need_softserv); -} - -/* - * Handle a receive DMA completion - */ -static void -en_rx_drain(struct en_softc *sc, u_int drq) -{ - struct en_rxslot *slot; - struct en_vcc *vc; - struct mbuf *m; - struct atm_pseudohdr ah; - - slot = &sc->rxslot[EN_DQ_SLOT(drq)]; - - m = NULL; /* assume "JK" trash DMA */ - if (EN_DQ_LEN(drq) != 0) { - _IF_DEQUEUE(&slot->indma, m); - KASSERT(m != NULL, ("drqsync: %s: lost mbuf in slot %td!", - sc->ifp->if_xname, slot - sc->rxslot)); - uma_zfree(sc->map_zone, (struct en_map *)m->m_pkthdr.rcvif); - } - if ((vc = slot->vcc) == NULL) { - /* ups */ - if (m != NULL) - m_freem(m); - return; - } - - /* do something with this mbuf */ - if (vc->vflags & VCC_DRAIN) { - /* drain? */ - if (m != NULL) - m_freem(m); - if (_IF_QLEN(&slot->indma) == 0 && _IF_QLEN(&slot->q) == 0 && - (en_read(sc, MID_VC(vc->vcc.vci)) & MIDV_INSERVICE) == 0 && - (vc->vflags & VCC_SWSL) == 0) { - vc->vflags &= ~VCC_CLOSE_RX; - if (vc->vcc.flags & ATMIO_FLAG_ASYNC) - en_close_finish(sc, vc); - else - cv_signal(&sc->cv_close); - } - return; - } - - if (m != NULL) { - ATM_PH_FLAGS(&ah) = vc->vcc.flags; - ATM_PH_VPI(&ah) = 0; - ATM_PH_SETVCI(&ah, vc->vcc.vci); - - DBG(sc, INTR, ("rx%td: rxvci%d: atm_input, mbuf %p, len %d, " - "hand %p", slot - sc->rxslot, vc->vcc.vci, m, - EN_DQ_LEN(drq), vc->rxhand)); - - m->m_pkthdr.rcvif = sc->ifp; - if_inc_counter(sc->ifp, IFCOUNTER_IPACKETS, 1); - - vc->ipackets++; - vc->ibytes += m->m_pkthdr.len; - -#ifdef EN_DEBUG - if (sc->debug & DBG_IPACKETS) - en_dump_packet(sc, m); -#endif -#ifdef ENABLE_BPF - BPF_MTAP(sc->ifp, m); -#endif - EN_UNLOCK(sc); - atm_input(sc->ifp, &ah, m, vc->rxhand); - EN_LOCK(sc); - } -} - -/* - * check for RX DMA complete, and pass the data "upstairs" - * - * LOCK: locked, needed - */ -static int -en_intr_rx_dma(struct en_softc *sc) -{ - uint32_t val; - uint32_t idx; - uint32_t drq; - - val = en_read(sc, MID_DMA_RDRX); /* chip's current location */ - idx = MID_DRQ_A2REG(sc->drq_chip); /* where we last saw chip */ - - while (idx != val) { - sc->drq_free++; - if ((drq = sc->drq[idx]) != 0) { - /* don't forget to zero it out when done */ - sc->drq[idx] = 0; - en_rx_drain(sc, drq); - } - EN_WRAPADD(0, MID_DRQ_N, idx, 1); - } - sc->drq_chip = MID_DRQ_REG2A(val); /* sync softc */ - - if (sc->need_drqs) { - /* true if we had a DRQ shortage */ - sc->need_drqs = 0; - DBG(sc, INTR, ("cleared need DRQ condition")); - return (1); - } else - return (0); -} - -/* - * en_mget: get an mbuf chain that can hold totlen bytes and return it - * (for recv). For the actual allocation totlen is rounded up to a multiple - * of 4. We also ensure, that each mbuf has a multiple of 4 bytes. - * - * After this call the sum of all the m_len's in the chain will be totlen. - * This is called at interrupt time, so we can't wait here. - * - * LOCK: any, not needed - */ -static struct mbuf * -en_mget(struct en_softc *sc, u_int pktlen) -{ - struct mbuf *m, *tmp; - u_int totlen, pad; - - totlen = roundup(pktlen, sizeof(uint32_t)); - pad = totlen - pktlen; - - /* - * First get an mbuf with header. Keep space for a couple of - * words at the begin. - */ - /* called from interrupt context */ - MGETHDR(m, M_NOWAIT, MT_DATA); - if (m == NULL) - return (NULL); - - m->m_pkthdr.rcvif = NULL; - m->m_pkthdr.len = pktlen; - m->m_len = EN_RX1BUF; - M_ALIGN(m, EN_RX1BUF); - if (m->m_len >= totlen) { - m->m_len = totlen; - - } else { - totlen -= m->m_len; - - /* called from interrupt context */ - tmp = m_getm(m, totlen, M_NOWAIT, MT_DATA); - if (tmp == NULL) { - m_free(m); - return (NULL); - } - tmp = m->m_next; - /* m_getm could do this for us */ - while (tmp != NULL) { - tmp->m_len = min(MCLBYTES, totlen); - totlen -= tmp->m_len; - tmp = tmp->m_next; - } - } - - return (m); -} - -/* - * Argument for RX DMAMAP loader. - */ -struct rxarg { - struct en_softc *sc; - struct mbuf *m; - u_int pre_skip; /* number of bytes to skip at begin */ - u_int post_skip; /* number of bytes to skip at end */ - struct en_vcc *vc; /* vc we are receiving on */ - int wait; /* wait for DRQ entries */ -}; - -/* - * Copy the segment table to the buffer for later use. And compute the - * number of dma queue entries we need. - * - * LOCK: locked, needed - */ -static void -en_rxdma_load(void *uarg, bus_dma_segment_t *segs, int nseg, - bus_size_t mapsize, int error) -{ - struct rxarg *rx = uarg; - struct en_softc *sc = rx->sc; - struct en_rxslot *slot = rx->vc->rxslot; - u_int free; /* number of free DRQ entries */ - uint32_t cur; /* current buffer offset */ - uint32_t drq; /* DRQ entry pointer */ - uint32_t last_drq; /* where we have written last */ - u_int needalign, cnt, count, bcode; - bus_addr_t addr; - bus_size_t rest; - int i; - - if (error != 0) - return; - if (nseg > EN_MAX_DMASEG) - panic("too many DMA segments"); - - rx->wait = 0; - - free = sc->drq_free; - drq = sc->drq_us; - cur = slot->cur; - - last_drq = 0; - - /* - * Local macro to add an entry to the receive DMA area. If there - * are no entries left, return. Save the byte offset of the entry - * in last_drq for later use. - */ -#define PUT_DRQ_ENTRY(ENI, BCODE, COUNT, ADDR) \ - if (free == 0) { \ - EN_COUNT(sc->stats.rxdrqout); \ - rx->wait = 1; \ - return; \ - } \ - last_drq = drq; \ - en_write(sc, drq + 0, (ENI || !sc->is_adaptec) ? \ - MID_MK_RXQ_ENI(COUNT, rx->vc->vcc.vci, 0, BCODE) : \ - MID_MK_RXQ_ADP(COUNT, rx->vc->vcc.vci, 0, BCODE)); \ - en_write(sc, drq + 4, ADDR); \ - \ - EN_WRAPADD(MID_DRQOFF, MID_DRQEND, drq, 8); \ - free--; - - /* - * Local macro to generate a DMA entry to DMA cnt bytes. Updates - * the current buffer byte offset accordingly. - */ -#define DO_DRQ(TYPE) do { \ - rest -= cnt; \ - EN_WRAPADD(slot->start, slot->stop, cur, cnt); \ - DBG(sc, SERV, ("rx%td: "TYPE" %u bytes, %ju left, cur %#x", \ - slot - sc->rxslot, cnt, (uintmax_t)rest, cur)); \ - \ - PUT_DRQ_ENTRY(1, bcode, count, addr); \ - \ - addr += cnt; \ - } while (0) - - /* - * Skip the RBD at the beginning - */ - if (rx->pre_skip > 0) { - /* update DMA address */ - EN_WRAPADD(slot->start, slot->stop, cur, rx->pre_skip); - - PUT_DRQ_ENTRY(0, MIDDMA_JK, WORD_IDX(slot->start, cur), 0); - } - - for (i = 0; i < nseg; i++, segs++) { - addr = segs->ds_addr; - rest = segs->ds_len; - - if (sc->is_adaptec) { - /* adaptec card - simple */ - - /* advance the on-card buffer pointer */ - EN_WRAPADD(slot->start, slot->stop, cur, rest); - DBG(sc, SERV, ("rx%td: adp %ju bytes %#jx " - "(cur now 0x%x)", slot - sc->rxslot, - (uintmax_t)rest, (uintmax_t)addr, cur)); - - PUT_DRQ_ENTRY(0, 0, rest, addr); - - continue; - } - - /* - * do we need to do a DMA op to align to the maximum - * burst? Note, that we are alway 32-bit aligned. - */ - if (sc->alburst && - (needalign = (addr & sc->bestburstmask)) != 0) { - /* compute number of bytes, words and code */ - cnt = sc->bestburstlen - needalign; - if (cnt > rest) - cnt = rest; - count = cnt / sizeof(uint32_t); - if (sc->noalbursts) { - bcode = MIDDMA_WORD; - } else { - bcode = en_dmaplan[count].bcode; - count = cnt >> en_dmaplan[count].divshift; - } - DO_DRQ("al_dma"); - } - - /* do we need to do a max-sized burst? */ - if (rest >= sc->bestburstlen) { - count = rest >> sc->bestburstshift; - cnt = count << sc->bestburstshift; - bcode = sc->bestburstcode; - DO_DRQ("best_dma"); - } - - /* do we need to do a cleanup burst? */ - if (rest != 0) { - cnt = rest; - count = rest / sizeof(uint32_t); - if (sc->noalbursts) { - bcode = MIDDMA_WORD; - } else { - bcode = en_dmaplan[count].bcode; - count = cnt >> en_dmaplan[count].divshift; - } - DO_DRQ("clean_dma"); - } - } - - /* - * Skip stuff at the end - */ - if (rx->post_skip > 0) { - /* update DMA address */ - EN_WRAPADD(slot->start, slot->stop, cur, rx->post_skip); - - PUT_DRQ_ENTRY(0, MIDDMA_JK, WORD_IDX(slot->start, cur), 0); - } - - /* record the end for the interrupt routine */ - sc->drq[MID_DRQ_A2REG(last_drq)] = - EN_DQ_MK(slot - sc->rxslot, rx->m->m_pkthdr.len); - - /* set the end flag in the last descriptor */ - en_write(sc, last_drq + 0, SETQ_END(sc, en_read(sc, last_drq + 0))); - -#undef PUT_DRQ_ENTRY -#undef DO_DRQ - - /* commit */ - slot->cur = cur; - sc->drq_free = free; - sc->drq_us = drq; - - /* signal to card */ - en_write(sc, MID_DMA_WRRX, MID_DRQ_A2REG(sc->drq_us)); -} - -/* - * en_service: handle a service interrupt - * - * Q: why do we need a software service list? - * - * A: if we remove a VCI from the hardware list and we find that we are - * out of DRQs we must defer processing until some DRQs become free. - * so we must remember to look at this RX VCI/slot later, but we can't - * put it back on the hardware service list (since that isn't allowed). - * so we instead save it on the software service list. it would be nice - * if we could peek at the VCI on top of the hwservice list without removing - * it, however this leads to a race condition: if we peek at it and - * decide we are done with it new data could come in before we have a - * chance to remove it from the hwslist. by the time we get it out of - * the list the interrupt for the new data will be lost. oops! - * - * LOCK: locked, needed - */ -static void -en_service(struct en_softc *sc) -{ - struct mbuf *m, *lastm; - struct en_map *map; - struct rxarg rx; - uint32_t cur; - uint32_t dstart; /* data start (as reported by card) */ - uint32_t rbd; /* receive buffer descriptor */ - uint32_t pdu; /* AAL5 trailer */ - int mlen; - int error; - struct en_rxslot *slot; - struct en_vcc *vc; - - rx.sc = sc; - - next_vci: - if (sc->swsl_size == 0) { - DBG(sc, SERV, ("en_service done")); - return; - } - - /* - * get vcc to service - */ - rx.vc = vc = sc->vccs[sc->swslist[sc->swsl_head]]; - slot = vc->rxslot; - KASSERT (slot->vcc->rxslot == slot, ("en_service: rx slot/vci sync")); - - /* - * determine our mode and if we've got any work to do - */ - DBG(sc, SERV, ("rx%td: service vci=%d start/stop/cur=0x%x 0x%x " - "0x%x", slot - sc->rxslot, vc->vcc.vci, slot->start, - slot->stop, slot->cur)); - - same_vci: - cur = slot->cur; - - dstart = MIDV_DSTART(en_read(sc, MID_DST_RP(vc->vcc.vci))); - dstart = (dstart * sizeof(uint32_t)) + slot->start; - - /* check to see if there is any data at all */ - if (dstart == cur) { - EN_WRAPADD(0, MID_SL_N, sc->swsl_head, 1); - /* remove from swslist */ - vc->vflags &= ~VCC_SWSL; - sc->swsl_size--; - DBG(sc, SERV, ("rx%td: remove vci %d from swslist", - slot - sc->rxslot, vc->vcc.vci)); - goto next_vci; - } - - /* - * figure out how many bytes we need - * [mlen = # bytes to go in mbufs] - */ - rbd = en_read(sc, cur); - if (MID_RBD_ID(rbd) != MID_RBD_STDID) - panic("en_service: id mismatch"); - - if (rbd & MID_RBD_T) { - mlen = 0; /* we've got trash */ - rx.pre_skip = MID_RBD_SIZE; - rx.post_skip = 0; - EN_COUNT(sc->stats.ttrash); - DBG(sc, SERV, ("RX overflow lost %d cells!", MID_RBD_CNT(rbd))); - - } else if (vc->vcc.aal != ATMIO_AAL_5) { - /* 1 cell (ick!) */ - mlen = MID_CHDR_SIZE + MID_ATMDATASZ; - rx.pre_skip = MID_RBD_SIZE; - rx.post_skip = 0; - - } else { - rx.pre_skip = MID_RBD_SIZE; - - /* get PDU trailer in correct byte order */ - pdu = cur + MID_RBD_CNT(rbd) * MID_ATMDATASZ + - MID_RBD_SIZE - MID_PDU_SIZE; - if (pdu >= slot->stop) - pdu -= EN_RXSZ * 1024; - pdu = en_read(sc, pdu); - - if (MID_RBD_CNT(rbd) * MID_ATMDATASZ < - MID_PDU_LEN(pdu)) { - device_printf(sc->dev, "invalid AAL5 length\n"); - rx.post_skip = MID_RBD_CNT(rbd) * MID_ATMDATASZ; - mlen = 0; - if_inc_counter(sc->ifp, IFCOUNTER_IERRORS, 1); - - } else if (rbd & MID_RBD_CRCERR) { - device_printf(sc->dev, "CRC error\n"); - rx.post_skip = MID_RBD_CNT(rbd) * MID_ATMDATASZ; - mlen = 0; - if_inc_counter(sc->ifp, IFCOUNTER_IERRORS, 1); - - } else { - mlen = MID_PDU_LEN(pdu); - rx.post_skip = MID_RBD_CNT(rbd) * MID_ATMDATASZ - mlen; - } - } - - /* - * now allocate mbufs for mlen bytes of data, if out of mbufs, trash all - * - * notes: - * 1. it is possible that we've already allocated an mbuf for this pkt - * but ran out of DRQs, in which case we saved the allocated mbuf - * on "q". - * 2. if we save an buf in "q" we store the "cur" (pointer) in the - * buf as an identity (that we can check later). - * 3. after this block of code, if m is still NULL then we ran out of - * mbufs - */ - _IF_DEQUEUE(&slot->q, m); - if (m != NULL) { - if (m->m_pkthdr.csum_data != cur) { - /* wasn't ours */ - DBG(sc, SERV, ("rx%td: q'ed buf %p not ours", - slot - sc->rxslot, m)); - _IF_PREPEND(&slot->q, m); - m = NULL; - EN_COUNT(sc->stats.rxqnotus); - } else { - EN_COUNT(sc->stats.rxqus); - DBG(sc, SERV, ("rx%td: recovered q'ed buf %p", - slot - sc->rxslot, m)); - } - } - if (mlen == 0 && m != NULL) { - /* should not happen */ - m_freem(m); - m = NULL; - } - - if (mlen != 0 && m == NULL) { - m = en_mget(sc, mlen); - if (m == NULL) { - rx.post_skip += mlen; - mlen = 0; - EN_COUNT(sc->stats.rxmbufout); - DBG(sc, SERV, ("rx%td: out of mbufs", - slot - sc->rxslot)); - } else - rx.post_skip -= roundup(mlen, sizeof(uint32_t)) - mlen; - - DBG(sc, SERV, ("rx%td: allocate buf %p, mlen=%d", - slot - sc->rxslot, m, mlen)); - } - - DBG(sc, SERV, ("rx%td: VCI %d, rbuf %p, mlen %d, skip %u/%u", - slot - sc->rxslot, vc->vcc.vci, m, mlen, rx.pre_skip, - rx.post_skip)); - - if (m != NULL) { - /* M_NOWAIT - called from interrupt context */ - map = uma_zalloc_arg(sc->map_zone, sc, M_NOWAIT); - if (map == NULL) { - rx.post_skip += mlen; - m_freem(m); - DBG(sc, SERV, ("rx%td: out of maps", - slot - sc->rxslot)); - goto skip; - } - rx.m = m; - error = bus_dmamap_load_mbuf(sc->txtag, map->map, m, - en_rxdma_load, &rx, BUS_DMA_NOWAIT); - - if (error != 0) { - device_printf(sc->dev, "loading RX map failed " - "%d\n", error); - uma_zfree(sc->map_zone, map); - m_freem(m); - rx.post_skip += mlen; - goto skip; - - } - map->flags |= ENMAP_LOADED; - - if (rx.wait) { - /* out of DRQs - wait */ - uma_zfree(sc->map_zone, map); - - m->m_pkthdr.csum_data = cur; - _IF_ENQUEUE(&slot->q, m); - EN_COUNT(sc->stats.rxdrqout); - - sc->need_drqs = 1; /* flag condition */ - return; - - } - (void)m_length(m, &lastm); - lastm->m_len -= roundup(mlen, sizeof(uint32_t)) - mlen; - - m->m_pkthdr.rcvif = (void *)map; - _IF_ENQUEUE(&slot->indma, m); - - /* get next packet in this slot */ - goto same_vci; - } - skip: - /* - * Here we end if we should drop the packet from the receive buffer. - * The number of bytes to drop is in fill. We can do this with on - * JK entry. If we don't even have that one - wait. - */ - if (sc->drq_free == 0) { - sc->need_drqs = 1; /* flag condition */ - return; - } - rx.post_skip += rx.pre_skip; - DBG(sc, SERV, ("rx%td: skipping %u", slot - sc->rxslot, rx.post_skip)); - - /* advance buffer address */ - EN_WRAPADD(slot->start, slot->stop, cur, rx.post_skip); - - /* write DRQ entry */ - if (sc->is_adaptec) - en_write(sc, sc->drq_us, - MID_MK_RXQ_ADP(WORD_IDX(slot->start, cur), - vc->vcc.vci, MID_DMA_END, MIDDMA_JK)); - else - en_write(sc, sc->drq_us, - MID_MK_RXQ_ENI(WORD_IDX(slot->start, cur), - vc->vcc.vci, MID_DMA_END, MIDDMA_JK)); - en_write(sc, sc->drq_us + 4, 0); - EN_WRAPADD(MID_DRQOFF, MID_DRQEND, sc->drq_us, 8); - sc->drq_free--; - - /* signal to RX interrupt */ - sc->drq[MID_DRQ_A2REG(sc->drq_us)] = EN_DQ_MK(slot - sc->rxslot, 0); - slot->cur = cur; - - /* signal to card */ - en_write(sc, MID_DMA_WRRX, MID_DRQ_A2REG(sc->drq_us)); - - goto same_vci; -} - -/* - * interrupt handler - * - * LOCK: unlocked, needed - */ -void -en_intr(void *arg) -{ - struct en_softc *sc = arg; - uint32_t reg, kick, mask; - int lcv, need_softserv; - - EN_LOCK(sc); - - reg = en_read(sc, MID_INTACK); - DBG(sc, INTR, ("interrupt=0x%b", reg, MID_INTBITS)); - - if ((reg & MID_INT_ANY) == 0) { - EN_UNLOCK(sc); - return; - } - - /* - * unexpected errors that need a reset - */ - if ((reg & (MID_INT_IDENT | MID_INT_LERR | MID_INT_DMA_ERR)) != 0) { - device_printf(sc->dev, "unexpected interrupt=0x%b, " - "resetting\n", reg, MID_INTBITS); -#ifdef EN_DEBUG - panic("en: unexpected error"); -#else - en_reset_ul(sc); - en_init(sc); -#endif - EN_UNLOCK(sc); - return; - } - - if (reg & MID_INT_SUNI) - utopia_intr(&sc->utopia); - - kick = 0; - if (reg & MID_INT_TX) - kick |= en_intr_tx(sc, reg); - - if (reg & MID_INT_DMA_TX) - kick |= en_intr_tx_dma(sc); - - /* - * kick xmit channels as needed. - */ - if (kick) { - DBG(sc, INTR, ("tx kick mask = 0x%x", kick)); - for (mask = 1, lcv = 0 ; lcv < EN_NTX ; lcv++, mask = mask * 2) - if ((kick & mask) && _IF_QLEN(&sc->txslot[lcv].q) != 0) - en_txdma(sc, &sc->txslot[lcv]); - } - - need_softserv = 0; - if (reg & MID_INT_DMA_RX) - need_softserv |= en_intr_rx_dma(sc); - - if (reg & MID_INT_SERVICE) - need_softserv |= en_intr_service(sc); - - if (need_softserv) - en_service(sc); - - /* - * keep our stats - */ - if (reg & MID_INT_DMA_OVR) { - EN_COUNT(sc->stats.dmaovr); - DBG(sc, INTR, ("MID_INT_DMA_OVR")); - } - reg = en_read(sc, MID_STAT); - sc->stats.otrash += MID_OTRASH(reg); - sc->stats.vtrash += MID_VTRASH(reg); - - EN_UNLOCK(sc); -} - -/* - * Read at most n SUNI regs starting at reg into val - */ -static int -en_utopia_readregs(struct ifatm *ifatm, u_int reg, uint8_t *val, u_int *n) -{ - struct en_softc *sc = ifatm->ifp->if_softc; - u_int i; - - EN_CHECKLOCK(sc); - if (reg >= MID_NSUNI) - return (EINVAL); - if (reg + *n > MID_NSUNI) - *n = MID_NSUNI - reg; - - for (i = 0; i < *n; i++) - val[i] = en_read(sc, MID_SUNIOFF + 4 * (reg + i)); - - return (0); -} - -/* - * change the bits given by mask to them in val in register reg - */ -static int -en_utopia_writereg(struct ifatm *ifatm, u_int reg, u_int mask, u_int val) -{ - struct en_softc *sc = ifatm->ifp->if_softc; - uint32_t regval; - - EN_CHECKLOCK(sc); - if (reg >= MID_NSUNI) - return (EINVAL); - regval = en_read(sc, MID_SUNIOFF + 4 * reg); - regval = (regval & ~mask) | (val & mask); - en_write(sc, MID_SUNIOFF + 4 * reg, regval); - return (0); -} - -static const struct utopia_methods en_utopia_methods = { - en_utopia_readregs, - en_utopia_writereg -}; - -/*********************************************************************/ -/* - * Probing the DMA brokeness of the card - */ - -/* - * Physical address load helper function for DMA probe - * - * LOCK: unlocked, not needed - */ -static void -en_dmaprobe_load(void *uarg, bus_dma_segment_t *segs, int nseg, int error) -{ - if (error == 0) - *(bus_addr_t *)uarg = segs[0].ds_addr; -} - -/* - * en_dmaprobe: helper function for en_attach. - * - * see how the card handles DMA by running a few DMA tests. we need - * to figure out the largest number of bytes we can DMA in one burst - * ("bestburstlen"), and if the starting address for a burst needs to - * be aligned on any sort of boundary or not ("alburst"). - * - * Things turn out more complex than that, because on my (harti) brand - * new motherboard (2.4GHz) we can do 64byte aligned DMAs, but everything - * we more than 4 bytes fails (with an RX DMA timeout) for physical - * addresses that end with 0xc. Therefor we search not only the largest - * burst that is supported (hopefully 64) but also check what is the largerst - * unaligned supported size. If that appears to be lesser than 4 words, - * set the noalbursts flag. That will be set only if also alburst is set. - */ - -/* - * en_dmaprobe_doit: do actual testing for the DMA test. - * Cycle through all bursts sizes from 8 up to 64 and try whether it works. - * Return the largest one that works. - * - * LOCK: unlocked, not needed - */ -static int -en_dmaprobe_doit(struct en_softc *sc, uint8_t *sp, bus_addr_t psp) -{ - uint8_t *dp = sp + MIDDMA_MAXBURST; - bus_addr_t pdp = psp + MIDDMA_MAXBURST; - int lcv, retval = 4, cnt; - uint32_t reg, bcode, midvloc; - - if (sc->en_busreset) - sc->en_busreset(sc); - en_write(sc, MID_RESID, 0x0); /* reset card before touching RAM */ - - /* - * set up a 1k buffer at MID_BUFOFF - */ - midvloc = ((MID_BUFOFF - MID_RAMOFF) / sizeof(uint32_t)) - >> MIDV_LOCTOPSHFT; - en_write(sc, MIDX_PLACE(0), MIDX_MKPLACE(en_k2sz(1), midvloc)); - en_write(sc, MID_VC(0), (midvloc << MIDV_LOCSHIFT) - | (en_k2sz(1) << MIDV_SZSHIFT) | MIDV_TRASH); - en_write(sc, MID_DST_RP(0), 0); - en_write(sc, MID_WP_ST_CNT(0), 0); - - /* set up sample data */ - for (lcv = 0 ; lcv < MIDDMA_MAXBURST; lcv++) - sp[lcv] = lcv + 1; - - /* enable DMA (only) */ - en_write(sc, MID_MAST_CSR, MID_MCSR_ENDMA); - - sc->drq_chip = MID_DRQ_REG2A(en_read(sc, MID_DMA_RDRX)); - sc->dtq_chip = MID_DTQ_REG2A(en_read(sc, MID_DMA_RDTX)); - - /* - * try it now . . . DMA it out, then DMA it back in and compare - * - * note: in order to get the dma stuff to reverse directions it wants - * the "end" flag set! since we are not dma'ing valid data we may - * get an ident mismatch interrupt (which we will ignore). - */ - DBG(sc, DMA, ("test sp=%p/%#lx, dp=%p/%#lx", - sp, (u_long)psp, dp, (u_long)pdp)); - for (lcv = 8 ; lcv <= MIDDMA_MAXBURST ; lcv = lcv * 2) { - DBG(sc, DMA, ("test lcv=%d", lcv)); - - /* zero SRAM and dest buffer */ - bus_space_set_region_4(sc->en_memt, sc->en_base, - MID_BUFOFF, 0, 1024 / 4); - bzero(dp, MIDDMA_MAXBURST); - - bcode = en_sz2b(lcv); - - /* build lcv-byte-DMA x NBURSTS */ - if (sc->is_adaptec) - en_write(sc, sc->dtq_chip, - MID_MK_TXQ_ADP(lcv, 0, MID_DMA_END, 0)); - else - en_write(sc, sc->dtq_chip, - MID_MK_TXQ_ENI(1, 0, MID_DMA_END, bcode)); - en_write(sc, sc->dtq_chip + 4, psp); - EN_WRAPADD(MID_DTQOFF, MID_DTQEND, sc->dtq_chip, 8); - en_write(sc, MID_DMA_WRTX, MID_DTQ_A2REG(sc->dtq_chip)); - - cnt = 1000; - while ((reg = en_readx(sc, MID_DMA_RDTX)) != - MID_DTQ_A2REG(sc->dtq_chip)) { - DELAY(1); - if (--cnt == 0) { - DBG(sc, DMA, ("unexpected timeout in tx " - "DMA test\n alignment=0x%lx, burst size=%d" - ", dma addr reg=%#x, rdtx=%#x, stat=%#x\n", - (u_long)sp & 63, lcv, - en_read(sc, MID_DMA_ADDR), reg, - en_read(sc, MID_INTSTAT))); - return (retval); - } - } - - reg = en_read(sc, MID_INTACK); - if ((reg & MID_INT_DMA_TX) != MID_INT_DMA_TX) { - DBG(sc, DMA, ("unexpected status in tx DMA test: %#x\n", - reg)); - return (retval); - } - /* re-enable DMA (only) */ - en_write(sc, MID_MAST_CSR, MID_MCSR_ENDMA); - - /* "return to sender..." address is known ... */ - - /* build lcv-byte-DMA x NBURSTS */ - if (sc->is_adaptec) - en_write(sc, sc->drq_chip, - MID_MK_RXQ_ADP(lcv, 0, MID_DMA_END, 0)); - else - en_write(sc, sc->drq_chip, - MID_MK_RXQ_ENI(1, 0, MID_DMA_END, bcode)); - en_write(sc, sc->drq_chip + 4, pdp); - EN_WRAPADD(MID_DRQOFF, MID_DRQEND, sc->drq_chip, 8); - en_write(sc, MID_DMA_WRRX, MID_DRQ_A2REG(sc->drq_chip)); - cnt = 1000; - while ((reg = en_readx(sc, MID_DMA_RDRX)) != - MID_DRQ_A2REG(sc->drq_chip)) { - DELAY(1); - cnt--; - if (--cnt == 0) { - DBG(sc, DMA, ("unexpected timeout in rx " - "DMA test, rdrx=%#x\n", reg)); - return (retval); - } - } - reg = en_read(sc, MID_INTACK); - if ((reg & MID_INT_DMA_RX) != MID_INT_DMA_RX) { - DBG(sc, DMA, ("unexpected status in rx DMA " - "test: 0x%x\n", reg)); - return (retval); - } - if (bcmp(sp, dp, lcv)) { - DBG(sc, DMA, ("DMA test failed! lcv=%d, sp=%p, " - "dp=%p", lcv, sp, dp)); - return (retval); - } - - retval = lcv; - } - return (retval); /* studly 64 byte DMA present! oh baby!! */ -} - -/* - * Find the best DMA parameters - * - * LOCK: unlocked, not needed - */ -static void -en_dmaprobe(struct en_softc *sc) -{ - bus_dma_tag_t tag; - bus_dmamap_t map; - int err; - void *buffer; - int bestalgn, lcv, try, bestnoalgn; - bus_addr_t phys; - uint8_t *addr; - - sc->alburst = 0; - sc->noalbursts = 0; - - /* - * Allocate some DMA-able memory. - * We need 3 times the max burst size aligned to the max burst size. - */ - err = bus_dma_tag_create(bus_get_dma_tag(sc->dev), MIDDMA_MAXBURST, 0, - BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL, - 3 * MIDDMA_MAXBURST, 1, 3 * MIDDMA_MAXBURST, 0, - NULL, NULL, &tag); - if (err) - panic("%s: cannot create test DMA tag %d", __func__, err); - - err = bus_dmamem_alloc(tag, &buffer, 0, &map); - if (err) - panic("%s: cannot allocate test DMA memory %d", __func__, err); - - err = bus_dmamap_load(tag, map, buffer, 3 * MIDDMA_MAXBURST, - en_dmaprobe_load, &phys, BUS_DMA_NOWAIT); - if (err) - panic("%s: cannot load test DMA map %d", __func__, err); - addr = buffer; - DBG(sc, DMA, ("phys=%#lx addr=%p", (u_long)phys, addr)); - - /* - * Now get the best burst size of the aligned case. - */ - bestalgn = bestnoalgn = en_dmaprobe_doit(sc, addr, phys); - - /* - * Now try unaligned. - */ - for (lcv = 4; lcv < MIDDMA_MAXBURST; lcv += 4) { - try = en_dmaprobe_doit(sc, addr + lcv, phys + lcv); - - if (try < bestnoalgn) - bestnoalgn = try; - } - - if (bestnoalgn < bestalgn) { - sc->alburst = 1; - if (bestnoalgn < 32) - sc->noalbursts = 1; - } - - sc->bestburstlen = bestalgn; - sc->bestburstshift = en_log2(bestalgn); - sc->bestburstmask = sc->bestburstlen - 1; /* must be power of 2 */ - sc->bestburstcode = en_sz2b(bestalgn); - - /* - * Reset the chip before freeing the buffer. It may still be trying - * to DMA. - */ - if (sc->en_busreset) - sc->en_busreset(sc); - en_write(sc, MID_RESID, 0x0); /* reset card before touching RAM */ - - DELAY(10000); /* may still do DMA */ - - /* - * Free the DMA stuff - */ - bus_dmamap_unload(tag, map); - bus_dmamem_free(tag, buffer, map); - bus_dma_tag_destroy(tag); -} - -/*********************************************************************/ -/* - * Attach/detach. - */ - -/* - * Attach to the card. - * - * LOCK: unlocked, not needed (but initialized) - */ -int -en_attach(struct en_softc *sc) -{ - struct ifnet *ifp = sc->ifp; - int sz; - uint32_t reg, lcv, check, ptr, sav, midvloc; - -#ifdef EN_DEBUG - sc->debug = EN_DEBUG; -#endif - - /* - * Probe card to determine memory size. - * - * The stupid ENI card always reports to PCI that it needs 4MB of - * space (2MB regs and 2MB RAM). If it has less than 2MB RAM the - * addresses wrap in the RAM address space (i.e. on a 512KB card - * addresses 0x3ffffc, 0x37fffc, and 0x2ffffc are aliases for - * 0x27fffc [note that RAM starts at offset 0x200000]). - */ - - /* reset card before touching RAM */ - if (sc->en_busreset) - sc->en_busreset(sc); - en_write(sc, MID_RESID, 0x0); - - for (lcv = MID_PROBEOFF; lcv <= MID_MAXOFF ; lcv += MID_PROBSIZE) { - en_write(sc, lcv, lcv); /* data[address] = address */ - for (check = MID_PROBEOFF; check < lcv ;check += MID_PROBSIZE) { - reg = en_read(sc, check); - if (reg != check) - /* found an alias! - quit */ - goto done_probe; - } - } - done_probe: - lcv -= MID_PROBSIZE; /* take one step back */ - sc->en_obmemsz = (lcv + 4) - MID_RAMOFF; - - /* - * determine the largest DMA burst supported - */ - en_dmaprobe(sc); - - /* - * "hello world" - */ - - /* reset */ - if (sc->en_busreset) - sc->en_busreset(sc); - en_write(sc, MID_RESID, 0x0); /* reset */ - - /* zero memory */ - bus_space_set_region_4(sc->en_memt, sc->en_base, - MID_RAMOFF, 0, sc->en_obmemsz / 4); - - reg = en_read(sc, MID_RESID); - - device_printf(sc->dev, "ATM midway v%d, board IDs %d.%d, %s%s%s, " - "%ldKB on-board RAM\n", MID_VER(reg), MID_MID(reg), MID_DID(reg), - (MID_IS_SABRE(reg)) ? "sabre controller, " : "", - (MID_IS_SUNI(reg)) ? "SUNI" : "Utopia", - (!MID_IS_SUNI(reg) && MID_IS_UPIPE(reg)) ? " (pipelined)" : "", - (long)sc->en_obmemsz / 1024); - - /* - * fill in common ATM interface stuff - */ - IFP2IFATM(sc->ifp)->mib.hw_version = (MID_VER(reg) << 16) | - (MID_MID(reg) << 8) | MID_DID(reg); - if (MID_DID(reg) & 0x4) - IFP2IFATM(sc->ifp)->mib.media = IFM_ATM_UTP_155; - else - IFP2IFATM(sc->ifp)->mib.media = IFM_ATM_MM_155; - - IFP2IFATM(sc->ifp)->mib.pcr = ATM_RATE_155M; - IFP2IFATM(sc->ifp)->mib.vpi_bits = 0; - IFP2IFATM(sc->ifp)->mib.vci_bits = MID_VCI_BITS; - IFP2IFATM(sc->ifp)->mib.max_vccs = MID_N_VC; - IFP2IFATM(sc->ifp)->mib.max_vpcs = 0; - - if (sc->is_adaptec) { - IFP2IFATM(sc->ifp)->mib.device = ATM_DEVICE_ADP155P; - if (sc->bestburstlen == 64 && sc->alburst == 0) - device_printf(sc->dev, - "passed 64 byte DMA test\n"); - else - device_printf(sc->dev, "FAILED DMA TEST: " - "burst=%d, alburst=%d\n", sc->bestburstlen, - sc->alburst); - } else { - IFP2IFATM(sc->ifp)->mib.device = ATM_DEVICE_ENI155P; - device_printf(sc->dev, "maximum DMA burst length = %d " - "bytes%s\n", sc->bestburstlen, sc->alburst ? - sc->noalbursts ? " (no large bursts)" : " (must align)" : - ""); - } - - /* - * link into network subsystem and prepare card - */ - sc->ifp->if_softc = sc; - ifp->if_flags = IFF_SIMPLEX; - ifp->if_ioctl = en_ioctl; - ifp->if_start = en_start; - - mtx_init(&sc->en_mtx, device_get_nameunit(sc->dev), - MTX_NETWORK_LOCK, MTX_DEF); - cv_init(&sc->cv_close, "VC close"); - - /* - * Make the sysctl tree - */ - sysctl_ctx_init(&sc->sysctl_ctx); - - if ((sc->sysctl_tree = SYSCTL_ADD_NODE(&sc->sysctl_ctx, - SYSCTL_STATIC_CHILDREN(_hw_atm), OID_AUTO, - device_get_nameunit(sc->dev), CTLFLAG_RD, 0, "")) == NULL) - goto fail; - - if (SYSCTL_ADD_PROC(&sc->sysctl_ctx, SYSCTL_CHILDREN(sc->sysctl_tree), - OID_AUTO, "istats", CTLTYPE_OPAQUE | CTLFLAG_RD, sc, 0, - en_sysctl_istats, "S", "internal statistics") == NULL) - goto fail; - -#ifdef EN_DEBUG - if (SYSCTL_ADD_UINT(&sc->sysctl_ctx, SYSCTL_CHILDREN(sc->sysctl_tree), - OID_AUTO, "debug", CTLFLAG_RW , &sc->debug, 0, "") == NULL) - goto fail; -#endif - - IFP2IFATM(sc->ifp)->phy = &sc->utopia; - utopia_attach(&sc->utopia, IFP2IFATM(sc->ifp), &sc->media, &sc->en_mtx, - &sc->sysctl_ctx, SYSCTL_CHILDREN(sc->sysctl_tree), - &en_utopia_methods); - utopia_init_media(&sc->utopia); - - MGET(sc->padbuf, M_WAITOK, MT_DATA); - bzero(sc->padbuf->m_data, MLEN); - - if (bus_dma_tag_create(bus_get_dma_tag(sc->dev), 1, 0, - BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL, - EN_TXSZ * 1024, EN_MAX_DMASEG, EN_TXSZ * 1024, 0, - NULL, NULL, &sc->txtag)) - goto fail; - - sc->map_zone = uma_zcreate("en dma maps", sizeof(struct en_map), - en_map_ctor, en_map_dtor, NULL, en_map_fini, UMA_ALIGN_PTR, - UMA_ZONE_ZINIT); - if (sc->map_zone == NULL) - goto fail; - uma_zone_set_max(sc->map_zone, EN_MAX_MAPS); - - /* - * init softc - */ - sc->vccs = malloc(MID_N_VC * sizeof(sc->vccs[0]), - M_DEVBUF, M_ZERO | M_WAITOK); - - sz = sc->en_obmemsz - (MID_BUFOFF - MID_RAMOFF); - ptr = sav = MID_BUFOFF; - ptr = roundup(ptr, EN_TXSZ * 1024); /* align */ - sz = sz - (ptr - sav); - if (EN_TXSZ*1024 * EN_NTX > sz) { - device_printf(sc->dev, "EN_NTX/EN_TXSZ too big\n"); - goto fail; - } - for (lcv = 0 ;lcv < EN_NTX ;lcv++) { - sc->txslot[lcv].mbsize = 0; - sc->txslot[lcv].start = ptr; - ptr += (EN_TXSZ * 1024); - sz -= (EN_TXSZ * 1024); - sc->txslot[lcv].stop = ptr; - sc->txslot[lcv].nref = 0; - DBG(sc, INIT, ("tx%d: start 0x%x, stop 0x%x", lcv, - sc->txslot[lcv].start, sc->txslot[lcv].stop)); - } - - sav = ptr; - ptr = roundup(ptr, EN_RXSZ * 1024); /* align */ - sz = sz - (ptr - sav); - sc->en_nrx = sz / (EN_RXSZ * 1024); - if (sc->en_nrx <= 0) { - device_printf(sc->dev, "EN_NTX/EN_TXSZ/EN_RXSZ too big\n"); - goto fail; - } - - /* - * ensure that there is always one VC slot on the service list free - * so that we can tell the difference between a full and empty list. - */ - if (sc->en_nrx >= MID_N_VC) - sc->en_nrx = MID_N_VC - 1; - - for (lcv = 0 ; lcv < sc->en_nrx ; lcv++) { - sc->rxslot[lcv].vcc = NULL; - midvloc = sc->rxslot[lcv].start = ptr; - ptr += (EN_RXSZ * 1024); - sz -= (EN_RXSZ * 1024); - sc->rxslot[lcv].stop = ptr; - midvloc = midvloc - MID_RAMOFF; - /* mask, cvt to words */ - midvloc = rounddown2(midvloc, EN_RXSZ * 1024) >> 2; - /* we only want the top 11 bits */ - midvloc = midvloc >> MIDV_LOCTOPSHFT; - midvloc = (midvloc & MIDV_LOCMASK) << MIDV_LOCSHIFT; - sc->rxslot[lcv].mode = midvloc | - (en_k2sz(EN_RXSZ) << MIDV_SZSHIFT) | MIDV_TRASH; - - DBG(sc, INIT, ("rx%d: start 0x%x, stop 0x%x, mode 0x%x", lcv, - sc->rxslot[lcv].start, sc->rxslot[lcv].stop, - sc->rxslot[lcv].mode)); - } - - device_printf(sc->dev, "%d %dKB receive buffers, %d %dKB transmit " - "buffers\n", sc->en_nrx, EN_RXSZ, EN_NTX, EN_TXSZ); - device_printf(sc->dev, "end station identifier (mac address) " - "%6D\n", IFP2IFATM(sc->ifp)->mib.esi, ":"); - - /* - * Start SUNI stuff. This will call our readregs/writeregs - * functions and these assume the lock to be held so we must get it - * here. - */ - EN_LOCK(sc); - utopia_start(&sc->utopia); - utopia_reset(&sc->utopia); - EN_UNLOCK(sc); - - /* - * final commit - */ - atm_ifattach(ifp); - -#ifdef ENABLE_BPF - bpfattach(ifp, DLT_ATM_RFC1483, sizeof(struct atmllc)); -#endif - - return (0); - - fail: - en_destroy(sc); - return (-1); -} - -/* - * Free all internal resources. No access to bus resources here. - * No locking required here (interrupt is already disabled). - * - * LOCK: unlocked, needed (but destroyed) - */ -void -en_destroy(struct en_softc *sc) -{ - u_int i; - - if (sc->utopia.state & UTP_ST_ATTACHED) { - /* these assume the lock to be held */ - EN_LOCK(sc); - utopia_stop(&sc->utopia); - utopia_detach(&sc->utopia); - EN_UNLOCK(sc); - } - - if (sc->vccs != NULL) { - /* get rid of sticky VCCs */ - for (i = 0; i < MID_N_VC; i++) - if (sc->vccs[i] != NULL) - uma_zfree(en_vcc_zone, sc->vccs[i]); - free(sc->vccs, M_DEVBUF); - } - - if (sc->padbuf != NULL) - m_free(sc->padbuf); - - /* - * Destroy the map zone before the tag (the fini function will - * destroy the DMA maps using the tag) - */ - if (sc->map_zone != NULL) - uma_zdestroy(sc->map_zone); - - if (sc->txtag != NULL) - bus_dma_tag_destroy(sc->txtag); - - (void)sysctl_ctx_free(&sc->sysctl_ctx); - - cv_destroy(&sc->cv_close); - mtx_destroy(&sc->en_mtx); -} - -/* - * Module loaded/unloaded - */ -int -en_modevent(module_t mod __unused, int event, void *arg __unused) -{ - - switch (event) { - - case MOD_LOAD: - en_vcc_zone = uma_zcreate("EN vccs", sizeof(struct en_vcc), - NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); - if (en_vcc_zone == NULL) - return (ENOMEM); - break; - - case MOD_UNLOAD: - uma_zdestroy(en_vcc_zone); - break; - } - return (0); -} - -/*********************************************************************/ -/* - * Debugging support - */ - -#ifdef EN_DDBHOOK -/* - * functions we can call from ddb - */ - -/* - * en_dump: dump the state - */ -#define END_SWSL 0x00000040 /* swsl state */ -#define END_DRQ 0x00000020 /* drq state */ -#define END_DTQ 0x00000010 /* dtq state */ -#define END_RX 0x00000008 /* rx state */ -#define END_TX 0x00000004 /* tx state */ -#define END_MREGS 0x00000002 /* registers */ -#define END_STATS 0x00000001 /* dump stats */ - -#define END_BITS "\20\7SWSL\6DRQ\5DTQ\4RX\3TX\2MREGS\1STATS" - -static void -en_dump_stats(const struct en_stats *s) -{ - printf("en_stats:\n"); - printf("\t%d/%d mfix (%d failed)\n", s->mfixaddr, s->mfixlen, - s->mfixfail); - printf("\t%d rx dma overflow interrupts\n", s->dmaovr); - printf("\t%d times out of TX space and stalled\n", s->txoutspace); - printf("\t%d times out of DTQs\n", s->txdtqout); - printf("\t%d times launched a packet\n", s->launch); - printf("\t%d times pulled the hw service list\n", s->hwpull); - printf("\t%d times pushed a vci on the sw service list\n", s->swadd); - printf("\t%d times RX pulled an mbuf from Q that wasn't ours\n", - s->rxqnotus); - printf("\t%d times RX pulled a good mbuf from Q\n", s->rxqus); - printf("\t%d times ran out of DRQs\n", s->rxdrqout); - printf("\t%d transmit packets dropped due to mbsize\n", s->txmbovr); - printf("\t%d cells trashed due to turned off rxvc\n", s->vtrash); - printf("\t%d cells trashed due to totally full buffer\n", s->otrash); - printf("\t%d cells trashed due almost full buffer\n", s->ttrash); - printf("\t%d rx mbuf allocation failures\n", s->rxmbufout); - printf("\t%d times out of tx maps\n", s->txnomap); -#ifdef NATM -#ifdef NATM_STAT - printf("\tnatmintr so_rcv: ok/drop cnt: %d/%d, ok/drop bytes: %d/%d\n", - natm_sookcnt, natm_sodropcnt, natm_sookbytes, natm_sodropbytes); -#endif -#endif -} - -static void -en_dump_mregs(struct en_softc *sc) -{ - u_int cnt; - - printf("mregs:\n"); - printf("resid = 0x%x\n", en_read(sc, MID_RESID)); - printf("interrupt status = 0x%b\n", - (int)en_read(sc, MID_INTSTAT), MID_INTBITS); - printf("interrupt enable = 0x%b\n", - (int)en_read(sc, MID_INTENA), MID_INTBITS); - printf("mcsr = 0x%b\n", (int)en_read(sc, MID_MAST_CSR), MID_MCSRBITS); - printf("serv_write = [chip=%u] [us=%u]\n", en_read(sc, MID_SERV_WRITE), - MID_SL_A2REG(sc->hwslistp)); - printf("dma addr = 0x%x\n", en_read(sc, MID_DMA_ADDR)); - printf("DRQ: chip[rd=0x%x,wr=0x%x], sc[chip=0x%x,us=0x%x]\n", - MID_DRQ_REG2A(en_read(sc, MID_DMA_RDRX)), - MID_DRQ_REG2A(en_read(sc, MID_DMA_WRRX)), sc->drq_chip, sc->drq_us); - printf("DTQ: chip[rd=0x%x,wr=0x%x], sc[chip=0x%x,us=0x%x]\n", - MID_DTQ_REG2A(en_read(sc, MID_DMA_RDTX)), - MID_DTQ_REG2A(en_read(sc, MID_DMA_WRTX)), sc->dtq_chip, sc->dtq_us); - - printf(" unusal txspeeds:"); - for (cnt = 0 ; cnt < MID_N_VC ; cnt++) - if (sc->vccs[cnt]->txspeed) - printf(" vci%d=0x%x", cnt, sc->vccs[cnt]->txspeed); - printf("\n"); - - printf(" rxvc slot mappings:"); - for (cnt = 0 ; cnt < MID_N_VC ; cnt++) - if (sc->vccs[cnt]->rxslot != NULL) - printf(" %d->%td", cnt, - sc->vccs[cnt]->rxslot - sc->rxslot); - printf("\n"); -} - -static void -en_dump_tx(struct en_softc *sc) -{ - u_int slot; - - printf("tx:\n"); - for (slot = 0 ; slot < EN_NTX; slot++) { - printf("tx%d: start/stop/cur=0x%x/0x%x/0x%x [%d] ", slot, - sc->txslot[slot].start, sc->txslot[slot].stop, - sc->txslot[slot].cur, - (sc->txslot[slot].cur - sc->txslot[slot].start) / 4); - printf("mbsize=%d, bfree=%d\n", sc->txslot[slot].mbsize, - sc->txslot[slot].bfree); - printf("txhw: base_address=0x%x, size=%u, read=%u, " - "descstart=%u\n", - (u_int)MIDX_BASE(en_read(sc, MIDX_PLACE(slot))), - MIDX_SZ(en_read(sc, MIDX_PLACE(slot))), - en_read(sc, MIDX_READPTR(slot)), - en_read(sc, MIDX_DESCSTART(slot))); - } -} - -static void -en_dump_rx(struct en_softc *sc) -{ - struct en_rxslot *slot; - - printf(" recv slots:\n"); - for (slot = sc->rxslot ; slot < &sc->rxslot[sc->en_nrx]; slot++) { - printf("rx%td: start/stop/cur=0x%x/0x%x/0x%x mode=0x%x ", - slot - sc->rxslot, slot->start, slot->stop, slot->cur, - slot->mode); - if (slot->vcc != NULL) { - printf("vci=%u\n", slot->vcc->vcc.vci); - printf("RXHW: mode=0x%x, DST_RP=0x%x, WP_ST_CNT=0x%x\n", - en_read(sc, MID_VC(slot->vcc->vcc.vci)), - en_read(sc, MID_DST_RP(slot->vcc->vcc.vci)), - en_read(sc, MID_WP_ST_CNT(slot->vcc->vcc.vci))); - } - } -} - -/* - * This is only correct for non-adaptec adapters - */ -static void -en_dump_dtqs(struct en_softc *sc) -{ - uint32_t ptr, reg; - - printf(" dtq [need_dtqs=%d,dtq_free=%d]:\n", sc->need_dtqs, - sc->dtq_free); - ptr = sc->dtq_chip; - while (ptr != sc->dtq_us) { - reg = en_read(sc, ptr); - printf("\t0x%x=[%#x cnt=%d, chan=%d, end=%d, type=%d @ 0x%x]\n", - sc->dtq[MID_DTQ_A2REG(ptr)], reg, MID_DMA_CNT(reg), - MID_DMA_TXCHAN(reg), (reg & MID_DMA_END) != 0, - MID_DMA_TYPE(reg), en_read(sc, ptr + 4)); - EN_WRAPADD(MID_DTQOFF, MID_DTQEND, ptr, 8); - } -} - -static void -en_dump_drqs(struct en_softc *sc) -{ - uint32_t ptr, reg; - - printf(" drq [need_drqs=%d,drq_free=%d]:\n", sc->need_drqs, - sc->drq_free); - ptr = sc->drq_chip; - while (ptr != sc->drq_us) { - reg = en_read(sc, ptr); - printf("\t0x%x=[cnt=%d, chan=%d, end=%d, type=%d @ 0x%x]\n", - sc->drq[MID_DRQ_A2REG(ptr)], MID_DMA_CNT(reg), - MID_DMA_RXVCI(reg), (reg & MID_DMA_END) != 0, - MID_DMA_TYPE(reg), en_read(sc, ptr + 4)); - EN_WRAPADD(MID_DRQOFF, MID_DRQEND, ptr, 8); - } -} - -/* Do not staticize - meant for calling from DDB! */ -int -en_dump(int unit, int level) -{ - struct en_softc *sc; - int lcv, cnt; - devclass_t dc; - int maxunit; - - dc = devclass_find("en"); - if (dc == NULL) { - printf("%s: can't find devclass!\n", __func__); - return (0); - } - maxunit = devclass_get_maxunit(dc); - for (lcv = 0 ; lcv < maxunit ; lcv++) { - sc = devclass_get_softc(dc, lcv); - if (sc == NULL) - continue; - if (unit != -1 && unit != lcv) - continue; - - device_printf(sc->dev, "dumping device at level 0x%b\n", - level, END_BITS); - - if (sc->dtq_us == 0) { - printf("<hasn't been en_init'd yet>\n"); - continue; - } - - if (level & END_STATS) - en_dump_stats(&sc->stats); - if (level & END_MREGS) - en_dump_mregs(sc); - if (level & END_TX) - en_dump_tx(sc); - if (level & END_RX) - en_dump_rx(sc); - if (level & END_DTQ) - en_dump_dtqs(sc); - if (level & END_DRQ) - en_dump_drqs(sc); - - if (level & END_SWSL) { - printf(" swslist [size=%d]: ", sc->swsl_size); - for (cnt = sc->swsl_head ; cnt != sc->swsl_tail ; - cnt = (cnt + 1) % MID_SL_N) - printf("0x%x ", sc->swslist[cnt]); - printf("\n"); - } - } - return (0); -} - -/* - * en_dumpmem: dump the memory - * - * Do not staticize - meant for calling from DDB! - */ -int -en_dumpmem(int unit, int addr, int len) -{ - struct en_softc *sc; - uint32_t reg; - devclass_t dc; - - dc = devclass_find("en"); - if (dc == NULL) { - printf("%s: can't find devclass\n", __func__); - return (0); - } - sc = devclass_get_softc(dc, unit); - if (sc == NULL) { - printf("%s: invalid unit number: %d\n", __func__, unit); - return (0); - } - - addr = addr & ~3; - if (addr < MID_RAMOFF || addr + len * 4 > MID_MAXOFF || len <= 0) { - printf("invalid addr/len number: %d, %d\n", addr, len); - return (0); - } - printf("dumping %d words starting at offset 0x%x\n", len, addr); - while (len--) { - reg = en_read(sc, addr); - printf("mem[0x%x] = 0x%x\n", addr, reg); - addr += 4; - } - return (0); -} -#endif diff --git a/sys/dev/en/midwayreg.h b/sys/dev/en/midwayreg.h deleted file mode 100644 index 5c2fe1b8fdbd..000000000000 --- a/sys/dev/en/midwayreg.h +++ /dev/null @@ -1,282 +0,0 @@ -/* $NetBSD: midwayreg.h,v 1.6 1997/03/20 21:34:47 chuck Exp $ */ - -/* - * m i d w a y r e g . h - * - * this file contains the description of the ENI ATM midway chip - * data structures. see midway.c for more details. - * - * $FreeBSD$ - */ - -#define MID_SZTOB(X) ((X) * 256 * 4) /* size to bytes */ -#define MID_BTOSZ(X) ((X) / 256 / 4) /* bytes to "size" */ - -#define MID_N_VC 1024 /* # of VCs we can use */ -#define MID_VCI_BITS 10 /* number of bits */ -#define MID_NTX_CH 8 /* 8 transmit channels (shared) */ -#define MID_ATMDATASZ 48 /* need data in 48 byte blocks */ - -/* - * card data structures, top down - * - * in order to have a portable driver, the netbsd guys will not let us - * use structs. we have a bus_space_handle_t which is the en_base address. - * everything else is an offset from that base. all card data must be - * accessed with bus_space_read_4()/bus_space_write_4(): - * - * rv = bus_space_read_4(sc->en_memt, sc->en_base, BYTE_OFFSET); - * bus_space_write_4(sc->en_memt, sc->en_base, BYTE_OFFSET, VALUE); - * - * en_card: the whole card (prom + phy + midway + obmem) - * obmem contains: vci tab + dma queues (rx & tx) + service list + bufs - */ - -/* byte offsets from en_base of various items */ -#define MID_SUNIOFF 0x020000 /* SUNI offset */ -#define MID_PHYOFF 0x030000 /* PHY offset */ -#define MID_MIDOFF 0x040000 /* midway regs offset */ -#define MID_RAMOFF 0x200000 /* RAM offset */ -#define MID_DRQOFF 0x204000 /* DRQ offset */ -#define MID_DRQEND MID_DTQOFF /* DRQ end */ -#define MID_DTQOFF 0x205000 /* DTQ offset */ -#define MID_DTQEND MID_SLOFF /* DTQ end */ -#define MID_SLOFF 0x206000 /* service list */ -#define MID_SLEND MID_BUFOFF /* service list end */ -#define MID_BUFOFF 0x207000 /* buffer area */ -#define MID_PROBEOFF 0x21fffc /* start probe here */ -#define MID_PROBSIZE 0x020000 /* 128 KB */ -#define MID_MAXOFF 0x3ffffc /* max offset */ - -/* - * prom & phy: not defined here - */ -#define MID_ADPMACOFF 0xffc0 /* mac address offset (adaptec only) */ -#define MID_NSUNI 256 /* suni registers */ - -/* - * midway regs (byte offsets from en_base) - */ -#define MID_RESID 0x40000 /* write=reset reg, read=ID reg */ - -#define MID_VER(X) (((X) & 0xf0000000) >> 28) /* midway version # */ -#define MID_MID(X) (((X) & 0x700) >> 8) /* motherboard ID */ -#define MID_IS_SABRE(X) ((X) & 0x80) /* sabre controller? */ -#define MID_IS_SUNI(X) ((X) & 0x40) /* SUNI? vs utopia */ -#define MID_IS_UPIPE(X) ((X) & 0x20) /* utopia pipeline? */ -#define MID_DID(X) ((X) & 0x1f) /* daughterboard ID */ - -#define MID_INTACK 0x40004 /* interrupt ACK */ -#define MID_INTSTAT 0x40008 /* interrupt status */ -#define MID_INTENA 0x4000c /* interrupt enable */ - -#define MID_TXCHAN(N) (1 << ((N) + 9)) /* ack/status/enable xmit channel bit*/ -#define MID_INT_TX 0x1fe00 /* mask for any xmit interrupt */ -#define MID_INT_DMA_OVR 0x00100 /* DMA overflow interrupt */ -#define MID_INT_IDENT 0x00080 /* ident match error interrupt */ -#define MID_INT_LERR 0x00040 /* LERR interrupt (sbus?) */ -#define MID_INT_DMA_ERR 0x00020 /* DMA error interrupt */ -#define MID_INT_DMA_RX 0x00010 /* DMA recv interrupt */ -#define MID_INT_DMA_TX 0x00008 /* DMA xmit interrupt */ -#define MID_INT_SERVICE 0x00004 /* service list interrupt */ -#define MID_INT_SUNI 0x00002 /* SUNI interrupt */ -#define MID_INT_STATS 0x00001 /* stats overflow interrupt */ - -#define MID_INT_ANY 0x1ffff /* any interrupt? */ - -#define MID_INTBITS "\20\21T7\20T6\17T5\16T4\15T3\14T2\13T1\12T0\11DMAOVR\10ID\7LERR\6DMAERR\5RXDMA\4TXDMA\3SERV\2SUNI\1STAT" - -#define MID_MAST_CSR 0x40010 /* master CSR */ - -#define MID_IPL(X) (((X) & 0x1c0) >> 6) /* IPL */ -#define MID_SETIPL(I) ((I) << 6) -#define MID_MCSR_TXLOCK 0x20 /* lock on xmit overflow mode */ -/* NOTE: next 5 bits: write 1 means enable, write 0 means no change */ -#define MID_MCSR_ENDMA 0x10 /* DMA enable */ -#define MID_MCSR_ENTX 0x08 /* TX enable */ -#define MID_MCSR_ENRX 0x04 /* RX enable */ -#define MID_MCSR_W1MS 0x02 /* wait 1 msec */ -#define MID_MCSR_W500US 0x01 /* wait 500 usec */ - -#define MID_MCSRBITS "\20\6LCK\5DMAON\4TXON\3RXON\2W1MS\1W500US" - -#define MID_STAT 0x40014 /* stat register, clear on read */ - -#define MID_VTRASH(X) (((X) >> 16) & 0xffff) - /* # cells trashed due to VCI's mode */ -#define MID_OTRASH(X) ((X) & 0xffff) /* # cells trashed due to overflow */ - -#define MID_SERV_WRITE 0x40018 /* 10 bit service write pointer (r/o) */ -#define MID_DMA_ADDR 0x4001c /* VA of DMA (r/o) */ - - /* DMA queue pointers (bits 0 to 8) */ -#define MID_DMA_WRRX 0x40020 /* write ptr. for DMA recv queue */ - /* (for adaptor -> host xfers) */ -#define MID_DMA_RDRX 0x40024 /* read ptr for DMA recv queue (r/o) */ - /* (i.e. current adaptor->host xfer) */ -#define MID_DMA_WRTX 0x40028 /* write ptr for DMA xmit queue */ - /* (for host -> adaptor xfers) */ -#define MID_DMA_RDTX 0x4002c /* read ptr for DMA xmit queue (r/o) */ - /* (i.e. current host->adaptor xfer) */ - -/* xmit channel regs (1 per channel, MID_NTX_CH max channels) */ - -#define MIDX_PLACE(N) (0x40040+((N)*0x10)) /* xmit place */ - -#define MIDX_MKPLACE(SZ,LOC) ( ((SZ) << 11) | (LOC) ) -#define MIDX_LOC(X) ((X) & 0x7ff) /* location in obmem */ -#define MIDX_SZ(X) ((X) >> 11) /* (size of block / 256) in int32_t's*/ -#define MIDX_BASE(X) \ - (((MIDX_LOC(X) << MIDV_LOCTOPSHFT) * sizeof(uint32_t)) + MID_RAMOFF) - -/* the following two regs are word offsets in the block */ -/* xmit read pointer (r/o) */ -#define MIDX_READPTR(N) (0x40044 + ((N) * 0x10)) -/* seg currently in DMA (r/o) */ -#define MIDX_DESCSTART(N) (0x40048 + ((N) * 0x10)) - -/* - * obmem items - */ - -/* - * vci table in obmem (offset from MID_VCTOFF) - */ -#define MID_VC(N) (MID_RAMOFF + ((N) * 0x10)) - -#define MIDV_TRASH 0x00000000 /* ignore VC */ -#define MIDV_AAL5 0x80000000 /* do AAL5 on it */ -#define MIDV_NOAAL 0x40000000 /* do per-cell stuff on it */ -#define MIDV_MASK 0xc0000000 /* mode mask */ -#define MIDV_SETMODE(VC,M) (((VC) & ~(MIDV_MASK)) | (M)) /* new mode */ -#define MIDV_PTI 0x20000000 /* save PTI cells? */ -#define MIDV_LOCTOPSHFT 8 /* shift to get top 11 bits of 19 */ -#define MIDV_LOCSHIFT 18 -#define MIDV_LOCMASK 0x7ff -#define MIDV_LOC(X) (((X) >> MIDV_LOCSHIFT) & MIDV_LOCMASK) - /* 11 most sig bits of addr */ -#define MIDV_SZSHIFT 15 -#define MIDV_SZ(X) (((X) >> MIDV_SZSHIFT) & 7) - /* size encoded the usual way */ -#define MIDV_INSERVICE 0x1 /* in service list */ - -#define MID_DST_RP(N) (MID_VC(N)|0x4) - -#define MIDV_DSTART_SHIFT 16 /* shift */ -#define MIDV_DSTART(X) (((X) >> MIDV_DSTART_SHIFT) & 0x7fff) -#define MIDV_READP_MASK 0x7fff /* valid bits, (shift = 0) */ - -#define MID_WP_ST_CNT(N) (MID_VC(N)|0x8) /* write pointer/state/count */ - -#define MIDV_WRITEP_MASK 0x7fff0000 /* mask for write ptr. */ -#define MIDV_WRITEP_SHIFT 16 -#define MIDV_ST_IDLE 0x0000 -#define MIDV_ST_TRASH 0xc000 -#define MIDV_ST_REASS 0x4000 -#define MIDV_CCOUNT 0x7ff /* cell count */ - -#define MID_CRC(N) (MID_VC(N)|0xc) /* CRC */ - -/* - * dma recv q. - */ -#define MID_DMA_END (1 << 5) /* for both tx and rx */ -#define MID_DMA_CNT(X) (((X) >> 16) & 0xffff) -#define MID_DMA_TXCHAN(X) (((X) >> 6) & 0x7) -#define MID_DMA_RXVCI(X) (((X) >> 6) & 0x3ff) -#define MID_DMA_TYPE(X) ((X) & 0xf) - -#define MID_DRQ_N 512 /* # of descriptors */ -/* convert byte offset to reg value */ -#define MID_DRQ_A2REG(N) (((N) - MID_DRQOFF) >> 3) -/* and back */ -#define MID_DRQ_REG2A(N) (((N) << 3) + MID_DRQOFF) - -/* note: format of word 1 of RXQ is different beween ENI and ADP cards */ -#define MID_MK_RXQ_ENI(CNT, VC, END, TYPE) \ - (((CNT) << 16) | ((VC) << 6) | (END) | (TYPE)) - -#define MID_MK_RXQ_ADP(CNT, VC, END, JK) \ - (((CNT) << 12) | ((VC) << 2) | ((END) >> 4) | (((JK) != 0) ? 1 : 0)) -/* - * dma xmit q. - */ -#define MID_DTQ_N 512 /* # of descriptors */ -/* convert byte offset to reg value */ -#define MID_DTQ_A2REG(N) (((N) - MID_DTQOFF) >> 3) -/* and back */ -#define MID_DTQ_REG2A(N) (((N) << 3) + MID_DTQOFF) - -/* note: format of word 1 of TXQ is different beween ENI and ADP cards */ -#define MID_MK_TXQ_ENI(CNT, CHN, END, TYPE) \ - (((CNT) << 16) | ((CHN) << 6) | (END) | (TYPE)) - -#define MID_MK_TXQ_ADP(CNT, CHN, END, JK) \ - (((CNT) << 12) | ((CHN) << 2) | ((END) >> 4) | (((JK) != 0) ? 1 : 0)) - -/* - * dma types - */ -#define MIDDMA_JK 0x3 /* just kidding */ -#define MIDDMA_BYTE 0x1 /* byte */ -#define MIDDMA_2BYTE 0x2 /* 2 bytes */ -#define MIDDMA_WORD 0x0 /* word */ -#define MIDDMA_2WORD 0x7 /* 2 words */ -#define MIDDMA_4WORD 0x4 /* 4 words */ -#define MIDDMA_8WORD 0x5 /* 8 words */ -#define MIDDMA_16WORD 0x6 /* 16 words!!! */ -#define MIDDMA_2WMAYBE 0xf /* 2 words, maybe */ -#define MIDDMA_4WMAYBE 0xc /* 4 words, maybe */ -#define MIDDMA_8WMAYBE 0xd /* 8 words, maybe */ -#define MIDDMA_16WMAYBE 0xe /* 16 words, maybe */ - -#define MIDDMA_MAYBE 0xc /* mask to detect WMAYBE dma code */ -#define MIDDMA_MAXBURST (16 * sizeof(uint32_t)) /* largest burst */ - -/* - * service list - */ -#define MID_SL_N 1024 /* max # entries on slist */ -/* convert byte offset to reg value */ -#define MID_SL_A2REG(N) (((N) - MID_SLOFF) >> 2) -/* and back */ -#define MID_SL_REG2A(N) (((N) << 2) + MID_SLOFF) - -/* - * data in the buffer area of obmem - */ -/* - * recv buffer desc. (1 uint32_t at start of buffer) - */ -#define MID_RBD_SIZE 4 /* RBD size */ -#define MID_CHDR_SIZE 4 /* on aal0, cell header size */ -#define MID_RBD_ID(X) ((X) & 0xfe000000) /* get ID */ -#define MID_RBD_STDID 0x36000000 /* standard ID */ -#define MID_RBD_CLP 0x01000000 /* CLP: cell loss priority */ -#define MID_RBD_CE 0x00010000 /* CE: congestion experienced */ -#define MID_RBD_T 0x00001000 /* T: trashed due to overflow */ -#define MID_RBD_CRCERR 0x00000800 /* CRC error */ -#define MID_RBD_CNT(X) ((X) & 0x7ff) /* cell count */ - -/* - * xmit buffer desc. (2 uint32_t's at start of buffer) - * (note we treat the PR & RATE as a single uint8_t) - */ -#define MID_TBD_SIZE 8 -#define MID_TBD_MK1(AAL,PR_RATE,CNT) \ - (MID_TBD_STDID | (AAL) | ((PR_RATE) << 19) | (CNT)) -#define MID_TBD_STDID 0xb0000000 /* standard ID */ -#define MID_TBD_AAL5 0x08000000 /* AAL 5 */ -#define MID_TBD_NOAAL5 0x00000000 /* not AAL 5 */ - -#define MID_TBD_MK2(VCI,PTI,CLP) \ - (((VCI) << 4) | ((PTI) << 1) | (CLP)) - -/* - * aal5 pdu tail, last 2 words of last cell of AAL5 frame - * (word 2 is CRC .. handled by hw) - */ -#define MID_PDU_SIZE 8 -#define MID_PDU_MK1(UU, CPI, LEN) \ - (((UU) << 24) | ((CPI) << 16) | (LEN)) -#define MID_PDU_LEN(X) ((X) & 0xffff) diff --git a/sys/dev/en/midwayvar.h b/sys/dev/en/midwayvar.h deleted file mode 100644 index 8c2a8c54e04b..000000000000 --- a/sys/dev/en/midwayvar.h +++ /dev/null @@ -1,240 +0,0 @@ -/* $NetBSD: midwayvar.h,v 1.10 1997/03/20 21:34:46 chuck Exp $ */ - -/*- - * Copyright (c) 1996 Charles D. Cranor and Washington University. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by Charles D. Cranor and - * Washington University. - * 4. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ - */ - -/* - * m i d w a y v a r . h - * - * we define the en_softc here so that bus specific modules can allocate - * it as the first item in their softc. - * - * author: Chuck Cranor <chuck@ccrc.wustl.edu> - */ - -/* - * params needed to determine softc size - */ -#ifndef EN_NTX -#define EN_NTX 8 /* number of tx bufs to use */ -#endif -#ifndef EN_TXSZ -#define EN_TXSZ 32 /* trasmit buf size in KB */ -#endif -#ifndef EN_RXSZ -#define EN_RXSZ 32 /* recv buf size in KB */ -#endif - -/* largest possible NRX (depends on RAM size) */ -#define EN_MAXNRX ((2048 - (EN_NTX * EN_TXSZ)) / EN_RXSZ) - -#ifndef EN_MAX_DMASEG -#define EN_MAX_DMASEG 32 -#endif - -/* number of bytes to use in the first receive buffer. This must not be larger - * than MHLEN, should be a multiple of 64 and must be a multiple of 4. */ -#define EN_RX1BUF 128 - -/* - * Structure to hold DMA maps. These are handle via a typestable uma zone. - */ -struct en_map { - uintptr_t flags; /* map flags */ - struct en_map *rsvd2; /* see uma_zalloc(9) */ - struct en_softc *sc; /* back pointer */ - bus_dmamap_t map; /* the map */ -}; -#define ENMAP_LOADED 0x02 -#define ENMAP_ALLOC 0x01 - -#define EN_MAX_MAPS 400 - -/* - * Statistics - */ -struct en_stats { - uint32_t vtrash; /* sw copy of counter */ - uint32_t otrash; /* sw copy of counter */ - uint32_t ttrash; /* # of RBD's with T bit set */ - uint32_t mfixaddr; /* # of times we had to mfix an address */ - uint32_t mfixlen; /* # of times we had to mfix a lenght*/ - uint32_t mfixfail; /* # of times mfix failed */ - uint32_t txmbovr; /* # of times we dropped due to mbsize */ - uint32_t dmaovr; /* tx dma overflow count */ - uint32_t txoutspace; /* out of space in xmit buffer */ - uint32_t txdtqout; /* out of DTQs */ - uint32_t launch; /* total # of launches */ - uint32_t hwpull; /* # of pulls off hardware service list */ - uint32_t swadd; /* # of pushes on sw service list */ - uint32_t rxqnotus; /* # of times we pull from rx q, but fail */ - uint32_t rxqus; /* # of good pulls from rx q */ - uint32_t rxdrqout; /* # of times out of DRQs */ - uint32_t rxmbufout; /* # of time out of mbufs */ - uint32_t txnomap; /* out of DMA maps in TX */ -}; - -/* - * Each of these structures describes one of the eight transmit channels - */ -struct en_txslot { - uint32_t mbsize; /* # mbuf bytes in use (max=TXHIWAT) */ - uint32_t bfree; /* # free bytes in buffer */ - uint32_t start; /* start of buffer area (byte offset) */ - uint32_t stop; /* ends of buffer area (byte offset) */ - uint32_t cur; /* next free area (byte offset) */ - uint32_t nref; /* # of VCs using this channel */ - struct ifqueue q; /* mbufs waiting for DMA now */ - struct ifqueue indma; /* mbufs waiting for DMA now */ -}; - -/* - * Each of these structures is used for each of the receive buffers on the - * card. - */ -struct en_rxslot { - uint32_t mode; /* saved copy of mode info */ - uint32_t start; /* begin of my buffer area */ - uint32_t stop; /* end of my buffer area */ - uint32_t cur; /* where I am at in the buffer */ - struct en_vcc *vcc; /* backpointer to VCI */ - struct ifqueue q; /* mbufs waiting for dma now */ - struct ifqueue indma; /* mbufs being dma'd now */ -}; - -struct en_vcc { - struct atmio_vcc vcc; /* required by common code */ - void *rxhand; - u_int vflags; - uint32_t ipackets; - uint32_t opackets; - uint32_t ibytes; - uint32_t obytes; - - uint8_t txspeed; - struct en_txslot *txslot; /* transmit slot */ - struct en_rxslot *rxslot; /* receive slot */ -}; -#define VCC_DRAIN 0x0001 /* closed, but draining rx */ -#define VCC_SWSL 0x0002 /* on rx software service list */ -#define VCC_CLOSE_RX 0x0004 /* currently closing */ - -/* - * softc - */ -struct en_softc { - struct ifnet *ifp; - device_t dev; - - /* bus glue */ - bus_space_tag_t en_memt; /* for EN_READ/EN_WRITE */ - bus_space_handle_t en_base; /* base of en card */ - bus_size_t en_obmemsz; /* size of en card (bytes) */ - void (*en_busreset)(void *); /* bus specific reset function */ - bus_dma_tag_t txtag; /* TX DMA tag */ - - /* serv list */ - uint32_t hwslistp; /* hw pointer to service list (byte offset) */ - uint16_t swslist[MID_SL_N]; /* software svc list (see en_service()) */ - uint16_t swsl_head; /* ends of swslist (index into swslist) */ - uint16_t swsl_tail; - uint32_t swsl_size; /* # of items in swsl */ - - /* xmit dma */ - uint32_t dtq[MID_DTQ_N];/* sw copy of dma q (see EN_DQ_MK macros) */ - uint32_t dtq_free; /* # of dtq's free */ - uint32_t dtq_us; /* software copy of our pointer (byte offset) */ - uint32_t dtq_chip; /* chip's pointer (byte offset) */ - uint32_t need_dtqs; /* true if we ran out of DTQs */ - - /* recv dma */ - uint32_t drq[MID_DRQ_N];/* sw copy of dma q (see ENIDQ macros) */ - uint32_t drq_free; /* # of drq's free */ - uint32_t drq_us; /* software copy of our pointer (byte offset) */ - uint32_t drq_chip; /* chip's pointer (byte offset) */ - uint32_t need_drqs; /* true if we ran out of DRQs */ - - /* xmit buf ctrl. (per channel) */ - struct en_txslot txslot[MID_NTX_CH]; - - /* recv buf ctrl. (per recv slot) */ - struct en_rxslot rxslot[EN_MAXNRX]; - int en_nrx; /* # of active rx slots */ - - /* vccs */ - struct en_vcc **vccs; - u_int vccs_open; - struct cv cv_close; /* close CV */ - - /* stats */ - struct en_stats stats; - - /* random stuff */ - uint32_t ipl; /* sbus interrupt lvl (1 on pci?) */ - uint8_t bestburstcode; /* code of best burst we can use */ - uint8_t bestburstlen; /* length of best burst (bytes) */ - uint8_t bestburstshift; /* (x >> shift) == (x / bestburstlen) */ - uint8_t bestburstmask; /* bits to check if not multiple of burst */ - uint8_t alburst; /* align dma bursts? */ - uint8_t noalbursts; /* don't use unaligned > 4 byte bursts */ - uint8_t is_adaptec; /* adaptec version of midway? */ - struct mbuf *padbuf; /* buffer of zeros for TX padding */ - - /* mutex to protect this structure and the associated hardware */ - struct mtx en_mtx; - - /* sysctl support */ - struct sysctl_ctx_list sysctl_ctx; - struct sysctl_oid *sysctl_tree; - - /* memory zones */ - uma_zone_t map_zone; - - /* media and phy */ - struct ifmedia media; - struct utopia utopia; - -#ifdef EN_DEBUG - /* debugging */ - u_int debug; -#endif -}; - -/* - * exported functions - */ -int en_attach(struct en_softc *); -void en_destroy(struct en_softc *); -void en_intr(void *); -void en_reset(struct en_softc *); -int en_modevent(module_t, int, void *arg); diff --git a/sys/dev/fatm/firmware.h b/sys/dev/fatm/firmware.h deleted file mode 100644 index 24c7bc8e8865..000000000000 --- a/sys/dev/fatm/firmware.h +++ /dev/null @@ -1,2393 +0,0 @@ -/*- - * (Copyright Notice) - * - * Copyright (c) 1995-2000 FORE Systems, Inc., as an unpublished work. - * - * This notice does not imply unrestricted or public access to these - * materials which are a trade secret of FORE Systems, Inc. or its - * subsidiaries or affiliates (together referred to as "FORE"), and - * which may not be reproduced, used, sold or transferred to any third - * party without FORE's prior written consent. All rights reserved. - * - * U.S. Government Restricted Rights. - * If you are licensing the Software on behalf of the U.S. Government - * ("Government"), the following provisions apply to you. If the - * software is supplied to the Department of Defense ("DoD"), it is - * classified as "Commercial Computer Software" under paragraph - * 252.227-7014 of the DoD Supplement to the Federal Acquisition - * Regulations ("DFARS") (or any successor regulations) and the - * Government is acquiring only the license rights granted herein (the - * license rights customarily provided to non-Government users). If - * the Software is supplied to any unit or agency of the Government - * other than the DoD, it is classified as "Restricted Computer - * Software" and the Government's rights in the Software are defined - * in paragraph 52.227-19 of the Federal Acquisition Regulations - * ("FAR") (or any successor regulations) or, in the cases of NASA, - * in paragraph 18.52.227-86 of the NASA Supplement to the FAR (or - * any successor regulations). - * - * FORE Systems is a registered trademark, and ForeRunner, ForeRunnerLE, - * and ForeThought are trademarks of FORE Systems, Inc. All other - * brands or product names are trademarks or registered trademarks of - * their respective holders. - * - * (End Copyright Notice) - * - * This is a binary copy of the PCA200E firmware version 4.1.12 - * - * phk got permission from Fore to put firmware images into our tree. - * - * $FreeBSD$ - */ - -static uint32_t firmware[] = { - 0x65726f66, 0x00000100, 0x00005140, 0x000056c0, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00004d40, - 0x00000400, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000003, 0x00000002, 0x00000001, - 0x00000000, 0x00000000, 0x00032d50, 0x00000000, - 0xff80ff01, 0x00000030, 0x7eff7e01, 0x00000070, - 0x0000ff01, 0x00000000, 0x00000000, 0x00000000, - 0x00000f01, 0x00000000, 0xa7a7e701, 0x00000020, - 0x03030b01, 0x00000000, 0x03030b01, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0xdf6fdf01, 0x00000000, 0x00007f01, 0x00000000, - 0x0000ff01, 0x00000000, 0x0000ff01, 0x00000000, - 0x7f417f01, 0x00000000, 0x07070701, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0xfb00fb01, 0x00000000, 0xf0f0ff01, 0x00000000, - 0x0000ff01, 0x00000000, 0x0000ff01, 0x00000000, - 0x00000f01, 0x00000000, 0x0000ff01, 0x00000000, - 0x0000ff01, 0x00000000, 0x00000f01, 0x00000000, - 0x7f017f01, 0x00000000, 0x01010101, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x8100ad01, 0x00000000, 0x0000af01, 0x00000000, - 0x00000000, 0x00000000, 0xffafff01, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x0000ff01, 0x00000000, - 0x00ffff01, 0x00000000, 0x0000ff01, 0x00000000, - 0x0000ff01, 0x00000000, 0x0000ff01, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x07030701, 0x00000000, 0x7f7e7f01, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0xffffff01, 0x00000000, - 0xffffff01, 0x00000090, 0x00000000, 0x00000000, - 0x00000001, 0x00000000, 0xffffff01, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7f7fff01, 0x00000004, 0xe0e0fe01, 0x00000000, - 0xffffff01, 0x00000000, 0xffffff01, 0x00000000, - 0x0000ff01, 0x00000000, 0x00ffff01, 0x00000000, - 0x0000ff01, 0x00000000, 0x0000ff01, 0x00000000, - 0x00000301, 0x00000000, 0xffffff01, 0x000000fc, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x9f9fff01, 0x00000004, 0xffffff01, 0x00000000, - 0xffffff01, 0x0000006a, 0xcfcede01, 0x00000000, - 0x0000ff01, 0x00000000, 0x0000ff01, 0x00000000, - 0x00000701, 0x00000000, 0xffffff01, 0x00000008, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x051f0501, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0xffffffff, 0xffffffff, 0xffffffff, - 0x8c803000, 0x0003dd50, 0x3287c00c, 0x5c081610, - 0x09000004, 0x66003e80, 0x8c000000, 0x5cf01e00, - 0x8c803000, 0x0000e400, 0x8c883000, 0x0000ed50, - 0x92f41000, 0x59840804, 0x34845ff8, 0x8c803000, - 0x3b001000, 0x0900833c, 0x09008cec, 0x09007ff4, - 0x09006960, 0x09007b3c, 0x90303000, 0x0000e400, - 0x3201a028, 0x5d201610, 0x8c801400, 0x00000000, - 0x8c883000, 0x00005730, 0x59840111, 0x59318010, - 0x86019000, 0x5d801604, 0x09000008, 0x08006b74, - 0x59084810, 0x0900260c, 0x09002238, 0x90a03000, - 0x50001444, 0x5990de08, 0x58248094, 0x8c811000, - 0x090020f0, 0x58a01988, 0x3a250042, 0x3125000e, - 0x3a01201a, 0x080000d4, 0x58901989, 0x3a24804e, - 0x080000c8, 0x00000000, 0x90a83000, 0x0000518c, - 0x5c901e0d, 0x82903000, 0x0000e46c, 0x5ca01e05, - 0x080000a4, 0x00000000, 0x90a83000, 0x0000518c, - 0x5c901e09, 0x82903000, 0x0000e46c, 0x5ca01e04, - 0x08000084, 0x00000000, 0x88a03000, 0x88000402, - 0x5c901e08, 0x5a052f01, 0x82903000, 0x0000e46c, - 0x1200001a, 0x90a83000, 0x0000518c, 0x5ca01e06, - 0x08000054, 0x00000000, 0x3015202a, 0x30052016, - 0x90a83000, 0x0000518c, 0x5ca01e16, 0x08000038, - 0x90a83000, 0x0000518c, 0x59a1d81f, 0x08000028, - 0x3005201a, 0x90a83000, 0x0000518c, 0x59a5d81f, - 0x08000014, 0x00000000, 0x90a83000, 0x0000518c, - 0x8ca00046, 0x92a560b0, 0x09002388, 0x09002ab4, - 0x09001ee0, 0x0b0020a4, 0x58901989, 0x3d24804e, - 0x090045f0, 0x3d04201e, 0x90a83000, 0x0000e470, - 0x8ca03000, 0xdead0014, 0x92a55000, 0x09006ac4, - 0x5c801e00, 0x8c8fe040, 0x0b004710, 0x3a04201e, - 0x90a7e040, 0x90a83000, 0x0000518c, 0x8c90007f, - 0x58a48094, 0x08000010, 0x90a83000, 0x0000518c, - 0x59a01901, 0x92a560b4, 0x8ca03000, 0x00000330, - 0x92a03000, 0x0000e404, 0x090021a8, 0x090051c4, - 0x09005530, 0x5c801e01, 0x090069d8, 0x0a000000, - 0x90803000, 0x0000e408, 0x90a41000, 0x8ce8007f, - 0x58a74094, 0x3a05230a, 0x59a50902, 0x344d21ee, - 0x90a03914, 0x00005920, 0x84051000, 0x00000000, - 0x00005948, 0x00005b2c, 0x00005958, 0x00005a28, - 0x00005968, 0x000059f0, 0x00005a08, 0x00005af8, - 0x00005a30, 0x00005a90, 0x09002a58, 0x5c981610, - 0x080001e0, 0x00000000, 0x09002d18, 0x5c981610, - 0x080001d0, 0x00000000, 0x90a03000, 0x50001444, - 0x5a052f13, 0x8c980002, 0x10000022, 0x58a50993, - 0x92f03000, 0x000056a4, 0x92a03000, 0x50001444, - 0x08000014, 0x00000000, 0x5ca01e01, 0x92a03000, - 0x000056a4, 0x90ac2004, 0x8c803000, 0x20000060, - 0x59a6581f, 0x8c903000, 0x000055d0, 0x5c881e0e, - 0x92a83000, 0x20000054, 0x92a03000, 0x20000060, - 0x598c4901, 0xb0a49000, 0x5a003091, 0x8c94a010, - 0xb2a41000, 0x15ffffec, 0x08000148, 0x00000000, - 0x0b004a18, 0x5a003090, 0x8c980002, 0x15000136, - 0x5c981e0a, 0x0800012c, 0x09004ae8, 0x90a03000, - 0x0000e408, 0x908d2004, 0x5c801e10, 0x8c903000, - 0x0000e4b0, 0x090014ec, 0x5c981e02, 0x08000104, - 0x90a03000, 0x0000e408, 0x90a52004, 0x92a03000, - 0x20000040, 0x90a03000, 0xf001e100, 0x92a03000, - 0x30000060, 0x90a03000, 0xf001e104, 0x92a03000, - 0x30000060, 0x90a03000, 0xf001e064, 0x92a03000, - 0x30000060, 0x90a03000, 0xf001e068, 0x5c981e02, - 0x92a03000, 0x30000060, 0x080000a8, 0x00000000, - 0x90a03000, 0x0000e408, 0x90a52004, 0x59a99014, - 0x8ce83000, 0x000ffff0, 0x92a83000, 0x000002fc, - 0x59af4595, 0x8ce83000, 0x000ff000, 0x59a74614, - 0x8ce83000, 0x0ff00000, 0x58a74094, 0x8ce83000, - 0x000ffff0, 0x92a03000, 0x000002f8, 0x58af4095, - 0x58a50415, 0x92a83000, 0x000002f4, 0x92a03000, - 0x000002f0, 0x0800003c, 0x90a03000, 0x0000e408, - 0x90a51000, 0x8ce83000, 0xd05ed05e, 0x3da74022, - 0x90a83000, 0x0000e470, 0x8ca03000, 0xdead000d, - 0x5c801e00, 0x92a55000, 0x09006798, 0x5c981e08, - 0x90a83000, 0x0000e408, 0x90a55000, 0x303d2096, - 0x90a03000, 0x0000e40c, 0x90bd6010, 0x8cb56020, - 0x5a052016, 0x92f55000, 0x1600000e, 0x90b03000, - 0x0000e410, 0x90a03000, 0x0000e474, 0x92b83000, - 0x20000038, 0x92983000, 0x30000060, 0x90a51000, - 0x5a003094, 0x92b03000, 0x0000e408, 0x12000042, - 0x90a83000, 0x0000e478, 0x90a55000, 0x59a05014, - 0x92a55000, 0x90a83000, 0x00005160, 0x8ce801ff, - 0x59a85015, 0x58a74095, 0x58a50988, 0x92a83000, - 0x00005160, 0x92a03000, 0x20000004, 0x0a000000, - 0x90a03000, 0x0000e40c, 0x90bd6010, 0x8cb56020, - 0x5a052016, 0x92f55000, 0x1600000e, 0x90b03000, - 0x0000e410, 0x92b83000, 0x20000038, 0x92b03000, - 0x0000e408, 0x92983000, 0x30000060, 0x0a000000, - 0x98242018, 0x90a83000, 0x0000e48c, 0x59a14104, - 0x5a056014, 0x8c341000, 0x14000012, 0x5c801e01, - 0x0a000000, 0x00000000, 0x90a83000, 0x00000350, - 0x3a05603a, 0x90a03000, 0x00000368, 0x59ad4901, - 0x92a83000, 0x00000350, 0x8cb51d95, 0x90a59000, - 0x59aa1005, 0x92a15000, 0x92ac201c, 0x9085a004, - 0x0a000000, 0x00000000, 0x8c803000, 0x00000350, - 0x09005cd0, 0x90a83000, 0x00000350, 0x3a056036, - 0x90a03000, 0x00000368, 0x59ad4901, 0x92a83000, - 0x00000350, 0x8cb51d95, 0x90a59000, 0x59aa1005, - 0x92a15000, 0x92a9a01c, 0x9085a004, 0x0a000000, - 0x90a03000, 0x00005690, 0x59a05014, 0x8c800001, - 0x92a03000, 0x00005690, 0x0a000000, 0x00000000, - 0x98242018, 0x90a83000, 0x0000e48c, 0x59a14104, - 0x5a056014, 0x8c341000, 0x14000012, 0x5c801e01, - 0x0a000000, 0x00000000, 0x90a83000, 0x00000380, - 0x3a05603a, 0x90a03000, 0x00000398, 0x59ad4901, - 0x92a83000, 0x00000380, 0x8cb51d95, 0x90a59000, - 0x59aa1005, 0x92a15000, 0x92ac201c, 0x9085a004, - 0x0a000000, 0x00000000, 0x8c803000, 0x00000380, - 0x09005c00, 0x90a83000, 0x00000380, 0x3a056036, - 0x90a03000, 0x00000398, 0x59ad4901, 0x92a83000, - 0x00000380, 0x8cb51d95, 0x90a59000, 0x59aa1005, - 0x92a15000, 0x92a9a01c, 0x9085a004, 0x0a000000, - 0x90a03000, 0x00005694, 0x59a05014, 0x8c800001, - 0x92a03000, 0x00005694, 0x0a000000, 0x00000000, - 0x98242018, 0x90a83000, 0x0000e48c, 0x59a14104, - 0x5a056014, 0x8c341000, 0x14000012, 0x5c801e01, - 0x0a000000, 0x00000000, 0x90a83000, 0x000003b0, - 0x3a05603a, 0x90a03000, 0x000003c8, 0x59ad4901, - 0x92a83000, 0x000003b0, 0x8cb51d95, 0x90a59000, - 0x59aa1005, 0x92a15000, 0x92ac201c, 0x9085a004, - 0x0a000000, 0x00000000, 0x8c803000, 0x000003b0, - 0x09005b30, 0x90a83000, 0x000003b0, 0x3a056036, - 0x90a03000, 0x000003c8, 0x59ad4901, 0x92a83000, - 0x000003b0, 0x8cb51d95, 0x90a59000, 0x59aa1005, - 0x92a15000, 0x92a9a01c, 0x9085a004, 0x0a000000, - 0x90a03000, 0x00005698, 0x59a05014, 0x8c800001, - 0x92a03000, 0x00005698, 0x0a000000, 0x00000000, - 0x98242018, 0x90a83000, 0x0000e48c, 0x59a14104, - 0x5a056014, 0x8c341000, 0x14000012, 0x5c801e01, - 0x0a000000, 0x00000000, 0x90a83000, 0x0000e420, - 0x3a05603a, 0x90a03000, 0x0000e438, 0x59ad4901, - 0x92a83000, 0x0000e420, 0x8cb51d95, 0x90a59000, - 0x59aa1005, 0x92a15000, 0x92ac201c, 0x9085a004, - 0x0a000000, 0x00000000, 0x8c803000, 0x0000e420, - 0x09005a60, 0x90a83000, 0x0000e420, 0x3a056036, - 0x90a03000, 0x0000e438, 0x59ad4901, 0x92a83000, - 0x0000e420, 0x8cb51d95, 0x90a59000, 0x59aa1005, - 0x92a15000, 0x92a9a01c, 0x9085a004, 0x0a000000, - 0x90a03000, 0x0000569c, 0x59a05014, 0x8c800001, - 0x92a03000, 0x0000569c, 0x0a000000, 0x00000000, - 0x8c086040, 0xb2c7e070, 0x5cc01610, 0x8c803000, - 0x00000350, 0x598c581f, 0x090060e8, 0x8c803000, - 0x00000380, 0x598c581f, 0x090060d8, 0x8c803000, - 0x000003b0, 0x598c581f, 0x090060c8, 0x8c803000, - 0x0000e420, 0x598c581f, 0x090060b8, 0x8ca03000, - 0x00005690, 0x92a03000, 0x00000378, 0x8ca03000, - 0x00005694, 0x92a03000, 0x000003a8, 0x8ca03000, - 0x00005698, 0x92a03000, 0x000003d8, 0x8ca03000, - 0x0000569c, 0x92a03000, 0x0000e448, 0x90a62078, - 0x92a03000, 0x00000360, 0x90ae2088, 0x92a83000, - 0x00000390, 0x90b62098, 0x92b03000, 0x000003c0, - 0x90be20a8, 0x8c262040, 0x5a003094, 0x92b83000, - 0x0000e430, 0x1500001e, 0x3d05601a, 0x3d05a016, - 0x3d05e012, 0x5c801e08, 0xb0c7e070, 0x0a000000, - 0x90a92034, 0x92a83000, 0x00000364, 0x90b12044, - 0x92b03000, 0x00000394, 0x90b92054, 0x92b83000, - 0x000003c4, 0x90a03000, 0x00000360, 0x90812064, - 0x5a003094, 0x92803000, 0x0000e434, 0x1200000e, - 0x8cc8003f, 0x3eae5fb2, 0x90a03000, 0x00000390, - 0x3a05200e, 0x8cc8003f, 0x3eb65f9e, 0x90a03000, - 0x000003c0, 0x3a05200e, 0x8cc8003f, 0x3ebe5f8a, - 0x90a03000, 0x0000e430, 0x3a05200e, 0x8cc8003f, - 0x3e865f76, 0x90a03000, 0x00000360, 0x3a052026, - 0x90a03000, 0x00000390, 0x3a05201a, 0x90a83000, - 0x00000364, 0x90a03000, 0x00000394, 0x39ad1f4a, - 0x90a03000, 0x000003c0, 0x3a052026, 0x90a03000, - 0x0000e430, 0x3a05201a, 0x90a83000, 0x000003c4, - 0x90a03000, 0x0000e434, 0x39ad1f1e, 0x90a03000, - 0x00000360, 0x3d05202e, 0x90a83000, 0x00000394, - 0x8ca03000, 0x00005ce0, 0x92a03000, 0x0000e450, - 0x92a83000, 0x00000364, 0x08000018, 0x00000000, - 0x8ca03000, 0x00005c10, 0x92a03000, 0x0000e450, - 0x90a03000, 0x000003c0, 0x3d05202a, 0x90a83000, - 0x0000e434, 0x8ca03000, 0x00005e80, 0x92a03000, - 0x0000e454, 0x92a83000, 0x000003c4, 0x08000014, - 0x8ca03000, 0x00005db0, 0x92a03000, 0x0000e454, - 0x90b9203c, 0x92b83000, 0x0000035c, 0x9081204c, - 0x92803000, 0x0000038c, 0x9091205c, 0x92903000, - 0x000003bc, 0x90e83000, 0x00000360, 0x9099206c, - 0x5a00309d, 0x92983000, 0x0000e42c, 0x1200000a, - 0x3b05fe56, 0x5927d81f, 0x31b91e4e, 0x58a0d097, - 0x3d053e46, 0x90883000, 0x00000390, 0x3a04600a, - 0x3b043e36, 0x31811e32, 0x58a0d090, 0x3d053e2a, - 0x90b03000, 0x000003c0, 0x3a05a00a, 0x3b04be1a, - 0x31911e16, 0x58a0d092, 0x3d053e0e, 0x90a83000, - 0x0000e430, 0x3a05600a, 0x3b04fdfe, 0x31991dfa, - 0x58a0d093, 0x3d053df2, 0x3a07600a, 0x3cedddea, - 0x3a04600a, 0x3c8c1de2, 0x3a05a00a, 0x3cb49dda, - 0x3a05600a, 0x3cacddd2, 0x90683000, 0x00000390, - 0xb0803000, 0x00000380, 0x90183000, 0x00000360, - 0xb0a03000, 0x00000350, 0x90783000, 0x0000e430, - 0xb0403000, 0x0000e420, 0x90703000, 0x000003c0, - 0xb0203000, 0x000003b0, 0x59e8c117, 0x5960cd01, - 0x8caf5000, 0x5cb0160c, 0x92a03000, 0x00000350, - 0x92e83000, 0x00000354, 0x92b83000, 0x0000035c, - 0x92603000, 0x00000358, 0x59a34113, 0x596b4d01, - 0x8c8d1000, 0x5c90160d, 0x92803000, 0x00000380, - 0x92a03000, 0x00000384, 0x92683000, 0x00000388, - 0x92983000, 0x0000038c, 0x59a38107, 0x59738d01, - 0x8c2d1000, 0x5c30160e, 0x92203000, 0x000003b0, - 0x92a03000, 0x000003b4, 0x92703000, 0x000003b8, - 0x92383000, 0x000003bc, 0x59a3c10b, 0x597bcd01, - 0x8c4d1000, 0x5c50160f, 0x92403000, 0x0000e420, - 0x92a03000, 0x0000e424, 0x5a003083, 0x92783000, - 0x0000e428, 0x8c803000, 0x00000350, 0x5c201e00, - 0x92583000, 0x0000e42c, 0x12000062, 0x908e2070, - 0x5cd01610, 0x8cd83000, 0x00000338, 0x92803000, - 0x00000330, 0x92d83000, 0x00000334, 0x090026e4, - 0x5a023090, 0x8c200001, 0x12fffc8e, 0x90a03000, - 0x0000036c, 0x92a6200c, 0x90803000, 0x00000360, - 0x59840e03, 0x09003a4c, 0x5a003090, 0x92803000, - 0x00000368, 0x12fffc62, 0x90a03000, 0x00000390, - 0x5a003094, 0x8c803000, 0x00000390, 0x1200007e, - 0x59cc0910, 0x8ca03984, 0x00000000, 0x8ca83000, - 0x00000330, 0x92cfe060, 0x8cb57c14, 0x00000008, - 0x92b7e064, 0x90cfe060, 0x908e2080, 0x59a54014, - 0x59840910, 0x92cd1000, 0x92b52004, 0x09002654, - 0x5a023090, 0x8c212001, 0x12fffbfe, 0x90a03000, - 0x0000039c, 0x92a62010, 0x90803000, 0x00000390, - 0x59840e03, 0x090039bc, 0x5a003090, 0x92803000, - 0x00000398, 0x12fffbd2, 0x90a03000, 0x000003c0, - 0x5a003094, 0x8c803000, 0x000003c0, 0x1200007e, - 0x59cc0910, 0x8ca03984, 0x00000000, 0x8ca83000, - 0x00000330, 0x92cfe050, 0x8cb57c14, 0x00000008, - 0x92b7e054, 0x90cfe050, 0x908e2090, 0x59a54014, - 0x59840910, 0x92cd1000, 0x92b52004, 0x090025c4, - 0x5a023090, 0x8c212001, 0x12fffb6e, 0x90a03000, - 0x000003cc, 0x92a62014, 0x90803000, 0x000003c0, - 0x59840e03, 0x0900392c, 0x5a003090, 0x92803000, - 0x000003c8, 0x12fffb42, 0x90a03000, 0x0000e430, - 0x5a003094, 0x8c803000, 0x0000e430, 0x1200007e, - 0x59cc0910, 0x8ca03984, 0x00000000, 0x8ca83000, - 0x00000330, 0x92cfe040, 0x8cb57c14, 0x00000008, - 0x92b7e044, 0x90cfe040, 0x908e20a0, 0x59a54014, - 0x59840910, 0x92cd1000, 0x92b52004, 0x09002534, - 0x5a023090, 0x8c212001, 0x12fffade, 0x90a03000, - 0x0000e43c, 0x92a62018, 0x90803000, 0x0000e430, - 0x59840e03, 0x0900389c, 0x5a003090, 0x92803000, - 0x0000e438, 0x12fffab2, 0x8ca03000, 0x00000330, - 0x5c801e02, 0x92a53d84, 0xfffffffc, 0xb0c7e070, - 0x0a000000, 0x00000000, 0x00000000, 0x00000000, - 0x5c201610, 0x92803000, 0x0000e468, 0x59a40901, - 0x8c2c5000, 0x70814090, 0x92f03000, 0x00000308, - 0x92f03000, 0x00000304, 0x92a03000, 0x0000030c, - 0x09003830, 0x5a003090, 0x92803000, 0x0000e460, - 0x15000012, 0x5c801e08, 0x0a000000, 0x00000000, - 0x8c803904, 0x00000000, 0x09003808, 0x5a003090, - 0x92803000, 0x00000300, 0x15000012, 0x5c801e08, - 0x0a000000, 0x00000000, 0x8cb00000, 0x5a012096, - 0x90b83000, 0x0000e460, 0x13000062, 0x5a012f00, - 0x8c880000, 0x1000001e, 0x5cb01e01, 0x5a012096, - 0x59a44017, 0x59b94017, 0x92a41000, 0x1300003e, - 0x90a83000, 0x00000300, 0x59a44017, 0x92a55d16, - 0x90a83000, 0x00000300, 0x59b94017, 0x59a44017, - 0x92a57d16, 0x00000004, 0x59b09016, 0x5a012096, - 0x59b94017, 0x14ffffcc, 0x59810e02, 0x09003774, - 0x5a003090, 0x92803000, 0x0000e464, 0x1500000e, - 0x5c801e08, 0x0a000000, 0x8cb00000, 0x3bb1003e, - 0x30012016, 0x5cb01e01, 0x5a012096, 0x92f41000, - 0x1300002a, 0x90a03000, 0x0000e464, 0x92f51d16, - 0x90a03000, 0x0000e464, 0x92f53d16, 0x00000004, - 0x59b09016, 0x3cb11fe0, 0x5c801e02, 0x0a000000, - 0x90a83000, 0x00000304, 0x90a03000, 0x00000300, - 0x8ca51d15, 0x90951000, 0x5a003092, 0x8c2c1000, - 0x5c201611, 0x12000036, 0x92f51000, 0x90a03000, - 0x00000304, 0x90a83000, 0x0000e468, 0x928c9000, - 0x59861010, 0x8cb4a008, 0x92941000, 0x92b42004, - 0x0800005c, 0x00000000, 0x90a03000, 0x00005154, - 0x3b05206a, 0x090001bc, 0x90a83000, 0x00000304, - 0x90a03000, 0x00000300, 0x8ca51d15, 0x90951000, - 0x3a04a04a, 0x92f51000, 0x90a03000, 0x00000304, - 0x90a83000, 0x0000e468, 0x92249000, 0x59b61005, - 0x8cbca008, 0x92959000, 0x92bda004, 0x59ad4901, - 0x8ca52001, 0x58a54094, 0x8c800001, 0x92a03000, - 0x00000304, 0x0a000000, 0x90a03000, 0x000056a0, - 0x59a05014, 0x8c800000, 0x92a03000, 0x000056a0, - 0x0a000000, 0x00000000, 0x00000000, 0x00000000, - 0x90883000, 0x0000e48c, 0x5c201610, 0x09002f10, - 0x90b03000, 0x0000e484, 0x90803000, 0x00000308, - 0x90a03000, 0x00000308, 0x90a83000, 0x0000e468, - 0x90b83000, 0x00000300, 0x59a05014, 0x8cb03a16, - 0x00000010, 0x59ad4901, 0x92b11000, 0x58a54094, - 0x9225dd10, 0x92a03000, 0x00000308, 0x0a000000, - 0x8cf03000, 0x00006898, 0x5c88161e, 0x8cf00000, - 0x90a83000, 0x00005158, 0x90b83000, 0x0000e464, - 0x90a03000, 0x0000e468, 0x90b03000, 0x00005154, - 0x9085dd15, 0x59a50901, 0x8cad6001, 0x58ad0095, - 0x59b58901, 0x92a83000, 0x00005158, 0x92b03000, - 0x00005154, 0x84045000, 0x0a000000, 0x00000000, - 0x8cf03000, 0x0000690c, 0x5c90161e, 0x8cf00000, - 0x90a03000, 0x000056a0, 0x90b83000, 0x0000515c, - 0x90883000, 0x0000e464, 0x90a83000, 0x0000e468, - 0x90b03000, 0x00005154, 0x59a05014, 0x92a03000, - 0x000056a0, 0x59ad4901, 0x8ca5e001, 0x58a54094, - 0x92845d17, 0x59b05016, 0x92a03000, 0x0000515c, - 0x92b03000, 0x00005154, 0x84049000, 0x0a000000, - 0x8c403000, 0x00005158, 0x8c383000, 0x00000310, - 0x8c483000, 0x20000004, 0x8c303000, 0x00000308, - 0x90883000, 0x00000310, 0x90a45000, 0x3a05216e, - 0x90a21000, 0x90b03000, 0x0000e464, 0x90a83000, - 0x0000e468, 0x90259d14, 0x59ad4901, 0x8ca52001, - 0x58a54094, 0x92a21000, 0x59a91004, 0x90b55000, - 0x90a03000, 0x00005154, 0x8c803000, 0x0000ffff, - 0x58840096, 0x92855000, 0x908c5000, 0x59a50901, - 0x92a03000, 0x00005154, 0x5c901604, 0x8c803890, - 0x00000009, 0x59840c03, 0x592d8d90, 0x09000564, - 0x90a1d000, 0x90a83000, 0x00000314, 0x59b21014, - 0x90bd2004, 0x5a056016, 0x92f51000, 0x1600000e, - 0x90b03000, 0x00000318, 0x90a03000, 0x0000e474, - 0x92b83000, 0x20000038, 0x58a94981, 0x92a83000, - 0x30000060, 0x90a51000, 0x5a003094, 0x92b1d000, - 0x1200003e, 0x90a83000, 0x0000e478, 0x90a55000, - 0x59a05014, 0x92a55000, 0x90a83000, 0x00005160, - 0x8c9801ff, 0x59a85015, 0x58a4c095, 0x92a83000, - 0x00005160, 0x58a50988, 0x92a25000, 0x90883000, - 0x0000e48c, 0x5c801604, 0x09002cb4, 0x90a03000, - 0x0000e484, 0x90803000, 0x00000308, 0x90b83000, - 0x00000300, 0x90b03000, 0x0000e468, 0x90a83000, - 0x00005154, 0x8ca03a14, 0x00000010, 0x92a11000, - 0x90a19000, 0x5a003095, 0x9225dd10, 0x59b58901, - 0x8ca52001, 0x58a58094, 0x92a19000, 0x11fffe94, - 0x0a000000, 0x00000000, 0x0a000000, 0x00000000, - 0x90a42058, 0x5a013094, 0x8cec9000, 0x5c301613, - 0x1200001a, 0x3425200e, 0x3a0520d2, 0x08000100, - 0x3a2d206a, 0x080000f8, 0x3d14e032, 0x90a03000, - 0x00005634, 0x90a83000, 0x00005648, 0x598d0011, - 0x8cad6001, 0x92883000, 0x00005634, 0x92a83000, - 0x00005648, 0x080000c8, 0x90a03000, 0x00005640, - 0x90a83000, 0x00005650, 0x598d0011, 0x8cad6001, - 0x92883000, 0x00005640, 0x92a83000, 0x00005650, - 0x0800009c, 0x00000000, 0x3d14e032, 0x90a03000, - 0x00005664, 0x90a83000, 0x00005674, 0x598d0011, - 0x8cad6001, 0x92883000, 0x00005664, 0x92a83000, - 0x00005674, 0x08000068, 0x90a03000, 0x00005668, - 0x90a83000, 0x00005680, 0x598d0011, 0x8cad6001, - 0x92883000, 0x00005668, 0x92a83000, 0x00005680, - 0x0800003c, 0x00000000, 0x3d14e022, 0x90a03000, - 0x00005624, 0x598d0011, 0x92883000, 0x00005624, - 0x0800001c, 0x00000000, 0x90a03000, 0x00005628, - 0x598d0011, 0x92883000, 0x00005628, 0x98242018, - 0x59a14104, 0x59a50908, 0x59a50c03, 0x92a12004, - 0x90a42058, 0x598a1004, 0x5a003094, 0xb0a42030, - 0x12000016, 0x3e954012, 0x598c1004, 0x59ec8115, - 0x92a9200c, 0x3ced801a, 0x59ef4116, 0x92b46004, - 0x5a05a09d, 0x8c8c6008, 0x13fffff0, 0x3b07600a, - 0x92ec6004, 0x90a03000, 0x00005154, 0x3b05200a, - 0x09fffce0, 0x90883000, 0x00000310, 0x90a45000, - 0x3d05207a, 0x90812004, 0x90903000, 0x0000515c, - 0x90883000, 0x0000e464, 0x90a83000, 0x0000515c, - 0x90b03000, 0x0000e468, 0x90b83000, 0x00005154, - 0x59a18e10, 0x58a40394, 0x92a12004, 0x92245d12, - 0x90a03000, 0x000056a0, 0x59b58901, 0x8cad6001, - 0x58ad8095, 0x8cbde001, 0x92a83000, 0x0000515c, - 0x92b83000, 0x00005154, 0x59a05014, 0x92a03000, - 0x000056a0, 0x0a000000, 0x90812004, 0x908c5000, - 0x5c901604, 0x8c803890, 0x00000009, 0x59840d83, - 0x09000240, 0x90a03000, 0x00000310, 0x90a83000, - 0x00000314, 0x59b21014, 0x90bd2004, 0x5a056016, - 0x92f51000, 0x1600000e, 0x90b03000, 0x00000318, - 0x5a023086, 0x92b83000, 0x20000038, 0x58a18981, - 0x92b03000, 0x00000310, 0x92a03000, 0x30000060, - 0x15000022, 0x90a59000, 0x3d052066, 0x90a03000, - 0x0000e474, 0x90a51000, 0x3a052056, 0x08000014, - 0x90a03000, 0x0000e474, 0x90a51000, 0x3a052042, - 0x90a83000, 0x0000e478, 0x90a55000, 0x59a05014, - 0x92a55000, 0x90a83000, 0x00005160, 0x8c3801ff, - 0x59a85015, 0x58a1c095, 0x58a50988, 0x92a83000, - 0x00005160, 0x92a03000, 0x20000004, 0x90883000, - 0x0000e48c, 0x5c801604, 0x09002964, 0x90b03000, - 0x0000e484, 0x90803000, 0x00000308, 0x90a03000, - 0x00000308, 0x90a83000, 0x0000e468, 0x90b83000, - 0x00000300, 0x59a05014, 0x8cb03a16, 0x00000010, - 0x59ad4901, 0x92b11000, 0x58a54094, 0x9225dd10, - 0x92a03000, 0x00000308, 0x0a000000, 0x65944490, - 0x0a000000, 0x66003805, 0x0a000000, 0x5c801621, - 0x0a000000, 0x5c083610, 0x5c801610, 0x5c801610, - 0x5c801610, 0x5c801610, 0x5c801610, 0x5c801610, - 0x5c801610, 0x5c801610, 0x0a000000, 0x5c003610, - 0x0a000000, 0x5c801620, 0x0a000000, 0x8c203000, - 0x001f0000, 0x592c0e10, 0x65290284, 0x5c801605, - 0x0a000000, 0x65801290, 0x0a000000, 0x8c203000, - 0xffffffff, 0x61244010, 0x5c801604, 0x0a000000, - 0x61944010, 0x5c801612, 0x0a000000, 0x61244110, - 0x5c801604, 0x0a000000, 0x00000000, 0x00000000, - 0x5c981e00, 0x92883000, 0x20000030, 0x5a042093, - 0x8ca03990, 0x00000000, 0x92a03000, 0x20000060, - 0x13000052, 0x8ce83000, 0x10000008, 0x8c883000, - 0x30000000, 0x90a75000, 0x343d2016, 0x8ca83000, - 0x10000008, 0x90a55000, 0x333d3ffc, 0xb0a45000, - 0xb2a49000, 0xb0a45000, 0x59985013, 0x8c94a010, - 0x5a042093, 0xb2a49000, 0x59941012, 0x14ffffc8, - 0x0a000000, 0x00000000, 0x00000000, 0x00000000, - 0x5c981e00, 0x92883000, 0x20000054, 0x5a042093, - 0x8ca03990, 0x00000000, 0x92a03000, 0x20000060, - 0x13000032, 0x8c883000, 0x30000060, 0xb0a49000, - 0x59941012, 0x8c9ce001, 0x5a042093, 0xb2a45000, - 0xb0a49000, 0x59941012, 0xb2a45000, 0x14ffffe0, - 0x0a000000, 0x00000000, 0x00000000, 0x00000000, - 0x5a00b090, 0x92883000, 0x20000054, 0x5c981610, - 0x8c8c9000, 0x92803000, 0x20000060, 0x1200002a, - 0x3c142012, 0x3a0c2032, 0x08000040, 0x00000000, - 0x3d1c203a, 0x90a49000, 0x59891012, 0x92a03000, - 0x20000060, 0x90a45000, 0x59891011, 0x92a03000, - 0x20000060, 0x90a45000, 0x92a03000, 0x20000060, - 0x0a000000, 0x00000000, 0x58a3d092, 0x3a452032, - 0x34452012, 0x3a252016, 0x0800004c, 0x00000000, - 0x3a652032, 0x08000040, 0x90a49000, 0x59891012, - 0x599c0901, 0x92a03000, 0x20000060, 0x90a45000, - 0x59891011, 0x599cc901, 0x92a03000, 0x20000060, - 0x90a45000, 0x59891011, 0x599cc901, 0x92a03000, - 0x20000060, 0x3b1ce026, 0x8c803000, 0x20000060, - 0x599cc904, 0xb0a45000, 0x5a00f093, 0x8c8c6010, - 0xb2a41000, 0x11ffffec, 0x3b04e026, 0x8ca83000, - 0x20000060, 0x599cc901, 0x90a45000, 0x5a003093, - 0x8c8c6004, 0x92a55000, 0x11ffffec, 0x0a000000, - 0x8cb000ff, 0x58858090, 0x8ca80000, 0x8c883000, - 0x04c4b3ff, 0x8cb83000, 0x10000004, 0x92803000, - 0x20000004, 0x90a5d000, 0x58a58094, 0x3aa40026, - 0x59a85015, 0x3eac5ff0, 0x90a83000, 0x0000e470, - 0x8ca03000, 0xdead0006, 0x92a55000, 0x08005284, - 0x0a000000, 0x00000000, 0x00000000, 0x00000000, - 0x8cb800ff, 0x5ca81e00, 0x8c883000, 0x04c4b3ff, - 0x8c803000, 0x10000004, 0x80b03000, 0x00005160, - 0x90a41000, 0x58a5c094, 0x3aa5802a, 0x59a85015, - 0x3eac5ff0, 0x90a83000, 0x0000e470, 0x8ca03000, - 0xdead0007, 0x92a55000, 0x08005228, 0x00000000, - 0x0a000000, 0x00000000, 0x00000000, 0x00000000, - 0x8cf03000, 0x000071a0, 0x5c80161e, 0x8cf00000, - 0x90a03000, 0x0000e474, 0x90a51000, 0x3a052042, - 0x90a83000, 0x0000e478, 0x90a55000, 0x59a05014, - 0x92a55000, 0x90a83000, 0x00005160, 0x8cb001ff, - 0x59a85015, 0x58a58095, 0x58a50988, 0x92a83000, - 0x00005160, 0x92a03000, 0x20000004, 0x84041000, - 0x0a000000, 0x00000000, 0x00000000, 0x00000000, - 0x5c281610, 0x59314901, 0x8c200000, 0x8c403000, - 0x00002710, 0x59398e02, 0x09fffc6c, 0x58840105, - 0x09fffc5c, 0x5ca01604, 0x5a022094, 0x8c212001, - 0x1600009e, 0x34f9a096, 0x90a1f400, 0x000071f8, - 0x84051000, 0x00000000, 0x00007278, 0x00007278, - 0x00007278, 0x00007278, 0x00007278, 0x00007278, - 0x00007278, 0x00007278, 0x00007278, 0x00007278, - 0x00007278, 0x00007278, 0x00007278, 0x00007278, - 0x00007278, 0x00007278, 0x00007278, 0x00007278, - 0x00007278, 0x00007278, 0x00007278, 0x00007278, - 0x00007278, 0x00007278, 0x00007278, 0x00007278, - 0x00007278, 0x00007278, 0x00007278, 0x00007278, - 0x00007278, 0x00007278, 0x090050d8, 0x09fffbb8, - 0x58814090, 0x3d043f44, 0x5c801e01, 0x0a000000, - 0x8c086040, 0xb2807400, 0xffffffc0, 0xb2a07400, - 0xffffffd0, 0xb2c07400, 0xffffffe0, 0xb2e07400, - 0xfffffff0, 0x90a03000, 0x0000516c, 0x3d052022, - 0x90a83000, 0x0000e470, 0x8ca03000, 0xdead0001, - 0x92a55000, 0x0900507c, 0x09004fe8, 0x90a03000, - 0x10000000, 0x8c8800d2, 0x58a44094, 0x8c880028, - 0x58a44394, 0x8c200000, 0x8c283000, 0x00002710, - 0x92a03000, 0x10000000, 0x09fffb2c, 0x58840e00, - 0x09fffb1c, 0x5ca01604, 0x5a016094, 0x8c212001, - 0x1600000a, 0x0900502c, 0x09fffb0c, 0x37043fdc, - 0x90a83000, 0x00005178, 0x90a03000, 0x00005174, - 0x5a003095, 0x8ca52001, 0x92a03000, 0x00005174, - 0x1200005a, 0x90a03000, 0x0000e474, 0x90a51000, - 0x3a052052, 0x90a83000, 0x0000e478, 0x90a55000, - 0x59a05014, 0x92a55000, 0x90a83000, 0x00005160, - 0x8c8801ff, 0x59a85015, 0x58a44095, 0x58a50988, - 0x92a83000, 0x00005160, 0x92a03000, 0x20000004, - 0x08000010, 0x00000000, 0x92f03000, 0x0000516c, - 0xb0807400, 0xffffffc0, 0xb0a07400, 0xffffffd0, - 0xb0c07400, 0xffffffe0, 0xb0e07400, 0xfffffff0, - 0x5c083603, 0x0a000000, 0x00000000, 0x00000000, - 0x8c086040, 0xb2807400, 0xffffffc0, 0xb2a07400, - 0xffffffd0, 0xb2c07400, 0xffffffe0, 0xb2e07400, - 0xfffffff0, 0x90a03000, 0x50001444, 0x3025200e, - 0x3085200a, 0x0900039c, 0x90a03000, 0x50001444, - 0x302d200e, 0x308d200a, 0x090003a8, 0x90a03000, - 0x50001444, 0x3035200e, 0x3095200a, 0x090003b4, - 0x90a03000, 0x50000c44, 0x3015200e, 0x301d200a, - 0x090003c0, 0x5c201e00, 0x8c283000, 0x00002710, - 0x09fff9d4, 0x58840e04, 0x09fff9c4, 0x5ca01604, - 0x5a016094, 0x8c212001, 0x1600000a, 0x09004ed4, - 0x09fff9b4, 0x37243fdc, 0xb0807400, 0xffffffc0, - 0xb0a07400, 0xffffffd0, 0xb0c07400, 0xffffffe0, - 0xb0e07400, 0xfffffff0, 0x5c083603, 0x0a000000, - 0x8c086040, 0xb2807400, 0xffffffc0, 0xb2a07400, - 0xffffffd0, 0xb2c07400, 0xffffffe0, 0xb2e07400, - 0xfffffff0, 0x90a03000, 0x00005184, 0x3d052022, - 0x90a83000, 0x0000e470, 0x8ca03000, 0xdead0002, - 0x92a55000, 0x09004e5c, 0x09004dc8, 0x5c201e00, - 0x8c283000, 0x00002710, 0x09000438, 0x09fff928, - 0x58840e05, 0x09fff918, 0x5ca01604, 0x5a016094, - 0x8c212001, 0x1600000a, 0x09004e28, 0x09fff908, - 0x372c3fdc, 0xb0807400, 0xffffffc0, 0xb0a07400, - 0xffffffd0, 0xb0c07400, 0xffffffe0, 0xb0e07400, - 0xfffffff0, 0x5c083603, 0x0a000000, 0x00000000, - 0x8c086040, 0xb2807400, 0xffffffc0, 0xb2a07400, - 0xffffffd0, 0xb2c07400, 0xffffffe0, 0xb2e07400, - 0xfffffff0, 0x90a03000, 0x00005168, 0x3d052022, - 0x90a83000, 0x0000e470, 0x8ca03000, 0xdead0003, - 0x92a55000, 0x09004dac, 0x09004d18, 0x90a03000, - 0x10000000, 0x8c8800d2, 0x58a44094, 0x58a50980, - 0x8c200000, 0x8c283000, 0x00002710, 0x92a03000, - 0x10000000, 0x09fff860, 0x58840e02, 0x09fff850, - 0x5ca01604, 0x5a016094, 0x8c212001, 0x1600000a, - 0x09004d60, 0x09fff840, 0x37143fdc, 0xb0807400, - 0xffffffc0, 0xb0a07400, 0xffffffd0, 0xb0c07400, - 0xffffffe0, 0xb0e07400, 0xfffffff0, 0x5c083603, - 0x0a000000, 0x00000000, 0x00000000, 0x00000000, - 0x8c086040, 0xb2807400, 0xffffffc0, 0xb2a07400, - 0xffffffd0, 0xb2c07400, 0xffffffe0, 0xb2e07400, - 0xfffffff0, 0x90a03000, 0x00005164, 0x3d052022, - 0x90a83000, 0x0000e470, 0x8ca03000, 0xdead0004, - 0x92a55000, 0x09004cdc, 0x09004c48, 0xb0807400, - 0xffffffc0, 0xb0a07400, 0xffffffd0, 0xb0c07400, - 0xffffffe0, 0xb0e07400, 0xfffffff0, 0x5c083603, - 0x0a000000, 0x00000000, 0x00000000, 0x00000000, - 0x09fff744, 0x90242004, 0x902c2010, 0x5c801e00, - 0x8c403000, 0x00003201, 0x09fff73c, 0x5c801e00, - 0x8c480004, 0x09fff758, 0x8c583000, 0x00005820, - 0x9259201c, 0x9a412010, 0x8ca03000, 0x00007290, - 0x92a1604c, 0x8ca03000, 0x00007560, 0x8ca83000, - 0x00007630, 0x8cb03000, 0x000073e0, 0x8c800401, - 0x5c881e00, 0x8c900000, 0x92a1608c, 0x92a960cc, - 0x92b1610c, 0x09fff6c8, 0x5c801e00, 0x09fff700, - 0x8c800fff, 0x09fff6d0, 0x5c801e01, 0x08fff700, - 0x09fff6b4, 0x90242004, 0x902c2010, 0x5c801e00, - 0x09fff6b4, 0x5c801e00, 0x09fff6d4, 0x8ca00054, - 0x92a12014, 0x8ca03000, 0x00005800, 0x8ca83000, - 0x000073e0, 0x8cb03000, 0x000074b0, 0x8c800401, - 0x5c881e00, 0x8c900000, 0x92a1201c, 0x92a9610c, - 0x92b1614c, 0x09fff658, 0x5c801e00, 0x09fff690, - 0x8c800fff, 0x09fff660, 0x5c801e01, 0x08fff690, - 0x90a83000, 0x0000e470, 0x8ca03000, 0xdead0010, - 0x92a55000, 0x09004b8c, 0x5c801e01, 0x08004af4, - 0x90a83000, 0x0000e470, 0x8ca03000, 0xdead0011, - 0x92a55000, 0x09004b6c, 0x5c801e01, 0x08004ad4, - 0x90a83000, 0x0000e470, 0x8ca03000, 0xdead0012, - 0x92a55000, 0x09004b4c, 0x5c801e01, 0x08004ab4, - 0x90a83000, 0x0000e470, 0x8ca03000, 0xdead0013, - 0x92a55000, 0x09004b2c, 0x5c801e01, 0x08004a94, - 0x8cf03000, 0x00007854, 0x5c88161e, 0x8cf00000, - 0x8ca000ff, 0x58850090, 0x92803000, 0x50001c08, - 0x84045000, 0x0a000000, 0x00000000, 0x00000000, - 0x58b01988, 0x5a05a090, 0x5da01e00, 0x1200003e, - 0x31858012, 0x3a04201e, 0x08000058, 0x00000000, - 0x58e81989, 0x3a87403e, 0x08000048, 0x00000000, - 0x8ca03000, 0xca61b882, 0x8ca83000, 0x3ed27476, - 0x08000030, 0x00000000, 0x8ca03000, 0xfc8b99de, - 0x8ca83000, 0x3eca5d3b, 0x08000018, 0x00000000, - 0x8ca03000, 0x9d7ab6d8, 0x8ca83000, 0x3ec7c262, - 0x5c901e00, 0x8c983000, 0x4177d784, 0x5d801614, - 0x090068a0, 0x090062c0, 0x8ca000ff, 0x58850090, - 0x92803000, 0x50001c08, 0x0a000000, 0x00000000, - 0x8cf03000, 0x00007930, 0x5c80161e, 0x8cf00000, - 0x90a03000, 0x50001c04, 0x92f03000, 0x00005184, - 0x58a50e01, 0x92a03000, 0x50001c04, 0x84041000, - 0x0a000000, 0x00000000, 0x00000000, 0x00000000, - 0x90a03000, 0x00005184, 0x3d05200a, 0x09004974, - 0x90a83000, 0x50001c04, 0x58ad4989, 0x3055600a, - 0x58ad498a, 0x90a03000, 0x0000517c, 0x92a83000, - 0x50001c04, 0x59a05014, 0x92a03000, 0x0000517c, - 0x0a000000, 0x00000000, 0x00000000, 0x00000000, - 0x5c20161e, 0x90803000, 0x0000518c, 0x5988de06, - 0x090046b0, 0x5ca01610, 0x90a03000, 0x10000000, - 0x8ca800d2, 0x58a54094, 0x58ad0980, 0x92a83000, - 0x10000000, 0x90a03000, 0x0000518c, 0x59af1014, - 0x92a83000, 0x0000e474, 0x90a03000, 0x0000518c, - 0x8cad2020, 0x92a83000, 0x0000e478, 0x90a03000, - 0x0000518c, 0x8cad2030, 0x92a83000, 0x0000e470, - 0x90a03000, 0x0000518c, 0x8cad202c, 0x92a83000, - 0x0000e47c, 0x5ca01e01, 0x92a03000, 0x0000e480, - 0x90a03000, 0x0000518c, 0x8ca83000, 0x0000b800, - 0x92ad2028, 0x90a03000, 0x0000518c, 0x8ca83000, - 0x00032d50, 0x92ad2024, 0x90a03000, 0x0000518c, - 0x8ca83000, 0x0004010c, 0x92ad2034, 0x90a03000, - 0x0000518c, 0x90a83000, 0x00005190, 0x90b56010, - 0x59ad8e10, 0x92ad2038, 0x0a000000, 0x00000000, - 0x59084810, 0x8c279000, 0x90a03000, 0x00005190, - 0x8ca83000, 0xce11feed, 0x92ad2008, 0x90a83000, - 0x0000e470, 0x90a03000, 0x0000e470, 0x90a83000, - 0x0000e470, 0x90b55000, 0x59ad8901, 0x92ad1000, - 0x90a51000, 0x90a03000, 0x0000518c, 0x90ad2040, - 0x8cb0007f, 0x58a58095, 0x5a003094, 0x120000de, - 0x5a007094, 0x1200000e, 0x080000d8, 0x00000000, - 0x90803000, 0x0000518c, 0x09000c28, 0x5ca01610, - 0x92a7e040, 0x90a03000, 0x0000518c, 0x90afe040, - 0x58b54981, 0x92b52044, 0x90a03000, 0x0000518c, - 0x90ad2040, 0x58881987, 0x58a44095, 0x5a003094, - 0x12000060, 0x90a03000, 0x0000e474, 0x90ad1000, - 0x5a003095, 0x1200004c, 0x90a03000, 0x0000e478, - 0x90a83000, 0x0000e478, 0x90b55000, 0x59a85016, - 0x92ad1000, 0x90a03000, 0x00005160, 0x59a85014, - 0x8ca55000, 0x92a03000, 0x00005160, 0x8ca800ff, - 0x58a54094, 0x58ad0988, 0x92a83000, 0x20000004, - 0x90a03000, 0x0000518c, 0x5ca81e00, 0x92ad2040, - 0x90a7e040, 0x5a00b094, 0x15000008, 0x0a000000, - 0x08000010, 0x00000000, 0x08000008, 0x00000000, - 0x08000010, 0x00000000, 0x08000010, 0x00000000, - 0x08fffecc, 0x00000000, 0x0a000000, 0x00000000, - 0x59084810, 0x8ca79000, 0x90a83000, 0x50000c44, - 0x58b54980, 0x92b03000, 0x50000c44, 0x90a83000, - 0x50000c44, 0x58b54e00, 0x92b03000, 0x50000c44, - 0x90a83000, 0x50000c44, 0x58b54e02, 0x92b03000, - 0x50000c44, 0x5ca81e00, 0x92a83000, 0x50001048, - 0x5ca81e01, 0x92a83000, 0x50001044, 0x5ca81e00, - 0x92afe040, 0x90afe040, 0x5a00f015, 0x1600000e, - 0x08000080, 0x00000000, 0x90afe040, 0x5cb01615, - 0x8ca83916, 0x00000000, 0x8cb03000, 0x50001010, - 0x59ad8015, 0x8cb00000, 0x59ad8015, 0x8cb55000, - 0x5ca81e0f, 0x92ad9000, 0x90afe040, 0x5cb01615, - 0x8ca83916, 0x00000000, 0x8cb03000, 0x50001000, - 0x59ad8015, 0x8cb00000, 0x59ad8015, 0x8cb55000, - 0x5ca81e00, 0x92ad9000, 0x90b7e040, 0x59a85016, - 0x8cb55000, 0x92b7e040, 0x08ffff7c, 0x00000000, - 0x90a83000, 0x50001c04, 0x58b54982, 0x92b03000, - 0x50001c04, 0x90a83000, 0x50001444, 0x58b54e01, - 0x92b03000, 0x50001444, 0x8ca801f4, 0x92a83000, - 0x50001430, 0x90a83000, 0x50001444, 0x58b54987, - 0x92b03000, 0x50001444, 0x90a83000, 0x50001444, - 0x58b54986, 0x92b03000, 0x50001444, 0x90a83000, - 0x50001444, 0x58b54e04, 0x92b03000, 0x50001444, - 0x90a83000, 0x50001444, 0x58b54e05, 0x92b03000, - 0x50001444, 0x0a000000, 0x00000000, 0x00000000, - 0x59084810, 0x8c279000, 0x5ca01e00, 0x92a03000, - 0x10000000, 0x90a03000, 0x10000000, 0x8ca800d2, - 0x58a54094, 0x58ad0981, 0x92a83000, 0x10000000, - 0x90a03000, 0x10000000, 0x8ca800d0, 0x58a54094, - 0x92a03000, 0x10000000, 0x90a03000, 0x10000000, - 0x8ca800d2, 0x58a54094, 0x58ad0980, 0x92a83000, - 0x10000000, 0x90a03000, 0x10000000, 0x8ca800d2, - 0x58a54094, 0x8ca80028, 0x58a54394, 0x92a03000, - 0x10000000, 0x5c801e0a, 0x0b002780, 0x5ca01610, - 0x90a03000, 0x50001c04, 0x58ad0983, 0x92a83000, - 0x50001c04, 0x5984d81f, 0x0b002760, 0x5ca01610, - 0x90a03000, 0x50001c04, 0x59a8de0b, 0x58a54394, - 0x8ca83000, 0x00001838, 0x5a056094, 0x12000010, - 0x5c801e01, 0x0900448c, 0x5ca01610, 0x90a03000, - 0x50000c44, 0x5a003094, 0x12000010, 0x5c801e01, - 0x09004470, 0x5ca01610, 0x90a03000, 0x50001444, - 0x59a8de08, 0x58a54394, 0x59a8de08, 0x5a056094, - 0x12000010, 0x5c801e01, 0x09004448, 0x5ca01610, - 0x90a03000, 0x50000c44, 0x58ad0981, 0x92a83000, - 0x50000c44, 0x90a03000, 0x50000c44, 0x58ad0980, - 0x92a83000, 0x50000c44, 0x90a03000, 0x50001444, - 0x58ad0982, 0x92a83000, 0x50001444, 0x90a03000, - 0x50001444, 0x58ad0980, 0x92a83000, 0x50001444, - 0x90a03000, 0x50001444, 0x58ad0e0a, 0x92a83000, - 0x50001444, 0x90a03000, 0x50001c04, 0x58ad0985, - 0x92a83000, 0x50001c04, 0x90a03000, 0x50001c04, - 0x58ad0984, 0x92a83000, 0x50001c04, 0x90a03000, - 0x50001c04, 0x58ad0e03, 0x92a83000, 0x50001c04, - 0x8c803000, 0x00041eb0, 0x0b002640, 0x5ca01610, - 0x8ca00000, 0x92a7e040, 0x90a7e040, 0x5a00f014, - 0x1600000a, 0x080000a4, 0x90a7e040, 0x5ca81614, - 0x8ca03915, 0x00000000, 0x8ca83000, 0x90000c00, - 0x59a54014, 0x8cb00000, 0x59ad8014, 0x8ca55000, - 0x90afe040, 0x5cb01615, 0x59ad8e0a, 0x90b03000, - 0x00005188, 0x59ad4016, 0x92ad1000, 0x90a7e040, - 0x5ca81614, 0x8ca03915, 0x00000000, 0x8ca83000, - 0x90000c10, 0x59a54014, 0x8cb00000, 0x59ad8014, - 0x8ca55000, 0x90afe040, 0x5cb01615, 0x59ad8e0a, - 0x90b03000, 0x00005188, 0x59ad4016, 0x92ad1000, - 0x90afe040, 0x59a05015, 0x8cad1000, 0x92afe040, - 0x08ffff58, 0x00000000, 0x90a03000, 0x0000e480, - 0x5a007094, 0x1500006c, 0x90a03000, 0x00005188, - 0x58a8198d, 0x59a54014, 0x92a03000, 0x90001400, - 0x90a03000, 0x00005188, 0x58a8198d, 0x59a54014, - 0x92a03000, 0x90001410, 0x90a03000, 0x00005188, - 0x58a8198c, 0x59a54014, 0x92a03000, 0x90001800, - 0x90a03000, 0x00005188, 0x58a8198c, 0x59a54014, - 0x92a03000, 0x90001810, 0x08000168, 0x00000000, - 0x5ca01e00, 0x92a7e040, 0x90a7e040, 0x5a00f014, - 0x1600000a, 0x0800014c, 0x90a7e040, 0x5ca81614, - 0x8ca03915, 0x00000000, 0x8ca83000, 0x90001400, - 0x59a54014, 0x8cb00000, 0x59ad8014, 0x8ca55000, - 0x90afe040, 0x59b0de0b, 0x70ad8095, 0x58b0198d, - 0x59ad8015, 0x90b03000, 0x00005188, 0x59ad4016, - 0x92ad1000, 0x90a7e040, 0x5ca81614, 0x8ca03915, - 0x00000000, 0x8ca83000, 0x90001410, 0x59a54014, - 0x8cb00000, 0x59ad8014, 0x8ca55000, 0x90afe040, - 0x59b0de0b, 0x70ad8095, 0x58b0198d, 0x59ad8015, - 0x90b03000, 0x00005188, 0x59ad4016, 0x92ad1000, - 0x90a7e040, 0x5ca81614, 0x8ca03915, 0x00000000, - 0x8ca83000, 0x90001800, 0x59a54014, 0x8cb00000, - 0x59ad8014, 0x8ca55000, 0x90afe040, 0x5cb01615, - 0x59ad8e0a, 0x58b0198c, 0x59ad8015, 0x90b03000, - 0x00005188, 0x59ad4016, 0x92ad1000, 0x90a7e040, - 0x5ca81614, 0x8ca03915, 0x00000000, 0x8ca83000, - 0x90001810, 0x59a54014, 0x8cb00000, 0x59ad8014, - 0x8ca55000, 0x90afe040, 0x5cb01615, 0x59ad8e0a, - 0x58b0198c, 0x59ad8015, 0x90b03000, 0x00005188, - 0x59ad4016, 0x92ad1000, 0x90afe040, 0x59a05015, - 0x8cad1000, 0x92afe040, 0x08fffeb0, 0x00000000, - 0x5ca01e01, 0x92a03000, 0x50001044, 0x5ca01e00, - 0x92a7e040, 0x90a7e040, 0x5a00f014, 0x1600000e, - 0x08000080, 0x00000000, 0x90a7e040, 0x5ca81614, - 0x8ca03915, 0x00000000, 0x8ca83000, 0x50001010, - 0x59a54014, 0x8ca80000, 0x59a54014, 0x8cad1000, - 0x5ca01e0f, 0x92a55000, 0x90a7e040, 0x5ca81614, - 0x8ca03915, 0x00000000, 0x8ca83000, 0x50001000, - 0x59a54014, 0x8ca80000, 0x59a54014, 0x8cad1000, - 0x5ca01e00, 0x92a55000, 0x90afe040, 0x59a05015, - 0x8cad1000, 0x92afe040, 0x08ffff7c, 0x00000000, - 0x90a03000, 0x50000c44, 0x58ad0e01, 0x92a83000, - 0x50000c44, 0x90a03000, 0x50000c44, 0x58ad0e00, - 0x92a83000, 0x50000c44, 0x90a03000, 0x50001444, - 0x58ad0e02, 0x92a83000, 0x50001444, 0x90a03000, - 0x50001444, 0x58ad0e00, 0x92a83000, 0x50001444, - 0x90a03000, 0x50001444, 0x58ad098a, 0x92a83000, - 0x50001444, 0x90a03000, 0x50001c04, 0x58ad0e05, - 0x92a83000, 0x50001c04, 0x90a03000, 0x50001c04, - 0x58ad0e04, 0x92a83000, 0x50001c04, 0x90a03000, - 0x50001444, 0x58ad0993, 0x92a83000, 0x50001444, - 0x5c801e00, 0x0a000000, 0x0a000000, 0x00000000, - 0x5ca0161e, 0x8ca80000, 0x92a83000, 0x50001044, - 0x5ca81e1f, 0x92a83000, 0x50001048, 0x80a83000, - 0x0000e46c, 0x92a83000, 0x50001000, 0x5ca81e01, - 0x92a83000, 0x50001010, 0x80a83000, 0x0000e46c, - 0x92a83000, 0x50001004, 0x5ca81e01, 0x92a83000, - 0x50001014, 0x80a83000, 0x0000e46c, 0x92a83000, - 0x50001008, 0x5ca81e01, 0x92a83000, 0x50001018, - 0x80a83000, 0x0000e46c, 0x92a83000, 0x5000100c, - 0x5ca81e01, 0x92a83000, 0x5000101c, 0x0a000000, - 0x90bc1000, 0x908c1000, 0x90a42004, 0x90b03000, - 0x000002f4, 0x90903000, 0x000002f8, 0x90983000, - 0x000002fc, 0x90a83000, 0x000002f0, 0x8c303000, - 0x0000ff00, 0x59a50e04, 0x58b58094, 0x58a48094, - 0x59a50413, 0x58b50396, 0x58ad4096, 0x5a003095, - 0x58b98097, 0x59edcc08, 0x8c303000, 0x00ff0000, - 0x58898091, 0x598c4c10, 0x12000012, 0x5c801e0a, - 0x0a000000, 0x00000000, 0x5a003091, 0x59b58c04, - 0x12000012, 0x3a0c6076, 0x08ffffe4, 0x00000000, - 0x90a03000, 0x00000390, 0x3a053fd6, 0x90a03000, - 0x00000360, 0x3a05201a, 0x90a03000, 0x0000e490, - 0x3d052022, 0x34fda00a, 0x3d75a01a, 0x8c883000, - 0x00005ce0, 0x8cb83000, 0x00000380, 0x08000014, - 0x8cb83000, 0x00000350, 0x90883000, 0x0000e450, - 0x8c903000, 0x00005ce0, 0x8c983000, 0x00000380, - 0x08000068, 0x00000000, 0x90a03000, 0x0000e430, - 0x3a053f6e, 0x90a03000, 0x000003c0, 0x3a05201a, - 0x90a03000, 0x0000e490, 0x3d0d2022, 0x34fda00a, - 0x3d75a01a, 0x8c883000, 0x00005e80, 0x8cb83000, - 0x0000e420, 0x08000014, 0x8cb83000, 0x000003b0, - 0x90883000, 0x0000e454, 0x8c903000, 0x00005e80, - 0x8c983000, 0x0000e420, 0x90a83000, 0x0000e4a0, - 0x5a01309d, 0x59a58e07, 0x59254014, 0x120000a6, - 0x3c276012, 0x3a076016, 0x08fffef4, 0x00000000, - 0x3a2f60d2, 0x08fffee8, 0x90a42008, 0x5984581f, - 0x70ad0590, 0x3d05600a, 0x5ca81e01, 0x90a12010, - 0x8c303000, 0x0000b700, 0x5a01a094, 0x92a92054, - 0x12000032, 0x592d1004, 0x90895000, 0x3c8d401e, - 0x70940091, 0x8c811000, 0x5c981e02, 0x09ffe544, - 0x92f15000, 0x92f12024, 0x5c801e02, 0x0a000000, - 0x9289203c, 0x92912040, 0x90a5e014, 0x74a50590, - 0x92a1202c, 0x8ca83000, 0x0000b7b0, 0x90a4e014, - 0x92a92010, 0x74a50590, 0x8c941000, 0x08000084, - 0x90a12010, 0x8c303000, 0x0000b700, 0x3da19e52, - 0x9289203c, 0x92912040, 0x90a5e014, 0x5993581f, - 0x74a50592, 0x92a1202c, 0x90a4e014, 0x74a50592, - 0x8ca83000, 0x0000b780, 0x5c281e04, 0x08000040, - 0x90a12010, 0x8c303000, 0x0000b700, 0x3da19e12, - 0x92992040, 0x92b9203c, 0x90a5e014, 0x5994581f, - 0x74a50592, 0x92a1202c, 0x90a4e014, 0x74a50592, - 0x8ca83000, 0x0000b250, 0x5c281e00, 0x92a92010, - 0x92a12030, 0x9081202c, 0x8c892030, 0xb0a45000, - 0x70840092, 0x92e92058, 0x59840105, 0x8cac1000, - 0x70950092, 0x92846004, 0x5cb01612, 0x8c800002, - 0x92a45000, 0x92946008, 0x92bc600c, 0x0a000000, - 0x90a42004, 0x90b03000, 0x000002f4, 0x90b83000, - 0x000002f8, 0x90803000, 0x000002fc, 0x90a83000, - 0x000002f0, 0x59a50e04, 0x58b58094, 0x58a5c094, - 0x59a50410, 0x58b50396, 0x58ad4096, 0x3a05600e, - 0x5c801e0a, 0x0a000000, 0x90a03000, 0x0000e4a0, - 0x59b58c04, 0x59ad8e07, 0x59250015, 0x90a12010, - 0x8c283000, 0x0000b700, 0x3da14012, 0x5c801e0a, - 0x0a000000, 0x00000000, 0x90892014, 0x3b046016, - 0x5c801604, 0x8c900000, 0x5c981e08, 0x09ffe3b4, - 0x5c801604, 0x58881987, 0x09003948, 0x58a0199f, - 0x92292010, 0x5c801e02, 0x92a12044, 0x0a000000, - 0x90b42060, 0x90ac2060, 0x8c542040, 0x5c481610, - 0x8ca83995, 0x00000020, 0x58a7d095, 0x5a003094, - 0x92b03000, 0x0000e494, 0x92a83000, 0x0000e498, - 0x12000012, 0x5c801e08, 0x0a000000, 0x00000000, - 0x90a4205c, 0x59bd0e03, 0x8cade020, 0x58a7d095, - 0x5a003094, 0x92a83000, 0x0000e48c, 0x1200000e, - 0x5c801e08, 0x0a000000, 0x90a42058, 0x58a0d094, - 0x3a052012, 0x5c801e08, 0x0a000000, 0x00000000, - 0x90942050, 0x90ac2054, 0x90b42058, 0x909c2058, - 0x90ec2058, 0x90242070, 0x902c2078, 0x90342080, - 0x903c2088, 0x90442090, 0x5962581f, 0x70930092, - 0x8ca5e028, 0x70a58094, 0x90b42098, 0x90bc20a0, - 0x908c20a8, 0x8cac9d95, 0x59ad0015, 0x8c9d5d13, - 0x8cecdd1d, 0x8c275d84, 0x8c291d85, 0x8c315d86, - 0x8c399d87, 0x8c41dd88, 0x8cb21d96, 0x8c583000, - 0x0003cd4f, 0x8c603000, 0x00032d50, 0x8cbd9d97, - 0x59a2c10c, 0x8c8ddd91, 0x368d0012, 0x5c801e08, - 0x0a000000, 0x00000000, 0x090000b8, 0x3d44200e, - 0x5c801e08, 0x0a000000, 0x8c825000, 0x09000124, - 0x3d442012, 0x5c801e08, 0x0a000000, 0x00000000, - 0x8c825000, 0x0900018c, 0x3d442012, 0x5c801e08, - 0x0a000000, 0x00000000, 0x8c825000, 0x09ffd6d4, - 0x3d442012, 0x5c801e08, 0x0a000000, 0x00000000, - 0x90826058, 0x90883000, 0x0000e48c, 0x09ffdd04, - 0x3d442012, 0x5c801e08, 0x0a000000, 0x00000000, - 0x8c829000, 0x09000afc, 0x3d442012, 0x5c801e08, - 0x0a000000, 0x00000000, 0x8c800000, 0x09ffe7b4, - 0x90a2a024, 0x5c801e02, 0x92a03000, 0x0000e490, - 0x0a000000, 0x00000000, 0x00000000, 0x00000000, - 0x5c201610, 0x90a12050, 0x59850e05, 0x92a03000, - 0x0000e49c, 0x090014fc, 0x5a003090, 0x92803000, - 0x0000e408, 0x1500000e, 0x5c801e08, 0x0a000000, - 0x90b03000, 0x0000e49c, 0x92811000, 0x92803000, - 0x0000e410, 0x5ca81e00, 0x59a58e05, 0x5a05a095, - 0x8ca53c10, 0xffffffe0, 0x92a03000, 0x0000e40c, - 0x1300001a, 0x59a85015, 0x92f41000, 0x5a05a095, - 0x8c842020, 0x14fffff0, 0x5c801e02, 0x0a000000, - 0x5c281610, 0x90216058, 0x59310e03, 0x8c819000, - 0x09001480, 0x5a003090, 0x92803000, 0x00000310, - 0x15000012, 0x5c801e08, 0x0a000000, 0x00000000, - 0x92816008, 0x5ca81e00, 0x92803000, 0x00000318, - 0x5a012095, 0x8ca1bc10, 0xfffffff8, 0x92a03000, - 0x00000314, 0x1300001a, 0x59a85015, 0x92f41000, - 0x5a012095, 0x8c842008, 0x14fffff0, 0x5c801e02, - 0x0a000000, 0x00000000, 0x00000000, 0x00000000, - 0x5c281610, 0x90216054, 0x59310e03, 0x8c819000, - 0x09001400, 0x5a003090, 0x92803000, 0x00000320, - 0x15000012, 0x5c801e08, 0x0a000000, 0x00000000, - 0x92816004, 0x5ca81e00, 0x92803000, 0x0000031c, - 0x5a012095, 0x8ca1bc10, 0xfffffff8, 0x92a03000, - 0x00000324, 0x1300001a, 0x59a85015, 0x92f41000, - 0x5a012095, 0x8c842008, 0x14fffff0, 0x5c801e02, - 0x0a000000, 0x00000000, 0x00000000, 0x00000000, - 0x5c201611, 0x8c303984, 0x00000000, 0x5c281610, - 0x8c819000, 0x0900137c, 0x5a003090, 0x9281601c, - 0x15000012, 0x5c801e08, 0x0a000000, 0x00000000, - 0x8ca9bc10, 0xfffffff8, 0x8ca16020, 0x5cb01e00, - 0x92851000, 0x5a012096, 0x92ad2004, 0x13000016, - 0x90a1601c, 0x92f51d96, 0x59b05016, 0x3cb11ff4, - 0x5c801e02, 0x0a000000, 0x00000000, 0x00000000, - 0x8cf03000, 0x00008b4c, 0x5c90161e, 0x8cf00000, - 0x59840901, 0x59b81901, 0x3a85c052, 0x598c4e08, - 0x8ca80000, 0x58a05110, 0x8cb47c15, 0x40000850, - 0x5a003094, 0x8ca47c15, 0x40000860, 0x1200001a, - 0x59840901, 0x5a05e090, 0x92f59000, 0x92f51000, - 0x1200001a, 0x59840902, 0x5a05e090, 0x92f59000, - 0x92f51000, 0x15fffff0, 0x84049000, 0x0a000000, - 0x5c601614, 0x8c180030, 0x74a48583, 0x8c559000, - 0x90b03000, 0x00005620, 0x5c581613, 0x598ace08, - 0x8cb80000, 0x5c681615, 0x8cac7c17, 0x40000840, - 0x59a58014, 0x92a03000, 0x00005620, 0x92855000, - 0x98a29000, 0x5990d012, 0x8c200000, 0x5a00308c, - 0x8c347c17, 0x70000040, 0x594c8d82, 0x8c800000, - 0x5c381614, 0x592d4d82, 0x150000d2, 0x3b0260c6, - 0x5947de02, 0x8ce83000, 0x20000030, 0x8c983000, - 0x20000060, 0x8c903000, 0x20000004, 0x8c883000, - 0x10000008, 0x3d016016, 0x5952100a, 0x98a29000, - 0x592d4d82, 0x8c3d1000, 0x59a20104, 0x5a052085, - 0x8cb15000, 0x1600000a, 0x5cb01614, 0x923f5000, - 0x90a03000, 0x00005160, 0x59258004, 0x8ca800ff, - 0x5a02f084, 0x8c39dd16, 0x594a4116, 0x92b4d000, - 0x59294116, 0x8ca52001, 0x58ad4094, 0x92a03000, - 0x00005160, 0x92ac9000, 0x16000036, 0x80a45000, - 0x335d202a, 0x8c803000, 0x10000008, 0xb0a19000, - 0xb0a19000, 0xb0a19000, 0x80a41000, 0x5a02f014, - 0x5921090c, 0x11ffffe8, 0x3c593fd4, 0x3c027f6a, - 0x0a000000, 0x00000000, 0x3b0260d6, 0x8c783000, - 0x20000004, 0x8c703000, 0x10000008, 0x3d016016, - 0x5952100a, 0x98a29000, 0x592d4d82, 0x8c3d1000, - 0x591fde02, 0x59a0c104, 0x5a052085, 0x8cb15000, - 0x1600000a, 0x5cb01614, 0x92383000, 0x20000030, - 0x90a03000, 0x00005160, 0x59258004, 0x8ca800ff, - 0x5a02f084, 0x92b03000, 0x20000060, 0x594a4116, - 0x8c39dd16, 0x59294116, 0x8ca52001, 0x58ad4094, - 0x92a03000, 0x00005160, 0x92abd000, 0x1600004e, - 0x80a39000, 0x335d2042, 0x8c403000, 0x10000008, - 0x59805010, 0xb0a19000, 0x5a032090, 0xb0a19000, - 0x5921090c, 0xb0a19000, 0x15000016, 0x5c80160d, - 0x8c8ad000, 0x0bfffda4, 0x5c801e00, 0x80a21000, - 0x345d3fd0, 0x3c593fbc, 0x3c027f44, 0x5c80160d, - 0x8c8ad000, 0x08fffd7c, 0x00000000, 0x00000000, - 0x92883000, 0x20000040, 0x59ac0e08, 0x8cb80000, - 0x8cb57c17, 0x600004f0, 0xb0259000, 0x59a41011, - 0x92a03000, 0x20000040, 0xb0259000, 0x8c846020, - 0x8cad7c17, 0x600004fc, 0x92803000, 0x20000038, - 0x59811010, 0x90a55000, 0x92803000, 0x20000038, - 0x59811010, 0x90a55000, 0x0a000000, 0x00000000, - 0x8cf03000, 0x00008e0c, 0x5c90161e, 0x8cf00000, - 0x59840e08, 0x8ca80000, 0x8c843400, 0x400004c0, - 0x90a41000, 0x59a85015, 0x5a02b095, 0x92a45000, - 0x59891011, 0x16ffffec, 0x84049000, 0x0a000000, - 0x8cf03000, 0x00008e4c, 0x5c90161e, 0x8cf00000, - 0x59840e08, 0x8ca80000, 0x8c843400, 0x400004c0, - 0x90a41000, 0x59a85015, 0x5a02b095, 0x92a45000, - 0x59891011, 0x16ffffec, 0x84049000, 0x0a000000, - 0x8cf03000, 0x00008e84, 0x5c88161e, 0x8cf00000, - 0x59840e08, 0x8c843400, 0x400004c0, 0xb0a41000, - 0xb0a41000, 0x90a41000, 0x90a41000, 0x90a41000, - 0x84045000, 0x0a000000, 0x00000000, 0x00000000, - 0x8c086070, 0x92c7e0a0, 0x5c381610, 0xb0a1e020, - 0x5c781612, 0x8c680000, 0x9021e014, 0x5a03e00d, - 0x9029e044, 0x5c701611, 0x8cc03000, 0x400004c0, - 0x5c481616, 0x8c455000, 0x130004c6, 0x8c583000, - 0x00005640, 0x5962c904, 0x8c183000, 0x5000144c, - 0x90a61000, 0x8c503000, 0x0000ffff, 0x58328094, - 0x3d3140aa, 0x3d02204a, 0x8ce805d2, 0x36274016, - 0x5c801e00, 0x0bffff54, 0x080001f4, 0x00000000, - 0x9089e040, 0x5c801607, 0x86045000, 0x5a007090, - 0x8c4c1000, 0x15000016, 0x5c801e00, 0x0bffff2c, - 0x080001cc, 0x00000000, 0x9041e030, 0x92483000, - 0x20000044, 0xb0a03000, 0x600004f0, 0xb0a03000, - 0x600004f0, 0x8c4a602c, 0x5a003089, 0x8c212001, - 0x59420901, 0x90a03000, 0x600004fc, 0x90a03000, - 0x600004fc, 0x90a03000, 0x600004fc, 0x12000182, - 0x8ce83000, 0x00003fff, 0x8ca16400, 0x582f4094, - 0x080003f4, 0x00000000, 0x59a18c0e, 0x3a0d205e, - 0x310d2012, 0x3a1521ae, 0x3a1d2292, 0x080003c4, - 0x5c801e00, 0x0bfffea4, 0x3a012022, 0x5c801607, - 0x8c891000, 0x5c901e00, 0x8c980008, 0x09ffdae4, - 0x08000014, 0x00000000, 0x90a2d000, 0x59a05014, - 0x92a2d000, 0x5828199f, 0x8c400000, 0x5c201e00, - 0x08000394, 0x00000000, 0x3d012022, 0x5c801e00, - 0x0bfffe58, 0x90a2d000, 0x59a05014, 0x5828199f, - 0x8c400000, 0x0800036c, 0x58a1498e, 0x5a052086, - 0x8c212001, 0x12000026, 0x5c801607, 0x8c891000, - 0x5c901e00, 0x8c980008, 0x09ffda78, 0x5c801e00, - 0x0bfffe18, 0x080001c4, 0x5c801e00, 0x8c8fe040, - 0x0bfffd88, 0x9080d000, 0x59a40c1c, 0x9097fd14, - 0x0000003c, 0x90a9e048, 0x8ce83000, 0x00ff0000, - 0x58a74092, 0x5a052095, 0x592c0c1a, 0x15000032, - 0x58a0d092, 0x8ce8002c, 0x70af4084, 0x90a03914, - 0x000051a0, 0x59294904, 0x58328092, 0x59a50006, - 0x8cad7c05, 0xffffffd0, 0x3aa5403a, 0x90a31000, - 0x5c801607, 0x8c900000, 0x5c981e08, 0x8ca52001, - 0x5c881604, 0x8c200000, 0x5c401e00, 0x5828199f, - 0x92a31000, 0x09ffd9dc, 0x080002ac, 0x00000000, - 0x3d022042, 0x9089e03c, 0x5c801607, 0x86045000, - 0x5a007090, 0x8c4c1000, 0x1500002a, 0x5c801607, - 0x8c891000, 0x5c901e00, 0x8c980008, 0x09ffd9a4, - 0x5c201e00, 0x5828199f, 0x0800026c, 0x00000000, - 0x3a01601a, 0x5980d005, 0x8c8a5000, 0x59840c02, - 0x8c97e040, 0x09ffde3c, 0x5c801607, 0x8c891000, - 0x5c901606, 0x8c980002, 0x080000bc, 0x00000000, - 0x3a01201a, 0x5c801e00, 0x0bfffd00, 0x5c801607, - 0x8c891000, 0x08000098, 0x5c801607, 0x8c8b9000, - 0x09ffd580, 0x3d04201e, 0x5c801e00, 0x0bfffcdc, - 0x90a2d000, 0x59a05014, 0x5828199f, 0x080001f4, - 0x9089e03c, 0x5c801607, 0x86045000, 0x5a007090, - 0x8c4c1000, 0x15000026, 0x9081e018, 0x09ffd634, - 0x5c801e00, 0x0bfffca4, 0x90a2d000, 0x59a05014, - 0x5828199f, 0x080001bc, 0x90a61000, 0x5c801e00, - 0x8c8a5000, 0x8ce83000, 0x00ff0000, 0x58a74094, - 0x92a1e048, 0x09fffb8c, 0x5a003090, 0x8c4c1000, - 0x1500002a, 0x5c801607, 0x8c880000, 0x5c901e00, - 0x8c980008, 0x09ffd8ac, 0x5c201e00, 0x8c400000, - 0x5828199f, 0x08000170, 0x90a9e02c, 0x8ce83000, - 0x00003fff, 0x8ca1a400, 0x582f4094, 0x8c200001, - 0x59454901, 0x08000150, 0x3a012026, 0x5c801607, - 0x8c900000, 0x5c981e08, 0x8c891000, 0x5c201e00, - 0x8c400000, 0x5828199f, 0x09ffd858, 0x5c801e00, - 0x8c8fe070, 0x0bfffbb4, 0x9080d000, 0x59340c1a, - 0x3a01a116, 0x59a40c1c, 0x9097fd14, 0x0000006c, - 0x90a7e070, 0x8ca83000, 0x00ff0000, 0x58b54092, - 0x58a54094, 0x3db50022, 0x58a0d092, 0x90b03914, - 0x000051a0, 0x58228092, 0x59a98908, 0x59a58004, - 0x3aa54022, 0x90a31000, 0x59a05014, 0x8c200000, - 0x5c401e00, 0x5828199f, 0x92a31000, 0x080000b8, - 0x59a21016, 0x8c81d000, 0x5c88160e, 0x59318114, - 0x09ffd410, 0x3d04201e, 0x90a2d000, 0x59a05014, - 0x8c200000, 0x5c401e00, 0x5828199f, 0x08000084, - 0x9089e03c, 0x5c801607, 0x86045000, 0x5a007090, - 0x8c4c1000, 0x1500002e, 0x90a2d000, 0x9081e018, - 0x59a05014, 0x8c200000, 0x5c401e00, 0x5828199f, - 0x92a2d000, 0x09ffd4ac, 0x0800004c, 0x00000000, - 0x5980d006, 0x8c8a5000, 0x59840c02, 0x8c97e074, - 0x09ffdc20, 0x5c801607, 0x8c880001, 0x5c901604, - 0x8c980002, 0x09ffd74c, 0x5c201e00, 0x08000018, - 0x5c801e00, 0x0bfffae4, 0x90a2d000, 0x59a05014, - 0x92a2d000, 0x5968500d, 0x346bdb58, 0x9221e014, - 0x9249e028, 0x9241e024, 0x9229e044, 0x90c7e0a0, - 0x0a000000, 0x00000000, 0x00000000, 0x00000000, - 0x8ca03000, 0x0000ed50, 0x5a003094, 0x9024200c, - 0x92a03000, 0x0000e4a0, 0x15000012, 0x5c801e08, - 0x0a000000, 0x00000000, 0x8c851000, 0x59890e07, - 0x09002c70, 0x5ca81e00, 0x5a012095, 0x59a10901, - 0x92f03000, 0x0000e488, 0x92a03000, 0x0000e484, - 0x1300005e, 0x90b03000, 0x0000e4a0, 0x5a012f00, - 0x8c803000, 0x0000b700, 0x58b8199f, 0x8ca59000, - 0x1000001e, 0x9285a010, 0x5ca81e01, 0x92bda044, - 0x5a012095, 0x8ca5a080, 0x13000026, 0x92852010, - 0x92bd2044, 0x92852090, 0x59a89015, 0x92bd20c4, - 0x5a012095, 0x8ca52100, 0x14ffffe4, 0x5c801e02, - 0x0a000000, 0x00000000, 0x00000000, 0x00000000, - 0x90a4205c, 0x5c501611, 0x5a05208a, 0x8c241000, - 0x5c381612, 0x90342028, 0x1200002e, 0x592d1010, - 0x90895000, 0x3b04601e, 0x59ec581f, 0x70974091, - 0x8c980002, 0x09ffd60c, 0x92f15000, 0x92f12024, - 0x9251205c, 0x3b01e1e6, 0x594d1004, 0x8c412024, - 0x90a12024, 0x3d0520de, 0x90a12014, 0x3d0520b6, - 0x5c801604, 0x8c8a9000, 0x09ffd218, 0x3a0421c6, - 0x90a92054, 0x90a1202c, 0x3ead001a, 0x90892040, - 0x5c801604, 0x86045000, 0x90a12030, 0x08000014, - 0x9089203c, 0x5c801604, 0x86045000, 0x90a1202c, - 0x5c301610, 0x92a12024, 0x3d0c2088, 0x90a03000, - 0x00005628, 0x90812018, 0x59a50007, 0x92a03000, - 0x00005628, 0x09ffd2ac, 0x708b1087, 0x8c800000, - 0x0b001328, 0x92f12024, 0x0a000000, 0x00000000, - 0x90892014, 0x5c801604, 0x8c900000, 0x5c981e08, - 0x09ffd550, 0x5c801e00, 0x708b1085, 0x8c280000, - 0x0b0012f8, 0x92f21000, 0x92f12014, 0x080000bc, - 0x90892040, 0x5c801604, 0x86045000, 0x5a007090, - 0x8c341000, 0x1200012e, 0x90a12030, 0x92a12024, - 0x90b12014, 0x90a92054, 0x59a58007, 0x5a056094, - 0x8c29d000, 0x1400000a, 0x592d4116, 0x90a12024, - 0x5a052085, 0x5939c105, 0x16000056, 0x90892024, - 0x5c801e00, 0x8c919000, 0x8c992050, 0x09000fc4, - 0x90a21000, 0x90a92014, 0x90892040, 0x5c801604, - 0x59ad0015, 0x59294114, 0x92a92014, 0x86045000, - 0x5a007090, 0x8c341000, 0x12ffff4a, 0x90a12030, - 0x5a052085, 0x92a21000, 0x11ffffb4, 0x3a01601e, - 0x5c801e00, 0x8c895000, 0x5c901606, 0x8c992050, - 0x09000f70, 0x5c301610, 0x90a25000, 0x90a92054, - 0x598d0005, 0x5a056091, 0x928a5000, 0x15000026, - 0x59ec581f, 0x70974091, 0x8c811000, 0x5c981e02, - 0x09ffd450, 0x92f25000, 0x92f12024, 0x08000028, - 0x8ca12020, 0xb0851000, 0x92352008, 0x59ac4105, - 0x8c8d5000, 0x5c901606, 0x92851000, 0x92ad2004, - 0x929d200c, 0x3c01fe2c, 0x0a000000, 0x00000000, - 0x90a03000, 0x00005628, 0x708b1087, 0x8c800000, - 0x59a50007, 0x92a03000, 0x00005628, 0x080011a4, - 0x90a03000, 0x00005628, 0x708b1087, 0x8c800000, - 0x59a50007, 0x92a03000, 0x00005628, 0x0b00118c, - 0x90892014, 0x5c801604, 0x8c900000, 0x5c981e02, - 0x09ffd3c0, 0x92f12014, 0x0a000000, 0x5c201e00, - 0x92241000, 0x598c4984, 0x59811010, 0x3e247ff4, - 0x0a000000, 0x00000000, 0x00000000, 0x00000000, - 0x8c086050, 0xb2c7e070, 0x92e7e080, 0x5cd81615, - 0x8caca003, 0x58e8d215, 0x8c659000, 0x5973581f, - 0x8cb76033, 0x70b5858e, 0x90a83000, 0x00005644, - 0x90b83000, 0x00005630, 0x59a85015, 0x92a83000, - 0x00005644, 0x59b5c016, 0x92b03000, 0x00005630, - 0x90ab2004, 0x5cc81613, 0x8cd51000, 0x5c181e00, - 0x8c7f6008, 0x593fde02, 0x9297e040, 0x595f4d82, - 0x90531000, 0x594d4d82, 0x5a01e089, 0x8c8a5000, - 0x1600000a, 0x5c881607, 0x92503000, 0x20000030, - 0x92883000, 0x20000060, 0x90b03000, 0x00005160, - 0x90b83000, 0x000051b0, 0x8c283000, 0x20000030, - 0x90a83000, 0x000051b4, 0x5c401611, 0x8c683000, - 0x20000004, 0x8c2000ff, 0x8ce03000, 0xffff0000, - 0x8cc003ff, 0x8c316030, 0x5a03a00f, 0x8c529d11, - 0x595ac111, 0x8cb5a001, 0x594a4111, 0x92b03000, - 0x00005160, 0x58b10096, 0x8cbde001, 0x58af0095, - 0x8ce03000, 0x00fffffc, 0x58af4395, 0x92b03000, - 0x20000004, 0x58be0097, 0x8cad7400, 0x00010000, - 0x58b70095, 0x8cc03000, 0x00ff0000, 0x58c60095, - 0x92b83000, 0x000051b0, 0x92c7e050, 0x92b03000, - 0x000051b4, 0x11000126, 0x5a00308b, 0x5942c011, - 0x16000046, 0x5962100c, 0x90a32004, 0x90531000, - 0x90a83000, 0x00005160, 0x92515000, 0x594d0d82, - 0x8cad6001, 0x595ac109, 0x92499000, 0x58a10095, - 0x92a83000, 0x00005160, 0x5a00308b, 0x92a35000, - 0x11ffffc4, 0x59b4ce08, 0x9285b400, 0x40000840, - 0x90a03000, 0x000051b0, 0x90a83000, 0x000051b4, - 0x59e0de0e, 0x58a70394, 0x92a03000, 0x50000c4c, - 0x92adb400, 0x400000c0, 0x80a03000, 0x10000008, - 0x5a022094, 0x8cb03000, 0x10000008, 0x8ca800ff, - 0x12000012, 0x80a59000, 0x58a54094, 0x3da21ff8, - 0x3a02201e, 0x59a4ce08, 0x8cad3400, 0x700000c0, - 0x5a420b81, 0x90a55000, 0x15fffff8, 0x90e7e050, - 0x59c3581f, 0x59a6010f, 0x8ca80000, 0x59b50c02, - 0x59a4ce08, 0x5a05a015, 0x8ca53400, 0x400000c0, - 0x5894839c, 0x92951000, 0x13000016, 0x59a85015, - 0x5a05a015, 0x92f51000, 0x14fffff4, 0x599cce08, - 0x59a3ce1a, 0x92a4f400, 0x400000c0, 0xb0c7e070, - 0x90e7e080, 0x0a000000, 0x3c4c6066, 0x5962100c, - 0x90ab2004, 0x59b1c108, 0x90531000, 0x594d4d82, - 0x5a05a089, 0x8c8a5000, 0x1600000a, 0x5c881616, - 0x92515000, 0x90b03000, 0x00005160, 0x59444008, - 0x5a027088, 0x8c529d11, 0x594a4111, 0x92899000, - 0x595ac111, 0x8cb5a001, 0x58a90096, 0x92b03000, - 0x00005160, 0x92ab5000, 0x16ffffa4, 0x90b83000, - 0x000051b0, 0x59b4ce08, 0x9285b400, 0x40000840, - 0x90a83000, 0x000051b4, 0x586dc98f, 0x92683000, - 0x50000c4c, 0x92adb400, 0x400000c0, 0x80a83000, - 0x10000008, 0x5a027015, 0x8cb83000, 0x10000008, - 0x8cb000ff, 0x11000012, 0x80add000, 0x58ad8095, - 0x334d7ff8, 0x59b4ce08, 0x8cb80000, 0x8cadbc17, - 0x700000c0, 0xb0255000, 0xb0255000, 0x98855000, - 0x8ca83000, 0xb0000000, 0x8cb5bc17, 0x400000c0, - 0x5a003094, 0x92ad9000, 0x5942090a, 0x8c7bf400, - 0xffffffd4, 0x15000126, 0x3d02e00e, 0x59c3581f, - 0x367e026a, 0x3b02e076, 0x3d026016, 0x5962100c, - 0x90a32004, 0x90531000, 0x594d0d82, 0x59e7de02, - 0x59a70108, 0x5a052089, 0x8c8a5000, 0x1600000a, - 0x5c881614, 0x92503000, 0x20000030, 0x90a03000, - 0x00005160, 0x8ca800ff, 0x594a4111, 0x92883000, - 0x20000060, 0x59444008, 0x8c529d11, 0x595ac111, - 0x8ca52001, 0x58ad4094, 0x92a03000, 0x00005160, - 0x92a83000, 0x20000004, 0x3b522092, 0x59ecce08, - 0x8c203000, 0x10000008, 0x8c9000ff, 0x8c383000, - 0x00003fff, 0x8c303000, 0x50000c4c, 0x8c2f7400, - 0x700000c0, 0x80a11000, 0x58a48094, 0x3355205a, - 0x5ca01e00, 0x59850005, 0x8c8f7c14, 0x400000c0, - 0x8ca36400, 0x5869c094, 0x92699000, 0xb0a41000, - 0xb0a41000, 0x98a41000, 0x90a41000, 0x8cb03000, - 0xb0000000, 0x92b45000, 0x80a11000, 0x58a48094, - 0x5a02b014, 0x5942090b, 0x8c7bf400, 0xffffffd4, - 0x11ffffc0, 0x3c523fa0, 0x3d02fefe, 0x59c3581f, - 0x317e1ef6, 0x08000154, 0x3d02e00e, 0x59e3581f, - 0x367f0132, 0x3b02e076, 0x3d026016, 0x5962100c, - 0x90a32004, 0x90531000, 0x594d0d82, 0x59c7de02, - 0x59a60108, 0x5a052089, 0x8c8a5000, 0x1600000a, - 0x5c881614, 0x92503000, 0x20000030, 0x90a03000, - 0x00005160, 0x8ca800ff, 0x594a4111, 0x92883000, - 0x20000060, 0x59444008, 0x8c529d11, 0x595ac111, - 0x8ca52001, 0x58ad4094, 0x92a03000, 0x00005160, - 0x92a83000, 0x20000004, 0x3b5220ae, 0x593e4e08, - 0x8c703000, 0x10000008, 0x8c3000ff, 0x8ce9f400, - 0x700000c0, 0x80a39000, 0x58a18094, 0x33552086, - 0x5ca01e00, 0x5925001d, 0x8c29fc14, 0x400000c0, - 0x59185003, 0x3d1e801e, 0x5c80161b, 0x8c8e5000, - 0x92efe060, 0x0bffee74, 0x5c181e00, 0x90efe060, - 0x8ce03000, 0x00003fff, 0x8ca36400, 0x586f0094, - 0x92683000, 0x50000c4c, 0xb0a11000, 0xb0a11000, - 0x98a11000, 0x90a11000, 0x8cb03000, 0xb0000000, - 0x92b15000, 0x80a39000, 0x58a18094, 0x5a02b014, - 0x5942090b, 0x8c7bf400, 0xffffffd4, 0x11ffff94, - 0x3c523f74, 0x3d02fee2, 0x59c3581f, 0x317e1ed8, - 0x59185003, 0x3d1e8016, 0x5c80161b, 0x8c8e5000, - 0x0bffedf8, 0x5c181e00, 0x8ce03000, 0x00003fff, - 0x8ca36400, 0x58a70094, 0x58a5098e, 0x92a03000, - 0x50000c4c, 0x80a03000, 0x10000008, 0x5a022094, - 0x8cb03000, 0x10000008, 0x8ca800ff, 0x13000012, - 0x80a59000, 0x58a54094, 0x3ca21ff8, 0x80a03000, - 0x10000008, 0x5a003094, 0x8cb83000, 0x10000008, - 0x8cb000ff, 0x12000022, 0x59a64e08, 0x8cad3400, - 0x700000c0, 0x90a55000, 0x80a5d000, 0x58a58094, - 0x3d053ff4, 0x59c3581f, 0x90e7e050, 0x59a6010f, - 0x90c7e040, 0x59b50c02, 0x59b81901, 0x59b58901, - 0x59a64e08, 0x5a05e096, 0x8ca53400, 0x400000c0, - 0x58ae039c, 0x92ad1000, 0x12000016, 0x59b58901, - 0x5a05e096, 0x92f51000, 0x15fffff4, 0x59ae4e08, - 0x5a00309a, 0x59a3ce1a, 0x92a57400, 0x400000c0, - 0x1200001a, 0x59185003, 0x3d1e8012, 0x5c80161b, - 0x8c8e5000, 0x0bffed04, 0xb0c7e070, 0x90e7e080, - 0x0a000000, 0x00000000, 0x00000000, 0x00000000, - 0x90a03000, 0x000051bc, 0x598c1010, 0x5990de0e, - 0x59ad0011, 0x5a04a095, 0x90203000, 0x000051b8, - 0x16000012, 0x5c801e00, 0x0a000000, 0x00000000, - 0x59a10011, 0x8c811000, 0x92a03000, 0x000051b8, - 0x92a83000, 0x000051bc, 0x09002208, 0x5983d004, - 0x5883d210, 0x0a000000, 0x00000000, 0x00000000, - 0x5c901e00, 0x8c880000, 0x58981987, 0x8c803000, - 0x88000400, 0x8cb83000, 0x000051c0, 0x80a5d000, - 0x3a052022, 0x90a41000, 0x80ade003, 0x80b5e004, - 0x59a50c08, 0x58a54094, 0x3aa5800a, 0x59905012, - 0x8c8c6001, 0x5a04e091, 0x8c842004, 0x59ba1017, - 0x16ffffcc, 0x3a04a00e, 0x5c801e00, 0x0a000000, - 0x8c500000, 0x5c201e00, 0x09000178, 0x5c481e00, - 0x8c280000, 0x5c301e00, 0x8c400000, 0x8ca03000, - 0x000055f0, 0x92f03000, 0x000055f8, 0x5c381e00, - 0x9a451000, 0x5c801e01, 0xb2203000, 0x000055e0, - 0x0a000000, 0x00000000, 0x00000000, 0x00000000, - 0x8cf03000, 0x00009f90, 0x5c98161e, 0x8cf00000, - 0x58b81987, 0x3685c00e, 0x5c801e00, 0x8404d000, - 0x8ca83990, 0x000051c0, 0x80a55000, 0x3d05200e, - 0x5c801e00, 0x8404d000, 0x80a56002, 0x8cb03910, - 0x88000400, 0x588d0091, 0x5a003092, 0x59a44e08, - 0x92a59000, 0x12000026, 0x90a59000, 0x80ad6001, - 0x59a50c08, 0x58a54094, 0x3aa44012, 0x5c801e00, - 0x8404d000, 0x00000000, 0x5c801e01, 0x8404d000, - 0x0a000000, 0x00000000, 0x00000000, 0x00000000, - 0x8cf03000, 0x00009ff8, 0x5c90161e, 0x8cf00000, - 0x58b01987, 0x3685800e, 0x5c801e00, 0x84049000, - 0x8ca83990, 0x000051c0, 0x80a55000, 0x3d05200e, - 0x5c801e00, 0x84049000, 0x90a03910, 0x88000400, - 0x80ad6001, 0x59a50c08, 0x58a54094, 0x8c800001, - 0x82a45000, 0x84049000, 0x0a000000, 0x00000000, - 0x5ca01e00, 0x8cb00000, 0x5cb81e00, 0x8ca80000, - 0x5c881e00, 0x8c900000, 0xb2a03000, 0x000055e0, - 0x5c801e00, 0x8ca03000, 0x000055f0, 0x92f03000, - 0x000055f8, 0x9a851000, 0x0a000000, 0x00000000, - 0x59084810, 0x80a03000, 0x00005380, 0x5c901e01, - 0x5a003094, 0x8297e040, 0x1200001e, 0x80a03000, - 0x00005382, 0x58a05094, 0x59a50e08, 0x92a03000, - 0x880004e0, 0x8c8003e8, 0x0b0004f0, 0x80a03000, - 0x00005250, 0x5a003094, 0x8c8fe040, 0x12000022, - 0x90a03000, 0x88000448, 0x80a83000, 0x00005251, - 0x59a50c08, 0x58a54094, 0x82a45000, 0x80a03000, - 0x00005258, 0x3a052022, 0x90a03000, 0x8800044c, - 0x80a83000, 0x00005259, 0x59a50c08, 0x58a54094, - 0x82a7e041, 0x80a7e041, 0x80a83000, 0x00005290, - 0x80b7e040, 0x90b83000, 0x000055e0, 0x5a003095, - 0x59a50e08, 0x58a58394, 0x59a5c014, 0x92a03000, - 0x000055e0, 0x12000022, 0x90a03000, 0x88000468, - 0x80a83000, 0x00005291, 0x59a50c08, 0x58a54094, - 0x82a45000, 0x80a03000, 0x00005298, 0x3a052022, - 0x90a03000, 0x8800046c, 0x80a83000, 0x00005299, - 0x59a50c08, 0x58a54094, 0x82a7e042, 0x80a03000, - 0x000052a0, 0x3a052022, 0x90a03000, 0x88000470, - 0x80a83000, 0x000052a1, 0x59a50c08, 0x58a54094, - 0x82a7e041, 0x80a7e041, 0x80afe042, 0x80b03000, - 0x000052a8, 0x80bfe040, 0x90803000, 0x000055e8, - 0x59a50e10, 0x5a003096, 0x59ad4e08, 0x58a54394, - 0x58a5c394, 0x59a40014, 0x92a03000, 0x000055e8, - 0x12000022, 0x90a03000, 0x88000474, 0x80a83000, - 0x000052a9, 0x59a50c08, 0x58a54094, 0x82a45000, - 0x80a03000, 0x000052b0, 0x3a052022, 0x90a03000, - 0x88000478, 0x80a83000, 0x000052b1, 0x59a50c08, - 0x58a54094, 0x82a7e042, 0x80a03000, 0x000052b8, - 0x3a052022, 0x90a03000, 0x8800047c, 0x80a83000, - 0x000052b9, 0x59a50c08, 0x58a54094, 0x82a7e041, - 0x80a7e041, 0x80afe042, 0x80b03000, 0x00005380, - 0x80bfe040, 0x90803000, 0x000055ec, 0x59a50e10, - 0x5a003096, 0x59ad4e08, 0x58a54394, 0x58a5c394, - 0x59a40014, 0x92a03000, 0x000055ec, 0x12000022, - 0x90a03000, 0x880004e0, 0x80a83000, 0x00005381, - 0x59a50c08, 0x58a54094, 0x82a45000, 0x80a03000, - 0x00005388, 0x3a052022, 0x90a03000, 0x880004e4, - 0x80a83000, 0x00005389, 0x59a50c08, 0x58a54094, - 0x82a7e041, 0x80a7e041, 0x80a83000, 0x00005390, - 0x80b7e040, 0x90b83000, 0x000055e4, 0x5a003095, - 0x59a50e08, 0x58a58394, 0x59a5c014, 0x92a03000, - 0x000055e4, 0x12000022, 0x90a03000, 0x880004e8, - 0x80a83000, 0x00005391, 0x59a50c08, 0x58a54094, - 0x82a45000, 0x80a03000, 0x00005398, 0x3a052022, - 0x90a03000, 0x880004ec, 0x80a83000, 0x00005399, - 0x59a50c08, 0x58a54094, 0x82a7e041, 0x80a7e041, - 0x80a83000, 0x00005468, 0x80bc5000, 0x90b03000, - 0x000055f0, 0x5a003095, 0x59a50e08, 0x58a5c394, - 0x59a58014, 0x92a03000, 0x000055f0, 0x1200001e, - 0x80a03000, 0x0000546a, 0x58a50097, 0x59a50e08, - 0x92a03000, 0x88000554, 0x8c8003e8, 0x0b0001fc, - 0x80a03000, 0x00005460, 0x3a052022, 0x90a03000, - 0x88000550, 0x80a83000, 0x00005461, 0x59a50c08, - 0x58a54094, 0x82a7e041, 0x80a7e041, 0x80a83000, - 0x00005468, 0x90b03000, 0x000055f4, 0x5a003095, - 0x59a58014, 0x92a03000, 0x000055f4, 0x12000022, - 0x90a03000, 0x88000554, 0x80a83000, 0x00005469, - 0x59a50c08, 0x58a54094, 0x82a7e041, 0x80a7e041, - 0x90a83000, 0x000055f8, 0x59a54014, 0x92a03000, - 0x000055f8, 0x0a000000, 0x00000000, 0x00000000, - 0x8cf03000, 0x0000a4e4, 0x5c98161e, 0x8cf00000, - 0x59084810, 0x90a41000, 0x90ac1000, 0x8c903000, - 0x0000ff00, 0x90b41000, 0x58a48094, 0x59850c08, - 0x58901987, 0x5a04a010, 0x59bd4c10, 0x59b58c18, - 0x1100008e, 0x8ca83990, 0x000051c0, 0x80a55000, - 0x3a05207e, 0x90a03910, 0x88000400, 0x80ad6001, - 0x59a50c08, 0x58a54094, 0x58901987, 0x5a04a010, - 0x58a50116, 0x58ad8097, 0x58a54394, 0x8ca800ff, - 0x588d4094, 0x82a07400, 0xfffffff0, 0x11000042, - 0x8cb83990, 0x000051c0, 0x80a5d000, 0x3a052032, - 0x80ade002, 0x8cb03910, 0x88000400, 0x58ad4091, - 0x59a54e08, 0x92a59000, 0x90a59000, 0x80b5e001, - 0x59a50c08, 0x58a58094, 0x3aa54012, 0x5c801e00, - 0x59084910, 0x8404d000, 0x5c801e01, 0x59084910, - 0x8404d000, 0x0a000000, 0x00000000, 0x00000000, - 0x5c801e00, 0x58981987, 0x59901901, 0x8c8800ff, - 0x8ca83000, 0x0000e4b0, 0x8cb83000, 0x88000400, - 0x8cb03000, 0x000051c0, 0x80a59000, 0x3d05200e, - 0x92955000, 0x08000014, 0x90a5d000, 0x59a50c08, - 0x58a44094, 0x92a55000, 0x59805010, 0x5a04e090, - 0x8cad6004, 0x59b91017, 0x8cb5a008, 0x16ffffcc, - 0x0a000000, 0x00000000, 0x00000000, 0x00000000, - 0x8cf03000, 0x0000a590, 0x5c88161e, 0x8cf00000, - 0x5a003090, 0x59840901, 0x14000016, 0x5ca01610, - 0x5a003094, 0x59840901, 0x13fffff4, 0x84045000, - 0x0a000000, 0x00000000, 0x00000000, 0x00000000, - 0x90acd000, 0x59a44e04, 0x8c883911, 0x00000000, - 0x59ed0111, 0x8c40007f, 0x5a02201d, 0x92a83000, - 0x50001440, 0x160000c6, 0x59a40e08, 0x8c303000, - 0x20000054, 0x8c283000, 0x20000060, 0x58201987, - 0x8c8d3400, 0x60000470, 0x92919000, 0x92215000, - 0xb0a45000, 0xb0a45000, 0xb0a45000, 0xb0a45000, - 0xb0a45000, 0xb0a45000, 0xb0a45000, 0xb0a45000, - 0xb0a45000, 0xb0a45000, 0xb0a45000, 0xb0a45000, - 0xb0a45000, 0xb0a45000, 0xb0a45000, 0xb0a45000, - 0xb0a45000, 0xb0a45000, 0xb0a45000, 0xb0a45000, - 0xb0a45000, 0xb0a45000, 0xb0a45000, 0xb0a45000, - 0xb0a45000, 0xb0a45000, 0xb0a45000, 0xb0a45000, - 0xb0a45000, 0x8c94a200, 0x8c40007f, 0x8cef7400, - 0xffffff80, 0x5a02201d, 0xb0a45000, 0xb0a45000, - 0xb0a45000, 0x11ffff64, 0x8c40003f, 0x36ea006e, - 0x92903000, 0x20000054, 0x58a81986, 0x92a83000, - 0x20000060, 0x59a40e08, 0x8ca53400, 0x60000470, - 0xb0251000, 0xb0251000, 0xb0251000, 0xb0251000, - 0xb0251000, 0xb0251000, 0xb0251000, 0xb0251000, - 0xb0251000, 0xb0251000, 0xb0251000, 0xb0251000, - 0xb0251000, 0x8c94a100, 0x59ef4115, 0xb0251000, - 0xb0251000, 0xb0a51000, 0x33ff604e, 0x92903000, - 0x20000054, 0x59a8581f, 0x92a83000, 0x20000060, - 0x59a40e08, 0x8ca53400, 0x60000470, 0xb0251000, - 0xb0251000, 0xb0251000, 0xb0251000, 0xb0251000, - 0x8c94a080, 0x59ef4115, 0xb0251000, 0xb0251000, - 0xb0a51000, 0x33bf603a, 0x92903000, 0x20000050, - 0x59a40e08, 0x8ca53400, 0x60000470, 0xb0251000, - 0xb0251000, 0xb0251000, 0x8c94a060, 0x59ef4918, - 0xb0251000, 0xb0251000, 0xb0a51000, 0x335f602e, - 0x59a40e08, 0x92903000, 0x20000048, 0x8ca53400, - 0x60000470, 0x8c94a030, 0x59ef490c, 0xb0251000, - 0xb0251000, 0xb0a51000, 0x331f6032, 0x59a40e08, - 0x8c203000, 0x20000040, 0x8c8d3400, 0x60000470, - 0x59ef4904, 0x92911000, 0x5a00f01d, 0x8c94a010, - 0xb0a45000, 0x11ffffec, 0x3a076032, 0x59840e08, - 0x8ca83000, 0x20000038, 0x8c843400, 0x6000047c, - 0x59ef4901, 0x92955000, 0x5a00309d, 0x8c94a004, - 0x90a41000, 0x15ffffec, 0x90a03000, 0x50001440, - 0x5c801612, 0x92a4d000, 0x0a000000, 0x00000000, - 0x8cf03000, 0x0000a85c, 0x5c90161e, 0x8cf00000, - 0x598c4e08, 0x8c8c7400, 0x40000440, 0xb0a45000, - 0xb2a41000, 0xb0a45000, 0x59841010, 0xb2a41000, - 0xb0a45000, 0xb2a42010, 0x84049000, 0x0a000000, - 0x8cf03000, 0x0000a894, 0x5c90161e, 0x8cf00000, - 0x3a046022, 0x59840e08, 0x8c843400, 0x40000440, - 0x598c4904, 0x5a003091, 0xb0a41000, 0x15fffff4, - 0x84049000, 0x0a000000, 0x00000000, 0x00000000, - 0x09bc0008, 0x033e04dd, 0x01f2026e, 0x0163019e, - 0x01140137, 0x00e200f8, 0x00bf00cf, 0x00a500b1, - 0x0092009b, 0x00820089, 0x0076007c, 0x006b0070, - 0x00630067, 0x005b005f, 0x00550058, 0x004f0052, - 0x004b004d, 0x00460048, 0x00420044, 0x003f0041, - 0x003c003d, 0x0039003a, 0x00360038, 0x00340035, - 0x00320033, 0x00300031, 0x002e002f, 0x002c002d, - 0x002b002c, 0x0029002a, 0x00280029, 0x00270027, - 0x00250026, 0x00240025, 0x00230024, 0x00220023, - 0x00210022, 0x00200021, 0x001f0020, 0x001f001f, - 0x001e001e, 0x001d001d, 0x001c001d, 0x001c001c, - 0x001b001b, 0x001a001b, 0x001a001a, 0x0019001a, - 0x00190019, 0x00180018, 0x00180018, 0x00170017, - 0x00170017, 0x00160017, 0x00160016, 0x00150016, - 0x00150015, 0x00150015, 0x00140014, 0x00140014, - 0x00140014, 0x00130013, 0x00130013, 0x00130013, - 0x00120012, 0x00120012, 0x00120012, 0x00110012, - 0x00110011, 0x00110011, 0x00110011, 0x00100011, - 0x00100010, 0x00100010, 0x00100010, 0x00100010, - 0x000f000f, 0x000f000f, 0x000f000f, 0x000f000f, - 0x000e000f, 0x000e000e, 0x000e000e, 0x000e000e, - 0x000e000e, 0x000e000e, 0x000d000d, 0x000d000d, - 0x000d000d, 0x000d000d, 0x000d000d, 0x000d000d, - 0x000c000d, 0x000c000c, 0x000c000c, 0x000c000c, - 0x000c000c, 0x000c000c, 0x000c000c, 0x000c000c, - 0x000b000b, 0x000b000b, 0x000b000b, 0x000b000b, - 0x000b000b, 0x000b000b, 0x000b000b, 0x000b000b, - 0x000a000b, 0x000a000a, 0x000a000a, 0x000a000a, - 0x000a000a, 0x000a000a, 0x000a000a, 0x000a000a, - 0x000a000a, 0x000a000a, 0x000a000a, 0x00090009, - 0x00090009, 0x00090009, 0x00090009, 0x00090009, - 0x00090009, 0x00090009, 0x00090009, 0x00080009, - 0x8c203000, 0x0000b200, 0x8c283000, 0x50000c20, - 0x5c301e00, 0x5c381e00, 0xb2200050, 0x8c283000, - 0x50000c24, 0xb2200090, 0x8c283000, 0x50000c28, - 0xb22000d0, 0x8c283000, 0x50000c2c, 0xb2200110, - 0x5c201e00, 0x5c281e00, 0x8c400050, 0x8c480090, - 0x8c5000d0, 0x8c580110, 0xb2222010, 0xb2226010, - 0xb222a010, 0xb222e010, 0x8c203000, 0x40000840, - 0x8c283000, 0x70000040, 0xb2222020, 0x8c203000, - 0x40000940, 0x8c283000, 0x70000140, 0xb2226020, - 0x8c203000, 0x40000a40, 0x8c283000, 0x70000240, - 0xb222a020, 0x8c203000, 0x40000b40, 0x8c283000, - 0x70000340, 0xb222e020, 0x5c281e00, 0x8c203000, - 0x50001000, 0xb2222030, 0x8c203000, 0x50001004, - 0xb2226030, 0x8c203000, 0x50001008, 0xb222a030, - 0x8c203000, 0x5000100c, 0xb222e030, 0x8c400150, - 0x8c203000, 0x0000aeb0, 0x8c2a2008, 0x9a222000, - 0x5c381605, 0x8c203000, 0x00000350, 0x90312010, - 0x3201a012, 0x5929c808, 0x9a21d000, 0x5939c808, - 0x8c203000, 0x00000380, 0x90312010, 0x3201a012, - 0x5929c808, 0x9a21d000, 0x5939c808, 0x8c203000, - 0x000003b0, 0x90312010, 0x3201a012, 0x5929c808, - 0x9a21d000, 0x5939c808, 0x8c203000, 0x0000e420, - 0x90312010, 0x3201a00e, 0x9221d000, 0x5939c808, - 0x5939c904, 0x8c2a2008, 0x9229d000, 0x5c201e00, - 0x5c281e00, 0x5c301e00, 0x5c381e00, 0xb2222030, - 0x8c4001d0, 0x8c203000, 0x0000b010, 0x90283000, - 0x00000320, 0x90303000, 0x00000324, 0xb2222000, - 0x5c201e00, 0x5c301e00, 0xb2222010, 0xb2222020, - 0x8c400210, 0x8c203000, 0x0000b7e0, 0xb2222000, - 0x8c200000, 0x9222203c, 0x8c400190, 0x8c203000, - 0x0000b900, 0xb2222000, 0x8c400250, 0x8c200050, - 0x92221000, 0x59420804, 0x92221000, 0x59420804, - 0x92221000, 0x59420804, 0x92221000, 0x59420804, - 0x8c200150, 0x92221000, 0x59420804, 0x8c2001d0, - 0x92221000, 0x59420804, 0x8c200210, 0x92221000, - 0x59420804, 0x8c200190, 0x92221000, 0x8c203000, - 0x0fffc000, 0x92203000, 0x000002f0, 0x8c203000, - 0x00003ff0, 0x92203000, 0x000002f4, 0x8c200000, - 0x92203000, 0x000002f8, 0x8c200006, 0x92203000, - 0x000002fc, 0x8c280200, 0x8c300020, 0x8c383000, - 0x0002ed50, 0x92380284, 0x5c201607, 0x59394004, - 0x923921f0, 0x59b58901, 0x3505bff0, 0x5c381e00, - 0x923921f0, 0x8c403000, 0x000002c0, 0x8c38000c, - 0x92403000, 0x0000032c, 0x8c300090, 0x92322008, - 0x592a0007, 0x922a1000, 0x5c401605, 0x8c3000d0, - 0x92322008, 0x592a0007, 0x922a1000, 0x5c401605, - 0x8c300110, 0x92322008, 0x92f22000, 0x92f03000, - 0x00000328, 0x0a000000, 0x00000000, 0x00000000, - 0x90203000, 0x00000328, 0x8c283000, 0x00000328, - 0x3201205e, 0x90312004, 0x32818010, 0x5c281604, - 0x90211000, 0x08ffffec, 0x90311000, 0x90383000, - 0x0000032c, 0x92315000, 0x92391000, 0x92203000, - 0x0000032c, 0x8c180250, 0x90292008, 0x8c3000d0, - 0x5918c804, 0x34298010, 0x5918c804, 0x32298008, - 0x5918c804, 0x8c300050, 0x9230d000, 0x0a000000, - 0x8c180250, 0x8c283000, 0x40000440, 0x8c303000, - 0x40000880, 0x8c383000, 0x50001440, 0x8c403000, - 0x60000440, 0x8c480fff, 0x90503000, 0x00005660, - 0x8c583000, 0x10000008, 0x8c603000, 0x50000c40, - 0x8c683000, 0x30000000, 0x8c703000, 0x30000060, - 0x8c780000, 0x5cf01e00, 0x90883000, 0x0000e470, - 0x8c803000, 0x000fffff, 0x92845000, 0x90845000, - 0x58840090, 0x59840901, 0x92845000, 0x35043ff2, - 0x9082d000, 0x3204200c, 0x90835000, 0x08fffff4, - 0x9020d000, 0xb0a11000, 0x84051000, 0x00000000, - 0x3203e02c, 0x8c780000, 0x90883000, 0x0000e478, - 0x8c780000, 0x90945000, 0x58801988, 0x8c94a001, - 0x92945000, 0x92803000, 0x20000004, 0x98c55000, - 0x5918c804, 0x9096201c, 0x92c92004, 0x90849000, - 0x35042040, 0x32ae5fae, 0x98c65000, 0x9096201c, - 0x90849000, 0x3504202c, 0x32ae5f9a, 0x98c65000, - 0x9096201c, 0x90849000, 0x35042018, 0x32ae5f86, - 0x98c65000, 0x9096201c, 0x90849000, 0x32043f74, - 0x98e61000, 0x31e75f6e, 0x8cd00000, 0x90de200c, - 0x8cc80078, 0x59e7411c, 0x31df1f5a, 0x8ce8389b, - 0x00000000, 0x92803000, 0x20000030, 0x59d6801d, - 0x92e83000, 0x20000060, 0x59ce411d, 0x90a4a004, - 0x5ca81e02, 0x98b62020, 0x92f49000, 0x59948808, - 0x92a03000, 0x20000038, 0x3695c008, 0x5c901616, - 0x90849000, 0x92ab9000, 0x59e7011b, 0x3204200c, - 0x31df000a, 0x36ee5fb0, 0x9296201c, 0x90de1000, - 0x90ce2018, 0x598e8c01, 0x8ce65d9b, 0x598c401b, - 0x928e1000, 0x8082d000, 0x31443ffe, 0x59d68908, - 0xb0835000, 0x5a06a800, 0xb0a35000, 0x59ef0808, - 0x9a871000, 0x59e74808, 0x9a975000, 0x59ef0808, - 0x9aa71000, 0x59e74808, 0x9ab75000, 0x15ffffc8, - 0x08fffea0, 0x00000000, 0x00000000, 0x00000000, - 0x98d55000, 0x90c80284, 0x5918c804, 0x8cc00078, - 0x3206be80, 0x32067e7e, 0x5cb81e00, 0x589bd09a, - 0x5897d21a, 0x59d4ce03, 0x31d60046, 0x59bdc01a, - 0x92f55000, 0x92903000, 0x20000030, 0x92d03000, - 0x20000060, 0x59aa1015, 0x92de61f4, 0x59c6011a, - 0x92d65000, 0x36ad8008, 0x90a92014, 0x98d55000, - 0x90ce61f0, 0x3206a008, 0x35067fb4, 0x8ca03000, - 0x0000b010, 0xb2a11000, 0x90a00284, 0x90b51000, - 0x8082d000, 0x34859ffa, 0x59bdc116, 0x8ce51000, - 0xb0835000, 0x59ef0810, 0xb0c35000, 0x59b58908, - 0xb2871000, 0x59e74810, 0xb2c75000, 0x3505bfe6, - 0x888d200a, 0x8c9000ff, 0x80852007, 0x588c8091, - 0x598c4e01, 0x90d521f0, 0x8c8c7400, 0x0000a8a0, - 0x5884088f, 0x888c5000, 0x92f521f0, 0x8a8d200a, - 0x352c20ee, 0x8c900050, 0x3244607c, 0x90b03000, - 0x00000328, 0x90ad1000, 0x909da004, 0x3205a012, - 0x32acc060, 0x90b59000, 0x08fffff0, 0x90b03000, - 0x0000032c, 0x3205a052, 0x92ada004, 0x90859000, - 0x90883000, 0x00000328, 0x92803000, 0x0000032c, - 0x928d9000, 0x92b03000, 0x00000328, 0x8c900250, - 0x908da008, 0x8c8000d0, 0x59948804, 0x348c0010, - 0x59948804, 0x328c0008, 0x59948804, 0x928c9000, - 0x9095a008, 0x90c03000, 0x00005670, 0x9084a018, - 0x59c60801, 0x92c03000, 0x00005670, 0x3504202c, - 0x8c803000, 0x0000bfc8, 0x92a4a018, 0x8c880050, - 0x9284a000, 0x358c802a, 0x8c803000, 0x0000bfc0, - 0x9284a000, 0x08000018, 0x908c21f0, 0x3204600c, - 0x5c801611, 0x08fffff4, 0x92a421f0, 0x5ca0161a, - 0x3505febc, 0x92a00284, 0x08fffcc8, 0x8c900210, - 0x9084a03c, 0x35043fd6, 0x8c983000, 0x0000b7f0, - 0x92a4a03c, 0x929ca000, 0x08ffffd4, 0x00000000, - 0x90883000, 0x1000000c, 0x8c900030, 0x348c85d6, - 0x98c19000, 0xb0a03000, 0x000002f0, 0x58ce4089, - 0x320665c2, 0x58850098, 0x58958098, 0x350424ee, - 0x588d4098, 0x59948417, 0x588c8391, 0x8cd83991, - 0x0000ed50, 0x9896e010, 0x371e252a, 0x84049000, - 0xb0803000, 0x00000300, 0x8c841d11, 0x90941000, - 0x3504a01c, 0x90803000, 0x000056a0, 0x59840801, - 0x92803000, 0x000056a0, 0x08000428, 0x90e6e03c, - 0x598c4801, 0x92c49000, 0x588cc091, 0x92f41000, - 0x8c9ca008, 0x90871000, 0x92883000, 0x00000304, - 0x9296e018, 0x929ee01c, 0x35042028, 0x5c80161c, - 0x090006a0, 0x90871000, 0x35042018, 0x90872028, - 0x908c1000, 0x598c4801, 0x928c1000, 0x080003b4, - 0x908f2018, 0x59840901, 0x8c8c5d90, 0x909ee01c, - 0x90945000, 0x90b46004, 0x90bee034, 0x92871000, - 0x9294d000, 0x599cc808, 0x929ee01c, 0x59a5cc02, - 0x8c903000, 0x0000ba70, 0x5c981619, 0x8cb83000, - 0xffffffff, 0x59864e04, 0x9a96e010, 0x598e4e02, - 0x08000768, 0x00000000, 0x00000000, 0x00000000, - 0x9081d000, 0x8c883000, 0xc704dd7b, 0x358c0196, - 0x90803000, 0x00005664, 0x90a6e014, 0x8c983000, - 0x0000ffff, 0x90883000, 0x00005674, 0x59840014, - 0x8c8c6001, 0x92803000, 0x00005664, 0x92883000, - 0x00005674, 0x5894c092, 0x9886e018, 0xa0a6e030, - 0x598c4110, 0x598c4908, 0x598c4c03, 0x928c2004, - 0x59a4080c, 0x8c9c5000, 0x36954028, 0x92ad1000, - 0x59948115, 0x8ca52008, 0x36958018, 0x92b51000, - 0x59948116, 0x8ca52008, 0x599cc901, 0x08ffffec, - 0x92951000, 0x320ce014, 0x8ca52008, 0x92f51000, - 0x08000008, 0x00000000, 0x90983000, 0x00000310, - 0x598c4802, 0x9094d000, 0x3504a024, 0x90a03000, - 0x0000e478, 0x8ca80001, 0x58b01988, 0x92ad1000, - 0x92b03000, 0x20000004, 0x08ffffdc, 0x598c4c01, - 0xb0a03000, 0x00000300, 0x59ad8801, 0x92851d16, - 0x58b54097, 0x92b03000, 0x00000308, 0x5a8c4b01, - 0xb0a41000, 0x59840810, 0x92903000, 0x20000040, - 0x59948810, 0xb2a39000, 0x15ffffe4, 0x90883000, - 0x00000314, 0x9084e004, 0x92f4d000, 0x599cc808, - 0x5a04e011, 0x1300000c, 0x90983000, 0x00000318, - 0x5c881e02, 0x92803000, 0x20000038, 0x928b9000, - 0x92983000, 0x00000310, 0x8c7be001, 0x3123e028, - 0x8c780000, 0x90883000, 0x0000e478, 0x58801988, - 0x90945000, 0x8c94a001, 0x92803000, 0x20000004, - 0x92945000, 0x5a066800, 0x92f6e014, 0x8c803000, - 0x0000b250, 0x9286e010, 0x15fffd8a, 0x08fffd34, - 0x8c983000, 0x0000ffff, 0x5894c092, 0x908ee014, - 0x59948c02, 0x8c803a11, 0x00000000, 0x598c4e02, - 0x59840111, 0x3394000c, 0x5984090c, 0x3194001a, - 0x90803000, 0x0000566c, 0x59840801, 0x92803000, - 0x0000566c, 0x90883000, 0x00005678, 0x5ce81e00, - 0x598c4801, 0x92883000, 0x00005678, 0x08000004, - 0x90803000, 0x00005668, 0x90a6e014, 0x59840014, - 0x92803000, 0x00005668, 0x9886e018, 0x598c4110, - 0x598c4908, 0x598c4c03, 0x928c2004, 0x598c4804, - 0x90983000, 0x00000310, 0x598c4c01, 0xb0a03000, - 0x00000300, 0x59ad8801, 0x92851d16, 0x58b54097, - 0x92b03000, 0x00000308, 0x9094d000, 0x3504a024, - 0x90a03000, 0x0000e478, 0x8ca80001, 0x58b01988, - 0x92ad1000, 0x92b03000, 0x20000004, 0x08ffffdc, - 0x5a8c4b01, 0x92903000, 0x20000040, 0x59948810, - 0xb0a41000, 0x59840810, 0xb2a39000, 0x15ffffe4, - 0x90883000, 0x00000314, 0x9084e004, 0x92f4d000, - 0x599cc808, 0x5a04e011, 0x1300000c, 0x90983000, - 0x00000318, 0x5c881e0a, 0x92983000, 0x00000310, - 0x92803000, 0x20000038, 0x928b9000, 0x8c7be001, - 0x3123e028, 0x8c780000, 0x90883000, 0x0000e478, - 0x58801988, 0x90945000, 0x8c94a001, 0x92945000, - 0x92803000, 0x20000004, 0x92f6e014, 0x8c803000, - 0x0000b6c0, 0x300e200c, 0x8c803000, 0x0000b250, - 0x9286e010, 0x31276012, 0x59ef4904, 0xb0815000, - 0x36277ff8, 0x32076010, 0x90815000, 0x59ef4901, - 0x08fffff4, 0x32067b8c, 0x08fffbd8, 0x00000000, - 0xb0803000, 0x00000300, 0x908ee018, 0x928c1d12, - 0x59948801, 0x5894c092, 0x92903000, 0x00000308, - 0x8c803000, 0x0000b6c0, 0x92f6e014, 0x9286e010, - 0x08000010, 0x00000000, 0x00000000, 0x00000000, - 0x90803000, 0x00005668, 0x59840019, 0x92803000, - 0x00005668, 0x300e207c, 0x8c883000, 0x0000b250, - 0x90803000, 0x00005680, 0x928ee010, 0x8c842001, - 0x92803000, 0x00005680, 0x08000058, 0x00000000, - 0x90803000, 0x00005614, 0x59840019, 0x92803000, - 0x00005614, 0x0800003c, 0x8ca03000, 0x0ff00000, - 0x58a50098, 0x8c803000, 0x00005608, 0x58a58114, - 0x3505200c, 0x8c803000, 0x00005610, 0x908c1000, - 0x598c4019, 0x928c1000, 0x08000008, 0x00000000, - 0xb0815000, 0x5a066801, 0xb0815000, 0x59ce4901, - 0xb0815000, 0x14ffffec, 0x08fffa98, 0x00000000, - 0x08ffffe0, 0x00000000, 0x00000000, 0x00000000, - 0x5c80161b, 0x5c881618, 0x5c901619, 0xb2a00020, - 0xb2c00030, 0xb2e00040, 0x09ffd6f8, 0xb0e00040, - 0xb0c00030, 0xb0a00020, 0x08fffa58, 0x00000000, - 0x5c80161b, 0x5c881618, 0x5c901619, 0xb2a00020, - 0xb2c00030, 0xb2e00040, 0x09ffdca8, 0xb0e00040, - 0xb0c00030, 0xb0a00020, 0x08fffa28, 0x00000000, - 0x5918c804, 0x08fff6bc, 0x00000000, 0x00000000, - 0x90a03000, 0x50001000, 0xb2a00020, 0xb2c00030, - 0xb2e00040, 0x8c803000, 0x50000c20, 0x908c1000, - 0x35047ffe, 0x9081203c, 0x80bc2007, 0x58bdc88f, - 0x808c2006, 0x88942004, 0x5c981e00, 0x88c4200a, - 0x8ca00000, 0x5ca81e00, 0x92c03000, 0x50001000, - 0x8cb42010, 0x90842000, 0x3225e00c, 0x09ffd304, - 0x08000008, 0x09ffdecc, 0x8c803000, 0x50000c20, - 0x908c1000, 0x35047ffe, 0xb0e00040, 0xb0c00030, - 0xb0a00020, 0x92a03000, 0x50001000, 0x9099203c, - 0x908ce1f4, 0x5c901e02, 0x92883000, 0x20000038, - 0x92939000, 0x9084e004, 0x8c883000, 0xf0000000, - 0x58840091, 0x32042032, 0x8c7be001, 0x3123e028, - 0x8c780000, 0x90883000, 0x0000e478, 0x58801988, - 0x90945000, 0x8c94a001, 0x92945000, 0x92803000, - 0x20000004, 0x9094e1f0, 0x90880284, 0x5a04a800, - 0x928ce1f0, 0x92980284, 0x9291203c, 0x15fffef6, - 0x8c803000, 0x0000b7e0, 0x92812000, 0x08fffee4, - 0x90903000, 0x0000e470, 0x90803000, 0x0000e408, - 0x909c9000, 0x8c180250, 0x599cc801, 0x908c1000, - 0x929c9000, 0x3204757c, 0x92503000, 0x00005660, - 0xb2c00030, 0xb2e00040, 0x09ff9fb8, 0xb0e00040, - 0xb0c00030, 0x08fff55c, 0x00000000, 0x00000000, - 0x9024201c, 0x5c181610, 0x90811000, 0x320420cc, - 0x8c600078, 0x9830e000, 0x8c400000, 0x9028e00c, - 0x5931c106, 0x312980b6, 0x8c383885, 0x00000000, - 0x92803000, 0x20000030, 0x59420007, 0x92383000, - 0x20000060, 0x59630107, 0x90492004, 0x9850e020, - 0x92f11000, 0x59210808, 0x92483000, 0x20000038, - 0x3622c008, 0x5c20160a, 0x5c581e02, 0x90811000, - 0x92583000, 0x30000060, 0x59318105, 0x3431400e, - 0x3204200a, 0x363b1fac, 0x9220e01c, 0x9028d000, - 0x9030e018, 0x593a0c01, 0x8c319d85, 0x5939c005, - 0x9238d000, 0x8c203000, 0x10000008, 0x8c483000, - 0x30000000, 0x80811000, 0x31243ffe, 0x59420904, - 0xb0625000, 0x9a619000, 0x59318808, 0x9a719000, - 0x59318808, 0x35023fe0, 0x0a000000, 0x00000000, - 0x90183000, 0x0000e474, 0x90283000, 0x0000e478, - 0x8c300001, 0x58381988, 0x9020d000, 0x3001201a, - 0x92f03000, 0x20000004, 0x92315000, 0x92383000, - 0x20000004, 0x0a000000, 0x00000000, 0x00000000, - 0xb0a6d000, 0x599cc019, 0x8c883919, 0x00000000, - 0x929ee014, 0x59864e04, 0x92b9d000, 0x59e40111, - 0x370e2132, 0x5cc81e00, 0x8ce80000, 0x36e50010, - 0x59ef0114, 0x3205208e, 0x8ce51000, 0x8ca80030, - 0x59a5011c, 0x5cb81615, 0x33e54008, 0x5cb8161c, - 0x5995ce02, 0x92b03000, 0x20000054, 0x598d4117, - 0x92b83000, 0x20000060, 0x8c803000, 0x0000bae8, - 0x59b58012, 0x84041c11, 0xb0821000, 0xb0821000, - 0xb0821000, 0xb0821000, 0xb0821000, 0xb0821000, - 0xb0821000, 0xb0821000, 0xb0821000, 0xb0821000, - 0xb0821000, 0x59e70117, 0xb0821000, 0x34073f98, - 0x35076012, 0x90b9d000, 0xb2a6e000, 0x08fff6d4, - 0x9096e01c, 0x908ee018, 0x90803000, 0x0000e48c, - 0x59948111, 0x339419ec, 0x90e6e040, 0x908ee014, - 0x8c900555, 0x90871000, 0x318c99da, 0x35042028, - 0x5c80161c, 0x09fffdec, 0x90871000, 0x35042018, - 0x90872028, 0x908c1000, 0x598c4801, 0x928c1000, - 0x08fff9b0, 0x908f2018, 0x59840901, 0x8c8c5d90, - 0x909ee01c, 0x90945000, 0x90b46004, 0x90bee038, - 0x92871000, 0x9294d000, 0x599cc808, 0x929ee01c, - 0x59a5cc02, 0x8ce75000, 0x08fffee0, 0x00000000, - 0x59ce4901, 0x8ce80000, 0x36652108, 0x5cb81e0a, - 0x8ce80000, 0x36bd0010, 0x59edc114, 0x8cbd1000, - 0x32052052, 0x8c903897, 0x00000000, 0x92b03000, - 0x20000054, 0x59b48016, 0x92b83000, 0x20000060, - 0x3125e016, 0x5a05e808, 0xb0821000, 0x59bdc904, - 0x16fffff4, 0x310de01a, 0x90821000, 0x3115e012, - 0x90821000, 0x311de00a, 0x90821000, 0x32076090, - 0x9096e01c, 0x908ee018, 0x90803000, 0x0000e48c, - 0x59948111, 0x3494000c, 0x59ef4802, 0x08fff8e4, - 0x90e6e040, 0x90871000, 0x3504202c, 0x5c80161c, - 0x09fffcf0, 0x90871000, 0x3504201c, 0x90872028, - 0x908c1000, 0x598c4801, 0x928c1000, 0x59ef4802, - 0x08fff8b0, 0x908f2018, 0x59840901, 0x8c8c5d90, - 0x909ee01c, 0x90945000, 0x90b46004, 0x90bee038, - 0x92871000, 0x9294d000, 0x599cc808, 0x929ee01c, - 0x59a5cc02, 0x5cb8161d, 0x08ffff18, 0x98915000, - 0x08fff670, 0x00000000, 0x00000000, 0x00000000, - 0x92b03000, 0x20000048, 0xb0821000, 0xb0821000, - 0xb0821000, 0x08fff64c, 0x00000000, 0x00000000, - 0x90955000, 0x8c98004a, 0x8c800054, 0x3394d506, - 0xb0c12020, 0x8ce00000, 0x59a40112, 0x92d61000, - 0x8c883914, 0x00000000, 0x59850e04, 0x92db1000, - 0x8cd80078, 0x59ec0111, 0x8ca00000, 0x59ef411b, - 0x34bec030, 0x8c90391b, 0x00000000, 0x59e7001b, - 0x92b03000, 0x20000030, 0x59bdc11b, 0x92d83000, - 0x20000060, 0x59b58012, 0x90a2d000, 0x0800004c, - 0x3205e01e, 0x92b03000, 0x20000030, 0x59dec117, - 0x92b83000, 0x20000060, 0x59e70017, 0x98812010, - 0x5a840b80, 0x90a2d000, 0x1200006c, 0x98b45000, - 0x8c8c6008, 0x59bdc803, 0x9a812010, 0x59bdcc02, - 0x3506ff90, 0x90a2d000, 0x36652028, 0x90a2d000, - 0x8cd80078, 0x35073ff4, 0x36df5f74, 0x90db1000, - 0x9ab12008, 0x92d9202c, 0x08fff438, 0x00000000, - 0xb0865000, 0x59a5090c, 0x8c52a001, 0xb0865000, - 0x59e7090c, 0xb0865000, 0x36653fe8, 0x90a2d000, - 0x08ffffb8, 0x36652014, 0x90a2d000, 0x36673ff8, - 0x32a7002e, 0x08fffff0, 0xb0865000, 0x59e7090c, - 0xb0865000, 0x8c52a001, 0x59a5090c, 0xb0865000, - 0x36653fe8, 0x90a2d000, 0x08ffffcc, 0x58d68b82, - 0x33572030, 0xb0865000, 0x8ca03000, 0x4fffffff, - 0xb0865000, 0x58a50099, 0xa0865000, 0x92f51000, - 0x8c52a001, 0x5ca01e0a, 0x92d61000, 0x08000038, - 0x59a2911c, 0x92d61000, 0x3127201a, 0x59e70904, - 0xb0865000, 0x3127200e, 0x59e70904, 0xb0865000, - 0x3117200e, 0x59e70902, 0x98865000, 0x310f200a, - 0x90865000, 0x59a50e02, 0x8c903000, 0x4fffffff, - 0x598a9e02, 0x8c803000, 0x0000bec0, 0x598c4114, - 0x58a64092, 0x59844010, 0x90992018, 0x84041000, - 0x92f51000, 0x92f51000, 0x92f51000, 0x92f51000, - 0x92f51000, 0x92f51000, 0x92f51000, 0x92f51000, - 0x92f51000, 0x92f51000, 0x8884e004, 0x59528801, - 0x92851000, 0x90831000, 0x908ce1f4, 0x58801510, - 0x92883000, 0x20000038, 0x5c901e02, 0x92851000, - 0x92939000, 0x9084e004, 0x8c883000, 0xf0000000, - 0x58840091, 0x32042032, 0x8c7be001, 0x3123e028, - 0x8c780000, 0x90883000, 0x0000e478, 0x90945000, - 0x8c94a001, 0x58801988, 0x92945000, 0x92803000, - 0x20000004, 0x9094e1f0, 0x90880284, 0x5a04a800, - 0x92980284, 0x928ce1f0, 0x15000034, 0x90903000, - 0x0000e470, 0x8c803000, 0x0000c020, 0x909c9000, - 0x8c883000, 0x00200000, 0x92f12018, 0x598c4013, - 0x92812000, 0x92892008, 0x08fff268, 0x888ca00a, - 0x8884e00a, 0x32844034, 0x8c803000, 0x0000bfc0, - 0x92912018, 0x92812000, 0x08fff248, 0x00000000, - 0x90855000, 0x3504323c, 0x8c803000, 0x0000bcf0, - 0x90912018, 0x92812000, 0x90992030, 0x888ca00a, - 0x90e4a000, 0x59e81901, 0x928cd000, 0x8c880018, - 0x8084a006, 0x598c4012, 0x98b4a010, 0x59840901, - 0x8cbde003, 0x92912018, 0x59bdcc02, 0x9a812010, - 0x9ae12028, 0x9ab12008, 0x08fffcd8, 0x00000000, - 0x90903000, 0x0000e470, 0x909c9000, 0x359d91d4, - 0x90812028, 0x09ffed6c, 0x8c803000, 0x0000b200, - 0x92812000, 0x08fff1bc, 0x00000000, 0x00000000, - 0x5c901611, 0x8c880000, 0x08000308, 0x00000000, - 0x090016a0, 0x0900000c, 0x080011e8, 0x00000000, - 0x09000580, 0x0b000154, 0x09000378, 0x080003c4, - 0x0000c080, 0x00000000, 0x00000000, 0x00000000, - 0x0000d7f0, 0x0000d810, 0x0000d830, 0x0000d850, - 0x0000d870, 0x0000d890, 0x0000d8b0, 0x0000d8d0, - 0x0000d8f0, 0x0000d910, 0x0000d930, 0x0000d7f0, - 0x5a003091, 0x8c201400, 0x00000000, 0x8ca03000, - 0x0000c0cc, 0x59210114, 0x1200000a, 0x335c2026, - 0x85f13400, 0x0000d7d8, 0x5999981f, 0x8cecd000, - 0x92ec1000, 0x8c813400, 0x0000c260, 0x0a000000, - 0x8ca13400, 0x0000c2a0, 0x5a052091, 0x8c903910, - 0x0000e6c0, 0x90bc9000, 0x5c801610, 0x15000016, - 0x8c893400, 0x0000d7f0, 0x08000034, 0x00000000, - 0x8ca13400, 0x0000c280, 0x3d8d0026, 0x8ca13400, - 0x0000c080, 0x90a93d10, 0x0000c090, 0x90b51000, - 0x59ad0015, 0x59ad4116, 0x8c8d6000, 0x8ca13400, - 0x0000d7f0, 0x5a052097, 0x928c9000, 0x5c801610, - 0x15000012, 0x8cb93400, 0x0000c2a0, 0x08000030, - 0x8ca13400, 0x0000c080, 0x90a93d10, 0x0000c090, - 0x90b51000, 0x59ad0015, 0x59ad4116, 0x8cad6000, - 0x3dbd400e, 0x8cb93400, 0x0000c280, 0x5c801617, - 0x0a000000, 0x00000000, 0x00000000, 0x00000000, - 0x8cf01400, 0x00000094, 0x5c98161e, 0x8cf00000, - 0x5c881e00, 0x8ca01400, 0x00000000, 0x8ca83000, - 0x0000c1dc, 0x59a50115, 0x8cbd3400, 0x0000c080, - 0x8c900000, 0x8cb03000, 0x0000e6c0, 0x8ca53400, - 0x0000c090, 0x9085d000, 0x90ad1000, 0x59adc015, - 0x59ad4110, 0x59ac8015, 0x92ad9000, 0x90ad2004, - 0x59adc015, 0x59ad4110, 0x59ac8015, 0x92ada004, - 0x90ad2008, 0x5988d011, 0x5a02f091, 0x59adc015, - 0x59ad4110, 0x59ac8015, 0x92ada008, 0x59b31016, - 0x8ca5200c, 0x16ffffb4, 0x8404d000, 0x0a000000, - 0x8cf01400, 0x0000000c, 0x5c80161e, 0x8cf00000, - 0x84041000, 0x0a000000, 0x00000000, 0x00000000, - 0x8cf01400, 0x0000000c, 0x5c80161e, 0x8cf00000, - 0x84041000, 0x0a000000, 0x00000000, 0x00000000, - 0x8cf01400, 0x0000000c, 0x5c80161e, 0x8cf00000, - 0x84041000, 0x0a000000, 0x00000000, 0x00000000, - 0x5c381610, 0x0b0014b4, 0x5c281610, 0x0b0014ec, - 0x59321005, 0x0800001c, 0x9221600c, 0x5c801606, - 0x0b0016f8, 0x90817d04, 0x00000010, 0x86041000, - 0x5c801606, 0x0b0016a4, 0x90a1600c, 0x59250901, - 0x3e013fd8, 0x59821005, 0x0b0016d0, 0x5c801605, - 0x0b001688, 0x90216004, 0x3a012022, 0x90a12020, - 0x5c801605, 0x92a16004, 0x0b0016b0, 0x5c801604, - 0x09000390, 0x08ffffd8, 0x5c801607, 0x0b00172c, - 0x5c801607, 0x0800118c, 0x00000000, 0x00000000, - 0x5c801e0a, 0x090002ec, 0x5c801e01, 0x08001174, - 0x8cf01400, 0x00000084, 0x5a04a807, 0x8cef9000, - 0x5899d210, 0x8cf00000, 0x59a44e18, 0x8cb41000, - 0x59ad0c08, 0x1300004e, 0x5a042013, 0x8c9ce007, - 0x58a54394, 0x1200001c, 0x5a04e016, 0x828d9000, - 0x59948901, 0x8cb5a001, 0x15fffff0, 0x333ca02a, - 0x59ad0c10, 0x58a54394, 0x5ca81614, 0x5a04a80f, - 0x9aa59000, 0x59948908, 0x8cb5a008, 0x14fffff0, - 0x3304a018, 0x5a04a801, 0x828d9000, 0x59948901, - 0x8cb5a001, 0x15fffff0, 0x84075000, 0x0a000000, - 0x8c800090, 0x0b001324, 0x5a003090, 0x8c241000, - 0x5c801610, 0x15000016, 0x0b0013d0, 0x90841000, - 0x0a000000, 0x00000000, 0x92f42004, 0x0b00155c, - 0x92f1200c, 0x59821004, 0x0b001550, 0x5c801e00, - 0x0a000000, 0x00000000, 0x00000000, 0x00000000, - 0x5c281618, 0x8c086040, 0x92cfe070, 0x9ad7e078, - 0x5981de04, 0x0b0012e4, 0x5a003090, 0x8c241000, - 0x5c801610, 0x1500001e, 0x0b001370, 0x90841000, - 0x5cc01605, 0x90cfe070, 0x98d7e078, 0x0a000000, - 0x5880198a, 0x0900044c, 0x92811000, 0x5c401610, - 0x8c480000, 0x92812008, 0x5c501610, 0x8c800000, - 0x5c581e01, 0x92492004, 0x9259200c, 0x0b00154c, - 0x59a41004, 0x92851000, 0x5cc01610, 0x8c81201c, - 0x92f12018, 0x58c8198a, 0x8cd00000, 0x92f7e044, - 0x92cd2004, 0x92f7e048, 0x0b0014a0, 0x92f7e04c, - 0x9837e048, 0x5c801e01, 0x92f12024, 0x9a312028, - 0x0b001508, 0x92812034, 0x09001118, 0x8ca12030, - 0x5a003090, 0x98651000, 0x5c801610, 0x1200000e, - 0x8c600042, 0x08000008, 0x5c601e02, 0x5870198a, - 0x8c780000, 0x8c812040, 0x92f7e060, 0xb2651000, - 0x92f7e050, 0x92f7e064, 0x0b001440, 0x5c901e06, - 0x8c3c9000, 0x923fe054, 0x9837e060, 0x9897e050, - 0x5c801e02, 0x9a312048, 0x9a912050, 0x0b00149c, - 0x92812058, 0x090010ac, 0x5a003090, 0x8ca00000, - 0x5c801610, 0x1500000a, 0x58a0198a, 0x92a1205c, - 0x92f12060, 0x8c812064, 0x0b0013f0, 0x0b0011ec, - 0x0b001408, 0x0b0011e4, 0x90a42004, 0x92a12020, - 0x0b0011f8, 0x92812044, 0x0b0011f0, 0x8c842024, - 0x92812068, 0x0b0011c4, 0x5c201610, 0x0b0011dc, - 0x8c842048, 0x92812004, 0x0b0011b0, 0x0b00140c, - 0x5c801e00, 0x5cc01605, 0x90cfe070, 0x98d7e078, - 0x0a000000, 0x00000000, 0x00000000, 0x00000000, - 0x5980de05, 0x0b001164, 0x3d042012, 0x5c801e03, - 0x0a000000, 0x00000000, 0x8ca42030, 0x5c881e01, - 0x8c945000, 0x92f41000, 0x92a42008, 0x92942010, - 0x5c801e00, 0x0a000000, 0x00000000, 0x00000000, - 0x0000c630, 0x00000000, 0x00000000, 0x00000000, - 0x59084810, 0x5a033010, 0x8c881400, 0x00000000, - 0x8ca03000, 0x0000c650, 0x598c4114, 0x11000046, - 0x59ac0e02, 0x8cb47400, 0x0000c630, 0x90bd9000, - 0x90a47c15, 0x0000c090, 0x8cad7400, 0x0000e6c0, - 0x908d5000, 0x59a58014, 0x59a50117, 0x8ca52000, - 0x92a55000, 0x86045000, 0x5c801e00, 0x0a000000, - 0x85f47400, 0x0000d7d8, 0x5991981f, 0x8c9c9000, - 0x929c1000, 0x59801901, 0x0a000000, 0x00000000, - 0x5c201610, 0x090000bc, 0x90812010, 0x09000f14, - 0x90812018, 0x3a04200a, 0x09000198, 0x90812008, - 0x3a042012, 0x90a1200c, 0x371d200a, 0x09000744, - 0x90a1201c, 0x3a05200e, 0x59871004, 0x0b0012bc, - 0x0b001098, 0x3a24006e, 0x0b001090, 0x8c842024, - 0x3a240062, 0x0b001084, 0x8c842048, 0x3d24001e, - 0x08000050, 0x00000000, 0x90a12020, 0x92a55000, - 0x09000700, 0x08000034, 0x0b001040, 0x0b00125c, - 0x0b001038, 0x59a91010, 0x08000018, 0x00000000, - 0x90855000, 0x3a811fd6, 0x90a55000, 0x8cad2020, - 0x90a55000, 0x3d053fec, 0x0b001010, 0x0b00126c, - 0x5c801e00, 0x0a000000, 0x00000000, 0x00000000, - 0x5a003090, 0x8c241000, 0x5c301e00, 0x15000016, - 0x090000f0, 0x5c801e00, 0x0a000000, 0x00000000, - 0x90a4200c, 0x8ce80083, 0x58a74094, 0x3d05201e, - 0x0b001028, 0x5ce81e09, 0x8c9f5000, 0x929c1000, - 0x59801901, 0x0a000000, 0x59871010, 0x0b0011cc, - 0x592a1004, 0x90895000, 0x3a046086, 0x90911000, - 0x3a94407e, 0x90a1200c, 0x5a052f09, 0x90812010, - 0x5c801610, 0x10000036, 0x59948111, 0x09000ec4, - 0x90a11000, 0x90a95000, 0x59a50115, 0x3a85003a, - 0x90a1200c, 0x59301901, 0x58a50985, 0x92a1200c, - 0x08000024, 0x00000000, 0x90891000, 0x90912004, - 0x0b001128, 0x59881110, 0x90812010, 0x5c901e01, - 0x09000e10, 0x90a1200c, 0x90a92008, 0x92f12004, - 0x58a50e09, 0x92a1200c, 0x92a91000, 0x59871004, - 0x0b001178, 0x5c801606, 0x0a000000, 0x00000000, - 0x08000e20, 0x00000000, 0x00000000, 0x00000000, - 0x0b000ef8, 0x0b001114, 0x0b000ef0, 0x90242004, - 0x5a003084, 0x8c280000, 0x5c801610, 0x12000022, - 0x5c801604, 0x09fffedc, 0x59901901, 0x3a84800a, - 0x59285005, 0x90212020, 0x3d013fe8, 0x0b000ebc, - 0x0b001118, 0x5c801605, 0x0a000000, 0x00000000, - 0x3d042012, 0x5c801e00, 0x0a000000, 0x00000000, - 0x90203000, 0x0000e6f0, 0x5983d010, 0x5a003084, - 0x582bd210, 0x8ca80000, 0x1200001e, 0x08000010, - 0x5ca81604, 0x90212004, 0x3a01200e, 0x90a1200c, - 0x34a15ff0, 0x3a01205e, 0x5a003095, 0x90a12004, - 0x5c801610, 0x15000016, 0x92a03000, 0x0000e6f0, - 0x0800000c, 0x00000000, 0x92a56004, 0x90a9200c, - 0x8ca16020, 0x8c903000, 0xffffffff, 0x5c981612, - 0x5a056014, 0x92992004, 0x5c801610, 0x1100000e, - 0x5d801604, 0x0900044c, 0x59841004, 0x0a000000, - 0x90a83000, 0x0000e6f4, 0x3a0560da, 0x90a56004, - 0x8c983000, 0xffffffff, 0x3aa4c0ca, 0x90a5600c, - 0x59294114, 0x8c815000, 0x09000b78, 0x3a042106, - 0x8c903000, 0xffffffff, 0x3a8480fa, 0x90203000, - 0x0000e6f0, 0x90a03000, 0x0000e6f4, 0x5a003084, - 0x8ca80000, 0x5c801610, 0x1200001a, 0x3a250016, - 0x5ca81604, 0x90212004, 0x3a01200a, 0x3d251ff4, - 0x3d012022, 0x0b000df4, 0x5991d81f, 0x8c9c9000, - 0x929c1000, 0x5c801e04, 0x09fffc48, 0x08fffed8, - 0x5a003095, 0x90a12004, 0x5c801610, 0x15000016, - 0x92a03000, 0x0000e6f0, 0x0800000c, 0x00000000, - 0x92a56004, 0xb0a11000, 0x59841004, 0x8ca83000, - 0xffffffff, 0x598dc005, 0x8cbc5000, 0x9aa11000, - 0x92b12008, 0x9289200c, 0x0a000000, 0x00000000, - 0x59841005, 0x09000abc, 0x3a04204a, 0x8c983000, - 0xffffffff, 0x3a84c03e, 0x922c200c, 0x90a03000, - 0x0000e6f4, 0x8c403000, 0xacdbadcb, 0x8c483000, - 0xffffffff, 0x5c581605, 0x9a441000, 0x92803000, - 0x0000e6f4, 0x92a42008, 0x59841010, 0x0a000000, - 0x08fffe34, 0x00000000, 0x00000000, 0x00000000, - 0x5a003090, 0x8c441000, 0x5c801610, 0x1500000e, - 0x5c801611, 0x08fffe0c, 0x3d046012, 0x09000364, - 0x5c801e00, 0x0a000000, 0x592c0910, 0x90a15000, - 0x8c983000, 0xacdbadcb, 0x3da4c01a, 0x90a43400, - 0xfffffff4, 0x8ce83000, 0xffffffff, 0x3aa7401e, - 0x0b000cd8, 0x59e9d81f, 0x8c9f5000, 0x929c1000, - 0x080001b4, 0x00000000, 0x90a1600c, 0x598bd011, - 0x5833d211, 0x59398114, 0x3c01e01a, 0x5c801605, - 0x8c899000, 0x0900027c, 0x5c801608, 0x0a000000, - 0x90a03000, 0x0000e6f4, 0x3d2d0032, 0x5c801607, - 0x090009c0, 0x3a042106, 0x8c983000, 0xffffffff, - 0x3a84c0fa, 0x90a1600c, 0x5c801608, 0x59a50007, - 0x92a1600c, 0x0a000000, 0x90a1600c, 0x8c253c05, - 0x00000010, 0x90a12004, 0x8ce83000, 0xffffffff, - 0x3aa740ca, 0x90b83000, 0x0000e6f0, 0x5a012097, - 0x8c800000, 0x5c801610, 0x1200001a, 0x3a05e016, - 0x5c801617, 0x90bde004, 0x3ab9000a, 0x3d05fff4, - 0x3d05e01a, 0x0b000c14, 0x59e9d81f, 0x8c9f5000, - 0x929c1000, 0x080000f0, 0x5a003090, 0x90a5e004, - 0x5c801610, 0x15000016, 0x92a03000, 0x0000e6f0, - 0x0800000c, 0x00000000, 0x92a42004, 0x90a1600c, - 0x90a83000, 0x0000e6f4, 0x90b5e00c, 0x5a05e095, - 0x8ca53c16, 0x00000010, 0x92a1600c, 0x5c801610, - 0x15000012, 0x92283000, 0x0000e6f4, 0x08000010, - 0x90a1600c, 0x922d3c05, 0x00000018, 0x90a1600c, - 0x34a1801a, 0x5c801605, 0x8c899000, 0x09000164, - 0x59841005, 0x0a000000, 0x90216008, 0x3a01210e, - 0x90a12004, 0x8c983000, 0xffffffff, 0x3aa4c0fe, - 0x90a1600c, 0x90a9200c, 0x8ca53c15, 0x00000010, - 0x34a180ea, 0x90b83000, 0x0000e6f0, 0x5a012097, - 0x8c800000, 0x5c801610, 0x1200001a, 0x3a05e016, - 0x5c801617, 0x90bde004, 0x3ab9000a, 0x3d05fff4, - 0x3d05e022, 0x0b000b24, 0x5999d81f, 0x8cecd000, - 0x92ec1000, 0x5c801e04, 0x09fff978, 0x08fffe04, - 0x90a1200c, 0x90a83000, 0x0000e6f4, 0x90b1600c, - 0x5a016095, 0x8ca53c16, 0x00000010, 0x92a1200c, - 0x5c801610, 0x15000016, 0x92203000, 0x0000e6f4, - 0x08000014, 0x00000000, 0x90a1600c, 0x92253c05, - 0x00000018, 0x5a003090, 0x90a12004, 0x5c801610, - 0x15000012, 0x92a03000, 0x0000e6f0, 0x08000008, - 0x92a42004, 0x8c983000, 0xffffffff, 0x5ce81613, - 0x8c812010, 0x92e92004, 0x59918107, 0x8c8a1000, - 0x0b0002d4, 0x5c801604, 0x8c899000, 0x09000054, - 0x59841004, 0x0a000000, 0x5c801606, 0x09fffb64, - 0x5a003090, 0x8c241000, 0x5c801610, 0x12000026, - 0x59918107, 0x8c8a1000, 0x0b00029c, 0x5c801608, - 0x090000a0, 0x5c801604, 0x0a000000, 0x00000000, - 0x08fffd30, 0x00000000, 0x00000000, 0x00000000, - 0x90ac200c, 0x8ca46020, 0x31a54076, 0x8cb47c10, - 0x00000010, 0x9285a008, 0x90a83000, 0x0000e6f4, - 0x8c903000, 0xacdbadcb, 0x5c981612, 0x929d9000, - 0x8c903000, 0xffffffff, 0x5c981612, 0x90a4200c, - 0x929da004, 0x5a042095, 0x59a50910, 0x59a50111, - 0x92a5a00c, 0x928c200c, 0x15000012, 0x92b03000, - 0x0000e6f4, 0x08000010, 0x90a5a00c, 0x92b53c16, - 0x00000018, 0x59841016, 0x08000008, 0x0a000000, - 0x3d04200a, 0x0a000000, 0x598c0910, 0x90a45000, - 0x8ce83000, 0xacdbadcb, 0x3da74122, 0x90a43400, - 0xfffffff4, 0x8c983000, 0xffffffff, 0x3da4c10e, - 0x90a83000, 0x0000e6f0, 0x3a056162, 0x90a03000, - 0x0000e6f4, 0x3a8d00be, 0x90a4600c, 0x8c853c11, - 0x00000010, 0x90a42004, 0x8ce83000, 0xffffffff, - 0x3aa740a2, 0x5a042095, 0x8c900000, 0x5cb81615, - 0x1200001a, 0x3a056016, 0x5c901617, 0x90bde004, - 0x3abc000a, 0x3d05fff4, 0x3d05e01a, 0x0b00091c, - 0x59e9d81f, 0x8c9f5000, 0x929c1000, 0x080000ac, - 0x90a4600c, 0x90a83000, 0x0000e6f4, 0x90b4200c, - 0x5a042095, 0x8ca53c16, 0x00000010, 0x92a4600c, - 0x5c801610, 0x15000016, 0x92883000, 0x0000e6f4, - 0x08000014, 0x00000000, 0x90a4600c, 0x928d3c11, - 0x00000018, 0x3d04a016, 0x90a5e004, 0x92a03000, - 0x0000e6f0, 0x0800000c, 0x90a5e004, 0x92a4a004, - 0x90846008, 0x3a042096, 0x90a42004, 0x8c983000, - 0xffffffff, 0x3aa4c086, 0x90b83000, 0x0000e6f0, - 0x3abc0016, 0x3a05e012, 0x90bde004, 0x3abc000a, - 0x3d05fff8, 0x3d05e01e, 0x0b000870, 0x5999d81f, - 0x8cecd000, 0x92ec1000, 0x5c801e04, 0x08fff6c4, - 0x90a4200c, 0x90a83000, 0x0000e6f4, 0x90b4600c, - 0x5a046095, 0x8ca53c16, 0x00000010, 0x92a4200c, - 0x5c801610, 0x15000016, 0x92803000, 0x0000e6f4, - 0x0a000000, 0x00000000, 0x90a4200c, 0x92853c10, - 0x00000018, 0x0a000000, 0x90a03000, 0x0000e6f0, - 0x92883000, 0x0000e6f0, 0x92a46004, 0x0a000000, - 0x70844090, 0x3d04200e, 0x5c801e00, 0x0a000000, - 0x09fff8e0, 0x5a003090, 0x8c241000, 0x5c801610, - 0x12000016, 0x90943400, 0xfffffffc, 0x5c881e00, - 0x0bfff358, 0x5c801604, 0x0a000000, 0x8cf01400, - 0x000000dc, 0x3b04a222, 0x5a046010, 0x8cef9000, - 0x59ac4012, 0x120000c6, 0x5a042115, 0x5898d211, - 0x11000102, 0x5a046013, 0x90b4d000, 0x58a0d210, - 0x8c9ce004, 0x150000b2, 0x5a052010, 0x59a50904, - 0x1200006c, 0x59a50808, 0x8c8c1000, 0x5cb81616, - 0x8cf00020, 0x5a948b80, 0x12000082, 0x59f78808, - 0x82bc5000, 0x59bdcc08, 0x8c8c6001, 0x358d1fe8, - 0x90bcd000, 0x5a013092, 0x8c9ce004, 0x5d8d841e, - 0x1400003e, 0x5cb01617, 0x90bcd000, 0x59948984, - 0x928d1000, 0x59a50804, 0x08ffffdc, 0x59948984, - 0x90b4d000, 0x599cc804, 0x928d1000, 0x5a013092, - 0x59a50804, 0x8c8d9000, 0x13ffffe4, 0x3a04a01e, - 0x59948981, 0x828d1000, 0x5a04a880, 0x8ca52001, - 0x598c4c08, 0x15ffffec, 0x5cf01e00, 0x84075000, - 0x0a000000, 0x5a052010, 0x90bcd000, 0x588c4883, - 0x59f44e03, 0x12ffff80, 0x588c4394, 0x5a046010, - 0x8ca52004, 0x5dad841e, 0x8c8c1000, 0x1100000e, - 0x5cb01617, 0x8c9ce004, 0x5cb81615, 0x08ffff38, - 0x58b8d215, 0x5a056017, 0x599dc904, 0x598c0012, - 0x58a0d211, 0x150000b6, 0x5a052011, 0x90bcd000, - 0x599cc904, 0x12000070, 0x5cb01617, 0x8cf00020, - 0x5a948b80, 0x12ffff86, 0x59b58e88, 0x8c8c7400, - 0xffffffff, 0x5a052011, 0x82b45000, 0x59f78908, - 0x15ffffe0, 0x90b4d000, 0x5a013092, 0x8c9cf400, - 0xfffffffc, 0x5d8d841e, 0x8cbd9000, 0x59a50904, - 0x14000036, 0x90b4d000, 0x59948984, 0x928d1000, - 0x08ffffd8, 0x59948984, 0x90bcd000, 0x599cc904, - 0x928d1000, 0x5a013092, 0x59a50904, 0x8c8dd000, - 0x13ffffe4, 0x3a04bf16, 0x598c4e88, 0x8ca52004, - 0x59a50981, 0x5a042094, 0x828d1000, 0x598c4e88, - 0x15fffff0, 0x08fffef4, 0x5a052011, 0x90bdd000, - 0x58ad4883, 0x90b4d000, 0x59f54e03, 0x12ffff7c, - 0x58ad4394, 0x5a056011, 0x5dad841e, 0x14000010, - 0x5cb81616, 0x12000008, 0x599cc904, 0x5cb01615, - 0x08ffff30, 0x5ce8161e, 0x08fffeb0, 0x00000000, - 0x59084810, 0x8c803000, 0x0000e700, 0x5888198a, - 0x8ce800f2, 0x6600301d, 0x3e042024, 0x5c201e00, - 0x8c283000, 0x000056b0, 0x8ca7e040, 0x5c301e00, - 0x92f7e048, 0x9a251000, 0x08000014, 0x8c87e040, - 0x8c883000, 0x0000e700, 0x09000018, 0xb087e040, - 0x92903000, 0x0000ebd0, 0x0a000000, 0x00000000, - 0x5c401610, 0x5c201611, 0x5c801604, 0x0b0001dc, - 0x5c301e00, 0x8c383000, 0x0000eb00, 0x9a321000, - 0xc0a11000, 0x5a052880, 0x592c0801, 0x59294004, - 0x120000a4, 0x08000098, 0xc0a11000, 0x5998581f, - 0x3aa4c010, 0x3a4d200c, 0x3a6d2008, 0x3d552010, - 0x59205004, 0xc0a11000, 0x3d053fe0, 0xc0a11000, - 0x3a052064, 0x90aa1000, 0x59a05015, 0x92203915, - 0x0000eb00, 0x92a21000, 0xc0a11000, 0x3a052038, - 0x5990581f, 0x3aa48030, 0x3a4d202c, 0x3a6d2028, - 0x3a552024, 0x59205004, 0xc0a11000, 0x3a052018, - 0x5998581f, 0x3aa4c010, 0x3a4d200c, 0x3a6d2008, - 0x3d553fe4, 0xc0a11000, 0x3a05200c, 0x82f11000, - 0x59205004, 0xc0a11000, 0x3a05200c, 0x90a21000, - 0x3b953f84, 0x90a21000, 0x92f03914, 0x0000eb00, - 0xc0a15000, 0x5a052880, 0x5c201e00, 0x120000cc, - 0x92283000, 0x0000eb50, 0x5c801605, 0x0b0000ec, - 0x59294801, 0x59294010, 0xc0a15000, 0x5a052880, - 0x5c201e01, 0x120000a4, 0x8c303000, 0x0000eb54, - 0x92299000, 0x5c801605, 0x0b0000c0, 0x59294801, - 0x59294010, 0xc0a15000, 0x5a052880, 0x59205004, - 0x12000078, 0x9229a004, 0x5c801605, 0x0b00009c, - 0x59294801, 0x59294010, 0xc0a15000, 0x5a052880, - 0x59205004, 0x12000054, 0x9229a008, 0x5c801605, - 0x0b000078, 0x59294801, 0x59294010, 0xc0a15000, - 0x5a052880, 0x59205004, 0x12000030, 0x9229a00c, - 0x5c801605, 0x0b000054, 0x59294801, 0x59294010, - 0xc0a15000, 0x59341006, 0x5a003094, 0x59205004, - 0x12000008, 0x3be13f6c, 0x8c983000, 0x0000eb50, - 0x92f03904, 0x0000eb50, 0x5c901613, 0x92922008, - 0x0a000000, 0x00000000, 0x00000000, 0x00000000, - 0x8cf01400, 0x00000030, 0x5c88161e, 0x5cf01e00, - 0xc0a41000, 0x5ca81e00, 0x0800000c, 0xc0a41000, - 0x59a85015, 0x5a003094, 0x59805010, 0x15fffff0, - 0x5c801615, 0x84045000, 0x0a000000, 0x00000000, - 0x8ce80101, 0x6600301d, 0x0a000000, 0x00000000, - 0x8cf01400, 0x00000020, 0x5c80161e, 0x5cf01e00, - 0x8ca03000, 0x0003cd50, 0x5ca81614, 0x92a83000, - 0x0000ebe0, 0x84041000, 0x0a000000, 0x00000000, - 0x5a003090, 0x90a83000, 0x0000ebe0, 0x1500000c, - 0x5c801615, 0x0a000000, 0x59a3d015, 0x58a3d214, - 0x8ca52000, 0x5a052015, 0x8cb43c14, 0xffffffff, - 0x11000014, 0x34b50010, 0x8c903000, 0x0003dd4f, - 0x36b48020, 0x0b000284, 0x5c901e0c, 0x5c881612, - 0x928c1000, 0x8c803000, 0xffffffff, 0x0a000000, - 0x59a85016, 0x33ad800c, 0x8ca83000, 0x0003dd4f, - 0x5c801614, 0x92a83000, 0x0000ebe0, 0x0a000000, - 0x8c883000, 0x0003cd50, 0x34844014, 0x59a40901, - 0x8c903000, 0x0003dd4f, 0x36a4801c, 0x0b00022c, - 0x5c901e0c, 0x5c881612, 0x928c1000, 0x59801901, - 0x0a000000, 0x92803000, 0x0000ebe0, 0x5c801e00, - 0x0a000000, 0x00000000, 0x00000000, 0x00000000, - 0x8ce800ea, 0x6600301d, 0x5a003090, 0x5c201610, - 0x12000014, 0x0b0001e4, 0x92241000, 0x59801901, - 0x0a000000, 0x5c801e00, 0x0a000000, 0x00000000, - 0x59084810, 0x8c8fe040, 0x8ce800eb, 0x6600301d, - 0x5a003090, 0x5c201610, 0x12000014, 0x0b0001ac, - 0x92241000, 0x59801901, 0x0a000000, 0x9087e040, - 0x0a000000, 0x00000000, 0x00000000, 0x00000000, - 0x59084810, 0x8c9fe040, 0x8ce800e9, 0x6600301d, - 0x5a003090, 0x5c201610, 0x12000014, 0x0b00016c, - 0x92241000, 0x59801901, 0x0a000000, 0x9087e040, - 0x0a000000, 0x00000000, 0x00000000, 0x00000000, - 0x8ce800ef, 0x6600301d, 0x5a003090, 0x5c201610, - 0x12000014, 0x0b000134, 0x92241000, 0x59801901, - 0x0a000000, 0x5c801e00, 0x0a000000, 0x00000000, - 0x59084810, 0x8c9fe040, 0x8ce800e8, 0x6600301d, - 0x5a003090, 0x5c201610, 0x12000014, 0x0b0000fc, - 0x92241000, 0x59801901, 0x0a000000, 0x9087e040, - 0x0a000000, 0x00000000, 0x00000000, 0x00000000, - 0x08fffde0, 0x00000000, 0x00000000, 0x00000000, - 0x8cf01400, 0x00000014, 0x5c88161e, 0x5cf01e00, - 0x8c803000, 0x0000ebf0, 0x84045000, 0x0a000000, - 0x8cf01400, 0x00000014, 0x5c88161e, 0x5cf01e00, - 0x8c803000, 0x0000ec80, 0x84045000, 0x0a000000, - 0x8cf01400, 0x00000014, 0x5c88161e, 0x5cf01e00, - 0x8c803000, 0x0000ecf0, 0x84045000, 0x0a000000, - 0x8cf01400, 0x00000014, 0x5c88161e, 0x5cf01e00, - 0x8c803000, 0x0000ebf0, 0x84045000, 0x0a000000, - 0x8cf01400, 0x00000014, 0x5c88161e, 0x5cf01e00, - 0x8c803000, 0x0000ec80, 0x84045000, 0x0a000000, - 0x8cf01400, 0x00000014, 0x5c88161e, 0x5cf01e00, - 0x8c803000, 0x0000ecf0, 0x84045000, 0x0a000000, - 0x8cf01400, 0x00000014, 0x5c88161e, 0x5cf01e00, - 0x8c803000, 0x0000ecf0, 0x84045000, 0x0a000000, - 0x8cf01400, 0x0000000c, 0x5c80161e, 0x5cf01e00, - 0x84041000, 0x0a000000, 0x00000000, 0x00000000, - 0x8cf01400, 0x0000000c, 0x5c80161e, 0x5cf01e00, - 0x84041000, 0x0a000000, 0x00000000, 0x00000000, - 0x8cf01400, 0x0000000c, 0x5c80161e, 0x5cf01e00, - 0x84041000, 0x0a000000, 0x00000000, 0x00000000, - 0x8cf01400, 0x0000000c, 0x5c80161e, 0x5cf01e00, - 0x84041000, 0x0a000000, 0x00000000, 0x00000000, - 0x8cf01400, 0x0000000c, 0x5c80161e, 0x5cf01e00, - 0x84041000, 0x0a000000, 0x00000000, 0x00000000, - 0x8cf01400, 0x0000000c, 0x5c80161e, 0x5cf01e00, - 0x84041000, 0x0a000000, 0x00000000, 0x00000000, - 0x8cf01400, 0x0000000c, 0x5c80161e, 0x5cf01e00, - 0x84041000, 0x0a000000, 0x00000000, 0x00000000, - 0x8cf01400, 0x0000000c, 0x5c80161e, 0x5cf01e00, - 0x84041000, 0x0a000000, 0x00000000, 0x00000000, - 0x8cf01400, 0x0000000c, 0x5c80161e, 0x5cf01e00, - 0x84041000, 0x0a000000, 0x00000000, 0x00000000, - 0x8cf01400, 0x0000000c, 0x5c80161e, 0x5cf01e00, - 0x84041000, 0x0a000000, 0x00000000, 0x00000000, - 0x8cf01400, 0x0000000c, 0x5c80161e, 0x5cf01e00, - 0x84041000, 0x0a000000, 0x00000000, 0x00000000, - 0x8cf01400, 0x00000010, 0x5c88161e, 0x5cf01e00, - 0x5c801612, 0x84045000, 0x0a000000, 0x00000000, - 0x8cf01400, 0x0000000c, 0x5c80161e, 0x5cf01e00, - 0x84041000, 0x0a000000, 0x00000000, 0x00000000, - 0x8cf01400, 0x0000000c, 0x5c80161e, 0x5cf01e00, - 0x84041000, 0x0a000000, 0x00000000, 0x00000000, - 0x8cf01400, 0x0000000c, 0x5c80161e, 0x5cf01e00, - 0x84041000, 0x0a000000, 0x00000000, 0x00000000, - 0x8cf01400, 0x0000000c, 0x5c80161e, 0x5cf01e00, - 0x84041000, 0x0a000000, 0x00000000, 0x00000000, - 0x8cf01400, 0x0000000c, 0x5c88161e, 0x5cf01e00, - 0x84045000, 0x0a000000, 0x00000000, 0x00000000, - 0x08fffcf0, 0x00000000, 0x00000000, 0x00000000, - 0x8cf01400, 0x0000000c, 0x5c80161e, 0x5cf01e00, - 0x84041000, 0x0a000000, 0x00000000, 0x00000000, - 0x8cf01400, 0x00000014, 0x5c88161e, 0x5cf01e00, - 0x59a81901, 0x64840295, 0x84045000, 0x0a000000, - 0x8cf01400, 0x0000000c, 0x5c80161e, 0x5cf01e00, - 0x84041000, 0x0a000000, 0x00000000, 0x00000000, - 0x5a003090, 0x8c200413, 0x14000056, 0x5c281610, - 0x64601085, 0x10000042, 0x5965110c, 0x5a00308c, - 0x14000012, 0x5989460c, 0x5c801e00, 0x08000014, - 0x5968110c, 0x5989440d, 0x8c6b2020, 0x5981460d, - 0x588c4e14, 0x5921010c, 0x59210e14, 0x588c4384, - 0x0a000000, 0x5d801e00, 0x08fffff8, 0x59281110, - 0x64601085, 0x5965110c, 0x5a00308c, 0x14000012, - 0x5989460c, 0x5c801e00, 0x08000014, 0x5968110c, - 0x5989440d, 0x8c6b2020, 0x5981460d, 0x588c4e14, - 0x5921010c, 0x59210e14, 0x588c4384, 0x588c499f, - 0x08ffffb0, 0x59244e01, 0x8c603000, 0xffe00000, - 0x5a032004, 0x1100006a, 0x59210c15, 0x592c4e0a, - 0x5829499e, 0x58294e1f, 0x59640c16, 0x582b0385, - 0x5a003091, 0x8c60041d, 0x14000026, 0x5a032004, - 0x59230104, 0x1100000e, 0x59814404, 0x0a000000, - 0x59801901, 0x58840e1f, 0x08fffff4, 0x5a032004, - 0x59230104, 0x11000012, 0x59294404, 0x59801105, - 0x08ffffdc, 0x59805e1f, 0x08ffffd4, 0x5c801e00, - 0x08ffffcc, 0x59244e01, 0x8c603000, 0xffe00000, - 0x5a032004, 0x11000042, 0x59210c15, 0x592c4e0b, - 0x5829499f, 0x59640c15, 0x582b0385, 0x5a003091, - 0x14000026, 0x8c60041e, 0x5a032004, 0x11000012, - 0x59230104, 0x59814404, 0x0a000000, 0x59801901, - 0x08fffff8, 0x5c801e00, 0x08fffff0, 0x59244e01, - 0x8c603000, 0xffdfffff, 0x5a01200c, 0x5a003104, - 0x16000052, 0x59210c15, 0x8c600380, 0x5921010c, - 0x8c6000ff, 0x5a032004, 0x1300002e, 0x59210e17, - 0x592c4e0c, 0x59294c09, 0x58214384, 0x592c0c1d, - 0x5a042f1c, 0x5b810005, 0x5a046f1f, 0x58840f9f, - 0x0a000000, 0x5a003084, 0x14000030, 0x08000018, - 0x1200002a, 0x8c603000, 0xffe00000, 0x5a032004, - 0x11000012, 0x8c803000, 0x7f800000, 0x08ffffcc, - 0x59801901, 0x08ffffcc, 0x5c801e00, 0x08ffffbc, - 0x59540c1f, 0x59528e1f, 0x59240e01, 0x8c603000, - 0xfeffffff, 0x5a01200c, 0x5a003104, 0x1600003a, - 0x59210c18, 0x8c603000, 0xfffffc80, 0x5921010c, - 0x59210e14, 0x592c0e09, 0x59294c0c, 0x58894384, - 0x59840e1d, 0x588a8391, 0x0a000000, 0x5d801e00, - 0x08fffff4, 0x12fffffa, 0x8c603000, 0xff000000, - 0x5a01200c, 0x14000016, 0x8c883000, 0x7ff00000, - 0x5c801e00, 0x08ffffd0, 0x59801901, 0x59881901, - 0x08ffffc8, 0x59548c0f, 0x59528e1f, 0x59248e11, - 0x59210c11, 0x5a046f1f, 0x1000005a, 0x8c603000, - 0x00003c00, 0x5921010c, 0x8c6007ff, 0x5a032004, - 0x1300002e, 0x588c4e1f, 0x593c4c0b, 0x59344e15, - 0x59210e14, 0x58890387, 0x5a042f0a, 0x59840c0b, - 0x5b840006, 0x588c438a, 0x0a000000, 0x11000022, - 0x8c883000, 0x7ff00000, 0x5c801e00, 0x08ffffe8, - 0x588c4390, 0x5a003011, 0x12ffffdc, 0x59801901, - 0x59881901, 0x08ffffd4, 0x5854481f, 0x08000008, - 0x58544e1f, 0x59244e01, 0x8c603000, 0xffe00000, - 0x5a032004, 0x1100000a, 0x5c88160a, 0x0a000000, - 0x589cc81f, 0x59244e01, 0x592cce01, 0x59605e15, - 0x596b0004, 0x5a03200d, 0x1600019a, 0x596b0005, - 0x5a03200d, 0x1600018e, 0x593c4e0b, 0x59640c15, - 0x59340e0b, 0x5839c38c, 0x5839c99f, 0x594cce0b, - 0x59648c15, 0x59448e0b, 0x584a438c, 0x584a499f, - 0x59210c15, 0x59294c15, 0x59544c1f, 0x59528e1f, - 0x5a016004, 0x8c680020, 0x14000034, 0x59610105, - 0x5a03600c, 0x14000010, 0x5c401609, 0x5c481e00, - 0x5963010d, 0x5942040c, 0x596b410c, 0x596a460d, - 0x594a440c, 0x5842038d, 0x08000034, 0x59614104, - 0x5a03600c, 0x14000010, 0x5c301607, 0x5c381e00, - 0x5963010d, 0x5931840c, 0x596b410c, 0x5969c60d, - 0x5939c40c, 0x5831838d, 0x5c201605, 0x5864c311, - 0x5a032f1f, 0x1200003e, 0x5b318008, 0x5b39c009, - 0x10000096, 0x59318c01, 0x5961ce1f, 0x5939cc01, - 0x5831838c, 0x59210801, 0x8c6007ff, 0x5a032004, - 0x14000074, 0x5c20160c, 0x5d301e00, 0x08000068, - 0x5b318108, 0x5b39c109, 0x12000016, 0x5a003800, - 0x5b301106, 0x5b381107, 0x5852881f, 0x64601087, - 0x12000020, 0x64601086, 0x10000066, 0x5967d10c, - 0x5939860c, 0x5c301e00, 0x8c632020, 0x0800001c, - 0x5969840c, 0x596b4c01, 0x5967d10c, 0x5939c60c, - 0x5931860c, 0x5839c38d, 0x5921010c, 0x5a003084, - 0x14000036, 0x5a01af0a, 0x5839ce1f, 0x59818c0b, - 0x5969ce15, 0x5989cc0b, 0x59210e14, 0x58890391, - 0x5b84000d, 0x5b8c400a, 0x0a000000, 0x5d801e00, - 0x08fffff8, 0x5c801e00, 0x5c88160a, 0x08ffffec, - 0x8c603000, 0xffe00000, 0x5a01200c, 0x12000046, - 0x1400005a, 0x5a01600c, 0x12000032, 0x1400004e, - 0x586c0384, 0x5a00300d, 0x12000016, 0x586c8385, - 0x5a00300d, 0x15fffe46, 0x08ffffb0, 0x586c8385, - 0x5a00300d, 0x12000032, 0x5d801612, 0x08ffff9c, - 0x5a01600c, 0x14000016, 0x11ffff92, 0x5864c311, - 0x5a00308c, 0x13ffff86, 0x59801901, 0x59881901, - 0x08ffff78, 0x588cc091, 0x5c801e00, 0x08ffff6c, - 0x581cc311, 0x5918cc1f, 0x5918ce1f, 0x59244e01, - 0x592cce01, 0x59605e15, 0x596b0004, 0x5a03200d, - 0x160000ee, 0x596b0005, 0x5a03200d, 0x160000e2, - 0x593c4e0b, 0x5939cc01, 0x59340e0a, 0x596c0c16, - 0x5839c38d, 0x5839c99e, 0x594cce0b, 0x59448e0b, - 0x596c8c15, 0x584a438d, 0x584a499f, 0x59210c15, - 0x59294c15, 0x67518089, 0x5c68160a, 0x5c601e00, - 0x67630089, 0x5c50160d, 0x596a0c01, 0x5c601e00, - 0x67630089, 0x6763400b, 0x5a003800, 0x5b52810d, - 0x5b5ac900, 0x5b52810d, 0x5b5ac900, 0x5a02ef1f, - 0x12000010, 0x5b52800a, 0x5b5ac00b, 0x59210901, - 0x8c2123ff, 0x59210105, 0x8c6007fe, 0x5a01200c, - 0x1400002e, 0x5a02af0a, 0x59828c0b, 0x596ace15, - 0x598acc0b, 0x588c4e14, 0x59210e14, 0x58890391, - 0x5b84000d, 0x5b8c4003, 0x0a000000, 0x5a003084, - 0x14000010, 0x59230801, 0x5d501e00, 0x08ffffc8, - 0x5c201e00, 0x5d501e00, 0x08ffffbc, 0x8c603000, - 0xffe00000, 0x5a01200c, 0x1200005a, 0x1400005e, - 0x5a01600c, 0x12000042, 0x14000052, 0x586c0384, - 0x5a00300d, 0x12000026, 0x586c8385, 0x5a00300d, - 0x15fffef2, 0x8c883000, 0x7ff00000, 0x5c801e00, - 0x588c4383, 0x08ffff94, 0x586c8385, 0x5a00300d, - 0x1200001a, 0x5d801e00, 0x588c4383, 0x08ffff7c, - 0x5a01600c, 0x11ffffd2, 0x59801901, 0x59881901, - 0x08ffff68, 0x00000000, 0x00000000, 0x00000000, - 0x581cc311, 0x5918cc1f, 0x5918ce1f, 0x59244e01, - 0x592cce01, 0x59605e15, 0x596b0004, 0x5a03200d, - 0x160000d6, 0x596b0005, 0x5a03200d, 0x160000ca, - 0x593c4e0b, 0x59340e0b, 0x596c0c15, 0x5839c38d, - 0x594cce0b, 0x59448e0b, 0x596c8c15, 0x584a438d, - 0x5839c99f, 0x584a499f, 0x59210c15, 0x59294c15, - 0x67624007, 0x67524006, 0x5a007800, 0x5b62c00c, - 0x5b68100d, 0x67720007, 0x5b73800a, 0x5b63c00c, - 0x5b68100d, 0x5a036f1f, 0x12000010, 0x5b63000c, - 0x5b6b400d, 0x59210901, 0x8c217c04, 0xfffffc02, - 0x8c5007fe, 0x5a01200a, 0x1400002e, 0x5a032f0a, - 0x59830c0b, 0x59534e15, 0x598b4c0b, 0x588c4e14, - 0x59210e14, 0x58890391, 0x5b84000a, 0x5b8c4003, - 0x0a000000, 0x5a003084, 0x14000010, 0x59228801, - 0x5d601e00, 0x08ffffc8, 0x5c201e00, 0x5d601e00, - 0x08ffffbc, 0x5918cc1f, 0x5918ce1f, 0x8c603000, - 0xffe00000, 0x5a01200c, 0x1200003a, 0x14000046, - 0x5a01600c, 0x1400003e, 0x12000046, 0x586c0384, - 0x5a00300d, 0x12000012, 0x586c8385, 0x5a00300d, - 0x15ffff02, 0x5d801e00, 0x588c4383, 0x08ffff94, - 0x5a01600c, 0x1400000e, 0x5a003005, 0x1500001e, - 0x59801901, 0x59881901, 0x08ffff78, 0x586c0384, - 0x5a00300d, 0x12ffffee, 0x8c883000, 0x7ff00000, - 0x588c4383, 0x5c801e00, 0x08ffff58, 0x00000000, - 0x59244e01, 0x5934ce01, 0x8c603000, 0xffe00000, - 0x5a01200c, 0x1600007e, 0x5a01a00c, 0x160000c6, - 0x58318384, 0x5a003006, 0x12000062, 0x59644d9f, - 0x583c4e1f, 0x58330310, 0x583b0307, 0x5a003800, - 0x5b31810c, 0x5b39c900, 0x5964cd9f, 0x584cce1f, - 0x58430312, 0x584b0309, 0x5a003800, 0x5b42010c, - 0x5b4a4900, 0x5a026087, 0x59801901, 0x14000022, - 0x5c801e01, 0x1100001a, 0x5a022006, 0x11000012, - 0x59801901, 0x1400000a, 0x5c801e00, 0x0a000000, - 0x5a01200c, 0x1200001e, 0x5c801e03, 0x08fffff0, - 0x5c801e01, 0x08ffffe8, 0x59801901, 0x08ffffe0, - 0x5a01a00c, 0x14ffffe6, 0x1100001e, 0x5864c311, - 0x5a00308c, 0x13ffffc6, 0x5a046f1f, 0x10ffffd6, - 0x08ffffd8, 0x5a003091, 0x14ffffd0, 0x08ffffc4, - 0x5a01a00c, 0x14ffffb6, 0x5a04ef1f, 0x12ffffb6, - 0x08ffffb8, 0x0a000000, -}; -#define FIRMWARE_SIZE 37560 diff --git a/sys/dev/fatm/if_fatm.c b/sys/dev/fatm/if_fatm.c deleted file mode 100644 index 2a1dee685c3d..000000000000 --- a/sys/dev/fatm/if_fatm.c +++ /dev/null @@ -1,3091 +0,0 @@ -/*- - * Copyright (c) 2001-2003 - * Fraunhofer Institute for Open Communication Systems (FhG Fokus). - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * Author: Hartmut Brandt <harti@freebsd.org> - * - * Fore PCA200E driver for NATM - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include "opt_inet.h" -#include "opt_natm.h" - -#include <sys/types.h> -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/malloc.h> -#include <sys/kernel.h> -#include <sys/bus.h> -#include <sys/errno.h> -#include <sys/conf.h> -#include <sys/module.h> -#include <sys/queue.h> -#include <sys/syslog.h> -#include <sys/endian.h> -#include <sys/sysctl.h> -#include <sys/condvar.h> -#include <vm/uma.h> - -#include <sys/sockio.h> -#include <sys/mbuf.h> -#include <sys/socket.h> - -#include <net/if.h> -#include <net/if_var.h> -#include <net/if_media.h> -#include <net/if_types.h> -#include <net/if_atm.h> -#include <net/route.h> -#ifdef ENABLE_BPF -#include <net/bpf.h> -#endif -#ifdef INET -#include <netinet/in.h> -#include <netinet/if_atm.h> -#endif - -#include <machine/bus.h> -#include <machine/resource.h> -#include <sys/bus.h> -#include <sys/rman.h> -#include <dev/pci/pcireg.h> -#include <dev/pci/pcivar.h> - -#include <dev/utopia/utopia.h> - -#include <dev/fatm/if_fatmreg.h> -#include <dev/fatm/if_fatmvar.h> - -#include <dev/fatm/firmware.h> - -devclass_t fatm_devclass; - -static const struct { - uint16_t vid; - uint16_t did; - const char *name; -} fatm_devs[] = { - { 0x1127, 0x300, - "FORE PCA200E" }, - { 0, 0, NULL } -}; - -static const struct rate { - uint32_t ratio; - uint32_t cell_rate; -} rate_table[] = { -#include <dev/fatm/if_fatm_rate.h> -}; -#define RATE_TABLE_SIZE (sizeof(rate_table) / sizeof(rate_table[0])) - -SYSCTL_DECL(_hw_atm); - -MODULE_DEPEND(fatm, utopia, 1, 1, 1); - -static int fatm_utopia_readregs(struct ifatm *, u_int, uint8_t *, u_int *); -static int fatm_utopia_writereg(struct ifatm *, u_int, u_int, u_int); - -static const struct utopia_methods fatm_utopia_methods = { - fatm_utopia_readregs, - fatm_utopia_writereg -}; - -#define VC_OK(SC, VPI, VCI) \ - (rounddown2(VPI, 1 << IFP2IFATM((SC)->ifp)->mib.vpi_bits) == 0 && \ - (VCI) != 0 && rounddown2(VCI, 1 << IFP2IFATM((SC)->ifp)->mib.vci_bits) == 0) - -static int fatm_load_vc(struct fatm_softc *sc, struct card_vcc *vc); - -/* - * Probing is easy: step trough the list of known vendor and device - * ids and compare. If one is found - it's our. - */ -static int -fatm_probe(device_t dev) -{ - int i; - - for (i = 0; fatm_devs[i].name; i++) - if (pci_get_vendor(dev) == fatm_devs[i].vid && - pci_get_device(dev) == fatm_devs[i].did) { - device_set_desc(dev, fatm_devs[i].name); - return (BUS_PROBE_DEFAULT); - } - return (ENXIO); -} - -/* - * Function called at completion of a SUNI writeregs/readregs command. - * This is called from the interrupt handler while holding the softc lock. - * We use the queue entry as the randevouze point. - */ -static void -fatm_utopia_writeregs_complete(struct fatm_softc *sc, struct cmdqueue *q) -{ - - H_SYNCSTAT_POSTREAD(sc, q->q.statp); - if(H_GETSTAT(q->q.statp) & FATM_STAT_ERROR) { - sc->istats.suni_reg_errors++; - q->error = EIO; - } - wakeup(q); -} - -/* - * Write a SUNI register. The bits that are 1 in mask are written from val - * into register reg. We wait for the command to complete by sleeping on - * the register memory. - * - * We assume, that we already hold the softc mutex. - */ -static int -fatm_utopia_writereg(struct ifatm *ifatm, u_int reg, u_int mask, u_int val) -{ - int error; - struct cmdqueue *q; - struct fatm_softc *sc; - - sc = ifatm->ifp->if_softc; - FATM_CHECKLOCK(sc); - if (!(ifatm->ifp->if_drv_flags & IFF_DRV_RUNNING)) - return (EIO); - - /* get queue element and fill it */ - q = GET_QUEUE(sc->cmdqueue, struct cmdqueue, sc->cmdqueue.head); - - H_SYNCSTAT_POSTREAD(sc, q->q.statp); - if (!(H_GETSTAT(q->q.statp) & FATM_STAT_FREE)) { - sc->istats.cmd_queue_full++; - return (EIO); - } - NEXT_QUEUE_ENTRY(sc->cmdqueue.head, FATM_CMD_QLEN); - - q->error = 0; - q->cb = fatm_utopia_writeregs_complete; - H_SETSTAT(q->q.statp, FATM_STAT_PENDING); - H_SYNCSTAT_PREWRITE(sc, q->q.statp); - - WRITE4(sc, q->q.card + FATMOC_GETOC3_BUF, 0); - BARRIER_W(sc); - WRITE4(sc, q->q.card + FATMOC_OP, - FATM_MAKE_SETOC3(reg, val, mask) | FATM_OP_INTERRUPT_SEL); - BARRIER_W(sc); - - /* - * Wait for the command to complete - */ - error = msleep(q, &sc->mtx, PZERO | PCATCH, "fatm_setreg", hz); - - switch(error) { - - case EWOULDBLOCK: - error = EIO; - break; - - case ERESTART: - error = EINTR; - break; - - case 0: - error = q->error; - break; - } - - return (error); -} - -/* - * Function called at completion of a SUNI readregs command. - * This is called from the interrupt handler while holding the softc lock. - * We use reg_mem as the randevouze point. - */ -static void -fatm_utopia_readregs_complete(struct fatm_softc *sc, struct cmdqueue *q) -{ - - H_SYNCSTAT_POSTREAD(sc, q->q.statp); - if (H_GETSTAT(q->q.statp) & FATM_STAT_ERROR) { - sc->istats.suni_reg_errors++; - q->error = EIO; - } - wakeup(&sc->reg_mem); -} - -/* - * Read SUNI registers - * - * We use a preallocated buffer to read the registers. Therefor we need - * to protect against multiple threads trying to read registers. We do this - * with a condition variable and a flag. We wait for the command to complete by sleeping on - * the register memory. - * - * We assume, that we already hold the softc mutex. - */ -static int -fatm_utopia_readregs_internal(struct fatm_softc *sc) -{ - int error, i; - uint32_t *ptr; - struct cmdqueue *q; - - /* get the buffer */ - for (;;) { - if (!(sc->ifp->if_drv_flags & IFF_DRV_RUNNING)) - return (EIO); - if (!(sc->flags & FATM_REGS_INUSE)) - break; - cv_wait(&sc->cv_regs, &sc->mtx); - } - sc->flags |= FATM_REGS_INUSE; - - q = GET_QUEUE(sc->cmdqueue, struct cmdqueue, sc->cmdqueue.head); - - H_SYNCSTAT_POSTREAD(sc, q->q.statp); - if (!(H_GETSTAT(q->q.statp) & FATM_STAT_FREE)) { - sc->istats.cmd_queue_full++; - return (EIO); - } - NEXT_QUEUE_ENTRY(sc->cmdqueue.head, FATM_CMD_QLEN); - - q->error = 0; - q->cb = fatm_utopia_readregs_complete; - H_SETSTAT(q->q.statp, FATM_STAT_PENDING); - H_SYNCSTAT_PREWRITE(sc, q->q.statp); - - bus_dmamap_sync(sc->reg_mem.dmat, sc->reg_mem.map, BUS_DMASYNC_PREREAD); - - WRITE4(sc, q->q.card + FATMOC_GETOC3_BUF, sc->reg_mem.paddr); - BARRIER_W(sc); - WRITE4(sc, q->q.card + FATMOC_OP, - FATM_OP_OC3_GET_REG | FATM_OP_INTERRUPT_SEL); - BARRIER_W(sc); - - /* - * Wait for the command to complete - */ - error = msleep(&sc->reg_mem, &sc->mtx, PZERO | PCATCH, - "fatm_getreg", hz); - - switch(error) { - - case EWOULDBLOCK: - error = EIO; - break; - - case ERESTART: - error = EINTR; - break; - - case 0: - bus_dmamap_sync(sc->reg_mem.dmat, sc->reg_mem.map, - BUS_DMASYNC_POSTREAD); - error = q->error; - break; - } - - if (error != 0) { - /* declare buffer to be free */ - sc->flags &= ~FATM_REGS_INUSE; - cv_signal(&sc->cv_regs); - return (error); - } - - /* swap if needed */ - ptr = (uint32_t *)sc->reg_mem.mem; - for (i = 0; i < FATM_NREGS; i++) - ptr[i] = le32toh(ptr[i]) & 0xff; - - return (0); -} - -/* - * Read SUNI registers for the SUNI module. - * - * We assume, that we already hold the mutex. - */ -static int -fatm_utopia_readregs(struct ifatm *ifatm, u_int reg, uint8_t *valp, u_int *np) -{ - int err; - int i; - struct fatm_softc *sc; - - if (reg >= FATM_NREGS) - return (EINVAL); - if (reg + *np > FATM_NREGS) - *np = FATM_NREGS - reg; - sc = ifatm->ifp->if_softc; - FATM_CHECKLOCK(sc); - - err = fatm_utopia_readregs_internal(sc); - if (err != 0) - return (err); - - for (i = 0; i < *np; i++) - valp[i] = ((uint32_t *)sc->reg_mem.mem)[reg + i]; - - /* declare buffer to be free */ - sc->flags &= ~FATM_REGS_INUSE; - cv_signal(&sc->cv_regs); - - return (0); -} - -/* - * Check whether the hard is beating. We remember the last heart beat and - * compare it to the current one. If it appears stuck for 10 times, we have - * a problem. - * - * Assume we hold the lock. - */ -static void -fatm_check_heartbeat(struct fatm_softc *sc) -{ - uint32_t h; - - FATM_CHECKLOCK(sc); - - h = READ4(sc, FATMO_HEARTBEAT); - DBG(sc, BEAT, ("heartbeat %08x", h)); - - if (sc->stop_cnt == 10) - return; - - if (h == sc->heartbeat) { - if (++sc->stop_cnt == 10) { - log(LOG_ERR, "i960 stopped???\n"); - WRITE4(sc, FATMO_HIMR, 1); - } - return; - } - - sc->stop_cnt = 0; - sc->heartbeat = h; -} - -/* - * Ensure that the heart is still beating. - */ -static void -fatm_watchdog(void *arg) -{ - struct fatm_softc *sc; - - sc = arg; - FATM_CHECKLOCK(sc); - fatm_check_heartbeat(sc); - callout_reset(&sc->watchdog_timer, hz * 5, fatm_watchdog, sc); -} - -/* - * Hard reset the i960 on the board. This is done by initializing registers, - * clearing interrupts and waiting for the selftest to finish. Not sure, - * whether all these barriers are actually needed. - * - * Assumes that we hold the lock. - */ -static int -fatm_reset(struct fatm_softc *sc) -{ - int w; - uint32_t val; - - FATM_CHECKLOCK(sc); - - WRITE4(sc, FATMO_APP_BASE, FATMO_COMMON_ORIGIN); - BARRIER_W(sc); - - WRITE4(sc, FATMO_UART_TO_960, XMIT_READY); - BARRIER_W(sc); - - WRITE4(sc, FATMO_UART_TO_HOST, XMIT_READY); - BARRIER_W(sc); - - WRITE4(sc, FATMO_BOOT_STATUS, COLD_START); - BARRIER_W(sc); - - WRITE1(sc, FATMO_HCR, FATM_HCR_RESET); - BARRIER_W(sc); - - DELAY(1000); - - WRITE1(sc, FATMO_HCR, 0); - BARRIER_RW(sc); - - DELAY(1000); - - for (w = 100; w; w--) { - BARRIER_R(sc); - val = READ4(sc, FATMO_BOOT_STATUS); - switch (val) { - case SELF_TEST_OK: - return (0); - case SELF_TEST_FAIL: - return (EIO); - } - DELAY(1000); - } - return (EIO); -} - -/* - * Stop the card. Must be called WITH the lock held - * Reset, free transmit and receive buffers. Wakeup everybody who may sleep. - */ -static void -fatm_stop(struct fatm_softc *sc) -{ - int i; - struct cmdqueue *q; - struct rbuf *rb; - struct txqueue *tx; - uint32_t stat; - - FATM_CHECKLOCK(sc); - - /* Stop the board */ - utopia_stop(&sc->utopia); - (void)fatm_reset(sc); - - /* stop watchdog */ - callout_stop(&sc->watchdog_timer); - - if (sc->ifp->if_drv_flags & IFF_DRV_RUNNING) { - sc->ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE); - ATMEV_SEND_IFSTATE_CHANGED(IFP2IFATM(sc->ifp), - sc->utopia.carrier == UTP_CARR_OK); - - /* - * Collect transmit mbufs, partial receive mbufs and - * supplied mbufs - */ - for (i = 0; i < FATM_TX_QLEN; i++) { - tx = GET_QUEUE(sc->txqueue, struct txqueue, i); - if (tx->m) { - bus_dmamap_unload(sc->tx_tag, tx->map); - m_freem(tx->m); - tx->m = NULL; - } - } - - /* Collect supplied mbufs */ - while ((rb = LIST_FIRST(&sc->rbuf_used)) != NULL) { - LIST_REMOVE(rb, link); - bus_dmamap_unload(sc->rbuf_tag, rb->map); - m_free(rb->m); - rb->m = NULL; - LIST_INSERT_HEAD(&sc->rbuf_free, rb, link); - } - - /* Unwait any waiters */ - wakeup(&sc->sadi_mem); - - /* wakeup all threads waiting for STAT or REG buffers */ - cv_broadcast(&sc->cv_stat); - cv_broadcast(&sc->cv_regs); - - sc->flags &= ~(FATM_STAT_INUSE | FATM_REGS_INUSE); - - /* wakeup all threads waiting on commands */ - for (i = 0; i < FATM_CMD_QLEN; i++) { - q = GET_QUEUE(sc->cmdqueue, struct cmdqueue, i); - - H_SYNCSTAT_POSTREAD(sc, q->q.statp); - if ((stat = H_GETSTAT(q->q.statp)) != FATM_STAT_FREE) { - H_SETSTAT(q->q.statp, stat | FATM_STAT_ERROR); - H_SYNCSTAT_PREWRITE(sc, q->q.statp); - wakeup(q); - } - } - utopia_reset_media(&sc->utopia); - } - sc->small_cnt = sc->large_cnt = 0; - - /* Reset vcc info */ - if (sc->vccs != NULL) { - sc->open_vccs = 0; - for (i = 0; i < FORE_MAX_VCC + 1; i++) { - if (sc->vccs[i] != NULL) { - if ((sc->vccs[i]->vflags & (FATM_VCC_OPEN | - FATM_VCC_TRY_OPEN)) == 0) { - uma_zfree(sc->vcc_zone, sc->vccs[i]); - sc->vccs[i] = NULL; - } else { - sc->vccs[i]->vflags = 0; - sc->open_vccs++; - } - } - } - } - -} - -/* - * Load the firmware into the board and save the entry point. - */ -static uint32_t -firmware_load(struct fatm_softc *sc) -{ - struct firmware *fw = (struct firmware *)firmware; - - DBG(sc, INIT, ("loading - entry=%x", fw->entry)); - bus_space_write_region_4(sc->memt, sc->memh, fw->offset, firmware, - sizeof(firmware) / sizeof(firmware[0])); - BARRIER_RW(sc); - - return (fw->entry); -} - -/* - * Read a character from the virtual UART. The availability of a character - * is signaled by a non-null value of the 32 bit register. The eating of - * the character by us is signalled to the card by setting that register - * to zero. - */ -static int -rx_getc(struct fatm_softc *sc) -{ - int w = 50; - int c; - - while (w--) { - c = READ4(sc, FATMO_UART_TO_HOST); - BARRIER_RW(sc); - if (c != 0) { - WRITE4(sc, FATMO_UART_TO_HOST, 0); - DBGC(sc, UART, ("%c", c & 0xff)); - return (c & 0xff); - } - DELAY(1000); - } - return (-1); -} - -/* - * Eat up characters from the board and stuff them in the bit-bucket. - */ -static void -rx_flush(struct fatm_softc *sc) -{ - int w = 10000; - - while (w-- && rx_getc(sc) >= 0) - ; -} - -/* - * Write a character to the card. The UART is available if the register - * is zero. - */ -static int -tx_putc(struct fatm_softc *sc, u_char c) -{ - int w = 10; - int c1; - - while (w--) { - c1 = READ4(sc, FATMO_UART_TO_960); - BARRIER_RW(sc); - if (c1 == 0) { - WRITE4(sc, FATMO_UART_TO_960, c | CHAR_AVAIL); - DBGC(sc, UART, ("%c", c & 0xff)); - return (0); - } - DELAY(1000); - } - return (-1); -} - -/* - * Start the firmware. This is doing by issuing a 'go' command with - * the hex entry address of the firmware. Then we wait for the self-test to - * succeed. - */ -static int -fatm_start_firmware(struct fatm_softc *sc, uint32_t start) -{ - static char hex[] = "0123456789abcdef"; - u_int w, val; - - DBG(sc, INIT, ("starting")); - rx_flush(sc); - tx_putc(sc, '\r'); - DELAY(1000); - - rx_flush(sc); - - tx_putc(sc, 'g'); - (void)rx_getc(sc); - tx_putc(sc, 'o'); - (void)rx_getc(sc); - tx_putc(sc, ' '); - (void)rx_getc(sc); - - tx_putc(sc, hex[(start >> 12) & 0xf]); - (void)rx_getc(sc); - tx_putc(sc, hex[(start >> 8) & 0xf]); - (void)rx_getc(sc); - tx_putc(sc, hex[(start >> 4) & 0xf]); - (void)rx_getc(sc); - tx_putc(sc, hex[(start >> 0) & 0xf]); - (void)rx_getc(sc); - - tx_putc(sc, '\r'); - rx_flush(sc); - - for (w = 100; w; w--) { - BARRIER_R(sc); - val = READ4(sc, FATMO_BOOT_STATUS); - switch (val) { - case CP_RUNNING: - return (0); - case SELF_TEST_FAIL: - return (EIO); - } - DELAY(1000); - } - return (EIO); -} - -/* - * Initialize one card and host queue. - */ -static void -init_card_queue(struct fatm_softc *sc, struct fqueue *queue, int qlen, - size_t qel_size, size_t desc_size, cardoff_t off, - u_char **statpp, uint32_t *cardstat, u_char *descp, uint32_t carddesc) -{ - struct fqelem *el = queue->chunk; - - while (qlen--) { - el->card = off; - off += 8; /* size of card entry */ - - el->statp = (uint32_t *)(*statpp); - (*statpp) += sizeof(uint32_t); - H_SETSTAT(el->statp, FATM_STAT_FREE); - H_SYNCSTAT_PREWRITE(sc, el->statp); - - WRITE4(sc, el->card + FATMOS_STATP, (*cardstat)); - (*cardstat) += sizeof(uint32_t); - - el->ioblk = descp; - descp += desc_size; - el->card_ioblk = carddesc; - carddesc += desc_size; - - el = (struct fqelem *)((u_char *)el + qel_size); - } - queue->tail = queue->head = 0; -} - -/* - * Issue the initialize operation to the card, wait for completion and - * initialize the on-board and host queue structures with offsets and - * addresses. - */ -static int -fatm_init_cmd(struct fatm_softc *sc) -{ - int w, c; - u_char *statp; - uint32_t card_stat; - u_int cnt; - struct fqelem *el; - cardoff_t off; - - DBG(sc, INIT, ("command")); - WRITE4(sc, FATMO_ISTAT, 0); - WRITE4(sc, FATMO_IMASK, 1); - WRITE4(sc, FATMO_HLOGGER, 0); - - WRITE4(sc, FATMO_INIT + FATMOI_RECEIVE_TRESHOLD, 0); - WRITE4(sc, FATMO_INIT + FATMOI_NUM_CONNECT, FORE_MAX_VCC); - WRITE4(sc, FATMO_INIT + FATMOI_CQUEUE_LEN, FATM_CMD_QLEN); - WRITE4(sc, FATMO_INIT + FATMOI_TQUEUE_LEN, FATM_TX_QLEN); - WRITE4(sc, FATMO_INIT + FATMOI_RQUEUE_LEN, FATM_RX_QLEN); - WRITE4(sc, FATMO_INIT + FATMOI_RPD_EXTENSION, RPD_EXTENSIONS); - WRITE4(sc, FATMO_INIT + FATMOI_TPD_EXTENSION, TPD_EXTENSIONS); - - /* - * initialize buffer descriptors - */ - WRITE4(sc, FATMO_INIT + FATMOI_SMALL_B1 + FATMOB_QUEUE_LENGTH, - SMALL_SUPPLY_QLEN); - WRITE4(sc, FATMO_INIT + FATMOI_SMALL_B1 + FATMOB_BUFFER_SIZE, - SMALL_BUFFER_LEN); - WRITE4(sc, FATMO_INIT + FATMOI_SMALL_B1 + FATMOB_POOL_SIZE, - SMALL_POOL_SIZE); - WRITE4(sc, FATMO_INIT + FATMOI_SMALL_B1 + FATMOB_SUPPLY_BLKSIZE, - SMALL_SUPPLY_BLKSIZE); - - WRITE4(sc, FATMO_INIT + FATMOI_LARGE_B1 + FATMOB_QUEUE_LENGTH, - LARGE_SUPPLY_QLEN); - WRITE4(sc, FATMO_INIT + FATMOI_LARGE_B1 + FATMOB_BUFFER_SIZE, - LARGE_BUFFER_LEN); - WRITE4(sc, FATMO_INIT + FATMOI_LARGE_B1 + FATMOB_POOL_SIZE, - LARGE_POOL_SIZE); - WRITE4(sc, FATMO_INIT + FATMOI_LARGE_B1 + FATMOB_SUPPLY_BLKSIZE, - LARGE_SUPPLY_BLKSIZE); - - WRITE4(sc, FATMO_INIT + FATMOI_SMALL_B2 + FATMOB_QUEUE_LENGTH, 0); - WRITE4(sc, FATMO_INIT + FATMOI_SMALL_B2 + FATMOB_BUFFER_SIZE, 0); - WRITE4(sc, FATMO_INIT + FATMOI_SMALL_B2 + FATMOB_POOL_SIZE, 0); - WRITE4(sc, FATMO_INIT + FATMOI_SMALL_B2 + FATMOB_SUPPLY_BLKSIZE, 0); - - WRITE4(sc, FATMO_INIT + FATMOI_LARGE_B2 + FATMOB_QUEUE_LENGTH, 0); - WRITE4(sc, FATMO_INIT + FATMOI_LARGE_B2 + FATMOB_BUFFER_SIZE, 0); - WRITE4(sc, FATMO_INIT + FATMOI_LARGE_B2 + FATMOB_POOL_SIZE, 0); - WRITE4(sc, FATMO_INIT + FATMOI_LARGE_B2 + FATMOB_SUPPLY_BLKSIZE, 0); - - /* - * Start the command - */ - BARRIER_W(sc); - WRITE4(sc, FATMO_INIT + FATMOI_STATUS, FATM_STAT_PENDING); - BARRIER_W(sc); - WRITE4(sc, FATMO_INIT + FATMOI_OP, FATM_OP_INITIALIZE); - BARRIER_W(sc); - - /* - * Busy wait for completion - */ - w = 100; - while (w--) { - c = READ4(sc, FATMO_INIT + FATMOI_STATUS); - BARRIER_R(sc); - if (c & FATM_STAT_COMPLETE) - break; - DELAY(1000); - } - - if (c & FATM_STAT_ERROR) - return (EIO); - - /* - * Initialize the queues - */ - statp = sc->stat_mem.mem; - card_stat = sc->stat_mem.paddr; - - /* - * Command queue. This is special in that it's on the card. - */ - el = sc->cmdqueue.chunk; - off = READ4(sc, FATMO_COMMAND_QUEUE); - DBG(sc, INIT, ("cmd queue=%x", off)); - for (cnt = 0; cnt < FATM_CMD_QLEN; cnt++) { - el = &((struct cmdqueue *)sc->cmdqueue.chunk + cnt)->q; - - el->card = off; - off += 32; /* size of card structure */ - - el->statp = (uint32_t *)statp; - statp += sizeof(uint32_t); - H_SETSTAT(el->statp, FATM_STAT_FREE); - H_SYNCSTAT_PREWRITE(sc, el->statp); - - WRITE4(sc, el->card + FATMOC_STATP, card_stat); - card_stat += sizeof(uint32_t); - } - sc->cmdqueue.tail = sc->cmdqueue.head = 0; - - /* - * Now the other queues. These are in memory - */ - init_card_queue(sc, &sc->txqueue, FATM_TX_QLEN, - sizeof(struct txqueue), TPD_SIZE, - READ4(sc, FATMO_TRANSMIT_QUEUE), - &statp, &card_stat, sc->txq_mem.mem, sc->txq_mem.paddr); - - init_card_queue(sc, &sc->rxqueue, FATM_RX_QLEN, - sizeof(struct rxqueue), RPD_SIZE, - READ4(sc, FATMO_RECEIVE_QUEUE), - &statp, &card_stat, sc->rxq_mem.mem, sc->rxq_mem.paddr); - - init_card_queue(sc, &sc->s1queue, SMALL_SUPPLY_QLEN, - sizeof(struct supqueue), BSUP_BLK2SIZE(SMALL_SUPPLY_BLKSIZE), - READ4(sc, FATMO_SMALL_B1_QUEUE), - &statp, &card_stat, sc->s1q_mem.mem, sc->s1q_mem.paddr); - - init_card_queue(sc, &sc->l1queue, LARGE_SUPPLY_QLEN, - sizeof(struct supqueue), BSUP_BLK2SIZE(LARGE_SUPPLY_BLKSIZE), - READ4(sc, FATMO_LARGE_B1_QUEUE), - &statp, &card_stat, sc->l1q_mem.mem, sc->l1q_mem.paddr); - - sc->txcnt = 0; - - return (0); -} - -/* - * Read PROM. Called only from attach code. Here we spin because the interrupt - * handler is not yet set up. - */ -static int -fatm_getprom(struct fatm_softc *sc) -{ - int i; - struct prom *prom; - struct cmdqueue *q; - - DBG(sc, INIT, ("reading prom")); - q = GET_QUEUE(sc->cmdqueue, struct cmdqueue, sc->cmdqueue.head); - NEXT_QUEUE_ENTRY(sc->cmdqueue.head, FATM_CMD_QLEN); - - q->error = 0; - q->cb = NULL; - H_SETSTAT(q->q.statp, FATM_STAT_PENDING); - H_SYNCSTAT_PREWRITE(sc, q->q.statp); - - bus_dmamap_sync(sc->prom_mem.dmat, sc->prom_mem.map, - BUS_DMASYNC_PREREAD); - - WRITE4(sc, q->q.card + FATMOC_GPROM_BUF, sc->prom_mem.paddr); - BARRIER_W(sc); - WRITE4(sc, q->q.card + FATMOC_OP, FATM_OP_GET_PROM_DATA); - BARRIER_W(sc); - - for (i = 0; i < 1000; i++) { - H_SYNCSTAT_POSTREAD(sc, q->q.statp); - if (H_GETSTAT(q->q.statp) & - (FATM_STAT_COMPLETE | FATM_STAT_ERROR)) - break; - DELAY(1000); - } - if (i == 1000) { - if_printf(sc->ifp, "getprom timeout\n"); - return (EIO); - } - H_SYNCSTAT_POSTREAD(sc, q->q.statp); - if (H_GETSTAT(q->q.statp) & FATM_STAT_ERROR) { - if_printf(sc->ifp, "getprom error\n"); - return (EIO); - } - H_SETSTAT(q->q.statp, FATM_STAT_FREE); - H_SYNCSTAT_PREWRITE(sc, q->q.statp); - NEXT_QUEUE_ENTRY(sc->cmdqueue.tail, FATM_CMD_QLEN); - - bus_dmamap_sync(sc->prom_mem.dmat, sc->prom_mem.map, - BUS_DMASYNC_POSTREAD); - - -#ifdef notdef - { - u_int i; - - printf("PROM: "); - u_char *ptr = (u_char *)sc->prom_mem.mem; - for (i = 0; i < sizeof(struct prom); i++) - printf("%02x ", *ptr++); - printf("\n"); - } -#endif - - prom = (struct prom *)sc->prom_mem.mem; - - bcopy(prom->mac + 2, IFP2IFATM(sc->ifp)->mib.esi, 6); - IFP2IFATM(sc->ifp)->mib.serial = le32toh(prom->serial); - IFP2IFATM(sc->ifp)->mib.hw_version = le32toh(prom->version); - IFP2IFATM(sc->ifp)->mib.sw_version = READ4(sc, FATMO_FIRMWARE_RELEASE); - - if_printf(sc->ifp, "ESI=%02x:%02x:%02x:%02x:%02x:%02x " - "serial=%u hw=0x%x sw=0x%x\n", IFP2IFATM(sc->ifp)->mib.esi[0], - IFP2IFATM(sc->ifp)->mib.esi[1], IFP2IFATM(sc->ifp)->mib.esi[2], IFP2IFATM(sc->ifp)->mib.esi[3], - IFP2IFATM(sc->ifp)->mib.esi[4], IFP2IFATM(sc->ifp)->mib.esi[5], IFP2IFATM(sc->ifp)->mib.serial, - IFP2IFATM(sc->ifp)->mib.hw_version, IFP2IFATM(sc->ifp)->mib.sw_version); - - return (0); -} - -/* - * This is the callback function for bus_dmamap_load. We assume, that we - * have a 32-bit bus and so have always one segment. - */ -static void -dmaload_helper(void *arg, bus_dma_segment_t *segs, int nsegs, int error) -{ - bus_addr_t *ptr = (bus_addr_t *)arg; - - if (error != 0) { - printf("%s: error=%d\n", __func__, error); - return; - } - KASSERT(nsegs == 1, ("too many DMA segments")); - KASSERT(segs[0].ds_addr <= 0xffffffff, ("DMA address too large %lx", - (u_long)segs[0].ds_addr)); - - *ptr = segs[0].ds_addr; -} - -/* - * Allocate a chunk of DMA-able memory and map it. - */ -static int -alloc_dma_memory(struct fatm_softc *sc, const char *nm, struct fatm_mem *mem) -{ - int error; - - mem->mem = NULL; - - if (bus_dma_tag_create(sc->parent_dmat, mem->align, 0, - BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, - NULL, NULL, mem->size, 1, BUS_SPACE_MAXSIZE_32BIT, - BUS_DMA_ALLOCNOW, NULL, NULL, &mem->dmat)) { - if_printf(sc->ifp, "could not allocate %s DMA tag\n", - nm); - return (ENOMEM); - } - - error = bus_dmamem_alloc(mem->dmat, &mem->mem, 0, &mem->map); - if (error) { - if_printf(sc->ifp, "could not allocate %s DMA memory: " - "%d\n", nm, error); - bus_dma_tag_destroy(mem->dmat); - mem->mem = NULL; - return (error); - } - - error = bus_dmamap_load(mem->dmat, mem->map, mem->mem, mem->size, - dmaload_helper, &mem->paddr, BUS_DMA_NOWAIT); - if (error) { - if_printf(sc->ifp, "could not load %s DMA memory: " - "%d\n", nm, error); - bus_dmamem_free(mem->dmat, mem->mem, mem->map); - bus_dma_tag_destroy(mem->dmat); - mem->mem = NULL; - return (error); - } - - DBG(sc, DMA, ("DMA %s V/P/S/Z %p/%lx/%x/%x", nm, mem->mem, - (u_long)mem->paddr, mem->size, mem->align)); - - return (0); -} - -#ifdef TEST_DMA_SYNC -static int -alloc_dma_memoryX(struct fatm_softc *sc, const char *nm, struct fatm_mem *mem) -{ - int error; - - mem->mem = NULL; - - if (bus_dma_tag_create(NULL, mem->align, 0, - BUS_SPACE_MAXADDR_24BIT, BUS_SPACE_MAXADDR, - NULL, NULL, mem->size, 1, mem->size, - BUS_DMA_ALLOCNOW, NULL, NULL, &mem->dmat)) { - if_printf(sc->ifp, "could not allocate %s DMA tag\n", - nm); - return (ENOMEM); - } - - mem->mem = contigmalloc(mem->size, M_DEVBUF, M_WAITOK, - BUS_SPACE_MAXADDR_24BIT, BUS_SPACE_MAXADDR_32BIT, mem->align, 0); - - error = bus_dmamap_create(mem->dmat, 0, &mem->map); - if (error) { - if_printf(sc->ifp, "could not allocate %s DMA map: " - "%d\n", nm, error); - contigfree(mem->mem, mem->size, M_DEVBUF); - bus_dma_tag_destroy(mem->dmat); - mem->mem = NULL; - return (error); - } - - error = bus_dmamap_load(mem->dmat, mem->map, mem->mem, mem->size, - dmaload_helper, &mem->paddr, BUS_DMA_NOWAIT); - if (error) { - if_printf(sc->ifp, "could not load %s DMA memory: " - "%d\n", nm, error); - bus_dmamap_destroy(mem->dmat, mem->map); - contigfree(mem->mem, mem->size, M_DEVBUF); - bus_dma_tag_destroy(mem->dmat); - mem->mem = NULL; - return (error); - } - - DBG(sc, DMA, ("DMAX %s V/P/S/Z %p/%lx/%x/%x", nm, mem->mem, - (u_long)mem->paddr, mem->size, mem->align)); - - printf("DMAX: %s V/P/S/Z %p/%lx/%x/%x", nm, mem->mem, - (u_long)mem->paddr, mem->size, mem->align); - - return (0); -} -#endif /* TEST_DMA_SYNC */ - -/* - * Destroy all resources of an dma-able memory chunk - */ -static void -destroy_dma_memory(struct fatm_mem *mem) -{ - if (mem->mem != NULL) { - bus_dmamap_unload(mem->dmat, mem->map); - bus_dmamem_free(mem->dmat, mem->mem, mem->map); - bus_dma_tag_destroy(mem->dmat); - mem->mem = NULL; - } -} -#ifdef TEST_DMA_SYNC -static void -destroy_dma_memoryX(struct fatm_mem *mem) -{ - if (mem->mem != NULL) { - bus_dmamap_unload(mem->dmat, mem->map); - bus_dmamap_destroy(mem->dmat, mem->map); - contigfree(mem->mem, mem->size, M_DEVBUF); - bus_dma_tag_destroy(mem->dmat); - mem->mem = NULL; - } -} -#endif /* TEST_DMA_SYNC */ - -/* - * Try to supply buffers to the card if there are free entries in the queues - */ -static void -fatm_supply_small_buffers(struct fatm_softc *sc) -{ - int nblocks, nbufs; - struct supqueue *q; - struct rbd *bd; - int i, j, error, cnt; - struct mbuf *m; - struct rbuf *rb; - bus_addr_t phys; - - nbufs = max(4 * sc->open_vccs, 32); - nbufs = min(nbufs, SMALL_POOL_SIZE); - nbufs -= sc->small_cnt; - - nblocks = howmany(nbufs, SMALL_SUPPLY_BLKSIZE); - for (cnt = 0; cnt < nblocks; cnt++) { - q = GET_QUEUE(sc->s1queue, struct supqueue, sc->s1queue.head); - - H_SYNCSTAT_POSTREAD(sc, q->q.statp); - if (H_GETSTAT(q->q.statp) != FATM_STAT_FREE) - break; - - bd = (struct rbd *)q->q.ioblk; - - for (i = 0; i < SMALL_SUPPLY_BLKSIZE; i++) { - if ((rb = LIST_FIRST(&sc->rbuf_free)) == NULL) { - if_printf(sc->ifp, "out of rbufs\n"); - break; - } - MGETHDR(m, M_NOWAIT, MT_DATA); - if (m == NULL) { - LIST_INSERT_HEAD(&sc->rbuf_free, rb, link); - break; - } - M_ALIGN(m, SMALL_BUFFER_LEN); - error = bus_dmamap_load(sc->rbuf_tag, rb->map, - m->m_data, SMALL_BUFFER_LEN, dmaload_helper, - &phys, BUS_DMA_NOWAIT); - if (error) { - if_printf(sc->ifp, - "dmamap_load mbuf failed %d", error); - m_freem(m); - LIST_INSERT_HEAD(&sc->rbuf_free, rb, link); - break; - } - bus_dmamap_sync(sc->rbuf_tag, rb->map, - BUS_DMASYNC_PREREAD); - - LIST_REMOVE(rb, link); - LIST_INSERT_HEAD(&sc->rbuf_used, rb, link); - - rb->m = m; - bd[i].handle = rb - sc->rbufs; - H_SETDESC(bd[i].buffer, phys); - } - - if (i < SMALL_SUPPLY_BLKSIZE) { - for (j = 0; j < i; j++) { - rb = sc->rbufs + bd[j].handle; - bus_dmamap_unload(sc->rbuf_tag, rb->map); - m_free(rb->m); - rb->m = NULL; - - LIST_REMOVE(rb, link); - LIST_INSERT_HEAD(&sc->rbuf_free, rb, link); - } - break; - } - H_SYNCQ_PREWRITE(&sc->s1q_mem, bd, - sizeof(struct rbd) * SMALL_SUPPLY_BLKSIZE); - - H_SETSTAT(q->q.statp, FATM_STAT_PENDING); - H_SYNCSTAT_PREWRITE(sc, q->q.statp); - - WRITE4(sc, q->q.card, q->q.card_ioblk); - BARRIER_W(sc); - - sc->small_cnt += SMALL_SUPPLY_BLKSIZE; - - NEXT_QUEUE_ENTRY(sc->s1queue.head, SMALL_SUPPLY_QLEN); - } -} - -/* - * Try to supply buffers to the card if there are free entries in the queues - * We assume that all buffers are within the address space accessible by the - * card (32-bit), so we don't need bounce buffers. - */ -static void -fatm_supply_large_buffers(struct fatm_softc *sc) -{ - int nbufs, nblocks, cnt; - struct supqueue *q; - struct rbd *bd; - int i, j, error; - struct mbuf *m; - struct rbuf *rb; - bus_addr_t phys; - - nbufs = max(4 * sc->open_vccs, 32); - nbufs = min(nbufs, LARGE_POOL_SIZE); - nbufs -= sc->large_cnt; - - nblocks = howmany(nbufs, LARGE_SUPPLY_BLKSIZE); - - for (cnt = 0; cnt < nblocks; cnt++) { - q = GET_QUEUE(sc->l1queue, struct supqueue, sc->l1queue.head); - - H_SYNCSTAT_POSTREAD(sc, q->q.statp); - if (H_GETSTAT(q->q.statp) != FATM_STAT_FREE) - break; - - bd = (struct rbd *)q->q.ioblk; - - for (i = 0; i < LARGE_SUPPLY_BLKSIZE; i++) { - if ((rb = LIST_FIRST(&sc->rbuf_free)) == NULL) { - if_printf(sc->ifp, "out of rbufs\n"); - break; - } - if ((m = m_getcl(M_NOWAIT, MT_DATA, - M_PKTHDR)) == NULL) { - LIST_INSERT_HEAD(&sc->rbuf_free, rb, link); - break; - } - /* No MEXT_ALIGN */ - m->m_data += MCLBYTES - LARGE_BUFFER_LEN; - error = bus_dmamap_load(sc->rbuf_tag, rb->map, - m->m_data, LARGE_BUFFER_LEN, dmaload_helper, - &phys, BUS_DMA_NOWAIT); - if (error) { - if_printf(sc->ifp, - "dmamap_load mbuf failed %d", error); - m_freem(m); - LIST_INSERT_HEAD(&sc->rbuf_free, rb, link); - break; - } - - bus_dmamap_sync(sc->rbuf_tag, rb->map, - BUS_DMASYNC_PREREAD); - - LIST_REMOVE(rb, link); - LIST_INSERT_HEAD(&sc->rbuf_used, rb, link); - - rb->m = m; - bd[i].handle = rb - sc->rbufs; - H_SETDESC(bd[i].buffer, phys); - } - - if (i < LARGE_SUPPLY_BLKSIZE) { - for (j = 0; j < i; j++) { - rb = sc->rbufs + bd[j].handle; - bus_dmamap_unload(sc->rbuf_tag, rb->map); - m_free(rb->m); - rb->m = NULL; - - LIST_REMOVE(rb, link); - LIST_INSERT_HEAD(&sc->rbuf_free, rb, link); - } - break; - } - H_SYNCQ_PREWRITE(&sc->l1q_mem, bd, - sizeof(struct rbd) * LARGE_SUPPLY_BLKSIZE); - - H_SETSTAT(q->q.statp, FATM_STAT_PENDING); - H_SYNCSTAT_PREWRITE(sc, q->q.statp); - WRITE4(sc, q->q.card, q->q.card_ioblk); - BARRIER_W(sc); - - sc->large_cnt += LARGE_SUPPLY_BLKSIZE; - - NEXT_QUEUE_ENTRY(sc->l1queue.head, LARGE_SUPPLY_QLEN); - } -} - - -/* - * Actually start the card. The lock must be held here. - * Reset, load the firmware, start it, initializes queues, read the PROM - * and supply receive buffers to the card. - */ -static void -fatm_init_locked(struct fatm_softc *sc) -{ - struct rxqueue *q; - int i, c, error; - uint32_t start; - - DBG(sc, INIT, ("initialize")); - if (sc->ifp->if_drv_flags & IFF_DRV_RUNNING) - fatm_stop(sc); - - /* - * Hard reset the board - */ - if (fatm_reset(sc)) - return; - - start = firmware_load(sc); - if (fatm_start_firmware(sc, start) || fatm_init_cmd(sc) || - fatm_getprom(sc)) { - fatm_reset(sc); - return; - } - - /* - * Handle media - */ - c = READ4(sc, FATMO_MEDIA_TYPE); - switch (c) { - - case FORE_MT_TAXI_100: - IFP2IFATM(sc->ifp)->mib.media = IFM_ATM_TAXI_100; - IFP2IFATM(sc->ifp)->mib.pcr = 227273; - break; - - case FORE_MT_TAXI_140: - IFP2IFATM(sc->ifp)->mib.media = IFM_ATM_TAXI_140; - IFP2IFATM(sc->ifp)->mib.pcr = 318181; - break; - - case FORE_MT_UTP_SONET: - IFP2IFATM(sc->ifp)->mib.media = IFM_ATM_UTP_155; - IFP2IFATM(sc->ifp)->mib.pcr = 353207; - break; - - case FORE_MT_MM_OC3_ST: - case FORE_MT_MM_OC3_SC: - IFP2IFATM(sc->ifp)->mib.media = IFM_ATM_MM_155; - IFP2IFATM(sc->ifp)->mib.pcr = 353207; - break; - - case FORE_MT_SM_OC3_ST: - case FORE_MT_SM_OC3_SC: - IFP2IFATM(sc->ifp)->mib.media = IFM_ATM_SM_155; - IFP2IFATM(sc->ifp)->mib.pcr = 353207; - break; - - default: - log(LOG_ERR, "fatm: unknown media type %d\n", c); - IFP2IFATM(sc->ifp)->mib.media = IFM_ATM_UNKNOWN; - IFP2IFATM(sc->ifp)->mib.pcr = 353207; - break; - } - sc->ifp->if_baudrate = 53 * 8 * IFP2IFATM(sc->ifp)->mib.pcr; - utopia_init_media(&sc->utopia); - - /* - * Initialize the RBDs - */ - for (i = 0; i < FATM_RX_QLEN; i++) { - q = GET_QUEUE(sc->rxqueue, struct rxqueue, i); - WRITE4(sc, q->q.card + 0, q->q.card_ioblk); - } - BARRIER_W(sc); - - /* - * Supply buffers to the card - */ - fatm_supply_small_buffers(sc); - fatm_supply_large_buffers(sc); - - /* - * Now set flags, that we are ready - */ - sc->ifp->if_drv_flags |= IFF_DRV_RUNNING; - - /* - * Start the watchdog timer - */ - callout_reset(&sc->watchdog_timer, hz * 5, fatm_watchdog, sc); - - /* start SUNI */ - utopia_start(&sc->utopia); - - ATMEV_SEND_IFSTATE_CHANGED(IFP2IFATM(sc->ifp), - sc->utopia.carrier == UTP_CARR_OK); - - /* start all channels */ - for (i = 0; i < FORE_MAX_VCC + 1; i++) - if (sc->vccs[i] != NULL) { - sc->vccs[i]->vflags |= FATM_VCC_REOPEN; - error = fatm_load_vc(sc, sc->vccs[i]); - if (error != 0) { - if_printf(sc->ifp, "reopening %u " - "failed: %d\n", i, error); - sc->vccs[i]->vflags &= ~FATM_VCC_REOPEN; - } - } - - DBG(sc, INIT, ("done")); -} - -/* - * This is the exported as initialisation function. - */ -static void -fatm_init(void *p) -{ - struct fatm_softc *sc = p; - - FATM_LOCK(sc); - fatm_init_locked(sc); - FATM_UNLOCK(sc); -} - -/************************************************************/ -/* - * The INTERRUPT handling - */ -/* - * Check the command queue. If a command was completed, call the completion - * function for that command. - */ -static void -fatm_intr_drain_cmd(struct fatm_softc *sc) -{ - struct cmdqueue *q; - int stat; - - /* - * Drain command queue - */ - for (;;) { - q = GET_QUEUE(sc->cmdqueue, struct cmdqueue, sc->cmdqueue.tail); - - H_SYNCSTAT_POSTREAD(sc, q->q.statp); - stat = H_GETSTAT(q->q.statp); - - if (stat != FATM_STAT_COMPLETE && - stat != (FATM_STAT_COMPLETE | FATM_STAT_ERROR) && - stat != FATM_STAT_ERROR) - break; - - (*q->cb)(sc, q); - - H_SETSTAT(q->q.statp, FATM_STAT_FREE); - H_SYNCSTAT_PREWRITE(sc, q->q.statp); - - NEXT_QUEUE_ENTRY(sc->cmdqueue.tail, FATM_CMD_QLEN); - } -} - -/* - * Drain the small buffer supply queue. - */ -static void -fatm_intr_drain_small_buffers(struct fatm_softc *sc) -{ - struct supqueue *q; - int stat; - - for (;;) { - q = GET_QUEUE(sc->s1queue, struct supqueue, sc->s1queue.tail); - - H_SYNCSTAT_POSTREAD(sc, q->q.statp); - stat = H_GETSTAT(q->q.statp); - - if ((stat & FATM_STAT_COMPLETE) == 0) - break; - if (stat & FATM_STAT_ERROR) - log(LOG_ERR, "%s: status %x\n", __func__, stat); - - H_SETSTAT(q->q.statp, FATM_STAT_FREE); - H_SYNCSTAT_PREWRITE(sc, q->q.statp); - - NEXT_QUEUE_ENTRY(sc->s1queue.tail, SMALL_SUPPLY_QLEN); - } -} - -/* - * Drain the large buffer supply queue. - */ -static void -fatm_intr_drain_large_buffers(struct fatm_softc *sc) -{ - struct supqueue *q; - int stat; - - for (;;) { - q = GET_QUEUE(sc->l1queue, struct supqueue, sc->l1queue.tail); - - H_SYNCSTAT_POSTREAD(sc, q->q.statp); - stat = H_GETSTAT(q->q.statp); - - if ((stat & FATM_STAT_COMPLETE) == 0) - break; - if (stat & FATM_STAT_ERROR) - log(LOG_ERR, "%s status %x\n", __func__, stat); - - H_SETSTAT(q->q.statp, FATM_STAT_FREE); - H_SYNCSTAT_PREWRITE(sc, q->q.statp); - - NEXT_QUEUE_ENTRY(sc->l1queue.tail, LARGE_SUPPLY_QLEN); - } -} - -/* - * Check the receive queue. Send any received PDU up the protocol stack - * (except when there was an error or the VCI appears to be closed. In this - * case discard the PDU). - */ -static void -fatm_intr_drain_rx(struct fatm_softc *sc) -{ - struct rxqueue *q; - int stat, mlen; - u_int i; - uint32_t h; - struct mbuf *last, *m0; - struct rpd *rpd; - struct rbuf *rb; - u_int vci, vpi, pt; - struct atm_pseudohdr aph; - struct ifnet *ifp; - struct card_vcc *vc; - - for (;;) { - q = GET_QUEUE(sc->rxqueue, struct rxqueue, sc->rxqueue.tail); - - H_SYNCSTAT_POSTREAD(sc, q->q.statp); - stat = H_GETSTAT(q->q.statp); - - if ((stat & FATM_STAT_COMPLETE) == 0) - break; - - rpd = (struct rpd *)q->q.ioblk; - H_SYNCQ_POSTREAD(&sc->rxq_mem, rpd, RPD_SIZE); - - rpd->nseg = le32toh(rpd->nseg); - mlen = 0; - m0 = last = NULL; - for (i = 0; i < rpd->nseg; i++) { - rb = sc->rbufs + rpd->segment[i].handle; - if (m0 == NULL) { - m0 = last = rb->m; - } else { - last->m_next = rb->m; - last = rb->m; - } - last->m_next = NULL; - if (last->m_flags & M_EXT) - sc->large_cnt--; - else - sc->small_cnt--; - bus_dmamap_sync(sc->rbuf_tag, rb->map, - BUS_DMASYNC_POSTREAD); - bus_dmamap_unload(sc->rbuf_tag, rb->map); - rb->m = NULL; - - LIST_REMOVE(rb, link); - LIST_INSERT_HEAD(&sc->rbuf_free, rb, link); - - last->m_len = le32toh(rpd->segment[i].length); - mlen += last->m_len; - } - - m0->m_pkthdr.len = mlen; - m0->m_pkthdr.rcvif = sc->ifp; - - h = le32toh(rpd->atm_header); - vpi = (h >> 20) & 0xff; - vci = (h >> 4 ) & 0xffff; - pt = (h >> 1 ) & 0x7; - - /* - * Locate the VCC this packet belongs to - */ - if (!VC_OK(sc, vpi, vci)) - vc = NULL; - else if ((vc = sc->vccs[vci]) == NULL || - !(sc->vccs[vci]->vflags & FATM_VCC_OPEN)) { - sc->istats.rx_closed++; - vc = NULL; - } - - DBG(sc, RCV, ("RCV: vc=%u.%u pt=%u mlen=%d %s", vpi, vci, - pt, mlen, vc == NULL ? "dropped" : "")); - - if (vc == NULL) { - m_freem(m0); - } else { -#ifdef ENABLE_BPF - if (!(vc->param.flags & ATMIO_FLAG_NG) && - vc->param.aal == ATMIO_AAL_5 && - (vc->param.flags & ATM_PH_LLCSNAP)) - BPF_MTAP(sc->ifp, m0); -#endif - - ATM_PH_FLAGS(&aph) = vc->param.flags; - ATM_PH_VPI(&aph) = vpi; - ATM_PH_SETVCI(&aph, vci); - - ifp = sc->ifp; - if_inc_counter(ifp, IFCOUNTER_IPACKETS, 1); - - vc->ipackets++; - vc->ibytes += m0->m_pkthdr.len; - - atm_input(ifp, &aph, m0, vc->rxhand); - } - - H_SETSTAT(q->q.statp, FATM_STAT_FREE); - H_SYNCSTAT_PREWRITE(sc, q->q.statp); - - WRITE4(sc, q->q.card, q->q.card_ioblk); - BARRIER_W(sc); - - NEXT_QUEUE_ENTRY(sc->rxqueue.tail, FATM_RX_QLEN); - } -} - -/* - * Check the transmit queue. Free the mbuf chains that we were transmitting. - */ -static void -fatm_intr_drain_tx(struct fatm_softc *sc) -{ - struct txqueue *q; - int stat; - - /* - * Drain tx queue - */ - for (;;) { - q = GET_QUEUE(sc->txqueue, struct txqueue, sc->txqueue.tail); - - H_SYNCSTAT_POSTREAD(sc, q->q.statp); - stat = H_GETSTAT(q->q.statp); - - if (stat != FATM_STAT_COMPLETE && - stat != (FATM_STAT_COMPLETE | FATM_STAT_ERROR) && - stat != FATM_STAT_ERROR) - break; - - H_SETSTAT(q->q.statp, FATM_STAT_FREE); - H_SYNCSTAT_PREWRITE(sc, q->q.statp); - - bus_dmamap_sync(sc->tx_tag, q->map, BUS_DMASYNC_POSTWRITE); - bus_dmamap_unload(sc->tx_tag, q->map); - - m_freem(q->m); - q->m = NULL; - sc->txcnt--; - - NEXT_QUEUE_ENTRY(sc->txqueue.tail, FATM_TX_QLEN); - } -} - -/* - * Interrupt handler - */ -static void -fatm_intr(void *p) -{ - struct fatm_softc *sc = (struct fatm_softc *)p; - - FATM_LOCK(sc); - if (!READ4(sc, FATMO_PSR)) { - FATM_UNLOCK(sc); - return; - } - WRITE4(sc, FATMO_HCR, FATM_HCR_CLRIRQ); - - if (!(sc->ifp->if_drv_flags & IFF_DRV_RUNNING)) { - FATM_UNLOCK(sc); - return; - } - fatm_intr_drain_cmd(sc); - fatm_intr_drain_rx(sc); - fatm_intr_drain_tx(sc); - fatm_intr_drain_small_buffers(sc); - fatm_intr_drain_large_buffers(sc); - fatm_supply_small_buffers(sc); - fatm_supply_large_buffers(sc); - - FATM_UNLOCK(sc); - - if (sc->retry_tx && _IF_QLEN(&sc->ifp->if_snd)) - (*sc->ifp->if_start)(sc->ifp); -} - -/* - * Get device statistics. This must be called with the softc locked. - * We use a preallocated buffer, so we need to protect this buffer. - * We do this by using a condition variable and a flag. If the flag is set - * the buffer is in use by one thread (one thread is executing a GETSTAT - * card command). In this case all other threads that are trying to get - * statistics block on that condition variable. When the thread finishes - * using the buffer it resets the flag and signals the condition variable. This - * will wakeup the next thread that is waiting for the buffer. If the interface - * is stopped the stopping function will broadcast the cv. All threads will - * find that the interface has been stopped and return. - * - * Acquiring of the buffer is done by the fatm_getstat() function. The freeing - * must be done by the caller when he has finished using the buffer. - */ -static void -fatm_getstat_complete(struct fatm_softc *sc, struct cmdqueue *q) -{ - - H_SYNCSTAT_POSTREAD(sc, q->q.statp); - if (H_GETSTAT(q->q.statp) & FATM_STAT_ERROR) { - sc->istats.get_stat_errors++; - q->error = EIO; - } - wakeup(&sc->sadi_mem); -} -static int -fatm_getstat(struct fatm_softc *sc) -{ - int error; - struct cmdqueue *q; - - /* - * Wait until either the interface is stopped or we can get the - * statistics buffer - */ - for (;;) { - if (!(sc->ifp->if_drv_flags & IFF_DRV_RUNNING)) - return (EIO); - if (!(sc->flags & FATM_STAT_INUSE)) - break; - cv_wait(&sc->cv_stat, &sc->mtx); - } - sc->flags |= FATM_STAT_INUSE; - - q = GET_QUEUE(sc->cmdqueue, struct cmdqueue, sc->cmdqueue.head); - - H_SYNCSTAT_POSTREAD(sc, q->q.statp); - if (!(H_GETSTAT(q->q.statp) & FATM_STAT_FREE)) { - sc->istats.cmd_queue_full++; - return (EIO); - } - NEXT_QUEUE_ENTRY(sc->cmdqueue.head, FATM_CMD_QLEN); - - q->error = 0; - q->cb = fatm_getstat_complete; - H_SETSTAT(q->q.statp, FATM_STAT_PENDING); - H_SYNCSTAT_PREWRITE(sc, q->q.statp); - - bus_dmamap_sync(sc->sadi_mem.dmat, sc->sadi_mem.map, - BUS_DMASYNC_PREREAD); - - WRITE4(sc, q->q.card + FATMOC_GSTAT_BUF, - sc->sadi_mem.paddr); - BARRIER_W(sc); - WRITE4(sc, q->q.card + FATMOC_OP, - FATM_OP_REQUEST_STATS | FATM_OP_INTERRUPT_SEL); - BARRIER_W(sc); - - /* - * Wait for the command to complete - */ - error = msleep(&sc->sadi_mem, &sc->mtx, PZERO | PCATCH, - "fatm_stat", hz); - - switch (error) { - - case EWOULDBLOCK: - error = EIO; - break; - - case ERESTART: - error = EINTR; - break; - - case 0: - bus_dmamap_sync(sc->sadi_mem.dmat, sc->sadi_mem.map, - BUS_DMASYNC_POSTREAD); - error = q->error; - break; - } - - /* - * Swap statistics - */ - if (q->error == 0) { - u_int i; - uint32_t *p = (uint32_t *)sc->sadi_mem.mem; - - for (i = 0; i < sizeof(struct fatm_stats) / sizeof(uint32_t); - i++, p++) - *p = be32toh(*p); - } - - return (error); -} - -/* - * Create a copy of a single mbuf. It can have either internal or - * external data, it may have a packet header. External data is really - * copied, so the new buffer is writeable. - */ -static struct mbuf * -copy_mbuf(struct mbuf *m) -{ - struct mbuf *new; - - MGET(new, M_NOWAIT, MT_DATA); - if (new == NULL) - return (NULL); - - if (m->m_flags & M_PKTHDR) { - M_MOVE_PKTHDR(new, m); - if (m->m_len > MHLEN) - MCLGET(new, M_WAITOK); - } else { - if (m->m_len > MLEN) - MCLGET(new, M_WAITOK); - } - - bcopy(m->m_data, new->m_data, m->m_len); - new->m_len = m->m_len; - new->m_flags &= ~M_RDONLY; - - return (new); -} - -/* - * All segments must have a four byte aligned buffer address and a four - * byte aligned length. Step through an mbuf chain and check these conditions. - * If the buffer address is not aligned and this is a normal mbuf, move - * the data down. Else make a copy of the mbuf with aligned data. - * If the buffer length is not aligned steel data from the next mbuf. - * We don't need to check whether this has more than one external reference, - * because steeling data doesn't change the external cluster. - * If the last mbuf is not aligned, fill with zeroes. - * - * Return packet length (well we should have this in the packet header), - * but be careful not to count the zero fill at the end. - * - * If fixing fails free the chain and zero the pointer. - * - * We assume, that aligning the virtual address also aligns the mapped bus - * address. - */ -static u_int -fatm_fix_chain(struct fatm_softc *sc, struct mbuf **mp) -{ - struct mbuf *m = *mp, *prev = NULL, *next, *new; - u_int mlen = 0, fill = 0; - int first, off; - u_char *d, *cp; - - do { - next = m->m_next; - - if ((uintptr_t)mtod(m, void *) % 4 != 0 || - (m->m_len % 4 != 0 && next)) { - /* - * Needs fixing - */ - first = (m == *mp); - - d = mtod(m, u_char *); - if ((off = (uintptr_t)(void *)d % 4) != 0) { - if (M_WRITABLE(m)) { - sc->istats.fix_addr_copy++; - bcopy(d, d - off, m->m_len); - m->m_data = (caddr_t)(d - off); - } else { - if ((new = copy_mbuf(m)) == NULL) { - sc->istats.fix_addr_noext++; - goto fail; - } - sc->istats.fix_addr_ext++; - if (prev) - prev->m_next = new; - new->m_next = next; - m_free(m); - m = new; - } - } - - if ((off = m->m_len % 4) != 0) { - if (!M_WRITABLE(m)) { - if ((new = copy_mbuf(m)) == NULL) { - sc->istats.fix_len_noext++; - goto fail; - } - sc->istats.fix_len_copy++; - if (prev) - prev->m_next = new; - new->m_next = next; - m_free(m); - m = new; - } else - sc->istats.fix_len++; - d = mtod(m, u_char *) + m->m_len; - off = 4 - off; - while (off) { - if (next == NULL) { - *d++ = 0; - fill++; - } else if (next->m_len == 0) { - sc->istats.fix_empty++; - next = m_free(next); - continue; - } else { - cp = mtod(next, u_char *); - *d++ = *cp++; - next->m_len--; - next->m_data = (caddr_t)cp; - } - off--; - m->m_len++; - } - } - - if (first) - *mp = m; - } - - mlen += m->m_len; - prev = m; - } while ((m = next) != NULL); - - return (mlen - fill); - - fail: - m_freem(*mp); - *mp = NULL; - return (0); -} - -/* - * The helper function is used to load the computed physical addresses - * into the transmit descriptor. - */ -static void -fatm_tpd_load(void *varg, bus_dma_segment_t *segs, int nsegs, - bus_size_t mapsize, int error) -{ - struct tpd *tpd = varg; - - if (error) - return; - - KASSERT(nsegs <= TPD_EXTENSIONS + TXD_FIXED, ("too many segments")); - - tpd->spec = 0; - while (nsegs--) { - H_SETDESC(tpd->segment[tpd->spec].buffer, segs->ds_addr); - H_SETDESC(tpd->segment[tpd->spec].length, segs->ds_len); - tpd->spec++; - segs++; - } -} - -/* - * Start output. - * - * Note, that we update the internal statistics without the lock here. - */ -static int -fatm_tx(struct fatm_softc *sc, struct mbuf *m, struct card_vcc *vc, u_int mlen) -{ - struct txqueue *q; - u_int nblks; - int error, aal, nsegs; - struct tpd *tpd; - - /* - * Get a queue element. - * If there isn't one - try to drain the transmit queue - * We used to sleep here if that doesn't help, but we - * should not sleep here, because we are called with locks. - */ - q = GET_QUEUE(sc->txqueue, struct txqueue, sc->txqueue.head); - - H_SYNCSTAT_POSTREAD(sc, q->q.statp); - if (H_GETSTAT(q->q.statp) != FATM_STAT_FREE) { - fatm_intr_drain_tx(sc); - H_SYNCSTAT_POSTREAD(sc, q->q.statp); - if (H_GETSTAT(q->q.statp) != FATM_STAT_FREE) { - if (sc->retry_tx) { - sc->istats.tx_retry++; - IF_PREPEND(&sc->ifp->if_snd, m); - return (1); - } - sc->istats.tx_queue_full++; - m_freem(m); - return (0); - } - sc->istats.tx_queue_almost_full++; - } - - tpd = q->q.ioblk; - - m->m_data += sizeof(struct atm_pseudohdr); - m->m_len -= sizeof(struct atm_pseudohdr); - -#ifdef ENABLE_BPF - if (!(vc->param.flags & ATMIO_FLAG_NG) && - vc->param.aal == ATMIO_AAL_5 && - (vc->param.flags & ATM_PH_LLCSNAP)) - BPF_MTAP(sc->ifp, m); -#endif - - /* map the mbuf */ - error = bus_dmamap_load_mbuf(sc->tx_tag, q->map, m, - fatm_tpd_load, tpd, BUS_DMA_NOWAIT); - if(error) { - if_inc_counter(sc->ifp, IFCOUNTER_OERRORS, 1); - if_printf(sc->ifp, "mbuf loaded error=%d\n", error); - m_freem(m); - return (0); - } - nsegs = tpd->spec; - - bus_dmamap_sync(sc->tx_tag, q->map, BUS_DMASYNC_PREWRITE); - - /* - * OK. Now go and do it. - */ - aal = (vc->param.aal == ATMIO_AAL_5) ? 5 : 0; - - H_SETSTAT(q->q.statp, FATM_STAT_PENDING); - H_SYNCSTAT_PREWRITE(sc, q->q.statp); - q->m = m; - - /* - * If the transmit queue is almost full, schedule a - * transmit interrupt so that transmit descriptors can - * be recycled. - */ - H_SETDESC(tpd->spec, TDX_MKSPEC((sc->txcnt >= - (4 * FATM_TX_QLEN) / 5), aal, nsegs, mlen)); - H_SETDESC(tpd->atm_header, TDX_MKHDR(vc->param.vpi, - vc->param.vci, 0, 0)); - - if (vc->param.traffic == ATMIO_TRAFFIC_UBR) - H_SETDESC(tpd->stream, 0); - else { - u_int i; - - for (i = 0; i < RATE_TABLE_SIZE; i++) - if (rate_table[i].cell_rate < vc->param.tparam.pcr) - break; - if (i > 0) - i--; - H_SETDESC(tpd->stream, rate_table[i].ratio); - } - H_SYNCQ_PREWRITE(&sc->txq_mem, tpd, TPD_SIZE); - - nblks = TDX_SEGS2BLKS(nsegs); - - DBG(sc, XMIT, ("XMIT: mlen=%d spec=0x%x nsegs=%d blocks=%d", - mlen, le32toh(tpd->spec), nsegs, nblks)); - - WRITE4(sc, q->q.card + 0, q->q.card_ioblk | nblks); - BARRIER_W(sc); - - sc->txcnt++; - if_inc_counter(sc->ifp, IFCOUNTER_OPACKETS, 1); - vc->obytes += m->m_pkthdr.len; - vc->opackets++; - - NEXT_QUEUE_ENTRY(sc->txqueue.head, FATM_TX_QLEN); - - return (0); -} - -static void -fatm_start(struct ifnet *ifp) -{ - struct atm_pseudohdr aph; - struct fatm_softc *sc; - struct mbuf *m; - u_int mlen, vpi, vci; - struct card_vcc *vc; - - sc = ifp->if_softc; - - while (1) { - IF_DEQUEUE(&ifp->if_snd, m); - if (m == NULL) - break; - - /* - * Loop through the mbuf chain and compute the total length - * of the packet. Check that all data pointer are - * 4 byte aligned. If they are not, call fatm_mfix to - * fix that problem. This comes more or less from the - * en driver. - */ - mlen = fatm_fix_chain(sc, &m); - if (m == NULL) - continue; - - if (m->m_len < sizeof(struct atm_pseudohdr) && - (m = m_pullup(m, sizeof(struct atm_pseudohdr))) == NULL) - continue; - - aph = *mtod(m, struct atm_pseudohdr *); - mlen -= sizeof(struct atm_pseudohdr); - - if (mlen == 0) { - m_freem(m); - continue; - } - if (mlen > FATM_MAXPDU) { - sc->istats.tx_pdu2big++; - m_freem(m); - continue; - } - - vci = ATM_PH_VCI(&aph); - vpi = ATM_PH_VPI(&aph); - - /* - * From here on we need the softc - */ - FATM_LOCK(sc); - if (!(ifp->if_drv_flags & IFF_DRV_RUNNING)) { - FATM_UNLOCK(sc); - m_freem(m); - break; - } - if (!VC_OK(sc, vpi, vci) || (vc = sc->vccs[vci]) == NULL || - !(vc->vflags & FATM_VCC_OPEN)) { - FATM_UNLOCK(sc); - m_freem(m); - continue; - } - if (fatm_tx(sc, m, vc, mlen)) { - FATM_UNLOCK(sc); - break; - } - FATM_UNLOCK(sc); - } -} - -/* - * VCC management - * - * This may seem complicated. The reason for this is, that we need an - * asynchronuous open/close for the NATM VCCs because our ioctl handler - * is called with the radix node head of the routing table locked. Therefor - * we cannot sleep there and wait for the open/close to succeed. For this - * reason we just initiate the operation from the ioctl. - */ - -/* - * Command the card to open/close a VC. - * Return the queue entry for waiting if we are successful. - */ -static struct cmdqueue * -fatm_start_vcc(struct fatm_softc *sc, u_int vpi, u_int vci, uint32_t cmd, - u_int mtu, void (*func)(struct fatm_softc *, struct cmdqueue *)) -{ - struct cmdqueue *q; - - q = GET_QUEUE(sc->cmdqueue, struct cmdqueue, sc->cmdqueue.head); - - H_SYNCSTAT_POSTREAD(sc, q->q.statp); - if (!(H_GETSTAT(q->q.statp) & FATM_STAT_FREE)) { - sc->istats.cmd_queue_full++; - return (NULL); - } - NEXT_QUEUE_ENTRY(sc->cmdqueue.head, FATM_CMD_QLEN); - - q->error = 0; - q->cb = func; - H_SETSTAT(q->q.statp, FATM_STAT_PENDING); - H_SYNCSTAT_PREWRITE(sc, q->q.statp); - - WRITE4(sc, q->q.card + FATMOC_ACTIN_VPVC, MKVPVC(vpi, vci)); - BARRIER_W(sc); - WRITE4(sc, q->q.card + FATMOC_ACTIN_MTU, mtu); - BARRIER_W(sc); - WRITE4(sc, q->q.card + FATMOC_OP, cmd); - BARRIER_W(sc); - - return (q); -} - -/* - * The VC has been opened/closed and somebody has been waiting for this. - * Wake him up. - */ -static void -fatm_cmd_complete(struct fatm_softc *sc, struct cmdqueue *q) -{ - - H_SYNCSTAT_POSTREAD(sc, q->q.statp); - if (H_GETSTAT(q->q.statp) & FATM_STAT_ERROR) { - sc->istats.get_stat_errors++; - q->error = EIO; - } - wakeup(q); -} - -/* - * Open complete - */ -static void -fatm_open_finish(struct fatm_softc *sc, struct card_vcc *vc) -{ - vc->vflags &= ~FATM_VCC_TRY_OPEN; - vc->vflags |= FATM_VCC_OPEN; - - if (vc->vflags & FATM_VCC_REOPEN) { - vc->vflags &= ~FATM_VCC_REOPEN; - return; - } - - /* inform management if this is not an NG - * VCC or it's an NG PVC. */ - if (!(vc->param.flags & ATMIO_FLAG_NG) || - (vc->param.flags & ATMIO_FLAG_PVC)) - ATMEV_SEND_VCC_CHANGED(IFP2IFATM(sc->ifp), 0, vc->param.vci, 1); -} - -/* - * The VC that we have tried to open asynchronuosly has been opened. - */ -static void -fatm_open_complete(struct fatm_softc *sc, struct cmdqueue *q) -{ - u_int vci; - struct card_vcc *vc; - - vci = GETVCI(READ4(sc, q->q.card + FATMOC_ACTIN_VPVC)); - vc = sc->vccs[vci]; - H_SYNCSTAT_POSTREAD(sc, q->q.statp); - if (H_GETSTAT(q->q.statp) & FATM_STAT_ERROR) { - sc->istats.get_stat_errors++; - sc->vccs[vci] = NULL; - uma_zfree(sc->vcc_zone, vc); - if_printf(sc->ifp, "opening VCI %u failed\n", vci); - return; - } - fatm_open_finish(sc, vc); -} - -/* - * Wait on the queue entry until the VCC is opened/closed. - */ -static int -fatm_waitvcc(struct fatm_softc *sc, struct cmdqueue *q) -{ - int error; - - /* - * Wait for the command to complete - */ - error = msleep(q, &sc->mtx, PZERO | PCATCH, "fatm_vci", hz); - - if (error != 0) - return (error); - return (q->error); -} - -/* - * Start to open a VCC. This just initiates the operation. - */ -static int -fatm_open_vcc(struct fatm_softc *sc, struct atmio_openvcc *op) -{ - int error; - struct card_vcc *vc; - - /* - * Check parameters - */ - if ((op->param.flags & ATMIO_FLAG_NOTX) && - (op->param.flags & ATMIO_FLAG_NORX)) - return (EINVAL); - - if (!VC_OK(sc, op->param.vpi, op->param.vci)) - return (EINVAL); - if (op->param.aal != ATMIO_AAL_0 && op->param.aal != ATMIO_AAL_5) - return (EINVAL); - - vc = uma_zalloc(sc->vcc_zone, M_NOWAIT | M_ZERO); - if (vc == NULL) - return (ENOMEM); - - error = 0; - - FATM_LOCK(sc); - if (!(sc->ifp->if_drv_flags & IFF_DRV_RUNNING)) { - error = EIO; - goto done; - } - if (sc->vccs[op->param.vci] != NULL) { - error = EBUSY; - goto done; - } - vc->param = op->param; - vc->rxhand = op->rxhand; - - switch (op->param.traffic) { - - case ATMIO_TRAFFIC_UBR: - break; - - case ATMIO_TRAFFIC_CBR: - if (op->param.tparam.pcr == 0 || - op->param.tparam.pcr > IFP2IFATM(sc->ifp)->mib.pcr) { - error = EINVAL; - goto done; - } - break; - - default: - error = EINVAL; - goto done; - } - vc->ibytes = vc->obytes = 0; - vc->ipackets = vc->opackets = 0; - - vc->vflags = FATM_VCC_TRY_OPEN; - sc->vccs[op->param.vci] = vc; - sc->open_vccs++; - - error = fatm_load_vc(sc, vc); - if (error != 0) { - sc->vccs[op->param.vci] = NULL; - sc->open_vccs--; - goto done; - } - - /* don't free below */ - vc = NULL; - - done: - FATM_UNLOCK(sc); - if (vc != NULL) - uma_zfree(sc->vcc_zone, vc); - return (error); -} - -/* - * Try to initialize the given VC - */ -static int -fatm_load_vc(struct fatm_softc *sc, struct card_vcc *vc) -{ - uint32_t cmd; - struct cmdqueue *q; - int error; - - /* Command and buffer strategy */ - cmd = FATM_OP_ACTIVATE_VCIN | FATM_OP_INTERRUPT_SEL | (0 << 16); - if (vc->param.aal == ATMIO_AAL_0) - cmd |= (0 << 8); - else - cmd |= (5 << 8); - - q = fatm_start_vcc(sc, vc->param.vpi, vc->param.vci, cmd, 1, - (vc->param.flags & ATMIO_FLAG_ASYNC) ? - fatm_open_complete : fatm_cmd_complete); - if (q == NULL) - return (EIO); - - if (!(vc->param.flags & ATMIO_FLAG_ASYNC)) { - error = fatm_waitvcc(sc, q); - if (error != 0) - return (error); - fatm_open_finish(sc, vc); - } - return (0); -} - -/* - * Finish close - */ -static void -fatm_close_finish(struct fatm_softc *sc, struct card_vcc *vc) -{ - /* inform management of this is not an NG - * VCC or it's an NG PVC. */ - if (!(vc->param.flags & ATMIO_FLAG_NG) || - (vc->param.flags & ATMIO_FLAG_PVC)) - ATMEV_SEND_VCC_CHANGED(IFP2IFATM(sc->ifp), 0, vc->param.vci, 0); - - sc->vccs[vc->param.vci] = NULL; - sc->open_vccs--; - - uma_zfree(sc->vcc_zone, vc); -} - -/* - * The VC has been closed. - */ -static void -fatm_close_complete(struct fatm_softc *sc, struct cmdqueue *q) -{ - u_int vci; - struct card_vcc *vc; - - vci = GETVCI(READ4(sc, q->q.card + FATMOC_ACTIN_VPVC)); - vc = sc->vccs[vci]; - H_SYNCSTAT_POSTREAD(sc, q->q.statp); - if (H_GETSTAT(q->q.statp) & FATM_STAT_ERROR) { - sc->istats.get_stat_errors++; - /* keep the VCC in that state */ - if_printf(sc->ifp, "closing VCI %u failed\n", vci); - return; - } - - fatm_close_finish(sc, vc); -} - -/* - * Initiate closing a VCC - */ -static int -fatm_close_vcc(struct fatm_softc *sc, struct atmio_closevcc *cl) -{ - int error; - struct cmdqueue *q; - struct card_vcc *vc; - - if (!VC_OK(sc, cl->vpi, cl->vci)) - return (EINVAL); - - error = 0; - - FATM_LOCK(sc); - if (!(sc->ifp->if_drv_flags & IFF_DRV_RUNNING)) { - error = EIO; - goto done; - } - vc = sc->vccs[cl->vci]; - if (vc == NULL || !(vc->vflags & (FATM_VCC_OPEN | FATM_VCC_TRY_OPEN))) { - error = ENOENT; - goto done; - } - - q = fatm_start_vcc(sc, cl->vpi, cl->vci, - FATM_OP_DEACTIVATE_VCIN | FATM_OP_INTERRUPT_SEL, 1, - (vc->param.flags & ATMIO_FLAG_ASYNC) ? - fatm_close_complete : fatm_cmd_complete); - if (q == NULL) { - error = EIO; - goto done; - } - - vc->vflags &= ~(FATM_VCC_OPEN | FATM_VCC_TRY_OPEN); - vc->vflags |= FATM_VCC_TRY_CLOSE; - - if (!(vc->param.flags & ATMIO_FLAG_ASYNC)) { - error = fatm_waitvcc(sc, q); - if (error != 0) - goto done; - - fatm_close_finish(sc, vc); - } - - done: - FATM_UNLOCK(sc); - return (error); -} - -/* - * IOCTL handler - */ -static int -fatm_ioctl(struct ifnet *ifp, u_long cmd, caddr_t arg) -{ - int error; - struct fatm_softc *sc = ifp->if_softc; - struct ifaddr *ifa = (struct ifaddr *)arg; - struct ifreq *ifr = (struct ifreq *)arg; - struct atmio_closevcc *cl = (struct atmio_closevcc *)arg; - struct atmio_openvcc *op = (struct atmio_openvcc *)arg; - struct atmio_vcctable *vtab; - - error = 0; - switch (cmd) { - - case SIOCATMOPENVCC: /* kernel internal use */ - error = fatm_open_vcc(sc, op); - break; - - case SIOCATMCLOSEVCC: /* kernel internal use */ - error = fatm_close_vcc(sc, cl); - break; - - case SIOCSIFADDR: - FATM_LOCK(sc); - ifp->if_flags |= IFF_UP; - if (!(ifp->if_drv_flags & IFF_DRV_RUNNING)) - fatm_init_locked(sc); - switch (ifa->ifa_addr->sa_family) { -#ifdef INET - case AF_INET: - case AF_INET6: - ifa->ifa_rtrequest = atm_rtrequest; - break; -#endif - default: - break; - } - FATM_UNLOCK(sc); - break; - - case SIOCSIFFLAGS: - FATM_LOCK(sc); - if (ifp->if_flags & IFF_UP) { - if (!(ifp->if_drv_flags & IFF_DRV_RUNNING)) { - fatm_init_locked(sc); - } - } else { - if (ifp->if_drv_flags & IFF_DRV_RUNNING) { - fatm_stop(sc); - } - } - FATM_UNLOCK(sc); - break; - - case SIOCGIFMEDIA: - case SIOCSIFMEDIA: - if (ifp->if_drv_flags & IFF_DRV_RUNNING) - error = ifmedia_ioctl(ifp, ifr, &sc->media, cmd); - else - error = EINVAL; - break; - - case SIOCATMGVCCS: - /* return vcc table */ - vtab = atm_getvccs((struct atmio_vcc **)sc->vccs, - FORE_MAX_VCC + 1, sc->open_vccs, &sc->mtx, 1); - error = copyout(vtab, ifr->ifr_data, sizeof(*vtab) + - vtab->count * sizeof(vtab->vccs[0])); - free(vtab, M_DEVBUF); - break; - - case SIOCATMGETVCCS: /* internal netgraph use */ - vtab = atm_getvccs((struct atmio_vcc **)sc->vccs, - FORE_MAX_VCC + 1, sc->open_vccs, &sc->mtx, 0); - if (vtab == NULL) { - error = ENOMEM; - break; - } - *(void **)arg = vtab; - break; - - default: - DBG(sc, IOCTL, ("+++ cmd=%08lx arg=%p", cmd, arg)); - error = EINVAL; - break; - } - - return (error); -} - -/* - * Detach from the interface and free all resources allocated during - * initialisation and later. - */ -static int -fatm_detach(device_t dev) -{ - u_int i; - struct rbuf *rb; - struct fatm_softc *sc; - struct txqueue *tx; - - sc = device_get_softc(dev); - - if (device_is_alive(dev)) { - FATM_LOCK(sc); - fatm_stop(sc); - utopia_detach(&sc->utopia); - FATM_UNLOCK(sc); - atm_ifdetach(sc->ifp); /* XXX race */ - } - callout_drain(&sc->watchdog_timer); - - if (sc->ih != NULL) - bus_teardown_intr(dev, sc->irqres, sc->ih); - - while ((rb = LIST_FIRST(&sc->rbuf_used)) != NULL) { - if_printf(sc->ifp, "rbuf %p still in use!\n", rb); - bus_dmamap_unload(sc->rbuf_tag, rb->map); - m_freem(rb->m); - LIST_REMOVE(rb, link); - LIST_INSERT_HEAD(&sc->rbuf_free, rb, link); - } - - if (sc->txqueue.chunk != NULL) { - for (i = 0; i < FATM_TX_QLEN; i++) { - tx = GET_QUEUE(sc->txqueue, struct txqueue, i); - bus_dmamap_destroy(sc->tx_tag, tx->map); - } - } - - while ((rb = LIST_FIRST(&sc->rbuf_free)) != NULL) { - bus_dmamap_destroy(sc->rbuf_tag, rb->map); - LIST_REMOVE(rb, link); - } - - if (sc->rbufs != NULL) - free(sc->rbufs, M_DEVBUF); - if (sc->vccs != NULL) { - for (i = 0; i < FORE_MAX_VCC + 1; i++) - if (sc->vccs[i] != NULL) { - uma_zfree(sc->vcc_zone, sc->vccs[i]); - sc->vccs[i] = NULL; - } - free(sc->vccs, M_DEVBUF); - } - if (sc->vcc_zone != NULL) - uma_zdestroy(sc->vcc_zone); - - if (sc->l1queue.chunk != NULL) - free(sc->l1queue.chunk, M_DEVBUF); - if (sc->s1queue.chunk != NULL) - free(sc->s1queue.chunk, M_DEVBUF); - if (sc->rxqueue.chunk != NULL) - free(sc->rxqueue.chunk, M_DEVBUF); - if (sc->txqueue.chunk != NULL) - free(sc->txqueue.chunk, M_DEVBUF); - if (sc->cmdqueue.chunk != NULL) - free(sc->cmdqueue.chunk, M_DEVBUF); - - destroy_dma_memory(&sc->reg_mem); - destroy_dma_memory(&sc->sadi_mem); - destroy_dma_memory(&sc->prom_mem); -#ifdef TEST_DMA_SYNC - destroy_dma_memoryX(&sc->s1q_mem); - destroy_dma_memoryX(&sc->l1q_mem); - destroy_dma_memoryX(&sc->rxq_mem); - destroy_dma_memoryX(&sc->txq_mem); - destroy_dma_memoryX(&sc->stat_mem); -#endif - - if (sc->tx_tag != NULL) - if (bus_dma_tag_destroy(sc->tx_tag)) - printf("tx DMA tag busy!\n"); - - if (sc->rbuf_tag != NULL) - if (bus_dma_tag_destroy(sc->rbuf_tag)) - printf("rbuf DMA tag busy!\n"); - - if (sc->parent_dmat != NULL) - if (bus_dma_tag_destroy(sc->parent_dmat)) - printf("parent DMA tag busy!\n"); - - if (sc->irqres != NULL) - bus_release_resource(dev, SYS_RES_IRQ, sc->irqid, sc->irqres); - - if (sc->memres != NULL) - bus_release_resource(dev, SYS_RES_MEMORY, - sc->memid, sc->memres); - - (void)sysctl_ctx_free(&sc->sysctl_ctx); - - cv_destroy(&sc->cv_stat); - cv_destroy(&sc->cv_regs); - - mtx_destroy(&sc->mtx); - - if_free(sc->ifp); - - return (0); -} - -/* - * Sysctl handler - */ -static int -fatm_sysctl_istats(SYSCTL_HANDLER_ARGS) -{ - struct fatm_softc *sc = arg1; - u_long *ret; - int error; - - ret = malloc(sizeof(sc->istats), M_TEMP, M_WAITOK); - - FATM_LOCK(sc); - bcopy(&sc->istats, ret, sizeof(sc->istats)); - FATM_UNLOCK(sc); - - error = SYSCTL_OUT(req, ret, sizeof(sc->istats)); - free(ret, M_TEMP); - - return (error); -} - -/* - * Sysctl handler for card statistics - * This is disable because it destroys the PHY statistics. - */ -static int -fatm_sysctl_stats(SYSCTL_HANDLER_ARGS) -{ - struct fatm_softc *sc = arg1; - int error; - const struct fatm_stats *s; - u_long *ret; - u_int i; - - ret = malloc(sizeof(u_long) * FATM_NSTATS, M_TEMP, M_WAITOK); - - FATM_LOCK(sc); - - if ((error = fatm_getstat(sc)) == 0) { - s = sc->sadi_mem.mem; - i = 0; - ret[i++] = s->phy_4b5b.crc_header_errors; - ret[i++] = s->phy_4b5b.framing_errors; - ret[i++] = s->phy_oc3.section_bip8_errors; - ret[i++] = s->phy_oc3.path_bip8_errors; - ret[i++] = s->phy_oc3.line_bip24_errors; - ret[i++] = s->phy_oc3.line_febe_errors; - ret[i++] = s->phy_oc3.path_febe_errors; - ret[i++] = s->phy_oc3.corr_hcs_errors; - ret[i++] = s->phy_oc3.ucorr_hcs_errors; - ret[i++] = s->atm.cells_transmitted; - ret[i++] = s->atm.cells_received; - ret[i++] = s->atm.vpi_bad_range; - ret[i++] = s->atm.vpi_no_conn; - ret[i++] = s->atm.vci_bad_range; - ret[i++] = s->atm.vci_no_conn; - ret[i++] = s->aal0.cells_transmitted; - ret[i++] = s->aal0.cells_received; - ret[i++] = s->aal0.cells_dropped; - ret[i++] = s->aal4.cells_transmitted; - ret[i++] = s->aal4.cells_received; - ret[i++] = s->aal4.cells_crc_errors; - ret[i++] = s->aal4.cels_protocol_errors; - ret[i++] = s->aal4.cells_dropped; - ret[i++] = s->aal4.cspdus_transmitted; - ret[i++] = s->aal4.cspdus_received; - ret[i++] = s->aal4.cspdus_protocol_errors; - ret[i++] = s->aal4.cspdus_dropped; - ret[i++] = s->aal5.cells_transmitted; - ret[i++] = s->aal5.cells_received; - ret[i++] = s->aal5.congestion_experienced; - ret[i++] = s->aal5.cells_dropped; - ret[i++] = s->aal5.cspdus_transmitted; - ret[i++] = s->aal5.cspdus_received; - ret[i++] = s->aal5.cspdus_crc_errors; - ret[i++] = s->aal5.cspdus_protocol_errors; - ret[i++] = s->aal5.cspdus_dropped; - ret[i++] = s->aux.small_b1_failed; - ret[i++] = s->aux.large_b1_failed; - ret[i++] = s->aux.small_b2_failed; - ret[i++] = s->aux.large_b2_failed; - ret[i++] = s->aux.rpd_alloc_failed; - ret[i++] = s->aux.receive_carrier; - } - /* declare the buffer free */ - sc->flags &= ~FATM_STAT_INUSE; - cv_signal(&sc->cv_stat); - - FATM_UNLOCK(sc); - - if (error == 0) - error = SYSCTL_OUT(req, ret, sizeof(u_long) * FATM_NSTATS); - free(ret, M_TEMP); - - return (error); -} - -#define MAXDMASEGS 32 /* maximum number of receive descriptors */ - -/* - * Attach to the device. - * - * We assume, that there is a global lock (Giant in this case) that protects - * multiple threads from entering this function. This makes sense, doesn't it? - */ -static int -fatm_attach(device_t dev) -{ - struct ifnet *ifp; - struct fatm_softc *sc; - int unit; - uint16_t cfg; - int error = 0; - struct rbuf *rb; - u_int i; - struct txqueue *tx; - - sc = device_get_softc(dev); - unit = device_get_unit(dev); - - ifp = sc->ifp = if_alloc(IFT_ATM); - if (ifp == NULL) { - error = ENOSPC; - goto fail; - } - - IFP2IFATM(sc->ifp)->mib.device = ATM_DEVICE_PCA200E; - IFP2IFATM(sc->ifp)->mib.serial = 0; - IFP2IFATM(sc->ifp)->mib.hw_version = 0; - IFP2IFATM(sc->ifp)->mib.sw_version = 0; - IFP2IFATM(sc->ifp)->mib.vpi_bits = 0; - IFP2IFATM(sc->ifp)->mib.vci_bits = FORE_VCIBITS; - IFP2IFATM(sc->ifp)->mib.max_vpcs = 0; - IFP2IFATM(sc->ifp)->mib.max_vccs = FORE_MAX_VCC; - IFP2IFATM(sc->ifp)->mib.media = IFM_ATM_UNKNOWN; - IFP2IFATM(sc->ifp)->phy = &sc->utopia; - - LIST_INIT(&sc->rbuf_free); - LIST_INIT(&sc->rbuf_used); - - /* - * Initialize mutex and condition variables. - */ - mtx_init(&sc->mtx, device_get_nameunit(dev), - MTX_NETWORK_LOCK, MTX_DEF); - - cv_init(&sc->cv_stat, "fatm_stat"); - cv_init(&sc->cv_regs, "fatm_regs"); - - sysctl_ctx_init(&sc->sysctl_ctx); - callout_init_mtx(&sc->watchdog_timer, &sc->mtx, 0); - - /* - * Make the sysctl tree - */ - if ((sc->sysctl_tree = SYSCTL_ADD_NODE(&sc->sysctl_ctx, - SYSCTL_STATIC_CHILDREN(_hw_atm), OID_AUTO, - device_get_nameunit(dev), CTLFLAG_RD, 0, "")) == NULL) - goto fail; - - if (SYSCTL_ADD_PROC(&sc->sysctl_ctx, SYSCTL_CHILDREN(sc->sysctl_tree), - OID_AUTO, "istats", CTLTYPE_ULONG | CTLFLAG_RD, sc, 0, - fatm_sysctl_istats, "LU", "internal statistics") == NULL) - goto fail; - - if (SYSCTL_ADD_PROC(&sc->sysctl_ctx, SYSCTL_CHILDREN(sc->sysctl_tree), - OID_AUTO, "stats", CTLTYPE_ULONG | CTLFLAG_RD, sc, 0, - fatm_sysctl_stats, "LU", "card statistics") == NULL) - goto fail; - - if (SYSCTL_ADD_INT(&sc->sysctl_ctx, SYSCTL_CHILDREN(sc->sysctl_tree), - OID_AUTO, "retry_tx", CTLFLAG_RW, &sc->retry_tx, 0, - "retry flag") == NULL) - goto fail; - -#ifdef FATM_DEBUG - if (SYSCTL_ADD_UINT(&sc->sysctl_ctx, SYSCTL_CHILDREN(sc->sysctl_tree), - OID_AUTO, "debug", CTLFLAG_RW, &sc->debug, 0, "debug flags") - == NULL) - goto fail; - sc->debug = FATM_DEBUG; -#endif - - /* - * Network subsystem stuff - */ - ifp->if_softc = sc; - if_initname(ifp, device_get_name(dev), device_get_unit(dev)); - ifp->if_flags = IFF_SIMPLEX; - ifp->if_ioctl = fatm_ioctl; - ifp->if_start = fatm_start; - ifp->if_init = fatm_init; - ifp->if_linkmib = &IFP2IFATM(sc->ifp)->mib; - ifp->if_linkmiblen = sizeof(IFP2IFATM(sc->ifp)->mib); - - /* - * Enable busmaster - */ - pci_enable_busmaster(dev); - - /* - * Map memory - */ - sc->memid = 0x10; - sc->memres = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &sc->memid, - RF_ACTIVE); - if (sc->memres == NULL) { - if_printf(ifp, "could not map memory\n"); - error = ENXIO; - goto fail; - } - sc->memh = rman_get_bushandle(sc->memres); - sc->memt = rman_get_bustag(sc->memres); - - /* - * Convert endianness of slave access - */ - cfg = pci_read_config(dev, FATM_PCIR_MCTL, 1); - cfg |= FATM_PCIM_SWAB; - pci_write_config(dev, FATM_PCIR_MCTL, cfg, 1); - - /* - * Allocate interrupt (activate at the end) - */ - sc->irqid = 0; - sc->irqres = bus_alloc_resource_any(dev, SYS_RES_IRQ, &sc->irqid, - RF_SHAREABLE | RF_ACTIVE); - if (sc->irqres == NULL) { - if_printf(ifp, "could not allocate irq\n"); - error = ENXIO; - goto fail; - } - - /* - * Allocate the parent DMA tag. This is used simply to hold overall - * restrictions for the controller (and PCI bus) and is never used - * to do anything. - */ - if (bus_dma_tag_create(bus_get_dma_tag(dev), 1, 0, - BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, - NULL, NULL, BUS_SPACE_MAXSIZE_32BIT, MAXDMASEGS, - BUS_SPACE_MAXSIZE_32BIT, 0, NULL, NULL, - &sc->parent_dmat)) { - if_printf(ifp, "could not allocate parent DMA tag\n"); - error = ENOMEM; - goto fail; - } - - /* - * Allocate the receive buffer DMA tag. This tag must map a maximum of - * a mbuf cluster. - */ - if (bus_dma_tag_create(sc->parent_dmat, 1, 0, - BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, - NULL, NULL, MCLBYTES, 1, MCLBYTES, 0, - NULL, NULL, &sc->rbuf_tag)) { - if_printf(ifp, "could not allocate rbuf DMA tag\n"); - error = ENOMEM; - goto fail; - } - - /* - * Allocate the transmission DMA tag. Must add 1, because - * rounded up PDU will be 65536 bytes long. - */ - if (bus_dma_tag_create(sc->parent_dmat, 1, 0, - BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, - NULL, NULL, - FATM_MAXPDU + 1, TPD_EXTENSIONS + TXD_FIXED, MCLBYTES, 0, - NULL, NULL, &sc->tx_tag)) { - if_printf(ifp, "could not allocate tx DMA tag\n"); - error = ENOMEM; - goto fail; - } - - /* - * Allocate DMAable memory. - */ - sc->stat_mem.size = sizeof(uint32_t) * (FATM_CMD_QLEN + FATM_TX_QLEN - + FATM_RX_QLEN + SMALL_SUPPLY_QLEN + LARGE_SUPPLY_QLEN); - sc->stat_mem.align = 4; - - sc->txq_mem.size = FATM_TX_QLEN * TPD_SIZE; - sc->txq_mem.align = 32; - - sc->rxq_mem.size = FATM_RX_QLEN * RPD_SIZE; - sc->rxq_mem.align = 32; - - sc->s1q_mem.size = SMALL_SUPPLY_QLEN * - BSUP_BLK2SIZE(SMALL_SUPPLY_BLKSIZE); - sc->s1q_mem.align = 32; - - sc->l1q_mem.size = LARGE_SUPPLY_QLEN * - BSUP_BLK2SIZE(LARGE_SUPPLY_BLKSIZE); - sc->l1q_mem.align = 32; - -#ifdef TEST_DMA_SYNC - if ((error = alloc_dma_memoryX(sc, "STATUS", &sc->stat_mem)) != 0 || - (error = alloc_dma_memoryX(sc, "TXQ", &sc->txq_mem)) != 0 || - (error = alloc_dma_memoryX(sc, "RXQ", &sc->rxq_mem)) != 0 || - (error = alloc_dma_memoryX(sc, "S1Q", &sc->s1q_mem)) != 0 || - (error = alloc_dma_memoryX(sc, "L1Q", &sc->l1q_mem)) != 0) - goto fail; -#else - if ((error = alloc_dma_memory(sc, "STATUS", &sc->stat_mem)) != 0 || - (error = alloc_dma_memory(sc, "TXQ", &sc->txq_mem)) != 0 || - (error = alloc_dma_memory(sc, "RXQ", &sc->rxq_mem)) != 0 || - (error = alloc_dma_memory(sc, "S1Q", &sc->s1q_mem)) != 0 || - (error = alloc_dma_memory(sc, "L1Q", &sc->l1q_mem)) != 0) - goto fail; -#endif - - sc->prom_mem.size = sizeof(struct prom); - sc->prom_mem.align = 32; - if ((error = alloc_dma_memory(sc, "PROM", &sc->prom_mem)) != 0) - goto fail; - - sc->sadi_mem.size = sizeof(struct fatm_stats); - sc->sadi_mem.align = 32; - if ((error = alloc_dma_memory(sc, "STATISTICS", &sc->sadi_mem)) != 0) - goto fail; - - sc->reg_mem.size = sizeof(uint32_t) * FATM_NREGS; - sc->reg_mem.align = 32; - if ((error = alloc_dma_memory(sc, "REGISTERS", &sc->reg_mem)) != 0) - goto fail; - - /* - * Allocate queues - */ - sc->cmdqueue.chunk = malloc(FATM_CMD_QLEN * sizeof(struct cmdqueue), - M_DEVBUF, M_ZERO | M_WAITOK); - sc->txqueue.chunk = malloc(FATM_TX_QLEN * sizeof(struct txqueue), - M_DEVBUF, M_ZERO | M_WAITOK); - sc->rxqueue.chunk = malloc(FATM_RX_QLEN * sizeof(struct rxqueue), - M_DEVBUF, M_ZERO | M_WAITOK); - sc->s1queue.chunk = malloc(SMALL_SUPPLY_QLEN * sizeof(struct supqueue), - M_DEVBUF, M_ZERO | M_WAITOK); - sc->l1queue.chunk = malloc(LARGE_SUPPLY_QLEN * sizeof(struct supqueue), - M_DEVBUF, M_ZERO | M_WAITOK); - - sc->vccs = malloc((FORE_MAX_VCC + 1) * sizeof(sc->vccs[0]), - M_DEVBUF, M_ZERO | M_WAITOK); - sc->vcc_zone = uma_zcreate("FATM vccs", sizeof(struct card_vcc), - NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); - if (sc->vcc_zone == NULL) { - error = ENOMEM; - goto fail; - } - - /* - * Allocate memory for the receive buffer headers. The total number - * of headers should probably also include the maximum number of - * buffers on the receive queue. - */ - sc->rbuf_total = SMALL_POOL_SIZE + LARGE_POOL_SIZE; - sc->rbufs = malloc(sc->rbuf_total * sizeof(struct rbuf), - M_DEVBUF, M_ZERO | M_WAITOK); - - /* - * Put all rbuf headers on the free list and create DMA maps. - */ - for (rb = sc->rbufs, i = 0; i < sc->rbuf_total; i++, rb++) { - if ((error = bus_dmamap_create(sc->rbuf_tag, 0, &rb->map))) { - if_printf(sc->ifp, "creating rx map: %d\n", - error); - goto fail; - } - LIST_INSERT_HEAD(&sc->rbuf_free, rb, link); - } - - /* - * Create dma maps for transmission. In case of an error, free the - * allocated DMA maps, because on some architectures maps are NULL - * and we cannot distinguish between a failure and a NULL map in - * the detach routine. - */ - for (i = 0; i < FATM_TX_QLEN; i++) { - tx = GET_QUEUE(sc->txqueue, struct txqueue, i); - if ((error = bus_dmamap_create(sc->tx_tag, 0, &tx->map))) { - if_printf(sc->ifp, "creating tx map: %d\n", - error); - while (i > 0) { - tx = GET_QUEUE(sc->txqueue, struct txqueue, - i - 1); - bus_dmamap_destroy(sc->tx_tag, tx->map); - i--; - } - goto fail; - } - } - - utopia_attach(&sc->utopia, IFP2IFATM(sc->ifp), &sc->media, &sc->mtx, - &sc->sysctl_ctx, SYSCTL_CHILDREN(sc->sysctl_tree), - &fatm_utopia_methods); - sc->utopia.flags |= UTP_FL_NORESET | UTP_FL_POLL_CARRIER; - - /* - * Attach the interface - */ - atm_ifattach(ifp); - ifp->if_snd.ifq_maxlen = 512; - -#ifdef ENABLE_BPF - bpfattach(ifp, DLT_ATM_RFC1483, sizeof(struct atmllc)); -#endif - - error = bus_setup_intr(dev, sc->irqres, INTR_TYPE_NET | INTR_MPSAFE, - NULL, fatm_intr, sc, &sc->ih); - if (error) { - if_printf(ifp, "couldn't setup irq\n"); - goto fail; - } - - fail: - if (error) - fatm_detach(dev); - - return (error); -} - -#if defined(FATM_DEBUG) && 0 -static void -dump_s1_queue(struct fatm_softc *sc) -{ - int i; - struct supqueue *q; - - for(i = 0; i < SMALL_SUPPLY_QLEN; i++) { - q = GET_QUEUE(sc->s1queue, struct supqueue, i); - printf("%2d: card=%x(%x,%x) stat=%x\n", i, - q->q.card, - READ4(sc, q->q.card), - READ4(sc, q->q.card + 4), - *q->q.statp); - } -} -#endif - -/* - * Driver infrastructure. - */ -static device_method_t fatm_methods[] = { - DEVMETHOD(device_probe, fatm_probe), - DEVMETHOD(device_attach, fatm_attach), - DEVMETHOD(device_detach, fatm_detach), - { 0, 0 } -}; -static driver_t fatm_driver = { - "fatm", - fatm_methods, - sizeof(struct fatm_softc), -}; - -DRIVER_MODULE(fatm, pci, fatm_driver, fatm_devclass, 0, 0); diff --git a/sys/dev/fatm/if_fatm_rate.h b/sys/dev/fatm/if_fatm_rate.h deleted file mode 100644 index 5cfd38a9c28c..000000000000 --- a/sys/dev/fatm/if_fatm_rate.h +++ /dev/null @@ -1,294 +0,0 @@ -/*- - * Copyright (c) 2001-2003 - * Fraunhofer Institute for Open Communication Systems (FhG Fokus). - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * Author: Hartmut Brandt <harti@freebsd.org> - * - * Fore PCA200E driver for NATM - * - * This has been generated with: - * - * awk </dev/null 'BEGIN { period=255; linerate=353053; \ - * printf "{ 0x00000000, %u },\n", linerate; \ - * for(i=period-1; i>0; i--) printf "{ 0x%08x, %u },\n", \ - * (i * 65536) + (period - i), i * linerate/period; }' - * - * $FreeBSD$ - */ -{ 0x00000000, 353053 }, -{ 0x00fe0001, 351668 }, -{ 0x00fd0002, 350283 }, -{ 0x00fc0003, 348899 }, -{ 0x00fb0004, 347514 }, -{ 0x00fa0005, 346130 }, -{ 0x00f90006, 344745 }, -{ 0x00f80007, 343361 }, -{ 0x00f70008, 341976 }, -{ 0x00f60009, 340592 }, -{ 0x00f5000a, 339207 }, -{ 0x00f4000b, 337823 }, -{ 0x00f3000c, 336438 }, -{ 0x00f2000d, 335054 }, -{ 0x00f1000e, 333669 }, -{ 0x00f0000f, 332285 }, -{ 0x00ef0010, 330900 }, -{ 0x00ee0011, 329516 }, -{ 0x00ed0012, 328131 }, -{ 0x00ec0013, 326747 }, -{ 0x00eb0014, 325362 }, -{ 0x00ea0015, 323978 }, -{ 0x00e90016, 322593 }, -{ 0x00e80017, 321209 }, -{ 0x00e70018, 319824 }, -{ 0x00e60019, 318439 }, -{ 0x00e5001a, 317055 }, -{ 0x00e4001b, 315670 }, -{ 0x00e3001c, 314286 }, -{ 0x00e2001d, 312901 }, -{ 0x00e1001e, 311517 }, -{ 0x00e0001f, 310132 }, -{ 0x00df0020, 308748 }, -{ 0x00de0021, 307363 }, -{ 0x00dd0022, 305979 }, -{ 0x00dc0023, 304594 }, -{ 0x00db0024, 303210 }, -{ 0x00da0025, 301825 }, -{ 0x00d90026, 300441 }, -{ 0x00d80027, 299056 }, -{ 0x00d70028, 297672 }, -{ 0x00d60029, 296287 }, -{ 0x00d5002a, 294903 }, -{ 0x00d4002b, 293518 }, -{ 0x00d3002c, 292134 }, -{ 0x00d2002d, 290749 }, -{ 0x00d1002e, 289365 }, -{ 0x00d0002f, 287980 }, -{ 0x00cf0030, 286595 }, -{ 0x00ce0031, 285211 }, -{ 0x00cd0032, 283826 }, -{ 0x00cc0033, 282442 }, -{ 0x00cb0034, 281057 }, -{ 0x00ca0035, 279673 }, -{ 0x00c90036, 278288 }, -{ 0x00c80037, 276904 }, -{ 0x00c70038, 275519 }, -{ 0x00c60039, 274135 }, -{ 0x00c5003a, 272750 }, -{ 0x00c4003b, 271366 }, -{ 0x00c3003c, 269981 }, -{ 0x00c2003d, 268597 }, -{ 0x00c1003e, 267212 }, -{ 0x00c0003f, 265828 }, -{ 0x00bf0040, 264443 }, -{ 0x00be0041, 263059 }, -{ 0x00bd0042, 261674 }, -{ 0x00bc0043, 260290 }, -{ 0x00bb0044, 258905 }, -{ 0x00ba0045, 257521 }, -{ 0x00b90046, 256136 }, -{ 0x00b80047, 254751 }, -{ 0x00b70048, 253367 }, -{ 0x00b60049, 251982 }, -{ 0x00b5004a, 250598 }, -{ 0x00b4004b, 249213 }, -{ 0x00b3004c, 247829 }, -{ 0x00b2004d, 246444 }, -{ 0x00b1004e, 245060 }, -{ 0x00b0004f, 243675 }, -{ 0x00af0050, 242291 }, -{ 0x00ae0051, 240906 }, -{ 0x00ad0052, 239522 }, -{ 0x00ac0053, 238137 }, -{ 0x00ab0054, 236753 }, -{ 0x00aa0055, 235368 }, -{ 0x00a90056, 233984 }, -{ 0x00a80057, 232599 }, -{ 0x00a70058, 231215 }, -{ 0x00a60059, 229830 }, -{ 0x00a5005a, 228446 }, -{ 0x00a4005b, 227061 }, -{ 0x00a3005c, 225677 }, -{ 0x00a2005d, 224292 }, -{ 0x00a1005e, 222907 }, -{ 0x00a0005f, 221523 }, -{ 0x009f0060, 220138 }, -{ 0x009e0061, 218754 }, -{ 0x009d0062, 217369 }, -{ 0x009c0063, 215985 }, -{ 0x009b0064, 214600 }, -{ 0x009a0065, 213216 }, -{ 0x00990066, 211831 }, -{ 0x00980067, 210447 }, -{ 0x00970068, 209062 }, -{ 0x00960069, 207678 }, -{ 0x0095006a, 206293 }, -{ 0x0094006b, 204909 }, -{ 0x0093006c, 203524 }, -{ 0x0092006d, 202140 }, -{ 0x0091006e, 200755 }, -{ 0x0090006f, 199371 }, -{ 0x008f0070, 197986 }, -{ 0x008e0071, 196602 }, -{ 0x008d0072, 195217 }, -{ 0x008c0073, 193833 }, -{ 0x008b0074, 192448 }, -{ 0x008a0075, 191063 }, -{ 0x00890076, 189679 }, -{ 0x00880077, 188294 }, -{ 0x00870078, 186910 }, -{ 0x00860079, 185525 }, -{ 0x0085007a, 184141 }, -{ 0x0084007b, 182756 }, -{ 0x0083007c, 181372 }, -{ 0x0082007d, 179987 }, -{ 0x0081007e, 178603 }, -{ 0x0080007f, 177218 }, -{ 0x007f0080, 175834 }, -{ 0x007e0081, 174449 }, -{ 0x007d0082, 173065 }, -{ 0x007c0083, 171680 }, -{ 0x007b0084, 170296 }, -{ 0x007a0085, 168911 }, -{ 0x00790086, 167527 }, -{ 0x00780087, 166142 }, -{ 0x00770088, 164758 }, -{ 0x00760089, 163373 }, -{ 0x0075008a, 161989 }, -{ 0x0074008b, 160604 }, -{ 0x0073008c, 159219 }, -{ 0x0072008d, 157835 }, -{ 0x0071008e, 156450 }, -{ 0x0070008f, 155066 }, -{ 0x006f0090, 153681 }, -{ 0x006e0091, 152297 }, -{ 0x006d0092, 150912 }, -{ 0x006c0093, 149528 }, -{ 0x006b0094, 148143 }, -{ 0x006a0095, 146759 }, -{ 0x00690096, 145374 }, -{ 0x00680097, 143990 }, -{ 0x00670098, 142605 }, -{ 0x00660099, 141221 }, -{ 0x0065009a, 139836 }, -{ 0x0064009b, 138452 }, -{ 0x0063009c, 137067 }, -{ 0x0062009d, 135683 }, -{ 0x0061009e, 134298 }, -{ 0x0060009f, 132914 }, -{ 0x005f00a0, 131529 }, -{ 0x005e00a1, 130145 }, -{ 0x005d00a2, 128760 }, -{ 0x005c00a3, 127375 }, -{ 0x005b00a4, 125991 }, -{ 0x005a00a5, 124606 }, -{ 0x005900a6, 123222 }, -{ 0x005800a7, 121837 }, -{ 0x005700a8, 120453 }, -{ 0x005600a9, 119068 }, -{ 0x005500aa, 117684 }, -{ 0x005400ab, 116299 }, -{ 0x005300ac, 114915 }, -{ 0x005200ad, 113530 }, -{ 0x005100ae, 112146 }, -{ 0x005000af, 110761 }, -{ 0x004f00b0, 109377 }, -{ 0x004e00b1, 107992 }, -{ 0x004d00b2, 106608 }, -{ 0x004c00b3, 105223 }, -{ 0x004b00b4, 103839 }, -{ 0x004a00b5, 102454 }, -{ 0x004900b6, 101070 }, -{ 0x004800b7, 99685 }, -{ 0x004700b8, 98301 }, -{ 0x004600b9, 96916 }, -{ 0x004500ba, 95531 }, -{ 0x004400bb, 94147 }, -{ 0x004300bc, 92762 }, -{ 0x004200bd, 91378 }, -{ 0x004100be, 89993 }, -{ 0x004000bf, 88609 }, -{ 0x003f00c0, 87224 }, -{ 0x003e00c1, 85840 }, -{ 0x003d00c2, 84455 }, -{ 0x003c00c3, 83071 }, -{ 0x003b00c4, 81686 }, -{ 0x003a00c5, 80302 }, -{ 0x003900c6, 78917 }, -{ 0x003800c7, 77533 }, -{ 0x003700c8, 76148 }, -{ 0x003600c9, 74764 }, -{ 0x003500ca, 73379 }, -{ 0x003400cb, 71995 }, -{ 0x003300cc, 70610 }, -{ 0x003200cd, 69226 }, -{ 0x003100ce, 67841 }, -{ 0x003000cf, 66457 }, -{ 0x002f00d0, 65072 }, -{ 0x002e00d1, 63687 }, -{ 0x002d00d2, 62303 }, -{ 0x002c00d3, 60918 }, -{ 0x002b00d4, 59534 }, -{ 0x002a00d5, 58149 }, -{ 0x002900d6, 56765 }, -{ 0x002800d7, 55380 }, -{ 0x002700d8, 53996 }, -{ 0x002600d9, 52611 }, -{ 0x002500da, 51227 }, -{ 0x002400db, 49842 }, -{ 0x002300dc, 48458 }, -{ 0x002200dd, 47073 }, -{ 0x002100de, 45689 }, -{ 0x002000df, 44304 }, -{ 0x001f00e0, 42920 }, -{ 0x001e00e1, 41535 }, -{ 0x001d00e2, 40151 }, -{ 0x001c00e3, 38766 }, -{ 0x001b00e4, 37382 }, -{ 0x001a00e5, 35997 }, -{ 0x001900e6, 34613 }, -{ 0x001800e7, 33228 }, -{ 0x001700e8, 31843 }, -{ 0x001600e9, 30459 }, -{ 0x001500ea, 29074 }, -{ 0x001400eb, 27690 }, -{ 0x001300ec, 26305 }, -{ 0x001200ed, 24921 }, -{ 0x001100ee, 23536 }, -{ 0x001000ef, 22152 }, -{ 0x000f00f0, 20767 }, -{ 0x000e00f1, 19383 }, -{ 0x000d00f2, 17998 }, -{ 0x000c00f3, 16614 }, -{ 0x000b00f4, 15229 }, -{ 0x000a00f5, 13845 }, -{ 0x000900f6, 12460 }, -{ 0x000800f7, 11076 }, -{ 0x000700f8, 9691 }, -{ 0x000600f9, 8307 }, -{ 0x000500fa, 6922 }, -{ 0x000400fb, 5538 }, -{ 0x000300fc, 4153 }, -{ 0x000200fd, 2769 }, -{ 0x000100fe, 1384 }, diff --git a/sys/dev/fatm/if_fatmreg.h b/sys/dev/fatm/if_fatmreg.h deleted file mode 100644 index d6eb0074bf2a..000000000000 --- a/sys/dev/fatm/if_fatmreg.h +++ /dev/null @@ -1,499 +0,0 @@ -/*- - * Copyright (c) 2001-2003 - * Fraunhofer Institute for Open Communication Systems (FhG Fokus). - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * Author: Hartmut Brandt <harti@freebsd.org> - * - * $FreeBSD$ - * - * Fore PCA200E hardware definitions. - */ - -/* - * Fore implements some additional PCI registers. One of them is the - * master control register. One of the bits allow to automatically byte - * swap accesses to the on-board RAM. - */ -#define FATM_PCIR_MCTL 0x41 -#define FATM_PCIM_SWAB 0x100 - -/* - * Operations codes for commands. - */ -enum { - FATM_OP_INITIALIZE = 0x01, /* Initialize the card */ - FATM_OP_ACTIVATE_VCIN = 0x02, /* Start reassembly on a channel */ - FATM_OP_ACTIVATE_VCOUT = 0x03, /* (not used) */ - FATM_OP_DEACTIVATE_VCIN = 0x04, /* Stop reassembly on a channel */ - FATM_OP_DEACTIVATE_VCOUT= 0x05, /* (not used) */ - FATM_OP_REQUEST_STATS = 0x06, /* Get statistics */ - FATM_OP_OC3_SET_REG = 0x07, /* Set OC3 chip register */ - FATM_OP_OC3_GET_REG = 0x08, /* Get OC3 chip registers */ - FATM_OP_ZERO_STATS = 0x09, /* Zero out statistics */ - FATM_OP_GET_PROM_DATA = 0x0a, /* Return expansion ROM data */ - FATM_OP_SETVPI_BITS = 0x0b, /* (not used, not implemented) */ - - FATM_OP_INTERRUPT_SEL = 0x80, /* Request interrupt on completion */ -}; - -/* - * Status word definitions. Before initiating an operation the host sets the - * status word to PENDING. The card sets it to COMPLETE upon completion of - * the transmit/receive or command. An unused queue entry contains FREE. - * The ERROR can be ored into the COMPLETE. Note, that there are circumstances - * when ERROR is set without COMPLETE being set (when you try to activate - * a bad VCI like, for example, VCI 0). - */ -enum { - FATM_STAT_PENDING = 0x01, - FATM_STAT_COMPLETE = 0x02, - FATM_STAT_FREE = 0x04, - FATM_STAT_ERROR = 0x08, -}; - -/* - * On board queue offsets. There are two fundamentally different queue types: - * the command queue and all other queues. The command queue has 32 byte - * entries on the card which contain the operation code, parameters and the - * DMA pointer to the status word. All other queues have 8 byte entries, which - * contain a DMA pointer to the i/o block, that contains the parameters, and - * a DMA pointer to the status word. - */ -#define FATMOC_OP 0 /* cmd queue: offset to op code */ -#define FATMOC_PARAM 4 /* cmd queue: offset to parameters */ -#define FATMOC_STATP 16 /* cmd queue: offset to status ptr */ -#define FATMOC_END 32 /* cmd queue: element size */ - -#define FATMOC_ACTIN_VPVC (FATMOC_PARAM + 0) -#define FATMOC_ACTIN_MTU (FATMOC_PARAM + 4) -#define FATMOC_DEACTIN_VPVC (FATMOC_PARAM + 0) -#define FATMOC_GETOC3_BUF (FATMOC_PARAM + 0) -#define FATMOC_GSTAT_BUF (FATMOC_PARAM + 0) -#define FATMOC_GPROM_BUF (FATMOC_PARAM + 0) - -#define FATMOS_IOBLK 0 /* other queues: offset to ioblk ptr */ -#define FATMOS_STATP 4 /* other queues: offset to status ptr */ - -#define FATM_MAKE_SETOC3(REG,VAL,MASK) \ - (FATM_OP_OC3_SET_REG | (((REG) & 0xff) << 8) | \ - (((VAL) & 0xff) << 16) | (((MASK) & 0xff) << 24)) -#define FATM_NREGS 128 - - -/* - * On board memory layout. - * - * The card contains up to 2MByte memory that is mapped at virtual offset 0. - * It is followed by three registers. The memory contains two areas at - * fixed addresses: the mon960 area that is used for communication with - * the card's operating system and the common block that is used by the - * firmware to communicate with the driver. - */ -#define FATM_RAM_SIZE (256 * 1024) /* normal RAM size */ - -#define FATMO_RAM (0x0) /* virtual RAM start */ -#define FATMO_MON960 (0x400) /* mon960 communication area */ -#define FATMO_COMMON_ORIGIN (0x4d40) /* firmware comm. area */ - -#define FATMO_HCR (0x100000) /* host control registers */ -#define FATMO_HIMR (0x100004) /* host interrupt mask */ -#define FATMO_PSR (0x100008) /* PCI control register */ - -#define FATMO_END (0x200000) /* end of mapped area */ - -/* - * The mon960 area contains two cells that are used as a virtual serial - * interface, a status word, the base for loading the application (i.e. - * firmware) and a version number. - */ -#define FATMO_UART_TO_960 (FATMO_MON960 + 0) -#define FATMO_UART_TO_HOST (FATMO_MON960 + 4) -#define FATMO_BOOT_STATUS (FATMO_MON960 + 8) -#define FATMO_APP_BASE (FATMO_MON960 + 12) -#define FATMO_VERSION (FATMO_MON960 + 16) - - -/* - * The host control register allows to hold the i960 or send it interrupts. - * The bits have different meaning on read and write. - */ -#define FATM_HCR_RESET 0x01 /* (W) reset the card */ -#define FATM_HCR_LOCK_HOLD 0x02 /* (W) hold the i960 */ -#define FATM_HCR_I960FAIL 0x04 /* (R) internal self-test failed */ -#define FATM_HCR_INTR2 0x04 /* (W) assert i960 interrupt 2 */ -#define FATM_HCR_HOLDA 0x08 /* (R) hold ack from i960 */ -#define FATM_HCR_INTR1 0x08 /* (W) assert i960 interrupt 1 */ -#define FATM_HCR_OFIFO 0x10 /* (R) DMA request FIFO full */ -#define FATM_HCR_CLRIRQ 0x10 /* (W) clear interrupt request */ -#define FATM_HCR_ESP_HOLD 0x20 /* (R) SAR chip holds i960 */ -#define FATM_HCR_IFIFO 0x40 /* (R) input FIFO full */ -#define FATM_HCR_TESTMODE 0x80 /* (R) board is in test mode */ - -/* - * The mon960 area contains a virtual UART and a status word. - * The UART uses a simple protocol: a zero means, that there is no - * character available from the i960 or that one can write the next - * character to the i960. This character has to be ored with 0x1000000 - * to signal to the i960 that there is a new character. - * The cold_start values must be written to the status word, the others - * denote certain stages of initializing. - */ -#define XMIT_READY 0 -#define CHAR_AVAIL 0x1000000 - -#define COLD_START 0xc01dc01d -#define SELF_TEST_OK 0x02201958 -#define SELF_TEST_FAIL 0xadbadbad -#define CP_RUNNING 0xce11feed -#define MON906_TOO_BIG 0x10aded00 - -/* - * The firmware communication area contains a big structure most of which - * is used only during initialisation. - */ -/* - * These are the offsets to the onboard queues that are valid after the - * initialisation command has completed. - */ -#define FATMO_COMMAND_QUEUE (FATMO_COMMON_ORIGIN + 0) -#define FATMO_TRANSMIT_QUEUE (FATMO_COMMON_ORIGIN + 4) -#define FATMO_RECEIVE_QUEUE (FATMO_COMMON_ORIGIN + 8) -#define FATMO_SMALL_B1_QUEUE (FATMO_COMMON_ORIGIN + 12) -#define FATMO_LARGE_B1_QUEUE (FATMO_COMMON_ORIGIN + 16) -#define FATMO_SMALL_B2_QUEUE (FATMO_COMMON_ORIGIN + 20) -#define FATMO_LARGE_B2_QUEUE (FATMO_COMMON_ORIGIN + 24) - -/* - * If the interrupt mask is set to 1, interrupts to the host are queued, but - * inhbited. The istat variable is set, when this card has posted an interrupt. - */ -#define FATMO_IMASK (FATMO_COMMON_ORIGIN + 28) -#define FATMO_ISTAT (FATMO_COMMON_ORIGIN + 32) - -/* - * This is the offset and the size of the queue area. Could be used to - * dynamically compute queue sizes. - */ -#define FATMO_HEAP_BASE (FATMO_COMMON_ORIGIN + 36) -#define FATMO_HEAP_SIZE (FATMO_COMMON_ORIGIN + 40) - -#define FATMO_HLOGGER (FATMO_COMMON_ORIGIN + 44) - -/* - * The heartbeat variable is incremented in each loop of the normal processing. - * If it is stuck this means, that the card had a fatal error. In this case - * it may set the word to a number of values of the form 0xdeadXXXX where - * XXXX is an error code. - */ -#define FATMO_HEARTBEAT (FATMO_COMMON_ORIGIN + 48) - -#define FATMO_FIRMWARE_RELEASE (FATMO_COMMON_ORIGIN + 52) -#define FATMO_MON960_RELEASE (FATMO_COMMON_ORIGIN + 56) -#define FATMO_TQ_PLEN (FATMO_COMMON_ORIGIN + 60) - -/* - * At this offset the init command block is located. The init command cannot - * use the normal queue mechanism because it is used to initialize the - * queues. For this reason it is located at this fixed offset. - */ -#define FATMO_INIT (FATMO_COMMON_ORIGIN + 64) - -/* - * physical media type - */ -#define FATMO_MEDIA_TYPE (FATMO_COMMON_ORIGIN + 176) -#define FATMO_OC3_REVISION (FATMO_COMMON_ORIGIN + 180) - -/* - * End of the common block - */ -#define FATMO_COMMON_END (FATMO_COMMON_ORIGIN + 184) - -/* - * The INITIALIZE command block. This is embedded into the above common - * block. The offsets are from the beginning of the command block. - */ -#define FATMOI_OP 0 /* operation code */ -#define FATMOI_STATUS 4 /* status word */ -#define FATMOI_RECEIVE_TRESHOLD 8 /* when to start interrupting */ -#define FATMOI_NUM_CONNECT 12 /* max number of VCIs */ -#define FATMOI_CQUEUE_LEN 16 /* length of command queue */ -#define FATMOI_TQUEUE_LEN 20 /* length of transmit queue */ -#define FATMOI_RQUEUE_LEN 24 /* length of receive queue */ -#define FATMOI_RPD_EXTENSION 28 /* additional 32 byte blocks */ -#define FATMOI_TPD_EXTENSION 32 /* additional 32 byte blocks */ -#define FATMOI_CONLESS_VPVC 36 /* (not used) */ -#define FATMOI_SMALL_B1 48 /* small buffer 1 pool */ -#define FATMOI_LARGE_B1 64 /* small buffer 2 pool */ -#define FATMOI_SMALL_B2 80 /* large buffer 1 pool */ -#define FATMOI_LARGE_B2 96 /* large buffer 2 pool */ -#define FATMOI_END 112 /* size of init block */ - -/* - * Each of the four buffer schemes is initialized with a block that - * contains four words: - */ -#define FATMOB_QUEUE_LENGTH 0 /* supply queue length */ -#define FATMOB_BUFFER_SIZE 4 /* size of each buffer */ -#define FATMOB_POOL_SIZE 8 /* size of on-board pool */ -#define FATMOB_SUPPLY_BLKSIZE 12 /* number of buffers/supply */ - -/* - * The fore firmware is a binary file, that starts with a header. The - * header contains the offset to where the file must be loaded and the - * entry for execution. The header must also be loaded onto the card! - */ -struct firmware { - uint32_t id; /* "FORE" */ - uint32_t version; /* firmware version */ - uint32_t offset; /* load offset */ - uint32_t entry; /* entry point */ -}; -#define FATM_FWID 0x65726f66 /* "FORE" */ -#define FATM_FWVERSION 0x100 /* supported version */ - -/* - * PDUs to be transmitted are described by Transmit PDU Descriptors. - * These descriptors are held in host memory, but referenced from the ioblk - * member of the queue structure on the card. The card DMAs the descriptor - * and than gather-DMAs the PDU transmitting it on-the-fly. Tpds are variable - * length in blocks of 32 byte (8 words). The minimum length is one block, - * maximum 15. The number of blocks beyond 1 is configured during the - * initialisation command (tpd_extension). - * Each gather-DMA segment is described by a segment descriptor. The buffer - * address and the length must be a multiple of four. - * Tpd must also be 4 byte aligned. - * Because of the minimum length of 32 byte, the first blocks contains already - * 2 segement descriptors. Each extension block holds four descriptors. - */ -#define TXD_FIXED 2 -#define SEGS_PER_BLOCK 4 /* segment descriptors per extension block */ -struct txseg { - uint32_t buffer; /* DMA buffer address */ - uint32_t length; /* and length */ -}; -struct tpd { - uint32_t atm_header; /* header for the transmitted cells */ - uint32_t spec; /* PDU description */ - uint32_t stream; /* traffic shaping word */ - uint32_t pad[1]; - struct txseg segment[TXD_FIXED]; -}; - -#define TDX_MKSPEC(INTR,AAL,NSEG,LEN) \ - (((INTR) << 28) | ((AAL) << 24) | ((NSEG) << 16) | (LEN)) -#define TDX_MKSTR(DATA,IDLE) \ - (((DATA) << 16) | (IDLE)) -#define TDX_MKHDR(VPI,VCI,PT,CLP) \ - (((VPI) << 20) | ((VCI) << 4) | ((PT) << 1) | (CLP)) -#define TDX_SEGS2BLKS(SEGS) \ - (1 + ((SEGS)-TXD_FIXED+SEGS_PER_BLOCK-1)/SEGS_PER_BLOCK) - -/* - * We want probably support scatter transmission, so we use the maximum - * transmit descriptor extension that is possible. Because the size of the - * Tpd is encoded in 32-byte blocks in a 4-bit field, the maximum extension - * is 14 such blocks. The value for the init command is the number of - * additional descriptor entries NOT the number of 32 byte blocks. - */ -#define TPD_EXTENSION_BLOCKS 14 -#define TPD_EXTENSIONS (TPD_EXTENSION_BLOCKS * 4) -#define TPD_SIZE ((size_t)((TPD_EXTENSION_BLOCKS+1) * 32)) - -/* - * Received PDUs are handed from the card to the host by means of Receive - * PDU descriptors. Each segment describes on part of the PDU. The buffer - * handle is a 32 bit value that is supplied by the host and passed - * transparently back to the host by the card. It is used to locate the buffer. - * The length field is the number of actual bytes in that buffer. - */ -#define RXD_FIXED 3 -struct rxseg { - uint32_t handle; /* buffer handle */ - uint32_t length; /* number of bytes */ -}; -struct rpd { - uint32_t atm_header; - uint32_t nseg; - struct rxseg segment[RXD_FIXED]; -}; - -/* - * PDUs received are stored in buffers supplied to the card. We use only - * buffer scheme 1: small buffers are normal mbuf's which can hold three - * cells in their default size (256 byte) and mbuf clusters which can - * hold 42 cells (2 kbyte). - * The number of receive segments can be computed from these sizes: - */ -#define FATM_MAXPDU 65535 -#define MAXPDU_CELLS ((FATM_MAXPDU+47)/48) - -#define SMALL_BUFFER_CELLS (MHLEN/48) -#define LARGE_BUFFER_CELLS (MCLBYTES/48) - -#define SMALL_BUFFER_LEN (SMALL_BUFFER_CELLS * 48) -#define LARGE_BUFFER_LEN (LARGE_BUFFER_CELLS * 48) - -/* - * The card first alloctes a small buffer and the switches to large - * buffers. So the number of large buffers needed to store the maximum - * PDU is: - */ -#define MAX_LARGE_BUFFERS ((MAXPDU_CELLS - SMALL_BUFFER_CELLS \ - + LARGE_BUFFER_CELLS - 1) \ - / LARGE_BUFFER_CELLS) \ - -/* - * From this we get the number of extension blocks for the Rpds as: - */ -#define RPD_EXTENSION_BLOCKS ((MAX_LARGE_BUFFERS + 1 - RXD_FIXED \ - + SEGS_PER_BLOCK - 1) \ - / SEGS_PER_BLOCK) -#define RPD_EXTENSIONS (RPD_EXTENSION_BLOCKS * 4) -#define RPD_SIZE ((size_t)((RPD_EXTENSION_BLOCKS+1) * 32)) - -/* - * Buffers are supplied to the card prior receiving by the supply queues. - * We use two queues: scheme 1 small buffers and scheme 1 large buffers. - * The queues and on-card pools are initialized by the initialize command. - * Buffers are supplied in chunks. Each chunk can contain from 4 to 124 - * buffers in multiples of four. The chunk sizes are configured by the - * initialize command. Each buffer in a chunk is described by a Receive - * Buffer Descriptor that is held in host memory and given as the ioblk - * to the card. - */ -#define BSUP_BLK2SIZE(CHUNK) (8 * (CHUNK)) - -struct rbd { - uint32_t handle; - uint32_t buffer; /* DMA address for card */ -}; - -/* - * The PCA200E has an expansion ROM that contains version information and - * the FORE-assigned MAC address. It can be read via the get_prom_data - * operation. - */ -struct prom { - uint32_t version; - uint32_t serial; - uint8_t mac[8]; -}; - -/* - * The media type member of the firmware communication block contains a - * code that describes the physical medium and physical protocol. - */ -#define FORE_MT_TAXI_100 0x04 -#define FORE_MT_TAXI_140 0x05 -#define FORE_MT_UTP_SONET 0x06 -#define FORE_MT_MM_OC3_ST 0x16 -#define FORE_MT_MM_OC3_SC 0x26 -#define FORE_MT_SM_OC3_ST 0x36 -#define FORE_MT_SM_OC3_SC 0x46 - -/* - * Assorted constants - */ -#define FORE_MAX_VCC 1024 /* max. number of VCIs supported */ -#define FORE_VCIBITS 10 - -#define FATM_STATE_TIMEOUT 500 /* msec */ - -/* - * Statistics as delivered by the FORE cards - */ -struct fatm_stats { - struct { - uint32_t crc_header_errors; - uint32_t framing_errors; - uint32_t pad[2]; - } phy_4b5b; - - struct { - uint32_t section_bip8_errors; - uint32_t path_bip8_errors; - uint32_t line_bip24_errors; - uint32_t line_febe_errors; - uint32_t path_febe_errors; - uint32_t corr_hcs_errors; - uint32_t ucorr_hcs_errors; - uint32_t pad[1]; - } phy_oc3; - - struct { - uint32_t cells_transmitted; - uint32_t cells_received; - uint32_t vpi_bad_range; - uint32_t vpi_no_conn; - uint32_t vci_bad_range; - uint32_t vci_no_conn; - uint32_t pad[2]; - } atm; - - struct { - uint32_t cells_transmitted; - uint32_t cells_received; - uint32_t cells_dropped; - uint32_t pad[1]; - } aal0; - - struct { - uint32_t cells_transmitted; - uint32_t cells_received; - uint32_t cells_crc_errors; - uint32_t cels_protocol_errors; - uint32_t cells_dropped; - uint32_t cspdus_transmitted; - uint32_t cspdus_received; - uint32_t cspdus_protocol_errors; - uint32_t cspdus_dropped; - uint32_t pad[3]; - } aal4; - - struct { - uint32_t cells_transmitted; - uint32_t cells_received; - uint32_t congestion_experienced; - uint32_t cells_dropped; - uint32_t cspdus_transmitted; - uint32_t cspdus_received; - uint32_t cspdus_crc_errors; - uint32_t cspdus_protocol_errors; - uint32_t cspdus_dropped; - uint32_t pad[3]; - } aal5; - - struct { - uint32_t small_b1_failed; - uint32_t large_b1_failed; - uint32_t small_b2_failed; - uint32_t large_b2_failed; - uint32_t rpd_alloc_failed; - uint32_t receive_carrier; - uint32_t pad[2]; - } aux; -}; -#define FATM_NSTATS 42 diff --git a/sys/dev/fatm/if_fatmvar.h b/sys/dev/fatm/if_fatmvar.h deleted file mode 100644 index ba064fe2300e..000000000000 --- a/sys/dev/fatm/if_fatmvar.h +++ /dev/null @@ -1,395 +0,0 @@ -/*- - * Copyright (c) 2001-2003 - * Fraunhofer Institute for Open Communication Systems (FhG Fokus). - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * Author: Hartmut Brandt <harti@freebsd.org> - * - * $FreeBSD$ - * - * Fore PCA200E driver definitions. - */ -/* - * Debug statistics of the PCA200 driver - */ -struct istats { - uint32_t cmd_queue_full; - uint32_t get_stat_errors; - uint32_t clr_stat_errors; - uint32_t get_prom_errors; - uint32_t suni_reg_errors; - uint32_t tx_queue_full; - uint32_t tx_queue_almost_full; - uint32_t tx_pdu2big; - uint32_t tx_too_many_segs; - uint32_t tx_retry; - uint32_t fix_empty; - uint32_t fix_addr_copy; - uint32_t fix_addr_noext; - uint32_t fix_addr_ext; - uint32_t fix_len_noext; - uint32_t fix_len_copy; - uint32_t fix_len; - uint32_t rx_badvc; - uint32_t rx_closed; -}; - -/* - * Addresses on the on-board RAM are expressed as offsets to the - * start of that RAM. - */ -typedef uint32_t cardoff_t; - -/* - * The card uses a number of queues for communication with the host. - * Parts of the queue are located on the card (pointers to the status - * word and the ioblk and the command blocks), the rest in host memory. - * Each of these queues forms a ring, where the head and tail pointers are - * managed * either by the card or the host. For the receive queue the - * head is managed by the card (and not used altogether by the host) and the - * tail by the host - for all other queues its the other way around. - * The host resident parts of the queue entries contain pointers to - * the host resident status and the host resident ioblk (the latter not for - * the command queue) as well as DMA addresses for supply to the card. - */ -struct fqelem { - cardoff_t card; /* corresponding element on card */ - bus_addr_t card_ioblk; /* ioblk address to supply to card */ - volatile uint32_t *statp; /* host status pointer */ - void *ioblk; /* host ioblk (not for commands) */ -}; - -struct fqueue { - struct fqelem *chunk; /* pointer to the element array */ - int head; /* queue head */ - int tail; /* queue tail */ -}; - -/* - * Queue manipulation macros - */ -#define NEXT_QUEUE_ENTRY(HEAD,LEN) ((HEAD) = ((HEAD) + 1) % LEN) -#define GET_QUEUE(Q,TYPE,IDX) (&((TYPE *)(Q).chunk)[(IDX)]) - -/* - * Now define structures for the different queues. Each of these structures - * must start with a struct fqelem. - */ -struct txqueue { /* transmit queue element */ - struct fqelem q; - struct mbuf *m; /* the chain we are transmitting */ - bus_dmamap_t map; /* map for the packet */ -}; - -struct rxqueue { /* receive queue element */ - struct fqelem q; -}; - -struct supqueue { /* supply queue element */ - struct fqelem q; -}; - -struct cmdqueue; -struct fatm_softc; - -typedef void (*completion_cb)(struct fatm_softc *, struct cmdqueue *); - -struct cmdqueue { /* command queue element */ - struct fqelem q; - completion_cb cb; /* call on command completion */ - int error; /* set if error occurred */ -}; - -/* - * Card-DMA-able memory is managed by means of the bus_dma* functions. - * To allocate a chunk of memory with a specific size and alignment one - * has to: - * 1. create a DMA tag - * 2. allocate the memory - * 3. load the memory into a map. - * This finally gives the physical address that can be given to the card. - * The card can DMA the entire 32-bit space without boundaries. We assume, - * that all the allocations can be mapped in one contiguous segment. This - * may be wrong in the future if we have more than 32 bit addresses. - * Allocation is done at attach time and managed by the following structure. - * - * This could be done easier with the NetBSD bus_dma* functions. They appear - * to be more useful and consistent. - */ -struct fatm_mem { - u_int size; /* size */ - u_int align; /* alignment */ - bus_dma_tag_t dmat; /* DMA tag */ - void *mem; /* memory block */ - bus_addr_t paddr; /* pysical address */ - bus_dmamap_t map; /* map */ -}; - -/* - * Each of these structures describes one receive buffer while the buffer - * is on the card or in the receive return queue. These structures are - * allocated at initialisation time together with the DMA maps. The handle that - * is given to the card is the index into the array of these structures. - */ -struct rbuf { - struct mbuf *m; /* the mbuf while we are on the card */ - bus_dmamap_t map; /* the map */ - LIST_ENTRY(rbuf) link; /* the free list link */ -}; -LIST_HEAD(rbuf_list, rbuf); - -/* - * The driver maintains a list of all open VCCs. Because we - * use only VPI=0 and a maximum VCI of 1024, the list is rather an array - * than a list. We also store the atm pseudoheader flags here and the - * rxhand (aka. protocol block). - */ -struct card_vcc { - struct atmio_vcc param; /* traffic parameters */ - void *rxhand; - u_int vflags; - uint32_t ipackets; - uint32_t opackets; - uint32_t ibytes; - uint32_t obytes; -}; - -#define FATM_VCC_OPEN 0x00010000 /* is open */ -#define FATM_VCC_TRY_OPEN 0x00020000 /* is currently opening */ -#define FATM_VCC_TRY_CLOSE 0x00040000 /* is currently closing */ -#define FATM_VCC_BUSY 0x00070000 /* one of the above */ -#define FATM_VCC_REOPEN 0x00080000 /* reopening during init */ - -/* - * Finally the softc structure - */ -struct fatm_softc { - struct ifnet *ifp; /* common part */ - struct mtx mtx; /* lock this structure */ - struct ifmedia media; /* media */ - struct callout watchdog_timer; - - int init_state; /* initialisation step */ - int memid; /* resource id for card memory */ - struct resource *memres; /* resource for card memory */ - bus_space_handle_t memh; /* handle for card memory */ - bus_space_tag_t memt; /* tag for card memory */ - int irqid; /* resource id for interrupt */ - struct resource *irqres; /* resource for interrupt */ - void *ih; /* interrupt handler */ - - bus_dma_tag_t parent_dmat; /* parent DMA tag */ - struct fatm_mem stat_mem; /* memory for status blocks */ - struct fatm_mem txq_mem; /* TX descriptor queue */ - struct fatm_mem rxq_mem; /* RX descriptor queue */ - struct fatm_mem s1q_mem; /* Small buffer 1 queue */ - struct fatm_mem l1q_mem; /* Large buffer 1 queue */ - struct fatm_mem prom_mem; /* PROM memory */ - - struct fqueue txqueue; /* transmission queue */ - struct fqueue rxqueue; /* receive queue */ - struct fqueue s1queue; /* SMALL S1 queue */ - struct fqueue l1queue; /* LARGE S1 queue */ - struct fqueue cmdqueue; /* command queue */ - - /* fields for access to the SUNI registers */ - struct fatm_mem reg_mem; /* DMAable memory for readregs */ - struct cv cv_regs; /* to serialize access to reg_mem */ - - /* fields for access to statistics */ - struct fatm_mem sadi_mem; /* sadistics memory */ - struct cv cv_stat; /* to serialize access to sadi_mem */ - - u_int flags; -#define FATM_STAT_INUSE 0x0001 -#define FATM_REGS_INUSE 0x0002 - u_int txcnt; /* number of used transmit desc */ - int retry_tx; /* keep mbufs in queue if full */ - - struct card_vcc **vccs; /* table of vccs */ - int open_vccs; /* number of vccs in use */ - int small_cnt; /* number of buffers owned by card */ - int large_cnt; /* number of buffers owned by card */ - uma_zone_t vcc_zone; /* allocator for VCCs */ - - /* receiving */ - struct rbuf *rbufs; /* rbuf array */ - struct rbuf_list rbuf_free; /* free rbufs list */ - struct rbuf_list rbuf_used; /* used rbufs list */ - u_int rbuf_total; /* total number of buffs */ - bus_dma_tag_t rbuf_tag; /* tag for rbuf mapping */ - - /* transmission */ - bus_dma_tag_t tx_tag; /* transmission tag */ - - uint32_t heartbeat; /* last heartbeat */ - u_int stop_cnt; /* how many times checked */ - - struct istats istats; /* internal statistics */ - - /* SUNI state */ - struct utopia utopia; - - /* sysctl support */ - struct sysctl_ctx_list sysctl_ctx; - struct sysctl_oid *sysctl_tree; - -#ifdef FATM_DEBUG - /* debugging */ - u_int debug; -#endif -}; - -#ifndef FATM_DEBUG -#define FATM_LOCK(SC) mtx_lock(&(SC)->mtx) -#define FATM_UNLOCK(SC) mtx_unlock(&(SC)->mtx) -#else -#define FATM_LOCK(SC) do { \ - DBG(SC, LOCK, ("locking in line %d", __LINE__)); \ - mtx_lock(&(SC)->mtx); \ - } while (0) -#define FATM_UNLOCK(SC) do { \ - DBG(SC, LOCK, ("unlocking in line %d", __LINE__)); \ - mtx_unlock(&(SC)->mtx); \ - } while (0) -#endif -#define FATM_CHECKLOCK(SC) mtx_assert(&sc->mtx, MA_OWNED) - -/* - * Macros to access host memory fields that are also access by the card. - * These fields need to little-endian always. - */ -#define H_GETSTAT(STATP) (le32toh(*(STATP))) -#define H_SETSTAT(STATP, S) do { *(STATP) = htole32(S); } while (0) -#define H_SETDESC(DESC, D) do { (DESC) = htole32(D); } while (0) - -#ifdef notyet -#define H_SYNCSTAT_POSTREAD(SC, P) \ - bus_dmamap_sync_size((SC)->stat_mem.dmat, \ - (SC)->stat_mem.map, \ - (volatile char *)(P) - (volatile char *)(SC)->stat_mem.mem, \ - sizeof(volatile uint32_t), BUS_DMASYNC_POSTREAD) - -#define H_SYNCSTAT_PREWRITE(SC, P) \ - bus_dmamap_sync_size((SC)->stat_mem.dmat, \ - (SC)->stat_mem.map, \ - (volatile char *)(P) - (volatile char *)(SC)->stat_mem.mem, \ - sizeof(volatile uint32_t), BUS_DMASYNC_PREWRITE) - -#define H_SYNCQ_PREWRITE(M, P, SZ) \ - bus_dmamap_sync_size((M)->dmat, (M)->map, \ - (volatile char *)(P) - (volatile char *)(M)->mem, (SZ), \ - BUS_DMASYNC_PREWRITE) - -#define H_SYNCQ_POSTREAD(M, P, SZ) \ - bus_dmamap_sync_size((M)->dmat, (M)->map, \ - (volatile char *)(P) - (volatile char *)(M)->mem, (SZ), \ - BUS_DMASYNC_POSTREAD) -#else -#define H_SYNCSTAT_POSTREAD(SC, P) do { } while (0) -#define H_SYNCSTAT_PREWRITE(SC, P) do { } while (0) -#define H_SYNCQ_PREWRITE(M, P, SZ) do { } while (0) -#define H_SYNCQ_POSTREAD(M, P, SZ) do { } while (0) -#endif - -/* - * Macros to manipulate VPVCs - */ -#define MKVPVC(VPI,VCI) (((VPI) << 16) | (VCI)) -#define GETVPI(VPVC) (((VPVC) >> 16) & 0xff) -#define GETVCI(VPVC) ((VPVC) & 0xffff) - -/* - * These macros encapsulate the bus_space functions for better readabiliy. - */ -#define WRITE4(SC, OFF, VAL) bus_space_write_4(SC->memt, SC->memh, OFF, VAL) -#define WRITE1(SC, OFF, VAL) bus_space_write_1(SC->memt, SC->memh, OFF, VAL) - -#define READ4(SC, OFF) bus_space_read_4(SC->memt, SC->memh, OFF) -#define READ1(SC, OFF) bus_space_read_1(SC->memt, SC->memh, OFF) - -#define BARRIER_R(SC) \ - bus_space_barrier(SC->memt, SC->memh, 0, FATMO_END, \ - BUS_SPACE_BARRIER_READ) -#define BARRIER_W(SC) \ - bus_space_barrier(SC->memt, SC->memh, 0, FATMO_END, \ - BUS_SPACE_BARRIER_WRITE) -#define BARRIER_RW(SC) \ - bus_space_barrier(SC->memt, SC->memh, 0, FATMO_END, \ - BUS_SPACE_BARRIER_WRITE|BUS_SPACE_BARRIER_READ) - -#ifdef FATM_DEBUG -#define DBG(SC, FL, PRINT) do { \ - if ((SC)->debug & DBG_##FL) { \ - if_printf(&(SC)->ifatm.ifnet, "%s: ", __func__); \ - printf PRINT; \ - printf("\n"); \ - } \ - } while (0) -#define DBGC(SC, FL, PRINT) do { \ - if ((SC)->debug & DBG_##FL) \ - printf PRINT; \ - } while (0) - -enum { - DBG_RCV = 0x0001, - DBG_XMIT = 0x0002, - DBG_VCC = 0x0004, - DBG_IOCTL = 0x0008, - DBG_ATTACH = 0x0010, - DBG_INIT = 0x0020, - DBG_DMA = 0x0040, - DBG_BEAT = 0x0080, - DBG_UART = 0x0100, - DBG_LOCK = 0x0200, - - DBG_ALL = 0xffff -}; - -#else -#define DBG(SC, FL, PRINT) -#define DBGC(SC, FL, PRINT) -#endif - -/* - * Configuration. - * - * This section contains tunable parameters and dependend defines. - */ -#define FATM_CMD_QLEN 16 /* command queue length */ -#ifndef TEST_DMA_SYNC -#define FATM_TX_QLEN 128 /* transmit queue length */ -#define FATM_RX_QLEN 64 /* receive queue length */ -#else -#define FATM_TX_QLEN 8 /* transmit queue length */ -#define FATM_RX_QLEN 8 /* receive queue length */ -#endif - -#define SMALL_SUPPLY_QLEN 16 -#define SMALL_POOL_SIZE 256 -#define SMALL_SUPPLY_BLKSIZE 8 - -#define LARGE_SUPPLY_QLEN 16 -#define LARGE_POOL_SIZE 128 -#define LARGE_SUPPLY_BLKSIZE 8 diff --git a/sys/dev/hatm/if_hatm.c b/sys/dev/hatm/if_hatm.c deleted file mode 100644 index e87b79f7ba96..000000000000 --- a/sys/dev/hatm/if_hatm.c +++ /dev/null @@ -1,2419 +0,0 @@ -/*- - * Copyright (c) 2001-2003 - * Fraunhofer Institute for Open Communication Systems (FhG Fokus). - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * Author: Hartmut Brandt <harti@freebsd.org> - * - * ForeHE driver. - * - * This file contains the module and driver infrastructure stuff as well - * as a couple of utility functions and the entire initialisation. - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include "opt_inet.h" -#include "opt_natm.h" - -#include <sys/types.h> -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/malloc.h> -#include <sys/kernel.h> -#include <sys/bus.h> -#include <sys/errno.h> -#include <sys/conf.h> -#include <sys/module.h> -#include <sys/queue.h> -#include <sys/syslog.h> -#include <sys/lock.h> -#include <sys/mutex.h> -#include <sys/condvar.h> -#include <sys/sysctl.h> -#include <vm/uma.h> - -#include <sys/sockio.h> -#include <sys/mbuf.h> -#include <sys/socket.h> - -#include <net/if.h> -#include <net/if_var.h> -#include <net/if_media.h> -#include <net/if_atm.h> -#include <net/if_types.h> -#include <net/route.h> -#ifdef ENABLE_BPF -#include <net/bpf.h> -#endif -#include <netinet/in.h> -#include <netinet/if_atm.h> - -#include <machine/bus.h> -#include <machine/resource.h> -#include <sys/bus.h> -#include <sys/rman.h> -#include <dev/pci/pcireg.h> -#include <dev/pci/pcivar.h> - -#include <dev/utopia/utopia.h> -#include <dev/hatm/if_hatmconf.h> -#include <dev/hatm/if_hatmreg.h> -#include <dev/hatm/if_hatmvar.h> - -static const struct { - uint16_t vid; - uint16_t did; - const char *name; -} hatm_devs[] = { - { 0x1127, 0x400, - "FORE HE" }, - { 0, 0, NULL } -}; - -SYSCTL_DECL(_hw_atm); - -MODULE_DEPEND(hatm, utopia, 1, 1, 1); -MODULE_DEPEND(hatm, pci, 1, 1, 1); -MODULE_DEPEND(hatm, atm, 1, 1, 1); - -#define EEPROM_DELAY 400 /* microseconds */ - -/* Read from EEPROM 0000 0011b */ -static const uint32_t readtab[] = { - HE_REGM_HOST_PROM_SEL | HE_REGM_HOST_PROM_CLOCK, - 0, - HE_REGM_HOST_PROM_CLOCK, - 0, /* 0 */ - HE_REGM_HOST_PROM_CLOCK, - 0, /* 0 */ - HE_REGM_HOST_PROM_CLOCK, - 0, /* 0 */ - HE_REGM_HOST_PROM_CLOCK, - 0, /* 0 */ - HE_REGM_HOST_PROM_CLOCK, - 0, /* 0 */ - HE_REGM_HOST_PROM_CLOCK, - HE_REGM_HOST_PROM_DATA_IN, /* 0 */ - HE_REGM_HOST_PROM_CLOCK | HE_REGM_HOST_PROM_DATA_IN, - HE_REGM_HOST_PROM_DATA_IN, /* 1 */ - HE_REGM_HOST_PROM_CLOCK | HE_REGM_HOST_PROM_DATA_IN, - HE_REGM_HOST_PROM_DATA_IN, /* 1 */ -}; -static const uint32_t clocktab[] = { - 0, HE_REGM_HOST_PROM_CLOCK, - 0, HE_REGM_HOST_PROM_CLOCK, - 0, HE_REGM_HOST_PROM_CLOCK, - 0, HE_REGM_HOST_PROM_CLOCK, - 0, HE_REGM_HOST_PROM_CLOCK, - 0, HE_REGM_HOST_PROM_CLOCK, - 0, HE_REGM_HOST_PROM_CLOCK, - 0, HE_REGM_HOST_PROM_CLOCK, - 0 -}; - -/* - * Convert cell rate to ATM Forum format - */ -u_int -hatm_cps2atmf(uint32_t pcr) -{ - u_int e; - - if (pcr == 0) - return (0); - pcr <<= 9; - e = 0; - while (pcr > (1024 - 1)) { - e++; - pcr >>= 1; - } - return ((1 << 14) | (e << 9) | (pcr & 0x1ff)); -} -u_int -hatm_atmf2cps(uint32_t fcr) -{ - fcr &= 0x7fff; - - return ((1 << ((fcr >> 9) & 0x1f)) * (512 + (fcr & 0x1ff)) / 512 - * (fcr >> 14)); -} - -/************************************************************ - * - * Initialisation - */ -/* - * Probe for a HE controller - */ -static int -hatm_probe(device_t dev) -{ - int i; - - for (i = 0; hatm_devs[i].name; i++) - if (pci_get_vendor(dev) == hatm_devs[i].vid && - pci_get_device(dev) == hatm_devs[i].did) { - device_set_desc(dev, hatm_devs[i].name); - return (BUS_PROBE_DEFAULT); - } - return (ENXIO); -} - -/* - * Allocate and map DMA-able memory. We support only contiguous mappings. - */ -static void -dmaload_helper(void *arg, bus_dma_segment_t *segs, int nsegs, int error) -{ - if (error) - return; - KASSERT(nsegs == 1, ("too many segments for DMA: %d", nsegs)); - KASSERT(segs[0].ds_addr <= 0xffffffffUL, - ("phys addr too large %lx", (u_long)segs[0].ds_addr)); - - *(bus_addr_t *)arg = segs[0].ds_addr; -} -static int -hatm_alloc_dmamem(struct hatm_softc *sc, const char *what, struct dmamem *mem) -{ - int error; - - mem->base = NULL; - - /* - * Alignement does not work in the bus_dmamem_alloc function below - * on FreeBSD. malloc seems to align objects at least to the object - * size so increase the size to the alignment if the size is lesser - * than the alignemnt. - * XXX on sparc64 this is (probably) not needed. - */ - if (mem->size < mem->align) - mem->size = mem->align; - - error = bus_dma_tag_create(sc->parent_tag, mem->align, 0, - BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, - NULL, NULL, mem->size, 1, - BUS_SPACE_MAXSIZE_32BIT, BUS_DMA_ALLOCNOW, - NULL, NULL, &mem->tag); - if (error) { - if_printf(sc->ifp, "DMA tag create (%s)\n", what); - return (error); - } - - error = bus_dmamem_alloc(mem->tag, &mem->base, 0, &mem->map); - if (error) { - if_printf(sc->ifp, "DMA mem alloc (%s): %d\n", - what, error); - bus_dma_tag_destroy(mem->tag); - mem->base = NULL; - return (error); - } - - error = bus_dmamap_load(mem->tag, mem->map, mem->base, mem->size, - dmaload_helper, &mem->paddr, BUS_DMA_NOWAIT); - if (error) { - if_printf(sc->ifp, "DMA map load (%s): %d\n", - what, error); - bus_dmamem_free(mem->tag, mem->base, mem->map); - bus_dma_tag_destroy(mem->tag); - mem->base = NULL; - return (error); - } - - DBG(sc, DMA, ("%s S/A/V/P 0x%x 0x%x %p 0x%lx", what, mem->size, - mem->align, mem->base, (u_long)mem->paddr)); - - return (0); -} - -/* - * Destroy all the resources of an DMA-able memory region. - */ -static void -hatm_destroy_dmamem(struct dmamem *mem) -{ - if (mem->base != NULL) { - bus_dmamap_unload(mem->tag, mem->map); - bus_dmamem_free(mem->tag, mem->base, mem->map); - (void)bus_dma_tag_destroy(mem->tag); - mem->base = NULL; - } -} - -/* - * Initialize/destroy DMA maps for the large pool 0 - */ -static void -hatm_destroy_rmaps(struct hatm_softc *sc) -{ - u_int b; - - DBG(sc, ATTACH, ("destroying rmaps and lbuf pointers...")); - if (sc->rmaps != NULL) { - for (b = 0; b < sc->lbufs_size; b++) - bus_dmamap_destroy(sc->mbuf_tag, sc->rmaps[b]); - free(sc->rmaps, M_DEVBUF); - } - if (sc->lbufs != NULL) - free(sc->lbufs, M_DEVBUF); -} - -static void -hatm_init_rmaps(struct hatm_softc *sc) -{ - u_int b; - int err; - - DBG(sc, ATTACH, ("allocating rmaps and lbuf pointers...")); - sc->lbufs = malloc(sizeof(sc->lbufs[0]) * sc->lbufs_size, - M_DEVBUF, M_ZERO | M_WAITOK); - - /* allocate and create the DMA maps for the large pool */ - sc->rmaps = malloc(sizeof(sc->rmaps[0]) * sc->lbufs_size, - M_DEVBUF, M_WAITOK); - for (b = 0; b < sc->lbufs_size; b++) { - err = bus_dmamap_create(sc->mbuf_tag, 0, &sc->rmaps[b]); - if (err != 0) - panic("bus_dmamap_create: %d\n", err); - } -} - -/* - * Initialize and destroy small mbuf page pointers and pages - */ -static void -hatm_destroy_smbufs(struct hatm_softc *sc) -{ - u_int i, b; - struct mbuf_page *pg; - struct mbuf_chunk_hdr *h; - - if (sc->mbuf_pages != NULL) { - for (i = 0; i < sc->mbuf_npages; i++) { - pg = sc->mbuf_pages[i]; - for (b = 0; b < pg->hdr.nchunks; b++) { - h = (struct mbuf_chunk_hdr *) ((char *)pg + - b * pg->hdr.chunksize + pg->hdr.hdroff); - if (h->flags & MBUF_CARD) - if_printf(sc->ifp, - "%s -- mbuf page=%u card buf %u\n", - __func__, i, b); - if (h->flags & MBUF_USED) - if_printf(sc->ifp, - "%s -- mbuf page=%u used buf %u\n", - __func__, i, b); - } - bus_dmamap_unload(sc->mbuf_tag, pg->hdr.map); - bus_dmamap_destroy(sc->mbuf_tag, pg->hdr.map); - free(pg, M_DEVBUF); - } - free(sc->mbuf_pages, M_DEVBUF); - } -} - -static void -hatm_init_smbufs(struct hatm_softc *sc) -{ - sc->mbuf_pages = malloc(sizeof(sc->mbuf_pages[0]) * - sc->mbuf_max_pages, M_DEVBUF, M_WAITOK); - sc->mbuf_npages = 0; -} - -/* - * Initialize/destroy TPDs. This is called from attach/detach. - */ -static void -hatm_destroy_tpds(struct hatm_softc *sc) -{ - struct tpd *t; - - if (sc->tpds.base == NULL) - return; - - DBG(sc, ATTACH, ("releasing TPDs ...")); - if (sc->tpd_nfree != sc->tpd_total) - if_printf(sc->ifp, "%u tpds still in use from %u\n", - sc->tpd_total - sc->tpd_nfree, sc->tpd_total); - while ((t = SLIST_FIRST(&sc->tpd_free)) != NULL) { - SLIST_REMOVE_HEAD(&sc->tpd_free, link); - bus_dmamap_destroy(sc->tx_tag, t->map); - } - hatm_destroy_dmamem(&sc->tpds); - free(sc->tpd_used, M_DEVBUF); - DBG(sc, ATTACH, ("... done")); -} -static int -hatm_init_tpds(struct hatm_softc *sc) -{ - int error; - u_int i; - struct tpd *t; - - DBG(sc, ATTACH, ("allocating %u TPDs and maps ...", sc->tpd_total)); - error = hatm_alloc_dmamem(sc, "TPD memory", &sc->tpds); - if (error != 0) { - DBG(sc, ATTACH, ("... dmamem error=%d", error)); - return (error); - } - - /* put all the TPDs on the free list and allocate DMA maps */ - for (i = 0; i < sc->tpd_total; i++) { - t = TPD_ADDR(sc, i); - t->no = i; - t->mbuf = NULL; - error = bus_dmamap_create(sc->tx_tag, 0, &t->map); - if (error != 0) { - DBG(sc, ATTACH, ("... dmamap error=%d", error)); - while ((t = SLIST_FIRST(&sc->tpd_free)) != NULL) { - SLIST_REMOVE_HEAD(&sc->tpd_free, link); - bus_dmamap_destroy(sc->tx_tag, t->map); - } - hatm_destroy_dmamem(&sc->tpds); - return (error); - } - - SLIST_INSERT_HEAD(&sc->tpd_free, t, link); - } - - /* allocate and zero bitmap */ - sc->tpd_used = malloc(sizeof(uint8_t) * (sc->tpd_total + 7) / 8, - M_DEVBUF, M_ZERO | M_WAITOK); - sc->tpd_nfree = sc->tpd_total; - - DBG(sc, ATTACH, ("... done")); - - return (0); -} - -/* - * Free all the TPDs that where given to the card. - * An mbuf chain may be attached to a TPD - free it also and - * unload its associated DMA map. - */ -static void -hatm_stop_tpds(struct hatm_softc *sc) -{ - u_int i; - struct tpd *t; - - DBG(sc, ATTACH, ("free TPDs ...")); - for (i = 0; i < sc->tpd_total; i++) { - if (TPD_TST_USED(sc, i)) { - t = TPD_ADDR(sc, i); - if (t->mbuf) { - m_freem(t->mbuf); - t->mbuf = NULL; - bus_dmamap_unload(sc->tx_tag, t->map); - } - TPD_CLR_USED(sc, i); - SLIST_INSERT_HEAD(&sc->tpd_free, t, link); - sc->tpd_nfree++; - } - } -} - -/* - * This frees ALL resources of this interface and leaves the structure - * in an indeterminate state. This is called just before detaching or - * on a failed attach. No lock should be held. - */ -static void -hatm_destroy(struct hatm_softc *sc) -{ - u_int cid; - - bus_teardown_intr(sc->dev, sc->irqres, sc->ih); - - hatm_destroy_rmaps(sc); - hatm_destroy_smbufs(sc); - hatm_destroy_tpds(sc); - - if (sc->vcc_zone != NULL) { - for (cid = 0; cid < HE_MAX_VCCS; cid++) - if (sc->vccs[cid] != NULL) - uma_zfree(sc->vcc_zone, sc->vccs[cid]); - uma_zdestroy(sc->vcc_zone); - } - - /* - * Release all memory allocated to the various queues and - * Status pages. These have there own flag which shows whether - * they are really allocated. - */ - hatm_destroy_dmamem(&sc->irq_0.mem); - hatm_destroy_dmamem(&sc->rbp_s0.mem); - hatm_destroy_dmamem(&sc->rbp_l0.mem); - hatm_destroy_dmamem(&sc->rbp_s1.mem); - hatm_destroy_dmamem(&sc->rbrq_0.mem); - hatm_destroy_dmamem(&sc->rbrq_1.mem); - hatm_destroy_dmamem(&sc->tbrq.mem); - hatm_destroy_dmamem(&sc->tpdrq.mem); - hatm_destroy_dmamem(&sc->hsp_mem); - - if (sc->irqres != NULL) - bus_release_resource(sc->dev, SYS_RES_IRQ, - sc->irqid, sc->irqres); - - if (sc->tx_tag != NULL) - if (bus_dma_tag_destroy(sc->tx_tag)) - if_printf(sc->ifp, "mbuf DMA tag busy\n"); - - if (sc->mbuf_tag != NULL) - if (bus_dma_tag_destroy(sc->mbuf_tag)) - if_printf(sc->ifp, "mbuf DMA tag busy\n"); - - if (sc->parent_tag != NULL) - if (bus_dma_tag_destroy(sc->parent_tag)) - if_printf(sc->ifp, "parent DMA tag busy\n"); - - if (sc->memres != NULL) - bus_release_resource(sc->dev, SYS_RES_MEMORY, - sc->memid, sc->memres); - - sysctl_ctx_free(&sc->sysctl_ctx); - - cv_destroy(&sc->cv_rcclose); - cv_destroy(&sc->vcc_cv); - mtx_destroy(&sc->mtx); - - if (sc->ifp != NULL) - if_free(sc->ifp); -} - -/* - * 4.4 Card reset - */ -static int -hatm_reset(struct hatm_softc *sc) -{ - u_int v, count; - - WRITE4(sc, HE_REGO_RESET_CNTL, 0x00); - BARRIER_W(sc); - WRITE4(sc, HE_REGO_RESET_CNTL, 0xff); - BARRIER_RW(sc); - count = 0; - while (((v = READ4(sc, HE_REGO_RESET_CNTL)) & HE_REGM_RESET_STATE) == 0) { - BARRIER_R(sc); - if (++count == 100) { - if_printf(sc->ifp, "reset failed\n"); - return (ENXIO); - } - DELAY(1000); - } - return (0); -} - -/* - * 4.5 Set Bus Width - */ -static void -hatm_init_bus_width(struct hatm_softc *sc) -{ - uint32_t v, v1; - - v = READ4(sc, HE_REGO_HOST_CNTL); - BARRIER_R(sc); - if (v & HE_REGM_HOST_BUS64) { - sc->pci64 = 1; - v1 = pci_read_config(sc->dev, HE_PCIR_GEN_CNTL_0, 4); - v1 |= HE_PCIM_CTL0_64BIT; - pci_write_config(sc->dev, HE_PCIR_GEN_CNTL_0, v1, 4); - - v |= HE_REGM_HOST_DESC_RD64 - | HE_REGM_HOST_DATA_RD64 - | HE_REGM_HOST_DATA_WR64; - WRITE4(sc, HE_REGO_HOST_CNTL, v); - BARRIER_W(sc); - } else { - sc->pci64 = 0; - v = pci_read_config(sc->dev, HE_PCIR_GEN_CNTL_0, 4); - v &= ~HE_PCIM_CTL0_64BIT; - pci_write_config(sc->dev, HE_PCIR_GEN_CNTL_0, v, 4); - } -} - -/* - * 4.6 Set Host Endianness - */ -static void -hatm_init_endianess(struct hatm_softc *sc) -{ - uint32_t v; - - v = READ4(sc, HE_REGO_LB_SWAP); - BARRIER_R(sc); -#if BYTE_ORDER == BIG_ENDIAN - v |= HE_REGM_LBSWAP_INTR_SWAP | - HE_REGM_LBSWAP_DESC_WR_SWAP | - HE_REGM_LBSWAP_BIG_ENDIAN; - v &= ~(HE_REGM_LBSWAP_DATA_WR_SWAP | - HE_REGM_LBSWAP_DESC_RD_SWAP | - HE_REGM_LBSWAP_DATA_RD_SWAP); -#else - v &= ~(HE_REGM_LBSWAP_DATA_WR_SWAP | - HE_REGM_LBSWAP_DESC_RD_SWAP | - HE_REGM_LBSWAP_DATA_RD_SWAP | - HE_REGM_LBSWAP_INTR_SWAP | - HE_REGM_LBSWAP_DESC_WR_SWAP | - HE_REGM_LBSWAP_BIG_ENDIAN); -#endif - - if (sc->he622) - v |= HE_REGM_LBSWAP_XFER_SIZE; - - WRITE4(sc, HE_REGO_LB_SWAP, v); - BARRIER_W(sc); -} - -/* - * 4.7 Read EEPROM - */ -static uint8_t -hatm_read_prom_byte(struct hatm_softc *sc, u_int addr) -{ - uint32_t val, tmp_read, byte_read; - u_int i, j; - int n; - - val = READ4(sc, HE_REGO_HOST_CNTL); - val &= HE_REGM_HOST_PROM_BITS; - BARRIER_R(sc); - - val |= HE_REGM_HOST_PROM_WREN; - WRITE4(sc, HE_REGO_HOST_CNTL, val); - BARRIER_W(sc); - - /* send READ */ - for (i = 0; i < nitems(readtab); i++) { - WRITE4(sc, HE_REGO_HOST_CNTL, val | readtab[i]); - BARRIER_W(sc); - DELAY(EEPROM_DELAY); - } - - /* send ADDRESS */ - for (n = 7, j = 0; n >= 0; n--) { - WRITE4(sc, HE_REGO_HOST_CNTL, val | clocktab[j++] | - (((addr >> n) & 1 ) << HE_REGS_HOST_PROM_DATA_IN)); - BARRIER_W(sc); - DELAY(EEPROM_DELAY); - WRITE4(sc, HE_REGO_HOST_CNTL, val | clocktab[j++] | - (((addr >> n) & 1 ) << HE_REGS_HOST_PROM_DATA_IN)); - BARRIER_W(sc); - DELAY(EEPROM_DELAY); - } - - val &= ~HE_REGM_HOST_PROM_WREN; - WRITE4(sc, HE_REGO_HOST_CNTL, val); - BARRIER_W(sc); - - /* read DATA */ - byte_read = 0; - for (n = 7, j = 0; n >= 0; n--) { - WRITE4(sc, HE_REGO_HOST_CNTL, val | clocktab[j++]); - BARRIER_W(sc); - DELAY(EEPROM_DELAY); - tmp_read = READ4(sc, HE_REGO_HOST_CNTL); - byte_read |= (uint8_t)(((tmp_read & HE_REGM_HOST_PROM_DATA_OUT) - >> HE_REGS_HOST_PROM_DATA_OUT) << n); - WRITE4(sc, HE_REGO_HOST_CNTL, val | clocktab[j++]); - BARRIER_W(sc); - DELAY(EEPROM_DELAY); - } - WRITE4(sc, HE_REGO_HOST_CNTL, val | clocktab[j++]); - BARRIER_W(sc); - DELAY(EEPROM_DELAY); - - return (byte_read); -} - -static void -hatm_init_read_eeprom(struct hatm_softc *sc) -{ - u_int n, count; - u_char byte; - uint32_t v; - - for (n = count = 0; count < HE_EEPROM_PROD_ID_LEN; count++) { - byte = hatm_read_prom_byte(sc, HE_EEPROM_PROD_ID + count); - if (n > 0 || byte != ' ') - sc->prod_id[n++] = byte; - } - while (n > 0 && sc->prod_id[n-1] == ' ') - n--; - sc->prod_id[n] = '\0'; - - for (n = count = 0; count < HE_EEPROM_REV_LEN; count++) { - byte = hatm_read_prom_byte(sc, HE_EEPROM_REV + count); - if (n > 0 || byte != ' ') - sc->rev[n++] = byte; - } - while (n > 0 && sc->rev[n-1] == ' ') - n--; - sc->rev[n] = '\0'; - IFP2IFATM(sc->ifp)->mib.hw_version = sc->rev[0]; - - IFP2IFATM(sc->ifp)->mib.serial = hatm_read_prom_byte(sc, HE_EEPROM_M_SN + 0) << 0; - IFP2IFATM(sc->ifp)->mib.serial |= hatm_read_prom_byte(sc, HE_EEPROM_M_SN + 1) << 8; - IFP2IFATM(sc->ifp)->mib.serial |= hatm_read_prom_byte(sc, HE_EEPROM_M_SN + 2) << 16; - IFP2IFATM(sc->ifp)->mib.serial |= hatm_read_prom_byte(sc, HE_EEPROM_M_SN + 3) << 24; - - v = hatm_read_prom_byte(sc, HE_EEPROM_MEDIA + 0) << 0; - v |= hatm_read_prom_byte(sc, HE_EEPROM_MEDIA + 1) << 8; - v |= hatm_read_prom_byte(sc, HE_EEPROM_MEDIA + 2) << 16; - v |= hatm_read_prom_byte(sc, HE_EEPROM_MEDIA + 3) << 24; - - switch (v) { - case HE_MEDIA_UTP155: - IFP2IFATM(sc->ifp)->mib.media = IFM_ATM_UTP_155; - IFP2IFATM(sc->ifp)->mib.pcr = ATM_RATE_155M; - break; - - case HE_MEDIA_MMF155: - IFP2IFATM(sc->ifp)->mib.media = IFM_ATM_MM_155; - IFP2IFATM(sc->ifp)->mib.pcr = ATM_RATE_155M; - break; - - case HE_MEDIA_MMF622: - IFP2IFATM(sc->ifp)->mib.media = IFM_ATM_MM_622; - IFP2IFATM(sc->ifp)->mib.device = ATM_DEVICE_HE622; - IFP2IFATM(sc->ifp)->mib.pcr = ATM_RATE_622M; - sc->he622 = 1; - break; - - case HE_MEDIA_SMF155: - IFP2IFATM(sc->ifp)->mib.media = IFM_ATM_SM_155; - IFP2IFATM(sc->ifp)->mib.pcr = ATM_RATE_155M; - break; - - case HE_MEDIA_SMF622: - IFP2IFATM(sc->ifp)->mib.media = IFM_ATM_SM_622; - IFP2IFATM(sc->ifp)->mib.device = ATM_DEVICE_HE622; - IFP2IFATM(sc->ifp)->mib.pcr = ATM_RATE_622M; - sc->he622 = 1; - break; - } - - IFP2IFATM(sc->ifp)->mib.esi[0] = hatm_read_prom_byte(sc, HE_EEPROM_MAC + 0); - IFP2IFATM(sc->ifp)->mib.esi[1] = hatm_read_prom_byte(sc, HE_EEPROM_MAC + 1); - IFP2IFATM(sc->ifp)->mib.esi[2] = hatm_read_prom_byte(sc, HE_EEPROM_MAC + 2); - IFP2IFATM(sc->ifp)->mib.esi[3] = hatm_read_prom_byte(sc, HE_EEPROM_MAC + 3); - IFP2IFATM(sc->ifp)->mib.esi[4] = hatm_read_prom_byte(sc, HE_EEPROM_MAC + 4); - IFP2IFATM(sc->ifp)->mib.esi[5] = hatm_read_prom_byte(sc, HE_EEPROM_MAC + 5); -} - -/* - * Clear unused interrupt queue - */ -static void -hatm_clear_irq(struct hatm_softc *sc, u_int group) -{ - WRITE4(sc, HE_REGO_IRQ_BASE(group), 0); - WRITE4(sc, HE_REGO_IRQ_HEAD(group), 0); - WRITE4(sc, HE_REGO_IRQ_CNTL(group), 0); - WRITE4(sc, HE_REGO_IRQ_DATA(group), 0); -} - -/* - * 4.10 Initialize interrupt queues - */ -static void -hatm_init_irq(struct hatm_softc *sc, struct heirq *q, u_int group) -{ - u_int i; - - if (q->size == 0) { - hatm_clear_irq(sc, group); - return; - } - - q->group = group; - q->sc = sc; - q->irq = q->mem.base; - q->head = 0; - q->tailp = q->irq + (q->size - 1); - *q->tailp = 0; - - for (i = 0; i < q->size; i++) - q->irq[i] = HE_REGM_ITYPE_INVALID; - - WRITE4(sc, HE_REGO_IRQ_BASE(group), q->mem.paddr); - WRITE4(sc, HE_REGO_IRQ_HEAD(group), - ((q->size - 1) << HE_REGS_IRQ_HEAD_SIZE) | - (q->thresh << HE_REGS_IRQ_HEAD_THRESH)); - WRITE4(sc, HE_REGO_IRQ_CNTL(group), q->line); - WRITE4(sc, HE_REGO_IRQ_DATA(group), 0); -} - -/* - * 5.1.3 Initialize connection memory - */ -static void -hatm_init_cm(struct hatm_softc *sc) -{ - u_int rsra, mlbm, rabr, numbuffs; - u_int tsra, tabr, mtpd; - u_int n; - - for (n = 0; n < HE_CONFIG_TXMEM; n++) - WRITE_TCM4(sc, n, 0); - for (n = 0; n < HE_CONFIG_RXMEM; n++) - WRITE_RCM4(sc, n, 0); - - numbuffs = sc->r0_numbuffs + sc->r1_numbuffs + sc->tx_numbuffs; - - rsra = 0; - mlbm = ((rsra + IFP2IFATM(sc->ifp)->mib.max_vccs * 8) + 0x7ff) & ~0x7ff; - rabr = ((mlbm + numbuffs * 2) + 0x7ff) & ~0x7ff; - sc->rsrb = roundup2(rabr + 2048, 2 * IFP2IFATM(sc->ifp)->mib.max_vccs); - - tsra = 0; - sc->tsrb = tsra + IFP2IFATM(sc->ifp)->mib.max_vccs * 8; - sc->tsrc = sc->tsrb + IFP2IFATM(sc->ifp)->mib.max_vccs * 4; - sc->tsrd = sc->tsrc + IFP2IFATM(sc->ifp)->mib.max_vccs * 2; - tabr = sc->tsrd + IFP2IFATM(sc->ifp)->mib.max_vccs * 1; - mtpd = roundup2(tabr + 1024, 16 * IFP2IFATM(sc->ifp)->mib.max_vccs); - - DBG(sc, ATTACH, ("rsra=%x mlbm=%x rabr=%x rsrb=%x", - rsra, mlbm, rabr, sc->rsrb)); - DBG(sc, ATTACH, ("tsra=%x tsrb=%x tsrc=%x tsrd=%x tabr=%x mtpd=%x", - tsra, sc->tsrb, sc->tsrc, sc->tsrd, tabr, mtpd)); - - WRITE4(sc, HE_REGO_TSRB_BA, sc->tsrb); - WRITE4(sc, HE_REGO_TSRC_BA, sc->tsrc); - WRITE4(sc, HE_REGO_TSRD_BA, sc->tsrd); - WRITE4(sc, HE_REGO_TMABR_BA, tabr); - WRITE4(sc, HE_REGO_TPD_BA, mtpd); - - WRITE4(sc, HE_REGO_RCMRSRB_BA, sc->rsrb); - WRITE4(sc, HE_REGO_RCMLBM_BA, mlbm); - WRITE4(sc, HE_REGO_RCMABR_BA, rabr); - - BARRIER_W(sc); -} - -/* - * 5.1.4 Initialize Local buffer Pools - */ -static void -hatm_init_rx_buffer_pool(struct hatm_softc *sc, - u_int num, /* bank */ - u_int start, /* start row */ - u_int numbuffs /* number of entries */ -) -{ - u_int row_size; /* bytes per row */ - uint32_t row_addr; /* start address of this row */ - u_int lbuf_size; /* bytes per lbuf */ - u_int lbufs_per_row; /* number of lbufs per memory row */ - uint32_t lbufd_index; /* index of lbuf descriptor */ - uint32_t lbufd_addr; /* address of lbuf descriptor */ - u_int lbuf_row_cnt; /* current lbuf in current row */ - uint32_t lbuf_addr; /* address of current buffer */ - u_int i; - - row_size = sc->bytes_per_row; - row_addr = start * row_size; - lbuf_size = sc->cells_per_lbuf * 48; - lbufs_per_row = sc->cells_per_row / sc->cells_per_lbuf; - - /* descriptor index */ - lbufd_index = num; - - /* 2 words per entry */ - lbufd_addr = READ4(sc, HE_REGO_RCMLBM_BA) + lbufd_index * 2; - - /* write head of queue */ - WRITE4(sc, HE_REGO_RLBF_H(num), lbufd_index); - - lbuf_row_cnt = 0; - for (i = 0; i < numbuffs; i++) { - lbuf_addr = (row_addr + lbuf_row_cnt * lbuf_size) / 32; - - WRITE_RCM4(sc, lbufd_addr, lbuf_addr); - - lbufd_index += 2; - WRITE_RCM4(sc, lbufd_addr + 1, lbufd_index); - - if (++lbuf_row_cnt == lbufs_per_row) { - lbuf_row_cnt = 0; - row_addr += row_size; - } - - lbufd_addr += 2 * 2; - } - - WRITE4(sc, HE_REGO_RLBF_T(num), lbufd_index - 2); - WRITE4(sc, HE_REGO_RLBF_C(num), numbuffs); - - BARRIER_W(sc); -} - -static void -hatm_init_tx_buffer_pool(struct hatm_softc *sc, - u_int start, /* start row */ - u_int numbuffs /* number of entries */ -) -{ - u_int row_size; /* bytes per row */ - uint32_t row_addr; /* start address of this row */ - u_int lbuf_size; /* bytes per lbuf */ - u_int lbufs_per_row; /* number of lbufs per memory row */ - uint32_t lbufd_index; /* index of lbuf descriptor */ - uint32_t lbufd_addr; /* address of lbuf descriptor */ - u_int lbuf_row_cnt; /* current lbuf in current row */ - uint32_t lbuf_addr; /* address of current buffer */ - u_int i; - - row_size = sc->bytes_per_row; - row_addr = start * row_size; - lbuf_size = sc->cells_per_lbuf * 48; - lbufs_per_row = sc->cells_per_row / sc->cells_per_lbuf; - - /* descriptor index */ - lbufd_index = sc->r0_numbuffs + sc->r1_numbuffs; - - /* 2 words per entry */ - lbufd_addr = READ4(sc, HE_REGO_RCMLBM_BA) + lbufd_index * 2; - - /* write head of queue */ - WRITE4(sc, HE_REGO_TLBF_H, lbufd_index); - - lbuf_row_cnt = 0; - for (i = 0; i < numbuffs; i++) { - lbuf_addr = (row_addr + lbuf_row_cnt * lbuf_size) / 32; - - WRITE_RCM4(sc, lbufd_addr, lbuf_addr); - lbufd_index++; - WRITE_RCM4(sc, lbufd_addr + 1, lbufd_index); - - if (++lbuf_row_cnt == lbufs_per_row) { - lbuf_row_cnt = 0; - row_addr += row_size; - } - - lbufd_addr += 2; - } - - WRITE4(sc, HE_REGO_TLBF_T, lbufd_index - 1); - BARRIER_W(sc); -} - -/* - * 5.1.5 Initialize Intermediate Receive Queues - */ -static void -hatm_init_imed_queues(struct hatm_softc *sc) -{ - u_int n; - - if (sc->he622) { - for (n = 0; n < 8; n++) { - WRITE4(sc, HE_REGO_INMQ_S(n), 0x10*n+0x000f); - WRITE4(sc, HE_REGO_INMQ_L(n), 0x10*n+0x200f); - } - } else { - for (n = 0; n < 8; n++) { - WRITE4(sc, HE_REGO_INMQ_S(n), n); - WRITE4(sc, HE_REGO_INMQ_L(n), n+0x8); - } - } -} - -/* - * 5.1.7 Init CS block - */ -static void -hatm_init_cs_block(struct hatm_softc *sc) -{ - u_int n, i; - u_int clkfreg, cellrate, decr, tmp; - static const uint32_t erthr[2][5][3] = HE_REGT_CS_ERTHR; - static const uint32_t erctl[2][3] = HE_REGT_CS_ERCTL; - static const uint32_t erstat[2][2] = HE_REGT_CS_ERSTAT; - static const uint32_t rtfwr[2] = HE_REGT_CS_RTFWR; - static const uint32_t rtatr[2] = HE_REGT_CS_RTATR; - static const uint32_t bwalloc[2][6] = HE_REGT_CS_BWALLOC; - static const uint32_t orcf[2][2] = HE_REGT_CS_ORCF; - - /* Clear Rate Controller Start Times and Occupied Flags */ - for (n = 0; n < 32; n++) - WRITE_MBOX4(sc, HE_REGO_CS_STTIM(n), 0); - - clkfreg = sc->he622 ? HE_622_CLOCK : HE_155_CLOCK; - cellrate = sc->he622 ? ATM_RATE_622M : ATM_RATE_155M; - decr = cellrate / 32; - - for (n = 0; n < 16; n++) { - tmp = clkfreg / cellrate; - WRITE_MBOX4(sc, HE_REGO_CS_TGRLD(n), tmp - 1); - cellrate -= decr; - } - - i = (sc->cells_per_lbuf == 2) ? 0 - :(sc->cells_per_lbuf == 4) ? 1 - : 2; - - /* table 5.2 */ - WRITE_MBOX4(sc, HE_REGO_CS_ERTHR0, erthr[sc->he622][0][i]); - WRITE_MBOX4(sc, HE_REGO_CS_ERTHR1, erthr[sc->he622][1][i]); - WRITE_MBOX4(sc, HE_REGO_CS_ERTHR2, erthr[sc->he622][2][i]); - WRITE_MBOX4(sc, HE_REGO_CS_ERTHR3, erthr[sc->he622][3][i]); - WRITE_MBOX4(sc, HE_REGO_CS_ERTHR4, erthr[sc->he622][4][i]); - - WRITE_MBOX4(sc, HE_REGO_CS_ERCTL0, erctl[sc->he622][0]); - WRITE_MBOX4(sc, HE_REGO_CS_ERCTL1, erctl[sc->he622][1]); - WRITE_MBOX4(sc, HE_REGO_CS_ERCTL2, erctl[sc->he622][2]); - - WRITE_MBOX4(sc, HE_REGO_CS_ERSTAT0, erstat[sc->he622][0]); - WRITE_MBOX4(sc, HE_REGO_CS_ERSTAT1, erstat[sc->he622][1]); - - WRITE_MBOX4(sc, HE_REGO_CS_RTFWR, rtfwr[sc->he622]); - WRITE_MBOX4(sc, HE_REGO_CS_RTATR, rtatr[sc->he622]); - - WRITE_MBOX4(sc, HE_REGO_CS_TFBSET, bwalloc[sc->he622][0]); - WRITE_MBOX4(sc, HE_REGO_CS_WCRMAX, bwalloc[sc->he622][1]); - WRITE_MBOX4(sc, HE_REGO_CS_WCRMIN, bwalloc[sc->he622][2]); - WRITE_MBOX4(sc, HE_REGO_CS_WCRINC, bwalloc[sc->he622][3]); - WRITE_MBOX4(sc, HE_REGO_CS_WCRDEC, bwalloc[sc->he622][4]); - WRITE_MBOX4(sc, HE_REGO_CS_WCRCEIL, bwalloc[sc->he622][5]); - - WRITE_MBOX4(sc, HE_REGO_CS_OTPPER, orcf[sc->he622][0]); - WRITE_MBOX4(sc, HE_REGO_CS_OTWPER, orcf[sc->he622][1]); - - WRITE_MBOX4(sc, HE_REGO_CS_OTTLIM, 8); - - for (n = 0; n < 8; n++) - WRITE_MBOX4(sc, HE_REGO_CS_HGRRT(n), 0); -} - -/* - * 5.1.8 CS Block Connection Memory Initialisation - */ -static void -hatm_init_cs_block_cm(struct hatm_softc *sc) -{ - u_int n, i; - u_int expt, mant, etrm, wcr, ttnrm, tnrm; - uint32_t rate; - uint32_t clkfreq, cellrate, decr; - uint32_t *rg, rtg, val = 0; - uint64_t drate; - u_int buf, buf_limit; - uint32_t base = READ4(sc, HE_REGO_RCMABR_BA); - - for (n = 0; n < HE_REGL_CM_GQTBL; n++) - WRITE_RCM4(sc, base + HE_REGO_CM_GQTBL + n, 0); - for (n = 0; n < HE_REGL_CM_RGTBL; n++) - WRITE_RCM4(sc, base + HE_REGO_CM_RGTBL + n, 0); - - tnrm = 0; - for (n = 0; n < HE_REGL_CM_TNRMTBL * 4; n++) { - expt = (n >> 5) & 0x1f; - mant = ((n & 0x18) << 4) | 0x7f; - wcr = (1 << expt) * (mant + 512) / 512; - etrm = n & 0x7; - ttnrm = wcr / 10 / (1 << etrm); - if (ttnrm > 255) - ttnrm = 255; - else if(ttnrm < 2) - ttnrm = 2; - tnrm = (tnrm << 8) | (ttnrm & 0xff); - if (n % 4 == 0) - WRITE_RCM4(sc, base + HE_REGO_CM_TNRMTBL + (n/4), tnrm); - } - - clkfreq = sc->he622 ? HE_622_CLOCK : HE_155_CLOCK; - buf_limit = 4; - - cellrate = sc->he622 ? ATM_RATE_622M : ATM_RATE_155M; - decr = cellrate / 32; - - /* compute GRID top row in 1000 * cps */ - for (n = 0; n < 16; n++) { - u_int interval = clkfreq / cellrate; - sc->rate_grid[0][n] = (u_int64_t)clkfreq * 1000 / interval; - cellrate -= decr; - } - - /* compute the other rows according to 2.4 */ - for (i = 1; i < 16; i++) - for (n = 0; n < 16; n++) - sc->rate_grid[i][n] = sc->rate_grid[i-1][n] / - ((i < 14) ? 2 : 4); - - /* first entry is line rate */ - n = hatm_cps2atmf(sc->he622 ? ATM_RATE_622M : ATM_RATE_155M); - expt = (n >> 9) & 0x1f; - mant = n & 0x1f0; - sc->rate_grid[0][0] = (u_int64_t)(1<<expt) * 1000 * (mant+512) / 512; - - /* now build the conversion table - each 32 bit word contains - * two entries - this gives a total of 0x400 16 bit entries. - * This table maps the truncated ATMF rate version into a grid index */ - cellrate = sc->he622 ? ATM_RATE_622M : ATM_RATE_155M; - rg = &sc->rate_grid[15][15]; - - for (rate = 0; rate < 2 * HE_REGL_CM_RTGTBL; rate++) { - /* unpack the ATMF rate */ - expt = rate >> 5; - mant = (rate & 0x1f) << 4; - - /* get the cell rate - minimum is 10 per second */ - drate = (uint64_t)(1 << expt) * 1000 * (mant + 512) / 512; - if (drate < 10 * 1000) - drate = 10 * 1000; - - /* now look up the grid index */ - while (drate >= *rg && rg-- > &sc->rate_grid[0][0]) - ; - rg++; - rtg = rg - &sc->rate_grid[0][0]; - - /* now compute the buffer limit */ - buf = drate * sc->tx_numbuffs / (cellrate * 2) / 1000; - if (buf == 0) - buf = 1; - else if (buf > buf_limit) - buf = buf_limit; - - /* make value */ - val = (val << 16) | (rtg << 8) | buf; - - /* write */ - if (rate % 2 == 1) - WRITE_RCM4(sc, base + HE_REGO_CM_RTGTBL + rate/2, val); - } -} - -/* - * Clear an unused receive group buffer pool - */ -static void -hatm_clear_rpool(struct hatm_softc *sc, u_int group, u_int large) -{ - WRITE4(sc, HE_REGO_RBP_S(large, group), 0); - WRITE4(sc, HE_REGO_RBP_T(large, group), 0); - WRITE4(sc, HE_REGO_RBP_QI(large, group), 1); - WRITE4(sc, HE_REGO_RBP_BL(large, group), 0); -} - -/* - * Initialize a receive group buffer pool - */ -static void -hatm_init_rpool(struct hatm_softc *sc, struct herbp *q, u_int group, - u_int large) -{ - if (q->size == 0) { - hatm_clear_rpool(sc, group, large); - return; - } - - bzero(q->mem.base, q->mem.size); - q->rbp = q->mem.base; - q->head = q->tail = 0; - - DBG(sc, ATTACH, ("RBP%u%c=0x%lx", group, "SL"[large], - (u_long)q->mem.paddr)); - - WRITE4(sc, HE_REGO_RBP_S(large, group), q->mem.paddr); - WRITE4(sc, HE_REGO_RBP_T(large, group), 0); - WRITE4(sc, HE_REGO_RBP_QI(large, group), - ((q->size - 1) << HE_REGS_RBP_SIZE) | - HE_REGM_RBP_INTR_ENB | - (q->thresh << HE_REGS_RBP_THRESH)); - WRITE4(sc, HE_REGO_RBP_BL(large, group), (q->bsize >> 2) & ~1); -} - -/* - * Clear an unused receive buffer return queue - */ -static void -hatm_clear_rbrq(struct hatm_softc *sc, u_int group) -{ - WRITE4(sc, HE_REGO_RBRQ_ST(group), 0); - WRITE4(sc, HE_REGO_RBRQ_H(group), 0); - WRITE4(sc, HE_REGO_RBRQ_Q(group), (1 << HE_REGS_RBRQ_THRESH)); - WRITE4(sc, HE_REGO_RBRQ_I(group), 0); -} - -/* - * Initialize receive buffer return queue - */ -static void -hatm_init_rbrq(struct hatm_softc *sc, struct herbrq *rq, u_int group) -{ - if (rq->size == 0) { - hatm_clear_rbrq(sc, group); - return; - } - - rq->rbrq = rq->mem.base; - rq->head = 0; - - DBG(sc, ATTACH, ("RBRQ%u=0x%lx", group, (u_long)rq->mem.paddr)); - - WRITE4(sc, HE_REGO_RBRQ_ST(group), rq->mem.paddr); - WRITE4(sc, HE_REGO_RBRQ_H(group), 0); - WRITE4(sc, HE_REGO_RBRQ_Q(group), - (rq->thresh << HE_REGS_RBRQ_THRESH) | - ((rq->size - 1) << HE_REGS_RBRQ_SIZE)); - WRITE4(sc, HE_REGO_RBRQ_I(group), - (rq->tout << HE_REGS_RBRQ_TIME) | - (rq->pcnt << HE_REGS_RBRQ_COUNT)); -} - -/* - * Clear an unused transmit buffer return queue N - */ -static void -hatm_clear_tbrq(struct hatm_softc *sc, u_int group) -{ - WRITE4(sc, HE_REGO_TBRQ_B_T(group), 0); - WRITE4(sc, HE_REGO_TBRQ_H(group), 0); - WRITE4(sc, HE_REGO_TBRQ_S(group), 0); - WRITE4(sc, HE_REGO_TBRQ_THRESH(group), 1); -} - -/* - * Initialize transmit buffer return queue N - */ -static void -hatm_init_tbrq(struct hatm_softc *sc, struct hetbrq *tq, u_int group) -{ - if (tq->size == 0) { - hatm_clear_tbrq(sc, group); - return; - } - - tq->tbrq = tq->mem.base; - tq->head = 0; - - DBG(sc, ATTACH, ("TBRQ%u=0x%lx", group, (u_long)tq->mem.paddr)); - - WRITE4(sc, HE_REGO_TBRQ_B_T(group), tq->mem.paddr); - WRITE4(sc, HE_REGO_TBRQ_H(group), 0); - WRITE4(sc, HE_REGO_TBRQ_S(group), tq->size - 1); - WRITE4(sc, HE_REGO_TBRQ_THRESH(group), tq->thresh); -} - -/* - * Initialize TPDRQ - */ -static void -hatm_init_tpdrq(struct hatm_softc *sc) -{ - struct hetpdrq *tq; - - tq = &sc->tpdrq; - tq->tpdrq = tq->mem.base; - tq->tail = tq->head = 0; - - DBG(sc, ATTACH, ("TPDRQ=0x%lx", (u_long)tq->mem.paddr)); - - WRITE4(sc, HE_REGO_TPDRQ_H, tq->mem.paddr); - WRITE4(sc, HE_REGO_TPDRQ_T, 0); - WRITE4(sc, HE_REGO_TPDRQ_S, tq->size - 1); -} - -/* - * Function can be called by the infrastructure to start the card. - */ -static void -hatm_init(void *p) -{ - struct hatm_softc *sc = p; - - mtx_lock(&sc->mtx); - hatm_stop(sc); - hatm_initialize(sc); - mtx_unlock(&sc->mtx); -} - -enum { - CTL_ISTATS, -}; - -/* - * Sysctl handler - */ -static int -hatm_sysctl(SYSCTL_HANDLER_ARGS) -{ - struct hatm_softc *sc = arg1; - uint32_t *ret; - int error; - size_t len; - - switch (arg2) { - - case CTL_ISTATS: - len = sizeof(sc->istats); - break; - - default: - panic("bad control code"); - } - - ret = malloc(len, M_TEMP, M_WAITOK); - mtx_lock(&sc->mtx); - - switch (arg2) { - - case CTL_ISTATS: - sc->istats.mcc += READ4(sc, HE_REGO_MCC); - sc->istats.oec += READ4(sc, HE_REGO_OEC); - sc->istats.dcc += READ4(sc, HE_REGO_DCC); - sc->istats.cec += READ4(sc, HE_REGO_CEC); - bcopy(&sc->istats, ret, sizeof(sc->istats)); - break; - } - mtx_unlock(&sc->mtx); - - error = SYSCTL_OUT(req, ret, len); - free(ret, M_TEMP); - - return (error); -} - -static int -kenv_getuint(struct hatm_softc *sc, const char *var, - u_int *ptr, u_int def, int rw) -{ - char full[IFNAMSIZ + 3 + 20]; - char *val, *end; - u_int u; - - *ptr = def; - - if (rw != 0) { - if (SYSCTL_ADD_UINT(&sc->sysctl_ctx, - SYSCTL_CHILDREN(sc->sysctl_tree), OID_AUTO, var, - CTLFLAG_RW, ptr, 0, "") == NULL) - return (ENOMEM); - } else { - if (SYSCTL_ADD_UINT(&sc->sysctl_ctx, - SYSCTL_CHILDREN(sc->sysctl_tree), OID_AUTO, var, - CTLFLAG_RD, ptr, 0, "") == NULL) - return (ENOMEM); - } - - snprintf(full, sizeof(full), "hw.%s.%s", - device_get_nameunit(sc->dev), var); - - if ((val = kern_getenv(full)) == NULL) - return (0); - u = strtoul(val, &end, 0); - if (end == val || *end != '\0') { - freeenv(val); - return (EINVAL); - } - freeenv(val); - if (bootverbose) - if_printf(sc->ifp, "%s=%u\n", full, u); - *ptr = u; - return (0); -} - -/* - * Set configurable parameters. Many of these are configurable via - * kenv. - */ -static int -hatm_configure(struct hatm_softc *sc) -{ - /* Receive buffer pool 0 small */ - kenv_getuint(sc, "rbps0_size", &sc->rbp_s0.size, - HE_CONFIG_RBPS0_SIZE, 0); - kenv_getuint(sc, "rbps0_thresh", &sc->rbp_s0.thresh, - HE_CONFIG_RBPS0_THRESH, 0); - sc->rbp_s0.bsize = MBUF0_SIZE; - - /* Receive buffer pool 0 large */ - kenv_getuint(sc, "rbpl0_size", &sc->rbp_l0.size, - HE_CONFIG_RBPL0_SIZE, 0); - kenv_getuint(sc, "rbpl0_thresh", &sc->rbp_l0.thresh, - HE_CONFIG_RBPL0_THRESH, 0); - sc->rbp_l0.bsize = MCLBYTES - MBUFL_OFFSET; - - /* Receive buffer return queue 0 */ - kenv_getuint(sc, "rbrq0_size", &sc->rbrq_0.size, - HE_CONFIG_RBRQ0_SIZE, 0); - kenv_getuint(sc, "rbrq0_thresh", &sc->rbrq_0.thresh, - HE_CONFIG_RBRQ0_THRESH, 0); - kenv_getuint(sc, "rbrq0_tout", &sc->rbrq_0.tout, - HE_CONFIG_RBRQ0_TOUT, 0); - kenv_getuint(sc, "rbrq0_pcnt", &sc->rbrq_0.pcnt, - HE_CONFIG_RBRQ0_PCNT, 0); - - /* Receive buffer pool 1 small */ - kenv_getuint(sc, "rbps1_size", &sc->rbp_s1.size, - HE_CONFIG_RBPS1_SIZE, 0); - kenv_getuint(sc, "rbps1_thresh", &sc->rbp_s1.thresh, - HE_CONFIG_RBPS1_THRESH, 0); - sc->rbp_s1.bsize = MBUF1_SIZE; - - /* Receive buffer return queue 1 */ - kenv_getuint(sc, "rbrq1_size", &sc->rbrq_1.size, - HE_CONFIG_RBRQ1_SIZE, 0); - kenv_getuint(sc, "rbrq1_thresh", &sc->rbrq_1.thresh, - HE_CONFIG_RBRQ1_THRESH, 0); - kenv_getuint(sc, "rbrq1_tout", &sc->rbrq_1.tout, - HE_CONFIG_RBRQ1_TOUT, 0); - kenv_getuint(sc, "rbrq1_pcnt", &sc->rbrq_1.pcnt, - HE_CONFIG_RBRQ1_PCNT, 0); - - /* Interrupt queue 0 */ - kenv_getuint(sc, "irq0_size", &sc->irq_0.size, - HE_CONFIG_IRQ0_SIZE, 0); - kenv_getuint(sc, "irq0_thresh", &sc->irq_0.thresh, - HE_CONFIG_IRQ0_THRESH, 0); - sc->irq_0.line = HE_CONFIG_IRQ0_LINE; - - /* Transmit buffer return queue 0 */ - kenv_getuint(sc, "tbrq0_size", &sc->tbrq.size, - HE_CONFIG_TBRQ_SIZE, 0); - kenv_getuint(sc, "tbrq0_thresh", &sc->tbrq.thresh, - HE_CONFIG_TBRQ_THRESH, 0); - - /* Transmit buffer ready queue */ - kenv_getuint(sc, "tpdrq_size", &sc->tpdrq.size, - HE_CONFIG_TPDRQ_SIZE, 0); - /* Max TPDs per VCC */ - kenv_getuint(sc, "tpdmax", &sc->max_tpd, - HE_CONFIG_TPD_MAXCC, 0); - - /* external mbuf pages */ - kenv_getuint(sc, "max_mbuf_pages", &sc->mbuf_max_pages, - HE_CONFIG_MAX_MBUF_PAGES, 0); - - /* mpsafe */ - kenv_getuint(sc, "mpsafe", &sc->mpsafe, 0, 0); - if (sc->mpsafe != 0) - sc->mpsafe = INTR_MPSAFE; - - return (0); -} - -#ifdef HATM_DEBUG - -/* - * Get TSRs from connection memory - */ -static int -hatm_sysctl_tsr(SYSCTL_HANDLER_ARGS) -{ - struct hatm_softc *sc = arg1; - int error, i, j; - uint32_t *val; - - val = malloc(sizeof(uint32_t) * HE_MAX_VCCS * 15, M_TEMP, M_WAITOK); - - mtx_lock(&sc->mtx); - for (i = 0; i < HE_MAX_VCCS; i++) - for (j = 0; j <= 14; j++) - val[15 * i + j] = READ_TSR(sc, i, j); - mtx_unlock(&sc->mtx); - - error = SYSCTL_OUT(req, val, sizeof(uint32_t) * HE_MAX_VCCS * 15); - free(val, M_TEMP); - if (error != 0 || req->newptr == NULL) - return (error); - - return (EPERM); -} - -/* - * Get TPDs from connection memory - */ -static int -hatm_sysctl_tpd(SYSCTL_HANDLER_ARGS) -{ - struct hatm_softc *sc = arg1; - int error, i, j; - uint32_t *val; - - val = malloc(sizeof(uint32_t) * HE_MAX_VCCS * 16, M_TEMP, M_WAITOK); - - mtx_lock(&sc->mtx); - for (i = 0; i < HE_MAX_VCCS; i++) - for (j = 0; j < 16; j++) - val[16 * i + j] = READ_TCM4(sc, 16 * i + j); - mtx_unlock(&sc->mtx); - - error = SYSCTL_OUT(req, val, sizeof(uint32_t) * HE_MAX_VCCS * 16); - free(val, M_TEMP); - if (error != 0 || req->newptr == NULL) - return (error); - - return (EPERM); -} - -/* - * Get mbox registers - */ -static int -hatm_sysctl_mbox(SYSCTL_HANDLER_ARGS) -{ - struct hatm_softc *sc = arg1; - int error, i; - uint32_t *val; - - val = malloc(sizeof(uint32_t) * HE_REGO_CS_END, M_TEMP, M_WAITOK); - - mtx_lock(&sc->mtx); - for (i = 0; i < HE_REGO_CS_END; i++) - val[i] = READ_MBOX4(sc, i); - mtx_unlock(&sc->mtx); - - error = SYSCTL_OUT(req, val, sizeof(uint32_t) * HE_REGO_CS_END); - free(val, M_TEMP); - if (error != 0 || req->newptr == NULL) - return (error); - - return (EPERM); -} - -/* - * Get connection memory - */ -static int -hatm_sysctl_cm(SYSCTL_HANDLER_ARGS) -{ - struct hatm_softc *sc = arg1; - int error, i; - uint32_t *val; - - val = malloc(sizeof(uint32_t) * (HE_CONFIG_RXMEM + 1), M_TEMP, M_WAITOK); - - mtx_lock(&sc->mtx); - val[0] = READ4(sc, HE_REGO_RCMABR_BA); - for (i = 0; i < HE_CONFIG_RXMEM; i++) - val[i + 1] = READ_RCM4(sc, i); - mtx_unlock(&sc->mtx); - - error = SYSCTL_OUT(req, val, sizeof(uint32_t) * (HE_CONFIG_RXMEM + 1)); - free(val, M_TEMP); - if (error != 0 || req->newptr == NULL) - return (error); - - return (EPERM); -} - -/* - * Get local buffer memory - */ -static int -hatm_sysctl_lbmem(SYSCTL_HANDLER_ARGS) -{ - struct hatm_softc *sc = arg1; - int error, i; - uint32_t *val; - u_int bytes = (1 << 21); - - val = malloc(bytes, M_TEMP, M_WAITOK); - - mtx_lock(&sc->mtx); - for (i = 0; i < bytes / 4; i++) - val[i] = READ_LB4(sc, i); - mtx_unlock(&sc->mtx); - - error = SYSCTL_OUT(req, val, bytes); - free(val, M_TEMP); - if (error != 0 || req->newptr == NULL) - return (error); - - return (EPERM); -} - -/* - * Get all card registers - */ -static int -hatm_sysctl_heregs(SYSCTL_HANDLER_ARGS) -{ - struct hatm_softc *sc = arg1; - int error, i; - uint32_t *val; - - val = malloc(HE_REGO_END, M_TEMP, M_WAITOK); - - mtx_lock(&sc->mtx); - for (i = 0; i < HE_REGO_END; i += 4) - val[i / 4] = READ4(sc, i); - mtx_unlock(&sc->mtx); - - error = SYSCTL_OUT(req, val, HE_REGO_END); - free(val, M_TEMP); - if (error != 0 || req->newptr == NULL) - return (error); - - return (EPERM); -} -#endif - -/* - * Suni register access - */ -/* - * read at most n SUNI registers starting at reg into val - */ -static int -hatm_utopia_readregs(struct ifatm *ifatm, u_int reg, uint8_t *val, u_int *n) -{ - u_int i; - struct hatm_softc *sc = ifatm->ifp->if_softc; - - if (reg >= (HE_REGO_SUNI_END - HE_REGO_SUNI) / 4) - return (EINVAL); - if (reg + *n > (HE_REGO_SUNI_END - HE_REGO_SUNI) / 4) - *n = reg - (HE_REGO_SUNI_END - HE_REGO_SUNI) / 4; - - mtx_assert(&sc->mtx, MA_OWNED); - for (i = 0; i < *n; i++) - val[i] = READ4(sc, HE_REGO_SUNI + 4 * (reg + i)); - - return (0); -} - -/* - * change the bits given by mask to them in val in register reg - */ -static int -hatm_utopia_writereg(struct ifatm *ifatm, u_int reg, u_int mask, u_int val) -{ - uint32_t regval; - struct hatm_softc *sc = ifatm->ifp->if_softc; - - if (reg >= (HE_REGO_SUNI_END - HE_REGO_SUNI) / 4) - return (EINVAL); - - mtx_assert(&sc->mtx, MA_OWNED); - regval = READ4(sc, HE_REGO_SUNI + 4 * reg); - regval = (regval & ~mask) | (val & mask); - WRITE4(sc, HE_REGO_SUNI + 4 * reg, regval); - - return (0); -} - -static struct utopia_methods hatm_utopia_methods = { - hatm_utopia_readregs, - hatm_utopia_writereg, -}; - -/* - * Detach - if it is running, stop. Destroy. - */ -static int -hatm_detach(device_t dev) -{ - struct hatm_softc *sc = device_get_softc(dev); - - mtx_lock(&sc->mtx); - hatm_stop(sc); - if (sc->utopia.state & UTP_ST_ATTACHED) { - utopia_stop(&sc->utopia); - utopia_detach(&sc->utopia); - } - mtx_unlock(&sc->mtx); - - atm_ifdetach(sc->ifp); - - hatm_destroy(sc); - - return (0); -} - -/* - * Attach to the device. Assume that no locking is needed here. - * All resource we allocate here are freed by calling hatm_destroy. - */ -static int -hatm_attach(device_t dev) -{ - struct hatm_softc *sc; - int error; - uint32_t v; - struct ifnet *ifp; - - sc = device_get_softc(dev); - - ifp = sc->ifp = if_alloc(IFT_ATM); - if (ifp == NULL) { - device_printf(dev, "could not if_alloc()\n"); - return (ENOSPC); - } - - sc->dev = dev; - IFP2IFATM(sc->ifp)->mib.device = ATM_DEVICE_HE155; - IFP2IFATM(sc->ifp)->mib.serial = 0; - IFP2IFATM(sc->ifp)->mib.hw_version = 0; - IFP2IFATM(sc->ifp)->mib.sw_version = 0; - IFP2IFATM(sc->ifp)->mib.vpi_bits = HE_CONFIG_VPI_BITS; - IFP2IFATM(sc->ifp)->mib.vci_bits = HE_CONFIG_VCI_BITS; - IFP2IFATM(sc->ifp)->mib.max_vpcs = 0; - IFP2IFATM(sc->ifp)->mib.max_vccs = HE_MAX_VCCS; - IFP2IFATM(sc->ifp)->mib.media = IFM_ATM_UNKNOWN; - sc->he622 = 0; - IFP2IFATM(sc->ifp)->phy = &sc->utopia; - - SLIST_INIT(&sc->tpd_free); - - mtx_init(&sc->mtx, device_get_nameunit(dev), MTX_NETWORK_LOCK, MTX_DEF); - cv_init(&sc->vcc_cv, "HEVCCcv"); - cv_init(&sc->cv_rcclose, "RCClose"); - - sysctl_ctx_init(&sc->sysctl_ctx); - - /* - * 4.2 BIOS Configuration - */ - v = pci_read_config(dev, PCIR_COMMAND, 2); - v |= PCIM_CMD_BUSMASTEREN | PCIM_CMD_MWRICEN; - pci_write_config(dev, PCIR_COMMAND, v, 2); - - /* - * 4.3 PCI Bus Controller-Specific Initialisation - */ - v = pci_read_config(dev, HE_PCIR_GEN_CNTL_0, 4); - v |= HE_PCIM_CTL0_MRL | HE_PCIM_CTL0_MRM | HE_PCIM_CTL0_IGNORE_TIMEOUT; -#if BYTE_ORDER == BIG_ENDIAN && 0 - v |= HE_PCIM_CTL0_BIGENDIAN; -#endif - pci_write_config(dev, HE_PCIR_GEN_CNTL_0, v, 4); - - /* - * Map memory - */ - sc->memid = PCIR_BAR(0); - sc->memres = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &sc->memid, - RF_ACTIVE); - if (sc->memres == NULL) { - device_printf(dev, "could not map memory\n"); - error = ENXIO; - goto failed; - } - sc->memh = rman_get_bushandle(sc->memres); - sc->memt = rman_get_bustag(sc->memres); - - /* - * ALlocate a DMA tag for subsequent allocations - */ - if (bus_dma_tag_create(bus_get_dma_tag(sc->dev), 1, 0, - BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, - NULL, NULL, - BUS_SPACE_MAXSIZE_32BIT, 1, - BUS_SPACE_MAXSIZE_32BIT, 0, - NULL, NULL, &sc->parent_tag)) { - device_printf(dev, "could not allocate DMA tag\n"); - error = ENOMEM; - goto failed; - } - - if (bus_dma_tag_create(sc->parent_tag, 1, 0, - BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, - NULL, NULL, - MBUF_ALLOC_SIZE, 1, - MBUF_ALLOC_SIZE, 0, - NULL, NULL, &sc->mbuf_tag)) { - device_printf(dev, "could not allocate mbuf DMA tag\n"); - error = ENOMEM; - goto failed; - } - - /* - * Allocate a DMA tag for packets to send. Here we have a problem with - * the specification of the maximum number of segments. Theoretically - * this would be the size of the transmit ring - 1 multiplied by 3, - * but this would not work. So make the maximum number of TPDs - * occupied by one packet a configuration parameter. - */ - if (bus_dma_tag_create(bus_get_dma_tag(sc->dev), 1, 0, - BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL, - HE_MAX_PDU, 3 * HE_CONFIG_MAX_TPD_PER_PACKET, HE_MAX_PDU, 0, - NULL, NULL, &sc->tx_tag)) { - device_printf(dev, "could not allocate TX tag\n"); - error = ENOMEM; - goto failed; - } - - /* - * Setup the interrupt - */ - sc->irqid = 0; - sc->irqres = bus_alloc_resource_any(dev, SYS_RES_IRQ, &sc->irqid, - RF_SHAREABLE | RF_ACTIVE); - if (sc->irqres == 0) { - device_printf(dev, "could not allocate irq\n"); - error = ENXIO; - goto failed; - } - - ifp->if_softc = sc; - if_initname(ifp, device_get_name(dev), device_get_unit(dev)); - - /* - * Make the sysctl tree - */ - error = ENOMEM; - if ((sc->sysctl_tree = SYSCTL_ADD_NODE(&sc->sysctl_ctx, - SYSCTL_STATIC_CHILDREN(_hw_atm), OID_AUTO, - device_get_nameunit(dev), CTLFLAG_RD, 0, "")) == NULL) - goto failed; - - if (SYSCTL_ADD_PROC(&sc->sysctl_ctx, SYSCTL_CHILDREN(sc->sysctl_tree), - OID_AUTO, "istats", CTLFLAG_RD | CTLTYPE_OPAQUE, sc, CTL_ISTATS, - hatm_sysctl, "LU", "internal statistics") == NULL) - goto failed; - -#ifdef HATM_DEBUG - if (SYSCTL_ADD_PROC(&sc->sysctl_ctx, SYSCTL_CHILDREN(sc->sysctl_tree), - OID_AUTO, "tsr", CTLFLAG_RD | CTLTYPE_OPAQUE, sc, 0, - hatm_sysctl_tsr, "S", "transmission status registers") == NULL) - goto failed; - - if (SYSCTL_ADD_PROC(&sc->sysctl_ctx, SYSCTL_CHILDREN(sc->sysctl_tree), - OID_AUTO, "tpd", CTLFLAG_RD | CTLTYPE_OPAQUE, sc, 0, - hatm_sysctl_tpd, "S", "transmission packet descriptors") == NULL) - goto failed; - - if (SYSCTL_ADD_PROC(&sc->sysctl_ctx, SYSCTL_CHILDREN(sc->sysctl_tree), - OID_AUTO, "mbox", CTLFLAG_RD | CTLTYPE_OPAQUE, sc, 0, - hatm_sysctl_mbox, "S", "mbox registers") == NULL) - goto failed; - - if (SYSCTL_ADD_PROC(&sc->sysctl_ctx, SYSCTL_CHILDREN(sc->sysctl_tree), - OID_AUTO, "cm", CTLFLAG_RD | CTLTYPE_OPAQUE, sc, 0, - hatm_sysctl_cm, "S", "connection memory") == NULL) - goto failed; - - if (SYSCTL_ADD_PROC(&sc->sysctl_ctx, SYSCTL_CHILDREN(sc->sysctl_tree), - OID_AUTO, "heregs", CTLFLAG_RD | CTLTYPE_OPAQUE, sc, 0, - hatm_sysctl_heregs, "S", "card registers") == NULL) - goto failed; - - if (SYSCTL_ADD_PROC(&sc->sysctl_ctx, SYSCTL_CHILDREN(sc->sysctl_tree), - OID_AUTO, "lbmem", CTLFLAG_RD | CTLTYPE_OPAQUE, sc, 0, - hatm_sysctl_lbmem, "S", "local memory") == NULL) - goto failed; - - kenv_getuint(sc, "debug", &sc->debug, HATM_DEBUG, 1); -#endif - - /* - * Configure - */ - if ((error = hatm_configure(sc)) != 0) - goto failed; - - /* - * Compute memory parameters - */ - if (sc->rbp_s0.size != 0) { - sc->rbp_s0.mask = (sc->rbp_s0.size - 1) << 3; - sc->rbp_s0.mem.size = sc->rbp_s0.size * 8; - sc->rbp_s0.mem.align = sc->rbp_s0.mem.size; - } - if (sc->rbp_l0.size != 0) { - sc->rbp_l0.mask = (sc->rbp_l0.size - 1) << 3; - sc->rbp_l0.mem.size = sc->rbp_l0.size * 8; - sc->rbp_l0.mem.align = sc->rbp_l0.mem.size; - } - if (sc->rbp_s1.size != 0) { - sc->rbp_s1.mask = (sc->rbp_s1.size - 1) << 3; - sc->rbp_s1.mem.size = sc->rbp_s1.size * 8; - sc->rbp_s1.mem.align = sc->rbp_s1.mem.size; - } - if (sc->rbrq_0.size != 0) { - sc->rbrq_0.mem.size = sc->rbrq_0.size * 8; - sc->rbrq_0.mem.align = sc->rbrq_0.mem.size; - } - if (sc->rbrq_1.size != 0) { - sc->rbrq_1.mem.size = sc->rbrq_1.size * 8; - sc->rbrq_1.mem.align = sc->rbrq_1.mem.size; - } - - sc->irq_0.mem.size = sc->irq_0.size * sizeof(uint32_t); - sc->irq_0.mem.align = 4 * 1024; - - sc->tbrq.mem.size = sc->tbrq.size * 4; - sc->tbrq.mem.align = 2 * sc->tbrq.mem.size; /* ZZZ */ - - sc->tpdrq.mem.size = sc->tpdrq.size * 8; - sc->tpdrq.mem.align = sc->tpdrq.mem.size; - - sc->hsp_mem.size = sizeof(struct he_hsp); - sc->hsp_mem.align = 1024; - - sc->lbufs_size = sc->rbp_l0.size + sc->rbrq_0.size; - sc->tpd_total = sc->tbrq.size + sc->tpdrq.size; - sc->tpds.align = 64; - sc->tpds.size = sc->tpd_total * HE_TPD_SIZE; - - hatm_init_rmaps(sc); - hatm_init_smbufs(sc); - if ((error = hatm_init_tpds(sc)) != 0) - goto failed; - - /* - * Allocate memory - */ - if ((error = hatm_alloc_dmamem(sc, "IRQ", &sc->irq_0.mem)) != 0 || - (error = hatm_alloc_dmamem(sc, "TBRQ0", &sc->tbrq.mem)) != 0 || - (error = hatm_alloc_dmamem(sc, "TPDRQ", &sc->tpdrq.mem)) != 0 || - (error = hatm_alloc_dmamem(sc, "HSP", &sc->hsp_mem)) != 0) - goto failed; - - if (sc->rbp_s0.mem.size != 0 && - (error = hatm_alloc_dmamem(sc, "RBPS0", &sc->rbp_s0.mem))) - goto failed; - if (sc->rbp_l0.mem.size != 0 && - (error = hatm_alloc_dmamem(sc, "RBPL0", &sc->rbp_l0.mem))) - goto failed; - if (sc->rbp_s1.mem.size != 0 && - (error = hatm_alloc_dmamem(sc, "RBPS1", &sc->rbp_s1.mem))) - goto failed; - - if (sc->rbrq_0.mem.size != 0 && - (error = hatm_alloc_dmamem(sc, "RBRQ0", &sc->rbrq_0.mem))) - goto failed; - if (sc->rbrq_1.mem.size != 0 && - (error = hatm_alloc_dmamem(sc, "RBRQ1", &sc->rbrq_1.mem))) - goto failed; - - if ((sc->vcc_zone = uma_zcreate("HE vccs", sizeof(struct hevcc), - NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0)) == NULL) { - device_printf(dev, "cannot allocate zone for vccs\n"); - goto failed; - } - - /* - * 4.4 Reset the card. - */ - if ((error = hatm_reset(sc)) != 0) - goto failed; - - /* - * Read the prom. - */ - hatm_init_bus_width(sc); - hatm_init_read_eeprom(sc); - hatm_init_endianess(sc); - - /* - * Initialize interface - */ - ifp->if_flags = IFF_SIMPLEX; - ifp->if_ioctl = hatm_ioctl; - ifp->if_start = hatm_start; - ifp->if_init = hatm_init; - - utopia_attach(&sc->utopia, IFP2IFATM(sc->ifp), &sc->media, &sc->mtx, - &sc->sysctl_ctx, SYSCTL_CHILDREN(sc->sysctl_tree), - &hatm_utopia_methods); - utopia_init_media(&sc->utopia); - - /* these two SUNI routines need the lock */ - mtx_lock(&sc->mtx); - /* poll while we are not running */ - sc->utopia.flags |= UTP_FL_POLL_CARRIER; - utopia_start(&sc->utopia); - utopia_reset(&sc->utopia); - mtx_unlock(&sc->mtx); - - atm_ifattach(ifp); - -#ifdef ENABLE_BPF - bpfattach(ifp, DLT_ATM_RFC1483, sizeof(struct atmllc)); -#endif - - error = bus_setup_intr(dev, sc->irqres, sc->mpsafe | INTR_TYPE_NET, - NULL, hatm_intr, &sc->irq_0, &sc->ih); - if (error != 0) { - device_printf(dev, "could not setup interrupt\n"); - hatm_detach(dev); - return (error); - } - - return (0); - - failed: - hatm_destroy(sc); - return (error); -} - -/* - * Start the interface. Assume a state as from attach(). - */ -void -hatm_initialize(struct hatm_softc *sc) -{ - uint32_t v; - u_int cid; - static const u_int layout[2][7] = HE_CONFIG_MEM_LAYOUT; - - if (sc->ifp->if_drv_flags & IFF_DRV_RUNNING) - return; - - hatm_init_bus_width(sc); - hatm_init_endianess(sc); - - if_printf(sc->ifp, "%s, Rev. %s, S/N %u, " - "MAC=%02x:%02x:%02x:%02x:%02x:%02x (%ubit PCI)\n", - sc->prod_id, sc->rev, IFP2IFATM(sc->ifp)->mib.serial, - IFP2IFATM(sc->ifp)->mib.esi[0], IFP2IFATM(sc->ifp)->mib.esi[1], IFP2IFATM(sc->ifp)->mib.esi[2], - IFP2IFATM(sc->ifp)->mib.esi[3], IFP2IFATM(sc->ifp)->mib.esi[4], IFP2IFATM(sc->ifp)->mib.esi[5], - sc->pci64 ? 64 : 32); - - /* - * 4.8 SDRAM Controller Initialisation - * 4.9 Initialize RNUM value - */ - if (sc->he622) - WRITE4(sc, HE_REGO_SDRAM_CNTL, HE_REGM_SDRAM_64BIT); - else - WRITE4(sc, HE_REGO_SDRAM_CNTL, 0); - BARRIER_W(sc); - - v = READ4(sc, HE_REGO_LB_SWAP); - BARRIER_R(sc); - v |= 0xf << HE_REGS_LBSWAP_RNUM; - WRITE4(sc, HE_REGO_LB_SWAP, v); - BARRIER_W(sc); - - hatm_init_irq(sc, &sc->irq_0, 0); - hatm_clear_irq(sc, 1); - hatm_clear_irq(sc, 2); - hatm_clear_irq(sc, 3); - - WRITE4(sc, HE_REGO_GRP_1_0_MAP, 0); - WRITE4(sc, HE_REGO_GRP_3_2_MAP, 0); - WRITE4(sc, HE_REGO_GRP_5_4_MAP, 0); - WRITE4(sc, HE_REGO_GRP_7_6_MAP, 0); - BARRIER_W(sc); - - /* - * 4.11 Enable PCI Bus Controller State Machine - */ - v = READ4(sc, HE_REGO_HOST_CNTL); - BARRIER_R(sc); - v |= HE_REGM_HOST_OUTFF_ENB | HE_REGM_HOST_CMDFF_ENB | - HE_REGM_HOST_QUICK_RD | HE_REGM_HOST_QUICK_WR; - WRITE4(sc, HE_REGO_HOST_CNTL, v); - BARRIER_W(sc); - - /* - * 5.1.1 Generic configuration state - */ - sc->cells_per_row = layout[sc->he622][0]; - sc->bytes_per_row = layout[sc->he622][1]; - sc->r0_numrows = layout[sc->he622][2]; - sc->tx_numrows = layout[sc->he622][3]; - sc->r1_numrows = layout[sc->he622][4]; - sc->r0_startrow = layout[sc->he622][5]; - sc->tx_startrow = sc->r0_startrow + sc->r0_numrows; - sc->r1_startrow = sc->tx_startrow + sc->tx_numrows; - sc->cells_per_lbuf = layout[sc->he622][6]; - - sc->r0_numbuffs = sc->r0_numrows * (sc->cells_per_row / - sc->cells_per_lbuf); - sc->r1_numbuffs = sc->r1_numrows * (sc->cells_per_row / - sc->cells_per_lbuf); - sc->tx_numbuffs = sc->tx_numrows * (sc->cells_per_row / - sc->cells_per_lbuf); - - if (sc->r0_numbuffs > 2560) - sc->r0_numbuffs = 2560; - if (sc->r1_numbuffs > 2560) - sc->r1_numbuffs = 2560; - if (sc->tx_numbuffs > 5120) - sc->tx_numbuffs = 5120; - - DBG(sc, ATTACH, ("cells_per_row=%u bytes_per_row=%u r0_numrows=%u " - "tx_numrows=%u r1_numrows=%u r0_startrow=%u tx_startrow=%u " - "r1_startrow=%u cells_per_lbuf=%u\nr0_numbuffs=%u r1_numbuffs=%u " - "tx_numbuffs=%u\n", sc->cells_per_row, sc->bytes_per_row, - sc->r0_numrows, sc->tx_numrows, sc->r1_numrows, sc->r0_startrow, - sc->tx_startrow, sc->r1_startrow, sc->cells_per_lbuf, - sc->r0_numbuffs, sc->r1_numbuffs, sc->tx_numbuffs)); - - /* - * 5.1.2 Configure Hardware dependend registers - */ - if (sc->he622) { - WRITE4(sc, HE_REGO_LBARB, - (0x2 << HE_REGS_LBARB_SLICE) | - (0xf << HE_REGS_LBARB_RNUM) | - (0x3 << HE_REGS_LBARB_THPRI) | - (0x3 << HE_REGS_LBARB_RHPRI) | - (0x2 << HE_REGS_LBARB_TLPRI) | - (0x1 << HE_REGS_LBARB_RLPRI) | - (0x28 << HE_REGS_LBARB_BUS_MULT) | - (0x50 << HE_REGS_LBARB_NET_PREF)); - BARRIER_W(sc); - WRITE4(sc, HE_REGO_SDRAMCON, - /* HW bug: don't use banking */ - /* HE_REGM_SDRAMCON_BANK | */ - HE_REGM_SDRAMCON_WIDE | - (0x384 << HE_REGS_SDRAMCON_REF)); - BARRIER_W(sc); - WRITE4(sc, HE_REGO_RCMCONFIG, - (0x1 << HE_REGS_RCMCONFIG_BANK_WAIT) | - (0x1 << HE_REGS_RCMCONFIG_RW_WAIT) | - (0x0 << HE_REGS_RCMCONFIG_TYPE)); - WRITE4(sc, HE_REGO_TCMCONFIG, - (0x2 << HE_REGS_TCMCONFIG_BANK_WAIT) | - (0x1 << HE_REGS_TCMCONFIG_RW_WAIT) | - (0x0 << HE_REGS_TCMCONFIG_TYPE)); - } else { - WRITE4(sc, HE_REGO_LBARB, - (0x2 << HE_REGS_LBARB_SLICE) | - (0xf << HE_REGS_LBARB_RNUM) | - (0x3 << HE_REGS_LBARB_THPRI) | - (0x3 << HE_REGS_LBARB_RHPRI) | - (0x2 << HE_REGS_LBARB_TLPRI) | - (0x1 << HE_REGS_LBARB_RLPRI) | - (0x46 << HE_REGS_LBARB_BUS_MULT) | - (0x8C << HE_REGS_LBARB_NET_PREF)); - BARRIER_W(sc); - WRITE4(sc, HE_REGO_SDRAMCON, - /* HW bug: don't use banking */ - /* HE_REGM_SDRAMCON_BANK | */ - (0x150 << HE_REGS_SDRAMCON_REF)); - BARRIER_W(sc); - WRITE4(sc, HE_REGO_RCMCONFIG, - (0x0 << HE_REGS_RCMCONFIG_BANK_WAIT) | - (0x1 << HE_REGS_RCMCONFIG_RW_WAIT) | - (0x0 << HE_REGS_RCMCONFIG_TYPE)); - WRITE4(sc, HE_REGO_TCMCONFIG, - (0x1 << HE_REGS_TCMCONFIG_BANK_WAIT) | - (0x1 << HE_REGS_TCMCONFIG_RW_WAIT) | - (0x0 << HE_REGS_TCMCONFIG_TYPE)); - } - WRITE4(sc, HE_REGO_LBCONFIG, (sc->cells_per_lbuf * 48)); - - WRITE4(sc, HE_REGO_RLBC_H, 0); - WRITE4(sc, HE_REGO_RLBC_T, 0); - WRITE4(sc, HE_REGO_RLBC_H2, 0); - - WRITE4(sc, HE_REGO_RXTHRSH, 512); - WRITE4(sc, HE_REGO_LITHRSH, 256); - - WRITE4(sc, HE_REGO_RLBF0_C, sc->r0_numbuffs); - WRITE4(sc, HE_REGO_RLBF1_C, sc->r1_numbuffs); - - if (sc->he622) { - WRITE4(sc, HE_REGO_RCCONFIG, - (8 << HE_REGS_RCCONFIG_UTDELAY) | - (IFP2IFATM(sc->ifp)->mib.vpi_bits << HE_REGS_RCCONFIG_VP) | - (IFP2IFATM(sc->ifp)->mib.vci_bits << HE_REGS_RCCONFIG_VC)); - WRITE4(sc, HE_REGO_TXCONFIG, - (32 << HE_REGS_TXCONFIG_THRESH) | - (IFP2IFATM(sc->ifp)->mib.vci_bits << HE_REGS_TXCONFIG_VCI_MASK) | - (sc->tx_numbuffs << HE_REGS_TXCONFIG_LBFREE)); - } else { - WRITE4(sc, HE_REGO_RCCONFIG, - (0 << HE_REGS_RCCONFIG_UTDELAY) | - HE_REGM_RCCONFIG_UT_MODE | - (IFP2IFATM(sc->ifp)->mib.vpi_bits << HE_REGS_RCCONFIG_VP) | - (IFP2IFATM(sc->ifp)->mib.vci_bits << HE_REGS_RCCONFIG_VC)); - WRITE4(sc, HE_REGO_TXCONFIG, - (32 << HE_REGS_TXCONFIG_THRESH) | - HE_REGM_TXCONFIG_UTMODE | - (IFP2IFATM(sc->ifp)->mib.vci_bits << HE_REGS_TXCONFIG_VCI_MASK) | - (sc->tx_numbuffs << HE_REGS_TXCONFIG_LBFREE)); - } - - WRITE4(sc, HE_REGO_TXAAL5_PROTO, 0); - - if (sc->rbp_s1.size != 0) { - WRITE4(sc, HE_REGO_RHCONFIG, - HE_REGM_RHCONFIG_PHYENB | - ((sc->he622 ? 0x41 : 0x31) << HE_REGS_RHCONFIG_PTMR_PRE) | - (1 << HE_REGS_RHCONFIG_OAM_GID)); - } else { - WRITE4(sc, HE_REGO_RHCONFIG, - HE_REGM_RHCONFIG_PHYENB | - ((sc->he622 ? 0x41 : 0x31) << HE_REGS_RHCONFIG_PTMR_PRE) | - (0 << HE_REGS_RHCONFIG_OAM_GID)); - } - BARRIER_W(sc); - - hatm_init_cm(sc); - - hatm_init_rx_buffer_pool(sc, 0, sc->r0_startrow, sc->r0_numbuffs); - hatm_init_rx_buffer_pool(sc, 1, sc->r1_startrow, sc->r1_numbuffs); - hatm_init_tx_buffer_pool(sc, sc->tx_startrow, sc->tx_numbuffs); - - hatm_init_imed_queues(sc); - - /* - * 5.1.6 Application tunable Parameters - */ - WRITE4(sc, HE_REGO_MCC, 0); - WRITE4(sc, HE_REGO_OEC, 0); - WRITE4(sc, HE_REGO_DCC, 0); - WRITE4(sc, HE_REGO_CEC, 0); - - hatm_init_cs_block(sc); - hatm_init_cs_block_cm(sc); - - hatm_init_rpool(sc, &sc->rbp_s0, 0, 0); - hatm_init_rpool(sc, &sc->rbp_l0, 0, 1); - hatm_init_rpool(sc, &sc->rbp_s1, 1, 0); - hatm_clear_rpool(sc, 1, 1); - hatm_clear_rpool(sc, 2, 0); - hatm_clear_rpool(sc, 2, 1); - hatm_clear_rpool(sc, 3, 0); - hatm_clear_rpool(sc, 3, 1); - hatm_clear_rpool(sc, 4, 0); - hatm_clear_rpool(sc, 4, 1); - hatm_clear_rpool(sc, 5, 0); - hatm_clear_rpool(sc, 5, 1); - hatm_clear_rpool(sc, 6, 0); - hatm_clear_rpool(sc, 6, 1); - hatm_clear_rpool(sc, 7, 0); - hatm_clear_rpool(sc, 7, 1); - hatm_init_rbrq(sc, &sc->rbrq_0, 0); - hatm_init_rbrq(sc, &sc->rbrq_1, 1); - hatm_clear_rbrq(sc, 2); - hatm_clear_rbrq(sc, 3); - hatm_clear_rbrq(sc, 4); - hatm_clear_rbrq(sc, 5); - hatm_clear_rbrq(sc, 6); - hatm_clear_rbrq(sc, 7); - - sc->lbufs_next = 0; - bzero(sc->lbufs, sizeof(sc->lbufs[0]) * sc->lbufs_size); - - hatm_init_tbrq(sc, &sc->tbrq, 0); - hatm_clear_tbrq(sc, 1); - hatm_clear_tbrq(sc, 2); - hatm_clear_tbrq(sc, 3); - hatm_clear_tbrq(sc, 4); - hatm_clear_tbrq(sc, 5); - hatm_clear_tbrq(sc, 6); - hatm_clear_tbrq(sc, 7); - - hatm_init_tpdrq(sc); - - WRITE4(sc, HE_REGO_UBUFF_BA, (sc->he622 ? 0x104780 : 0x800)); - - /* - * Initialize HSP - */ - bzero(sc->hsp_mem.base, sc->hsp_mem.size); - sc->hsp = sc->hsp_mem.base; - WRITE4(sc, HE_REGO_HSP_BA, sc->hsp_mem.paddr); - - /* - * 5.1.12 Enable transmit and receive - * Enable bus master and interrupts - */ - v = READ_MBOX4(sc, HE_REGO_CS_ERCTL0); - v |= 0x18000000; - WRITE_MBOX4(sc, HE_REGO_CS_ERCTL0, v); - - v = READ4(sc, HE_REGO_RCCONFIG); - v |= HE_REGM_RCCONFIG_RXENB; - WRITE4(sc, HE_REGO_RCCONFIG, v); - - v = pci_read_config(sc->dev, HE_PCIR_GEN_CNTL_0, 4); - v |= HE_PCIM_CTL0_INIT_ENB | HE_PCIM_CTL0_INT_PROC_ENB; - pci_write_config(sc->dev, HE_PCIR_GEN_CNTL_0, v, 4); - - sc->ifp->if_drv_flags |= IFF_DRV_RUNNING; - sc->ifp->if_baudrate = 53 * 8 * IFP2IFATM(sc->ifp)->mib.pcr; - - sc->utopia.flags &= ~UTP_FL_POLL_CARRIER; - - /* reopen vccs */ - for (cid = 0; cid < HE_MAX_VCCS; cid++) - if (sc->vccs[cid] != NULL) - hatm_load_vc(sc, cid, 1); - - ATMEV_SEND_IFSTATE_CHANGED(IFP2IFATM(sc->ifp), - sc->utopia.carrier == UTP_CARR_OK); -} - -/* - * This functions stops the card and frees all resources allocated after - * the attach. Must have the global lock. - */ -void -hatm_stop(struct hatm_softc *sc) -{ - uint32_t v; - u_int i, p, cid; - struct mbuf_chunk_hdr *ch; - struct mbuf_page *pg; - - mtx_assert(&sc->mtx, MA_OWNED); - - if (!(sc->ifp->if_drv_flags & IFF_DRV_RUNNING)) - return; - sc->ifp->if_drv_flags &= ~IFF_DRV_RUNNING; - - ATMEV_SEND_IFSTATE_CHANGED(IFP2IFATM(sc->ifp), - sc->utopia.carrier == UTP_CARR_OK); - - sc->utopia.flags |= UTP_FL_POLL_CARRIER; - - /* - * Stop and reset the hardware so that everything remains - * stable. - */ - v = READ_MBOX4(sc, HE_REGO_CS_ERCTL0); - v &= ~0x18000000; - WRITE_MBOX4(sc, HE_REGO_CS_ERCTL0, v); - - v = READ4(sc, HE_REGO_RCCONFIG); - v &= ~HE_REGM_RCCONFIG_RXENB; - WRITE4(sc, HE_REGO_RCCONFIG, v); - - WRITE4(sc, HE_REGO_RHCONFIG, (0x2 << HE_REGS_RHCONFIG_PTMR_PRE)); - BARRIER_W(sc); - - v = READ4(sc, HE_REGO_HOST_CNTL); - BARRIER_R(sc); - v &= ~(HE_REGM_HOST_OUTFF_ENB | HE_REGM_HOST_CMDFF_ENB); - WRITE4(sc, HE_REGO_HOST_CNTL, v); - BARRIER_W(sc); - - /* - * Disable bust master and interrupts - */ - v = pci_read_config(sc->dev, HE_PCIR_GEN_CNTL_0, 4); - v &= ~(HE_PCIM_CTL0_INIT_ENB | HE_PCIM_CTL0_INT_PROC_ENB); - pci_write_config(sc->dev, HE_PCIR_GEN_CNTL_0, v, 4); - - (void)hatm_reset(sc); - - /* - * Card resets the SUNI when resetted, so re-initialize it - */ - utopia_reset(&sc->utopia); - - /* - * Give any waiters on closing a VCC a chance. They will stop - * to wait if they see that IFF_DRV_RUNNING disappeared. - */ - cv_broadcast(&sc->vcc_cv); - cv_broadcast(&sc->cv_rcclose); - - /* - * Now free all resources. - */ - - /* - * Free the large mbufs that are given to the card. - */ - for (i = 0 ; i < sc->lbufs_size; i++) { - if (sc->lbufs[i] != NULL) { - bus_dmamap_unload(sc->mbuf_tag, sc->rmaps[i]); - m_freem(sc->lbufs[i]); - sc->lbufs[i] = NULL; - } - } - - /* - * Free small buffers - */ - for (p = 0; p < sc->mbuf_npages; p++) { - pg = sc->mbuf_pages[p]; - for (i = 0; i < pg->hdr.nchunks; i++) { - ch = (struct mbuf_chunk_hdr *) ((char *)pg + - i * pg->hdr.chunksize + pg->hdr.hdroff); - if (ch->flags & MBUF_CARD) { - ch->flags &= ~MBUF_CARD; - ch->flags |= MBUF_USED; - hatm_ext_free(&sc->mbuf_list[pg->hdr.pool], - (struct mbufx_free *)((u_char *)ch - - pg->hdr.hdroff)); - } - } - } - - hatm_stop_tpds(sc); - - /* - * Free all partial reassembled PDUs on any VCC. - */ - for (cid = 0; cid < HE_MAX_VCCS; cid++) { - if (sc->vccs[cid] != NULL) { - if (sc->vccs[cid]->chain != NULL) { - m_freem(sc->vccs[cid]->chain); - sc->vccs[cid]->chain = NULL; - sc->vccs[cid]->last = NULL; - } - if (!(sc->vccs[cid]->vflags & (HE_VCC_RX_OPEN | - HE_VCC_TX_OPEN))) { - hatm_tx_vcc_closed(sc, cid); - uma_zfree(sc->vcc_zone, sc->vccs[cid]); - sc->vccs[cid] = NULL; - sc->open_vccs--; - } else { - sc->vccs[cid]->vflags = 0; - sc->vccs[cid]->ntpds = 0; - } - } - } - - if (sc->rbp_s0.size != 0) - bzero(sc->rbp_s0.mem.base, sc->rbp_s0.mem.size); - if (sc->rbp_l0.size != 0) - bzero(sc->rbp_l0.mem.base, sc->rbp_l0.mem.size); - if (sc->rbp_s1.size != 0) - bzero(sc->rbp_s1.mem.base, sc->rbp_s1.mem.size); - if (sc->rbrq_0.size != 0) - bzero(sc->rbrq_0.mem.base, sc->rbrq_0.mem.size); - if (sc->rbrq_1.size != 0) - bzero(sc->rbrq_1.mem.base, sc->rbrq_1.mem.size); - - bzero(sc->tbrq.mem.base, sc->tbrq.mem.size); - bzero(sc->tpdrq.mem.base, sc->tpdrq.mem.size); - bzero(sc->hsp_mem.base, sc->hsp_mem.size); -} - -/************************************************************ - * - * Driver infrastructure - */ -devclass_t hatm_devclass; - -static device_method_t hatm_methods[] = { - DEVMETHOD(device_probe, hatm_probe), - DEVMETHOD(device_attach, hatm_attach), - DEVMETHOD(device_detach, hatm_detach), - {0,0} -}; -static driver_t hatm_driver = { - "hatm", - hatm_methods, - sizeof(struct hatm_softc), -}; -DRIVER_MODULE(hatm, pci, hatm_driver, hatm_devclass, NULL, 0); diff --git a/sys/dev/hatm/if_hatm_intr.c b/sys/dev/hatm/if_hatm_intr.c deleted file mode 100644 index ee5e67b90244..000000000000 --- a/sys/dev/hatm/if_hatm_intr.c +++ /dev/null @@ -1,731 +0,0 @@ -/*- - * Copyright (c) 2001-2003 - * Fraunhofer Institute for Open Communication Systems (FhG Fokus). - * All rights reserved. - * Author: Hartmut Brandt <harti@freebsd.org> - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -/* - * ForeHE driver. - * - * Interrupt handler. - */ - -#include "opt_inet.h" -#include "opt_natm.h" - -#include <sys/types.h> -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/malloc.h> -#include <sys/kernel.h> -#include <sys/bus.h> -#include <sys/errno.h> -#include <sys/conf.h> -#include <sys/module.h> -#include <sys/queue.h> -#include <sys/syslog.h> -#include <sys/condvar.h> -#include <sys/sysctl.h> -#include <vm/uma.h> - -#include <sys/sockio.h> -#include <sys/mbuf.h> -#include <sys/socket.h> - -#include <net/if.h> -#include <net/if_var.h> -#include <net/if_media.h> -#include <net/if_atm.h> -#include <net/route.h> -#include <netinet/in.h> -#include <netinet/if_atm.h> - -#include <machine/bus.h> -#include <machine/resource.h> -#include <sys/bus.h> -#include <sys/rman.h> -#include <dev/pci/pcireg.h> -#include <dev/pci/pcivar.h> - -#include <dev/utopia/utopia.h> -#include <dev/hatm/if_hatmconf.h> -#include <dev/hatm/if_hatmreg.h> -#include <dev/hatm/if_hatmvar.h> - -CTASSERT(sizeof(struct mbuf_page) == MBUF_ALLOC_SIZE); -CTASSERT(sizeof(struct mbuf0_chunk) == MBUF0_CHUNK); -CTASSERT(sizeof(struct mbuf1_chunk) == MBUF1_CHUNK); -CTASSERT(sizeof(((struct mbuf0_chunk *)NULL)->storage) >= MBUF0_SIZE); -CTASSERT(sizeof(((struct mbuf1_chunk *)NULL)->storage) >= MBUF1_SIZE); -CTASSERT(sizeof(struct tpd) <= HE_TPD_SIZE); - -CTASSERT(MBUF0_PER_PAGE <= 256); -CTASSERT(MBUF1_PER_PAGE <= 256); - -static void hatm_mbuf_page_alloc(struct hatm_softc *sc, u_int group); - -/* - * Free an external mbuf to a list. We use atomic functions so that - * we don't need a mutex for the list. - * - * Note that in general this algorithm is not safe when multiple readers - * and writers are present. To cite from a mail from David Schultz - * <das@freebsd.org>: - * - * It looks like this is subject to the ABA problem. For instance, - * suppose X, Y, and Z are the top things on the freelist and a - * thread attempts to make an allocation. You set buf to X and load - * buf->link (Y) into a register. Then the thread get preempted, and - * another thread allocates both X and Y, then frees X. When the - * original thread gets the CPU again, X is still on top of the - * freelist, so the atomic operation succeeds. However, the atomic - * op places Y on top of the freelist, even though Y is no longer - * free. - * - * We are, however sure that we have only one thread that ever allocates - * buffers because the only place we're call from is the interrupt handler. - * Under these circumstances the code looks safe. - */ -void -hatm_ext_free(struct mbufx_free **list, struct mbufx_free *buf) -{ - for (;;) { - buf->link = *list; - if (atomic_cmpset_ptr((uintptr_t *)list, (uintptr_t)buf->link, - (uintptr_t)buf)) - break; - } -} - -static __inline struct mbufx_free * -hatm_ext_alloc(struct hatm_softc *sc, u_int g) -{ - struct mbufx_free *buf; - - for (;;) { - if ((buf = sc->mbuf_list[g]) == NULL) - break; - if (atomic_cmpset_ptr((uintptr_t *)&sc->mbuf_list[g], - (uintptr_t)buf, (uintptr_t)buf->link)) - break; - } - if (buf == NULL) { - hatm_mbuf_page_alloc(sc, g); - for (;;) { - if ((buf = sc->mbuf_list[g]) == NULL) - break; - if (atomic_cmpset_ptr((uintptr_t *)&sc->mbuf_list[g], - (uintptr_t)buf, (uintptr_t)buf->link)) - break; - } - } - return (buf); -} - -/* - * Either the queue treshold was crossed or a TPD with the INTR bit set - * was transmitted. - */ -static void -he_intr_tbrq(struct hatm_softc *sc, struct hetbrq *q, u_int group) -{ - uint32_t *tailp = &sc->hsp->group[group].tbrq_tail; - u_int no; - - while (q->head != (*tailp >> 2)) { - no = (q->tbrq[q->head].addr & HE_REGM_TBRQ_ADDR) >> - HE_REGS_TPD_ADDR; - hatm_tx_complete(sc, TPD_ADDR(sc, no), - (q->tbrq[q->head].addr & HE_REGM_TBRQ_FLAGS)); - - if (++q->head == q->size) - q->head = 0; - } - WRITE4(sc, HE_REGO_TBRQ_H(group), q->head << 2); -} - -/* - * DMA loader function for external mbuf page. - */ -static void -hatm_extbuf_helper(void *arg, bus_dma_segment_t *segs, int nsegs, - int error) -{ - if (error) { - printf("%s: mapping error %d\n", __func__, error); - return; - } - KASSERT(nsegs == 1, - ("too many segments for DMA: %d", nsegs)); - KASSERT(segs[0].ds_addr <= 0xffffffffLU, - ("phys addr too large %lx", (u_long)segs[0].ds_addr)); - - *(uint32_t *)arg = segs[0].ds_addr; -} - -/* - * Allocate a page of external mbuf storage for the small pools. - * Create a DMA map and load it. Put all the chunks onto the right - * free list. - */ -static void -hatm_mbuf_page_alloc(struct hatm_softc *sc, u_int group) -{ - struct mbuf_page *pg; - int err; - u_int i; - - if (sc->mbuf_npages == sc->mbuf_max_pages) - return; - if ((pg = malloc(MBUF_ALLOC_SIZE, M_DEVBUF, M_NOWAIT)) == NULL) - return; - - err = bus_dmamap_create(sc->mbuf_tag, 0, &pg->hdr.map); - if (err != 0) { - if_printf(sc->ifp, "%s -- bus_dmamap_create: %d\n", - __func__, err); - free(pg, M_DEVBUF); - return; - } - err = bus_dmamap_load(sc->mbuf_tag, pg->hdr.map, pg, MBUF_ALLOC_SIZE, - hatm_extbuf_helper, &pg->hdr.phys, BUS_DMA_NOWAIT); - if (err != 0) { - if_printf(sc->ifp, "%s -- mbuf mapping failed %d\n", - __func__, err); - bus_dmamap_destroy(sc->mbuf_tag, pg->hdr.map); - free(pg, M_DEVBUF); - return; - } - - sc->mbuf_pages[sc->mbuf_npages] = pg; - - if (group == 0) { - struct mbuf0_chunk *c; - - pg->hdr.pool = 0; - pg->hdr.nchunks = MBUF0_PER_PAGE; - pg->hdr.chunksize = MBUF0_CHUNK; - pg->hdr.hdroff = sizeof(c->storage); - c = (struct mbuf0_chunk *)pg; - for (i = 0; i < MBUF0_PER_PAGE; i++, c++) { - c->hdr.pageno = sc->mbuf_npages; - c->hdr.chunkno = i; - c->hdr.flags = 0; - hatm_ext_free(&sc->mbuf_list[0], - (struct mbufx_free *)c); - } - } else { - struct mbuf1_chunk *c; - - pg->hdr.pool = 1; - pg->hdr.nchunks = MBUF1_PER_PAGE; - pg->hdr.chunksize = MBUF1_CHUNK; - pg->hdr.hdroff = sizeof(c->storage); - c = (struct mbuf1_chunk *)pg; - for (i = 0; i < MBUF1_PER_PAGE; i++, c++) { - c->hdr.pageno = sc->mbuf_npages; - c->hdr.chunkno = i; - c->hdr.flags = 0; - hatm_ext_free(&sc->mbuf_list[1], - (struct mbufx_free *)c); - } - } - sc->mbuf_npages++; -} - -/* - * Free an mbuf and put it onto the free list. - */ -static void -hatm_mbuf0_free(struct mbuf *m, void *buf, void *args) -{ - struct hatm_softc *sc = args; - struct mbuf0_chunk *c = buf; - - KASSERT((c->hdr.flags & (MBUF_USED | MBUF_CARD)) == MBUF_USED, - ("freeing unused mbuf %x", c->hdr.flags)); - c->hdr.flags &= ~MBUF_USED; - hatm_ext_free(&sc->mbuf_list[0], (struct mbufx_free *)c); -} -static void -hatm_mbuf1_free(struct mbuf *m, void *buf, void *args) -{ - struct hatm_softc *sc = args; - struct mbuf1_chunk *c = buf; - - KASSERT((c->hdr.flags & (MBUF_USED | MBUF_CARD)) == MBUF_USED, - ("freeing unused mbuf %x", c->hdr.flags)); - c->hdr.flags &= ~MBUF_USED; - hatm_ext_free(&sc->mbuf_list[1], (struct mbufx_free *)c); -} - -static void -hatm_mbuf_helper(void *arg, bus_dma_segment_t *segs, int nsegs, int error) -{ - uint32_t *ptr = (uint32_t *)arg; - - if (nsegs == 0) { - printf("%s: error=%d\n", __func__, error); - return; - } - KASSERT(nsegs == 1, ("too many segments for mbuf: %d", nsegs)); - KASSERT(segs[0].ds_addr <= 0xffffffffLU, - ("phys addr too large %lx", (u_long)segs[0].ds_addr)); - - *ptr = segs[0].ds_addr; -} - -/* - * Receive buffer pool interrupt. This means the number of entries in the - * queue has dropped below the threshold. Try to supply new buffers. - */ -static void -he_intr_rbp(struct hatm_softc *sc, struct herbp *rbp, u_int large, - u_int group) -{ - u_int ntail; - struct mbuf *m; - int error; - struct mbufx_free *cf; - struct mbuf_page *pg; - struct mbuf0_chunk *buf0; - struct mbuf1_chunk *buf1; - - DBG(sc, INTR, ("%s buffer supply threshold crossed for group %u", - large ? "large" : "small", group)); - - rbp->head = (READ4(sc, HE_REGO_RBP_S(large, group)) >> HE_REGS_RBP_HEAD) - & (rbp->size - 1); - - for (;;) { - if ((ntail = rbp->tail + 1) == rbp->size) - ntail = 0; - if (ntail == rbp->head) - break; - m = NULL; - - if (large) { - /* allocate the MBUF */ - if ((m = m_getcl(M_NOWAIT, MT_DATA, - M_PKTHDR)) == NULL) { - if_printf(sc->ifp, - "no mbuf clusters\n"); - break; - } - m->m_data += MBUFL_OFFSET; - - if (sc->lbufs[sc->lbufs_next] != NULL) - panic("hatm: lbufs full %u", sc->lbufs_next); - sc->lbufs[sc->lbufs_next] = m; - - if ((error = bus_dmamap_load(sc->mbuf_tag, - sc->rmaps[sc->lbufs_next], - m->m_data, rbp->bsize, hatm_mbuf_helper, - &rbp->rbp[rbp->tail].phys, BUS_DMA_NOWAIT)) != 0) - panic("hatm: mbuf mapping failed %d", error); - - bus_dmamap_sync(sc->mbuf_tag, - sc->rmaps[sc->lbufs_next], - BUS_DMASYNC_PREREAD); - - rbp->rbp[rbp->tail].handle = - MBUF_MAKE_LHANDLE(sc->lbufs_next); - - if (++sc->lbufs_next == sc->lbufs_size) - sc->lbufs_next = 0; - - } else if (group == 0) { - /* - * Allocate small buffer in group 0 - */ - if ((cf = hatm_ext_alloc(sc, 0)) == NULL) - break; - buf0 = (struct mbuf0_chunk *)cf; - pg = sc->mbuf_pages[buf0->hdr.pageno]; - buf0->hdr.flags |= MBUF_CARD; - rbp->rbp[rbp->tail].phys = pg->hdr.phys + - buf0->hdr.chunkno * MBUF0_CHUNK + MBUF0_OFFSET; - rbp->rbp[rbp->tail].handle = - MBUF_MAKE_HANDLE(buf0->hdr.pageno, - buf0->hdr.chunkno); - - bus_dmamap_sync(sc->mbuf_tag, pg->hdr.map, - BUS_DMASYNC_PREREAD); - - } else if (group == 1) { - /* - * Allocate small buffer in group 1 - */ - if ((cf = hatm_ext_alloc(sc, 1)) == NULL) - break; - buf1 = (struct mbuf1_chunk *)cf; - pg = sc->mbuf_pages[buf1->hdr.pageno]; - buf1->hdr.flags |= MBUF_CARD; - rbp->rbp[rbp->tail].phys = pg->hdr.phys + - buf1->hdr.chunkno * MBUF1_CHUNK + MBUF1_OFFSET; - rbp->rbp[rbp->tail].handle = - MBUF_MAKE_HANDLE(buf1->hdr.pageno, - buf1->hdr.chunkno); - - bus_dmamap_sync(sc->mbuf_tag, pg->hdr.map, - BUS_DMASYNC_PREREAD); - - } else - /* ups */ - break; - - DBG(sc, DMA, ("MBUF loaded: handle=%x m=%p phys=%x", - rbp->rbp[rbp->tail].handle, m, rbp->rbp[rbp->tail].phys)); - - rbp->tail = ntail; - } - WRITE4(sc, HE_REGO_RBP_T(large, group), - (rbp->tail << HE_REGS_RBP_TAIL)); -} - -/* - * Extract the buffer and hand it to the receive routine - */ -static struct mbuf * -hatm_rx_buffer(struct hatm_softc *sc, u_int group, u_int handle) -{ - u_int pageno; - u_int chunkno; - struct mbuf *m; - - if (handle & MBUF_LARGE_FLAG) { - /* large buffer - sync and unload */ - MBUF_PARSE_LHANDLE(handle, handle); - DBG(sc, RX, ("RX large handle=%x", handle)); - - bus_dmamap_sync(sc->mbuf_tag, sc->rmaps[handle], - BUS_DMASYNC_POSTREAD); - bus_dmamap_unload(sc->mbuf_tag, sc->rmaps[handle]); - - m = sc->lbufs[handle]; - sc->lbufs[handle] = NULL; - - return (m); - } - - MBUF_PARSE_HANDLE(handle, pageno, chunkno); - - DBG(sc, RX, ("RX group=%u handle=%x page=%u chunk=%u", group, handle, - pageno, chunkno)); - - MGETHDR(m, M_NOWAIT, MT_DATA); - - if (group == 0) { - struct mbuf0_chunk *c0; - - c0 = (struct mbuf0_chunk *)sc->mbuf_pages[pageno] + chunkno; - KASSERT(c0->hdr.pageno == pageno, ("pageno = %u/%u", - c0->hdr.pageno, pageno)); - KASSERT(c0->hdr.chunkno == chunkno, ("chunkno = %u/%u", - c0->hdr.chunkno, chunkno)); - KASSERT(c0->hdr.flags & MBUF_CARD, ("mbuf not on card %u/%u", - pageno, chunkno)); - KASSERT(!(c0->hdr.flags & MBUF_USED), ("used mbuf %u/%u", - pageno, chunkno)); - - c0->hdr.flags |= MBUF_USED; - c0->hdr.flags &= ~MBUF_CARD; - - if (m != NULL) { - m->m_ext.ext_cnt = &c0->hdr.ref_cnt; - MEXTADD(m, (void *)c0, MBUF0_SIZE, - hatm_mbuf0_free, c0, sc, M_PKTHDR, EXT_EXTREF); - m->m_data += MBUF0_OFFSET; - } else - (void)hatm_mbuf0_free(NULL, c0, sc); - - } else { - struct mbuf1_chunk *c1; - - c1 = (struct mbuf1_chunk *)sc->mbuf_pages[pageno] + chunkno; - KASSERT(c1->hdr.pageno == pageno, ("pageno = %u/%u", - c1->hdr.pageno, pageno)); - KASSERT(c1->hdr.chunkno == chunkno, ("chunkno = %u/%u", - c1->hdr.chunkno, chunkno)); - KASSERT(c1->hdr.flags & MBUF_CARD, ("mbuf not on card %u/%u", - pageno, chunkno)); - KASSERT(!(c1->hdr.flags & MBUF_USED), ("used mbuf %u/%u", - pageno, chunkno)); - - c1->hdr.flags |= MBUF_USED; - c1->hdr.flags &= ~MBUF_CARD; - - if (m != NULL) { - m->m_ext.ext_cnt = &c1->hdr.ref_cnt; - MEXTADD(m, (void *)c1, MBUF1_SIZE, - hatm_mbuf1_free, c1, sc, M_PKTHDR, EXT_EXTREF); - m->m_data += MBUF1_OFFSET; - } else - (void)hatm_mbuf1_free(NULL, c1, sc); - } - - return (m); -} - -/* - * Interrupt because of receive buffer returned. - */ -static void -he_intr_rbrq(struct hatm_softc *sc, struct herbrq *rq, u_int group) -{ - struct he_rbrqen *e; - uint32_t flags, tail; - u_int cid, len; - struct mbuf *m; - - for (;;) { - tail = sc->hsp->group[group].rbrq_tail >> 3; - - if (rq->head == tail) - break; - - e = &rq->rbrq[rq->head]; - - flags = e->addr & HE_REGM_RBRQ_FLAGS; - if (!(flags & HE_REGM_RBRQ_HBUF_ERROR)) - m = hatm_rx_buffer(sc, group, e->addr); - else - m = NULL; - - cid = (e->len & HE_REGM_RBRQ_CID) >> HE_REGS_RBRQ_CID; - len = 4 * (e->len & HE_REGM_RBRQ_LEN); - - hatm_rx(sc, cid, flags, m, len); - - if (++rq->head == rq->size) - rq->head = 0; - } - WRITE4(sc, HE_REGO_RBRQ_H(group), rq->head << 3); -} - -void -hatm_intr(void *p) -{ - struct heirq *q = p; - struct hatm_softc *sc = q->sc; - u_int status; - u_int tail; - - /* if we have a stray interrupt with a non-initialized card, - * we cannot even lock before looking at the flag */ - if (!(sc->ifp->if_drv_flags & IFF_DRV_RUNNING)) - return; - - mtx_lock(&sc->mtx); - (void)READ4(sc, HE_REGO_INT_FIFO); - - tail = *q->tailp; - if (q->head == tail) { - /* workaround for tail pointer not updated bug (8.1.1) */ - DBG(sc, INTR, ("hatm: intr tailq not updated bug triggered")); - - /* read the tail pointer from the card */ - tail = READ4(sc, HE_REGO_IRQ_BASE(q->group)) & - HE_REGM_IRQ_BASE_TAIL; - BARRIER_R(sc); - - sc->istats.bug_no_irq_upd++; - } - - /* clear the interrupt */ - WRITE4(sc, HE_REGO_INT_FIFO, HE_REGM_INT_FIFO_CLRA); - BARRIER_W(sc); - - while (q->head != tail) { - status = q->irq[q->head]; - q->irq[q->head] = HE_REGM_ITYPE_INVALID; - if (++q->head == (q->size - 1)) - q->head = 0; - - switch (status & HE_REGM_ITYPE) { - - case HE_REGM_ITYPE_TBRQ: - DBG(sc, INTR, ("TBRQ treshold %u", status & HE_REGM_IGROUP)); - sc->istats.itype_tbrq++; - he_intr_tbrq(sc, &sc->tbrq, status & HE_REGM_IGROUP); - break; - - case HE_REGM_ITYPE_TPD: - DBG(sc, INTR, ("TPD ready %u", status & HE_REGM_IGROUP)); - sc->istats.itype_tpd++; - he_intr_tbrq(sc, &sc->tbrq, status & HE_REGM_IGROUP); - break; - - case HE_REGM_ITYPE_RBPS: - sc->istats.itype_rbps++; - switch (status & HE_REGM_IGROUP) { - - case 0: - he_intr_rbp(sc, &sc->rbp_s0, 0, 0); - break; - - case 1: - he_intr_rbp(sc, &sc->rbp_s1, 0, 1); - break; - - default: - if_printf(sc->ifp, "bad INTR RBPS%u\n", - status & HE_REGM_IGROUP); - break; - } - break; - - case HE_REGM_ITYPE_RBPL: - sc->istats.itype_rbpl++; - switch (status & HE_REGM_IGROUP) { - - case 0: - he_intr_rbp(sc, &sc->rbp_l0, 1, 0); - break; - - default: - if_printf(sc->ifp, "bad INTR RBPL%u\n", - status & HE_REGM_IGROUP); - break; - } - break; - - case HE_REGM_ITYPE_RBRQ: - DBG(sc, INTR, ("INTERRUPT RBRQ %u", status & HE_REGM_IGROUP)); - sc->istats.itype_rbrq++; - switch (status & HE_REGM_IGROUP) { - - case 0: - he_intr_rbrq(sc, &sc->rbrq_0, 0); - break; - - case 1: - if (sc->rbrq_1.size > 0) { - he_intr_rbrq(sc, &sc->rbrq_1, 1); - break; - } - /* FALLTHRU */ - - default: - if_printf(sc->ifp, "bad INTR RBRQ%u\n", - status & HE_REGM_IGROUP); - break; - } - break; - - case HE_REGM_ITYPE_RBRQT: - DBG(sc, INTR, ("INTERRUPT RBRQT %u", status & HE_REGM_IGROUP)); - sc->istats.itype_rbrqt++; - switch (status & HE_REGM_IGROUP) { - - case 0: - he_intr_rbrq(sc, &sc->rbrq_0, 0); - break; - - case 1: - if (sc->rbrq_1.size > 0) { - he_intr_rbrq(sc, &sc->rbrq_1, 1); - break; - } - /* FALLTHRU */ - - default: - if_printf(sc->ifp, "bad INTR RBRQT%u\n", - status & HE_REGM_IGROUP); - break; - } - break; - - case HE_REGM_ITYPE_PHYS: - sc->istats.itype_phys++; - utopia_intr(&sc->utopia); - break; - -#if HE_REGM_ITYPE_UNKNOWN != HE_REGM_ITYPE_INVALID - case HE_REGM_ITYPE_UNKNOWN: - sc->istats.itype_unknown++; - if_printf(sc->ifp, "bad interrupt\n"); - break; -#endif - - case HE_REGM_ITYPE_ERR: - sc->istats.itype_err++; - switch (status) { - - case HE_REGM_ITYPE_PERR: - if_printf(sc->ifp, "parity error\n"); - break; - - case HE_REGM_ITYPE_ABORT: - if_printf(sc->ifp, "abort interrupt " - "addr=0x%08x\n", - READ4(sc, HE_REGO_ABORT_ADDR)); - break; - - default: - if_printf(sc->ifp, - "bad interrupt type %08x\n", status); - break; - } - break; - - case HE_REGM_ITYPE_INVALID: - /* this is the documented fix for the ISW bug 8.1.1 - * Note, that the documented fix is partly wrong: - * the ISWs should be intialized to 0xf8 not 0xff */ - sc->istats.bug_bad_isw++; - DBG(sc, INTR, ("hatm: invalid ISW bug triggered")); - he_intr_tbrq(sc, &sc->tbrq, 0); - he_intr_rbp(sc, &sc->rbp_s0, 0, 0); - he_intr_rbp(sc, &sc->rbp_l0, 1, 0); - he_intr_rbp(sc, &sc->rbp_s1, 0, 1); - he_intr_rbrq(sc, &sc->rbrq_0, 0); - he_intr_rbrq(sc, &sc->rbrq_1, 1); - utopia_intr(&sc->utopia); - break; - - default: - if_printf(sc->ifp, "bad interrupt type %08x\n", - status); - break; - } - } - - /* write back head to clear queue */ - WRITE4(sc, HE_REGO_IRQ_HEAD(0), - ((q->size - 1) << HE_REGS_IRQ_HEAD_SIZE) | - (q->thresh << HE_REGS_IRQ_HEAD_THRESH) | - (q->head << HE_REGS_IRQ_HEAD_HEAD)); - BARRIER_W(sc); - - /* workaround the back-to-back irq access problem (8.1.2) */ - (void)READ4(sc, HE_REGO_INT_FIFO); - BARRIER_R(sc); - - mtx_unlock(&sc->mtx); -} diff --git a/sys/dev/hatm/if_hatm_ioctl.c b/sys/dev/hatm/if_hatm_ioctl.c deleted file mode 100644 index 154a2d60943f..000000000000 --- a/sys/dev/hatm/if_hatm_ioctl.c +++ /dev/null @@ -1,385 +0,0 @@ -/*- - * Copyright (c) 2001-2003 - * Fraunhofer Institute for Open Communication Systems (FhG Fokus). - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * Author: Hartmut Brandt <harti@freebsd.org> - * - * ForeHE driver. - * - * Ioctl handler. - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include "opt_inet.h" -#include "opt_natm.h" - -#include <sys/types.h> -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/malloc.h> -#include <sys/kernel.h> -#include <sys/bus.h> -#include <sys/errno.h> -#include <sys/conf.h> -#include <sys/module.h> -#include <sys/queue.h> -#include <sys/syslog.h> -#include <sys/condvar.h> -#include <sys/sysctl.h> -#include <vm/uma.h> - -#include <sys/sockio.h> -#include <sys/mbuf.h> -#include <sys/socket.h> - -#include <net/if.h> -#include <net/if_var.h> -#include <net/if_media.h> -#include <net/if_atm.h> -#include <net/route.h> -#include <netinet/in.h> -#include <netinet/if_atm.h> - -#include <machine/bus.h> -#include <machine/resource.h> -#include <sys/bus.h> -#include <sys/rman.h> -#include <dev/pci/pcireg.h> -#include <dev/pci/pcivar.h> - -#include <dev/utopia/utopia.h> -#include <dev/hatm/if_hatmconf.h> -#include <dev/hatm/if_hatmreg.h> -#include <dev/hatm/if_hatmvar.h> - -static u_int hatm_natm_traffic = ATMIO_TRAFFIC_UBR; -static u_int hatm_natm_pcr = 0; - -static int hatm_sysctl_natm_traffic(SYSCTL_HANDLER_ARGS); - -SYSCTL_DECL(_hw_atm); - -SYSCTL_PROC(_hw_atm, OID_AUTO, natm_traffic, CTLTYPE_UINT | CTLFLAG_RW, - &hatm_natm_traffic, sizeof(hatm_natm_traffic), hatm_sysctl_natm_traffic, - "IU", "traffic type for NATM connections"); -SYSCTL_UINT(_hw_atm, OID_AUTO, natm_pcr, CTLFLAG_RW, - &hatm_natm_pcr, 0, "PCR for NATM connections"); - -/* - * Try to open the given VCC. - */ -static int -hatm_open_vcc(struct hatm_softc *sc, struct atmio_openvcc *arg) -{ - u_int cid; - struct hevcc *vcc; - int error = 0; - - DBG(sc, VCC, ("Open VCC: %u.%u flags=%#x", arg->param.vpi, - arg->param.vci, arg->param.flags)); - - if ((arg->param.vpi & ~HE_VPI_MASK) || - (arg->param.vci & ~HE_VCI_MASK) || - (arg->param.vci == 0)) - return (EINVAL); - cid = HE_CID(arg->param.vpi, arg->param.vci); - - if ((arg->param.flags & ATMIO_FLAG_NOTX) && - (arg->param.flags & ATMIO_FLAG_NORX)) - return (EINVAL); - - vcc = uma_zalloc(sc->vcc_zone, M_NOWAIT | M_ZERO); - if (vcc == NULL) - return (ENOMEM); - - mtx_lock(&sc->mtx); - if (!(sc->ifp->if_drv_flags & IFF_DRV_RUNNING)) { - error = EIO; - goto done; - } - if (sc->vccs[cid] != NULL) { - error = EBUSY; - goto done; - } - vcc->param = arg->param; - vcc->rxhand = arg->rxhand; - switch (vcc->param.aal) { - - case ATMIO_AAL_0: - case ATMIO_AAL_5: - case ATMIO_AAL_RAW: - break; - - default: - error = EINVAL; - goto done; - } - switch (vcc->param.traffic) { - - case ATMIO_TRAFFIC_UBR: - case ATMIO_TRAFFIC_CBR: - case ATMIO_TRAFFIC_ABR: - break; - - default: - error = EINVAL; - goto done; - } - vcc->ntpds = 0; - vcc->chain = vcc->last = NULL; - vcc->ibytes = vcc->ipackets = 0; - vcc->obytes = vcc->opackets = 0; - - if (!(vcc->param.flags & ATMIO_FLAG_NOTX) && - (error = hatm_tx_vcc_can_open(sc, cid, vcc)) != 0) - goto done; - - /* ok - go ahead */ - sc->vccs[cid] = vcc; - hatm_load_vc(sc, cid, 0); - - /* don't free below */ - vcc = NULL; - sc->open_vccs++; - - done: - mtx_unlock(&sc->mtx); - if (vcc != NULL) - uma_zfree(sc->vcc_zone, vcc); - return (error); -} - -void -hatm_load_vc(struct hatm_softc *sc, u_int cid, int reopen) -{ - struct hevcc *vcc = sc->vccs[cid]; - - if (!(vcc->param.flags & ATMIO_FLAG_NOTX)) - hatm_tx_vcc_open(sc, cid); - if (!(vcc->param.flags & ATMIO_FLAG_NORX)) - hatm_rx_vcc_open(sc, cid); - - if (reopen) - return; - - /* inform management about non-NG and NG-PVCs */ - if (!(vcc->param.flags & ATMIO_FLAG_NG) || - (vcc->param.flags & ATMIO_FLAG_PVC)) - ATMEV_SEND_VCC_CHANGED(IFP2IFATM(sc->ifp), vcc->param.vpi, - vcc->param.vci, 1); -} - -/* - * VCC has been finally closed. - */ -void -hatm_vcc_closed(struct hatm_softc *sc, u_int cid) -{ - struct hevcc *vcc = sc->vccs[cid]; - - /* inform management about non-NG and NG-PVCs */ - if (!(vcc->param.flags & ATMIO_FLAG_NG) || - (vcc->param.flags & ATMIO_FLAG_PVC)) - ATMEV_SEND_VCC_CHANGED(IFP2IFATM(sc->ifp), HE_VPI(cid), HE_VCI(cid), 0); - - sc->open_vccs--; - uma_zfree(sc->vcc_zone, vcc); - sc->vccs[cid] = NULL; -} - -/* - * Try to close the given VCC - */ -static int -hatm_close_vcc(struct hatm_softc *sc, struct atmio_closevcc *arg) -{ - u_int cid; - struct hevcc *vcc; - int error = 0; - - DBG(sc, VCC, ("Close VCC: %u.%u", arg->vpi, arg->vci)); - - if((arg->vpi & ~HE_VPI_MASK) || - (arg->vci & ~HE_VCI_MASK) || - (arg->vci == 0)) - return (EINVAL); - cid = HE_CID(arg->vpi, arg->vci); - - mtx_lock(&sc->mtx); - vcc = sc->vccs[cid]; - if (!(sc->ifp->if_drv_flags & IFF_DRV_RUNNING)) { - error = EIO; - goto done; - } - - if (vcc == NULL || !(vcc->vflags & HE_VCC_OPEN)) { - error = ENOENT; - goto done; - } - - if (vcc->vflags & HE_VCC_TX_OPEN) - hatm_tx_vcc_close(sc, cid); - if (vcc->vflags & HE_VCC_RX_OPEN) - hatm_rx_vcc_close(sc, cid); - - if (vcc->param.flags & ATMIO_FLAG_ASYNC) - goto done; - - while ((sc->ifp->if_drv_flags & IFF_DRV_RUNNING) && - (vcc->vflags & (HE_VCC_TX_CLOSING | HE_VCC_RX_CLOSING))) - cv_wait(&sc->vcc_cv, &sc->mtx); - - if (!(sc->ifp->if_drv_flags & IFF_DRV_RUNNING)) { - error = EIO; - goto done; - } - - if (!(vcc->vflags & ATMIO_FLAG_NOTX)) - hatm_tx_vcc_closed(sc, cid); - - hatm_vcc_closed(sc, cid); - - done: - mtx_unlock(&sc->mtx); - return (error); -} - -/* - * IOCTL handler - */ -int -hatm_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) -{ - struct ifreq *ifr = (struct ifreq *)data; - struct ifaddr *ifa = (struct ifaddr *)data; - struct hatm_softc *sc = ifp->if_softc; - struct atmio_vcctable *vtab; - int error = 0; - - switch (cmd) { - - case SIOCSIFADDR: - mtx_lock(&sc->mtx); - ifp->if_flags |= IFF_UP; - if (!(ifp->if_drv_flags & IFF_DRV_RUNNING)) - hatm_initialize(sc); - switch (ifa->ifa_addr->sa_family) { - -#ifdef INET - case AF_INET: - case AF_INET6: - ifa->ifa_rtrequest = atm_rtrequest; - break; -#endif - default: - break; - } - mtx_unlock(&sc->mtx); - break; - - case SIOCSIFFLAGS: - mtx_lock(&sc->mtx); - if (ifp->if_flags & IFF_UP) { - if (!(ifp->if_drv_flags & IFF_DRV_RUNNING)) { - hatm_initialize(sc); - } - } else { - if (ifp->if_drv_flags & IFF_DRV_RUNNING) { - hatm_stop(sc); - } - } - mtx_unlock(&sc->mtx); - break; - - case SIOCGIFMEDIA: - case SIOCSIFMEDIA: - error = ifmedia_ioctl(ifp, ifr, &sc->media, cmd); - break; - - case SIOCSIFMTU: - /* - * Set the interface MTU. - */ - if (ifr->ifr_mtu > ATMMTU) - error = EINVAL; - else - ifp->if_mtu = ifr->ifr_mtu; - break; - - case SIOCATMGVCCS: - /* return vcc table */ - vtab = atm_getvccs((struct atmio_vcc **)sc->vccs, - HE_MAX_VCCS, sc->open_vccs, &sc->mtx, 1); - error = copyout(vtab, ifr->ifr_data, sizeof(*vtab) + - vtab->count * sizeof(vtab->vccs[0])); - free(vtab, M_DEVBUF); - break; - - case SIOCATMGETVCCS: /* netgraph internal use */ - vtab = atm_getvccs((struct atmio_vcc **)sc->vccs, - HE_MAX_VCCS, sc->open_vccs, &sc->mtx, 0); - if (vtab == NULL) { - error = ENOMEM; - break; - } - *(void **)data = vtab; - break; - - case SIOCATMOPENVCC: /* kernel internal use */ - error = hatm_open_vcc(sc, (struct atmio_openvcc *)data); - break; - - case SIOCATMCLOSEVCC: /* kernel internal use */ - error = hatm_close_vcc(sc, (struct atmio_closevcc *)data); - break; - - default: - DBG(sc, IOCTL, ("cmd=%08lx arg=%p", cmd, data)); - error = EINVAL; - break; - } - - return (error); -} - -static int -hatm_sysctl_natm_traffic(SYSCTL_HANDLER_ARGS) -{ - int error; - int tmp; - - tmp = hatm_natm_traffic; - error = sysctl_handle_int(oidp, &tmp, 0, req); - if (error != 0 || req->newptr == NULL) - return (error); - - if (tmp != ATMIO_TRAFFIC_UBR && tmp != ATMIO_TRAFFIC_CBR) - return (EINVAL); - - hatm_natm_traffic = tmp; - return (0); -} diff --git a/sys/dev/hatm/if_hatm_rx.c b/sys/dev/hatm/if_hatm_rx.c deleted file mode 100644 index c12ec6e9e709..000000000000 --- a/sys/dev/hatm/if_hatm_rx.c +++ /dev/null @@ -1,331 +0,0 @@ -/*- - * Copyright (c) 2001-2003 - * Fraunhofer Institute for Open Communication Systems (FhG Fokus). - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * Author: Hartmut Brandt <harti@freebsd.org> - * - * ForeHE driver. - * - * Receive. - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include "opt_inet.h" -#include "opt_natm.h" - -#include <sys/types.h> -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/kernel.h> -#include <sys/bus.h> -#include <sys/errno.h> -#include <sys/conf.h> -#include <sys/module.h> -#include <sys/queue.h> -#include <sys/syslog.h> -#include <sys/condvar.h> -#include <sys/sysctl.h> -#include <vm/uma.h> - -#include <sys/sockio.h> -#include <sys/mbuf.h> -#include <sys/socket.h> - -#include <net/if.h> -#include <net/if_var.h> -#include <net/if_media.h> -#include <net/if_atm.h> -#include <net/route.h> -#ifdef ENABLE_BPF -#include <net/bpf.h> -#endif -#include <netinet/in.h> -#include <netinet/if_atm.h> - -#include <machine/bus.h> -#include <machine/resource.h> -#include <sys/bus.h> -#include <sys/rman.h> -#include <dev/pci/pcireg.h> -#include <dev/pci/pcivar.h> - -#include <dev/utopia/utopia.h> -#include <dev/hatm/if_hatmconf.h> -#include <dev/hatm/if_hatmreg.h> -#include <dev/hatm/if_hatmvar.h> - -void -hatm_rx(struct hatm_softc *sc, u_int cid, u_int flags, struct mbuf *m0, - u_int len) -{ - struct hevcc *vcc; - struct atm_pseudohdr aph; - struct mbuf *m, *m1; - u_int vpi, vci; - u_char *ptr; - - DBG(sc, RX, ("cid=%#x flags=%#x len=%u mbuf=%p", cid, flags, len, m0)); - - vcc = sc->vccs[cid]; - if (vcc == NULL) - goto drop; - - if (flags & HE_REGM_RBRQ_CON_CLOSED) { - if (vcc->vflags & HE_VCC_RX_CLOSING) { - vcc->vflags &= ~HE_VCC_RX_CLOSING; - if (vcc->param.flags & ATMIO_FLAG_ASYNC) { - if (!(vcc->vflags & HE_VCC_OPEN)) - hatm_vcc_closed(sc, cid); - } else - cv_signal(&sc->vcc_cv); - } - goto drop; - } - - if (!(vcc->vflags & HE_VCC_RX_OPEN)) - goto drop; - - if (flags & HE_REGM_RBRQ_HBUF_ERROR) { - sc->istats.hbuf_error++; - if (vcc->chain != NULL) { - m_freem(vcc->chain); - vcc->chain = vcc->last = NULL; - } - goto drop; - } - if (m0 == NULL) { - sc->istats.no_rcv_mbuf++; - return; - } - - if ((m0->m_len = len) == 0) { - sc->istats.empty_hbuf++; - m_free(m0); - - } else if (vcc->chain == NULL) { - sc->istats.rx_seg++; - vcc->chain = vcc->last = m0; - vcc->last->m_next = NULL; - vcc->chain->m_pkthdr.len = m0->m_len; - vcc->chain->m_pkthdr.rcvif = sc->ifp; - - } else { - sc->istats.rx_seg++; - vcc->last->m_next = m0; - vcc->last = m0; - vcc->last->m_next = NULL; - vcc->chain->m_pkthdr.len += m0->m_len; - } - - if (!(flags & HE_REGM_RBRQ_END_PDU)) - return; - - if (flags & HE_REGM_RBRQ_CRC_ERROR) { - if (vcc->chain) - m_freem(vcc->chain); - vcc->chain = vcc->last = NULL; - sc->istats.crc_error++; - if_inc_counter(sc->ifp, IFCOUNTER_IERRORS, 1); - return; - } - if (flags & HE_REGM_RBRQ_LEN_ERROR) { - if (vcc->chain) - m_freem(vcc->chain); - vcc->chain = vcc->last = NULL; - sc->istats.len_error++; - if_inc_counter(sc->ifp, IFCOUNTER_IERRORS, 1); - return; - } - -#ifdef HATM_DEBUG - if (sc->debug & DBG_DUMP) { - struct mbuf *tmp; - - for (tmp = vcc->chain; tmp != NULL; tmp = tmp->m_next) { - printf("mbuf %p: len=%u\n", tmp, tmp->m_len); - for (ptr = mtod(tmp, u_char *); - ptr < mtod(tmp, u_char *) + tmp->m_len; ptr++) - printf("%02x ", *ptr); - printf("\n"); - } - } -#endif - - if (vcc->param.aal == ATMIO_AAL_5) { - /* - * Need to remove padding and the trailer. The trailer - * may be split across buffers according to 2.10.1.2 - * Assume that mbufs sizes are even (buffer sizes and cell - * payload sizes are) and that there are no empty mbufs. - */ - m = vcc->last; - if (m->m_len == 2) { - /* Ah, oh, only part of CRC */ - if (m == vcc->chain) { - /* ups */ - sc->istats.short_aal5++; - m_freem(vcc->chain); - vcc->chain = vcc->last = NULL; - return; - } - for (m1 = vcc->chain; m1->m_next != m; m1 = m1->m_next) - ; - ptr = (u_char *)m1->m_data + m1->m_len - 4; - - } else if (m->m_len == 4) { - /* Ah, oh, only CRC */ - if (m == vcc->chain) { - /* ups */ - sc->istats.short_aal5++; - m_freem(vcc->chain); - vcc->chain = vcc->last = NULL; - return; - } - for (m1 = vcc->chain; m1->m_next != m; m1 = m1->m_next) - ; - ptr = (u_char *)m1->m_data + m1->m_len - 2; - - } else if (m->m_len >= 6) { - ptr = (u_char *)m->m_data + m->m_len - 6; - } else - panic("hatm_rx: bad mbuf len %d", m->m_len); - - len = (ptr[0] << 8) + ptr[1]; - if (len > (u_int)vcc->chain->m_pkthdr.len - 4) { - sc->istats.badlen_aal5++; - m_freem(vcc->chain); - vcc->chain = vcc->last = NULL; - return; - } - m_adj(vcc->chain, -(vcc->chain->m_pkthdr.len - len)); - } - m = vcc->chain; - vcc->chain = vcc->last = NULL; - -#ifdef ENABLE_BPF - if (!(vcc->param.flags & ATMIO_FLAG_NG) && - (vcc->param.aal == ATMIO_AAL_5) && - (vcc->param.flags & ATM_PH_LLCSNAP)) - BPF_MTAP(sc->ifp, m); -#endif - - vpi = HE_VPI(cid); - vci = HE_VCI(cid); - - ATM_PH_FLAGS(&aph) = vcc->param.flags & 0xff; - ATM_PH_VPI(&aph) = vpi; - ATM_PH_SETVCI(&aph, vci); - - if_inc_counter(sc->ifp, IFCOUNTER_IPACKETS, 1); - /* this is in if_atmsubr.c */ - /* if_inc_counter(sc->ifp, IFCOUNTER_IBYTES, len); */ - - vcc->ibytes += len; - vcc->ipackets++; - -#if 0 - { - struct mbuf *tmp; - - for (tmp = m; tmp != NULL; tmp = tmp->m_next) { - printf("mbuf %p: len=%u\n", tmp, tmp->m_len); - for (ptr = mtod(tmp, u_char *); - ptr < mtod(tmp, u_char *) + tmp->m_len; ptr++) - printf("%02x ", *ptr); - printf("\n"); - } - } -#endif - - atm_input(sc->ifp, &aph, m, vcc->rxhand); - - return; - - drop: - if (m0 != NULL) - m_free(m0); -} - -void -hatm_rx_vcc_open(struct hatm_softc *sc, u_int cid) -{ - struct hevcc *vcc = sc->vccs[cid]; - uint32_t rsr0, rsr1, rsr4; - - rsr0 = rsr1 = rsr4 = 0; - - if (vcc->param.traffic == ATMIO_TRAFFIC_ABR) { - rsr1 |= HE_REGM_RSR1_AQI; - rsr4 |= HE_REGM_RSR4_AQI; - } - - if (vcc->param.aal == ATMIO_AAL_5) { - rsr0 |= HE_REGM_RSR0_STARTPDU | HE_REGM_RSR0_AAL_5; - } else if (vcc->param.aal == ATMIO_AAL_0) { - rsr0 |= HE_REGM_RSR0_AAL_0; - } else { - if (sc->rbp_s1.size != 0) { - rsr1 |= (1 << HE_REGS_RSR1_GROUP); - rsr4 |= (1 << HE_REGS_RSR4_GROUP); - } - rsr0 |= HE_REGM_RSR0_AAL_RAW | HE_REGM_RSR0_PTI7 | - HE_REGM_RSR0_RM | HE_REGM_RSR0_F5OAM; - } - rsr0 |= HE_REGM_RSR0_OPEN; - - WRITE_RSR(sc, cid, 0, 0xf, rsr0); - WRITE_RSR(sc, cid, 1, 0xf, rsr1); - WRITE_RSR(sc, cid, 4, 0xf, rsr4); - - vcc->vflags |= HE_VCC_RX_OPEN; -} - -/* - * Close the RX side of a VCC. - */ -void -hatm_rx_vcc_close(struct hatm_softc *sc, u_int cid) -{ - struct hevcc *vcc = sc->vccs[cid]; - uint32_t v; - - vcc->vflags |= HE_VCC_RX_CLOSING; - WRITE_RSR(sc, cid, 0, 0xf, 0); - - v = READ4(sc, HE_REGO_RCCSTAT); - while ((sc->ifp->if_drv_flags & IFF_DRV_RUNNING) && - (READ4(sc, HE_REGO_RCCSTAT) & HE_REGM_RCCSTAT_PROG)) - cv_timedwait(&sc->cv_rcclose, &sc->mtx, 1); - - if (!(sc->ifp->if_drv_flags & IFF_DRV_RUNNING)) - return; - - WRITE_MBOX4(sc, HE_REGO_RCON_CLOSE, cid); - - vcc->vflags |= HE_VCC_RX_CLOSING; - vcc->vflags &= ~HE_VCC_RX_OPEN; -} diff --git a/sys/dev/hatm/if_hatm_tx.c b/sys/dev/hatm/if_hatm_tx.c deleted file mode 100644 index 8d64908a718a..000000000000 --- a/sys/dev/hatm/if_hatm_tx.c +++ /dev/null @@ -1,827 +0,0 @@ -/*- - * Copyright (c) 2001-2003 - * Fraunhofer Institute for Open Communication Systems (FhG Fokus). - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * Author: Hartmut Brandt <harti@freebsd.org> - * - * ForeHE driver. - * - * Transmission. - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include "opt_inet.h" -#include "opt_natm.h" - -#include <sys/types.h> -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/kernel.h> -#include <sys/malloc.h> -#include <sys/bus.h> -#include <sys/errno.h> -#include <sys/conf.h> -#include <sys/module.h> -#include <sys/queue.h> -#include <sys/syslog.h> -#include <sys/condvar.h> -#include <sys/sysctl.h> -#include <vm/uma.h> - -#include <sys/sockio.h> -#include <sys/mbuf.h> -#include <sys/socket.h> - -#include <net/if.h> -#include <net/if_var.h> -#include <net/if_media.h> -#include <net/if_atm.h> -#include <net/route.h> -#ifdef ENABLE_BPF -#include <net/bpf.h> -#endif -#include <netinet/in.h> -#include <netinet/if_atm.h> - -#include <machine/bus.h> -#include <machine/resource.h> -#include <sys/bus.h> -#include <sys/rman.h> -#include <dev/pci/pcireg.h> -#include <dev/pci/pcivar.h> - -#include <dev/utopia/utopia.h> -#include <dev/hatm/if_hatmconf.h> -#include <dev/hatm/if_hatmreg.h> -#include <dev/hatm/if_hatmvar.h> - - -/* - * These macros are used to trace the flow of transmit mbufs and to - * detect transmit mbuf leaks in the driver. - */ -#ifdef HATM_DEBUG -#define hatm_free_txmbuf(SC) \ - do { \ - if (--sc->txmbuf < 0) \ - DBG(sc, TX, ("txmbuf below 0!")); \ - else if (sc->txmbuf == 0) \ - DBG(sc, TX, ("txmbuf now 0")); \ - } while (0) -#define hatm_get_txmbuf(SC) \ - do { \ - if (++sc->txmbuf > 20000) \ - DBG(sc, TX, ("txmbuf %u", sc->txmbuf)); \ - else if (sc->txmbuf == 1) \ - DBG(sc, TX, ("txmbuf leaves 0")); \ - } while (0) -#else -#define hatm_free_txmbuf(SC) do { } while (0) -#define hatm_get_txmbuf(SC) do { } while (0) -#endif - -/* - * Allocate a new TPD, zero the TPD part. Cannot return NULL if - * flag is 0. The TPD is removed from the free list and its used - * bit is set. - */ -static struct tpd * -hatm_alloc_tpd(struct hatm_softc *sc, u_int flags) -{ - struct tpd *t; - - /* if we allocate a transmit TPD check for the reserve */ - if (flags & M_NOWAIT) { - if (sc->tpd_nfree <= HE_CONFIG_TPD_RESERVE) - return (NULL); - } else { - if (sc->tpd_nfree == 0) - return (NULL); - } - - /* make it being used */ - t = SLIST_FIRST(&sc->tpd_free); - KASSERT(t != NULL, ("tpd botch")); - SLIST_REMOVE_HEAD(&sc->tpd_free, link); - TPD_SET_USED(sc, t->no); - sc->tpd_nfree--; - - /* initialize */ - t->mbuf = NULL; - t->cid = 0; - bzero(&t->tpd, sizeof(t->tpd)); - t->tpd.addr = t->no << HE_REGS_TPD_ADDR; - - return (t); -} - -/* - * Free a TPD. If the mbuf pointer in that TPD is not zero, it is assumed, that - * the DMA map of this TPD was used to load this mbuf. The map is unloaded - * and the mbuf is freed. The TPD is put back onto the free list and - * its used bit is cleared. - */ -static void -hatm_free_tpd(struct hatm_softc *sc, struct tpd *tpd) -{ - if (tpd->mbuf != NULL) { - bus_dmamap_unload(sc->tx_tag, tpd->map); - hatm_free_txmbuf(sc); - m_freem(tpd->mbuf); - tpd->mbuf = NULL; - } - - /* insert TPD into free list */ - SLIST_INSERT_HEAD(&sc->tpd_free, tpd, link); - TPD_CLR_USED(sc, tpd->no); - sc->tpd_nfree++; -} - -/* - * Queue a number of TPD. If there is not enough space none of the TPDs - * is queued and an error code is returned. - */ -static int -hatm_queue_tpds(struct hatm_softc *sc, u_int count, struct tpd **list, - u_int cid) -{ - u_int space; - u_int i; - - if (count >= sc->tpdrq.size) { - sc->istats.tdprq_full++; - return (EBUSY); - } - - if (sc->tpdrq.tail < sc->tpdrq.head) - space = sc->tpdrq.head - sc->tpdrq.tail; - else - space = sc->tpdrq.head - sc->tpdrq.tail + sc->tpdrq.size; - - if (space <= count) { - sc->tpdrq.head = - (READ4(sc, HE_REGO_TPDRQ_H) >> HE_REGS_TPDRQ_H_H) & - (sc->tpdrq.size - 1); - - if (sc->tpdrq.tail < sc->tpdrq.head) - space = sc->tpdrq.head - sc->tpdrq.tail; - else - space = sc->tpdrq.head - sc->tpdrq.tail + - sc->tpdrq.size; - - if (space <= count) { - if_printf(sc->ifp, "TPDRQ full\n"); - sc->istats.tdprq_full++; - return (EBUSY); - } - } - - /* we are going to write to the TPD queue space */ - bus_dmamap_sync(sc->tpdrq.mem.tag, sc->tpdrq.mem.map, - BUS_DMASYNC_PREWRITE); - - /* put the entries into the TPD space */ - for (i = 0; i < count; i++) { - /* we are going to 'write' the TPD to the device */ - bus_dmamap_sync(sc->tpds.tag, sc->tpds.map, - BUS_DMASYNC_PREWRITE); - - sc->tpdrq.tpdrq[sc->tpdrq.tail].tpd = - sc->tpds.paddr + HE_TPD_SIZE * list[i]->no; - sc->tpdrq.tpdrq[sc->tpdrq.tail].cid = cid; - - if (++sc->tpdrq.tail == sc->tpdrq.size) - sc->tpdrq.tail = 0; - } - - /* update tail pointer */ - WRITE4(sc, HE_REGO_TPDRQ_T, (sc->tpdrq.tail << HE_REGS_TPDRQ_T_T)); - - return (0); -} - -/* - * Helper struct for communication with the DMA load helper. - */ -struct load_txbuf_arg { - struct hatm_softc *sc; - struct tpd *first; - struct mbuf *mbuf; - struct hevcc *vcc; - int error; - u_int pti; - u_int vpi, vci; -}; - -/* - * Loader callback for the mbuf. This function allocates the TPDs and - * fills them. It puts the dmamap and and the mbuf pointer into the last - * TPD and then tries to queue all the TPDs. If anything fails, all TPDs - * allocated by this function are freed and the error flag is set in the - * argument structure. The first TPD must then be freed by the caller. - */ -static void -hatm_load_txbuf(void *uarg, bus_dma_segment_t *segs, int nseg, - bus_size_t mapsize, int error) -{ - struct load_txbuf_arg *arg = uarg; - u_int tpds_needed, i, n, tpd_cnt; - int need_intr; - struct tpd *tpd; - struct tpd *tpd_list[HE_CONFIG_MAX_TPD_PER_PACKET]; - - if (error != 0) { - DBG(arg->sc, DMA, ("%s -- error=%d plen=%d\n", - __func__, error, arg->mbuf->m_pkthdr.len)); - return; - } - - /* ensure, we have enough TPDs (remember, we already have one) */ - tpds_needed = (nseg + 2) / 3; - if (HE_CONFIG_TPD_RESERVE + tpds_needed - 1 > arg->sc->tpd_nfree) { - if_printf(arg->sc->ifp, "%s -- out of TPDs (need %d, " - "have %u)\n", __func__, tpds_needed - 1, - arg->sc->tpd_nfree + 1); - arg->error = 1; - return; - } - - /* - * Check for the maximum number of TPDs on the connection. - */ - need_intr = 0; - if (arg->sc->max_tpd > 0) { - if (arg->vcc->ntpds + tpds_needed > arg->sc->max_tpd) { - arg->sc->istats.flow_closed++; - arg->vcc->vflags |= HE_VCC_FLOW_CTRL; - ATMEV_SEND_FLOW_CONTROL(IFP2IFATM(arg->sc->ifp), - arg->vpi, arg->vci, 1); - arg->error = 1; - return; - } - if (arg->vcc->ntpds + tpds_needed > - (9 * arg->sc->max_tpd) / 10) - need_intr = 1; - } - - tpd = arg->first; - tpd_cnt = 0; - tpd_list[tpd_cnt++] = tpd; - for (i = n = 0; i < nseg; i++, n++) { - if (n == 3) { - if ((tpd = hatm_alloc_tpd(arg->sc, M_NOWAIT)) == NULL) - /* may not fail (see check above) */ - panic("%s: out of TPDs", __func__); - tpd->cid = arg->first->cid; - tpd->tpd.addr |= arg->pti; - tpd_list[tpd_cnt++] = tpd; - n = 0; - } - KASSERT(segs[i].ds_addr <= 0xffffffffLU, - ("phys addr too large %lx", (u_long)segs[i].ds_addr)); - - DBG(arg->sc, DMA, ("DMA loaded: %lx/%lu", - (u_long)segs[i].ds_addr, (u_long)segs[i].ds_len)); - - tpd->tpd.bufs[n].addr = segs[i].ds_addr; - tpd->tpd.bufs[n].len = segs[i].ds_len; - - DBG(arg->sc, TX, ("seg[%u]=tpd[%u,%u]=%x/%u", i, - tpd_cnt, n, tpd->tpd.bufs[n].addr, tpd->tpd.bufs[n].len)); - - if (i == nseg - 1) - tpd->tpd.bufs[n].len |= HE_REGM_TPD_LST; - } - - /* - * Swap the MAP in the first and the last TPD and set the mbuf - * pointer into the last TPD. We use the map in the last TPD, because - * the map must stay valid until the last TPD is processed by the card. - */ - if (tpd_cnt > 1) { - bus_dmamap_t tmp; - - tmp = arg->first->map; - arg->first->map = tpd_list[tpd_cnt - 1]->map; - tpd_list[tpd_cnt - 1]->map = tmp; - } - tpd_list[tpd_cnt - 1]->mbuf = arg->mbuf; - - if (need_intr) - tpd_list[tpd_cnt - 1]->tpd.addr |= HE_REGM_TPD_INTR; - - /* queue the TPDs */ - if (hatm_queue_tpds(arg->sc, tpd_cnt, tpd_list, arg->first->cid)) { - /* free all, except the first TPD */ - for (i = 1; i < tpd_cnt; i++) - hatm_free_tpd(arg->sc, tpd_list[i]); - arg->error = 1; - return; - } - arg->vcc->ntpds += tpd_cnt; -} - - -/* - * Start output on the interface - */ -void -hatm_start(struct ifnet *ifp) -{ - struct hatm_softc *sc = ifp->if_softc; - struct mbuf *m; - struct atm_pseudohdr *aph; - u_int cid; - struct tpd *tpd; - struct load_txbuf_arg arg; - u_int len; - int error; - - if (!(ifp->if_drv_flags & IFF_DRV_RUNNING)) - return; - mtx_lock(&sc->mtx); - arg.sc = sc; - - while (1) { - IF_DEQUEUE(&ifp->if_snd, m); - if (m == NULL) - break; - - hatm_get_txmbuf(sc); - - if (m->m_len < sizeof(*aph)) - if ((m = m_pullup(m, sizeof(*aph))) == NULL) { - hatm_free_txmbuf(sc); - continue; - } - - aph = mtod(m, struct atm_pseudohdr *); - arg.vci = ATM_PH_VCI(aph); - arg.vpi = ATM_PH_VPI(aph); - m_adj(m, sizeof(*aph)); - - if ((len = m->m_pkthdr.len) == 0) { - hatm_free_txmbuf(sc); - m_freem(m); - continue; - } - - if ((arg.vpi & ~HE_VPI_MASK) || (arg.vci & ~HE_VCI_MASK) || - (arg.vci == 0)) { - hatm_free_txmbuf(sc); - m_freem(m); - continue; - } - cid = HE_CID(arg.vpi, arg.vci); - arg.vcc = sc->vccs[cid]; - - if (arg.vcc == NULL || !(arg.vcc->vflags & HE_VCC_OPEN)) { - hatm_free_txmbuf(sc); - m_freem(m); - continue; - } - if (arg.vcc->vflags & HE_VCC_FLOW_CTRL) { - hatm_free_txmbuf(sc); - m_freem(m); - sc->istats.flow_drop++; - continue; - } - - arg.pti = 0; - if (arg.vcc->param.aal == ATMIO_AAL_RAW) { - if (len < 52) { - /* too short */ - hatm_free_txmbuf(sc); - m_freem(m); - continue; - } - - /* - * Get the header and ignore except - * payload type and CLP. - */ - if (m->m_len < 4 && (m = m_pullup(m, 4)) == NULL) { - hatm_free_txmbuf(sc); - continue; - } - arg.pti = mtod(m, u_char *)[3] & 0xf; - arg.pti = ((arg.pti & 0xe) << 2) | ((arg.pti & 1) << 1); - m_adj(m, 4); - len -= 4; - - if (len % 48 != 0) { - m_adj(m, -((int)(len % 48))); - len -= len % 48; - } - } - -#ifdef ENABLE_BPF - if (!(arg.vcc->param.flags & ATMIO_FLAG_NG) && - (arg.vcc->param.aal == ATMIO_AAL_5) && - (arg.vcc->param.flags & ATM_PH_LLCSNAP)) - BPF_MTAP(ifp, m); -#endif - - /* Now load a DMA map with the packet. Allocate the first - * TPD to get a map. Additional TPDs may be allocated by the - * callback. */ - if ((tpd = hatm_alloc_tpd(sc, M_NOWAIT)) == NULL) { - hatm_free_txmbuf(sc); - m_freem(m); - if_inc_counter(sc->ifp, IFCOUNTER_OERRORS, 1); - continue; - } - tpd->cid = cid; - tpd->tpd.addr |= arg.pti; - arg.first = tpd; - arg.error = 0; - arg.mbuf = m; - - error = bus_dmamap_load_mbuf(sc->tx_tag, tpd->map, m, - hatm_load_txbuf, &arg, BUS_DMA_NOWAIT); - - if (error == EFBIG) { - /* try to defragment the packet */ - sc->istats.defrag++; - m = m_defrag(m, M_NOWAIT); - if (m == NULL) { - tpd->mbuf = NULL; - hatm_free_txmbuf(sc); - hatm_free_tpd(sc, tpd); - if_inc_counter(sc->ifp, IFCOUNTER_OERRORS, 1); - continue; - } - arg.mbuf = m; - error = bus_dmamap_load_mbuf(sc->tx_tag, tpd->map, m, - hatm_load_txbuf, &arg, BUS_DMA_NOWAIT); - } - - if (error != 0) { - if_printf(sc->ifp, "mbuf loaded error=%d\n", - error); - hatm_free_tpd(sc, tpd); - if_inc_counter(sc->ifp, IFCOUNTER_OERRORS, 1); - continue; - } - if (arg.error) { - hatm_free_tpd(sc, tpd); - if_inc_counter(sc->ifp, IFCOUNTER_OERRORS, 1); - continue; - } - arg.vcc->opackets++; - arg.vcc->obytes += len; - if_inc_counter(sc->ifp, IFCOUNTER_OPACKETS, 1); - } - mtx_unlock(&sc->mtx); -} - -void -hatm_tx_complete(struct hatm_softc *sc, struct tpd *tpd, uint32_t flags) -{ - struct hevcc *vcc = sc->vccs[tpd->cid]; - - DBG(sc, TX, ("tx_complete cid=%#x flags=%#x", tpd->cid, flags)); - - if (vcc == NULL) - return; - if ((flags & HE_REGM_TBRQ_EOS) && (vcc->vflags & HE_VCC_TX_CLOSING)) { - vcc->vflags &= ~HE_VCC_TX_CLOSING; - if (vcc->param.flags & ATMIO_FLAG_ASYNC) { - hatm_tx_vcc_closed(sc, tpd->cid); - if (!(vcc->vflags & HE_VCC_OPEN)) { - hatm_vcc_closed(sc, tpd->cid); - vcc = NULL; - } - } else - cv_signal(&sc->vcc_cv); - } - hatm_free_tpd(sc, tpd); - - if (vcc == NULL) - return; - - vcc->ntpds--; - - if ((vcc->vflags & HE_VCC_FLOW_CTRL) && - vcc->ntpds <= HE_CONFIG_TPD_FLOW_ENB) { - vcc->vflags &= ~HE_VCC_FLOW_CTRL; - ATMEV_SEND_FLOW_CONTROL(IFP2IFATM(sc->ifp), - HE_VPI(tpd->cid), HE_VCI(tpd->cid), 0); - } -} - -/* - * Convert CPS to Rate for a rate group - */ -static u_int -cps_to_rate(struct hatm_softc *sc, uint32_t cps) -{ - u_int clk = sc->he622 ? HE_622_CLOCK : HE_155_CLOCK; - u_int period, rate; - - /* how many double ticks between two cells */ - period = (clk + 2 * cps - 1) / (2 * cps); - rate = hatm_cps2atmf(period); - if (hatm_atmf2cps(rate) < period) - rate++; - - return (rate); -} - -/* - * Check whether the VCC is really closed on the hardware and available for - * open. Check that we have enough resources. If this function returns ok, - * a later actual open must succeed. Assume, that we are locked between this - * function and the next one, so that nothing does change. For CBR this - * assigns the rate group and set the rate group's parameter. - */ -int -hatm_tx_vcc_can_open(struct hatm_softc *sc, u_int cid, struct hevcc *vcc) -{ - uint32_t v, line_rate; - u_int rc, idx, free_idx; - struct atmio_tparam *t = &vcc->param.tparam; - - /* verify that connection is closed */ -#if 0 - v = READ_TSR(sc, cid, 4); - if(!(v & HE_REGM_TSR4_SESS_END)) { - if_printf(sc->ifp, "cid=%#x not closed (TSR4)\n", cid); - return (EBUSY); - } -#endif - v = READ_TSR(sc, cid, 0); - if((v & HE_REGM_TSR0_CONN_STATE) != 0) { - if_printf(sc->ifp, "cid=%#x not closed (TSR0=%#x)\n", - cid, v); - return (EBUSY); - } - - /* check traffic parameters */ - line_rate = sc->he622 ? ATM_RATE_622M : ATM_RATE_155M; - switch (vcc->param.traffic) { - - case ATMIO_TRAFFIC_UBR: - if (t->pcr == 0 || t->pcr > line_rate) - t->pcr = line_rate; - if (t->mcr != 0 || t->icr != 0 || t->tbe != 0 || t->nrm != 0 || - t->trm != 0 || t->adtf != 0 || t->rif != 0 || t->rdf != 0 || - t->cdf != 0) - return (EINVAL); - break; - - case ATMIO_TRAFFIC_CBR: - /* - * Compute rate group index - */ - if (t->pcr < 10) - t->pcr = 10; - if (sc->cbr_bw + t->pcr > line_rate) - return (EINVAL); - if (t->mcr != 0 || t->icr != 0 || t->tbe != 0 || t->nrm != 0 || - t->trm != 0 || t->adtf != 0 || t->rif != 0 || t->rdf != 0 || - t->cdf != 0) - return (EINVAL); - - rc = cps_to_rate(sc, t->pcr); - free_idx = HE_REGN_CS_STPER; - for (idx = 0; idx < HE_REGN_CS_STPER; idx++) { - if (sc->rate_ctrl[idx].refcnt == 0) { - if (free_idx == HE_REGN_CS_STPER) - free_idx = idx; - } else { - if (sc->rate_ctrl[idx].rate == rc) - break; - } - } - if (idx == HE_REGN_CS_STPER) { - if ((idx = free_idx) == HE_REGN_CS_STPER) - return (EBUSY); - sc->rate_ctrl[idx].rate = rc; - } - vcc->rc = idx; - - /* commit */ - sc->rate_ctrl[idx].refcnt++; - sc->cbr_bw += t->pcr; - break; - - case ATMIO_TRAFFIC_ABR: - if (t->pcr > line_rate) - t->pcr = line_rate; - if (t->mcr > line_rate) - t->mcr = line_rate; - if (t->icr > line_rate) - t->icr = line_rate; - if (t->tbe == 0 || t->tbe >= 1 << 24 || t->nrm > 7 || - t->trm > 7 || t->adtf >= 1 << 10 || t->rif > 15 || - t->rdf > 15 || t->cdf > 7) - return (EINVAL); - break; - - default: - return (EINVAL); - } - return (0); -} - -#define NRM_CODE2VAL(CODE) (2 * (1 << (CODE))) - -/* - * Actually open the transmit VCC - */ -void -hatm_tx_vcc_open(struct hatm_softc *sc, u_int cid) -{ - struct hevcc *vcc = sc->vccs[cid]; - uint32_t tsr0, tsr4, atmf, crm; - const struct atmio_tparam *t = &vcc->param.tparam; - - if (vcc->param.aal == ATMIO_AAL_5) { - tsr0 = HE_REGM_TSR0_AAL_5 << HE_REGS_TSR0_AAL; - tsr4 = HE_REGM_TSR4_AAL_5 << HE_REGS_TSR4_AAL; - } else { - tsr0 = HE_REGM_TSR0_AAL_0 << HE_REGS_TSR0_AAL; - tsr4 = HE_REGM_TSR4_AAL_0 << HE_REGS_TSR4_AAL; - } - tsr4 |= 1; - - switch (vcc->param.traffic) { - - case ATMIO_TRAFFIC_UBR: - atmf = hatm_cps2atmf(t->pcr); - - tsr0 |= HE_REGM_TSR0_TRAFFIC_UBR << HE_REGS_TSR0_TRAFFIC; - tsr0 |= HE_REGM_TSR0_USE_WMIN | HE_REGM_TSR0_UPDATE_GER; - - WRITE_TSR(sc, cid, 0, 0xf, tsr0); - WRITE_TSR(sc, cid, 4, 0xf, tsr4); - WRITE_TSR(sc, cid, 1, 0xf, (atmf << HE_REGS_TSR1_PCR)); - WRITE_TSR(sc, cid, 2, 0xf, (atmf << HE_REGS_TSR2_ACR)); - WRITE_TSR(sc, cid, 9, 0xf, HE_REGM_TSR9_INIT); - WRITE_TSR(sc, cid, 3, 0xf, 0); - WRITE_TSR(sc, cid, 5, 0xf, 0); - WRITE_TSR(sc, cid, 6, 0xf, 0); - WRITE_TSR(sc, cid, 7, 0xf, 0); - WRITE_TSR(sc, cid, 8, 0xf, 0); - WRITE_TSR(sc, cid, 10, 0xf, 0); - WRITE_TSR(sc, cid, 11, 0xf, 0); - WRITE_TSR(sc, cid, 12, 0xf, 0); - WRITE_TSR(sc, cid, 13, 0xf, 0); - WRITE_TSR(sc, cid, 14, 0xf, 0); - break; - - case ATMIO_TRAFFIC_CBR: - atmf = hatm_cps2atmf(t->pcr); - - if (sc->rate_ctrl[vcc->rc].refcnt == 1) - WRITE_MBOX4(sc, HE_REGO_CS_STPER(vcc->rc), - sc->rate_ctrl[vcc->rc].rate); - - tsr0 |= HE_REGM_TSR0_TRAFFIC_CBR << HE_REGS_TSR0_TRAFFIC; - tsr0 |= vcc->rc; - - WRITE_TSR(sc, cid, 1, 0xf, (atmf << HE_REGS_TSR1_PCR)); - WRITE_TSR(sc, cid, 2, 0xf, (atmf << HE_REGS_TSR2_ACR)); - WRITE_TSR(sc, cid, 3, 0xf, 0); - WRITE_TSR(sc, cid, 5, 0xf, 0); - WRITE_TSR(sc, cid, 6, 0xf, 0); - WRITE_TSR(sc, cid, 7, 0xf, 0); - WRITE_TSR(sc, cid, 8, 0xf, 0); - WRITE_TSR(sc, cid, 10, 0xf, 0); - WRITE_TSR(sc, cid, 11, 0xf, 0); - WRITE_TSR(sc, cid, 12, 0xf, 0); - WRITE_TSR(sc, cid, 13, 0xf, 0); - WRITE_TSR(sc, cid, 14, 0xf, 0); - WRITE_TSR(sc, cid, 4, 0xf, tsr4); - WRITE_TSR(sc, cid, 9, 0xf, HE_REGM_TSR9_INIT); - WRITE_TSR(sc, cid, 0, 0xf, tsr0); - - break; - - case ATMIO_TRAFFIC_ABR: - if ((crm = t->tbe / NRM_CODE2VAL(t->nrm)) > 0xffff) - crm = 0xffff; - - tsr0 |= HE_REGM_TSR0_TRAFFIC_ABR << HE_REGS_TSR0_TRAFFIC; - tsr0 |= HE_REGM_TSR0_USE_WMIN | HE_REGM_TSR0_UPDATE_GER; - - WRITE_TSR(sc, cid, 0, 0xf, tsr0); - WRITE_TSR(sc, cid, 4, 0xf, tsr4); - - WRITE_TSR(sc, cid, 1, 0xf, - ((hatm_cps2atmf(t->pcr) << HE_REGS_TSR1_PCR) | - (hatm_cps2atmf(t->mcr) << HE_REGS_TSR1_MCR))); - WRITE_TSR(sc, cid, 2, 0xf, - (hatm_cps2atmf(t->icr) << HE_REGS_TSR2_ACR)); - WRITE_TSR(sc, cid, 3, 0xf, - ((NRM_CODE2VAL(t->nrm) - 1) << HE_REGS_TSR3_NRM) | - (crm << HE_REGS_TSR3_CRM)); - - WRITE_TSR(sc, cid, 5, 0xf, 0); - WRITE_TSR(sc, cid, 6, 0xf, 0); - WRITE_TSR(sc, cid, 7, 0xf, 0); - WRITE_TSR(sc, cid, 8, 0xf, 0); - WRITE_TSR(sc, cid, 10, 0xf, 0); - WRITE_TSR(sc, cid, 12, 0xf, 0); - WRITE_TSR(sc, cid, 14, 0xf, 0); - WRITE_TSR(sc, cid, 9, 0xf, HE_REGM_TSR9_INIT); - - WRITE_TSR(sc, cid, 11, 0xf, - (hatm_cps2atmf(t->icr) << HE_REGS_TSR11_ICR) | - (t->trm << HE_REGS_TSR11_TRM) | - (t->nrm << HE_REGS_TSR11_NRM) | - (t->adtf << HE_REGS_TSR11_ADTF)); - - WRITE_TSR(sc, cid, 13, 0xf, - (t->rdf << HE_REGS_TSR13_RDF) | - (t->rif << HE_REGS_TSR13_RIF) | - (t->cdf << HE_REGS_TSR13_CDF) | - (crm << HE_REGS_TSR13_CRM)); - - break; - - default: - return; - } - - vcc->vflags |= HE_VCC_TX_OPEN; -} - -/* - * Close the TX side of a VCC. Set the CLOSING flag. - */ -void -hatm_tx_vcc_close(struct hatm_softc *sc, u_int cid) -{ - struct hevcc *vcc = sc->vccs[cid]; - struct tpd *tpd_list[1]; - u_int i, pcr = 0; - - WRITE_TSR(sc, cid, 4, 0x8, HE_REGM_TSR4_FLUSH); - - switch (vcc->param.traffic) { - - case ATMIO_TRAFFIC_CBR: - WRITE_TSR(sc, cid, 14, 0x8, HE_REGM_TSR14_CBR_DELETE); - break; - - case ATMIO_TRAFFIC_ABR: - WRITE_TSR(sc, cid, 14, 0x4, HE_REGM_TSR14_ABR_CLOSE); - pcr = vcc->param.tparam.pcr; - /* FALL THROUGH */ - - case ATMIO_TRAFFIC_UBR: - WRITE_TSR(sc, cid, 1, 0xf, - hatm_cps2atmf(HE_CONFIG_FLUSH_RATE) << HE_REGS_TSR1_MCR | - hatm_cps2atmf(pcr) << HE_REGS_TSR1_PCR); - break; - } - - tpd_list[0] = hatm_alloc_tpd(sc, 0); - tpd_list[0]->tpd.addr |= HE_REGM_TPD_EOS | HE_REGM_TPD_INTR; - tpd_list[0]->cid = cid; - - vcc->vflags |= HE_VCC_TX_CLOSING; - vcc->vflags &= ~HE_VCC_TX_OPEN; - - i = 0; - while (hatm_queue_tpds(sc, 1, tpd_list, cid) != 0) { - if (++i == 1000) - panic("TPDRQ permanently full"); - DELAY(1000); - } -} - -void -hatm_tx_vcc_closed(struct hatm_softc *sc, u_int cid) -{ - if (sc->vccs[cid]->param.traffic == ATMIO_TRAFFIC_CBR) { - sc->cbr_bw -= sc->vccs[cid]->param.tparam.pcr; - sc->rate_ctrl[sc->vccs[cid]->rc].refcnt--; - } -} diff --git a/sys/dev/hatm/if_hatmconf.h b/sys/dev/hatm/if_hatmconf.h deleted file mode 100644 index 5402697410d7..000000000000 --- a/sys/dev/hatm/if_hatmconf.h +++ /dev/null @@ -1,104 +0,0 @@ -/*- - * Copyright (c) 2001-2003 - * Fraunhofer Institute for Open Communication Systems (FhG Fokus). - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * Author: Hartmut Brandt <harti@freebsd.org> - * - * $FreeBSD$ - * - * Default configuration - */ - -/* configuration */ -#define HE_CONFIG_VPI_BITS 2 -#define HE_CONFIG_VCI_BITS 10 - -/* interrupt group 0 only */ -/* the size must be 1 <= size <= 1023 */ -#define HE_CONFIG_IRQ0_SIZE 256 -#define HE_CONFIG_IRQ0_THRESH 224 /* retrigger interrupt */ -#define HE_CONFIG_IRQ0_LINE HE_REGM_IRQ_A /* routing */ - -/* don't change these */ -#define HE_CONFIG_TXMEM (128 * 1024) /* words */ -#define HE_CONFIG_RXMEM (64 * 1024) /* words */ -#define HE_CONFIG_LCMEM (512 * 1024) /* words */ - -/* group 0 - all AALs except AAL.raw */ -/* receive group 0 buffer pools (mbufs and mbufs+cluster) */ -/* the size must be a power of 2: 4 <= size <= 8192 */ -#define HE_CONFIG_RBPS0_SIZE 2048 /* entries per queue */ -#define HE_CONFIG_RBPS0_THRESH 256 /* interrupt threshold */ -#define HE_CONFIG_RBPL0_SIZE 512 /* entries per queue */ -#define HE_CONFIG_RBPL0_THRESH 32 /* interrupt threshold */ - -/* receive group 0 buffer return queue */ -/* the size must be a power of 2: 1 <= size <= 16384 */ -#define HE_CONFIG_RBRQ0_SIZE 512 /* entries in queue */ -#define HE_CONFIG_RBRQ0_THRESH 256 /* interrupt threshold */ -#define HE_CONFIG_RBRQ0_TOUT 10 /* interrupt timeout */ -#define HE_CONFIG_RBRQ0_PCNT 5 /* packet count threshold */ - -/* group 1 - raw cells */ -/* receive group 1 small buffer pool */ -/* the size must be a power of 2: 4 <= size <= 8192 */ -#define HE_CONFIG_RBPS1_SIZE 1024 /* entries in queue */ -#define HE_CONFIG_RBPS1_THRESH 512 /* interrupt threshold */ - -/* receive group 1 buffer return queue */ -/* the size must be a power of 2: 1 <= size <= 16384 */ -#define HE_CONFIG_RBRQ1_SIZE 512 /* entries in queue */ -#define HE_CONFIG_RBRQ1_THRESH 256 /* interrupt threshold */ -#define HE_CONFIG_RBRQ1_TOUT 100 /* interrupt timeout */ -#define HE_CONFIG_RBRQ1_PCNT 25 /* packet count threshold */ - -/* there is only one TPD queue */ -/* the size must be a power of 2: 1 <= size <= 4096 */ -#define HE_CONFIG_TPDRQ_SIZE 2048 /* entries in queue */ - -/* transmit group 0 */ -/* the size must be a power of 2: 1 <= size <= 16384 */ -#define HE_CONFIG_TBRQ_SIZE 512 /* entries in queue */ -#define HE_CONFIG_TBRQ_THRESH 400 /* interrupt threshold */ - -/* Maximum number of TPDs to allocate to a single VCC. This - * number should depend on the cell rate and the maximum allowed cell delay */ -#define HE_CONFIG_TPD_MAXCC 2048 - -/* Maximum number of external mbuf pages */ -#define HE_CONFIG_MAX_MBUF_PAGES 256 - -/* Maximum number of TPDs used for one packet */ -#define HE_CONFIG_MAX_TPD_PER_PACKET \ - ((((HE_MAX_PDU + MCLBYTES - 1) / MCLBYTES + 2) / 3) + 2) - -/* Number of TPDs to reserve for close operations */ -#define HE_CONFIG_TPD_RESERVE 32 - -/* Number of TPDs per VCC when to re-enable flow control */ -#define HE_CONFIG_TPD_FLOW_ENB 80 - -/* MCR for flushing CBR and ABR connections at close */ -#define HE_CONFIG_FLUSH_RATE 200000 diff --git a/sys/dev/hatm/if_hatmreg.h b/sys/dev/hatm/if_hatmreg.h deleted file mode 100644 index 401499870d01..000000000000 --- a/sys/dev/hatm/if_hatmreg.h +++ /dev/null @@ -1,641 +0,0 @@ -/*- - * Copyright (c) 2001-2003 - * Fraunhofer Institute for Open Communication Systems (FhG Fokus). - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * Author: Hartmut Brandt <harti@freebsd.org> - * - * $FreeBSD$ - * - * Fore HE driver for NATM - */ - -/* check configuration */ -#if HE_CONFIG_VPI_BITS + HE_CONFIG_VCI_BITS > 12 -#error "hatm: too many bits configured for VPI/VCI" -#endif - -#define HE_MAX_VCCS (1 << (HE_CONFIG_VPI_BITS + HE_CONFIG_VCI_BITS)) - -#define HE_VPI_MASK ((1 << (HE_CONFIG_VPI_BITS))-1) -#define HE_VCI_MASK ((1 << (HE_CONFIG_VCI_BITS))-1) - -#define HE_VPI(CID) (((CID) >> HE_CONFIG_VCI_BITS) & HE_VPI_MASK) -#define HE_VCI(CID) ((CID) & HE_VCI_MASK) - -#define HE_CID(VPI,VCI) ((((VPI) & HE_VPI_MASK) << HE_CONFIG_VCI_BITS) | \ - ((VCI) & HE_VCI_MASK)) - - -/* GEN_CNTL_0 register */ -#define HE_PCIR_GEN_CNTL_0 0x40 -#define HE_PCIM_CTL0_64BIT (1 << 0) -#define HE_PCIM_CTL0_IGNORE_TIMEOUT (1 << 1) -#define HE_PCIM_CTL0_INIT_ENB (1 << 2) -#define HE_PCIM_CTL0_MRM (1 << 4) -#define HE_PCIM_CTL0_MRL (1 << 5) -#define HE_PCIM_CTL0_BIGENDIAN (1 << 16) -#define HE_PCIM_CTL0_INT_PROC_ENB (1 << 25) - -/* - * Memory registers - */ -#define HE_REGO_FLASH 0x00000 -#define HE_REGO_RESET_CNTL 0x80000 -#define HE_REGM_RESET_STATE (1 << 6) -#define HE_REGO_HOST_CNTL 0x80004 -#define HE_REGM_HOST_BUS64 (1 << 27) -#define HE_REGM_HOST_DESC_RD64 (1 << 26) -#define HE_REGM_HOST_DATA_RD64 (1 << 25) -#define HE_REGM_HOST_DATA_WR64 (1 << 24) -#define HE_REGM_HOST_PROM_SEL (1 << 12) -#define HE_REGM_HOST_PROM_WREN (1 << 11) -#define HE_REGM_HOST_PROM_DATA_OUT (1 << 10) -#define HE_REGS_HOST_PROM_DATA_OUT 10 -#define HE_REGM_HOST_PROM_DATA_IN (1 << 9) -#define HE_REGS_HOST_PROM_DATA_IN 9 -#define HE_REGM_HOST_PROM_CLOCK (1 << 8) -#define HE_REGM_HOST_PROM_BITS (0x00001f00) -#define HE_REGM_HOST_QUICK_RD (1 << 7) -#define HE_REGM_HOST_QUICK_WR (1 << 6) -#define HE_REGM_HOST_OUTFF_ENB (1 << 5) -#define HE_REGM_HOST_CMDFF_ENB (1 << 4) -#define HE_REGO_LB_SWAP 0x80008 -#define HE_REGM_LBSWAP_RNUM (0xf << 27) -#define HE_REGS_LBSWAP_RNUM 27 -#define HE_REGM_LBSWAP_DATA_WR_SWAP (1 << 20) -#define HE_REGM_LBSWAP_DESC_RD_SWAP (1 << 19) -#define HE_REGM_LBSWAP_DATA_RD_SWAP (1 << 18) -#define HE_REGM_LBSWAP_INTR_SWAP (1 << 17) -#define HE_REGM_LBSWAP_DESC_WR_SWAP (1 << 16) -#define HE_REGM_LBSWAP_BIG_ENDIAN (1 << 14) -#define HE_REGM_LBSWAP_XFER_SIZE (1 << 7) - -#define HE_REGO_LB_MEM_ADDR 0x8000C -#define HE_REGO_LB_MEM_DATA 0x80010 -#define HE_REGO_LB_MEM_ACCESS 0x80014 -#define HE_REGM_LB_MEM_HNDSHK (1 << 30) -#define HE_REGM_LB_MEM_READ 0x3 -#define HE_REGM_LB_MEM_WRITE 0x7 - -#define HE_REGO_SDRAM_CNTL 0x80018 -#define HE_REGM_SDRAM_64BIT (1 << 3) -#define HE_REGO_INT_FIFO 0x8001C -#define HE_REGM_INT_FIFO_CLRA (1 << 8) -#define HE_REGM_INT_FIFO_CLRB (1 << 9) -#define HE_REGM_INT_FIFO_CLRC (1 << 10) -#define HE_REGM_INT_FIFO_CLRD (1 << 11) -#define HE_REGO_ABORT_ADDR 0x80020 - -#define HE_REGO_IRQ0_BASE 0x80080 -#define HE_REGO_IRQ_BASE(Q) (HE_REGO_IRQ0_BASE + (Q) * 0x10 + 0x00) -#define HE_REGM_IRQ_BASE_TAIL 0x3ff -#define HE_REGO_IRQ_HEAD(Q) (HE_REGO_IRQ0_BASE + (Q) * 0x10 + 0x04) -#define HE_REGS_IRQ_HEAD_SIZE 22 -#define HE_REGS_IRQ_HEAD_THRESH 12 -#define HE_REGS_IRQ_HEAD_HEAD 2 -#define HE_REGO_IRQ_CNTL(Q) (HE_REGO_IRQ0_BASE + (Q) * 0x10 + 0x08) -#define HE_REGM_IRQ_A (0 << 2) -#define HE_REGM_IRQ_B (1 << 2) -#define HE_REGM_IRQ_C (2 << 2) -#define HE_REGM_IRQ_D (3 << 2) -#define HE_REGO_IRQ_DATA(Q) (HE_REGO_IRQ0_BASE + (Q) * 0x10 + 0x0C) - -#define HE_REGO_GRP_1_0_MAP 0x800C0 -#define HE_REGO_GRP_3_2_MAP 0x800C4 -#define HE_REGO_GRP_5_4_MAP 0x800C8 -#define HE_REGO_GRP_7_6_MAP 0x800CC - -/* - * Receive buffer pools - */ -#define HE_REGO_G0_RBPS_S 0x80400 -#define HE_REGO_G0_RBPS_T 0x80404 -#define HE_REGO_G0_RBPS_QI 0x80408 -#define HE_REGO_G0_RBPS_BL 0x8040C - -#define HE_REGO_RBP_S(K,G) (HE_REGO_G0_RBPS_S + (K) * 0x10 + (G) * 0x20) -#define HE_REGO_RBP_T(K,G) (HE_REGO_G0_RBPS_T + (K) * 0x10 + (G) * 0x20) -#define HE_REGO_RBP_QI(K,G) (HE_REGO_G0_RBPS_QI + (K) * 0x10 + (G) * 0x20) -#define HE_REGO_RBP_BL(K,G) (HE_REGO_G0_RBPS_BL + (K) * 0x10 + (G) * 0x20) - -#define HE_REGS_RBP_HEAD 3 -#define HE_REGS_RBP_TAIL 3 -#define HE_REGS_RBP_SIZE 14 -#define HE_REGM_RBP_INTR_ENB (1 << 13) -#define HE_REGS_RBP_THRESH 0 - -/* - * Receive buffer return queues - */ -#define HE_REGO_G0_RBRQ_ST 0x80500 -#define HE_REGO_G0_RBRQ_H 0x80504 -#define HE_REGO_G0_RBRQ_Q 0x80508 -#define HE_REGO_G0_RBRQ_I 0x8050C - -#define HE_REGO_RBRQ_ST(G) (HE_REGO_G0_RBRQ_ST + (G) * 0x10) -#define HE_REGO_RBRQ_H(G) (HE_REGO_G0_RBRQ_H + (G) * 0x10) -#define HE_REGO_RBRQ_Q(G) (HE_REGO_G0_RBRQ_Q + (G) * 0x10) -#define HE_REGO_RBRQ_I(G) (HE_REGO_G0_RBRQ_I + (G) * 0x10) - -#define HE_REGS_RBRQ_HEAD 3 -#define HE_REGS_RBRQ_THRESH 13 -#define HE_REGS_RBRQ_SIZE 0 -#define HE_REGS_RBRQ_TIME 8 -#define HE_REGS_RBRQ_COUNT 0 - -/* - * Intermediate queues - */ -#define HE_REGO_G0_INMQ_S 0x80580 -#define HE_REGO_G0_INMQ_L 0x80584 -#define HE_REGO_INMQ_S(G) (HE_REGO_G0_INMQ_S + (G) * 8) -#define HE_REGO_INMQ_L(G) (HE_REGO_G0_INMQ_L + (G) * 8) - -#define HE_REGO_RHCONFIG 0x805C0 -#define HE_REGM_RHCONFIG_PHYENB (1 << 10) -#define HE_REGS_RHCONFIG_OAM_GID 7 -#define HE_REGS_RHCONFIG_PTMR_PRE 0 - -/* - * Transmit buffer return queues - */ -#define HE_REGO_TBRQ0_B_T 0x80600 -#define HE_REGO_TBRQ0_H 0x80604 -#define HE_REGO_TBRQ0_S 0x80608 -#define HE_REGO_TBRQ0_THRESH 0x8060C - -#define HE_REGO_TBRQ_B_T(G) (HE_REGO_TBRQ0_B_T + (G) * 0x10) -#define HE_REGO_TBRQ_H(G) (HE_REGO_TBRQ0_H + (G) * 0x10) -#define HE_REGO_TBRQ_S(G) (HE_REGO_TBRQ0_S + (G) * 0x10) -#define HE_REGO_TBRQ_THRESH(G) (HE_REGO_TBRQ0_THRESH + (G) * 0x10) - -#define HE_REGS_TBRQ_HEAD 2 - -/* - * Transmit packet descriptor ready queue - */ -#define HE_REGO_TPDRQ_H 0x80680 -#define HE_REGS_TPDRQ_H_H 3 -/* #define HE_REGM_TPDRQ_H_H ((HE_CONFIG_TPDRQ_SIZE - 1) << 3) */ -#define HE_REGO_TPDRQ_T 0x80684 -#define HE_REGS_TPDRQ_T_T 3 -/* #define HE_REGM_TPDRQ_T_T ((HE_CONFIG_TPDRQ_SIZE - 1) << 3) */ -#define HE_REGO_TPDRQ_S 0x80688 - -#define HE_REGO_UBUFF_BA 0x8068C - -#define HE_REGO_RLBF0_H 0x806C0 -#define HE_REGO_RLBF0_T 0x806C4 -#define HE_REGO_RLBF1_H 0x806C8 -#define HE_REGO_RLBF1_T 0x806CC -#define HE_REGO_RLBF_H(N) (HE_REGO_RLBF0_H + (N) * 8) -#define HE_REGO_RLBF_T(N) (HE_REGO_RLBF0_T + (N) * 8) - -#define HE_REGO_RLBC_H 0x806D0 -#define HE_REGO_RLBC_T 0x806D4 -#define HE_REGO_RLBC_H2 0x806D8 -#define HE_REGO_TLBF_H 0x806E0 -#define HE_REGO_TLBF_T 0x806E4 - -#define HE_REGO_RLBF0_C 0x806E8 -#define HE_REGO_RLBF1_C 0x806EC -#define HE_REGO_RLBF_C(N) (HE_REGO_RLBF0_C + (N) * 4) - -#define HE_REGO_RXTHRSH 0x806F0 -#define HE_REGO_LITHRSH 0x806F4 - -#define HE_REGO_LBARB 0x80700 -#define HE_REGS_LBARB_SLICE 28 -#define HE_REGS_LBARB_RNUM 23 -#define HE_REGS_LBARB_THPRI 21 -#define HE_REGS_LBARB_RHPRI 19 -#define HE_REGS_LBARB_TLPRI 17 -#define HE_REGS_LBARB_RLPRI 15 -#define HE_REGS_LBARB_BUS_MULT 8 -#define HE_REGS_LBARB_NET_PREF 0 - -#define HE_REGO_SDRAMCON 0x80704 -#define HE_REGM_SDRAMCON_BANK (1 << 14) -#define HE_REGM_SDRAMCON_WIDE (1 << 13) -#define HE_REGM_SDRAMCON_TWRWAIT (1 << 12) -#define HE_REGM_SDRAMCON_TRPWAIT (1 << 11) -#define HE_REGM_SDRAMCON_TRASWAIT (1 << 10) -#define HE_REGS_SDRAMCON_REF 0 - -#define HE_REGO_RCCSTAT 0x8070C -#define HE_REGM_RCCSTAT_PROG (1 << 0) - -#define HE_REGO_TCMCONFIG 0x80740 -#define HE_REGS_TCMCONFIG_BANK_WAIT 6 -#define HE_REGS_TCMCONFIG_RW_WAIT 2 -#define HE_REGS_TCMCONFIG_TYPE 0 - -#define HE_REGO_TSRB_BA 0x80744 -#define HE_REGO_TSRC_BA 0x80748 -#define HE_REGO_TMABR_BA 0x8074C -#define HE_REGO_TPD_BA 0x80750 -#define HE_REGO_TSRD_BA 0x80758 - -#define HE_REGO_TXCONFIG 0x80760 -#define HE_REGS_TXCONFIG_THRESH 22 -#define HE_REGM_TXCONFIG_UTMODE (1 << 21) -#define HE_REGS_TXCONFIG_VCI_MASK 17 -#define HE_REGS_TXCONFIG_LBFREE 0 - -#define HE_REGO_TXAAL5_PROTO 0x80764 - -#define HE_REGO_RCMCONFIG 0x80780 -#define HE_REGS_RCMCONFIG_BANK_WAIT 6 -#define HE_REGS_RCMCONFIG_RW_WAIT 2 -#define HE_REGS_RCMCONFIG_TYPE 0 - -#define HE_REGO_RCMRSRB_BA 0x80784 -#define HE_REGO_RCMLBM_BA 0x80788 -#define HE_REGO_RCMABR_BA 0x8078C - -#define HE_REGO_RCCONFIG 0x807C0 -#define HE_REGS_RCCONFIG_UTDELAY 11 -#define HE_REGM_RCCONFIG_WRAP_MODE (1 << 10) -#define HE_REGM_RCCONFIG_UT_MODE (1 << 9) -#define HE_REGM_RCCONFIG_RXENB (1 << 8) -#define HE_REGS_RCCONFIG_VP 4 -#define HE_REGS_RCCONFIG_VC 0 - -#define HE_REGO_MCC 0x807C4 -#define HE_REGO_OEC 0x807C8 -#define HE_REGO_DCC 0x807CC -#define HE_REGO_CEC 0x807D0 - -#define HE_REGO_HSP_BA 0x807F0 - -#define HE_REGO_LBCONFIG 0x807F4 - -#define HE_REGO_CON_DAT 0x807F8 -#define HE_REGO_CON_CTL 0x807FC -#define HE_REGM_CON_MBOX (2U << 30) -#define HE_REGM_CON_TCM (1 << 30) -#define HE_REGM_CON_RCM (0 << 30) -#define HE_REGM_CON_WE (1 << 29) -#define HE_REGM_CON_STATUS (1 << 28) -#define HE_REGM_CON_DIS3 (1 << 22) -#define HE_REGM_CON_DIS2 (1 << 21) -#define HE_REGM_CON_DIS1 (1 << 20) -#define HE_REGM_CON_DIS0 (1 << 19) -#define HE_REGS_CON_DIS 19 -#define HE_REGS_CON_ADDR 0 - -#define HE_REGO_SUNI 0x80800 -#define HE_REGO_SUNI_END 0x80C00 - -#define HE_REGO_END 0x100000 - -/* - * MBOX registers - */ -#define HE_REGO_CS_STPER0 0x000 -#define HE_REGO_CS_STPER(G) (HE_REGO_CS_STPER0 + (G)) -#define HE_REGN_CS_STPER 32 -#define HE_REGO_CS_STTIM0 0x020 -#define HE_REGO_CS_STTIM(G) (HE_REGO_CS_STTIM0 + (G)) -#define HE_REGO_CS_TGRLD0 0x040 -#define HE_REGO_CS_TGRLD(G) (HE_REGO_CS_TGRLD0 + (G)) -#define HE_REGO_CS_ERTHR0 0x50 -#define HE_REGO_CS_ERTHR1 0x51 -#define HE_REGO_CS_ERTHR2 0x52 -#define HE_REGO_CS_ERTHR3 0x53 -#define HE_REGO_CS_ERTHR4 0x54 -#define HE_REGO_CS_ERCTL0 0x55 -#define HE_REGO_CS_ERCTL1 0x56 -#define HE_REGO_CS_ERCTL2 0x57 -#define HE_REGO_CS_ERSTAT0 0x58 -#define HE_REGO_CS_ERSTAT1 0x59 -#define HE_REGO_CS_RTCCT 0x60 -#define HE_REGO_CS_RTFWC 0x61 -#define HE_REGO_CS_RTFWR 0x62 -#define HE_REGO_CS_RTFTC 0x63 -#define HE_REGO_CS_RTATR 0x64 -#define HE_REGO_CS_TFBSET 0x70 -#define HE_REGO_CS_TFBADD 0x71 -#define HE_REGO_CS_TFBSUB 0x72 -#define HE_REGO_CS_WCRMAX 0x73 -#define HE_REGO_CS_WCRMIN 0x74 -#define HE_REGO_CS_WCRINC 0x75 -#define HE_REGO_CS_WCRDEC 0x76 -#define HE_REGO_CS_WCRCEIL 0x77 -#define HE_REGO_CS_BWDCNT 0x78 -#define HE_REGO_CS_OTPPER 0x80 -#define HE_REGO_CS_OTWPER 0x81 -#define HE_REGO_CS_OTTLIM 0x82 -#define HE_REGO_CS_OTTCNT 0x83 -#define HE_REGO_CS_HGRRT0 0x90 -#define HE_REGO_CS_HGRRT(G) (HE_REGO_CS_HGRRT0 + (G)) -#define HE_REGO_CS_ORPTRS 0xA0 -#define HE_REGO_RCON_CLOSE 0x100 -#define HE_REGO_CS_END 0x101 - -#define HE_REGT_CS_ERTHR { \ - { /* 155 */ \ - { 0x000800ea, 0x000400ea, 0x000200ea }, /* ERTHR0 */ \ - { 0x000C3388, 0x00063388, 0x00033388 }, /* ERTHR1 */ \ - { 0x00101018, 0x00081018, 0x00041018 }, /* ERTHR2 */ \ - { 0x00181dac, 0x000c1dac, 0x00061dac }, /* ERTHR3 */ \ - { 0x0028051a, 0x0014051a, 0x000a051a }, /* ERTHR4 */ \ - }, { /* 622 */ \ - { 0x000800fa, 0x000400fa, 0x000200fa }, /* ERTHR0 */ \ - { 0x000c33cb, 0x000633cb, 0x000333cb }, /* ERTHR1 */ \ - { 0x0010101b, 0x0008101b, 0x0004101b }, /* ERTHR2 */ \ - { 0x00181dac, 0x000c1dac, 0x00061dac }, /* ERTHR3 */ \ - { 0x00280600, 0x00140600, 0x000a0600 }, /* ERTHR4 */ \ - } \ -} - -#define HE_REGT_CS_ERCTL { \ - { 0x0235e4b1, 0x4701, 0x64b1 }, /* 155 */ \ - { 0x023de8b3, 0x1801, 0x68b3 } /* 622 */ \ -} - -#define HE_REGT_CS_ERSTAT { \ - { 0x1280, 0x64b1 }, /* 155 */ \ - { 0x1280, 0x68b3 }, /* 622 */ \ -} - -#define HE_REGT_CS_RTFWR { \ - 0xf424, /* 155 */ \ - 0x14585 /* 622 */ \ -} - -#define HE_REGT_CS_RTATR { \ - 0x4680, /* 155 */ \ - 0x4680 /* 622 */ \ -} - -#define HE_REGT_CS_BWALLOC { \ - { 0x000563b7, 0x64b1, 0x5ab1, 0xe4b1, 0xdab1, 0x64b1 }, /* 155 */\ - { 0x00159ece, 0x68b3, 0x5eb3, 0xe8b3, 0xdeb3, 0x68b3 }, /* 622 */\ -} - -#define HE_REGT_CS_ORCF { \ - { 0x6, 0x1e }, /* 155 */ \ - { 0x5, 0x14 } /* 622 */ \ -} - -/* - * TSRs - NR is relative to the starting number of the block - */ -#define HE_REGO_TSRA(BASE,CID,NR) ((BASE) + ((CID) << 3) + (NR)) -#define HE_REGO_TSRB(BASE,CID,NR) ((BASE) + ((CID) << 2) + (NR)) -#define HE_REGO_TSRC(BASE,CID,NR) ((BASE) + ((CID) << 1) + (NR)) -#define HE_REGO_TSRD(BASE,CID) ((BASE) + (CID)) - -#define HE_REGM_TSR0_CONN_STATE (7 << 28) -#define HE_REGS_TSR0_CONN_STATE 28 -#define HE_REGM_TSR0_USE_WMIN (1 << 23) -#define HE_REGM_TSR0_GROUP (7 << 18) -#define HE_REGS_TSR0_GROUP 18 -#define HE_REGM_TSR0_TRAFFIC (3 << 16) -#define HE_REGS_TSR0_TRAFFIC 16 -#define HE_REGM_TSR0_TRAFFIC_CBR 0 -#define HE_REGM_TSR0_TRAFFIC_UBR 1 -#define HE_REGM_TSR0_TRAFFIC_ABR 2 -#define HE_REGM_TSR0_PROT (1 << 15) -#define HE_REGM_TSR0_AAL (3 << 12) -#define HE_REGS_TSR0_AAL 12 -#define HE_REGM_TSR0_AAL_5 0 -#define HE_REGM_TSR0_AAL_0 1 -#define HE_REGM_TSR0_AAL_0T 2 -#define HE_REGM_TSR0_HALT_ER (1 << 11) -#define HE_REGM_TSR0_MARK_CI (1 << 10) -#define HE_REGM_TSR0_MARK_ER (1 << 9) -#define HE_REGM_TSR0_UPDATE_GER (1 << 8) -#define HE_REGM_TSR0_RC 0xff - -#define HE_REGM_TSR1_PCR (0x7fff << 16) -#define HE_REGS_TSR1_PCR 16 -#define HE_REGM_TSR1_MCR (0x7fff << 0) -#define HE_REGS_TSR1_MCR 0 - -#define HE_REGM_TSR2_ACR (0x7fff << 16) -#define HE_REGS_TSR2_ACR 16 - -#define HE_REGM_TSR3_NRM (0xff << 24) -#define HE_REGS_TSR3_NRM 24 -#define HE_REGM_TSR3_CRM (0xff << 0) -#define HE_REGS_TSR3_CRM 0 - -#define HE_REGM_TSR4_FLUSH (1U << 31) -#define HE_REGM_TSR4_SESS_END (1 << 30) -#define HE_REGM_TSR4_OAM_CRC10 (1 << 28) -#define HE_REGM_TSR4_NULL_CRC10 (1 << 27) -#define HE_REGM_TSR4_PROT (1 << 26) -#define HE_REGM_TSR4_AAL (3 << 24) -#define HE_REGS_TSR4_AAL 24 -#define HE_REGM_TSR4_AAL_5 0 -#define HE_REGM_TSR4_AAL_0 1 -#define HE_REGM_TSR4_AAL_0T 2 - -#define HE_REGM_TSR9_INIT 0x00100000 - -#define HE_REGM_TSR11_ICR (0x7fff << 16) -#define HE_REGS_TSR11_ICR 16 -#define HE_REGM_TSR11_TRM (0x7 << 13) -#define HE_REGS_TSR11_TRM 13 -#define HE_REGM_TSR11_NRM (0x7 << 10) -#define HE_REGS_TSR11_NRM 10 -#define HE_REGM_TSR11_ADTF 0x3ff -#define HE_REGS_TSR11_ADTF 0 - -#define HE_REGM_TSR13_RDF (0xf << 23) -#define HE_REGS_TSR13_RDF 23 -#define HE_REGM_TSR13_RIF (0xf << 19) -#define HE_REGS_TSR13_RIF 19 -#define HE_REGM_TSR13_CDF (0x7 << 16) -#define HE_REGS_TSR13_CDF 16 -#define HE_REGM_TSR13_CRM 0xffff -#define HE_REGS_TSR13_CRM 0 - -#define HE_REGM_TSR14_CBR_DELETE (1U << 31) -#define HE_REGM_TSR14_ABR_CLOSE (1 << 16) - -/* - * RSRs - */ -#define HE_REGO_RSRA(BASE,CID,NR) ((BASE) + ((CID) << 3) + (NR)) -#define HE_REGO_RSRB(BASE,CID,NR) ((BASE) + ((CID) << 1) + (NR)) - -#define HE_REGM_RSR0_PTI7 (1 << 15) -#define HE_REGM_RSR0_RM (1 << 14) -#define HE_REGM_RSR0_F5OAM (1 << 13) -#define HE_REGM_RSR0_STARTPDU (1 << 10) -#define HE_REGM_RSR0_OPEN (1 << 6) -#define HE_REGM_RSR0_PPD (1 << 5) -#define HE_REGM_RSR0_EPD (1 << 4) -#define HE_REGM_RSR0_TCPCS (1 << 3) -#define HE_REGM_RSR0_AAL 0x7 -#define HE_REGM_RSR0_AAL_5 0x0 -#define HE_REGM_RSR0_AAL_0 0x1 -#define HE_REGM_RSR0_AAL_0T 0x2 -#define HE_REGM_RSR0_AAL_RAW 0x3 -#define HE_REGM_RSR0_AAL_RAWCRC10 0x4 - -#define HE_REGM_RSR1_AQI (1 << 20) -#define HE_REGM_RSR1_RBPL_ONLY (1 << 19) -#define HE_REGM_RSR1_GROUP (7 << 16) -#define HE_REGS_RSR1_GROUP 16 - -#define HE_REGM_RSR4_AQI (1 << 30) -#define HE_REGM_RSR4_GROUP (7 << 27) -#define HE_REGS_RSR4_GROUP 27 -#define HE_REGM_RSR4_RBPL_ONLY (1 << 26) - -/* - * Relative to RCMABR_BA - */ -#define HE_REGO_CM_GQTBL 0x000 -#define HE_REGL_CM_GQTBL 0x100 -#define HE_REGO_CM_RGTBL 0x100 -#define HE_REGL_CM_RGTBL 0x100 -#define HE_REGO_CM_TNRMTBL 0x200 -#define HE_REGL_CM_TNRMTBL 0x100 -#define HE_REGO_CM_ORCF 0x300 -#define HE_REGL_CM_ORCF 0x100 -#define HE_REGO_CM_RTGTBL 0x400 -#define HE_REGL_CM_RTGTBL 0x200 -#define HE_REGO_CM_IRCF 0x600 -#define HE_REGL_CM_IRCF 0x200 - -/* - * Interrupt Status - */ -#define HE_REGM_ITYPE 0xf8 -#define HE_REGM_IGROUP 0x07 -#define HE_REGM_ITYPE_TBRQ (0x0 << 3) -#define HE_REGM_ITYPE_TPD (0x1 << 3) -#define HE_REGM_ITYPE_RBPS (0x2 << 3) -#define HE_REGM_ITYPE_RBPL (0x3 << 3) -#define HE_REGM_ITYPE_RBRQ (0x4 << 3) -#define HE_REGM_ITYPE_RBRQT (0x5 << 3) -#define HE_REGM_ITYPE_PHYS (0x6 << 3) -#define HE_REGM_ITYPE_UNKNOWN 0xf8 -#define HE_REGM_ITYPE_ERR 0x80 -#define HE_REGM_ITYPE_PERR 0x81 -#define HE_REGM_ITYPE_ABORT 0x82 -#define HE_REGM_ITYPE_INVALID 0xf8 - -/* - * Serial EEPROM - */ -#define HE_EEPROM_PROD_ID 0x08 -#define HE_EEPROM_PROD_ID_LEN 30 -#define HE_EEPROM_REV 0x26 -#define HE_EEPROM_REV_LEN 4 -#define HE_EEPROM_M_SN 0x3A -#define HE_EEPROM_MEDIA 0x3E -#define HE_EEPROM_MAC 0x42 - -#define HE_MEDIA_UTP155 0x06 -#define HE_MEDIA_MMF155 0x26 -#define HE_MEDIA_MMF622 0x27 -#define HE_MEDIA_SMF155 0x46 -#define HE_MEDIA_SMF622 0x47 - -#define HE_622_CLOCK 66667000 -#define HE_155_CLOCK 50000000 - -/* - * Statistics - */ -struct fatm_statshe { -}; - -/* - * Queue entries - */ -/* Receive Buffer Pool Queue entry */ -struct he_rbpen { - uint32_t phys; /* physical address */ - uint32_t handle; /* handle or virtual address */ -}; -/* Receive Buffer Return Queue entry */ -struct he_rbrqen { - uint32_t addr; /* handle and flags */ - uint32_t len; /* length and CID */ -}; -#define HE_REGM_RBRQ_ADDR 0xFFFFFFC0 -#define HE_REGS_RBRQ_ADDR 6 -#define HE_REGM_RBRQ_FLAGS 0x0000003F -#define HE_REGM_RBRQ_HBUF_ERROR (1 << 0) -#define HE_REGM_RBRQ_CON_CLOSED (1 << 1) -#define HE_REGM_RBRQ_AAL5_PROT (1 << 2) -#define HE_REGM_RBRQ_END_PDU (1 << 3) -#define HE_REGM_RBRQ_LEN_ERROR (1 << 4) -#define HE_REGM_RBRQ_CRC_ERROR (1 << 5) -#define HE_REGM_RBRQ_CID (0x1fff << 16) -#define HE_REGS_RBRQ_CID 16 -#define HE_REGM_RBRQ_LEN 0xffff - -/* Transmit Packet Descriptor Ready Queue entry */ -struct he_tpdrqen { - uint32_t tpd; /* physical address */ - uint32_t cid; /* connection id */ -}; -/* Transmit buffer return queue */ -struct he_tbrqen { - uint32_t addr; /* handle and flags */ -}; -#define HE_REGM_TBRQ_ADDR 0xffffffc0 -#define HE_REGM_TBRQ_FLAGS 0x0000000a -#define HE_REGM_TBRQ_EOS 0x00000008 -#define HE_REGM_TBRQ_MULT 0x00000002 - -struct he_tpd { - uint32_t addr; /* handle or virtual address and flags */ - uint32_t res; /* reserved */ - struct { - uint32_t addr; /* buffer address */ - uint32_t len; /* buffer length and flags */ - } bufs[3]; -}; -#define HE_REGM_TPD_ADDR 0xffffffC0 -#define HE_REGS_TPD_ADDR 6 -#define HE_REGM_TPD_INTR 0x0001 -#define HE_REGM_TPD_CLP 0x0002 -#define HE_REGM_TPD_EOS 0x0004 -#define HE_REGM_TPD_PTI 0x0038 -#define HE_REGS_TPD_PTI 3 -#define HE_REGM_TPD_LST 0x80000000 - -/* - * The HOST STATUS PAGE - */ -struct he_hsp { - struct { - uint32_t tbrq_tail; - uint32_t res1[15]; - uint32_t rbrq_tail; - uint32_t res2[15]; - } group[8]; -}; - -#define HE_MAX_PDU (65535) diff --git a/sys/dev/hatm/if_hatmvar.h b/sys/dev/hatm/if_hatmvar.h deleted file mode 100644 index d19fd0eabd74..000000000000 --- a/sys/dev/hatm/if_hatmvar.h +++ /dev/null @@ -1,640 +0,0 @@ -/*- - * Copyright (c) 2001-2003 - * Fraunhofer Institute for Open Communication Systems (FhG Fokus). - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * Author: Hartmut Brandt <harti@freebsd.org> - * - * $FreeBSD$ - * - * Fore HE driver for NATM - */ - -/* - * Debug statistics of the HE driver - */ -struct istats { - uint32_t tdprq_full; - uint32_t hbuf_error; - uint32_t crc_error; - uint32_t len_error; - uint32_t flow_closed; - uint32_t flow_drop; - uint32_t tpd_no_mem; - uint32_t rx_seg; - uint32_t empty_hbuf; - uint32_t short_aal5; - uint32_t badlen_aal5; - uint32_t bug_bad_isw; - uint32_t bug_no_irq_upd; - uint32_t itype_tbrq; - uint32_t itype_tpd; - uint32_t itype_rbps; - uint32_t itype_rbpl; - uint32_t itype_rbrq; - uint32_t itype_rbrqt; - uint32_t itype_unknown; - uint32_t itype_phys; - uint32_t itype_err; - uint32_t defrag; - uint32_t mcc; - uint32_t oec; - uint32_t dcc; - uint32_t cec; - uint32_t no_rcv_mbuf; -}; - -/* Card memory layout parameters */ -#define HE_CONFIG_MEM_LAYOUT { \ - { /* 155 */ \ - 20, /* cells_per_row */ \ - 1024, /* bytes_per_row */ \ - 512, /* r0_numrows */ \ - 1018, /* tx_numrows */ \ - 512, /* r1_numrows */ \ - 6, /* r0_startrow */ \ - 2 /* cells_per_lbuf */ \ - }, { /* 622 */ \ - 40, /* cells_per_row */ \ - 2048, /* bytes_per_row */ \ - 256, /* r0_numrows */ \ - 512, /* tx_numrows */ \ - 256, /* r1_numrows */ \ - 0, /* r0_startrow */ \ - 4 /* cells_per_lbuf */ \ - } \ -} - -/*********************************************************************/ -struct hatm_softc; - -/* - * A chunk of DMA-able memory - */ -struct dmamem { - u_int size; /* in bytes */ - u_int align; /* alignement */ - bus_dma_tag_t tag; /* DMA tag */ - void *base; /* the memory */ - bus_addr_t paddr; /* physical address */ - bus_dmamap_t map; /* the MAP */ -}; - -/* - * RBP (Receive Buffer Pool) queue entry and queue. - */ -struct herbp { - u_int size; /* RBP number of entries (power of two) */ - u_int thresh; /* interrupt treshold */ - uint32_t bsize; /* buffer size in bytes */ - u_int offset; /* free space at start for small bufs */ - uint32_t mask; /* mask for index */ - struct dmamem mem; /* the queue area */ - struct he_rbpen *rbp; - uint32_t head, tail; /* head and tail */ -}; - -/* - * RBRQ (Receive Buffer Return Queue) entry and queue. - */ -struct herbrq { - u_int size; /* number of entries */ - u_int thresh; /* interrupt threshold */ - u_int tout; /* timeout value */ - u_int pcnt; /* packet count threshold */ - struct dmamem mem; /* memory */ - struct he_rbrqen *rbrq; - uint32_t head; /* driver end */ -}; - -/* - * TPDRQ (Transmit Packet Descriptor Ready Queue) entry and queue - */ -struct hetpdrq { - u_int size; /* number of entries */ - struct dmamem mem; /* memory */ - struct he_tpdrqen *tpdrq; - u_int head; /* head (copy of adapter) */ - u_int tail; /* written back to adapter */ -}; - -/* - * TBRQ (Transmit Buffer Return Queue) entry and queue - */ -struct hetbrq { - u_int size; /* number of entries */ - u_int thresh; /* interrupt threshold */ - struct dmamem mem; /* memory */ - struct he_tbrqen *tbrq; - u_int head; /* adapter end */ -}; - -/*==================================================================*/ - -/* - * TPDs are 32 byte and must be aligned on 64 byte boundaries. That means, - * that half of the space is free. We use this space to plug in a link for - * the list of free TPDs. Note, that the m_act member of the mbufs contain - * a pointer to the dmamap. - * - * The maximum number of TDPs is the size of the common transmit packet - * descriptor ready queue plus the sizes of the transmit buffer return queues - * (currently only queue 0). We allocate and map these TPD when initializing - * the card. We also allocate on DMA map for each TPD. Only the map in the - * last TPD of a packets is used when a packet is transmitted. - * This is signalled by having the mbuf member of this TPD non-zero and - * pointing to the mbuf. - */ -#define HE_TPD_SIZE 64 -struct tpd { - struct he_tpd tpd; /* at beginning */ - SLIST_ENTRY(tpd) link; /* free cid list link */ - struct mbuf *mbuf; /* the buf chain */ - bus_dmamap_t map; /* map */ - uint32_t cid; /* CID */ - uint16_t no; /* number of this tpd */ -}; -SLIST_HEAD(tpd_list, tpd); - -#define TPD_SET_USED(SC, I) do { \ - (SC)->tpd_used[(I) / 8] |= (1 << ((I) % 8)); \ - } while (0) - -#define TPD_CLR_USED(SC, I) do { \ - (SC)->tpd_used[(I) / 8] &= ~(1 << ((I) % 8)); \ - } while (0) - -#define TPD_TST_USED(SC, I) ((SC)->tpd_used[(I) / 8] & (1 << ((I) % 8))) - -#define TPD_ADDR(SC, I) ((struct tpd *)((char *)sc->tpds.base + \ - (I) * HE_TPD_SIZE)) - -/*==================================================================*/ - -/* - * External MBUFs. The card needs a lot of mbufs in the pools for high - * performance. The problem with using mbufs directly is that we would need - * a dmamap for each of the mbufs. This can exhaust iommu space on the sparc - * and it eats also a lot of processing time. So we use external mbufs - * for the small buffers and clusters for the large buffers. - * For receive group 0 we use 5 ATM cells, for group 1 one (52 byte) ATM - * cell. The mbuf storage is allocated pagewise and one dmamap is used per - * page. - * - * The handle we give to the card for the small buffers is a word combined - * of the page number and the number of the chunk in the page. This restricts - * the number of chunks per page to 256 (8 bit) and the number of pages to - * 65536 (16 bits). - * - * A chunk may be in one of three states: free, on the card and floating around - * in the system. If it is free, it is on one of the two free lists and - * start with a struct mbufx_free. Each page has a bitmap that tracks where - * its chunks are. - * - * For large buffers we use mbuf clusters. Here we have two problems: we need - * to track the buffers on the card (in the case we want to stop it) and - * we need to map the 64bit mbuf address to a 26bit handle for 64-bit machines. - * The card uses the buffers in the order we give it to the card. Therefor - * we can use a private array holding pointers to the mbufs as a circular - * queue for both tasks. This is done with the lbufs member of softc. The - * handle for these buffer is the lbufs index ored with a flag. - */ - -/* data space in each external mbuf */ -#define MBUF0_SIZE (5 * 48) /* 240 */ -#define MBUF1_SIZE (52) /* 1 raw cell */ - -/* size of the buffer. Must fit data, offset and header */ -#define MBUF0_CHUNK 256 /* 16 free bytes */ -#define MBUF1_CHUNK 96 /* 44 free bytes */ - -/* start of actual data in buffer */ -#define MBUF0_OFFSET 0 -#define MBUF1_OFFSET 16 - -#define MBUFL_OFFSET 16 /* two pointers for HARP */ - -#if PAGE_SIZE > 8192 -#define MBUF_ALLOC_SIZE (8192) -#else -#define MBUF_ALLOC_SIZE (PAGE_SIZE) -#endif - -/* each allocated page has one of these structures at its very end. */ -struct mbuf_page_hdr { - uint16_t nchunks; /* chunks on this page */ - bus_dmamap_t map; /* the DMA MAP */ - uint32_t phys; /* physical base address */ - uint32_t hdroff; /* chunk header offset */ - uint32_t chunksize; /* chunk size */ - u_int pool; /* pool number */ -}; -struct mbuf_page { - char storage[MBUF_ALLOC_SIZE - sizeof(struct mbuf_page_hdr)]; - struct mbuf_page_hdr hdr; -}; - -/* numbers per page */ -#define MBUF0_PER_PAGE ((MBUF_ALLOC_SIZE - sizeof(struct mbuf_page_hdr)) / \ - MBUF0_CHUNK) -#define MBUF1_PER_PAGE ((MBUF_ALLOC_SIZE - sizeof(struct mbuf_page_hdr)) / \ - MBUF1_CHUNK) - -/* - * Convert to/from handles - */ -/* small buffers */ -#define MBUF_MAKE_HANDLE(PAGENO, CHUNKNO) \ - ((((PAGENO) << 10) | (CHUNKNO)) << HE_REGS_RBRQ_ADDR) -#define MBUF_MAKE_LHANDLE(INDEX) \ - (MBUF_LARGE_FLAG | ((INDEX) << HE_REGS_RBRQ_ADDR)) - -/* large buffers */ -#define MBUF_PARSE_HANDLE(HANDLE, PAGENO, CHUNKNO) do { \ - (CHUNKNO) = ((HANDLE) >> HE_REGS_RBRQ_ADDR) & 0x3ff; \ - (PAGENO) = (((HANDLE) >> 10) >> HE_REGS_RBRQ_ADDR) & 0x3fff; \ - } while (0) -#define MBUF_PARSE_LHANDLE(HANDLE, INDEX) do { \ - (INDEX) = ((HANDLE) >> HE_REGS_RBRQ_ADDR) & 0xffffff; \ - } while (0) - -#define MBUF_LARGE_FLAG 0x80000000 - -/* chunks have the following structure at the end (8 byte) */ -struct mbuf_chunk_hdr { - uint16_t pageno; - uint8_t chunkno; - uint8_t flags; - u_int ref_cnt; -}; -#define MBUF_CARD 0x01 /* buffer is on card */ -#define MBUF_USED 0x02 /* buffer is somewhere in the system */ - -#define MBUFX_STORAGE_SIZE(X) (MBUF##X##_CHUNK \ - - sizeof(struct mbuf_chunk_hdr)) - -struct mbuf0_chunk { - char storage[MBUFX_STORAGE_SIZE(0)]; - struct mbuf_chunk_hdr hdr; -}; - -struct mbuf1_chunk { - char storage[MBUFX_STORAGE_SIZE(1)]; - struct mbuf_chunk_hdr hdr; -}; - -struct mbufx_free { - struct mbufx_free *link; -}; - -/*==================================================================*/ - -/* - * Interrupt queue - */ -struct heirq { - u_int size; /* number of entries */ - u_int thresh; /* re-interrupt threshold */ - u_int line; /* interrupt line to use */ - struct dmamem mem; /* interrupt queues */ - uint32_t * irq; /* interrupt queue */ - uint32_t head; /* head index */ - uint32_t * tailp; /* pointer to tail */ - struct hatm_softc *sc; /* back pointer */ - u_int group; /* interrupt group */ -}; - -/* - * This structure describes all information for a VCC open on the card. - * The array of these structures is indexed by the compressed connection ID - * (CID). This structure must begin with the atmio_vcc. - */ -struct hevcc { - struct atmio_vcc param; /* traffic parameters */ - void * rxhand; /* NATM protocol block */ - u_int vflags; /* private flags */ - uint32_t ipackets; - uint32_t opackets; - uint32_t ibytes; - uint32_t obytes; - - u_int rc; /* rate control group for CBR */ - struct mbuf * chain; /* partial received PDU */ - struct mbuf * last; /* last mbuf in chain */ - u_int ntpds; /* number of active TPDs */ -}; -#define HE_VCC_OPEN 0x000f0000 -#define HE_VCC_RX_OPEN 0x00010000 -#define HE_VCC_RX_CLOSING 0x00020000 -#define HE_VCC_TX_OPEN 0x00040000 -#define HE_VCC_TX_CLOSING 0x00080000 -#define HE_VCC_FLOW_CTRL 0x00100000 - -/* - * CBR rate groups - */ -struct herg { - u_int refcnt; /* how many connections reference this group */ - u_int rate; /* the value */ -}; - -/* - * Softc - */ -struct hatm_softc { - struct ifnet *ifp; - struct mtx mtx; /* lock */ - struct ifmedia media; /* media */ - device_t dev; /* device */ - int memid; /* resoure id for memory */ - struct resource * memres; /* memory resource */ - bus_space_handle_t memh; /* handle */ - bus_space_tag_t memt; /* ... and tag */ - bus_dma_tag_t parent_tag; /* global restriction */ - struct cv vcc_cv; /* condition variable */ - int irqid; /* resource id */ - struct resource * irqres; /* resource */ - void * ih; /* interrupt handle */ - struct utopia utopia; /* utopia state */ - - /* rest has to be reset by stop */ - int he622; /* this is a HE622 */ - int pci64; /* 64bit bus */ - char prod_id[HE_EEPROM_PROD_ID_LEN + 1]; - char rev[HE_EEPROM_REV_LEN + 1]; - struct heirq irq_0; /* interrupt queues 0 */ - - /* generic network controller state */ - u_int cells_per_row; - u_int bytes_per_row; - u_int r0_numrows; - u_int tx_numrows; - u_int r1_numrows; - u_int r0_startrow; - u_int tx_startrow; - u_int r1_startrow; - u_int cells_per_lbuf; - u_int r0_numbuffs; - u_int r1_numbuffs; - u_int tx_numbuffs; - - /* HSP */ - struct he_hsp *hsp; - struct dmamem hsp_mem; - - /*** TX ***/ - struct hetbrq tbrq; /* TBRQ 0 */ - struct hetpdrq tpdrq; /* TPDRQ */ - struct tpd_list tpd_free; /* Free TPDs */ - u_int tpd_nfree; /* number of free TPDs */ - u_int tpd_total; /* total TPDs */ - uint8_t *tpd_used; /* bitmap of used TPDs */ - struct dmamem tpds; /* TPD memory */ - bus_dma_tag_t tx_tag; /* DMA tag for all tx mbufs */ - - /*** RX ***/ - /* receive/transmit groups */ - struct herbp rbp_s0; /* RBPS0 */ - struct herbp rbp_l0; /* RBPL0 */ - struct herbp rbp_s1; /* RBPS1 */ - struct herbrq rbrq_0; /* RBRQ0 */ - struct herbrq rbrq_1; /* RBRQ1 */ - - /* list of external mbuf storage */ - bus_dma_tag_t mbuf_tag; - struct mbuf_page **mbuf_pages; - u_int mbuf_npages; - u_int mbuf_max_pages; - struct mbufx_free *mbuf_list[2]; - - /* mbuf cluster tracking and mapping for group 0 */ - struct mbuf **lbufs; /* mbufs */ - bus_dmamap_t *rmaps; /* DMA maps */ - u_int lbufs_size; - u_int lbufs_next; - - /* VCCs */ - struct hevcc *vccs[HE_MAX_VCCS]; - u_int cbr_bw; /* BW allocated to CBR */ - u_int max_tpd; /* per VCC */ - u_int open_vccs; - uma_zone_t vcc_zone; - - /* rate groups */ - struct herg rate_ctrl[HE_REGN_CS_STPER]; - - /* memory offsets */ - u_int tsrb, tsrc, tsrd; - u_int rsrb; - - struct cv cv_rcclose; /* condition variable */ - uint32_t rate_grid[16][16]; /* our copy */ - - /* sysctl support */ - struct sysctl_ctx_list sysctl_ctx; - struct sysctl_oid *sysctl_tree; - - /* internal statistics */ - struct istats istats; - - u_int mpsafe; - -#ifdef HATM_DEBUG - /* debugging */ - u_int debug; - - /* transmit mbuf count */ - int txmbuf; -#endif -}; - -#define READ4(SC,OFF) bus_space_read_4(SC->memt, SC->memh, (OFF)) -#define READ2(SC,OFF) bus_space_read_2(SC->memt, SC->memh, (OFF)) -#define READ1(SC,OFF) bus_space_read_1(SC->memt, SC->memh, (OFF)) - -#define WRITE4(SC,OFF,VAL) bus_space_write_4(SC->memt, SC->memh, (OFF), (VAL)) -#define WRITE2(SC,OFF,VAL) bus_space_write_2(SC->memt, SC->memh, (OFF), (VAL)) -#define WRITE1(SC,OFF,VAL) bus_space_write_1(SC->memt, SC->memh, (OFF), (VAL)) - -#define BARRIER_R(SC) bus_space_barrier(SC->memt, SC->memh, 0, HE_REGO_END, \ - BUS_SPACE_BARRIER_READ) -#define BARRIER_W(SC) bus_space_barrier(SC->memt, SC->memh, 0, HE_REGO_END, \ - BUS_SPACE_BARRIER_WRITE) -#define BARRIER_RW(SC) bus_space_barrier(SC->memt, SC->memh, 0, HE_REGO_END, \ - BUS_SPACE_BARRIER_READ | BUS_SPACE_BARRIER_WRITE) - -#define READ_SUNI(SC,OFF) READ4(SC, HE_REGO_SUNI + 4 * (OFF)) -#define WRITE_SUNI(SC,OFF,VAL) WRITE4(SC, HE_REGO_SUNI + 4 * (OFF), (VAL)) - -#define READ_LB4(SC,OFF) \ - ({ \ - WRITE4(SC, HE_REGO_LB_MEM_ADDR, (OFF)); \ - WRITE4(SC, HE_REGO_LB_MEM_ACCESS, \ - (HE_REGM_LB_MEM_HNDSHK | HE_REGM_LB_MEM_READ)); \ - while((READ4(SC, HE_REGO_LB_MEM_ACCESS) & HE_REGM_LB_MEM_HNDSHK))\ - ; \ - READ4(SC, HE_REGO_LB_MEM_DATA); \ - }) -#define WRITE_LB4(SC,OFF,VAL) \ - do { \ - WRITE4(SC, HE_REGO_LB_MEM_ADDR, (OFF)); \ - WRITE4(SC, HE_REGO_LB_MEM_DATA, (VAL)); \ - WRITE4(SC, HE_REGO_LB_MEM_ACCESS, \ - (HE_REGM_LB_MEM_HNDSHK | HE_REGM_LB_MEM_WRITE)); \ - while((READ4(SC, HE_REGO_LB_MEM_ACCESS) & HE_REGM_LB_MEM_HNDSHK))\ - ; \ - } while(0) - -#define WRITE_MEM4(SC,OFF,VAL,SPACE) \ - do { \ - WRITE4(SC, HE_REGO_CON_DAT, (VAL)); \ - WRITE4(SC, HE_REGO_CON_CTL, \ - (SPACE | HE_REGM_CON_WE | HE_REGM_CON_STATUS | (OFF))); \ - while((READ4(SC, HE_REGO_CON_CTL) & HE_REGM_CON_STATUS) != 0) \ - ; \ - } while(0) - -#define READ_MEM4(SC,OFF,SPACE) \ - ({ \ - WRITE4(SC, HE_REGO_CON_CTL, \ - (SPACE | HE_REGM_CON_STATUS | (OFF))); \ - while((READ4(SC, HE_REGO_CON_CTL) & HE_REGM_CON_STATUS) != 0) \ - ; \ - READ4(SC, HE_REGO_CON_DAT); \ - }) - -#define WRITE_TCM4(SC,OFF,VAL) WRITE_MEM4(SC,(OFF),(VAL),HE_REGM_CON_TCM) -#define WRITE_RCM4(SC,OFF,VAL) WRITE_MEM4(SC,(OFF),(VAL),HE_REGM_CON_RCM) -#define WRITE_MBOX4(SC,OFF,VAL) WRITE_MEM4(SC,(OFF),(VAL),HE_REGM_CON_MBOX) - -#define READ_TCM4(SC,OFF) READ_MEM4(SC,(OFF),HE_REGM_CON_TCM) -#define READ_RCM4(SC,OFF) READ_MEM4(SC,(OFF),HE_REGM_CON_RCM) -#define READ_MBOX4(SC,OFF) READ_MEM4(SC,(OFF),HE_REGM_CON_MBOX) - -#define WRITE_TCM(SC,OFF,BYTES,VAL) \ - WRITE_MEM4(SC,(OFF) | ((~(BYTES) & 0xf) << HE_REGS_CON_DIS), \ - (VAL), HE_REGM_CON_TCM) -#define WRITE_RCM(SC,OFF,BYTES,VAL) \ - WRITE_MEM4(SC,(OFF) | ((~(BYTES) & 0xf) << HE_REGS_CON_DIS), \ - (VAL), HE_REGM_CON_RCM) - -#define READ_TSR(SC,CID,NR) \ - ({ \ - uint32_t _v; \ - if((NR) <= 7) { \ - _v = READ_TCM4(SC, HE_REGO_TSRA(0,CID,NR)); \ - } else if((NR) <= 11) { \ - _v = READ_TCM4(SC, HE_REGO_TSRB((SC)->tsrb,CID,(NR-8)));\ - } else if((NR) <= 13) { \ - _v = READ_TCM4(SC, HE_REGO_TSRC((SC)->tsrc,CID,(NR-12)));\ - } else { \ - _v = READ_TCM4(SC, HE_REGO_TSRD((SC)->tsrd,CID)); \ - } \ - _v; \ - }) - -#define WRITE_TSR(SC,CID,NR,BEN,VAL) \ - do { \ - if((NR) <= 7) { \ - WRITE_TCM(SC, HE_REGO_TSRA(0,CID,NR),BEN,VAL); \ - } else if((NR) <= 11) { \ - WRITE_TCM(SC, HE_REGO_TSRB((SC)->tsrb,CID,(NR-8)),BEN,VAL);\ - } else if((NR) <= 13) { \ - WRITE_TCM(SC, HE_REGO_TSRC((SC)->tsrc,CID,(NR-12)),BEN,VAL);\ - } else { \ - WRITE_TCM(SC, HE_REGO_TSRD((SC)->tsrd,CID),BEN,VAL); \ - } \ - } while(0) - -#define READ_RSR(SC,CID,NR) \ - ({ \ - uint32_t _v; \ - if((NR) <= 7) { \ - _v = READ_RCM4(SC, HE_REGO_RSRA(0,CID,NR)); \ - } else { \ - _v = READ_RCM4(SC, HE_REGO_RSRB((SC)->rsrb,CID,(NR-8)));\ - } \ - _v; \ - }) - -#define WRITE_RSR(SC,CID,NR,BEN,VAL) \ - do { \ - if((NR) <= 7) { \ - WRITE_RCM(SC, HE_REGO_RSRA(0,CID,NR),BEN,VAL); \ - } else { \ - WRITE_RCM(SC, HE_REGO_RSRB((SC)->rsrb,CID,(NR-8)),BEN,VAL);\ - } \ - } while(0) - -#ifdef HATM_DEBUG -#define DBG(SC, FL, PRINT) do { \ - if((SC)->debug & DBG_##FL) { \ - if_printf((SC)->ifp, "%s: ", __func__); \ - printf PRINT; \ - printf("\n"); \ - } \ - } while (0) - -enum { - DBG_DUMMY = 0x0001, /* default value for -DHATM_DEBUG */ - DBG_RX = 0x0002, - DBG_TX = 0x0004, - DBG_VCC = 0x0008, - DBG_IOCTL = 0x0010, - DBG_ATTACH = 0x0020, - DBG_INTR = 0x0040, - DBG_DMA = 0x0080, - DBG_DMAH = 0x0100, - DBG_DUMP = 0x0200, - - DBG_ALL = 0x03ff -}; - -#else -#define DBG(SC, FL, PRINT) -#endif - -u_int hatm_cps2atmf(uint32_t); -u_int hatm_atmf2cps(uint32_t); - -void hatm_intr(void *); -int hatm_ioctl(struct ifnet *, u_long, caddr_t); -void hatm_initialize(struct hatm_softc *); -void hatm_stop(struct hatm_softc *sc); -void hatm_start(struct ifnet *); - -void hatm_rx(struct hatm_softc *sc, u_int cid, u_int flags, struct mbuf *m, - u_int len); -void hatm_tx_complete(struct hatm_softc *sc, struct tpd *tpd, uint32_t); - -int hatm_tx_vcc_can_open(struct hatm_softc *sc, u_int cid, struct hevcc *); -void hatm_tx_vcc_open(struct hatm_softc *sc, u_int cid); -void hatm_rx_vcc_open(struct hatm_softc *sc, u_int cid); -void hatm_tx_vcc_close(struct hatm_softc *sc, u_int cid); -void hatm_rx_vcc_close(struct hatm_softc *sc, u_int cid); -void hatm_tx_vcc_closed(struct hatm_softc *sc, u_int cid); -void hatm_vcc_closed(struct hatm_softc *sc, u_int cid); -void hatm_load_vc(struct hatm_softc *sc, u_int cid, int reopen); - -void hatm_ext_free(struct mbufx_free **, struct mbufx_free *); diff --git a/sys/dev/hyperv/netvsc/if_hn.c b/sys/dev/hyperv/netvsc/if_hn.c index 9a12ae3d408e..5fbb5d3ac134 100644 --- a/sys/dev/hyperv/netvsc/if_hn.c +++ b/sys/dev/hyperv/netvsc/if_hn.c @@ -622,6 +622,16 @@ hn_chim_free(struct hn_softc *sc, uint32_t chim_idx) } #if defined(INET6) || defined(INET) + +#define PULLUP_HDR(m, len) \ +do { \ + if (__predict_false((m)->m_len < (len))) { \ + (m) = m_pullup((m), (len)); \ + if ((m) == NULL) \ + return (NULL); \ + } \ +} while (0) + /* * NOTE: If this function failed, the m_head would be freed. */ @@ -634,15 +644,6 @@ hn_tso_fixup(struct mbuf *m_head) KASSERT(M_WRITABLE(m_head), ("TSO mbuf not writable")); -#define PULLUP_HDR(m, len) \ -do { \ - if (__predict_false((m)->m_len < (len))) { \ - (m) = m_pullup((m), (len)); \ - if ((m) == NULL) \ - return (NULL); \ - } \ -} while (0) - PULLUP_HDR(m_head, sizeof(*evl)); evl = mtod(m_head, struct ether_vlan_header *); if (evl->evl_encap_proto == ntohs(ETHERTYPE_VLAN)) @@ -691,8 +692,65 @@ do { \ #endif return (m_head); -#undef PULLUP_HDR } + +/* + * NOTE: If this function failed, the m_head would be freed. + */ +static __inline struct mbuf * +hn_check_tcpsyn(struct mbuf *m_head, int *tcpsyn) +{ + const struct ether_vlan_header *evl; + const struct tcphdr *th; + int ehlen; + + *tcpsyn = 0; + + PULLUP_HDR(m_head, sizeof(*evl)); + evl = mtod(m_head, const struct ether_vlan_header *); + if (evl->evl_encap_proto == ntohs(ETHERTYPE_VLAN)) + ehlen = ETHER_HDR_LEN + ETHER_VLAN_ENCAP_LEN; + else + ehlen = ETHER_HDR_LEN; + +#ifdef INET + if (m_head->m_pkthdr.csum_flags & CSUM_IP_TCP) { + const struct ip *ip; + int iphlen; + + PULLUP_HDR(m_head, ehlen + sizeof(*ip)); + ip = mtodo(m_head, ehlen); + iphlen = ip->ip_hl << 2; + + PULLUP_HDR(m_head, ehlen + iphlen + sizeof(*th)); + th = mtodo(m_head, ehlen + iphlen); + if (th->th_flags & TH_SYN) + *tcpsyn = 1; + } +#endif +#if defined(INET6) && defined(INET) + else +#endif +#ifdef INET6 + { + const struct ip6_hdr *ip6; + + PULLUP_HDR(m_head, ehlen + sizeof(*ip6)); + ip6 = mtodo(m_head, ehlen); + if (ip6->ip6_nxt != IPPROTO_TCP) + return (m_head); + + PULLUP_HDR(m_head, ehlen + sizeof(*ip6) + sizeof(*th)); + th = mtodo(m_head, ehlen + sizeof(*ip6)); + if (th->th_flags & TH_SYN) + *tcpsyn = 1; + } +#endif + return (m_head); +} + +#undef PULLUP_HDR + #endif /* INET6 || INET */ static int @@ -4369,7 +4427,29 @@ hn_transmit(struct ifnet *ifp, struct mbuf *m) idx = bid % sc->hn_tx_ring_inuse; else #endif - idx = m->m_pkthdr.flowid % sc->hn_tx_ring_inuse; + { +#if defined(INET6) || defined(INET) + int tcpsyn = 0; + + if (m->m_pkthdr.len < 128 && + (m->m_pkthdr.csum_flags & + (CSUM_IP_TCP | CSUM_IP6_TCP)) && + (m->m_pkthdr.csum_flags & CSUM_TSO) == 0) { + m = hn_check_tcpsyn(m, &tcpsyn); + if (__predict_false(m == NULL)) { + if_inc_counter(ifp, + IFCOUNTER_OERRORS, 1); + return (EIO); + } + } +#else + const int tcpsyn = 0; +#endif + if (tcpsyn) + idx = 0; + else + idx = m->m_pkthdr.flowid % sc->hn_tx_ring_inuse; + } } txr = &sc->hn_tx_ring[idx]; diff --git a/sys/dev/isp/isp.c b/sys/dev/isp/isp.c index d71a6357ba2d..c75b95ed55ec 100644 --- a/sys/dev/isp/isp.c +++ b/sys/dev/isp/isp.c @@ -1012,7 +1012,7 @@ isp_reset(ispsoftc_t *isp, int do_load_defaults) fwt = isp->isp_fwattr; if (IS_24XX(isp)) { - buf = FCPARAM(isp, 0)->isp_scratch; + buf = FCPARAM(isp, 0)->isp_scanscratch; ISP_SNPRINTF(buf, ISP_FC_SCRLEN, "Attributes:"); if (fwt & ISP2400_FW_ATTR_CLASS2) { fwt ^=ISP2400_FW_ATTR_CLASS2; @@ -1101,7 +1101,7 @@ isp_reset(ispsoftc_t *isp, int do_load_defaults) } isp_prt(isp, ISP_LOGCONFIG, "%s", buf); } else if (IS_FC(isp)) { - buf = FCPARAM(isp, 0)->isp_scratch; + buf = FCPARAM(isp, 0)->isp_scanscratch; ISP_SNPRINTF(buf, ISP_FC_SCRLEN, "Attributes:"); if (fwt & ISP_FW_ATTR_TMODE) { fwt ^=ISP_FW_ATTR_TMODE; diff --git a/sys/dev/ntb/if_ntb/if_ntb.c b/sys/dev/ntb/if_ntb/if_ntb.c index ace4861e6a89..ebe9da0de536 100644 --- a/sys/dev/ntb/if_ntb/if_ntb.c +++ b/sys/dev/ntb/if_ntb/if_ntb.c @@ -225,6 +225,7 @@ ntb_net_init(void *arg) if_t ifp = sc->ifp; if_setdrvflagbits(ifp, IFF_DRV_RUNNING, IFF_DRV_OACTIVE); + if_setbaudrate(ifp, ntb_transport_link_speed(sc->queues[0].qp)); if_link_state_change(ifp, ntb_transport_link_query(sc->queues[0].qp) ? LINK_STATE_UP : LINK_STATE_DOWN); } @@ -474,20 +475,10 @@ static void ntb_net_event_handler(void *data, enum ntb_link_event status) { struct ntb_net_queue *q = data; - int new_state; - switch (status) { - case NTB_LINK_DOWN: - new_state = LINK_STATE_DOWN; - break; - case NTB_LINK_UP: - new_state = LINK_STATE_UP; - break; - default: - new_state = LINK_STATE_UNKNOWN; - break; - } - if_link_state_change(q->ifp, new_state); + if_setbaudrate(q->ifp, ntb_transport_link_speed(q->qp)); + if_link_state_change(q->ifp, (status == NTB_LINK_UP) ? LINK_STATE_UP : + LINK_STATE_DOWN); } /* Helper functions */ diff --git a/sys/dev/ntb/ntb.c b/sys/dev/ntb/ntb.c index 44c0c618646c..7515dfcaa49a 100644 --- a/sys/dev/ntb/ntb.c +++ b/sys/dev/ntb/ntb.c @@ -168,7 +168,15 @@ ntb_link_event(device_t dev) struct ntb_child **cpp = device_get_softc(dev); struct ntb_child *nc; struct rm_priotracker ctx_tracker; - + enum ntb_speed speed; + enum ntb_width width; + + if (NTB_LINK_IS_UP(dev, &speed, &width)) { + device_printf(dev, "Link is up (PCIe %d.x / x%d)\n", + (int)speed, (int)width); + } else { + device_printf(dev, "Link is down\n"); + } for (nc = *cpp; nc != NULL; nc = nc->next) { rm_rlock(&nc->ctx_lock, &ctx_tracker); if (nc->ctx_ops != NULL && nc->ctx_ops->link_event != NULL) diff --git a/sys/dev/ntb/ntb_if.m b/sys/dev/ntb/ntb_if.m index d8ca22755839..77596bec4d6a 100644 --- a/sys/dev/ntb/ntb_if.m +++ b/sys/dev/ntb/ntb_if.m @@ -38,6 +38,7 @@ HEADER { NTB_SPEED_GEN1 = 1, NTB_SPEED_GEN2 = 2, NTB_SPEED_GEN3 = 3, + NTB_SPEED_GEN4 = 4, }; enum ntb_width { diff --git a/sys/dev/ntb/ntb_transport.c b/sys/dev/ntb/ntb_transport.c index c7bc4da2c388..328c7a316139 100644 --- a/sys/dev/ntb/ntb_transport.c +++ b/sys/dev/ntb/ntb_transport.c @@ -202,6 +202,8 @@ struct ntb_transport_ctx { unsigned qp_count; uint64_t qp_bitmap; volatile bool link_is_up; + enum ntb_speed link_speed; + enum ntb_width link_width; struct callout link_work; struct callout link_watchdog; struct task link_cleanup; @@ -1024,7 +1026,7 @@ ntb_transport_event_callback(void *data) { struct ntb_transport_ctx *nt = data; - if (ntb_link_is_up(nt->dev, NULL, NULL)) { + if (ntb_link_is_up(nt->dev, &nt->link_speed, &nt->link_width)) { ntb_printf(1, "HW link up\n"); callout_reset(&nt->link_work, 0, ntb_transport_link_work, nt); } else { @@ -1105,7 +1107,7 @@ free_mws: for (i = 0; i < nt->mw_count; i++) ntb_free_mw(nt, i); out: - if (ntb_link_is_up(dev, NULL, NULL)) + if (ntb_link_is_up(dev, &nt->link_speed, &nt->link_width)) callout_reset(&nt->link_work, NTB_LINK_DOWN_TIMEOUT * hz / 1000, ntb_transport_link_work, nt); } @@ -1379,6 +1381,43 @@ ntb_transport_link_query(struct ntb_transport_qp *qp) return (qp->link_is_up); } +/** + * ntb_transport_link_speed - Query transport link speed + * @qp: NTB transport layer queue to be queried + * + * Query connection speed to the remote system of the NTB transport queue + * + * RETURNS: link speed in bits per second + */ +uint64_t +ntb_transport_link_speed(struct ntb_transport_qp *qp) +{ + struct ntb_transport_ctx *nt = qp->transport; + uint64_t rate; + + if (!nt->link_is_up) + return (0); + switch (nt->link_speed) { + case NTB_SPEED_GEN1: + rate = 2500000000 * 8 / 10; + break; + case NTB_SPEED_GEN2: + rate = 5000000000 * 8 / 10; + break; + case NTB_SPEED_GEN3: + rate = 8000000000 * 128 / 130; + break; + case NTB_SPEED_GEN4: + rate = 16000000000 * 128 / 130; + break; + default: + return (0); + } + if (nt->link_width <= 0) + return (0); + return (rate * nt->link_width); +} + static void ntb_send_link_down(struct ntb_transport_qp *qp) { diff --git a/sys/dev/ntb/ntb_transport.h b/sys/dev/ntb/ntb_transport.h index 63cdbce96cb2..7695abdefaec 100644 --- a/sys/dev/ntb/ntb_transport.h +++ b/sys/dev/ntb/ntb_transport.h @@ -58,4 +58,5 @@ void *ntb_transport_rx_remove(struct ntb_transport_qp *qp, unsigned int *len); void ntb_transport_link_up(struct ntb_transport_qp *qp); void ntb_transport_link_down(struct ntb_transport_qp *qp); bool ntb_transport_link_query(struct ntb_transport_qp *qp); +uint64_t ntb_transport_link_speed(struct ntb_transport_qp *qp); unsigned int ntb_transport_tx_free_entry(struct ntb_transport_qp *qp); diff --git a/sys/dev/patm/genrtab/Makefile b/sys/dev/patm/genrtab/Makefile deleted file mode 100644 index 907b29db230e..000000000000 --- a/sys/dev/patm/genrtab/Makefile +++ /dev/null @@ -1,12 +0,0 @@ -# $FreeBSD$ -# -# This program is used to generate the if_patm_rtables.c file -# for the idt77252 driver. It is not installed. -# -PROG= genrtab -INTERNALPROG= -WARNS?= 5 -MAN= -LIBADD= m - -.include <bsd.prog.mk> diff --git a/sys/dev/patm/genrtab/genrtab.c b/sys/dev/patm/genrtab/genrtab.c deleted file mode 100644 index 8d696cfa8ef6..000000000000 --- a/sys/dev/patm/genrtab/genrtab.c +++ /dev/null @@ -1,458 +0,0 @@ -/*- - * Copyright (c) 2003 - * Fraunhofer Institute for Open Communication Systems (FhG Fokus). - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * Author: Hartmut Brandt <harti@freebsd.org> - * - * This program is used to generate the different rate tables for the IDT77252 - * driver. The generated tables are slightly different from those in the - * IDT manual. - */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include <sys/types.h> -#include <stdio.h> -#include <unistd.h> -#include <math.h> -#include <ieeefp.h> - -/* verbosity flag */ -static int verbose; - -/* number of table entries */ -static const u_int tsize = 256; - -/* number of rate difference tables to create */ -static const u_int ndtables = 16; - -/* cell rate offset for log 0 */ -static const double offset = 10.0; - -/* - * Make an internal form of the interval and be sure to round down. - */ -static u_int -d2interval(double d) -{ - fp_rnd_t r; - u_int s, id; - - r = fpsetround(FP_RZ); - id = (u_int)rint(32 * d); - fpsetround(r); - - s = 0; - while (id >= 32 * 32) { - s++; - id >>= 1; - } - return ((s << 10) | (id)); -} - -/* - * Convert an internal interval back to a real one. - */ -static double -interval2d(u_int id) -{ - return ((1 << ((id >> 10) & 0xf)) * ((id & 0x3ff) / 32.0)); -} - -/* - * Convert double to ATM-Forum format. Make sure to round up. - */ -static u_int -cps2atmf(double cps) -{ - fp_rnd_t r; - u_int s, id; - - if (cps < 1.0) - return (0); - - s = 0; - while (cps >= 2.0) { - s++; - cps /= 2; - } - r = fpsetround(FP_RP); - id = (u_int)rint(512 * cps); - fpsetround(r); - - return ((1 << 14) | (s << 9) | (id & 0x1ff)); -} - -/* - * Convert ATM forum format to double - */ -static double -atmf2cps(u_int atmf) -{ - return (((atmf >> 14) & 1) * (1 << ((atmf >> 9) & 0x1f)) * - ((512 + (atmf & 0x1ff)) / 512.0)); -} - -/* - * A cell rate to the logarithmic one - */ -static double -cps2log(u_int alink, double lg) -{ - if (lg <= offset) - return (0); - if (lg >= alink) - return (tsize - 1); - - return ((tsize - 1) * (1 - log(alink / lg) / log(alink / offset))); -} - -/* - * Convert log to cell rate - */ -static double -log2cps(u_int alink, u_int lg) -{ - return (alink / pow(alink / offset, - (double)(tsize - lg - 1) / (tsize - 1))); -} - -/* - * Convert a double to an internal scaled double - */ -static u_int -d2ifp(double fp) -{ - fp_rnd_t r; - u_int s, ifp; - - fp *= (1 << 16); - - r = fpsetround(FP_RN); - ifp = (u_int)rint(fp); - fpsetround(r); - - s = 0; - while (ifp >= 1024) { - s++; - ifp >>= 1; - } - return ((s << 10) | (ifp)); -} - -/* - * Convert internal scaled float to double - */ -static double -ifp2d(u_int p) -{ - return ((p & 0x3ff) * (1 << ((p >> 10) & 0xf)) / 65536.0); -} - -/* - * Generate log to rate conversion table - */ -static void -gen_log2rate(u_int alink) -{ - u_int i, iinterval, atmf, n, nrm; - double rate, interval, xinterval, cps, xcps; - - for (i = 0; i < 256; i++) { - /* get the desired rate */ - rate = alink / pow(alink / offset, - (double)(tsize - i - 1) / (tsize - 1)); - - /* convert this to an interval */ - interval = alink / rate; - - /* make the internal form of this interval, be sure to - * round down */ - iinterval = d2interval(interval); - - /* now convert back */ - xinterval = interval2d(iinterval); - - /* make a cps from this interval */ - cps = alink / xinterval; - - /* convert this to its ATM forum format */ - atmf = cps2atmf(cps); - - /* and back */ - xcps = atmf2cps(atmf); - - /* decide on NRM */ - if (xcps < 40.0) { - nrm = 0; - n = 3; - } else if (xcps < 80.0) { - nrm = 1; - n = 4; - } else if (xcps < 160.0) { - nrm = 2; - n = 8; - } else if (xcps < 320.0) { - nrm = 3; - n = 16; - } else { - nrm = 4; - n = 32; - } - - /* print */ - if (verbose) - printf(" 0x%08x, /* %03u: cps=%f nrm=%u int=%f */\n", - (atmf << 17) | (nrm << 14) | iinterval, i, - xcps, n, xinterval); - else - printf("0x%08x,\n", (atmf << 17) | (nrm << 14) | - iinterval); - } -} - -/* - * Generate rate to log conversion table - */ -static void -gen_rate2log(u_int alink) -{ - u_int i, atmf, val, ilcr; - double cps, lcr; - fp_rnd_t r; - - val = 0; - for (i = 0; i < 512; i++) { - /* make ATM Forum CPS from index */ - atmf = (((i & 0x1f0) >> 4) << 9) | - ((i & 0xf) << 5) | (1 << 14); - - /* make cps */ - cps = atmf2cps(atmf); - - /* convert to log */ - lcr = cps2log(alink, cps); - - r = fpsetround(FP_RN); - ilcr = (u_int)rint(lcr); - fpsetround(r); - - /* put together */ - val |= ilcr << (8 * (i % 4)); - - /* print */ - if (i % 4 == 3) { - if (verbose) - printf(" 0x%08x,\t", val); - else - printf("0x%08x,\n", val); - val = 0; - } else if (verbose) - printf("\t\t"); - if (verbose) - printf("/* %03u: %f -> %f */\n", i, - cps, log2cps(alink, ilcr)); - } -} - -/* - * Generate one entry into the global table - */ -static void -gen_glob_entry(u_int alink, u_int fill, u_int ci, u_int ni) -{ - if (verbose) - printf(" 0x%08x, /* %2u/32 %8.6f, %6u, ci=%u, ni=%u */\n", - cps2atmf(alink * fill / 32.0) | (ci << 17) | (ni << 16), - fill, fill / 32.0, alink * fill / 32, ci, ni); - else - printf("0x%08x,\n", - cps2atmf(alink * fill / 32.0) | (ci << 17) | (ni << 16)); -} - -/* - * Generate global parameter table - */ -static void -gen_glob(u_int alink) -{ - u_int i; - - gen_glob_entry(alink, 32, 0, 0); - gen_glob_entry(alink, 16, 0, 0); - gen_glob_entry(alink, 8, 0, 1); - gen_glob_entry(alink, 4, 0, 1); - gen_glob_entry(alink, 2, 1, 1); - gen_glob_entry(alink, 1, 1, 1); - gen_glob_entry(alink, 0, 1, 1); - gen_glob_entry(alink, 0, 1, 1); - - for (i = 0; i < tsize/2 - 8; i++) { - if (i % 16 == 0) - printf(" "); - printf(" 0,"); - if (i % 16 == 15) - printf("\n"); - } - printf("\n"); -} - -/* - * Generate additive rate increase tables - */ -static void -gen_air(u_int alink) -{ - u_int t, i; - double diff; /* cell rate to increase by */ - double cps; - double add; - u_int val, a; - - for (t = 0; t < ndtables; t++) { - diff = (double)alink / (1 << t); - printf("/* AIR %u: diff=%f */\n", t, diff); - val = 0; - for (i = 0; i < tsize; i++) { - cps = log2cps(alink, i); - cps += diff; - if (cps > alink) - cps = alink; - - add = cps2log(alink, cps) - i; - - a = d2ifp(add); - - if (i % 2) { - val |= a << 16; - if (verbose) - printf(" 0x%08x,\t", val); - else - printf("0x%08x,\n", val); - } else { - val = a; - if (verbose) - printf("\t\t"); - } - if (verbose) - printf("/* %3u: %f */\n", i, ifp2d(add)); - } - } -} - -/* - * Generate rate decrease table - */ -static void -gen_rdf(u_int alink) -{ - double d; - u_int t, i, f, val, diff; - - for (t = 0; t < ndtables; t++) { - /* compute the log index difference */ - if (t == 0) { - d = tsize - 1; - } else { - f = 1 << t; - d = (tsize - 1) / log(alink / offset); - d *= log((double)f / (f - 1)); - } - printf(" /* RDF %u: 1/%u: %f */\n", t, 1 << t, d); - val = 0; - for (i = 0; i < tsize; i++) { - if (i < d) - diff = d2ifp(i); - else - diff = d2ifp(d); - if (i % 2) { - val |= diff << 16; - if (verbose) - printf(" 0x%08x,\t", val); - else - printf("0x%08x,\n", val); - } else { - val = diff; - if (verbose) - printf("\t\t"); - } - if (verbose) - printf("/* %3u: %f */\n", i, ifp2d(diff)); - } - } -} - -/* - * Create all the tables for a given link cell rate and link bit rate. - * The link bit rate is only used to name the table. - */ -static void -gen_tables(u_int alink, u_int mbps) -{ - printf("\n"); - printf("/*\n"); - printf(" * Tables for %ucps and %uMbps\n", alink, mbps); - printf(" */\n"); - printf("const uint32_t patm_rtables%u[128 * (4 + 2 * %u)] = {\n", - mbps, ndtables); - - gen_log2rate(alink); - gen_rate2log(alink); - gen_glob(alink); - gen_air(alink); - gen_rdf(alink); - - printf("};\n"); -} - -int -main(int argc, char *argv[]) -{ - int opt; - - while ((opt = getopt(argc, argv, "v")) != -1) - switch (opt) { - - case 'v': - verbose = 1; - break; - } - - printf("/*\n"); - printf(" * This file was generated by `%s'\n", argv[0]); - printf(" */\n"); - printf("\n"); - printf("#include <sys/cdefs.h>\n"); - printf("__FBSDID(\"$FreeBSD$\");\n"); - printf("\n"); - printf("#include <sys/types.h>\n"); - printf("\n"); - printf("const u_int patm_rtables_size = 128 * (4 + 2 * %u);\n", - ndtables); - printf("const u_int patm_rtables_ntab = %u;\n", ndtables); - gen_tables(352768, 155); - gen_tables( 59259, 25); - return (0); -} diff --git a/sys/dev/patm/idt77252reg.h b/sys/dev/patm/idt77252reg.h deleted file mode 100644 index 13013a2f1056..000000000000 --- a/sys/dev/patm/idt77252reg.h +++ /dev/null @@ -1,476 +0,0 @@ -/*- - * Copyright (c) 2003 - * Fraunhofer Institute for Open Communication Systems (FhG Fokus). - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * Author: Hartmut Brandt <harti@freebsd.org> - * - * $FreeBSD$ - * - * Register definitions for the IDT77252 chip. - */ - -#define PCI_VENDOR_IDT 0x111D -#define PCI_DEVICE_IDT77252 3 -#define PCI_DEVICE_IDT77v252 4 -#define PCI_DEVICE_IDT77v222 5 - -#define IDT_PCI_REG_MEMBASE 0x14 - -#define IDT_NOR_D0 0x00 /* R/W Data register 0 */ -#define IDT_NOR_D1 0x04 /* R/W Data register 1 */ -#define IDT_NOR_D2 0x08 /* R/W Data register 2 */ -#define IDT_NOR_D3 0x0C /* R/W Data register 3 */ -#define IDT_NOR_CMD 0x10 /* R/W Command */ -#define IDT_NOR_CFG 0x14 /* R/W Configuration */ -#define IDT_NOR_STAT 0x18 /* R/W Status */ -#define IDT_NOR_RSQB 0x1C /* R/W Receive status queue base */ -#define IDT_NOR_RSQT 0x20 /* R Receive status queue tail */ -#define IDT_NOR_RSQH 0x24 /* R/W Receive status queue tail */ -#define IDT_NOR_CDC 0x28 /* R/W Cell drop counter */ -#define IDT_NOR_VPEC 0x2C /* R/W VPI/VCI Lookup error counter */ -#define IDT_NOR_ICC 0x30 /* R/W Invalid cell counter */ -#define IDT_NOR_RAWCT 0x34 /* R Raw cell tail */ -#define IDT_NOR_TMR 0x38 /* R Timer */ -#define IDT_NOR_TSTB 0x3C /* R/W Transmit schedule table base */ -#define IDT_NOR_TSQB 0x40 /* R/W Transmit Status queue base */ -#define IDT_NOR_TSQT 0x44 /* R/W Transmit Status queue tail */ -#define IDT_NOR_TSQH 0x48 /* R/W Transmit Status queue head */ -#define IDT_NOR_GP 0x4C /* R/W General purpose */ -#define IDT_NOR_VPM 0x50 /* R/W VPI/VCI mask */ -#define IDT_NOR_RXFD 0x54 /* R/W Receive FIFO descriptor */ -#define IDT_NOR_RXFT 0x58 /* R/W Receive FIFO tail */ -#define IDT_NOR_RXFH 0x5C /* R/W Receive FIFO head */ -#define IDT_NOR_RAWHND 0x60 /* R/W Raw cell handle */ -#define IDT_NOR_RXSTAT 0x64 /* R Receive connection state */ -#define IDT_NOR_ABRSTD 0x68 /* R/W ABR & VBR Schedule table descriptor */ -#define IDT_NOR_ABRRQ 0x6C /* R/W ABR Ready queue pointer */ -#define IDT_NOR_VBRRQ 0x70 /* R/W VBR Ready queue pointer */ -#define IDT_NOR_RTBL 0x74 /* R/W Rate table descriptor */ -#define IDT_NOR_MXDFCT 0x78 /* R/W Maximum deficit counter */ -#define IDT_NOR_TXSTAT 0x7C /* R/W Transmit connection state */ -#define IDT_NOR_TCMDQ 0x80 /* W Transmit command queue */ -#define IDT_NOR_IRCP 0x84 /* R/W Inactive receive connection pointer */ -#define IDT_NOR_FBQP0 0x88 /* R/W Free buffer queue 0 pointer */ -#define IDT_NOR_FBQP1 0x8C /* R/W Free buffer queue 1 pointer */ -#define IDT_NOR_FBQP2 0x90 /* R/W Free buffer queue 2 pointer */ -#define IDT_NOR_FBQP3 0x94 /* R/W Free buffer queue 3 pointer */ -#define IDT_NOR_FBQS0 0x98 /* R/W Free buffer queue 0 size */ -#define IDT_NOR_FBQS1 0x9C /* R/W Free buffer queue 1 size */ -#define IDT_NOR_FBQS2 0xA0 /* R/W Free buffer queue 2 size */ -#define IDT_NOR_FBQS3 0xA4 /* R/W Free buffer queue 3 size */ -#define IDT_NOR_FBQWP0 0xA8 /* R/W Free buffer queue 0 write pointer */ -#define IDT_NOR_FBQWP1 0xAC /* R/W Free buffer queue 1 write pointer */ -#define IDT_NOR_FBQWP2 0xB0 /* R/W Free buffer queue 2 write pointer */ -#define IDT_NOR_FBQWP3 0xB4 /* R/W Free buffer queue 3 write pointer */ -#define IDT_NOR_NOW 0xB8 /* R Current transmit schedule table addr */ -#define IDT_NOR_DNOW 0xBC /* R Dynamic Now register */ -#define IDT_NOR_END 0xC0 - -/* - * Command (IDT_NOR_CMD) - */ -#define IDT_CMD_NOP 0x00000000 /* No operation */ -#define IDT_CMD_OPCL 0x20000000 /* Open/Close connection */ -#define IDT_CMD_WSRAM 0x40000000 /* Write SRAM */ -#define IDT_CMD_RSRAM 0x50000000 /* Read SRAM */ -#define IDT_CMD_WFBQ 0x60000000 /* Write free buffer queue */ -#define IDT_CMD_RUTIL 0x80000000 /* Read utility bus */ -#define IDT_CMD_WUTIL 0x90000000 /* Write utility bus */ - -#define IDT_MKCMD_OPEN(VC) (IDT_CMD_OPCL | (1 << 19) | ((V) << 4)) -#define IDT_MKCMD_CLOSE(VC) (IDT_CMD_OPCL | (0 << 19) | ((V) << 4)) -#define IDT_MKCMD_WSRAM(A, S) (IDT_CMD_WSRAM | ((A) << 2) | (S)) -#define IDT_MKCMD_RSRAM(A) (IDT_CMD_RSRAM | ((A) << 2)) -#define IDT_MKCMD_WFBQ(Q) (IDT_CMD_WFBQ | (Q)) -#define IDT_MKCMD_RUTIL(S0, S1, A) \ - (IDT_CMD_RUTIL | ((S1) << 9) | ((S0) << 8) | (A)) -#define IDT_MKCMD_WUTIL(S0, S1, A) \ - (IDT_CMD_WUTIL | ((S1) << 9) | ((S0) << 8) | (A)) - -/* - * Configuration register (CFG) - */ -#define IDT_CFG_SWRST 0x80000000 /* software reset */ -#define IDT_CFG_LOOP 0x40000000 /* internal loopback enable */ -#define IDT_CFG_RXPTH 0x20000000 /* receive path enable */ -#define IDT_CFG_IDLECLP 0x10000000 /* set CLP in null cells */ -#define IDT_CFG_TXFIFO9 0x00000000 /* Tx FIFO 9 cells */ -#define IDT_CFG_TXFIFO1 0x04000000 /* Tx FIFO 1 cells */ -#define IDT_CFG_TXFIFO2 0x08000000 /* Tx FIFO 2 cells */ -#define IDT_CFG_TXFIFO4 0x0C000000 /* Tx FIFO 4 cells */ -#define IDT_CFG_NOIDLE 0x02000000 /* don't send idle cells */ -#define IDT_CFG_RXQ128 0x00000000 /* Rx Status Queue 128 entries */ -#define IDT_CFG_RXQ256 0x00400000 /* Rx Status Queue 256 entries */ -#define IDT_CFG_RXQ512 0x00800000 /* Rx Status Queue 512 entries */ -#define IDT_CFG_ICAPT 0x00200000 /* Invalid cell accept */ -#define IDT_CFG_IGGFC 0x00100000 /* Ignore GFC field */ -#define IDT_CFG_VP0 0x00000000 /* 0 VPI bits */ -#define IDT_CFG_VP1 0x00040000 /* 1 VPI bit */ -#define IDT_CFG_VP2 0x00080000 /* 2 VPI bits */ -#define IDT_CFG_VP8 0x000C0000 /* 8 VPI bits */ -#define IDT_CFG_CTS1K 0x00000000 /* Rx Connection table 1024 entries */ -#define IDT_CFG_CTS4K 0x00010000 /* Rx Connection table 4096 entries */ -#define IDT_CFG_CTS16K 0x00020000 /* Rx Connection table 16384 entries */ -#define IDT_CFG_CTS512 0x00030000 /* Rx Connection table 512 entries */ -#define IDT_CFG_VPECA 0x00008000 /* VPI/VCI error cell accept */ -#define IDT_CFG_RXINONE 0x00000000 /* No interrupt on receive */ -#define IDT_CFG_RXIIMM 0x00001000 /* immediate interrupt */ -#define IDT_CFG_RXI28 0x00002000 /* every 0x2800 clocks */ -#define IDT_CFG_RXI4F 0x00003000 /* every 0x4F00 clocks */ -#define IDT_CFG_RXI74 0x00004000 /* every 0x7400 clocks */ -#define IDT_CFG_RAWIE 0x00000800 /* raw cell queue interrupt enable */ -#define IDT_CFG_RQFIE 0x00000400 /* Rx status queue almost full IE */ -#define IDT_CFG_CACHE 0x00000100 /* begin DMA on cache line */ -#define IDT_CFG_TIMOIE 0x00000080 /* timer roll over interrupt enable */ -#define IDT_CFG_FBIE 0x00000040 /* free buffer queue interrupt enable */ -#define IDT_CFG_TXENB 0x00000020 /* Tx enable */ -#define IDT_CFG_TXINT 0x00000010 /* Tx status interrupt enable */ -#define IDT_CFG_TXUIE 0x00000008 /* Tx underrun interrupt enable */ -#define IDT_CFG_UMODE 0x00000004 /* utopia byte mode */ -#define IDT_CFG_TXSFI 0x00000002 /* Tx status full interrupt enable */ -#define IDT_CFG_PHYIE 0x00000001 /* PHY interrupt enable */ - -/* - * Status register (STAT) - */ -#define IDT_STAT_FRAC3(S) (((S) >> 28) & 0xf) /* FBQ3 valid */ -#define IDT_STAT_FRAC2(S) (((S) >> 24) & 0xf) /* FBQ2 valid */ -#define IDT_STAT_FRAC1(S) (((S) >> 20) & 0xf) /* FBQ1 valid */ -#define IDT_STAT_FRAC0(S) (((S) >> 16) & 0xf) /* FBQ0 valid */ -#define IDT_STAT_TSIF 0x00008000 /* Tx status indicator flag */ -#define IDT_STAT_TXICP 0x00004000 /* Tx incomplete PDU */ -#define IDT_STAT_TSQF 0x00001000 /* Tx status queue full */ -#define IDT_STAT_TMROF 0x00000800 /* Timer overflow */ -#define IDT_STAT_PHYI 0x00000400 /* PHY interrupt */ -#define IDT_STAT_CMDBZ 0x00000200 /* command busy */ -#define IDT_STAT_FBQ3A 0x00000100 /* FBQ 3 attention flag */ -#define IDT_STAT_FBQ2A 0x00000080 /* FBQ 2 attention flag */ -#define IDT_STAT_RSQF 0x00000040 /* Rx status queue full */ -#define IDT_STAT_EPDU 0x00000020 /* end of CS-PDU */ -#define IDT_STAT_RAWCF 0x00000010 /* raw cell flag */ -#define IDT_STAT_FBQ1A 0x00000008 /* FBQ 1 attention flag */ -#define IDT_STAT_FBQ0A 0x00000004 /* FBQ 0 attention flag */ -#define IDT_STAT_RSQAF 0x00000002 /* Rx status queue almost full */ - -/* - * Cell drop count (CDC) - */ -#define IDT_CDC_RMID 0x00400000 /* RM cell ID error */ -#define IDT_CDC_CTE 0x00200000 /* Rx connection table error */ -#define IDT_CDC_NFB 0x00100000 /* No free buffers */ -#define IDT_CDC_OAMCRC 0x00080000 /* bad OAM CRC */ -#define IDT_CDC_RMCRC 0x00040000 /* bad RM CRC */ -#define IDT_CDC_RMFIFO 0x00020000 /* RM FIFO full */ -#define IDT_CDC_RXFIFO 0x00010000 /* Rx FIFO full */ -#define IDT_CDC(S) ((S) & 0xffff) /* cell drop counter */ - -/* - * VPI/VCI lookup error count (VPEC) - */ -#define IDT_VPEC(S) ((S) & 0xffff) - -/* - * Invalid cell count (ICC) - */ -#define IDT_ICC(S) ((S) & 0xffff) - -/* - * General purpose register - */ -#define IDT_GP_TXNCC(S) (((S) >> 24) & 0xff) /* Tx negative cell count */ -#define IDT_GP_EEDI 0x00010000 /* EEPROM data in */ -#define IDT_GP_BIGE 0x00008000 /* big endian enable */ -#define IDT_GP_RM 0x00000000 /* process RM cells */ -#define IDT_GP_RM_TEE 0x00002000 /* process RM cells and put in RawQ */ -#define IDT_GP_RM_RAW 0x00006000 /* put RM cells in RawQ */ -#define IDT_GP_DLOOP 0x00001000 /* double loopback */ -#define IDT_GP_PCIPAR 0x00000010 /* force PCI parity error */ -#define IDT_GP_PCIPERR 0x00000020 /* force PERR */ -#define IDT_GP_PCISERR 0x00000040 /* force SERR */ -#define IDT_GP_PHY_RST 0x00000008 /* PHY reset */ -#define IDT_GP_EESCLK 0x00000004 /* EEPROM clock */ -#define IDT_GP_EECS 0x00000002 /* EEPROM chip select */ -#define IDT_GP_EEDO 0x00000001 /* EEPROM data out */ - -/* - * Receive FIFO descriptor register (RXFD) - */ -#define IDT_RXFD(A, S) (((S) << 24) | ((A) << 2)) -#define IDT_RXFDS(V) (((V) >> 24) & 0xf) -#define IDT_RXFDA(V) (((V) & 0x1ffffc) >> 2) - -/* - * ABR & VBR schedule table descriptor register - */ -#define IDT_ABRSTD(A, S) (((S) << 24) | ((A) << 2)) -#define IDT_ABRSTDS(V) (((V) >> 24) & 0x7) -#define IDT_ABRSTDA(V) (((V) & 0x1ffffc) >> 2) - -/* - * ABR/VBR ready queue register - */ -#define IDT_ABRRQH(V) (((V) >> 16) & 0x3fff) -#define IDT_ABRRQT(V) (((V) >> 0) & 0x3fff) -#define IDT_VBRRQH(V) (((V) >> 16) & 0x3fff) -#define IDT_VBRRQT(V) (((V) >> 0) & 0x3fff) - -/* - * Maximum deficit limit register - */ -#define IDT_MDFCT_LCI 0x00020000 /* local congestion indicator enable */ -#define IDT_MDFCT_LNI 0x00010000 /* local no incread enable */ - -/* - * Transmit command queue register - */ -#define IDT_TCMDQ_NOP() ((0x0 << 24)) /* no operation */ -#define IDT_TCMDQ_START(C) ((0x1 << 24) | (C)) /* start connection */ -#define IDT_TCMDQ_ULACR(C, L) ((0x2 << 24) | (C) | ((L) << 16)) - /* update LACR */ -#define IDT_TCMDQ_SLACR(C, L) ((0x3 << 24) | (C) | ((L) << 16)) - /* start and update LACR */ -#define IDT_TCMDQ_UIER(C, L) ((0x4 << 24) | (C) | ((L) << 16)) - /* update Int ER */ -#define IDT_TCMDQ_HALT(C) ((0x5 << 24) | (C)) /* halt connection */ - -/* - * Free buffer queue size registers - */ -#define IDT_FBQS(T, N, C, S) (((T) << 28) | ((N) << 24) | ((C) << 20) | (S)) - -/* - * Receive status queue - */ -struct idt_rsqe { - uint32_t cid; /* VPI/VCI */ - uint32_t handle; /* buffer handle */ - uint32_t crc; /* AAL-5 CRC */ - uint32_t stat; /* div. flags */ -}; -#define IDT_RSQE_SIZE 16 /* bytes */ -#define IDT_RSQE_VPI(CID) (((CID) >> 16) & 0xff) -#define IDT_RSQE_VCI(CID) ((CID) & 0xffff) -#define IDT_RSQE_TYPE(S) (((S) >> 30) & 0x3) -#define IDT_RSQE_DATA 0x2 -#define IDT_RSQE_IDLE 0x3 -#define IDT_RSQE_VALID 0x80000000 -#define IDT_RSQE_POOL(S) (((S) >> 16) & 0x3) -#define IDT_RSQE_BUF 0x8000 -#define IDT_RSQE_NZGFC 0x4000 -#define IDT_RSQE_EPDU 0x2000 -#define IDT_RSQE_CBUF 0x1000 -#define IDT_RSQE_EFCIE 0x0800 -#define IDT_RSQE_CLP 0x0400 -#define IDT_RSQE_CRC 0x0200 -#define IDT_RSQE_CNT(S) ((S) & 0x1ff) - -#define IDT_RSQH(R) (((R) & 0x1ffc) >> 2) -#define IDT_RSQT(R) (((R) & 0x1ffc) >> 2) - -/* - * Transmit status queue - */ -#define IDT_TSQ_SIZE 1024 /* no. of entries */ -#define IDT_TSQE_SIZE 8 /* bytes */ -#define IDT_TSQE_SHIFT 3 -struct idt_tsqe { - uint32_t stat; - uint32_t stamp; -}; -#define IDT_TSQE_EMPTY 0x80000000 -#define IDT_TSQE_TYPE(E) (((E) >> 29) & 0x3) -#define IDT_TSQE_TIMER 0x0 -#define IDT_TSQE_TSR 0x1 -#define IDT_TSQE_IDLE 0x2 -#define IDT_TSQE_TBD 0x3 -#define IDT_TSQE_TAG(E) (((E) >> 24) & 0x1f) -#define IDT_TSQE_HALTED 0x10 -#define IDT_TSQE_STAMP(E) ((E) & 0xffffff) -#define IDT_TSQE_TAG_SPACE 32 - -/* - * Raw cell handle - */ -struct idt_rawhnd { - uint32_t tail; - uint32_t handle; -}; -#define IDT_RAWHND_SIZE 8 - -/* - * TST - */ -#define IDT_TST_NULL (0 << 29) /* transmit NULL cell */ -#define IDT_TST_CBR (1 << 29) /* transmit CBR cell */ -#define IDT_TST_VBR (2 << 29) /* transmit [AVU]BR cell */ -#define IDT_TST_BR (3 << 29) /* branch */ -#define IDT_TST_MASK 0x7ffff - -/* - * Free buffer queue - */ -#define IDT_FBQ_SIZE 512 /* entries */ - -/* - * Receive connection table - */ -#define IDT_RCT_FBP2 0x00400000 /* use FBQ 2 */ -#define IDT_RCT_OPEN 0x00080000 /* connection open */ -#define IDT_RCT_AAL0 0x00000000 /* AAL 0 */ -#define IDT_RCT_AAL34 0x00010000 /* AAL 3/4 */ -#define IDT_RCT_AAL5 0x00020000 /* AAL 5 */ -#define IDT_RCT_AALRAW 0x00030000 /* raw cells */ -#define IDT_RCT_AALOAM 0x00040000 /* OAM cells */ -#define IDT_RCT_RCI 0x00008000 /* raw cell interrupt enable */ -#define IDT_RCT_IACT_CNT_MASK 0x1c000000 -#define IDT_RCT_IACT_CNT_SHIFT 26 -#define IDT_RCT_ENTRY_SIZE 4 /* words */ - -/* - * Transmit connection table - */ -#define IDT_TCT_CBR 0x00000000 -#define IDT_TCT_VBR 0x40000000 -#define IDT_TCT_ABR 0x80000000 -#define IDT_TCT_UBR 0x00000000 -#define IDT_TCT_UBR_FLG 0x80000000 /* word8 flag */ -#define IDT_TCT_HALT 0x80000000 /* connection halted */ -#define IDT_TCT_IDLE 0x40000000 /* connection idle */ -#define IDT_TCT_TSIF 0x00004000 -#define IDT_TCT_MAXIDLE 0x7f000000 -#define IDT_TCT_MBS_SHIFT 16 -#define IDT_TCT_CRM_SHIFT 29 -#define IDT_TCT_NAGE_SHIFT 21 -#define IDT_TCT_LMCR_SHIFT 24 -#define IDT_TCT_CDF_SHIFT 20 -#define IDT_TCT_RDF_SHIFT 14 -#define IDT_TCT_AIR_SHIFT 8 -#define IDT_TCT_ACRI_SHIFT 16 - -/* - * Segmentation channel queue - */ -#define IDT_SCQ_SIZE 64 /* number of entries */ -struct idt_tbd { - uint32_t flags; - uint32_t addr; - uint32_t aal5; - uint32_t hdr; -}; -#define IDT_TBD_SIZE 16 /* bytes */ -#define IDT_TBD_SHIFT 4 -#define IDT_TBD_TSR 0x80000000 /* TSR entry */ -#define IDT_TBD_EPDU 0x40000000 /* end of AAL PDU */ -#define IDT_TBD_TSIF 0x20000000 /* generate status */ -#define IDT_TBD_AAL0 0x00000000 /* AAL0 */ -#define IDT_TBD_AAL34 0x04000000 /* AAL3/4 */ -#define IDT_TBD_AAL5 0x08000000 /* AAL5 */ -#define IDT_TBD_AALOAM 0x10000000 /* OAM cells */ -#define IDT_TBD_GTSI 0x02000000 /* generate transmit status entry */ -#define IDT_TBD_TAG_SHIFT 20 -#define IDT_TBD_HDR(VPI, VCI, PTI, CLP) \ - (((VPI) << 20) | ((VCI) << 4) | ((PTI) << 1) | (CLP)) -#define IDT_TBD_VPI(H) (((H) >> 20) & 0xff) -#define IDT_TBD_VCI(H) (((H) >> 4) & 0xffff) - -/* - * Segmentation channel descriptor - */ -#define IDT_SCD_SIZE 12 /* words */ - -/* - * Memory map for the different RAM sizes - * - * 16k 32k 128k 512k - * - * TxCT 0x00000/4k 0x00000/8x 0x00000/32k 0x00000/128k - * RxCT 0x01000/2k 0x02000/4k 0x08000/16k 0x20000/64k - * FBQ0 0x01800/1k 0x03000/1k 0x0c000/1k 0x30000/1k - * FBQ1 0x01c00/1k 0x03400/1k 0x0c400/1k 0x30400/1k - * FBQ2 0x02000/1k 0x03800/1k 0x0c800/1k 0x30800/1k - * FBQ3 - - - - - * RT 0x02400/4.5k 0x03c00/4.5k 0x0cc00/4.5k 0x30c00/4.5k - * SCD 0x03600/597 0x04e00/1621 0x0de00/9358 0x31e00/43036 - * TST 0x06000/2x2k 0x0c000/2x4k 0x37000/2x8k 0xef000/2x16k - * ABR ST 0x07000/2x1k 0x0e000/2x2k 0x3b000/2x8k 0xf7000/2x16k - * RxFIFO 0x07800/2k 0x0f000/4k 0x3f000/4k 0xff000/4k - * End 0x08000 0x10000 0x40000 0x100000 - */ -struct idt_mmap { - u_int sram; /* K SRAM */ - u_int max_conn; /* connections */ - u_int vcbits; /* VPI + VCI bits */ - u_int rxtab; /* CFG word for CNTBL field */ - u_int rct; /* RCT base */ - u_int rtables; /* rate table address */ - u_int scd_base; /* SCD area base address */ - u_int scd_num; /* number of SCDs */ - u_int tst1base; /* base address of TST 1 */ - u_int tst_size; /* TST size in words */ - u_int abrstd_addr; /* schedule table address */ - u_int abrstd_size; /* schedule table size */ - u_int abrstd_code; /* schedule table size */ - u_int rxfifo_addr; /* address */ - u_int rxfifo_size; /* in words */ - u_int rxfifo_code; /* size */ -}; -#define IDT_MMAP { \ - { /* 16k x 32, 512 connections */ \ - 16, 512, 9, IDT_CFG_CTS512, /* RAM, connections, VC bits */ \ - 0x01000, /* RCT base */ \ - 0x02400, /* rate table address */ \ - 0x03600, 597, /* SCD base and num */ \ - 0x06000, 2048, /* TST/words, base */ \ - 0x07000, 2048, 0x1, /* ABR schedule table */ \ - 0x07800, 2048, 0x2 /* RxFIFO size in words */ \ - }, \ - { /* 32k x 32, 1024 connections */ \ - 32, 1024, 10, IDT_CFG_CTS1K, /* RAM, connections, VC bits */ \ - 0x02000, /* RCT base */ \ - 0x03c00, /* rate table address */ \ - 0x04e00, 1621, /* SCD base and num */ \ - 0x0c000, 4096, /* TST/words, base */ \ - 0x0e000, 4096, 0x2, /* ABR schedule table */ \ - 0x0f000, 4096, 0x3 /* RxFIFO size in words */ \ - }, \ - { /* 128k x 32, 4096 connections */ \ - 128, 4096, 12, IDT_CFG_CTS4K, /* RAM, connections, VC bits */ \ - 0x08000, /* RCT base */ \ - 0x0cc00, /* rate table address */ \ - 0x0de00, 9358, /* SCD base and num */ \ - 0x37000, 8192, /* TST/words, base */ \ - 0x3b000, 16384, 0x4, /* ABR schedule table */ \ - 0x3f000, 4096, 0x3 /* RxFIFO size in words */ \ - }, \ - { /* 512k x 32, 512 connections */ \ - 512, 16384, 14, IDT_CFG_CTS16K, /* RAM, connections, VC bits */\ - 0x20000, /* RCT base */ \ - 0x30c00, /* rate table address */ \ - 0x31e00, 43036, /* SCD base and num */ \ - 0xef000, 16384, /* TST/words, base */ \ - 0xf7000, 16384, 0x5, /* ABR schedule table */ \ - 0xff000, 4096, 0x3 /* RxFIFO size in words */ \ - }, \ -} diff --git a/sys/dev/patm/if_patm.c b/sys/dev/patm/if_patm.c deleted file mode 100644 index a09eeea151ff..000000000000 --- a/sys/dev/patm/if_patm.c +++ /dev/null @@ -1,512 +0,0 @@ -/*- - * Copyright (c) 2003 - * Fraunhofer Institute for Open Communication Systems (FhG Fokus). - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * Author: Hartmut Brandt <harti@freebsd.org> - * - * Driver for IDT77252 based cards like ProSum's. - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include "opt_inet.h" -#include "opt_natm.h" - -#include <sys/types.h> -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/malloc.h> -#include <sys/kernel.h> -#include <sys/bus.h> -#include <sys/errno.h> -#include <sys/conf.h> -#include <sys/module.h> -#include <sys/lock.h> -#include <sys/mutex.h> -#include <sys/sysctl.h> -#include <sys/queue.h> -#include <sys/condvar.h> -#include <sys/endian.h> -#include <vm/uma.h> - -#include <sys/sockio.h> -#include <sys/mbuf.h> -#include <sys/socket.h> - -#include <net/if.h> -#include <net/if_var.h> -#include <net/if_media.h> -#include <net/if_atm.h> -#include <net/route.h> -#include <netinet/in.h> -#include <netinet/if_atm.h> - -#include <machine/bus.h> -#include <machine/resource.h> -#include <sys/bus.h> -#include <sys/rman.h> -#include <sys/mbpool.h> - -#include <dev/utopia/utopia.h> -#include <dev/patm/idt77252reg.h> -#include <dev/patm/if_patmvar.h> - -static void patm_tst_init(struct patm_softc *sc); -static void patm_scd_init(struct patm_softc *sc); - -/* - * Start the card. This assumes the mutex to be held - */ -void -patm_initialize(struct patm_softc *sc) -{ - uint32_t cfg; - u_int i; - - patm_debug(sc, ATTACH, "configuring..."); - - /* clear SRAM */ - for (i = 0; i < sc->mmap->sram * 1024; i += 4) - patm_sram_write4(sc, i, 0, 0, 0, 0); - patm_scd_init(sc); - - /* configuration register. Setting NOIDLE makes the timing wrong! */ - cfg = IDT_CFG_TXFIFO9 | IDT_CFG_RXQ512 | PATM_CFG_VPI | - /* IDT_CFG_NOIDLE | */ sc->mmap->rxtab; - if (!(sc->flags & PATM_UNASS)) - cfg |= IDT_CFG_IDLECLP; - patm_nor_write(sc, IDT_NOR_CFG, cfg); - - /* clean all the status queues and the Raw handle */ - memset(sc->tsq, 0, sc->sq_size); - - /* initialize RSQ */ - patm_debug(sc, ATTACH, "RSQ %llx", (unsigned long long)sc->rsq_phy); - patm_nor_write(sc, IDT_NOR_RSQB, sc->rsq_phy); - patm_nor_write(sc, IDT_NOR_RSQT, sc->rsq_phy); - patm_nor_write(sc, IDT_NOR_RSQH, 0); - sc->rsq_last = PATM_RSQ_SIZE - 1; - - /* initialize TSTB */ - patm_nor_write(sc, IDT_NOR_TSTB, sc->mmap->tst1base << 2); - patm_tst_init(sc); - - /* initialize TSQ */ - for (i = 0; i < IDT_TSQ_SIZE; i++) - sc->tsq[i].stamp = htole32(IDT_TSQE_EMPTY); - patm_nor_write(sc, IDT_NOR_TSQB, sc->tsq_phy); - patm_nor_write(sc, IDT_NOR_TSQH, 0); - patm_nor_write(sc, IDT_NOR_TSQT, 0); - sc->tsq_next = sc->tsq; - - /* GP */ -#if BYTE_ORDER == BIG_ENDIAN && 0 - patm_nor_write(sc, IDT_NOR_GP, IDT_GP_BIGE); -#else - patm_nor_write(sc, IDT_NOR_GP, 0); -#endif - - /* VPM */ - patm_nor_write(sc, IDT_NOR_VPM, 0); - - /* RxFIFO */ - patm_nor_write(sc, IDT_NOR_RXFD, - IDT_RXFD(sc->mmap->rxfifo_addr, sc->mmap->rxfifo_code)); - patm_nor_write(sc, IDT_NOR_RXFT, 0); - patm_nor_write(sc, IDT_NOR_RXFH, 0); - - /* RAWHND */ - patm_debug(sc, ATTACH, "RWH %llx", - (unsigned long long)sc->rawhnd_phy); - patm_nor_write(sc, IDT_NOR_RAWHND, sc->rawhnd_phy); - - /* ABRSTD */ - patm_nor_write(sc, IDT_NOR_ABRSTD, - IDT_ABRSTD(sc->mmap->abrstd_addr, sc->mmap->abrstd_code)); - for (i = 0; i < sc->mmap->abrstd_size; i++) - patm_sram_write(sc, sc->mmap->abrstd_addr + i, 0); - patm_nor_write(sc, IDT_NOR_ABRRQ, 0); - patm_nor_write(sc, IDT_NOR_VBRRQ, 0); - - /* rate tables */ - if (sc->flags & PATM_25M) { - for (i = 0; i < patm_rtables_size; i++) - patm_sram_write(sc, sc->mmap->rtables + i, - patm_rtables25[i]); - } else { - for (i = 0; i < patm_rtables_size; i++) - patm_sram_write(sc, sc->mmap->rtables + i, - patm_rtables155[i]); - } - patm_nor_write(sc, IDT_NOR_RTBL, sc->mmap->rtables << 2); - - /* Maximum deficit */ - patm_nor_write(sc, IDT_NOR_MXDFCT, 32 | IDT_MDFCT_LCI | IDT_MDFCT_LNI); - - /* Free buffer queues */ - patm_nor_write(sc, IDT_NOR_FBQP0, 0); - patm_nor_write(sc, IDT_NOR_FBQP1, 0); - patm_nor_write(sc, IDT_NOR_FBQP2, 0); - patm_nor_write(sc, IDT_NOR_FBQP3, 0); - - patm_nor_write(sc, IDT_NOR_FBQWP0, 0); - patm_nor_write(sc, IDT_NOR_FBQWP1, 0); - patm_nor_write(sc, IDT_NOR_FBQWP2, 0); - patm_nor_write(sc, IDT_NOR_FBQWP3, 0); - - patm_nor_write(sc, IDT_NOR_FBQS0, - (SMBUF_THRESHOLD << 28) | - (SMBUF_NI_THRESH << 24) | - (SMBUF_CI_THRESH << 20) | - SMBUF_CELLS); - patm_nor_write(sc, IDT_NOR_FBQS1, - (LMBUF_THRESHOLD << 28) | - (LMBUF_NI_THRESH << 24) | - (LMBUF_CI_THRESH << 20) | - LMBUF_CELLS); - patm_nor_write(sc, IDT_NOR_FBQS2, - (VMBUF_THRESHOLD << 28) | VMBUF_CELLS); - patm_nor_write(sc, IDT_NOR_FBQS3, 0); - - /* make SCD0 for UBR0 */ - if ((sc->scd0 = patm_scd_alloc(sc)) == NULL) { - patm_printf(sc, "cannot create UBR0 SCD\n"); - patm_reset(sc); - return; - } - sc->scd0->q.ifq_maxlen = PATM_DLFT_MAXQ; - - patm_scd_setup(sc, sc->scd0); - patm_tct_setup(sc, sc->scd0, NULL); - - patm_debug(sc, ATTACH, "go..."); - - sc->utopia.flags &= ~UTP_FL_POLL_CARRIER; - sc->ifp->if_drv_flags |= IFF_DRV_RUNNING; - - /* enable interrupts, Tx and Rx paths */ - cfg |= IDT_CFG_RXPTH | IDT_CFG_RXIIMM | IDT_CFG_RAWIE | IDT_CFG_RQFIE | - IDT_CFG_TIMOIE | IDT_CFG_FBIE | IDT_CFG_TXENB | IDT_CFG_TXINT | - IDT_CFG_TXUIE | IDT_CFG_TXSFI | IDT_CFG_PHYIE; - patm_nor_write(sc, IDT_NOR_CFG, cfg); - - for (i = 0; i < sc->mmap->max_conn; i++) - if (sc->vccs[i] != NULL) - patm_load_vc(sc, sc->vccs[i], 1); - - ATMEV_SEND_IFSTATE_CHANGED(IFP2IFATM(sc->ifp), - sc->utopia.carrier == UTP_CARR_OK); -} - -/* - * External callable start function - */ -void -patm_init(void *p) -{ - struct patm_softc *sc = p; - - mtx_lock(&sc->mtx); - patm_stop(sc); - patm_initialize(sc); - mtx_unlock(&sc->mtx); -} - -/* - * Stop the interface - */ -void -patm_stop(struct patm_softc *sc) -{ - u_int i; - struct mbuf *m; - struct patm_txmap *map; - struct patm_scd *scd; - - sc->ifp->if_drv_flags &= ~IFF_DRV_RUNNING; - sc->utopia.flags |= UTP_FL_POLL_CARRIER; - - patm_reset(sc); - - mtx_lock(&sc->tst_lock); - i = sc->tst_state; - sc->tst_state = 0; - callout_stop(&sc->tst_callout); - mtx_unlock(&sc->tst_lock); - - if (i != 0) { - /* this means we are just entering or leaving the timeout. - * wait a little bit. Doing this correctly would be more - * involved */ - DELAY(1000); - } - - /* - * Give any waiters on closing a VCC a chance. They will stop - * to wait if they see that IFF_DRV_RUNNING disappeared. - */ - cv_broadcast(&sc->vcc_cv); - - /* free large buffers */ - patm_debug(sc, ATTACH, "freeing large buffers..."); - for (i = 0; i < sc->lbuf_max; i++) - if (sc->lbufs[i].m != NULL) - patm_lbuf_free(sc, &sc->lbufs[i]); - - /* free small buffers that are on the card */ - patm_debug(sc, ATTACH, "freeing small buffers..."); - mbp_card_free(sc->sbuf_pool); - - /* free aal0 buffers that are on the card */ - patm_debug(sc, ATTACH, "freeing aal0 buffers..."); - mbp_card_free(sc->vbuf_pool); - - /* freeing partial receive chains and reset vcc state */ - for (i = 0; i < sc->mmap->max_conn; i++) { - if (sc->vccs[i] != NULL) { - if (sc->vccs[i]->chain != NULL) { - m_freem(sc->vccs[i]->chain); - sc->vccs[i]->chain = NULL; - sc->vccs[i]->last = NULL; - } - - if (sc->vccs[i]->vflags & (PATM_VCC_RX_CLOSING | - PATM_VCC_TX_CLOSING)) { - uma_zfree(sc->vcc_zone, sc->vccs[i]); - sc->vccs[i] = NULL; - } else { - /* keep */ - sc->vccs[i]->vflags &= ~PATM_VCC_OPEN; - sc->vccs[i]->cps = 0; - sc->vccs[i]->scd = NULL; - } - } - } - - /* stop all active SCDs */ - while ((scd = LIST_FIRST(&sc->scd_list)) != NULL) { - /* free queue packets */ - for (;;) { - _IF_DEQUEUE(&scd->q, m); - if (m == NULL) - break; - m_freem(m); - } - - /* free transmitting packets */ - for (i = 0; i < IDT_TSQE_TAG_SPACE; i++) { - if ((m = scd->on_card[i]) != NULL) { - scd->on_card[i] = 0; - map = m->m_pkthdr.PH_loc.ptr; - - bus_dmamap_unload(sc->tx_tag, map->map); - SLIST_INSERT_HEAD(&sc->tx_maps_free, map, link); - m_freem(m); - } - } - patm_scd_free(sc, scd); - } - sc->scd0 = NULL; - - sc->flags &= ~PATM_CLR; - - /* reset raw cell queue */ - sc->rawh = NULL; - - ATMEV_SEND_IFSTATE_CHANGED(IFP2IFATM(sc->ifp), - sc->utopia.carrier == UTP_CARR_OK); -} - -/* - * Stop the card and reset it - */ -void -patm_reset(struct patm_softc *sc) -{ - - patm_debug(sc, ATTACH, "resetting..."); - - patm_nor_write(sc, IDT_NOR_CFG, IDT_CFG_SWRST); - DELAY(200); - patm_nor_write(sc, IDT_NOR_CFG, 0); - DELAY(200); - - patm_nor_write(sc, IDT_NOR_RSQH, 0); - patm_nor_write(sc, IDT_NOR_TSQH, 0); - - patm_nor_write(sc, IDT_NOR_GP, IDT_GP_PHY_RST); - DELAY(50); - patm_nor_write(sc, IDT_NOR_GP, IDT_GP_EEDO | IDT_GP_EECS); - DELAY(50); -} - -/* - * Initialize the soft TST to contain only ABR scheduling and - * write it to SRAM - */ -static void -patm_tst_init(struct patm_softc *sc) -{ - u_int i; - u_int base, idle; - - base = sc->mmap->tst1base; - idle = sc->mmap->tst1base + sc->mmap->tst_size; - - /* soft */ - for (i = 0; i < sc->mmap->tst_size - 1; i++) - sc->tst_soft[i] = IDT_TST_VBR; - - sc->tst_state = 0; - sc->tst_jump[0] = base + sc->mmap->tst_size - 1; - sc->tst_jump[1] = idle + sc->mmap->tst_size - 1; - sc->tst_base[0] = base; - sc->tst_base[1] = idle; - - /* TST1 */ - for (i = 0; i < sc->mmap->tst_size - 1; i++) - patm_sram_write(sc, base + i, IDT_TST_VBR); - patm_sram_write(sc, sc->tst_jump[0], IDT_TST_BR | (base << 2)); - - /* TST2 */ - for (i = 0; i < sc->mmap->tst_size - 1; i++) - patm_sram_write(sc, idle + i, IDT_TST_VBR); - patm_sram_write(sc, sc->tst_jump[1], IDT_TST_BR | (idle << 2)); - - sc->tst_free = sc->mmap->tst_size - 1; - sc->tst_reserve = sc->tst_free * PATM_TST_RESERVE / 100; - sc->bwrem = IFP2IFATM(sc->ifp)->mib.pcr; -} - -/* - * Initialize the SCDs. This is done by building a list of all free - * SCDs in SRAM. The first word of each potential SCD is used as a - * link to the next free SCD. The list is rooted in softc. - */ -static void -patm_scd_init(struct patm_softc *sc) -{ - u_int s; /* SRAM address of current SCD */ - - sc->scd_free = 0; - for (s = sc->mmap->scd_base; s + 12 <= sc->mmap->tst1base; s += 12) { - patm_sram_write(sc, s, sc->scd_free); - sc->scd_free = s; - } -} - -/* - * allocate an SCQ - */ -struct patm_scd * -patm_scd_alloc(struct patm_softc *sc) -{ - u_int sram, next; /* SRAM address of this and next SCD */ - int error; - void *p; - struct patm_scd *scd; - bus_dmamap_t map; - bus_addr_t phy; - - /* get an SCD from the free list */ - if ((sram = sc->scd_free) == 0) - return (NULL); - next = patm_sram_read(sc, sram); - - /* allocate memory for the queue and our host stuff */ - error = bus_dmamem_alloc(sc->scd_tag, &p, BUS_DMA_NOWAIT, &map); - if (error != 0) - return (NULL); - phy = 0x3ff; - error = bus_dmamap_load(sc->scd_tag, map, p, sizeof(scd->scq), - patm_load_callback, &phy, BUS_DMA_NOWAIT); - if (error != 0) { - bus_dmamem_free(sc->scd_tag, p, map); - return (NULL); - } - KASSERT((phy & 0x1ff) == 0, ("SCD not aligned %lx", (u_long)phy)); - - scd = p; - bzero(scd, sizeof(*scd)); - - scd->sram = sram; - scd->phy = phy; - scd->map = map; - scd->space = IDT_SCQ_SIZE; - scd->last_tag = IDT_TSQE_TAG_SPACE - 1; - scd->q.ifq_maxlen = PATM_TX_IFQLEN; - - /* remove the scd from the free list */ - sc->scd_free = next; - LIST_INSERT_HEAD(&sc->scd_list, scd, link); - - return (scd); -} - -/* - * Free an SCD - */ -void -patm_scd_free(struct patm_softc *sc, struct patm_scd *scd) -{ - - LIST_REMOVE(scd, link); - - /* clear SCD and insert link word */ - patm_sram_write4(sc, scd->sram, sc->scd_free, 0, 0, 0); - patm_sram_write4(sc, scd->sram, 0, 0, 0, 0); - patm_sram_write4(sc, scd->sram, 0, 0, 0, 0); - - /* put on free list */ - sc->scd_free = scd->sram; - - /* free memory */ - bus_dmamap_unload(sc->scd_tag, scd->map); - bus_dmamem_free(sc->scd_tag, scd, scd->map); -} - -/* - * DMA loading helper function. This function handles the loading of - * all one segment DMA maps. The argument is a pointer to a bus_addr_t - * which must contain the desired alignment of the address as a bitmap. - */ -void -patm_load_callback(void *arg, bus_dma_segment_t *segs, int nsegs, int error) -{ - bus_addr_t *phy = arg; - - if (error) - return; - - KASSERT(nsegs == 1, - ("too many segments for DMA: %d", nsegs)); - KASSERT(segs[0].ds_addr <= 0xffffffffUL, - ("phys addr too large %lx", (u_long)segs[0].ds_addr)); - KASSERT((segs[0].ds_addr & *phy) == 0, - ("bad alignment %lx:%lx", (u_long)segs[0].ds_addr, (u_long)*phy)); - - *phy = segs[0].ds_addr; -} diff --git a/sys/dev/patm/if_patm_attach.c b/sys/dev/patm/if_patm_attach.c deleted file mode 100644 index 8d936bbeb374..000000000000 --- a/sys/dev/patm/if_patm_attach.c +++ /dev/null @@ -1,1076 +0,0 @@ -/*- - * Copyright (c) 2003 - * Fraunhofer Institute for Open Communication Systems (FhG Fokus). - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * Author: Hartmut Brandt <harti@freebsd.org> - * - * Driver for IDT77252 based cards like ProSum's. - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include "opt_inet.h" -#include "opt_natm.h" - -#include <sys/types.h> -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/malloc.h> -#include <sys/kernel.h> -#include <sys/bus.h> -#include <sys/errno.h> -#include <sys/conf.h> -#include <sys/module.h> -#include <sys/lock.h> -#include <sys/mutex.h> -#include <sys/sysctl.h> -#include <sys/queue.h> -#include <sys/condvar.h> -#include <vm/uma.h> - -#include <sys/sockio.h> -#include <sys/mbuf.h> -#include <sys/socket.h> - -#include <net/if.h> -#include <net/if_var.h> -#include <net/if_media.h> -#include <net/if_types.h> -#include <net/if_atm.h> -#include <net/route.h> -#ifdef ENABLE_BPF -#include <net/bpf.h> -#endif -#include <netinet/in.h> -#include <netinet/if_atm.h> - -#include <machine/bus.h> -#include <machine/resource.h> -#include <sys/bus.h> -#include <sys/rman.h> -#include <sys/mbpool.h> -#include <dev/pci/pcireg.h> -#include <dev/pci/pcivar.h> - -#include <dev/utopia/utopia.h> -#include <dev/patm/idt77252reg.h> -#include <dev/patm/if_patmvar.h> - -MODULE_DEPEND(patm, utopia, 1, 1, 1); -MODULE_DEPEND(patm, pci, 1, 1, 1); -MODULE_DEPEND(patm, atm, 1, 1, 1); -MODULE_DEPEND(patm, libmbpool, 1, 1, 1); - -devclass_t patm_devclass; - -static int patm_probe(device_t dev); -static int patm_attach(device_t dev); -static int patm_detach(device_t dev); -static device_method_t patm_methods[] = { - DEVMETHOD(device_probe, patm_probe), - DEVMETHOD(device_attach, patm_attach), - DEVMETHOD(device_detach, patm_detach), - {0,0} -}; -static driver_t patm_driver = { - "patm", - patm_methods, - sizeof(struct patm_softc), -}; -DRIVER_MODULE(patm, pci, patm_driver, patm_devclass, NULL, 0); - -static const struct { - u_int devid; - const char *desc; -} devs[] = { - { PCI_DEVICE_IDT77252, "NICStAR (77222/77252) ATM adapter" }, - { PCI_DEVICE_IDT77v252, "NICStAR (77v252) ATM adapter" }, - { PCI_DEVICE_IDT77v222, "NICStAR (77v222) ATM adapter" }, - { 0, NULL } -}; - -SYSCTL_DECL(_hw_atm); - -static int patm_phy_readregs(struct ifatm *, u_int, uint8_t *, u_int *); -static int patm_phy_writereg(struct ifatm *, u_int, u_int, u_int); -static const struct utopia_methods patm_utopia_methods = { - patm_phy_readregs, - patm_phy_writereg -}; - -static void patm_destroy(struct patm_softc *sc); - -static int patm_sysctl_istats(SYSCTL_HANDLER_ARGS); -static int patm_sysctl_eeprom(SYSCTL_HANDLER_ARGS); - -static void patm_read_eeprom(struct patm_softc *sc); -static int patm_sq_init(struct patm_softc *sc); -static int patm_rbuf_init(struct patm_softc *sc); -static int patm_txmap_init(struct patm_softc *sc); - -static void patm_env_getuint(struct patm_softc *, u_int *, const char *); - -#ifdef PATM_DEBUG -static int patm_sysctl_regs(SYSCTL_HANDLER_ARGS); -static int patm_sysctl_tsq(SYSCTL_HANDLER_ARGS); -int patm_dump_vc(u_int unit, u_int vc) __unused; -int patm_dump_regs(u_int unit) __unused; -int patm_dump_sram(u_int unit, u_int from, u_int words) __unused; -#endif - -/* - * Probe for a IDT77252 controller - */ -static int -patm_probe(device_t dev) -{ - u_int i; - - if (pci_get_vendor(dev) == PCI_VENDOR_IDT) { - for (i = 0; devs[i].desc != NULL; i++) - if (pci_get_device(dev) == devs[i].devid) { - device_set_desc(dev, devs[i].desc); - return (BUS_PROBE_DEFAULT); - } - } - return (ENXIO); -} - -/* - * Attach - */ -static int -patm_attach(device_t dev) -{ - struct patm_softc *sc; - int error; - struct ifnet *ifp; - int rid; - u_int a; - - static const struct idt_mmap idt_mmap[4] = IDT_MMAP; - - sc = device_get_softc(dev); - - sc->dev = dev; -#ifdef IATM_DEBUG - sc->debug = IATM_DEBUG; -#endif - ifp = sc->ifp = if_alloc(IFT_ATM); - if (ifp == NULL) { - return (ENOSPC); - } - - IFP2IFATM(sc->ifp)->mib.device = ATM_DEVICE_IDTABR25; - IFP2IFATM(sc->ifp)->mib.serial = 0; - IFP2IFATM(sc->ifp)->mib.hw_version = 0; - IFP2IFATM(sc->ifp)->mib.sw_version = 0; - IFP2IFATM(sc->ifp)->mib.vpi_bits = PATM_VPI_BITS; - IFP2IFATM(sc->ifp)->mib.vci_bits = 0; /* set below */ - IFP2IFATM(sc->ifp)->mib.max_vpcs = 0; - IFP2IFATM(sc->ifp)->mib.max_vccs = 0; /* set below */ - IFP2IFATM(sc->ifp)->mib.media = IFM_ATM_UNKNOWN; - IFP2IFATM(sc->ifp)->phy = &sc->utopia; - - ifp->if_softc = sc; - if_initname(ifp, device_get_name(dev), device_get_unit(dev)); - ifp->if_flags = IFF_SIMPLEX; - ifp->if_init = patm_init; - ifp->if_ioctl = patm_ioctl; - ifp->if_start = patm_start; - - /* do this early so we can destroy unconditionally */ - mtx_init(&sc->mtx, device_get_nameunit(dev), - MTX_NETWORK_LOCK, MTX_DEF); - mtx_init(&sc->tst_lock, "tst lock", NULL, MTX_DEF); - cv_init(&sc->vcc_cv, "vcc_close"); - - callout_init(&sc->tst_callout, 1); - - sysctl_ctx_init(&sc->sysctl_ctx); - - /* - * Get revision - */ - sc->revision = pci_read_config(dev, PCIR_REVID, 4) & 0xf; - - /* - * Enable PCI bus master and memory - */ - pci_enable_busmaster(dev); - - rid = IDT_PCI_REG_MEMBASE; - sc->memres = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, - RF_ACTIVE); - if (sc->memres == NULL) { - patm_printf(sc, "could not map memory\n"); - error = ENXIO; - goto fail; - } - sc->memh = rman_get_bushandle(sc->memres); - sc->memt = rman_get_bustag(sc->memres); - - /* - * Allocate the interrupt (enable it later) - */ - sc->irqid = 0; - sc->irqres = bus_alloc_resource_any(dev, SYS_RES_IRQ, &sc->irqid, - RF_SHAREABLE | RF_ACTIVE); - if (sc->irqres == 0) { - patm_printf(sc, "could not allocate irq\n"); - error = ENXIO; - goto fail; - } - - /* - * Construct the sysctl tree - */ - error = ENOMEM; - if ((sc->sysctl_tree = SYSCTL_ADD_NODE(&sc->sysctl_ctx, - SYSCTL_STATIC_CHILDREN(_hw_atm), OID_AUTO, - device_get_nameunit(dev), CTLFLAG_RD, 0, "")) == NULL) - goto fail; - - if (SYSCTL_ADD_PROC(&sc->sysctl_ctx, SYSCTL_CHILDREN(sc->sysctl_tree), - OID_AUTO, "istats", CTLTYPE_OPAQUE | CTLFLAG_RD, sc, 0, - patm_sysctl_istats, "S", "internal statistics") == NULL) - goto fail; - - if (SYSCTL_ADD_PROC(&sc->sysctl_ctx, SYSCTL_CHILDREN(sc->sysctl_tree), - OID_AUTO, "eeprom", CTLTYPE_OPAQUE | CTLFLAG_RD, sc, 0, - patm_sysctl_eeprom, "S", "EEPROM contents") == NULL) - goto fail; - - if (SYSCTL_ADD_UINT(&sc->sysctl_ctx, SYSCTL_CHILDREN(sc->sysctl_tree), - OID_AUTO, "lbuf_max", CTLFLAG_RD, &sc->lbuf_max, - 0, "maximum number of large receive buffers") == NULL) - goto fail; - patm_env_getuint(sc, &sc->lbuf_max, "lbuf_max"); - - if (SYSCTL_ADD_UINT(&sc->sysctl_ctx, SYSCTL_CHILDREN(sc->sysctl_tree), - OID_AUTO, "max_txmaps", CTLFLAG_RW, &sc->tx_maxmaps, - 0, "maximum number of TX DMA maps") == NULL) - goto fail; - patm_env_getuint(sc, &sc->tx_maxmaps, "tx_maxmaps"); - -#ifdef PATM_DEBUG - if (SYSCTL_ADD_UINT(&sc->sysctl_ctx, SYSCTL_CHILDREN(sc->sysctl_tree), - OID_AUTO, "debug", CTLFLAG_RW, &sc->debug, - 0, "debug flags") == NULL) - goto fail; - sc->debug = PATM_DEBUG; - patm_env_getuint(sc, &sc->debug, "debug"); - - if (SYSCTL_ADD_PROC(&sc->sysctl_ctx, SYSCTL_CHILDREN(sc->sysctl_tree), - OID_AUTO, "regs", CTLTYPE_OPAQUE | CTLFLAG_RD, sc, 0, - patm_sysctl_regs, "S", "registers") == NULL) - goto fail; - - if (SYSCTL_ADD_PROC(&sc->sysctl_ctx, SYSCTL_CHILDREN(sc->sysctl_tree), - OID_AUTO, "tsq", CTLTYPE_OPAQUE | CTLFLAG_RD, sc, 0, - patm_sysctl_tsq, "S", "TSQ") == NULL) - goto fail; -#endif - - patm_reset(sc); - - /* - * Detect and attach the phy. - */ - patm_debug(sc, ATTACH, "attaching utopia"); - IFP2IFATM(sc->ifp)->phy = &sc->utopia; - utopia_attach(&sc->utopia, IFP2IFATM(sc->ifp), &sc->media, &sc->mtx, - &sc->sysctl_ctx, SYSCTL_CHILDREN(sc->sysctl_tree), - &patm_utopia_methods); - - /* - * Start the PHY because we need the autodetection - */ - patm_debug(sc, ATTACH, "starting utopia"); - mtx_lock(&sc->mtx); - utopia_start(&sc->utopia); - utopia_reset(&sc->utopia); - mtx_unlock(&sc->mtx); - - /* Read EEPROM */ - patm_read_eeprom(sc); - - /* analyze it */ - if (strncmp(sc->eeprom + PATM_PROATM_NAME_OFFSET, PATM_PROATM_NAME, - strlen(PATM_PROATM_NAME)) == 0) { - if (sc->utopia.chip->type == UTP_TYPE_IDT77105) { - IFP2IFATM(sc->ifp)->mib.device = ATM_DEVICE_PROATM25; - IFP2IFATM(sc->ifp)->mib.pcr = ATM_RATE_25_6M; - IFP2IFATM(sc->ifp)->mib.media = IFM_ATM_UTP_25; - sc->flags |= PATM_25M; - patm_printf(sc, "ProATM 25 interface; "); - - } else { - /* cannot really know which media */ - IFP2IFATM(sc->ifp)->mib.device = ATM_DEVICE_PROATM155; - IFP2IFATM(sc->ifp)->mib.pcr = ATM_RATE_155M; - IFP2IFATM(sc->ifp)->mib.media = IFM_ATM_MM_155; - patm_printf(sc, "ProATM 155 interface; "); - } - - bcopy(sc->eeprom + PATM_PROATM_MAC_OFFSET, IFP2IFATM(sc->ifp)->mib.esi, - sizeof(IFP2IFATM(sc->ifp)->mib.esi)); - - } else { - if (sc->utopia.chip->type == UTP_TYPE_IDT77105) { - IFP2IFATM(sc->ifp)->mib.device = ATM_DEVICE_IDTABR25; - IFP2IFATM(sc->ifp)->mib.pcr = ATM_RATE_25_6M; - IFP2IFATM(sc->ifp)->mib.media = IFM_ATM_UTP_25; - sc->flags |= PATM_25M; - patm_printf(sc, "IDT77252 25MBit interface; "); - - } else { - /* cannot really know which media */ - IFP2IFATM(sc->ifp)->mib.device = ATM_DEVICE_IDTABR155; - IFP2IFATM(sc->ifp)->mib.pcr = ATM_RATE_155M; - IFP2IFATM(sc->ifp)->mib.media = IFM_ATM_MM_155; - patm_printf(sc, "IDT77252 155MBit interface; "); - } - - bcopy(sc->eeprom + PATM_IDT_MAC_OFFSET, IFP2IFATM(sc->ifp)->mib.esi, - sizeof(IFP2IFATM(sc->ifp)->mib.esi)); - } - printf("idt77252 Rev. %c; %s PHY\n", 'A' + sc->revision, - sc->utopia.chip->name); - - utopia_reset_media(&sc->utopia); - utopia_init_media(&sc->utopia); - - /* - * Determine RAM size - */ - for (a = 0; a < 0x20000; a++) - patm_sram_write(sc, a, 0); - patm_sram_write(sc, 0, 0xdeadbeef); - if (patm_sram_read(sc, 0x4004) == 0xdeadbeef) - sc->mmap = &idt_mmap[0]; - else if (patm_sram_read(sc, 0x8000) == 0xdeadbeef) - sc->mmap = &idt_mmap[1]; - else if (patm_sram_read(sc, 0x20000) == 0xdeadbeef) - sc->mmap = &idt_mmap[2]; - else - sc->mmap = &idt_mmap[3]; - - IFP2IFATM(sc->ifp)->mib.vci_bits = sc->mmap->vcbits - IFP2IFATM(sc->ifp)->mib.vpi_bits; - IFP2IFATM(sc->ifp)->mib.max_vccs = sc->mmap->max_conn; - patm_sram_write(sc, 0, 0); - patm_printf(sc, "%uK x 32 SRAM; %u connections\n", sc->mmap->sram, - sc->mmap->max_conn); - - /* initialize status queues */ - error = patm_sq_init(sc); - if (error != 0) - goto fail; - - /* get TST */ - sc->tst_soft = malloc(sizeof(uint32_t) * sc->mmap->tst_size, - M_DEVBUF, M_WAITOK); - - /* allocate all the receive buffer stuff */ - error = patm_rbuf_init(sc); - if (error != 0) - goto fail; - - /* - * Allocate SCD tag - * - * Don't use BUS_DMA_ALLOCNOW, because we never need bouncing with - * bus_dmamem_alloc() - */ - error = bus_dma_tag_create(bus_get_dma_tag(dev), PAGE_SIZE, 0, - BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, - NULL, NULL, sizeof(struct patm_scd), 1, - sizeof(struct patm_scd), 0, NULL, NULL, &sc->scd_tag); - if (error) { - patm_printf(sc, "SCD DMA tag create %d\n", error); - goto fail; - } - LIST_INIT(&sc->scd_list); - - /* allocate VCC zone and pointers */ - if ((sc->vcc_zone = uma_zcreate("PATM vccs", sizeof(struct patm_vcc), - NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0)) == NULL) { - patm_printf(sc, "cannot allocate zone for vccs\n"); - goto fail; - } - sc->vccs = malloc(sizeof(sc->vccs[0]) * sc->mmap->max_conn, - M_DEVBUF, M_WAITOK | M_ZERO); - - /* allocate transmission resources */ - error = patm_txmap_init(sc); - if (error != 0) - goto fail; - - /* poll while we are not running */ - sc->utopia.flags |= UTP_FL_POLL_CARRIER; - - patm_debug(sc, ATTACH, "attaching interface"); - atm_ifattach(ifp); - -#ifdef ENABLE_BPF - bpfattach(ifp, DLT_ATM_RFC1483, sizeof(struct atmllc)); -#endif - - patm_debug(sc, ATTACH, "attaching interrupt handler"); - error = bus_setup_intr(dev, sc->irqres, INTR_TYPE_NET | INTR_MPSAFE, - NULL, patm_intr, sc, &sc->ih); - if (error != 0) { - patm_printf(sc, "could not setup interrupt\n"); - atm_ifdetach(sc->ifp); - if_free(sc->ifp); - goto fail; - } - - return (0); - - fail: - patm_destroy(sc); - return (error); -} - -/* - * Detach - */ -static int -patm_detach(device_t dev) -{ - struct patm_softc *sc; - - sc = device_get_softc(dev); - - mtx_lock(&sc->mtx); - patm_stop(sc); - if (sc->utopia.state & UTP_ST_ATTACHED) { - patm_debug(sc, ATTACH, "detaching utopia"); - utopia_stop(&sc->utopia); - utopia_detach(&sc->utopia); - } - mtx_unlock(&sc->mtx); - - atm_ifdetach(sc->ifp); - - patm_destroy(sc); - - return (0); -} - -/* - * Destroy everything. Assume we are stopped. - */ -static void -patm_destroy(struct patm_softc *sc) -{ - u_int i; - struct patm_txmap *map; - - if (sc->ih != NULL) - bus_teardown_intr(sc->dev, sc->irqres, sc->ih); - - if (sc->tx_mapzone != NULL) { - /* all maps must be free */ - while ((map = SLIST_FIRST(&sc->tx_maps_free)) != NULL) { - bus_dmamap_destroy(sc->tx_tag, map->map); - SLIST_REMOVE_HEAD(&sc->tx_maps_free, link); - uma_zfree(sc->tx_mapzone, map); - } - uma_zdestroy(sc->tx_mapzone); - } - - if (sc->scd_tag != NULL) - bus_dma_tag_destroy(sc->scd_tag); - - if (sc->tx_tag != NULL) - bus_dma_tag_destroy(sc->scd_tag); - - if (sc->vccs != NULL) { - for (i = 0; i < sc->mmap->max_conn; i++) - if (sc->vccs[i] != NULL) - uma_zfree(sc->vcc_zone, sc->vccs[i]); - free(sc->vccs, M_DEVBUF); - } - if (sc->vcc_zone != NULL) - uma_zdestroy(sc->vcc_zone); - - if (sc->lbufs != NULL) { - for (i = 0; i < sc->lbuf_max; i++) - bus_dmamap_destroy(sc->lbuf_tag, sc->lbufs[i].map); - free(sc->lbufs, M_DEVBUF); - } - - if (sc->lbuf_tag != NULL) - bus_dma_tag_destroy(sc->lbuf_tag); - - if (sc->sbuf_pool != NULL) - mbp_destroy(sc->sbuf_pool); - if (sc->vbuf_pool != NULL) - mbp_destroy(sc->vbuf_pool); - - if (sc->sbuf_tag != NULL) - bus_dma_tag_destroy(sc->sbuf_tag); - - if (sc->tst_soft != NULL) - free(sc->tst_soft, M_DEVBUF); - - /* - * Free all status queue memory resources - */ - if (sc->tsq != NULL) { - bus_dmamap_unload(sc->sq_tag, sc->sq_map); - bus_dmamem_free(sc->sq_tag, sc->tsq, sc->sq_map); - bus_dma_tag_destroy(sc->sq_tag); - } - - if (sc->irqres != NULL) - bus_release_resource(sc->dev, SYS_RES_IRQ, - sc->irqid, sc->irqres); - if (sc->memres != NULL) - bus_release_resource(sc->dev, SYS_RES_MEMORY, - IDT_PCI_REG_MEMBASE, sc->memres); - - /* this was initialize unconditionally */ - sysctl_ctx_free(&sc->sysctl_ctx); - cv_destroy(&sc->vcc_cv); - mtx_destroy(&sc->tst_lock); - mtx_destroy(&sc->mtx); - - if (sc->ifp != NULL) - if_free(sc->ifp); -} - -/* - * Try to find a variable in the environment and parse it as an unsigned - * integer. - */ -static void -patm_env_getuint(struct patm_softc *sc, u_int *var, const char *name) -{ - char full[IFNAMSIZ + 3 + 20]; - char *val, *end; - u_long u; - - snprintf(full, sizeof(full), "hw.%s.%s", - device_get_nameunit(sc->dev), name); - - if ((val = kern_getenv(full)) != NULL) { - u = strtoul(val, &end, 0); - if (end > val && *end == '\0') { - if (bootverbose) - patm_printf(sc, "%s=%lu\n", full, u); - *var = u; - } - freeenv(val); - } -} - -/* - * Sysctl handler for internal statistics - * - * LOCK: unlocked, needed - */ -static int -patm_sysctl_istats(SYSCTL_HANDLER_ARGS) -{ - struct patm_softc *sc = arg1; - uint32_t *ret; - int error; - - ret = malloc(sizeof(sc->stats), M_TEMP, M_WAITOK); - - mtx_lock(&sc->mtx); - bcopy(&sc->stats, ret, sizeof(sc->stats)); - mtx_unlock(&sc->mtx); - - error = SYSCTL_OUT(req, ret, sizeof(sc->stats)); - free(ret, M_TEMP); - - return (error); -} - -/* - * Sysctl handler for EEPROM - * - * LOCK: unlocked, needed - */ -static int -patm_sysctl_eeprom(SYSCTL_HANDLER_ARGS) -{ - struct patm_softc *sc = arg1; - void *ret; - int error; - - ret = malloc(sizeof(sc->eeprom), M_TEMP, M_WAITOK); - - mtx_lock(&sc->mtx); - bcopy(sc->eeprom, ret, sizeof(sc->eeprom)); - mtx_unlock(&sc->mtx); - - error = SYSCTL_OUT(req, ret, sizeof(sc->eeprom)); - free(ret, M_TEMP); - - return (error); -} - -/* - * Read the EEPROM. We assume that this is a XIRCOM 25020 - */ -static void -patm_read_eeprom(struct patm_softc *sc) -{ - u_int gp; - uint8_t byte; - int i, addr; - - static const uint32_t tab[] = { - /* CS transition to reset the chip */ - IDT_GP_EECS | IDT_GP_EESCLK, 0, - /* read command 0x03 */ - IDT_GP_EESCLK, 0, - IDT_GP_EESCLK, 0, - IDT_GP_EESCLK, 0, - IDT_GP_EESCLK, 0, - IDT_GP_EESCLK, 0, - IDT_GP_EESCLK, IDT_GP_EEDO, - IDT_GP_EESCLK | IDT_GP_EEDO, IDT_GP_EEDO, - IDT_GP_EESCLK | IDT_GP_EEDO, 0, - /* address 0x00 */ - IDT_GP_EESCLK, 0, - IDT_GP_EESCLK, 0, - IDT_GP_EESCLK, 0, - IDT_GP_EESCLK, 0, - IDT_GP_EESCLK, 0, - IDT_GP_EESCLK, 0, - IDT_GP_EESCLK, 0, - IDT_GP_EESCLK, 0, - }; - - /* go to a known state (chip enabled) */ - gp = patm_nor_read(sc, IDT_NOR_GP); - gp &= ~(IDT_GP_EESCLK | IDT_GP_EECS | IDT_GP_EEDO); - - for (i = 0; i < nitems(tab); i++) { - patm_nor_write(sc, IDT_NOR_GP, gp | tab[i]); - DELAY(40); - } - - /* read out the prom */ - for (addr = 0; addr < 256; addr++) { - byte = 0; - for (i = 0; i < 8; i++) { - byte <<= 1; - if (patm_nor_read(sc, IDT_NOR_GP) & IDT_GP_EEDI) - byte |= 1; - /* rising CLK */ - patm_nor_write(sc, IDT_NOR_GP, gp | IDT_GP_EESCLK); - DELAY(40); - /* falling clock */ - patm_nor_write(sc, IDT_NOR_GP, gp); - DELAY(40); - } - sc->eeprom[addr] = byte; - } -} - -/* - * PHY access read - */ -static int -patm_phy_readregs(struct ifatm *ifatm, u_int reg, uint8_t *val, u_int *n) -{ - struct patm_softc *sc = ifatm->ifp->if_softc; - u_int cnt = *n; - - if (reg >= 0x100) - return (EINVAL); - - patm_cmd_wait(sc); - while (reg < 0x100 && cnt > 0) { - patm_nor_write(sc, IDT_NOR_CMD, IDT_MKCMD_RUTIL(1, 0, reg)); - patm_cmd_wait(sc); - *val = patm_nor_read(sc, IDT_NOR_D0); - patm_debug(sc, PHY, "phy(%02x)=%02x", reg, *val); - val++; - reg++; - cnt--; - } - *n = *n - cnt; - return (0); -} - -/* - * Write PHY reg - */ -static int -patm_phy_writereg(struct ifatm *ifatm, u_int reg, u_int mask, u_int val) -{ - struct patm_softc *sc = ifatm->ifp->if_softc; - u_int old, new; - - if (reg >= 0x100) - return (EINVAL); - - patm_cmd_wait(sc); - patm_nor_write(sc, IDT_NOR_CMD, IDT_MKCMD_RUTIL(1, 0, reg)); - patm_cmd_wait(sc); - - old = patm_nor_read(sc, IDT_NOR_D0); - new = (old & ~mask) | (val & mask); - patm_debug(sc, PHY, "phy(%02x) %02x -> %02x", reg, old, new); - - patm_nor_write(sc, IDT_NOR_D0, new); - patm_nor_write(sc, IDT_NOR_CMD, IDT_MKCMD_WUTIL(1, 0, reg)); - patm_cmd_wait(sc); - - return (0); -} - -/* - * Allocate a large chunk of DMA able memory for the transmit - * and receive status queues. We align this to a page boundary - * to ensure the alignment. - */ -static int -patm_sq_init(struct patm_softc *sc) -{ - int error; - void *p; - - /* compute size of the two queues */ - sc->sq_size = IDT_TSQ_SIZE * IDT_TSQE_SIZE + - PATM_RSQ_SIZE * IDT_RSQE_SIZE + - IDT_RAWHND_SIZE; - - patm_debug(sc, ATTACH, - "allocating status queues (%zu) ...", sc->sq_size); - - /* - * allocate tag - * Don't use BUS_DMA_ALLOCNOW, because we never need bouncing with - * bus_dmamem_alloc() - */ - error = bus_dma_tag_create(bus_get_dma_tag(sc->dev), - PATM_SQ_ALIGNMENT, 0, - BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, - NULL, NULL, sc->sq_size, 1, sc->sq_size, - 0, NULL, NULL, &sc->sq_tag); - if (error) { - patm_printf(sc, "memory DMA tag create %d\n", error); - return (error); - } - - /* allocate memory */ - error = bus_dmamem_alloc(sc->sq_tag, &p, 0, &sc->sq_map); - if (error) { - patm_printf(sc, "memory DMA alloc %d\n", error); - bus_dma_tag_destroy(sc->sq_tag); - return (error); - } - - /* map it */ - sc->tsq_phy = 0x1fff; - error = bus_dmamap_load(sc->sq_tag, sc->sq_map, p, - sc->sq_size, patm_load_callback, &sc->tsq_phy, BUS_DMA_NOWAIT); - if (error) { - patm_printf(sc, "memory DMA map load %d\n", error); - bus_dmamem_free(sc->sq_tag, p, sc->sq_map); - bus_dma_tag_destroy(sc->sq_tag); - return (error); - } - - /* set queue start */ - sc->tsq = p; - sc->rsq = (void *)((char *)p + IDT_TSQ_SIZE * IDT_TSQE_SIZE); - sc->rsq_phy = sc->tsq_phy + IDT_TSQ_SIZE * IDT_TSQE_SIZE; - sc->rawhnd = (void *)((char *)sc->rsq + PATM_RSQ_SIZE * IDT_RSQE_SIZE); - sc->rawhnd_phy = sc->rsq_phy + PATM_RSQ_SIZE * IDT_RSQE_SIZE; - - return (0); -} - -/* - * Initialize all receive buffer stuff - */ -static int -patm_rbuf_init(struct patm_softc *sc) -{ - u_int i; - int error; - - patm_debug(sc, ATTACH, "allocating Rx buffer resources ..."); - /* - * Create a tag for small buffers. We allocate these page wise. - * Don't use BUS_DMA_ALLOCNOW, because we never need bouncing with - * bus_dmamem_alloc() - */ - if ((error = bus_dma_tag_create(bus_get_dma_tag(sc->dev), PAGE_SIZE, 0, - BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL, - SMBUF_PAGE_SIZE, 1, SMBUF_PAGE_SIZE, 0, - NULL, NULL, &sc->sbuf_tag)) != 0) { - patm_printf(sc, "sbuf DMA tag create %d\n", error); - return (error); - } - - error = mbp_create(&sc->sbuf_pool, "patm sbufs", sc->sbuf_tag, - SMBUF_MAX_PAGES, SMBUF_PAGE_SIZE, SMBUF_CHUNK_SIZE); - if (error != 0) { - patm_printf(sc, "smbuf pool create %d\n", error); - return (error); - } - - error = mbp_create(&sc->vbuf_pool, "patm vbufs", sc->sbuf_tag, - VMBUF_MAX_PAGES, SMBUF_PAGE_SIZE, VMBUF_CHUNK_SIZE); - if (error != 0) { - patm_printf(sc, "vmbuf pool create %d\n", error); - return (error); - } - - /* - * Create a tag for large buffers. - * Don't use BUS_DMA_ALLOCNOW, because it makes no sense with multiple - * maps using one tag. Rather use BUS_DMA_NOWAIT when loading the map - * to prevent EINPROGRESS. - */ - if ((error = bus_dma_tag_create(bus_get_dma_tag(sc->dev), 4, 0, - BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL, - MCLBYTES, 1, MCLBYTES, 0, - NULL, NULL, &sc->lbuf_tag)) != 0) { - patm_printf(sc, "lbuf DMA tag create %d\n", error); - return (error); - } - - if (sc->lbuf_max < IDT_FBQ_SIZE) - sc->lbuf_max = LMBUF_MAX; - sc->lbufs = malloc(sizeof(sc->lbufs[0]) * sc->lbuf_max, - M_DEVBUF, M_ZERO | M_WAITOK); - - SLIST_INIT(&sc->lbuf_free_list); - for (i = 0; i < sc->lbuf_max; i++) { - struct lmbuf *b = &sc->lbufs[i]; - - error = bus_dmamap_create(sc->lbuf_tag, 0, &b->map); - if (error) { - /* must deallocate here, because a test for NULL - * does not work on most archs */ - while (i-- > 0) - bus_dmamap_destroy(sc->lbuf_tag, - sc->lbufs[i].map); - free(sc->lbufs, M_DEVBUF); - sc->lbufs = NULL; - return (error); - } - b->handle = i; - SLIST_INSERT_HEAD(&sc->lbuf_free_list, b, link); - } - - return (0); -} - -/* - * Allocate everything needed for the transmission maps. - */ -static int -patm_txmap_init(struct patm_softc *sc) -{ - int error; - struct patm_txmap *map; - - /* get transmission tag */ - error = bus_dma_tag_create(bus_get_dma_tag(sc->dev), 1, 0, - BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, - NULL, NULL, 65536, IDT_SCQ_SIZE - 1, 65536, - 0, NULL, NULL, &sc->tx_tag); - if (error) { - patm_printf(sc, "cannot allocate TX tag %d\n", error); - return (error); - } - - if ((sc->tx_mapzone = uma_zcreate("PATM tx maps", - sizeof(struct patm_txmap), NULL, NULL, NULL, NULL, - UMA_ALIGN_PTR, 0)) == NULL) - return (ENOMEM); - - if (sc->tx_maxmaps < PATM_CFG_TXMAPS_MAX) - sc->tx_maxmaps = PATM_CFG_TXMAPS_MAX; - sc->tx_nmaps = PATM_CFG_TXMAPS_INIT; - - for (sc->tx_nmaps = 0; sc->tx_nmaps < PATM_CFG_TXMAPS_INIT; - sc->tx_nmaps++) { - map = uma_zalloc(sc->tx_mapzone, M_WAITOK); - error = bus_dmamap_create(sc->tx_tag, 0, &map->map); - if (error) { - uma_zfree(sc->tx_mapzone, map); - return (ENOMEM); - } - SLIST_INSERT_HEAD(&sc->tx_maps_free, map, link); - } - - return (0); -} - -#ifdef PATM_DEBUG - -/* - * Sysctl handler for REGS - * - * LOCK: unlocked, needed - */ -static int -patm_sysctl_regs(SYSCTL_HANDLER_ARGS) -{ - struct patm_softc *sc = arg1; - uint32_t *ret; - int error, i; - - ret = malloc(IDT_NOR_END, M_TEMP, M_WAITOK); - - mtx_lock(&sc->mtx); - for (i = 0; i < IDT_NOR_END; i += 4) - ret[i / 4] = patm_nor_read(sc, i); - mtx_unlock(&sc->mtx); - - error = SYSCTL_OUT(req, ret, IDT_NOR_END); - free(ret, M_TEMP); - - return (error); -} - -/* - * Sysctl handler for TSQ - * - * LOCK: unlocked, needed - */ -static int -patm_sysctl_tsq(SYSCTL_HANDLER_ARGS) -{ - struct patm_softc *sc = arg1; - void *ret; - int error; - - ret = malloc(IDT_TSQ_SIZE * IDT_TSQE_SIZE, M_TEMP, M_WAITOK); - - mtx_lock(&sc->mtx); - memcpy(ret, sc->tsq, IDT_TSQ_SIZE * IDT_TSQE_SIZE); - mtx_unlock(&sc->mtx); - - error = SYSCTL_OUT(req, ret, IDT_TSQ_SIZE * IDT_TSQE_SIZE); - free(ret, M_TEMP); - - return (error); -} - -/* - * debugging - */ -static struct patm_softc * -patm_dump_unit(u_int unit) -{ - devclass_t dc; - struct patm_softc *sc; - - dc = devclass_find("patm"); - if (dc == NULL) { - printf("%s: can't find devclass\n", __func__); - return (NULL); - } - sc = devclass_get_softc(dc, unit); - if (sc == NULL) { - printf("%s: invalid unit number: %d\n", __func__, unit); - return (NULL); - } - return (sc); -} - -int -patm_dump_vc(u_int unit, u_int vc) -{ - struct patm_softc *sc; - uint32_t tct[8]; - uint32_t rct[4]; - uint32_t scd[12]; - u_int i; - - if ((sc = patm_dump_unit(unit)) == NULL) - return (0); - - for (i = 0; i < 8; i++) - tct[i] = patm_sram_read(sc, vc * 8 + i); - for (i = 0; i < 4; i++) - rct[i] = patm_sram_read(sc, sc->mmap->rct + vc * 4 + i); - for (i = 0; i < 12; i++) - scd[i] = patm_sram_read(sc, (tct[0] & 0x7ffff) + i); - - printf("TCT%3u: %08x %08x %08x %08x %08x %08x %08x %08x\n", vc, - tct[0], tct[1], tct[2], tct[3], tct[4], tct[5], tct[6], tct[7]); - printf("RCT%3u: %08x %08x %08x %08x\n", vc, - rct[0], rct[1], rct[2], rct[3]); - printf("SCD%3u: %08x %08x %08x %08x %08x %08x %08x %08x\n", vc, - scd[0], scd[1], scd[2], scd[3], scd[4], scd[5], scd[6], scd[7]); - printf(" %08x %08x %08x %08x\n", - scd[8], scd[9], scd[10], scd[11]); - - return (0); -} - -int -patm_dump_regs(u_int unit) -{ - struct patm_softc *sc; - u_int i; - - if ((sc = patm_dump_unit(unit)) == NULL) - return (0); - - for (i = 0; i <= IDT_NOR_DNOW; i += 4) - printf("%x: %08x\n", i, patm_nor_read(sc, i)); - - return (0); -} - -int -patm_dump_sram(u_int unit, u_int from, u_int words) -{ - struct patm_softc *sc; - u_int i; - - if ((sc = patm_dump_unit(unit)) == NULL) - return (0); - - for (i = 0; i < words; i++) { - if (i % 8 == 0) - printf("%05x:", from + i); - printf(" %08x", patm_sram_read(sc, from + i)); - if (i % 8 == 7) - printf("\n"); - } - if (i % 8 != 0) - printf("\n"); - return (0); -} -#endif diff --git a/sys/dev/patm/if_patm_intr.c b/sys/dev/patm/if_patm_intr.c deleted file mode 100644 index 864fff5bfd55..000000000000 --- a/sys/dev/patm/if_patm_intr.c +++ /dev/null @@ -1,554 +0,0 @@ -/*- - * Copyright (c) 2003 - * Fraunhofer Institute for Open Communication Systems (FhG Fokus). - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * Author: Hartmut Brandt <harti@freebsd.org> - * - * Driver for IDT77252 based cards like ProSum's. - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include "opt_inet.h" -#include "opt_natm.h" - -#include <sys/types.h> -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/malloc.h> -#include <sys/kernel.h> -#include <sys/bus.h> -#include <sys/errno.h> -#include <sys/conf.h> -#include <sys/module.h> -#include <sys/lock.h> -#include <sys/mutex.h> -#include <sys/sysctl.h> -#include <sys/queue.h> -#include <sys/condvar.h> -#include <sys/endian.h> -#include <vm/uma.h> - -#include <sys/sockio.h> -#include <sys/mbuf.h> -#include <sys/socket.h> - -#include <net/if.h> -#include <net/if_var.h> -#include <net/if_media.h> -#include <net/if_atm.h> -#include <net/route.h> -#include <netinet/in.h> -#include <netinet/if_atm.h> - -#include <machine/bus.h> -#include <machine/resource.h> -#include <sys/bus.h> -#include <sys/rman.h> -#include <sys/mbpool.h> - -#include <dev/utopia/utopia.h> -#include <dev/patm/idt77252reg.h> -#include <dev/patm/if_patmvar.h> - -static void patm_feed_sbufs(struct patm_softc *sc); -static void patm_feed_lbufs(struct patm_softc *sc); -static void patm_feed_vbufs(struct patm_softc *sc); -static void patm_intr_tsif(struct patm_softc *sc); -static void patm_intr_raw(struct patm_softc *sc); - -#ifdef PATM_DEBUG -static int patm_mbuf_cnt(u_int unit) __unused; -#endif - -/* - * Write free buf Q - */ -static __inline void -patm_fbq_write(struct patm_softc *sc, u_int queue, uint32_t h0, - uint32_t p0, uint32_t h1, uint32_t p1) -{ - patm_debug(sc, FREEQ, "supplying(%u,%#x,%#x,%#x,%#x)", - queue, h0, p0, h1, p1); - patm_nor_write(sc, IDT_NOR_D0, h0); - patm_nor_write(sc, IDT_NOR_D1, p0); - patm_nor_write(sc, IDT_NOR_D2, h1); - patm_nor_write(sc, IDT_NOR_D3, p1); - patm_cmd_exec(sc, IDT_CMD_WFBQ | queue); -} - -/* - * Interrupt - */ -void -patm_intr(void *p) -{ - struct patm_softc *sc = p; - uint32_t stat, cfg; - u_int cnt; - const uint32_t ints = IDT_STAT_TSIF | IDT_STAT_TXICP | IDT_STAT_TSQF | - IDT_STAT_TMROF | IDT_STAT_PHYI | IDT_STAT_RSQF | IDT_STAT_EPDU | - IDT_STAT_RAWCF | IDT_STAT_RSQAF; - const uint32_t fbqa = IDT_STAT_FBQ3A | IDT_STAT_FBQ2A | - IDT_STAT_FBQ1A | IDT_STAT_FBQ0A; - - mtx_lock(&sc->mtx); - - stat = patm_nor_read(sc, IDT_NOR_STAT); - patm_nor_write(sc, IDT_NOR_STAT, stat & (ints | fbqa)); - - if (!(sc->ifp->if_drv_flags & IFF_DRV_RUNNING)) { - /* if we are stopped ack all interrupts and handle PHYI */ - if (stat & IDT_STAT_PHYI) { - patm_debug(sc, INTR, "PHYI (stopped)"); - utopia_intr(&sc->utopia); - } - mtx_unlock(&sc->mtx); - return; - } - - patm_debug(sc, INTR, "stat=%08x", stat); - - /* - * If the buffer queues are empty try to fill them. If this fails - * disable the interrupt. Otherwise enable the interrupt. - */ - if (stat & fbqa) { - cfg = patm_nor_read(sc, IDT_NOR_CFG); - if (stat & IDT_STAT_FBQ0A) - patm_feed_sbufs(sc); - if (stat & IDT_STAT_FBQ1A) - patm_feed_lbufs(sc); - if (stat & IDT_STAT_FBQ2A) { - /* - * Workaround for missing interrupt on AAL0. Check the - * receive status queue if the FBQ2 is not full. - */ - patm_intr_rsq(sc); - patm_feed_vbufs(sc); - } - if ((patm_nor_read(sc, IDT_NOR_STAT) & fbqa) && - (cfg & IDT_CFG_FBIE)) { - /* failed */ - patm_nor_write(sc, IDT_NOR_CFG, cfg & ~IDT_CFG_FBIE); - patm_printf(sc, "out of buffers -- intr disabled\n"); - } else if (!(cfg & IDT_CFG_FBIE)) { - patm_printf(sc, "bufQ intr re-enabled\n"); - patm_nor_write(sc, IDT_NOR_CFG, cfg | IDT_CFG_FBIE); - } - patm_nor_write(sc, IDT_NOR_STAT, fbqa); - } - - cnt = 0; - while ((stat & ints) != 0) { - if (++cnt == 200) { - patm_printf(sc, "%s: excessive interrupts\n", __func__); - patm_stop(sc); - break; - } - if (stat & IDT_STAT_TSIF) { - patm_debug(sc, INTR, "TSIF"); - patm_intr_tsif(sc); - } - if (stat & IDT_STAT_TXICP) { - patm_printf(sc, "incomplete PDU transmitted\n"); - } - if (stat & IDT_STAT_TSQF) { - patm_printf(sc, "TSQF\n"); - patm_intr_tsif(sc); - } - if (stat & IDT_STAT_TMROF) { - patm_debug(sc, INTR, "TMROF"); - patm_intr_tsif(sc); - } - if (stat & IDT_STAT_PHYI) { - patm_debug(sc, INTR, "PHYI"); - utopia_intr(&sc->utopia); - } - if (stat & IDT_STAT_RSQF) { - patm_printf(sc, "RSQF\n"); - patm_intr_rsq(sc); - } - if (stat & IDT_STAT_EPDU) { - patm_debug(sc, INTR, "EPDU"); - patm_intr_rsq(sc); - } - if (stat & IDT_STAT_RAWCF) { - patm_debug(sc, INTR, "RAWCF"); - patm_intr_raw(sc); - } - if (stat & IDT_STAT_RSQAF) { - patm_debug(sc, INTR, "RSQAF"); - patm_intr_rsq(sc); - } else if (IDT_STAT_FRAC2(stat) != 0xf) { - /* - * Workaround for missing interrupt on AAL0. Check the - * receive status queue if the FBQ2 is not full. - */ - patm_intr_rsq(sc); - } - - stat = patm_nor_read(sc, IDT_NOR_STAT); - patm_nor_write(sc, IDT_NOR_STAT, ints & stat); - patm_debug(sc, INTR, "stat=%08x", stat); - } - - mtx_unlock(&sc->mtx); - - patm_debug(sc, INTR, "... exit"); -} - -/* - * Compute the amount of buffers to feed into a given free buffer queue - * - * Feeding buffers is actually not so easy as it seems. We cannot use the - * fraction fields in the status registers, because they round down, i.e. - * if we have 34 buffers in the queue, it will show 1. If we now feed - * 512 - 1 * 32 buffers, we lose two buffers. The only reliable way to know - * how many buffers are in the queue are the FBQP registers. - */ -static u_int -patm_feed_cnt(struct patm_softc *sc, u_int q) -{ - u_int w, r, reg; - u_int feed; - int free; - - /* get the FBQ read and write pointers */ - reg = patm_nor_read(sc, IDT_NOR_FBQP0 + 4 * q); - r = (reg & 0x7ff) >> 1; - w = ((reg >> 16) & 0x7ff) >> 1; - /* compute amount of free buffers */ - if ((free = w - r) < 0) - free += 0x400; - KASSERT(free <= 512, ("bad FBQP 0x%x", reg)); - feed = 512 - free; - - /* can only feed pairs of buffers */ - feed &= ~1; - - if (feed > 0) - feed -= 2; - - patm_debug(sc, FREEQ, "feeding %u buffers into queue %u", feed, q); - - return (feed); -} - -/* - * Feed small buffers into buffer queue 0 - * - */ -static void -patm_feed_sbufs(struct patm_softc *sc) -{ - u_int feed; - bus_addr_t p0, p1; - void *v0; - uint32_t h0, h1; - - feed = patm_feed_cnt(sc, 0); - - while (feed > 0) { - if ((v0 = mbp_alloc(sc->sbuf_pool, &p0, &h0)) == NULL) - break; - if (mbp_alloc(sc->sbuf_pool, &p1, &h1) == NULL) { - mbp_free(sc->sbuf_pool, v0); - break; - } - patm_fbq_write(sc, 0, - h0 | MBUF_SHANDLE, (p0 + SMBUF_OFFSET), - h1 | MBUF_SHANDLE, (p1 + SMBUF_OFFSET)); - - feed -= 2; - } -} - -/* - * Feed small buffers into buffer queue 0 - */ -static void -patm_feed_vbufs(struct patm_softc *sc) -{ - u_int feed; - bus_addr_t p0, p1; - void *v0; - uint32_t h0, h1; - - feed = patm_feed_cnt(sc, 2); - - while (feed > 0) { - if ((v0 = mbp_alloc(sc->vbuf_pool, &p0, &h0)) == NULL) - break; - if (mbp_alloc(sc->vbuf_pool, &p1, &h1) == NULL) { - mbp_free(sc->vbuf_pool, v0); - break; - } - patm_fbq_write(sc, 2, - h0 | MBUF_VHANDLE, (p0 + VMBUF_OFFSET), - h1 | MBUF_VHANDLE, (p1 + VMBUF_OFFSET)); - - feed -= 2; - } -} - -/* - * Allocate a large buffer - */ -static struct lmbuf * -patm_lmbuf_alloc(struct patm_softc *sc) -{ - int error; - struct mbuf *m; - struct lmbuf *b; - - m = m_getcl(M_NOWAIT, MT_DATA, M_PKTHDR); - if (m == NULL) - return (NULL); - m->m_data += LMBUF_OFFSET; - - if ((b = SLIST_FIRST(&sc->lbuf_free_list)) == NULL) { - m_freem(m); - return (NULL); - } - - b->phy = 0; /* alignment */ - error = bus_dmamap_load(sc->lbuf_tag, b->map, m->m_data, LMBUF_SIZE, - patm_load_callback, &b->phy, BUS_DMA_NOWAIT); - if (error) { - patm_printf(sc, "%s -- bus_dmamap_load: %d\n", __func__, error); - m_free(m); - return (NULL); - } - - SLIST_REMOVE_HEAD(&sc->lbuf_free_list, link); - b->m = m; - - return (b); -} - -/* - * Feed large buffers into buffer queue 1 - */ -static void -patm_feed_lbufs(struct patm_softc *sc) -{ - u_int feed; - struct lmbuf *b0, *b1; - - feed = patm_feed_cnt(sc, 1); - - while (feed > 0) { - if ((b0 = patm_lmbuf_alloc(sc)) == NULL) - break; - if ((b1 = patm_lmbuf_alloc(sc)) == NULL) { - patm_lbuf_free(sc, b0); - break; - } - patm_fbq_write(sc, 1, - LMBUF_HANDLE | b0->handle, b0->phy, - LMBUF_HANDLE | b1->handle, b1->phy); - - feed -= 2; - } -} - -/* - * Handle transmit status interrupt - */ -static void -patm_intr_tsif(struct patm_softc *sc) -{ - struct idt_tsqe *tsqe = sc->tsq_next; - struct idt_tsqe *prev = NULL; - uint32_t stamp; - - stamp = le32toh(tsqe->stamp); - if (stamp & IDT_TSQE_EMPTY) - return; - - do { - switch (IDT_TSQE_TYPE(stamp)) { - - case IDT_TSQE_TBD: - patm_tx(sc, stamp, le32toh(tsqe->stat)); - break; - - case IDT_TSQE_IDLE: - patm_tx_idle(sc, le32toh(tsqe->stat)); - break; - } - - /* recycle */ - tsqe->stat = 0; - tsqe->stamp = htole32(IDT_TSQE_EMPTY); - - /* save pointer to this entry and advance */ - prev = tsqe; - if (++tsqe == &sc->tsq[IDT_TSQ_SIZE]) - tsqe = &sc->tsq[0]; - - stamp = le32toh(tsqe->stamp); - } while (!(stamp & IDT_TSQE_EMPTY)); - - sc->tsq_next = tsqe; - patm_nor_write(sc, IDT_NOR_TSQH, ((prev - sc->tsq) << IDT_TSQE_SHIFT)); -} - -/* - * Handle receive interrupt - */ -void -patm_intr_rsq(struct patm_softc *sc) -{ - struct idt_rsqe *rsqe; - u_int stat; - - if (sc->rsq_last + 1 == PATM_RSQ_SIZE) - rsqe = &sc->rsq[0]; - else - rsqe = &sc->rsq[sc->rsq_last + 1]; - stat = le32toh(rsqe->stat); - if (!(stat & IDT_RSQE_VALID)) - return; - - while (stat & IDT_RSQE_VALID) { - patm_rx(sc, rsqe); - - /* recycle RSQE */ - rsqe->cid = 0; - rsqe->handle = 0; - rsqe->crc = 0; - rsqe->stat = 0; - - /* save pointer to this entry and advance */ - if (++sc->rsq_last == PATM_RSQ_SIZE) - sc->rsq_last = 0; - if (++rsqe == &sc->rsq[PATM_RSQ_SIZE]) - rsqe = sc->rsq; - - stat = le32toh(rsqe->stat); - } - - patm_nor_write(sc, IDT_NOR_RSQH, sc->rsq_phy | (sc->rsq_last << 2)); - - patm_feed_sbufs(sc); - patm_feed_lbufs(sc); - patm_feed_vbufs(sc); -} - -/* - * Handle raw cell receive. - * - * Note that the description on page 3-8 is wrong. The RAWHND contains not - * the same value as RAWCT. RAWCT points to the next address the chip is - * going to write to whike RAWHND points to the last cell's address the chip - * has written to. - */ -static void -patm_intr_raw(struct patm_softc *sc) -{ - uint32_t tail; - uint32_t h, *cell; - -#ifdef notyet - bus_dma_sync_size(sc->sq_tag, sc->sq_map, IDT_TSQ_SIZE * IDT_TSQE_SIZE + - PATM_RSQ_SIZE * IDT_RSQE_SIZE, sizeof(*sc->rawhnd), - BUS_DMASYNC_POSTREAD); -#endif - /* first turn */ - if (sc->rawh == NULL) { - sc->rawh = &sc->lbufs[le32toh(sc->rawhnd->handle) & MBUF_HMASK]; - } - tail = le32toh(sc->rawhnd->tail); - if (tail == sc->rawh->phy) - /* not really a raw interrupt */ - return; - - while (tail + 64 != sc->rawh->phy + sc->rawi * 64) { -#ifdef notyet - bus_dmamap_sync_size(sc->lbuf_tag, sc->rawh->map, - sc->rawi * 64, 64, BUS_DMASYNC_POSTREAD); -#endif - cell = (uint32_t *)(mtod(sc->rawh->m, u_char *) + - sc->rawi * 64); - if (sc->rawi == (LMBUF_SIZE / 64) - 1) { - /* chain */ - h = le32toh(cell[1]); - patm_lbuf_free(sc, sc->rawh); - sc->rawh = &sc->lbufs[h & MBUF_HMASK]; - sc->rawi = 0; - continue; - } - - patm_rx_raw(sc, (u_char *)cell); - sc->rawi++; - } -} - -/* - * Free a large mbuf. This is called by us. - */ -void -patm_lbuf_free(struct patm_softc *sc, struct lmbuf *b) -{ - - bus_dmamap_unload(sc->lbuf_tag, b->map); - if (b->m != NULL) { - m_free(b->m); - b->m = NULL; - } - SLIST_INSERT_HEAD(&sc->lbuf_free_list, b, link); -} - -#ifdef PATM_DEBUG -static int -patm_mbuf_cnt(u_int unit) -{ - devclass_t dc; - struct patm_softc *sc; - u_int used, card, free; - - dc = devclass_find("patm"); - if (dc == NULL) { - printf("%s: can't find devclass\n", __func__); - return (0); - } - sc = devclass_get_softc(dc, unit); - if (sc == NULL) { - printf("%s: invalid unit number: %d\n", __func__, unit); - return (0); - } - - mbp_count(sc->sbuf_pool, &used, &card, &free); - printf("sbufs: %u on card, %u used, %u free\n", card, used, free); - - mbp_count(sc->vbuf_pool, &used, &card, &free); - printf("aal0 bufs: %u on card, %u used, %u free\n", card, used, free); - - return (0); -} -#endif diff --git a/sys/dev/patm/if_patm_ioctl.c b/sys/dev/patm/if_patm_ioctl.c deleted file mode 100644 index c12bd760593e..000000000000 --- a/sys/dev/patm/if_patm_ioctl.c +++ /dev/null @@ -1,412 +0,0 @@ -/*- - * Copyright (c) 2003 - * Fraunhofer Institute for Open Communication Systems (FhG Fokus). - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * Author: Hartmut Brandt <harti@freebsd.org> - * - * Driver for IDT77252 based cards like ProSum's. - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include "opt_inet.h" -#include "opt_natm.h" - -#include <sys/types.h> -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/malloc.h> -#include <sys/kernel.h> -#include <sys/bus.h> -#include <sys/errno.h> -#include <sys/conf.h> -#include <sys/module.h> -#include <sys/lock.h> -#include <sys/mutex.h> -#include <sys/sysctl.h> -#include <sys/queue.h> -#include <sys/condvar.h> -#include <vm/uma.h> - -#include <sys/sockio.h> -#include <sys/mbuf.h> -#include <sys/socket.h> - -#include <net/if.h> -#include <net/if_var.h> -#include <net/if_media.h> -#include <net/if_atm.h> -#include <net/route.h> -#include <netinet/in.h> -#include <netinet/if_atm.h> - -#include <machine/bus.h> -#include <machine/resource.h> -#include <sys/bus.h> -#include <sys/rman.h> -#include <sys/mbpool.h> - -#include <dev/utopia/utopia.h> -#include <dev/patm/idt77252reg.h> -#include <dev/patm/if_patmvar.h> - -/* - * Open the VCC with the given parameters - */ -static int -patm_open_vcc(struct patm_softc *sc, struct atmio_openvcc *arg) -{ - u_int cid; - struct patm_vcc *vcc; - int error = 0; - - patm_debug(sc, VCC, "Open VCC: %u.%u flags=%#x", arg->param.vpi, - arg->param.vci, arg->param.flags); - - if (!LEGAL_VPI(sc, arg->param.vpi) || !LEGAL_VCI(sc, arg->param.vci)) - return (EINVAL); - if (arg->param.vci == 0 && (arg->param.vpi != 0 || - !(arg->param.flags & ATMIO_FLAG_NOTX) || - arg->param.aal != ATMIO_AAL_RAW)) - return (EINVAL); - cid = PATM_CID(sc, arg->param.vpi, arg->param.vci); - - if ((arg->param.flags & ATMIO_FLAG_NOTX) && - (arg->param.flags & ATMIO_FLAG_NORX)) - return (EINVAL); - - if ((arg->param.traffic == ATMIO_TRAFFIC_ABR) && - (arg->param.flags & (ATMIO_FLAG_NOTX | ATMIO_FLAG_NORX))) - return (EINVAL); - - /* allocate vcc */ - vcc = uma_zalloc(sc->vcc_zone, M_NOWAIT | M_ZERO); - if (vcc == NULL) - return (ENOMEM); - - mtx_lock(&sc->mtx); - if (!(sc->ifp->if_drv_flags & IFF_DRV_RUNNING)) { - /* stopped while we have analyzed the arguments */ - error = EIO; - goto done; - } - if (sc->vccs[cid] != NULL) { - /* ups, already open */ - error = EBUSY; - goto done; - } - - /* check some parameters */ - vcc->cid = cid; - vcc->vcc = arg->param; - vcc->vflags = 0; - vcc->rxhand = arg->rxhand; - switch (vcc->vcc.aal) { - - case ATMIO_AAL_0: - case ATMIO_AAL_34: - case ATMIO_AAL_5: - break; - - case ATMIO_AAL_RAW: - if (arg->param.vci == 0 && - !(arg->param.flags & ATMIO_FLAG_NOTX)) { - error = EINVAL; - goto done; - } - break; - - default: - error = EINVAL; - goto done; - } - switch (vcc->vcc.traffic) { - - case ATMIO_TRAFFIC_VBR: - case ATMIO_TRAFFIC_UBR: - case ATMIO_TRAFFIC_CBR: - case ATMIO_TRAFFIC_ABR: - break; - - default: - error = EINVAL; - goto done; - } - - /* initialize */ - vcc->chain = NULL; - vcc->last = NULL; - vcc->ibytes = vcc->ipackets = 0; - vcc->obytes = vcc->opackets = 0; - - /* ask the TX and RX sides */ - patm_debug(sc, VCC, "Open VCC: asking Rx/Tx"); - if (!(vcc->vcc.flags & ATMIO_FLAG_NOTX) && - (error = patm_tx_vcc_can_open(sc, vcc)) != 0) - goto done; - if (!(vcc->vcc.flags & ATMIO_FLAG_NORX) && - (error = patm_rx_vcc_can_open(sc, vcc)) != 0) - goto done; - - /* ok - go ahead */ - sc->vccs[cid] = vcc; - patm_load_vc(sc, vcc, 0); - - /* don't free below */ - vcc = NULL; - sc->vccs_open++; - - /* done */ - done: - mtx_unlock(&sc->mtx); - if (vcc != NULL) - uma_zfree(sc->vcc_zone, vcc); - return (error); -} - -void -patm_load_vc(struct patm_softc *sc, struct patm_vcc *vcc, int reload) -{ - - patm_debug(sc, VCC, "Open VCC: opening"); - if (!(vcc->vcc.flags & ATMIO_FLAG_NOTX)) - patm_tx_vcc_open(sc, vcc); - if (!(vcc->vcc.flags & ATMIO_FLAG_NORX)) - patm_rx_vcc_open(sc, vcc); - - if (!reload) { - /* inform management about non-NG and NG-PVCs */ - if (!(vcc->vcc.flags & ATMIO_FLAG_NG) || - (vcc->vcc.flags & ATMIO_FLAG_PVC)) - ATMEV_SEND_VCC_CHANGED(IFP2IFATM(sc->ifp), vcc->vcc.vpi, - vcc->vcc.vci, 1); - } - - patm_debug(sc, VCC, "Open VCC: now open"); -} - -/* - * Try to close the given VCC - */ -static int -patm_close_vcc(struct patm_softc *sc, struct atmio_closevcc *arg) -{ - u_int cid; - struct patm_vcc *vcc; - int error = 0; - - patm_debug(sc, VCC, "Close VCC: %u.%u", arg->vpi, arg->vci); - - if (!LEGAL_VPI(sc, arg->vpi) || !LEGAL_VCI(sc, arg->vci)) - return (EINVAL); - cid = PATM_CID(sc, arg->vpi, arg->vci); - - mtx_lock(&sc->mtx); - if (!(sc->ifp->if_drv_flags & IFF_DRV_RUNNING)) { - /* stopped while we have analyzed the arguments */ - error = EIO; - goto done; - } - - vcc = sc->vccs[cid]; - if (vcc == NULL || !(vcc->vflags & PATM_VCC_OPEN)) { - error = ENOENT; - goto done; - } - - if (vcc->vflags & PATM_VCC_TX_OPEN) - patm_tx_vcc_close(sc, vcc); - if (vcc->vflags & PATM_VCC_RX_OPEN) - patm_rx_vcc_close(sc, vcc); - - if (vcc->vcc.flags & ATMIO_FLAG_ASYNC) - goto done; - - while (vcc->vflags & (PATM_VCC_TX_CLOSING | PATM_VCC_RX_CLOSING)) { - cv_wait(&sc->vcc_cv, &sc->mtx); - if (!(sc->ifp->if_drv_flags & IFF_DRV_RUNNING)) { - /* ups, has been stopped */ - error = EIO; - goto done; - } - } - - if (!(vcc->vcc.flags & ATMIO_FLAG_NOTX)) - patm_tx_vcc_closed(sc, vcc); - if (!(vcc->vcc.flags & ATMIO_FLAG_NORX)) - patm_rx_vcc_closed(sc, vcc); - - patm_vcc_closed(sc, vcc); - - done: - mtx_unlock(&sc->mtx); - - return (error); -} - -/* - * VCC has been finally closed. - */ -void -patm_vcc_closed(struct patm_softc *sc, struct patm_vcc *vcc) -{ - - /* inform management about non-NG and NG-PVCs */ - if (!(vcc->vcc.flags & ATMIO_FLAG_NG) || - (vcc->vcc.flags & ATMIO_FLAG_PVC)) - ATMEV_SEND_VCC_CHANGED(IFP2IFATM(sc->ifp), vcc->vcc.vpi, - vcc->vcc.vci, 0); - - sc->vccs_open--; - sc->vccs[vcc->cid] = NULL; - uma_zfree(sc->vcc_zone, vcc); -} - -int -patm_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) -{ - struct ifreq *ifr = (struct ifreq *)data; - struct ifaddr *ifa = (struct ifaddr *)data; - struct patm_softc *sc = ifp->if_softc; - int error = 0; - uint32_t cfg; - struct atmio_vcctable *vtab; - - switch (cmd) { - - case SIOCSIFADDR: - mtx_lock(&sc->mtx); - ifp->if_flags |= IFF_UP; - if (!(ifp->if_drv_flags & IFF_DRV_RUNNING)) - patm_initialize(sc); - switch (ifa->ifa_addr->sa_family) { - -#ifdef INET - case AF_INET: - case AF_INET6: - ifa->ifa_rtrequest = atm_rtrequest; - break; -#endif - default: - break; - } - mtx_unlock(&sc->mtx); - break; - - case SIOCSIFFLAGS: - mtx_lock(&sc->mtx); - if (ifp->if_flags & IFF_UP) { - if (!(ifp->if_drv_flags & IFF_DRV_RUNNING)) { - patm_initialize(sc); - } - } else { - if (ifp->if_drv_flags & IFF_DRV_RUNNING) { - patm_stop(sc); - } - } - mtx_unlock(&sc->mtx); - break; - - case SIOCGIFMEDIA: - case SIOCSIFMEDIA: - error = ifmedia_ioctl(ifp, ifr, &sc->media, cmd); - - /* - * We need to toggle unassigned/idle cells ourself because - * the 77252 generates null cells for spacing. When switching - * null cells of it gets the timing wrong. - */ - mtx_lock(&sc->mtx); - if (ifp->if_drv_flags & IFF_DRV_RUNNING) { - if (sc->utopia.state & UTP_ST_UNASS) { - if (!(sc->flags & PATM_UNASS)) { - cfg = patm_nor_read(sc, IDT_NOR_CFG); - cfg &= ~IDT_CFG_IDLECLP; - patm_nor_write(sc, IDT_NOR_CFG, cfg); - sc->flags |= PATM_UNASS; - } - } else { - if (sc->flags & PATM_UNASS) { - cfg = patm_nor_read(sc, IDT_NOR_CFG); - cfg |= IDT_CFG_IDLECLP; - patm_nor_write(sc, IDT_NOR_CFG, cfg); - sc->flags &= ~PATM_UNASS; - } - } - } else { - if (sc->utopia.state & UTP_ST_UNASS) - sc->flags |= PATM_UNASS; - else - sc->flags &= ~PATM_UNASS; - } - mtx_unlock(&sc->mtx); - break; - - case SIOCSIFMTU: - /* - * Set the interface MTU. - */ - if (ifr->ifr_mtu > ATMMTU) - error = EINVAL; - else - ifp->if_mtu = ifr->ifr_mtu; - break; - - case SIOCATMOPENVCC: /* kernel internal use */ - error = patm_open_vcc(sc, (struct atmio_openvcc *)data); - break; - - case SIOCATMCLOSEVCC: /* kernel internal use */ - error = patm_close_vcc(sc, (struct atmio_closevcc *)data); - break; - - case SIOCATMGVCCS: /* external use */ - /* return vcc table */ - vtab = atm_getvccs((struct atmio_vcc **)sc->vccs, - sc->mmap->max_conn, sc->vccs_open, &sc->mtx, 1); - error = copyout(vtab, ifr->ifr_data, sizeof(*vtab) + - vtab->count * sizeof(vtab->vccs[0])); - free(vtab, M_DEVBUF); - break; - - case SIOCATMGETVCCS: /* netgraph internal use */ - vtab = atm_getvccs((struct atmio_vcc **)sc->vccs, - sc->mmap->max_conn, sc->vccs_open, &sc->mtx, 0); - if (vtab == NULL) { - error = ENOMEM; - break; - } - *(void **)data = vtab; - break; - - default: - patm_debug(sc, IOCTL, "unknown cmd=%08lx arg=%p", cmd, data); - error = EINVAL; - break; - } - - return (error); -} diff --git a/sys/dev/patm/if_patm_rtables.c b/sys/dev/patm/if_patm_rtables.c deleted file mode 100644 index f945276690b4..000000000000 --- a/sys/dev/patm/if_patm_rtables.c +++ /dev/null @@ -1,9079 +0,0 @@ -/* - * This file was generated by `genrtables/genrtab' - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include <sys/types.h> - -const u_int patm_rtables_size = 128 * (4 + 2 * 16); -const u_int patm_rtables_ntab = 16; - -/* - * Tables for 352768cps and 155Mbps - */ -const uint32_t patm_rtables155[128 * (4 + 2 * 16)] = { -0x8d022e27, -0x8d362e11, -0x8d702bf7, -0x8daa2bce, -0x8de62ba7, -0x8e262b81, -0x8e682b5d, -0x8eac2b3b, -0x8ef42b19, -0x8f402af9, -0x8f8c2adb, -0x8fde2abd, -0x901a2aa1, -0x90462a86, -0x90722a6c, -0x90a22a53, -0x90d42a3b, -0x91082a24, -0x913e2a0e, -0x917627f2, -0x91b227c9, -0x91ee27a2, -0x922e277d, -0x92702759, -0x92b62736, -0x92fe2715, -0x934626f6, -0x939626d7, -0x93e626ba, -0x941e269e, -0x944a2683, -0x94782669, -0x94a82650, -0x94dc2638, -0x95106621, -0x9546660b, -0x957e63ed, -0x95b863c5, -0x95f4639e, -0x96366378, -0x96786355, -0x96be6332, -0x97066311, -0x975062f2, -0x97a062d3, -0x97f262b6, -0x9824629a, -0x98506280, -0x987e6266, -0x98ae624d, -0x98e26235, -0x9914a21f, -0x994ca209, -0x99849fe8, -0x99be9fc0, -0x99fe9f99, -0x9a3e9f74, -0x9a809f51, -0x9ac69f2e, -0x9b0e9f0e, -0x9b5a9eee, -0x9ba89ed0, -0x9bfc9eb3, -0x9c2a9e97, -0x9c569e7c, -0x9c849e63, -0x9cb49e4a, -0x9ce69e33, -0x9d1cde1c, -0x9d54de06, -0x9d8cdbe3, -0x9dc6dbbb, -0x9e04db95, -0x9e44db70, -0x9e88db4c, -0x9ed0db2a, -0x9f16db0a, -0x9f64daea, -0x9fb4dacc, -0xa002dab0, -0xa02eda94, -0xa05cda79, -0xa08ada60, -0xa0bcda47, -0xa0ecda30, -0xa1231a19, -0xa1591a04, -0xa19317de, -0xa1cf17b6, -0xa20d1790, -0xa24f176b, -0xa2911748, -0xa2d91726, -0xa3211706, -0xa36d16e7, -0xa3bd16c9, -0xa40916ac, -0xa4331691, -0xa4611676, -0xa491165d, -0xa4c31644, -0xa4f5162d, -0xa5291617, -0xa5611601, -0xa59b13d9, -0xa5d513b2, -0xa615138c, -0xa6571367, -0xa6991344, -0xa6e11322, -0xa72b1302, -0xa77712e3, -0xa7c912c5, -0xa80f12a9, -0xa83b128d, -0xa8671273, -0xa895125a, -0xa8c71242, -0xa8fb122a, -0xa9311214, -0xa9670ffe, -0xa9a10fd5, -0xa9dd0fad, -0xaa1d0f87, -0xaa5d0f63, -0xaaa10f40, -0xaae90f1f, -0xab350efe, -0xab7f0ee0, -0xabd10ec2, -0xac150ea5, -0xac3f0e8a, -0xac6d0e70, -0xac9b0e57, -0xaccd0e3f, -0xad010e28, -0xad370e11, -0xad6d0bf9, -0xada70bd0, -0xade30ba9, -0xae230b83, -0xae650b5f, -0xaeab0b3c, -0xaef10b1b, -0xaf3b0afb, -0xaf890adc, -0xafdd0abe, -0xb0190aa2, -0xb0450a87, -0xb0730a6d, -0xb0a10a54, -0xb0d30a3c, -0xb1070a25, -0xb13d0a0f, -0xb17507f4, -0xb1af07cb, -0xb1ed07a4, -0xb22d077e, -0xb26f075a, -0xb2b30738, -0xb2f90717, -0xb34506f7, -0xb39506d8, -0xb3e506bb, -0xb41d069f, -0xb4490684, -0xb477066a, -0xb4a70651, -0xb4d90639, -0xb50f0622, -0xb545060c, -0xb57b03ef, -0xb5b703c6, -0xb5f5039f, -0xb633037a, -0xb6770356, -0xb6bb0334, -0xb7030313, -0xb74f02f3, -0xb79d02d5, -0xb7ed02b8, -0xb823029c, -0xb84f0281, -0xb87d0267, -0xb8ad024e, -0xb8e10236, -0xb9130220, -0xb949020a, -0xb98301f5, -0xb9bd01e1, -0xb9fd01cd, -0xba3b01bb, -0xba7f01a9, -0xbac30198, -0xbb0f0187, -0xbb5b0177, -0xbba90168, -0xbbf9015a, -0xbc29014c, -0xbc53013f, -0xbc830132, -0xbcb50125, -0xbce5011a, -0xbd1d010e, -0xbd550103, -0xbd8b00f9, -0xbdc700ef, -0xbe0700e5, -0xbe4500dc, -0xbe8900d3, -0xbecb00cb, -0xbf1d00c2, -0xbf6100bb, -0xbfb500b3, -0xc00300ac, -0xc02f00a5, -0xc05f009e, -0xc08b0098, -0xc0bb0092, -0xc0ed008c, -0xc1270086, -0xc1590081, -0xc191007c, -0xc1cd0077, -0xc20d0072, -0xc255006d, -0xc2910069, -0xc2d50065, -0xc32f0060, -0xc36b005d, -0xc3bf0059, -0xc40f0055, -0xc4350052, -0xc46d004e, -0xc499004b, -0xc4cb0048, -0xc5010045, -0xc5270043, -0xc5630040, -0xc5a7003d, -0xc5d9003b, -0xc6290038, -0xc6630036, -0xc6a10034, -0xc6e50032, -0xc72f0030, -0xc77f002e, -0xc7d7002c, -0xc81b002a, -0xc8510028, -0xc86d0027, -0xc8a90025, -0xc8cb0024, -0xc9130022, -0xc93b0021, -0xc9630020, -0x00000000, -0x00000000, -0x00000000, -0x00000000, -0x00000000, -0x00000000, -0x00000000, -0x00000000, -0x00000000, -0x00000000, -0x00000000, -0x00000000, -0x00000000, -0x03020100, -0x07060504, -0x0b0a0908, -0x100e0d0b, -0x14131211, -0x18171615, -0x1c1b1a19, -0x211f1e1c, -0x25242322, -0x29282726, -0x2c2c2b2a, -0x31302f2d, -0x36353433, -0x3a393837, -0x3d3d3c3b, -0x4241403e, -0x47464544, -0x4b4a4948, -0x4e4d4d4c, -0x5352504f, -0x58575654, -0x5c5b5a59, -0x5f5e5d5d, -0x64636160, -0x69686665, -0x6d6c6b6a, -0x706f6e6d, -0x75747271, -0x7a787776, -0x7d7d7c7b, -0x81807f7e, -0x86848382, -0x8a898887, -0x8e8d8c8b, -0x9291908f, -0x97959492, -0x9b9a9998, -0x9f9e9d9c, -0xa3a2a1a0, -0xa8a6a5a3, -0xacabaaa9, -0xb0afaead, -0xb3b3b2b1, -0xb8b7b6b4, -0xbdbcbbba, -0xc1c0bfbe, -0xc4c4c3c2, -0xc9c8c7c5, -0xcecdcccb, -0xd2d1d0cf, -0xd5d4d4d3, -0xdad9d7d6, -0xdfdedddb, -0xe3e2e1e0, -0xe6e5e4e4, -0xebeae8e7, -0xf0efeeec, -0xf4f3f2f1, -0xf7f6f5f5, -0xfcfbf9f8, -0xfffffefd, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0x000064b1, -0x000062b1, -0x000160b1, -0x00015eb1, -0x00035cb1, -0x00035ab1, -0x00030000, -0x00030000, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -/* AIR 0: diff=352768.000000 */ -0x3bf83bfc, -0x3bf03bf4, -0x3be83bec, -0x3be03be4, -0x3bd83bdc, -0x3bd03bd4, -0x3bc83bcc, -0x3bc03bc4, -0x3bb83bbc, -0x3bb03bb4, -0x3ba83bac, -0x3ba03ba4, -0x3b983b9c, -0x3b903b94, -0x3b883b8c, -0x3b803b84, -0x3b783b7c, -0x3b703b74, -0x3b683b6c, -0x3b603b64, -0x3b583b5c, -0x3b503b54, -0x3b483b4c, -0x3b403b44, -0x3b383b3c, -0x3b303b34, -0x3b283b2c, -0x3b203b24, -0x3b183b1c, -0x3b103b14, -0x3b083b0c, -0x3b003b04, -0x3af83afc, -0x3af03af4, -0x3ae83aec, -0x3ae03ae4, -0x3ad83adc, -0x3ad03ad4, -0x3ac83acc, -0x3ac03ac4, -0x3ab83abc, -0x3ab03ab4, -0x3aa83aac, -0x3aa03aa4, -0x3a983a9c, -0x3a903a94, -0x3a883a8c, -0x3a803a84, -0x3a783a7c, -0x3a703a74, -0x3a683a6c, -0x3a603a64, -0x3a583a5c, -0x3a503a54, -0x3a483a4c, -0x3a403a44, -0x3a383a3c, -0x3a303a34, -0x3a283a2c, -0x3a203a24, -0x3a183a1c, -0x3a103a14, -0x3a083a0c, -0x3a003a04, -0x37f037f8, -0x37e037e8, -0x37d037d8, -0x37c037c8, -0x37b037b8, -0x37a037a8, -0x37903798, -0x37803788, -0x37703778, -0x37603768, -0x37503758, -0x37403748, -0x37303738, -0x37203728, -0x37103718, -0x37003708, -0x36f036f8, -0x36e036e8, -0x36d036d8, -0x36c036c8, -0x36b036b8, -0x36a036a8, -0x36903698, -0x36803688, -0x36703678, -0x36603668, -0x36503658, -0x36403648, -0x36303638, -0x36203628, -0x36103618, -0x36003608, -0x33e033f0, -0x33c033d0, -0x33a033b0, -0x33803390, -0x33603370, -0x33403350, -0x33203330, -0x33003310, -0x32e032f0, -0x32c032d0, -0x32a032b0, -0x32803290, -0x32603270, -0x32403250, -0x32203230, -0x32003210, -0x2fc02fe0, -0x2f802fa0, -0x2f402f60, -0x2f002f20, -0x2ec02ee0, -0x2e802ea0, -0x2e402e60, -0x2e002e20, -0x2b802bc0, -0x2b002b40, -0x2a802ac0, -0x2a002a40, -0x27002780, -0x26002680, -0x22002300, -0x00001e00, -/* AIR 1: diff=176384.000000 */ -0x3bb43bb8, -0x3bac3bb0, -0x3ba43ba8, -0x3b9c3ba0, -0x3b943b98, -0x3b8c3b90, -0x3b843b88, -0x3b7c3b80, -0x3b743b78, -0x3b6c3b70, -0x3b643b68, -0x3b5c3b60, -0x3b543b58, -0x3b4c3b50, -0x3b443b48, -0x3b3c3b40, -0x3b343b38, -0x3b2c3b30, -0x3b243b28, -0x3b1c3b20, -0x3b143b18, -0x3b0c3b10, -0x3b043b08, -0x3afc3b00, -0x3af43af8, -0x3aec3af0, -0x3ae43ae8, -0x3adc3ae0, -0x3ad43ad8, -0x3acc3ad0, -0x3ac43ac8, -0x3abc3ac0, -0x3ab43ab8, -0x3aac3ab0, -0x3aa43aa8, -0x3a9c3aa0, -0x3a943a98, -0x3a8c3a90, -0x3a843a88, -0x3a7c3a80, -0x3a743a78, -0x3a6c3a70, -0x3a643a68, -0x3a5c3a60, -0x3a543a58, -0x3a4c3a50, -0x3a443a48, -0x3a3c3a40, -0x3a343a38, -0x3a2c3a30, -0x3a243a28, -0x3a1c3a20, -0x3a143a18, -0x3a0c3a10, -0x3a043a08, -0x37fa3a00, -0x37ea37f2, -0x37da37e2, -0x37ca37d2, -0x37ba37c2, -0x37aa37b2, -0x379a37a2, -0x378a3792, -0x377a3782, -0x376b3773, -0x375b3763, -0x374b3753, -0x373b3743, -0x372b3733, -0x371c3724, -0x370c3714, -0x36fc3704, -0x36ed36f5, -0x36dd36e5, -0x36cd36d5, -0x36be36c6, -0x36ae36b6, -0x369f36a7, -0x368f3697, -0x36803688, -0x36703678, -0x36613669, -0x3652365a, -0x3643364a, -0x3634363b, -0x3624362c, -0x3615361d, -0x3607360e, -0x33f033ff, -0x33d233e1, -0x33b533c4, -0x339833a6, -0x337b338a, -0x335e336d, -0x33423350, -0x33263334, -0x330a3318, -0x32ef32fc, -0x32d332e1, -0x32b932c6, -0x329e32ab, -0x32843291, -0x326a3277, -0x3251325e, -0x32383245, -0x3220322c, -0x32083214, -0x2fe22ff9, -0x2fb52fcb, -0x2f882f9e, -0x2f5d2f72, -0x2f332f48, -0x2f0a2f1e, -0x2ee22ef5, -0x2ebb2ece, -0x2e962ea8, -0x2e722e84, -0x2e4f2e60, -0x2e2e2e3e, -0x2e002e1e, -0x2b802bc0, -0x2b002b40, -0x2a802ac0, -0x2a002a40, -0x27002780, -0x26002680, -0x22002300, -0x00001e00, -/* AIR 2: diff=88192.000000 */ -0x3b703b74, -0x3b683b6c, -0x3b603b64, -0x3b583b5c, -0x3b503b54, -0x3b483b4c, -0x3b403b44, -0x3b383b3c, -0x3b303b34, -0x3b283b2c, -0x3b203b24, -0x3b183b1c, -0x3b103b14, -0x3b083b0c, -0x3b003b04, -0x3af83afc, -0x3af13af4, -0x3ae93aed, -0x3ae13ae5, -0x3ad93add, -0x3ad13ad5, -0x3ac93acd, -0x3ac13ac5, -0x3ab93abd, -0x3ab13ab5, -0x3aa93aad, -0x3aa13aa5, -0x3a993a9d, -0x3a913a95, -0x3a893a8d, -0x3a813a85, -0x3a793a7d, -0x3a713a75, -0x3a693a6d, -0x3a613a65, -0x3a593a5d, -0x3a513a55, -0x3a493a4d, -0x3a413a45, -0x3a393a3d, -0x3a313a35, -0x3a293a2d, -0x3a213a25, -0x3a193a1d, -0x3a113a15, -0x3a093a0d, -0x3a013a05, -0x37f337fa, -0x37e337eb, -0x37d337db, -0x37c337cb, -0x37b337bb, -0x37a337ab, -0x3793379b, -0x3783378b, -0x3774377b, -0x3764376c, -0x3754375c, -0x3744374c, -0x3734373c, -0x3725372c, -0x3715371d, -0x3705370d, -0x36f536fd, -0x36e636ee, -0x36d636de, -0x36c736ce, -0x36b736bf, -0x36a736af, -0x369836a0, -0x36893690, -0x36793681, -0x366a3671, -0x365a3662, -0x364b3653, -0x363c3644, -0x362d3634, -0x361e3625, -0x360f3616, -0x36003607, -0x33e333f2, -0x33c533d4, -0x33a833b7, -0x338b339a, -0x336e337d, -0x33523360, -0x33363344, -0x331a3328, -0x32fe330c, -0x32e332f0, -0x32c832d5, -0x32ad32ba, -0x329332a0, -0x32793286, -0x325f326c, -0x32463253, -0x322e323a, -0x32163222, -0x2ffc320a, -0x2fce2fe5, -0x2fa12fb7, -0x2f752f8b, -0x2f4a2f5f, -0x2f202f35, -0x2ef82f0c, -0x2ed12ee4, -0x2eab2ebd, -0x2e862e98, -0x2e622e74, -0x2e402e51, -0x2e202e30, -0x2e002e10, -0x2bc42be2, -0x2b8a2ba7, -0x2b532b6e, -0x2b1f2b39, -0x2aed2b05, -0x2abd2ad4, -0x2a902aa6, -0x2a652a7a, -0x2a3c2a50, -0x2a162a29, -0x27e52a04, -0x27a127c2, -0x27002780, -0x26002680, -0x22002300, -0x00001e00, -/* AIR 3: diff=44096.000000 */ -0x3b2d3b31, -0x3b253b29, -0x3b1d3b21, -0x3b153b19, -0x3b0d3b11, -0x3b053b09, -0x3afd3b01, -0x3af53af9, -0x3aed3af1, -0x3ae53ae9, -0x3add3ae1, -0x3ad53ad9, -0x3acd3ad1, -0x3ac53ac9, -0x3abd3ac1, -0x3ab53ab9, -0x3aad3ab1, -0x3aa53aa9, -0x3a9d3aa1, -0x3a953a99, -0x3a8d3a91, -0x3a853a89, -0x3a7d3a81, -0x3a753a79, -0x3a6d3a71, -0x3a653a69, -0x3a5d3a61, -0x3a553a59, -0x3a4d3a51, -0x3a453a49, -0x3a3d3a41, -0x3a353a39, -0x3a2d3a31, -0x3a253a29, -0x3a1d3a21, -0x3a153a19, -0x3a0d3a11, -0x3a053a09, -0x37fb3a01, -0x37ec37f3, -0x37dc37e4, -0x37cc37d4, -0x37bc37c4, -0x37ac37b4, -0x379c37a4, -0x378c3794, -0x377c3784, -0x376d3774, -0x375d3765, -0x374d3755, -0x373d3745, -0x372d3735, -0x371e3726, -0x370e3716, -0x36fe3706, -0x36ef36f6, -0x36df36e7, -0x36cf36d7, -0x36c036c7, -0x36b036b8, -0x36a136a8, -0x36913699, -0x36823689, -0x3672367a, -0x3663366b, -0x3654365b, -0x3645364c, -0x3635363d, -0x3626362e, -0x3617361f, -0x36083610, -0x33f33601, -0x33d633e5, -0x33b933c7, -0x339b33aa, -0x337f338d, -0x33623370, -0x33453354, -0x33293337, -0x330d331b, -0x32f23300, -0x32d732e4, -0x32bc32c9, -0x32a132af, -0x32873294, -0x326d327a, -0x32543261, -0x323b3248, -0x3223322f, -0x320b3217, -0x2fe82fff, -0x2fba2fd1, -0x2f8d2fa4, -0x2f622f78, -0x2f382f4d, -0x2f0e2f23, -0x2ee62efa, -0x2ec02ed3, -0x2e9a2ead, -0x2e762e88, -0x2e532e65, -0x2e322e42, -0x2e112e21, -0x2be62e02, -0x2baa2bc8, -0x2b722b8e, -0x2b3c2b56, -0x2b082b22, -0x2ad72aef, -0x2aa92ac0, -0x2a7d2a92, -0x2a532a67, -0x2a2b2a3f, -0x2a062a18, -0x27c627e9, -0x278427a5, -0x27462764, -0x270b2728, -0x26d426ef, -0x26a126ba, -0x26712688, -0x2644265a, -0x261a262e, -0x23e62606, -0x239c23c0, -0x2358237a, -0x22002300, -0x00001e00, -/* AIR 4: diff=22048.000000 */ -0x3ae93aed, -0x3ae13ae5, -0x3ad93add, -0x3ad13ad5, -0x3ac93acd, -0x3ac13ac5, -0x3ab93abd, -0x3ab13ab5, -0x3aaa3aae, -0x3aa23aa6, -0x3a9a3a9e, -0x3a923a96, -0x3a8a3a8e, -0x3a823a86, -0x3a7a3a7e, -0x3a723a76, -0x3a6a3a6e, -0x3a623a66, -0x3a5a3a5e, -0x3a523a56, -0x3a4a3a4e, -0x3a423a46, -0x3a3a3a3e, -0x3a323a36, -0x3a2a3a2e, -0x3a223a26, -0x3a1a3a1e, -0x3a123a16, -0x3a0a3a0e, -0x3a023a06, -0x37f437fc, -0x37e537ec, -0x37d537dd, -0x37c537cd, -0x37b537bd, -0x37a537ad, -0x3795379d, -0x3785378d, -0x3775377d, -0x3766376d, -0x3756375e, -0x3746374e, -0x3736373e, -0x3726372e, -0x3717371f, -0x3707370f, -0x36f736ff, -0x36e836ef, -0x36d836e0, -0x36c836d0, -0x36b936c1, -0x36a936b1, -0x369a36a2, -0x368a3692, -0x367b3683, -0x366c3673, -0x365c3664, -0x364d3655, -0x363e3645, -0x362f3636, -0x36203627, -0x36113618, -0x36023609, -0x33e633f5, -0x33c933d8, -0x33ac33ba, -0x338f339d, -0x33723380, -0x33553364, -0x33393347, -0x331d332b, -0x3301330f, -0x32e632f4, -0x32cb32d8, -0x32b032bd, -0x329632a3, -0x327c3289, -0x3262326f, -0x32493256, -0x3231323d, -0x32183224, -0x3201320c, -0x2fd42feb, -0x2fa62fbd, -0x2f7a2f90, -0x2f4f2f64, -0x2f252f3a, -0x2efd2f11, -0x2ed52ee9, -0x2eaf2ec2, -0x2e8a2e9c, -0x2e672e78, -0x2e442e55, -0x2e232e34, -0x2e042e13, -0x2bcb2be9, -0x2b912bae, -0x2b5a2b75, -0x2b252b3f, -0x2af22b0b, -0x2ac22ada, -0x2a952aab, -0x2a6a2a7f, -0x2a412a55, -0x2a1b2a2e, -0x27ed2a08, -0x27a827ca, -0x27682788, -0x272b2749, -0x26f3270f, -0x26bd26d7, -0x268b26a4, -0x265d2674, -0x26312646, -0x2608261c, -0x23c523ea, -0x237e23a1, -0x233c235c, -0x22fe231c, -0x22c522e1, -0x229022aa, -0x225f2277, -0x22312247, -0x2206221b, -0x1fbf1fe5, -0x1f761f99, -0x1f321f53, -0x00001e00, -/* AIR 5: diff=11024.000000 */ -0x3aa63aaa, -0x3a9e3aa2, -0x3a963a9a, -0x3a8e3a92, -0x3a863a8a, -0x3a7e3a82, -0x3a763a7a, -0x3a6e3a72, -0x3a663a6a, -0x3a5e3a62, -0x3a563a5a, -0x3a4e3a52, -0x3a463a4a, -0x3a3e3a42, -0x3a363a3a, -0x3a2e3a32, -0x3a263a2a, -0x3a1e3a22, -0x3a163a1a, -0x3a0e3a12, -0x3a063a0a, -0x37fd3a02, -0x37ed37f5, -0x37de37e5, -0x37ce37d6, -0x37be37c6, -0x37ae37b6, -0x379e37a6, -0x378e3796, -0x377e3786, -0x376e3776, -0x375f3767, -0x374f3757, -0x373f3747, -0x372f3737, -0x37203727, -0x37103718, -0x37003708, -0x36f036f8, -0x36e136e9, -0x36d136d9, -0x36c236c9, -0x36b236ba, -0x36a236aa, -0x3693369b, -0x3684368b, -0x3674367c, -0x3665366d, -0x3656365d, -0x3646364e, -0x3637363f, -0x36283630, -0x36193621, -0x360a3612, -0x33f73603, -0x33d933e8, -0x33bc33cb, -0x339f33ad, -0x33823390, -0x33653374, -0x33493357, -0x332d333b, -0x3311331f, -0x32f53303, -0x32da32e8, -0x32bf32cc, -0x32a432b2, -0x328a3297, -0x3271327d, -0x32573264, -0x323e324b, -0x32263232, -0x320e321a, -0x2fed3202, -0x2fbf2fd6, -0x2f932fa9, -0x2f672f7d, -0x2f3d2f52, -0x2f132f28, -0x2eeb2eff, -0x2ec42ed8, -0x2e9f2eb1, -0x2e7a2e8c, -0x2e572e69, -0x2e362e46, -0x2e152e25, -0x2bed2e06, -0x2bb12bcf, -0x2b782b95, -0x2b422b5d, -0x2b0e2b28, -0x2add2af5, -0x2aae2ac5, -0x2a822a98, -0x2a582a6c, -0x2a302a44, -0x2a0a2a1d, -0x27ce27f1, -0x278c27ac, -0x274d276c, -0x2712272f, -0x26db26f6, -0x26a726c0, -0x2676268e, -0x2649265f, -0x261f2633, -0x23ef260b, -0x23a523c9, -0x23602382, -0x23202340, -0x22e52302, -0x22ad22c8, -0x227a2293, -0x224a2262, -0x221e2234, -0x1fea2209, -0x1f9e1fc3, -0x1f571f7a, -0x1f161f36, -0x1ed91ef7, -0x1ea11ebd, -0x1e6e1e87, -0x1e3e1e55, -0x1e111e27, -0x1bd11bf9, -0x1b851bab, -0x1b3f1b62, -0x00001b1f, -/* AIR 6: diff=5512.000000 */ -0x3a633a67, -0x3a5b3a5f, -0x3a533a57, -0x3a4b3a4f, -0x3a433a47, -0x3a3b3a3f, -0x3a333a37, -0x3a2b3a2f, -0x3a233a27, -0x3a1b3a1f, -0x3a133a17, -0x3a0b3a0f, -0x3a033a07, -0x37f637fe, -0x37e637ee, -0x37d737de, -0x37c737cf, -0x37b737bf, -0x37a737af, -0x3797379f, -0x3787378f, -0x3777377f, -0x3767376f, -0x37583760, -0x37483750, -0x37383740, -0x37283730, -0x37193720, -0x37093711, -0x36f93701, -0x36ea36f1, -0x36da36e2, -0x36ca36d2, -0x36bb36c2, -0x36ab36b3, -0x369c36a3, -0x368c3694, -0x367d3684, -0x366d3675, -0x365e3666, -0x364f3656, -0x36403647, -0x36313638, -0x36213629, -0x3612361a, -0x3604360b, -0x33ea33f9, -0x33cc33db, -0x33af33be, -0x339233a1, -0x33753384, -0x33593367, -0x333c334b, -0x3320332e, -0x33053312, -0x32e932f7, -0x32ce32dc, -0x32b332c1, -0x329932a6, -0x327f328c, -0x32653272, -0x324c3259, -0x32333240, -0x321b3227, -0x3203320f, -0x2fd92ff0, -0x2fac2fc2, -0x2f7f2f95, -0x2f542f6a, -0x2f2a2f3f, -0x2f012f16, -0x2eda2eee, -0x2eb42ec7, -0x2e8f2ea1, -0x2e6b2e7d, -0x2e482e59, -0x2e272e38, -0x2e072e17, -0x2bd22bf1, -0x2b982bb5, -0x2b602b7c, -0x2b2b2b45, -0x2af82b11, -0x2ac82ae0, -0x2a9a2ab1, -0x2a6f2a84, -0x2a462a5a, -0x2a1f2a32, -0x27f52a0d, -0x27b027d2, -0x27702790, -0x27322751, -0x26f92715, -0x26c326de, -0x269126aa, -0x26622679, -0x2636264c, -0x260d2621, -0x23ce23f3, -0x238623a9, -0x23432364, -0x23052324, -0x22cc22e8, -0x229622b1, -0x2264227d, -0x2236224d, -0x220b2220, -0x1fc81fef, -0x1f7e1fa2, -0x1f3a1f5b, -0x1efb1f1a, -0x1ec01edd, -0x1e8a1ea5, -0x1e581e71, -0x1e2a1e40, -0x1bfe1e14, -0x1baf1bd6, -0x1b661b8a, -0x1b221b44, -0x1ae41b03, -0x1aaa1ac7, -0x1a751a8f, -0x1a441a5c, -0x1a171a2d, -0x17db1a02, -0x178e17b3, -0x17461769, -0x00001725, -/* AIR 7: diff=2756.000000 */ -0x3a1f3a23, -0x3a173a1b, -0x3a0f3a13, -0x3a073a0b, -0x37ff3a03, -0x37ef37f7, -0x37df37e7, -0x37d037d7, -0x37c037c8, -0x37b037b8, -0x37a037a8, -0x37903798, -0x37803788, -0x37703778, -0x37613768, -0x37513759, -0x37413749, -0x37313739, -0x37213729, -0x3712371a, -0x3702370a, -0x36f236fa, -0x36e336ea, -0x36d336db, -0x36c336cb, -0x36b436bc, -0x36a436ac, -0x3695369d, -0x3685368d, -0x3676367e, -0x3667366e, -0x3657365f, -0x36483650, -0x36393641, -0x362a3631, -0x361b3622, -0x360c3613, -0x33fb3604, -0x33dd33ec, -0x33c033ce, -0x33a233b1, -0x33853394, -0x33693377, -0x334c335a, -0x3330333e, -0x33143322, -0x32f93306, -0x32dd32eb, -0x32c232d0, -0x32a832b5, -0x328d329a, -0x32743280, -0x325a3267, -0x3241324e, -0x32293235, -0x3211321d, -0x2ff33205, -0x2fc52fdc, -0x2f982fae, -0x2f6c2f82, -0x2f422f57, -0x2f182f2d, -0x2ef02f04, -0x2ec92edc, -0x2ea32eb6, -0x2e7f2e91, -0x2e5b2e6d, -0x2e3a2e4a, -0x2e192e29, -0x2bf42e09, -0x2bb82bd6, -0x2b7f2b9b, -0x2b482b63, -0x2b142b2e, -0x2ae32afb, -0x2ab42acb, -0x2a872a9d, -0x2a5d2a71, -0x2a352a48, -0x2a0f2a21, -0x27d727fa, -0x279327b4, -0x27542773, -0x27192736, -0x26e126fd, -0x26ad26c7, -0x267c2694, -0x264e2665, -0x26242639, -0x23f8260f, -0x23ad23d2, -0x2368238a, -0x23282347, -0x22ec2309, -0x22b422cf, -0x22802299, -0x22502267, -0x22232239, -0x1ff4220e, -0x1fa71fcc, -0x1f5f1f82, -0x1f1d1f3e, -0x1ee01efe, -0x1ea81ec4, -0x1e741e8d, -0x1e431e5b, -0x1e161e2c, -0x1bdb1e01, -0x1b8e1bb4, -0x1b481b6a, -0x1b061b26, -0x1aca1ae8, -0x1a931aae, -0x1a5f1a78, -0x1a301a47, -0x1a041a1a, -0x17b817e0, -0x176e1792, -0x1729174b, -0x16ea1709, -0x16af16cc, -0x16791694, -0x16481660, -0x161a1630, -0x13e01604, -0x139213b8, -0x134a136d, -0x00001328, -/* AIR 8: diff=1378.000000 */ -0x37b937c1, -0x37a937b1, -0x379937a1, -0x37893791, -0x37793781, -0x37693771, -0x375a3761, -0x374a3752, -0x373a3742, -0x372a3732, -0x371a3722, -0x370b3713, -0x36fb3703, -0x36eb36f3, -0x36dc36e4, -0x36cc36d4, -0x36bd36c4, -0x36ad36b5, -0x369e36a5, -0x368e3696, -0x367f3686, -0x366f3677, -0x36603668, -0x36513658, -0x36413649, -0x3632363a, -0x3623362b, -0x3614361c, -0x3605360d, -0x33ed33fc, -0x33d033df, -0x33b333c1, -0x339633a4, -0x33793387, -0x335c336a, -0x3340334e, -0x33243332, -0x33083316, -0x32ec32fa, -0x32d132df, -0x32b732c4, -0x329c32a9, -0x3282328f, -0x32683275, -0x324f325c, -0x32363243, -0x321e322a, -0x32063212, -0x2fdf2ff6, -0x2fb12fc8, -0x2f852f9b, -0x2f592f6f, -0x2f2f2f44, -0x2f062f1b, -0x2edf2ef2, -0x2eb82ecb, -0x2e932ea5, -0x2e6f2e81, -0x2e4c2e5e, -0x2e2b2e3c, -0x2e0b2e1b, -0x2bda2bf8, -0x2b9f2bbc, -0x2b672b82, -0x2b312b4c, -0x2afe2b17, -0x2ace2ae6, -0x2aa02ab6, -0x2a742a8a, -0x2a4b2a5f, -0x2a242a37, -0x27fe2a11, -0x27b927db, -0x27772797, -0x273a2758, -0x2700271c, -0x26ca26e4, -0x269726b0, -0x2667267f, -0x263b2651, -0x26122626, -0x23d623fc, -0x238e23b2, -0x234b236c, -0x230d232b, -0x22d222ef, -0x229c22b7, -0x226a2283, -0x223c2252, -0x22102226, -0x1fd11ff8, -0x1f871fab, -0x1f421f64, -0x1f021f21, -0x1ec71ee4, -0x1e901eab, -0x1e5e1e77, -0x1e2f1e46, -0x1e041e19, -0x1bb81bdf, -0x1b6e1b93, -0x1b2a1b4c, -0x1aeb1b0a, -0x1ab11ace, -0x1a7b1a96, -0x1a4a1a62, -0x1a1c1a33, -0x17e41a07, -0x179617bd, -0x174f1772, -0x170c172d, -0x16cf16ed, -0x169716b2, -0x1663167c, -0x1633164a, -0x1607161c, -0x13bd13e4, -0x13711396, -0x132c134e, -0x12ec130c, -0x12b212ce, -0x127b1296, -0x12491262, -0x121b1232, -0x0fe21206, -0x0f940fba, -0x0f4c0f6f, -0x00000f2a, -/* AIR 9: diff=689.000000 */ -0x3733373b, -0x3723372b, -0x3714371b, -0x3704370c, -0x36f436fc, -0x36e536ec, -0x36d536dd, -0x36c536cd, -0x36b636be, -0x36a636ae, -0x3697369e, -0x3687368f, -0x36783680, -0x36693670, -0x36593661, -0x364a3652, -0x363b3642, -0x362c3633, -0x361d3624, -0x360e3615, -0x33fe3606, -0x33e033ef, -0x33c333d2, -0x33a633b4, -0x33893397, -0x336c337a, -0x3350335e, -0x33333342, -0x33173325, -0x32fc330a, -0x32e032ee, -0x32c532d3, -0x32ab32b8, -0x3291329e, -0x32773284, -0x325d326a, -0x32443251, -0x322c3238, -0x32143220, -0x2ff83208, -0x2fca2fe1, -0x2f9d2fb4, -0x2f712f87, -0x2f472f5c, -0x2f1d2f32, -0x2ef52f09, -0x2ecd2ee1, -0x2ea82eba, -0x2e832e95, -0x2e602e71, -0x2e3e2e4e, -0x2e1d2e2d, -0x2bfc2e0d, -0x2bbf2bdd, -0x2b862ba2, -0x2b4f2b6a, -0x2b1a2b34, -0x2ae92b01, -0x2ab92ad1, -0x2a8c2aa2, -0x2a622a77, -0x2a392a4d, -0x2a132a26, -0x27df2a01, -0x279b27bd, -0x275c277b, -0x2720273d, -0x26e82703, -0x26b326cd, -0x2682269a, -0x2654266a, -0x2629263e, -0x26002614, -0x23b623db, -0x23702393, -0x232f234f, -0x22f32310, -0x22ba22d6, -0x228622a0, -0x2255226d, -0x2228223e, -0x1ffd2213, -0x1fb01fd6, -0x1f681f8b, -0x1f251f46, -0x1ee71f06, -0x1eae1eca, -0x1e7a1e93, -0x1e491e61, -0x1e1c1e32, -0x1be41e06, -0x1b971bbd, -0x1b501b73, -0x1b0e1b2e, -0x1ad11aef, -0x1a991ab4, -0x1a651a7f, -0x1a351a4d, -0x1a091a1f, -0x17c117e9, -0x1776179b, -0x17311753, -0x16f11710, -0x16b616d3, -0x167f169a, -0x164d1666, -0x161f1636, -0x13e91609, -0x139b13c1, -0x13521376, -0x130f1330, -0x12d212f0, -0x129912b5, -0x1265127e, -0x1235124c, -0x1208121e, -0x0fbf0fe7, -0x0f730f98, -0x0f2e0f50, -0x0eee0f0d, -0x0eb30ed0, -0x0e7c0e97, -0x0e4a0e63, -0x0e1c0e33, -0x0be30e06, -0x0b950bbb, -0x0b4d0b70, -0x00000b2b, -/* AIR 10: diff=344.500000 */ -0x36af36b7, -0x369f36a7, -0x36903698, -0x36803688, -0x36713679, -0x36623669, -0x3652365a, -0x3643364b, -0x3634363c, -0x3625362d, -0x3616361e, -0x3607360f, -0x33f13600, -0x33d433e2, -0x33b633c5, -0x339933a8, -0x337c338b, -0x3360336e, -0x33433351, -0x33273335, -0x330b3319, -0x32f032fd, -0x32d532e2, -0x32ba32c7, -0x329f32ac, -0x32853292, -0x326b3278, -0x3252325f, -0x32393246, -0x3221322d, -0x32093215, -0x2fe42ffb, -0x2fb62fcd, -0x2f8a2fa0, -0x2f5e2f74, -0x2f342f49, -0x2f0b2f1f, -0x2ee32ef7, -0x2ebd2ed0, -0x2e972eaa, -0x2e732e85, -0x2e512e62, -0x2e2f2e40, -0x2e0f2e1f, -0x2be12bff, -0x2ba62bc3, -0x2b6d2b89, -0x2b372b52, -0x2b042b1e, -0x2ad32aeb, -0x2aa52abc, -0x2a792a8f, -0x2a502a64, -0x2a282a3c, -0x2a032a15, -0x27c127e3, -0x277f279f, -0x2741275f, -0x27072723, -0x26d026eb, -0x269d26b6, -0x266d2685, -0x26402656, -0x2616262b, -0x23df2603, -0x239723ba, -0x23532374, -0x23142333, -0x22d922f6, -0x22a322bd, -0x22702289, -0x22412258, -0x2215222b, -0x1fda2201, -0x1f8f1fb4, -0x1f4a1f6c, -0x1f091f29, -0x1ece1eeb, -0x1e971eb2, -0x1e641e7d, -0x1e341e4c, -0x1e091e1e, -0x1bc11be9, -0x1b771b9b, -0x1b321b54, -0x1af31b12, -0x1ab81ad5, -0x1a821a9c, -0x1a501a68, -0x1a211a38, -0x17ee1a0c, -0x179f17c6, -0x1757177a, -0x17141735, -0x16d616f5, -0x169d16b9, -0x16691683, -0x16391650, -0x160c1622, -0x13c613ee, -0x137a139f, -0x13341356, -0x12f41313, -0x12b812d5, -0x1282129c, -0x124f1268, -0x12211237, -0x0fec120b, -0x0f9d0fc4, -0x0f540f78, -0x0f110f32, -0x0ed30ef1, -0x0e9a0eb6, -0x0e660e7f, -0x0e350e4d, -0x0e090e1f, -0x0bc00be8, -0x0b740b99, -0x0b2f0b51, -0x0aef0b0e, -0x0ab30ad0, -0x0a7d0a98, -0x0a4b0a63, -0x0a1c0a33, -0x07e40a07, -0x079607bc, -0x074d0771, -0x0000072b, -/* AIR 11: diff=172.250000 */ -0x362d3635, -0x361e3626, -0x360f3617, -0x36013608, -0x33e433f3, -0x33c733d5, -0x33a933b8, -0x338c339b, -0x3370337e, -0x33533361, -0x33373345, -0x331b3329, -0x32ff330d, -0x32e432f1, -0x32c932d6, -0x32ae32bb, -0x329432a1, -0x327a3287, -0x3260326d, -0x32473254, -0x322f323b, -0x32163222, -0x2ffe320b, -0x2fd02fe7, -0x2fa32fb9, -0x2f772f8c, -0x2f4c2f61, -0x2f222f37, -0x2ef92f0e, -0x2ed22ee6, -0x2eac2ebf, -0x2e872e9a, -0x2e642e75, -0x2e422e53, -0x2e212e31, -0x2e012e11, -0x2bc62be4, -0x2b8d2ba9, -0x2b552b71, -0x2b212b3b, -0x2aee2b07, -0x2abf2ad6, -0x2a912aa8, -0x2a672a7c, -0x2a3e2a52, -0x2a182a2a, -0x27e72a05, -0x27a327c5, -0x27632783, -0x27272744, -0x26ee270a, -0x26b926d3, -0x268726a0, -0x26592670, -0x262e2643, -0x26052619, -0x23bf23e4, -0x2378239b, -0x23372357, -0x22fa2318, -0x22c122dd, -0x228c22a6, -0x225b2273, -0x222d2244, -0x22032218, -0x1fb91fdf, -0x1f701f94, -0x1f2d1f4e, -0x1eef1f0d, -0x1eb51ed1, -0x1e801e9a, -0x1e4e1e67, -0x1e211e37, -0x1bee1e0b, -0x1ba01bc6, -0x1b581b7b, -0x1b151b36, -0x1ad81af6, -0x1a9f1abb, -0x1a6b1a85, -0x1a3b1a52, -0x1a0e1a24, -0x17cb17f3, -0x177f17a4, -0x1739175b, -0x16f81718, -0x16bd16da, -0x168616a1, -0x1653166c, -0x1624163b, -0x13f3160e, -0x13a413cb, -0x135b137e, -0x13171338, -0x12d912f7, -0x12a012bc, -0x126b1285, -0x123a1252, -0x120d1223, -0x0fc80ff1, -0x0f7c0fa1, -0x0f360f58, -0x0ef50f15, -0x0eba0ed7, -0x0e830e9e, -0x0e500e69, -0x0e210e38, -0x0bed0e0b, -0x0b9e0bc5, -0x0b550b79, -0x0b120b33, -0x0ad40af2, -0x0a9b0ab7, -0x0a660a80, -0x0a360a4e, -0x0a090a1f, -0x07c107e9, -0x0775079a, -0x072f0751, -0x06ef070f, -0x06b406d1, -0x067d0698, -0x064b0664, -0x061d0633, -0x03e50607, -0x039603bd, -0x034e0371, -0x0000032c, -/* AIR 12: diff=86.125000 */ -0x33633371, -0x33473355, -0x332a3338, -0x330f331c, -0x32f33301, -0x32d832e5, -0x32bd32ca, -0x32a232b0, -0x32883295, -0x326e327b, -0x32553262, -0x323c3249, -0x32243230, -0x320c3218, -0x2fea3200, -0x2fbc2fd3, -0x2f8f2fa5, -0x2f642f79, -0x2f392f4e, -0x2f102f24, -0x2ee82efc, -0x2ec12ed4, -0x2e9c2eae, -0x2e782e89, -0x2e552e66, -0x2e332e44, -0x2e132e23, -0x2be82e03, -0x2bad2bca, -0x2b742b90, -0x2b3e2b59, -0x2b0a2b24, -0x2ad92af1, -0x2aaa2ac1, -0x2a7e2a94, -0x2a542a69, -0x2a2d2a40, -0x2a072a1a, -0x27c927ec, -0x278627a7, -0x27482767, -0x270d272a, -0x26d626f1, -0x26a326bc, -0x2673268a, -0x2645265c, -0x261b2630, -0x23e82607, -0x239f23c3, -0x235b237c, -0x231b233a, -0x22e022fd, -0x22a922c4, -0x2276228f, -0x2246225e, -0x221a2230, -0x1fe42206, -0x1f981fbd, -0x1f521f74, -0x1f111f31, -0x1ed51ef2, -0x1e9d1eb8, -0x1e691e83, -0x1e3a1e51, -0x1e0e1e23, -0x1bcb1bf3, -0x1b801ba4, -0x1b3a1b5c, -0x1afa1b19, -0x1abf1adc, -0x1a881aa3, -0x1a551a6e, -0x1a271a3e, -0x17f81a11, -0x17a917cf, -0x175f1783, -0x171c173d, -0x16dd16fc, -0x16a416c0, -0x166f1689, -0x163e1656, -0x16111627, -0x13cf13f8, -0x138313a8, -0x133c135f, -0x12fb131b, -0x12bf12dd, -0x128812a3, -0x1255126e, -0x1226123d, -0x0ff61210, -0x0fa60fcd, -0x0f5d0f81, -0x0f190f3a, -0x0eda0ef9, -0x0ea10ebd, -0x0e6c0e86, -0x0e3b0e53, -0x0e0e0e24, -0x0bca0bf2, -0x0b7d0ba3, -0x0b370b59, -0x0af60b16, -0x0aba0ad7, -0x0a830a9e, -0x0a500a69, -0x0a220a39, -0x07ee0a0c, -0x079f07c6, -0x07560779, -0x07120733, -0x06d406f3, -0x069b06b7, -0x06670680, -0x0636064e, -0x060a061f, -0x03c103ea, -0x0376039b, -0x03300352, -0x02ef030f, -0x02b402d1, -0x027e0298, -0x024b0264, -0x021d0234, -0x01f20207, -0x01cb01de, -0x01a701b9, -0x00000196, -/* AIR 13: diff=43.062500 */ -0x327d328a, -0x32633270, -0x324a3257, -0x3231323e, -0x32193225, -0x3202320d, -0x2fd52fec, -0x2fa82fbf, -0x2f7c2f92, -0x2f512f66, -0x2f272f3c, -0x2efe2f12, -0x2ed72eea, -0x2eb12ec3, -0x2e8c2e9e, -0x2e682e7a, -0x2e462e57, -0x2e252e35, -0x2e052e15, -0x2bce2bec, -0x2b932bb0, -0x2b5c2b77, -0x2b272b41, -0x2af42b0d, -0x2ac42adc, -0x2a972aad, -0x2a6c2a81, -0x2a432a57, -0x2a1c2a2f, -0x27f02a0a, -0x27ab27cd, -0x276a278a, -0x272e274c, -0x26f52711, -0x26bf26da, -0x268d26a6, -0x265e2675, -0x26332648, -0x260a261e, -0x23c823ed, -0x238023a3, -0x233e235f, -0x2301231f, -0x22c722e3, -0x229222ac, -0x22612279, -0x22332249, -0x2208221d, -0x1fc21fe8, -0x1f781f9c, -0x1f351f56, -0x1ef61f15, -0x1ebc1ed8, -0x1e861ea0, -0x1e541e6c, -0x1e261e3d, -0x1bf81e10, -0x1ba91bcf, -0x1b601b84, -0x1b1d1b3e, -0x1adf1afe, -0x1aa61ac2, -0x1a711a8b, -0x1a401a58, -0x1a131a29, -0x17d417fd, -0x178817ad, -0x17411764, -0x17001720, -0x16c416e1, -0x168c16a7, -0x16591672, -0x162a1641, -0x13fd1614, -0x13ad13d4, -0x13631387, -0x131f1340, -0x12e012ff, -0x12a612c3, -0x1271128b, -0x12401258, -0x12121229, -0x0fd20ffb, -0x0f850fab, -0x0f3e0f61, -0x0efd0f1d, -0x0ec00ede, -0x0e890ea4, -0x0e560e6f, -0x0e270e3e, -0x0bf70e11, -0x0ba70bce, -0x0b5d0b82, -0x0b1a0b3b, -0x0adb0afa, -0x0aa10abe, -0x0a6c0a86, -0x0a3b0a53, -0x0a0e0a24, -0x07ca07f3, -0x077e07a3, -0x0737075a, -0x06f60716, -0x06bb06d8, -0x0684069f, -0x0651066a, -0x06220639, -0x03ef060c, -0x039f03c6, -0x0356037a, -0x03130334, -0x02d502f3, -0x029c02b8, -0x02670281, -0x0237024e, -0x020a0220, -0x01e101f5, -0x01bb01cd, -0x019801a9, -0x01780188, -0x015a0169, -0x013f014c, -0x01260132, -0x010f011a, -0x00f90104, -0x00e600ef, -0x00d300dc, -0x000000cb, -/* AIR 14: diff=21.531250 */ -0x2f692f7e, -0x2f3e2f53, -0x2f152f29, -0x2eed2f01, -0x2ec62ed9, -0x2ea02eb3, -0x2e7c2e8e, -0x2e592e6a, -0x2e372e48, -0x2e172e27, -0x2bef2e07, -0x2bb42bd1, -0x2b7b2b97, -0x2b442b5f, -0x2b102b2a, -0x2adf2af7, -0x2ab02ac7, -0x2a832a99, -0x2a592a6e, -0x2a312a45, -0x2a0c2a1e, -0x27d127f4, -0x278e27af, -0x274f276e, -0x27142731, -0x26dd26f8, -0x26a926c2, -0x26782690, -0x264b2661, -0x26202635, -0x23f2260c, -0x23a823cc, -0x23632385, -0x23232342, -0x22e72304, -0x22af22cb, -0x227c2295, -0x224c2263, -0x22202235, -0x1fed220b, -0x1fa11fc6, -0x1f5a1f7d, -0x1f181f38, -0x1edc1ef9, -0x1ea31ebf, -0x1e6f1e89, -0x1e3f1e57, -0x1e131e29, -0x1bd41bfc, -0x1b881bad, -0x1b421b64, -0x1b011b21, -0x1ac51ae3, -0x1a8e1aa9, -0x1a5b1a74, -0x1a2c1a43, -0x1a011a16, -0x17b217d9, -0x1768178c, -0x17241745, -0x16e51703, -0x16ab16c7, -0x1675168f, -0x1644165c, -0x1616162d, -0x13d91601, -0x138c13b2, -0x13441367, -0x13031323, -0x12c612e4, -0x128e12aa, -0x125b1274, -0x122b1243, -0x12001215, -0x0faf0fd7, -0x0f650f89, -0x0f210f42, -0x0ee20f00, -0x0ea70ec4, -0x0e720e8c, -0x0e410e59, -0x0e130e29, -0x0bd30bfc, -0x0b860bac, -0x0b3f0b62, -0x0afd0b1e, -0x0ac10adf, -0x0a8a0aa5, -0x0a560a6f, -0x0a270a3e, -0x07f80a11, -0x07a807cf, -0x075e0782, -0x071a073b, -0x06dc06fa, -0x06a206be, -0x066d0687, -0x063c0654, -0x060f0625, -0x03cb03f4, -0x037e03a4, -0x0338035a, -0x02f70317, -0x02bb02d8, -0x0284029f, -0x0251026a, -0x02220239, -0x01f7020c, -0x01d001e3, -0x01ab01bd, -0x0189019a, -0x016a017a, -0x014e015c, -0x01340140, -0x011b0127, -0x01050110, -0x00f000fa, -0x00dd00e7, -0x00cc00d5, -0x00bc00c4, -0x00ad00b4, -0x009f00a6, -0x00930099, -0x0087008d, -0x007d0082, -0x00730078, -0x006a006e, -0x00000065, -/* AIR 15: diff=10.765625 */ -0x2e292e39, -0x2e092e18, -0x2bd52bf3, -0x2b9a2bb7, -0x2b622b7e, -0x2b2d2b47, -0x2afa2b13, -0x2aca2ae2, -0x2a9c2ab3, -0x2a712a86, -0x2a472a5c, -0x2a212a34, -0x27f82a0e, -0x27b327d5, -0x27722792, -0x27352753, -0x26fb2718, -0x26c526e0, -0x269326ac, -0x2664267b, -0x2638264d, -0x260e2623, -0x23d023f6, -0x238923ac, -0x23462367, -0x23082326, -0x22ce22ea, -0x229822b3, -0x2266227f, -0x2238224f, -0x220d2222, -0x1fcb1ff2, -0x1f811fa5, -0x1f3c1f5e, -0x1efd1f1c, -0x1ec21edf, -0x1e8c1ea7, -0x1e5a1e72, -0x1e2b1e42, -0x1e001e15, -0x1bb21bd9, -0x1b691b8d, -0x1b251b46, -0x1ae61b05, -0x1aad1ac9, -0x1a771a91, -0x1a461a5e, -0x1a191a2f, -0x17de1a03, -0x179017b6, -0x1749176c, -0x17071728, -0x16cb16e8, -0x169316ae, -0x165f1678, -0x162f1647, -0x16031619, -0x13b613de, -0x136c1390, -0x13271349, -0x12e71306, -0x12ad12ca, -0x12771291, -0x1245125e, -0x1218122e, -0x0fdc1202, -0x0f8e0fb4, -0x0f460f69, -0x0f040f25, -0x0ec70ee5, -0x0e8f0eab, -0x0e5c0e75, -0x0e2c0e43, -0x0e000e16, -0x0bb00bd8, -0x0b660b8a, -0x0b210b43, -0x0ae20b01, -0x0aa80ac5, -0x0a720a8d, -0x0a410a59, -0x0a140a2a, -0x07d407fd, -0x078707ac, -0x073f0762, -0x06fe071e, -0x06c206df, -0x068a06a5, -0x06570670, -0x0627063f, -0x03f90611, -0x03a803d0, -0x035f0383, -0x031b033c, -0x02dc02fb, -0x02a202bf, -0x026d0287, -0x023c0254, -0x020f0225, -0x01e501fa, -0x01bf01d2, -0x019c01ad, -0x017b018b, -0x015e016c, -0x01420150, -0x01290135, -0x0111011d, -0x00fc0106, -0x00e800f2, -0x00d600df, -0x00c500cd, -0x00b500bd, -0x00a700ae, -0x009a00a0, -0x008e0094, -0x00820088, -0x0078007d, -0x006f0073, -0x0066006a, -0x005e0062, -0x0057005a, -0x00500053, -0x0049004d, -0x00440046, -0x003e0041, -0x0039003c, -0x00350037, -0x00000033, - /* RDF 0: 1/1: 255.000000 */ -0x1e000000, -0x23002200, -0x26802600, -0x27802700, -0x2a402a00, -0x2ac02a80, -0x2b402b00, -0x2bc02b80, -0x2e202e00, -0x2e602e40, -0x2ea02e80, -0x2ee02ec0, -0x2f202f00, -0x2f602f40, -0x2fa02f80, -0x2fe02fc0, -0x32103200, -0x32303220, -0x32503240, -0x32703260, -0x32903280, -0x32b032a0, -0x32d032c0, -0x32f032e0, -0x33103300, -0x33303320, -0x33503340, -0x33703360, -0x33903380, -0x33b033a0, -0x33d033c0, -0x33f033e0, -0x36083600, -0x36183610, -0x36283620, -0x36383630, -0x36483640, -0x36583650, -0x36683660, -0x36783670, -0x36883680, -0x36983690, -0x36a836a0, -0x36b836b0, -0x36c836c0, -0x36d836d0, -0x36e836e0, -0x36f836f0, -0x37083700, -0x37183710, -0x37283720, -0x37383730, -0x37483740, -0x37583750, -0x37683760, -0x37783770, -0x37883780, -0x37983790, -0x37a837a0, -0x37b837b0, -0x37c837c0, -0x37d837d0, -0x37e837e0, -0x37f837f0, -0x3a043a00, -0x3a0c3a08, -0x3a143a10, -0x3a1c3a18, -0x3a243a20, -0x3a2c3a28, -0x3a343a30, -0x3a3c3a38, -0x3a443a40, -0x3a4c3a48, -0x3a543a50, -0x3a5c3a58, -0x3a643a60, -0x3a6c3a68, -0x3a743a70, -0x3a7c3a78, -0x3a843a80, -0x3a8c3a88, -0x3a943a90, -0x3a9c3a98, -0x3aa43aa0, -0x3aac3aa8, -0x3ab43ab0, -0x3abc3ab8, -0x3ac43ac0, -0x3acc3ac8, -0x3ad43ad0, -0x3adc3ad8, -0x3ae43ae0, -0x3aec3ae8, -0x3af43af0, -0x3afc3af8, -0x3b043b00, -0x3b0c3b08, -0x3b143b10, -0x3b1c3b18, -0x3b243b20, -0x3b2c3b28, -0x3b343b30, -0x3b3c3b38, -0x3b443b40, -0x3b4c3b48, -0x3b543b50, -0x3b5c3b58, -0x3b643b60, -0x3b6c3b68, -0x3b743b70, -0x3b7c3b78, -0x3b843b80, -0x3b8c3b88, -0x3b943b90, -0x3b9c3b98, -0x3ba43ba0, -0x3bac3ba8, -0x3bb43bb0, -0x3bbc3bb8, -0x3bc43bc0, -0x3bcc3bc8, -0x3bd43bd0, -0x3bdc3bd8, -0x3be43be0, -0x3bec3be8, -0x3bf43bf0, -0x3bfc3bf8, - /* RDF 1: 1/2: 16.880227 */ -0x1e000000, -0x23002200, -0x26802600, -0x27802700, -0x2a402a00, -0x2ac02a80, -0x2b402b00, -0x2bc02b80, -0x2e1c2e00, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, -0x2e1c2e1c, - /* RDF 2: 1/4: 7.005927 */ -0x1e000000, -0x23002200, -0x26802600, -0x27802700, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, -0x27802780, - /* RDF 3: 1/8: 3.251893 */ -0x1e000000, -0x23002200, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, -0x23402340, - /* RDF 4: 1/16: 1.571708 */ -0x1e000000, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, -0x1f241f24, - /* RDF 5: 1/32: 0.773177 */ -0x1b170000, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, -0x1b171b17, - /* RDF 6: 1/64: 0.383520 */ -0x17110000, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, -0x17111711, - /* RDF 7: 1/128: 0.191005 */ -0x130e0000, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, -0x130e130e, - /* RDF 8: 1/256: 0.095315 */ -0x0f0c0000, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, -0x0f0c0f0c, - /* RDF 9: 1/512: 0.047611 */ -0x0b0c0000, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, -0x0b0c0b0c, - /* RDF 10: 1/1024: 0.023794 */ -0x070b0000, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, -0x070b070b, - /* RDF 11: 1/2048: 0.011894 */ -0x030b0000, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, -0x030b030b, - /* RDF 12: 1/4096: 0.005946 */ -0x01860000, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, -0x01860186, - /* RDF 13: 1/8192: 0.002973 */ -0x00c30000, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, -0x00c300c3, - /* RDF 14: 1/16384: 0.001486 */ -0x00610000, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, -0x00610061, - /* RDF 15: 1/32768: 0.000743 */ -0x00310000, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -0x00310031, -}; - -/* - * Tables for 59259cps and 25Mbps - */ -const uint32_t patm_rtables25[128 * (4 + 2 * 16)] = { -0x8d0222e4, -0x8d3022cb, -0x8d5e22b3, -0x8d8c229c, -0x8dbc2286, -0x8df02270, -0x8e26225b, -0x8e5c2247, -0x8e922234, -0x8ecc2221, -0x8f0c220e, -0x8f481ffa, -0x8f881fd8, -0x8fca1fb7, -0x90081f97, -0x902c1f78, -0x90521f5a, -0x90781f3e, -0x90a01f22, -0x90c81f07, -0x90f21eed, -0x911e1ed4, -0x914c1ebc, -0x917c1ea4, -0x91aa1e8e, -0x91de1e78, -0x92141e62, -0x92481e4e, -0x92801e3a, -0x92ba1e27, -0x92f41e15, -0x93321e03, -0x93701be4, -0x93b41bc2, -0x93f81ba2, -0x94201b83, -0x94441b65, -0x946a1b48, -0x94921b2b, -0x94ba1b10, -0x94e41af6, -0x950e5add, -0x953c5ac4, -0x956c5aac, -0x959c5a95, -0x95cc5a7f, -0x96005a6a, -0x96365a55, -0x966c5a41, -0x96a45a2e, -0x96e05a1b, -0x971c5a09, -0x975c57ef, -0x979c57ce, -0x97e057ad, -0x9814578d, -0x9838576f, -0x985c5752, -0x98845735, -0x98ac571a, -0x98d656ff, -0x990096e5, -0x992e96cc, -0x995c96b4, -0x998a969d, -0x99ba9687, -0x99ee9671, -0x9a22965c, -0x9a589648, -0x9a929634, -0x9acc9621, -0x9b08960f, -0x9b4693fb, -0x9b8693d9, -0x9bc893b8, -0x9c089398, -0x9c2c9379, -0x9c50935c, -0x9c76933f, -0x9c9e9323, -0x9cc69308, -0x9cf292ee, -0x9d1cd2d5, -0x9d4ad2bd, -0x9d7ad2a5, -0x9daad28e, -0x9ddad279, -0x9e10d263, -0x9e46d24f, -0x9e7ed23b, -0x9eb6d228, -0x9ef4d215, -0x9f32d203, -0x9f6ecfe5, -0x9fb2cfc3, -0x9ff6cfa3, -0xa01ecf84, -0xa042cf66, -0xa068cf49, -0xa090cf2d, -0xa0b8cf11, -0xa0e2cef7, -0xa10d0ede, -0xa13b0ec5, -0xa16b0ead, -0xa19b0e96, -0xa1cb0e80, -0xa1fd0e6b, -0xa2330e56, -0xa26b0e42, -0xa2a50e2e, -0xa2dd0e1c, -0xa31b0e0a, -0xa3590bf1, -0xa39b0bcf, -0xa3df0bae, -0xa4130b8f, -0xa4370b70, -0xa45d0b53, -0xa4830b36, -0xa4ab0b1b, -0xa4d50b00, -0xa4ff0ae6, -0xa52d0acd, -0xa55b0ab5, -0xa5890a9e, -0xa5b90a88, -0xa5ed0a72, -0xa6210a5d, -0xa6570a49, -0xa6910a35, -0xa6cb0a22, -0xa7050a10, -0xa74307fd, -0xa78307db, -0xa7c707b9, -0xa807079a, -0xa82b077b, -0xa84f075d, -0xa8750740, -0xa89d0724, -0xa8c70709, -0xa8f106ef, -0xa91b06d6, -0xa94906be, -0xa97906a6, -0xa9a9068f, -0xa9db0679, -0xaa0f0664, -0xaa430650, -0xaa7b063c, -0xaab50629, -0xaaf10616, -0xab2f0604, -0xab6f03e6, -0xabaf03c5, -0xabf503a4, -0xac1f0385, -0xac430367, -0xac69034a, -0xac8f032e, -0xacb90312, -0xace102f8, -0xad0b02df, -0xad3902c6, -0xad6902ae, -0xad990297, -0xadc90281, -0xadfd026b, -0xae310257, -0xae670243, -0xaea3022f, -0xaedd021c, -0xaf1b020a, -0xaf5701f9, -0xaf9901e8, -0xafdb01d8, -0xb01101c8, -0xb03701b8, -0xb05b01aa, -0xb083019b, -0xb0a9018e, -0xb0d50180, -0xb0ff0173, -0xb12b0167, -0xb159015b, -0xb189014f, -0xb1b90144, -0xb1ed0139, -0xb21f012f, -0xb2590124, -0xb28d011b, -0xb2cb0111, -0xb3050108, -0xb34500ff, -0xb38100f7, -0xb3c900ee, -0xb40900e6, -0xb42900df, -0xb45100d7, -0xb47500d0, -0xb49d00c9, -0xb4c700c2, -0xb4ef00bc, -0xb51f00b5, -0xb54d00af, -0xb57d00a9, -0xb5a700a4, -0xb5df009e, -0xb60f0099, -0xb6430094, -0xb67b008f, -0xb6b7008a, -0xb6f90085, -0xb72f0081, -0xb76b007d, -0xb7b90078, -0xb7fd0074, -0xb8250070, -0xb841006d, -0xb86b0069, -0xb8970065, -0xb8bb0062, -0xb8e1005f, -0xb90b005c, -0xb9450058, -0xb9750055, -0xb9950053, -0xb9cb0050, -0xba05004d, -0xba43004a, -0xba710048, -0xba9f0046, -0xbaeb0043, -0xbb210041, -0xbb5b003f, -0xbb99003d, -0xbbdb003b, -0xbc110039, -0xbc370037, -0xbc610035, -0xbc8b0033, -0xbcbb0031, -0xbcd50030, -0xbd0b002e, -0xbd45002c, -0xbd65002b, -0xbd85002a, -0xbdcb0028, -0xbdf10027, -0xbe430025, -0xbe710024, -0xbe9f0023, -0xbed10022, -0xbf050021, -0xbf3d0020, -0x00000000, -0x00000000, -0x00000000, -0x00000000, -0x00000000, -0x00000000, -0x00000000, -0x00000000, -0x00000000, -0x00000000, -0x00000000, -0x00000000, -0x00000000, -0x04030100, -0x09080705, -0x0d0c0b0a, -0x1311100e, -0x18171614, -0x1d1c1b1a, -0x21201f1e, -0x27262422, -0x2d2b2a29, -0x32302f2e, -0x36353433, -0x3c3a3836, -0x41403e3d, -0x46454442, -0x4a494847, -0x504e4d4b, -0x55545351, -0x5a595857, -0x5e5d5c5b, -0x6463615f, -0x6a696766, -0x6f6d6c6b, -0x73727170, -0x79777574, -0x7e7d7c7a, -0x8382817f, -0x87868584, -0x8d8b8a88, -0x9391908e, -0x97969594, -0x9b9a9998, -0xa1a09e9c, -0xa7a6a4a3, -0xacaaa9a8, -0xb0afaead, -0xb6b4b2b1, -0xbbbab9b7, -0xc0bfbebc, -0xc4c3c2c1, -0xcac8c7c5, -0xd0cecdcb, -0xd4d3d2d1, -0xd8d7d6d5, -0xdedddbd9, -0xe4e3e1e0, -0xe9e8e6e5, -0xedecebea, -0xf3f1efee, -0xf8f7f6f4, -0xfdfcfbfa, -0xfffffffe, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0xffffffff, -0x00005f9e, -0x00005d9e, -0x00015b9e, -0x0001599e, -0x0003579e, -0x0003559e, -0x00030000, -0x00030000, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -/* AIR 0: diff=59259.000000 */ -0x3bf83bfc, -0x3bf03bf4, -0x3be83bec, -0x3be03be4, -0x3bd83bdc, -0x3bd03bd4, -0x3bc83bcc, -0x3bc03bc4, -0x3bb83bbc, -0x3bb03bb4, -0x3ba83bac, -0x3ba03ba4, -0x3b983b9c, -0x3b903b94, -0x3b883b8c, -0x3b803b84, -0x3b783b7c, -0x3b703b74, -0x3b683b6c, -0x3b603b64, -0x3b583b5c, -0x3b503b54, -0x3b483b4c, -0x3b403b44, -0x3b383b3c, -0x3b303b34, -0x3b283b2c, -0x3b203b24, -0x3b183b1c, -0x3b103b14, -0x3b083b0c, -0x3b003b04, -0x3af83afc, -0x3af03af4, -0x3ae83aec, -0x3ae03ae4, -0x3ad83adc, -0x3ad03ad4, -0x3ac83acc, -0x3ac03ac4, -0x3ab83abc, -0x3ab03ab4, -0x3aa83aac, -0x3aa03aa4, -0x3a983a9c, -0x3a903a94, -0x3a883a8c, -0x3a803a84, -0x3a783a7c, -0x3a703a74, -0x3a683a6c, -0x3a603a64, -0x3a583a5c, -0x3a503a54, -0x3a483a4c, -0x3a403a44, -0x3a383a3c, -0x3a303a34, -0x3a283a2c, -0x3a203a24, -0x3a183a1c, -0x3a103a14, -0x3a083a0c, -0x3a003a04, -0x37f037f8, -0x37e037e8, -0x37d037d8, -0x37c037c8, -0x37b037b8, -0x37a037a8, -0x37903798, -0x37803788, -0x37703778, -0x37603768, -0x37503758, -0x37403748, -0x37303738, -0x37203728, -0x37103718, -0x37003708, -0x36f036f8, -0x36e036e8, -0x36d036d8, -0x36c036c8, -0x36b036b8, -0x36a036a8, -0x36903698, -0x36803688, -0x36703678, -0x36603668, -0x36503658, -0x36403648, -0x36303638, -0x36203628, -0x36103618, -0x36003608, -0x33e033f0, -0x33c033d0, -0x33a033b0, -0x33803390, -0x33603370, -0x33403350, -0x33203330, -0x33003310, -0x32e032f0, -0x32c032d0, -0x32a032b0, -0x32803290, -0x32603270, -0x32403250, -0x32203230, -0x32003210, -0x2fc02fe0, -0x2f802fa0, -0x2f402f60, -0x2f002f20, -0x2ec02ee0, -0x2e802ea0, -0x2e402e60, -0x2e002e20, -0x2b802bc0, -0x2b002b40, -0x2a802ac0, -0x2a002a40, -0x27002780, -0x26002680, -0x22002300, -0x00001e00, -/* AIR 1: diff=29629.500000 */ -0x3ba63baa, -0x3b9e3ba2, -0x3b963b9a, -0x3b8e3b92, -0x3b863b8a, -0x3b7e3b82, -0x3b763b7a, -0x3b6e3b72, -0x3b663b6a, -0x3b5e3b62, -0x3b563b5a, -0x3b4e3b52, -0x3b463b4a, -0x3b3e3b42, -0x3b363b3a, -0x3b2e3b32, -0x3b263b2a, -0x3b1e3b22, -0x3b163b1a, -0x3b0e3b12, -0x3b063b0a, -0x3afe3b02, -0x3af63afa, -0x3aee3af2, -0x3ae63aea, -0x3ade3ae2, -0x3ad63ada, -0x3ace3ad2, -0x3ac63aca, -0x3abe3ac2, -0x3ab63aba, -0x3aae3ab2, -0x3aa63aaa, -0x3a9f3aa2, -0x3a973a9b, -0x3a8f3a93, -0x3a873a8b, -0x3a7f3a83, -0x3a773a7b, -0x3a6f3a73, -0x3a673a6b, -0x3a5f3a63, -0x3a573a5b, -0x3a4f3a53, -0x3a473a4b, -0x3a3f3a43, -0x3a373a3b, -0x3a2f3a33, -0x3a273a2b, -0x3a1f3a23, -0x3a173a1b, -0x3a0f3a13, -0x3a083a0b, -0x3a003a04, -0x37f037f8, -0x37e037e8, -0x37d037d8, -0x37c137c9, -0x37b137b9, -0x37a137a9, -0x37923799, -0x3782378a, -0x3772377a, -0x3763376a, -0x3753375b, -0x3744374b, -0x3734373c, -0x3724372c, -0x3715371d, -0x3706370d, -0x36f636fe, -0x36e736ef, -0x36d836df, -0x36c836d0, -0x36b936c1, -0x36aa36b2, -0x369b36a2, -0x368c3693, -0x367d3684, -0x366e3675, -0x365f3666, -0x36503658, -0x36423649, -0x3633363a, -0x3625362c, -0x3616361d, -0x3608360f, -0x33f43601, -0x33d833e6, -0x33bc33ca, -0x33a033ae, -0x33853392, -0x33693377, -0x334e335c, -0x33343341, -0x331a3327, -0x3300330d, -0x32e632f3, -0x32cd32d9, -0x32b432c0, -0x329c32a8, -0x3283328f, -0x326c3278, -0x32553260, -0x323e3249, -0x32273233, -0x3212321c, -0x2ff93207, -0x2fcf2fe4, -0x2fa62fba, -0x2f7e2f92, -0x2f572f6b, -0x2f322f44, -0x2f0d2f1f, -0x2ee92efb, -0x2ec72ed8, -0x2ea52eb6, -0x2e802e95, -0x2e402e60, -0x2e002e20, -0x2b802bc0, -0x2b002b40, -0x2a802ac0, -0x2a002a40, -0x27002780, -0x26002680, -0x22002300, -0x00001e00, -/* AIR 2: diff=14814.750000 */ -0x3b553b59, -0x3b4d3b51, -0x3b453b49, -0x3b3d3b41, -0x3b353b39, -0x3b2d3b31, -0x3b253b29, -0x3b1d3b21, -0x3b153b19, -0x3b0d3b11, -0x3b053b09, -0x3afd3b01, -0x3af53af9, -0x3aed3af1, -0x3ae53ae9, -0x3add3ae1, -0x3ad53ad9, -0x3acd3ad1, -0x3ac53ac9, -0x3abd3ac1, -0x3ab53ab9, -0x3aad3ab1, -0x3aa53aa9, -0x3a9d3aa1, -0x3a953a99, -0x3a8d3a91, -0x3a853a89, -0x3a7d3a81, -0x3a753a79, -0x3a6d3a71, -0x3a653a69, -0x3a5d3a61, -0x3a553a59, -0x3a4e3a51, -0x3a463a4a, -0x3a3e3a42, -0x3a363a3a, -0x3a2e3a32, -0x3a263a2a, -0x3a1e3a22, -0x3a163a1a, -0x3a0e3a12, -0x3a063a0a, -0x37fd3a02, -0x37ed37f5, -0x37dd37e5, -0x37ce37d6, -0x37be37c6, -0x37ae37b6, -0x379f37a6, -0x378f3797, -0x377f3787, -0x37703777, -0x37603768, -0x37503758, -0x37413749, -0x37313739, -0x3722372a, -0x3712371a, -0x3703370b, -0x36f436fb, -0x36e436ec, -0x36d536dd, -0x36c636cd, -0x36b636be, -0x36a736af, -0x369836a0, -0x36893691, -0x367a3682, -0x366b3673, -0x365d3664, -0x364e3655, -0x363f3646, -0x36313638, -0x36223629, -0x3614361b, -0x3605360d, -0x33ef33fd, -0x33d333e1, -0x33b733c5, -0x339b33a9, -0x3380338d, -0x33653372, -0x334a3357, -0x332f333d, -0x33153322, -0x32fb3308, -0x32e232ee, -0x32c932d5, -0x32b032bc, -0x329732a4, -0x327f328b, -0x32683273, -0x3251325c, -0x323a3245, -0x3224322f, -0x320e3219, -0x2ff13203, -0x2fc82fdc, -0x2f9f2fb3, -0x2f772f8b, -0x2f512f64, -0x2f2b2f3e, -0x2f072f19, -0x2ee32ef5, -0x2ec12ed2, -0x2ea02eb0, -0x2e802e90, -0x2e602e70, -0x2e422e51, -0x2e262e34, -0x2e0a2e18, -0x2bde2bf9, -0x2bab2bc5, -0x2b7a2b92, -0x2b4a2b62, -0x2b1d2b34, -0x2af22b07, -0x2ac82add, -0x2aa12ab5, -0x2a7b2a8e, -0x2a572a69, -0x2a352a46, -0x2a002a25, -0x27002780, -0x26002680, -0x22002300, -0x00001e00, -/* AIR 3: diff=7407.375000 */ -0x3b043b07, -0x3afc3b00, -0x3af43af8, -0x3aec3af0, -0x3ae43ae8, -0x3adc3ae0, -0x3ad43ad8, -0x3acc3ad0, -0x3ac43ac8, -0x3abc3ac0, -0x3ab43ab8, -0x3aac3ab0, -0x3aa43aa8, -0x3a9c3aa0, -0x3a943a98, -0x3a8c3a90, -0x3a843a88, -0x3a7c3a80, -0x3a743a78, -0x3a6c3a70, -0x3a643a68, -0x3a5c3a60, -0x3a543a58, -0x3a4c3a50, -0x3a443a48, -0x3a3c3a40, -0x3a343a38, -0x3a2c3a30, -0x3a243a28, -0x3a1d3a20, -0x3a153a19, -0x3a0d3a11, -0x3a053a09, -0x37fa3a01, -0x37ea37f2, -0x37db37e3, -0x37cb37d3, -0x37bb37c3, -0x37ac37b3, -0x379c37a4, -0x378c3794, -0x377c3784, -0x376d3775, -0x375d3765, -0x374e3755, -0x373e3746, -0x372f3736, -0x371f3727, -0x37103717, -0x37003708, -0x36f136f9, -0x36e236e9, -0x36d236da, -0x36c336cb, -0x36b436bb, -0x36a536ac, -0x3696369d, -0x3687368e, -0x3678367f, -0x36693670, -0x365a3661, -0x364b3653, -0x363d3644, -0x362e3635, -0x36203627, -0x36113618, -0x3603360a, -0x33ea33f8, -0x33ce33dc, -0x33b233c0, -0x339633a4, -0x337b3389, -0x3360336e, -0x33453353, -0x332b3338, -0x3311331e, -0x32f73304, -0x32dd32ea, -0x32c432d1, -0x32ac32b8, -0x3293329f, -0x327b3287, -0x3264326f, -0x324d3258, -0x32363241, -0x3220322b, -0x320a3215, -0x2fea2fff, -0x2fc12fd5, -0x2f982fac, -0x2f712f84, -0x2f4a2f5d, -0x2f252f37, -0x2f012f13, -0x2edd2eef, -0x2ebb2ecc, -0x2e9a2eaa, -0x2e7a2e8a, -0x2e5b2e6b, -0x2e3d2e4c, -0x2e212e2f, -0x2e052e13, -0x2bd52bf0, -0x2ba22bbc, -0x2b712b8a, -0x2b422b5a, -0x2b162b2c, -0x2aeb2b00, -0x2ac22ad6, -0x2a9a2aae, -0x2a752a87, -0x2a512a63, -0x2a302a40, -0x2a0f2a1f, -0x27e22a00, -0x27a827c5, -0x2771278c, -0x273d2757, -0x270c2724, -0x26dd26f4, -0x26b126c7, -0x2687269c, -0x26602673, -0x263b264d, -0x26182629, -0x23ee2607, -0x22002300, -0x00001e00, -/* AIR 4: diff=3703.687500 */ -0x3ab23ab6, -0x3aaa3aae, -0x3aa23aa6, -0x3a9a3a9e, -0x3a923a96, -0x3a8a3a8e, -0x3a823a86, -0x3a7a3a7e, -0x3a733a77, -0x3a6b3a6f, -0x3a633a67, -0x3a5b3a5f, -0x3a533a57, -0x3a4b3a4f, -0x3a433a47, -0x3a3b3a3f, -0x3a333a37, -0x3a2b3a2f, -0x3a233a27, -0x3a1b3a1f, -0x3a133a17, -0x3a0b3a0f, -0x3a033a07, -0x37f837ff, -0x37e837f0, -0x37d837e0, -0x37c837d0, -0x37b937c0, -0x37a937b1, -0x379937a1, -0x37893791, -0x377a3782, -0x376a3772, -0x375b3762, -0x374b3753, -0x373b3743, -0x372c3734, -0x371c3724, -0x370d3715, -0x36fe3705, -0x36ee36f6, -0x36df36e7, -0x36d036d7, -0x36c036c8, -0x36b136b9, -0x36a236aa, -0x3693369b, -0x3684368c, -0x3675367d, -0x3666366e, -0x3657365f, -0x36493650, -0x363a3641, -0x362c3633, -0x361d3624, -0x360f3616, -0x36003608, -0x33e533f3, -0x33c933d7, -0x33ad33bb, -0x3392339f, -0x33763384, -0x335b3369, -0x3341334e, -0x33263333, -0x330c3319, -0x32f232ff, -0x32d932e6, -0x32c032cc, -0x32a732b4, -0x328f329b, -0x32773283, -0x3260326b, -0x32493254, -0x3232323d, -0x321c3227, -0x32063211, -0x2fe32ff8, -0x2fba2fce, -0x2f912fa5, -0x2f6a2f7d, -0x2f442f57, -0x2f1e2f31, -0x2efa2f0c, -0x2ed72ee9, -0x2eb52ec6, -0x2e942ea5, -0x2e752e84, -0x2e562e65, -0x2e382e47, -0x2e1c2e2a, -0x2e002e0e, -0x2bcc2be7, -0x2b9a2bb3, -0x2b692b81, -0x2b3b2b52, -0x2b0e2b24, -0x2ae32af8, -0x2abb2acf, -0x2a942aa7, -0x2a6f2a81, -0x2a4b2a5d, -0x2a2a2a3a, -0x2a0a2a1a, -0x27d827f6, -0x279e27bb, -0x27682783, -0x2734274e, -0x2703271c, -0x26d526ec, -0x26a926bf, -0x26802695, -0x2659266c, -0x26342647, -0x26122623, -0x23e22601, -0x23a523c3, -0x236b2387, -0x2334234f, -0x2301231a, -0x22d022e8, -0x22a322b9, -0x2278228d, -0x22502264, -0x222b223d, -0x22072219, -0x1fcd1fed, -0x00001e00, -/* AIR 5: diff=1851.843750 */ -0x3a613a65, -0x3a593a5d, -0x3a513a55, -0x3a493a4d, -0x3a413a45, -0x3a393a3d, -0x3a323a36, -0x3a2a3a2e, -0x3a223a26, -0x3a1a3a1e, -0x3a123a16, -0x3a0a3a0e, -0x3a023a06, -0x37f537fd, -0x37e537ed, -0x37d537dd, -0x37c637cd, -0x37b637be, -0x37a637ae, -0x3796379e, -0x3787378f, -0x3777377f, -0x3767376f, -0x37583760, -0x37483750, -0x37393741, -0x37293731, -0x371a3721, -0x370a3712, -0x36fb3703, -0x36ec36f3, -0x36dc36e4, -0x36cd36d5, -0x36be36c5, -0x36af36b6, -0x369f36a7, -0x36903698, -0x36813689, -0x3672367a, -0x3664366b, -0x3655365c, -0x3646364d, -0x3638363f, -0x36293630, -0x361b3622, -0x360c3613, -0x33fc3605, -0x33e033ee, -0x33c433d2, -0x33a833b6, -0x338d339b, -0x3372337f, -0x33573364, -0x333c3349, -0x3322332f, -0x33083315, -0x32ee32fb, -0x32d532e1, -0x32bc32c8, -0x32a332af, -0x328b3297, -0x3273327f, -0x325c3267, -0x32453250, -0x322e3239, -0x32183223, -0x3203320d, -0x2fdc2ff1, -0x2fb22fc7, -0x2f8a2f9e, -0x2f632f77, -0x2f3d2f50, -0x2f182f2b, -0x2ef42f06, -0x2ed12ee3, -0x2eb02ec0, -0x2e8f2e9f, -0x2e6f2e7f, -0x2e512e60, -0x2e332e42, -0x2e172e25, -0x2bf82e09, -0x2bc32bdd, -0x2b912baa, -0x2b612b79, -0x2b332b4a, -0x2b062b1c, -0x2adc2af1, -0x2ab42ac8, -0x2a8d2aa0, -0x2a682a7b, -0x2a462a57, -0x2a242a35, -0x2a052a14, -0x27ce27eb, -0x279527b1, -0x275f2779, -0x272c2745, -0x26fb2713, -0x26cd26e4, -0x26a226b8, -0x2679268d, -0x26532666, -0x262e2640, -0x260c261d, -0x23d823f7, -0x239b23b9, -0x2361237d, -0x232b2346, -0x22f82311, -0x22c822e0, -0x229b22b2, -0x22712286, -0x224a225d, -0x22242237, -0x22012213, -0x1fc21fe2, -0x1f841fa3, -0x1f4b1f67, -0x1f141f2f, -0x1ee21efb, -0x1eb21eca, -0x1e861e9c, -0x1e5c1e71, -0x1e351e48, -0x1e101e22, -0x1bdd1bfe, -0x00001bbc, -/* AIR 6: diff=925.921875 */ -0x3a103a14, -0x3a093a0d, -0x3a013a05, -0x37f237fa, -0x37e237ea, -0x37d337da, -0x37c337cb, -0x37b337bb, -0x37a337ab, -0x3794379c, -0x3784378c, -0x3774377c, -0x3765376d, -0x3755375d, -0x3746374d, -0x3736373e, -0x3727372e, -0x3717371f, -0x3708370f, -0x36f83700, -0x36e936f1, -0x36da36e1, -0x36ca36d2, -0x36bb36c3, -0x36ac36b4, -0x369d36a4, -0x368e3695, -0x367f3686, -0x36703677, -0x36613668, -0x3652365a, -0x3644364b, -0x3635363c, -0x3626362e, -0x3618361f, -0x360a3611, -0x33f83603, -0x33db33e9, -0x33bf33cd, -0x33a433b1, -0x33883396, -0x336d337b, -0x3352335f, -0x33373345, -0x331d332a, -0x33033310, -0x32ea32f6, -0x32d032dd, -0x32b732c4, -0x329f32ab, -0x32873293, -0x326f327b, -0x32583263, -0x3241324c, -0x322a3236, -0x3214321f, -0x2ffe320a, -0x2fd42fe9, -0x2fab2fc0, -0x2f832f97, -0x2f5d2f70, -0x2f372f49, -0x2f122f24, -0x2eee2f00, -0x2ecb2edd, -0x2eaa2eba, -0x2e892e99, -0x2e6a2e79, -0x2e4c2e5b, -0x2e2e2e3d, -0x2e122e20, -0x2bef2e05, -0x2bbb2bd4, -0x2b892ba1, -0x2b592b70, -0x2b2b2b42, -0x2aff2b15, -0x2ad52aea, -0x2aad2ac1, -0x2a872a9a, -0x2a622a74, -0x2a402a51, -0x2a1f2a2f, -0x27ff2a0f, -0x27c427e1, -0x278b27a7, -0x27562770, -0x2723273c, -0x26f3270b, -0x26c626dc, -0x269b26b0, -0x26722686, -0x264c265f, -0x2628263a, -0x26062617, -0x23cd23ec, -0x239023ae, -0x23572373, -0x2322233c, -0x22f02308, -0x22c022d8, -0x229422aa, -0x226a227f, -0x22432256, -0x221e2230, -0x1ff8220d, -0x1fb71fd7, -0x1f7a1f98, -0x1f411f5d, -0x1f0b1f26, -0x1ed91ef2, -0x1eaa1ec1, -0x1e7e1e94, -0x1e551e69, -0x1e2e1e41, -0x1e0a1e1c, -0x1bd11bf3, -0x1b921bb1, -0x1b561b74, -0x1b1f1b3a, -0x1aeb1b04, -0x1aba1ad2, -0x1a8d1aa3, -0x1a621a77, -0x1a3a1a4e, -0x1a151a27, -0x17e51a03, -0x000017c4, -/* AIR 7: diff=462.960938 */ -0x37813789, -0x37723779, -0x3762376a, -0x3752375a, -0x3743374b, -0x3733373b, -0x3724372c, -0x3714371c, -0x3705370d, -0x36f636fd, -0x36e636ee, -0x36d736df, -0x36c836cf, -0x36b836c0, -0x36a936b1, -0x369a36a2, -0x368b3693, -0x367c3684, -0x366d3675, -0x365f3666, -0x36503657, -0x36413648, -0x3632363a, -0x3624362b, -0x3616361d, -0x3607360e, -0x33f33600, -0x33d633e5, -0x33bb33c8, -0x339f33ad, -0x33833391, -0x33683376, -0x334d335b, -0x33333340, -0x33193326, -0x32ff330c, -0x32e532f2, -0x32cc32d8, -0x32b332bf, -0x329b32a7, -0x3283328f, -0x326b3277, -0x3254325f, -0x323d3248, -0x32273232, -0x3211321c, -0x2ff73206, -0x2fcd2fe2, -0x2fa42fb9, -0x2f7d2f90, -0x2f562f69, -0x2f302f43, -0x2f0c2f1e, -0x2ee82efa, -0x2ec62ed7, -0x2ea42eb5, -0x2e842e94, -0x2e652e74, -0x2e462e55, -0x2e292e38, -0x2e0d2e1b, -0x2be62e00, -0x2bb22bcb, -0x2b802b99, -0x2b512b68, -0x2b232b3a, -0x2af82b0d, -0x2ace2ae2, -0x2aa62aba, -0x2a802a93, -0x2a5c2a6e, -0x2a3a2a4b, -0x2a192a29, -0x27f52a09, -0x27ba27d7, -0x2782279d, -0x274d2767, -0x271b2733, -0x26eb2703, -0x26be26d4, -0x269426a9, -0x266c267f, -0x26462658, -0x26222634, -0x26002611, -0x23c223e1, -0x238623a4, -0x234e236a, -0x23192333, -0x22e72300, -0x22b922d0, -0x228d22a2, -0x22632278, -0x223c2250, -0x2218222a, -0x1fec2207, -0x1fac1fcc, -0x1f701f8d, -0x1f371f53, -0x1f031f1d, -0x1ed11ee9, -0x1ea21eb9, -0x1e771e8c, -0x1e4e1e62, -0x1e281e3b, -0x1e041e16, -0x1bc61be7, -0x1b871ba6, -0x1b4c1b69, -0x1b161b31, -0x1ae21afb, -0x1ab21aca, -0x1a851a9b, -0x1a5b1a70, -0x1a341a47, -0x1a0f1a21, -0x17d917fb, -0x179917b8, -0x175c177a, -0x17241740, -0x16ef1709, -0x16be16d6, -0x169016a7, -0x1665167a, -0x163d1651, -0x1617162a, -0x13e91605, -0x000013c8, -/* AIR 8: diff=231.480469 */ -0x36e436eb, -0x36d436dc, -0x36c536cd, -0x36b636bd, -0x36a736ae, -0x3698369f, -0x36893690, -0x367a3681, -0x366b3672, -0x365c3663, -0x364d3655, -0x363f3646, -0x36303637, -0x36213629, -0x3613361a, -0x3605360c, -0x33ee33fc, -0x33d233e0, -0x33b633c4, -0x339a33a8, -0x337f338c, -0x33643371, -0x33493356, -0x332e333c, -0x33143321, -0x32fa3307, -0x32e132ed, -0x32c832d4, -0x32af32bb, -0x329632a3, -0x327e328a, -0x32673273, -0x3250325b, -0x32393244, -0x3223322e, -0x320d3218, -0x2ff03202, -0x2fc62fdb, -0x2f9d2fb2, -0x2f762f8a, -0x2f4f2f62, -0x2f2a2f3c, -0x2f052f17, -0x2ee22ef4, -0x2ec02ed1, -0x2e9e2eaf, -0x2e7e2e8e, -0x2e5f2e6f, -0x2e412e50, -0x2e242e33, -0x2e092e16, -0x2bdc2bf7, -0x2ba92bc2, -0x2b782b90, -0x2b492b60, -0x2b1b2b32, -0x2af02b06, -0x2ac72adb, -0x2a9f2ab3, -0x2a7a2a8c, -0x2a562a68, -0x2a342a45, -0x2a142a24, -0x27ea2a04, -0x27b027cd, -0x27782794, -0x2744275e, -0x2712272b, -0x26e326fa, -0x26b726cd, -0x268d26a1, -0x26652678, -0x263f2652, -0x261c262e, -0x23f6260b, -0x23b723d6, -0x237c2399, -0x23452360, -0x2310232a, -0x22df22f7, -0x22b122c7, -0x2285229b, -0x225c2270, -0x22362249, -0x22122224, -0x1fe12201, -0x1fa11fc1, -0x1f661f83, -0x1f2e1f49, -0x1efa1f13, -0x1ec91ee1, -0x1e9b1eb1, -0x1e701e85, -0x1e471e5b, -0x1e221e34, -0x1bfd1e10, -0x1bbb1bdb, -0x1b7d1b9b, -0x1b431b5f, -0x1b0c1b27, -0x1ada1af3, -0x1aaa1ac1, -0x1a7e1a93, -0x1a541a68, -0x1a2d1a40, -0x1a091a1b, -0x17ce17ef, -0x178e17ad, -0x17521770, -0x171b1736, -0x16e71700, -0x16b616ce, -0x1689169f, -0x165e1673, -0x1636164a, -0x16111623, -0x13dd13ff, -0x139c13bc, -0x1360137d, -0x13271343, -0x12f2130c, -0x12c012d9, -0x129212a9, -0x1267127c, -0x123e1252, -0x1219122b, -0x0feb1207, -0x00000fc9, -/* AIR 9: diff=115.740234 */ -0x364b3652, -0x363c3643, -0x362d3635, -0x361f3626, -0x36113618, -0x36023609, -0x33e933f7, -0x33cd33db, -0x33b133bf, -0x339533a3, -0x337a3388, -0x335f336c, -0x33443352, -0x332a3337, -0x3310331d, -0x32f63303, -0x32dc32e9, -0x32c332d0, -0x32ab32b7, -0x3292329e, -0x327a3286, -0x3263326e, -0x324c3257, -0x32353240, -0x321f322a, -0x32093214, -0x2fe82ffe, -0x2fbf2fd4, -0x2f972fab, -0x2f6f2f83, -0x2f492f5c, -0x2f232f36, -0x2eff2f11, -0x2edc2eed, -0x2eba2ecb, -0x2e992ea9, -0x2e792e89, -0x2e5a2e69, -0x2e3c2e4b, -0x2e202e2e, -0x2e042e12, -0x2bd32bee, -0x2ba02bba, -0x2b6f2b88, -0x2b412b58, -0x2b142b2a, -0x2ae92afe, -0x2ac02ad4, -0x2a992aac, -0x2a742a86, -0x2a502a62, -0x2a2e2a3f, -0x2a0e2a1e, -0x27e027fe, -0x27a627c3, -0x276f278a, -0x273b2755, -0x270a2722, -0x26db26f2, -0x26af26c5, -0x2686269a, -0x265e2672, -0x2639264b, -0x26162627, -0x23eb2605, -0x23ad23cb, -0x2372238f, -0x233b2356, -0x23072321, -0x22d722ef, -0x22a922c0, -0x227e2293, -0x22562269, -0x22302242, -0x220c221d, -0x1fd51ff6, -0x1f971fb6, -0x1f5c1f79, -0x1f251f40, -0x1ef11f0a, -0x1ec01ed8, -0x1e931ea9, -0x1e681e7d, -0x1e411e54, -0x1e1b1e2e, -0x1bf11e0a, -0x1bb01bd0, -0x1b721b91, -0x1b391b55, -0x1b031b1e, -0x1ad11aea, -0x1aa21ab9, -0x1a761a8c, -0x1a4d1a61, -0x1a271a39, -0x1a031a14, -0x17c217e3, -0x178317a2, -0x17491765, -0x1711172d, -0x16de16f7, -0x16ae16c6, -0x16811697, -0x1657166c, -0x16301643, -0x160b161d, -0x13d213f3, -0x139113b1, -0x13551373, -0x131d1339, -0x12e91303, -0x12b812d0, -0x128a12a1, -0x12601275, -0x1238124b, -0x12121225, -0x0fdf1201, -0x0f9e0fbe, -0x0f610f7f, -0x0f280f44, -0x0ef30f0d, -0x0ec10eda, -0x0e930eaa, -0x0e680e7d, -0x0e3f0e53, -0x0e190e2c, -0x0bec0e07, -0x00000bcb, -/* AIR 10: diff=57.870117 */ -0x33753383, -0x335a3368, -0x3340334d, -0x33253332, -0x330b3318, -0x32f132fe, -0x32d832e5, -0x32bf32cb, -0x32a632b3, -0x328e329a, -0x32763282, -0x325f326a, -0x32483253, -0x3231323c, -0x321b3226, -0x32053210, -0x2fe12ff6, -0x2fb82fcc, -0x2f902fa4, -0x2f682f7c, -0x2f422f55, -0x2f1d2f2f, -0x2ef92f0b, -0x2ed62ee7, -0x2eb42ec5, -0x2e932ea3, -0x2e732e83, -0x2e552e64, -0x2e372e46, -0x2e1b2e29, -0x2bff2e0d, -0x2bca2be4, -0x2b982bb1, -0x2b672b7f, -0x2b392b50, -0x2b0c2b22, -0x2ae22af7, -0x2ab92acd, -0x2a922aa5, -0x2a6d2a80, -0x2a4a2a5b, -0x2a292a39, -0x2a092a18, -0x27d627f3, -0x279c27b9, -0x27662781, -0x2732274c, -0x2702271a, -0x26d326ea, -0x26a826bd, -0x267f2693, -0x2658266b, -0x26332645, -0x26102621, -0x23e02600, -0x23a223c1, -0x23692385, -0x2332234d, -0x22ff2318, -0x22cf22e6, -0x22a122b8, -0x2277228c, -0x224f2262, -0x2229223c, -0x22062217, -0x1fca1feb, -0x1f8c1fab, -0x1f521f6f, -0x1f1b1f36, -0x1ee81f02, -0x1eb81ed0, -0x1e8b1ea2, -0x1e611e76, -0x1e3a1e4d, -0x1e151e27, -0x1be61e04, -0x1ba51bc5, -0x1b681b86, -0x1b2f1b4b, -0x1afa1b15, -0x1ac91ae1, -0x1a9a1ab1, -0x1a6f1a84, -0x1a461a5a, -0x1a201a33, -0x17fa1a0e, -0x17b717d8, -0x17791797, -0x173f175b, -0x17081723, -0x16d516ee, -0x16a616bd, -0x1679168f, -0x16501664, -0x1629163c, -0x16051617, -0x13c613e8, -0x138713a6, -0x134b1369, -0x1314132f, -0x12e012fa, -0x12b012c8, -0x12831299, -0x1258126d, -0x12311244, -0x120c121e, -0x0fd40ff6, -0x0f930fb3, -0x0f570f75, -0x0f1f0f3a, -0x0eea0f04, -0x0eb90ed1, -0x0e8b0ea2, -0x0e600e75, -0x0e380e4c, -0x0e130e25, -0x0be00e01, -0x0b9f0bbf, -0x0b620b80, -0x0b290b45, -0x0af40b0e, -0x0ac20ada, -0x0a930aaa, -0x0a680a7d, -0x0a3f0a53, -0x0a1a0a2c, -0x07ed0a08, -0x000007cb, -/* AIR 11: diff=28.935059 */ -0x3272327e, -0x325b3266, -0x3244324f, -0x322d3239, -0x32173222, -0x3202320c, -0x2fda2fef, -0x2fb12fc5, -0x2f892f9d, -0x2f622f75, -0x2f3c2f4f, -0x2f172f29, -0x2ef32f05, -0x2ed02ee1, -0x2eae2ebf, -0x2e8e2e9e, -0x2e6e2e7e, -0x2e502e5f, -0x2e322e41, -0x2e162e24, -0x2bf62e08, -0x2bc12bdb, -0x2b8f2ba8, -0x2b5f2b77, -0x2b312b48, -0x2b052b1b, -0x2ada2aef, -0x2ab22ac6, -0x2a8c2a9f, -0x2a672a79, -0x2a442a55, -0x2a232a33, -0x2a032a13, -0x27cb27e9, -0x279327af, -0x275d2777, -0x272a2743, -0x26f92711, -0x26cc26e2, -0x26a026b6, -0x2678268c, -0x26512664, -0x262d263f, -0x260b261b, -0x23d523f5, -0x239823b6, -0x235f237b, -0x23292344, -0x22f6230f, -0x22c722de, -0x229a22b0, -0x22702284, -0x2248225c, -0x22232235, -0x22002211, -0x1fbf1fdf, -0x1f821fa0, -0x1f481f65, -0x1f121f2d, -0x1ee01ef9, -0x1eb01ec8, -0x1e841e9a, -0x1e5a1e6f, -0x1e331e47, -0x1e0f1e21, -0x1bda1bfc, -0x1b9a1bb9, -0x1b5e1b7c, -0x1b261b42, -0x1af21b0b, -0x1ac01ad9, -0x1a931aa9, -0x1a681a7d, -0x1a3f1a53, -0x1a1a1a2c, -0x17ee1a08, -0x17ac17cc, -0x176f178d, -0x17351751, -0x16ff171a, -0x16cd16e6, -0x169e16b5, -0x16721688, -0x1649165d, -0x16231635, -0x13fe1610, -0x13bb13dc, -0x137c139b, -0x1342135e, -0x130b1326, -0x12d812f1, -0x12a812bf, -0x127b1291, -0x12511266, -0x122a123e, -0x12061218, -0x0fc80fea, -0x0f880fa8, -0x0f4d0f6a, -0x0f150f31, -0x0ee10efb, -0x0eb10ec9, -0x0e840e9a, -0x0e590e6e, -0x0e320e45, -0x0e0d0e1f, -0x0bd50bf7, -0x0b940bb4, -0x0b580b75, -0x0b1f0b3b, -0x0aeb0b05, -0x0aba0ad2, -0x0a8c0aa2, -0x0a610a76, -0x0a390a4c, -0x0a130a26, -0x07e10a01, -0x07a007c0, -0x07630781, -0x07290745, -0x06f4070e, -0x06c206db, -0x069406ab, -0x0668067e, -0x06400654, -0x061a062c, -0x03ed0608, -0x000003cc, -/* AIR 12: diff=14.467529 */ -0x2f352f48, -0x2f102f23, -0x2eed2efe, -0x2eca2edb, -0x2ea92eb9, -0x2e882e98, -0x2e692e78, -0x2e4a2e59, -0x2e2d2e3c, -0x2e112e1f, -0x2bed2e03, -0x2bb92bd2, -0x2b872b9f, -0x2b572b6f, -0x2b292b40, -0x2afd2b13, -0x2ad32ae8, -0x2aab2abf, -0x2a852a98, -0x2a612a73, -0x2a3e2a4f, -0x2a1d2a2e, -0x27fd2a0e, -0x27c127df, -0x278927a5, -0x2754276e, -0x2721273a, -0x26f12709, -0x26c426da, -0x269926ae, -0x26712685, -0x264b265e, -0x26272638, -0x26052616, -0x23ca23ea, -0x238e23ac, -0x23552371, -0x2320233a, -0x22ee2306, -0x22bf22d6, -0x229222a8, -0x2269227d, -0x22412255, -0x221d222f, -0x1ff5220b, -0x1fb41fd4, -0x1f781f96, -0x1f3f1f5b, -0x1f091f24, -0x1ed71ef0, -0x1ea91ec0, -0x1e7d1e92, -0x1e531e68, -0x1e2d1e40, -0x1e091e1b, -0x1bcf1bf0, -0x1b8f1bae, -0x1b541b71, -0x1b1d1b38, -0x1ae91b02, -0x1ab81ad0, -0x1a8b1aa1, -0x1a601a75, -0x1a391a4c, -0x1a141a26, -0x17e21a02, -0x17a117c1, -0x17641782, -0x172b1747, -0x16f61710, -0x16c516dd, -0x169616ad, -0x166b1680, -0x16421656, -0x161c162f, -0x13f2160a, -0x13b013d0, -0x13721390, -0x13381354, -0x1302131c, -0x12cf12e8, -0x12a012b7, -0x12741289, -0x124a125f, -0x12241237, -0x12001212, -0x0fbd0fde, -0x0f7e0f9d, -0x0f430f60, -0x0f0c0f27, -0x0ed90ef2, -0x0ea90ec0, -0x0e7c0e92, -0x0e520e67, -0x0e2b0e3e, -0x0e060e18, -0x0bc90beb, -0x0b890ba9, -0x0b4e0b6b, -0x0b160b31, -0x0ae20afc, -0x0ab10ac9, -0x0a840a9a, -0x0a5a0a6f, -0x0a320a46, -0x0a0d0a1f, -0x07d507f7, -0x079507b4, -0x07580776, -0x0720073c, -0x06eb0705, -0x06ba06d2, -0x068c06a3, -0x06610676, -0x0639064d, -0x06140626, -0x03e10602, -0x03a003c0, -0x03630381, -0x032a0346, -0x02f5030f, -0x02c302db, -0x029402ab, -0x0269027e, -0x02400254, -0x021a022d, -0x01f70208, -0x000001e6, -/* AIR 13: diff=7.233765 */ -0x2be32bfe, -0x2bb02bc9, -0x2b7e2b97, -0x2b4f2b66, -0x2b212b38, -0x2af62b0b, -0x2acc2ae1, -0x2aa52ab8, -0x2a7f2a91, -0x2a5b2a6d, -0x2a382a49, -0x2a182a28, -0x27f22a08, -0x27b727d4, -0x2780279b, -0x274b2765, -0x27192731, -0x26e92701, -0x26bc26d3, -0x269226a7, -0x266a267e, -0x26442657, -0x26212632, -0x23ff2610, -0x23c023df, -0x238423a1, -0x234c2367, -0x23172331, -0x22e522fe, -0x22b722ce, -0x228b22a0, -0x22622276, -0x223b224e, -0x22172228, -0x1fea2205, -0x1faa1fc9, -0x1f6e1f8b, -0x1f351f51, -0x1f001f1a, -0x1ecf1ee7, -0x1ea11eb7, -0x1e751e8b, -0x1e4d1e61, -0x1e261e39, -0x1e031e14, -0x1bc31be4, -0x1b851ba4, -0x1b4a1b67, -0x1b131b2e, -0x1ae01af9, -0x1ab01ac8, -0x1a831a99, -0x1a591a6e, -0x1a321a45, -0x1a0d1a1f, -0x17d717f8, -0x179617b6, -0x175a1778, -0x1722173e, -0x16ed1707, -0x16bc16d4, -0x168e16a5, -0x16641679, -0x163b164f, -0x16161628, -0x13e61604, -0x13a513c5, -0x13671386, -0x132e134a, -0x12f91313, -0x12c712df, -0x129812af, -0x126c1282, -0x12441258, -0x121d1230, -0x0ff4120b, -0x0fb20fd2, -0x0f730f92, -0x0f390f56, -0x0f030f1e, -0x0ed00ee9, -0x0ea10eb8, -0x0e750e8a, -0x0e4b0e60, -0x0e250e38, -0x0e000e12, -0x0bbe0bdf, -0x0b7f0b9e, -0x0b440b61, -0x0b0d0b28, -0x0ad90af3, -0x0aa90ac1, -0x0a7d0a93, -0x0a530a67, -0x0a2b0a3f, -0x0a070a19, -0x07ca07eb, -0x078a07a9, -0x074e076c, -0x07170732, -0x06e206fc, -0x06b206ca, -0x0684069b, -0x065a066f, -0x06320646, -0x060d061f, -0x03d603f8, -0x039503b5, -0x03590376, -0x0320033c, -0x02ec0306, -0x02ba02d3, -0x028c02a3, -0x02610277, -0x0239024d, -0x02140226, -0x01f10202, -0x01d001e0, -0x01b201c1, -0x019501a3, -0x017a0187, -0x0161016e, -0x014a0156, -0x0134013f, -0x0120012a, -0x010d0116, -0x00fb0104, -0x000000f3, -/* AIR 14: diff=3.616882 */ -0x2a332a43, -0x2a122a22, -0x27e82a03, -0x27ae27ca, -0x27762792, -0x2742275c, -0x27102729, -0x26e126f8, -0x26b526cb, -0x268b26a0, -0x26632677, -0x263e2650, -0x261b262c, -0x23f4260a, -0x23b523d4, -0x237a2397, -0x2342235e, -0x230e2328, -0x22dd22f5, -0x22af22c6, -0x22842299, -0x225b226f, -0x22342247, -0x22112222, -0x1fde1fff, -0x1f9f1fbe, -0x1f641f81, -0x1f2c1f47, -0x1ef81f11, -0x1ec71edf, -0x1e991eaf, -0x1e6e1e83, -0x1e461e5a, -0x1e201e33, -0x1bfa1e0e, -0x1bb81bd9, -0x1b7a1b99, -0x1b401b5d, -0x1b0a1b25, -0x1ad81af1, -0x1aa81ac0, -0x1a7c1a92, -0x1a521a67, -0x1a2c1a3f, -0x1a071a19, -0x17cb17ec, -0x178c17ab, -0x1750176d, -0x17191734, -0x16e516fe, -0x16b416cc, -0x1687169d, -0x165c1671, -0x16351648, -0x16101622, -0x13db13fd, -0x139a13ba, -0x135d137b, -0x13251340, -0x12f0130a, -0x12be12d7, -0x129012a7, -0x1265127a, -0x123d1251, -0x1217122a, -0x0fe81205, -0x0fa70fc7, -0x0f690f87, -0x0f300f4c, -0x0efa0f14, -0x0ec80ee0, -0x0e990eb0, -0x0e6d0e83, -0x0e440e58, -0x0e1e0e31, -0x0bf50e0c, -0x0bb30bd3, -0x0b740b93, -0x0b3a0b57, -0x0b040b1e, -0x0ad10aea, -0x0aa10ab9, -0x0a750a8b, -0x0a4c0a60, -0x0a250a38, -0x0a010a13, -0x07be07e0, -0x077f079e, -0x07440761, -0x070d0728, -0x06da06f3, -0x06aa06c1, -0x067d0693, -0x06530668, -0x062c063f, -0x06070619, -0x03ca03ec, -0x038a03aa, -0x034f036c, -0x03170332, -0x02e302fc, -0x02b202ca, -0x0285029b, -0x025a026f, -0x02330246, -0x020e0220, -0x01eb01fc, -0x01cb01db, -0x01ac01bb, -0x0190019e, -0x01760183, -0x015d0169, -0x01460152, -0x0131013b, -0x011d0127, -0x010a0113, -0x00f80101, -0x00e800f0, -0x00d900e0, -0x00ca00d2, -0x00bd00c4, -0x00b100b7, -0x00a500ab, -0x009a00a0, -0x00900095, -0x0087008b, -0x007e0082, -0x00000079, -/* AIR 15: diff=1.808441 */ -0x265d2670, -0x2638264a, -0x26152626, -0x23e82604, -0x23aa23c9, -0x2370238d, -0x23392354, -0x2305231f, -0x22d522ed, -0x22a722be, -0x227c2291, -0x22542268, -0x222e2241, -0x220b221c, -0x1fd31ff4, -0x1f941fb3, -0x1f5a1f76, -0x1f231f3e, -0x1eef1f08, -0x1ebf1ed6, -0x1e911ea8, -0x1e671e7c, -0x1e3f1e53, -0x1e1a1e2c, -0x1bee1e08, -0x1bad1bcd, -0x1b701b8e, -0x1b371b53, -0x1b011b1c, -0x1acf1ae8, -0x1aa01ab7, -0x1a741a8a, -0x1a4b1a60, -0x1a251a38, -0x1a011a13, -0x17c017e1, -0x178117a0, -0x17461763, -0x170f172a, -0x16dc16f5, -0x16ac16c4, -0x167f1695, -0x1655166a, -0x162e1641, -0x1609161b, -0x13cf13f1, -0x138f13ae, -0x13531371, -0x131b1337, -0x12e71301, -0x12b612ce, -0x1289129f, -0x125e1273, -0x1236124a, -0x12111223, -0x0fdd0fff, -0x0f9c0fbc, -0x0f5f0f7d, -0x0f260f42, -0x0ef10f0b, -0x0ebf0ed8, -0x0e910ea8, -0x0e660e7b, -0x0e3d0e51, -0x0e180e2a, -0x0be90e06, -0x0ba70bc8, -0x0b6a0b88, -0x0b300b4d, -0x0afb0b15, -0x0ac80ae1, -0x0a990ab1, -0x0a6e0a83, -0x0a450a59, -0x0a1e0a31, -0x07f60a0c, -0x07b307d4, -0x07750793, -0x073b0757, -0x0704071f, -0x06d106ea, -0x06a206b9, -0x0675068b, -0x064c0660, -0x06250638, -0x06010613, -0x03bf03e0, -0x0380039f, -0x03450362, -0x030e0329, -0x02da02f4, -0x02aa02c2, -0x027d0293, -0x02530268, -0x022c023f, -0x02070219, -0x01e501f6, -0x01c501d5, -0x01a701b6, -0x018c0199, -0x0171017e, -0x01590165, -0x0142014e, -0x012d0138, -0x01190123, -0x01070110, -0x00f600fe, -0x00e500ed, -0x00d600de, -0x00c800cf, -0x00bb00c1, -0x00af00b5, -0x00a300a9, -0x0098009e, -0x008e0093, -0x0085008a, -0x007c0081, -0x00740078, -0x006c0070, -0x00650069, -0x005f0062, -0x0058005b, -0x00530055, -0x004d0050, -0x0048004b, -0x00430046, -0x003f0041, -0x0000003d, - /* RDF 0: 1/1: 255.000000 */ -0x1e000000, -0x23002200, -0x26802600, -0x27802700, -0x2a402a00, -0x2ac02a80, -0x2b402b00, -0x2bc02b80, -0x2e202e00, -0x2e602e40, -0x2ea02e80, -0x2ee02ec0, -0x2f202f00, -0x2f602f40, -0x2fa02f80, -0x2fe02fc0, -0x32103200, -0x32303220, -0x32503240, -0x32703260, -0x32903280, -0x32b032a0, -0x32d032c0, -0x32f032e0, -0x33103300, -0x33303320, -0x33503340, -0x33703360, -0x33903380, -0x33b033a0, -0x33d033c0, -0x33f033e0, -0x36083600, -0x36183610, -0x36283620, -0x36383630, -0x36483640, -0x36583650, -0x36683660, -0x36783670, -0x36883680, -0x36983690, -0x36a836a0, -0x36b836b0, -0x36c836c0, -0x36d836d0, -0x36e836e0, -0x36f836f0, -0x37083700, -0x37183710, -0x37283720, -0x37383730, -0x37483740, -0x37583750, -0x37683760, -0x37783770, -0x37883780, -0x37983790, -0x37a837a0, -0x37b837b0, -0x37c837c0, -0x37d837d0, -0x37e837e0, -0x37f837f0, -0x3a043a00, -0x3a0c3a08, -0x3a143a10, -0x3a1c3a18, -0x3a243a20, -0x3a2c3a28, -0x3a343a30, -0x3a3c3a38, -0x3a443a40, -0x3a4c3a48, -0x3a543a50, -0x3a5c3a58, -0x3a643a60, -0x3a6c3a68, -0x3a743a70, -0x3a7c3a78, -0x3a843a80, -0x3a8c3a88, -0x3a943a90, -0x3a9c3a98, -0x3aa43aa0, -0x3aac3aa8, -0x3ab43ab0, -0x3abc3ab8, -0x3ac43ac0, -0x3acc3ac8, -0x3ad43ad0, -0x3adc3ad8, -0x3ae43ae0, -0x3aec3ae8, -0x3af43af0, -0x3afc3af8, -0x3b043b00, -0x3b0c3b08, -0x3b143b10, -0x3b1c3b18, -0x3b243b20, -0x3b2c3b28, -0x3b343b30, -0x3b3c3b38, -0x3b443b40, -0x3b4c3b48, -0x3b543b50, -0x3b5c3b58, -0x3b643b60, -0x3b6c3b68, -0x3b743b70, -0x3b7c3b78, -0x3b843b80, -0x3b8c3b88, -0x3b943b90, -0x3b9c3b98, -0x3ba43ba0, -0x3bac3ba8, -0x3bb43bb0, -0x3bbc3bb8, -0x3bc43bc0, -0x3bcc3bc8, -0x3bd43bd0, -0x3bdc3bd8, -0x3be43be0, -0x3bec3be8, -0x3bf43bf0, -0x3bfc3bf8, - /* RDF 1: 1/2: 20.346580 */ -0x1e000000, -0x23002200, -0x26802600, -0x27802700, -0x2a402a00, -0x2ac02a80, -0x2b402b00, -0x2bc02b80, -0x2e202e00, -0x2e602e40, -0x2e8b2e80, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, -0x2e8b2e8b, - /* RDF 2: 1/4: 8.444594 */ -0x1e000000, -0x23002200, -0x26802600, -0x27802700, -0x2a1c2a00, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, -0x2a1c2a1c, - /* RDF 3: 1/8: 3.919669 */ -0x1e000000, -0x23002200, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, -0x23eb23eb, - /* RDF 4: 1/16: 1.894458 */ -0x1e000000, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, -0x1fc91fc9, - /* RDF 5: 1/32: 0.931948 */ -0x1bba0000, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, -0x1bba1bba, - /* RDF 6: 1/64: 0.462276 */ -0x17b20000, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, -0x17b217b2, - /* RDF 7: 1/128: 0.230228 */ -0x13af0000, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, -0x13af13af, - /* RDF 8: 1/256: 0.114888 */ -0x0fad0000, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, -0x0fad0fad, - /* RDF 9: 1/512: 0.057388 */ -0x0bac0000, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, -0x0bac0bac, - /* RDF 10: 1/1024: 0.028680 */ -0x07ac0000, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, -0x07ac07ac, - /* RDF 11: 1/2048: 0.014336 */ -0x03ac0000, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, -0x03ac03ac, - /* RDF 12: 1/4096: 0.007167 */ -0x01d60000, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, -0x01d601d6, - /* RDF 13: 1/8192: 0.003583 */ -0x00eb0000, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, -0x00eb00eb, - /* RDF 14: 1/16384: 0.001792 */ -0x00750000, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, -0x00750075, - /* RDF 15: 1/32768: 0.000896 */ -0x003b0000, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -0x003b003b, -}; diff --git a/sys/dev/patm/if_patm_rx.c b/sys/dev/patm/if_patm_rx.c deleted file mode 100644 index c4822983c6a4..000000000000 --- a/sys/dev/patm/if_patm_rx.c +++ /dev/null @@ -1,526 +0,0 @@ -/*- - * Copyright (c) 2003 - * Fraunhofer Institute for Open Communication Systems (FhG Fokus). - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * Author: Hartmut Brandt <harti@freebsd.org> - * - * Driver for IDT77252 based cards like ProSum's. - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include "opt_inet.h" -#include "opt_natm.h" - -#include <sys/types.h> -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/malloc.h> -#include <sys/kernel.h> -#include <sys/bus.h> -#include <sys/errno.h> -#include <sys/conf.h> -#include <sys/module.h> -#include <sys/lock.h> -#include <sys/mutex.h> -#include <sys/sysctl.h> -#include <sys/queue.h> -#include <sys/condvar.h> -#include <sys/endian.h> -#include <vm/uma.h> - -#include <sys/sockio.h> -#include <sys/mbuf.h> -#include <sys/socket.h> - -#include <net/if.h> -#include <net/if_var.h> -#include <net/if_media.h> -#include <net/if_atm.h> -#include <net/route.h> -#ifdef ENABLE_BPF -#include <net/bpf.h> -#endif -#include <netinet/in.h> -#include <netinet/if_atm.h> - -#include <machine/bus.h> -#include <machine/resource.h> -#include <sys/bus.h> -#include <sys/rman.h> -#include <sys/mbpool.h> - -#include <dev/utopia/utopia.h> -#include <dev/patm/idt77252reg.h> -#include <dev/patm/if_patmvar.h> - -static void *patm_rcv_handle(struct patm_softc *sc, u_int handle); -static void patm_rcv_free(struct patm_softc *, void *, u_int handle); -static struct mbuf *patm_rcv_mbuf(struct patm_softc *, void *, u_int, int); - -static __inline void -rct_write(struct patm_softc *sc, u_int cid, u_int w, u_int val) -{ - patm_sram_write(sc, sc->mmap->rct + cid * IDT_RCT_ENTRY_SIZE + w, val); -} -static __inline u_int -rct_read(struct patm_softc *sc, u_int cid, u_int w) -{ - return (patm_sram_read(sc, sc->mmap->rct + - cid * IDT_RCT_ENTRY_SIZE + w)); -} - -/* check if we can open this one */ -int -patm_rx_vcc_can_open(struct patm_softc *sc, struct patm_vcc *vcc) -{ - return (0); -} - -/* - * open the VCC - */ -void -patm_rx_vcc_open(struct patm_softc *sc, struct patm_vcc *vcc) -{ - uint32_t w1 = IDT_RCT_OPEN; - - patm_debug(sc, VCC, "%u.%u RX opening", vcc->vcc.vpi, vcc->vcc.vci); - - switch (vcc->vcc.aal) { - case ATMIO_AAL_0: - w1 |= IDT_RCT_AAL0 | IDT_RCT_FBP2 | IDT_RCT_RCI; - break; - case ATMIO_AAL_34: - w1 |= IDT_RCT_AAL34; - break; - case ATMIO_AAL_5: - w1 |= IDT_RCT_AAL5; - break; - case ATMIO_AAL_RAW: - w1 |= IDT_RCT_AALRAW | IDT_RCT_RCI; - break; - } - - if (vcc->cid != 0) - patm_sram_write4(sc, sc->mmap->rct + vcc->cid * - IDT_RCT_ENTRY_SIZE, w1, 0, 0, 0xffffffff); - else { - /* switch the interface into promiscuous mode */ - patm_nor_write(sc, IDT_NOR_CFG, patm_nor_read(sc, IDT_NOR_CFG) | - IDT_CFG_ICAPT | IDT_CFG_VPECA); - } - - vcc->vflags |= PATM_VCC_RX_OPEN; -} - -/* close the given vcc for transmission */ -void -patm_rx_vcc_close(struct patm_softc *sc, struct patm_vcc *vcc) -{ - u_int w1; - - patm_debug(sc, VCC, "%u.%u RX closing", vcc->vcc.vpi, vcc->vcc.vci); - - if (vcc->cid == 0) { - /* switch off promiscuous mode */ - patm_nor_write(sc, IDT_NOR_CFG, patm_nor_read(sc, IDT_NOR_CFG) & - ~(IDT_CFG_ICAPT | IDT_CFG_VPECA)); - vcc->vflags &= ~PATM_VCC_RX_OPEN; - return; - } - - /* close the connection but keep state */ - w1 = rct_read(sc, vcc->cid, 0); - w1 &= ~IDT_RCT_OPEN; - rct_write(sc, vcc->cid, 0, w1); - - /* minimum idle count */ - w1 = (w1 & ~IDT_RCT_IACT_CNT_MASK) | (1 << IDT_RCT_IACT_CNT_SHIFT); - rct_write(sc, vcc->cid, 0, w1); - - /* initialize scan */ - patm_nor_write(sc, IDT_NOR_IRCP, vcc->cid); - - vcc->vflags &= ~PATM_VCC_RX_OPEN; - vcc->vflags |= PATM_VCC_RX_CLOSING; - - /* - * check the RSQ - * This is a hack. The problem is, that although an entry is written - * to the RSQ, no interrupt is generated. Also we must wait 1 cell - * time for the SAR to process the scan of our connection. - */ - DELAY(1); - patm_intr_rsq(sc); -} - -/* transmission side finally closed */ -void -patm_rx_vcc_closed(struct patm_softc *sc, struct patm_vcc *vcc) -{ - patm_debug(sc, VCC, "%u.%u RX finally closed", - vcc->vcc.vpi, vcc->vcc.vci); -} - -/* - * Handle the given receive status queue entry - */ -void -patm_rx(struct patm_softc *sc, struct idt_rsqe *rsqe) -{ - struct mbuf *m; - void *buf; - u_int stat, cid, w, cells, len, h; - struct patm_vcc *vcc; - struct atm_pseudohdr aph; - u_char *trail; - - cid = le32toh(rsqe->cid); - stat = le32toh(rsqe->stat); - h = le32toh(rsqe->handle); - - cid = PATM_CID(sc, IDT_RSQE_VPI(cid), IDT_RSQE_VCI(cid)); - vcc = sc->vccs[cid]; - - if (IDT_RSQE_TYPE(stat) == IDT_RSQE_IDLE) { - /* connection has gone idle */ - if (stat & IDT_RSQE_BUF) - patm_rcv_free(sc, patm_rcv_handle(sc, h), h); - - w = rct_read(sc, cid, 0); - if (w != 0 && !(w & IDT_RCT_OPEN)) - rct_write(sc, cid, 0, 0); - if (vcc != NULL && (vcc->vflags & PATM_VCC_RX_CLOSING)) { - patm_debug(sc, VCC, "%u.%u RX closed", vcc->vcc.vpi, - vcc->vcc.vci); - vcc->vflags &= ~PATM_VCC_RX_CLOSING; - if (vcc->vcc.flags & ATMIO_FLAG_ASYNC) { - patm_rx_vcc_closed(sc, vcc); - if (!(vcc->vflags & PATM_VCC_OPEN)) - patm_vcc_closed(sc, vcc); - } else - cv_signal(&sc->vcc_cv); - } - return; - } - - buf = patm_rcv_handle(sc, h); - - if (vcc == NULL || (vcc->vflags & PATM_VCC_RX_OPEN) == 0) { - patm_rcv_free(sc, buf, h); - return; - } - - cells = IDT_RSQE_CNT(stat); - KASSERT(cells > 0, ("zero cell count")); - - if (vcc->vcc.aal == ATMIO_AAL_0) { - /* deliver this packet as it is */ - if ((m = patm_rcv_mbuf(sc, buf, h, 1)) == NULL) - return; - - m->m_len = cells * 48; - m->m_pkthdr.len = m->m_len; - m->m_pkthdr.rcvif = sc->ifp; - - } else if (vcc->vcc.aal == ATMIO_AAL_34) { - /* XXX AAL3/4 */ - patm_rcv_free(sc, buf, h); - return; - - } else if (vcc->vcc.aal == ATMIO_AAL_5) { - if (stat & IDT_RSQE_CRC) { - if_inc_counter(sc->ifp, IFCOUNTER_IERRORS, 1); - if (vcc->chain != NULL) { - m_freem(vcc->chain); - vcc->chain = vcc->last = NULL; - } - return; - } - - /* append to current chain */ - if (vcc->chain == NULL) { - if ((m = patm_rcv_mbuf(sc, buf, h, 1)) == NULL) - return; - m->m_len = cells * 48; - m->m_pkthdr.len = m->m_len; - m->m_pkthdr.rcvif = sc->ifp; - vcc->chain = vcc->last = m; - } else { - if ((m = patm_rcv_mbuf(sc, buf, h, 0)) == NULL) - return; - m->m_len = cells * 48; - vcc->last->m_next = m; - vcc->last = m; - vcc->chain->m_pkthdr.len += m->m_len; - } - - if (!(stat & IDT_RSQE_EPDU)) - return; - - trail = mtod(m, u_char *) + m->m_len - 6; - len = (trail[0] << 8) + trail[1]; - - if ((u_int)vcc->chain->m_pkthdr.len < len + 8) { - patm_printf(sc, "%s: bad aal5 lengths %u %u\n", - __func__, (u_int)m->m_pkthdr.len, len); - m_freem(vcc->chain); - vcc->chain = vcc->last = NULL; - return; - } - m->m_len -= vcc->chain->m_pkthdr.len - len; - KASSERT(m->m_len >= 0, ("bad last mbuf")); - - m = vcc->chain; - vcc->chain = vcc->last = NULL; - m->m_pkthdr.len = len; - } else - panic("bad aal"); - -#if 0 - { - u_int i; - - for (i = 0; i < m->m_len; i++) { - printf("%02x ", mtod(m, u_char *)[i]); - } - printf("\n"); - } -#endif - - if_inc_counter(sc->ifp, IFCOUNTER_IPACKETS, 1); - /* this is in if_atmsubr.c */ - /* if_inc_counter(sc->ifp, IFCOUNTER_IBYTES, m->m_pkthdr.len); */ - - vcc->ibytes += m->m_pkthdr.len; - vcc->ipackets++; - - ATM_PH_FLAGS(&aph) = vcc->vcc.flags & 0xff; - ATM_PH_VPI(&aph) = IDT_RSQE_VPI(cid); - ATM_PH_SETVCI(&aph, IDT_RSQE_VCI(cid)); - -#ifdef ENABLE_BPF - if (!(vcc->vcc.flags & ATMIO_FLAG_NG) && - (vcc->vcc.aal == ATMIO_AAL_5) && - (vcc->vcc.flags & ATM_PH_LLCSNAP)) - BPF_MTAP(sc->ifp, m); -#endif - - atm_input(sc->ifp, &aph, m, vcc->rxhand); -} - -/* - * Get the buffer for a receive handle. This is either an mbuf for - * a large handle or a pool buffer for the others. - */ -static void * -patm_rcv_handle(struct patm_softc *sc, u_int handle) -{ - void *buf; - u_int c; - - if ((handle & ~MBUF_HMASK) == LMBUF_HANDLE) { - struct lmbuf *b; - - c = handle & MBUF_HMASK; - b = &sc->lbufs[c]; - - buf = b->m; - b->m = NULL; - - bus_dmamap_sync(sc->lbuf_tag, b->map, BUS_DMASYNC_POSTREAD); - patm_lbuf_free(sc, b); - - } else if ((handle & ~MBUF_HMASK) == MBUF_VHANDLE) { - mbp_sync(sc->vbuf_pool, handle, - 0, VMBUF_SIZE, BUS_DMASYNC_POSTREAD); - buf = mbp_get(sc->vbuf_pool, handle); - - } else { - mbp_sync(sc->sbuf_pool, handle, - 0, SMBUF_SIZE, BUS_DMASYNC_POSTREAD); - buf = mbp_get(sc->sbuf_pool, handle); - } - - return (buf); -} - -/* - * Free a buffer. - */ -static void -patm_rcv_free(struct patm_softc *sc, void *p, u_int handle) -{ - if ((handle & ~MBUF_HMASK) == LMBUF_HANDLE) - m_free((struct mbuf *)p); - - else if ((handle & ~MBUF_HMASK) == MBUF_VHANDLE) - mbp_free(sc->vbuf_pool, p); - - else - mbp_free(sc->sbuf_pool, p); -} - -/* - * Make an mbuf around the buffer - */ -static struct mbuf * -patm_rcv_mbuf(struct patm_softc *sc, void *buf, u_int h, int hdr) -{ - struct mbuf *m; - - if ((h & ~MBUF_HMASK) == MBUF_LHANDLE) - return ((struct mbuf *)buf); - - if (hdr) - MGETHDR(m, M_NOWAIT, MT_DATA); - else - MGET(m, M_NOWAIT, MT_DATA); - if (m == NULL) { - patm_rcv_free(sc, buf, h); - return (NULL); - } - - if ((h & ~MBUF_HMASK) == MBUF_VHANDLE) { - MEXTADD(m, (caddr_t)buf, VMBUF_SIZE, mbp_ext_free, - buf, sc->vbuf_pool, M_PKTHDR, EXT_NET_DRV); - m->m_data += VMBUF_OFFSET; - } else { - MEXTADD(m, (caddr_t)buf, SMBUF_SIZE, mbp_ext_free, - buf, sc->sbuf_pool, M_PKTHDR, EXT_NET_DRV); - m->m_data += SMBUF_OFFSET; - } - - if (!(m->m_flags & M_EXT)) { - patm_rcv_free(sc, buf, h); - m_free(m); - return (NULL); - } - return (m); -} - -/* - * Process the raw cell at the given address. - */ -void -patm_rx_raw(struct patm_softc *sc, u_char *cell) -{ - u_int vpi, vci, cid; - struct patm_vcc *vcc; - struct mbuf *m; - u_char *dst; - struct timespec ts; - struct atm_pseudohdr aph; - uint64_t cts; - - sc->stats.raw_cells++; - - /* - * For some non-appearant reason the cell header - * is in the wrong endian. - */ - *(uint32_t *)cell = bswap32(*(uint32_t *)cell); - - vpi = ((cell[0] & 0xf) << 4) | ((cell[1] & 0xf0) >> 4); - vci = ((cell[1] & 0xf) << 12) | (cell[2] << 4) | ((cell[3] & 0xf0) >> 4); - cid = PATM_CID(sc, vpi, vci); - - vcc = sc->vccs[cid]; - if (vcc == NULL || !(vcc->vflags & PATM_VCC_RX_OPEN) || - vcc->vcc.aal != ATMIO_AAL_RAW) { - vcc = sc->vccs[0]; - if (vcc == NULL || !(vcc->vflags & PATM_VCC_RX_OPEN)) { - sc->stats.raw_no_vcc++; - return; - } - } - - MGETHDR(m, M_NOWAIT, MT_DATA); - if (m == NULL) { - sc->stats.raw_no_buf++; - return; - } - m->m_pkthdr.rcvif = sc->ifp; - - switch (vcc->vflags & PATM_RAW_FORMAT) { - - default: - case PATM_RAW_CELL: - m->m_len = m->m_pkthdr.len = 53; - M_ALIGN(m, 53); - dst = mtod(m, u_char *); - *dst++ = *cell++; - *dst++ = *cell++; - *dst++ = *cell++; - *dst++ = *cell++; - *dst++ = 0; /* HEC */ - bcopy(cell + 12, dst, 48); - break; - - case PATM_RAW_NOHEC: - m->m_len = m->m_pkthdr.len = 52; - M_ALIGN(m, 52); - dst = mtod(m, u_char *); - *dst++ = *cell++; - *dst++ = *cell++; - *dst++ = *cell++; - *dst++ = *cell++; - bcopy(cell + 12, dst, 48); - break; - - case PATM_RAW_CS: - m->m_len = m->m_pkthdr.len = 64; - M_ALIGN(m, 64); - dst = mtod(m, u_char *); - *dst++ = *cell++; - *dst++ = *cell++; - *dst++ = *cell++; - *dst++ = *cell++; - *dst++ = 0; /* HEC */ - *dst++ = 0; /* flags */ - *dst++ = 0; /* reserved */ - *dst++ = 0; /* reserved */ - nanotime(&ts); - cts = ts.tv_sec * 1000000000ULL + ts.tv_nsec; - bcopy(dst, &cts, 8); - bcopy(cell + 12, dst + 8, 48); - break; - } - - if_inc_counter(sc->ifp, IFCOUNTER_IPACKETS, 1); - /* this is in if_atmsubr.c */ - /* if_inc_counter(sc->ifp, IFCOUNTER_IBYTES, m->m_pkthdr.len); */ - - vcc->ibytes += m->m_pkthdr.len; - vcc->ipackets++; - - ATM_PH_FLAGS(&aph) = vcc->vcc.flags & 0xff; - ATM_PH_VPI(&aph) = vcc->vcc.vpi; - ATM_PH_SETVCI(&aph, vcc->vcc.vci); - - atm_input(sc->ifp, &aph, m, vcc->rxhand); -} diff --git a/sys/dev/patm/if_patm_tx.c b/sys/dev/patm/if_patm_tx.c deleted file mode 100644 index 33ee8f183a2b..000000000000 --- a/sys/dev/patm/if_patm_tx.c +++ /dev/null @@ -1,1277 +0,0 @@ -/*- - * Copyright (c) 2003 - * Fraunhofer Institute for Open Communication Systems (FhG Fokus). - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The TST allocation algorithm is from the IDT driver which is: - * - * Copyright (c) 2000, 2001 Richard Hodges and Matriplex, inc. - * All rights reserved. - * - * Copyright (c) 1996, 1997, 1998, 1999 Mark Tinguely - * All rights reserved. - * - * Author: Hartmut Brandt <harti@freebsd.org> - * - * Driver for IDT77252 based cards like ProSum's. - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include "opt_inet.h" -#include "opt_natm.h" - -#include <sys/types.h> -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/malloc.h> -#include <sys/kernel.h> -#include <sys/bus.h> -#include <sys/errno.h> -#include <sys/conf.h> -#include <sys/module.h> -#include <sys/lock.h> -#include <sys/mutex.h> -#include <sys/sysctl.h> -#include <sys/queue.h> -#include <sys/condvar.h> -#include <sys/endian.h> -#include <vm/uma.h> - -#include <sys/sockio.h> -#include <sys/mbuf.h> -#include <sys/socket.h> - -#include <net/if.h> -#include <net/if_var.h> -#include <net/if_media.h> -#include <net/if_atm.h> -#include <net/route.h> -#ifdef ENABLE_BPF -#include <net/bpf.h> -#endif -#include <netinet/in.h> -#include <netinet/if_atm.h> - -#include <machine/bus.h> -#include <machine/resource.h> -#include <sys/bus.h> -#include <sys/rman.h> -#include <sys/mbpool.h> - -#include <dev/utopia/utopia.h> -#include <dev/patm/idt77252reg.h> -#include <dev/patm/if_patmvar.h> - -static struct mbuf *patm_tx_pad(struct patm_softc *sc, struct mbuf *m0); -static void patm_launch(struct patm_softc *sc, struct patm_scd *scd); - -static struct patm_txmap *patm_txmap_get(struct patm_softc *); -static void patm_load_txbuf(void *, bus_dma_segment_t *, int, - bus_size_t, int); - -static void patm_tst_alloc(struct patm_softc *sc, struct patm_vcc *vcc); -static void patm_tst_free(struct patm_softc *sc, struct patm_vcc *vcc); -static void patm_tst_timer(void *p); -static void patm_tst_update(struct patm_softc *); - -static void patm_tct_start(struct patm_softc *sc, struct patm_vcc *); - -static const char *dump_scd(struct patm_softc *sc, struct patm_scd *scd) - __unused; -static void patm_tct_print(struct patm_softc *sc, u_int cid) __unused; - -/* - * Structure for communication with the loader function for transmission - */ -struct txarg { - struct patm_softc *sc; - struct patm_scd *scd; /* scheduling channel */ - struct patm_vcc *vcc; /* the VCC of this PDU */ - struct mbuf *mbuf; - u_int hdr; /* cell header */ -}; - -static __inline u_int -cbr2slots(struct patm_softc *sc, struct patm_vcc *vcc) -{ - /* compute the number of slots we need, make sure to get at least - * the specified PCR */ - return ((u_int)howmany((uint64_t)(sc->mmap->tst_size - 1) * - vcc->vcc.tparam.pcr, IFP2IFATM(sc->ifp)->mib.pcr)); -} - -static __inline u_int -slots2cr(struct patm_softc *sc, u_int slots) -{ - return ((slots * IFP2IFATM(sc->ifp)->mib.pcr + sc->mmap->tst_size - 2) / - (sc->mmap->tst_size - 1)); -} - -/* check if we can open this one */ -int -patm_tx_vcc_can_open(struct patm_softc *sc, struct patm_vcc *vcc) -{ - - /* check resources */ - switch (vcc->vcc.traffic) { - - case ATMIO_TRAFFIC_CBR: - { - u_int slots = cbr2slots(sc, vcc); - - if (slots > sc->tst_free + sc->tst_reserve) - return (EINVAL); - break; - } - - case ATMIO_TRAFFIC_VBR: - if (vcc->vcc.tparam.scr > sc->bwrem) - return (EINVAL); - if (vcc->vcc.tparam.pcr > IFP2IFATM(sc->ifp)->mib.pcr) - return (EINVAL); - if (vcc->vcc.tparam.scr > vcc->vcc.tparam.pcr || - vcc->vcc.tparam.mbs == 0) - return (EINVAL); - break; - - case ATMIO_TRAFFIC_ABR: - if (vcc->vcc.tparam.tbe == 0 || - vcc->vcc.tparam.nrm == 0) - /* needed to compute CRM */ - return (EINVAL); - if (vcc->vcc.tparam.pcr > IFP2IFATM(sc->ifp)->mib.pcr || - vcc->vcc.tparam.icr > vcc->vcc.tparam.pcr || - vcc->vcc.tparam.mcr > vcc->vcc.tparam.icr) - return (EINVAL); - if (vcc->vcc.tparam.mcr > sc->bwrem || - vcc->vcc.tparam.icr > sc->bwrem) - return (EINVAL); - break; - } - - return (0); -} - -#define NEXT_TAG(T) do { \ - (T) = ((T) + 1) % IDT_TSQE_TAG_SPACE; \ - } while (0) - -/* - * open it - */ -void -patm_tx_vcc_open(struct patm_softc *sc, struct patm_vcc *vcc) -{ - struct patm_scd *scd; - - if (vcc->vcc.traffic == ATMIO_TRAFFIC_UBR) { - /* we use UBR0 */ - vcc->scd = sc->scd0; - vcc->vflags |= PATM_VCC_TX_OPEN; - return; - } - - /* get an SCD */ - scd = patm_scd_alloc(sc); - if (scd == NULL) { - /* should not happen */ - patm_printf(sc, "out of SCDs\n"); - return; - } - vcc->scd = scd; - patm_scd_setup(sc, scd); - patm_tct_setup(sc, scd, vcc); - - if (vcc->vcc.traffic != ATMIO_TRAFFIC_CBR) - patm_tct_start(sc, vcc); - - vcc->vflags |= PATM_VCC_TX_OPEN; -} - -/* - * close the given vcc for transmission - */ -void -patm_tx_vcc_close(struct patm_softc *sc, struct patm_vcc *vcc) -{ - struct patm_scd *scd; - struct mbuf *m; - - vcc->vflags |= PATM_VCC_TX_CLOSING; - - if (vcc->vcc.traffic == ATMIO_TRAFFIC_UBR) { - /* let the queue PDUs go out */ - vcc->scd = NULL; - vcc->vflags &= ~(PATM_VCC_TX_OPEN | PATM_VCC_TX_CLOSING); - return; - } - scd = vcc->scd; - - /* empty the waitq */ - for (;;) { - _IF_DEQUEUE(&scd->q, m); - if (m == NULL) - break; - m_freem(m); - } - - if (scd->num_on_card == 0) { - /* we are idle */ - vcc->vflags &= ~PATM_VCC_TX_OPEN; - - if (vcc->vcc.traffic == ATMIO_TRAFFIC_CBR) - patm_tst_free(sc, vcc); - - patm_sram_write4(sc, scd->sram + 0, 0, 0, 0, 0); - patm_sram_write4(sc, scd->sram + 4, 0, 0, 0, 0); - patm_scd_free(sc, scd); - - vcc->scd = NULL; - vcc->vflags &= ~PATM_VCC_TX_CLOSING; - - return; - } - - /* speed up transmission */ - patm_nor_write(sc, IDT_NOR_TCMDQ, IDT_TCMDQ_UIER(vcc->cid, 0xff)); - patm_nor_write(sc, IDT_NOR_TCMDQ, IDT_TCMDQ_ULACR(vcc->cid, 0xff)); - - /* wait for the interrupt to drop the number to 0 */ - patm_debug(sc, VCC, "%u buffers still on card", scd->num_on_card); -} - -/* transmission side finally closed */ -void -patm_tx_vcc_closed(struct patm_softc *sc, struct patm_vcc *vcc) -{ - - patm_debug(sc, VCC, "%u.%u TX closed", vcc->vcc.vpi, vcc->vcc.vci); - - if (vcc->vcc.traffic == ATMIO_TRAFFIC_VBR) - sc->bwrem += vcc->vcc.tparam.scr; -} - -/* - * Pull off packets from the interface queue and try to transmit them. - * If the transmission fails because of a full transmit channel, we drop - * packets for CBR and queue them for other channels up to limit. - * This limit should depend on the CDVT for VBR and ABR, but it doesn't. - */ -void -patm_start(struct ifnet *ifp) -{ - struct patm_softc *sc = ifp->if_softc; - struct mbuf *m; - struct atm_pseudohdr *aph; - u_int vpi, vci, cid; - struct patm_vcc *vcc; - - mtx_lock(&sc->mtx); - if (!(ifp->if_drv_flags & IFF_DRV_RUNNING)) { - mtx_unlock(&sc->mtx); - return; - } - - while (1) { - /* get a new mbuf */ - IF_DEQUEUE(&ifp->if_snd, m); - if (m == NULL) - break; - - /* split of pseudo header */ - if (m->m_len < sizeof(*aph) && - (m = m_pullup(m, sizeof(*aph))) == NULL) { - if_inc_counter(sc->ifp, IFCOUNTER_OERRORS, 1); - continue; - } - - aph = mtod(m, struct atm_pseudohdr *); - vci = ATM_PH_VCI(aph); - vpi = ATM_PH_VPI(aph); - m_adj(m, sizeof(*aph)); - - /* reject empty packets */ - if (m->m_pkthdr.len == 0) { - m_freem(m); - if_inc_counter(sc->ifp, IFCOUNTER_OERRORS, 1); - continue; - } - - /* check whether this is a legal vcc */ - if (!LEGAL_VPI(sc, vpi) || !LEGAL_VCI(sc, vci) || vci == 0) { - m_freem(m); - if_inc_counter(sc->ifp, IFCOUNTER_OERRORS, 1); - continue; - } - cid = PATM_CID(sc, vpi, vci); - vcc = sc->vccs[cid]; - if (vcc == NULL) { - m_freem(m); - if_inc_counter(sc->ifp, IFCOUNTER_OERRORS, 1); - continue; - } - - /* must be multiple of 48 if not AAL5 */ - if (vcc->vcc.aal == ATMIO_AAL_0 || - vcc->vcc.aal == ATMIO_AAL_34) { - /* XXX AAL3/4 format? */ - if (m->m_pkthdr.len % 48 != 0 && - (m = patm_tx_pad(sc, m)) == NULL) { - if_inc_counter(sc->ifp, IFCOUNTER_OERRORS, 1); - continue; - } - } else if (vcc->vcc.aal == ATMIO_AAL_RAW) { - switch (vcc->vflags & PATM_RAW_FORMAT) { - - default: - case PATM_RAW_CELL: - if (m->m_pkthdr.len != 53) { - if_inc_counter(sc->ifp, IFCOUNTER_OERRORS, 1); - m_freem(m); - continue; - } - break; - - case PATM_RAW_NOHEC: - if (m->m_pkthdr.len != 52) { - if_inc_counter(sc->ifp, IFCOUNTER_OERRORS, 1); - m_freem(m); - continue; - } - break; - - case PATM_RAW_CS: - if (m->m_pkthdr.len != 64) { - if_inc_counter(sc->ifp, IFCOUNTER_OERRORS, 1); - m_freem(m); - continue; - } - break; - } - } - - /* save data */ - m->m_pkthdr.PH_loc.ptr = vcc; - - /* try to put it on the channels queue */ - if (_IF_QFULL(&vcc->scd->q)) { - if_inc_counter(sc->ifp, IFCOUNTER_OERRORS, 1); - sc->stats.tx_qfull++; - m_freem(m); - continue; - } - _IF_ENQUEUE(&vcc->scd->q, m); - -#ifdef ENABLE_BPF - if (!(vcc->vcc.flags & ATMIO_FLAG_NG) && - (vcc->vcc.aal == ATMIO_AAL_5) && - (vcc->vcc.flags & ATM_PH_LLCSNAP)) - BPF_MTAP(ifp, m); -#endif - - /* kick the channel to life */ - patm_launch(sc, vcc->scd); - - } - mtx_unlock(&sc->mtx); -} - -/* - * Pad non-AAL5 packet to a multiple of 48-byte. - * We assume AAL0 only. We have still to decide on the format of AAL3/4. - */ -static struct mbuf * -patm_tx_pad(struct patm_softc *sc, struct mbuf *m0) -{ - struct mbuf *last, *m; - u_int plen, pad, space; - - plen = m_length(m0, &last); - if (plen != m0->m_pkthdr.len) { - patm_printf(sc, "%s: mbuf length mismatch %d %u\n", __func__, - m0->m_pkthdr.len, plen); - m0->m_pkthdr.len = plen; - if (plen == 0) { - m_freem(m0); - if_inc_counter(sc->ifp, IFCOUNTER_OERRORS, 1); - return (NULL); - } - if (plen % 48 == 0) - return (m0); - } - pad = 48 - plen % 48; - m0->m_pkthdr.len += pad; - if (M_WRITABLE(last)) { - if (M_TRAILINGSPACE(last) >= pad) { - bzero(last->m_data + last->m_len, pad); - last->m_len += pad; - return (m0); - } - space = M_LEADINGSPACE(last); - if (space + M_TRAILINGSPACE(last) >= pad) { - bcopy(last->m_data, last->m_data + space, last->m_len); - last->m_data -= space; - bzero(last->m_data + last->m_len, pad); - last->m_len += pad; - return (m0); - } - } - MGET(m, M_NOWAIT, MT_DATA); - if (m == NULL) { - m_freem(m0); - if_inc_counter(sc->ifp, IFCOUNTER_OERRORS, 1); - return (NULL); - } - bzero(mtod(m, u_char *), pad); - m->m_len = pad; - last->m_next = m; - - return (m0); -} - -/* - * Try to put as many packets from the channels queue onto the channel - */ -static void -patm_launch(struct patm_softc *sc, struct patm_scd *scd) -{ - struct txarg a; - struct mbuf *m, *tmp; - u_int segs; - struct patm_txmap *map; - int error; - - a.sc = sc; - a.scd = scd; - - /* limit the number of outstanding packets to the tag space */ - while (scd->num_on_card < IDT_TSQE_TAG_SPACE) { - /* get the next packet */ - _IF_DEQUEUE(&scd->q, m); - if (m == NULL) - break; - - a.vcc = m->m_pkthdr.PH_loc.ptr; - - /* we must know the number of segments beforehand - count - * this may actually give a wrong number of segments for - * AAL_RAW where we still need to remove the cell header */ - segs = 0; - for (tmp = m; tmp != NULL; tmp = tmp->m_next) - if (tmp->m_len != 0) - segs++; - - /* check whether there is space in the queue */ - if (segs >= scd->space) { - /* put back */ - _IF_PREPEND(&scd->q, m); - sc->stats.tx_out_of_tbds++; - break; - } - - /* get a DMA map */ - if ((map = patm_txmap_get(sc)) == NULL) { - _IF_PREPEND(&scd->q, m); - sc->stats.tx_out_of_maps++; - break; - } - - /* load the map */ - m->m_pkthdr.PH_loc.ptr = map; - a.mbuf = m; - - /* handle AAL_RAW */ - if (a.vcc->vcc.aal == ATMIO_AAL_RAW) { - u_char hdr[4]; - - m_copydata(m, 0, 4, hdr); - a.hdr = (hdr[0] << 24) | (hdr[1] << 16) | - (hdr[2] << 8) | hdr[3]; - - switch (a.vcc->vflags & PATM_RAW_FORMAT) { - - default: - case PATM_RAW_CELL: - m_adj(m, 5); - break; - - case PATM_RAW_NOHEC: - m_adj(m, 4); - break; - - case PATM_RAW_CS: - m_adj(m, 16); - break; - } - } else - a.hdr = IDT_TBD_HDR(a.vcc->vcc.vpi, a.vcc->vcc.vci, - 0, 0); - - error = bus_dmamap_load_mbuf(sc->tx_tag, map->map, m, - patm_load_txbuf, &a, BUS_DMA_NOWAIT); - if (error == EFBIG) { - if ((m = m_defrag(m, M_NOWAIT)) == NULL) { - if_inc_counter(sc->ifp, IFCOUNTER_OERRORS, 1); - continue; - } - error = bus_dmamap_load_mbuf(sc->tx_tag, map->map, m, - patm_load_txbuf, &a, BUS_DMA_NOWAIT); - } - if (error != 0) { - sc->stats.tx_load_err++; - if_inc_counter(sc->ifp, IFCOUNTER_OERRORS, 1); - SLIST_INSERT_HEAD(&sc->tx_maps_free, map, link); - m_freem(m); - continue; - } - - if_inc_counter(sc->ifp, IFCOUNTER_OPACKETS, 1); - } -} - -/* - * Load the DMA segments into the scheduling channel - */ -static void -patm_load_txbuf(void *uarg, bus_dma_segment_t *segs, int nseg, - bus_size_t mapsize, int error) -{ - struct txarg *a= uarg; - struct patm_scd *scd = a->scd; - u_int w1, w3, cnt; - struct idt_tbd *tbd = NULL; - u_int rest = mapsize; - - if (error != 0) - return; - - cnt = 0; - while (nseg > 0) { - if (segs->ds_len == 0) { - /* transmit buffer length must be > 0 */ - nseg--; - segs++; - continue; - } - /* rest after this buffer */ - rest -= segs->ds_len; - - /* put together status word */ - w1 = 0; - if (rest < 48 /* && a->vcc->vcc.aal != ATMIO_AAL_5 */) - /* last cell is in this buffer */ - w1 |= IDT_TBD_EPDU; - - if (a->vcc->vcc.aal == ATMIO_AAL_5) - w1 |= IDT_TBD_AAL5; - else if (a->vcc->vcc.aal == ATMIO_AAL_34) - w1 |= IDT_TBD_AAL34; - else - w1 |= IDT_TBD_AAL0; - - w1 |= segs->ds_len; - - /* AAL5 PDU length (unpadded) */ - if (a->vcc->vcc.aal == ATMIO_AAL_5) - w3 = mapsize; - else - w3 = 0; - - if (rest == 0) - w1 |= IDT_TBD_TSIF | IDT_TBD_GTSI | - (scd->tag << IDT_TBD_TAG_SHIFT); - - tbd = &scd->scq[scd->tail]; - - tbd->flags = htole32(w1); - tbd->addr = htole32(segs->ds_addr); - tbd->aal5 = htole32(w3); - tbd->hdr = htole32(a->hdr); - - patm_debug(a->sc, TX, "TBD(%u): %08x %08x %08x %08x", - scd->tail, w1, segs->ds_addr, w3, a->hdr); - - /* got to next entry */ - if (++scd->tail == IDT_SCQ_SIZE) - scd->tail = 0; - cnt++; - nseg--; - segs++; - } - scd->space -= cnt; - scd->num_on_card++; - - KASSERT(rest == 0, ("bad mbuf")); - KASSERT(cnt > 0, ("no segs")); - KASSERT(scd->space > 0, ("scq full")); - - KASSERT(scd->on_card[scd->tag] == NULL, - ("scd on_card wedged %u%s", scd->tag, dump_scd(a->sc, scd))); - scd->on_card[scd->tag] = a->mbuf; - a->mbuf->m_pkthdr.csum_data = cnt; - - NEXT_TAG(scd->tag); - - patm_debug(a->sc, TX, "SCD tail %u (%lx:%lx)", scd->tail, - (u_long)scd->phy, (u_long)scd->phy + (scd->tail << IDT_TBD_SHIFT)); - patm_sram_write(a->sc, scd->sram, - scd->phy + (scd->tail << IDT_TBD_SHIFT)); - - if (patm_sram_read(a->sc, a->vcc->cid * 8 + 3) & IDT_TCT_IDLE) { - /* - * if the connection is idle start it. We cannot rely - * on a flag set by patm_tx_idle() here, because sometimes - * the card seems to place an idle TSI into the TSQ but - * forgets to raise an interrupt. - */ - patm_nor_write(a->sc, IDT_NOR_TCMDQ, - IDT_TCMDQ_START(a->vcc->cid)); - } -} - -/* - * packet transmitted - */ -void -patm_tx(struct patm_softc *sc, u_int stamp, u_int status) -{ - u_int cid, tag, last; - struct mbuf *m; - struct patm_vcc *vcc; - struct patm_scd *scd; - struct patm_txmap *map; - - /* get the connection */ - cid = PATM_CID(sc, IDT_TBD_VPI(status), IDT_TBD_VCI(status)); - if ((vcc = sc->vccs[cid]) == NULL) { - /* closed UBR connection */ - return; - } - scd = vcc->scd; - - tag = IDT_TSQE_TAG(stamp); - - last = scd->last_tag; - if (tag == last) { - patm_printf(sc, "same tag %u\n", tag); - return; - } - - /* Errata 12 requests us to free all entries up to the one - * with the given tag. */ - do { - /* next tag to try */ - NEXT_TAG(last); - - m = scd->on_card[last]; - KASSERT(m != NULL, ("%stag=%u", dump_scd(sc, scd), tag)); - scd->on_card[last] = NULL; - patm_debug(sc, TX, "ok tag=%x", last); - - map = m->m_pkthdr.PH_loc.ptr; - scd->space += m->m_pkthdr.csum_data; - - bus_dmamap_sync(sc->tx_tag, map->map, - BUS_DMASYNC_POSTWRITE); - bus_dmamap_unload(sc->tx_tag, map->map); - m_freem(m); - SLIST_INSERT_HEAD(&sc->tx_maps_free, map, link); - scd->num_on_card--; - - if (vcc->vflags & PATM_VCC_TX_CLOSING) { - if (scd->num_on_card == 0) { - /* done with this VCC */ - if (vcc->vcc.traffic == ATMIO_TRAFFIC_CBR) - patm_tst_free(sc, vcc); - - patm_sram_write4(sc, scd->sram + 0, 0, 0, 0, 0); - patm_sram_write4(sc, scd->sram + 4, 0, 0, 0, 0); - patm_scd_free(sc, scd); - - vcc->scd = NULL; - vcc->vflags &= ~PATM_VCC_TX_CLOSING; - - if (vcc->vcc.flags & ATMIO_FLAG_ASYNC) { - patm_tx_vcc_closed(sc, vcc); - if (!(vcc->vflags & PATM_VCC_OPEN)) - patm_vcc_closed(sc, vcc); - } else - cv_signal(&sc->vcc_cv); - return; - } - patm_debug(sc, VCC, "%u buffers still on card", - scd->num_on_card); - - if (vcc->vcc.traffic == ATMIO_TRAFFIC_ABR) { - /* insist on speeding up transmission for ABR */ - patm_nor_write(sc, IDT_NOR_TCMDQ, - IDT_TCMDQ_UIER(vcc->cid, 0xff)); - patm_nor_write(sc, IDT_NOR_TCMDQ, - IDT_TCMDQ_ULACR(vcc->cid, 0xff)); - } - } - - } while (last != tag); - scd->last_tag = tag; - - if (vcc->vcc.traffic == ATMIO_TRAFFIC_ABR) { - u_int acri, cps; - - acri = (patm_sram_read(sc, 8 * cid + 2) >> IDT_TCT_ACRI_SHIFT) - & 0x3fff; - cps = IFP2IFATM(sc->ifp)->mib.pcr * 32 / - ((1 << (acri >> 10)) * (acri & 0x3ff)); - - if (cps != vcc->cps) { - patm_debug(sc, VCC, "ACRI=%04x CPS=%u", acri, cps); - ATMEV_SEND_ACR_CHANGED(IFP2IFATM(sc->ifp), vcc->vcc.vpi, - vcc->vcc.vci, cps); - vcc->cps = cps; - } - } - - patm_launch(sc, scd); -} - -/* - * VBR/ABR connection went idle - * Either restart it or set the idle flag. - */ -void -patm_tx_idle(struct patm_softc *sc, u_int cid) -{ - struct patm_vcc *vcc; - - patm_debug(sc, VCC, "idle %u", cid); - - if ((vcc = sc->vccs[cid]) != NULL && - (vcc->vflags & (PATM_VCC_TX_OPEN | PATM_VCC_TX_CLOSING)) != 0 && - vcc->scd != NULL && (vcc->scd->num_on_card != 0 || - _IF_QLEN(&vcc->scd->q) != 0)) { - /* - * If there is any packet outstanding in the SCD re-activate - * the channel and kick it. - */ - patm_nor_write(sc, IDT_NOR_TCMDQ, - IDT_TCMDQ_START(vcc->cid)); - - patm_launch(sc, vcc->scd); - } -} - -/* - * Convert a (24bit) rate to the atm-forum form - * Our rate is never larger than 19 bit. - */ -static u_int -cps2atmf(u_int cps) -{ - u_int e; - - if (cps == 0) - return (0); - cps <<= 9; - e = 0; - while (cps > (1024 - 1)) { - e++; - cps >>= 1; - } - return ((1 << 14) | (e << 9) | (cps & 0x1ff)); -} - -/* - * Do a binary search on the log2rate table to convert the rate - * to its log form. This assumes that the ATM-Forum form is monotonically - * increasing with the plain cell rate. - */ -static u_int -rate2log(struct patm_softc *sc, u_int rate) -{ - const uint32_t *tbl; - u_int lower, upper, mid, done, val, afr; - - afr = cps2atmf(rate); - - if (sc->flags & PATM_25M) - tbl = patm_rtables25; - else - tbl = patm_rtables155; - - lower = 0; - upper = 255; - done = 0; - while (!done) { - mid = (lower + upper) / 2; - val = tbl[mid] >> 17; - if (val == afr || upper == lower) - break; - if (afr > val) - lower = mid + 1; - else - upper = mid - 1; - } - if (val > afr && mid > 0) - mid--; - return (mid); -} - -/* - * Return the table index for an increase table. The increase table - * must be selected not by the RIF itself, but by PCR/2^RIF. Each table - * represents an additive increase of a cell rate that can be computed - * from the first table entry (the value in this entry will not be clamped - * by the link rate). - */ -static u_int -get_air_table(struct patm_softc *sc, u_int rif, u_int pcr) -{ - const uint32_t *tbl; - u_int increase, base, lair0, ret, t, cps; - -#define GET_ENTRY(TAB, IDX) (0xffff & ((IDX & 1) ? \ - (tbl[512 + (IDX / 2) + 128 * (TAB)] >> 16) : \ - (tbl[512 + (IDX / 2) + 128 * (TAB)]))) - -#define MANT_BITS 10 -#define FRAC_BITS 16 - -#define DIFF_TO_FP(D) (((D) & ((1 << MANT_BITS) - 1)) << ((D) >> MANT_BITS)) -#define AFR_TO_INT(A) ((1 << (((A) >> 9) & 0x1f)) * \ - (512 + ((A) & 0x1ff)) / 512 * ((A) >> 14)) - - if (sc->flags & PATM_25M) - tbl = patm_rtables25; - else - tbl = patm_rtables155; - if (rif >= patm_rtables_ntab) - rif = patm_rtables_ntab - 1; - increase = pcr >> rif; - - ret = 0; - for (t = 0; t < patm_rtables_ntab; t++) { - /* get base rate of this table */ - base = GET_ENTRY(t, 0); - /* convert this to fixed point */ - lair0 = DIFF_TO_FP(base) >> FRAC_BITS; - - /* get the CPS from the log2rate table */ - cps = AFR_TO_INT(tbl[lair0] >> 17) - 10; - - if (increase >= cps) - break; - - ret = t; - } - return (ret + 4); -} - -/* - * Setup the TCT - */ -void -patm_tct_setup(struct patm_softc *sc, struct patm_scd *scd, - struct patm_vcc *vcc) -{ - uint32_t tct[8]; - u_int sram; - u_int mbs, token; - u_int tmp, crm, rdf, cdf, air, mcr; - - bzero(tct, sizeof(tct)); - if (vcc == NULL) { - /* special case for UBR0 */ - sram = 0; - tct[0] = IDT_TCT_UBR | scd->sram; - tct[7] = IDT_TCT_UBR_FLG; - - } else { - sram = vcc->cid * 8; - switch (vcc->vcc.traffic) { - - case ATMIO_TRAFFIC_CBR: - patm_tst_alloc(sc, vcc); - tct[0] = IDT_TCT_CBR | scd->sram; - /* must account for what was really allocated */ - break; - - case ATMIO_TRAFFIC_VBR: - /* compute parameters for the TCT */ - scd->init_er = rate2log(sc, vcc->vcc.tparam.pcr); - scd->lacr = rate2log(sc, vcc->vcc.tparam.scr); - - /* get the 16-bit fraction of SCR/PCR - * both a 24 bit. Do it the simple way. */ - token = (uint64_t)(vcc->vcc.tparam.scr << 16) / - vcc->vcc.tparam.pcr; - - patm_debug(sc, VCC, "VBR: init_er=%u lacr=%u " - "token=0x%04x\n", scd->init_er, scd->lacr, token); - - tct[0] = IDT_TCT_VBR | scd->sram; - tct[2] = IDT_TCT_TSIF; - tct[3] = IDT_TCT_IDLE | IDT_TCT_HALT; - tct[4] = IDT_TCT_MAXIDLE; - tct[5] = 0x01000000; - if ((mbs = vcc->vcc.tparam.mbs) > 0xff) - mbs = 0xff; - tct[6] = (mbs << 16) | token; - sc->bwrem -= vcc->vcc.tparam.scr; - break; - - case ATMIO_TRAFFIC_ABR: - scd->init_er = rate2log(sc, vcc->vcc.tparam.pcr); - scd->lacr = rate2log(sc, vcc->vcc.tparam.icr); - mcr = rate2log(sc, vcc->vcc.tparam.mcr); - - /* compute CRM */ - tmp = vcc->vcc.tparam.tbe / vcc->vcc.tparam.nrm; - if (tmp * vcc->vcc.tparam.nrm < vcc->vcc.tparam.tbe) - tmp++; - for (crm = 1; tmp > (1 << crm); crm++) - ; - if (crm > 0x7) - crm = 7; - - air = get_air_table(sc, vcc->vcc.tparam.rif, - vcc->vcc.tparam.pcr); - - if ((rdf = vcc->vcc.tparam.rdf) >= patm_rtables_ntab) - rdf = patm_rtables_ntab - 1; - rdf += patm_rtables_ntab + 4; - - if ((cdf = vcc->vcc.tparam.cdf) >= patm_rtables_ntab) - cdf = patm_rtables_ntab - 1; - cdf += patm_rtables_ntab + 4; - - patm_debug(sc, VCC, "ABR: init_er=%u lacr=%u mcr=%u " - "crm=%u air=%u rdf=%u cdf=%u\n", scd->init_er, - scd->lacr, mcr, crm, air, rdf, cdf); - - tct[0] = IDT_TCT_ABR | scd->sram; - tct[1] = crm << IDT_TCT_CRM_SHIFT; - tct[3] = IDT_TCT_HALT | IDT_TCT_IDLE | - (4 << IDT_TCT_NAGE_SHIFT); - tct[4] = mcr << IDT_TCT_LMCR_SHIFT; - tct[5] = (cdf << IDT_TCT_CDF_SHIFT) | - (rdf << IDT_TCT_RDF_SHIFT) | - (air << IDT_TCT_AIR_SHIFT); - - sc->bwrem -= vcc->vcc.tparam.mcr; - break; - } - } - - patm_sram_write4(sc, sram + 0, tct[0], tct[1], tct[2], tct[3]); - patm_sram_write4(sc, sram + 4, tct[4], tct[5], tct[6], tct[7]); - - patm_debug(sc, VCC, "TCT[%u]: %08x %08x %08x %08x %08x %08x %08x %08x", - sram / 8, patm_sram_read(sc, sram + 0), - patm_sram_read(sc, sram + 1), patm_sram_read(sc, sram + 2), - patm_sram_read(sc, sram + 3), patm_sram_read(sc, sram + 4), - patm_sram_read(sc, sram + 5), patm_sram_read(sc, sram + 6), - patm_sram_read(sc, sram + 7)); -} - -/* - * Start a channel - */ -static void -patm_tct_start(struct patm_softc *sc, struct patm_vcc *vcc) -{ - - patm_nor_write(sc, IDT_NOR_TCMDQ, IDT_TCMDQ_UIER(vcc->cid, - vcc->scd->init_er)); - patm_nor_write(sc, IDT_NOR_TCMDQ, IDT_TCMDQ_SLACR(vcc->cid, - vcc->scd->lacr)); -} - -static void -patm_tct_print(struct patm_softc *sc, u_int cid) -{ -#ifdef PATM_DEBUG - u_int sram = cid * 8; -#endif - - patm_debug(sc, VCC, "TCT[%u]: %08x %08x %08x %08x %08x %08x %08x %08x", - sram / 8, patm_sram_read(sc, sram + 0), - patm_sram_read(sc, sram + 1), patm_sram_read(sc, sram + 2), - patm_sram_read(sc, sram + 3), patm_sram_read(sc, sram + 4), - patm_sram_read(sc, sram + 5), patm_sram_read(sc, sram + 6), - patm_sram_read(sc, sram + 7)); -} - -/* - * Setup the SCD - */ -void -patm_scd_setup(struct patm_softc *sc, struct patm_scd *scd) -{ - patm_sram_write4(sc, scd->sram + 0, - scd->phy, 0, 0xffffffff, 0); - patm_sram_write4(sc, scd->sram + 4, - 0, 0, 0, 0); - - patm_debug(sc, VCC, "SCD(%x): %08x %08x %08x %08x %08x %08x %08x %08x", - scd->sram, - patm_sram_read(sc, scd->sram + 0), - patm_sram_read(sc, scd->sram + 1), - patm_sram_read(sc, scd->sram + 2), - patm_sram_read(sc, scd->sram + 3), - patm_sram_read(sc, scd->sram + 4), - patm_sram_read(sc, scd->sram + 5), - patm_sram_read(sc, scd->sram + 6), - patm_sram_read(sc, scd->sram + 7)); -} - -/* - * Grow the TX map table if possible - */ -static void -patm_txmaps_grow(struct patm_softc *sc) -{ - u_int i; - struct patm_txmap *map; - int err; - - if (sc->tx_nmaps >= sc->tx_maxmaps) - return; - - for (i = sc->tx_nmaps; i < sc->tx_nmaps + PATM_CFG_TXMAPS_STEP; i++) { - map = uma_zalloc(sc->tx_mapzone, M_NOWAIT); - err = bus_dmamap_create(sc->tx_tag, 0, &map->map); - if (err) { - uma_zfree(sc->tx_mapzone, map); - break; - } - SLIST_INSERT_HEAD(&sc->tx_maps_free, map, link); - } - - sc->tx_nmaps = i; -} - -/* - * Allocate a transmission map - */ -static struct patm_txmap * -patm_txmap_get(struct patm_softc *sc) -{ - struct patm_txmap *map; - - if ((map = SLIST_FIRST(&sc->tx_maps_free)) == NULL) { - patm_txmaps_grow(sc); - if ((map = SLIST_FIRST(&sc->tx_maps_free)) == NULL) - return (NULL); - } - SLIST_REMOVE_HEAD(&sc->tx_maps_free, link); - return (map); -} - -/* - * Look whether we are in the process of updating the TST on the chip. - * If we are set the flag that we need another update. - * If we are not start the update. - */ -static __inline void -patm_tst_start(struct patm_softc *sc) -{ - - if (!(sc->tst_state & TST_PENDING)) { - sc->tst_state |= TST_PENDING; - if (!(sc->tst_state & TST_WAIT)) { - /* timer not running */ - patm_tst_update(sc); - } - } -} - -/* - * Allocate TST entries to a CBR connection - */ -static void -patm_tst_alloc(struct patm_softc *sc, struct patm_vcc *vcc) -{ - u_int slots; - u_int qptr, pptr; - u_int qmax, pmax; - u_int pspc, last; - - mtx_lock(&sc->tst_lock); - - /* compute the number of slots we need, make sure to get at least - * the specified PCR */ - slots = cbr2slots(sc, vcc); - vcc->scd->slots = slots; - sc->bwrem -= slots2cr(sc, slots); - - patm_debug(sc, TST, "tst_alloc: cbr=%u link=%u tst=%u slots=%u", - vcc->vcc.tparam.pcr, IFP2IFATM(sc->ifp)->mib.pcr, sc->mmap->tst_size, slots); - - qmax = sc->mmap->tst_size - 1; - pmax = qmax << 8; - - pspc = pmax / slots; - - pptr = pspc >> 1; /* starting point */ - qptr = pptr >> 8; - - last = qptr; - - while (slots > 0) { - if (qptr >= qmax) - qptr -= qmax; - if (sc->tst_soft[qptr] != IDT_TST_VBR) { - /* used - try next */ - qptr++; - continue; - } - patm_debug(sc, TST, "slot[%u] = %u.%u diff=%d", qptr, - vcc->vcc.vpi, vcc->vcc.vci, (int)qptr - (int)last); - last = qptr; - - sc->tst_soft[qptr] = IDT_TST_CBR | vcc->cid | TST_BOTH; - sc->tst_free--; - - if ((pptr += pspc) >= pmax) - pptr -= pmax; - qptr = pptr >> 8; - - slots--; - } - patm_tst_start(sc); - mtx_unlock(&sc->tst_lock); -} - -/* - * Free a CBR connection's TST entries - */ -static void -patm_tst_free(struct patm_softc *sc, struct patm_vcc *vcc) -{ - u_int i; - - mtx_lock(&sc->tst_lock); - for (i = 0; i < sc->mmap->tst_size - 1; i++) { - if ((sc->tst_soft[i] & IDT_TST_MASK) == vcc->cid) { - sc->tst_soft[i] = IDT_TST_VBR | TST_BOTH; - sc->tst_free++; - } - } - sc->bwrem += slots2cr(sc, vcc->scd->slots); - patm_tst_start(sc); - mtx_unlock(&sc->tst_lock); -} - -/* - * Write the soft TST into the idle incore TST and start the wait timer. - * We assume that we hold the tst lock. - */ -static void -patm_tst_update(struct patm_softc *sc) -{ - u_int flag; /* flag to clear from soft TST */ - u_int idle; /* the idle TST */ - u_int act; /* the active TST */ - u_int i; - - if (sc->tst_state & TST_ACT1) { - act = 1; - idle = 0; - flag = TST_CH0; - } else { - act = 0; - idle = 1; - flag = TST_CH1; - } - /* update the idle one */ - for (i = 0; i < sc->mmap->tst_size - 1; i++) - if (sc->tst_soft[i] & flag) { - patm_sram_write(sc, sc->tst_base[idle] + i, - sc->tst_soft[i] & ~TST_BOTH); - sc->tst_soft[i] &= ~flag; - } - /* the used one jump to the idle one */ - patm_sram_write(sc, sc->tst_jump[act], - IDT_TST_BR | (sc->tst_base[idle] << 2)); - - /* wait for the chip to jump */ - sc->tst_state &= ~TST_PENDING; - sc->tst_state |= TST_WAIT; - - callout_reset(&sc->tst_callout, 1, patm_tst_timer, sc); -} - -/* - * Timer for TST updates - */ -static void -patm_tst_timer(void *p) -{ - struct patm_softc *sc = p; - u_int act; /* active TST */ - u_int now; /* current place in TST */ - - mtx_lock(&sc->tst_lock); - - if (sc->tst_state & TST_WAIT) { - /* ignore the PENDING state while we are waiting for - * the chip to switch tables. Once the switch is done, - * we will again lock at PENDING */ - act = (sc->tst_state & TST_ACT1) ? 1 : 0; - now = patm_nor_read(sc, IDT_NOR_NOW) >> 2; - if (now >= sc->tst_base[act] && now <= sc->tst_jump[act]) { - /* not yet */ - callout_reset(&sc->tst_callout, 1, patm_tst_timer, sc); - goto done; - } - sc->tst_state &= ~TST_WAIT; - /* change back jump */ - patm_sram_write(sc, sc->tst_jump[act], - IDT_TST_BR | (sc->tst_base[act] << 2)); - - /* switch */ - sc->tst_state ^= TST_ACT1; - } - - if (sc->tst_state & TST_PENDING) - /* we got another update request while the timer was running. */ - patm_tst_update(sc); - - done: - mtx_unlock(&sc->tst_lock); -} - -static const char * -dump_scd(struct patm_softc *sc, struct patm_scd *scd) -{ - u_int i; - - for (i = 0; i < IDT_TSQE_TAG_SPACE; i++) - printf("on_card[%u] = %p\n", i, scd->on_card[i]); - printf("space=%u tag=%u num_on_card=%u last_tag=%u\n", - scd->space, scd->tag, scd->num_on_card, scd->last_tag); - - return (""); -} diff --git a/sys/dev/patm/if_patmvar.h b/sys/dev/patm/if_patmvar.h deleted file mode 100644 index c87787a6afcf..000000000000 --- a/sys/dev/patm/if_patmvar.h +++ /dev/null @@ -1,520 +0,0 @@ -/*- - * Copyright (c) 2003 - * Fraunhofer Institute for Open Communication Systems (FhG Fokus). - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * Author: Hartmut Brandt <harti@freebsd.org> - * - * $FreeBSD$ - * - * Driver for IDT77252 (ABR) based cards like ProSum's. - */ - -/* legal values are 0, 1, 2 and 8 */ -#define PATM_VPI_BITS 2 -#define PATM_CFG_VPI IDT_CFG_VP2 - -/* receive status queue size */ -#define PATM_RSQ_SIZE 512 -#define PATM_CFQ_RSQ_SIZE IDT_CFG_RXQ512 - -/* alignment for SQ memory */ -#define PATM_SQ_ALIGNMENT 8192 - -#define PATM_PROATM_NAME_OFFSET 060 -#define PATM_PROATM_NAME "PROATM" -#define PATM_PROATM_MAC_OFFSET 044 -#define PATM_IDT_MAC_OFFSET 0154 - -/* maximum number of packets on UBR queue */ -#define PATM_DLFT_MAXQ 1000 - -/* maximum number of packets on other queues. This should depend on the - * traffic contract. */ -#define PATM_TX_IFQLEN 100 - -/* - * Maximum number of DMA maps we allocate. This is the minimum that can be - * set larger via a sysctl. - * Starting number of DMA maps. - * Step for growing. - */ -#define PATM_CFG_TXMAPS_MAX 1024 -#define PATM_CFG_TXMAPS_INIT 128 -#define PATM_CFG_TXMAPS_STEP 128 - -/* percents of TST slots to keep for non-CBR traffic */ -#define PATM_TST_RESERVE 2 - -/* - * Structure to hold TX DMA maps - */ -struct patm_txmap { - SLIST_ENTRY(patm_txmap) link; - bus_dmamap_t map; -}; - -/* - * Receive buffers. - * - * We manage our own external mbufs for small receive buffers for two reasons: - * the card may consume a rather large number of buffers. Mapping each buffer - * would consume a lot of iospace on sparc64. Also the card allows us to set - * a 32-bit handle for identification of the buffers. On a 64-bit system this - * requires us to use a mapping between buffers and handles. - * - * For large buffers we use mbuf clusters directly. We track these by using - * an array of pointers (lbufs) to special structs and a free list of these - * structs. - * - * For AAL0 cell we use FBQ2 and make the 1 cell long. - */ -/* - * Define the small buffer chunk so that we have at least 16 byte free - * at the end of the chunk and that there is an integral number of chunks - * in a page. - */ -#define SMBUF_PAGE_SIZE 16384 /* 16k pages */ -#define SMBUF_MAX_PAGES 64 /* maximum number of pages */ -#define SMBUF_CHUNK_SIZE 256 /* 256 bytes per chunk */ -#define SMBUF_CELLS 5 -#define SMBUF_SIZE (SMBUF_CELLS * 48) -#define SMBUF_THRESHOLD 9 /* 9/16 of queue size */ -#define SMBUF_NI_THRESH 3 -#define SMBUF_CI_THRESH 1 - -#define VMBUF_PAGE_SIZE 16384 /* 16k pages */ -#define VMBUF_MAX_PAGES 16 /* maximum number of pages */ -#define VMBUF_CHUNK_SIZE 64 /* 64 bytes per chunk */ -#define VMBUF_CELLS 1 -#define VMBUF_SIZE (VMBUF_CELLS * 48) -#define VMBUF_THRESHOLD 15 /* 15/16 of size */ - -#define SMBUF_OFFSET (SMBUF_CHUNK_SIZE - 8 - SMBUF_SIZE) -#define VMBUF_OFFSET 0 - -#define MBUF_SHANDLE 0x00000000 -#define MBUF_LHANDLE 0x80000000 -#define MBUF_VHANDLE 0x40000000 -#define MBUF_HMASK 0x3fffffff - -/* - * Large buffers - * - * The problem with these is the maximum count. When the card assembles - * a AAL5 pdu it moves a buffer from the FBQ to the VC. This frees space - * in the FBQ, put the buffer may pend on the card for an unlimited amount - * of time (we don't idle connections). This means that the upper limit - * on buffers on the card may be (no-of-open-vcs + FBQ_SIZE). Because - * this is far too much, make this a tuneable. We could also make - * this dynamic by allocating pages of several lbufs at once during run time. - */ -#define LMBUF_MAX (IDT_FBQ_SIZE * 2) -#define LMBUF_CELLS (MCLBYTES / 48) /* 42 cells = 2048 byte */ -#define LMBUF_SIZE (LMBUF_CELLS * 48) -#define LMBUF_THRESHOLD 9 /* 9/16 of queue size */ -#define LMBUF_OFFSET (MCLBYTES - LMBUF_SIZE) -#define LMBUF_NI_THRESH 3 -#define LMBUF_CI_THRESH 1 - -#define LMBUF_HANDLE 0x80000000 - -struct lmbuf { - SLIST_ENTRY(lmbuf) link; /* free list link */ - bus_dmamap_t map; /* DMA map */ - u_int handle; /* this is the handle index */ - struct mbuf *m; /* the current mbuf */ - bus_addr_t phy; /* phy addr */ -}; - -#define PATM_CID(SC, VPI, VCI) \ - (((VPI) << IFP2IFATM((SC)->ifp)->mib.vci_bits) | (VCI)) - -/* - * Internal driver statistics - */ -struct patm_stats { - uint32_t raw_cells; - uint32_t raw_no_vcc; - uint32_t raw_no_buf; - uint32_t tx_qfull; - uint32_t tx_out_of_tbds; - uint32_t tx_out_of_maps; - uint32_t tx_load_err; -}; - -/* - * These are allocated as DMA able memory - */ -struct patm_scd { - struct idt_tbd scq[IDT_SCQ_SIZE]; - LIST_ENTRY(patm_scd) link; /* all active SCDs */ - uint32_t sram; /* SRAM address */ - bus_addr_t phy; /* physical address */ - bus_dmamap_t map; /* DMA map */ - u_int tail; /* next free entry for host */ - int space; /* number of free entries (minus one) */ - u_int slots; /* CBR slots allocated */ - uint8_t tag; /* next tag for TSI */ - uint8_t last_tag; /* last tag checked in interrupt */ - uint8_t num_on_card; /* number of PDUs on tx queue */ - uint8_t lacr; /* LogACR value */ - uint8_t init_er; /* LogER value */ - struct ifqueue q; /* queue of packets */ - struct mbuf *on_card[IDT_TSQE_TAG_SPACE]; -}; - -/* - * Per-VCC data - */ -struct patm_vcc { - struct atmio_vcc vcc; /* caller's parameters */ - void *rxhand; /* NATM handle */ - u_int vflags; /* open and other flags */ - uint32_t ipackets; /* packets received */ - uint32_t opackets; /* packets sent */ - uint64_t ibytes; /* bytes received */ - uint64_t obytes; /* bytes sent */ - - struct mbuf *chain; /* currently received chain */ - struct mbuf *last; /* end of chain */ - u_int cid; /* index */ - u_int cps; /* last ABR cps */ - struct patm_scd *scd; -}; -#define PATM_VCC_TX_OPEN 0x0001 -#define PATM_VCC_RX_OPEN 0x0002 -#define PATM_VCC_TX_CLOSING 0x0004 -#define PATM_VCC_RX_CLOSING 0x0008 -#define PATM_VCC_OPEN 0x000f /* all the above */ - -#define PATM_RAW_CELL 0x0000 /* 53 byte cells */ -#define PATM_RAW_NOHEC 0x0100 /* 52 byte cells */ -#define PATM_RAW_CS 0x0200 /* 64 byte cell stream */ -#define PATM_RAW_FORMAT 0x0300 /* format mask */ - -/* - * Per adapter data - */ -struct patm_softc { - struct ifnet *ifp; /* common ATM stuff */ - struct mtx mtx; /* lock */ - struct ifmedia media; /* media */ - device_t dev; /* device */ - struct resource * memres; /* memory resource */ - bus_space_handle_t memh; /* handle */ - bus_space_tag_t memt; /* ... and tag */ - int irqid; /* resource id */ - struct resource * irqres; /* resource */ - void * ih; /* interrupt handle */ - struct utopia utopia; /* phy state */ - const struct idt_mmap *mmap; /* SRAM memory map */ - u_int flags; /* see below */ - u_int revision; /* chip revision */ - - /* DMAable status queue memory */ - size_t sq_size; /* size of memory area */ - bus_dma_tag_t sq_tag; /* DMA tag */ - bus_dmamap_t sq_map; /* map */ - - bus_addr_t tsq_phy; /* phys addr. */ - struct idt_tsqe *tsq; /* transmit status queue */ - struct idt_tsqe *tsq_next; /* last processed entry */ - struct idt_rsqe *rsq; /* receive status queue */ - bus_addr_t rsq_phy; /* phys addr. */ - u_int rsq_last; /* last processed entry */ - struct idt_rawhnd *rawhnd; /* raw cell handle */ - bus_addr_t rawhnd_phy; /* phys addr. */ - - /* TST */ - u_int tst_state; /* active TST and others */ - u_int tst_jump[2]; /* address of the jumps */ - u_int tst_base[2]; /* base address of TST */ - u_int *tst_soft; /* soft TST */ - struct mtx tst_lock; - struct callout tst_callout; - u_int tst_free; /* free slots */ - u_int tst_reserve; /* non-CBR reserve */ - u_int bwrem; /* remaining bandwidth */ - - /* sysctl support */ - struct sysctl_ctx_list sysctl_ctx; - struct sysctl_oid *sysctl_tree; - - /* EEPROM contents */ - uint8_t eeprom[256]; - - /* large buffer mapping */ - bus_dma_tag_t lbuf_tag; /* DMA tag */ - u_int lbuf_max; /* maximum number */ - struct lmbuf *lbufs; /* array for indexing */ - SLIST_HEAD(,lmbuf) lbuf_free_list; /* free list */ - - /* small buffer handling */ - bus_dma_tag_t sbuf_tag; /* DMA tag */ - struct mbpool *sbuf_pool; /* pool */ - struct mbpool *vbuf_pool; /* pool */ - - /* raw cell queue */ - struct lmbuf *rawh; /* current header buf */ - u_int rawi; /* cell index into buffer */ - - /* statistics */ - struct patm_stats stats; /* statistics */ - - /* Vccs */ - struct patm_vcc **vccs; /* channel pointer array */ - u_int vccs_open; /* number of open channels */ - uma_zone_t vcc_zone; - struct cv vcc_cv; - - /* SCDs */ - uint32_t scd_free; /* SRAM of first free SCD */ - bus_dma_tag_t scd_tag; - struct patm_scd *scd0; - LIST_HEAD(, patm_scd) scd_list; /* list of all active SCDs */ - - /* Tx */ - bus_dma_tag_t tx_tag; /* for transmission */ - SLIST_HEAD(, patm_txmap) tx_maps_free; /* free maps */ - u_int tx_nmaps; /* allocated maps */ - u_int tx_maxmaps; /* maximum number */ - struct uma_zone *tx_mapzone; /* zone for maps */ - -#ifdef PATM_DEBUG - /* debugging */ - u_int debug; -#endif -}; - -/* flags */ -#define PATM_25M 0x0001 /* 25MBit card */ -#define PATM_SBUFW 0x0002 /* warned */ -#define PATM_VBUFW 0x0004 /* warned */ -#define PATM_UNASS 0x0010 /* unassigned cells */ - -#define PATM_CLR 0x0007 /* clear on stop */ - -/* tst - uses unused fields */ -#define TST_BOTH 0x03000000 -#define TST_CH0 0x01000000 -#define TST_CH1 0x02000000 -/* tst_state */ -#define TST_ACT1 0x0001 /* active TST */ -#define TST_PENDING 0x0002 /* need update */ -#define TST_WAIT 0x0004 /* wait fo jump */ - -#define patm_printf(SC, ...) if_printf((SC)->ifp, __VA_ARGS__); - -#ifdef PATM_DEBUG -/* - * Debugging - */ -enum { - DBG_ATTACH = 0x0001, /* attaching the card */ - DBG_INTR = 0x0002, /* interrupts */ - DBG_REG = 0x0004, /* register access */ - DBG_SRAM = 0x0008, /* SRAM access */ - DBG_PHY = 0x0010, /* PHY access */ - DBG_IOCTL = 0x0020, /* ioctl */ - DBG_FREEQ = 0x0040, /* free bufq supply */ - DBG_VCC = 0x0080, /* open/close */ - DBG_TX = 0x0100, /* transmission */ - DBG_TST = 0x0200, /* TST */ - - DBG_ALL = 0xffff -}; - -#define patm_debug(SC, FLAG, ...) do { \ - if((SC)->debug & DBG_##FLAG) { \ - if_printf((SC)->ifp, "%s: ", __func__); \ - printf(__VA_ARGS__); \ - printf("\n"); \ - } \ - } while (0) -#else - -#define patm_debug(SC, FLAG, ...) do { } while (0) - -#endif - -/* start output */ -void patm_start(struct ifnet *); - -/* ioctl handler */ -int patm_ioctl(struct ifnet *, u_long, caddr_t); - -/* start the interface */ -void patm_init(void *); - -/* start the interface with the lock held */ -void patm_initialize(struct patm_softc *); - -/* stop the interface */ -void patm_stop(struct patm_softc *); - -/* software reset of interface */ -void patm_reset(struct patm_softc *); - -/* interrupt handler */ -void patm_intr(void *); - -/* check RSQ */ -void patm_intr_rsq(struct patm_softc *sc); - -/* enable the vcc */ -void patm_load_vc(struct patm_softc *sc, struct patm_vcc *vcc, int reload); - -/* close the given vcc for transmission */ -void patm_tx_vcc_close(struct patm_softc *, struct patm_vcc *); - -/* close the given vcc for receive */ -void patm_rx_vcc_close(struct patm_softc *, struct patm_vcc *); - -/* transmission side finally closed */ -void patm_tx_vcc_closed(struct patm_softc *, struct patm_vcc *); - -/* receive side finally closed */ -void patm_rx_vcc_closed(struct patm_softc *, struct patm_vcc *); - -/* vcc closed */ -void patm_vcc_closed(struct patm_softc *, struct patm_vcc *); - -/* check if we can open this one */ -int patm_tx_vcc_can_open(struct patm_softc *, struct patm_vcc *); - -/* check if we can open this one */ -int patm_rx_vcc_can_open(struct patm_softc *, struct patm_vcc *); - -/* open it */ -void patm_tx_vcc_open(struct patm_softc *, struct patm_vcc *); - -/* open it */ -void patm_rx_vcc_open(struct patm_softc *, struct patm_vcc *); - -/* receive packet */ -void patm_rx(struct patm_softc *, struct idt_rsqe *); - -/* packet transmitted */ -void patm_tx(struct patm_softc *, u_int, u_int); - -/* VBR connection went idle */ -void patm_tx_idle(struct patm_softc *, u_int); - -/* allocate an SCQ */ -struct patm_scd *patm_scd_alloc(struct patm_softc *); - -/* free an SCD */ -void patm_scd_free(struct patm_softc *sc, struct patm_scd *scd); - -/* setup SCD in SRAM */ -void patm_scd_setup(struct patm_softc *sc, struct patm_scd *scd); - -/* setup TCT entry in SRAM */ -void patm_tct_setup(struct patm_softc *, struct patm_scd *, struct patm_vcc *); - -/* free a large buffer */ -void patm_lbuf_free(struct patm_softc *sc, struct lmbuf *b); - -/* Process the raw cell at the given address */ -void patm_rx_raw(struct patm_softc *sc, u_char *cell); - -/* load a one segment DMA map */ -void patm_load_callback(void *, bus_dma_segment_t *, int, int); - -/* network operation register access */ -static __inline uint32_t -patm_nor_read(struct patm_softc *sc, u_int reg) -{ - uint32_t val; - - val = bus_space_read_4(sc->memt, sc->memh, reg); - patm_debug(sc, REG, "reg(0x%x)=%04x", reg, val); - return (val); -} -static __inline void -patm_nor_write(struct patm_softc *sc, u_int reg, uint32_t val) -{ - - patm_debug(sc, REG, "reg(0x%x)=%04x", reg, val); - bus_space_write_4(sc->memt, sc->memh, reg, val); -} - -/* Execute command */ -static __inline void -patm_cmd_wait(struct patm_softc *sc) -{ - while (patm_nor_read(sc, IDT_NOR_STAT) & IDT_STAT_CMDBZ) - ; -} -static __inline void -patm_cmd_exec(struct patm_softc *sc, uint32_t cmd) -{ - patm_cmd_wait(sc); - patm_nor_write(sc, IDT_NOR_CMD, cmd); -} - -/* Read/write SRAM at the given word address. */ -static __inline uint32_t -patm_sram_read(struct patm_softc *sc, u_int addr) -{ - uint32_t val; - - patm_cmd_exec(sc, IDT_MKCMD_RSRAM(addr)); - patm_cmd_wait(sc); - val = patm_nor_read(sc, IDT_NOR_D0); - patm_debug(sc, SRAM, "read %04x=%08x", addr, val); - return (val); -} -static __inline void -patm_sram_write(struct patm_softc *sc, u_int addr, uint32_t val) -{ - patm_debug(sc, SRAM, "write %04x=%08x", addr, val); - patm_cmd_wait(sc); - patm_nor_write(sc, IDT_NOR_D0, val); - patm_cmd_exec(sc, IDT_MKCMD_WSRAM(addr, 0)); -} -static __inline void -patm_sram_write4(struct patm_softc *sc, u_int addr, uint32_t v0, uint32_t v1, - uint32_t v2, uint32_t v3) -{ - patm_debug(sc, SRAM, "write %04x=%08x,%08x,%08x,%08x", - addr, v0, v1, v2, v3); - patm_cmd_wait(sc); - patm_nor_write(sc, IDT_NOR_D0, v0); - patm_nor_write(sc, IDT_NOR_D1, v1); - patm_nor_write(sc, IDT_NOR_D2, v2); - patm_nor_write(sc, IDT_NOR_D3, v3); - patm_cmd_exec(sc, IDT_MKCMD_WSRAM(addr, 3)); -} - -#define LEGAL_VPI(SC, VPI) \ - (((VPI) & ~((1 << IFP2IFATM((SC)->ifp)->mib.vpi_bits) - 1)) == 0) -#define LEGAL_VCI(SC, VCI) \ - (((VCI) & ~((1 << IFP2IFATM((SC)->ifp)->mib.vci_bits) - 1)) == 0) - -extern const uint32_t patm_rtables155[]; -extern const uint32_t patm_rtables25[]; -extern const u_int patm_rtables_size; -extern const u_int patm_rtables_ntab; diff --git a/sys/dev/psci/psci.c b/sys/dev/psci/psci.c index 4452fb45955d..4ae97eccc45a 100644 --- a/sys/dev/psci/psci.c +++ b/sys/dev/psci/psci.c @@ -412,6 +412,13 @@ psci_shutdown(void *xsc, int howto) /* System reset and off do not return. */ } +void +psci_reset(void) +{ + + psci_shutdown(NULL, 0); +} + #ifdef FDT /* Only support PSCI 0.1 on FDT */ static int diff --git a/sys/dev/psci/psci.h b/sys/dev/psci/psci.h index 7f447abaf444..af777bb6c380 100644 --- a/sys/dev/psci/psci.h +++ b/sys/dev/psci/psci.h @@ -36,7 +36,7 @@ typedef int (*psci_callfn_t)(register_t, register_t, register_t, register_t); extern int psci_present; -void psci_system_reset(void); +void psci_reset(void); int psci_cpu_on(unsigned long, unsigned long, unsigned long); int psci_hvc_despatch(register_t, register_t, register_t, register_t); int psci_smc_despatch(register_t, register_t, register_t, register_t); diff --git a/sys/dev/syscons/scvgarndr.c b/sys/dev/syscons/scvgarndr.c index 69e831c4e8cb..7cecae9db1cb 100644 --- a/sys/dev/syscons/scvgarndr.c +++ b/sys/dev/syscons/scvgarndr.c @@ -1009,23 +1009,34 @@ draw_pxlmouse_planar(scr_stat *scp, int x, int y) yoff = y - rounddown(y, line_width); ymax = imin(y + mdp->md_height, scp->ypixel); - outw(GDCIDX, 0x0005); /* read mode 0, write mode 0 */ - outw(GDCIDX, 0x0001); /* set/reset enable */ - outw(GDCIDX, 0xff08); /* bit mask */ - outw(GDCIDX, 0x0803); /* data rotate/function select (and) */ + if (scp->sc->adp->va_type == KD_VGA) { + outw(GDCIDX, 0x0305); /* read mode 0, write mode 3 */ + outw(GDCIDX, 0xff08); /* bit mask */ + } else + outw(GDCIDX, 0x0005); /* read mode 0, write mode 0 */ + outw(GDCIDX, 0x0003); /* data rotate/function select */ + outw(GDCIDX, 0x0f01); /* set/reset enable */ + + outw(GDCIDX, (0 << 8) | 0x00); /* set/reset */ p = scp->sc->adp->va_window + line_width*y + x/8; for (i = y, j = 0; i < ymax; ++i, ++j) { - m = ~(mdp->md_border[j] << 8 >> xoff); + m = mdp->md_border[j] << 8 >> xoff; for (k = 0; k < 3; ++k) { m1 = m >> (8 * (2 - k)); - if (m1 != 0xff && x + 8 * k < scp->xpixel) { + if (m1 != 0 && x + 8 * k < scp->xpixel) { readb(p + k); - writeb(p + k, m1); - } + if (scp->sc->adp->va_type == KD_VGA) + writeb(p + k, m1); + else { + /* bit mask: */ + outw(GDCIDX, (m1 << 8) | 0x08); + writeb(p + k, 0); + } + } } p += line_width; } - outw(GDCIDX, 0x1003); /* data rotate/function select (or) */ + outw(GDCIDX, (15 << 8) | 0x00); /* set/reset */ p = scp->sc->adp->va_window + line_width*y + x/8; for (i = y, j = 0; i < ymax; ++i, ++j) { m = mdp->md_interior[j] << 8 >> xoff; @@ -1033,12 +1044,23 @@ draw_pxlmouse_planar(scr_stat *scp, int x, int y) m1 = m >> (8 * (2 - k)); if (m1 != 0 && x + 8 * k < scp->xpixel) { readb(p + k); - writeb(p + k, m1); + if (scp->sc->adp->va_type == KD_VGA) + writeb(p + k, m1); + else { + /* bit mask: */ + outw(GDCIDX, (m1 << 8) | 0x08); + writeb(p + k, 0); + } } } p += line_width; } - outw(GDCIDX, 0x0003); /* data rotate/function select */ + if (scp->sc->adp->va_type == KD_VGA) + outw(GDCIDX, 0x0005); /* read mode 0, write mode 0 */ + else + outw(GDCIDX, 0xff08); /* bit mask */ + outw(GDCIDX, 0x0000); /* set/reset */ + outw(GDCIDX, 0x0001); /* set/reset enable */ } static void diff --git a/sys/dev/utopia/idtphy.c b/sys/dev/utopia/idtphy.c deleted file mode 100644 index 5aaa576abb23..000000000000 --- a/sys/dev/utopia/idtphy.c +++ /dev/null @@ -1,494 +0,0 @@ -/*- - * Copyright (c) 2003 - * Fraunhofer Institute for Open Communication Systems (FhG Fokus). - * All rights reserved. - * - * Author: Hartmut Brandt <harti@freebsd.org> - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/unistd.h> -#include <sys/kernel.h> -#include <sys/kthread.h> -#include <sys/proc.h> -#include <sys/bus.h> -#include <sys/malloc.h> -#include <sys/module.h> -#include <sys/sysctl.h> -#include <sys/lock.h> -#include <sys/mutex.h> -#include <sys/socket.h> - -#include <net/if.h> -#include <net/if_var.h> -#include <net/if_media.h> -#include <net/if_atm.h> - -#include <dev/utopia/idtphy.h> -#include <dev/utopia/utopia.h> -#include <dev/utopia/utopia_priv.h> - -/* - * Reset IDT77105. There is really no way to reset this thing by acessing - * the registers. Load the registers with default values. - */ -static int -idt77105_reset(struct utopia *utp) -{ - int err = 0; - u_int n; - uint8_t val[2]; - - err |= UTP_WRITEREG(utp, IDTPHY_REGO_MCR, 0xff, - IDTPHY_REGM_MCR_DRIC | IDTPHY_REGM_MCR_EI); - n = 1; - err |= UTP_READREGS(utp, IDTPHY_REGO_ISTAT, val, &n); - err |= UTP_WRITEREG(utp, IDTPHY_REGO_DIAG, 0xff, 0); - err |= UTP_WRITEREG(utp, IDTPHY_REGO_LHEC, 0xff, 0); - - err |= UTP_WRITEREG(utp, IDTPHY_REGO_CNTS, 0xff, IDTPHY_REGM_CNTS_SEC); - n = 2; - err |= UTP_READREGS(utp, IDTPHY_REGO_CNT, val, &n); - - err |= UTP_WRITEREG(utp, IDTPHY_REGO_CNTS, 0xff, IDTPHY_REGM_CNTS_TX); - n = 2; - err |= UTP_READREGS(utp, IDTPHY_REGO_CNT, val, &n); - - err |= UTP_WRITEREG(utp, IDTPHY_REGO_CNTS, 0xff, IDTPHY_REGM_CNTS_RX); - n = 2; - err |= UTP_READREGS(utp, IDTPHY_REGO_CNT, val, &n); - - err |= UTP_WRITEREG(utp, IDTPHY_REGO_CNTS, 0xff, IDTPHY_REGM_CNTS_HECE); - n = 2; - err |= UTP_READREGS(utp, IDTPHY_REGO_CNT, val, &n); - - err |= UTP_WRITEREG(utp, IDTPHY_REGO_MCR, IDTPHY_REGM_MCR_DREC, - IDTPHY_REGM_MCR_DREC); - err |= UTP_WRITEREG(utp, IDTPHY_REGO_DIAG, IDTPHY_REGM_DIAG_RFLUSH, - IDTPHY_REGM_DIAG_RFLUSH); - - /* loopback */ - err |= utopia_set_loopback(utp, utp->loopback); - - /* update carrier state */ - err |= utopia_update_carrier(utp); - - return (err ? EIO : 0); -} - -static int -idt77105_inval(struct utopia *utp, int what __unused) -{ - - return (EINVAL); -} - -static int -idt77105_update_carrier(struct utopia *utp) -{ - int err; - uint8_t reg; - u_int n = 1; - - if ((err = UTP_READREGS(utp, IDTPHY_REGO_ISTAT, ®, &n)) != 0) { - utp->carrier = UTP_CARR_UNKNOWN; - return (err); - } - utopia_check_carrier(utp, reg & IDTPHY_REGM_ISTAT_GOOD); - return (0); -} - -static int -idt77105_set_loopback(struct utopia *utp, u_int mode) -{ - int err; - - switch (mode) { - case UTP_LOOP_NONE: - err = UTP_WRITEREG(utp, IDTPHY_REGO_DIAG, - IDTPHY_REGM_DIAG_LOOP, IDTPHY_REGM_DIAG_LOOP_NONE); - break; - - case UTP_LOOP_DIAG: - err = UTP_WRITEREG(utp, IDTPHY_REGO_DIAG, - IDTPHY_REGM_DIAG_LOOP, IDTPHY_REGM_DIAG_LOOP_PHY); - break; - - case UTP_LOOP_LINE: - err = UTP_WRITEREG(utp, IDTPHY_REGO_DIAG, - IDTPHY_REGM_DIAG_LOOP, IDTPHY_REGM_DIAG_LOOP_LINE); - break; - - default: - return (EINVAL); - } - if (err) - return (err); - utp->loopback = mode; - return (0); -} - -/* - * Handle interrupt on IDT77105 chip - */ -static void -idt77105_intr(struct utopia *utp) -{ - uint8_t reg; - u_int n = 1; - int err; - - /* Interrupt status and ack the interrupt */ - if ((err = UTP_READREGS(utp, IDTPHY_REGO_ISTAT, ®, &n)) != 0) { - printf("IDT77105 read error %d\n", err); - return; - } - /* check for signal condition */ - utopia_check_carrier(utp, reg & IDTPHY_REGM_ISTAT_GOOD); -} - -static void -idt77105_update_stats(struct utopia *utp) -{ - int err = 0; - uint8_t regs[2]; - u_int n; - -#ifdef DIAGNOSTIC -#define UDIAG(F,A,B) printf(F, A, B) -#else -#define UDIAG(F,A,B) do { } while (0) -#endif - -#define UPD(FIELD, CODE, N, MASK) \ - err = UTP_WRITEREG(utp, IDTPHY_REGO_CNTS, 0xff, CODE); \ - if (err != 0) { \ - UDIAG("%s: cannot write CNTS: %d\n", __func__, err); \ - return; \ - } \ - n = N; \ - err = UTP_READREGS(utp, IDTPHY_REGO_CNT, regs, &n); \ - if (err != 0) { \ - UDIAG("%s: cannot read CNT: %d\n", __func__, err); \ - return; \ - } \ - if (n != N) { \ - UDIAG("%s: got only %u registers\n", __func__, n); \ - return; \ - } \ - if (N == 1) \ - utp->stats.FIELD += (regs[0] & MASK); \ - else \ - utp->stats.FIELD += (regs[0] | (regs[1] << 8)) & MASK; - - UPD(rx_symerr, IDTPHY_REGM_CNTS_SEC, 1, 0xff); - UPD(tx_cells, IDTPHY_REGM_CNTS_TX, 2, 0xffff); - UPD(rx_cells, IDTPHY_REGM_CNTS_RX, 2, 0xffff); - UPD(rx_uncorr, IDTPHY_REGM_CNTS_HECE, 1, 0x1f); - -#undef UDIAG -#undef UPD -} - -struct utopia_chip utopia_chip_idt77105 = { - UTP_TYPE_IDT77105, - "IDT77105", - 7, - idt77105_reset, - idt77105_inval, - idt77105_inval, - idt77105_inval, - idt77105_update_carrier, - idt77105_set_loopback, - idt77105_intr, - idt77105_update_stats, -}; - -/* - * Update the carrier status - */ -static int -idt77155_update_carrier(struct utopia *utp) -{ - int err; - uint8_t reg; - u_int n = 1; - - if ((err = UTP_READREGS(utp, IDTPHY_REGO_RSOS, ®, &n)) != 0) { - utp->carrier = UTP_CARR_UNKNOWN; - return (err); - } - utopia_check_carrier(utp, !(reg & IDTPHY_REGM_RSOS_LOS)); - return (0); -} - -/* - * Handle interrupt on IDT77155 chip - */ -static void -idt77155_intr(struct utopia *utp) -{ - uint8_t reg; - u_int n = 1; - int err; - - if ((err = UTP_READREGS(utp, IDTPHY_REGO_RSOS, ®, &n)) != 0) { - printf("IDT77105 read error %d\n", err); - return; - } - utopia_check_carrier(utp, !(reg & IDTPHY_REGM_RSOS_LOS)); -} - -/* - * set SONET/SDH mode - */ -static int -idt77155_set_sdh(struct utopia *utp, int sdh) -{ - int err; - - if (sdh) - err = UTP_WRITEREG(utp, IDTPHY_REGO_PTRM, - IDTPHY_REGM_PTRM_SS, IDTPHY_REGM_PTRM_SDH); - else - err = UTP_WRITEREG(utp, IDTPHY_REGO_PTRM, - IDTPHY_REGM_PTRM_SS, IDTPHY_REGM_PTRM_SONET); - if (err != 0) - return (err); - - utp->state &= ~UTP_ST_SDH; - if (sdh) - utp->state |= UTP_ST_SDH; - - return (0); -} - -/* - * set idle/unassigned cells - */ -static int -idt77155_set_unass(struct utopia *utp, int unass) -{ - int err; - - if (unass) - err = UTP_WRITEREG(utp, IDTPHY_REGO_TCHP, 0xff, 0); - else - err = UTP_WRITEREG(utp, IDTPHY_REGO_TCHP, 0xff, 1); - if (err != 0) - return (err); - - utp->state &= ~UTP_ST_UNASS; - if (unass) - utp->state |= UTP_ST_UNASS; - - return (0); -} - -/* - * enable/disable scrambling - */ -static int -idt77155_set_noscramb(struct utopia *utp, int noscramb) -{ - int err; - - if (noscramb) { - err = UTP_WRITEREG(utp, IDTPHY_REGO_TCC, - IDTPHY_REGM_TCC_DSCR, IDTPHY_REGM_TCC_DSCR); - if (err) - return (err); - err = UTP_WRITEREG(utp, IDTPHY_REGO_RCC, - IDTPHY_REGM_RCC_DSCR, IDTPHY_REGM_RCC_DSCR); - if (err) - return (err); - utp->state |= UTP_ST_NOSCRAMB; - } else { - err = UTP_WRITEREG(utp, IDTPHY_REGO_TCC, - IDTPHY_REGM_TCC_DSCR, 0); - if (err) - return (err); - err = UTP_WRITEREG(utp, IDTPHY_REGO_RCC, - IDTPHY_REGM_RCC_DSCR, 0); - if (err) - return (err); - utp->state &= ~UTP_ST_NOSCRAMB; - } - return (0); -} - -/* - * Set loopback mode for the 77155 - */ -static int -idt77155_set_loopback(struct utopia *utp, u_int mode) -{ - int err; - uint32_t val; - u_int nmode; - - val = 0; - nmode = mode; - if (mode & UTP_LOOP_TIME) { - nmode &= ~UTP_LOOP_TIME; - val |= IDTPHY_REGM_MCTL_TLOOP; - } - if (mode & UTP_LOOP_DIAG) { - nmode &= ~UTP_LOOP_DIAG; - val |= IDTPHY_REGM_MCTL_DLOOP; - } - if (mode & UTP_LOOP_LINE) { - nmode &= ~UTP_LOOP_LINE; - val |= IDTPHY_REGM_MCTL_LLOOP; - } - if (nmode != 0) - return (EINVAL); - - err = UTP_WRITEREG(utp, IDTPHY_REGO_MCTL, IDTPHY_REGM_MCTL_TLOOP | - IDTPHY_REGM_MCTL_DLOOP | IDTPHY_REGM_MCTL_LLOOP, val); - if (err) - return (err); - utp->loopback = mode; - - return (0); -} - -/* - * Set the chip to reflect the current state in utopia. - * Assume, that the chip has been reset. - */ -static int -idt77155_set_chip(struct utopia *utp) -{ - int err = 0; - - /* set sonet/sdh */ - err |= idt77155_set_sdh(utp, utp->state & UTP_ST_SDH); - - /* unassigned or idle cells */ - err |= idt77155_set_unass(utp, utp->state & UTP_ST_UNASS); - - /* loopback */ - err |= idt77155_set_loopback(utp, utp->loopback); - - /* update carrier state */ - err |= idt77155_update_carrier(utp); - - /* enable interrupts on LOS */ - err |= UTP_WRITEREG(utp, IDTPHY_REGO_INT, - IDTPHY_REGM_INT_RXSOHI, IDTPHY_REGM_INT_RXSOHI); - err |= UTP_WRITEREG(utp, IDTPHY_REGO_RSOC, - IDTPHY_REGM_RSOC_LOSI, IDTPHY_REGM_RSOC_LOSI); - - return (err ? EIO : 0); -} - -/* - * Reset the chip to reflect the current state of utopia. - */ -static int -idt77155_reset(struct utopia *utp) -{ - int err = 0; - - if (!(utp->flags & UTP_FL_NORESET)) { - err |= UTP_WRITEREG(utp, IDTPHY_REGO_MRID, - IDTPHY_REGM_MRID_RESET, IDTPHY_REGM_MRID_RESET); - err |= UTP_WRITEREG(utp, IDTPHY_REGO_MRID, - IDTPHY_REGM_MRID_RESET, 0); - } - - err |= idt77155_set_chip(utp); - - return (err ? EIO : 0); -} - -/* - * Update statistics from a IDT77155 - * This appears to be the same as for the Suni/Lite and Ultra. IDT however - * makes no assessment about the transfer time. Assume 7us. - */ -static void -idt77155_update_stats(struct utopia *utp) -{ - int err; - - /* write to the master if we can */ - if (!(utp->flags & UTP_FL_NORESET)) { - err = UTP_WRITEREG(utp, IDTPHY_REGO_MRID, 0, 0); - } else { - err = UTP_WRITEREG(utp, IDTPHY_REGO_BIPC, 0, 0); - err |= UTP_WRITEREG(utp, IDTPHY_REGO_B2EC, 0, 0); - err |= UTP_WRITEREG(utp, IDTPHY_REGO_B3EC, 0, 0); - err |= UTP_WRITEREG(utp, IDTPHY_REGO_CEC, 0, 0); - err |= UTP_WRITEREG(utp, IDTPHY_REGO_TXCNT, 0, 0); - - } - if (err) { -#ifdef DIAGNOSTIC - printf("%s: register write error %s: %d\n", __func__, - utp->chip->name, err); -#endif - return; - } - - DELAY(8); - - utp->stats.rx_sbip += utopia_update(utp, - IDTPHY_REGO_BIPC, 2, 0xffff); - utp->stats.rx_lbip += utopia_update(utp, - IDTPHY_REGO_B2EC, 3, 0xfffff); - utp->stats.rx_lfebe += utopia_update(utp, - IDTPHY_REGO_FEBEC, 3, 0xfffff); - utp->stats.rx_pbip += utopia_update(utp, - IDTPHY_REGO_B3EC, 2, 0xffff); - utp->stats.rx_pfebe += utopia_update(utp, - IDTPHY_REGO_PFEBEC, 2, 0xffff); - utp->stats.rx_corr += utopia_update(utp, - IDTPHY_REGO_CEC, 1, 0xff); - utp->stats.rx_uncorr += utopia_update(utp, - IDTPHY_REGO_UEC, 1, 0xff); - utp->stats.rx_cells += utopia_update(utp, - IDTPHY_REGO_RCCNT, 3, 0x7ffff); - utp->stats.tx_cells += utopia_update(utp, - IDTPHY_REGO_TXCNT, 3, 0x7ffff); -} - -const struct utopia_chip utopia_chip_idt77155 = { - UTP_TYPE_IDT77155, - "IDT77155", - 0x80, - idt77155_reset, - idt77155_set_sdh, - idt77155_set_unass, - idt77155_set_noscramb, - idt77155_update_carrier, - idt77155_set_loopback, - idt77155_intr, - idt77155_update_stats, -}; diff --git a/sys/dev/utopia/idtphy.h b/sys/dev/utopia/idtphy.h deleted file mode 100644 index 1451d0561fa3..000000000000 --- a/sys/dev/utopia/idtphy.h +++ /dev/null @@ -1,761 +0,0 @@ -/*- - * Copyright (c) 2003 - * Fraunhofer Institute for Open Communication Systems (FhG Fokus). - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * Author: Hartmut Brandt <harti@freebsd.org> - * - * $FreeBSD$ - * - * Register definitions for the following chips: - * IDT 77105 - * IDT 77155 - */ -#ifndef _DEV_UTOPIA_IDTPHY_H -#define _DEV_UTOPIA_IDTPHY_H - -#define IDTPHY_REGO_MCR 0x00 -#define IDTPHY_REGN_MCR "Master Control Register" -#define IDTPHY_REGX_MCR "\020\010UPLO\7DREC\6ECEI\5TDPC\4DRIC\3HALTTX\2BYTEM\1EI" -#define IDTPHY_REGM_MCR_UPL0 0x80 -#define IDTPHY_REGM_MCR_DREC 0x40 -#define IDTPHY_REGM_MCR_ECEI 0x20 -#define IDTPHY_REGM_MCR_TDPC 0x10 -#define IDTPHY_REGM_MCR_DRIC 0x08 -#define IDTPHY_REGM_MCR_HALTTX 0x04 -#define IDTPHY_REGM_MCR_BYTEM 0x02 -#define IDTPHY_REGM_MCR_EI 0x01 - -#define IDTPHY_REGO_ISTAT 0x01 -#define IDTPHY_REGN_ISTAT "Interrupt Status" -#define IDTPHY_REGX_ISTAT "\020\7GOOD\6HECE\5SCRE\4TPE\3RSCC\2RSE\1RFO" -#define IDTPHY_REGM_ISTAT_GOOD 0x40 /* good signal bit */ -#define IDTPHY_REGM_ISTAT_HECE 0x20 /* HEC error */ -#define IDTPHY_REGM_ISTAT_SCRE 0x10 /* short cell received error */ -#define IDTPHY_REGM_ISTAT_TPE 0x08 /* transmit parity error */ -#define IDTPHY_REGM_ISTAT_RSCC 0x04 /* receive signal condition change */ -#define IDTPHY_REGM_ISTAT_RSE 0x02 /* receive symbol error */ -#define IDTPHY_REGM_ISTAT_RFO 0x01 /* read FIFO overrun */ - -#define IDTPHY_REGO_DIAG 0x02 -#define IDTPHY_REGN_DIAG "Diagnostic Control" -#define IDTPHY_REGX_DIAG "\020\010FTD\7ROS\6MULTI\5RFLUSH\4ITPE\3IHECE\11\3\0NORM\11\3\2PLOOP\11\3\3LLOOP" -#define IDTPHY_REGM_DIAG_FTD 0x80 /* Force TxClav Deassert */ -#define IDTPHY_REGM_DIAG_ROS 0x40 /* RxClav Operation Select */ -#define IDTPHY_REGM_DIAG_MULTI 0x20 /* Multi-phy operation */ -#define IDTPHY_REGM_DIAG_RFLUSH 0x10 /* clear receive Fifo */ -#define IDTPHY_REGM_DIAG_ITPE 0x08 /* insert transmit payload error */ -#define IDTPHY_REGM_DIAG_IHECE 0x04 /* insert transmit HEC error */ -#define IDTPHY_REGM_DIAG_LOOP 0x03 /* loopback mode */ -#define IDTPHY_REGM_DIAG_LOOP_NONE 0x00 /* normal */ -#define IDTPHY_REGM_DIAG_LOOP_PHY 0x02 /* PHY loopback */ -#define IDTPHY_REGM_DIAG_LOOP_LINE 0x03 /* Line loopback */ - -#define IDTPHY_REGO_LHEC 0x03 -#define IDTPHY_REGN_LHEC "LED Driver and HEC Status/Control" -#define IDTPHY_REGX_LHEC "\020\7DRHEC\6DTHEC\11\x18\0CYC1\11\x18\1CYC2\11\x18\2CYC4\11\x18\3CYC8\3FIFOE\2TXLED\1RXLED" -#define IDTPHY_REGM_LHEC_DRHEC 0x40 /* disable receive HEC */ -#define IDTPHY_REGM_LHEC_DTHEC 0x20 /* disable transmit HEC */ -#define IDTPHY_REGM_LHEC_RXREF 0x18 /* RxRef pulse width */ -#define IDTPHY_REGM_LHEC_RXREF1 0x00 /* 1 pulse */ -#define IDTPHY_REGM_LHEC_RXREF2 0x08 /* 2 pulse */ -#define IDTPHY_REGM_LHEC_RXREF4 0x10 /* 4 pulse */ -#define IDTPHY_REGM_LHEC_RXREF8 0x18 /* 8 pulse */ -#define IDTPHY_REGM_LHEC_FIFOE 0x04 /* Fifo empty */ -#define IDTPHY_REGM_LHEC_TXLED 0x02 /* Tx LED status */ -#define IDTPHY_REGM_LHEC_RXLED 0x01 /* Rx LED status */ - -#define IDTPHY_REGO_CNT 0x04 /* +0x05 */ -#define IDTPHY_REGN_CNT "Counter" - -#define IDTPHY_REGO_CNTS 0x06 -#define IDTPHY_REGN_CNTS "Counter select" -#define IDTPHY_REGX_CNTS "\020\4SEC\3TX\2RX\1HECE" -#define IDTPHY_REGM_CNTS_SEC 0x08 /* symbol error counter */ -#define IDTPHY_REGM_CNTS_TX 0x04 /* Tx cells */ -#define IDTPHY_REGM_CNTS_RX 0x02 /* Rx cells */ -#define IDTPHY_REGM_CNTS_HECE 0x01 /* HEC errors */ - -#define IDTPHY_PRINT_77105 \ - { /* 00 */ \ - UTP_REGT_BITS, IDTPHY_REGO_MCR, \ - IDTPHY_REGN_MCR, IDTPHY_REGX_MCR }, \ - { /* 01 */ \ - UTP_REGT_BITS, IDTPHY_REGO_ISTAT, \ - IDTPHY_REGN_ISTAT, IDTPHY_REGX_ISTAT }, \ - { /* 02 */ \ - UTP_REGT_BITS, IDTPHY_REGO_DIAG, \ - IDTPHY_REGN_DIAG, IDTPHY_REGX_DIAG }, \ - { /* 03 */ \ - UTP_REGT_BITS, IDTPHY_REGO_LHEC, \ - IDTPHY_REGN_LHEC, IDTPHY_REGX_LHEC }, \ - { /* 04, 05 */ \ - UTP_REGT_INT16, IDTPHY_REGO_CNT, \ - IDTPHY_REGN_CNT, NULL }, \ - { /* 06 */ \ - UTP_REGT_BITS, IDTPHY_REGO_CNTS, \ - IDTPHY_REGN_CNTS, IDTPHY_REGX_CNTS } - -#define IDTPHY_REGO_MRID 0x00 -#define IDTPHY_REGN_MRID "Master Reset & ID" -#define IDTPHY_REGM_MRID_RESET 0x80 /* software reset */ -#define IDTPHY_REGM_MRID_TYPE 0x70 /* type */ -#define IDTPHY_REGM_MRID_155 0x30 /* idt77155 type */ -#define IDTPHY_REGM_MRID_ID 0x0f /* revision */ -#define IDTPHY_REGX_MRID \ - "\020\010mstReset\12\x70\12type\12\xf\12id" - -#define IDTPHY_REGO_CONF 0x01 -#define IDTPHY_REGN_CONF "Configuration" -#define IDTPHY_REGM_CONF_AFEBE 0x40 /* autoFEBE */ -#define IDTPHY_REGM_CONF_ALRDI 0x20 /* autoLRDI */ -#define IDTPHY_REGM_CONF_APRDI 0x10 /* autoPRDI */ -#define IDTPHY_REGM_CONF_TCAIN 0x08 /* TCAInv */ -#define IDTPHY_REGM_CONF_RCAIN 0x04 /* RCAInv */ -#define IDTPHY_REGM_CONF_RXDIN 0x02 /* RXDInv */ -#define IDTPHY_REGM_CONF_RESV 0x81 -#define IDTPHY_REGX_CONF \ - "\020\07autoFEBE\6autoLRDI\5autoPRDI\4TCAInv\3RCAInv\2RXDInv" - -#define IDTPHY_REGO_INT 0x02 -#define IDTPHY_REGN_INT "Interrupt" -#define IDTPHY_REGM_INT_TXOOLI 0x80 /* txOOLInt */ -#define IDTPHY_REGM_INT_RXLOCI 0x40 /* rxLOCInt */ -#define IDTPHY_REGM_INT_RXOOLI 0x20 /* rxOOLInt */ -#define IDTPHY_REGM_INT_TXCDI 0x10 /* txCDi */ -#define IDTPHY_REGM_INT_RXCDI 0x08 /* rxCDi */ -#define IDTPHY_REGM_INT_RXPOHI 0x04 /* rxPOHi */ -#define IDTPHY_REGM_INT_RXLOHI 0x02 /* rxLOHi */ -#define IDTPHY_REGM_INT_RXSOHI 0x01 /* rxSOHi */ -#define IDTPHY_REGX_INT \ - "\020\10txOOLInt\7rxLOCInt\6rxOOLInt\5txCDi\4rxCDi\3rxPOHi" \ - "\2rxLOHi\1rxSOHi" - -#define IDTPHY_REGO_MCM 0x04 -#define IDTPHY_REGN_MCM "Master Clock Monitor" -#define IDTPHY_REGM_MCM_RRCLK 0x08 /* rrclkReg */ -#define IDTPHY_REGM_MCM_TRCLK 0x04 /* trclkReg */ -#define IDTPHY_REGM_MCM_RCLK 0x02 /* rclkReg */ -#define IDTPHY_REGM_MCM_TCLK 0x01 /* tclkReg */ -#define IDTPHY_REGM_MCM_RESV 0xf0 -#define IDTPHY_REGX_MCM \ - "\020\4rrclkReg\3trclkReg\2rclkReg\1tclkReg" - -#define IDTPHY_REGO_MCTL 0x05 -#define IDTPHY_REGN_MCTL "Master Control" -#define IDTPHY_REGM_MCTL_LOCI 0x80 /* rxLOCIEn */ -#define IDTPHY_REGM_MCTL_LOC 0x40 /* LOC */ -#define IDTPHY_REGM_MCTL_FIXP 0x20 /* txFixptr */ -#define IDTPHY_REGM_MCTL_LLOOP 0x04 /* txLLoop */ -#define IDTPHY_REGM_MCTL_DLOOP 0x02 /* rxDLoop */ -#define IDTPHY_REGM_MCTL_TLOOP 0x01 /* rxLoopT */ -#define IDTPHY_REGM_MCTL_RESV 0x18 -#define IDTPHY_REGX_MCTL \ - "\020\10rxLOCIEn\7LOC\6txFixptr\3txLLoop\2rxDLoop\1rxLoopT" - -#define IDTPHY_REGO_TXC 0x06 -#define IDTPHY_REGN_TXC "Transmit Clock Synthesis C/S" -#define IDTPHY_REGM_TXC_TXOOL 0x08 /* txOOL */ -#define IDTPHY_REGM_TXC_TXOOLI 0x02 /* txOOLIEn */ -#define IDTPHY_REGM_TXC_TXREF 0x01 /* txrefSel */ -#define IDTPHY_REGM_TXC_RESV 0xf4 -#define IDTPHY_REGX_TXC \ - "\020\4txOOL\2txOOLIEn\1txrefSel" - -#define IDTPHY_REGO_RXC 0x07 -#define IDTPHY_REGN_RXC "Receive Clock/Data Recovery C/S" -#define IDTPHY_REGM_RXC_RXOOL 0x08 /* rxOOL */ -#define IDTPHY_REGM_RXC_RXOOLI 0x02 /* rxOOLIEn */ -#define IDTPHY_REGM_RXC_RXREF 0x01 /* rxrefSel */ -#define IDTPHY_REGM_RXC_RESV 0xf4 -#define IDTPHY_REGX_RXC \ - "\020\4rxOOL\2rxOOLIEn\1rxrefSel" - -#define IDTPHY_REGO_RSOC 0x10 -#define IDTPHY_REGN_RSOC "Receive Overhead Control" -#define IDTPHY_REGM_RSOC_DSCR 0x40 /* scrDis */ -#define IDTPHY_REGM_RSOC_FOOF 0x20 /* frcOOF */ -#define IDTPHY_REGM_RSOC_B1IE 0x08 /* B1ErrIEn */ -#define IDTPHY_REGM_RSOC_LOSI 0x04 /* LOSIEn */ -#define IDTPHY_REGM_RSOC_LOFI 0x02 /* LOFIEn */ -#define IDTPHY_REGM_RSOC_OOFI 0x01 /* OOFIEn */ -#define IDTPHY_REGM_RSOC_RESV 0x90 -#define IDTPHY_REGX_RSOC \ - "\020\7scrDis\6frcOOF\4B1ErrIEn\3LOSIEn\2LOFIEn\1OOFIEn" - -#define IDTPHY_REGO_RSOS 0x11 -#define IDTPHY_REGN_RSOS "Receive Overhead Status" -#define IDTPHY_REGM_RSOS_C1INT 0x80 /* C1Int */ -#define IDTPHY_REGM_RSOS_B1INT 0x40 /* B1ErrInt */ -#define IDTPHY_REGM_RSOS_LOSI 0x20 /* LOSInt */ -#define IDTPHY_REGM_RSOS_LOFI 0x10 /* LOFInt */ -#define IDTPHY_REGM_RSOS_OOFI 0x08 /* OOFInt */ -#define IDTPHY_REGM_RSOS_LOS 0x04 /* LOS */ -#define IDTPHY_REGM_RSOS_LOF 0x02 /* LOF */ -#define IDTPHY_REGM_RSOS_OOF 0x01 /* OOF */ -#define IDTPHY_REGX_RSOS \ - "\020\10C1Int\7B1ErrInt\6LOSInt\5LOFInt\4OOFint\3LOS\2LOF\1OOF" - -#define IDTPHY_REGO_BIPC 0x12 /* + 0x13 LE */ -#define IDTPHY_REGN_BIPC "Receive Section BIP Errors" - -#define IDTPHY_REGO_TSOC 0x14 -#define IDTPHY_REGN_TSOC "Transmit Overhead Control" -#define IDTPHY_REGM_TSOC_DSCR 0x40 /* scrDis */ -#define IDTPHY_REGM_TSOC_LAISI 0x01 /* LAISIns */ -#define IDTPHY_REGM_TSOC_RESV 0xbe -#define IDTPHY_REGX_TSOC \ - "\020\7scrDis\1LAISIns" - -#define IDTPHY_REGO_TSOC2 0x15 -#define IDTPHY_REGN_TSOC2 "Transmit Overhead Control 2" -#define IDTPHY_REGM_TSOC2_LOSI 0x04 /* LOSIns */ -#define IDTPHY_REGM_TSOC2_B1INV 0x02 /* B1Inv */ -#define IDTPHY_REGM_TSOC2_IFE 0x01 /* frErrIns */ -#define IDTPHY_REGM_TSOC2_RESV 0xf8 -#define IDTPHY_REGX_TSOC2 \ - "\020\3LOSIns\2B1Inv\1frErrIns" - -#define IDTPHY_REGO_RLOS 0x18 -#define IDTPHY_REGN_RLOS "Receive Line Overhead Status" -#define IDTPHY_REGM_RLOS_B2W 0x80 /* B2Word */ -#define IDTPHY_REGM_RLOS_LAIS 0x02 /* LAIS */ -#define IDTPHY_REGM_RLOS_LRDI 0x01 /* LRDI */ -#define IDTPHY_REGM_RLOS_RESV 0x7c -#define IDTPHY_REGX_RLOS \ - "\020\10B2Word\2LAIS\1LRDI" - -#define IDTPHY_REGO_RLOI 0x19 -#define IDTPHY_REGN_RLOI "Receive Line Overhead Interrupt" -#define IDTPHY_REGM_RLOI_LFEBEE 0x80 /* LFEBEIEn */ -#define IDTPHY_REGM_RLOI_B2EE 0x40 /* B2ErrIEn */ -#define IDTPHY_REGM_RLOI_LAISE 0x20 /* LAISIEn */ -#define IDTPHY_REGM_RLOI_LRDIE 0x10 /* LRDIIEn */ -#define IDTPHY_REGM_RLOI_LFEBEI 0x08 /* LFEBEInt */ -#define IDTPHY_REGM_RLOI_B2EI 0x04 /* B2ErrInt */ -#define IDTPHY_REGM_RLOI_LAISI 0x02 /* LAISInt */ -#define IDTPHY_REGM_RLOI_LRDII 0x01 /* LRDIInt */ -#define IDTPHY_REGX_RLOI \ - "\020\10LFEBEIEn\7B2ErrIEn\6LAISIEn\5LRDIIEn\4LFEBEInt\3B2ErrInt" \ - "\2LAISInt\1LRDIInt" - -#define IDTPHY_REGO_B2EC 0x1a /* + 0x1b, 0x1c, 20bit LE */ -#define IDTPHY_REGN_B2EC "B2 Errors" - -#define IDTPHY_REGO_FEBEC 0x1d /* + 0x1e, 0x1f, 20bit LE */ -#define IDTPHY_REGN_FEBEC "Line FEBE Errors" - -#define IDTPHY_REGO_TLOS 0x20 -#define IDTPHY_REGN_TLOS "Transmit Line Overhead Status" -#define IDTPHY_REGM_TLOS_LRDI 0x01 /* LRDI */ -#define IDTPHY_REGM_TLOS_RESV 0xfe -#define IDTPHY_REGX_TLOS \ - "\020\1LRDI" - -#define IDTPHY_REGO_TLOC 0x21 -#define IDTPHY_REGN_TLOC "Transmit Line Overhead Control" -#define IDTPHY_REGM_TLOC_B2INV 0x01 /* B2Inv */ -#define IDTPHY_REGM_TLOC_RESV 0xfe -#define IDTPHY_REGX_TLOC \ - "\020\1B2Inv" - -#define IDTPHY_REGO_TK1 0x24 -#define IDTPHY_REGN_TK1 "Transmit K1" - -#define IDTPHY_REGO_TK2 0x25 -#define IDTPHY_REGN_TK2 "Transmit K2" - -#define IDTPHY_REGO_RK1 0x26 -#define IDTPHY_REGN_RK1 "Receive K1" - -#define IDTPHY_REGO_RK2 0x27 -#define IDTPHY_REGN_RK2 "Receive K2" - -#define IDTPHY_REGO_RPOS 0x30 -#define IDTPHY_REGN_RPOS "Receive Path Overhead Status" -#define IDTPHY_REGM_RPOS_LOP 0x20 /* LOP */ -#define IDTPHY_REGM_RPOS_PAIS 0x08 /* PAIS */ -#define IDTPHY_REGM_RPOS_PRDI 0x04 /* PRDI */ -#define IDTPHY_REGM_RPOS_RESV 0xd3 -#define IDTPHY_REGX_RPOS \ - "\020\6LOP\4PAIS\3PRDI" - -#define IDTPHY_REGO_RPOI 0x31 -#define IDTPHY_REGN_RPOI "Receive Path Overhead Interrupt" -#define IDTPHY_REGM_RPOI_C2I 0x80 /* C2Int */ -#define IDTPHY_REGM_RPOI_LOPI 0x20 /* LOPInt */ -#define IDTPHY_REGM_RPOI_PAISI 0x08 /* PAISInt */ -#define IDTPHY_REGM_RPOI_PRDII 0x04 /* PRDIInt */ -#define IDTPHY_REGM_RPOI_B3EI 0x02 /* B3ErrInt */ -#define IDTPHY_REGM_RPOI_PFEBEI 0x01 /* PFEBEInt */ -#define IDTPHY_REGM_RPOI_RESV 0x50 -#define IDTPHY_REGX_RPOI \ - "\020\10C2Int\6LOPInt\4PAISInt\3PRDIInt\2B3ErrInt\1PFEBEInt" - -#define IDTPHY_REGO_RPIE 0x33 -#define IDTPHY_REGN_RPIE "Receive Path Interrupt Enable" -#define IDTPHY_REGM_RPIE_C2E 0x80 /* C2IEn */ -#define IDTPHY_REGM_RPIE_LOPE 0x20 /* LOPIEn */ -#define IDTPHY_REGM_RPIE_PAISE 0x08 /* PAISIEn */ -#define IDTPHY_REGM_RPIE_PRDIE 0x04 /* PRDIIEn */ -#define IDTPHY_REGM_RPIE_B3EE 0x02 /* B3ErrIEn */ -#define IDTPHY_REGM_RPIE_PFEBEE 0x01 /* PFEBEIEn */ -#define IDTPHY_REGM_RPIE_RESV 0x50 -#define IDTPHY_REGX_RPIE \ - "\020\10CSIEn\6LOPIEn\4PAISIEn\3PRDIIEn\2B3ErrIEn\1PFEBEIEn" - -#define IDTPHY_REGO_RC2 0x37 -#define IDTPHY_REGN_RC2 "Receive C2" - -#define IDTPHY_REGO_B3EC 0x38 /* + 0x39, LE, 16bit */ -#define IDTPHY_REGN_B3EC "B3 Errors" - -#define IDTPHY_REGO_PFEBEC 0x3a /* + 0x3b, LE, 16bit */ -#define IDTPHY_REGN_PFEBEC "Path FEBE Errors" - -#define IDTPHY_REGO_RPEC 0x3d -#define IDTPHY_REGN_RPEC "Receive Path BIP Error Control" -#define IDTPHY_REGM_RPEC_B3C 0x20 /* blkBIP */ -#define IDTPHY_REGM_RPEC_RESV 0xdf -#define IDTPHY_REGX_RPEC \ - "\020\6blkBIP" - -#define IDTPHY_REGO_TPOC 0x40 -#define IDTPHY_REGN_TPOC "Transmit Path Control" -#define IDTPHY_REGM_TPOC_B3INV 0x02 /* B3Inv */ -#define IDTPHY_REGM_TPOC_PAISI 0x01 /* PAISIns */ -#define IDTPHY_REGM_TPOC_RESC 0xfc -#define IDTPHY_REGX_TPOC \ - "\020\2B3Inv\1PAISIns" - -#define IDTPHY_REGO_TPTC 0x41 -#define IDTPHY_REGN_TPTC "Transmit Pointer Control" -#define IDTPHY_REGM_TPTC_FPTR 0x40 /* frcPtr */ -#define IDTPHY_REGM_TPTC_STUFF 0x20 /* stuffCtl */ -#define IDTPHY_REGM_TPTC_PTR 0x10 /* Ptr */ -#define IDTPHY_REGM_TPTC_NDF 0x08 /* NDF */ -#define IDTPHY_REGM_TPTC_DECP 0x04 /* decPtr */ -#define IDTPHY_REGM_TPTC_INCP 0x02 /* incPtr */ -#define IDTPHY_REGM_TPTC_RESV 0x81 -#define IDTPHY_REGX_TPTC \ - "\020\7frcPtr\6stuffCtl\5Ptr\4NDF\3decPtr\2incPtr" - -#define IDTPHY_REGO_PTRL 0x45 -#define IDTPHY_REGN_PTRL "Transmit Pointer LSB" -#define IDTPHY_REGX_PTRL \ - "\020\12\xff\20arbPtr" - -#define IDTPHY_REGO_PTRM 0x46 -#define IDTPHY_REGN_PTRM "Transmit Pointer MSB" -#define IDTPHY_REGM_PTRM_NDF 0xf0 /* NDFVal */ -#define IDTPHY_REGS_PTRM_NDF 4 -#define IDTPHY_REGM_PTRM_SS 0x0c /* ssBit */ -#define IDTPHY_REGM_PTRM_SONET 0x00 -#define IDTPHY_REGM_PTRM_SDH 0x08 -#define IDTPHY_REGM_PTRM_PTR 0x03 -#define IDTPHY_REGX_PTRM \ - "\020\12\xf0\20NDFVal\12\xc\20ssBit\12\x3\20arbPtr" - -#define IDTPHY_REGO_TC2 0x48 -#define IDTPHY_REGN_TC2 "Transmit C2" - -#define IDTPHY_REGO_TPOC2 0x49 -#define IDTPHY_REGN_TPOC2 "Transmit Path Control 2" -#define IDTPHY_REGM_TPOC2_FEBE 0xf0 /* PFEBEIns */ -#define IDTPHY_REGS_TPOC2_FEBE 4 -#define IDTPHY_REGM_TPOC2_PRDII 0x08 /* PRDIIns */ -#define IDTPHY_REGM_TPOC2_G1 0x07 /* G1Ins */ -#define IDTPHY_REGX_TPOC2 \ - "\020\12\xf0\20PFEBEIns\4PRDIIns\12\x7\20G1Ins" - -#define IDTPHY_REGO_RCC 0x50 -#define IDTPHY_REGN_RCC "Receive Cell Control" -#define IDTPHY_REGM_RCC_OCD 0x80 /* OCD */ -#define IDTPHY_REGM_RCC_PARTY 0x40 /* parity */ -#define IDTPHY_REGM_RCC_PASS 0x20 /* pass */ -#define IDTPHY_REGM_RCC_DCOR 0x10 /* corDis */ -#define IDTPHY_REGM_RCC_DHEC 0x08 /* HECdis */ -#define IDTPHY_REGM_RCC_ADD 0x04 /* csetAdd */ -#define IDTPHY_REGM_RCC_DSCR 0x02 /* scrDis */ -#define IDTPHY_REGM_RCC_RFIFO 0x01 /* rxFIFOrst */ -#define IDTPHY_REGX_RCC \ - "\020\10OCD\7parity\6pass\5corDis\4HECdis\3csetAdd" \ - "\2scrDis\1rxFIFOrst" - -#define IDTPHY_REGO_RCI 0x51 -#define IDTPHY_REGN_RCI "Receive Cell Interrupt" -#define IDTPHY_REGM_RCI_OCDE 0x80 /* OCDIEn */ -#define IDTPHY_REGM_RCI_HECE 0x40 /* HECIEn */ -#define IDTPHY_REGM_RCI_OVFE 0x20 /* ovfIEn */ -#define IDTPHY_REGM_RCI_OCDI 0x10 /* OCDInt */ -#define IDTPHY_REGM_RCI_CORI 0x08 /* corInt */ -#define IDTPHY_REGM_RCI_UCORI 0x04 /* uncorInt */ -#define IDTPHY_REGM_RCI_OVFI 0x02 /* ovfInt */ -#define IDTPHY_REGM_RCI_RESV 0x01 -#define IDTPHY_REGX_RCI \ - "\020\10OCDIEn\7HECIEn\6ovfIEn\5OCDInt\4corInt\3uncorInt\2ovfInt" - -#define IDTPHY_REGO_CMH 0x52 -#define IDTPHY_REGN_CMH "Receive Cell Match Header" -#define IDTPHY_REGM_CMH_GFC 0xf0 /* GFC */ -#define IDTPHY_REGS_CMH_GFC 4 -#define IDTPHY_REGM_CMH_PTI 0x0e /* PTI */ -#define IDTPHY_REGS_CMH_PTI 1 -#define IDTPHY_REGM_CMH_CLP 0x01 /* CLP */ -#define IDTPHY_REGX_CMH \ - "\020\12\xf0\20GFC\12\xe\20PTI\12\x1\20CLP" - -#define IDTPHY_REGO_CMHM 0x53 -#define IDTPHY_REGN_CMHM "Receive Cell Match Header Mask" -#define IDTPHY_REGM_CMHM_GFC 0xf0 /* mskGFC */ -#define IDTPHY_REGS_CMHM_GFC 4 -#define IDTPHY_REGM_CMHM_PTI 0x0e /* mskPTI */ -#define IDTPHY_REGS_CMHM_PTI 1 -#define IDTPHY_REGM_CMHM_CLP 0x01 /* mskCLP */ -#define IDTPHY_REGX_CMHM \ - "\020\12\xf0\20mskGFC\12\xe\20mskPTI\12\x1\20mskCLP" - -#define IDTPHY_REGO_CEC 0x54 -#define IDTPHY_REGN_CEC "Correctable Errors" - -#define IDTPHY_REGO_UEC 0x55 -#define IDTPHY_REGN_UEC "Uncorrectable Errors" - -#define IDTPHY_REGO_RCCNT 0x56 /* +0x57, 0x58, LE, 19bit */ -#define IDTPHY_REGN_RCCNT "Receive Cells" - -#define IDTPHY_REGO_RCCF 0x59 -#define IDTPHY_REGN_RCCF "Receive Cell Configuration" -#define IDTPHY_REGM_RCCF_GFCE 0xf0 /* GFCen */ -#define IDTPHY_REGS_RCCF_GFCE 4 -#define IDTPHY_REGM_RCCF_FIXS 0x08 /* FixSen */ -#define IDTPHY_REGM_RCCF_RCAL 0x04 /* RCAlevel */ -#define IDTPHY_REGM_RCCF_HECF 0x03 /* HECftr */ -#define IDTPHY_REGX_RCCF \ - "\020\12\xf0\20GFCen\4FixSen\3RCAlevel\12\x3\20HECftr" - -#define IDTPHY_REGO_RXID 0x5a -#define IDTPHY_REGN_RXID "Receive ID Address" -#define IDTPHY_REGM_RXID_ID 0x03 /* IDAddr */ -#define IDTPHY_REGM_RXID_RESV 0xfc -#define IDTPHY_REGX_RXID \ - "\020\12\x3\20IDAddr" - -#define IDTPHY_REGO_TCC 0x60 -#define IDTPHY_REGN_TCC "Transmit Cell Control" -#define IDTPHY_REGM_TCC_FIFOE 0x80 /* fovrIEn */ -#define IDTPHY_REGM_TCC_SOCI 0x40 /* socInt */ -#define IDTPHY_REGM_TCC_FIFOI 0x20 /* fovrInt */ -#define IDTPHY_REGM_TCC_HECINV 0x10 /* HECInv */ -#define IDTPHY_REGM_TCC_HECDIS 0x08 /* HECDis */ -#define IDTPHY_REGM_TCC_ADD 0x04 /* csetAdd */ -#define IDTPHY_REGM_TCC_DSCR 0x02 /* scrDis */ -#define IDTPHY_REGM_TCC_FIFOR 0x01 /* txFIFOrst */ -#define IDTPHY_REGX_TCC \ - "\020\10fovrIEn\7socInt\6fovrInt\5HECInv\4HECDis\3csetAdd" \ - "\2scrDis\1txFIFOrst" - -#define IDTPHY_REGO_TCHP 0x61 -#define IDTPHY_REGN_TCHP "Transmit Idle Cell Header" -#define IDTPHY_REGM_TCHP_GFC 0xf0 /* GFCtx */ -#define IDTPHY_REGS_TCHP_GFC 4 -#define IDTPHY_REGM_TCHP_PTI 0x0e /* PTItx */ -#define IDTPHY_REGS_TCHP_PTI 1 -#define IDTPHY_REGM_TCHP_CLP 0x01 /* CLPtx */ -#define IDTPHY_REGX_TCHP \ - "\020\12\xf0\20GFCtx\12\xe\20PTItx\12\x1\20CLPtx" - -#define IDTPHY_REGO_TPLD 0x62 -#define IDTPHY_REGN_TPLD "Transmit Idle Cell Payload" - -#define IDTPHY_REGO_TCC2 0x63 -#define IDTPHY_REGN_TCC2 "Transmit Cell Configuration 2" -#define IDTPHY_REGM_TCC2_PARITY 0x80 /* parity */ -#define IDTPHY_REGM_TCC2_PARE 0x40 /* parIEn */ -#define IDTPHY_REGM_TCC2_PARI 0x10 /* parInt */ -#define IDTPHY_REGM_TCC2_FIFO 0x0c /* FIFOdpth */ -#define IDTPHY_REGS_TCC2_FIFO 2 -#define IDTPHY_REGM_TCC2_TCAL 0x02 /* TCAlevel */ -#define IDTPHY_REGM_TCC2_RESV 0x01 -#define IDTPHY_REGX_TCC2 \ - "\020\10parity\7parIEn\5parInt\12\xc\20FIFOdpth\2TCAlevel" - -#define IDTPHY_REGO_TXCNT 0x64 /* +65,66 LE 19bit */ -#define IDTPHY_REGN_TXCNT "Transmit Cells" - -#define IDTPHY_REGO_TCC3 0x67 -#define IDTPHY_REGN_TCC3 "Transmit Cell Configuration 3" -#define IDTPHY_REGM_TCC3_GFCE 0xf0 /* txGFCen */ -#define IDTPHY_REGS_TCC3_GFCE 4 -#define IDTPHY_REGM_TCC3_FIXE 0x08 /* txFixSen */ -#define IDTPHY_REGM_TCC3_H4ID 0x04 /* H4InsDis */ -#define IDTPHY_REGM_TCC3_FIXB 0x03 /* fixByte */ -#define IDTPHY_REGM_TCC3_FIX00 0x00 /* 0x00 */ -#define IDTPHY_REGM_TCC3_FIX55 0x01 /* 0x55 */ -#define IDTPHY_REGM_TCC3_FIXAA 0x02 /* 0xAA */ -#define IDTPHY_REGM_TCC3_FIXFF 0x03 /* 0xFF */ -#define IDTPHY_REGX_TCC3 \ - "\020\12\xf0\20txGFCen\4txFixSen\3H4InsDis" \ - "\11\x3\x0FIX00\11\x3\x1FIX55\11\x3\x2FIXAA\11\x3\x3FIXFF" - -#define IDTPHY_REGO_TXID 0x68 -#define IDTPHY_REGN_TXID "Transmit ID Address" -#define IDTPHY_REGM_TXID_ID 0x03 /* txIDAddr */ -#define IDTPHY_REGM_TXID_RESV 0xfc -#define IDTPHY_REGX_TXID \ - "\020\12\x3\20txIDAddr" - -#define IDTPHY_REGO_RBER 0x70 -#define IDTPHY_REGN_RBER "Receive BER S/C" -#define IDTPHY_REGM_RBER_FAILE 0x08 /* FailIEn */ -#define IDTPHY_REGM_RBER_WARNE 0x04 /* WarnIEn */ -#define IDTPHY_REGM_RBER_FAIL 0x02 /* BERfail */ -#define IDTPHY_REGM_RBER_WARN 0x01 /* BERwarn */ -#define IDTPHY_REGM_RBER_RESV 0xf0 -#define IDTPHY_REGX_RBER \ - "\020\4FailIEn\3WarnIEn\2BERfail\1BERwarn" - -#define IDTPHY_REGO_BFTH 0x71 -#define IDTPHY_REGN_BFTH "Receive BER Fail Threshold" - -#define IDTPHY_REGO_BFWIN 0x72 -#define IDTPHY_REGN_BFWIN "Receive BER Fail Window" - -#define IDTPHY_REGO_BFDEN 0x73 /* +74, 16bit LE */ -#define IDTPHY_REGN_BFDEN "Receive BER Fail Denominator" - -#define IDTPHY_REGO_BWTH 0x75 -#define IDTPHY_REGN_BWTH "Receive BER Warn Threshold" - -#define IDTPHY_REGO_BWWIN 0x76 -#define IDTPHY_REGN_BWWIN "Receive BER Warn Window" - -#define IDTPHY_REGO_BWDEN 0x77 /* +78, 16bit LE */ -#define IDTPHY_REGN_BWDEN "Receive BER Warn Denomiator" - -#define IDTPHY_REGO_OPEC 0x7f -#define IDTPHY_REGN_OPEC "Output PECL Control" -#define IDTPHY_REGM_OPEC_TXC 0x04 /* pcctl_tc */ -#define IDTPHY_REGM_OPEC_TXD 0x02 /* pcctl_td */ -#define IDTPHY_REGM_OPEC_RXDO 0x01 /* pcctl_r */ -#define IDTPHY_REGM_OPEC_RESV 0xf8 -#define IDTPHY_REGX_OPEC \ - "\020\3pctl_tc\2pcctl_td\1pcctl_r" - -#define IDTPHY_PRINT_77155 \ - { /* 00 */ \ - UTP_REGT_BITS, IDTPHY_REGO_MRID, \ - IDTPHY_REGN_MRID, IDTPHY_REGX_MRID }, \ - { /* 01 */ \ - UTP_REGT_BITS, IDTPHY_REGO_CONF, \ - IDTPHY_REGN_CONF, IDTPHY_REGX_CONF }, \ - { /* 02 */ \ - UTP_REGT_BITS, IDTPHY_REGO_INT, \ - IDTPHY_REGN_INT, IDTPHY_REGX_INT }, \ - /* 03 unused */ \ - { /* 04 */ \ - UTP_REGT_BITS, IDTPHY_REGO_MCM, \ - IDTPHY_REGN_MCM, IDTPHY_REGX_MCM }, \ - { /* 05 */ \ - UTP_REGT_BITS, IDTPHY_REGO_MCTL, \ - IDTPHY_REGN_MCTL, IDTPHY_REGX_MCTL }, \ - { /* 06 */ \ - UTP_REGT_BITS, IDTPHY_REGO_TXC, \ - IDTPHY_REGN_TXC, IDTPHY_REGX_TXC }, \ - { /* 07 */ \ - UTP_REGT_BITS, IDTPHY_REGO_RXC, \ - IDTPHY_REGN_RXC, IDTPHY_REGX_RXC }, \ - /* 08-0f unused */ \ - { /* 10 */ \ - UTP_REGT_BITS, IDTPHY_REGO_RSOC, \ - IDTPHY_REGN_RSOC, IDTPHY_REGX_RSOC }, \ - { /* 11 */ \ - UTP_REGT_BITS, IDTPHY_REGO_RSOS, \ - IDTPHY_REGN_RSOS, IDTPHY_REGX_RSOS }, \ - { /* 12, 13 */ \ - UTP_REGT_INT16, IDTPHY_REGO_BIPC, \ - IDTPHY_REGN_BIPC, NULL }, \ - { /* 14 */ \ - UTP_REGT_BITS, IDTPHY_REGO_TSOC, \ - IDTPHY_REGN_TSOC, IDTPHY_REGX_TSOC }, \ - { /* 15 */ \ - UTP_REGT_BITS, IDTPHY_REGO_TSOC2, \ - IDTPHY_REGN_TSOC2, IDTPHY_REGX_TSOC2 }, \ - /* 16, 17 unused */ \ - { /* 18 */ \ - UTP_REGT_BITS, IDTPHY_REGO_RLOS, \ - IDTPHY_REGN_RLOS, IDTPHY_REGX_RLOS }, \ - { /* 19 */ \ - UTP_REGT_BITS, IDTPHY_REGO_RLOI, \ - IDTPHY_REGN_RLOI, IDTPHY_REGX_RLOI }, \ - { /* 1a-1c */ \ - UTP_REGT_INT20, IDTPHY_REGO_B2EC, \ - IDTPHY_REGN_B2EC, NULL }, \ - { /* 1d-1f */ \ - UTP_REGT_INT20, IDTPHY_REGO_FEBEC, \ - IDTPHY_REGN_FEBEC, NULL }, \ - { /* 20 */ \ - UTP_REGT_BITS, IDTPHY_REGO_TLOS, \ - IDTPHY_REGN_TLOS, IDTPHY_REGX_TLOS }, \ - { /* 21 */ \ - UTP_REGT_BITS, IDTPHY_REGO_TLOC, \ - IDTPHY_REGN_TLOC, IDTPHY_REGX_TLOC }, \ - /* 22, 23 unused */ \ - { /* 24 */ \ - UTP_REGT_INT8, IDTPHY_REGO_TK1, \ - IDTPHY_REGN_TK1, NULL }, \ - { /* 25 */ \ - UTP_REGT_INT8, IDTPHY_REGO_TK2, \ - IDTPHY_REGN_TK2, NULL }, \ - { /* 26 */ \ - UTP_REGT_INT8, IDTPHY_REGO_RK1, \ - IDTPHY_REGN_RK1, NULL }, \ - { /* 27 */ \ - UTP_REGT_INT8, IDTPHY_REGO_RK2, \ - IDTPHY_REGN_RK2, NULL }, \ - /* 28-2f unused */ \ - { /* 30 */ \ - UTP_REGT_BITS, IDTPHY_REGO_RPOS, \ - IDTPHY_REGN_RPOS, IDTPHY_REGX_RPOS }, \ - { /* 31 */ \ - UTP_REGT_BITS, IDTPHY_REGO_RPOI, \ - IDTPHY_REGN_RPOI, IDTPHY_REGX_RPOI }, \ - /* 32 unused */ \ - { /* 33 */ \ - UTP_REGT_BITS, IDTPHY_REGO_RPIE, \ - IDTPHY_REGN_RPIE, IDTPHY_REGX_RPIE }, \ - /* 34-36 unused */ \ - { /* 37 */ \ - UTP_REGT_INT8, IDTPHY_REGO_RC2, \ - IDTPHY_REGN_RC2, NULL }, \ - { /* 38-39 */ \ - UTP_REGT_INT16, IDTPHY_REGO_B3EC, \ - IDTPHY_REGN_B3EC, NULL }, \ - { /* 3a-3b */ \ - UTP_REGT_INT16, IDTPHY_REGO_PFEBEC, \ - IDTPHY_REGN_PFEBEC, NULL }, \ - /* 3c unused */ \ - { /* 3d */ \ - UTP_REGT_BITS, IDTPHY_REGO_RPEC, \ - IDTPHY_REGN_RPEC, IDTPHY_REGX_RPEC }, \ - /* 3e, 3f unused */ \ - { /* 40 */ \ - UTP_REGT_BITS, IDTPHY_REGO_TPOC, \ - IDTPHY_REGN_TPOC, IDTPHY_REGX_TPOC }, \ - { /* 41 */ \ - UTP_REGT_BITS, IDTPHY_REGO_TPTC, \ - IDTPHY_REGN_TPTC, IDTPHY_REGX_TPTC }, \ - /* 42-44 unused */ \ - { /* 45 */ \ - UTP_REGT_BITS, IDTPHY_REGO_PTRL, \ - IDTPHY_REGN_PTRL, IDTPHY_REGX_PTRL }, \ - { /* 46 */ \ - UTP_REGT_BITS, IDTPHY_REGO_PTRM, \ - IDTPHY_REGN_PTRM, IDTPHY_REGX_PTRM }, \ - /* 47 unused */ \ - { /* 48 */ \ - UTP_REGT_INT8, IDTPHY_REGO_TC2, \ - IDTPHY_REGN_TC2, NULL }, \ - { /* 49 */ \ - UTP_REGT_BITS, IDTPHY_REGO_TPOC2, \ - IDTPHY_REGN_TPOC2, IDTPHY_REGX_TPOC2 }, \ - /* 4a-4f unused */ \ - { /* 50 */ \ - UTP_REGT_BITS, IDTPHY_REGO_RCC, \ - IDTPHY_REGN_RCC, IDTPHY_REGX_RCC }, \ - { /* 51 */ \ - UTP_REGT_BITS, IDTPHY_REGO_RCI, \ - IDTPHY_REGN_RCI, IDTPHY_REGX_RCI }, \ - { /* 52 */ \ - UTP_REGT_BITS, IDTPHY_REGO_CMH, \ - IDTPHY_REGN_CMH, IDTPHY_REGX_CMH }, \ - { /* 53 */ \ - UTP_REGT_BITS, IDTPHY_REGO_CMHM, \ - IDTPHY_REGN_CMHM, IDTPHY_REGX_CMHM }, \ - { /* 54 */ \ - UTP_REGT_INT8, IDTPHY_REGO_CEC, \ - IDTPHY_REGN_CEC, NULL }, \ - { /* 55 */ \ - UTP_REGT_INT8, IDTPHY_REGO_UEC, \ - IDTPHY_REGN_UEC, NULL }, \ - { /* 56-58 */ \ - UTP_REGT_INT19, IDTPHY_REGO_RCCNT, \ - IDTPHY_REGN_RCCNT, NULL }, \ - { /* 59 */ \ - UTP_REGT_BITS, IDTPHY_REGO_RCCF, \ - IDTPHY_REGN_RCCF, IDTPHY_REGX_RCCF }, \ - { /* 5a */ \ - UTP_REGT_BITS, IDTPHY_REGO_RXID, \ - IDTPHY_REGN_RXID, IDTPHY_REGX_RXID }, \ - /* 5b-5f unused */ \ - { /* 60 */ \ - UTP_REGT_BITS, IDTPHY_REGO_TCC, \ - IDTPHY_REGN_TCC, IDTPHY_REGX_TCC }, \ - { /* 61 */ \ - UTP_REGT_BITS, IDTPHY_REGO_TCHP, \ - IDTPHY_REGN_TCHP, IDTPHY_REGX_TCHP }, \ - { /* 62 */ \ - UTP_REGT_INT8, IDTPHY_REGO_TPLD, \ - IDTPHY_REGN_TPLD, NULL }, \ - { /* 63 */ \ - UTP_REGT_BITS, IDTPHY_REGO_TCC2, \ - IDTPHY_REGN_TCC2, IDTPHY_REGX_TCC2 }, \ - { /* 64-66 */ \ - UTP_REGT_INT19, IDTPHY_REGO_TXCNT, \ - IDTPHY_REGN_TXCNT, NULL }, \ - { /* 67 */ \ - UTP_REGT_BITS, IDTPHY_REGO_TCC3, \ - IDTPHY_REGN_TCC3, IDTPHY_REGX_TCC3 }, \ - { /* 68 */ \ - UTP_REGT_BITS, IDTPHY_REGO_TXID, \ - IDTPHY_REGN_TXID, IDTPHY_REGX_TXID }, \ - /* 69-6f unused */ \ - { /* 70 */ \ - UTP_REGT_BITS, IDTPHY_REGO_RBER, \ - IDTPHY_REGN_RBER, IDTPHY_REGX_RBER }, \ - { /* 71 */ \ - UTP_REGT_INT8, IDTPHY_REGO_BFTH, \ - IDTPHY_REGN_BFTH, NULL }, \ - { /* 72 */ \ - UTP_REGT_INT8, IDTPHY_REGO_BFWIN, \ - IDTPHY_REGN_BFWIN, NULL }, \ - { /* 73,74 */ \ - UTP_REGT_INT16, IDTPHY_REGO_BFDEN, \ - IDTPHY_REGN_BFDEN, NULL }, \ - { /* 75 */ \ - UTP_REGT_INT8, IDTPHY_REGO_BWTH, \ - IDTPHY_REGN_BWTH, NULL }, \ - { /* 76 */ \ - UTP_REGT_INT8, IDTPHY_REGO_BWWIN, \ - IDTPHY_REGN_BWWIN, NULL }, \ - { /* 77,78 */ \ - UTP_REGT_INT16, IDTPHY_REGO_BWDEN, \ - IDTPHY_REGN_BWDEN, NULL }, \ - /* 79-7e unused */ \ - { /* 7f */ \ - UTP_REGT_BITS, IDTPHY_REGO_OPEC, \ - IDTPHY_REGN_OPEC, IDTPHY_REGX_OPEC } - - -#endif /* _DEV_UTOPIA_IDTPHY_H */ diff --git a/sys/dev/utopia/suni.c b/sys/dev/utopia/suni.c deleted file mode 100644 index ffc49e8e84da..000000000000 --- a/sys/dev/utopia/suni.c +++ /dev/null @@ -1,545 +0,0 @@ -/*- - * Copyright (c) 2003 - * Fraunhofer Institute for Open Communication Systems (FhG Fokus). - * All rights reserved. - * - * Author: Hartmut Brandt <harti@freebsd.org> - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/unistd.h> -#include <sys/kernel.h> -#include <sys/kthread.h> -#include <sys/proc.h> -#include <sys/bus.h> -#include <sys/malloc.h> -#include <sys/module.h> -#include <sys/sysctl.h> -#include <sys/lock.h> -#include <sys/mutex.h> -#include <sys/socket.h> - -#include <net/if.h> -#include <net/if_var.h> -#include <net/if_media.h> -#include <net/if_atm.h> - -#include <dev/utopia/suni.h> -#include <dev/utopia/utopia.h> -#include <dev/utopia/utopia_priv.h> - -/* - * set SONET/SDH mode - */ -static int -suni_set_sdh(struct utopia *utp, int sdh) -{ - int err; - - if (sdh) - err = UTP_WRITEREG(utp, SUNI_REGO_TPOPAPTR + 1, - SUNI_REGM_TPOPAPTR_S, - SUNI_REGM_SDH << SUNI_REGS_TPOPAPTR_S); - else - err = UTP_WRITEREG(utp, SUNI_REGO_TPOPAPTR + 1, - SUNI_REGM_TPOPAPTR_S, - SUNI_REGM_SONET << SUNI_REGS_TPOPAPTR_S); - if (err != 0) - return (err); - - utp->state &= ~UTP_ST_SDH; - if (sdh) - utp->state |= UTP_ST_SDH; - - return (0); -} - -/* - * set idle/unassigned cells - */ -static int -suni_set_unass(struct utopia *utp, int unass) -{ - int err; - - if (unass) - err = UTP_WRITEREG(utp, SUNI_REGO_TACPIDLEH, - 0xff, (0 << SUNI_REGS_TACPIDLEH_CLP)); - else - err = UTP_WRITEREG(utp, SUNI_REGO_TACPIDLEH, - 0xff, (1 << SUNI_REGS_TACPIDLEH_CLP)); - if (err != 0) - return (err); - - utp->state &= ~UTP_ST_UNASS; - if (unass) - utp->state |= UTP_ST_UNASS; - - return (0); -} - -/* - * enable/disable scrambling - */ -static int -suni_set_noscramb(struct utopia *utp, int noscramb) -{ - int err; - - if (noscramb) { - err = UTP_WRITEREG(utp, SUNI_REGO_TACPCTRL, - SUNI_REGM_TACPCTRL_DSCR, SUNI_REGM_TACPCTRL_DSCR); - if (err) - return (err); - err = UTP_WRITEREG(utp, SUNI_REGO_RACPCTRL, - SUNI_REGM_RACPCTRL_DDSCR, SUNI_REGM_RACPCTRL_DDSCR); - if (err) - return (err); - utp->state |= UTP_ST_NOSCRAMB; - } else { - err = UTP_WRITEREG(utp, SUNI_REGO_TACPCTRL, - SUNI_REGM_TACPCTRL_DSCR, 0); - if (err) - return (err); - err = UTP_WRITEREG(utp, SUNI_REGO_RACPCTRL, - SUNI_REGM_RACPCTRL_DDSCR, 0); - if (err) - return (err); - utp->state &= ~UTP_ST_NOSCRAMB; - } - return (0); -} - -/* - * Get current carrier state - */ -static int -suni_update_carrier(struct utopia *utp) -{ - int err; - uint8_t reg; - u_int n = 1; - - if ((err = UTP_READREGS(utp, SUNI_REGO_RSOPSIS, ®, &n)) != 0) { - utp->carrier = UTP_CARR_UNKNOWN; - return (err); - } - utopia_check_carrier(utp, !(reg & SUNI_REGM_RSOPSIS_LOSV)); - return (0); -} - -/* - * Set the SUNI chip to reflect the current state in utopia. - * Assume, that the chip has been reset. - */ -static int -suni_set_chip(struct utopia *utp) -{ - int err = 0; - - /* set sonet/sdh */ - err |= utopia_set_sdh(utp, utp->state & UTP_ST_SDH); - - /* unassigned or idle cells */ - err |= utopia_set_unass(utp, utp->state & UTP_ST_UNASS); - err |= UTP_WRITEREG(utp, SUNI_REGO_TACPIDLEP, 0xff, 0x6a); - - /* set scrambling */ - err |= utopia_set_noscramb(utp, utp->state & UTP_ST_NOSCRAMB); - - /* loopback */ - err |= utopia_set_loopback(utp, utp->loopback); - - /* update carrier state */ - err |= utopia_update_carrier(utp); - - /* enable interrupts on LOS */ - err |= UTP_WRITEREG(utp, SUNI_REGO_RSOPCIE, - SUNI_REGM_RSOPCIE_LOSE, SUNI_REGM_RSOPCIE_LOSE); - - return (err ? EIO : 0); -} - -/* - * Reset the SUNI chip to reflect the current state of utopia. - */ -static int -suni_reset_default(struct utopia *utp) -{ - int err = 0; - - if (!(utp->flags & UTP_FL_NORESET)) { - err |= UTP_WRITEREG(utp, SUNI_REGO_MRESET, - SUNI_REGM_MRESET_RESET, SUNI_REGM_MRESET_RESET); - err |= UTP_WRITEREG(utp, SUNI_REGO_MRESET, - SUNI_REGM_MRESET_RESET, 0); - } - - /* disable test mode */ - err |= UTP_WRITEREG(utp, SUNI_REGO_MTEST, 0xff, 0x00); - - err |= suni_set_chip(utp); - - return (err ? EIO : 0); -} - -/* - * Set loopback mode for the Lite - */ -static int -suni_set_loopback_lite(struct utopia *utp, u_int mode) -{ - int err; - uint32_t val; - u_int nmode; - - val = 0; - nmode = mode; - if (mode & UTP_LOOP_TIME) { - nmode &= ~UTP_LOOP_TIME; - val |= SUNI_REGM_MCTRL_LOOPT; - } - if (mode & UTP_LOOP_DIAG) { - nmode &= ~UTP_LOOP_DIAG; - val |= SUNI_REGM_MCTRL_DLE; - } - if (mode & UTP_LOOP_LINE) { - nmode &= ~UTP_LOOP_LINE; - if (val & SUNI_REGM_MCTRL_DLE) - return (EINVAL); - val |= SUNI_REGM_MCTRL_LLE; - } - if (nmode != 0) - return (EINVAL); - - err = UTP_WRITEREG(utp, SUNI_REGO_MCTRL, - SUNI_REGM_MCTRL_LLE | SUNI_REGM_MCTRL_DLE | SUNI_REGM_MCTRL_LOOPT, - val); - if (err) - return (err); - utp->loopback = mode; - - return (0); -} - -/* - * Update statistics from a SUNI/LITE or SUNI/ULTRA - */ -static void -suni_lite_update_stats(struct utopia *utp) -{ - int err; - - /* write to the master if we can */ - if (!(utp->flags & UTP_FL_NORESET)) { - err = UTP_WRITEREG(utp, SUNI_REGO_MRESET, 0, 0); - } else { - err = UTP_WRITEREG(utp, SUNI_REGO_RSOP_BIP8, 0, 0); - err |= UTP_WRITEREG(utp, SUNI_REGO_RLOPBIP8_24, 0, 0); - err |= UTP_WRITEREG(utp, SUNI_REGO_RPOPBIP8, 0, 0); - err |= UTP_WRITEREG(utp, SUNI_REGO_RACPCHCS, 0, 0); - err |= UTP_WRITEREG(utp, SUNI_REGO_TACPCNT, 0, 0); - - } - if (err) { -#ifdef DIAGNOSTIC - printf("%s: register write error %s: %d\n", __func__, - utp->chip->name, err); -#endif - return; - } - - DELAY(8); - - utp->stats.rx_sbip += utopia_update(utp, - SUNI_REGO_RSOP_BIP8, 2, 0xffff); - utp->stats.rx_lbip += utopia_update(utp, - SUNI_REGO_RLOPBIP8_24, 3, 0xfffff); - utp->stats.rx_lfebe += utopia_update(utp, - SUNI_REGO_RLOPFEBE, 3, 0xfffff); - utp->stats.rx_pbip += utopia_update(utp, - SUNI_REGO_RPOPBIP8, 2, 0xffff); - utp->stats.rx_pfebe += utopia_update(utp, - SUNI_REGO_RPOPFEBE, 2, 0xffff); - utp->stats.rx_corr += utopia_update(utp, - SUNI_REGO_RACPCHCS, 1, 0xff); - utp->stats.rx_uncorr += utopia_update(utp, - SUNI_REGO_RACPUHCS, 1, 0xff); - utp->stats.rx_cells += utopia_update(utp, - SUNI_REGO_RACPCNT, 3, 0x7ffff); - utp->stats.tx_cells += utopia_update(utp, - SUNI_REGO_TACPCNT, 3, 0x7ffff); -} - -/* - * Handle interrupt on SUNI chip - */ -static void -suni_intr_default(struct utopia *utp) -{ - uint8_t regs[SUNI_REGO_MTEST]; - u_int n = SUNI_REGO_MTEST; - int err; - - /* Read all registers. This acks the interrupts */ - if ((err = UTP_READREGS(utp, SUNI_REGO_MRESET, regs, &n)) != 0) { - printf("SUNI read error %d\n", err); - return; - } - if (n <= SUNI_REGO_RSOPSIS) { - printf("%s: could not read RSOPSIS", __func__); - return; - } - /* check for LOSI (loss of signal) */ - if ((regs[SUNI_REGO_MISTATUS] & SUNI_REGM_MISTATUS_RSOPI) && - (regs[SUNI_REGO_RSOPSIS] & SUNI_REGM_RSOPSIS_LOSI)) - utopia_check_carrier(utp, !(regs[SUNI_REGO_RSOPSIS] - & SUNI_REGM_RSOPSIS_LOSV)); -} - -const struct utopia_chip utopia_chip_lite = { - UTP_TYPE_SUNI_LITE, - "Suni/Lite (PMC-5346)", - 256, - suni_reset_default, - suni_set_sdh, - suni_set_unass, - suni_set_noscramb, - suni_update_carrier, - suni_set_loopback_lite, - suni_intr_default, - suni_lite_update_stats, -}; - -/* - * Set loopback mode for the Ultra - */ -static int -suni_set_loopback_ultra(struct utopia *utp, u_int mode) -{ - int err; - uint32_t val; - u_int nmode; - - val = 0; - nmode = mode; - if (mode & UTP_LOOP_TIME) { - nmode &= ~UTP_LOOP_TIME; - val |= SUNI_REGM_MCTRL_LOOPT; - } - if (mode & UTP_LOOP_DIAG) { - nmode &= ~UTP_LOOP_DIAG; - if (val & SUNI_REGM_MCTRL_LOOPT) - return (EINVAL); - val |= SUNI_REGM_MCTRL_SDLE; - } - if (mode & UTP_LOOP_LINE) { - nmode &= ~UTP_LOOP_LINE; - if (val & (SUNI_REGM_MCTRL_LOOPT | SUNI_REGM_MCTRL_SDLE)) - return (EINVAL); - val |= SUNI_REGM_MCTRL_LLE; - } - if (mode & UTP_LOOP_PARAL) { - nmode &= ~UTP_LOOP_PARAL; - val |= SUNI_REGM_MCTRL_PDLE; - } - if (mode & UTP_LOOP_TWIST) { - nmode &= ~UTP_LOOP_TWIST; - val |= SUNI_REGM_MCTRL_TPLE; - } - if (nmode != 0) - return (EINVAL); - - err = UTP_WRITEREG(utp, SUNI_REGO_MCTRL, - SUNI_REGM_MCTRL_LLE | SUNI_REGM_MCTRL_SDLE | SUNI_REGM_MCTRL_LOOPT | - SUNI_REGM_MCTRL_PDLE | SUNI_REGM_MCTRL_TPLE, val); - if (err) - return (err); - utp->loopback = mode; - - return (0); -} - -const struct utopia_chip utopia_chip_ultra = { - UTP_TYPE_SUNI_ULTRA, - "Suni/Ultra (PMC-5350)", - 256, - suni_reset_default, - suni_set_sdh, - suni_set_unass, - suni_set_noscramb, - suni_update_carrier, - suni_set_loopback_ultra, - suni_intr_default, - suni_lite_update_stats, -}; - -/* - * Set loopback mode for the 622 - */ -static int -suni_set_loopback_622(struct utopia *utp, u_int mode) -{ - int err; - uint32_t val; - uint8_t config; - int smode; - u_int nmode; - u_int n = 1; - - val = 0; - nmode = mode; - if (mode & UTP_LOOP_PATH) { - nmode &= ~UTP_LOOP_PATH; - val |= SUNI_REGM_MCTRLM_DPLE; - } - - err = UTP_READREGS(utp, SUNI_REGO_MCONFIG, &config, &n); - if (err != 0) - return (err); - smode = ((config & SUNI_REGM_MCONFIG_TMODE_622) == - SUNI_REGM_MCONFIG_TMODE_STS1_BIT && - (config & SUNI_REGM_MCONFIG_RMODE_622) == - SUNI_REGM_MCONFIG_RMODE_STS1_BIT); - - if (mode & UTP_LOOP_TIME) { - if (!smode) - return (EINVAL); - nmode &= ~UTP_LOOP_TIME; - val |= SUNI_REGM_MCTRLM_LOOPT; - } - if (mode & UTP_LOOP_DIAG) { - nmode &= ~UTP_LOOP_DIAG; - if (val & SUNI_REGM_MCTRLM_LOOPT) - return (EINVAL); - val |= SUNI_REGM_MCTRLM_DLE; - } - if (mode & UTP_LOOP_LINE) { - nmode &= ~UTP_LOOP_LINE; - if (val & (SUNI_REGM_MCTRLM_LOOPT | SUNI_REGM_MCTRLM_DLE)) - return (EINVAL); - val |= SUNI_REGM_MCTRLM_LLE; - } - if (nmode != 0) - return (EINVAL); - - err = UTP_WRITEREG(utp, SUNI_REGO_MCTRLM, - SUNI_REGM_MCTRLM_LLE | SUNI_REGM_MCTRLM_DLE | - SUNI_REGM_MCTRLM_DPLE | SUNI_REGM_MCTRL_LOOPT, val); - if (err) - return (err); - utp->loopback = mode; - - return (0); -} - -/* - * Reset the SUNI chip to reflect the current state of utopia. - */ -static int -suni_reset_622(struct utopia *utp) -{ - int err = 0; - - if (!(utp->flags & UTP_FL_NORESET)) { - err |= UTP_WRITEREG(utp, SUNI_REGO_MRESET, - SUNI_REGM_MRESET_RESET, SUNI_REGM_MRESET_RESET); - err |= UTP_WRITEREG(utp, SUNI_REGO_MRESET, - SUNI_REGM_MRESET_RESET, 0); - } - - /* disable test mode */ - err |= UTP_WRITEREG(utp, SUNI_REGO_MTEST, 0xff, - SUNI_REGM_MTEST_DS27_53_622); - - err |= suni_set_chip(utp); - - return (err ? EIO : 0); -} - -/* - * Update statistics from a SUNI/622 - */ -static void -suni_622_update_stats(struct utopia *utp) -{ - int err; - - /* write to the master if we can */ - if (!(utp->flags & UTP_FL_NORESET)) { - err = UTP_WRITEREG(utp, SUNI_REGO_MRESET, 0, 0); - } else { - err = UTP_WRITEREG(utp, SUNI_REGO_RSOP_BIP8, 0, 0); - err |= UTP_WRITEREG(utp, SUNI_REGO_RLOPBIP8_24, 0, 0); - err |= UTP_WRITEREG(utp, SUNI_REGO_RPOPBIP8, 0, 0); - err |= UTP_WRITEREG(utp, SUNI_REGO_RACPCHCS, 0, 0); - err |= UTP_WRITEREG(utp, SUNI_REGO_TACPCNT, 0, 0); - } - if (err) { -#ifdef DIAGNOSTIC - printf("%s: register write error %s: %d\n", __func__, - utp->chip->name, err); -#endif - return; - } - - DELAY(8); - - utp->stats.rx_sbip += utopia_update(utp, - SUNI_REGO_RSOP_BIP8, 2, 0xffff); - utp->stats.rx_lbip += utopia_update(utp, - SUNI_REGO_RLOPBIP8_24, 3, 0xfffff); - utp->stats.rx_lfebe += utopia_update(utp, - SUNI_REGO_RLOPFEBE, 3, 0xfffff); - utp->stats.rx_pbip += utopia_update(utp, - SUNI_REGO_RPOPBIP8, 2, 0xffff); - utp->stats.rx_pfebe += utopia_update(utp, - SUNI_REGO_RPOPFEBE, 2, 0xffff); - utp->stats.rx_corr += utopia_update(utp, - SUNI_REGO_RACPCHCS_622, 2, 0xfff); - utp->stats.rx_uncorr += utopia_update(utp, - SUNI_REGO_RACPUHCS_622, 2, 0xfff); - utp->stats.rx_cells += utopia_update(utp, - SUNI_REGO_RACPCNT_622, 3, 0x1fffff); - utp->stats.tx_cells += utopia_update(utp, - SUNI_REGO_TACPCNT, 3, 0x1fffff); -} - -const struct utopia_chip utopia_chip_622 = { - UTP_TYPE_SUNI_622, - "Suni/622 (PMC-5355)", - 256, - suni_reset_622, - suni_set_sdh, - suni_set_unass, - suni_set_noscramb, - suni_update_carrier, - suni_set_loopback_622, - suni_intr_default, - suni_622_update_stats, -}; diff --git a/sys/dev/utopia/suni.h b/sys/dev/utopia/suni.h deleted file mode 100644 index fd1be7e13e39..000000000000 --- a/sys/dev/utopia/suni.h +++ /dev/null @@ -1,1515 +0,0 @@ -/*- - * Copyright (c) 2003 - * Fraunhofer Institute for Open Communication Systems (FhG Fokus). - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * Author: Hartmut Brandt <harti@freebsd.org> - * - * $FreeBSD$ - * - * Register definitions for the following chips: - * PMC-Sierra PMC-5346 (S/UNI-LITE) - * PMC-Sierra PMC-5350 (S/UNI-ULTRA) - * PMC-Sierra PMC-5355 (S/UNI-622) - * - * All definitions ending with _ULTRA are for the ULTRA chip only, all - * definitions ending with _LITE are for the LITE chip only. Some registers - * are only in the ULTRA and the definitions are not suffixed. All other - * definitions are for all chips. - */ -#ifndef _DEV_UTOPIA_SUNI_H -#define _DEV_UTOPIA_SUNI_H - -/* lite, ultra, 622 */ -#define SUNI_REGN_MRESET "Master Reset and Identity/Load Meters" -#define SUNI_REGO_MRESET 0x00 -#define SUNI_REGM_MRESET_RESET 0x80 -#define SUNI_REGM_MRESET_TYPE 0x70 -#define SUNI_REGM_MRESET_TYPE_622 0x10 -#define SUNI_REGM_MRESET_TYPE_LITE 0x30 -#define SUNI_REGM_MRESET_TYPE_ULTRA 0x70 -#define SUNI_REGM_MRESET_TIP_ULTRA 0x08 -#define SUNI_REGM_MRESET_ID_ULTRA 0x07 -#define SUNI_REGM_MRESET_ID_LITE 0x0f -#define SUNI_REGM_MRESET_ID_622 0x0f -#define SUNI_REGX_MRESET_ULTRA "\020\10RESET\12\x70\12TYPE\4TIP\12\7\12ID" -#define SUNI_REGX_MRESET_LITE "\020\10RESET\12\x70\12TYPE\12\xf\12ID" -#define SUNI_REGX_MRESET_622 "\020\10RESET\12\x70\12TYPE\12\xf\12ID" - -/* lite, ultra */ -#define SUNI_REGN_MCONFIG "Master Configuration" -#define SUNI_REGO_MCONFIG 0x01 -#define SUNI_REGM_MCONFIG_AUTOFEBE 0x40 -#define SUNI_REGM_MCONFIG_AUTOLRDI 0x20 -#define SUNI_REGM_MCONFIG_AUTOPRDI 0x10 -#define SUNI_REGM_MCONFIG_TCAINV 0x08 -#define SUNI_REGM_MCONFIG_RCAINV 0x04 -#define SUNI_REGM_MCONFIG_RXDINV_LITE 0x02 -#define SUNI_REGM_MCONFIG_TFP_IN_ULTRA 0x01 -#define SUNI_REGM_MCONFIG_RESERVED 0x00 -#define SUNI_REGX_MCONFIG_LITE "\020\7AUTOFEBE\6AUTOLRDI\5AUTOPRDI\4TCAINV\3RCAINV\2RXDINV" -#define SUNI_REGX_MCONFIG_ULTRA "\020\7AUTOFEBE\6AUTOLRDI\5AUTOPRDI\4TCAINV\3RCAINV\1TFPI_IN" - -/* 622 */ -#define SUNI_REGM_MCONFIG_TPTBEN_622 0x80 -#define SUNI_REGM_MCONFIG_TSTBEN_622 0x40 -#define SUNI_REGM_MCONFIG_SDH_C1_622 0x20 -#define SUNI_REGM_MCONFIG_FIXPTR_622 0x10 -#define SUNI_REGM_MCONFIG_TMODE_622 0x0C -#define SUNI_REGM_MCONFIG_TMODE_STS1_BYTE 0x00 -#define SUNI_REGM_MCONFIG_TMODE_STS3c 0x04 -#define SUNI_REGM_MCONFIG_TMODE_STS1_BIT 0x08 -#define SUNI_REGM_MCONFIG_TMODE_STS12c 0x0C -#define SUNI_REGM_MCONFIG_RMODE_622 0x03 -#define SUNI_REGM_MCONFIG_RMODE_STS1_BYTE 0x00 -#define SUNI_REGM_MCONFIG_RMODE_STS3c 0x01 -#define SUNI_REGM_MCONFIG_RMODE_STS1_BIT 0x02 -#define SUNI_REGM_MCONFIG_RMODE_STS12c 0x03 -#define SUNI_REGX_MCONFIG_622 "\020\10TPTBEN\7TSTBEN\6SDH_C1\5FIXPTR\11\x0C\0x00XSTS1BYTE\11\0x0C\0x04XSTS3c\11\0x0C\0x08XSTS1BIT\11\0x0C\0x0CXSTS12c\11\0x03\0x00RSTS1BYTE\11\0x03\0x01RSTS3c\11\0x03\0x02RSTS1BIT\11\0x03\0x03RSTS12c" - -/* lite, ultra, 622 */ -#define SUNI_REGN_MISTATUS "Master Interrupt Status" -#define SUNI_REGO_MISTATUS 0x02 -#define SUNI_REGM_MISTATUS_CSUI_ULTRA 0x80 -#define SUNI_REGM_MISTATUS_TROOLI_LITE 0x80 -#define SUNI_REGM_MISTATUS_SUNII_622 0x80 -#define SUNI_REGM_MISTATUS_LCDI 0x40 -#define SUNI_REGM_MISTATUS_STBI_622 0x40 -#define SUNI_REGM_MISTATUS_CRUI_ULTRA 0x20 -#define SUNI_REGM_MISTATUS_RDOOLI_LITE 0x20 -#define SUNI_REGM_MISTATUS_RESERVED_622 0x20 -#define SUNI_REGM_MISTATUS_TACPI 0x10 -#define SUNI_REGM_MISTATUS_RACPI 0x08 -#define SUNI_REGM_MISTATUS_RPOPI 0x04 -#define SUNI_REGM_MISTATUS_RLOPI 0x02 -#define SUNI_REGM_MISTATUS_RSOPI 0x01 -#define SUNI_REGX_MISTATUS_LITE "\020\10TROOLI\7LCDI\6RDOOLI\5TACPI\4RACPI\3RPOPI\2RLOPI\1RSOPI" -#define SUNI_REGX_MISTATUS_ULTRA "\020\10CSUI\7LCDI\6CRUI\5TACPI\4RACPI\3RPOPI\2RLOPI\1RSOPI" -#define SUNI_REGX_MISTATUS_622 "\020\10S/UNII\7STBI\5TACPI\4RACPI\3RPOPI\2RLOPI\1RSOPI" - -/* ultra */ -#define SUNI_REGN_MMCTRL "Master Mode Control" -#define SUNI_REGO_MMCTRL 0x03 -#define SUNI_REGM_MMCTRL_51 0x02 -#define SUNI_REGM_MMCTRL_155 0x03 -#define SUNI_REGX_MMCTRL "\020\11\3\00251MBIT\11\3\003155MBIT" - -/* 622 */ -#define SUNI_REGN_PISO "PISO Interrupt" -#define SUNI_REGO_PISO 0x03 -#define SUNI_REGM_PISO_PAEE 0x02 -#define SUNI_REGM_PISO_PAEI 0x01 -#define SUNI_REGX_PISO "\020\2PAEE\1PAEI" - -/* ultra/lite */ -#define SUNI_REGN_MCLKM "Master Clock Monitor" -#define SUNI_REGO_MCLKM 0x04 -#define SUNI_REGM_MCLKM_RFCLKA 0x10 /* ultra */ -#define SUNI_REGM_MCLKM_TFCLKA 0x08 /* ultra */ -#define SUNI_REGM_MCLKM_RRCLKA 0x08 /* lite */ -#define SUNI_REGM_MCLKM_REFCLKA 0x04 /* ultra */ -#define SUNI_REGM_MCLKM_TRCLKA 0x04 /* lite */ -#define SUNI_REGM_MCLKM_RCLKA 0x02 -#define SUNI_REGM_MCLKM_TCLKA 0x01 -#define SUNI_REGX_MCLKM_LITE "\020\4RRCLKA\3TRCLKA\2RCLKA\1TCLKA" -#define SUNI_REGX_MCLKM_ULTRA "\020\5RFCLKA\4TFCLKA\3REFCLKA\2RCLKA\1TCLKA" - -/* 622 */ -#define SUNI_REGN_MCTRLM "Master Control/Monitor" -#define SUNI_REGO_MCTRLM 0x04 -#define SUNI_REGM_MCTRLM_TCAINV 0x80 -#define SUNI_REGM_MCTRLM_RCAINV 0x40 -#define SUNI_REGM_MCTRLM_LLE 0x20 -#define SUNI_REGM_MCTRLM_DLE 0x10 -#define SUNI_REGM_MCTRLM_LOOPT 0x08 -#define SUNI_REGM_MCTRLM_DPLE 0x04 -#define SUNI_REGM_MCTRLM_PICLKA 0x02 -#define SUNI_REGM_MCTRLM_TCLKA 0x01 -#define SUNI_REGX_MCTRLM "\020\10TCAINV\7RCAINV\6LLE\5DLE\4LOOPT\3DPLE\2PICLKA\1TCLKA" - -/* ultra/lite */ -#define SUNI_REGN_MCTRL "Master Control" -#define SUNI_REGO_MCTRL 0x05 -#define SUNI_REGM_MCTRL_LCDE 0x80 -#define SUNI_REGM_MCTRL_LCDV 0x40 -#define SUNI_REGM_MCTRL_FIXPTR 0x20 -#define SUNI_REGM_MCTRL_TPLE 0x10 /* ultra */ -#define SUNI_REGM_MCTRL_PDLE 0x08 /* ultra */ -#define SUNI_REGM_MCTRL_LLE 0x04 -#define SUNI_REGM_MCTRL_SDLE 0x02 /* ultra */ -#define SUNI_REGM_MCTRL_DLE 0x02 /* lite */ -#define SUNI_REGM_MCTRL_LOOPT 0x01 -#define SUNI_REGX_MCTRL_ULTRA "\020\10LCDE\7LCDV\6FIXPTR\5TPLE\4PDLE\3LLE\2SDLE\1LOOPT" -#define SUNI_REGX_MCTRL_LITE "\020\10LCDE\7LCDV\6FIXPTR\3LLE\2DLE\1LOOPT" - -/* 622 */ -#define SUNI_REGN_MALARM "Master Auto Alarm" -#define SUNI_REGO_MALARM 0x05 -#define SUNI_REGM_MALARM_AUTOFEBE 0x04 -#define SUNI_REGM_MALARM_AUTOLRDI 0x02 -#define SUNI_REGM_MALARM_AUTOPRDI 0x01 -#define SUNI_REGX_MALARM "\020\4AUTOFEBE\2AUTOLRDI\1AUTOPRDI" - -/* ultra/lite */ -#define SUNI_REGN_CLKSYN "Clock Synthesis Control and Status" -#define SUNI_REGO_CLKSYN 0x06 -#define SUNI_REGM_CLKSYN_TROOLI 0x20 /* ultra */ -#define SUNI_REGM_CLKSYN_TROOLV 0x08 -#define SUNI_REGM_CLKSYN_TROOLE 0x02 -#define SUNI_REGM_CLKSYN_TREFSEL 0x01 /* lite */ -#define SUNI_REGM_CLKSYN_RESERVED 0x00 -#define SUNI_REGX_CLKSYN_ULTRA "\020\6TROOLI\4TROOLV\2TROOLE" -#define SUNI_REGX_CLKSYN_LITE "\020\4TROOLV\2TROOLE\1TREFSEL" - -/* 622 */ -#define SUNI_REGN_POUT "Parallel Output Port" -#define SUNI_REGO_POUT 0x06 -#define SUNI_REGM_POUT_POP 0x3f -#define SUNI_REGX_POUT "\020\12\x3f\12POP" - -/* ultra/lite */ -#define SUNI_REGN_CLKREC "Clock Recovery Control and Status" -#define SUNI_REGO_CLKREC_LITE 0x07 -#define SUNI_REGO_CLKREC_ULTRA 0x08 -#define SUNI_REGM_CLKREC_RROOLI 0x40 /* ultra */ -#define SUNI_REGM_CLKREC_RDOOLI 0x20 /* ultra */ -#define SUNI_REGM_CLKREC_RROOLV 0x10 -#define SUNI_REGM_CLKREC_RDOOLV 0x08 -#define SUNI_REGM_CLKREC_RROOLE 0x04 /* ultra */ -#define SUNI_REGM_CLKREC_RDOOLE 0x02 -#define SUNI_REGM_CLKREC_RREFSEL 0x01 /* lite */ -#define SUNI_REGM_CLKREC_RESERVED 0x00 -#define SUNI_REGX_CLKREC_ULTRA "\020\7RROOLI\6RDOOLI\5RROOLV\4RDOOLV\3RROOLE\2RDOOLE" -#define SUNI_REGX_CLKREC_LITE "\020\5RROOLV\4RDOOLV\2RDOOLE\1RREFSEL" - -/* 622 */ -#define SUNI_REGN_PIN "Parallel Input Port" -#define SUNI_REGO_PIN 0x07 - -/* 622 */ -#define SUNI_REGN_PINV "Parallel Input Port Value" -#define SUNI_REGO_PINV 0x08 -#define SUNI_REGM_PINV_PIPV 0x0f -#define SUNI_REGX_PINV "\020\12\0x0f\12PIPIV" - -/* ultra */ -#define SUNI_REGN_CLKRECCFG "Clock Recovery Configuration" -#define SUNI_REGO_CLKRECCFG 0x09 -#define SUNI_REGM_CLKRECCFG_RESERVED 0x07 -#define SUNI_REGX_CLKRECCFG "\020" - -/* 622 */ -#define SUNI_REGN_PINE "Parallel Input Port Enable" -#define SUNI_REGO_PINE 0x09 - -/* ultra */ -#define SUNI_REGN_LTXCFG1 "Line Transmitter Configuration 1" -#define SUNI_REGO_LTXCFG1 0x0A -#define SUNI_REGM_LTXCFG1_VREFSEL 0x80 -#define SUNI_REGM_LTXCFG1_OEN 0x20 -#define SUNI_REGM_LTXCFG1_OTQ 0x10 -#define SUNI_REGM_LTXCFG1_RESERVED 0x0C -#define SUNI_REGX_LTXCFG1 "\020\10VREFSEL\6OEN\5OTQ" - -/* 622 */ -#define SUNI_REGN_XC1 "Transmit C1" -#define SUNI_REGO_XC1 0x0A - -/* ultra */ -#define SUNI_REGN_LTXCFG2 "Line Transmitter Configuration 2" -#define SUNI_REGO_LTXCFG2 0x0B -#define SUNI_REGM_LTXCFG2_RESERVED 0xFF -#define SUNI_REGX_LTXCFG2 "\020" - -/* 622 */ -#define SUNI_REGN_APSCS "APS Control/Status" -#define SUNI_REGO_APSCS 0x0B -#define SUNI_REGM_APSCS_PSBFE 0x80 -#define SUNI_REGM_APSCS_COAPSE 0x40 -#define SUNI_REGM_APSCS_Z1E 0x20 -#define SUNI_REGM_APSCS_Zi1 0x10 -#define SUNI_REGM_APSCS_PSBFI 0x08 -#define SUNI_REGM_APSCS_COAPSI 0x04 -#define SUNI_REGM_APSCS_RESERVED 0x02 -#define SUNI_REGM_APSCS_PSBFV 0x01 -#define SUNI_REGX_APSCS "\020\10PSBFE\7COAPSE\6Z1E\5Z1I\4PSBFI\3COAPSI\1PSBFV" - -/* ultra */ -#define SUNI_REGN_LRXCFG "Line Receiver Configuration" -#define SUNI_REGO_LRXCFG 0x0C -#define SUNI_REGM_LRXCFG_RESERVED 0x01 -#define SUNI_REGX_LRXCFG "\020" - -/* 622 */ -#define SUNI_REGN_RK1 "Receive K1" -#define SUNI_REGO_RK1 0x0C - -/* 622 */ -#define SUNI_REGN_RK2 "Receive K2" -#define SUNI_REGO_RK2 0x0D - -/* 622 */ -#define SUNI_REGN_RZ1 "Receive Z1" -#define SUNI_REGO_RZ1 0x0E - -/* 622 */ -#define SUNI_REGN_XZ1 "Transmit Z1" -#define SUNI_REGO_XZ1 0x0F - -/* lite, ultra, 622 */ -#define SUNI_REGN_RSOPCIE "RSOP Control/Interrupt Enable" -#define SUNI_REGO_RSOPCIE 0x10 -#define SUNI_REGO_RSOPCIE_BIPWORD_622 0x80 -#define SUNI_REGM_RSOPCIE_DDS 0x40 -#define SUNI_REGM_RSOPCIE_FOOF 0x20 -#define SUNI_REGM_RSOPCIE_RESV 0x10 -#define SUNI_REGM_RSOPCIE_ALGO2_622 0x10 -#define SUNI_REGM_RSOPCIE_BIPEE 0x08 -#define SUNI_REGM_RSOPCIE_LOSE 0x04 -#define SUNI_REGM_RSOPCIE_LOFE 0x02 -#define SUNI_REGM_RSOPCIE_OOFE 0x01 -#define SUNI_REGX_RSOPCIE "\020\7DDS\6FOOF\4BIPEE\3LOSE\2LOFE\1OOFE" -#define SUNI_REGX_RSOPCIE_622 "\020\10BIPWORD\7DDS\6FOOF\5ALGO2\4BIPEE\3LOSE\2LOFE\1OOFE" - -/* lite, ultra, 622 */ -#define SUNI_REGN_RSOPSIS "RSOP Status/Interrupt Status" -#define SUNI_REGO_RSOPSIS 0x11 -#define SUNI_REGM_RSOPSIS_BIPEI 0x40 -#define SUNI_REGM_RSOPSIS_LOSI 0x20 -#define SUNI_REGM_RSOPSIS_LOFI 0x10 -#define SUNI_REGM_RSOPSIS_OOFI 0x08 -#define SUNI_REGM_RSOPSIS_LOSV 0x04 -#define SUNI_REGM_RSOPSIS_LOFV 0x02 -#define SUNI_REGM_RSOPSIS_OOFV 0x01 -#define SUNI_REGX_RSOPSIS "\020\7BIPEI\6LOSI\5LOFI\4OOFI\3LOSV\2LOFV\1OOFV" - -/* lite, ultra, 622 */ -#define SUNI_REGN_RSOP_BIP8 "RSOP Section BIP-8" -#define SUNI_REGO_RSOP_BIP8 0x12 /* +0x13 */ - -/* lite, ultra, 622 */ -#define SUNI_REGN_TSOPCTRL "TSOP Control" -#define SUNI_REGO_TSOPCTRL 0x14 -#define SUNI_REGM_TSOPCTRL_DS 0x40 -#define SUNI_REGM_TSOPCTRL_LAIS 0x01 -#define SUNI_REGM_TSOPCTRL_RESERVED 0x00 -#define SUNI_REGX_TSOPCTRL "\020\7DS\1LAIS" - -/* lite, ultra, 622 */ -#define SUNI_REGN_TSOPDIAG "TSOP Diagnostics" -#define SUNI_REGO_TSOPDIAG 0x15 -#define SUNI_REGM_TSOPDIAG_DLOS 0x04 -#define SUNI_REGM_TSOPDIAG_DBIP8 0x02 -#define SUNI_REGM_TSOPDIAG_DFP 0x01 -#define SUNI_REGX_TSOPDIAG "\020\3DLOS\2DBIP8\1DFP" - -/* lite, ultra, 622 */ -#define SUNI_REGN_RLOPCTRL "RLOP Control/Status" -#define SUNI_REGO_RLOPCTRL 0x18 -#define SUNI_REGO_RLOPCTRL_BIPWORD 0x80 -#define SUNI_REGO_RLOPCTRL_ALLONES_622 0x40 -#define SUNI_REGO_RLOPCTRL_AISDET_622 0x20 -#define SUNI_REGO_RLOPCTRL_LRDIDET_622 0x10 -#define SUNI_REGO_RLOPCTRL_BIPWORDO_622 0x08 -#define SUNI_REGO_RLOPCTRL_LAISV 0x02 -#define SUNI_REGO_RLOPCTRL_RDIV 0x01 -#define SUNI_REGO_RLOPCTRL_RESERVED 0x00 -#define SUNI_REGX_RLOPCTRL "\020\10BIPWORD\2LAISV\1RDIV" -#define SUNI_REGX_RLOPCTRL_622 "\020\10BIPWORD\7ALLONES\6AISDET\5LRDIDET\4BIPWORDO\2LAISV\1RDIV" - -/* lite, ultra, 622 */ -#define SUNI_REGN_RLOPINTR "RLOP Interrupt Enable/Interrupt Status" -#define SUNI_REGO_RLOPINTR 0x19 -#define SUNI_REGO_RLOPINTR_FEBEE 0x80 -#define SUNI_REGO_RLOPINTR_BIPEE 0x40 -#define SUNI_REGO_RLOPINTR_LAISE 0x20 -#define SUNI_REGO_RLOPINTR_RDIE 0x10 -#define SUNI_REGO_RLOPINTR_FEBEI 0x08 -#define SUNI_REGO_RLOPINTR_BIPEI 0x04 -#define SUNI_REGO_RLOPINTR_LAISI 0x02 -#define SUNI_REGO_RLOPINTR_RDII 0x01 -#define SUNI_REGX_RLOPINTR "\020\10FEBEE\7BIPEE\6LAISE\5DRIE\4FEBEI\3BIPEI\2LAISI\1RDII" - -/* lite, ultra */ -#define SUNI_REGN_RLOPBIP8_24 "RLOP Line BIP-8/24" -#define SUNI_REGO_RLOPBIP8_24 0x1A /* +1B,1C */ -#define SUNI_REGM_RLOPBIP8_24 0x0F - -/* 622 */ -#define SUNI_REGN_RLOPBIP8_24_96 "RLOP Line BIP-8/24/96" -#define SUNI_REGO_RLOPBIP8_24_96 0x1A /* +1B,1C */ -#define SUNI_REGM_RLOPBIP8_24_96 0x0F - -/* lite, ultra, 622 */ -#define SUNI_REGN_RLOPFEBE "RLOP Line FEBE" -#define SUNI_REGO_RLOPFEBE 0x1D /* +1E,1F */ -#define SUNI_REGM_RLOPFEBE 0x0F - -/* lite, ultra, 622 */ -#define SUNI_REGN_TLOPCTRL "TLOP Control" -#define SUNI_REGO_TLOPCTRL 0x20 -#define SUNI_REGM_TLOPCTRL_APSREG_622 0x20 -#define SUNI_REGM_TLOPCTRL_RDI 0x01 -#define SUNI_REGM_TLOPCTRL_RESERVED 0x00 -#define SUNI_REGX_TLOPCTRL "\020\1RDI" -#define SUNI_REGX_TLOPCTRL_622 "\020\6APSREG\1LRDI" - -/* lite, ultra, 622 */ -#define SUNI_REGN_TLOPDIAG "TLOP Diagnostics" -#define SUNI_REGO_TLOPDIAG 0x21 -#define SUNI_REGM_TLOPDIAG_DBIP 0x01 -#define SUNI_REGX_TLOPDIAG "\020\1DBIP" - -/* 622 */ -#define SUNI_REGN_TLOP_XK1 "TLOP Transmit K1" -#define SUNI_REGO_TLOP_XK1 0x22 - -/* 622 */ -#define SUNI_REGN_TLOP_XK2 "TLOP Transmit K2" -#define SUNI_REGO_TLOP_XK2 0x23 - -/* 622 */ -#define SUNI_REGN_SSTBCTRL "SSTB Control" -#define SUNI_REGO_SSTBCTRL 0x28 -#define SUNI_REGM_SSTBCTRL_RRAMACC 0x40 -#define SUNI_REGM_SSTBCTRL_RTIUIE 0x20 -#define SUNI_REGM_SSTBCTRL_RTIMIE 0x10 -#define SUNI_REGM_SSTBCTRL_PER5 0x08 -#define SUNI_REGM_SSTBCTRL_TNULL 0x04 -#define SUNI_REGM_SSTBCTRL_NOSYNC 0x02 -#define SUNI_REGM_SSTBCTRL_LEN16 0x01 -#define SUNI_REGX_SSTBCTRL "\020\7RRAMACC\6RTIUIE\5RTIMIE\4PER5\3TNULL\2NOSYNC\1LEN16" - -/* 622 */ -#define SUNI_REGN_SSTBSTIS "SSTB Section Trace Identifier Status" -#define SUNI_REGO_SSTBSTIS 0x29 -#define SUNI_REGM_SSTBSTIS_BUSY 0x80 -#define SUNI_REGM_SSTBSTIS_RTIUI 0x08 -#define SUNI_REGM_SSTBSTIS_RTIUV 0x04 -#define SUNI_REGM_SSTBSTIS_RTIMI 0x02 -#define SUNI_REGM_SSTBSTIS_RTIMV 0x01 -#define SUNI_REGX_SSTBSTIS "\020\10BUSY\4RTIUI\3RTIUV\2RTIMI\1RTIMV" - -/* 622 */ -#define SUNI_REGN_SSTBIAR "SSTB Indirect Address Register" -#define SUNI_REGO_SSTBIAR 0x2A -#define SUNI_REGM_SSTBIAR_RWB 0x80 -#define SUNI_REGM_SSTBIAR_A 0x7F -#define SUNI_REGX_SSTBIAR "\020\10RWB\12\x7f\20" - -/* 622 */ -#define SUNI_REGN_SSTBIDR "SSTB Indirect Data Register" -#define SUNI_REGO_SSTBIDR 0x2B - -#if 0 /* see chip errata */ -/* 622 */ -#define SUNI_REGN_SSTBECSM "SSTB Expected Clock Synchronization Message" -#define SUNI_REGO_SSTBECSM 0x2C -#endif - -/* 622 */ -#define SUNI_REGN_SSTBCSMS "SSTB Clock Synchronisation Message Status" -#define SUNI_REGO_SSTBCSMS 0x2D -#define SUNI_REGM_SSTBCSMS_RCSMUIE 0x80 -#define SUNI_REGM_SSTBCSMS_RCSMMIE 0x40 -#define SUNI_REGM_SSTBCSMS_RCSMUI 0x08 -#define SUNI_REGM_SSTBCSMS_RCSMUV 0x04 -#define SUNI_REGM_SSTBCSMS_RCSMMI 0x02 -#define SUNI_REGM_SSTBCSMS_RCSMMV 0x01 -#define SUNI_REGX_SSTBCSMS "\020\10RCSMUIE\7RCSMMIE\4RCSMUI\3RCSMUV\2RCSMMI\1RCSMMV" - -/* lite, ultra, 622 */ -#define SUNI_REGN_RPOPCTRL "RPOP Status/Control" -#define SUNI_REGO_RPOPCTRL 0x30 -#define SUNI_REGM_RPOPCTRL_LOP 0x20 -#define SUNI_REGM_RPOPCTRL_PAIS 0x08 -#define SUNI_REGM_RPOPCTRL_PRDI 0x04 -#define SUNI_REGM_RPOPCTRL_NEWPTRI_622 0x02 -#define SUNI_REGM_RPOPCTRL_NEWPTRE_622 0x01 -#define SUNI_REGM_RPOPCTRL_RESERVED 0x00 -#define SUNI_REGX_RPOPCTRL "\020\6LOP\4PAIS\3PRDI" -#define SUNI_REGX_RPOPCTRL_622 "\020\6LOP\4PAIS\3PRDI\2NEWPTRI\1NEWPTRE" - -/* lite, ultra, 622 */ -#define SUNI_REGN_RPOPISTAT "RPOP Interrupt Status" -#define SUNI_REGO_RPOPISTAT 0x31 -#define SUNI_REGM_RPOPISTAT_PSLI 0x80 -#define SUNI_REGM_RPOPISTAT_LOPI 0x20 -#define SUNI_REGM_RPOPISTAT_PAISI 0x08 -#define SUNI_REGM_RPOPISTAT_PRDII 0x04 -#define SUNI_REGM_RPOPISTAT_BIPEI 0x02 -#define SUNI_REGM_RPOPISTAT_FEBEI 0x01 -#define SUNI_REGX_RPOPISTAT "\02010PSLI\6LOPI\4PAISI\3PRDII\2BIPEI\1FEBEI" - -/* 622 */ -#define SUNI_REGN_RPOPPIS "RPOP Pointer Interrupt Status" -#define SUNI_REGO_RPOPPIS 0x32 -#define SUNI_REGM_RPOPPIS_ILLJREQI 0x80 -#define SUNI_REGM_RPOPPIS_DISCOPAI 0x20 -#define SUNI_REGM_RPOPPIS_INVNDFI 0x10 -#define SUNI_REGM_RPOPPIS_ILLPTRI 0x08 -#define SUNI_REGM_RPOPPIS_NSEI 0x04 -#define SUNI_REGM_RPOPPIS_PSEI 0x02 -#define SUNI_REGM_RPOPPIS_NDFI 0x01 -#define SUNI_REGX_RPOPPIS "\020\10ILLJREQI\6DISCOPAI\5INVNDFI\4ILLPTRI\3NSEI\2PSEI\1NDFI" - -/* lite, ultra, 622 */ -#define SUNI_REGN_RPOPIEN "RPOP Interrupt Enable" -#define SUNI_REGO_RPOPIEN 0x33 -#define SUNI_REGM_RPOPIEN_PSLE 0x80 -#define SUNI_REGM_RPOPIEN_LOPE 0x20 -#define SUNI_REGM_RPOPIEN_PAISE 0x08 -#define SUNI_REGM_RPOPIEN_PRDIE 0x04 -#define SUNI_REGM_RPOPIEN_BIPEE 0x02 -#define SUNI_REGM_RPOPIEN_FEBEE 0x01 -#define SUNI_REGM_RPOPIEN_RESERVED 0x00 -#define SUNI_REGX_RPOPIEN "\02010PSLE\6LOPE\4PAISE\3PRDIE\2BIPEE\1FEBEE" - -/* 622 */ -#define SUNI_REGN_RPOPPIE "RPOP Pointer Interrupt Enable" -#define SUNI_REGO_RPOPPIE 0x34 -#define SUNI_REGM_RPOPPIE_ILLJREQE 0x80 -#define SUNI_REGM_RPOPPIE_DISCOPAE 0x20 -#define SUNI_REGM_RPOPPIE_INVNDFE 0x10 -#define SUNI_REGM_RPOPPIE_ILLPTRE 0x08 -#define SUNI_REGM_RPOPPIE_NSEE 0x04 -#define SUNI_REGM_RPOPPIE_PSEE 0x02 -#define SUNI_REGM_RPOPPIE_NDFE 0x01 -#define SUNI_REGX_RPOPPIE "\020\10ILLJREQE\6DISCOPAE\5INVNDFE\4ILLPTRE\3NSEE\2PSEE\1NDFE" - -/* 622 */ -#define SUNI_REGN_RPOPPTR "RPOP Pointer" -#define SUNI_REGO_RPOPPTR 0x35 /* +36 */ -#define SUNI_REGM_RPOPPTR_RDI10 0x20 -#define SUNI_REGM_RPOPPTR_S 0x0c -#define SUNI_REGS_RPOPPTR_S 2 -#define SUNI_REGM_RPOPPTR 0x03 -#define SUNI_REGS_RPOPPTR 0 -#define SUNI_REGX_RPOPPTR "\020\6RDI10\12\xc\20S" - -/* lite, ultra, 622 */ -#define SUNI_REGN_RPOPPSL "RPOP Path Signal Label" -#define SUNI_REGO_RPOPPSL 0x37 - -/* lite, ultra, 622 */ -#define SUNI_REGN_RPOPBIP8 "RPOP Path BIP-8" -#define SUNI_REGO_RPOPBIP8 0x38 /* +39 */ - -/* lite, ultra, 622 */ -#define SUNI_REGN_RPOPFEBE "RPOP Path FEBE" -#define SUNI_REGO_RPOPFEBE 0x3A /* +3B */ - -/* 622 */ -#define SUNI_REGN_RPOPRDI "RPOP RDI" -#define SUNI_REGO_RPOPRDI 0x3C -#define SUNI_REGM_RPOPRDI_BLKFEBE 0x10 -#define SUNI_REGM_RPOPRDI_ARDIE 0x02 -#define SUNI_REGM_RPOPRDI_ARDIV 0x01 -#define SUNI_REGM_RPOPRDI_RESERVED 0x00 -#define SUNI_REGX_RPOPRDI "\020\5BLKFEBE\2ARDIE\1ARDIV" - -/* lite, ultra */ -#define SUNI_REGN_RPOPBIP8CFG "RPOP Path BIP-8 Configuration" -#define SUNI_REGO_RPOPBIP8CFG 0x3D -#define SUNI_REGM_RPOPBIP8CFG_BLKBIP 0x20 -#define SUNI_REGM_RPOPBIP8CFG_RESERVED 0x00 -#define SUNI_REGX_RPOPBIP8CFG "\020\6BLKBIP" - -/* 622 */ -#define SUNI_REGN_RPOPRING "RPOP Ring Control" -#define SUNI_REGO_RPOPRING 0x3D -#define SUNI_REGM_RPOPRING_SOS 0x80 -#define SUNI_REGM_RPOPRING_ENSS 0x40 -#define SUNI_REGM_RPOPRING_BLKBIP 0x20 -#define SUNI_REGM_RPOPRING_DISFS 0x10 -#define SUNI_REGM_RPOPRING_BLKBIPO 0x08 -#define SUNI_REGM_RPOPRING_RESERVED 0x00 -#define SUNI_REGX_RPOPRING "\020\10SOS\7ENSS\6BLKBIP\5DISFS\4BLKBIPO" - -/* lite, ultra, 622 */ -#define SUNI_REGN_TPOPCTRL "TPOP Control/Diagnostic" -#define SUNI_REGO_TPOPCTRL 0x40 -#define SUNI_REGM_TPOPCTRL_EXCFS 0x80 /* 622 */ -#define SUNI_REGM_TPOPCTRL_DB3 0x02 -#define SUNI_REGM_TPOPCTRL_PAIS 0x01 -#define SUNI_REGM_TPOPCTRL_RESERVED 0x00 -#define SUNI_REGX_TPOPCTRL "\020\2DB3\1PAIS" -#define SUNI_REGX_TPOPCTRL_622 "\020\4EXCFS\2DB3\1PAIS" - -/* lite, ultra, 622 */ -#define SUNI_REGN_TPOPPTRC "TPOP Pointer Control" -#define SUNI_REGO_TPOPPTRC 0x41 -#define SUNI_REGM_TPOPPTRC_FTPTR 0x40 -#define SUNI_REGM_TPOPPTRC_SOS 0x20 -#define SUNI_REGM_TPOPPTRC_PLD 0x10 -#define SUNI_REGM_TPOPPTRC_NDF 0x08 -#define SUNI_REGM_TPOPPTRC_NSE 0x04 -#define SUNI_REGM_TPOPPTRC_PSE 0x02 -#define SUNI_REGM_TPOPPTRC_RESERVED 0x00 -#define SUNI_REGX_TPOPPTRC "\020\7FTPTR\6SOS\5PLD\4NDF\3NSE\2PSE" - -/* 622 */ -#define SUNI_REGN_TPOPCP "TPOP Current Pointer" -#define SUNI_REGO_TPOPCP 0x43 /* +44 */ -#define SUNI_REGM_TPOPCP 0x03 -#define SUNI_REGS_TPOPCP 0 -#define SUNI_REGX_TPOPCP "\020" - -/* lite, ultra, 622 */ -#define SUNI_REGN_TPOPAPTR "TPOP Arbitrary Pointer" -#define SUNI_REGO_TPOPAPTR 0x45 /* +46 */ -#define SUNI_REGM_TPOPAPTR_NDF 0xF0 -#define SUNI_REGS_TPOPAPTR_NDF 4 -#define SUNI_REGM_TPOPAPTR_S 0x0C -#define SUNI_REGS_TPOPAPTR_S 2 -#define SUNI_REGM_TPOPAPTR 0x03 -#define SUNI_REGS_TPOPAPTR 0 -#define SUNI_REGX_TPOPAPTR "\020\12\x0C\12S\12\xF0\12NDF" - -#define SUNI_REGM_SONET 0 -#define SUNI_REGM_SDH 2 - -/* 622 */ -#define SUNI_REGN_TPOPPT "TPOP Path Trace" -#define SUNI_REGO_TPOPPT 0x47 - -/* lite, ultra, 622 */ -#define SUNI_REGN_TPOPPSL "TPOP Path Signal Label" -#define SUNI_REGO_TPOPPSL 0x48 - -/* lite, ultra, 622 */ -#define SUNI_REGN_TPOPSTATUS "TPOP Path Status" -#define SUNI_REGO_TPOPSTATUS 0x49 -#define SUNI_REGM_TPOPSTATUS_FEBE 0xF0 -#define SUNI_REGS_TPOPSTATUS_FEBE 4 -#define SUNI_REGM_TPOPSTATUS_PRDI 0x08 -#define SUNI_REGM_TPOPSTATUS_G1 0x07 -#define SUNI_REGS_TPOPSTATUS_G1 0 -#define SUNI_REGX_TPOPSTATUS "\020\12\xF0\12FEBE\4PRDI\12\x7\12G" - -/* 622 */ -#define SUNI_REGN_TPOPPUC "TPOP Path User Channel" -#define SUNI_REGO_TPOPPUC 0x4A - -/* 622 */ -#define SUNI_REGN_TPOPPG1 "TPOP Path Grow #1" -#define SUNI_REGO_TPOPPG1 0x4B - -/* 622 */ -#define SUNI_REGN_TPOPPG2 "TPOP Path Grow #2" -#define SUNI_REGO_TPOPPG2 0x4C - -/* 622 */ -#define SUNI_REGN_TPOPPG3 "TPOP Path Grow #3" -#define SUNI_REGO_TPOPPG3 0x4D - -/* lite, ultra, 622 */ -#define SUNI_REGN_RACPCTRL "RACP Control/Status" -#define SUNI_REGO_RACPCTRL 0x50 -#define SUNI_REGM_RACPCTRL_OOCDV 0x80 -#define SUNI_REGM_RACPCTRL_FSEN 0x80 -#define SUNI_REGM_RACPCTRL_RXPTYP 0x40 -#define SUNI_REGM_RACPCTRL_PASS 0x20 -#define SUNI_REGM_RACPCTRL_DISCOR 0x10 -#define SUNI_REGM_RACPCTRL_HCSPASS 0x08 -#define SUNI_REGM_RACPCTRL_HCSADD 0x04 -#define SUNI_REGM_RACPCTRL_DDSCR 0x02 -#define SUNI_REGM_RACPCTRL_FIFORST 0x01 -#define SUNI_REGX_RACPCTRL "\020\10OOCDV\7RXPTYP\6PASS\5DISCO\4HCSPASS\3HCSADD\2DDSCR\1FIFORST" -#define SUNI_REGX_RACPCTRL_622 "\020\10FSEN\7RXPTYP\6PASS\5DISCO\4HCSPASS\3HCSADD\2DDSCR\1FIFORST" - -/* lite, ultra */ -#define SUNI_REGN_RACPINTR "RACP Interrupt Enable/Status" -#define SUNI_REGO_RACPINTR 0x51 -#define SUNI_REGM_RACPINTR_OOCDE 0x80 -#define SUNI_REGM_RACPINTR_HCSE 0x40 -#define SUNI_REGM_RACPINTR_FIFOE 0x20 -#define SUNI_REGM_RACPINTR_OOCDI 0x10 -#define SUNI_REGM_RACPINTR_CHCSI 0x08 -#define SUNI_REGM_RACPINTR_UHCSI 0x04 -#define SUNI_REGM_RACPINTR_FOVRI 0x02 -#define SUNI_REGX_RACPINTR "\020\10OOCDE\7HCSE\6FIFOE\5OOCDI\4CHCSI\3UHCSI\2FOVRI" - -/* 622 */ -#define SUNI_REGN_RACPIS "RACP Interrupt Status" -#define SUNI_REGO_RACPIS 0x51 -#define SUNI_REGM_RACPIS_OCDV 0x80 -#define SUNI_REGM_RACPIS_LCDV 0x40 -#define SUNI_REGM_RACPIS_OCDI 0x20 -#define SUNI_REGM_RACPIS_LCDI 0x10 -#define SUNI_REGM_RACPIS_CHCSI 0x08 -#define SUNI_REGM_RACPIS_UHCSI 0x04 -#define SUNI_REGM_RACPIS_FOVRI 0x02 -#define SUNI_REGM_RACPIS_FUDRI 0x01 -#define SUNI_REGX_RACPIS "\020\10OCDV\7LCDV\6OCDI\5LCDI\4CHCSI\3UHCSI\2FOVRI\1FUDRI" - -/* lite, ultra */ -#define SUNI_REGN_RACPPATTERN "RACP Match Header Pattern" -#define SUNI_REGO_RACPPATTERN 0x52 -#define SUNI_REGM_RACPPATTERN_GFC 0xF0 -#define SUNI_REGS_RACPPATTERN_GFC 4 -#define SUNI_REGM_RACPPATTERN_PTI 0x0E -#define SUNI_REGS_RACPPATTERN_PTI 1 -#define SUNI_REGM_RACPPATTERN_CLP 0x01 -#define SUNI_REGS_RACPPATTERN_CLP 0 -#define SUNI_REGX_RACPPATTERN "\020\12\xF0\12GFC\12\x0E\12PTI\1CLP" - -/* 622 */ -#define SUNI_REGN_RACPIEC "RACP Interrupt Enable/Control" -#define SUNI_REGO_RACPIEC 0x52 -#define SUNI_REGM_RACPIEC_OCDE 0x80 -#define SUNI_REGM_RACPIEC_LCDE 0x40 -#define SUNI_REGM_RACPIEC_HCSE 0x20 -#define SUNI_REGM_RACPIEC_FIFOE 0x10 -#define SUNI_REGM_RACPIEC_LCDDROP 0x08 -#define SUNI_REGM_RACPIEC_RCALEVEL0 0x04 -#define SUNI_REGM_RACPIEC_HCSFTR 0x03 -#define SUNI_REGX_RACPIEC "\020\10OCDE\7LCDE\6HCSE\5FIFOE\4LCDDROP\3RCALEVEL0\12\0x3\12HCSFTR" - -/* lite, ultra */ -#define SUNI_REGN_RACPMASK "RACP Match Header Mask" -#define SUNI_REGO_RACPMASK 0x53 -#define SUNI_REGM_RACPMASK_MGFC 0xF0 -#define SUNI_REGS_RACPMASK_MGFC 4 -#define SUNI_REGM_RACPMASK_MPTI 0x0E -#define SUNI_REGS_RACPMASK_MPTI 1 -#define SUNI_REGM_RACPMASK_MCLP 0x01 -#define SUNI_REGS_RACPMASK_MCLP 0 -#define SUNI_REGX_RACPMASK "\020\12\xF0\12MGFC\12\x0E\12MPTI\1MCLP" - -/* 622 */ -#define SUNI_REGO_RACPPATTERN_622 0x53 - -/* lite, ultra */ -#define SUNI_REGN_RACPCHCS "RACP Correctable HCS Error Count" -#define SUNI_REGO_RACPCHCS 0x54 - -/* 622 */ -#define SUNI_REGO_RACPMASK_622 0x54 - -/* lite, ultra */ -#define SUNI_REGN_RACPUHCS "RACP Uncorrectable HCS Error Count" -#define SUNI_REGO_RACPUHCS 0x55 - -/* 622 */ -#define SUNI_REGO_RACPCHCS_622 0x55 /* +56 */ -#define SUNI_REGM_RACPCHCS_622 0x0f - -/* lite, ultra */ -#define SUNI_REGN_RACPCNT "RACP Receive Cell Counter" -#define SUNI_REGO_RACPCNT 0x56 /* +57,58 */ -#define SUNI_REGM_RACPCNT 0x07 - -/* 622 */ -#define SUNI_REGO_RACPUHCS_622 0x57 /* +58 */ -#define SUNI_REGM_RACPUHCS_622 0x0f - -/* 622 */ -#define SUNI_REGO_RACPCNT_622 0x59 /* +5A,5B */ -#define SUNI_REGM_RACPCNT_622 0x1F - -/* lite, ultra */ -#define SUNI_REGN_RACPCFG "RACP Configuration" -#define SUNI_REGO_RACPCFG 0x59 -#define SUNI_REGM_RACPCFG_RGFCE 0xF0 -#define SUNI_REGS_RACPCFG_RGFCE 4 -#define SUNI_REGM_RACPCFG_FSEN 0x08 -#define SUNI_REGM_RACPCFG_LEVEL0 0x04 -#define SUNI_REGM_RACPCFG_HCSFTR 0x03 -#define SUNI_REGS_RACPCFG_HCSFTR 0 -#define SUNI_REGX_RACPCFG "\020\12\xF0\20RGFCE\4FSEN\3RCALEVEL0\12\x03\12HCSFTR" - -/* 622 */ -#define SUNI_REGN_RACPGFC "RACP GFC Control/Misc. Control" -#define SUNI_REGO_RACPGFC 0x5C -#define SUNI_REGM_RACPGFC_CDDIS 0x80 -#define SUNI_REGM_RACPGFC_RXBYTEPRTY 0x40 -#define SUNI_REGM_RACPGFC_RGFCE 0x0f -#define SUNI_REGX_RACPGFC "\020\10CDDIS\7RXBYTEPRTY\12\xf\20" - -/* lite, ultra, 622 */ -#define SUNI_REGN_TACPCTRL "TACP Control/Status" -#define SUNI_REGO_TACPCTRL 0x60 -#define SUNI_REGM_TACPCTRL_FIFOE 0x80 -#define SUNI_REGM_TACPCTRL_TSOCI 0x40 -#define SUNI_REGM_TACPCTRL_FOVRI 0x20 -#define SUNI_REGM_TACPCTRL_DHCS 0x10 -#define SUNI_REGM_TACPCTRL_HCSB 0x08 /* ultra, 622 */ -#define SUNI_REGM_TACPCTRL_HCSADD 0x04 -#define SUNI_REGM_TACPCTRL_DSCR 0x02 -#define SUNI_REGM_TACPCTRL_FIFORST 0x01 -#define SUNI_REGX_TACPCTRL_LITE "\020\10FIFOE\7TSOCI\6FOVRI\5DHCS\3HCSADD\2DSCR\1FIFORST" -#define SUNI_REGX_TACPCTRL_ULTRA "\020\10FIFOE\7TSOCI\6FOVRI\5DHCS\4HCSB\3HCSADD\2DSCR\1FIFORST" -#define SUNI_REGX_TACPCTRL_622 "\020\10FIFOE\7TSOCI\6FOVRI\5DHCS\4HCSB\3HCSADD\2DSCR\1FIFORST" - -/* lite, ultra, 622 */ -#define SUNI_REGN_TACPIDLEH "TACP Idle/Unassigned Cell Header Pattern" -#define SUNI_REGO_TACPIDLEH 0x61 -#define SUNI_REGM_TACPIDLEH_GFC 0xF0 -#define SUNI_REGS_TACPIDLEH_GFC 4 -#define SUNI_REGM_TACPIDLEH_PTI 0x0E -#define SUNI_REGS_TACPIDLEH_PTI 1 -#define SUNI_REGM_TACPIDLEH_CLP 0x01 -#define SUNI_REGS_TACPIDLEH_CLP 0 -#define SUNI_REGX_TACPIDLEH "\020\12\xF0\20GFC\12\x0E\20PTI\12\x01\20CLP" - -/* lite, ultra, 622 */ -#define SUNI_REGN_TACPIDLEP "TACP Idle/Unassigned Cell Payload Octet Pattern" -#define SUNI_REGO_TACPIDLEP 0x62 - -/* lite, ultra, 622 */ -#define SUNI_REGN_TACPFIFOC "TACP FIFO Control" -#define SUNI_REGO_TACPFIFOC 0x63 -#define SUNI_REGM_TACPFIFOC_TXPTYP 0x80 -#define SUNI_REGM_TACPFIFOC_TXPRTYE 0x40 -#define SUNI_REGM_TACPFIFOC_TXPRTYI 0x10 -#define SUNI_REGM_TACPFIFOC_TXPRTYI_622 0x30 -#define SUNI_REGS_TACPFIFOC_TXPRTYI_622 4 -#define SUNI_REGM_TACPFIFOC_FIFODP 0x0C -#define SUNI_REGS_TACPFIFOC_FIFODP 2 -#define SUNI_REGM_TACPFIFOC_TCALEVEL0 0x02 -#define SUNI_REGM_TACPFIFOC_HCSCTLEB 0x01 -#define SUNI_REGM_TACPFIFOC_RESERVED 0x00 -#define SUNI_REGX_TACPFIFOC "\020\10TXPTYP\7TXPRTYE\5TXPRTYI\12\x0C\20FIFODP\2TCALEVEL0" -#define SUNI_REGX_TACPFIFOC_622 "\020\10TXPTYP\7TXPRTYE\12\x30\12TXPRTYI\12\x0C\20FIFODP\2TCALEVEL0\1HCSCTLEB" - -/* lite, ultra, 622 */ -#define SUNI_REGN_TACPCNT "TACP Transmit Cell Counter" -#define SUNI_REGO_TACPCNT 0x64 /* +65,66 */ -#define SUNI_REGM_TACPCNT 0x07 -#define SUNI_REGM_TACPCNT_622 0x1F - -/* lite, ultra */ -#define SUNI_REGN_TACPCFG "TACP Configuration" -#define SUNI_REGO_TACPCFG 0x67 -#define SUNI_REGM_TACPCFG_TGFCE 0xF0 -#define SUNI_REGS_TACPCFG_TGFCE 4 -#define SUNI_REGM_TACPCFG_FSEN 0x08 -#define SUNI_REGM_TACPCFG_H4INSB 0x04 -#define SUNI_REGM_TACPCFG_FIXBYTE 0x03 -#define SUNI_REGS_TACPCFG_FIXBYTE 0 -#define SUNI_REGX_TACPCFG "\020\12\xF0\20TGFCE\4FSEN\3H4INSB\12\x03\20FIXBYTE" - -/* 622 */ -#define SUNI_REGN_TACPGFC "TACP Fixed Stuff/GFC" -#define SUNI_REGO_TACPGFC 0x67 -#define SUNI_REGO_TACPGFC_TGFCE 0xf0 -#define SUNI_REGS_TACPGFC_TGFCE 4 -#define SUNI_REGO_TACPGFC_FSEN 0x08 -#define SUNI_REGO_TACPGFC_TXBYTEPRTY 0x04 -#define SUNI_REGO_TACPGFC_FIXBYTE 0x03 -#define SUNI_REGS_TACPGFC_FIXBYTE 0 -#define SUNI_REGX_TACPGFC "\020\12\xf0\20TGFCE\4FSEN\3TXBYTEPRTY\12\x3\20FIXBYTE" - -/* 622 */ -#define SUNI_REGN_SPTBCTRL "SPTB Control" -#define SUNI_REGO_SPTBCTRL 0x68 -#define SUNI_REGO_SPTBCTRL_RRAMACC 0x40 -#define SUNI_REGO_SPTBCTRL_RTIUIE 0x20 -#define SUNI_REGO_SPTBCTRL_RTIMIE 0x10 -#define SUNI_REGO_SPTBCTRL_PER5 0x08 -#define SUNI_REGO_SPTBCTRL_TNULL 0x04 -#define SUNI_REGO_SPTBCTRL_NOSYNC 0x02 -#define SUNI_REGO_SPTBCTRL_LEN16 0x01 -#define SUNI_REGX_SPTBCTRL "\020\7RRAMACC\6RTIUIE\5RTIMIE\4PER5\3TNULL\2NOSYNC\1LEN16" - -/* 622 */ -#define SUNI_REGN_SPTBPTIS "SPTB Path Trace Identifier Status" -#define SUNI_REGO_SPTBPTIS 0x69 -#define SUNI_REGM_SPTBPTIS_BUSY 0x80 -#define SUNI_REGM_SPTBPTIS_RTIUI 0x08 -#define SUNI_REGM_SPTBPTIS_RTIUV 0x04 -#define SUNI_REGM_SPTBPTIS_RTIMI 0x02 -#define SUNI_REGM_SPTBPTIS_RTIMV 0x01 -#define SUNI_REGX_SPTBPTIS "\020\10BUSY\4RTIUI\3RTIUV\2RTIMI\1RTIMV" - -/* 622 */ -#define SUNI_REGN_SPTBIAR "SPTB Indirect Address Register" -#define SUNI_REGO_SPTBIAR 0x6A -#define SUNI_REGM_SPTBIAR_RWB 0x80 -#define SUNI_REGM_SPTBIAR_A 0x7f -#define SUNI_REGX_SPTBIAR "\020\10RWB\12\x7f\20A" - -/* 622 */ -#define SUNI_REGN_SPTBIDR "SPTB Indirect Data Register" -#define SUNI_REGO_SPTBIDR 0x6B - -/* 622 */ -#define SUNI_REGN_SPTBEPSL "SPTB Expected Path Signal Label" -#define SUNI_REGO_SPTBEPSL 0x6C - -/* 622 */ -#define SUNI_REGN_SPTBPSLS "SPTB Path Signal Label Status" -#define SUNI_REGO_SPTBPSLS 0x6D -#define SUNI_REGM_SPTBPSLS_RPSLUIE 0x80 -#define SUNI_REGM_SPTBPSLS_RPSLMIE 0x40 -#define SUNI_REGM_SPTBPSLS_RPSLUI 0x08 -#define SUNI_REGM_SPTBPSLS_RPSLUV 0x04 -#define SUNI_REGM_SPTBPSLS_RPSLMI 0x02 -#define SUNI_REGM_SPTBPSLS_RPSLMV 0x01 -#define SUNI_REGX_SPTBPSLS "\020\10RPSLUIE\7RPSLMIE\4RPSLUI\3RPSLUV\2RPSLMI\1RPSLMV" - -/* ultra */ -#define SUNI_REGN_POPCCTRL "POPC Control" -#define SUNI_REGO_POPCCTRL 0x68 -#define SUNI_REGM_POPCCTRL_PDAT 0xC0 -#define SUNI_REGS_POPCCTRL_PDAT 6 -#define SUNI_REGM_POPCCTRL_TOGGLE 0x30 -#define SUNI_REGS_POPCCTRL_TOGGLE 4 -#define SUNI_REGM_POPCCTRL_TRAFFIC 0x02 -#define SUNI_REGM_POPCCTRL_ALARM 0x01 -#define SUNI_REGX_POPCCTRL "\020\12\xC0\20PDAT\12\x30\20TOGGLE\2TRAFFIC\1ALARM" - -/* ultra */ -#define SUNI_REGN_POPCSTROBE0 "POPC Strobe Rate 0" -#define SUNI_REGO_POPCSTROBE0 0x69 - -/* ultra */ -#define SUNI_REGN_POPCSTROBE1 "POPC Strobe Rate 1" -#define SUNI_REGO_POPCSTROBE1 0x6A - -/* 622 */ -#define SUNI_REGN_BERMCTRL "BERM Control" -#define SUNI_REGO_BERMCTRL 0x70 -#define SUNI_REGM_BERMCTRL_BERTEN 0x80 -#define SUNI_REGM_BERMCTRL_BERIE 0x01 -#define SUNI_REGX_BERMCTRL "\020\10BERTEN\1BERIE" - -/* 622 */ -#define SUNI_REGN_BERMINT "BERM Interrupt" -#define SUNI_REGO_BERMINT 0x71 -#define SUNI_REGM_BERMINT_TST 0xf0 -#define SUNI_REGS_BERMINT_TST 4 -#define SUNI_REGM_BERMINT_BERI 0x01 -#define SUNI_REGX_BERMINT "\020\12\xf0\20BERM_TST\1BERI" - -/* 622 */ -#define SUNI_REGN_BERMLAP "BERM Line BIP Accumulation Period" -#define SUNI_REGO_BERMLAP 0x72 /* +73 */ - -/* 622 */ -#define SUNI_REGN_BERMLT "BERM Line BIP Threshold" -#define SUNI_REGO_BERMLT 0x74 /* +75 */ - -/* lite, ultra, 622 */ -#define SUNI_REGN_MTEST "Master Test" -#define SUNI_REGO_MTEST 0x80 -#define SUNI_REGM_MTEST_DS27_53_622 0x80 -#define SUNI_REGM_MTEST_BYPASS_ULTRA 0x40 -#define SUNI_REGM_MTEST_PMCATST_ULTRA 0x20 -#define SUNI_REGM_MTEST_PMCTST 0x10 -#define SUNI_REGM_MTEST_DBCTRL 0x08 -#define SUNI_REGM_MTEST_IOTST 0x04 -#define SUNI_REGM_MTEST_HIZDATA 0x02 -#define SUNI_REGM_MTEST_HIZIO 0x01 -#define SUNI_REGX_MTEST_LITE "\020\5PMCTST\4DBCTRL\3IOTST\2HIZDATA\1HIZIO" -#define SUNI_REGX_MTEST_ULTRA "\020\7BYPASS\6PMCATST\5PMCTST\4DBCTRL\3IOTST\2HIZDATA\1HIZIO" -#define SUNI_REGX_MTEST_622 "\020\10DS27_53\5PMCTST\4DBCTRL\3IOTST\2HIZDATA\1HIZIO" - -/* - * Printing support - */ -#define SUNI_PRINT_LITE \ - { /* 00 */ \ - UTP_REGT_BITS, SUNI_REGO_MRESET, \ - SUNI_REGN_MRESET, SUNI_REGX_MRESET_LITE }, \ - { /* 01 */ \ - UTP_REGT_BITS, SUNI_REGO_MCONFIG, \ - SUNI_REGN_MCONFIG, SUNI_REGX_MCONFIG_LITE }, \ - { /* 02 */ \ - UTP_REGT_BITS, SUNI_REGO_MISTATUS, \ - SUNI_REGN_MISTATUS, SUNI_REGX_MISTATUS_LITE }, \ - /* 03 unused */ \ - { /* 04 */ \ - UTP_REGT_BITS, SUNI_REGO_MCLKM, \ - SUNI_REGN_MCLKM, SUNI_REGX_MCLKM_LITE }, \ - { /* 05 */ \ - UTP_REGT_BITS, SUNI_REGO_MCTRL, \ - SUNI_REGN_MCTRL, SUNI_REGX_MCTRL_LITE }, \ - { /* 06 */ \ - UTP_REGT_BITS, SUNI_REGO_CLKSYN, \ - SUNI_REGN_CLKSYN, SUNI_REGX_CLKSYN_LITE }, \ - { /* 07 */ \ - UTP_REGT_BITS, SUNI_REGO_CLKREC_LITE, \ - SUNI_REGN_CLKREC, SUNI_REGX_CLKREC_LITE }, \ - /* 08-0F unused */ \ - { /* 10 */ \ - UTP_REGT_BITS, SUNI_REGO_RSOPCIE, \ - SUNI_REGN_RSOPCIE, SUNI_REGX_RSOPCIE }, \ - { /* 11 */ \ - UTP_REGT_BITS, SUNI_REGO_RSOPSIS, \ - SUNI_REGN_RSOPSIS, SUNI_REGX_RSOPSIS }, \ - { /* 12, 13 */ \ - UTP_REGT_INT16, SUNI_REGO_RSOP_BIP8, \ - SUNI_REGN_RSOP_BIP8, NULL }, \ - { /* 14 */ \ - UTP_REGT_BITS, SUNI_REGO_TSOPCTRL, \ - SUNI_REGN_TSOPCTRL, SUNI_REGX_TSOPCTRL }, \ - { /* 15 */ \ - UTP_REGT_BITS, SUNI_REGO_TSOPDIAG, \ - SUNI_REGN_TSOPDIAG, SUNI_REGX_TSOPDIAG }, \ - /* 16-17 unused */ \ - { /* 18 */ \ - UTP_REGT_BITS, SUNI_REGO_RLOPCTRL, \ - SUNI_REGN_RLOPCTRL, SUNI_REGX_RLOPCTRL }, \ - { /* 19 */ \ - UTP_REGT_BITS, SUNI_REGO_RLOPINTR, \ - SUNI_REGN_RLOPINTR, SUNI_REGX_RLOPINTR }, \ - { /* 1A, 1B, 1C */ \ - UTP_REGT_INT20, SUNI_REGO_RLOPBIP8_24, \ - SUNI_REGN_RLOPBIP8_24, NULL }, \ - { /* 1D, 1E, 1F */ \ - UTP_REGT_INT20, SUNI_REGO_RLOPFEBE, \ - SUNI_REGN_RLOPFEBE, NULL }, \ - { /* 20 */ \ - UTP_REGT_BITS, SUNI_REGO_TLOPCTRL, \ - SUNI_REGN_TLOPCTRL, SUNI_REGX_TLOPCTRL }, \ - { /* 21 */ \ - UTP_REGT_BITS, SUNI_REGO_TLOPDIAG, \ - SUNI_REGN_TLOPDIAG, SUNI_REGX_TLOPDIAG }, \ - /* 22-2F unused */ \ - { /* 30 */ \ - UTP_REGT_BITS, SUNI_REGO_RPOPCTRL, \ - SUNI_REGN_RPOPCTRL, SUNI_REGX_RPOPCTRL }, \ - { /* 31 */ \ - UTP_REGT_BITS, SUNI_REGO_RPOPISTAT, \ - SUNI_REGN_RPOPISTAT, SUNI_REGX_RPOPISTAT }, \ - /* 32 unused */ \ - { /* 33 */ \ - UTP_REGT_BITS, SUNI_REGO_RPOPIEN, \ - SUNI_REGN_RPOPIEN, SUNI_REGX_RPOPIEN }, \ - /* 34-36 unused */ \ - { /* 37 */ \ - UTP_REGT_INT8, SUNI_REGO_RPOPPSL, \ - SUNI_REGN_RPOPPSL, NULL }, \ - { /* 38, 39 */ \ - UTP_REGT_INT16, SUNI_REGO_RPOPBIP8, \ - SUNI_REGN_RPOPBIP8, NULL }, \ - { /* 3A, 3B */ \ - UTP_REGT_INT16, SUNI_REGO_RPOPFEBE, \ - SUNI_REGN_RPOPFEBE, NULL }, \ - /* 3C unused */ \ - { /* 3D */ \ - UTP_REGT_BITS, SUNI_REGO_RPOPBIP8CFG, \ - SUNI_REGN_RPOPBIP8CFG, SUNI_REGX_RPOPBIP8CFG }, \ - /* 3E-3F unused */ \ - { /* 40 */ \ - UTP_REGT_BITS, SUNI_REGO_TPOPCTRL, \ - SUNI_REGN_TPOPCTRL, SUNI_REGX_TPOPCTRL }, \ - { /* 41 */ \ - UTP_REGT_BITS, SUNI_REGO_TPOPPTRC, \ - SUNI_REGN_TPOPPTRC, SUNI_REGX_TPOPPTRC }, \ - /* 42-44 unused */ \ - { /* 45, 46 */ \ - UTP_REGT_INT10BITS, SUNI_REGO_TPOPAPTR, \ - SUNI_REGN_TPOPAPTR, SUNI_REGX_TPOPAPTR }, \ - /* 47 unused */ \ - { /* 48 */ \ - UTP_REGT_INT8, SUNI_REGO_TPOPPSL, \ - SUNI_REGN_TPOPPSL, NULL }, \ - { /* 49 */ \ - UTP_REGT_BITS, SUNI_REGO_TPOPSTATUS, \ - SUNI_REGN_TPOPSTATUS, SUNI_REGX_TPOPSTATUS }, \ - /* 4A-4F unused */ \ - { /* 50 */ \ - UTP_REGT_BITS, SUNI_REGO_RACPCTRL, \ - SUNI_REGN_RACPCTRL, SUNI_REGX_RACPCTRL }, \ - { /* 51 */ \ - UTP_REGT_BITS, SUNI_REGO_RACPINTR, \ - SUNI_REGN_RACPINTR, SUNI_REGX_RACPINTR }, \ - { /* 52 */ \ - UTP_REGT_BITS, SUNI_REGO_RACPPATTERN, \ - SUNI_REGN_RACPPATTERN, SUNI_REGX_RACPPATTERN }, \ - { /* 53 */ \ - UTP_REGT_BITS, SUNI_REGO_RACPMASK, \ - SUNI_REGN_RACPMASK, SUNI_REGX_RACPMASK }, \ - { /* 54 */ \ - UTP_REGT_INT8, SUNI_REGO_RACPCHCS, \ - SUNI_REGN_RACPCHCS, NULL }, \ - { /* 55 */ \ - UTP_REGT_INT8, SUNI_REGO_RACPUHCS, \ - SUNI_REGN_RACPUHCS, NULL }, \ - { /* 56, 57, 58 */ \ - UTP_REGT_INT19, SUNI_REGO_RACPCNT, \ - SUNI_REGN_RACPCNT, NULL }, \ - { /* 59 */ \ - UTP_REGT_BITS, SUNI_REGO_RACPCFG, \ - SUNI_REGN_RACPCFG, SUNI_REGX_RACPCFG }, \ - /* 5A-5F unused */ \ - { /* 60 */ \ - UTP_REGT_BITS, SUNI_REGO_TACPCTRL, \ - SUNI_REGN_TACPCTRL, SUNI_REGX_TACPCTRL_LITE }, \ - { /* 61 */ \ - UTP_REGT_BITS, SUNI_REGO_TACPIDLEH, \ - SUNI_REGN_TACPIDLEH, SUNI_REGX_TACPIDLEH }, \ - { /* 62 */ \ - UTP_REGT_INT8, SUNI_REGO_TACPIDLEP, \ - SUNI_REGN_TACPIDLEP, NULL }, \ - { /* 63 */ \ - UTP_REGT_BITS, SUNI_REGO_TACPFIFOC, \ - SUNI_REGN_TACPFIFOC, SUNI_REGX_TACPFIFOC }, \ - { /* 64, 65, 66 */ \ - UTP_REGT_INT19, SUNI_REGO_TACPCNT, \ - SUNI_REGN_TACPCNT, NULL }, \ - { /* 67 */ \ - UTP_REGT_BITS, SUNI_REGO_TACPGFC, \ - SUNI_REGN_TACPGFC, SUNI_REGX_TACPGFC }, \ - /* 68-7f unused */ \ - { /* 80 */ \ - UTP_REGT_BITS, SUNI_REGO_MTEST, \ - SUNI_REGN_MTEST, SUNI_REGX_MTEST_LITE } - -#define SUNI_PRINT_ULTRA \ - { /* 00 */ \ - UTP_REGT_BITS, SUNI_REGO_MRESET, \ - SUNI_REGN_MRESET, SUNI_REGX_MRESET_ULTRA }, \ - { /* 01 */ \ - UTP_REGT_BITS, SUNI_REGO_MCONFIG, \ - SUNI_REGN_MCONFIG, SUNI_REGX_MCONFIG_ULTRA }, \ - { /* 02 */ \ - UTP_REGT_BITS, SUNI_REGO_MISTATUS, \ - SUNI_REGN_MISTATUS, SUNI_REGX_MISTATUS_ULTRA }, \ - { /* 03 */ \ - UTP_REGT_BITS, SUNI_REGO_MMCTRL, \ - SUNI_REGN_MMCTRL, SUNI_REGX_MMCTRL }, \ - { /* 04 */ \ - UTP_REGT_BITS, SUNI_REGO_MCLKM, \ - SUNI_REGN_MCLKM, SUNI_REGX_MCLKM_ULTRA }, \ - { /* 05 */ \ - UTP_REGT_BITS, SUNI_REGO_MCTRL, \ - SUNI_REGN_MCTRL, SUNI_REGX_MCTRL_ULTRA }, \ - { /* 06 */ \ - UTP_REGT_BITS, SUNI_REGO_CLKSYN, \ - SUNI_REGN_CLKSYN, SUNI_REGX_CLKSYN_ULTRA }, \ - /* 07 unused */ \ - { /* 08 */ \ - UTP_REGT_BITS, SUNI_REGO_CLKREC_ULTRA, \ - SUNI_REGN_CLKREC, SUNI_REGX_CLKREC_ULTRA }, \ - { /* 09 */ \ - UTP_REGT_BITS, SUNI_REGO_CLKRECCFG, \ - SUNI_REGN_CLKRECCFG, SUNI_REGX_CLKRECCFG }, \ - { /* 0A */ \ - UTP_REGT_BITS, SUNI_REGO_LTXCFG1, \ - SUNI_REGN_LTXCFG1, SUNI_REGX_LTXCFG1 }, \ - { /* 0B */ \ - UTP_REGT_BITS, SUNI_REGO_LTXCFG2, \ - SUNI_REGN_LTXCFG2, SUNI_REGX_LTXCFG2 }, \ - { /* 0C */ \ - UTP_REGT_BITS, SUNI_REGO_LRXCFG, \ - SUNI_REGN_LRXCFG, SUNI_REGX_LRXCFG }, \ - /* 0D-0F unused */ \ - { /* 10 */ \ - UTP_REGT_BITS, SUNI_REGO_RSOPCIE, \ - SUNI_REGN_RSOPCIE, SUNI_REGX_RSOPCIE }, \ - { /* 11 */ \ - UTP_REGT_BITS, SUNI_REGO_RSOPSIS, \ - SUNI_REGN_RSOPSIS, SUNI_REGX_RSOPSIS }, \ - { /* 12, 13 */ \ - UTP_REGT_INT16, SUNI_REGO_RSOP_BIP8, \ - SUNI_REGN_RSOP_BIP8, NULL }, \ - { /* 14 */ \ - UTP_REGT_BITS, SUNI_REGO_TSOPCTRL, \ - SUNI_REGN_TSOPCTRL, SUNI_REGX_TSOPCTRL }, \ - { /* 15 */ \ - UTP_REGT_BITS, SUNI_REGO_TSOPDIAG, \ - SUNI_REGN_TSOPDIAG, SUNI_REGX_TSOPDIAG }, \ - /* 16-17 unused */ \ - { /* 18 */ \ - UTP_REGT_BITS, SUNI_REGO_RLOPCTRL, \ - SUNI_REGN_RLOPCTRL, SUNI_REGX_RLOPCTRL }, \ - { /* 19 */ \ - UTP_REGT_BITS, SUNI_REGO_RLOPINTR, \ - SUNI_REGN_RLOPINTR, SUNI_REGX_RLOPINTR }, \ - { /* 1A, 1B, 1C */ \ - UTP_REGT_INT20, SUNI_REGO_RLOPBIP8_24, \ - SUNI_REGN_RLOPBIP8_24, NULL }, \ - { /* 1D, 1E, 1F */ \ - UTP_REGT_INT20, SUNI_REGO_RLOPFEBE, \ - SUNI_REGN_RLOPFEBE, NULL }, \ - { /* 20 */ \ - UTP_REGT_BITS, SUNI_REGO_TLOPCTRL, \ - SUNI_REGN_TLOPCTRL, SUNI_REGX_TLOPCTRL }, \ - { /* 21 */ \ - UTP_REGT_BITS, SUNI_REGO_TLOPDIAG, \ - SUNI_REGN_TLOPDIAG, SUNI_REGX_TLOPDIAG }, \ - /* 22-2F unused */ \ - { /* 30 */ \ - UTP_REGT_BITS, SUNI_REGO_RPOPCTRL, \ - SUNI_REGN_RPOPCTRL, SUNI_REGX_RPOPCTRL }, \ - { /* 31 */ \ - UTP_REGT_BITS, SUNI_REGO_RPOPISTAT, \ - SUNI_REGN_RPOPISTAT, SUNI_REGX_RPOPISTAT }, \ - /* 32 unused */ \ - { /* 33 */ \ - UTP_REGT_BITS, SUNI_REGO_RPOPIEN, \ - SUNI_REGN_RPOPIEN, SUNI_REGX_RPOPIEN }, \ - /* 34-36 unused */ \ - { /* 37 */ \ - UTP_REGT_INT8, SUNI_REGO_RPOPPSL, \ - SUNI_REGN_RPOPPSL, NULL }, \ - { /* 38, 39 */ \ - UTP_REGT_INT16, SUNI_REGO_RPOPBIP8, \ - SUNI_REGN_RPOPBIP8, NULL }, \ - { /* 3A, 3B */ \ - UTP_REGT_INT16, SUNI_REGO_RPOPFEBE, \ - SUNI_REGN_RPOPFEBE, NULL }, \ - /* 3C unused */ \ - { /* 3D */ \ - UTP_REGT_BITS, SUNI_REGO_RPOPBIP8CFG, \ - SUNI_REGN_RPOPBIP8CFG, SUNI_REGX_RPOPBIP8CFG }, \ - /* 3E-3F unused */ \ - { /* 40 */ \ - UTP_REGT_BITS, SUNI_REGO_TPOPCTRL, \ - SUNI_REGN_TPOPCTRL, SUNI_REGX_TPOPCTRL }, \ - { /* 41 */ \ - UTP_REGT_BITS, SUNI_REGO_TPOPPTRC, \ - SUNI_REGN_TPOPPTRC, SUNI_REGX_TPOPPTRC }, \ - /* 42-44 unused */ \ - { /* 45, 46 */ \ - UTP_REGT_INT10BITS, SUNI_REGO_TPOPAPTR, \ - SUNI_REGN_TPOPAPTR, SUNI_REGX_TPOPAPTR }, \ - /* 47 unused */ \ - { /* 48 */ \ - UTP_REGT_INT8, SUNI_REGO_TPOPPSL, \ - SUNI_REGN_TPOPPSL, NULL }, \ - { /* 49 */ \ - UTP_REGT_BITS, SUNI_REGO_TPOPSTATUS, \ - SUNI_REGN_TPOPSTATUS, SUNI_REGX_TPOPSTATUS }, \ - /* 4A-4F unused */ \ - { /* 50 */ \ - UTP_REGT_BITS, SUNI_REGO_RACPCTRL, \ - SUNI_REGN_RACPCTRL, SUNI_REGX_RACPCTRL }, \ - { /* 51 */ \ - UTP_REGT_BITS, SUNI_REGO_RACPINTR, \ - SUNI_REGN_RACPINTR, SUNI_REGX_RACPINTR }, \ - { /* 52 */ \ - UTP_REGT_BITS, SUNI_REGO_RACPPATTERN, \ - SUNI_REGN_RACPPATTERN, SUNI_REGX_RACPPATTERN }, \ - { /* 53 */ \ - UTP_REGT_BITS, SUNI_REGO_RACPMASK, \ - SUNI_REGN_RACPMASK, SUNI_REGX_RACPMASK }, \ - { /* 54 */ \ - UTP_REGT_INT8, SUNI_REGO_RACPCHCS, \ - SUNI_REGN_RACPCHCS, NULL }, \ - { /* 55 */ \ - UTP_REGT_INT8, SUNI_REGO_RACPUHCS, \ - SUNI_REGN_RACPUHCS, NULL }, \ - { /* 56, 57, 58 */ \ - UTP_REGT_INT19, SUNI_REGO_RACPCNT, \ - SUNI_REGN_RACPCNT, NULL }, \ - { /* 59 */ \ - UTP_REGT_BITS, SUNI_REGO_RACPCFG, \ - SUNI_REGN_RACPCFG, SUNI_REGX_RACPCFG }, \ - /* 5A-5F unused */ \ - { /* 60 */ \ - UTP_REGT_BITS, SUNI_REGO_TACPCTRL, \ - SUNI_REGN_TACPCTRL, SUNI_REGX_TACPCTRL_ULTRA }, \ - { /* 61 */ \ - UTP_REGT_BITS, SUNI_REGO_TACPIDLEH, \ - SUNI_REGN_TACPIDLEH, SUNI_REGX_TACPIDLEH }, \ - { /* 62 */ \ - UTP_REGT_INT8, SUNI_REGO_TACPIDLEP, \ - SUNI_REGN_TACPIDLEP, NULL }, \ - { /* 63 */ \ - UTP_REGT_BITS, SUNI_REGO_TACPFIFOC, \ - SUNI_REGN_TACPFIFOC, SUNI_REGX_TACPFIFOC }, \ - { /* 64, 65, 66 */ \ - UTP_REGT_INT19, SUNI_REGO_TACPCNT, \ - SUNI_REGN_TACPCNT, NULL }, \ - { /* 67 */ \ - UTP_REGT_BITS, SUNI_REGO_TACPGFC, \ - SUNI_REGN_TACPGFC, SUNI_REGX_TACPGFC }, \ - { /* 68 */ \ - UTP_REGT_BITS, SUNI_REGO_POPCCTRL, \ - SUNI_REGN_POPCCTRL, SUNI_REGX_POPCCTRL }, \ - { /* 69 */ \ - UTP_REGT_INT8, SUNI_REGO_POPCSTROBE0, \ - SUNI_REGN_POPCSTROBE0, NULL }, \ - { /* 6A */ \ - UTP_REGT_INT8, SUNI_REGO_POPCSTROBE1, \ - SUNI_REGN_POPCSTROBE1, NULL }, \ - /* 6B-7f unused */ \ - { /* 80 */ \ - UTP_REGT_BITS, SUNI_REGO_MTEST, \ - SUNI_REGN_MTEST, SUNI_REGX_MTEST_ULTRA } - -#define SUNI_PRINT_622 \ - { /* 00 */ \ - UTP_REGT_BITS, SUNI_REGO_MRESET, \ - SUNI_REGN_MRESET, SUNI_REGX_MRESET_622 }, \ - { /* 01 */ \ - UTP_REGT_BITS, SUNI_REGO_MCONFIG, \ - SUNI_REGN_MCONFIG, SUNI_REGX_MCONFIG_622 }, \ - { /* 02 */ \ - UTP_REGT_BITS, SUNI_REGO_MISTATUS, \ - SUNI_REGN_MISTATUS, SUNI_REGX_MISTATUS_622 }, \ - { /* 03 */ \ - UTP_REGT_BITS, SUNI_REGO_PISO, \ - SUNI_REGN_PISO, SUNI_REGX_PISO }, \ - { /* 04 */ \ - UTP_REGT_BITS, SUNI_REGO_MCTRLM, \ - SUNI_REGN_MCTRLM, SUNI_REGX_MCTRLM }, \ - { /* 05 */ \ - UTP_REGT_BITS, SUNI_REGO_MALARM, \ - SUNI_REGN_MALARM, SUNI_REGX_MALARM }, \ - { /* 06 */ \ - UTP_REGT_BITS, SUNI_REGO_POUT, \ - SUNI_REGN_POUT, SUNI_REGX_POUT }, \ - { /* 07 */ \ - UTP_REGT_INT8, SUNI_REGO_PIN, \ - SUNI_REGN_PIN, NULL }, \ - { /* 08 */ \ - UTP_REGT_BITS, SUNI_REGO_PINV, \ - SUNI_REGN_PINV, SUNI_REGX_PINV }, \ - { /* 09 */ \ - UTP_REGT_INT8, SUNI_REGO_PINE, \ - SUNI_REGN_PINE, NULL }, \ - { /* 0A */ \ - UTP_REGT_INT8, SUNI_REGO_XC1, \ - SUNI_REGN_XC1, NULL }, \ - { /* 0B */ \ - UTP_REGT_BITS, SUNI_REGO_APSCS, \ - SUNI_REGN_APSCS, SUNI_REGX_APSCS }, \ - { /* 0C */ \ - UTP_REGT_INT8, SUNI_REGO_RK1, \ - SUNI_REGN_RK1, NULL }, \ - { /* 0D */ \ - UTP_REGT_INT8, SUNI_REGO_RK2, \ - SUNI_REGN_RK2, NULL }, \ - { /* 0E */ \ - UTP_REGT_INT8, SUNI_REGO_RZ1, \ - SUNI_REGN_RZ1, NULL }, \ - { /* 0F */ \ - UTP_REGT_INT8, SUNI_REGO_XZ1, \ - SUNI_REGN_XZ1, NULL }, \ - { /* 10 */ \ - UTP_REGT_BITS, SUNI_REGO_RSOPCIE, \ - SUNI_REGN_RSOPCIE, SUNI_REGX_RSOPCIE_622 }, \ - { /* 11 */ \ - UTP_REGT_BITS, SUNI_REGO_RSOPSIS, \ - SUNI_REGN_RSOPSIS, SUNI_REGX_RSOPSIS }, \ - { /* 12, 13 */ \ - UTP_REGT_INT16, SUNI_REGO_RSOP_BIP8, \ - SUNI_REGN_RSOP_BIP8, NULL }, \ - { /* 14 */ \ - UTP_REGT_BITS, SUNI_REGO_TSOPCTRL, \ - SUNI_REGN_TSOPCTRL, SUNI_REGX_TSOPCTRL }, \ - { /* 15 */ \ - UTP_REGT_BITS, SUNI_REGO_TSOPDIAG, \ - SUNI_REGN_TSOPDIAG, SUNI_REGX_TSOPDIAG }, \ - /* 16-17 unused */ \ - { /* 18 */ \ - UTP_REGT_BITS, SUNI_REGO_RLOPCTRL, \ - SUNI_REGN_RLOPCTRL, SUNI_REGX_RLOPCTRL_622 }, \ - { /* 19 */ \ - UTP_REGT_BITS, SUNI_REGO_RLOPINTR, \ - SUNI_REGN_RLOPINTR, SUNI_REGX_RLOPINTR }, \ - { /* 1A, 1B, 1C */ \ - UTP_REGT_INT20, SUNI_REGO_RLOPBIP8_24_96, \ - SUNI_REGN_RLOPBIP8_24_96, NULL }, \ - { /* 1D, 1E, 1F */ \ - UTP_REGT_INT20, SUNI_REGO_RLOPFEBE, \ - SUNI_REGN_RLOPFEBE, NULL }, \ - { /* 20 */ \ - UTP_REGT_BITS, SUNI_REGO_TLOPCTRL, \ - SUNI_REGN_TLOPCTRL, SUNI_REGX_TLOPCTRL_622 }, \ - { /* 21 */ \ - UTP_REGT_BITS, SUNI_REGO_TLOPDIAG, \ - SUNI_REGN_TLOPDIAG, SUNI_REGX_TLOPDIAG }, \ - { /* 22 */ \ - UTP_REGT_INT8, SUNI_REGO_TLOP_XK1, \ - SUNI_REGN_TLOP_XK1, NULL }, \ - { /* 23 */ \ - UTP_REGT_INT8, SUNI_REGO_TLOP_XK2, \ - SUNI_REGN_TLOP_XK2, NULL }, \ - /* 24-27 unused */ \ - { /* 28 */ \ - UTP_REGT_BITS, SUNI_REGO_SSTBCTRL, \ - SUNI_REGN_SSTBCTRL, SUNI_REGX_SSTBCTRL }, \ - { /* 29 */ \ - UTP_REGT_BITS, SUNI_REGO_SSTBSTIS, \ - SUNI_REGN_SSTBSTIS, SUNI_REGX_SSTBSTIS }, \ - { /* 2A */ \ - UTP_REGT_BITS, SUNI_REGO_SSTBIAR, \ - SUNI_REGN_SSTBIAR, SUNI_REGX_SSTBIAR }, \ - { /* 2B */ \ - UTP_REGT_INT8, SUNI_REGO_SSTBIDR, \ - SUNI_REGN_SSTBIDR, NULL }, \ - /* 2C unused (see chip errata) */ \ - { /* 2D */ \ - UTP_REGT_BITS, SUNI_REGO_SSTBCSMS, \ - SUNI_REGN_SSTBCSMS, SUNI_REGX_SSTBCSMS }, \ - /* 2E-2F unused */ \ - { /* 30 */ \ - UTP_REGT_BITS, SUNI_REGO_RPOPCTRL, \ - SUNI_REGN_RPOPCTRL, SUNI_REGX_RPOPCTRL_622 }, \ - { /* 31 */ \ - UTP_REGT_BITS, SUNI_REGO_RPOPISTAT, \ - SUNI_REGN_RPOPISTAT, SUNI_REGX_RPOPISTAT }, \ - { /* 32 */ \ - UTP_REGT_BITS, SUNI_REGO_RPOPPIS, \ - SUNI_REGN_RPOPPIS, SUNI_REGX_RPOPPIS }, \ - { /* 33 */ \ - UTP_REGT_BITS, SUNI_REGO_RPOPIEN, \ - SUNI_REGN_RPOPIEN, SUNI_REGX_RPOPIEN }, \ - { /* 34 */ \ - UTP_REGT_BITS, SUNI_REGO_RPOPPIE, \ - SUNI_REGN_RPOPPIE, SUNI_REGX_RPOPPIE }, \ - { /* 35, 36 */ \ - UTP_REGT_INT10BITS, SUNI_REGO_RPOPPTR, \ - SUNI_REGN_RPOPPTR, SUNI_REGX_RPOPPTR }, \ - { /* 37 */ \ - UTP_REGT_INT8, SUNI_REGO_RPOPPSL, \ - SUNI_REGN_RPOPPSL, NULL }, \ - { /* 38, 39 */ \ - UTP_REGT_INT16, SUNI_REGO_RPOPBIP8, \ - SUNI_REGN_RPOPBIP8, NULL }, \ - { /* 3A, 3B */ \ - UTP_REGT_INT16, SUNI_REGO_RPOPFEBE, \ - SUNI_REGN_RPOPFEBE, NULL }, \ - { /* 3C */ \ - UTP_REGT_BITS, SUNI_REGO_RPOPRDI, \ - SUNI_REGN_RPOPRDI, SUNI_REGX_RPOPRDI }, \ - { /* 3D */ \ - UTP_REGT_BITS, SUNI_REGO_RPOPRING, \ - SUNI_REGN_RPOPRING, SUNI_REGX_RPOPRING }, \ - /* 3E-3F unused */ \ - { /* 40 */ \ - UTP_REGT_BITS, SUNI_REGO_TPOPCTRL, \ - SUNI_REGN_TPOPCTRL, SUNI_REGX_TPOPCTRL_622 }, \ - { /* 41 */ \ - UTP_REGT_BITS, SUNI_REGO_TPOPPTRC, \ - SUNI_REGN_TPOPPTRC, SUNI_REGX_TPOPPTRC }, \ - /* 42 unused */ \ - { /* 43, 44 */ \ - UTP_REGT_INT10BITS, SUNI_REGO_TPOPCP, \ - SUNI_REGN_TPOPCP, SUNI_REGX_TPOPCP }, \ - { /* 45, 46 */ \ - UTP_REGT_INT10BITS, SUNI_REGO_TPOPAPTR, \ - SUNI_REGN_TPOPAPTR, SUNI_REGX_TPOPAPTR }, \ - { /* 47 */ \ - UTP_REGT_INT8, SUNI_REGO_TPOPPT, \ - SUNI_REGN_TPOPPT, NULL }, \ - { /* 48 */ \ - UTP_REGT_INT8, SUNI_REGO_TPOPPSL, \ - SUNI_REGN_TPOPPSL, NULL }, \ - { /* 49 */ \ - UTP_REGT_BITS, SUNI_REGO_TPOPSTATUS, \ - SUNI_REGN_TPOPSTATUS, SUNI_REGX_TPOPSTATUS }, \ - { /* 4A */ \ - UTP_REGT_INT8, SUNI_REGO_TPOPPUC, \ - SUNI_REGN_TPOPPUC, NULL }, \ - { /* 4B */ \ - UTP_REGT_INT8, SUNI_REGO_TPOPPG1, \ - SUNI_REGN_TPOPPG1, NULL }, \ - { /* 4C */ \ - UTP_REGT_INT8, SUNI_REGO_TPOPPG2, \ - SUNI_REGN_TPOPPG2, NULL }, \ - { /* 4D */ \ - UTP_REGT_INT8, SUNI_REGO_TPOPPG3, \ - SUNI_REGN_TPOPPG3, NULL }, \ - /* 4E-4F unused */ \ - { /* 50 */ \ - UTP_REGT_BITS, SUNI_REGO_RACPCTRL, \ - SUNI_REGN_RACPCTRL, SUNI_REGX_RACPCTRL_622 }, \ - { /* 51 */ \ - UTP_REGT_BITS, SUNI_REGO_RACPIS, \ - SUNI_REGN_RACPIS, SUNI_REGX_RACPIS }, \ - { /* 52 */ \ - UTP_REGT_BITS, SUNI_REGO_RACPIEC, \ - SUNI_REGN_RACPIEC, SUNI_REGX_RACPIEC }, \ - { /* 53 */ \ - UTP_REGT_BITS, SUNI_REGO_RACPPATTERN_622, \ - SUNI_REGN_RACPPATTERN, SUNI_REGX_RACPPATTERN }, \ - { /* 54 */ \ - UTP_REGT_BITS, SUNI_REGO_RACPMASK_622, \ - SUNI_REGN_RACPMASK, SUNI_REGX_RACPMASK }, \ - { /* 55, 56 */ \ - UTP_REGT_INT12, SUNI_REGO_RACPCHCS_622, \ - SUNI_REGN_RACPCHCS, NULL }, \ - { /* 57, 58 */ \ - UTP_REGT_INT12, SUNI_REGO_RACPUHCS_622, \ - SUNI_REGN_RACPUHCS, NULL }, \ - { /* 59, 5A, 5B */ \ - UTP_REGT_INT21, SUNI_REGO_RACPCNT_622, \ - SUNI_REGN_RACPCNT, NULL }, \ - { /* 5C */ \ - UTP_REGT_BITS, SUNI_REGO_RACPGFC, \ - SUNI_REGN_RACPGFC, SUNI_REGX_RACPGFC }, \ - /* 5D-5F unused */ \ - { /* 60 */ \ - UTP_REGT_BITS, SUNI_REGO_TACPCTRL, \ - SUNI_REGN_TACPCTRL, SUNI_REGX_TACPCTRL_622 }, \ - { /* 61 */ \ - UTP_REGT_BITS, SUNI_REGO_TACPIDLEH, \ - SUNI_REGN_TACPIDLEH, SUNI_REGX_TACPIDLEH }, \ - { /* 62 */ \ - UTP_REGT_INT8, SUNI_REGO_TACPIDLEP, \ - SUNI_REGN_TACPIDLEP, NULL }, \ - { /* 63 */ \ - UTP_REGT_BITS, SUNI_REGO_TACPFIFOC, \ - SUNI_REGN_TACPFIFOC, SUNI_REGX_TACPFIFOC_622 }, \ - { /* 64, 65, 66 */ \ - UTP_REGT_INT21, SUNI_REGO_TACPCNT, \ - SUNI_REGN_TACPCNT, NULL }, \ - { /* 67 */ \ - UTP_REGT_BITS, SUNI_REGO_TACPGFC, \ - SUNI_REGN_TACPGFC, SUNI_REGX_TACPGFC }, \ - { /* 68 */ \ - UTP_REGT_BITS, SUNI_REGO_SPTBCTRL, \ - SUNI_REGN_SPTBCTRL, SUNI_REGX_SPTBCTRL }, \ - { /* 69 */ \ - UTP_REGT_BITS, SUNI_REGO_SPTBPTIS, \ - SUNI_REGN_SPTBPTIS, SUNI_REGX_SPTBPTIS }, \ - { /* 6A */ \ - UTP_REGT_BITS, SUNI_REGO_SPTBIAR, \ - SUNI_REGN_SPTBIAR, SUNI_REGX_SPTBIAR }, \ - { /* 6B */ \ - UTP_REGT_INT8, SUNI_REGO_SPTBIDR, \ - SUNI_REGN_SPTBIDR, NULL }, \ - { /* 6C */ \ - UTP_REGT_INT8, SUNI_REGO_SPTBEPSL, \ - SUNI_REGN_SPTBEPSL, NULL }, \ - { /* 6D */ \ - UTP_REGT_BITS, SUNI_REGO_SPTBPSLS, \ - SUNI_REGN_SPTBPSLS, SUNI_REGX_SPTBPSLS }, \ - /* 6E-6F unused */ \ - { /* 70 */ \ - UTP_REGT_BITS, SUNI_REGO_BERMCTRL, \ - SUNI_REGN_BERMCTRL, SUNI_REGX_BERMCTRL }, \ - { /* 71 */ \ - UTP_REGT_BITS, SUNI_REGO_BERMINT, \ - SUNI_REGN_BERMINT, SUNI_REGX_BERMINT }, \ - { /* 72, 73 */ \ - UTP_REGT_INT16, SUNI_REGO_BERMLAP, \ - SUNI_REGN_BERMLAP, NULL }, \ - { /* 74, 75 */ \ - UTP_REGT_INT16, SUNI_REGO_BERMLT, \ - SUNI_REGN_BERMLT, NULL }, \ - /* 76-7f unused */ \ - { /* 80 */ \ - UTP_REGT_BITS, SUNI_REGO_MTEST, \ - SUNI_REGN_MTEST, SUNI_REGX_MTEST_622 } - -#endif /* _DEV_UTOPIA_SUNI_H */ diff --git a/sys/dev/utopia/utopia.c b/sys/dev/utopia/utopia.c deleted file mode 100644 index a4e7331fffc0..000000000000 --- a/sys/dev/utopia/utopia.c +++ /dev/null @@ -1,675 +0,0 @@ -/*- - * Copyright (c) 2003 - * Fraunhofer Institute for Open Communication Systems (FhG Fokus). - * All rights reserved. - * - * Author: Hartmut Brandt <harti@freebsd.org> - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/unistd.h> -#include <sys/kernel.h> -#include <sys/kthread.h> -#include <sys/proc.h> -#include <sys/bus.h> -#include <sys/malloc.h> -#include <sys/module.h> -#include <sys/sysctl.h> -#include <sys/lock.h> -#include <sys/mutex.h> -#include <sys/socket.h> - -#include <net/if.h> -#include <net/if_var.h> -#include <net/if_media.h> -#include <net/if_atm.h> - -#include <dev/utopia/suni.h> -#include <dev/utopia/idtphy.h> -#include <dev/utopia/utopia.h> -#include <dev/utopia/utopia_priv.h> - -/* known chips */ -extern const struct utopia_chip utopia_chip_idt77155; -extern const struct utopia_chip utopia_chip_idt77105; -extern const struct utopia_chip utopia_chip_lite; -extern const struct utopia_chip utopia_chip_ultra; -extern const struct utopia_chip utopia_chip_622; - -/* - * Global list of all registered interfaces - */ -static struct mtx utopia_list_mtx; -static LIST_HEAD(, utopia) utopia_list = LIST_HEAD_INITIALIZER(utopia_list); - -#define UTP_RLOCK_LIST() mtx_lock(&utopia_list_mtx) -#define UTP_RUNLOCK_LIST() mtx_unlock(&utopia_list_mtx) -#define UTP_WLOCK_LIST() mtx_lock(&utopia_list_mtx) -#define UTP_WUNLOCK_LIST() mtx_unlock(&utopia_list_mtx) - -#define UTP_LOCK(UTP) mtx_lock((UTP)->lock) -#define UTP_UNLOCK(UTP) mtx_unlock((UTP)->lock) -#define UTP_LOCK_ASSERT(UTP) mtx_assert((UTP)->lock, MA_OWNED) - -static struct proc *utopia_kproc; - -static void utopia_dump(struct utopia *) __unused; - -/* - * Read a multi-register value. - */ -uint32_t -utopia_update(struct utopia *utp, u_int reg, u_int nreg, uint32_t mask) -{ - int err; - u_int n; - uint8_t regs[4]; - uint32_t val; - - n = nreg; - if ((err = UTP_READREGS(utp, reg, regs, &n)) != 0) { -#ifdef DIAGNOSTIC - printf("%s: register read error %s(%u,%u): %d\n", __func__, - utp->chip->name, reg, nreg, err); -#endif - return (0); - } - if (n < nreg) { -#ifdef DIAGNOSTIC - printf("%s: got only %u regs %s(%u,%u): %d\n", __func__, n, - utp->chip->name, reg, nreg, err); -#endif - return (0); - } - val = 0; - for (n = nreg; n > 0; n--) { - val <<= 8; - val |= regs[n - 1]; - } - return (val & mask); -} - -/* - * Debugging - dump all registers. - */ -static void -utopia_dump(struct utopia *utp) -{ - uint8_t regs[256]; - u_int n = 256, i; - int err; - - if ((err = UTP_READREGS(utp, 0, regs, &n)) != 0) { - printf("UTOPIA reg read error %d\n", err); - return; - } - for (i = 0; i < n; i++) { - if (i % 16 == 0) - printf("%02x:", i); - if (i % 16 == 8) - printf(" "); - printf(" %02x", regs[i]); - if (i % 16 == 15) - printf("\n"); - } - if (i % 16 != 0) - printf("\n"); -} - -/* - * Update the carrier status - */ -void -utopia_check_carrier(struct utopia *utp, u_int carr_ok) -{ - int old; - - old = utp->carrier; - if (carr_ok) { - /* carrier */ - utp->carrier = UTP_CARR_OK; - if (old != UTP_CARR_OK) { - if_printf(utp->ifatm->ifp, "carrier detected\n"); - ATMEV_SEND_IFSTATE_CHANGED(utp->ifatm, 1); - } - } else { - /* no carrier */ - utp->carrier = UTP_CARR_LOST; - if (old == UTP_CARR_OK) { - if_printf(utp->ifatm->ifp, "carrier lost\n"); - ATMEV_SEND_IFSTATE_CHANGED(utp->ifatm, 0); - } - } -} - -static int -unknown_inval(struct utopia *utp, int what __unused) -{ - - return (EINVAL); -} - -static int -unknown_reset(struct utopia *utp __unused) -{ - return (EIO); -} - -static int -unknown_update_carrier(struct utopia *utp) -{ - utp->carrier = UTP_CARR_UNKNOWN; - return (0); -} - -static int -unknown_set_loopback(struct utopia *utp __unused, u_int mode __unused) -{ - return (EINVAL); -} - -static void -unknown_intr(struct utopia *utp __unused) -{ -} - -static void -unknown_update_stats(struct utopia *utp __unused) -{ -} - -static const struct utopia_chip utopia_chip_unknown = { - UTP_TYPE_UNKNOWN, - "unknown", - 0, - unknown_reset, - unknown_inval, - unknown_inval, - unknown_inval, - unknown_update_carrier, - unknown_set_loopback, - unknown_intr, - unknown_update_stats, -}; - -/* - * Callbacks for the ifmedia infrastructure. - */ -static int -utopia_media_change(struct ifnet *ifp) -{ - struct ifatm *ifatm = IFP2IFATM(ifp); - struct utopia *utp = ifatm->phy; - int error = 0; - - UTP_LOCK(utp); - if (utp->chip->type != UTP_TYPE_UNKNOWN && utp->state & UTP_ST_ACTIVE) { - if (utp->media->ifm_media & IFM_ATM_SDH) { - if (!(utp->state & UTP_ST_SDH)) - error = utopia_set_sdh(utp, 1); - } else { - if (utp->state & UTP_ST_SDH) - error = utopia_set_sdh(utp, 0); - } - if (utp->media->ifm_media & IFM_ATM_UNASSIGNED) { - if (!(utp->state & UTP_ST_UNASS)) - error = utopia_set_unass(utp, 1); - } else { - if (utp->state & UTP_ST_UNASS) - error = utopia_set_unass(utp, 0); - } - if (utp->media->ifm_media & IFM_ATM_NOSCRAMB) { - if (!(utp->state & UTP_ST_NOSCRAMB)) - error = utopia_set_noscramb(utp, 1); - } else { - if (utp->state & UTP_ST_NOSCRAMB) - error = utopia_set_noscramb(utp, 0); - } - } else - error = EIO; - UTP_UNLOCK(utp); - return (error); -} - -/* - * Look at the carrier status. - */ -static void -utopia_media_status(struct ifnet *ifp, struct ifmediareq *ifmr) -{ - struct utopia *utp = IFP2IFATM(ifp)->phy; - - UTP_LOCK(utp); - if (utp->chip->type != UTP_TYPE_UNKNOWN && utp->state & UTP_ST_ACTIVE) { - ifmr->ifm_active = IFM_ATM | utp->ifatm->mib.media; - - switch (utp->carrier) { - - case UTP_CARR_OK: - ifmr->ifm_status = IFM_AVALID | IFM_ACTIVE; - break; - - case UTP_CARR_LOST: - ifmr->ifm_status = IFM_AVALID; - break; - - default: - ifmr->ifm_status = 0; - break; - } - if (utp->state & UTP_ST_SDH) { - ifmr->ifm_active |= IFM_ATM_SDH; - ifmr->ifm_current |= IFM_ATM_SDH; - } - if (utp->state & UTP_ST_UNASS) { - ifmr->ifm_active |= IFM_ATM_UNASSIGNED; - ifmr->ifm_current |= IFM_ATM_UNASSIGNED; - } - if (utp->state & UTP_ST_NOSCRAMB) { - ifmr->ifm_active |= IFM_ATM_NOSCRAMB; - ifmr->ifm_current |= IFM_ATM_NOSCRAMB; - } - } else { - ifmr->ifm_active = 0; - ifmr->ifm_status = 0; - } - UTP_UNLOCK(utp); -} - -/* - * Initialize media from the mib - */ -void -utopia_init_media(struct utopia *utp) -{ - - ifmedia_removeall(utp->media); - ifmedia_add(utp->media, IFM_ATM | utp->ifatm->mib.media, 0, NULL); - ifmedia_set(utp->media, IFM_ATM | utp->ifatm->mib.media); -} - -/* - * Reset all media - */ -void -utopia_reset_media(struct utopia *utp) -{ - - ifmedia_removeall(utp->media); -} - -/* - * This is called by the driver as soon as the SUNI registers are accessible. - * This may be either in the attach routine or the init routine of the driver. - */ -int -utopia_start(struct utopia *utp) -{ - uint8_t reg; - int err; - u_int n = 1; - - /* - * Try to find out what chip we have - */ - if ((err = UTP_READREGS(utp, SUNI_REGO_MRESET, ®, &n)) != 0) - return (err); - - switch (reg & SUNI_REGM_MRESET_TYPE) { - - case SUNI_REGM_MRESET_TYPE_622: - utp->chip = &utopia_chip_622; - break; - - case SUNI_REGM_MRESET_TYPE_LITE: - /* this may be either a SUNI LITE or a IDT77155 * - * Read register 0x70. The SUNI doesn't have it */ - n = 1; - if ((err = UTP_READREGS(utp, IDTPHY_REGO_RBER, ®, &n)) != 0) - return (err); - if ((reg & ~IDTPHY_REGM_RBER_RESV) == - (IDTPHY_REGM_RBER_FAIL | IDTPHY_REGM_RBER_WARN)) - utp->chip = &utopia_chip_idt77155; - else - utp->chip = &utopia_chip_lite; - break; - - case SUNI_REGM_MRESET_TYPE_ULTRA: - utp->chip = &utopia_chip_ultra; - break; - - default: - if (reg == (IDTPHY_REGM_MCR_DRIC | IDTPHY_REGM_MCR_EI)) - utp->chip = &utopia_chip_idt77105; - else { - if_printf(utp->ifatm->ifp, - "unknown ATM-PHY chip %#x\n", reg); - utp->chip = &utopia_chip_unknown; - } - break; - } - utp->state |= UTP_ST_ACTIVE; - return (0); -} - -/* - * Stop the chip - */ -void -utopia_stop(struct utopia *utp) -{ - utp->state &= ~UTP_ST_ACTIVE; -} - -/* - * Handle the sysctls - */ -static int -utopia_sysctl_regs(SYSCTL_HANDLER_ARGS) -{ - struct utopia *utp = (struct utopia *)arg1; - int error; - u_int n; - uint8_t *val; - uint8_t new[3]; - - if ((n = utp->chip->nregs) == 0) - return (EIO); - val = malloc(sizeof(uint8_t) * n, M_TEMP, M_WAITOK); - - UTP_LOCK(utp); - error = UTP_READREGS(utp, 0, val, &n); - UTP_UNLOCK(utp); - - if (error) { - free(val, M_TEMP); - return (error); - } - - error = SYSCTL_OUT(req, val, sizeof(uint8_t) * n); - free(val, M_TEMP); - if (error != 0 || req->newptr == NULL) - return (error); - - error = SYSCTL_IN(req, new, sizeof(new)); - if (error) - return (error); - - UTP_LOCK(utp); - error = UTP_WRITEREG(utp, new[0], new[1], new[2]); - UTP_UNLOCK(utp); - - return (error); -} - -static int -utopia_sysctl_stats(SYSCTL_HANDLER_ARGS) -{ - struct utopia *utp = (struct utopia *)arg1; - void *val; - int error; - - val = malloc(sizeof(utp->stats), M_TEMP, M_WAITOK); - - UTP_LOCK(utp); - bcopy(&utp->stats, val, sizeof(utp->stats)); - if (req->newptr != NULL) - bzero((char *)&utp->stats + sizeof(utp->stats.version), - sizeof(utp->stats) - sizeof(utp->stats.version)); - UTP_UNLOCK(utp); - - error = SYSCTL_OUT(req, val, sizeof(utp->stats)); - if (error && req->newptr != NULL) - bcopy(val, &utp->stats, sizeof(utp->stats)); - free(val, M_TEMP); - - /* ignore actual new value */ - - return (error); -} - -/* - * Handle the loopback sysctl - */ -static int -utopia_sysctl_loopback(SYSCTL_HANDLER_ARGS) -{ - struct utopia *utp = (struct utopia *)arg1; - int error; - u_int loopback; - - error = SYSCTL_OUT(req, &utp->loopback, sizeof(u_int)); - if (error != 0 || req->newptr == NULL) - return (error); - - error = SYSCTL_IN(req, &loopback, sizeof(u_int)); - if (error) - return (error); - - UTP_LOCK(utp); - error = utopia_set_loopback(utp, loopback); - UTP_UNLOCK(utp); - - return (error); -} - -/* - * Handle the type sysctl - */ -static int -utopia_sysctl_type(SYSCTL_HANDLER_ARGS) -{ - struct utopia *utp = (struct utopia *)arg1; - - return (SYSCTL_OUT(req, &utp->chip->type, sizeof(utp->chip->type))); -} - -/* - * Handle the name sysctl - */ -static int -utopia_sysctl_name(SYSCTL_HANDLER_ARGS) -{ - struct utopia *utp = (struct utopia *)arg1; - - return (SYSCTL_OUT(req, utp->chip->name, strlen(utp->chip->name) + 1)); -} - -/* - * Initialize the state. This is called from the drivers attach - * function. The mutex must be already initialized. - */ -int -utopia_attach(struct utopia *utp, struct ifatm *ifatm, struct ifmedia *media, - struct mtx *lock, struct sysctl_ctx_list *ctx, - struct sysctl_oid_list *children, const struct utopia_methods *m) -{ - - bzero(utp, sizeof(*utp)); - utp->ifatm = ifatm; - utp->methods = m; - utp->media = media; - utp->lock = lock; - utp->chip = &utopia_chip_unknown; - utp->stats.version = 1; - - ifmedia_init(media, - IFM_ATM_SDH | IFM_ATM_UNASSIGNED | IFM_ATM_NOSCRAMB, - utopia_media_change, utopia_media_status); - - if (SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "phy_regs", - CTLFLAG_RW | CTLTYPE_OPAQUE, utp, 0, utopia_sysctl_regs, "S", - "phy registers") == NULL) - return (-1); - - if (SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "phy_loopback", - CTLFLAG_RW | CTLTYPE_UINT, utp, 0, utopia_sysctl_loopback, "IU", - "phy loopback mode") == NULL) - return (-1); - - if (SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "phy_type", - CTLFLAG_RD | CTLTYPE_UINT, utp, 0, utopia_sysctl_type, "IU", - "phy type") == NULL) - return (-1); - - if (SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "phy_name", - CTLFLAG_RD | CTLTYPE_STRING, utp, 0, utopia_sysctl_name, "A", - "phy name") == NULL) - return (-1); - - if (SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "phy_stats", - CTLFLAG_RW | CTLTYPE_OPAQUE, utp, 0, utopia_sysctl_stats, "S", - "phy statistics") == NULL) - return (-1); - - if (SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "phy_state", - CTLFLAG_RD, &utp->state, 0, "phy state") == NULL) - return (-1); - - if (SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "phy_carrier", - CTLFLAG_RD, &utp->carrier, 0, "phy carrier") == NULL) - return (-1); - - UTP_WLOCK_LIST(); - LIST_INSERT_HEAD(&utopia_list, utp, link); - UTP_WUNLOCK_LIST(); - - utp->state |= UTP_ST_ATTACHED; - return (0); -} - -/* - * Detach. We set a flag here, wakeup the daemon and let him do it. - * Here we need the lock for synchronisation with the daemon. - */ -void -utopia_detach(struct utopia *utp) -{ - - UTP_LOCK_ASSERT(utp); - if (utp->state & UTP_ST_ATTACHED) { - utp->state |= UTP_ST_DETACH; - while (utp->state & UTP_ST_DETACH) { - wakeup(&utopia_list); - msleep(utp, utp->lock, PZERO, "utopia_detach", hz); - } - } -} - -/* - * The carrier state kernel proc for those adapters that do not interrupt. - * - * We assume, that utopia_attach can safely add a new utopia while we are going - * through the list without disturbing us (we lock the list while getting - * the address of the first element, adding is always done at the head). - * Removing is entirely handled here. - */ -static void -utopia_daemon(void *arg __unused) -{ - struct utopia *utp, *next; - - UTP_RLOCK_LIST(); - while (utopia_kproc != NULL) { - utp = LIST_FIRST(&utopia_list); - UTP_RUNLOCK_LIST(); - - while (utp != NULL) { - mtx_lock(&Giant); /* XXX depend on MPSAFE */ - UTP_LOCK(utp); - next = LIST_NEXT(utp, link); - if (utp->state & UTP_ST_DETACH) { - LIST_REMOVE(utp, link); - utp->state &= ~UTP_ST_DETACH; - wakeup_one(utp); - } else if (utp->state & UTP_ST_ACTIVE) { - if (utp->flags & UTP_FL_POLL_CARRIER) - utopia_update_carrier(utp); - utopia_update_stats(utp); - } - UTP_UNLOCK(utp); - mtx_unlock(&Giant); /* XXX depend on MPSAFE */ - utp = next; - } - - UTP_RLOCK_LIST(); - msleep(&utopia_list, &utopia_list_mtx, PZERO, "*idle*", hz); - } - wakeup_one(&utopia_list); - UTP_RUNLOCK_LIST(); - kproc_exit(0); -} - -/* - * Module initialisation - */ -static int -utopia_mod_init(module_t mod, int what, void *arg) -{ - int err; - struct proc *kp; - - switch (what) { - - case MOD_LOAD: - mtx_init(&utopia_list_mtx, "utopia list mutex", NULL, MTX_DEF); - err = kproc_create(utopia_daemon, NULL, &utopia_kproc, - RFHIGHPID, 0, "utopia"); - if (err != 0) { - printf("cannot created utopia thread %d\n", err); - return (err); - } - break; - - case MOD_UNLOAD: - UTP_WLOCK_LIST(); - if ((kp = utopia_kproc) != NULL) { - utopia_kproc = NULL; - wakeup_one(&utopia_list); - PROC_LOCK(kp); - UTP_WUNLOCK_LIST(); - msleep(kp, &kp->p_mtx, PWAIT, "utopia_destroy", 0); - PROC_UNLOCK(kp); - } else - UTP_WUNLOCK_LIST(); - mtx_destroy(&utopia_list_mtx); - break; - default: - return (EOPNOTSUPP); - } - return (0); -} - -static moduledata_t utopia_mod = { - "utopia", - utopia_mod_init, - 0 -}; - -DECLARE_MODULE(utopia, utopia_mod, SI_SUB_INIT_IF, SI_ORDER_ANY); -MODULE_VERSION(utopia, 1); diff --git a/sys/dev/utopia/utopia.h b/sys/dev/utopia/utopia.h deleted file mode 100644 index 6e42e99b2e51..000000000000 --- a/sys/dev/utopia/utopia.h +++ /dev/null @@ -1,203 +0,0 @@ -/*- - * Copyright (c) 2003 - * Fraunhofer Institute for Open Communication Systems (FhG Fokus). - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * Author: Hartmut Brandt <harti@freebsd.org> - * - * $FreeBSD$ - */ -#ifndef _DEV_UTOPIA_UTOPIA_H -#define _DEV_UTOPIA_UTOPIA_H - -/* Structure for user-level register formatting */ -struct utopia_print { - uint8_t type; /* register type */ - uint8_t reg; /* register number */ - const char *name; /* register name */ - const char *fmt; /* format for printing */ -}; - -/* - * Types of registers - */ -#define UTP_REGT_BITS 0x0 /* use printb to print */ -#define UTP_REGT_INT8 0x1 /* 8 bit hex number */ -#define UTP_REGT_INT10BITS 0x2 /* 10 bit hex number + 6 bit printb */ -#define UTP_REGT_INT12 0x3 /* 12 bit LE hex */ -#define UTP_REGT_INT16 0x4 /* 16 bit LE hex */ -#define UTP_REGT_INT19 0x5 /* 19 bit LE hex */ -#define UTP_REGT_INT20 0x6 /* 20 bit LE hex */ -#define UTP_REGT_INT21 0x7 /* 21 bit LE hex */ -#define UTP_REGT_INT18 0x8 /* 18 bit LE hex */ - -/* number of additional registers per type */ -#define UTP_REG_ADD 0, 0, 1, 1, 1, 2, 2, 2, 2 - -/* flags field */ -#define UTP_FL_NORESET 0x0001 /* cannot write MRESET register */ -#define UTP_FL_POLL_CARRIER 0x0002 /* need to poll for carrier */ - -/* state field */ -#define UTP_ST_ACTIVE 0x0001 /* registers accessible */ -#define UTP_ST_SDH 0x0002 /* SDH or SONET */ -#define UTP_ST_UNASS 0x0004 /* produce unassigned cells */ -#define UTP_ST_NOSCRAMB 0x0008 /* no scrambling */ -#define UTP_ST_DETACH 0x0010 /* detaching */ -#define UTP_ST_ATTACHED 0x0020 /* successful attached */ - -/* carrier field */ -#define UTP_CARR_UNKNOWN 0 -#define UTP_CARR_OK 1 -#define UTP_CARR_LOST 2 - -/* loopback field */ -#define UTP_LOOP_NONE 0x0000 -#define UTP_LOOP_TIME 0x0001 /* timing source loopback */ -#define UTP_LOOP_DIAG 0x0002 /* diagnostic loopback */ -#define UTP_LOOP_LINE 0x0004 /* serial line loopback */ -#define UTP_LOOP_PARAL 0x0008 /* parallel diagnostic loopback */ -#define UTP_LOOP_TWIST 0x0010 /* twisted pair diagnostic loopback */ -#define UTP_LOOP_PATH 0x0020 /* diagnostic path loopback */ - -/* type */ -#define UTP_TYPE_UNKNOWN 0 -#define UTP_TYPE_SUNI_LITE 1 -#define UTP_TYPE_SUNI_ULTRA 2 -#define UTP_TYPE_SUNI_622 3 -#define UTP_TYPE_IDT77105 4 -#define UTP_TYPE_IDT77155 5 -#define UTP_TYPE_CX28250 6 - -/* - * Statistics. These structures are versioned. - */ -struct utopia_stats1 { - uint32_t version; /* version of this statistics struct */ - uint32_t fill; - - uint64_t rx_sbip; /* rx section BIP errors */ - uint64_t rx_lbip; /* rx line BIP errors */ - uint64_t rx_lfebe; /* rx line far end block errors */ - uint64_t rx_pbip; /* rx path BIP errors */ - uint64_t rx_pfebe; /* rx path far end block errors */ - uint64_t rx_cells; /* received cells */ - uint64_t rx_corr; /* correctable cell errors */ - uint64_t rx_uncorr; /* uncorrectable cell errors */ - uint64_t rx_symerr; /* symbol errors */ - - uint64_t tx_cells; /* transmitted cells */ -}; - -#ifdef _KERNEL - -#include <sys/queue.h> - -/* - * These must be implemented by the card driver - */ -struct utopia_methods { - /* read at most n PHY registers starting at reg into val */ - int (*readregs)(struct ifatm *, u_int reg, uint8_t *val, u_int *n); - - /* change the bits given by mask to them in val in register reg */ - int (*writereg)(struct ifatm *, u_int reg, u_int mask, u_int val); -}; - -/* - * Public state - */ -struct utopia { - struct ifatm *ifatm; /* driver data */ - struct ifmedia *media; /* driver supplied */ - struct mtx *lock; /* driver supplied */ - const struct utopia_methods *methods; - LIST_ENTRY(utopia) link; /* list of these structures */ - u_int flags; /* flags set by the driver */ - u_int state; /* current state */ - u_int carrier; /* carrier state */ - u_int loopback; /* loopback mode */ - const struct utopia_chip *chip; /* chip operations */ - struct utopia_stats1 stats; /* statistics */ -}; - -struct utopia_chip { - /* type and name of the chip */ - u_int type; - const char *const name; - - /* number of registers */ - u_int nregs; - - /* reset chip to known state */ - int (*reset)(struct utopia *); - - /* set SONET/SDH mode */ - int (*set_sdh)(struct utopia *, int sdh); - - /* set idle/unassigned cells */ - int (*set_unass)(struct utopia *, int unass); - - /* enable/disable scrambling */ - int (*set_noscramb)(struct utopia *, int noscramb); - - /* update carrier status */ - int (*update_carrier)(struct utopia *); - - /* set loopback mode */ - int (*set_loopback)(struct utopia *, u_int mode); - - /* handle interrupt */ - void (*intr)(struct utopia *); - - /* update statistics */ - void (*update_stats)(struct utopia *); -}; - -/* - * These are implemented in the common utopia code - */ -int utopia_attach(struct utopia *, struct ifatm *, struct ifmedia *, - struct mtx *, struct sysctl_ctx_list *, struct sysctl_oid_list *, - const struct utopia_methods *); -void utopia_detach(struct utopia *); - -int utopia_start(struct utopia *); -void utopia_stop(struct utopia *); - -void utopia_init_media(struct utopia *); -void utopia_reset_media(struct utopia *); - -#define utopia_reset(S) ((S)->chip->reset((S))) -#define utopia_set_sdh(S, SDH) ((S)->chip->set_sdh((S), (SDH))) -#define utopia_set_unass(S, U) ((S)->chip->set_unass((S), (U))) -#define utopia_set_noscramb(S, N) ((S)->chip->set_noscramb((S), (N))) -#define utopia_update_carrier(S) ((S)->chip->update_carrier((S))) -#define utopia_update_stats(S) ((S)->chip->update_stats((S))) -#define utopia_set_loopback(S, L) ((S)->chip->set_loopback((S), (L))) -#define utopia_intr(S) ((S)->chip->intr((S))) - -#endif /* _KERNEL */ - -#endif /* _DEV_UTOPIA_UTOPIA_H */ diff --git a/sys/dev/utopia/utopia_priv.h b/sys/dev/utopia/utopia_priv.h deleted file mode 100644 index cbb242cb9991..000000000000 --- a/sys/dev/utopia/utopia_priv.h +++ /dev/null @@ -1,46 +0,0 @@ -/*- - * Copyright (c) 2005 - * Hartmut Brandt. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * Author: Hartmut Brandt <harti@freebsd.org> - * - * $FreeBSD$ - * - * Private include file for the interface between chip files and - * the utopia main stuff. - */ - -#ifndef _DEV_UTOPIA_UTOPIA_PRIV_H -#define _DEV_UTOPIA_UTOPIA_PRIV_H - -#define UTP_READREGS(UTOPIA, REG, VALP, NP) \ - (UTOPIA)->methods->readregs((UTOPIA)->ifatm, REG, VALP, NP) -#define UTP_WRITEREG(UTOPIA, REG, MASK, VAL) \ - (UTOPIA)->methods->writereg((UTOPIA)->ifatm, REG, MASK, VAL) - -uint32_t utopia_update(struct utopia *, u_int, u_int, uint32_t); -void utopia_check_carrier(struct utopia *, u_int); - -#endif /* _DEV_UTOPIA_UTOPIA_PRIV_H */ diff --git a/sys/fs/nfs/nfsport.h b/sys/fs/nfs/nfsport.h index c51726358b76..0bdd26b1f8c5 100644 --- a/sys/fs/nfs/nfsport.h +++ b/sys/fs/nfs/nfsport.h @@ -899,6 +899,7 @@ int newnfs_realign(struct mbuf **, int); */ #define NFSSTA_HASWRITEVERF 0x00040000 /* Has write verifier */ #define NFSSTA_GOTFSINFO 0x00100000 /* Got the fsinfo */ +#define NFSSTA_OPENMODE 0x00200000 /* Must use correct open mode */ #define NFSSTA_NOLAYOUTCOMMIT 0x04000000 /* Don't do LayoutCommit */ #define NFSSTA_SESSPERSIST 0x08000000 /* Has a persistent session */ #define NFSSTA_TIMEO 0x10000000 /* Experiencing a timeout */ @@ -929,6 +930,7 @@ int newnfs_realign(struct mbuf **, int); #define NFSHASNOLAYOUTCOMMIT(n) ((n)->nm_state & NFSSTA_NOLAYOUTCOMMIT) #define NFSHASSESSPERSIST(n) ((n)->nm_state & NFSSTA_SESSPERSIST) #define NFSHASPNFS(n) ((n)->nm_state & NFSSTA_PNFS) +#define NFSHASOPENMODE(n) ((n)->nm_state & NFSSTA_OPENMODE) #define NFSHASONEOPENOWN(n) (((n)->nm_flag & NFSMNT_ONEOPENOWN) != 0 && \ (n)->nm_minorvers > 0) diff --git a/sys/fs/nfsclient/nfs_clrpcops.c b/sys/fs/nfsclient/nfs_clrpcops.c index 98bde4c9bd4a..e8970921fd41 100644 --- a/sys/fs/nfsclient/nfs_clrpcops.c +++ b/sys/fs/nfsclient/nfs_clrpcops.c @@ -1134,6 +1134,11 @@ nfsrpc_setattr(vnode_t vp, struct vattr *vap, NFSACL_T *aclp, else error = nfsrpc_setaclrpc(vp, cred, p, aclp, &stateid, stuff); + if (error == NFSERR_OPENMODE && mode == NFSV4OPEN_ACCESSREAD) { + NFSLOCKMNT(nmp); + nmp->nm_state |= NFSSTA_OPENMODE; + NFSUNLOCKMNT(nmp); + } if (error == NFSERR_STALESTATEID) nfscl_initiate_recovery(nmp->nm_clp); if (lckp != NULL) @@ -1154,7 +1159,9 @@ nfsrpc_setattr(vnode_t vp, struct vattr *vap, NFSACL_T *aclp, error == NFSERR_BADSESSION || (error == NFSERR_OLDSTATEID && retrycnt < 20) || ((error == NFSERR_EXPIRED || error == NFSERR_BADSTATEID) && - expireret == 0 && clidrev != 0 && retrycnt < 4)); + expireret == 0 && clidrev != 0 && retrycnt < 4) || + (error == NFSERR_OPENMODE && mode == NFSV4OPEN_ACCESSREAD && + retrycnt < 4)); if (error && retrycnt >= 4) error = EIO; return (error); @@ -1391,6 +1398,11 @@ nfsrpc_read(vnode_t vp, struct uio *uiop, struct ucred *cred, &lckp); error = nfsrpc_readrpc(vp, uiop, newcred, &stateid, p, nap, attrflagp, stuff); + if (error == NFSERR_OPENMODE) { + NFSLOCKMNT(nmp); + nmp->nm_state |= NFSSTA_OPENMODE; + NFSUNLOCKMNT(nmp); + } if (error == NFSERR_STALESTATEID) nfscl_initiate_recovery(nmp->nm_clp); if (lckp != NULL) @@ -1409,7 +1421,8 @@ nfsrpc_read(vnode_t vp, struct uio *uiop, struct ucred *cred, error == NFSERR_BADSESSION || (error == NFSERR_OLDSTATEID && retrycnt < 20) || ((error == NFSERR_EXPIRED || error == NFSERR_BADSTATEID) && - expireret == 0 && clidrev != 0 && retrycnt < 4)); + expireret == 0 && clidrev != 0 && retrycnt < 4) || + (error == NFSERR_OPENMODE && retrycnt < 4)); if (error && retrycnt >= 4) error = EIO; if (NFSHASNFSV4(nmp)) @@ -4613,7 +4626,7 @@ nfsrpc_createsession(struct nfsmount *nmp, struct nfsclsession *sep, *tl++ = sep->nfsess_clientid.lval[1]; *tl++ = txdr_unsigned(sequenceid); crflags = (NFSMNT_RDONLY(nmp->nm_mountp) ? 0 : NFSV4CRSESS_PERSIST); - if (nfscl_enablecallb != 0 && nfs_numnfscbd > 0) + if (nfscl_enablecallb != 0 && nfs_numnfscbd > 0 && mds != 0) crflags |= NFSV4CRSESS_CONNBACKCHAN; *tl = txdr_unsigned(crflags); @@ -5399,10 +5412,13 @@ nfsrpc_fillsa(struct nfsmount *nmp, struct sockaddr_storage *ssp, NFSCL_DEBUG(3, "DS connect=%d\n", error); /* Now, do the exchangeid and create session. */ - if (error == 0) + if (error == 0) { error = nfsrpc_exchangeid(nmp, clp, nrp, NFSV4EXCH_USEPNFSDS, &dsp, nrp->nr_cred, p); - NFSCL_DEBUG(3, "DS exchangeid=%d\n", error); + NFSCL_DEBUG(3, "DS exchangeid=%d\n", error); + if (error != 0) + newnfs_disconnect(nrp); + } if (error == 0) { dsp->nfsclds_sockp = nrp; NFSLOCKMNT(nmp); @@ -5445,8 +5461,10 @@ nfsrpc_fillsa(struct nfsmount *nmp, struct sockaddr_storage *ssp, TAILQ_INSERT_TAIL(&nmp->nm_sess, dsp, nfsclds_list); NFSUNLOCKMNT(nmp); *dspp = dsp; - } else if (dsp != NULL) + } else if (dsp != NULL) { + newnfs_disconnect(nrp); nfscl_freenfsclds(dsp); + } return (error); } @@ -5589,6 +5607,11 @@ nfscl_doiods(vnode_t vp, struct uio *uiop, int *iomode, int *must_commit, if (lastbyte > layp->nfsly_lastbyte) layp->nfsly_lastbyte = lastbyte; NFSUNLOCKCLSTATE(); + } else if (error == NFSERR_OPENMODE && + rwaccess == NFSV4OPEN_ACCESSREAD) { + NFSLOCKMNT(nmp); + nmp->nm_state |= NFSSTA_OPENMODE; + NFSUNLOCKMNT(nmp); } } else error = EIO; diff --git a/sys/fs/nfsclient/nfs_clstate.c b/sys/fs/nfsclient/nfs_clstate.c index 7ae197e04360..f2807a0cf578 100644 --- a/sys/fs/nfsclient/nfs_clstate.c +++ b/sys/fs/nfsclient/nfs_clstate.c @@ -88,6 +88,8 @@ extern struct nfsstatsv1 nfsstatsv1; extern struct nfsreqhead nfsd_reqq; extern u_int32_t newnfs_false, newnfs_true; extern int nfscl_debuglevel; +extern int nfscl_enablecallb; +extern int nfs_numnfscbd; NFSREQSPINLOCK; NFSCLSTATEMUTEX; int nfscl_inited = 0; @@ -118,7 +120,8 @@ static struct nfsclclient *nfscl_getclnt(u_int32_t); static struct nfsclclient *nfscl_getclntsess(uint8_t *); static struct nfscldeleg *nfscl_finddeleg(struct nfsclclient *, u_int8_t *, int); -static void nfscl_retoncloselayout(struct nfsclclient *, uint8_t *, int); +static void nfscl_retoncloselayout(vnode_t, struct nfsclclient *, uint8_t *, + int, struct nfsclrecalllayout **); static void nfscl_reldevinfo_locked(struct nfscldevinfo *); static struct nfscllayout *nfscl_findlayout(struct nfsclclient *, u_int8_t *, int); @@ -497,10 +500,11 @@ nfscl_getstateid(vnode_t vp, u_int8_t *nfhp, int fhlen, u_int32_t mode, { struct nfsclclient *clp; struct nfsclowner *owp; - struct nfsclopen *op = NULL; + struct nfsclopen *op = NULL, *top; struct nfscllockowner *lp; struct nfscldeleg *dp; struct nfsnode *np; + struct nfsmount *nmp; u_int8_t own[NFSV4CL_LOCKNAMELEN]; int error, done; @@ -518,8 +522,9 @@ nfscl_getstateid(vnode_t vp, u_int8_t *nfhp, int fhlen, u_int32_t mode, if (vnode_vtype(vp) != VREG) return (EISDIR); np = VTONFS(vp); + nmp = VFSTONFS(vnode_mount(vp)); NFSLOCKCLSTATE(); - clp = nfscl_findcl(VFSTONFS(vnode_mount(vp))); + clp = nfscl_findcl(nmp); if (clp == NULL) { NFSUNLOCKCLSTATE(); return (EACCES); @@ -589,23 +594,33 @@ nfscl_getstateid(vnode_t vp, u_int8_t *nfhp, int fhlen, u_int32_t mode, } if (op == NULL) { /* If not found, just look for any OpenOwner that will work. */ + top = NULL; done = 0; owp = LIST_FIRST(&clp->nfsc_owner); while (!done && owp != NULL) { LIST_FOREACH(op, &owp->nfsow_open, nfso_list) { if (op->nfso_fhlen == fhlen && - !NFSBCMP(op->nfso_fh, nfhp, fhlen) && - (mode & op->nfso_mode) == mode) { - done = 1; - break; + !NFSBCMP(op->nfso_fh, nfhp, fhlen)) { + if (top == NULL && (op->nfso_mode & + NFSV4OPEN_ACCESSWRITE) != 0 && + (mode & NFSV4OPEN_ACCESSREAD) != 0) + top = op; + if ((mode & op->nfso_mode) == mode) { + done = 1; + break; + } } } if (!done) owp = LIST_NEXT(owp, nfsow_list); } if (!done) { - NFSUNLOCKCLSTATE(); - return (ENOENT); + NFSCL_DEBUG(2, "openmode top=%p\n", top); + if (top == NULL || NFSHASOPENMODE(nmp)) { + NFSUNLOCKCLSTATE(); + return (ENOENT); + } else + op = top; } /* * For read aheads or write behinds, use the open cred. @@ -3121,6 +3136,7 @@ nfscl_doclose(vnode_t vp, struct nfsclclient **clpp, NFSPROC_T *p) struct nfsclopen *op; struct nfscldeleg *dp; struct nfsfh *nfhp; + struct nfsclrecalllayout *recallp; int error; error = nfscl_getcl(vnode_mount(vp), NULL, NULL, 1, &clp); @@ -3129,6 +3145,7 @@ nfscl_doclose(vnode_t vp, struct nfsclclient **clpp, NFSPROC_T *p) *clpp = clp; nfhp = VTONFS(vp)->n_fhp; + recallp = malloc(sizeof(*recallp), M_NFSLAYRECALL, M_WAITOK); NFSLOCKCLSTATE(); /* * First get rid of the local Open structures, which should be no @@ -3148,7 +3165,7 @@ nfscl_doclose(vnode_t vp, struct nfsclclient **clpp, NFSPROC_T *p) } /* Return any layouts marked return on close. */ - nfscl_retoncloselayout(clp, nfhp->nfh_fh, nfhp->nfh_len); + nfscl_retoncloselayout(vp, clp, nfhp->nfh_fh, nfhp->nfh_len, &recallp); /* Now process the opens against the server. */ lookformore: @@ -3171,6 +3188,11 @@ lookformore: } } NFSUNLOCKCLSTATE(); + /* + * recallp has been set NULL by nfscl_retoncloselayout() if it was + * used by the function, but calling free() with a NULL pointer is ok. + */ + free(recallp, M_NFSLAYRECALL); return (0); } @@ -3538,9 +3560,18 @@ nfscl_docb(struct nfsrv_descript *nd, NFSPROC_T *p) tsep->nfsess_backslots); } NFSUNLOCKCLSTATE(); - if (error == 0) { + if (error == 0 || error == NFSERR_REPLYFROMCACHE) { gotseq_ok = 1; if (rep != NULL) { + /* + * Handle a reply for a retried + * callback. The reply will be + * re-inserted in the session cache + * by the nfsv4_seqsess_cacherep() call + * after out: + */ + KASSERT(error == NFSERR_REPLYFROMCACHE, + ("cbsequence: non-NULL rep")); NFSCL_DEBUG(4, "Got cbretry\n"); m_freem(nd->nd_mreq); nd->nd_mreq = rep; @@ -4890,28 +4921,32 @@ nfscl_getlayout(struct nfsclclient *clp, uint8_t *fhp, int fhlen, } /* - * Search for a layout by MDS file handle. If one is found that is marked - * "return on close", delete it, since it should now be forgotten. + * Search for a layout by MDS file handle. If one is found, mark in to be + * recalled, if it already marked "return on close". */ static void -nfscl_retoncloselayout(struct nfsclclient *clp, uint8_t *fhp, int fhlen) +nfscl_retoncloselayout(vnode_t vp, struct nfsclclient *clp, uint8_t *fhp, + int fhlen, struct nfsclrecalllayout **recallpp) { struct nfscllayout *lyp; + uint32_t iomode; -tryagain: + if (vp->v_type != VREG || !NFSHASPNFS(VFSTONFS(vnode_mount(vp))) || + nfscl_enablecallb == 0 || nfs_numnfscbd == 0 || + (VTONFS(vp)->n_flag & NNOLAYOUT) != 0) + return; lyp = nfscl_findlayout(clp, fhp, fhlen); - if (lyp != NULL && (lyp->nfsly_flags & NFSLY_RETONCLOSE) != 0) { - /* - * Wait for outstanding I/O ops to be done. - */ - if (lyp->nfsly_lock.nfslock_usecnt != 0 || - lyp->nfsly_lock.nfslock_lock != 0) { - lyp->nfsly_lock.nfslock_lock |= NFSV4LOCK_WANTED; - (void)mtx_sleep(&lyp->nfsly_lock, - NFSCLSTATEMUTEXPTR, PZERO, "nfslyc", 0); - goto tryagain; - } - nfscl_freelayout(lyp); + if (lyp != NULL && (lyp->nfsly_flags & (NFSLY_RETONCLOSE | + NFSLY_RECALL)) == NFSLY_RETONCLOSE) { + iomode = 0; + if (!LIST_EMPTY(&lyp->nfsly_flayread)) + iomode |= NFSLAYOUTIOMODE_READ; + if (!LIST_EMPTY(&lyp->nfsly_flayrw)) + iomode |= NFSLAYOUTIOMODE_RW; + (void)nfscl_layoutrecall(NFSLAYOUTRETURN_FILE, lyp, iomode, + 0, UINT64_MAX, lyp->nfsly_stateid.seqid, *recallpp); + NFSCL_DEBUG(4, "retoncls recall iomode=%d\n", iomode); + *recallpp = NULL; } } @@ -5195,8 +5230,8 @@ nfscl_layoutreturn(struct nfsmount *nmp, struct nfscllayout *lyp, nfsv4stateid_t stateid; NFSBCOPY(lyp->nfsly_stateid.other, stateid.other, NFSX_STATEIDOTHER); + stateid.seqid = lyp->nfsly_stateid.seqid; LIST_FOREACH(rp, &lyp->nfsly_recall, nfsrecly_list) { - stateid.seqid = rp->nfsrecly_stateseqid; (void)nfsrpc_layoutreturn(nmp, lyp->nfsly_fh, lyp->nfsly_fhlen, 0, NFSLAYOUT_NFSV4_1_FILES, rp->nfsrecly_iomode, rp->nfsrecly_recalltype, diff --git a/sys/fs/nfsclient/nfs_clvfsops.c b/sys/fs/nfsclient/nfs_clvfsops.c index e3f452289a8b..f1d245661c49 100644 --- a/sys/fs/nfsclient/nfs_clvfsops.c +++ b/sys/fs/nfsclient/nfs_clvfsops.c @@ -1643,8 +1643,12 @@ bad: NFSUNLOCKCLSTATE(); free(nmp->nm_clp, M_NFSCLCLIENT); } - TAILQ_FOREACH_SAFE(dsp, &nmp->nm_sess, nfsclds_list, tdsp) + TAILQ_FOREACH_SAFE(dsp, &nmp->nm_sess, nfsclds_list, tdsp) { + if (dsp != TAILQ_FIRST(&nmp->nm_sess) && + dsp->nfsclds_sockp != NULL) + newnfs_disconnect(dsp->nfsclds_sockp); nfscl_freenfsclds(dsp); + } FREE(nmp, M_NEWNFSMNT); FREE(nam, M_SONAME); return (error); @@ -1709,8 +1713,12 @@ nfs_unmount(struct mount *mp, int mntflags) AUTH_DESTROY(nmp->nm_sockreq.nr_auth); mtx_destroy(&nmp->nm_sockreq.nr_mtx); mtx_destroy(&nmp->nm_mtx); - TAILQ_FOREACH_SAFE(dsp, &nmp->nm_sess, nfsclds_list, tdsp) + TAILQ_FOREACH_SAFE(dsp, &nmp->nm_sess, nfsclds_list, tdsp) { + if (dsp != TAILQ_FIRST(&nmp->nm_sess) && + dsp->nfsclds_sockp != NULL) + newnfs_disconnect(dsp->nfsclds_sockp); nfscl_freenfsclds(dsp); + } FREE(nmp, M_NEWNFSMNT); out: return (error); diff --git a/sys/fs/nfsserver/nfs_nfsdstate.c b/sys/fs/nfsserver/nfs_nfsdstate.c index 1c2e7d1a762e..f494071171f3 100644 --- a/sys/fs/nfsserver/nfs_nfsdstate.c +++ b/sys/fs/nfsserver/nfs_nfsdstate.c @@ -75,6 +75,11 @@ SYSCTL_INT(_vfs_nfsd, OID_AUTO, writedelegifpos, CTLFLAG_RW, &nfsrv_writedelegifpos, 0, "Issue a write delegation for read opens if possible"); +static int nfsrv_allowreadforwriteopen = 1; +SYSCTL_INT(_vfs_nfsd, OID_AUTO, allowreadforwriteopen, CTLFLAG_RW, + &nfsrv_allowreadforwriteopen, 0, + "Allow Reads to be done with Write Access StateIDs"); + /* * Hash lists for nfs V4. */ @@ -1872,7 +1877,8 @@ tryagain: mystp->ls_flags & NFSLCK_ACCESSBITS)) || ((new_stp->ls_flags & (NFSLCK_CHECK|NFSLCK_READACCESS)) == (NFSLCK_CHECK | NFSLCK_READACCESS) && - !(mystp->ls_flags & NFSLCK_READACCESS)) || + !(mystp->ls_flags & NFSLCK_READACCESS) && + nfsrv_allowreadforwriteopen == 0) || ((new_stp->ls_flags & (NFSLCK_CHECK|NFSLCK_WRITEACCESS)) == (NFSLCK_CHECK | NFSLCK_WRITEACCESS) && !(mystp->ls_flags & NFSLCK_WRITEACCESS))) { diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c index 4ff301a9540f..0384b966b513 100644 --- a/sys/kern/uipc_socket.c +++ b/sys/kern/uipc_socket.c @@ -1766,7 +1766,7 @@ dontblock: * requires MT_SONAME mbufs at the head of * each record. */ - if (m && pr->pr_flags & PR_ATOMIC && + if (pr->pr_flags & PR_ATOMIC && ((flags & MSG_PEEK) == 0)) (void)sbdroprecord_locked(&so->so_rcv); SOCKBUF_UNLOCK(&so->so_rcv); diff --git a/sys/kern/vfs_bio.c b/sys/kern/vfs_bio.c index 41b4828af192..9fadfd32f13b 100644 --- a/sys/kern/vfs_bio.c +++ b/sys/kern/vfs_bio.c @@ -4927,9 +4927,12 @@ DB_SHOW_COMMAND(buffer, db_show_buffer) db_printf("b_io_tracking: b_io_tcnt = %u\n", bp->b_io_tcnt); i = bp->b_io_tcnt % BUF_TRACKING_SIZE; - for (j = 1; j <= BUF_TRACKING_SIZE; j++) + for (j = 1; j <= BUF_TRACKING_SIZE; j++) { + if (bp->b_io_tracking[BUF_TRACKING_ENTRY(i - j)] == NULL) + continue; db_printf(" %2u: %s\n", j, bp->b_io_tracking[BUF_TRACKING_ENTRY(i - j)]); + } #elif defined(BUF_TRACKING) db_printf("b_io_tracking: %s\n", bp->b_io_tracking); #endif @@ -4947,6 +4950,8 @@ DB_SHOW_COMMAND(lockedbufs, lockedbufs) if (BUF_ISLOCKED(bp)) { db_show_buffer((uintptr_t)bp, 1, 0, NULL); db_printf("\n"); + if (db_pager_quit) + break; } } } diff --git a/sys/mips/broadcom/bcm_machdep.c b/sys/mips/broadcom/bcm_machdep.c index 51596db9d0b2..eef277c07bfd 100644 --- a/sys/mips/broadcom/bcm_machdep.c +++ b/sys/mips/broadcom/bcm_machdep.c @@ -343,6 +343,9 @@ bcm_init_platform_data(struct bcm_platform *bp) return (error); } + if (bootverbose) + bhnd_erom_dump(&bp->erom.obj); + /* Fetch chipcommon core info */ error = bcm_find_core(bp, bcm_chipc_cores, nitems(bcm_chipc_cores), &bp->cc_id, &bp->cc_addr); diff --git a/sys/modules/Makefile b/sys/modules/Makefile index 4174dd648f2d..73c35f6bac80 100644 --- a/sys/modules/Makefile +++ b/sys/modules/Makefile @@ -107,7 +107,6 @@ SUBDIR= \ ${_efirt} \ ${_elink} \ ${_em} \ - en \ ${_ep} \ ${_epic} \ esp \ @@ -116,7 +115,6 @@ SUBDIR= \ ${_ex} \ ${_exca} \ ext2fs \ - ${_fatm} \ fdc \ fdescfs \ ${_fe} \ @@ -130,7 +128,6 @@ SUBDIR= \ ${_glxiic} \ ${_glxsb} \ gpio \ - hatm \ hifn \ hme \ ${_hpt27xx} \ @@ -289,7 +286,6 @@ SUBDIR= \ ow \ ${_padlock} \ ${_padlock_rng} \ - patm \ ${_pccard} \ ${_pcfclock} \ pcn \ @@ -380,7 +376,6 @@ SUBDIR= \ uinput \ unionfs \ usb \ - utopia \ ${_vesa} \ ${_virtio} \ vge \ @@ -500,7 +495,6 @@ _pfsync= pfsync .if ${MK_SOURCELESS_UCODE} != "no" _bce= bce -_fatm= fatm _fxp= fxp _ispfw= ispfw _sf= sf diff --git a/sys/modules/en/Makefile b/sys/modules/en/Makefile deleted file mode 100644 index 459bf64112fc..000000000000 --- a/sys/modules/en/Makefile +++ /dev/null @@ -1,11 +0,0 @@ -# $FreeBSD$ - -.PATH: ${SRCTOP}/sys/dev/en - -KMOD= if_en -SRCS= if_en_pci.c midway.c device_if.h bus_if.h pci_if.h -SRCS+= opt_inet.h opt_natm.h opt_ddb.h -CFLAGS+= -DENABLE_BPF -# CFLAGS+= -DINVARIANT_SUPPORT -DINVARIANTS -DEN_DEBUG=0 - -.include <bsd.kmod.mk> diff --git a/sys/modules/fatm/Makefile b/sys/modules/fatm/Makefile deleted file mode 100644 index c228fb8e49e8..000000000000 --- a/sys/modules/fatm/Makefile +++ /dev/null @@ -1,12 +0,0 @@ -# $FreeBSD$ -# -# Author: Harti Brandt <harti@freebsd.org> -# -.PATH: ${SRCTOP}/sys/dev/fatm - -KMOD= if_fatm -SRCS= if_fatm.c device_if.h bus_if.h pci_if.h opt_inet.h opt_natm.h - -# CFLAGS+= -DFATM_DEBUG=0 -DINVARIANT_SUPPORT -DINVARIANTS - -.include <bsd.kmod.mk> diff --git a/sys/modules/hatm/Makefile b/sys/modules/hatm/Makefile deleted file mode 100644 index 5027babd1944..000000000000 --- a/sys/modules/hatm/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# $FreeBSD$ -# -# Author: Harti Brandt <harti@freebsd.org> -# -.PATH: ${SRCTOP}/sys/dev/hatm - -KMOD= if_hatm -SRCS= if_hatm.c if_hatm_intr.c if_hatm_ioctl.c if_hatm_tx.c if_hatm_rx.c \ - device_if.h bus_if.h pci_if.h opt_inet.h opt_natm.h - -CFLAGS+= -DENABLE_BPF -# CFLAGS+= -DHATM_DEBUG -DINVARIANT_SUPPORT -DINVARIANTS - -.include <bsd.kmod.mk> diff --git a/sys/modules/netgraph/atm/Makefile b/sys/modules/netgraph/atm/Makefile index 8bbe33db1ae2..086819d5b54b 100644 --- a/sys/modules/netgraph/atm/Makefile +++ b/sys/modules/netgraph/atm/Makefile @@ -1,7 +1,6 @@ # $FreeBSD$ SUBDIR= \ - atm \ atmbase \ ccatm \ sscfu \ diff --git a/sys/modules/netgraph/atm/atm/Makefile b/sys/modules/netgraph/atm/atm/Makefile deleted file mode 100644 index 2cd6d9decc27..000000000000 --- a/sys/modules/netgraph/atm/atm/Makefile +++ /dev/null @@ -1,11 +0,0 @@ -# $FreeBSD$ -# -# Author: Harti Brandt <harti@freebsd.org> -# -.PATH: ${SRCTOP}/sys/netgraph/atm - -KMOD= ng_atm -SRCS= ng_atm.c -# CFLAGS+= -DNGATM_DEBUG - -.include <bsd.kmod.mk> diff --git a/sys/modules/patm/Makefile b/sys/modules/patm/Makefile deleted file mode 100644 index 4f59aa765fc8..000000000000 --- a/sys/modules/patm/Makefile +++ /dev/null @@ -1,15 +0,0 @@ -# $FreeBSD$ -# -# Author: Harti Brandt <harti@freebsd.org> -# -.PATH: ${SRCTOP}/sys/dev/patm - -KMOD= if_patm -SRCS= if_patm.c if_patm_attach.c if_patm_ioctl.c if_patm_intr.c \ - if_patm_tx.c if_patm_rx.c if_patm_rtables.c \ - device_if.h bus_if.h pci_if.h opt_inet.h opt_natm.h - -CFLAGS+= -DENABLE_BPF -# CFLAGS+= -DPATM_DEBUG=0x0 -DINVARIANT_SUPPORT -DINVARIANTS -DDIAGNOSTIC - -.include <bsd.kmod.mk> diff --git a/sys/modules/utopia/Makefile b/sys/modules/utopia/Makefile deleted file mode 100644 index f9993705dc8e..000000000000 --- a/sys/modules/utopia/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -# $FreeBSD$ - -.PATH: ${SRCTOP}/sys/dev/utopia - -KMOD= utopia -SRCS= utopia.c suni.c idtphy.c bus_if.h device_if.h - -.include <bsd.kmod.mk> diff --git a/sys/net/if_atm.h b/sys/net/if_atm.h deleted file mode 100644 index a0900eee1c1a..000000000000 --- a/sys/net/if_atm.h +++ /dev/null @@ -1,337 +0,0 @@ -/* $NetBSD: if_atm.h,v 1.7 1996/11/09 23:02:27 chuck Exp $ */ -/* $FreeBSD$ */ - -/*- - * - * Copyright (c) 1996 Charles D. Cranor and Washington University. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by Charles D. Cranor and - * Washington University. - * 4. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * net/if_atm.h - */ - -/* - * Classification of ATM cards. - */ -#define ATM_DEVICE_UNKNOWN 0 -#define ATM_DEVICE_PCA200E 1 /* Fore/Marconi PCA200-E */ -#define ATM_DEVICE_HE155 2 /* Fore/Marconi HE155 */ -#define ATM_DEVICE_HE622 3 /* Fore/Marconi HE622 */ -#define ATM_DEVICE_ENI155P 4 /* Efficient networks 155p */ -#define ATM_DEVICE_ADP155P 5 /* Adaptec 155p */ -#define ATM_DEVICE_FORELE25 6 /* ForeRunnerLE 25 */ -#define ATM_DEVICE_FORELE155 7 /* ForeRunnerLE 155 */ -#define ATM_DEVICE_NICSTAR25 8 /* other 77211 25.6MBit */ -#define ATM_DEVICE_NICSTAR155 9 /* other 77211 155MBit */ -#define ATM_DEVICE_IDTABR25 10 /* 77252 based card 25MBit */ -#define ATM_DEVICE_IDTABR155 11 /* 77252 based card 155MBit */ -#define ATM_DEVICE_PROATM25 12 /* 77252 based ProSum card 25MBit */ -#define ATM_DEVICE_PROATM155 13 /* 77252 based ProSum card 155MBit */ -#define ATM_DEVICE_VIRTUAL 14 /* virtual ATM device (netgraph) */ - -/* map to strings and vendors */ -#define ATM_DEVICE_NAMES \ - { "Unknown", "Unknown" }, \ - { "PCA200-E", "Fore/Marconi" }, \ - { "HE155", "Fore/Marconi" }, \ - { "HE622", "Fore/Marconi" }, \ - { "ENI155p", "Efficient Networks" }, \ - { "ADP155p", "Adaptec" }, \ - { "ForeRunnerLE25", "Fore/Marconi" }, \ - { "ForeRunnerLE155", "Fore/Marconi" }, \ - { "IDT77211/25", "IDT" }, \ - { "IDT77211/155", "IDT" }, \ - { "IDT77252/25", "IDT" }, \ - { "IDT77252/155", "IDT" }, \ - { "ProATM/25", "ProSum" }, \ - { "ProATM/155", "ProSum" }, \ - { "Virtual", "NetGraph" }, - -/* - * This is the common link layer MIB for all ATM interfaces. Much of the - * information here is needed for ILMI. This will be augmented by statistics - * at some point. - */ -struct ifatm_mib { - /* configuration data */ - uint8_t device; /* type of card */ - u_char esi[6]; /* end system identifier (MAC) */ - uint32_t serial; /* card serial number */ - uint32_t hw_version; /* card version */ - uint32_t sw_version; /* firmware version (if any) */ - uint32_t pcr; /* supported peak cell rate */ - uint32_t media; /* physical media */ - uint8_t vpi_bits; /* number of used bits in VPI field */ - uint8_t vci_bits; /* number of used bits in VCI field */ - uint16_t max_vpcs; /* maximum number of VPCs */ - uint32_t max_vccs; /* maximum number of VCCs */ -}; - -/* - * Traffic parameters for ATM connections. This contains all parameters - * to accommodate UBR, UBR+MCR, CBR, VBR and ABR connections. - * - * Keep in sync with ng_atm.h - */ -struct atmio_tparam { - uint32_t pcr; /* 24bit: Peak Cell Rate */ - uint32_t scr; /* 24bit: VBR Sustainable Cell Rate */ - uint32_t mbs; /* 24bit: VBR Maximum burst size */ - uint32_t mcr; /* 24bit: ABR/VBR/UBR+MCR MCR */ - uint32_t icr; /* 24bit: ABR ICR */ - uint32_t tbe; /* 24bit: ABR TBE (1...2^24-1) */ - uint8_t nrm; /* 3bit: ABR Nrm */ - uint8_t trm; /* 3bit: ABR Trm */ - uint16_t adtf; /* 10bit: ABR ADTF */ - uint8_t rif; /* 4bit: ABR RIF */ - uint8_t rdf; /* 4bit: ABR RDF */ - uint8_t cdf; /* 3bit: ABR CDF */ -}; - -/* - * VCC parameters - * - * Keep in sync with ng_atm.h - */ -struct atmio_vcc { - uint16_t flags; /* VCC flags */ - uint16_t vpi; - uint16_t vci; - uint16_t rmtu; /* maximum receive PDU */ - uint16_t tmtu; /* maximum transmit PDU */ - uint8_t aal; /* aal type */ - uint8_t traffic; /* traffic type */ - struct atmio_tparam tparam; /* traffic parameters */ -}; - -/* VCC flags */ -#define ATMIO_FLAG_LLCSNAP 0x0002 /* same as ATM_PH_LLCSNAP */ -#define ATMIO_FLAG_NG 0x0010 /* owned by netgraph */ -#define ATMIO_FLAG_HARP 0x0020 /* owned by HARP */ -#define ATMIO_FLAG_NORX 0x0100 /* not receiving on this VCC */ -#define ATMIO_FLAG_NOTX 0x0200 /* not transmitting on this VCC */ -#define ATMIO_FLAG_PVC 0x0400 /* this is a PVC */ -#define ATMIO_FLAG_ASYNC 0x0800 /* async open/close */ -#define ATMIO_FLAGS "\020\2LLCSNAP\5NG\6HARP\11NORX\12NOTX\13PVC\14ASYNC" - -#define ATMIO_AAL_0 0 /* pure cells */ -#define ATMIO_AAL_34 4 /* AAL3 and 4 */ -#define ATMIO_AAL_5 5 /* AAL5 */ -#define ATMIO_AAL_RAW 10 /* whatever the card does */ - -#define ATMIO_TRAFFIC_UBR 0 -#define ATMIO_TRAFFIC_CBR 1 -#define ATMIO_TRAFFIC_ABR 2 -#define ATMIO_TRAFFIC_VBR 3 - -/* - * VCC table - * - * Keep in sync with ng_atm.h - */ -struct atmio_vcctable { - uint32_t count; /* number of vccs */ - struct atmio_vcc vccs[0]; /* array of VCCs */ -}; - -/* - * Peak cell rates for various physical media. Note, that there are - * different opinions on what the correct values are. - */ -#define ATM_RATE_25_6M 59259 -#define ATM_RATE_155M 353208 -#define ATM_RATE_622M 1412830 -#define ATM_RATE_2_4G 5651320 - -#ifdef _KERNEL -/* - * Common fields for all ATM interfaces. Each driver's softc must start with - * this structure. - */ -struct ifatm { - struct ifnet *ifp; - struct ifatm_mib mib; /* exported data */ - void *phy; /* usually SUNI */ - void *ngpriv; /* netgraph link */ -}; -#define IFP2IFATM(ifp) ((struct ifatm *)(ifp)->if_l2com) -#endif - -/* - * Keep structures in sync with ng_atm.h - * - * These are used by netgraph/harp to call the driver - * NATM uses the atm_pseudoioctl instead. - */ -struct atmio_openvcc { - void *rxhand; /* handle argument */ - struct atmio_vcc param; /* parameters */ -}; - -struct atmio_closevcc { - uint16_t vpi; - uint16_t vci; -}; - -#if defined(__NetBSD__) || defined(__OpenBSD__) || defined(__bsdi__) -#define RTALLOC1(A,B) rtalloc1((A),(B)) -#elif defined(__FreeBSD__) -#define RTALLOC1(A,B) rtalloc1((A),(B),0UL) -#endif - -/* - * pseudo header for packet transmission - */ -struct atm_pseudohdr { - uint8_t atm_ph[4]; /* flags+VPI+VCI1(msb)+VCI2(lsb) */ -}; - -#define ATM_PH_FLAGS(X) ((X)->atm_ph[0]) -#define ATM_PH_VPI(X) ((X)->atm_ph[1]) -#define ATM_PH_VCI(X) ((((X)->atm_ph[2]) << 8) | ((X)->atm_ph[3])) -#define ATM_PH_SETVCI(X,V) { \ - (X)->atm_ph[2] = ((V) >> 8) & 0xff; \ - (X)->atm_ph[3] = ((V) & 0xff); \ -} - -/* use AAL5? (0 == aal0) */ -#define ATM_PH_AAL5 0x01 -/* use the LLC SNAP encoding (iff aal5) */ -#define ATM_PH_LLCSNAP ATMIO_FLAG_LLCSNAP - -#define ATM_PH_DRIVER7 0x40 /* reserve for driver's use */ -#define ATM_PH_DRIVER8 0x80 /* reserve for driver's use */ - -#define ATMMTU 9180 /* ATM MTU size for IP */ - /* XXX: could be 9188 with LLC/SNAP according - to comer */ - -#define SIOCATMGETVCCS _IOW('a', 125, struct atmio_vcctable) -#define SIOCATMOPENVCC _IOR('a', 126, struct atmio_openvcc) -#define SIOCATMCLOSEVCC _IOR('a', 127, struct atmio_closevcc) - -#define SIOCATMGVCCS _IOWR('i', 230, struct ifreq) - -/* - * XXX forget all the garbage in if_llc.h and do it the easy way - */ -#define ATMLLC_HDR "\252\252\3\0\0\0" -struct atmllc { - uint8_t llchdr[6]; /* aa.aa.03.00.00.00 */ - uint8_t type[2]; /* "ethernet" type */ -}; - -/* ATM_LLC macros: note type code in host byte order */ -#define ATM_LLC_TYPE(X) (((X)->type[0] << 8) | ((X)->type[1])) -#define ATM_LLC_SETTYPE(X, V) do { \ - (X)->type[0] = ((V) >> 8) & 0xff; \ - (X)->type[1] = ((V) & 0xff); \ - } while (0) - -/* - * Events that are emitted by the driver. Currently the only consumer - * of this is the netgraph node. - */ -#define ATMEV_FLOW_CONTROL 0x0001 /* channel busy state changed */ -#define ATMEV_IFSTATE_CHANGED 0x0002 /* up/down or carrier */ -#define ATMEV_VCC_CHANGED 0x0003 /* PVC deleted/create */ -#define ATMEV_ACR_CHANGED 0x0004 /* ABR ACR has changed */ - -struct atmev_flow_control { - uint16_t vpi; /* channel that is changed */ - uint16_t vci; - u_int busy : 1; /* != 0 -> ATM layer busy */ -}; - -struct atmev_ifstate_changed { - u_int running : 1; /* interface is running now */ - u_int carrier : 1; /* carrier detected (or not) */ -}; - -struct atmev_vcc_changed { - uint16_t vpi; /* channel that is changed */ - uint16_t vci; - u_int up : 1; /* 1 - created, 0 - deleted */ -}; - -struct atmev_acr_changed { - uint16_t vpi; /* channel that is changed */ - uint16_t vci; - uint32_t acr; /* new ACR */ -}; - -#ifdef _KERNEL -void atm_ifattach(struct ifnet *); -void atm_ifdetach(struct ifnet *); -void atm_input(struct ifnet *, struct atm_pseudohdr *, - struct mbuf *, void *); -int atm_output(struct ifnet *, struct mbuf *, const struct sockaddr *, - struct route *); -struct atmio_vcctable *atm_getvccs(struct atmio_vcc **, u_int, u_int, - struct mtx *, int); - -void atm_event(struct ifnet *, u_int, void *); - -#define ATMEV_SEND_FLOW_CONTROL(ATMIF, VPI, VCI, BUSY) \ - do { \ - struct atmev_flow_control _arg; \ - _arg.vpi = (VPI); \ - _arg.vci = (VCI); \ - _arg.busy = (BUSY); \ - atm_event((ATMIF)->ifp, ATMEV_FLOW_CONTROL, &_arg); \ - } while (0) - -#define ATMEV_SEND_VCC_CHANGED(ATMIF, VPI, VCI, UP) \ - do { \ - struct atmev_vcc_changed _arg; \ - _arg.vpi = (VPI); \ - _arg.vci = (VCI); \ - _arg.up = (UP); \ - atm_event((ATMIF)->ifp, ATMEV_VCC_CHANGED, &_arg); \ - } while (0) - -#define ATMEV_SEND_IFSTATE_CHANGED(ATMIF, CARRIER) \ - do { \ - struct atmev_ifstate_changed _arg; \ - _arg.running = (((ATMIF)->ifp->if_drv_flags & \ - IFF_DRV_RUNNING) != 0); \ - _arg.carrier = ((CARRIER) != 0); \ - atm_event((ATMIF)->ifp, ATMEV_IFSTATE_CHANGED, &_arg); \ - } while (0) - -#define ATMEV_SEND_ACR_CHANGED(ATMIF, VPI, VCI, ACR) \ - do { \ - struct atmev_acr_changed _arg; \ - _arg.vpi = (VPI); \ - _arg.vci = (VCI); \ - _arg.acr= (ACR); \ - atm_event((ATMIF)->ifp, ATMEV_ACR_CHANGED, &_arg); \ - } while (0) -#endif diff --git a/sys/net/if_atmsubr.c b/sys/net/if_atmsubr.c deleted file mode 100644 index 2d38b8ada7e9..000000000000 --- a/sys/net/if_atmsubr.c +++ /dev/null @@ -1,504 +0,0 @@ -/* $NetBSD: if_atmsubr.c,v 1.10 1997/03/11 23:19:51 chuck Exp $ */ - -/*- - * - * Copyright (c) 1996 Charles D. Cranor and Washington University. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by Charles D. Cranor and - * Washington University. - * 4. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * if_atmsubr.c - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include "opt_inet.h" -#include "opt_inet6.h" -#include "opt_natm.h" - -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/kernel.h> -#include <sys/module.h> -#include <sys/mbuf.h> -#include <sys/socket.h> -#include <sys/sockio.h> -#include <sys/errno.h> -#include <sys/sysctl.h> -#include <sys/malloc.h> - -#include <net/if.h> -#include <net/if_var.h> -#include <net/netisr.h> -#include <net/route.h> -#include <net/if_dl.h> -#include <net/if_types.h> -#include <net/if_atm.h> - -#include <netinet/in.h> -#include <netinet/if_atm.h> -#include <netinet/if_ether.h> /* XXX: for ETHERTYPE_* */ -#if defined(INET) || defined(INET6) -#include <netinet/in_var.h> -#endif -#ifdef NATM -#include <netnatm/natm.h> -#endif - -#include <security/mac/mac_framework.h> - -/* - * Netgraph interface functions. - * These need not be protected by a lock, because ng_atm nodes are persitent. - * The ng_atm module can be unloaded only if all ATM interfaces have been - * unloaded, so nobody should be in the code paths accessing these function - * pointers. - */ -void (*ng_atm_attach_p)(struct ifnet *); -void (*ng_atm_detach_p)(struct ifnet *); -int (*ng_atm_output_p)(struct ifnet *, struct mbuf **); -void (*ng_atm_input_p)(struct ifnet *, struct mbuf **, - struct atm_pseudohdr *, void *); -void (*ng_atm_input_orphan_p)(struct ifnet *, struct mbuf *, - struct atm_pseudohdr *, void *); -void (*ng_atm_event_p)(struct ifnet *, uint32_t, void *); - -/* - * Harp pseudo interface hooks - */ -void (*atm_harp_input_p)(struct ifnet *ifp, struct mbuf **m, - struct atm_pseudohdr *ah, void *rxhand); -void (*atm_harp_attach_p)(struct ifnet *); -void (*atm_harp_detach_p)(struct ifnet *); -void (*atm_harp_event_p)(struct ifnet *, uint32_t, void *); - -SYSCTL_NODE(_hw, OID_AUTO, atm, CTLFLAG_RW, 0, "ATM hardware"); - -static MALLOC_DEFINE(M_IFATM, "ifatm", "atm interface internals"); - -#ifndef ETHERTYPE_IPV6 -#define ETHERTYPE_IPV6 0x86dd -#endif - -#define senderr(e) do { error = (e); goto bad; } while (0) - -/* - * atm_output: ATM output routine - * inputs: - * "ifp" = ATM interface to output to - * "m0" = the packet to output - * "dst" = the sockaddr to send to (either IP addr, or raw VPI/VCI) - * "ro" = the route to use - * returns: error code [0 == ok] - * - * note: special semantic: if (dst == NULL) then we assume "m" already - * has an atm_pseudohdr on it and just send it directly. - * [for native mode ATM output] if dst is null, then - * ro->ro_rt must also be NULL. - */ -int -atm_output(struct ifnet *ifp, struct mbuf *m0, const struct sockaddr *dst, - struct route *ro) -{ - u_int16_t etype = 0; /* if using LLC/SNAP */ - int error = 0, sz; - struct atm_pseudohdr atmdst, *ad; - struct mbuf *m = m0; - struct atmllc *atmllc; - const struct atmllc *llc_hdr = NULL; - u_int32_t atm_flags; - -#ifdef MAC - error = mac_ifnet_check_transmit(ifp, m); - if (error) - senderr(error); -#endif - - if (!((ifp->if_flags & IFF_UP) && - (ifp->if_drv_flags & IFF_DRV_RUNNING))) - senderr(ENETDOWN); - - /* - * check for non-native ATM traffic (dst != NULL) - */ - if (dst) { - switch (dst->sa_family) { - -#if defined(INET) || defined(INET6) - case AF_INET: - case AF_INET6: - { - if (dst->sa_family == AF_INET6) - etype = ETHERTYPE_IPV6; - else - etype = ETHERTYPE_IP; - if (!atmresolve(ro->ro_rt, m, dst, &atmdst)) { - m = NULL; - /* XXX: atmresolve already free'd it */ - senderr(EHOSTUNREACH); - /* XXX: put ATMARP stuff here */ - /* XXX: watch who frees m on failure */ - } - } - break; -#endif /* INET || INET6 */ - - case AF_UNSPEC: - /* - * XXX: bpfwrite. assuming dst contains 12 bytes - * (atm pseudo header (4) + LLC/SNAP (8)) - */ - bcopy(dst->sa_data, &atmdst, sizeof(atmdst)); - llc_hdr = (const struct atmllc *)(dst->sa_data + - sizeof(atmdst)); - break; - - default: - printf("%s: can't handle af%d\n", ifp->if_xname, - dst->sa_family); - senderr(EAFNOSUPPORT); - } - - /* - * must add atm_pseudohdr to data - */ - sz = sizeof(atmdst); - atm_flags = ATM_PH_FLAGS(&atmdst); - if (atm_flags & ATM_PH_LLCSNAP) - sz += 8; /* sizeof snap == 8 */ - M_PREPEND(m, sz, M_NOWAIT); - if (m == NULL) - senderr(ENOBUFS); - ad = mtod(m, struct atm_pseudohdr *); - *ad = atmdst; - if (atm_flags & ATM_PH_LLCSNAP) { - atmllc = (struct atmllc *)(ad + 1); - if (llc_hdr == NULL) { - bcopy(ATMLLC_HDR, atmllc->llchdr, - sizeof(atmllc->llchdr)); - /* note: in host order */ - ATM_LLC_SETTYPE(atmllc, etype); - } - else - bcopy(llc_hdr, atmllc, sizeof(struct atmllc)); - } - } - - if (ng_atm_output_p != NULL) { - if ((error = (*ng_atm_output_p)(ifp, &m)) != 0) { - if (m != NULL) - m_freem(m); - return (error); - } - if (m == NULL) - return (0); - } - - /* - * Queue message on interface, and start output if interface - * not yet active. - */ - if (!IF_HANDOFF_ADJ(&ifp->if_snd, m, ifp, - -(int)sizeof(struct atm_pseudohdr))) - return (ENOBUFS); - return (error); - -bad: - if (m) - m_freem(m); - return (error); -} - -/* - * Process a received ATM packet; - * the packet is in the mbuf chain m. - */ -void -atm_input(struct ifnet *ifp, struct atm_pseudohdr *ah, struct mbuf *m, - void *rxhand) -{ - int isr; - u_int16_t etype = ETHERTYPE_IP; /* default */ - - if ((ifp->if_flags & IFF_UP) == 0) { - m_freem(m); - return; - } -#ifdef MAC - mac_ifnet_create_mbuf(ifp, m); -#endif - if_inc_counter(ifp, IFCOUNTER_IBYTES, m->m_pkthdr.len); - - if (ng_atm_input_p != NULL) { - (*ng_atm_input_p)(ifp, &m, ah, rxhand); - if (m == NULL) - return; - } - - /* not eaten by ng_atm. Maybe it's a pseudo-harp PDU? */ - if (atm_harp_input_p != NULL) { - (*atm_harp_input_p)(ifp, &m, ah, rxhand); - if (m == NULL) - return; - } - - if (rxhand) { -#ifdef NATM - struct natmpcb *npcb; - - /* - * XXXRW: this use of 'rxhand' is not a very good idea, and - * was subject to races even before SMPng due to the release - * of spl here. - */ - NATM_LOCK(); - npcb = rxhand; - npcb->npcb_inq++; /* count # in queue */ - isr = NETISR_NATM; - m->m_pkthdr.rcvif = rxhand; /* XXX: overload */ - NATM_UNLOCK(); -#else - printf("atm_input: NATM detected but not " - "configured in kernel\n"); - goto dropit; -#endif - } else { - /* - * handle LLC/SNAP header, if present - */ - if (ATM_PH_FLAGS(ah) & ATM_PH_LLCSNAP) { - struct atmllc *alc; - - if (m->m_len < sizeof(*alc) && - (m = m_pullup(m, sizeof(*alc))) == NULL) - return; /* failed */ - alc = mtod(m, struct atmllc *); - if (bcmp(alc, ATMLLC_HDR, 6)) { - printf("%s: recv'd invalid LLC/SNAP frame " - "[vp=%d,vc=%d]\n", ifp->if_xname, - ATM_PH_VPI(ah), ATM_PH_VCI(ah)); - m_freem(m); - return; - } - etype = ATM_LLC_TYPE(alc); - m_adj(m, sizeof(*alc)); - } - - switch (etype) { - -#ifdef INET - case ETHERTYPE_IP: - isr = NETISR_IP; - break; -#endif - -#ifdef INET6 - case ETHERTYPE_IPV6: - isr = NETISR_IPV6; - break; -#endif - default: -#ifndef NATM - dropit: -#endif - if (ng_atm_input_orphan_p != NULL) - (*ng_atm_input_orphan_p)(ifp, m, ah, rxhand); - else - m_freem(m); - return; - } - } - M_SETFIB(m, ifp->if_fib); - netisr_dispatch(isr, m); -} - -/* - * Perform common duties while attaching to interface list. - */ -void -atm_ifattach(struct ifnet *ifp) -{ - struct ifaddr *ifa; - struct sockaddr_dl *sdl; - struct ifatm *ifatm = ifp->if_l2com; - - ifp->if_addrlen = 0; - ifp->if_hdrlen = 0; - if_attach(ifp); - ifp->if_mtu = ATMMTU; - ifp->if_output = atm_output; -#if 0 - ifp->if_input = atm_input; -#endif - ifp->if_snd.ifq_maxlen = 50; /* dummy */ - - TAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) - if (ifa->ifa_addr->sa_family == AF_LINK) { - sdl = (struct sockaddr_dl *)ifa->ifa_addr; - sdl->sdl_type = IFT_ATM; - sdl->sdl_alen = ifp->if_addrlen; -#ifdef notyet /* if using ATMARP, store hardware address using the next line */ - bcopy(ifp->hw_addr, LLADDR(sdl), ifp->if_addrlen); -#endif - break; - } - - ifp->if_linkmib = &ifatm->mib; - ifp->if_linkmiblen = sizeof(ifatm->mib); - - if(ng_atm_attach_p) - (*ng_atm_attach_p)(ifp); - if (atm_harp_attach_p) - (*atm_harp_attach_p)(ifp); -} - -/* - * Common stuff for detaching an ATM interface - */ -void -atm_ifdetach(struct ifnet *ifp) -{ - if (atm_harp_detach_p) - (*atm_harp_detach_p)(ifp); - if(ng_atm_detach_p) - (*ng_atm_detach_p)(ifp); - if_detach(ifp); -} - -/* - * Support routine for the SIOCATMGVCCS ioctl(). - * - * This routine assumes, that the private VCC structures used by the driver - * begin with a struct atmio_vcc. - * - * Return a table of VCCs in a freshly allocated memory area. - * Here we have a problem: we first count, how many vccs we need - * to return. The we allocate the memory and finally fill it in. - * Because we cannot lock while calling malloc, the number of active - * vccs may change while we're in malloc. So we allocate a couple of - * vccs more and if space anyway is not enough re-iterate. - * - * We could use an sx lock for the vcc tables. - */ -struct atmio_vcctable * -atm_getvccs(struct atmio_vcc **table, u_int size, u_int start, - struct mtx *lock, int waitok) -{ - u_int cid, alloc; - size_t len; - struct atmio_vcctable *vccs; - struct atmio_vcc *v; - - alloc = start + 10; - vccs = NULL; - - for (;;) { - len = sizeof(*vccs) + alloc * sizeof(vccs->vccs[0]); - vccs = reallocf(vccs, len, M_TEMP, - waitok ? M_WAITOK : M_NOWAIT); - if (vccs == NULL) - return (NULL); - bzero(vccs, len); - - vccs->count = 0; - v = vccs->vccs; - - mtx_lock(lock); - for (cid = 0; cid < size; cid++) - if (table[cid] != NULL) { - if (++vccs->count == alloc) - /* too many - try again */ - break; - *v++ = *table[cid]; - } - mtx_unlock(lock); - - if (cid == size) - break; - - alloc *= 2; - } - return (vccs); -} - -/* - * Driver or channel state has changed. Inform whoever is interested - * in these events. - */ -void -atm_event(struct ifnet *ifp, u_int event, void *arg) -{ - if (ng_atm_event_p != NULL) - (*ng_atm_event_p)(ifp, event, arg); - if (atm_harp_event_p != NULL) - (*atm_harp_event_p)(ifp, event, arg); -} - -static void * -atm_alloc(u_char type, struct ifnet *ifp) -{ - struct ifatm *ifatm; - - ifatm = malloc(sizeof(struct ifatm), M_IFATM, M_WAITOK | M_ZERO); - ifatm->ifp = ifp; - - return (ifatm); -} - -static void -atm_free(void *com, u_char type) -{ - - free(com, M_IFATM); -} - -static int -atm_modevent(module_t mod, int type, void *data) -{ - switch (type) { - case MOD_LOAD: - if_register_com_alloc(IFT_ATM, atm_alloc, atm_free); - break; - case MOD_UNLOAD: - if_deregister_com_alloc(IFT_ATM); - break; - default: - return (EOPNOTSUPP); - } - - return (0); -} - -static moduledata_t atm_mod = { - "atm", - atm_modevent, - 0 -}; - -DECLARE_MODULE(atm, atm_mod, SI_SUB_INIT_IF, SI_ORDER_ANY); -MODULE_VERSION(atm, 1); diff --git a/sys/net/netisr.h b/sys/net/netisr.h index 63764a74f2eb..b0e8e5abcb35 100644 --- a/sys/net/netisr.h +++ b/sys/net/netisr.h @@ -55,7 +55,6 @@ #define NETISR_ARP 4 /* same as AF_LINK */ #define NETISR_ETHER 5 /* ethernet input */ #define NETISR_IPV6 6 -#define NETISR_NATM 7 #define NETISR_EPAIR 8 /* if_epair(4) */ #define NETISR_IP_DIRECT 9 /* direct-dispatch IPv4 */ #define NETISR_IPV6_DIRECT 10 /* direct-dispatch IPv6 */ diff --git a/sys/netgraph/atm/ng_atm.c b/sys/netgraph/atm/ng_atm.c deleted file mode 100644 index e06cb1d02036..000000000000 --- a/sys/netgraph/atm/ng_atm.c +++ /dev/null @@ -1,1448 +0,0 @@ -/*- - * Copyright (c) 2001-2003 - * Fraunhofer Institute for Open Communication Systems (FhG Fokus). - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * Author: Hartmut Brandt <harti@freebsd.org> - */ - -/* - * Netgraph module to connect NATM interfaces to netgraph. - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/kernel.h> -#include <sys/malloc.h> -#include <sys/mbuf.h> -#include <sys/errno.h> -#include <sys/syslog.h> -#include <sys/socket.h> -#include <sys/socketvar.h> -#include <sys/sbuf.h> -#include <sys/ioccom.h> -#include <sys/sysctl.h> - -#include <net/if.h> -#include <net/if_types.h> -#include <net/if_arp.h> -#include <net/if_var.h> -#include <net/if_media.h> -#include <net/if_atm.h> -#include <net/vnet.h> - -#include <netgraph/ng_message.h> -#include <netgraph/netgraph.h> -#include <netgraph/ng_parse.h> -#include <netgraph/atm/ng_atm.h> - -/* - * Hooks in the NATM code - */ -extern void (*ng_atm_attach_p)(struct ifnet *); -extern void (*ng_atm_detach_p)(struct ifnet *); -extern int (*ng_atm_output_p)(struct ifnet *, struct mbuf **); -extern void (*ng_atm_input_p)(struct ifnet *, struct mbuf **, - struct atm_pseudohdr *, void *); -extern void (*ng_atm_input_orphan_p)(struct ifnet *, struct mbuf *, - struct atm_pseudohdr *, void *); -extern void (*ng_atm_event_p)(struct ifnet *, uint32_t, void *); - -/* - * Sysctl stuff. - */ -static SYSCTL_NODE(_net_graph, OID_AUTO, atm, CTLFLAG_RW, 0, - "atm related stuff"); - -#ifdef NGATM_DEBUG -static int allow_shutdown; - -SYSCTL_INT(_net_graph_atm, OID_AUTO, allow_shutdown, CTLFLAG_RW, - &allow_shutdown, 0, "allow ng_atm nodes to shutdown"); -#endif - -/* - * Hook private data - */ -struct ngvcc { - uint16_t vpi; /* VPI of this hook */ - uint16_t vci; /* VCI of this hook, 0 if none */ - uint32_t flags; /* private flags */ - hook_p hook; /* the connected hook */ - - LIST_ENTRY(ngvcc) link; -}; -#define VCC_OPEN 0x0001 /* open */ - -/* - * Node private data - */ -struct priv { - struct ifnet *ifp; /* the ATM interface */ - hook_p input; /* raw input hook */ - hook_p orphans; /* packets to nowhere */ - hook_p output; /* catch output packets */ - hook_p manage; /* has also entry in vccs */ - uint64_t in_packets; - uint64_t in_errors; - uint64_t out_packets; - uint64_t out_errors; - - LIST_HEAD(, ngvcc) vccs; -}; - -/* - * Parse ifstate state - */ -static const struct ng_parse_struct_field ng_atm_if_change_info[] = - NGM_ATM_IF_CHANGE_INFO; -static const struct ng_parse_type ng_atm_if_change_type = { - &ng_parse_struct_type, - &ng_atm_if_change_info -}; - -/* - * Parse vcc state change - */ -static const struct ng_parse_struct_field ng_atm_vcc_change_info[] = - NGM_ATM_VCC_CHANGE_INFO; -static const struct ng_parse_type ng_atm_vcc_change_type = { - &ng_parse_struct_type, - &ng_atm_vcc_change_info -}; - -/* - * Parse acr change - */ -static const struct ng_parse_struct_field ng_atm_acr_change_info[] = - NGM_ATM_ACR_CHANGE_INFO; -static const struct ng_parse_type ng_atm_acr_change_type = { - &ng_parse_struct_type, - &ng_atm_acr_change_info -}; - -/* - * Parse the configuration structure ng_atm_config - */ -static const struct ng_parse_struct_field ng_atm_config_type_info[] = - NGM_ATM_CONFIG_INFO; - -static const struct ng_parse_type ng_atm_config_type = { - &ng_parse_struct_type, - &ng_atm_config_type_info -}; - -/* - * Parse a single vcc structure and a variable array of these ng_atm_vccs - */ -static const struct ng_parse_struct_field ng_atm_tparam_type_info[] = - NGM_ATM_TPARAM_INFO; -static const struct ng_parse_type ng_atm_tparam_type = { - &ng_parse_struct_type, - &ng_atm_tparam_type_info -}; -static const struct ng_parse_struct_field ng_atm_vcc_type_info[] = - NGM_ATM_VCC_INFO; -static const struct ng_parse_type ng_atm_vcc_type = { - &ng_parse_struct_type, - &ng_atm_vcc_type_info -}; - - -static int -ng_atm_vccarray_getlen(const struct ng_parse_type *type, - const u_char *start, const u_char *buf) -{ - const struct atmio_vcctable *vp; - - vp = (const struct atmio_vcctable *) - (buf - offsetof(struct atmio_vcctable, vccs)); - - return (vp->count); -} -static const struct ng_parse_array_info ng_atm_vccarray_info = - NGM_ATM_VCCARRAY_INFO; -static const struct ng_parse_type ng_atm_vccarray_type = { - &ng_parse_array_type, - &ng_atm_vccarray_info -}; - - -static const struct ng_parse_struct_field ng_atm_vcctable_type_info[] = - NGM_ATM_VCCTABLE_INFO; - -static const struct ng_parse_type ng_atm_vcctable_type = { - &ng_parse_struct_type, - &ng_atm_vcctable_type_info -}; - -/* - * Parse CPCS INIT structure ng_atm_cpcs_init - */ -static const struct ng_parse_struct_field ng_atm_cpcs_init_type_info[] = - NGM_ATM_CPCS_INIT_INFO; - -static const struct ng_parse_type ng_atm_cpcs_init_type = { - &ng_parse_struct_type, - &ng_atm_cpcs_init_type_info -}; - -/* - * Parse CPCS TERM structure ng_atm_cpcs_term - */ -static const struct ng_parse_struct_field ng_atm_cpcs_term_type_info[] = - NGM_ATM_CPCS_TERM_INFO; - -static const struct ng_parse_type ng_atm_cpcs_term_type = { - &ng_parse_struct_type, - &ng_atm_cpcs_term_type_info -}; - -/* - * Parse statistic struct - */ -static const struct ng_parse_struct_field ng_atm_stats_type_info[] = - NGM_ATM_STATS_INFO; - -static const struct ng_parse_type ng_atm_stats_type = { - &ng_parse_struct_type, - &ng_atm_stats_type_info -}; - -static const struct ng_cmdlist ng_atm_cmdlist[] = { - { - NGM_ATM_COOKIE, - NGM_ATM_GET_IFNAME, - "getifname", - NULL, - &ng_parse_string_type - }, - { - NGM_ATM_COOKIE, - NGM_ATM_GET_CONFIG, - "getconfig", - NULL, - &ng_atm_config_type - }, - { - NGM_ATM_COOKIE, - NGM_ATM_GET_VCCS, - "getvccs", - NULL, - &ng_atm_vcctable_type - }, - { - NGM_ATM_COOKIE, - NGM_ATM_CPCS_INIT, - "cpcsinit", - &ng_atm_cpcs_init_type, - NULL - }, - { - NGM_ATM_COOKIE, - NGM_ATM_CPCS_TERM, - "cpcsterm", - &ng_atm_cpcs_term_type, - NULL - }, - { - NGM_ATM_COOKIE, - NGM_ATM_GET_VCC, - "getvcc", - &ng_parse_hookbuf_type, - &ng_atm_vcc_type - }, - { - NGM_ATM_COOKIE, - NGM_ATM_GET_VCCID, - "getvccid", - &ng_atm_vcc_type, - &ng_atm_vcc_type - }, - { - NGM_ATM_COOKIE, - NGM_ATM_GET_STATS, - "getstats", - NULL, - &ng_atm_stats_type - }, - - /* events */ - { - NGM_ATM_COOKIE, - NGM_ATM_IF_CHANGE, - "if_change", - &ng_atm_if_change_type, - &ng_atm_if_change_type, - }, - { - NGM_ATM_COOKIE, - NGM_ATM_VCC_CHANGE, - "vcc_change", - &ng_atm_vcc_change_type, - &ng_atm_vcc_change_type, - }, - { - NGM_ATM_COOKIE, - NGM_ATM_ACR_CHANGE, - "acr_change", - &ng_atm_acr_change_type, - &ng_atm_acr_change_type, - }, - { 0 } -}; - -static int ng_atm_mod_event(module_t, int, void *); - -static ng_constructor_t ng_atm_constructor; -static ng_shutdown_t ng_atm_shutdown; -static ng_rcvmsg_t ng_atm_rcvmsg; -static ng_newhook_t ng_atm_newhook; -static ng_connect_t ng_atm_connect; -static ng_disconnect_t ng_atm_disconnect; -static ng_rcvdata_t ng_atm_rcvdata; -static ng_rcvdata_t ng_atm_rcvdrop; - -static struct ng_type ng_atm_typestruct = { - .version = NG_ABI_VERSION, - .name = NG_ATM_NODE_TYPE, - .mod_event = ng_atm_mod_event, - .constructor = ng_atm_constructor, - .rcvmsg = ng_atm_rcvmsg, - .shutdown = ng_atm_shutdown, - .newhook = ng_atm_newhook, - .connect = ng_atm_connect, - .rcvdata = ng_atm_rcvdata, - .disconnect = ng_atm_disconnect, - .cmdlist = ng_atm_cmdlist, -}; -NETGRAPH_INIT(atm, &ng_atm_typestruct); - -static const struct { - u_int media; - const char *name; -} atmmedia[] = IFM_SUBTYPE_ATM_DESCRIPTIONS; - - -#define IFP2NG(IFP) ((node_p)((struct ifatm *)(IFP)->if_softc)->ngpriv) -#define IFP2NG_SET(IFP, val) (((struct ifatm *)(IFP)->if_softc)->ngpriv = (val)) - -#define IFFLAGS "\020\001UP\002BROADCAST\003DEBUG\004LOOPBACK" \ - "\005POINTOPOINT\006SMART\007RUNNING\010NOARP" \ - "\011PROMISC\012ALLMULTI\013OACTIVE\014SIMPLEX" \ - "\015LINK0\016LINK1\017LINK2\020MULTICAST" - - -/************************************************************/ -/* - * INPUT - */ -/* - * A packet is received from an interface. - * If we have an input hook, prepend the pseudoheader to the data and - * deliver it out to that hook. If not, look whether it is destined for - * use. If so locate the appropriate hook, deliver the packet without the - * header and we are done. If it is not for us, leave it alone. - */ -static void -ng_atm_input(struct ifnet *ifp, struct mbuf **mp, - struct atm_pseudohdr *ah, void *rxhand) -{ - node_p node = IFP2NG(ifp); - struct priv *priv; - const struct ngvcc *vcc; - int error; - - if (node == NULL) - return; - priv = NG_NODE_PRIVATE(node); - if (priv->input != NULL) { - /* - * Prepend the atm_pseudoheader. - */ - M_PREPEND(*mp, sizeof(*ah), M_NOWAIT); - if (*mp == NULL) - return; - memcpy(mtod(*mp, struct atm_pseudohdr *), ah, sizeof(*ah)); - NG_SEND_DATA_ONLY(error, priv->input, *mp); - if (error == 0) { - priv->in_packets++; - *mp = NULL; - } else { -#ifdef NGATM_DEBUG - printf("%s: error=%d\n", __func__, error); -#endif - priv->in_errors++; - } - return; - } - if ((ATM_PH_FLAGS(ah) & ATMIO_FLAG_NG) == 0) - return; - - vcc = (struct ngvcc *)rxhand; - - NG_SEND_DATA_ONLY(error, vcc->hook, *mp); - if (error == 0) { - priv->in_packets++; - *mp = NULL; - } else { -#ifdef NGATM_DEBUG - printf("%s: error=%d\n", __func__, error); -#endif - priv->in_errors++; - } -} - -/* - * ATM packet is about to be output. The atm_pseudohdr is already prepended. - * If the hook is set, reroute the packet to the hook. - */ -static int -ng_atm_output(struct ifnet *ifp, struct mbuf **mp) -{ - const node_p node = IFP2NG(ifp); - const struct priv *priv; - int error = 0; - - if (node == NULL) - return (0); - priv = NG_NODE_PRIVATE(node); - if (priv->output) { - NG_SEND_DATA_ONLY(error, priv->output, *mp); - *mp = NULL; - } - - return (error); -} - -/* - * Well, this doesn't make much sense for ATM. - */ -static void -ng_atm_input_orphans(struct ifnet *ifp, struct mbuf *m, - struct atm_pseudohdr *ah, void *rxhand) -{ - node_p node = IFP2NG(ifp); - struct priv *priv; - int error; - - if (node == NULL) { - m_freem(m); - return; - } - priv = NG_NODE_PRIVATE(node); - if (priv->orphans == NULL) { - m_freem(m); - return; - } - /* - * Prepend the atm_pseudoheader. - */ - M_PREPEND(m, sizeof(*ah), M_NOWAIT); - if (m == NULL) - return; - memcpy(mtod(m, struct atm_pseudohdr *), ah, sizeof(*ah)); - NG_SEND_DATA_ONLY(error, priv->orphans, m); - if (error == 0) - priv->in_packets++; - else { - priv->in_errors++; -#ifdef NGATM_DEBUG - printf("%s: error=%d\n", __func__, error); -#endif - } -} - -/************************************************************/ -/* - * OUTPUT - */ -static int -ng_atm_rcvdata(hook_p hook, item_p item) -{ - node_p node = NG_HOOK_NODE(hook); - struct priv *priv = NG_NODE_PRIVATE(node); - const struct ngvcc *vcc = NG_HOOK_PRIVATE(hook); - struct mbuf *m; - struct atm_pseudohdr *aph; - int error; - - if (vcc->vci == 0) { - NG_FREE_ITEM(item); - return (ENOTCONN); - } - - NGI_GET_M(item, m); - NG_FREE_ITEM(item); - - /* - * Prepend pseudo-hdr. Drivers don't care about the flags. - */ - M_PREPEND(m, sizeof(*aph), M_NOWAIT); - if (m == NULL) { - NG_FREE_M(m); - return (ENOMEM); - } - aph = mtod(m, struct atm_pseudohdr *); - ATM_PH_VPI(aph) = vcc->vpi; - ATM_PH_SETVCI(aph, vcc->vci); - ATM_PH_FLAGS(aph) = 0; - - if ((error = atm_output(priv->ifp, m, NULL, NULL)) == 0) - priv->out_packets++; - else - priv->out_errors++; - return (error); -} - -static int -ng_atm_rcvdrop(hook_p hook, item_p item) -{ - NG_FREE_ITEM(item); - return (0); -} - - -/************************************************************ - * - * Event from driver. - */ -static void -ng_atm_event_func(node_p node, hook_p hook, void *arg, int event) -{ - const struct priv *priv = NG_NODE_PRIVATE(node); - struct ngvcc *vcc; - struct ng_mesg *mesg; - int error; - - switch (event) { - - case ATMEV_FLOW_CONTROL: - { - struct atmev_flow_control *ev = arg; - struct ngm_queue_state *qstate; - - /* find the connection */ - LIST_FOREACH(vcc, &priv->vccs, link) - if (vcc->vci == ev->vci && vcc->vpi == ev->vpi) - break; - if (vcc == NULL) - break; - - /* convert into a flow control message */ - NG_MKMESSAGE(mesg, NGM_FLOW_COOKIE, - ev->busy ? NGM_HIGH_WATER_PASSED : NGM_LOW_WATER_PASSED, - sizeof(struct ngm_queue_state), M_NOWAIT); - if (mesg == NULL) - break; - qstate = (struct ngm_queue_state *)mesg->data; - - /* XXX have to figure out how to get that info */ - - NG_SEND_MSG_HOOK(error, node, mesg, vcc->hook, 0); - break; - } - - case ATMEV_VCC_CHANGED: - { - struct atmev_vcc_changed *ev = arg; - struct ngm_atm_vcc_change *chg; - - if (priv->manage == NULL) - break; - NG_MKMESSAGE(mesg, NGM_ATM_COOKIE, NGM_ATM_VCC_CHANGE, - sizeof(struct ngm_atm_vcc_change), M_NOWAIT); - if (mesg == NULL) - break; - chg = (struct ngm_atm_vcc_change *)mesg->data; - chg->vci = ev->vci; - chg->vpi = ev->vpi; - chg->state = (ev->up != 0); - chg->node = NG_NODE_ID(node); - NG_SEND_MSG_HOOK(error, node, mesg, priv->manage, 0); - break; - } - - case ATMEV_IFSTATE_CHANGED: - { - struct atmev_ifstate_changed *ev = arg; - struct ngm_atm_if_change *chg; - - if (priv->manage == NULL) - break; - NG_MKMESSAGE(mesg, NGM_ATM_COOKIE, NGM_ATM_IF_CHANGE, - sizeof(struct ngm_atm_if_change), M_NOWAIT); - if (mesg == NULL) - break; - chg = (struct ngm_atm_if_change *)mesg->data; - chg->carrier = (ev->carrier != 0); - chg->running = (ev->running != 0); - chg->node = NG_NODE_ID(node); - NG_SEND_MSG_HOOK(error, node, mesg, priv->manage, 0); - break; - } - - case ATMEV_ACR_CHANGED: - { - struct atmev_acr_changed *ev = arg; - struct ngm_atm_acr_change *acr; - - /* find the connection */ - LIST_FOREACH(vcc, &priv->vccs, link) - if (vcc->vci == ev->vci && vcc->vpi == ev->vpi) - break; - if (vcc == NULL) - break; - - /* convert into a flow control message */ - NG_MKMESSAGE(mesg, NGM_ATM_COOKIE, NGM_ATM_ACR_CHANGE, - sizeof(struct ngm_atm_acr_change), M_NOWAIT); - if (mesg == NULL) - break; - acr = (struct ngm_atm_acr_change *)mesg->data; - acr->node = NG_NODE_ID(node); - acr->vci = ev->vci; - acr->vpi = ev->vpi; - acr->acr = ev->acr; - - NG_SEND_MSG_HOOK(error, node, mesg, vcc->hook, 0); - break; - } - } -} - -/* - * Use send_fn to get the right lock - */ -static void -ng_atm_event(struct ifnet *ifp, uint32_t event, void *arg) -{ - const node_p node = IFP2NG(ifp); - - if (node != NULL) - /* may happen during attach/detach */ - (void)ng_send_fn(node, NULL, ng_atm_event_func, arg, event); -} - -/************************************************************ - * - * CPCS - */ -/* - * Open a channel for the user - */ -static int -ng_atm_cpcs_init(node_p node, const struct ngm_atm_cpcs_init *arg) -{ - struct priv *priv = NG_NODE_PRIVATE(node); - const struct ifatm_mib *mib; - struct ngvcc *vcc; - struct atmio_openvcc data; - int err; - - if(priv->ifp->if_ioctl == NULL) - return (ENXIO); - - mib = (const struct ifatm_mib *)(priv->ifp->if_linkmib); - - LIST_FOREACH(vcc, &priv->vccs, link) - if (strcmp(arg->name, NG_HOOK_NAME(vcc->hook)) == 0) - break; - if (vcc == NULL) - return (ENOTCONN); - if (vcc->flags & VCC_OPEN) - return (EISCONN); - - /* - * Check user arguments and construct ioctl argument - */ - memset(&data, 0, sizeof(data)); - - data.rxhand = vcc; - - switch (data.param.aal = arg->aal) { - - case ATMIO_AAL_34: - case ATMIO_AAL_5: - case ATMIO_AAL_0: - case ATMIO_AAL_RAW: - break; - - default: - return (EINVAL); - } - - if (arg->vpi > 0xff) - return (EINVAL); - data.param.vpi = arg->vpi; - - /* allow 0.0 as catch all receive channel */ - if (arg->vci == 0 && (arg->vpi != 0 || !(arg->flags & ATMIO_FLAG_NOTX))) - return (EINVAL); - data.param.vci = arg->vci; - - data.param.tparam.pcr = arg->pcr; - - if (arg->mcr > arg->pcr) - return (EINVAL); - data.param.tparam.mcr = arg->mcr; - - if (!(arg->flags & ATMIO_FLAG_NOTX)) { - if (arg->tmtu == 0) - data.param.tmtu = priv->ifp->if_mtu; - else { - data.param.tmtu = arg->tmtu; - } - } - if (!(arg->flags & ATMIO_FLAG_NORX)) { - if (arg->rmtu == 0) - data.param.rmtu = priv->ifp->if_mtu; - else { - data.param.rmtu = arg->rmtu; - } - } - - switch (data.param.traffic = arg->traffic) { - - case ATMIO_TRAFFIC_UBR: - case ATMIO_TRAFFIC_CBR: - break; - - case ATMIO_TRAFFIC_VBR: - if (arg->scr > arg->pcr) - return (EINVAL); - data.param.tparam.scr = arg->scr; - - if (arg->mbs > (1 << 24)) - return (EINVAL); - data.param.tparam.mbs = arg->mbs; - break; - - case ATMIO_TRAFFIC_ABR: - if (arg->icr > arg->pcr || arg->icr < arg->mcr) - return (EINVAL); - data.param.tparam.icr = arg->icr; - - if (arg->tbe == 0 || arg->tbe > (1 << 24)) - return (EINVAL); - data.param.tparam.tbe = arg->tbe; - - if (arg->nrm > 0x7) - return (EINVAL); - data.param.tparam.nrm = arg->nrm; - - if (arg->trm > 0x7) - return (EINVAL); - data.param.tparam.trm = arg->trm; - - if (arg->adtf > 0x3ff) - return (EINVAL); - data.param.tparam.adtf = arg->adtf; - - if (arg->rif > 0xf) - return (EINVAL); - data.param.tparam.rif = arg->rif; - - if (arg->rdf > 0xf) - return (EINVAL); - data.param.tparam.rdf = arg->rdf; - - if (arg->cdf > 0x7) - return (EINVAL); - data.param.tparam.cdf = arg->cdf; - - break; - - default: - return (EINVAL); - } - - if ((arg->flags & ATMIO_FLAG_NORX) && (arg->flags & ATMIO_FLAG_NOTX)) - return (EINVAL); - - data.param.flags = arg->flags & ~(ATM_PH_AAL5 | ATM_PH_LLCSNAP); - data.param.flags |= ATMIO_FLAG_NG; - - err = (*priv->ifp->if_ioctl)(priv->ifp, SIOCATMOPENVCC, (caddr_t)&data); - - if (err == 0) { - vcc->vci = data.param.vci; - vcc->vpi = data.param.vpi; - vcc->flags = VCC_OPEN; - } - - return (err); -} - -/* - * Issue the close command to the driver - */ -static int -cpcs_term(const struct priv *priv, u_int vpi, u_int vci) -{ - struct atmio_closevcc data; - - if (priv->ifp->if_ioctl == NULL) - return ENXIO; - - data.vpi = vpi; - data.vci = vci; - - return ((*priv->ifp->if_ioctl)(priv->ifp, - SIOCATMCLOSEVCC, (caddr_t)&data)); -} - - -/* - * Close a channel by request of the user - */ -static int -ng_atm_cpcs_term(node_p node, const struct ngm_atm_cpcs_term *arg) -{ - struct priv *priv = NG_NODE_PRIVATE(node); - struct ngvcc *vcc; - int error; - - LIST_FOREACH(vcc, &priv->vccs, link) - if(strcmp(arg->name, NG_HOOK_NAME(vcc->hook)) == 0) - break; - if (vcc == NULL) - return (ENOTCONN); - if (!(vcc->flags & VCC_OPEN)) - return (ENOTCONN); - - error = cpcs_term(priv, vcc->vpi, vcc->vci); - - vcc->vci = 0; - vcc->vpi = 0; - vcc->flags = 0; - - return (error); -} - -/************************************************************/ -/* - * CONTROL MESSAGES - */ - -/* - * Produce a textual description of the current status - */ -static int -text_status(node_p node, char *arg, u_int len) -{ - const struct priv *priv = NG_NODE_PRIVATE(node); - const struct ifatm_mib *mib; - struct sbuf sbuf; - u_int i; - - static const struct { - const char *name; - const char *vendor; - } devices[] = { - ATM_DEVICE_NAMES - }; - - mib = (const struct ifatm_mib *)(priv->ifp->if_linkmib); - - sbuf_new(&sbuf, arg, len, SBUF_FIXEDLEN); - sbuf_printf(&sbuf, "interface: %s\n", priv->ifp->if_xname); - - if (mib->device >= nitems(devices)) - sbuf_printf(&sbuf, "device=unknown\nvendor=unknown\n"); - else - sbuf_printf(&sbuf, "device=%s\nvendor=%s\n", - devices[mib->device].name, devices[mib->device].vendor); - - for (i = 0; atmmedia[i].name; i++) - if(mib->media == atmmedia[i].media) { - sbuf_printf(&sbuf, "media=%s\n", atmmedia[i].name); - break; - } - if(atmmedia[i].name == NULL) - sbuf_printf(&sbuf, "media=unknown\n"); - - sbuf_printf(&sbuf, "serial=%u esi=%6D hardware=%u software=%u\n", - mib->serial, mib->esi, ":", mib->hw_version, mib->sw_version); - sbuf_printf(&sbuf, "pcr=%u vpi_bits=%u vci_bits=%u max_vpcs=%u " - "max_vccs=%u\n", mib->pcr, mib->vpi_bits, mib->vci_bits, - mib->max_vpcs, mib->max_vccs); - sbuf_printf(&sbuf, "ifflags=%b\n", priv->ifp->if_flags, IFFLAGS); - - sbuf_finish(&sbuf); - - return (sbuf_len(&sbuf)); -} - -/* - * Get control message - */ -static int -ng_atm_rcvmsg(node_p node, item_p item, hook_p lasthook) -{ - const struct priv *priv = NG_NODE_PRIVATE(node); - struct ng_mesg *resp = NULL; - struct ng_mesg *msg; - struct ifatm_mib *mib = (struct ifatm_mib *)(priv->ifp->if_linkmib); - int error = 0; - - NGI_GET_MSG(item, msg); - - switch (msg->header.typecookie) { - - case NGM_GENERIC_COOKIE: - switch (msg->header.cmd) { - - case NGM_TEXT_STATUS: - NG_MKRESPONSE(resp, msg, NG_TEXTRESPONSE, M_NOWAIT); - if(resp == NULL) { - error = ENOMEM; - break; - } - - resp->header.arglen = text_status(node, - (char *)resp->data, resp->header.arglen) + 1; - break; - - default: - error = EINVAL; - break; - } - break; - - case NGM_ATM_COOKIE: - switch (msg->header.cmd) { - - case NGM_ATM_GET_IFNAME: - NG_MKRESPONSE(resp, msg, IFNAMSIZ, M_NOWAIT); - if (resp == NULL) { - error = ENOMEM; - break; - } - strlcpy(resp->data, priv->ifp->if_xname, IFNAMSIZ); - break; - - case NGM_ATM_GET_CONFIG: - { - struct ngm_atm_config *config; - - NG_MKRESPONSE(resp, msg, sizeof(*config), M_NOWAIT); - if (resp == NULL) { - error = ENOMEM; - break; - } - config = (struct ngm_atm_config *)resp->data; - config->pcr = mib->pcr; - config->vpi_bits = mib->vpi_bits; - config->vci_bits = mib->vci_bits; - config->max_vpcs = mib->max_vpcs; - config->max_vccs = mib->max_vccs; - break; - } - - case NGM_ATM_GET_VCCS: - { - struct atmio_vcctable *vccs; - size_t len; - - if (priv->ifp->if_ioctl == NULL) { - error = ENXIO; - break; - } - error = (*priv->ifp->if_ioctl)(priv->ifp, - SIOCATMGETVCCS, (caddr_t)&vccs); - if (error) - break; - - len = sizeof(*vccs) + - vccs->count * sizeof(vccs->vccs[0]); - NG_MKRESPONSE(resp, msg, len, M_NOWAIT); - if (resp == NULL) { - error = ENOMEM; - free(vccs, M_DEVBUF); - break; - } - - (void)memcpy(resp->data, vccs, len); - free(vccs, M_DEVBUF); - - break; - } - - case NGM_ATM_GET_VCC: - { - char hook[NG_HOOKSIZ]; - struct atmio_vcctable *vccs; - struct ngvcc *vcc; - u_int i; - - if (priv->ifp->if_ioctl == NULL) { - error = ENXIO; - break; - } - if (msg->header.arglen != NG_HOOKSIZ) { - error = EINVAL; - break; - } - strncpy(hook, msg->data, NG_HOOKSIZ); - hook[NG_HOOKSIZ - 1] = '\0'; - LIST_FOREACH(vcc, &priv->vccs, link) - if (strcmp(NG_HOOK_NAME(vcc->hook), hook) == 0) - break; - if (vcc == NULL) { - error = ENOTCONN; - break; - } - error = (*priv->ifp->if_ioctl)(priv->ifp, - SIOCATMGETVCCS, (caddr_t)&vccs); - if (error) - break; - - for (i = 0; i < vccs->count; i++) - if (vccs->vccs[i].vpi == vcc->vpi && - vccs->vccs[i].vci == vcc->vci) - break; - if (i == vccs->count) { - error = ENOTCONN; - free(vccs, M_DEVBUF); - break; - } - - NG_MKRESPONSE(resp, msg, sizeof(vccs->vccs[0]), - M_NOWAIT); - if (resp == NULL) { - error = ENOMEM; - free(vccs, M_DEVBUF); - break; - } - - *(struct atmio_vcc *)resp->data = vccs->vccs[i]; - free(vccs, M_DEVBUF); - break; - } - - case NGM_ATM_GET_VCCID: - { - struct atmio_vcc *arg; - struct atmio_vcctable *vccs; - u_int i; - - if (priv->ifp->if_ioctl == NULL) { - error = ENXIO; - break; - } - if (msg->header.arglen != sizeof(*arg)) { - error = EINVAL; - break; - } - arg = (struct atmio_vcc *)msg->data; - - error = (*priv->ifp->if_ioctl)(priv->ifp, - SIOCATMGETVCCS, (caddr_t)&vccs); - if (error) - break; - - for (i = 0; i < vccs->count; i++) - if (vccs->vccs[i].vpi == arg->vpi && - vccs->vccs[i].vci == arg->vci) - break; - if (i == vccs->count) { - error = ENOTCONN; - free(vccs, M_DEVBUF); - break; - } - - NG_MKRESPONSE(resp, msg, sizeof(vccs->vccs[0]), - M_NOWAIT); - if (resp == NULL) { - error = ENOMEM; - free(vccs, M_DEVBUF); - break; - } - - *(struct atmio_vcc *)resp->data = vccs->vccs[i]; - free(vccs, M_DEVBUF); - break; - } - - case NGM_ATM_CPCS_INIT: - if (msg->header.arglen != - sizeof(struct ngm_atm_cpcs_init)) { - error = EINVAL; - break; - } - error = ng_atm_cpcs_init(node, - (struct ngm_atm_cpcs_init *)msg->data); - break; - - case NGM_ATM_CPCS_TERM: - if (msg->header.arglen != - sizeof(struct ngm_atm_cpcs_term)) { - error = EINVAL; - break; - } - error = ng_atm_cpcs_term(node, - (struct ngm_atm_cpcs_term *)msg->data); - break; - - case NGM_ATM_GET_STATS: - { - struct ngm_atm_stats *p; - - if (msg->header.arglen != 0) { - error = EINVAL; - break; - } - NG_MKRESPONSE(resp, msg, sizeof(*p), M_NOWAIT); - if (resp == NULL) { - error = ENOMEM; - break; - } - p = (struct ngm_atm_stats *)resp->data; - p->in_packets = priv->in_packets; - p->out_packets = priv->out_packets; - p->in_errors = priv->in_errors; - p->out_errors = priv->out_errors; - - break; - } - - default: - error = EINVAL; - break; - } - break; - - default: - error = EINVAL; - break; - } - - NG_RESPOND_MSG(error, node, item, resp); - NG_FREE_MSG(msg); - return (error); -} - -/************************************************************/ -/* - * HOOK MANAGEMENT - */ - -/* - * A new hook is create that will be connected to the node. - * Check, whether the name is one of the predefined ones. - * If not, create a new entry into the vcc list. - */ -static int -ng_atm_newhook(node_p node, hook_p hook, const char *name) -{ - struct priv *priv = NG_NODE_PRIVATE(node); - struct ngvcc *vcc; - - if (strcmp(name, "input") == 0) { - priv->input = hook; - NG_HOOK_SET_RCVDATA(hook, ng_atm_rcvdrop); - return (0); - } - if (strcmp(name, "output") == 0) { - priv->output = hook; - NG_HOOK_SET_RCVDATA(hook, ng_atm_rcvdrop); - return (0); - } - if (strcmp(name, "orphans") == 0) { - priv->orphans = hook; - NG_HOOK_SET_RCVDATA(hook, ng_atm_rcvdrop); - return (0); - } - - /* - * Allocate a new entry - */ - vcc = malloc(sizeof(*vcc), M_NETGRAPH, M_NOWAIT | M_ZERO); - if (vcc == NULL) - return (ENOMEM); - - vcc->hook = hook; - NG_HOOK_SET_PRIVATE(hook, vcc); - - LIST_INSERT_HEAD(&priv->vccs, vcc, link); - - if (strcmp(name, "manage") == 0) - priv->manage = hook; - - return (0); -} - -/* - * Connect. Set the peer to queuing. - */ -static int -ng_atm_connect(hook_p hook) -{ - if (NG_HOOK_PRIVATE(hook) != NULL) - NG_HOOK_FORCE_QUEUE(NG_HOOK_PEER(hook)); - - return (0); -} - -/* - * Disconnect a HOOK - */ -static int -ng_atm_disconnect(hook_p hook) -{ - struct priv *priv = NG_NODE_PRIVATE(NG_HOOK_NODE(hook)); - struct ngvcc *vcc = NG_HOOK_PRIVATE(hook); - - if (vcc == NULL) { - if (hook == priv->output) { - priv->output = NULL; - return (0); - } - if (hook == priv->input) { - priv->input = NULL; - return (0); - } - if (hook == priv->orphans) { - priv->orphans = NULL; - return (0); - } - log(LOG_ERR, "ng_atm: bad hook '%s'", NG_HOOK_NAME(hook)); - return (0); - } - - /* don't terminate if we are detaching from the interface */ - if ((vcc->flags & VCC_OPEN) && priv->ifp != NULL) - (void)cpcs_term(priv, vcc->vpi, vcc->vci); - - NG_HOOK_SET_PRIVATE(hook, NULL); - - LIST_REMOVE(vcc, link); - free(vcc, M_NETGRAPH); - - if (hook == priv->manage) - priv->manage = NULL; - - return (0); -} - -/************************************************************/ -/* - * NODE MANAGEMENT - */ - -/* - * ATM interface attached - create a node and name it like the interface. - */ -static void -ng_atm_attach(struct ifnet *ifp) -{ - node_p node; - struct priv *priv; - - KASSERT(IFP2NG(ifp) == 0, ("%s: node alreay exists?", __func__)); - - if (ng_make_node_common(&ng_atm_typestruct, &node) != 0) { - log(LOG_ERR, "%s: can't create node for %s\n", - __func__, ifp->if_xname); - return; - } - - priv = malloc(sizeof(*priv), M_NETGRAPH, M_NOWAIT | M_ZERO); - if (priv == NULL) { - log(LOG_ERR, "%s: can't allocate memory for %s\n", - __func__, ifp->if_xname); - NG_NODE_UNREF(node); - return; - } - NG_NODE_SET_PRIVATE(node, priv); - priv->ifp = ifp; - LIST_INIT(&priv->vccs); - IFP2NG_SET(ifp, node); - - if (ng_name_node(node, ifp->if_xname) != 0) { - log(LOG_WARNING, "%s: can't name node %s\n", - __func__, ifp->if_xname); - } -} - -/* - * ATM interface detached - destroy node. - */ -static void -ng_atm_detach(struct ifnet *ifp) -{ - const node_p node = IFP2NG(ifp); - struct priv *priv; - - if(node == NULL) - return; - - NG_NODE_REALLY_DIE(node); - - priv = NG_NODE_PRIVATE(node); - IFP2NG_SET(priv->ifp, NULL); - priv->ifp = NULL; - - ng_rmnode_self(node); -} - -/* - * Shutdown the node. This is called from the shutdown message processing. - */ -static int -ng_atm_shutdown(node_p node) -{ - struct priv *priv = NG_NODE_PRIVATE(node); - - if (node->nd_flags & NGF_REALLY_DIE) { - /* - * We are called from unloading the ATM driver. Really, - * really need to shutdown this node. The ifp was - * already handled in the detach routine. - */ - NG_NODE_SET_PRIVATE(node, NULL); - free(priv, M_NETGRAPH); - - NG_NODE_UNREF(node); - return (0); - } - -#ifdef NGATM_DEBUG - if (!allow_shutdown) - NG_NODE_REVIVE(node); /* we persist */ - else { - IFP2NG_SET(priv->ifp, NULL); - NG_NODE_SET_PRIVATE(node, NULL); - free(priv, M_NETGRAPH); - NG_NODE_UNREF(node); - } -#else - /* - * We are persistent - reinitialize. - */ - NG_NODE_REVIVE(node); -#endif - return (0); -} - -/* - * Nodes are constructed only via interface attaches. - */ -static int -ng_atm_constructor(node_p nodep) -{ - return (EINVAL); -} - -/************************************************************/ -/* - * INITIALISATION - */ -/* - * Loading and unloading of node type - * - * The assignments to the globals for the hooks should be ok without - * a special hook. The use pattern is generally: check that the pointer - * is not NULL, call the function. In the attach case this is no problem. - * In the detach case we can detach only when no ATM node exists. That - * means that there is no ATM interface anymore. So we are sure that - * we are not in the code path in if_atmsubr.c. To prevent someone - * from adding an interface after we have started to unload the node, we - * take the iflist lock so an if_attach will be blocked until we are done. - * XXX: perhaps the function pointers should be 'volatile' for this to work - * properly. - */ -static int -ng_atm_mod_event(module_t mod, int event, void *data) -{ - VNET_ITERATOR_DECL(vnet_iter); - struct ifnet *ifp; - int error = 0; - - switch (event) { - - case MOD_LOAD: - /* - * Register function hooks - */ - if (ng_atm_attach_p != NULL) { - error = EEXIST; - break; - } - IFNET_RLOCK(); - - ng_atm_attach_p = ng_atm_attach; - ng_atm_detach_p = ng_atm_detach; - ng_atm_output_p = ng_atm_output; - ng_atm_input_p = ng_atm_input; - ng_atm_input_orphan_p = ng_atm_input_orphans; - ng_atm_event_p = ng_atm_event; - - /* Create nodes for existing ATM interfaces */ - VNET_LIST_RLOCK(); - VNET_FOREACH(vnet_iter) { - CURVNET_SET_QUIET(vnet_iter); - TAILQ_FOREACH(ifp, &V_ifnet, if_link) { - if (ifp->if_type == IFT_ATM) - ng_atm_attach(ifp); - } - CURVNET_RESTORE(); - } - VNET_LIST_RUNLOCK(); - IFNET_RUNLOCK(); - break; - - case MOD_UNLOAD: - IFNET_RLOCK(); - - ng_atm_attach_p = NULL; - ng_atm_detach_p = NULL; - ng_atm_output_p = NULL; - ng_atm_input_p = NULL; - ng_atm_input_orphan_p = NULL; - ng_atm_event_p = NULL; - - VNET_LIST_RLOCK(); - VNET_FOREACH(vnet_iter) { - CURVNET_SET_QUIET(vnet_iter); - TAILQ_FOREACH(ifp, &V_ifnet, if_link) { - if (ifp->if_type == IFT_ATM) - ng_atm_detach(ifp); - } - CURVNET_RESTORE(); - } - VNET_LIST_RUNLOCK(); - IFNET_RUNLOCK(); - break; - - default: - error = EOPNOTSUPP; - break; - } - return (error); -} diff --git a/sys/netgraph/atm/ng_atm.h b/sys/netgraph/atm/ng_atm.h deleted file mode 100644 index 6b42d721c4cd..000000000000 --- a/sys/netgraph/atm/ng_atm.h +++ /dev/null @@ -1,248 +0,0 @@ -/*- - * Copyright (c) 2001-2003 - * Fraunhofer Institute for Open Communication Systems (FhG Fokus). - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * Author: Harti Brandt <harti@freebsd.org> - */ - -/* - * Netgraph module to connect NATM interfaces to netgraph. - * - * $FreeBSD$ - */ -#ifndef _NETGRAPH_ATM_NG_ATM_H_ -#define _NETGRAPH_ATM_NG_ATM_H_ - -#define NG_ATM_NODE_TYPE "atm" -#define NGM_ATM_COOKIE 960802260 - -/* Netgraph control messages */ -enum { - NGM_ATM_GET_IFNAME = 1, /* get the interface name */ - NGM_ATM_GET_CONFIG, /* get configuration */ - NGM_ATM_GET_VCCS, /* get a list of all active vccs */ - NGM_ATM_CPCS_INIT, /* start the channel */ - NGM_ATM_CPCS_TERM, /* stop the channel */ - NGM_ATM_GET_VCC, /* get VCC config */ - NGM_ATM_GET_VCCID, /* get VCC by VCI/VPI */ - NGM_ATM_GET_STATS, /* get global statistics */ - - /* messages from the node */ - NGM_ATM_CARRIER_CHANGE = 1000, /* UNUSED: carrier changed */ - NGM_ATM_VCC_CHANGE, /* permanent VCC changed */ - NGM_ATM_ACR_CHANGE, /* ABR ACR has changed */ - NGM_ATM_IF_CHANGE, /* interface state change */ -}; - -/* - * Hardware interface configuration - */ -struct ngm_atm_config { - uint32_t pcr; /* peak cell rate */ - uint32_t vpi_bits; /* number of active VPI bits */ - uint32_t vci_bits; /* number of active VCI bits */ - uint32_t max_vpcs; /* maximum number of VPCs */ - uint32_t max_vccs; /* maximum number of VCCs */ -}; -#define NGM_ATM_CONFIG_INFO \ - { \ - { "pcr", &ng_parse_uint32_type }, \ - { "vpi_bits", &ng_parse_uint32_type }, \ - { "vci_bits", &ng_parse_uint32_type }, \ - { "max_vpcs", &ng_parse_uint32_type }, \ - { "max_vccs", &ng_parse_uint32_type }, \ - { NULL } \ - } - -/* - * Information about an open VCC - * See net/if_atm.h. Keep in sync. - */ -#define NGM_ATM_TPARAM_INFO \ - { \ - { "pcr", &ng_parse_uint32_type }, \ - { "scr", &ng_parse_uint32_type }, \ - { "mbs", &ng_parse_uint32_type }, \ - { "mcr", &ng_parse_uint32_type }, \ - { "icr", &ng_parse_uint32_type }, \ - { "tbe", &ng_parse_uint32_type }, \ - { "nrm", &ng_parse_uint8_type }, \ - { "trm", &ng_parse_uint8_type }, \ - { "adtf", &ng_parse_uint16_type }, \ - { "rif", &ng_parse_uint8_type }, \ - { "rdf", &ng_parse_uint8_type }, \ - { "cdf", &ng_parse_uint8_type }, \ - { NULL } \ - } - -#define NGM_ATM_VCC_INFO \ - { \ - { "flags", &ng_parse_hint16_type }, \ - { "vpi", &ng_parse_uint16_type }, \ - { "vci", &ng_parse_uint16_type }, \ - { "rmtu", &ng_parse_uint16_type }, \ - { "tmtu", &ng_parse_uint16_type }, \ - { "aal", &ng_parse_uint8_type }, \ - { "traffic", &ng_parse_uint8_type }, \ - { "tparam", &ng_atm_tparam_type }, \ - { NULL } \ - } - -#define NGM_ATM_VCCARRAY_INFO \ - { \ - &ng_atm_vcc_type, \ - ng_atm_vccarray_getlen, \ - NULL \ - } - -#define NGM_ATM_VCCTABLE_INFO \ - { \ - { "count", &ng_parse_uint32_type }, \ - { "vccs", &ng_atm_vccarray_type }, \ - { NULL } \ - } - -/* - * Structure to open a VCC. - */ -struct ngm_atm_cpcs_init { - char name[NG_HOOKSIZ]; - uint32_t flags; /* flags. (if_atm.h) */ - uint16_t vci; /* VCI to open */ - uint16_t vpi; /* VPI to open */ - uint16_t rmtu; /* Receive maximum CPCS size */ - uint16_t tmtu; /* Transmit maximum CPCS size */ - uint8_t aal; /* AAL type (if_atm.h) */ - uint8_t traffic; /* traffic type (if_atm.h) */ - uint32_t pcr; /* Peak cell rate */ - uint32_t scr; /* VBR: Sustainable cell rate */ - uint32_t mbs; /* VBR: Maximum burst rate */ - uint32_t mcr; /* UBR+: Minimum cell rate */ - uint32_t icr; /* ABR: Initial cell rate */ - uint32_t tbe; /* ABR: Transmit buffer exposure */ - uint8_t nrm; /* ABR: Nrm */ - uint8_t trm; /* ABR: Trm */ - uint16_t adtf; /* ABR: ADTF */ - uint8_t rif; /* ABR: RIF */ - uint8_t rdf; /* ABR: RDF */ - uint8_t cdf; /* ABR: CDF */ -}; - -#define NGM_ATM_CPCS_INIT_INFO \ - { \ - { "name", &ng_parse_hookbuf_type }, \ - { "flags", &ng_parse_hint32_type }, \ - { "vci", &ng_parse_uint16_type }, \ - { "vpi", &ng_parse_uint16_type }, \ - { "rmtu", &ng_parse_uint16_type }, \ - { "tmtu", &ng_parse_uint16_type }, \ - { "aal", &ng_parse_uint8_type }, \ - { "traffic", &ng_parse_uint8_type }, \ - { "pcr", &ng_parse_uint32_type }, \ - { "scr", &ng_parse_uint32_type }, \ - { "mbs", &ng_parse_uint32_type }, \ - { "mcr", &ng_parse_uint32_type }, \ - { "icr", &ng_parse_uint32_type }, \ - { "tbe", &ng_parse_uint32_type }, \ - { "nrm", &ng_parse_uint8_type }, \ - { "trm", &ng_parse_uint8_type }, \ - { "adtf", &ng_parse_uint16_type }, \ - { "rif", &ng_parse_uint8_type }, \ - { "rdf", &ng_parse_uint8_type }, \ - { "cdf", &ng_parse_uint8_type }, \ - { NULL } \ - } - -/* - * Structure to close a VCI without disconnecting the hook - */ -struct ngm_atm_cpcs_term { - char name[NG_HOOKSIZ]; -}; -#define NGM_ATM_CPCS_TERM_INFO \ - { \ - { "name", &ng_parse_hookbuf_type }, \ - { NULL } \ - } - -struct ngm_atm_stats { - uint64_t in_packets; - uint64_t in_errors; - uint64_t out_packets; - uint64_t out_errors; -}; -#define NGM_ATM_STATS_INFO \ - { \ - { "in_packets", &ng_parse_uint64_type }, \ - { "in_errors", &ng_parse_uint64_type }, \ - { "out_packets", &ng_parse_uint64_type }, \ - { "out_errors", &ng_parse_uint64_type }, \ - { NULL } \ - } - -struct ngm_atm_if_change { - uint32_t node; - uint8_t carrier; - uint8_t running; -}; -#define NGM_ATM_IF_CHANGE_INFO \ - { \ - { "node", &ng_parse_hint32_type }, \ - { "carrier", &ng_parse_uint8_type }, \ - { "running", &ng_parse_uint8_type }, \ - { NULL } \ - } - -struct ngm_atm_vcc_change { - uint32_t node; - uint16_t vci; - uint8_t vpi; - uint8_t state; -}; -#define NGM_ATM_VCC_CHANGE_INFO \ - { \ - { "node", &ng_parse_hint32_type }, \ - { "vci", &ng_parse_uint16_type }, \ - { "vpi", &ng_parse_uint8_type }, \ - { "state", &ng_parse_uint8_type }, \ - { NULL } \ - } - -struct ngm_atm_acr_change { - uint32_t node; - uint16_t vci; - uint8_t vpi; - uint32_t acr; -}; -#define NGM_ATM_ACR_CHANGE_INFO \ - { \ - { "node", &ng_parse_hint32_type }, \ - { "vci", &ng_parse_uint16_type }, \ - { "vpi", &ng_parse_uint8_type }, \ - { "acr", &ng_parse_uint32_type }, \ - { NULL } \ - } - -#endif /* _NETGRAPH_ATM_NG_ATM_H */ diff --git a/sys/netgraph/ng_atmllc.c b/sys/netgraph/ng_atmllc.c index f35707b90b6d..9cfd43cdd0a9 100644 --- a/sys/netgraph/ng_atmllc.c +++ b/sys/netgraph/ng_atmllc.c @@ -40,7 +40,6 @@ #include <net/if.h> #include <net/ethernet.h> /* for M_HASFCS and ETHER_HDR_LEN */ -#include <net/if_atm.h> /* for struct atmllc */ #define NG_ATMLLC_HEADER "\252\252\3\0\200\302" #define NG_ATMLLC_HEADER_LEN (sizeof(struct atmllc)) @@ -55,6 +54,18 @@ struct ng_atmllc_priv { hook_p fddi; }; +struct atmllc { + uint8_t llchdr[6]; /* aa.aa.03.00.00.00 */ + uint8_t type[2]; /* "ethernet" type */ +}; + +/* ATM_LLC macros: note type code in host byte order */ +#define ATM_LLC_TYPE(X) (((X)->type[0] << 8) | ((X)->type[1])) +#define ATM_LLC_SETTYPE(X, V) do { \ + (X)->type[0] = ((V) >> 8) & 0xff; \ + (X)->type[1] = ((V) & 0xff); \ + } while (0) + /* Netgraph methods. */ static ng_constructor_t ng_atmllc_constructor; static ng_shutdown_t ng_atmllc_shutdown; diff --git a/sys/netinet/if_atm.c b/sys/netinet/if_atm.c deleted file mode 100644 index e2b71a8b501c..000000000000 --- a/sys/netinet/if_atm.c +++ /dev/null @@ -1,372 +0,0 @@ -/* $NetBSD: if_atm.c,v 1.6 1996/10/13 02:03:01 christos Exp $ */ - -/*- - * - * Copyright (c) 1996 Charles D. Cranor and Washington University. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by Charles D. Cranor and - * Washington University. - * 4. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -/* - * IP <=> ATM address resolution. - */ -#include "opt_inet.h" -#include "opt_inet6.h" -#include "opt_natm.h" - -#if defined(INET) || defined(INET6) - -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/queue.h> -#include <sys/mbuf.h> -#include <sys/socket.h> -#include <sys/sockio.h> -#include <sys/syslog.h> - -#include <net/if.h> -#include <net/if_var.h> -#include <net/if_dl.h> -#include <net/route.h> -#include <net/if_atm.h> - -#include <netinet/in.h> -#include <netinet/if_atm.h> - -#ifdef NATM -#include <netnatm/natm.h> -#endif - -#define SDL(s) ((struct sockaddr_dl *)s) - -#define GET3BYTE(V, A, L) do { \ - (V) = ((A)[0] << 16) | ((A)[1] << 8) | (A)[2]; \ - (A) += 3; \ - (L) -= 3; \ - } while (0) - -#define GET2BYTE(V, A, L) do { \ - (V) = ((A)[0] << 8) | (A)[1]; \ - (A) += 2; \ - (L) -= 2; \ - } while (0) - -#define GET1BYTE(V, A, L) do { \ - (V) = *(A)++; \ - (L)--; \ - } while (0) - - -/* - * atm_rtrequest: handle ATM rt request (in support of generic code) - * inputs: "req" = request code - * "rt" = route entry - * "info" = rt_addrinfo - */ -void -atm_rtrequest(int req, struct rtentry *rt, struct rt_addrinfo *info) -{ - struct sockaddr *gate = rt->rt_gateway; - struct atmio_openvcc op; - struct atmio_closevcc cl; - u_char *addr; - u_int alen; -#ifdef NATM - struct sockaddr_in *sin; - struct natmpcb *npcb = NULL; -#endif - static struct sockaddr_dl null_sdl = {sizeof(null_sdl), AF_LINK}; - - if (rt->rt_flags & RTF_GATEWAY) /* link level requests only */ - return; - - switch (req) { - - case RTM_RESOLVE: /* resolve: only happens when cloning */ - printf("atm_rtrequest: RTM_RESOLVE request detected?\n"); - break; - - case RTM_ADD: - /* - * route added by a command (e.g. ifconfig, route, arp...). - * - * first check to see if this is not a host route, in which - * case we are being called via "ifconfig" to set the address. - */ - if ((rt->rt_flags & RTF_HOST) == 0) { - rt_setgate(rt,rt_key(rt),(struct sockaddr *)&null_sdl); - gate = rt->rt_gateway; - SDL(gate)->sdl_type = rt->rt_ifp->if_type; - SDL(gate)->sdl_index = rt->rt_ifp->if_index; - break; - } - - if (gate->sa_family != AF_LINK || - gate->sa_len < sizeof(null_sdl)) { - log(LOG_DEBUG, "atm_rtrequest: bad gateway value"); - break; - } - - KASSERT(rt->rt_ifp->if_ioctl != NULL, - ("atm_rtrequest: null ioctl")); - - /* - * Parse and verify the link level address as - * an open request - */ -#ifdef NATM - NATM_LOCK(); -#endif - bzero(&op, sizeof(op)); - addr = LLADDR(SDL(gate)); - alen = SDL(gate)->sdl_alen; - if (alen < 4) { - printf("%s: bad link-level address\n", __func__); - goto failed; - } - - if (alen == 4) { - /* old type address */ - GET1BYTE(op.param.flags, addr, alen); - GET1BYTE(op.param.vpi, addr, alen); - GET2BYTE(op.param.vci, addr, alen); - op.param.traffic = ATMIO_TRAFFIC_UBR; - op.param.aal = (op.param.flags & ATM_PH_AAL5) ? - ATMIO_AAL_5 : ATMIO_AAL_0; - } else { - /* new address */ - op.param.aal = ATMIO_AAL_5; - - GET1BYTE(op.param.flags, addr, alen); - op.param.flags &= ATM_PH_LLCSNAP; - - GET1BYTE(op.param.vpi, addr, alen); - GET2BYTE(op.param.vci, addr, alen); - - GET1BYTE(op.param.traffic, addr, alen); - - switch (op.param.traffic) { - - case ATMIO_TRAFFIC_UBR: - if (alen >= 3) - GET3BYTE(op.param.tparam.pcr, - addr, alen); - break; - - case ATMIO_TRAFFIC_CBR: - if (alen < 3) - goto bad_param; - GET3BYTE(op.param.tparam.pcr, addr, alen); - break; - - case ATMIO_TRAFFIC_VBR: - if (alen < 3 * 3) - goto bad_param; - GET3BYTE(op.param.tparam.pcr, addr, alen); - GET3BYTE(op.param.tparam.scr, addr, alen); - GET3BYTE(op.param.tparam.mbs, addr, alen); - break; - - case ATMIO_TRAFFIC_ABR: - if (alen < 4 * 3 + 2 + 1 * 2 + 3) - goto bad_param; - GET3BYTE(op.param.tparam.pcr, addr, alen); - GET3BYTE(op.param.tparam.mcr, addr, alen); - GET3BYTE(op.param.tparam.icr, addr, alen); - GET3BYTE(op.param.tparam.tbe, addr, alen); - GET1BYTE(op.param.tparam.nrm, addr, alen); - GET1BYTE(op.param.tparam.trm, addr, alen); - GET2BYTE(op.param.tparam.adtf, addr, alen); - GET1BYTE(op.param.tparam.rif, addr, alen); - GET1BYTE(op.param.tparam.rdf, addr, alen); - GET1BYTE(op.param.tparam.cdf, addr, alen); - break; - - default: - bad_param: - printf("%s: bad traffic params\n", __func__); - goto failed; - } - } - op.param.rmtu = op.param.tmtu = rt->rt_ifp->if_mtu; -#ifdef NATM - /* - * let native ATM know we are using this VCI/VPI - * (i.e. reserve it) - */ - sin = (struct sockaddr_in *) rt_key(rt); - if (sin->sin_family != AF_INET) - goto failed; - npcb = npcb_add(NULL, rt->rt_ifp, op.param.vci, op.param.vpi); - if (npcb == NULL) - goto failed; - npcb->npcb_flags |= NPCB_IP; - npcb->ipaddr.s_addr = sin->sin_addr.s_addr; - /* XXX: move npcb to llinfo when ATM ARP is ready */ -#ifdef __notyet_restored__ - rt->rt_llinfo = (caddr_t) npcb; -#endif - rt->rt_flags |= RTF_LLINFO; -#endif - /* - * let the lower level know this circuit is active - */ - op.rxhand = NULL; - op.param.flags |= ATMIO_FLAG_ASYNC; - if (rt->rt_ifp->if_ioctl(rt->rt_ifp, SIOCATMOPENVCC, - (caddr_t)&op) != 0) { - printf("atm: couldn't add VC\n"); - goto failed; - } - - SDL(gate)->sdl_type = rt->rt_ifp->if_type; - SDL(gate)->sdl_index = rt->rt_ifp->if_index; - -#ifdef NATM - NATM_UNLOCK(); -#endif - break; - -failed: -#ifdef NATM - if (npcb) { - npcb_free(npcb, NPCB_DESTROY); -#ifdef __notyet_restored__ - rt->rt_llinfo = NULL; -#endif - rt->rt_flags &= ~RTF_LLINFO; - } - NATM_UNLOCK(); -#endif - /* mark as invalid. We cannot RTM_DELETE the route from - * here, because the recursive call to rtrequest1 does - * not really work. */ - rt->rt_flags |= RTF_REJECT; - break; - - case RTM_DELETE: -#ifdef NATM - /* - * tell native ATM we are done with this VC - */ - if (rt->rt_flags & RTF_LLINFO) { - NATM_LOCK(); -#ifdef __notyet_restored__ - npcb_free((struct natmpcb *)rt->rt_llinfo, - NPCB_DESTROY); - rt->rt_llinfo = NULL; -#endif - rt->rt_flags &= ~RTF_LLINFO; - NATM_UNLOCK(); - } -#endif - /* - * tell the lower layer to disable this circuit - */ - bzero(&op, sizeof(op)); - addr = LLADDR(SDL(gate)); - addr++; - cl.vpi = *addr++; - cl.vci = *addr++ << 8; - cl.vci |= *addr++; - (void)rt->rt_ifp->if_ioctl(rt->rt_ifp, SIOCATMCLOSEVCC, - (caddr_t)&cl); - break; - } -} - -/* - * atmresolve: - * inputs: - * [1] "rt" = the link level route to use (or null if need to look one up) - * [2] "m" = mbuf containing the data to be sent - * [3] "dst" = sockaddr_in (IP) address of dest. - * output: - * [4] "desten" = ATM pseudo header which we will fill in VPI/VCI info - * return: - * 0 == resolve FAILED; note that "m" gets m_freem'd in this case - * 1 == resolve OK; desten contains result - * - * XXX: will need more work if we wish to support ATMARP in the kernel, - * but this is enough for PVCs entered via the "route" command. - */ -int -atmresolve(struct rtentry *rt, struct mbuf *m, const struct sockaddr *dst, - struct atm_pseudohdr *desten) -{ - struct sockaddr_dl *sdl; - - if (m->m_flags & (M_BCAST | M_MCAST)) { - log(LOG_INFO, - "atmresolve: BCAST/MCAST packet detected/dumped\n"); - goto bad; - } - - if (rt == NULL) { - /* link level on table 0 XXX MRT */ - rt = RTALLOC1(__DECONST(struct sockaddr *, dst), 0); - if (rt == NULL) - goto bad; /* failed */ - RT_REMREF(rt); /* don't keep LL references */ - if ((rt->rt_flags & RTF_GATEWAY) != 0 || - rt->rt_gateway->sa_family != AF_LINK) { - RT_UNLOCK(rt); - goto bad; - } - RT_UNLOCK(rt); - } - - /* - * note that rt_gateway is a sockaddr_dl which contains the - * atm_pseudohdr data structure for this route. we currently - * don't need any rt_llinfo info (but will if we want to support - * ATM ARP [c.f. if_ether.c]). - */ - sdl = SDL(rt->rt_gateway); - - /* - * Check the address family and length is valid, the address - * is resolved; otherwise, try to resolve. - */ - if (sdl->sdl_family == AF_LINK && sdl->sdl_alen >= sizeof(*desten)) { - bcopy(LLADDR(sdl), desten, sizeof(*desten)); - return (1); /* ok, go for it! */ - } - - /* - * we got an entry, but it doesn't have valid link address - * info in it (it is prob. the interface route, which has - * sdl_alen == 0). dump packet. (fall through to "bad"). - */ -bad: - m_freem(m); - return (0); -} -#endif /* INET */ diff --git a/sys/netinet/if_atm.h b/sys/netinet/if_atm.h deleted file mode 100644 index 04ad218d82c3..000000000000 --- a/sys/netinet/if_atm.h +++ /dev/null @@ -1,47 +0,0 @@ -/* $FreeBSD$ */ -/* $NetBSD: if_atm.h,v 1.2 1996/07/03 17:17:17 chuck Exp $ */ - -/*- - * - * Copyright (c) 1996 Charles D. Cranor and Washington University. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by Charles D. Cranor and - * Washington University. - * 4. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * if_atm.h - */ - -struct atm_pseudohdr; -struct mbuf; -struct rtentry; -struct sockaddr; - -void atm_rtrequest(int, struct rtentry *, struct rt_addrinfo *); -int atmresolve(struct rtentry *, struct mbuf *, const struct sockaddr *, - struct atm_pseudohdr *); diff --git a/sys/netinet/sctp_usrreq.c b/sys/netinet/sctp_usrreq.c index add1c95273c4..b433df57a594 100644 --- a/sys/netinet/sctp_usrreq.c +++ b/sys/netinet/sctp_usrreq.c @@ -152,7 +152,7 @@ sctp_notify(struct sctp_inpcb *inp, uint8_t icmp_type, uint8_t icmp_code, uint16_t ip_len, - uint16_t next_mtu) + uint32_t next_mtu) { #if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) struct socket *so; @@ -220,11 +220,11 @@ sctp_notify(struct sctp_inpcb *inp, timer_stopped = 0; } /* Update the path MTU. */ + if (net->port) { + next_mtu -= sizeof(struct udphdr); + } if (net->mtu > next_mtu) { net->mtu = next_mtu; - if (net->port) { - net->mtu -= sizeof(struct udphdr); - } } /* Update the association MTU */ if (stcb->asoc.smallest_mtu > next_mtu) { @@ -328,7 +328,7 @@ sctp_ctlinput(int cmd, struct sockaddr *sa, void *vip) icmp->icmp_type, icmp->icmp_code, ntohs(inner_ip->ip_len), - ntohs(icmp->icmp_nextmtu)); + (uint32_t)ntohs(icmp->icmp_nextmtu)); } else { if ((stcb == NULL) && (inp != NULL)) { /* reduce ref-count */ diff --git a/sys/netinet/sctp_var.h b/sys/netinet/sctp_var.h index 6365dfec1c8c..9e149e681386 100644 --- a/sys/netinet/sctp_var.h +++ b/sys/netinet/sctp_var.h @@ -341,7 +341,7 @@ void sctp_drain(void); void sctp_init(void); void sctp_notify(struct sctp_inpcb *, struct sctp_tcb *, struct sctp_nets *, - uint8_t, uint8_t, uint16_t, uint16_t); + uint8_t, uint8_t, uint16_t, uint32_t); int sctp_flush(struct socket *, int); int sctp_shutdown(struct socket *); int diff --git a/sys/netinet/sctputil.c b/sys/netinet/sctputil.c index 1b5173167eed..2951ad686145 100644 --- a/sys/netinet/sctputil.c +++ b/sys/netinet/sctputil.c @@ -6971,7 +6971,7 @@ sctp_recv_icmp_tunneled_packet(int cmd, struct sockaddr *sa, void *vip, void *ct } sctp_notify(inp, stcb, net, type, code, ntohs(inner_ip->ip_len), - ntohs(icmp->icmp_nextmtu)); + (uint32_t)ntohs(icmp->icmp_nextmtu)); } else { if ((stcb == NULL) && (inp != NULL)) { /* reduce ref-count */ @@ -7113,7 +7113,7 @@ sctp_recv_icmp6_tunneled_packet(int cmd, struct sockaddr *sa, void *d, void *ctx code = ICMP6_PARAMPROB_NEXTHEADER; } sctp6_notify(inp, stcb, net, type, code, - (uint16_t)ntohl(ip6cp->ip6c_icmp6->icmp6_mtu)); + ntohl(ip6cp->ip6c_icmp6->icmp6_mtu)); } else { if ((stcb == NULL) && (inp != NULL)) { /* reduce inp's ref-count */ diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c index e06b990a1dec..a7bed762f49f 100644 --- a/sys/netinet/tcp_input.c +++ b/sys/netinet/tcp_input.c @@ -1624,6 +1624,16 @@ tcp_do_segment(struct mbuf *m, struct tcphdr *th, struct socket *so, } /* + * If a segment with the ACK-bit set arrives in the SYN-SENT state + * check SEQ.ACK first. + */ + if ((tp->t_state == TCPS_SYN_SENT) && (thflags & TH_ACK) && + (SEQ_LEQ(th->th_ack, tp->iss) || SEQ_GT(th->th_ack, tp->snd_max))) { + rstreason = BANDLIM_UNLIMITED; + goto dropwithreset; + } + + /* * Segment received on connection. * Reset idle time and keep-alive timer. * XXX: This should be done after segment @@ -2001,7 +2011,6 @@ tcp_do_segment(struct mbuf *m, struct tcphdr *th, struct socket *so, /* * If the state is SYN_SENT: - * if seg contains an ACK, but not for our SYN, drop the input. * if seg contains a RST, then drop the connection. * if seg does not contain SYN, then drop it. * Otherwise this is an acceptable SYN segment @@ -2014,12 +2023,6 @@ tcp_do_segment(struct mbuf *m, struct tcphdr *th, struct socket *so, * continue processing rest of data/controls, beginning with URG */ case TCPS_SYN_SENT: - if ((thflags & TH_ACK) && - (SEQ_LEQ(th->th_ack, tp->iss) || - SEQ_GT(th->th_ack, tp->snd_max))) { - rstreason = BANDLIM_UNLIMITED; - goto dropwithreset; - } if ((thflags & (TH_ACK|TH_RST)) == (TH_ACK|TH_RST)) { TCP_PROBE5(connect__refused, NULL, tp, m, tp, th); diff --git a/sys/netinet/tcp_lro.c b/sys/netinet/tcp_lro.c index b455fee7068e..69073c803894 100644 --- a/sys/netinet/tcp_lro.c +++ b/sys/netinet/tcp_lro.c @@ -953,18 +953,12 @@ tcp_lro_queue_mbuf(struct lro_ctrl *lc, struct mbuf *mb) /* check if packet is not LRO capable */ if (__predict_false(mb->m_pkthdr.csum_flags == 0 || (lc->ifp->if_capenable & IFCAP_LRO) == 0)) { - lc->lro_flushed++; - lc->lro_queued++; /* input packet to network layer */ (*lc->ifp->if_input) (lc->ifp, mb); return; } - /* check if array is full */ - if (__predict_false(lc->lro_mbuf_count == lc->lro_mbuf_max)) - tcp_lro_flush_all(lc); - /* create sequence number */ lc->lro_mbuf_data[lc->lro_mbuf_count].seq = (((uint64_t)M_HASHTYPE_GET(mb)) << 56) | @@ -972,7 +966,11 @@ tcp_lro_queue_mbuf(struct lro_ctrl *lc, struct mbuf *mb) ((uint64_t)lc->lro_mbuf_count); /* enter mbuf */ - lc->lro_mbuf_data[lc->lro_mbuf_count++].mb = mb; + lc->lro_mbuf_data[lc->lro_mbuf_count].mb = mb; + + /* flush if array is full */ + if (__predict_false(++lc->lro_mbuf_count == lc->lro_mbuf_max)) + tcp_lro_flush_all(lc); } /* end */ diff --git a/sys/netinet/tcp_stacks/fastpath.c b/sys/netinet/tcp_stacks/fastpath.c index 01d16d782ab1..ed00530c7453 100644 --- a/sys/netinet/tcp_stacks/fastpath.c +++ b/sys/netinet/tcp_stacks/fastpath.c @@ -497,7 +497,6 @@ tcp_do_slowpath(struct mbuf *m, struct tcphdr *th, struct socket *so, /* * If the state is SYN_SENT: - * if seg contains an ACK, but not for our SYN, drop the input. * if seg contains a RST, then drop the connection. * if seg does not contain SYN, then drop it. * Otherwise this is an acceptable SYN segment @@ -510,12 +509,6 @@ tcp_do_slowpath(struct mbuf *m, struct tcphdr *th, struct socket *so, * continue processing rest of data/controls, beginning with URG */ case TCPS_SYN_SENT: - if ((thflags & TH_ACK) && - (SEQ_LEQ(th->th_ack, tp->iss) || - SEQ_GT(th->th_ack, tp->snd_max))) { - rstreason = BANDLIM_UNLIMITED; - goto dropwithreset; - } if ((thflags & (TH_ACK|TH_RST)) == (TH_ACK|TH_RST)) { TCP_PROBE5(connect__refused, NULL, tp, m, tp, th); tp = tcp_drop(tp, ECONNREFUSED); @@ -1775,6 +1768,20 @@ tcp_do_segment_fastslow(struct mbuf *m, struct tcphdr *th, struct socket *so, m_freem(m); return; } + + /* + * If a segment with the ACK-bit set arrives in the SYN-SENT state + * check SEQ.ACK first. + */ + if ((tp->t_state == TCPS_SYN_SENT) && (thflags & TH_ACK) && + (SEQ_LEQ(th->th_ack, tp->iss) || SEQ_GT(th->th_ack, tp->snd_max))) { + tcp_dropwithreset(m, th, tp, tlen, BANDLIM_UNLIMITED); + if (ti_locked == TI_RLOCKED) { + INP_INFO_RUNLOCK(&V_tcbinfo); + } + INP_WUNLOCK(tp->t_inpcb); + return; + } tp->sackhint.last_sack_ack = 0; @@ -2237,6 +2244,20 @@ tcp_do_segment_fastack(struct mbuf *m, struct tcphdr *th, struct socket *so, return; } + /* + * If a segment with the ACK-bit set arrives in the SYN-SENT state + * check SEQ.ACK first. + */ + if ((tp->t_state == TCPS_SYN_SENT) && (thflags & TH_ACK) && + (SEQ_LEQ(th->th_ack, tp->iss) || SEQ_GT(th->th_ack, tp->snd_max))) { + tcp_dropwithreset(m, th, tp, tlen, BANDLIM_UNLIMITED); + if (ti_locked == TI_RLOCKED) { + INP_INFO_RUNLOCK(&V_tcbinfo); + } + INP_WUNLOCK(tp->t_inpcb); + return; + } + tp->sackhint.last_sack_ack = 0; /* diff --git a/sys/netinet6/ip6_output.c b/sys/netinet6/ip6_output.c index 998097b0a025..092f1ecc242d 100644 --- a/sys/netinet6/ip6_output.c +++ b/sys/netinet6/ip6_output.c @@ -217,7 +217,7 @@ in6_delayed_cksum(struct mbuf *m, uint32_t plen, u_short offset) int ip6_fragment(struct ifnet *ifp, struct mbuf *m0, int hlen, u_char nextproto, - int mtu, uint32_t id) + int fraglen , uint32_t id) { struct mbuf *m, **mnext, *m_frgpart; struct ip6_hdr *ip6, *mhip6; @@ -226,13 +226,13 @@ ip6_fragment(struct ifnet *ifp, struct mbuf *m0, int hlen, u_char nextproto, int error; int tlen = m0->m_pkthdr.len; - KASSERT(( mtu % 8 == 0), ("Fragment length must be a multiple of 8")); + KASSERT((fraglen % 8 == 0), ("Fragment length must be a multiple of 8")); m = m0; ip6 = mtod(m, struct ip6_hdr *); mnext = &m->m_nextpkt; - for (off = hlen; off < tlen; off += mtu) { + for (off = hlen; off < tlen; off += fraglen) { m = m_gethdr(M_NOWAIT, MT_DATA); if (!m) { IP6STAT_INC(ip6s_odropped); @@ -251,18 +251,18 @@ ip6_fragment(struct ifnet *ifp, struct mbuf *m0, int hlen, u_char nextproto, return (error); } ip6f->ip6f_offlg = htons((u_short)((off - hlen) & ~7)); - if (off + mtu >= tlen) - mtu = tlen - off; + if (off + fraglen >= tlen) + fraglen = tlen - off; else ip6f->ip6f_offlg |= IP6F_MORE_FRAG; - mhip6->ip6_plen = htons((u_short)(mtu + hlen + + mhip6->ip6_plen = htons((u_short)(fraglen + hlen + sizeof(*ip6f) - sizeof(struct ip6_hdr))); - if ((m_frgpart = m_copym(m0, off, mtu, M_NOWAIT)) == NULL) { + if ((m_frgpart = m_copym(m0, off, fraglen, M_NOWAIT)) == NULL) { IP6STAT_INC(ip6s_odropped); return (ENOBUFS); } m_cat(m, m_frgpart); - m->m_pkthdr.len = mtu + hlen + sizeof(*ip6f); + m->m_pkthdr.len = fraglen + hlen + sizeof(*ip6f); m->m_pkthdr.fibnum = m0->m_pkthdr.fibnum; m->m_pkthdr.rcvif = NULL; ip6f->ip6f_reserved = 0; diff --git a/sys/netinet6/sctp6_usrreq.c b/sys/netinet6/sctp6_usrreq.c index c2a45a661333..054b4c1b06a5 100644 --- a/sys/netinet6/sctp6_usrreq.c +++ b/sys/netinet6/sctp6_usrreq.c @@ -183,7 +183,7 @@ sctp6_notify(struct sctp_inpcb *inp, struct sctp_nets *net, uint8_t icmp6_type, uint8_t icmp6_code, - uint16_t next_mtu) + uint32_t next_mtu) { #if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) struct socket *so; @@ -237,11 +237,11 @@ sctp6_notify(struct sctp_inpcb *inp, timer_stopped = 0; } /* Update the path MTU. */ + if (net->port) { + next_mtu -= sizeof(struct udphdr); + } if (net->mtu > next_mtu) { net->mtu = next_mtu; - if (net->port) { - net->mtu -= sizeof(struct udphdr); - } } /* Update the association MTU */ if (stcb->asoc.smallest_mtu > next_mtu) { @@ -383,7 +383,7 @@ sctp6_ctlinput(int cmd, struct sockaddr *pktdst, void *d) sctp6_notify(inp, stcb, net, ip6cp->ip6c_icmp6->icmp6_type, ip6cp->ip6c_icmp6->icmp6_code, - (uint16_t)ntohl(ip6cp->ip6c_icmp6->icmp6_mtu)); + ntohl(ip6cp->ip6c_icmp6->icmp6_mtu)); } else { if ((stcb == NULL) && (inp != NULL)) { /* reduce inp's ref-count */ diff --git a/sys/netinet6/sctp6_var.h b/sys/netinet6/sctp6_var.h index 232fee15da1d..a24ceba7ee15 100644 --- a/sys/netinet6/sctp6_var.h +++ b/sys/netinet6/sctp6_var.h @@ -49,6 +49,6 @@ sctp6_output(struct sctp_inpcb *, struct mbuf *, struct sockaddr *, void sctp6_ctlinput(int, struct sockaddr *, void *); void sctp6_notify(struct sctp_inpcb *, struct sctp_tcb *, struct sctp_nets *, - uint8_t, uint8_t, uint16_t); + uint8_t, uint8_t, uint32_t); #endif #endif diff --git a/sys/netipsec/ipsec_pcb.c b/sys/netipsec/ipsec_pcb.c index b6ed5f3e783b..616cbb118250 100644 --- a/sys/netipsec/ipsec_pcb.c +++ b/sys/netipsec/ipsec_pcb.c @@ -172,10 +172,10 @@ ipsec_delete_pcbpolicy(struct inpcb *inp) if (inp->inp_sp == NULL) return (0); - if (inp->inp_sp->flags & INP_INBOUND_POLICY) + if (inp->inp_sp->sp_in != NULL) key_freesp(&inp->inp_sp->sp_in); - if (inp->inp_sp->flags & INP_OUTBOUND_POLICY) + if (inp->inp_sp->sp_out != NULL) key_freesp(&inp->inp_sp->sp_out); free(inp->inp_sp, M_IPSEC_INPCB); @@ -250,6 +250,8 @@ ipsec_copy_pcbpolicy(struct inpcb *old, struct inpcb *new) if (sp == NULL) return (ENOBUFS); ipsec_setspidx_inpcb(new, &sp->spidx, IPSEC_DIR_INBOUND); + if (new->inp_sp->sp_in != NULL) + key_freesp(&new->inp_sp->sp_in); new->inp_sp->sp_in = sp; new->inp_sp->flags |= INP_INBOUND_POLICY; } @@ -258,6 +260,8 @@ ipsec_copy_pcbpolicy(struct inpcb *old, struct inpcb *new) if (sp == NULL) return (ENOBUFS); ipsec_setspidx_inpcb(new, &sp->spidx, IPSEC_DIR_OUTBOUND); + if (new->inp_sp->sp_out != NULL) + key_freesp(&new->inp_sp->sp_out); new->inp_sp->sp_out = sp; new->inp_sp->flags |= INP_OUTBOUND_POLICY; } diff --git a/sys/netnatm/natm.c b/sys/netnatm/natm.c deleted file mode 100644 index 56b8539941a6..000000000000 --- a/sys/netnatm/natm.c +++ /dev/null @@ -1,490 +0,0 @@ -/*- - * Copyright (c) 2005-2006 Robert N. M. Watson - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * Copyright (c) 1996 Charles D. Cranor and Washington University. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by Charles D. Cranor and - * Washington University. - * 4. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $NetBSD: natm.c,v 1.5 1996/11/09 03:26:26 chuck Exp $ - */ - -/* - * natm.c: Native mode ATM access (both aal0 and aal5). - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include <sys/param.h> -#include <sys/conf.h> -#include <sys/kernel.h> -#include <sys/lock.h> -#include <sys/malloc.h> -#include <sys/mbuf.h> -#include <sys/protosw.h> -#include <sys/signalvar.h> -#include <sys/socket.h> -#include <sys/socketvar.h> -#include <sys/sockio.h> -#include <sys/sx.h> -#include <sys/systm.h> -#include <sys/sysctl.h> - -#include <net/if.h> -#include <net/if_var.h> -#include <net/if_atm.h> -#include <net/netisr.h> - -#include <netinet/in.h> - -#include <netnatm/natm.h> - -static const u_long natm5_sendspace = 16*1024; -static const u_long natm5_recvspace = 16*1024; - -static const u_long natm0_sendspace = 16*1024; -static const u_long natm0_recvspace = 16*1024; - -/* - * netnatm global subsystem lock, protects all global data structures in - * netnatm. - */ -struct mtx natm_mtx; - -/* - * User socket requests. - */ -static int natm_usr_attach(struct socket *, int, struct thread *); -static void natm_usr_detach(struct socket *); -static int natm_usr_connect(struct socket *, struct sockaddr *, - struct thread *); -static int natm_usr_disconnect(struct socket *); -static int natm_usr_shutdown(struct socket *); -static int natm_usr_send(struct socket *, int, struct mbuf *, - struct sockaddr *, struct mbuf *, struct thread *); -static int natm_usr_peeraddr(struct socket *, struct sockaddr **); -static int natm_usr_control(struct socket *, u_long, caddr_t, - struct ifnet *, struct thread *); -static void natm_usr_abort(struct socket *); -static int natm_usr_bind(struct socket *, struct sockaddr *, - struct thread *); -static int natm_usr_sockaddr(struct socket *, struct sockaddr **); - -static int -natm_usr_attach(struct socket *so, int proto, struct thread *p) -{ - struct natmpcb *npcb; - int error = 0; - - npcb = (struct natmpcb *)so->so_pcb; - KASSERT(npcb == NULL, ("natm_usr_attach: so_pcb != NULL")); - - if (so->so_snd.sb_hiwat == 0 || so->so_rcv.sb_hiwat == 0) { - if (proto == PROTO_NATMAAL5) - error = soreserve(so, natm5_sendspace, - natm5_recvspace); - else - error = soreserve(so, natm0_sendspace, - natm0_recvspace); - if (error) - return (error); - } - so->so_pcb = npcb = npcb_alloc(M_WAITOK); - npcb->npcb_socket = so; - return (error); -} - -static void -natm_usr_detach(struct socket *so) -{ - struct natmpcb *npcb; - - npcb = (struct natmpcb *)so->so_pcb; - KASSERT(npcb != NULL, ("natm_usr_detach: npcb == NULL")); - - NATM_LOCK(); - npcb_free(npcb, NPCB_DESTROY); /* drain */ - so->so_pcb = NULL; - NATM_UNLOCK(); -} - -static int -natm_usr_connect(struct socket *so, struct sockaddr *nam, struct thread *p) -{ - struct natmpcb *npcb; - struct sockaddr_natm *snatm; - struct atmio_openvcc op; - struct ifnet *ifp; - int error = 0; - int proto = so->so_proto->pr_protocol; - - npcb = (struct natmpcb *)so->so_pcb; - KASSERT(npcb != NULL, ("natm_usr_connect: npcb == NULL")); - - /* - * Validate nam and npcb. - */ - NATM_LOCK(); - snatm = (struct sockaddr_natm *)nam; - if (snatm->snatm_len != sizeof(*snatm) || - (npcb->npcb_flags & NPCB_FREE) == 0) { - NATM_UNLOCK(); - return (EINVAL); - } - if (snatm->snatm_family != AF_NATM) { - NATM_UNLOCK(); - return (EAFNOSUPPORT); - } - - snatm->snatm_if[IFNAMSIZ - 1] = '\0'; /* XXX ensure null termination - since ifunit() uses strcmp */ - - /* - * Convert interface string to ifp, validate. - */ - ifp = ifunit(snatm->snatm_if); - if (ifp == NULL || (ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) { - NATM_UNLOCK(); - return (ENXIO); - } - if (ifp->if_output != atm_output) { - NATM_UNLOCK(); - return (EAFNOSUPPORT); - } - - /* - * Register us with the NATM PCB layer. - */ - if (npcb_add(npcb, ifp, snatm->snatm_vci, snatm->snatm_vpi) != npcb) { - NATM_UNLOCK(); - return (EADDRINUSE); - } - - /* - * Open the channel. - * - * XXXRW: Eventually desirable to hold mutex over ioctl? - */ - bzero(&op, sizeof(op)); - op.rxhand = npcb; - op.param.flags = ATMIO_FLAG_PVC; - op.param.vpi = npcb->npcb_vpi; - op.param.vci = npcb->npcb_vci; - op.param.rmtu = op.param.tmtu = ifp->if_mtu; - op.param.aal = (proto == PROTO_NATMAAL5) ? ATMIO_AAL_5 : ATMIO_AAL_0; - op.param.traffic = ATMIO_TRAFFIC_UBR; - NATM_UNLOCK(); - - if (ifp->if_ioctl == NULL || - ifp->if_ioctl(ifp, SIOCATMOPENVCC, (caddr_t)&op) != 0) - return (EIO); - soisconnected(so); - return (error); -} - -static int -natm_usr_disconnect(struct socket *so) -{ - struct natmpcb *npcb; - struct atmio_closevcc cl; - struct ifnet *ifp; - int error = 0; - - npcb = (struct natmpcb *)so->so_pcb; - KASSERT(npcb != NULL, ("natm_usr_disconnect: npcb == NULL")); - - NATM_LOCK(); - if ((npcb->npcb_flags & NPCB_CONNECTED) == 0) { - NATM_UNLOCK(); - printf("natm: disconnected check\n"); - return (EIO); - } - ifp = npcb->npcb_ifp; - - /* - * Disable rx. - * - * XXXRW: Eventually desirable to hold mutex over ioctl? - */ - cl.vpi = npcb->npcb_vpi; - cl.vci = npcb->npcb_vci; - NATM_UNLOCK(); - if (ifp->if_ioctl != NULL) - ifp->if_ioctl(ifp, SIOCATMCLOSEVCC, (caddr_t)&cl); - soisdisconnected(so); - return (error); -} - -static int -natm_usr_shutdown(struct socket *so) -{ - - socantsendmore(so); - return (0); -} - -static int -natm_usr_send(struct socket *so, int flags, struct mbuf *m, - struct sockaddr *nam, struct mbuf *control, struct thread *p) -{ - struct natmpcb *npcb; - struct atm_pseudohdr *aph; - int error = 0; - int proto = so->so_proto->pr_protocol; - - npcb = (struct natmpcb *)so->so_pcb; - KASSERT(npcb != NULL, ("natm_usr_send: npcb == NULL")); - - NATM_LOCK(); - if (control && control->m_len) { - NATM_UNLOCK(); - m_freem(control); - m_freem(m); - return (EINVAL); - } - - /* - * Send the data. We must put an atm_pseudohdr on first. - */ - M_PREPEND(m, sizeof(*aph), M_NOWAIT); - if (m == NULL) { - NATM_UNLOCK(); - m_freem(control); - return (ENOBUFS); - } - aph = mtod(m, struct atm_pseudohdr *); - ATM_PH_VPI(aph) = npcb->npcb_vpi; - ATM_PH_SETVCI(aph, npcb->npcb_vci); - ATM_PH_FLAGS(aph) = (proto == PROTO_NATMAAL5) ? ATM_PH_AAL5 : 0; - error = atm_output(npcb->npcb_ifp, m, NULL, NULL); - NATM_UNLOCK(); - return (error); -} - -static int -natm_usr_peeraddr(struct socket *so, struct sockaddr **nam) -{ - struct natmpcb *npcb; - struct sockaddr_natm *snatm, ssnatm; - - npcb = (struct natmpcb *)so->so_pcb; - KASSERT(npcb != NULL, ("natm_usr_peeraddr: npcb == NULL")); - - NATM_LOCK(); - snatm = &ssnatm; - bzero(snatm, sizeof(*snatm)); - snatm->snatm_len = sizeof(*snatm); - snatm->snatm_family = AF_NATM; - strlcpy(snatm->snatm_if, npcb->npcb_ifp->if_xname, - sizeof(snatm->snatm_if)); - snatm->snatm_vci = npcb->npcb_vci; - snatm->snatm_vpi = npcb->npcb_vpi; - NATM_UNLOCK(); - *nam = sodupsockaddr((struct sockaddr *)snatm, M_WAITOK); - return (0); -} - -static int -natm_usr_control(struct socket *so, u_long cmd, caddr_t arg, - struct ifnet *ifp, struct thread *p) -{ - struct natmpcb *npcb; - - npcb = (struct natmpcb *)so->so_pcb; - KASSERT(npcb != NULL, ("natm_usr_control: npcb == NULL")); - - switch (cmd) { - case SIOCSIFADDR: - case SIOCSIFBRDADDR: - case SIOCSIFDSTADDR: - case SIOCSIFNETMASK: - /* - * Although we should pass any non-ATM ioctl requests - * down to driver, we filter some legacy INET requests. - * Drivers trust SIOCSIFADDR et al to come from an already - * privileged layer, and do not perform any credentials - * checks or input validation. - */ - return (EINVAL); - } - - if (ifp == NULL || ifp->if_ioctl == NULL) - return (EOPNOTSUPP); - return ((*ifp->if_ioctl)(ifp, cmd, arg)); -} - -static void -natm_usr_abort(struct socket *so) -{ - -} - -static void -natm_usr_close(struct socket *so) -{ - -} - -static int -natm_usr_bind(struct socket *so, struct sockaddr *nam, struct thread *p) -{ - - return (EOPNOTSUPP); -} - -static int -natm_usr_sockaddr(struct socket *so, struct sockaddr **nam) -{ - - return (EOPNOTSUPP); -} - -/* xxx - should be const */ -struct pr_usrreqs natm_usrreqs = { - .pru_abort = natm_usr_abort, - .pru_attach = natm_usr_attach, - .pru_bind = natm_usr_bind, - .pru_connect = natm_usr_connect, - .pru_control = natm_usr_control, - .pru_detach = natm_usr_detach, - .pru_disconnect = natm_usr_disconnect, - .pru_peeraddr = natm_usr_peeraddr, - .pru_send = natm_usr_send, - .pru_shutdown = natm_usr_shutdown, - .pru_sockaddr = natm_usr_sockaddr, - .pru_close = natm_usr_close, -}; - -/* - * natmintr: interrupt - * - * Note: we expect a socket pointer in rcvif rather than an interface - * pointer. We can get the interface pointer from the so's PCB if we really - * need it. - */ -void -natmintr(struct mbuf *m) -{ - struct socket *so; - struct natmpcb *npcb; - -#ifdef DIAGNOSTIC - M_ASSERTPKTHDR(m); -#endif - - NATM_LOCK(); - npcb = (struct natmpcb *)m->m_pkthdr.rcvif; /* XXX: overloaded */ - so = npcb->npcb_socket; - - npcb->npcb_inq--; - - if (npcb->npcb_flags & NPCB_DRAIN) { - if (npcb->npcb_inq == 0) - free(npcb, M_PCB); /* done! */ - NATM_UNLOCK(); - m_freem(m); - return; - } - - if (npcb->npcb_flags & NPCB_FREE) { - NATM_UNLOCK(); - m_freem(m); /* drop */ - return; - } - -#ifdef NEED_TO_RESTORE_IFP - m->m_pkthdr.rcvif = npcb->npcb_ifp; -#else -#ifdef DIAGNOSTIC - m->m_pkthdr.rcvif = NULL; /* null it out to be safe */ -#endif -#endif - - if (sbspace(&so->so_rcv) > m->m_pkthdr.len) { -#ifdef NATM_STAT - natm_sookcnt++; - natm_sookbytes += m->m_pkthdr.len; -#endif - sbappendrecord(&so->so_rcv, m); - sorwakeup(so); - NATM_UNLOCK(); - } else { -#ifdef NATM_STAT - natm_sodropcnt++; - natm_sodropbytes += m->m_pkthdr.len; -#endif - NATM_UNLOCK(); - m_freem(m); - } -} - -/* - * natm0_sysctl: not used, but here in case we want to add something - * later... - */ -int -natm0_sysctl(SYSCTL_HANDLER_ARGS) -{ - - /* All sysctl names at this level are terminal. */ - return (ENOENT); -} - -/* - * natm5_sysctl: not used, but here in case we want to add something - * later... - */ -int -natm5_sysctl(SYSCTL_HANDLER_ARGS) -{ - - /* All sysctl names at this level are terminal. */ - return (ENOENT); -} diff --git a/sys/netnatm/natm.h b/sys/netnatm/natm.h deleted file mode 100644 index 5603b9e77d57..000000000000 --- a/sys/netnatm/natm.h +++ /dev/null @@ -1,120 +0,0 @@ -/*- - * Copyright (c) 1996 Charles D. Cranor and Washington University. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by Charles D. Cranor and - * Washington University. - * 4. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $NetBSD: natm.h,v 1.1 1996/07/04 03:20:12 chuck Exp $ - * $FreeBSD$ - */ - -/* - * natm.h: native mode atm - */ - -/* - * supported protocols - */ -#define PROTO_NATMAAL0 1 -#define PROTO_NATMAAL5 2 - -/* - * sockaddr_natm - */ - -struct sockaddr_natm { - unsigned char snatm_len; /* length */ - sa_family_t snatm_family; /* AF_NATM */ - char snatm_if[IFNAMSIZ]; /* interface name */ - u_int16_t snatm_vci; /* vci */ - u_int8_t snatm_vpi; /* vpi */ -}; - -#ifdef _KERNEL - -/* - * natm protocol control block - */ -struct natmpcb { - LIST_ENTRY(natmpcb) pcblist; /* list pointers */ - u_int npcb_inq; /* # of our pkts in proto q */ - struct socket *npcb_socket; /* backpointer to socket */ - struct ifnet *npcb_ifp; /* pointer to hardware */ - struct in_addr ipaddr; /* remote IP address, if APCB_IP */ - u_int16_t npcb_vci; /* VCI */ - u_int8_t npcb_vpi; /* VPI */ - u_int8_t npcb_flags; /* flags */ -}; - -/* flags */ -#define NPCB_FREE 0x01 /* free (not on any list) */ -#define NPCB_CONNECTED 0x02 /* connected */ -#define NPCB_IP 0x04 /* used by IP */ -#define NPCB_DRAIN 0x08 /* destroy as soon as inq == 0 */ - -/* flag arg to npcb_free */ -#define NPCB_REMOVE 0 /* remove from global list */ -#define NPCB_DESTROY 1 /* destroy and be free */ - -LIST_HEAD(npcblist, natmpcb); - -/* global data structures */ - -extern struct mtx natm_mtx; /* global netnatm lock */ -extern struct npcblist natm_pcbs; /* global list of pcbs */ -#define NATM_STAT -#ifdef NATM_STAT -extern u_int natm_sodropcnt; -extern u_int natm_sodropbytes; /* account of droppage */ -extern u_int natm_sookcnt; -extern u_int natm_sookbytes; /* account of ok */ -#endif - -/* locking macros */ -#define NATM_LOCK_INIT() mtx_init(&natm_mtx, "natm_mtx", NULL, MTX_DEF) -#define NATM_LOCK() mtx_lock(&natm_mtx) -#define NATM_UNLOCK() mtx_unlock(&natm_mtx) -#define NATM_LOCK_ASSERT() mtx_assert(&natm_mtx, MA_OWNED) - -/* external functions */ - -/* natm_pcb.c */ -struct natmpcb *npcb_alloc(int); -void npcb_free(struct natmpcb *, int); -struct natmpcb *npcb_add(struct natmpcb *, struct ifnet *, uint16_t, uint8_t); - -/* natm.c */ -extern struct pr_usrreqs natm_usrreqs; - -#ifdef SYSCTL_HANDLER_ARGS -int natm0_sysctl(SYSCTL_HANDLER_ARGS); -int natm5_sysctl(SYSCTL_HANDLER_ARGS); -#endif - -void natmintr(struct mbuf *); - -#endif diff --git a/sys/netnatm/natm_pcb.c b/sys/netnatm/natm_pcb.c deleted file mode 100644 index 602d438ea51e..000000000000 --- a/sys/netnatm/natm_pcb.c +++ /dev/null @@ -1,167 +0,0 @@ -/*- - * Copyright (c) 1996 Charles D. Cranor and Washington University. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by Charles D. Cranor and - * Washington University. - * 4. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $NetBSD: natm_pcb.c,v 1.4 1996/11/09 03:26:27 chuck Exp $ - */ - -/* - * atm_pcb.c: manage atm protocol control blocks and keep IP and NATM - * from trying to use each other's VCs. - */ - -#include "opt_ddb.h" - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include <sys/param.h> -#include <sys/kernel.h> -#include <sys/lock.h> -#include <sys/malloc.h> -#include <sys/mutex.h> -#include <sys/systm.h> -#include <sys/socket.h> -#include <sys/socketvar.h> - -#include <net/if.h> -#include <net/if_var.h> /* XXX: db_show_natm() */ - -#include <netinet/in.h> - -#include <netnatm/natm.h> - -#include <ddb/ddb.h> - -struct npcblist natm_pcbs; - -/* - * npcb_alloc: allocate a npcb [in the free state] - */ -struct natmpcb * -npcb_alloc(int wait) - -{ - struct natmpcb *npcb; - - npcb = malloc(sizeof(*npcb), M_PCB, wait | M_ZERO); - if (npcb != NULL) - npcb->npcb_flags = NPCB_FREE; - return (npcb); -} - - -/* - * npcb_free: free a npcb - */ -void -npcb_free(struct natmpcb *npcb, int op) -{ - - NATM_LOCK_ASSERT(); - - if ((npcb->npcb_flags & NPCB_FREE) == 0) { - LIST_REMOVE(npcb, pcblist); - npcb->npcb_flags = NPCB_FREE; - } - if (op == NPCB_DESTROY) { - if (npcb->npcb_inq) { - npcb->npcb_flags = NPCB_DRAIN; /* flag for distruct. */ - } else { - free(npcb, M_PCB); /* kill it! */ - } - } -} - - -/* - * npcb_add: add or remove npcb from main list - * returns npcb if ok - */ -struct natmpcb * -npcb_add(struct natmpcb *npcb, struct ifnet *ifp, u_int16_t vci, u_int8_t vpi) -{ - struct natmpcb *cpcb = NULL; /* current pcb */ - - NATM_LOCK_ASSERT(); - - /* - * lookup required - */ - LIST_FOREACH(cpcb, &natm_pcbs, pcblist) - if (ifp == cpcb->npcb_ifp && vci == cpcb->npcb_vci && - vpi == cpcb->npcb_vpi) - break; - - /* - * add & something already there? - */ - if (cpcb) { - cpcb = NULL; - goto done; /* fail */ - } - - /* - * need to allocate a pcb? - */ - if (npcb == NULL) { - /* could be called from lower half */ - cpcb = npcb_alloc(M_NOWAIT); - if (cpcb == NULL) - goto done; /* fail */ - } else { - cpcb = npcb; - } - - cpcb->npcb_ifp = ifp; - cpcb->ipaddr.s_addr = 0; - cpcb->npcb_vci = vci; - cpcb->npcb_vpi = vpi; - cpcb->npcb_flags = NPCB_CONNECTED; - - LIST_INSERT_HEAD(&natm_pcbs, cpcb, pcblist); - -done: - return (cpcb); -} - -#ifdef DDB -DB_SHOW_COMMAND(natm, db_show_natm) -{ - struct natmpcb *cpcb; - - db_printf("npcb dump:\n"); - LIST_FOREACH(cpcb, &natm_pcbs, pcblist) { - db_printf("if=%s, vci=%d, vpi=%d, IP=0x%x, sock=%p, " - "flags=0x%x, inq=%d\n", cpcb->npcb_ifp->if_xname, - cpcb->npcb_vci, cpcb->npcb_vpi, cpcb->ipaddr.s_addr, - cpcb->npcb_socket, cpcb->npcb_flags, cpcb->npcb_inq); - } -} -#endif diff --git a/sys/netnatm/natm_proto.c b/sys/netnatm/natm_proto.c deleted file mode 100644 index aa7fa2cd8511..000000000000 --- a/sys/netnatm/natm_proto.c +++ /dev/null @@ -1,116 +0,0 @@ -/*- - * Copyright (c) 1996 Charles D. Cranor and Washington University. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by Charles D. Cranor and - * Washington University. - * 4. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $NetBSD: natm_proto.c,v 1.3 1996/09/18 00:56:41 chuck Exp $ - */ - -/* - * protocol layer for access to native mode ATM - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/kernel.h> -#include <sys/lock.h> -#include <sys/mutex.h> -#include <sys/socket.h> -#include <sys/protosw.h> -#include <sys/domain.h> - -#include <net/if.h> -#include <net/netisr.h> - -#include <netinet/in.h> - -#include <netnatm/natm.h> - -static void natm_init(void); - -static struct domain natmdomain; - -static struct protosw natmsw[] = { -{ - .pr_type = SOCK_STREAM, - .pr_domain = &natmdomain, - .pr_protocol = PROTO_NATMAAL5, - .pr_flags = PR_CONNREQUIRED, - .pr_usrreqs = &natm_usrreqs -}, -{ - .pr_type = SOCK_DGRAM, - .pr_domain = &natmdomain, - .pr_protocol = PROTO_NATMAAL5, - .pr_flags = PR_CONNREQUIRED|PR_ATOMIC, - .pr_usrreqs = &natm_usrreqs -}, -{ - .pr_type = SOCK_STREAM, - .pr_domain = &natmdomain, - .pr_protocol = PROTO_NATMAAL0, - .pr_flags = PR_CONNREQUIRED, - .pr_usrreqs = &natm_usrreqs -}, -}; - -static struct domain natmdomain = { - .dom_family = AF_NATM, - .dom_name = "natm", - .dom_init = natm_init, - .dom_protosw = natmsw, - .dom_protoswNPROTOSW = &natmsw[nitems(natmsw)], -}; - -static struct netisr_handler natm_nh = { - .nh_name = "natm", - .nh_handler = natmintr, - .nh_proto = NETISR_NATM, - .nh_qlimit = 1000, - .nh_policy = NETISR_POLICY_SOURCE, -}; - -#ifdef NATM_STAT -u_int natm_sodropcnt; /* # mbufs dropped due to full sb */ -u_int natm_sodropbytes; /* # of bytes dropped */ -u_int natm_sookcnt; /* # mbufs ok */ -u_int natm_sookbytes; /* # of bytes ok */ -#endif - -static void -natm_init(void) -{ - LIST_INIT(&natm_pcbs); - NATM_LOCK_INIT(); - netisr_register(&natm_nh); -} - -DOMAIN_SET(natm); diff --git a/sys/netpfil/pf/pf_if.c b/sys/netpfil/pf/pf_if.c index c5c8b5a876f7..aa7382c84f77 100644 --- a/sys/netpfil/pf/pf_if.c +++ b/sys/netpfil/pf/pf_if.c @@ -89,9 +89,9 @@ static int pfi_skip_if(const char *, struct pfi_kif *); static int pfi_unmask(void *); static void pfi_attach_ifnet_event(void * __unused, struct ifnet *); static void pfi_detach_ifnet_event(void * __unused, struct ifnet *); -static void pfi_attach_group_event(void *, struct ifg_group *); -static void pfi_change_group_event(void *, char *); -static void pfi_detach_group_event(void *, struct ifg_group *); +static void pfi_attach_group_event(void * __unused, struct ifg_group *); +static void pfi_change_group_event(void * __unused, char *); +static void pfi_detach_group_event(void * __unused, struct ifg_group *); static void pfi_ifaddr_event(void * __unused, struct ifnet *); RB_HEAD(pfi_ifhead, pfi_kif); @@ -143,11 +143,11 @@ pfi_initialize(void) pfi_detach_cookie = EVENTHANDLER_REGISTER(ifnet_departure_event, pfi_detach_ifnet_event, NULL, EVENTHANDLER_PRI_ANY); pfi_attach_group_cookie = EVENTHANDLER_REGISTER(group_attach_event, - pfi_attach_group_event, curvnet, EVENTHANDLER_PRI_ANY); + pfi_attach_group_event, NULL, EVENTHANDLER_PRI_ANY); pfi_change_group_cookie = EVENTHANDLER_REGISTER(group_change_event, - pfi_change_group_event, curvnet, EVENTHANDLER_PRI_ANY); + pfi_change_group_event, NULL, EVENTHANDLER_PRI_ANY); pfi_detach_group_cookie = EVENTHANDLER_REGISTER(group_detach_event, - pfi_detach_group_event, curvnet, EVENTHANDLER_PRI_ANY); + pfi_detach_group_event, NULL, EVENTHANDLER_PRI_ANY); pfi_ifaddr_event_cookie = EVENTHANDLER_REGISTER(ifaddr_event, pfi_ifaddr_event, NULL, EVENTHANDLER_PRI_ANY); } @@ -800,10 +800,8 @@ static void pfi_attach_ifnet_event(void *arg __unused, struct ifnet *ifp) { - CURVNET_SET(ifp->if_vnet); if (V_pf_vnet_active == 0) { /* Avoid teardown race in the least expensive way. */ - CURVNET_RESTORE(); return; } pfi_attach_ifnet(ifp); @@ -812,7 +810,6 @@ pfi_attach_ifnet_event(void *arg __unused, struct ifnet *ifp) pf_altq_ifnet_event(ifp, 0); PF_RULES_WUNLOCK(); #endif - CURVNET_RESTORE(); } static void @@ -823,10 +820,8 @@ pfi_detach_ifnet_event(void *arg __unused, struct ifnet *ifp) if (kif == NULL) return; - CURVNET_SET(ifp->if_vnet); if (V_pf_vnet_active == 0) { /* Avoid teardown race in the least expensive way. */ - CURVNET_RESTORE(); return; } PF_RULES_WLOCK(); @@ -839,32 +834,26 @@ pfi_detach_ifnet_event(void *arg __unused, struct ifnet *ifp) pf_altq_ifnet_event(ifp, 1); #endif PF_RULES_WUNLOCK(); - CURVNET_RESTORE(); } static void -pfi_attach_group_event(void *arg , struct ifg_group *ifg) +pfi_attach_group_event(void *arg __unused, struct ifg_group *ifg) { - CURVNET_SET((struct vnet *)arg); if (V_pf_vnet_active == 0) { /* Avoid teardown race in the least expensive way. */ - CURVNET_RESTORE(); return; } pfi_attach_ifgroup(ifg); - CURVNET_RESTORE(); } static void -pfi_change_group_event(void *arg, char *gname) +pfi_change_group_event(void *arg __unused, char *gname) { struct pfi_kif *kif; - CURVNET_SET((struct vnet *)arg); if (V_pf_vnet_active == 0) { /* Avoid teardown race in the least expensive way. */ - CURVNET_RESTORE(); return; } @@ -874,21 +863,18 @@ pfi_change_group_event(void *arg, char *gname) kif = pfi_kif_attach(kif, gname); pfi_kif_update(kif); PF_RULES_WUNLOCK(); - CURVNET_RESTORE(); } static void -pfi_detach_group_event(void *arg, struct ifg_group *ifg) +pfi_detach_group_event(void *arg __unused, struct ifg_group *ifg) { struct pfi_kif *kif = (struct pfi_kif *)ifg->ifg_pf_kif; if (kif == NULL) return; - CURVNET_SET((struct vnet *)arg); if (V_pf_vnet_active == 0) { /* Avoid teardown race in the least expensive way. */ - CURVNET_RESTORE(); return; } PF_RULES_WLOCK(); @@ -897,7 +883,6 @@ pfi_detach_group_event(void *arg, struct ifg_group *ifg) kif->pfik_group = NULL; ifg->ifg_pf_kif = NULL; PF_RULES_WUNLOCK(); - CURVNET_RESTORE(); } static void @@ -906,10 +891,8 @@ pfi_ifaddr_event(void *arg __unused, struct ifnet *ifp) if (ifp->if_pf_kif == NULL) return; - CURVNET_SET(ifp->if_vnet); if (V_pf_vnet_active == 0) { /* Avoid teardown race in the least expensive way. */ - CURVNET_RESTORE(); return; } PF_RULES_WLOCK(); @@ -918,5 +901,4 @@ pfi_ifaddr_event(void *arg __unused, struct ifnet *ifp) pfi_kif_update(ifp->if_pf_kif); } PF_RULES_WUNLOCK(); - CURVNET_RESTORE(); } diff --git a/sys/netpfil/pf/pf_table.c b/sys/netpfil/pf/pf_table.c index b9889b95733c..96c7a1d15060 100644 --- a/sys/netpfil/pf/pf_table.c +++ b/sys/netpfil/pf/pf_table.c @@ -184,9 +184,14 @@ static struct pfr_kentry static RB_PROTOTYPE(pfr_ktablehead, pfr_ktable, pfrkt_tree, pfr_ktable_compare); static RB_GENERATE(pfr_ktablehead, pfr_ktable, pfrkt_tree, pfr_ktable_compare); -struct pfr_ktablehead pfr_ktables; -struct pfr_table pfr_nulltable; -int pfr_ktable_cnt; +static VNET_DEFINE(struct pfr_ktablehead, pfr_ktables); +#define V_pfr_ktables VNET(pfr_ktables) + +static VNET_DEFINE(struct pfr_table, pfr_nulltable); +#define V_pfr_nulltable VNET(pfr_nulltable) + +static VNET_DEFINE(int, pfr_ktable_cnt); +#define V_pfr_ktable_cnt VNET(pfr_ktable_cnt) void pfr_initialize(void) @@ -256,7 +261,7 @@ pfr_add_addrs(struct pfr_table *tbl, struct pfr_addr *addr, int size, return (ESRCH); if (kt->pfrkt_flags & PFR_TFLAG_CONST) return (EPERM); - tmpkt = pfr_create_ktable(&pfr_nulltable, 0, 0); + tmpkt = pfr_create_ktable(&V_pfr_nulltable, 0, 0); if (tmpkt == NULL) return (ENOMEM); SLIST_INIT(&workq); @@ -408,7 +413,7 @@ pfr_set_addrs(struct pfr_table *tbl, struct pfr_addr *addr, int size, return (ESRCH); if (kt->pfrkt_flags & PFR_TFLAG_CONST) return (EPERM); - tmpkt = pfr_create_ktable(&pfr_nulltable, 0, 0); + tmpkt = pfr_create_ktable(&V_pfr_nulltable, 0, 0); if (tmpkt == NULL) return (ENOMEM); pfr_mark_addrs(kt); @@ -1083,7 +1088,7 @@ pfr_clr_tables(struct pfr_table *filter, int *ndel, int flags) return (ENOENT); SLIST_INIT(&workq); - RB_FOREACH(p, pfr_ktablehead, &pfr_ktables) { + RB_FOREACH(p, pfr_ktablehead, &V_pfr_ktables) { if (pfr_skip_table(filter, p, flags)) continue; if (!strcmp(p->pfrkt_anchor, PF_RESERVED_ANCHOR)) @@ -1118,7 +1123,7 @@ pfr_add_tables(struct pfr_table *tbl, int size, int *nadd, int flags) flags & PFR_FLAG_USERIOCTL)) senderr(EINVAL); key.pfrkt_flags |= PFR_TFLAG_ACTIVE; - p = RB_FIND(pfr_ktablehead, &pfr_ktables, &key); + p = RB_FIND(pfr_ktablehead, &V_pfr_ktables, &key); if (p == NULL) { p = pfr_create_ktable(&key.pfrkt_t, tzero, 1); if (p == NULL) @@ -1134,7 +1139,7 @@ pfr_add_tables(struct pfr_table *tbl, int size, int *nadd, int flags) /* find or create root table */ bzero(key.pfrkt_anchor, sizeof(key.pfrkt_anchor)); - r = RB_FIND(pfr_ktablehead, &pfr_ktables, &key); + r = RB_FIND(pfr_ktablehead, &V_pfr_ktables, &key); if (r != NULL) { p->pfrkt_root = r; goto _skip; @@ -1190,7 +1195,7 @@ pfr_del_tables(struct pfr_table *tbl, int size, int *ndel, int flags) if (pfr_validate_table(&key.pfrkt_t, 0, flags & PFR_FLAG_USERIOCTL)) return (EINVAL); - p = RB_FIND(pfr_ktablehead, &pfr_ktables, &key); + p = RB_FIND(pfr_ktablehead, &V_pfr_ktables, &key); if (p != NULL && (p->pfrkt_flags & PFR_TFLAG_ACTIVE)) { SLIST_FOREACH(q, &workq, pfrkt_workq) if (!pfr_ktable_compare(p, q)) @@ -1229,7 +1234,7 @@ pfr_get_tables(struct pfr_table *filter, struct pfr_table *tbl, int *size, *size = n; return (0); } - RB_FOREACH(p, pfr_ktablehead, &pfr_ktables) { + RB_FOREACH(p, pfr_ktablehead, &V_pfr_ktables) { if (pfr_skip_table(filter, p, flags)) continue; if (n-- <= 0) @@ -1264,7 +1269,7 @@ pfr_get_tstats(struct pfr_table *filter, struct pfr_tstats *tbl, int *size, return (0); } SLIST_INIT(&workq); - RB_FOREACH(p, pfr_ktablehead, &pfr_ktables) { + RB_FOREACH(p, pfr_ktablehead, &V_pfr_ktables) { if (pfr_skip_table(filter, p, flags)) continue; if (n-- <= 0) @@ -1296,7 +1301,7 @@ pfr_clr_tstats(struct pfr_table *tbl, int size, int *nzero, int flags) bcopy(tbl + i, &key.pfrkt_t, sizeof(key.pfrkt_t)); if (pfr_validate_table(&key.pfrkt_t, 0, 0)) return (EINVAL); - p = RB_FIND(pfr_ktablehead, &pfr_ktables, &key); + p = RB_FIND(pfr_ktablehead, &V_pfr_ktables, &key); if (p != NULL) { SLIST_INSERT_HEAD(&workq, p, pfrkt_workq); xzero++; @@ -1328,7 +1333,7 @@ pfr_set_tflags(struct pfr_table *tbl, int size, int setflag, int clrflag, if (pfr_validate_table(&key.pfrkt_t, 0, flags & PFR_FLAG_USERIOCTL)) return (EINVAL); - p = RB_FIND(pfr_ktablehead, &pfr_ktables, &key); + p = RB_FIND(pfr_ktablehead, &V_pfr_ktables, &key); if (p != NULL && (p->pfrkt_flags & PFR_TFLAG_ACTIVE)) { p->pfrkt_nflags = (p->pfrkt_flags | setflag) & ~clrflag; @@ -1370,7 +1375,7 @@ pfr_ina_begin(struct pfr_table *trs, u_int32_t *ticket, int *ndel, int flags) if (rs == NULL) return (ENOMEM); SLIST_INIT(&workq); - RB_FOREACH(p, pfr_ktablehead, &pfr_ktables) { + RB_FOREACH(p, pfr_ktablehead, &V_pfr_ktables) { if (!(p->pfrkt_flags & PFR_TFLAG_INACTIVE) || pfr_skip_table(trs, p, 0)) continue; @@ -1415,7 +1420,7 @@ pfr_ina_define(struct pfr_table *tbl, struct pfr_addr *addr, int size, return (EBUSY); tbl->pfrt_flags |= PFR_TFLAG_INACTIVE; SLIST_INIT(&tableq); - kt = RB_FIND(pfr_ktablehead, &pfr_ktables, (struct pfr_ktable *)tbl); + kt = RB_FIND(pfr_ktablehead, &V_pfr_ktables, (struct pfr_ktable *)tbl); if (kt == NULL) { kt = pfr_create_ktable(tbl, 0, 1); if (kt == NULL) @@ -1428,7 +1433,7 @@ pfr_ina_define(struct pfr_table *tbl, struct pfr_addr *addr, int size, /* find or create root table */ bzero(&key, sizeof(key)); strlcpy(key.pfrkt_name, tbl->pfrt_name, sizeof(key.pfrkt_name)); - rt = RB_FIND(pfr_ktablehead, &pfr_ktables, &key); + rt = RB_FIND(pfr_ktablehead, &V_pfr_ktables, &key); if (rt != NULL) { kt->pfrkt_root = rt; goto _skip; @@ -1505,7 +1510,7 @@ pfr_ina_rollback(struct pfr_table *trs, u_int32_t ticket, int *ndel, int flags) if (rs == NULL || !rs->topen || ticket != rs->tticket) return (0); SLIST_INIT(&workq); - RB_FOREACH(p, pfr_ktablehead, &pfr_ktables) { + RB_FOREACH(p, pfr_ktablehead, &V_pfr_ktables) { if (!(p->pfrkt_flags & PFR_TFLAG_INACTIVE) || pfr_skip_table(trs, p, 0)) continue; @@ -1541,7 +1546,7 @@ pfr_ina_commit(struct pfr_table *trs, u_int32_t ticket, int *nadd, return (EBUSY); SLIST_INIT(&workq); - RB_FOREACH(p, pfr_ktablehead, &pfr_ktables) { + RB_FOREACH(p, pfr_ktablehead, &V_pfr_ktables) { if (!(p->pfrkt_flags & PFR_TFLAG_INACTIVE) || pfr_skip_table(trs, p, 0)) continue; @@ -1687,7 +1692,7 @@ pfr_table_count(struct pfr_table *filter, int flags) PF_RULES_ASSERT(); if (flags & PFR_FLAG_ALLRSETS) - return (pfr_ktable_cnt); + return (V_pfr_ktable_cnt); if (filter->pfrt_anchor[0]) { rs = pf_find_ruleset(filter->pfrt_anchor); return ((rs != NULL) ? rs->tables : -1); @@ -1720,8 +1725,8 @@ pfr_insert_ktable(struct pfr_ktable *kt) PF_RULES_WASSERT(); - RB_INSERT(pfr_ktablehead, &pfr_ktables, kt); - pfr_ktable_cnt++; + RB_INSERT(pfr_ktablehead, &V_pfr_ktables, kt); + V_pfr_ktable_cnt++; if (kt->pfrkt_root != NULL) if (!kt->pfrkt_root->pfrkt_refcnt[PFR_REFCNT_ANCHOR]++) pfr_setflags_ktable(kt->pfrkt_root, @@ -1752,14 +1757,14 @@ pfr_setflags_ktable(struct pfr_ktable *kt, int newf) if (!(newf & PFR_TFLAG_ACTIVE)) newf &= ~PFR_TFLAG_USRMASK; if (!(newf & PFR_TFLAG_SETMASK)) { - RB_REMOVE(pfr_ktablehead, &pfr_ktables, kt); + RB_REMOVE(pfr_ktablehead, &V_pfr_ktables, kt); if (kt->pfrkt_root != NULL) if (!--kt->pfrkt_root->pfrkt_refcnt[PFR_REFCNT_ANCHOR]) pfr_setflags_ktable(kt->pfrkt_root, kt->pfrkt_root->pfrkt_flags & ~PFR_TFLAG_REFDANCHOR); pfr_destroy_ktable(kt, 1); - pfr_ktable_cnt--; + V_pfr_ktable_cnt--; return; } if (!(newf & PFR_TFLAG_ACTIVE) && kt->pfrkt_cnt) { @@ -1880,7 +1885,7 @@ static struct pfr_ktable * pfr_lookup_table(struct pfr_table *tbl) { /* struct pfr_ktable start like a struct pfr_table */ - return (RB_FIND(pfr_ktablehead, &pfr_ktables, + return (RB_FIND(pfr_ktablehead, &V_pfr_ktables, (struct pfr_ktable *)tbl)); } diff --git a/sys/sys/param.h b/sys/sys/param.h index 12a1f9fab20a..db976774c7c0 100644 --- a/sys/sys/param.h +++ b/sys/sys/param.h @@ -58,7 +58,7 @@ * in the range 5 to 9. */ #undef __FreeBSD_version -#define __FreeBSD_version 1200029 /* Master, propagated to newvers */ +#define __FreeBSD_version 1200030 /* Master, propagated to newvers */ /* * __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD, diff --git a/sys/x86/include/segments.h b/sys/x86/include/segments.h index 1a781eafe002..c7c9d5696737 100644 --- a/sys/x86/include/segments.h +++ b/sys/x86/include/segments.h @@ -249,7 +249,6 @@ union descriptor { #define LSYS5SIGR_SEL 1 #define L43BSDCALLS_SEL 2 /* notyet */ #define LUCODE_SEL 3 -#define LSOL26CALLS_SEL 4 /* Solaris >= 2.6 system call gate */ #define LUDATA_SEL 5 /* separate stack, es,fs,gs sels ? */ /* #define LPOSIXCALLS_SEL 5*/ /* notyet */ diff --git a/tools/build/mk/OptionalObsoleteFiles.inc b/tools/build/mk/OptionalObsoleteFiles.inc index 5c47735bf24f..11d248339419 100644 --- a/tools/build/mk/OptionalObsoleteFiles.inc +++ b/tools/build/mk/OptionalObsoleteFiles.inc @@ -66,7 +66,6 @@ OLD_FILES+=usr/sbin/hlfsd OLD_FILES+=usr/sbin/mk-amd-map OLD_FILES+=usr/sbin/wire-test OLD_FILES+=usr/share/examples/etc/amd.map -OLD_FILES+=usr/share/info/am-utils.info.gz OLD_FILES+=usr/share/man/man1/pawd.1.gz OLD_FILES+=usr/share/man/man5/amd.conf.5.gz OLD_FILES+=usr/share/man/man8/amd.8.gz @@ -103,13 +102,7 @@ OLD_FILES+=usr/share/man/man8/atrun.8.gz .endif .if ${MK_ATM} == no -OLD_FILES+=etc/rc.d/atm1 -OLD_FILES+=etc/rc.d/atm2 -OLD_FILES+=etc/rc.d/atm3 -OLD_FILES+=rescue/atmconfig -OLD_FILES+=sbin/atmconfig OLD_FILES+=usr/bin/sscop -OLD_FILES+=usr/include/bsnmp/snmp_atm.h OLD_FILES+=usr/include/netnatm/addr.h OLD_FILES+=usr/include/netnatm/api/atmapi.h OLD_FILES+=usr/include/netnatm/api/ccatm.h @@ -137,30 +130,19 @@ OLD_FILES+=usr/lib/libngatm.a OLD_FILES+=usr/lib/libngatm.so OLD_LIBS+=usr/lib/libngatm.so.4 OLD_FILES+=usr/lib/libngatm_p.a -OLD_FILES+=usr/lib/snmp_atm.so -OLD_LIBS+=usr/lib/snmp_atm.so.6 .if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64" OLD_FILES+=usr/lib32/libngatm.a OLD_FILES+=usr/lib32/libngatm.so OLD_LIBS+=usr/lib32/libngatm.so.4 OLD_FILES+=usr/lib32/libngatm_p.a .endif -OLD_FILES+=usr/share/doc/atm/atmconfig.help -OLD_FILES+=usr/share/doc/atm/atmconfig_device.help -OLD_DIRS+=usr/share/doc/atm OLD_FILES+=usr/share/man/man1/sscop.1.gz OLD_FILES+=usr/share/man/man3/libngatm.3.gz -OLD_FILES+=usr/share/man/man3/snmp_atm.3.gz OLD_FILES+=usr/share/man/man3/uniaddr.3.gz OLD_FILES+=usr/share/man/man3/unifunc.3.gz OLD_FILES+=usr/share/man/man3/unimsg.3.gz OLD_FILES+=usr/share/man/man3/unisap.3.gz OLD_FILES+=usr/share/man/man3/unistruct.3.gz -OLD_FILES+=usr/share/man/man8/atmconfig.8.gz -OLD_FILES+=usr/share/snmp/defs/atm_freebsd.def -OLD_FILES+=usr/share/snmp/defs/atm_tree.def -OLD_FILES+=usr/share/snmp/mibs/BEGEMOT-ATM-FREEBSD-MIB.txt -OLD_FILES+=usr/share/snmp/mibs/BEGEMOT-ATM.txt .endif .if ${MK_AUDIT} == no @@ -732,7 +714,6 @@ OLD_FILES+=usr/bin/bsnmpwalk OLD_FILES+=usr/include/bsnmp/asn1.h OLD_FILES+=usr/include/bsnmp/bridge_snmp.h OLD_FILES+=usr/include/bsnmp/snmp.h -OLD_FILES+=usr/include/bsnmp/snmp_atm.h OLD_FILES+=usr/include/bsnmp/snmp_mibII.h OLD_FILES+=usr/include/bsnmp/snmp_netgraph.h OLD_FILES+=usr/include/bsnmp/snmpagent.h @@ -746,8 +727,6 @@ OLD_FILES+=usr/lib/libbsnmptools.a OLD_FILES+=usr/lib/libbsnmptools.so OLD_LIBS+=usr/lib/libbsnmptools.so.0 OLD_FILES+=usr/lib/libbsnmptools_p.a -OLD_FILES+=usr/lib/snmp_atm.so -OLD_LIBS+=usr/lib/snmp_atm.so.6 OLD_FILES+=usr/lib/snmp_bridge.so OLD_LIBS+=usr/lib/snmp_bridge.so.6 OLD_FILES+=usr/lib/snmp_hast.so @@ -871,7 +850,6 @@ OLD_FILES+=usr/share/man/man3/snmp_trace.3.gz OLD_FILES+=usr/share/man/man3/snmp_value_copy.3.gz OLD_FILES+=usr/share/man/man3/snmp_value_free.3.gz OLD_FILES+=usr/share/man/man3/snmp_value_parse.3.gz -OLD_FILES+=usr/share/man/man3/tree.3.gz OLD_FILES+=usr/share/man/man3/tree_size.3.gz # usr.sbin/bsnmpd/bsnmpd OLD_FILES+=usr/share/man/man3/FIND_OBJECT_INT.3.gz @@ -931,7 +909,6 @@ OLD_FILES+=usr/share/man/man3/reqid_base.3.gz OLD_FILES+=usr/share/man/man3/reqid_istype.3.gz OLD_FILES+=usr/share/man/man3/reqid_next.3.gz OLD_FILES+=usr/share/man/man3/reqid_type.3.gz -OLD_FILES+=usr/share/man/man3/snmp_atm.3.gz OLD_FILES+=usr/share/man/man3/snmp_bridge.3.gz OLD_FILES+=usr/share/man/man3/snmp_hast.3.gz OLD_FILES+=usr/share/man/man3/snmp_hostres.3.gz @@ -987,8 +964,6 @@ OLD_FILES+=usr/share/man/man3/usm_flush_users.3.gz OLD_FILES+=usr/share/man/man3/usm_next_user.3.gz OLD_FILES+=usr/share/man/man3/usm_new_user.3.gz OLD_FILES+=usr/share/man/man3/usm_user.3.gz -OLD_FILES+=usr/share/snmp/defs/atm_freebsd.def -OLD_FILES+=usr/share/snmp/defs/atm_tree.def OLD_FILES+=usr/share/snmp/defs/bridge_tree.def OLD_FILES+=usr/share/snmp/defs/hast_tree.def OLD_FILES+=usr/share/snmp/defs/hostres_tree.def @@ -2421,11 +2396,6 @@ OLD_LIBS+=usr/lib32/libgomp.so.1 OLD_FILES+=usr/lib32/libgomp_p.a OLD_FILES+=usr/libexec/cc1 OLD_FILES+=usr/libexec/cc1plus -OLD_FILES+=usr/share/info/cpp.info.gz -OLD_FILES+=usr/share/info/cppinternals.info.gz -OLD_FILES+=usr/share/info/gcc.info.gz -OLD_FILES+=usr/share/info/gccint.info.gz -OLD_FILES+=usr/share/info/gperf.info.gz OLD_FILES+=usr/share/man/man1/g++.1.gz OLD_FILES+=usr/share/man/man1/gcc.1.gz OLD_FILES+=usr/share/man/man1/gcov.1.gz @@ -2439,19 +2409,21 @@ OLD_FILES+=usr/bin/gcov OLD_FILES+=usr/share/man/man1/gcov.1.gz .endif -.if ${MK_GDB} == no +.if ${MK_GDB} == no || ${MK_GDB_LIBEXEC} == yes OLD_FILES+=usr/bin/gdb OLD_FILES+=usr/bin/gdbserver OLD_FILES+=usr/bin/gdbtui OLD_FILES+=usr/bin/kgdb -OLD_FILES+=usr/share/info/gdb.info.gz -OLD_FILES+=usr/share/info/gdbint.info.gz -OLD_FILES+=usr/share/info/stabs.info.gz OLD_FILES+=usr/share/man/man1/gdb.1.gz OLD_FILES+=usr/share/man/man1/gdbserver.1.gz OLD_FILES+=usr/share/man/man1/kgdb.1.gz .endif +.if ${MK_GDB} == no || ${MK_GDB_LIBEXEC} == no +OLD_FILES+=usr/libexec/gdb +OLD_FILES+=usr/libexec/kgdb +.endif + .if ${MK_GPIO} == no OLD_FILES+=usr/include/libgpio.h OLD_FILES+=usr/lib/libgpio.a @@ -2929,7 +2901,6 @@ OLD_FILES+=usr/share/groff_font/devutf8/R OLD_FILES+=usr/share/groff_font/devutf8/S OLD_DIRS+=usr/share/groff_font/devutf8 OLD_DIRS+=usr/share/groff_font -OLD_FILES+=usr/share/info/groff.info.gz OLD_FILES+=usr/share/man/man1/addftinfo.1.gz OLD_FILES+=usr/share/man/man1/afmtodit.1.gz OLD_FILES+=usr/share/man/man1/eqn.1.gz @@ -3737,7 +3708,6 @@ OLD_FILES+=usr/libexec/kpasswdd OLD_FILES+=usr/sbin/kstash OLD_FILES+=usr/sbin/ktutil OLD_FILES+=usr/sbin/iprop-log -OLD_FILES+=usr/share/info/heimdal.info.gz OLD_FILES+=usr/share/man/man1/kdestroy.1.gz OLD_FILES+=usr/share/man/man1/kf.1.gz OLD_FILES+=usr/share/man/man1/kinit.1.gz @@ -9405,7 +9375,6 @@ OLD_FILES+=usr/share/man/man4/usb_quirk.4.gz OLD_FILES+=usr/share/man/man4/usb_template.4.gz OLD_FILES+=usr/share/man/man4/usfs.4.gz OLD_FILES+=usr/share/man/man4/uslcom.4.gz -OLD_FILES+=usr/share/man/man4/utopia.4.gz OLD_FILES+=usr/share/man/man4/uvisor.4.gz OLD_FILES+=usr/share/man/man4/uvscom.4.gz OLD_FILES+=usr/share/man/man4/zyd.4.gz diff --git a/tools/build/options/WITHOUT_GDB_LIBEXEC b/tools/build/options/WITHOUT_GDB_LIBEXEC new file mode 100644 index 000000000000..4fbe30cb846e --- /dev/null +++ b/tools/build/options/WITHOUT_GDB_LIBEXEC @@ -0,0 +1,5 @@ +.\" $FreeBSD$ +Set to install +.Xr gdb 1 +into +.Pa /usr/bin . diff --git a/tools/build/options/WITH_GDB_LIBEXEC b/tools/build/options/WITH_GDB_LIBEXEC new file mode 100644 index 000000000000..7ba0bf1d9508 --- /dev/null +++ b/tools/build/options/WITH_GDB_LIBEXEC @@ -0,0 +1,10 @@ +.\" $FreeBSD$ +Set to install +.Xr gdb 1 +into +.Pa /usr/libexec . +This permits +.Xr gdb 1 +to be used as a fallback for +.Xr crashinfo 8 +if a newer version is not installed. diff --git a/tools/regression/geom_gpt/Makefile b/tools/regression/geom_gpt/Makefile new file mode 100644 index 000000000000..92d1f020c916 --- /dev/null +++ b/tools/regression/geom_gpt/Makefile @@ -0,0 +1,10 @@ +# $FreeBSD$ + +PROG= gctl_test_helper +MAN= + +LIBADD+= geom + +WARNS?= 6 + +.include <bsd.prog.mk> diff --git a/tools/regression/geom_gpt/gctl.t b/tools/regression/geom_gpt/gctl_test.t index f99e6d8586fb..38469843c7b9 100644 --- a/tools/regression/geom_gpt/gctl.t +++ b/tools/regression/geom_gpt/gctl_test.t @@ -1,4 +1,4 @@ -#!/usr/bin/env perl -w +#!/usr/bin/env perl # # Copyright (c) 2005, 2006 Marcel Moolenaar # All rights reserved. @@ -26,13 +26,13 @@ # # $FreeBSD$ -my $srcdir = `dirname $0`; -chomp $srcdir; +use strict; +use warnings; + +use File::Basename; -my $cmd = "/tmp/gctl-$$"; -my $out = "$cmd.out"; my $disk = "/tmp/disk-$$"; -my $mntpt = "/tmp/mount-$$"; +my $mntpt_prefix = "/tmp/mount-$$"; my %steps = ( "000" => "gctl", @@ -70,9 +70,9 @@ my %steps = ( "054" => "conf", "060" => "gctl verb=add geom=%dev% type=516e7cb6-6ecf-11d6-8ff8-00022d09712b start=34 end=546 entry:8=1", "061" => "mount %dev%p1", - "062" => "gctl verb=remove geom=%dev% entry=1", + "062" => "gctl verb=delete geom=%dev% entry=1", "063" => "umount %dev%p1", - "064" => "gctl verb=remove geom=%dev% entry=1", + "064" => "gctl verb=delete geom=%dev% entry=1", "065" => "conf", "100" => "mdcfg destroy", "110" => "mdcfg create corrupted", @@ -132,20 +132,23 @@ if (exists $ENV{'TEST_VERBOSE'}) { } # Compile the driver... -my $st = system("cc -o $cmd -g $srcdir/test.c -lgeom"); +my $st = system("make obj && make all"); if ($st != 0) { print "1..0 # SKIP error compiling test.c\n"; exit 0; } +chomp(my $cmd = `make '-V\${.OBJDIR}/\${PROG}'`); + +my $out = basename($cmd) . ".out"; # Make sure we have permission to use gctl... if (`$cmd` =~ "^FAIL Permission denied") { - print "1..0 # SKIP not enough permission\n"; + print "1..0 # SKIP insufficient permissions\n"; unlink $cmd; exit 0; } -$count = keys (%steps); +my $count = keys (%steps); print "1..$count\n"; my $nr = 1; @@ -158,29 +161,43 @@ foreach my $key (sort keys %steps) { $res =~ s/%dev%/$dev/g; if ($action =~ "^gctl") { + my $errmsg = ""; system("$cmd $verbose $args | tee $out 2>&1"); - $st = `tail -1 $out`; - if ($st =~ "^$res") { - print "ok $nr \# gctl($key)\n"; - } else { - print "not ok $nr \# gctl($key) - $st\n"; + chomp($st = `tail -1 $out`); + if ($st ne $res) { + $errmsg = "\"$st\" (actual) != \"$res\" (expected)\n"; } + printf("%sok $nr \# gctl($key)%s\n", + ($errmsg eq "" ? "" : "not "), + ($errmsg eq "" ? "" : " - $errmsg")); unlink $out; } elsif ($action =~ "^mdcfg") { + my $errmsg = ""; if ($args =~ "^create") { - system("dd if=/dev/zero of=$disk count=1024 2>&1"); - if ($args =~ "corrupted") { - system("gpt create -p $disk"); + # NOTE: `count=1024` affects $key => {"025" "054", "065"}. + if (system("dd if=/dev/zero of=$disk count=1024 2>&1") == 0) { + chomp($dev = `mdconfig -a -t vnode -f $disk`); + if ($? == 0) { + if (system("gpart create -s GPT $dev") != 0) { + $errmsg = "gpart create failed"; + } + } else { + $errmsg = "mdconfig -a failed"; + } + } else { + $errmsg = "dd failed"; } - $dev = `mdconfig -a -t vnode -f $disk`; - chomp $dev; } elsif ($args =~ "^destroy") { $dev =~ s/md/-u /g; - system("mdconfig -d $dev"); + if (system("mdconfig -d $dev") != 0) { + $errmsg = "mdconfig -d failed"; + } unlink $disk; $dev = "n/a"; } - print "ok $nr \# mdcfg($key)\n"; + printf("%sok $nr # mdcfg($key)%s\n", + ($errmsg eq "" ? "" : "not "), + ($errmsg eq "" ? "" : " - $errmsg")); } elsif ($action =~ "^conf") { system("sysctl -b kern.geom.conftxt | grep -a $dev | sed -e s:$disk:DISK:g -e s:$dev:DEV:g | sort | md5 -p | tee $out 2>&1"); $st = `tail -1 $out`; @@ -191,17 +208,23 @@ foreach my $key (sort keys %steps) { } unlink $out; } elsif ($action =~ "^mount") { - system("mkdir $mntpt-$args"); - system("newfs $args"); - system("mount -t ufs /dev/$args $mntpt-$args"); - print "ok $nr \# mount($key)\n"; + my $errmsg = ""; + mkdir("$mntpt_prefix-$args"); + if (system("newfs /dev/$args") == 0) { + if (system("mount /dev/$args $mntpt_prefix-$args") != 0) { + $errmsg = "mount failed"; + } + } else { + $errmsg = "newfs failed"; + } + printf("%sok $nr # mount($key)%s\n", + ($errmsg eq "" ? "" : "not "), + ($errmsg eq "" ? "" : " - $errmsg")); } elsif ($action =~ "^umount") { - system("umount $mntpt-$args"); - system("rmdir $mntpt-$args"); - print "ok $nr \# umount($key)\n"; + system("umount $mntpt_prefix-$args"); + system("rmdir $mntpt_prefix-$args"); + print "ok $nr \# umount($key)\n"; } $nr += 1; } - -unlink $cmd; exit 0; diff --git a/tools/regression/geom_gpt/test.c b/tools/regression/geom_gpt/gctl_test_helper.c index d750d30e8d55..48440d037a9f 100644 --- a/tools/regression/geom_gpt/test.c +++ b/tools/regression/geom_gpt/gctl_test_helper.c @@ -28,13 +28,15 @@ __FBSDID("$FreeBSD$"); #include <sys/param.h> +#include <assert.h> +#include <err.h> #include <errno.h> -#include <libgeom.h> #include <limits.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> +#include <libgeom.h> struct retval { struct retval *retval; @@ -42,11 +44,11 @@ struct retval { char *value; }; -struct retval *retval; -int verbose; +static struct retval *retval; +static int verbose; static void -usage() +usage(void) { fprintf(stdout, "usage: %s [-v] param[:len][=value] ...\n", getprogname()); @@ -105,16 +107,18 @@ parse(char *arg, char **param, char **value, int *len) return (0); } -int main(int argc, char *argv[]) +int +main(int argc, char *argv[]) { struct retval *rv; struct gctl_req *req; char *param, *value; const char *s; - int c, len; + int c, len, parse_retval; req = gctl_get_handle(); - gctl_ro_param(req, "class", -1, "GPT"); + assert(req != NULL); + gctl_ro_param(req, "class", -1, "PART"); while ((c = getopt(argc, argv, "v")) != -1) { switch (c) { @@ -129,10 +133,12 @@ int main(int argc, char *argv[]) } } - while (optind < argc) { - if (!parse(argv[optind++], ¶m, &value, &len)) { + for (; optind < argc; optind++) { + parse_retval = parse(argv[optind], ¶m, &value, &len); + if (parse_retval == 0) { if (len > 0) { rv = malloc(sizeof(struct retval)); + assert(rv != NULL); rv->param = param; rv->value = value; rv->retval = retval; @@ -140,7 +146,9 @@ int main(int argc, char *argv[]) gctl_rw_param(req, param, len, value); } else gctl_ro_param(req, param, -1, value); - } + } else + warnc(parse_retval, "failed to parse argument (%s)", + argv[optind]); } if (verbose) diff --git a/tools/tools/net80211/scripts/setup.wdsmain b/tools/tools/net80211/scripts/setup.wdsmain index 6747b66c33ab..6123d83f73f9 100644 --- a/tools/tools/net80211/scripts/setup.wdsmain +++ b/tools/tools/net80211/scripts/setup.wdsmain @@ -8,6 +8,13 @@ # created). The WDSUP script is invoked for each wds vap that # gets created--to add the vap to a bridge. # +# Notes! +# +# * If the main AP VAP is running with encryption, the plumbed up +# WDS VAP needs to have privacy enabled (wepmode mixed, for example) +# otherwise frames transmitted from the WDS AP to the WDS STA +# will not be encrypted. +# # $FreeBSD$ # PATH=.:$PATH diff --git a/tools/tools/net80211/wlanwds/wlanwds.c b/tools/tools/net80211/wlanwds/wlanwds.c index 1bae345ae41c..177f92a6d2ac 100644 --- a/tools/tools/net80211/wlanwds/wlanwds.c +++ b/tools/tools/net80211/wlanwds/wlanwds.c @@ -96,7 +96,7 @@ static int wds_vap_destroy(const char *ifname); static void usage(const char *progname) { - fprintf(stderr, "usage: %s [-fjtv] [-P pidfile] [-s <set_scriptname>] [ifnet0 ... | any]\n", + fprintf(stderr, "usage: %s [-efjtv] [-P pidfile] [-s <set_scriptname>] [ifnet0 ... | any]\n", progname); exit(-1); } @@ -108,10 +108,14 @@ main(int argc, char *argv[]) const char *pidfile = NULL; int s, c, logmask, bg = 1; char msg[2048]; + int log_stderr = 0; logmask = LOG_UPTO(LOG_INFO); - while ((c = getopt(argc, argv, "fjP:s:tv")) != -1) + while ((c = getopt(argc, argv, "efjP:s:tv")) != -1) switch (c) { + case 'e': + log_stderr = LOG_PERROR; + break; case 'f': bg = 0; break; @@ -155,7 +159,7 @@ main(int argc, char *argv[]) if (bg && daemon(0, 0) < 0) err(EX_OSERR, "daemon"); - openlog("wlanwds", LOG_PID | LOG_CONS, LOG_DAEMON); + openlog("wlanwds", log_stderr | LOG_PID | LOG_CONS, LOG_DAEMON); setlogmask(logmask); for (;;) { diff --git a/tools/tools/umastat/umastat.c b/tools/tools/umastat/umastat.c index 4fdc391d36e4..16a0b9d2c97c 100644 --- a/tools/tools/umastat/umastat.c +++ b/tools/tools/umastat/umastat.c @@ -129,7 +129,6 @@ static const struct flaginfo { { UMA_ZONE_VM, "vm" }, { UMA_ZONE_HASH, "hash" }, { UMA_ZONE_SECONDARY, "secondary" }, - { UMA_ZONE_REFCNT, "refcnt" }, { UMA_ZONE_MAXBUCKET, "maxbucket" }, { UMA_ZONE_CACHESPREAD, "cachespread" }, { UMA_ZONE_VTOSLAB, "vtoslab" }, diff --git a/usr.bin/diff/diffreg.c b/usr.bin/diff/diffreg.c index 8f6d7ccd67c4..24196d84be42 100644 --- a/usr.bin/diff/diffreg.c +++ b/usr.bin/diff/diffreg.c @@ -1082,7 +1082,7 @@ change(char *file1, FILE *f1, char *file2, FILE *f2, int a, int b, int c, int d, { static size_t max_context = 64; long curpos; - int i, nc; + int i, nc, f; const char *walk; restart: @@ -1214,9 +1214,10 @@ proceed: if (a <= b && c <= d && diff_format == D_NORMAL) diff_output("---\n"); } + f = 0; if (diff_format != D_GFORMAT) - i = fetch(ixnew, c, d, f2, diff_format == D_NORMAL ? '>' : '\0', 0, *pflags); - if (i != 0 && diff_format == D_EDIT) { + f = fetch(ixnew, c, d, f2, diff_format == D_NORMAL ? '>' : '\0', 0, *pflags); + if (f != 0 && diff_format == D_EDIT) { /* * A non-zero return value for D_EDIT indicates that the * last line printed was a bare dot (".") that has been @@ -1225,10 +1226,10 @@ proceed: * back and restart where we left off. */ diff_output(".\n"); - diff_output("%ds/.//\n", a + i - 1); - b = a + i - 1; + diff_output("%ds/.//\n", a + f - 1); + b = a + f - 1; a = b + 1; - c += i; + c += f; goto restart; } if ((diff_format == D_EDIT || diff_format == D_REVERSE) && c <= d) diff --git a/usr.bin/getaddrinfo/Makefile b/usr.bin/getaddrinfo/Makefile index 6efb164c2f95..ced8c9e725b7 100644 --- a/usr.bin/getaddrinfo/Makefile +++ b/usr.bin/getaddrinfo/Makefile @@ -3,19 +3,15 @@ .include <bsd.own.mk> PROG= getaddrinfo +SRCS= getaddrinfo.c tables.h -CFLAGS+= -I${.CURDIR}/../../lib/libnetbsd -LIBNETBSDDIR= ${.OBJDIR}/../../lib/libnetbsd -LIBNETBSD= ${LIBNETBSDDIR}/libnetbsd.a -DPADD+= ${LIBNETBSD} -LDADD+= ${LIBNETBSD} +CFLAGS+= -I${SRCTOP}/lib/libnetbsd -LIBADD+= util +LIBADD+= netbsd util -SYS_SOCKET_H?= ${.CURDIR}/../../sys/sys/socket.h +SYS_SOCKET_H?= ${SRCTOP}/sys/sys/socket.h -CFLAGS+= -I. -DPSRCS+= tables.h +CFLAGS+= -I${.OBJDIR} CLEANFILES+= tables.h tables.h: tables.awk ${SYS_SOCKET_H} LC_ALL=C awk -f ${.ALLSRC} > ${.TARGET} diff --git a/usr.bin/grep/tests/grep_freebsd_test.sh b/usr.bin/grep/tests/grep_freebsd_test.sh index 9c60ff934bad..fafa23f03b67 100755 --- a/usr.bin/grep/tests/grep_freebsd_test.sh +++ b/usr.bin/grep/tests/grep_freebsd_test.sh @@ -25,11 +25,45 @@ # # $FreeBSD$ +# What grep(1) are we working with? +# - 0 : bsdgrep +# - 1 : gnu grep 2.51 (base) +# - 2 : gnu grep (ports) +GREP_TYPE_BSD=0 +GREP_TYPE_GNU_FREEBSD=1 +GREP_TYPE_GNU=2 +GREP_TYPE_UNKNOWN=3 + +grep_type() +{ + local grep_version=$(grep --version) + + case "$grep_version" in + *"BSD grep"*) + return $GREP_TYPE_BSD + ;; + *"GNU grep"*) + case "$grep_version" in + *2.5.1-FreeBSD*) + return $GREP_TYPE_GNU_FREEBSD + ;; + *) + return $GREP_TYPE_GNU + ;; + esac + ;; + esac + atf_fail "unknown grep type: $grep_version" +} + atf_test_case grep_r_implied grep_r_implied_body() { - (cd "$(atf_get_srcdir)" && grep -r -e "test" < /dev/null) || - atf_skip "Implied working directory is not supported with your version of grep(1)" + grep_type + if [ $? -ne $GREP_TYPE_BSD ]; then + atf_skip "this test only works with bsdgrep(1)" + fi + (cd "$(atf_get_srcdir)" && grep -r --exclude="*.out" -e "test" .) > d_grep_r_implied.out atf_check -s exit:0 -x \ diff --git a/usr.bin/kdump/kdump.c b/usr.bin/kdump/kdump.c index 100fa0443bf6..60898fde8772 100644 --- a/usr.bin/kdump/kdump.c +++ b/usr.bin/kdump/kdump.c @@ -1736,8 +1736,6 @@ ktrsockaddr(struct sockaddr *sa) { /* TODO: Support additional address families - #include <netnatm/natm.h> - struct sockaddr_natm *natm; #include <netsmb/netbios.h> struct sockaddr_nb *nb; */ diff --git a/usr.bin/sed/sed.1 b/usr.bin/sed/sed.1 index 03c70db7f1db..3f36bd0b84af 100644 --- a/usr.bin/sed/sed.1 +++ b/usr.bin/sed/sed.1 @@ -614,7 +614,7 @@ in the file .Pa test.txt , without creating a backup of the file: .Bd -literal -offset indent -sed -i '' -e 's/foo/bar/' test.txt +sed -i '' -e 's/foo/bar/g' test.txt .Ed .Sh SEE ALSO .Xr awk 1 , diff --git a/usr.sbin/bhyve/pci_passthru.c b/usr.sbin/bhyve/pci_passthru.c index 2c5366d51d6b..f314679d912b 100644 --- a/usr.sbin/bhyve/pci_passthru.c +++ b/usr.sbin/bhyve/pci_passthru.c @@ -703,6 +703,7 @@ passthru_init(struct vmctx *ctx, struct pci_devinst *pi, char *opts) #ifndef WITHOUT_CAPSICUM cap_rights_clear(&rights, CAP_IOCTL); + cap_rights_set(&rights, CAP_MMAP_RW); if (cap_rights_limit(memfd, &rights) == -1 && errno != ENOSYS) errx(EX_OSERR, "Unable to apply rights for sandbox"); #endif diff --git a/usr.sbin/bsnmpd/modules/Makefile b/usr.sbin/bsnmpd/modules/Makefile index 60c253b71875..6640bb62d112 100644 --- a/usr.sbin/bsnmpd/modules/Makefile +++ b/usr.sbin/bsnmpd/modules/Makefile @@ -4,11 +4,7 @@ .PATH: ${SRCTOP}/contrib/bsnmp/snmpd -.if ${MK_ATM} != "no" -_snmp_atm= snmp_atm -.endif - -SUBDIR= ${_snmp_atm} \ +SUBDIR= \ snmp_bridge \ snmp_hostres \ snmp_lm75 \ diff --git a/usr.sbin/bsnmpd/modules/snmp_atm/BEGEMOT-ATM-FREEBSD-MIB.txt b/usr.sbin/bsnmpd/modules/snmp_atm/BEGEMOT-ATM-FREEBSD-MIB.txt deleted file mode 100644 index f2887418e212..000000000000 --- a/usr.sbin/bsnmpd/modules/snmp_atm/BEGEMOT-ATM-FREEBSD-MIB.txt +++ /dev/null @@ -1,101 +0,0 @@ --- --- Copyright (c) 2004 --- Hartmut Brandt. --- All rights reserved. --- --- Author: Hartmut Brandt <harti@freebsd.org> --- --- Redistribution and use in source and binary forms, with or without --- modification, are permitted provided that the following conditions --- are met: --- 1. Redistributions of source code must retain the above copyright --- notice, this list of conditions and the following disclaimer. --- 2. Redistributions in binary form must reproduce the above copyright --- notice, this list of conditions and the following disclaimer in the --- documentation and/or other materials provided with the distribution. --- --- THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND --- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE --- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE --- ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE --- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL --- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS --- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) --- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT --- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY --- OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF --- SUCH DAMAGE. --- --- $FreeBSD$ --- --- Private Begemot MIB for ATM interfaces on FreeBSD --- -BEGEMOT-ATM-FREEBSD-MIB DEFINITIONS ::= BEGIN - -IMPORTS - MODULE-IDENTITY, OBJECT-TYPE - FROM SNMPv2-SMI - NgNodeIdOrZero - FROM BEGEMOT-NETGRAPH-MIB - begemotAtmSysGroup, begemotAtmIfEntry - FROM BEGEMOT-ATM-MIB; - -begemotAtmFreeBSDGroup MODULE-IDENTITY - LAST-UPDATED "200408060000Z" - ORGANIZATION "German Aerospace Centre" - CONTACT-INFO - " Hartmut Brandt - - Postal: German Aerospace Centre (DLR) - Institute of Communications and Navigation - 82234 Wessling - Germany - - Fax: +49 8153 28 2844 - - E-mail: harti@freebsd.org" - DESCRIPTION - "The FreeBSD specific Begemot MIB for ATM interfaces." - REVISION "200408060000Z" - DESCRIPTION - "Initial revision." - ::= { begemotAtmSysGroup 1 } - --- Netgraph -begemotAtmNgGroup OBJECT IDENTIFIER ::= { begemotAtmFreeBSDGroup 1 } - --- --- Interfaces table --- -begemotAtmNgIfTable OBJECT-TYPE - SYNTAX SEQUENCE OF BegemotAtmNgIfEntry - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "This table contains an entry for each hardware ATM - interface. The table is indexed by the interface index." - ::= { begemotAtmNgGroup 1 } - -begemotAtmNgIfEntry OBJECT-TYPE - SYNTAX BegemotAtmNgIfEntry - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "This is a table entry describing one ATM hardware interface." - AUGMENTS { begemotAtmIfEntry } - ::= { begemotAtmNgIfTable 1 } - -BegemotAtmNgIfEntry ::= SEQUENCE { - begemotAtmNgIfNodeId NgNodeIdOrZero -} - -begemotAtmNgIfNodeId OBJECT-TYPE - SYNTAX NgNodeIdOrZero - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The netgraph node id of the interface. If there is no - node corresponding to the interface, this is 0." - ::= { begemotAtmNgIfEntry 1 } - -END diff --git a/usr.sbin/bsnmpd/modules/snmp_atm/Makefile b/usr.sbin/bsnmpd/modules/snmp_atm/Makefile deleted file mode 100644 index 82bd325dcaa3..000000000000 --- a/usr.sbin/bsnmpd/modules/snmp_atm/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -# $FreeBSD$ -# -# Author: Harti Brandt <harti@freebsd.org> - -CONTRIB= ${SRCTOP}/contrib/ngatm -.PATH: ${CONTRIB}/snmp_atm - -MOD= atm -SRCS= snmp_atm.c atm_sys.c -XSYM= begemotAtm -MAN= snmp_atm.3 - -BMIBS= BEGEMOT-ATM.txt BEGEMOT-ATM-FREEBSD-MIB.txt -DEFS= ${MOD}_tree.def atm_freebsd.def -INCS= snmp_${MOD}.h - -EXTRAMIBDEFS= atm_freebsd.def - -CFLAGS+= -I${CONTRIB}/snmp_atm - -.include <bsd.snmpmod.mk> diff --git a/usr.sbin/bsnmpd/modules/snmp_atm/Makefile.depend b/usr.sbin/bsnmpd/modules/snmp_atm/Makefile.depend deleted file mode 100644 index 0d3689874fa8..000000000000 --- a/usr.sbin/bsnmpd/modules/snmp_atm/Makefile.depend +++ /dev/null @@ -1,22 +0,0 @@ -# $FreeBSD$ -# Autogenerated - do NOT edit! - -DIRDEPS = \ - gnu/lib/csu \ - gnu/lib/libgcc \ - include \ - include/xlocale \ - lib/${CSU_DIR} \ - lib/libbsnmp/libbsnmp \ - lib/libc \ - lib/libcompiler_rt \ - usr.sbin/bsnmpd/modules \ - usr.sbin/bsnmpd/modules/snmp_mibII \ - usr.sbin/bsnmpd/modules/snmp_netgraph \ - - -.include <dirdeps.mk> - -.if ${DEP_RELDIR} == ${_DEP_RELDIR} -# local dependencies - needed for -jN in clean tree -.endif diff --git a/usr.sbin/bsnmpd/modules/snmp_atm/atm_freebsd.def b/usr.sbin/bsnmpd/modules/snmp_atm/atm_freebsd.def deleted file mode 100644 index 6cc61d012184..000000000000 --- a/usr.sbin/bsnmpd/modules/snmp_atm/atm_freebsd.def +++ /dev/null @@ -1,56 +0,0 @@ -# -# Copyright (c) 2004 -# Hartmut Brandt. -# All rights reserved. -# -# Author: Hartmut Brandt <harti@freebsd.org> -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND -# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE -# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -# SUCH DAMAGE. -# -# $FreeBSD$ -# -# SNMP module for ATM hardware interfaces. -# -# $Begemot: libunimsg/snmp_atm/atm_tree.def,v 1.2 2004/08/05 07:14:22 brandt Exp $ -# -(1 internet - (4 private - (1 enterprises - (12325 fokus - (1 begemot - (101 begemotAtm - (1 begemotAtmObjects - (4 begemotAtmSysGroup - (1 begemotAtmFreeBSDGroup - (1 begemotAtmNgGroup - (1 begemotAtmNgIfTable - (1 begemotAtmNgIfEntry : INTEGER op_atmif_ng - (1 begemotAtmIfNodeId UNSIGNED32 GET) - )) - ) - ) - ) - ) - )) - ) - ) -)) diff --git a/usr.sbin/bsnmpd/modules/snmp_atm/atm_sys.c b/usr.sbin/bsnmpd/modules/snmp_atm/atm_sys.c deleted file mode 100644 index c0699f7c2b3d..000000000000 --- a/usr.sbin/bsnmpd/modules/snmp_atm/atm_sys.c +++ /dev/null @@ -1,301 +0,0 @@ -/* - * Copyright (c) 2001-2002 - * Fraunhofer Institute for Open Communication Systems (FhG Fokus). - * All rights reserved. - * Copyright (c) 2003-2004 - * Hartmut Brandt. - * All rights reserved. - * - * Author: Hartmut Brandt <harti@freebsd.org> - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - * - * SNMP module for ATM hardware interfaces - FreeBSD/Ng specific part. - */ - -#include "atm.h" -#include "atm_tree.h" -#include "atm_oid.h" - -#include <stdlib.h> -#include <syslog.h> -#include <string.h> - -#include <net/if_atm.h> - -#include <bsnmp/snmp_netgraph.h> -#include <netgraph/ng_message.h> -#include <netgraph/atm/ng_atm.h> - -static const struct hwinfo { - const char *device; - const char *vendor; -} hwinfo[] = { - ATM_DEVICE_NAMES -}; - -struct atmif_sys { - ng_ID_t atm_node; - void *regc; /* cookie registration */ -}; - -/* - * Find the interface for a given node - */ -struct atmif * -atm_node2if(u_int node) -{ - struct atmif_priv *aif; - - if (node != 0) - TAILQ_FOREACH(aif, &atmif_list, link) - if (aif->sys->atm_node == node) - return (&aif->pub); - return (NULL); -} - -u_int -atm_if2node(struct atmif *pub) -{ - struct atmif_priv *aif = (struct atmif_priv *)pub; - - return (aif->sys->atm_node); -} - -/* - * Destroy system dependend stuff. - */ -void -atmif_sys_destroy(struct atmif_priv *aif) -{ - - ng_unregister_cookie(aif->sys->regc); - free(aif->sys); - free(aif->pub.mib); -} - -/* - * Handle a message from the ATM node - */ -static void -handle_atm_message(const struct ng_mesg *mesg, const char *path __unused, - ng_ID_t node, void *uarg) -{ - struct atmif_priv *aif = uarg; - enum atmif_carrier_state ost; - - switch (mesg->header.cmd) { - - case NGM_ATM_IF_CHANGE: - { - const struct ngm_atm_if_change *arg; - - ost = aif->pub.carrier; - if (mesg->header.arglen != sizeof(*arg)) { - syslog(LOG_ERR, "ATM_IF_CHANGE: wrong size"); - atmif_check_carrier(aif); - return; - } - arg = (const struct ngm_atm_if_change *) - (const void *)mesg->data; - - if (arg->carrier) - aif->pub.carrier = ATMIF_CARRIER_ON; - else - aif->pub.carrier = ATMIF_CARRIER_OFF; - - if (ost != aif->pub.carrier) - atmif_send_notification(aif, ATMIF_NOTIFY_CARRIER, - (uintptr_t)ost); - return; - } - - case NGM_ATM_VCC_CHANGE: - { - const struct ngm_atm_vcc_change *arg; - - if (mesg->header.arglen != sizeof(*arg)) { - syslog(LOG_ERR, "ATM_VCC_CHANGE: wrong size"); - return; - } - arg = (const struct ngm_atm_vcc_change *) - (const void *)mesg->data; - atmif_send_notification(aif, ATMIF_NOTIFY_VCC, - (uintptr_t)(((arg->vpi & 0xff) << 24) | - ((arg->vci & 0xffff) << 8) | (arg->state & 1))); - return; - } - } - syslog(LOG_WARNING, "spurious message %u from node [%x]", - mesg->header.cmd, node); -} - -/* - * Attach to an ATM interface - */ -int -atmif_sys_attach_if(struct atmif_priv *aif) -{ - struct ng_mesg *resp, *resp1; - struct namelist *list; - u_int i; - - if ((aif->sys = malloc(sizeof(*aif->sys))) == NULL) { - syslog(LOG_CRIT, "out of memory"); - return (-1); - } - memset(aif->sys, 0, sizeof(*aif->sys)); - - if ((aif->pub.mib = malloc(sizeof(*aif->pub.mib))) == NULL) { - free(aif->sys); - syslog(LOG_CRIT, "out of memory"); - return (-1); - } - - atmif_sys_fill_mib(aif); - - /* - * Get ATM node Id. Must do it the hard way by scanning all nodes - * because the name may be wrong. - */ - if ((resp = ng_dialog_id(snmp_node, NGM_GENERIC_COOKIE, NGM_LISTNODES, - NULL, 0)) == NULL) { - syslog(LOG_ERR, "cannot fetch node list: %m"); - free(aif->sys); - return (-1); - } - list = (struct namelist *)(void *)resp->data; - - for (i = 0; i < list->numnames; i++) { - if (strcmp(list->nodeinfo[i].type, NG_ATM_NODE_TYPE) != 0) - continue; - if ((resp1 = ng_dialog_id(list->nodeinfo[i].id, - NGM_ATM_COOKIE, NGM_ATM_GET_IFNAME, NULL, 0)) == NULL) - continue; - if (strcmp(resp1->data, aif->pub.ifp->name) == 0) { - free(resp1); - break; - } - free(resp1); - } - if (i == list->numnames) - aif->sys->atm_node = 0; - else - aif->sys->atm_node = list->nodeinfo[i].id; - - free(resp); - - if ((aif->sys->regc = ng_register_cookie(module, NGM_ATM_COOKIE, - aif->sys->atm_node, handle_atm_message, aif)) == NULL) { - syslog(LOG_ERR, "cannot register cookie: %m"); - free(aif->sys); - return (-1); - } - return (0); -} - -/* - * Table of all ATM interfaces - Ng part - */ -int -op_atmif_ng(struct snmp_context *ctx __unused, struct snmp_value *value, - u_int sub, u_int vindex __unused, enum snmp_op op) -{ - struct atmif_priv *aif; - int err; - - if ((err = atmif_get_aif(value, sub, op, &aif)) != SNMP_ERR_NOERROR) - return (err); - - if (op == SNMP_OP_SET) { - switch (value->var.subs[sub - 1]) { - - default: - return (SNMP_ERR_NOT_WRITEABLE); - } - } - - switch (value->var.subs[sub - 1]) { - - case LEAF_begemotAtmIfNodeId: - value->v.uint32 = aif->sys->atm_node; - return (SNMP_ERR_NOERROR); - } - abort(); -} - -/* - * Get vendor string - */ -int -atm_sys_get_hw_vendor(struct atmif_priv *aif, struct snmp_value *value) -{ - - if (aif->pub.mib->device >= sizeof(hwinfo) / sizeof(hwinfo[0])) - return (string_get(value, "unknown", -1)); - return (string_get(value, hwinfo[aif->pub.mib->device].vendor, -1)); -} - -/* - * Get device string - */ -int -atm_sys_get_hw_device(struct atmif_priv *aif, struct snmp_value *value) -{ - - if (aif->pub.mib->device >= sizeof(hwinfo) / sizeof(hwinfo[0])) - return (string_get(value, "unknown", -1)); - return (string_get(value, hwinfo[aif->pub.mib->device].device, -1)); -} - -/* - * Extract the ATM MIB from the interface's private MIB - */ -void -atmif_sys_fill_mib(struct atmif_priv *aif) -{ - struct ifatm_mib *mib; - - if (aif->pub.ifp->specmiblen != sizeof(struct ifatm_mib)) { - syslog(LOG_ERR, "atmif MIB has wrong size %zu", - aif->pub.ifp->specmiblen); - memset(aif->pub.mib, 0, sizeof(*aif->pub.mib)); - aif->pub.mib->version = 0; - return; - } - mib = (struct ifatm_mib *)aif->pub.ifp->specmib; - - aif->pub.mib->device = mib->device; - aif->pub.mib->serial = mib->serial; - aif->pub.mib->hw_version = mib->hw_version; - aif->pub.mib->sw_version = mib->sw_version; - aif->pub.mib->media = mib->media; - - memcpy(aif->pub.mib->esi, mib->esi, 6); - aif->pub.mib->pcr = mib->pcr; - aif->pub.mib->vpi_bits = mib->vpi_bits; - aif->pub.mib->vci_bits = mib->vci_bits; - aif->pub.mib->max_vpcs = mib->max_vpcs; - aif->pub.mib->max_vccs = mib->max_vccs; -} diff --git a/usr.sbin/crashinfo/crashinfo.sh b/usr.sbin/crashinfo/crashinfo.sh index 24bd180d21cd..2326630cdef2 100755 --- a/usr.sbin/crashinfo/crashinfo.sh +++ b/usr.sbin/crashinfo/crashinfo.sh @@ -35,6 +35,19 @@ usage() exit 1 } +# Find a gdb binary to use and save the value in GDB. +find_gdb() +{ + local binary + + for binary in /usr/local/bin/gdb /usr/libexec/gdb /usr/bin/gdb; do + if [ -x ${binary} ]; then + GDB=${binary} + return + fi + done +} + # Run a single gdb command against a kernel file in batch mode. # The kernel file is specified as the first argument and the command # is given in the remaining arguments. @@ -44,10 +57,10 @@ gdb_command() k=$1 ; shift - if [ -x /usr/local/bin/gdb ]; then - /usr/local/bin/gdb -batch -ex "$@" $k + if [ ${GDB} = /usr/local/bin/gdb ]; then + ${GDB} -batch -ex "$@" $k else - echo -e "$@" | /usr/bin/gdb -x /dev/stdin -batch $k + echo -e "$@" | ${GDB} -x /dev/stdin -batch $k fi } @@ -140,6 +153,12 @@ INFO=$CRASHDIR/info.$DUMPNR FILE=$CRASHDIR/core.txt.$DUMPNR HOSTNAME=`hostname` +find_gdb +if [ -z "$GDB" ]; then + echo "Unable to find a kernel debugger." + exit 1 +fi + if [ ! -e $VMCORE ]; then echo "$VMCORE not found" exit 1 @@ -189,11 +208,7 @@ file=`mktemp /tmp/crashinfo.XXXXXX` if [ $? -eq 0 ]; then echo "bt" >> $file echo "quit" >> $file - if [ -x /usr/local/bin/kgdb ]; then - /usr/local/bin/kgdb $KERNEL $VMCORE < $file - else - kgdb $KERNEL $VMCORE < $file - fi + ${GDB%gdb}kgdb $KERNEL $VMCORE < $file rm -f $file echo fi diff --git a/usr.sbin/fstyp/fstyp.8 b/usr.sbin/fstyp/fstyp.8 index 500d0af1dfef..cb8f97f85588 100644 --- a/usr.sbin/fstyp/fstyp.8 +++ b/usr.sbin/fstyp/fstyp.8 @@ -27,7 +27,7 @@ .\" .\" $FreeBSD$ .\" -.Dd January 13, 2017 +.Dd April 26, 2017 .Dt FSTYP 8 .Os .Sh NAME @@ -43,7 +43,7 @@ The .Nm utility is used to determine the filesystem type on a given device. -It can recognize ISO-9660, Ext2, FAT, NTFS, and UFS filesystems. +It can recognize ISO-9660, exFAT, Ext2, FAT, NTFS, and UFS filesystems. When the .Fl u flag is specified, @@ -51,7 +51,7 @@ flag is specified, also recognizes certain additional metadata formats that cannot be handled using .Xr mount 8 , -such as exFAT filesystems, +such as .Xr geli 8 providers, and ZFS pools. diff --git a/usr.sbin/fstyp/fstyp.c b/usr.sbin/fstyp/fstyp.c index 76ec7948ca0d..4678a5e3e959 100644 --- a/usr.sbin/fstyp/fstyp.c +++ b/usr.sbin/fstyp/fstyp.c @@ -57,7 +57,7 @@ static struct { bool unmountable; } fstypes[] = { { "cd9660", &fstyp_cd9660, false }, - { "exfat", &fstyp_exfat, true }, + { "exfat", &fstyp_exfat, false }, { "ext2fs", &fstyp_ext2fs, false }, { "geli", &fstyp_geli, true }, { "msdosfs", &fstyp_msdosfs, false }, diff --git a/usr.sbin/nfsuserd/nfsuserd.c b/usr.sbin/nfsuserd/nfsuserd.c index 293da7115a50..413e5cedbb9b 100644 --- a/usr.sbin/nfsuserd/nfsuserd.c +++ b/usr.sbin/nfsuserd/nfsuserd.c @@ -88,9 +88,9 @@ struct info { u_char *dnsname = "default.domain"; u_char *defaultuser = "nobody"; -uid_t defaultuid = (uid_t)32767; +uid_t defaultuid = 65534; u_char *defaultgroup = "nogroup"; -gid_t defaultgid = (gid_t)32767; +gid_t defaultgid = 65533; int verbose = 0, im_a_slave = 0, nfsuserdcnt = -1, forcestart = 0; int defusertimeout = DEFUSERTIMEOUT, manage_gids = 0; pid_t slaves[MAXNFSUSERD]; diff --git a/usr.sbin/ntp/sntp/Makefile b/usr.sbin/ntp/sntp/Makefile index 5ca3daaa2d5f..11a9a5af8e9d 100644 --- a/usr.sbin/ntp/sntp/Makefile +++ b/usr.sbin/ntp/sntp/Makefile @@ -5,7 +5,7 @@ .PATH: ${SRCTOP}/contrib/ntp/sntp PROG= sntp -MK_MAN= no +MAN= SRCS= crypto.c kod_management.c log.c main.c networking.c \ sntp-opts.c sntp.c utilities.c diff --git a/usr.sbin/pmcstat/pmcpl_calltree.c b/usr.sbin/pmcstat/pmcpl_calltree.c index edfe85a57966..0f95ac172668 100644 --- a/usr.sbin/pmcstat/pmcpl_calltree.c +++ b/usr.sbin/pmcstat/pmcpl_calltree.c @@ -185,7 +185,7 @@ pmcpl_ct_samples_free(struct pmcpl_ct_sample *samples) static void pmcpl_ct_samples_grow(struct pmcpl_ct_sample *samples) { - int npmcs; + unsigned int npmcs; /* Enough storage. */ if (pmcstat_npmcs <= samples->npmcs) @@ -193,7 +193,7 @@ pmcpl_ct_samples_grow(struct pmcpl_ct_sample *samples) npmcs = samples->npmcs + max(pmcstat_npmcs - samples->npmcs, PMCPL_CT_GROWSIZE); - samples->sb = realloc(samples->sb, npmcs * sizeof(unsigned)); + samples->sb = reallocarray(samples->sb, npmcs, sizeof(unsigned)); if (samples->sb == NULL) errx(EX_SOFTWARE, "ERROR: out of memory"); bzero((char *)samples->sb + samples->npmcs * sizeof(unsigned), @@ -226,13 +226,13 @@ pmcpl_ct_samples_root(struct pmcpl_ct_sample *samples) static void pmcpl_ct_arc_grow(int cursize, int *maxsize, struct pmcpl_ct_arc **items) { - int nmaxsize; + unsigned int nmaxsize; if (cursize < *maxsize) return; nmaxsize = *maxsize + max(cursize + 1 - *maxsize, PMCPL_CT_GROWSIZE); - *items = realloc(*items, nmaxsize * sizeof(struct pmcpl_ct_arc)); + *items = reallocarray(*items, nmaxsize, sizeof(struct pmcpl_ct_arc)); if (*items == NULL) errx(EX_SOFTWARE, "ERROR: out of memory"); bzero((char *)*items + *maxsize * sizeof(struct pmcpl_ct_arc), @@ -247,13 +247,13 @@ pmcpl_ct_arc_grow(int cursize, int *maxsize, struct pmcpl_ct_arc **items) static void pmcpl_ct_instr_grow(int cursize, int *maxsize, struct pmcpl_ct_instr **items) { - int nmaxsize; + unsigned int nmaxsize; if (cursize < *maxsize) return; nmaxsize = *maxsize + max(cursize + 1 - *maxsize, PMCPL_CT_GROWSIZE); - *items = realloc(*items, nmaxsize * sizeof(struct pmcpl_ct_instr)); + *items = reallocarray(*items, nmaxsize, sizeof(struct pmcpl_ct_instr)); if (*items == NULL) errx(EX_SOFTWARE, "ERROR: out of memory"); bzero((char *)*items + *maxsize * sizeof(struct pmcpl_ct_instr), diff --git a/usr.sbin/pmcstat/pmcstat_log.c b/usr.sbin/pmcstat/pmcstat_log.c index 26f3615e9b7c..aaca29220c12 100644 --- a/usr.sbin/pmcstat/pmcstat_log.c +++ b/usr.sbin/pmcstat/pmcstat_log.c @@ -535,8 +535,8 @@ pmcstat_image_add_symbols(struct pmcstat_image *image, Elf *e, * Allocate space for the new entries. */ firsttime = image->pi_symbols == NULL; - symptr = realloc(image->pi_symbols, - sizeof(*symptr) * (image->pi_symcount + nfuncsyms)); + symptr = reallocarray(image->pi_symbols, + image->pi_symcount + nfuncsyms, sizeof(*symptr)); if (symptr == image->pi_symbols) /* realloc() failed. */ return; image->pi_symbols = symptr; @@ -587,8 +587,8 @@ pmcstat_image_add_symbols(struct pmcstat_image *image, Elf *e, * Return space to the system if there were duplicates. */ if (newsyms < nfuncsyms) - image->pi_symbols = realloc(image->pi_symbols, - sizeof(*symptr) * image->pi_symcount); + image->pi_symbols = reallocarray(image->pi_symbols, + image->pi_symcount, sizeof(*symptr)); /* * Keep the list of symbols sorted. diff --git a/usr.sbin/ppp/Makefile b/usr.sbin/ppp/Makefile index 540eb45f4522..29e6f294056c 100644 --- a/usr.sbin/ppp/Makefile +++ b/usr.sbin/ppp/Makefile @@ -13,7 +13,6 @@ SRCS= acf.c arp.c async.c auth.c bundle.c cbcp.c ccp.c chap.c chat.c \ WARNS?= 3 .if defined(RELEASE_CRUNCH) CFLAGS+=-DRELEASE_CRUNCH -PPP_NO_ATM= PPP_NO_DES= PPP_NO_KLDLOAD= PPP_NO_NAT= @@ -25,9 +24,6 @@ CONFS= ppp.conf CONFSDIR= ${CONFDIR}/ppp CONFSMODE= 600 -.if ${MK_ATM} == "no" -PPP_NO_ATM= -.endif .if ${MK_NETGRAPH} == "no" PPP_NO_NETGRAPH= .endif @@ -68,12 +64,6 @@ SRCS+= nat_cmd.c LIBADD+= alias .endif -.if defined(PPP_NO_ATM) -CFLAGS+=-DNOATM -.else -SRCS+= atm.c -.endif - .if defined(PPP_NO_SUID) CFLAGS+=-DNOSUID .else diff --git a/usr.sbin/ppp/atm.c b/usr.sbin/ppp/atm.c deleted file mode 100644 index 6e0ce754c6f7..000000000000 --- a/usr.sbin/ppp/atm.c +++ /dev/null @@ -1,237 +0,0 @@ -/*- - * Copyright (c) 2000 Jakob Stoklund Olesen <stoklund@taxidriver.dk> - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - */ - -#include <sys/types.h> -#include <sys/socket.h> -#include <net/if.h> -#include <netnatm/natm.h> - -#include <errno.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <sysexits.h> -#include <sys/uio.h> -#include <termios.h> -#include <unistd.h> - -#include "layer.h" -#include "defs.h" -#include "mbuf.h" -#include "log.h" -#include "timer.h" -#include "lqr.h" -#include "hdlc.h" -#include "throughput.h" -#include "fsm.h" -#include "lcp.h" -#include "ccp.h" -#include "link.h" -#include "async.h" -#include "descriptor.h" -#include "physical.h" -#include "main.h" -#include "atm.h" - -/* String identifying PPPoA */ -#define PPPOA "PPPoA" -#define PPPOA_LEN (sizeof(PPPOA) - 1) - -struct atmdevice { - struct device dev; /* What struct physical knows about */ -}; - -#define device2atm(d) ((d)->type == ATM_DEVICE ? (struct atmdevice *)d : NULL) - -unsigned -atm_DeviceSize(void) -{ - return sizeof(struct atmdevice); -} - -static ssize_t -atm_Sendto(struct physical *p, const void *v, size_t n) -{ - ssize_t ret = write(p->fd, v, n); - if (ret < 0) { - log_Printf(LogDEBUG, "atm_Sendto(%ld): %s\n", (long)n, strerror(errno)); - return ret; - } - return ret; -} - -static ssize_t -atm_Recvfrom(struct physical *p, void *v, size_t n) -{ - ssize_t ret = read(p->fd, (char*)v, n); - if (ret < 0) { - log_Printf(LogDEBUG, "atm_Recvfrom(%ld): %s\n", (long)n, strerror(errno)); - return ret; - } - return ret; -} - -static void -atm_Free(struct physical *p) -{ - struct atmdevice *dev = device2atm(p->handler); - - free(dev); -} - -static void -atm_device2iov(struct device *d, struct iovec *iov, int *niov, - int maxiov __unused, int *auxfd __unused, int *nauxfd __unused) -{ - int sz = physical_MaxDeviceSize(); - - iov[*niov].iov_base = realloc(d, sz); - if (iov[*niov].iov_base == NULL) { - log_Printf(LogALERT, "Failed to allocate memory: %d\n", sz); - AbortProgram(EX_OSERR); - } - iov[*niov].iov_len = sz; - (*niov)++; -} - -static const struct device baseatmdevice = { - ATM_DEVICE, - "atm", - 0, - { CD_NOTREQUIRED, 0 }, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - atm_Free, - atm_Recvfrom, - atm_Sendto, - atm_device2iov, - NULL, - NULL, - NULL -}; - -struct device * -atm_iov2device(int type, struct physical *p, struct iovec *iov, int *niov, - int maxiov __unused, int *auxfd __unused, int *nauxfd __unused) -{ - if (type == ATM_DEVICE) { - struct atmdevice *dev = (struct atmdevice *)iov[(*niov)++].iov_base; - - dev = realloc(dev, sizeof *dev); /* Reduce to the correct size */ - if (dev == NULL) { - log_Printf(LogALERT, "Failed to allocate memory: %d\n", - (int)(sizeof *dev)); - AbortProgram(EX_OSERR); - } - - /* Refresh function pointers etc */ - memcpy(&dev->dev, &baseatmdevice, sizeof dev->dev); - - physical_SetupStack(p, dev->dev.name, PHYSICAL_FORCE_SYNCNOACF); - return &dev->dev; - } - - return NULL; -} - -static struct atmdevice * -atm_CreateDevice(struct physical *p, const char *iface, unsigned vpi, - unsigned vci) -{ - struct atmdevice *dev; - struct sockaddr_natm sock; - - if ((dev = calloc(1, sizeof *dev)) == NULL) { - log_Printf(LogWARN, "%s: Cannot allocate an atm device: %s\n", - p->link.name, strerror(errno)); - return NULL; - } - - sock.snatm_len = sizeof sock; - sock.snatm_family = AF_NATM; - strncpy(sock.snatm_if, iface, IFNAMSIZ); - sock.snatm_vpi = vpi; - sock.snatm_vci = vci; - - log_Printf(LogPHASE, "%s: Connecting to %s:%u.%u\n", p->link.name, - iface, vpi, vci); - - p->fd = socket(PF_NATM, SOCK_DGRAM, PROTO_NATMAAL5); - if (p->fd >= 0) { - log_Printf(LogDEBUG, "%s: Opened atm socket %s\n", p->link.name, - p->name.full); - if (connect(p->fd, (struct sockaddr *)&sock, sizeof sock) == 0) - return dev; - else - log_Printf(LogWARN, "%s: connect: %s\n", p->name.full, strerror(errno)); - } else - log_Printf(LogWARN, "%s: socket: %s\n", p->name.full, strerror(errno)); - - close(p->fd); - p->fd = -1; - free(dev); - - return NULL; -} - -struct device * -atm_Create(struct physical *p) -{ - struct atmdevice *dev; - - dev = NULL; - if (p->fd < 0 && !strncasecmp(p->name.full, PPPOA, PPPOA_LEN) - && p->name.full[PPPOA_LEN] == ':') { - char iface[25]; - unsigned vci, vpi; - - if (sscanf(p->name.full + PPPOA_LEN + 1, "%25[A-Za-z0-9]:%u.%u", iface, - &vpi, &vci) != 3) { - log_Printf(LogWARN, "Malformed ATM device name \'%s\', " - "PPPoA:if:vpi.vci expected\n", p->name.full); - return NULL; - } - - dev = atm_CreateDevice(p, iface, vpi, vci); - } - - if (dev) { - memcpy(&dev->dev, &baseatmdevice, sizeof dev->dev); - physical_SetupStack(p, dev->dev.name, PHYSICAL_FORCE_SYNCNOACF); - if (p->cfg.cd.necessity != CD_DEFAULT) - log_Printf(LogWARN, "Carrier settings ignored\n"); - return &dev->dev; - } - - return NULL; -} diff --git a/usr.sbin/ppp/atm.h b/usr.sbin/ppp/atm.h deleted file mode 100644 index ccfad8d9fea7..000000000000 --- a/usr.sbin/ppp/atm.h +++ /dev/null @@ -1,35 +0,0 @@ -/*- - * Copyright (c) 2000 Jakob Stoklund Olesen <stoklund@taxidriver.dk> - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - */ - -struct physical; -struct device; - -extern struct device *atm_Create(struct physical *); -extern struct device *atm_iov2device(int, struct physical *, - struct iovec *, int *, int, int *, int *); -extern unsigned atm_DeviceSize(void); diff --git a/usr.sbin/ppp/physical.c b/usr.sbin/ppp/physical.c index e2892aebcc0f..eb74b33a1550 100644 --- a/usr.sbin/ppp/physical.c +++ b/usr.sbin/ppp/physical.c @@ -102,9 +102,6 @@ #include "ether.h" #include "netgraph.h" #endif -#ifndef NOATM -#include "atm.h" -#endif #include "tcpmss.h" static int physical_DescriptorWrite(struct fdescriptor *, struct bundle *, @@ -133,10 +130,6 @@ struct { { ng_Create, ng_iov2device, ng_DeviceSize }, #endif #endif -#ifndef NOATM - /* Ditto for ATM devices */ - { atm_Create, atm_iov2device, atm_DeviceSize }, -#endif { tcp_Create, tcp_iov2device, tcp_DeviceSize }, { udp_Create, udp_iov2device, udp_DeviceSize }, { exec_Create, exec_iov2device, exec_DeviceSize } |