summaryrefslogtreecommitdiff
path: root/xpp
diff options
context:
space:
mode:
authortzafrir <tzafrir@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2007-02-09 19:12:55 +0000
committertzafrir <tzafrir@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2007-02-09 19:12:55 +0000
commitcc599ab08d6f58a2d5e57db4150e2f9efe1112b8 (patch)
tree3f6df61996f5a6df4f05cd447c2b120ae8b4669e /xpp
parenteeaa77f409b4e0e158e62cb852e462ccef317f3f (diff)
Merged revisions 2123-2124 via svnmerge from
https://origsvn.digium.com/svn/zaptel/branches/1.4 ........ r2123 | tzafrir | 2007-02-08 02:05:17 +0200 (Thu, 08 Feb 2007) | 27 lines Branch 1.4 is back in sync (currently: xorcom rev. 3332): * Performance improvements for multi-XPD (span) devices. * Astribank BRI driver (in next commit). * Changes under /proc: - XBUS and XPD numbers have two digits. - Every script wildcard should be replaced from XBUS-? to XBUS-[0-9]* - Added /proc/xpp/XBUS-*/XPD-*/blink: echo 1 to start and 0 to stop. * Several countries (South Africa, UAE, anybody else) require a shorter ring delay. Adjust FXO reg 0x17 (23)'s bits 0:2 to 011. * Use tasklets to move most of the interrupt PCM copying out of the interrupt. * Debugfs-based code to dump data to userspace (used to debug BRI D channel). * Pretend every 2.6.9 actually has later RHEL's typedefs. * fpga_load supports /dev/bus/usb . * Fixed physical order sorting in genzaptelconf. * Reverse polarity and power denial detection. * A short led flash at registration time. * Add a real version of the xpp modules to them (independent of the Zaptel version). * Update our line status even when not registered. * Fixed a false SIG_CHANGED when inserting or removing cable to FXO. * Fixed compilation fixes for 2.6.20 (Bug #8982) * A cleaner fix for the bool changes of 2.6.19 . * Automatically detect echo_can_state_t at debug time. * Automaitcally set XPP_DEBUGFS (depending on debugfs) at compile time. * Bug-fixes to zaptel-helper. Moved to xpp/utils . * Xbus protocol version: 2.4 (Zaptel 1.2.12/1.4.0 had 2.3). XPS Init scripts renamed accordingly. ........ r2124 | tzafrir | 2007-02-08 02:30:56 +0200 (Thu, 08 Feb 2007) | 1 line Now 'chans' is used after all. ........ git-svn-id: http://svn.digium.com/svn/zaptel/trunk@2144 5390a7c7-147a-4af0-8ec9-7488f05a26cb
Diffstat (limited to 'xpp')
-rw-r--r--xpp/Makefile39
-rw-r--r--xpp/README.Astribank95
-rw-r--r--xpp/card_fxo.c341
-rw-r--r--xpp/card_fxs.c315
-rw-r--r--xpp/card_global.c182
-rw-r--r--xpp/firmwares/FPGA_1141.hex658
-rw-r--r--xpp/firmwares/FPGA_1151.hex1234
-rw-r--r--xpp/firmwares/FPGA_FXS.hex1220
-rw-r--r--xpp/firmwares/USB_1140.hex308
-rwxr-xr-xxpp/init_card_3_24 (renamed from xpp/init_card_3_23)0
-rwxr-xr-xxpp/init_card_4_24 (renamed from xpp/init_card_4_23)12
-rwxr-xr-xxpp/init_card_6_24415
-rwxr-xr-xxpp/init_card_7_24415
-rw-r--r--xpp/utils/Makefile27
-rw-r--r--xpp/utils/fpga_load.822
-rw-r--r--xpp/utils/fpga_load.c428
-rwxr-xr-xxpp/utils/genzaptelconf32
-rw-r--r--xpp/utils/xpp.rules8
-rw-r--r--xpp/utils/xpp_fxloader53
-rw-r--r--[-rwxr-xr-x]xpp/utils/zaptel-helper (renamed from xpp/zaptel-helper)30
-rw-r--r--xpp/xbus-core.c433
-rw-r--r--xpp/xbus-core.h30
-rw-r--r--xpp/xdefs.h14
-rw-r--r--xpp/xpd.h61
-rw-r--r--xpp/xpp_log.h52
-rw-r--r--xpp/xpp_usb.c155
-rw-r--r--xpp/xpp_zap.c590
-rw-r--r--xpp/xpp_zap.h4
-rw-r--r--xpp/xproto.c125
-rw-r--r--xpp/xproto.h54
-rw-r--r--xpp/zap_debug.c2
-rw-r--r--xpp/zap_debug.h6
32 files changed, 5136 insertions, 2224 deletions
diff --git a/xpp/Makefile b/xpp/Makefile
index e0a9152..bf4b14b 100644
--- a/xpp/Makefile
+++ b/xpp/Makefile
@@ -1,15 +1,52 @@
-EXTRA_CFLAGS = -g3 -I$(SUBDIRS) -DDEBUG -DPOLL_DIGITAL_INPUTS -DWITH_ECHO_SUPPRESSION
+EXTRA_CFLAGS = $(XPP_LOCAL_CFLAGS) \
+ -g3 -I$(SUBDIRS) \
+ -DDEBUG \
+ -DPOLL_DIGITAL_INPUTS \
+ -DWITH_ECHO_SUPPRESSION \
+ -DPROTOCOL_DEBUG
+
+ifneq (,$(filter y m,$(CONFIG_DEBUG_FS)))
+EXTRA_CFLAGS += -DXPP_DEBUGFS
+endif
+
+ZAPTEL_DIR = $(SUBDIRS)
+
+ifneq (,$(shell grep -w echo_can_state_t $(ZAPTEL_DIR)/zaptel.h))
+EXTRA_CFLAGS += -DZAPTEL_EC_TYPEDEF
+endif
obj-m += xpp.o xpd_fxs.o xpd_fxo.o
+HAS_BRISTUFF := $(shell cpp $(CPPFLAGS) -dM $(ZAPTEL_DIR)/zconfig.h | sed -n 's/^.*CONFIG_ZAPATA_BRI_DCHANS/y/p')
+
# Build only supported modules
ifneq (,$(filter y m,$(CONFIG_USB)))
obj-m += xpp_usb.o
endif
+ifneq (,$(HAS_BRISTUFF))
+obj-m += xpd_bri.o
+endif
xpp-y += xbus-core.o xpp_zap.o xproto.o card_global.o
xpd_fxs-y += card_fxs.o
xpd_fxo-y += card_fxo.o
+xpd_bri-y += card_bri.o
ctags:
ctags *.[ch]
+
+# Handle versioning
+XPP_VERSION_STR ?= $(shell if [ -r $(obj)/.version ]; then echo "\"`cat $(obj)/.version`\""; else echo '"Unknown"'; fi)
+clean-files := xpp_version.h
+
+$(obj)/card_fxs.o $(obj)/card_fxo.o $(obj)/card_bri.o $(obj)/xpp_usb.o $(obj)/xpp.o: $(obj)/xpp_version.h
+
+$(obj)/xpp_version.h: FORCE
+ $(Q)echo '#define XPP_VERSION $(XPP_VERSION_STR)' > $@.tmp
+ $(Q)if cmp -s $@.tmp $@ ; then echo; else \
+ mv $@.tmp $@ ; \
+ fi
+ $(Q)rm -f $@.tmp
+
+.PHONY: FORCE
+FORCE:
diff --git a/xpp/README.Astribank b/xpp/README.Astribank
index 221ef3a..4e83142 100644
--- a/xpp/README.Astribank
+++ b/xpp/README.Astribank
@@ -22,9 +22,10 @@ firmware and initialization files for the Astribank:
make -C xpp/utils
-In order to build the user space utilities, you will need the libusb-dev
-package on Debian (and derivatives like ubuntu) or libusb-devel on RedHat
+In order to build the user space utilities, you will need the libusb-dev
+package on Debian (and derivatives like ubuntu) or libusb-devel on RedHat
(and derivatives like Centox/Trixbox).
+
INSTALLATION:
""""""""""""
@@ -130,11 +131,54 @@ number. So you need to re-check the value of NNN with lsusb. Typically
this will be the old value + 1.
+Firmware Loading with Hotplug:
+"""""""""""""""""""""""""""""
+The Hotplug framework was popular for hotplugging and usually also
+autoloading drivers. If it is used on your system, you'll see
+/etc/hotplug with many files under it. Hotplug will automatically load
+most relevant USB and PCI kernel modules by the relevant USB and PCI
+IDs. Again: if the framework is in place and the proper configuration
+files are in place, the firmware should be loaded automatically.
+
+In order to get hotplug to autoload the firmware into the Astribank,
+the configuration file xpp_fxloader.usermap and the script xpp_fxloader
+should be copied into /etc/hotplug/usb/ . This is done by 'make -C
+xpp/utils install' .
+
+xpp_fxloader.usermap includes a map of USB IDs and the command to run
+when they are encountered. It instructs hotplug to run the script
+xpp_fxloader from that directory. This is done by 'make -C
+xpp/utils install' .
+
+When xpp_fxloader is run without any parameters it assumes that it was
+run by the hotplug scripts. It will then check if the even is an "add"
+event (and not a "remove" event), and if so, install the required
+firmware file. It will be called twice, as after the load of the USB
+firmware the device will reenumerate itself and thus "unplug" and
+"replug" to load the FPGA firmware.
+
+
Firmware Loading with UDEV:
""""""""""""""""""""""""""
-Firmware loading with udev should work but is not installed
-automatically, yet. See the comments in the beginning of the script
-/etc/hotplug/usb/xpp_fxloader .
+The UDEV framework has replaced Hotplug in most recent systems. If you
+have a recent 2.6 system with no Hotplug and files under /etc/udev,
+chances are you ude udev. udev does quite a few nice things.
+Again: if the framework is in place and the proper configuration
+files are in place, the firmware should be loaded automatically.
+
+In order to get hotplug to autoload the firmware into the Astribank,
+the configuration file xpp.rules should be copied into /etc/udev/rules.d
+and the script xpp_fxloader should be copied into /etc/hotplug/usb/ .
+This is done by 'make -C xpp/utils install' .
+
+xpp.rules instructs udevd to run xpp_fxloader with the option udev and
+the USB ID when an Astribank is plugged and needs loading firmware.
+When xpp_fxloader is run with the option udev it assumes that it was
+run by udevd scripts. It will then install the required firmware file.
+It will be called twice, as after the load of the USB firmware the
+device will reenumerate itself and thus "unplug" and "replug" to load
+the FPGA firmware.
+
Loading The Modules:
"""""""""""""""""""
@@ -301,6 +345,47 @@ When loaded, you should get one span, of 8 extensions, 2 output ports and
13 XPP_IN/0-12 FXOKS (In use)
14 XPP_IN/0-13 FXOKS (In use)
+Sample dialplan (extentions.conf) for all the above:
+
+[phones-zap]
+; 401 will dial to channel 1, 420, to zaptel channel 20, etc.
+exten => _4XX,1,Dial(ZAP/${EXTEN:1})
+
+[trunk-9]
+; Dial through the first FXO port availble.
+; This assumes that all FXO ports are in group 0 and all others are not,
+; as in the sample zapata.conf for 8FXS/8FXO below, and as is generated
+; by genzaptelconf by default.
+exten => 9.,Dial(Zap/g0/${EXTEN:1})
+
+[from-internal]
+; The context of FXS ports: analog phones.
+; They are allowed to dial to all other phones
+include => phones-zap
+; They are also allowed to call through the trunk:
+include => trunk-9
+
+[from-pstn]
+; Calls from the PSTN enter here. Redirect calls to an IVR
+; or a default extension in the s context here. In this case we
+; redirect calls to Zaptel channel 1:
+exten => s,1,Dial(Zap/1)
+
+[astribank-inputs]
+exten => s,1,Set(ZAP_CHAN=Cut(${CHANNEL},-,1))
+exten => s,n,Set(ZAP_CHAN=Cut(${ZAP_CHAN},/,2))
+; 11 is the number of the first input port. At least in the sample
+; configuration below.
+exten => s,n,Set(INPUT_NUM=Math(${ZAP_CHAN}-11))
+; The sample below just logs the signal.
+exten => s,n,NoOp(Got signal from input port number ${INPUT_NUM})
+; Alternatively:
+;exten => s,n,System(run something)
+
+; No. We did not forget the context astribank-outputs. Output
+; ports only get calls from the PBX. Thus they don't need a context
+; of their own.
+
/proc Interface
"""""""""""""""
diff --git a/xpp/card_fxo.c b/xpp/card_fxo.c
index 7187d08..70d6018 100644
--- a/xpp/card_fxo.c
+++ b/xpp/card_fxo.c
@@ -29,12 +29,13 @@
#include "xpp_zap.h"
#include "card_fxo.h"
#include "zap_debug.h"
+#include "xbus-core.h"
static const char rcsid[] = "$Id$";
-DEF_PARM(int, print_dbg, 0, "Print DBG statements");
-DEF_PARM(uint, poll_battery_interval, 100, "Poll battery interval in milliseconds (0 - disable)");
-DEF_PARM(bool, report_battery, 0, "Report battery status to zaptel");
+DEF_PARM(int, print_dbg, 0, 0600, "Print DBG statements");
+DEF_PARM(uint, poll_battery_interval, 100, 0600, "Poll battery interval in milliseconds (0 - disable)");
+DEF_PARM(int, ring_debounce, 50, 0600, "Number of ticks to debounce a false RING indication");
/* Signaling is opposite (fxs signalling for fxo card) */
#if 1
@@ -65,7 +66,6 @@ static /* 0x0F */ DECLARE_CMD(FXO, REGISTER_REQUEST, byte chipsel, bool writing,
/*---------------- FXO Protocol Commands ----------------------------------*/
static /* 0x0F */ DECLARE_CMD(FXO, XPD_STATE, bool on);
-static /* 0x0F */ DECLARE_CMD(FXO, CHAN_CID, lineno_t chan);
static /* 0x0F */ DECLARE_CMD(FXO, RING, lineno_t chan, bool on);
static /* 0x0F */ DECLARE_CMD(FXO, RELAY_OUT, byte which, bool on);
@@ -79,33 +79,38 @@ static int handle_register_command(xpd_t *xpd, char *cmdline);
#define PROC_REGISTER_FNAME "slics"
#define PROC_FXO_INFO_FNAME "fxo_info"
+#define DAA_CURRENT_REGISTER 0x1C
#define DAA_RING_REGISTER 0x05
struct FXO_priv_data {
- struct proc_dir_entry *regfile;
- struct proc_dir_entry *fxo_info;
- uint poll_counter;
- xpp_line_t battery;
- ushort battery_debounce[CHANNELS_PERXPD];
- xpp_line_t ledstate[NUM_LEDS]; /* 0 - OFF, 1 - ON */
- xpp_line_t ledcontrol[NUM_LEDS]; /* 0 - OFF, 1 - ON */
- int blinking[NUM_LEDS][CHANNELS_PERXPD];
+ struct proc_dir_entry *regfile;
+ struct proc_dir_entry *fxo_info;
+ uint poll_counter;
+ xpp_line_t battery;
+ ushort battery_debounce[CHANNELS_PERXPD];
+ xpp_line_t polarity;
+ ushort polarity_counter[CHANNELS_PERXPD];
+ uint offhook_timestamp[CHANNELS_PERXPD];
+ ushort current_counter[CHANNELS_PERXPD];
+ xpp_line_t ledstate[NUM_LEDS]; /* 0 - OFF, 1 - ON */
+ xpp_line_t ledcontrol[NUM_LEDS]; /* 0 - OFF, 1 - ON */
+ int led_counter[NUM_LEDS][CHANNELS_PERXPD];
+ atomic_t ring_debounce[CHANNELS_PERXPD];
};
-/*---------------- FXO: Static functions ----------------------------------*/
+/*
+ * LED counter values:
+ * n>1 : BLINK every n'th tick
+ */
+#define LED_COUNTER(priv,pos,color) ((priv)->led_counter[color][pos])
+#define IS_BLINKING(priv,pos,color) (LED_COUNTER(priv,pos,color) > 0)
+#define MARK_BLINK(priv,pos,color,t) ((priv)->led_counter[color][pos] = (t))
+#define MARK_OFF(priv,pos,color) do { BIT_CLR((priv)->ledcontrol[color],(pos)); MARK_BLINK((priv),(pos),(color),0); } while(0)
+#define MARK_ON(priv,pos,color) do { BIT_SET((priv)->ledcontrol[color],(pos)); MARK_BLINK((priv),(pos),(color),0); } while(0)
-#define IS_BLINKING(priv,pos,color) ((priv)->blinking[color][pos] != 0)
-#define MARK_BLINK(priv,pos,color,val) ((priv)->blinking[color][pos] = (val))
+#define LED_BLINK_RING (1000/8) /* in ticks */
-void MARK_LED(xpd_t *xpd, lineno_t pos, byte color, bool on)
-{
- struct FXO_priv_data *priv = xpd->priv;
-
- if(on)
- BIT_SET(priv->ledcontrol[color], pos);
- else
- BIT_CLR(priv->ledcontrol[color], pos);
-}
+/*---------------- FXO: Static functions ----------------------------------*/
/*
* LED control is done via DAA register 0x20
@@ -152,9 +157,13 @@ static void handle_fxo_leds(xpd_t *xpd)
for_each_line(xpd, i) {
if(IS_SET(xpd->digital_outputs, i) || IS_SET(xpd->digital_inputs, i))
continue;
- if(IS_BLINKING(priv,i,color)) {
+ if(xpd->blink_mode || IS_BLINKING(priv,i,color)) {
+ int mod_value = LED_COUNTER(priv, i, color);
+
+ if(!mod_value)
+ mod_value = DEFAULT_LED_PERIOD; /* safety value */
// led state is toggled
- if((timer_count % LED_BLINK_PERIOD) == 0) {
+ if((timer_count % mod_value) == 0) {
DBG("%s/%s/%d: ledstate=%s\n", xpd->xbus->busname, xpd->xpdname, i,
(IS_SET(priv->ledstate[color], i))?"ON":"OFF");
if(!IS_SET(priv->ledstate[color], i)) {
@@ -178,10 +187,11 @@ static void mark_ring(xpd_t *xpd, lineno_t pos, bool on, bool update_zap)
priv = xpd->priv;
BUG_ON(!priv);
+ atomic_set(&priv->ring_debounce[pos], 0); /* Stop debouncing */
if(on && !xpd->ringing[pos]) {
DBG("%s/%s/%d: START\n", xpd->xbus->busname, xpd->xpdname, pos);
xpd->ringing[pos] = 1;
- MARK_BLINK(priv, pos, LED_GREEN, LED_BLINK);
+ MARK_BLINK(priv, pos, LED_GREEN, LED_BLINK_RING);
if(update_zap)
update_zap_ring(xpd, pos, on);
} else if(!on && xpd->ringing[pos]) {
@@ -214,18 +224,19 @@ static int do_sethook(xpd_t *xpd, int pos, bool to_offhook)
mark_ring(xpd, pos, 0, 0); // No more rings
value = (to_offhook) ? 0x09 : 0x08; /* Bit 3 is for CID */
DBG("%s/%s/%d: SETHOOK: value=0x%02X %s\n", xbus->busname, xpd->xpdname, pos, value, (to_offhook)?"OFFHOOK":"ONHOOK");
- MARK_LED(xpd, pos, LED_GREEN, (to_offhook)?LED_ON:LED_OFF);
+ if(to_offhook)
+ MARK_ON(priv, pos, LED_GREEN);
+ else
+ MARK_OFF(priv, pos, LED_GREEN);
ret = DAA_DIRECT_REQUEST(xbus, xpd, pos, DAA_WRITE, DAA_RING_REGISTER, value);
if(to_offhook) {
BIT_SET(xpd->offhook, pos);
+ priv->offhook_timestamp[pos] = priv->poll_counter;
} else {
BIT_CLR(xpd->offhook, pos);
BIT_CLR(xpd->cid_on, pos);
- xpd->delay_until_dialtone[pos] = 0;
}
spin_unlock_irqrestore(&xpd->lock, flags);
- if(to_offhook)
- wake_up_interruptible(&xpd->txstateq[pos]);
return ret;
}
@@ -299,10 +310,20 @@ static int FXO_card_init(xbus_t *xbus, xpd_t *xpd)
goto err;
// Hanghup all lines
for_each_line(xpd, i) {
- init_waitqueue_head(&xpd->txstateq[i]);
do_sethook(xpd, i, 0);
}
DBG("done: %s/%s\n", xbus->busname, xpd->xpdname);
+ for_each_line(xpd, i) {
+ do_led(xpd, i, LED_GREEN, 0);
+ }
+ for_each_line(xpd, i) {
+ do_led(xpd, i, LED_GREEN, 1);
+ msleep(50);
+ }
+ for_each_line(xpd, i) {
+ do_led(xpd, i, LED_GREEN, 0);
+ msleep(50);
+ }
return 0;
err:
clean_proc(xbus, xpd);
@@ -343,10 +364,9 @@ static int FXO_card_zaptel_preregistration(xpd_t *xpd, bool on)
cur_chan->pvt = xpd;
cur_chan->sigcap = FXO_DEFAULT_SIGCAP;
}
- MARK_LED(xpd, ALL_LINES, LED_GREEN, LED_OFF);
for_each_line(xpd, i) {
- MARK_LED(xpd, i, LED_GREEN, LED_ON);
- msleep(50);
+ MARK_ON(priv, i, LED_GREEN);
+ msleep(4);
}
return 0;
}
@@ -364,8 +384,10 @@ static int FXO_card_zaptel_postregistration(xpd_t *xpd, bool on)
BUG_ON(!priv);
DBG("%s/%s (%d)\n", xbus->busname, xpd->xpdname, on);
for_each_line(xpd, i) {
- MARK_LED(xpd, i, LED_GREEN, LED_OFF);
- msleep(50);
+ MARK_OFF(priv, i, LED_GREEN);
+ msleep(2);
+ // MARK_OFF(priv, i, LED_RED);
+ msleep(2);
}
return 0;
}
@@ -404,6 +426,35 @@ static void poll_battery(xbus_t *xbus, xpd_t *xpd)
}
}
+static void poll_current(xbus_t *xbus, xpd_t *xpd)
+{
+ int i;
+
+ for_each_line(xpd, i) {
+ if (IS_SET(xpd->offhook, i))
+ DAA_DIRECT_REQUEST(xbus, xpd, i, DAA_READ, DAA_CURRENT_REGISTER, 0);
+ }
+}
+
+static void handle_fxo_ring(xpd_t *xpd)
+{
+ struct FXO_priv_data *priv;
+ int i;
+
+ priv = xpd->priv;
+ for_each_line(xpd, i) {
+ if(atomic_read(&priv->ring_debounce[i]) > 0) {
+ /* Maybe start ring */
+ if(atomic_dec_and_test(&priv->ring_debounce[i]))
+ mark_ring(xpd, i, 1, 1);
+ } else if (atomic_read(&priv->ring_debounce[i]) < 0) {
+ /* Maybe stop ring */
+ if(atomic_inc_and_test(&priv->ring_debounce[i]))
+ mark_ring(xpd, i, 0, 1);
+ }
+ }
+}
+
static int FXO_card_tick(xbus_t *xbus, xpd_t *xpd)
{
struct FXO_priv_data *priv;
@@ -413,54 +464,51 @@ static int FXO_card_tick(xbus_t *xbus, xpd_t *xpd)
BUG_ON(!priv);
if(poll_battery_interval != 0 && (priv->poll_counter % poll_battery_interval) == 0) {
poll_battery(xbus, xpd);
+ poll_current(xbus, xpd);
}
handle_fxo_leds(xpd);
+ handle_fxo_ring(xpd);
priv->poll_counter++;
return 0;
}
/* FIXME: based on data from from wctdm.h */
#include <wctdm.h>
-static const int echotune_reg[] = {30,45,46,47,58,49,50,51,52};
-union echotune {
- /* "coeff 0" is acim */
- unsigned char coeff[sizeof(echotune_reg)];
- struct wctdm_echo_coefs wctdm_struct;
-};
+/*
+ * The first register is the ACIM, the other are coefficient registers.
+ * We define the array size explicitly to track possible inconsistencies
+ * if the struct is modified.
+ */
+static const char echotune_regs[sizeof(struct wctdm_echo_coefs)] = {30, 45, 46, 47, 48, 49, 50, 51, 52};
static int FXO_card_ioctl(xpd_t *xpd, int pos, unsigned int cmd, unsigned long arg)
{
- union echotune echoregs;
- int i,ret;
+ int i,ret;
+ unsigned char echotune_data[ARRAY_SIZE(echotune_regs)];
BUG_ON(!xpd);
- DBG("cmd: 0x%X, expecting: 0x%X, pos=%d.\n", cmd, WCTDM_SET_ECHOTUNE, pos);
switch (cmd) {
case WCTDM_SET_ECHOTUNE:
DBG("-- Setting echo registers: \n");
/* first off: check if this span is fxs. If not: -EINVALID */
- if (copy_from_user(&echoregs.wctdm_struct,
- (struct wctdm_echo_coefs __user *)arg, sizeof(echoregs.wctdm_struct)))
+ if (copy_from_user(&echotune_data, (void __user *)arg, sizeof(echotune_data)))
return -EFAULT;
- /* Set the ACIM register */
- /* quick and dirty registers writing: */
- for (i=0; i<sizeof(echotune_reg); i++) {
- char buf[22];
- sprintf(buf, "%d WD %2X %2X",
- pos,echotune_reg[i],echoregs.coeff[i]
- );
- /* FIXME: code duplicated from proc_xpd_register_write */
- ret = handle_register_command(xpd, buf);
- if(ret < 0)
+ for (i = 0; i < ARRAY_SIZE(echotune_regs); i++) {
+ DBG("Reg=0x%02X, data=0x%02X\n", echotune_regs[i], echotune_data[i]);
+ ret = DAA_DIRECT_REQUEST(xpd->xbus, xpd, pos, DAA_WRITE, echotune_regs[i], echotune_data[i]);
+ if (ret < 0) {
+ NOTICE("%s/%s/%d: Couldn't write %0x02X to register %0x02X\n",
+ xpd->xbus->busname, xpd->xpdname, pos, echotune_data[i], echotune_regs[i]);
return ret;
+ }
msleep(1);
}
DBG("-- Set echo registers successfully\n");
-
break;
default:
+ DBG("%s/%s/%d: Unknown command 0x%X.\n", xpd->xbus->busname, xpd->xpdname, pos, cmd);
return -ENOTTY;
}
return 0;
@@ -471,6 +519,7 @@ static int FXO_card_ioctl(xpd_t *xpd, int pos, unsigned int cmd, unsigned long a
/* 0x0F */ HOSTCMD(FXO, REGISTER_REQUEST, byte chipsel, bool writing, bool do_subreg, byte regnum, byte subreg, byte data_low, byte data_high)
{
int ret = 0;
+ xframe_t *xframe;
xpacket_t *pack;
reg_cmd_t *reg_cmd;
@@ -478,7 +527,7 @@ static int FXO_card_ioctl(xpd_t *xpd, int pos, unsigned int cmd, unsigned long a
DBG("NO XBUS\n");
return -EINVAL;
}
- XPACKET_NEW(pack, xbus, GLOBAL, REGISTER_REQUEST, xpd->id);
+ XFRAME_NEW(xframe, pack, xbus, GLOBAL, REGISTER_REQUEST, xpd->id);
#if 0
DBG("%s/%s/%d: %c%c R%02X S%02X %02X %02X\n",
xbus->busname, xpd->xpdname, chipsel,
@@ -487,7 +536,6 @@ static int FXO_card_ioctl(xpd_t *xpd, int pos, unsigned int cmd, unsigned long a
regnum, subreg, data_low, data_high);
#endif
reg_cmd = &RPACKET_FIELD(pack, GLOBAL, REGISTER_REQUEST, reg_cmd);
- pack->datalen = sizeof(*reg_cmd);
reg_cmd->bytes = sizeof(*reg_cmd) - 1; // do not count the 'bytes' field
REG_FIELD(reg_cmd, chipsel) = chipsel;
REG_FIELD(reg_cmd, read_request) = (writing) ? 0 : 1;
@@ -496,42 +544,23 @@ static int FXO_card_ioctl(xpd_t *xpd, int pos, unsigned int cmd, unsigned long a
REG_FIELD(reg_cmd, subreg) = subreg;
REG_FIELD(reg_cmd, data_low) = data_low;
REG_FIELD(reg_cmd, data_high) = data_high;
- ret = packet_send(xbus, pack);
+ ret = xframe_send(xbus, xframe);
return ret;
}
static /* 0x0F */ HOSTCMD(FXO, XPD_STATE, bool on)
{
- int ret = 0;
- int i;
+ int ret = 0;
+ struct FXO_priv_data *priv;
BUG_ON(!xbus);
BUG_ON(!xpd);
+ priv = xpd->priv;
+ BUG_ON(!priv);
DBG("%s/%s: %s\n", xbus->busname, xpd->xpdname, (on) ? "on" : "off");
- if(on) {
- for_each_line(xpd, i) {
- MARK_LED(xpd, i, LED_GREEN, LED_ON);
- msleep(20);
- }
- for_each_line(xpd, i) {
- MARK_LED(xpd, i, LED_GREEN, LED_OFF);
- msleep(20);
- }
- }
return ret;
}
-static /* 0x0F */ HOSTCMD(FXO, CHAN_CID, lineno_t chan)
-{
- int ret = 0;
-
- BUG_ON(!xbus);
- BUG_ON(!xpd);
- DBG("%s/%s/%d:\n", xbus->busname, xpd->xpdname, chan);
- return ret;
-}
-
-
static /* 0x0F */ HOSTCMD(FXO, RING, lineno_t chan, bool on)
{
BUG_ON(!xbus);
@@ -557,7 +586,7 @@ HANDLER_DEF(FXO, SIG_CHANGED)
if(!xpd) {
NOTICE("%s: received %s for non-existing xpd: %d\n",
- __FUNCTION__, cmd->name, XPD_NUM(pack->content.addr));
+ __FUNCTION__, cmd->name, XPD_NUM(pack->addr));
return -EPROTO;
}
priv = xpd->priv;
@@ -565,19 +594,109 @@ HANDLER_DEF(FXO, SIG_CHANGED)
DBG("%s/%s: (PSTN) sig_toggles=0x%04X sig_status=0x%04X\n", xpd->xbus->busname, xpd->xpdname, sig_toggles, sig_status);
spin_lock_irqsave(&xpd->lock, flags);
for_each_line(xpd, i) {
+ int debounce;
+
if(IS_SET(sig_toggles, i)) {
if(!IS_SET(priv->battery, i)) {
- DBG("%s/%s/%d: battery is off. ignore false alarm.\n",
+ DBG("%s/%s/%d: SIG_CHANGED while battery is off.\n",
xbus->busname, xpd->xpdname, i);
- continue;
+ // FIXME: allow dialing without battery polling...
+ // continue;
}
- mark_ring(xpd, i, IS_SET(sig_status, i), 1);
+ /* First report false ring alarms */
+ debounce = atomic_read(&priv->ring_debounce[i]);
+ if(debounce)
+ NOTICE("%s/%s/%d: debounced %d ticks\n", xbus->busname, xpd->xpdname, i, debounce);
+ /*
+ * Now set a new ring alarm.
+ * It will be checked in handle_fxo_ring()
+ */
+ debounce = (IS_SET(sig_status, i)) ? ring_debounce : -ring_debounce;
+ atomic_set(&priv->ring_debounce[i], debounce);
}
}
spin_unlock_irqrestore(&xpd->lock, flags);
return 0;
}
+static void update_battery_status(xpd_t *xpd, byte data_low, lineno_t chipsel)
+{
+ struct FXO_priv_data *priv;
+ byte bat = abs((signed char)data_low);
+ byte pol = IS_SET(data_low, 7);
+
+ priv = xpd->priv;
+ BUG_ON(!priv);
+ if(bat < BAT_THRESHOLD) {
+ /*
+ * Check for battery voltage fluctuations
+ */
+ if(IS_SET(priv->battery, chipsel) && priv->battery_debounce[chipsel]++ > BAT_DEBOUNCE) {
+ DBG("%s/%s/%d: BATTERY OFF voltage=%d\n", xpd->xbus->busname, xpd->xpdname, chipsel, bat);
+ BIT_CLR(priv->battery, chipsel);
+ update_line_status(xpd, chipsel, 0);
+ }
+ } else {
+ priv->battery_debounce[chipsel] = 0;
+ if(!IS_SET(priv->battery, chipsel)) {
+ DBG("%s/%s/%d: BATTERY ON voltage=%d\n", xpd->xbus->busname, xpd->xpdname, chipsel, bat);
+ BIT_SET(priv->battery, chipsel);
+ }
+ }
+ /*
+ * Handle reverse polarity
+ */
+ if (IS_SET(xpd->offhook, chipsel)) { /* Learn the current polarity */
+ if (priv->poll_counter - priv->offhook_timestamp[chipsel] < 3) {
+ priv->polarity_counter[chipsel] = 0;
+ if (pol)
+ BIT_SET(priv->polarity, chipsel);
+ else
+ BIT_CLR(priv->polarity, chipsel);
+ }
+ else if (IS_SET(priv->polarity, chipsel) != pol) { /* Polarity has reversed */
+ priv->polarity_counter[chipsel]++;
+ if (priv->polarity_counter[chipsel] >= 2) {
+ if (pol)
+ BIT_SET(priv->polarity, chipsel);
+ else
+ BIT_CLR(priv->polarity, chipsel);
+ priv->polarity_counter[chipsel] = 0;
+ /* Inform Zaptel */
+ zt_qevent_lock(&xpd->chans[chipsel], ZT_EVENT_POLARITY);
+#if 0
+ /*
+ * These two lines hangup the channel (by sending a message to
+ * the firmware), and inform Zaptel that the line has been hung-up.
+ * They are not needed if Asterisk does the hangup after receiving
+ * a notification from Zaptel (which is sent by the above zt_qevent_lock().
+ * Asterisk does that if it has "hanguponpolarityswitch=1" in zapata.conf.
+ */
+ do_sethook(xpd, chipsel, 0);
+ update_line_status(xpd, chipsel, 0);
+#endif
+ }
+ }
+ }
+}
+
+static void update_power_denial(xpd_t *xpd, byte data_low, lineno_t chipsel)
+{
+ struct FXO_priv_data *priv;
+
+ priv = xpd->priv;
+ BUG_ON(!priv);
+ if (IS_SET(xpd->offhook, chipsel) && data_low < 3) {
+ priv->current_counter[chipsel]++;
+ if (priv->current_counter[chipsel] >= 10) {
+ priv->current_counter[chipsel] = 0;
+ do_sethook(xpd, chipsel, 0);
+ update_line_status(xpd, chipsel, 0);
+ }
+ } else
+ priv->current_counter[chipsel] = 0;
+}
+
HANDLER_DEF(FXO, DAA_REPLY)
{
reg_cmd_t *info = &RPACKET_FIELD(pack, FXO, DAA_REPLY, regcmd);
@@ -587,36 +706,20 @@ HANDLER_DEF(FXO, DAA_REPLY)
if(!xpd) {
NOTICE("%s: received %s for non-existing xpd: %d\n",
- __FUNCTION__, cmd->name, XPD_NUM(pack->content.addr));
+ __FUNCTION__, cmd->name, XPD_NUM(pack->addr));
return -EPROTO;
}
spin_lock_irqsave(&xpd->lock, flags);
priv = xpd->priv;
BUG_ON(!priv);
chipsel = REG_FIELD(info, chipsel);
-
- /*
- * Update battery status
- */
- if(REG_FIELD(info, regnum) == DAA_VBAT_REGISTER) {
- byte bat = abs((signed char)REG_FIELD(info, data_low));
-
- if(bat < BAT_THRESHOLD) {
- /*
- * Check for battery voltage fluctuations
- */
- if(IS_SET(priv->battery, chipsel) && priv->battery_debounce[chipsel]++ > BAT_DEBOUNCE) {
- DBG("%s/%s/%d: BATTERY OFF voltage=%d\n", xpd->xbus->busname, xpd->xpdname, chipsel, bat);
- BIT_CLR(priv->battery, chipsel);
- update_line_status(xpd, chipsel, 0);
- }
- } else {
- priv->battery_debounce[chipsel] = 0;
- if(!IS_SET(priv->battery, chipsel)) {
- DBG("%s/%s/%d: BATTERY ON voltage=%d\n", xpd->xbus->busname, xpd->xpdname, chipsel, bat);
- BIT_SET(priv->battery, chipsel);
- }
- }
+ switch(REG_FIELD(info, regnum)) {
+ case DAA_VBAT_REGISTER:
+ update_battery_status(xpd, REG_FIELD(info, data_low), chipsel);
+ break;
+ case DAA_CURRENT_REGISTER:
+ update_power_denial(xpd, REG_FIELD(info, data_low), chipsel);
+ break;
}
#if 0
DBG("DAA_REPLY: xpd #%d %s reg_num=0x%X, dataL=0x%X dataH=0x%X\n",
@@ -658,10 +761,8 @@ xproto_table_t PROTO_TABLE(FXO) = {
.RING = XPROTO_CALLER(FXO, RING),
.RELAY_OUT = XPROTO_CALLER(FXO, RELAY_OUT),
.XPD_STATE = XPROTO_CALLER(FXO, XPD_STATE),
- .CHAN_CID = XPROTO_CALLER(FXO, CHAN_CID),
.SYNC_SOURCE = XPROTO_CALLER(GLOBAL, SYNC_SOURCE),
- .PCM_WRITE = XPROTO_CALLER(GLOBAL, PCM_WRITE),
},
.packet_is_valid = fxo_packet_is_valid,
.packet_dump = fxo_packet_dump,
@@ -672,7 +773,7 @@ static bool fxo_packet_is_valid(xpacket_t *pack)
const xproto_entry_t *xe;
//DBG("\n");
- xe = xproto_card_entry(&PROTO_TABLE(FXO), pack->content.opcode);
+ xe = xproto_card_entry(&PROTO_TABLE(FXO), pack->opcode);
return xe != NULL;
}
@@ -896,7 +997,12 @@ static int proc_xpd_register_read(char *page, char **start, off_t off, int count
int __init card_fxo_startup(void)
{
- INFO("%s\n", THIS_MODULE->name);
+ if(ring_debounce <= 0) {
+ ERR("%s: ring_debounce=%d. Must be positive number of ticks\n",
+ THIS_MODULE->name, ring_debounce);
+ return -EINVAL;
+ }
+ INFO("%s revision %s\n", THIS_MODULE->name, XPP_VERSION);
xproto_register(&PROTO_TABLE(FXO));
return 0;
}
@@ -909,6 +1015,7 @@ void __exit card_fxo_cleanup(void)
MODULE_DESCRIPTION("XPP FXO Card Driver");
MODULE_AUTHOR("Oron Peled <oron@actcom.co.il>");
MODULE_LICENSE("GPL");
+MODULE_VERSION(XPP_VERSION);
MODULE_ALIAS_XPD(XPD_TYPE_FXO);
module_init(card_fxo_startup);
diff --git a/xpp/card_fxs.c b/xpp/card_fxs.c
index 5e5674b..af12cd2 100644
--- a/xpp/card_fxs.c
+++ b/xpp/card_fxs.c
@@ -29,11 +29,12 @@
#include "xpp_zap.h"
#include "card_fxo.h"
#include "zap_debug.h"
+#include "xbus-core.h"
static const char rcsid[] = "$Id$";
-DEF_PARM(int, print_dbg, 0, "Print DBG statements"); /* must be before zap_debug.h */
-DEF_PARM(bool, poll_digital_inputs, 1, "Poll Digital Inputs"); /* must be before zap_debug.h */
+DEF_PARM(int, print_dbg, 0, 0600, "Print DBG statements"); /* must be before zap_debug.h */
+DEF_PARM_BOOL(poll_digital_inputs, 1, 0600, "Poll Digital Inputs"); /* must be before zap_debug.h */
/* Signaling is opposite (fxo signalling for fxs card) */
#if 1
@@ -64,14 +65,13 @@ static /* 0x0F */ DECLARE_CMD(FXS, REGISTER_REQUEST, byte chipsel, bool writing,
#define SLIC_DIRECT_REQUEST(xbus,xpd,chipsel,writing,reg,dL) \
CALL_PROTO(FXS, REGISTER_REQUEST, (xbus), (xpd), (chipsel), (writing), 0, (reg), 0, (dL), 0)
#define SLIC_INDIRECT_REQUEST(xbus,xpd,chipsel,writing,reg,dL,dH) \
- PROTO(FXS, REGISTER_REQUEST, (xbus), (xpd), (chipsel), (writing), 1, (reg), 0, (dL), (dH))
+ CALL_PROTO(FXS, REGISTER_REQUEST, (xbus), (xpd), (chipsel), (writing), 1, 0x1E, (reg), (dL), (dH))
#define VALID_CHIPSEL(x) (((chipsel) >= 0 && (chipsel) <= 7) || (chipsel) == ALL_CHANS)
/*---------------- FXS Protocol Commands ----------------------------------*/
static /* 0x0F */ DECLARE_CMD(FXS, XPD_STATE, bool on);
-static /* 0x0F */ DECLARE_CMD(FXS, CHAN_CID, lineno_t chan);
static /* 0x0F */ DECLARE_CMD(FXS, RING, lineno_t chan, bool on);
static /* 0x0F */ DECLARE_CMD(FXS, RELAY_OUT, byte which, bool on);
@@ -80,6 +80,7 @@ static void fxs_packet_dump(const char *msg, xpacket_t *pack);
static int proc_fxs_info_read(char *page, char **start, off_t off, int count, int *eof, void *data);
static int proc_xpd_register_read(char *page, char **start, off_t off, int count, int *eof, void *data);
static int proc_xpd_register_write(struct file *file, const char __user *buffer, unsigned long count, void *data);
+static void start_stop_vm_led(xbus_t *xbus, xpd_t *xpd, lineno_t pos);
#define PROC_REGISTER_FNAME "slics"
#define PROC_FXS_INFO_FNAME "fxs_info"
@@ -89,9 +90,23 @@ struct FXS_priv_data {
struct proc_dir_entry *fxs_info;
xpp_line_t ledstate[NUM_LEDS]; /* 0 - OFF, 1 - ON */
xpp_line_t ledcontrol[NUM_LEDS]; /* 0 - OFF, 1 - ON */
- int blinking[NUM_LEDS][CHANNELS_PERXPD];
+ xpp_line_t found_fsk_pattern;
+ xpp_line_t msg_waiting;
+ int led_counter[NUM_LEDS][CHANNELS_PERXPD];
};
+/*
+ * LED counter values:
+ * n>1 : BLINK every n'th tick
+ */
+#define LED_COUNTER(priv,pos,color) ((priv)->led_counter[color][pos])
+#define IS_BLINKING(priv,pos,color) (LED_COUNTER(priv,pos,color) > 0)
+#define MARK_BLINK(priv,pos,color,t) ((priv)->led_counter[color][pos] = (t))
+#define MARK_OFF(priv,pos,color) do { BIT_CLR((priv)->ledcontrol[color],(pos)); MARK_BLINK((priv),(pos),(color),0); } while(0)
+#define MARK_ON(priv,pos,color) do { BIT_SET((priv)->ledcontrol[color],(pos)); MARK_BLINK((priv),(pos),(color),0); } while(0)
+
+#define LED_BLINK_RING (1000/8) /* in ticks */
+
/*---------------- FXS: Static functions ----------------------------------*/
static int do_chan_power(xbus_t *xbus, xpd_t *xpd, lineno_t chan, bool on)
{
@@ -103,10 +118,6 @@ static int do_chan_power(xbus_t *xbus, xpd_t *xpd, lineno_t chan, bool on)
return SLIC_DIRECT_REQUEST(xbus, xpd, chan, SLIC_WRITE, 0x42, value);
}
-#define IS_BLINKING(priv,pos,color) ((priv)->blinking[color][pos] != 0)
-#define MARK_BLINK(priv,pos,color,val) ((priv)->blinking[color][pos] = (val))
-#define MARK_LED(priv,pos,color,val) ((val)?BIT_SET((priv)->ledcontrol[color],(pos)):BIT_CLR((priv)->ledcontrol[color],(pos)))
-
/*
* LED and RELAY control is done via SLIC register 0x06:
* 7 6 5 4 3 2 1 0
@@ -137,7 +148,7 @@ static const int led_register_vals[] = { BIT(4), BIT(1), BIT(0) };
/*
* pos can be:
* - A line number
- * - ALL_LINES
+ * - ALL_LINES. This is not valid anymore since 8-Jan-2007.
*/
static int do_led(xpd_t *xpd, lineno_t chan, byte which, bool on)
{
@@ -147,6 +158,7 @@ static int do_led(xpd_t *xpd, lineno_t chan, byte which, bool on)
xbus_t *xbus;
BUG_ON(!xpd);
+ BUG_ON(chan == ALL_LINES);
xbus = xpd->xbus;
priv = xpd->priv;
which = which % NUM_LEDS;
@@ -186,9 +198,13 @@ static void handle_fxs_leds(xpd_t *xpd)
for_each_line(xpd, i) {
if(IS_SET(xpd->digital_outputs, i) || IS_SET(xpd->digital_inputs, i))
continue;
- if(IS_BLINKING(priv, i, color)) { // Blinking
+ if(xpd->blink_mode || IS_BLINKING(priv, i, color)) { // Blinking
+ int mod_value = LED_COUNTER(priv, i, color);
+
+ if(!mod_value)
+ mod_value = DEFAULT_LED_PERIOD; /* safety value */
// led state is toggled
- if((timer_count % LED_BLINK_PERIOD) == 0) {
+ if((timer_count % mod_value) == 0) {
DBG("%s/%s/%d ledstate=%s\n", xpd->xbus->busname, xpd->xpdname, i,
(IS_SET(priv->ledstate[color], i))?"ON":"OFF");
if(!IS_SET(priv->ledstate[color], i)) {
@@ -207,6 +223,21 @@ static void handle_fxs_leds(xpd_t *xpd)
}
}
+static int do_callerid(xbus_t *xbus, xpd_t *xpd, lineno_t chan)
+{
+ int ret = 0;
+ int i;
+
+ BUG_ON(!xbus);
+ BUG_ON(!xpd);
+ DBG("%s/%s/%d:\n", xbus->busname, xpd->xpdname, chan);
+ ret = SLIC_DIRECT_REQUEST(xbus, xpd, chan, SLIC_WRITE, 0x40, FXS_LINE_CID);
+ for_each_line(xpd, i)
+ xpd->lasttxhook[i] = FXS_LINE_CID;
+ return ret;
+}
+
+
/*---------------- FXS: Methods -------------------------------------------*/
static xpd_t *FXS_card_new(xbus_t *xbus, int xpd_num, const xproto_table_t *proto_table, byte revision)
@@ -254,6 +285,7 @@ static int FXS_card_init(xbus_t *xbus, xpd_t *xpd)
{
struct FXS_priv_data *priv;
int ret = 0;
+ int i;
BUG_ON(!xpd);
priv = xpd->priv;
@@ -289,6 +321,18 @@ static int FXS_card_init(xbus_t *xbus, xpd_t *xpd)
if(ret < 0)
goto err;
DBG("%s/%s: done\n", xbus->busname, xpd->xpdname);
+ for_each_line(xpd, i) {
+ do_led(xpd, i, LED_GREEN, 0);
+ do_led(xpd, i, LED_RED, 0);
+ }
+ for_each_line(xpd, i) {
+ do_led(xpd, i, LED_GREEN, 1);
+ msleep(50);
+ }
+ for_each_line(xpd, i) {
+ do_led(xpd, i, LED_GREEN, 0);
+ msleep(50);
+ }
return 0;
err:
clean_proc(xbus, xpd);
@@ -312,8 +356,6 @@ static int FXS_card_zaptel_preregistration(xpd_t *xpd, bool on)
xbus_t *xbus;
struct FXS_priv_data *priv;
int i;
- unsigned long flags;
- const enum fxs_leds color = (on) ? LED_GREEN : LED_RED;
BUG_ON(!xpd);
xbus = xpd->xbus;
@@ -337,12 +379,9 @@ static int FXS_card_zaptel_preregistration(xpd_t *xpd, bool on)
cur_chan->pvt = xpd;
cur_chan->sigcap = FXS_DEFAULT_SIGCAP;
}
- spin_lock_irqsave(&xpd->lock, flags);
- do_led(xpd, ALL_LINES, color, LED_OFF);
- spin_unlock_irqrestore(&xpd->lock, flags);
for_each_line(xpd, i) {
- MARK_LED(priv, i, color, LED_ON);
- msleep(50);
+ MARK_ON(priv, i, LED_GREEN);
+ msleep(4);
}
return 0;
}
@@ -352,7 +391,6 @@ static int FXS_card_zaptel_postregistration(xpd_t *xpd, bool on)
xbus_t *xbus;
struct FXS_priv_data *priv;
int i;
- const enum fxs_leds color = (on) ? LED_GREEN : LED_RED;
BUG_ON(!xpd);
xbus = xpd->xbus;
@@ -361,8 +399,10 @@ static int FXS_card_zaptel_postregistration(xpd_t *xpd, bool on)
BUG_ON(!priv);
DBG("%s/%s (%d)\n", xbus->busname, xpd->xpdname, on);
for_each_line(xpd, i) {
- MARK_LED(priv, i, color, LED_OFF);
- msleep(50);
+ MARK_OFF(priv, i, LED_GREEN);
+ msleep(2);
+ MARK_OFF(priv, i, LED_RED);
+ msleep(2);
}
return 0;
}
@@ -387,6 +427,8 @@ int FXS_card_hooksig(xbus_t *xbus, xpd_t *xpd, int pos, zt_txsig_t txsig)
return ret;
}
ret = CALL_XMETHOD(RING, xbus, xpd, pos, 0); // RING off
+ if (!IS_SET(xpd->offhook, pos))
+ start_stop_vm_led(xbus, xpd, pos);
#if 0
switch(chan->sig) {
case ZT_SIG_EM:
@@ -403,7 +445,7 @@ int FXS_card_hooksig(xbus_t *xbus, xpd_t *xpd, int pos, zt_txsig_t txsig)
case ZT_TXSIG_OFFHOOK:
if(xpd->ringing[pos]) {
BIT_SET(xpd->cid_on, pos);
- ret = CALL_XMETHOD(CHAN_CID, xpd->xbus, xpd, pos); // CALLER ID
+ ret = do_callerid(xpd->xbus, xpd, pos); // CALLER ID
}
xpd->ringing[pos] = 0;
#if 0
@@ -438,6 +480,107 @@ int FXS_card_hooksig(xbus_t *xbus, xpd_t *xpd, int pos, zt_txsig_t txsig)
return ret;
}
+#ifdef VMWI_IOCTL
+/*
+ * Private ioctl()
+ * We don't need it now, since we detect vmwi via FSK patterns
+ */
+static int FXS_card_ioctl(xpd_t *xpd, int pos, unsigned int cmd, unsigned long arg)
+{
+ struct FXS_priv_data *priv;
+ xbus_t *xbus;
+
+ BUG_ON(!xpd);
+ priv = xpd->priv;
+ BUG_ON(!priv);
+ xbus = xpd->xbus;
+ BUG_ON(!xbus);
+
+ if (pos < 0 || pos >= xpd->channels) {
+ NOTICE("%s/%s: Bad channel number %d in %s(), cmd=%u\n", xbus->busname, xpd->xpdname, pos, __FUNCTION__, cmd);
+ return -EINVAL;
+ }
+
+ switch (cmd) {
+ case _IOW(ZT_CODE, 60, int): /* message-waiting led control */
+ /* Digital inputs/outputs don't have VM leds */
+ if (IS_SET(xpd->digital_inputs | xpd->digital_outputs, pos))
+ return 0;
+ if (arg)
+ BIT_SET(priv->msg_waiting, pos);
+ else
+ BIT_CLR(priv->msg_waiting, pos);
+ return 0;
+ }
+ return -ENOTTY;
+}
+#endif
+
+static int set_vm_led_mode(xbus_t *xbus, xpd_t *xpd, int pos, int on)
+{
+ int ret = 0;
+ BUG_ON(!xbus);
+ BUG_ON(!xpd);
+
+ if (on) {
+ /* A write to register 0x40 will now turn on/off the VM led */
+ ret += SLIC_INDIRECT_REQUEST(xbus, xpd, pos, SLIC_WRITE, 0x16, 0xE8, 0x03);
+ ret += SLIC_INDIRECT_REQUEST(xbus, xpd, pos, SLIC_WRITE, 0x15, 0xEF, 0x7B);
+ ret += SLIC_INDIRECT_REQUEST(xbus, xpd, pos, SLIC_WRITE, 0x14, 0x9F, 0x00);
+ ret += SLIC_DIRECT_REQUEST(xbus, xpd, pos, SLIC_WRITE, 0x22, 0x19);
+ ret += SLIC_DIRECT_REQUEST(xbus, xpd, pos, SLIC_WRITE, 0x4A, 0x34);
+ ret += SLIC_DIRECT_REQUEST(xbus, xpd, pos, SLIC_WRITE, 0x30, 0xE0);
+ ret += SLIC_DIRECT_REQUEST(xbus, xpd, pos, SLIC_WRITE, 0x31, 0x01);
+ ret += SLIC_DIRECT_REQUEST(xbus, xpd, pos, SLIC_WRITE, 0x32, 0xF0);
+ ret += SLIC_DIRECT_REQUEST(xbus, xpd, pos, SLIC_WRITE, 0x33, 0x05);
+ ret += SLIC_INDIRECT_REQUEST(xbus, xpd, pos, SLIC_WRITE, 0x1D, 0x00, 0x46);
+ } else {
+ /* A write to register 0x40 will now turn on/off the ringer */
+ ret += SLIC_INDIRECT_REQUEST(xbus, xpd, pos, SLIC_WRITE, 0x16, 0x00, 0x00);
+ ret += SLIC_INDIRECT_REQUEST(xbus, xpd, pos, SLIC_WRITE, 0x15, 0x60, 0x01);
+ ret += SLIC_INDIRECT_REQUEST(xbus, xpd, pos, SLIC_WRITE, 0x14, 0xF0, 0x7E);
+ ret += SLIC_DIRECT_REQUEST(xbus, xpd, pos, SLIC_WRITE, 0x22, 0x00);
+ ret += SLIC_DIRECT_REQUEST(xbus, xpd, pos, SLIC_WRITE, 0x4A, 0x34);
+ ret += SLIC_DIRECT_REQUEST(xbus, xpd, pos, SLIC_WRITE, 0x30, 0x00);
+ ret += SLIC_DIRECT_REQUEST(xbus, xpd, pos, SLIC_WRITE, 0x31, 0x00);
+ ret += SLIC_DIRECT_REQUEST(xbus, xpd, pos, SLIC_WRITE, 0x32, 0x00);
+ ret += SLIC_DIRECT_REQUEST(xbus, xpd, pos, SLIC_WRITE, 0x33, 0x00);
+ ret += SLIC_INDIRECT_REQUEST(xbus, xpd, pos, SLIC_WRITE, 0x1D, 0x00, 0x36);
+ }
+
+ return (ret ? -EPROTO : 0);
+}
+
+static void start_stop_vm_led(xbus_t *xbus, xpd_t *xpd, lineno_t pos)
+{
+ bool on;
+
+ if (IS_SET(xpd->digital_outputs | xpd->digital_inputs, pos))
+ return;
+ on = IS_SET(((struct FXS_priv_data *)xpd->priv)->msg_waiting, pos);
+ DBG("%s/%s/%d %s\n", xbus->busname, xpd->xpdname, pos, (on)?"ON":"OFF");
+ set_vm_led_mode(xbus, xpd, pos, on);
+ do_chan_power(xbus, xpd, pos, on);
+ SLIC_DIRECT_REQUEST(xbus, xpd, pos, SLIC_WRITE, 0x40, (on) ? 0x04 : 0x01);
+}
+
+static int FXS_chan_onhooktransfer(xbus_t *xbus, xpd_t *xpd, lineno_t chan, int millies)
+{
+ int ret = 0;
+
+ BUG_ON(!xpd);
+ BUG_ON(chan == ALL_CHANS);
+ DBG("%s/%s/%d: (%d millies)\n", xbus->busname, xpd->xpdname, chan, millies);
+ xpd->ohttimer[chan] = millies << 3;
+ xpd->idletxhookstate[chan] = FXS_LINE_CID; /* OHT mode when idle */
+ if (xpd->lasttxhook[chan] == FXS_LINE_ENABLED) {
+ /* Apply the change if appropriate */
+ ret = do_callerid(xpd->xbus, xpd, chan); // CALLER ID
+ }
+ start_stop_vm_led(xbus, xpd, chan);
+ return ret;
+}
+
/*
* INPUT polling is done via SLIC register 0x06 (same as LEDS):
* 7 6 5 4 3 2 1 0
@@ -460,6 +603,65 @@ static void poll_inputs(xbus_t *xbus, xpd_t *xpd)
}
}
+#ifndef VMWI_IOCTL
+/*
+ * Detect Voice Mail Waiting Indication
+ */
+static void detect_vmwi(xpd_t *xpd)
+{
+ struct FXS_priv_data *priv;
+ xbus_t *xbus;
+ static const byte FSK_COMMON_PATTERN[] = { 0xA8, 0x49, 0x22, 0x3B, 0x9F, 0xFF, 0x1F, 0xBB };
+ static const byte FSK_ON_PATTERN[] = { 0xA2, 0x2C, 0x1F, 0x2C, 0xBB, 0xA1, 0xA5, 0xFF };
+ static const byte FSK_OFF_PATTERN[] = { 0xA2, 0x2C, 0x28, 0xA5, 0xB1, 0x21, 0x49, 0x9F };
+ int i;
+
+ BUG_ON(!xpd);
+ xbus = xpd->xbus;
+ priv = xpd->priv;
+ BUG_ON(!priv);
+ for_each_line(xpd, i) {
+ byte *writechunk = xpd->span.chans[i].writechunk;
+
+ if(IS_SET(xpd->offhook | xpd->cid_on | xpd->digital_inputs | xpd->digital_outputs, i))
+ continue;
+#if 0
+ if(i == 0 && writechunk[0] != 0x7F) {
+ int j;
+
+ DBG("%s/%s/%d: MSG:", xbus->busname, xpd->xpdname, i);
+ for(j = 0; j < ZT_CHUNKSIZE; j++) {
+ printk(" %02X", writechunk[j]);
+ }
+ printk("\n");
+ }
+#endif
+ if(unlikely(memcmp(writechunk, FSK_COMMON_PATTERN, ZT_CHUNKSIZE) == 0))
+ BIT_SET(priv->found_fsk_pattern, i);
+ else if(unlikely(IS_SET(priv->found_fsk_pattern, i))) {
+ BIT_CLR(priv->found_fsk_pattern, i);
+ if(memcmp(writechunk, FSK_ON_PATTERN, ZT_CHUNKSIZE) == 0) {
+ DBG("%s/%s/%d: MSG WAITING ON\n", xbus->busname, xpd->xpdname, i);
+ BIT_SET(priv->msg_waiting, i);
+ start_stop_vm_led(xbus, xpd, i);
+ } else if(memcmp(writechunk, FSK_OFF_PATTERN, ZT_CHUNKSIZE) == 0) {
+ DBG("%s/%s/%d: MSG WAITING OFF\n", xbus->busname, xpd->xpdname, i);
+ BIT_CLR(priv->msg_waiting, i);
+ start_stop_vm_led(xbus, xpd, i);
+ } else {
+ int j;
+
+ NOTICE("%s/%s/%d: MSG WAITING Unexpected:", xbus->busname, xpd->xpdname, i);
+ for(j = 0; j < ZT_CHUNKSIZE; j++) {
+ printk(" %02X", writechunk[j]);
+ }
+ printk("\n");
+ }
+ }
+ }
+}
+#endif
+
static int FXS_card_tick(xbus_t *xbus, xpd_t *xpd)
{
static int rate_limit = 0;
@@ -476,6 +678,10 @@ static int FXS_card_tick(xbus_t *xbus, xpd_t *xpd)
}
#endif
handle_fxs_leds(xpd);
+#ifndef VMWI_IOCTL
+ if(SPAN_REGISTERED(xpd))
+ detect_vmwi(xpd);
+#endif
return 0;
}
@@ -484,6 +690,7 @@ static int FXS_card_tick(xbus_t *xbus, xpd_t *xpd)
/* 0x0F */ HOSTCMD(FXS, REGISTER_REQUEST, byte chipsel, bool writing, bool do_subreg, byte regnum, byte subreg, byte data_low, byte data_high)
{
int ret = 0;
+ xframe_t *xframe;
xpacket_t *pack;
reg_cmd_t *reg_cmd;
@@ -491,7 +698,7 @@ static int FXS_card_tick(xbus_t *xbus, xpd_t *xpd)
DBG("NO XBUS\n");
return -EINVAL;
}
- XPACKET_NEW(pack, xbus, GLOBAL, REGISTER_REQUEST, xpd->id);
+ XFRAME_NEW(xframe, pack, xbus, GLOBAL, REGISTER_REQUEST, xpd->id);
#if 0
DBG("%s/%s/%d: %c%c R%02X S%02X %02X %02X\n",
xbus->busname, xpd->xpdname, chipsel,
@@ -500,7 +707,6 @@ static int FXS_card_tick(xbus_t *xbus, xpd_t *xpd)
regnum, subreg, data_low, data_high);
#endif
reg_cmd = &RPACKET_FIELD(pack, GLOBAL, REGISTER_REQUEST, reg_cmd);
- pack->datalen = sizeof(*reg_cmd);
reg_cmd->bytes = sizeof(*reg_cmd) - 1; // do not count the 'bytes' field
REG_FIELD(reg_cmd, chipsel) = chipsel;
REG_FIELD(reg_cmd, read_request) = (writing) ? 0 : 1;
@@ -509,7 +715,7 @@ static int FXS_card_tick(xbus_t *xbus, xpd_t *xpd)
REG_FIELD(reg_cmd, subreg) = subreg;
REG_FIELD(reg_cmd, data_low) = data_low;
REG_FIELD(reg_cmd, data_high) = data_high;
- ret = packet_send(xbus, pack);
+ ret = xframe_send(xbus, xframe);
return ret;
}
@@ -530,29 +736,14 @@ static /* 0x0F */ HOSTCMD(FXS, XPD_STATE, bool on)
for_each_line(xpd, i)
xpd->lasttxhook[i] = value;
if(on) {
- MARK_LED(priv, ALL_CHANS, LED_GREEN, LED_ON);
+ MARK_ON(priv, ALL_CHANS, LED_GREEN);
} else {
- MARK_LED(priv, ALL_CHANS, LED_GREEN, LED_OFF);
+ MARK_OFF(priv, ALL_CHANS, LED_GREEN);
}
spin_unlock_irqrestore(&xpd->lock, flags);
return ret;
}
-static /* 0x0F */ HOSTCMD(FXS, CHAN_CID, lineno_t chan)
-{
- int ret = 0;
- int i;
-
- BUG_ON(!xbus);
- BUG_ON(!xpd);
- DBG("%s/%s/%d:\n", xbus->busname, xpd->xpdname, chan);
- ret = SLIC_DIRECT_REQUEST(xbus, xpd, chan, SLIC_WRITE, 0x40, FXS_LINE_CID);
- for_each_line(xpd, i)
- xpd->lasttxhook[i] = FXS_LINE_CID;
- return ret;
-}
-
-
static /* 0x0F */ HOSTCMD(FXS, RING, lineno_t chan, bool on)
{
int ret = 0;
@@ -563,14 +754,15 @@ static /* 0x0F */ HOSTCMD(FXS, RING, lineno_t chan, bool on)
BUG_ON(!xpd);
DBG("%s/%s/%d: %s\n", xbus->busname, xpd->xpdname, chan, (on) ? "on" : "off");
priv = xpd->priv;
+ set_vm_led_mode(xbus, xpd, chan, 0);
do_chan_power(xbus, xpd, chan, on); // Power up (for ring)
ret = SLIC_DIRECT_REQUEST(xbus, xpd, chan, SLIC_WRITE, 0x40, value);
xpd->lasttxhook[chan] = value;
if(on) {
- MARK_BLINK(priv,chan,LED_GREEN,LED_BLINK);
+ MARK_BLINK(priv, chan, LED_GREEN, LED_BLINK_RING);
} else {
if(IS_BLINKING(priv, chan, LED_GREEN))
- MARK_BLINK(priv,chan,LED_GREEN,0);
+ MARK_BLINK(priv, chan, LED_GREEN, 0);
}
return ret;
}
@@ -605,10 +797,6 @@ HANDLER_DEF(FXS, SIG_CHANGED)
BUG_ON(xpd->direction != TO_PHONE);
priv = xpd->priv;
DBG("%s/%s: (PHONE) sig_toggles=0x%04X sig_status=0x%04X\n", xbus->busname, xpd->xpdname, sig_toggles, sig_status);
- if(!SPAN_REGISTERED(xpd)) {
- NOTICE("%s: %s/%s is not registered. Skipping.\n", __FUNCTION__, xbus->busname, xpd->xpdname);
- return -ENODEV;
- }
#if 0
Is this needed?
for_each_line(xpd, i) {
@@ -622,15 +810,16 @@ HANDLER_DEF(FXS, SIG_CHANGED)
continue;
if(IS_SET(sig_toggles, i)) {
xpd->ringing[i] = 0; // No more ringing...
- MARK_BLINK(priv,i,LED_GREEN,0);
+ MARK_BLINK(priv, i, LED_GREEN, 0);
if(IS_SET(sig_status, i)) {
DBG("%s/%s/%d: OFFHOOK\n", xbus->busname, xpd->xpdname, i);
- MARK_LED(priv,i,LED_GREEN,LED_ON);
+ MARK_ON(priv, i, LED_GREEN);
update_line_status(xpd, i, 1);
} else {
DBG("%s/%s/%d: ONHOOK\n", xbus->busname, xpd->xpdname, i);
- MARK_LED(priv,i,LED_GREEN,LED_OFF);
+ MARK_OFF(priv, i, LED_GREEN);
update_line_status(xpd, i, 0);
+ start_stop_vm_led(xbus, xpd, i);
}
}
}
@@ -648,7 +837,7 @@ HANDLER_DEF(FXS, REGISTER_REPLY)
if(!xpd) {
NOTICE("%s: received %s for non-existing xpd: %d\n",
- __FUNCTION__, cmd->name, XPD_NUM(pack->content.addr));
+ __FUNCTION__, cmd->name, XPD_NUM(pack->addr));
return -EPROTO;
}
spin_lock_irqsave(&xpd->lock, flags);
@@ -720,14 +909,16 @@ xproto_table_t PROTO_TABLE(FXS) = {
.card_zaptel_postregistration = FXS_card_zaptel_postregistration,
.card_hooksig = FXS_card_hooksig,
.card_tick = FXS_card_tick,
+ .chan_onhooktransfer = FXS_chan_onhooktransfer,
+#ifdef VMWI_IOCTL
+ .card_ioctl = FXS_card_ioctl,
+#endif
.RING = XPROTO_CALLER(FXS, RING),
.RELAY_OUT = XPROTO_CALLER(FXS, RELAY_OUT),
.XPD_STATE = XPROTO_CALLER(FXS, XPD_STATE),
- .CHAN_CID = XPROTO_CALLER(FXS, CHAN_CID),
.SYNC_SOURCE = XPROTO_CALLER(GLOBAL, SYNC_SOURCE),
- .PCM_WRITE = XPROTO_CALLER(GLOBAL, PCM_WRITE),
},
.packet_is_valid = fxs_packet_is_valid,
.packet_dump = fxs_packet_dump,
@@ -738,7 +929,7 @@ static bool fxs_packet_is_valid(xpacket_t *pack)
const xproto_entry_t *xe;
// DBG("\n");
- xe = xproto_card_entry(&PROTO_TABLE(FXS), pack->content.opcode);
+ xe = xproto_card_entry(&PROTO_TABLE(FXS), pack->opcode);
return xe != NULL;
}
@@ -781,10 +972,10 @@ static int proc_fxs_info_read(char *page, char **start, off_t off, int count, in
if(!IS_SET(xpd->digital_outputs, i) && !IS_SET(xpd->digital_inputs, i))
len += sprintf(page + len, "%d ", IS_SET(priv->ledcontrol[led], i));
}
- len += sprintf(page + len, "\n\t%-17s: ", "blinking");
+ len += sprintf(page + len, "\n\t%-17s: ", "led_counter");
for_each_line(xpd, i) {
if(!IS_SET(xpd->digital_outputs, i) && !IS_SET(xpd->digital_inputs, i))
- len += sprintf(page + len, "%d ", IS_BLINKING(priv,i,led));
+ len += sprintf(page + len, "%d ", LED_COUNTER(priv,i,led));
}
len += sprintf(page + len, "\n");
}
@@ -988,13 +1179,18 @@ static int proc_xpd_register_read(char *page, char **start, off_t off, int count
int __init card_fxs_startup(void)
{
- INFO("%s\n", THIS_MODULE->name);
+ INFO("%s revision %s\n", THIS_MODULE->name, XPP_VERSION);
#ifdef POLL_DIGITAL_INPUTS
INFO("FEATURE: %s with DIGITAL INPUTS support (%s activated)\n",
THIS_MODULE->name, (poll_digital_inputs) ? "is" : "is not");
#else
INFO("FEATURE: %s without DIGITAL INPUTS support\n", THIS_MODULE->name);
#endif
+#ifdef VMWI_IOCTL
+ INFO("FEATURE: %s VMWI_IOCTL\n", THIS_MODULE->name);
+#else
+ INFO("FEATURE: %s NO VMWI_IOCTL\n", THIS_MODULE->name);
+#endif
xproto_register(&PROTO_TABLE(FXS));
return 0;
}
@@ -1007,6 +1203,7 @@ void __exit card_fxs_cleanup(void)
MODULE_DESCRIPTION("XPP FXS Card Driver");
MODULE_AUTHOR("Oron Peled <oron@actcom.co.il>");
MODULE_LICENSE("GPL");
+MODULE_VERSION(XPP_VERSION);
MODULE_ALIAS_XPD(XPD_TYPE_FXS);
module_init(card_fxs_startup);
diff --git a/xpp/card_global.c b/xpp/card_global.c
index 22456bc..c2c7022 100644
--- a/xpp/card_global.c
+++ b/xpp/card_global.c
@@ -25,11 +25,12 @@
#include "xpp_zap.h"
#include "xproto.h"
#include "zap_debug.h"
+#include "xbus-core.h"
#include <linux/module.h>
static const char rcsid[] = "$Id$";
-DEF_PARM(charp,initdir, "/usr/share/zaptel", "The directory of card initialization scripts");
+DEF_PARM(charp,initdir, "/usr/share/zaptel", 0600, "The directory of card initialization scripts");
extern int print_dbg;
static bool pcm_valid(xpd_t *xpd, xpacket_t *pack);
@@ -44,64 +45,23 @@ static void global_packet_dump(const char *msg, xpacket_t *pack);
/* 0x04 */ HOSTCMD(GLOBAL, DESC_REQ, int xpd_num)
{
int ret = 0;
+ xframe_t *xframe;
xpacket_t *pack;
if(!xbus) {
DBG("NO XBUS\n");
return -EINVAL;
}
- XPACKET_NEW(pack, xbus, GLOBAL, DESC_REQ, xpd_num);
+ XFRAME_NEW(xframe, pack, xbus, GLOBAL, DESC_REQ, xpd_num);
DBG("on %s #%d\n", xbus->busname, xpd_num);
- ret = packet_send(xbus, pack);
+ ret = xframe_send(xbus, xframe);
XBUS_COUNTER(xbus, DESC_REQ)++;
return ret;
}
-/* 0x11 */ HOSTCMD(GLOBAL, PCM_WRITE, xpp_line_t lines, volatile byte *buf)
-{
- int ret = 0;
- xpacket_t *pack;
- byte *pcm;
- byte *start_pcm;
- int i;
-
- BUG_ON(!xbus);
- BUG_ON(!xpd);
- lines &= ~xpd->no_pcm;
- /*
- * FIXME: Workaround a bug in sync code of the Astribank.
- * Send dummy PCM for sync.
- */
- if(lines == 0)
- lines = BIT(0);
-
- XPACKET_NEW(pack, xbus, GLOBAL, PCM_WRITE, xpd->id);
- RPACKET_FIELD(pack, GLOBAL, PCM_WRITE, lines) = lines;
- start_pcm = pcm = RPACKET_FIELD(pack, GLOBAL, PCM_WRITE, pcm);
- for_each_line(xpd, i) {
- if(IS_SET(lines, i)) {
- memcpy(pcm, (byte *)buf, ZT_CHUNKSIZE);
- pcm += ZT_CHUNKSIZE;
- }
- buf += ZT_CHUNKSIZE;
- }
- /*
- * BRI: Software workaround for firmware limitation.
- * The BRI firmware count PCM channel number globally across subunits.
- */
- if(xpd->type == XPD_TYPE_BRI_NT || xpd->type == XPD_TYPE_BRI_TE) {
- lines = lines << (xpd->addr.subunit * 4);
- RPACKET_FIELD(pack, GLOBAL, PCM_WRITE, lines) = lines;
- }
- pack->datalen = sizeof(xpp_line_t) + (pcm - start_pcm);
- packet_send(xbus, pack);
- XPD_COUNTER(xpd, PCM_WRITE)++;
- XBUS_COUNTER(xbus, PCM_WRITE)++;
- return ret;
-}
-
/* 0x19 */ HOSTCMD(GLOBAL, SYNC_SOURCE, bool setit, bool is_master)
{
+ xframe_t *xframe;
xpacket_t *pack;
byte mask = 0;
@@ -113,9 +73,9 @@ static void global_packet_dump(const char *msg, xpacket_t *pack);
mask |= BIT(1);
DBG("SYNC_SOURCE %s setit=%s is_master=%s (mask=0x%X)\n",
xpd->xpdname, (setit)?"yes":"no", (is_master)?"yes":"no", mask);
- XPACKET_NEW(pack, xbus, GLOBAL, SYNC_SOURCE, xpd->id);
+ XFRAME_NEW(xframe, pack, xbus, GLOBAL, SYNC_SOURCE, xpd->id);
RPACKET_FIELD(pack, GLOBAL, SYNC_SOURCE, mask) = mask;
- packet_send(xbus, pack);
+ xframe_send(xbus, xframe);
return 0;
}
@@ -177,11 +137,13 @@ HANDLER_DEF(GLOBAL, PCM_READ)
unsigned long flags;
int i;
xpp_line_t old_lines = lines;
+ bool is_bri;
+ int subunit;
BUG_ON(!xbus);
if(!xpd) {
#if 0
- int xpd_num = XPD_NUM(pack->content.addr);
+ int xpd_num = XPD_NUM(pack->addr);
NOTICE("%s: received %s for non-existing xpd: %d\n",
__FUNCTION__, cmd->name, xpd_num);
#endif
@@ -189,44 +151,59 @@ HANDLER_DEF(GLOBAL, PCM_READ)
}
// DBG("lines=0x%04X\n", lines);
- /*
- * BRI: Software workaround for firmware limitation.
- * The BRI firmware count PCM channel number globally across subunits.
- */
- if(xpd->type == XPD_TYPE_BRI_NT || xpd->type == XPD_TYPE_BRI_TE) {
- lines = (lines >> (xpd->addr.subunit * 4)) & 0x7;
- RPACKET_FIELD(pack, GLOBAL, PCM_WRITE, lines) = lines;
- }
if(!pcm_valid(xpd, pack)) {
static int rate_limit;
if((rate_limit++ % 5001) == 0)
ERR("%s/%s: old_lines=0x%04X lines=0x%04X subunit=%d\n",
- xpd->xbus->busname, xpd->xpdname, old_lines, lines, xpd->addr.subunit);
+ xbus->busname, xpd->xpdname, old_lines, lines, xpd->addr.subunit);
return -EPROTO;
}
- spin_lock_irqsave(&xpd->lock, flags);
- if (xpd->timer_count & 1) {
- /* First part */
- r = readchunk = xpd->readchunk;
- } else {
- r = readchunk = xpd->readchunk + ZT_CHUNKSIZE * CHANNELS_PERXPD;
- }
+ is_bri = (xpd->type == XPD_TYPE_BRI_NT || xpd->type == XPD_TYPE_BRI_TE);
+ do {
+ spin_lock_irqsave(&xpd->lock, flags);
+ if (xpd->timer_count & 1) {
+ /* First part */
+ r = readchunk = xpd->readchunk;
+ } else {
+ r = readchunk = xpd->readchunk + ZT_CHUNKSIZE * CHANNELS_PERXPD;
+ }
- /* Copy PCM and put each channel in its index */
- for_each_line(xpd, i) {
- if(IS_SET(lines, i)) {
- memcpy((u_char *)r, pcm, ZT_CHUNKSIZE);
- //memset((u_char *)r, 0x5A, ZT_CHUNKSIZE); // DEBUG
- pcm += ZT_CHUNKSIZE;
+ /* Copy PCM and put each channel in its index */
+ for_each_line(xpd, i) {
+ if(IS_SET(lines, i)) {
+ memcpy((u_char *)r, pcm, ZT_CHUNKSIZE);
+ //memset((u_char *)r, 0x5A, ZT_CHUNKSIZE); // DEBUG
+ pcm += ZT_CHUNKSIZE;
+ }
+ r += ZT_CHUNKSIZE;
}
- r += ZT_CHUNKSIZE;
- }
- XPD_COUNTER(xpd, PCM_READ)++;
- XBUS_COUNTER(xpd->xbus, PCM_READ)++;
- spin_unlock_irqrestore(&xpd->lock, flags);
- xpp_tick((unsigned long)xpd);
+ XPD_COUNTER(xpd, PCM_READ)++;
+ XBUS_COUNTER(xbus, PCM_READ)++;
+ spin_unlock_irqrestore(&xpd->lock, flags);
+ got_pcm_from(xpd);
+
+ if (!is_bri)
+ break;
+ /*
+ * Handle BRI subunits
+ */
+ lines >>= SUBUNIT_PCM_SHIFT; /* B1, B2, D, E */
+ if (lines == 0)
+ break;
+ for(subunit = xpd->addr.subunit + 1; subunit < MAX_SUBUNIT; subunit++) {
+ xpd_t *tmp_xpd;
+
+ tmp_xpd = xpd_by_addr(xbus, xpd->addr.unit, subunit);
+ if(!tmp_xpd || !tmp_xpd->card_present)
+ continue;
+ xpd = tmp_xpd;
+ break;
+ }
+ if(subunit == MAX_SUBUNIT && printk_ratelimit())
+ NOTICE("%s/%s: subunit=%d lines=0x%04X\n", xbus->busname, xpd->xpdname, subunit, lines);
+ } while (1);
return 0;
}
@@ -238,38 +215,43 @@ HANDLER_DEF(GLOBAL, SYNC_REPLY)
BUG_ON(!xbus);
if(!xpd) {
- int xpd_num = XPD_NUM(pack->content.addr);
- NOTICE("%s: received %s for non-existing xpd: %d\n", __FUNCTION__, cmd->name, xpd_num);
+ int xpd_num = XPD_NUM(pack->addr);
+ NOTICE("%s: received %s for non-existing xpd: addr=0x%02X\n", __FUNCTION__, cmd->name, xpd_num);
return -EPROTO;
}
DBG("%s/%s: SYNC_REPLY: 0x%X %s\n", xpd->xbus->busname, xpd->xpdname,
mask, (setit) ? "SET SYNC MASTER" : "");
- if(setit)
- sync_master_is(xpd);
return 0;
}
HANDLER_DEF(GLOBAL, ERROR_CODE)
{
- byte errorcode = RPACKET_FIELD(pack, GLOBAL, ERROR_CODE, errorcode);
- reg_cmd_t *bad_cmd;
- char xpdname[XPD_NAMELEN];
+ byte errorcode = RPACKET_FIELD(pack, GLOBAL, ERROR_CODE, errorcode);
+ reg_cmd_t *bad_cmd;
+ char tmp_xpdname[XPD_NAMELEN];
+ static long rate_limit;
BUG_ON(!xbus);
+ if((rate_limit++ % 5003) > 200)
+ return 0;
if(!xpd) {
- int xpd_num = XPD_NUM(pack->content.addr);
- snprintf(xpdname, XPD_NAMELEN, "....#%d", xpd_num);
+ int xpd_num = XPD_NUM(pack->addr);
+ snprintf(tmp_xpdname, XPD_NAMELEN, "#%d", xpd_num);
} else {
- snprintf(xpdname, XPD_NAMELEN, "%s", xpd->xpdname);
+ snprintf(tmp_xpdname, XPD_NAMELEN, "%s", xpd->xpdname);
}
- NOTICE("%s/%s: %s CODE = 0x%X\n", xbus->busname, xpdname, cmd->name, errorcode);
+ NOTICE("%s/%s: FIRMWARE: %s CODE = 0x%X (rate_limit=%ld)\n",
+ xbus->busname, tmp_xpdname, cmd->name, errorcode, rate_limit);
switch(errorcode) {
case 1:
bad_cmd = &RPACKET_FIELD(pack, GLOBAL, ERROR_CODE, info.bad_spi_cmd);
- dump_packet("BAD_SPI_CMD", pack, 1);
+ dump_packet("FIRMWARE: BAD_SPI_CMD", pack, 1);
+ break;
+ case 0xAB:
+ dump_packet("FIRMWARE: BAD_PACKET_LEN", pack, 1);
break;
default:
- NOTICE("%s/%s: %s UNKNOWN CODE = 0x%X\n", xbus->busname, xpdname, cmd->name, errorcode);
+ NOTICE("%s/%s: FIRMWARE: %s UNKNOWN CODE = 0x%X\n", xbus->busname, tmp_xpdname, cmd->name, errorcode);
dump_packet("PACKET", pack, 1);
}
/*
@@ -298,7 +280,7 @@ static bool global_packet_is_valid(xpacket_t *pack)
const xproto_entry_t *xe;
//DBG("\n");
- xe = xproto_global_entry(pack->content.opcode);
+ xe = xproto_global_entry(pack->opcode);
return xe != NULL;
}
@@ -312,19 +294,27 @@ static bool pcm_valid(xpd_t *xpd, xpacket_t *pack)
xpp_line_t lines = RPACKET_FIELD(pack, GLOBAL, PCM_READ, lines);
int i;
int count = 0;
+ uint16_t good_len;
BUG_ON(!pack);
- BUG_ON(pack->content.opcode != XPROTO_NAME(GLOBAL, PCM_READ));
- for_each_line(xpd, i)
+ BUG_ON(pack->opcode != XPROTO_NAME(GLOBAL, PCM_READ));
+/*
+ * Don't use for_each_line(xpd, i) here because for BRI it will ignore the channels of the other
+ * xpd's in the same unit.
+ */
+ for (i = 0; i < CHANNELS_PERXPD; i++)
if(IS_SET(lines, i))
count++;
- if(pack->datalen != (sizeof(xpp_line_t) + count * 8)) {
+ /* FRAMES: include opcode in calculation */
+ good_len = RPACKET_HEADERSIZE + sizeof(xpp_line_t) + count * 8;
+ if(pack->datalen != good_len) {
static int rate_limit = 0;
XPD_COUNTER(xpd, RECV_ERRORS)++;
if((rate_limit++ % 1000) <= 10) {
- ERR("%s/%s: BAD PCM REPLY: pack->datalen=%d, count=%d\n",
- xpd->xbus->busname, xpd->xpdname, pack->datalen, count);
+ ERR("%s/%s: BAD PCM REPLY: pack->datalen=%d (should be %d), count=%d\n",
+ xpd->xbus->busname, xpd->xpdname,
+ pack->datalen, good_len, count);
dump_packet("BAD PCM REPLY", pack, 1);
}
return 0;
diff --git a/xpp/firmwares/FPGA_1141.hex b/xpp/firmwares/FPGA_1141.hex
new file mode 100644
index 0000000..ca65b7f
--- /dev/null
+++ b/xpp/firmwares/FPGA_1141.hex
@@ -0,0 +1,658 @@
+#
+# $Id: FPGA_1141.hex 3297 2007-02-05 16:03:36Z dima $
+#
+:020000040000FA
+:80000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6AD6FF4000882F0A006AD6FF4000882F0A006AD6FF4000882F0A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4455544455557475577775577675577775577765566665563625523235D2E37C2B51111551111551111551118B
+:80008000155111155111155111155111155111155111155111155111155111155111155111155111155111155111155111155111000000000000000000000000000000000000002552222552222552220025522225522200000000001AA1111AA1110025522200001AA1111AA111001AA11100001AA1111AA11100001AA1111AA1111AA113
+:80010000110000002552222552222F21F112122F21F112122552222552222552222552220000001AA111255222255222255222255222255222255222255222255222255222255222000000002F21F112122F21F1121200002552222552221AA1111AA1112552222F21F1121200001AA1112F21F1121200002F21F112122F21F112121AA100
+:800180001100255222255222000000000025522200001AA1111AA11125522200255222000025522200000000AFA4F44A4A155111000000000000000000000000001AA1111AA1110000000000000000000000000000255222000000002552222552220000255222255222255222255222255222255222255222255222255222002552220011
+:80020000000000004F44F444444F44F44444000000004F44F444444F44F44444004F44F4444400004F44F444444F44F444440000004F44F444446F64F446466F64F44646000000004F48F884846F69F996962F21F11212000000CAACCC2F2DFDD2D22F21F112124F48F884842F21F11212004F4CFCC4C46F6DFDD6D62F21F1121200006F4F
+:800280006DFDD6D66F6DFDD6D66F6DFDD6D600000000002F21F112122F21F112120000004F4CFCC4C46F6DFDD6D62F21F112128AA8882F21F11212004F44F444446F65F556562F21F1121200006F65F556567F7CFCC7C79F95F55959006F65F556566F65F55656000000008F8CFCC8C8AFACFCCACA255222000000CFCCFCCCCCCFCCFCCC87
+:80030000CC008F8CFCC8C825522200CFCCFCCCCCCFCCFCCCCC000000CFCCFCCCCCCFCCFCCCCCCFCCFCCCCC00000000CFCCFCCCCCCFCCFCCCCC000000008F84F44848AFA4F44A4A255222CFCCFCCCCC0000CFC4F44C4CEFE4F44E4E2552220000EFE4F44E4EEFE4F44E4EEFE4F44E4E00000000CFC8F88C8CCFC8F88C8C000000008F8CFC45
+:80038000C8C8AFACFCCACA255222CFC8F88C8C0000CFCCFCCCCCEFECFCCECE2552220000EFECFCCECEEFECFCCECEEFECFCCECE00000000CFC8F88C8CCFC8F88C8C000000008F8CFCC8C8AFACFCCACA255222CFC8F88C8C0000CFCCFCCCCCEFECFCCECE2552220000EFECFCCECEEFECFCCECEEFECFCCECE00000000CFC8F88C8CCFCBFBBC02
+:80040000BC3AA3330000008F8CFCC8C8AFADFDDADA2F21F11212CFC8F88C8C3AA33300CFCCFCCCCCEFEDFDDEDE2F21F112120000BFB2F22B2BAFABFBBABA00EFEDFDDEDEEFEDFDDEDEEFEDFDDEDE000000008AA888BAABBB3AA333000000CFCCFCCCCCEFEEFEEEEE2F22F222228AA8883AA33300CFCCFCCCCCEFEEFEEEEE2F22F2222200E8
+:8004800000EFEEFEEEEEEFEEFEEEEEEFEEFEEEEE000000004AA4441F14F44141155111000000CFCCFCCCCCFFFFFFFFFF3F33F333334AA44415511100CFCCFCCCCCFFFFFFFFFF3F33F333330000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000008F84F448489F95F559591F11F11111000000CFCCFCCCCCFFFEFEEFEF3F32F223238F84F494
+:8005000048481F11F1111100CFCCFCCCCCFFFEFEEFEF3F32F223230000FFFEFEEFEFFFFEFEEFEFFFFEFEEFEF00000000CFC4F44C4CFFF4F44F4F3553330000008F8CFCC8C8BFBFFFFBFB3F33F33333CFC4F44C4C35533300CFCCFCCCCCFFFFFFFFFF3F33F333330000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000004554444F42F22424C0
+:800580002AA2220000008F8CFCC8C8BFBFFFFBFB3F33F333334554442AA22200CFCCFCCCCCFFFFFFFFFF3F33F33333008F81F118189F9EFEE9E90000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000004AA4446AA6662AA222000000CFCCFCCCCCFFFFFFFFFF3F33F333334AA4442AA22200CFCCFCCCCCFFFFFFFFFF3F33F333330000FFFF9B
+:80060000FFFFFFFFFFFFFFFFFFFFFFFFFF00000000CFC4F44C4CCFC6F66C6C2AA2220000008F8CFCC8C8BFBFFFFBFB3F33F33333CFC4F44C4C2AA22200CFCCFCCCCCFFFFFFFFFF3F33F333330000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000004F48F884846F68F886862552220000008F8CFCC8C8BFBFFFFBFB3F33F333334F48F8843C
+:8006800084255222008F8CFCC8C8BFBFFFFBFB3F33F333330000BFBFFFFBFBBFBFFFFBFBBFBFFFFBFB000000004F48F884846F68F88686255222000000CFCCFCCCCCFFFFFFFFFF3F33F333334F48F8848425522200CFCCFCCCCCFFFFFFFFFF3F33F333330000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000004F48F884846F68F8868625F2
+:800700005222000000CFCCFCCCCCFFFFFFFFFF3F33F333334F48F8848425522200CFCCFCCCCCFFFFFFFFFF3F33F33333EAAEEE7F75F55757000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000004F44F444447F75F557573F31F11313000000CFC8F88C8CDFDBFBBDBD1F13F331314F44F444443F31F1131300CFC8F88C8CDFDBFBBDBDE7
+:800780001F13F331310000DFDBFBBDBDDFDBFBBDBDDFDBFBBDBD000000004F44F444445F55F555551F11F111110000008F8CFCC8C88F8FFFF8F83AA3334F44F444441F11F11111008F8CFCC8C88F8FFFF8F83AA33300008F8FFFF8F88F8FFFF8F88F8FFFF8F8000000004F44F444445F57F775751F13F33131000000CFCCFCCCCCDFDEFE28
+:80080000EDED1F12F221214F44F444441F13F3313100CFCCFCCCCCDFDEFEEDED1F12F221210000DFDEFEEDEDDFDEFEEDEDDFDEFEEDED000000004F44F444445F57F775751F13F33131000000CFCCFCCCCCCFCFFFFCFC3AA3334F44F444441F13F3313100CFCCFCCCCCCFCFFFFCFC3AA3330000CFCFFFFCFCCFCFFFFCFCCFCFFFFCFC000091
+:80088000000000000000000000000000000000001F19F99191B55BBB00008001000000000000000000000000004001000000000000000000000000DF8D07480000000000000000000000000000000000000000000000000000000000BE4E000000000000000000000000000000000000000000000000000000000000FFE40F480080010096
+:8009000000000000000000000000000040010000000000000000000000002F820C0000000000000000000000000000000000000000000000000000000000F04FFE8002004001008004148002800414800200008002800400002148000000480000108204000021AFEB05000000000000000000000000000000000000000000000000000038
+:80098000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F4818002800000000210000002100140010024001000040012814004081880288008088028002F04E21000048180000001200000000000000200100001400000000000040010000000000550348181480028004141828108204B8
+:800A000016012810A21140012810A2414001002B11484001280048408188022148008828108204F05C6580840180020000001002000010024001002100140000001480020040818802000088280000F04CBE000000000000000000000000000000000000000000000000000000000000FFE40F000000000000000000000000001002000047
+:800A800000000000000088000000000000B0320200002800000000210000002100110020018001000040012200000022000080280200001F3801000000000000000000000000009012000000000000000000000000000000F0DF9B00008002000000000000000000000000120000000000000000000000000000EEA80000000000000000B0
+:800B000000000000000000000000000000000000000000000000FFE40F000000000000000000002100000000000000000000000000000000280000F0E79F000000000000002100000000100100000000000000000000000000000000003FEF0400000000000000000000000000000000000000000000208802000082000000AF510900002B
+:800B800000000000000000000000000000000000400122000000000000000000D0AC0A0000000000000000000010010000400100280000000022000000000082000000AF4F0F20010000000000000000000000000010020040020000000000000000880000F0967B0000000000000000000000000000100100004002000028000000000068
+:800C000082880000B01E0280010000000000000000001400000000212002000000000000000000000000F0ADD900000000001800002001000000200880014001000000000000800800140000002002DFEB08000000000000000000000000001001000000000000000000000000000000E7E8000080120200000000260100180000000024C2
+:800C800000000024000000008800000000004800F05AF120010018001215022021210152241422203211481100000000808104181800800200000000884200228004BB5F200100000010020000130421221800420000000000120029210100000000000000004200E0C20500002E12001214001218122003110028130111000010020020D5
+:800D0000040000200220080000808804800242D0E506001800004800A0412001001100280011000042800200000000000048800400480080240420E87F0D28000020032812000010014822524220024280022001124280042001190313020028821488008008008800BD32000000A01200005200400120820400000080240180040080013B
+:800D8000146012004800200800000000F04F752002120000422212002001001904182A0422144220020022120048000038000020A284110048200842428280F84E82800220022868800480A22118421860210022621C2401132222850212144800428081820400222114804201282480028220061FA1058004000012000028000028800233
+:800E0000001A064001004081010068800100004002A8422100000088002BE3002001000028000040014860120000000022002006408108110012481382040000808804000020E4F10B282001002A044A02001818421848223122A02419240226011A84021248181021283211122081042A144201D021042842212880282884F4FE180000FE
+:800E8000288002120080024001208102280048001C22020022420048002842001902400288008200000028F0D76420A124221242222006200200008001009011002084220448221242000018420080242808428220A8C28A2422082084F8FB398004200280014820012001100100802202220018114222192112012200004228000020228D
+:800F000084240420042A8402F094652002008001802201222A0140011CC2212828142242141CC2614858228002180010010000000000880000A0844242421F650280810220045200802424218102800118008084042002384214225840010020040022004880022880028082F28DBC000020220320043280812401000013248404A012801B
+:800F80000400110020810419A44100008888001C080000880080F82F368004200800004820012002468102008001281001181248C0110000481228481001000000622022042200224B2D80210380041822004822420018004842A021146218001C12210642000080040048420080280C2088822C8A248828082FA40F000028422812282280
+:80100000A04128008001224832801401A0122022810100144A01001800480040012006880000C81448CFD50E2280240280048004004880024811228011021B1448881100001C82A41410A142000020068008288220049061809222F0445500808222A4455AA1432AA614421852121AE11262143E21422AA64136E11213F141214A3211183A
+:801080001CA4311AE21401280010B15101424220028A2888BE818482880C88132A28E4160CCF860F7AA431002A06222842281A83064A04901170210122785A2402326A041A228434211A4191512A2404A061482A3441000080084A22A828424AAC628AC221CAFAA31580A342222A012A034A014822722A87218201481A22C43110A1442ACC
+:80110000C4411CF261611B162AA416682AA245521A511122A01400484AA48828192824A4CCAAA4266AAC62284AA8C2A0421F5809000000482021820400120080040080028001000000A02418288002288002282008000082002008BEB8A0533AA33168EAA4771A2123A1465AA3653AA1111AA3115AA1231F13A2331F12A24617124815A107
+:80118000761F12A2711A81A4513AA7332A7211A1433AA1311F12A7662AA6241F16A2466A245811221D814AAA862A2AA2266AA6EA6AA666EAECBE015AA5551A016AA8335A24027AA3311AA3554AA511F051113A22A7771F36B65287B532F52161EAFF21613AAF113AA4133AA322111F12A7421F17A5311F12A244484AF261216AA446AAFA10
+:80120000A1A16ADA11A8C82AA862EAACA62AE228B2E2AEE62BC67BB9A0443A072AA2665AA5156AA7767AA3357AA775001F13F351113AF371716AF621212B571F12E114C7616AAE336AA7113AA6317E613AA36617155AD6117421F111311A01621D214A06AAFAA1A18ADA11A8844AA8848AA8CC2AA2EE2BEEEAAECCCF77057AA773A0226A77
+:80128000A6335AA5335AA5375AA5775AA1141AA1221F15F131311F17A3461F16F673711F36E516E712F671E11F17A57E5E116AA6755AA6334AF431711AD61124F211217A87A4461D614A068AF881814A5E11CAAC266AA6EE6AAE22EABEE2EE22ACEE2F470B2220022248220048221280048082041228200442A0242084A12422422A0100AB
+:801300002A0122482248228A240280048A04008228A024827F180F18120080A414202201481812001812A042422A84012822281302000048A01200A01220024200822008224A22A8248242A242146FD308481B21B011A2141B212394212B1419B24299212B9413B14239212F1439212F142BD212B921C4911F22C4811F2264112E4296E1CA
+:801380002264192CA4292CB491C2421B29341B29421B2923B481324219B24298212B84112B84222B84222B842229A842882E427FA802481B61481922B4111292612396212999612BB419B24238212B941129BB21D412B92394921F2285FA21D2882E4296E12264183CE419C2421B29349A46B39166141B2923B481724291212B841B282F5F
+:801400001412F142A1222B84A2232492822B4A212E429FFC032088040080010010820212000000210080080000140000480000000000000000001002AD61A014000080021A220100124691110011385880011001281C2101284218222A04141C826115224242002048018002A829060014FF5405148A822201C81C81642448222386019060
+:80148000224E126878311C32419021A024282715A0243052244A022981812301400120282C784122A88421114848800C1C02CF64081A248E220120031A84412226823141298284E234816224001A028E21C0211822904124482022B5116213121381222404482042211C6212E02628E42804002FE7011400008A44816422482280013011BB
+:801500002C818432111C93411811808492521458B02221A41228290500804401208828E83428080048200280021FC60100008044014E12602400001100002148000000420000000000A04134004824822400820042824282004F4702280080011829020042002044023041481410C142481001210068002042020000000088864111828886
+:801580000842880028AF5208220080216421201182240400140030412914010042408104002A0400281002100100908200008888802C840822DFD20E00000014284800210080042100200411460200100200000000804502200480788251218800488008007D3E1468142002140023022800201101193221204102522982A242482228609D
+:80160000110040810422901142141D4222110090428028042D42222306F05ACF002A041100282200002882002800246022A0214021A8218004145022004816014800240021158282042128400110022AF4CE990012200140011400112140C112480028824812008041021800006024001C0848200420021002244810018A04005F41092266
+:80168000130338401181C221804203821611B1221411C1222084A12428281AC412A034204102211C1412C181481C256414255122111425224402290870420268C042DF5C0A48001100221002000020012228802902241081A242280000000018280000422822003042A02448004A0A20F278AF800420020000004240224202254222044A9A
+:801700002814914280041C846424001661244810318280A6244280924211004220A248212C082022F442363021002082021221001A021304230542484002A024181280821A82A1144A08004AA8822829B4822181080042000048002004002FAA042002140020022C4202002042210224111134400125014200002440010010011100282C6B
+:8017800002110000824800003769001118001003001302212122802208224828008AC1618015C28288194181CA8140018048928122A821108204211002482124C821248F1D07000000002400000000800400684880410280C4411D42208184844282A42442422084064A82041C1422A484224001007FCD02004800421842A04810010000F1
+:80180000101151211082022004002121001908800400A042212400902200004282822188F0313120042820412102A0122186023821102141A2492001246E814021362229A229800490828631A12A488299320082004011022120080048D0B708200C001011012111210010010014298404004602210080022412150210010080022088824C
+:8018800008800810014011721F0A188004880000142222A0282018428202282839022C83820A80012001802884042A681288002044022800002448288840F2AFDAA054C621212269262832602626130334C04215C21225D1225A2329F441612CF263415692635021E0368421C4332BC511112C32A3212F36B611AB862842686E62221423F8
+:801900001402CE422C282484C821F051FB1426210A1410113141903311361222D822125112684219E5146218008A0A46E326A244AE422B9125812C58112D834E218A882AB291A84830C22F220A27184224409222A0442F18C822C21C14F292F600800222601124248829820E2925A22922882C6614486A63221B46F02271B012B422BA42D6
+:8019800021F87142121286A24C8A7C2121E42C8E31621C2602230429348319044A8C28CA4288218846F27C32A021A021A021421AA214284A014A094A094A298229820998000020010028184A02280000000088A082800888222002AA04AA045B2414AAA113A0733AF171514AF421313AF3D1D12B773F1EBBD2E921BDD2EF2EF3D3111E72AA
+:801A00003F19AF8A2F1DABF71F13EB2AFAA3A14AF411117AA3EFEEF23F3FFF92E22BAAAABAB1E328B8E2CA221F3AAEEA1F1BABADEEE22BEC6E622BCCEE622BC41F34BC82E82C9E222AA24C2B242BACEA22E234F6B661142AA1573AA3226AB431B171F761717E72313BEE1F14B372C3C22BECEE323F1FE328FE83E17AF112312AFE21A3EE48
+:801A8000B23F1EEE2C5D132AAA674E523F3FFFD2F22B261F24F192D3CEC32BAAAE221F3AAAAA1F17A3776E622B66AAAACCEAA6E61F34BC82E82C9E222AA66E4AA6A4EAE22EE424F627ADB051D611F4313115D13152332F27F7534329F1A1A32B623F139632171C1DC12F11FC62312BC83F36B433B141B2E2A42A2E338EA32C4EF223211F74
+:801B00001FEE2EFFF3F32F37B5D2AFCD1F2DFDE2E22BC8AEA23F1AA28ABAABFF1F3EFEE3E1EEE22BCC1DC33F1426A84C4AE42AD822B862BEC2B4A2BCA2A8E4242B64B0D1F6115115F121211F31F3535235F2332329F171723F2AFEB1E32D323F3DF123C12F13FE42112B513F3EFCE3833F15F3F1711F1AE232E23AFE11E315F393331F1F65
+:801B8000AED83F3FFF72522BFDFEF23F3DFDE1E33B88AEA23F1AAAAA1F1BF373711F3EFEE3E32F22F242423F36FE436337383F3CF442422F2AF822A22F2CFCC2422BCAAAA8A84E43AE780000000000822482200882204882242428042800A024A0240020840888A08248224822004800002008008220F8BF9900002004422004216880047C
+:801C0000484200C081A024224A622280A4242722422A2164226012601240A2418004482A0888A084824A2202802802708F0D2E411B21221B21621B21271619B26291212F1499212F2419F1429213F242B3222F142BD212BB21C4911F22C4813F2264112E4296E12264192CA4292CB591C2421B29241B2923B4917242B181724292212F2653
+:801C800098212F2498412F3428B24228F242822AB442A8424AE822F46AD5C05119C451114E13F0421313F14211122F14B911F242B313E1343B114E9213E11429D912B1B394121B5A183F22AC811F2265111F226D113CEC15D222BD81C2521B6929B4917242A1212F3498212F3498216E82113C8AE63428E22428D222A84828231A025FD3DC
+:801D0000062088040000001400280000000021800188000040210100480000000000000000005012F08ED7204E0120921240911140021C9442142B422B142800238C061114002034122228482A14C1222410238446822612214802862104002A084220C2211D8B14200820A148212332222F11145221C01212143448141A22036848224831
+:801D800027322428628095222426C2411982A22137222462102248328100203862402228884881F838F41468130CA021185012182503142E42D023423341234481F222122A044813A21826022C8426722122845223192694222D1319F642224862211188152242214482042840824881F2EB35000040A248212827121A440225A141182A6B
+:801E0000842102124A084A12012C444182820158284828241902280026022282248220088228C082824A082882AFD708008062124023011321021840020028134111811201200490124A820118B0220418400127224800800482801402880000F04D5180020016828101260224108231424662122982042222428014C121212A64142024DC
+:801E800024221401255132001820224C43024880622248221B4242800A3F61082200281C8161111226020012244622942223A24210212242810400423B41481A24048004182501A012008820142208222C022AE8148204A2F058C20000C0224002301126022118001100132142210440E11214820228002A819423241424115022422242CF
+:801F0000340042801482040000701C0C1426011A021321B41182C4118032110024A0211C042A61242005341212211222141890220012221001481C24482184AA8420326221882984180224A726808704820028C02122808432812022122103C022137111228282840280C4212210E124A2611902282140022410820220042248002304F0C2
+:801F8000718A001091812880010013811192423011006022118004001130114A6211000000301148802282280422211502800820020042FF4A47611622400116219521681C2281052F1804322322E2164112A1241A74410234192163114A3211A01224114E221A92211C215612A0242714C225712222C8C3E02284022C84064820F4D738EF
+:80200000801141A12122202241214181D2120110011301223840012822422480A12422002800182800228008800400E0242882088800F0147BA0242200240000141200000020A4121F2481042280041C820280642422004063121420422104E2142C08A042C248A22008A2F07A3300141904429012804162242C8201200221400222202195
+:80208000641117216021142812121130115A0220C22114008A12C32220880C200840820670D201180022A021188004282142904280022100000090424061251C5122422C2182542100008002488084146112002200002842CF2806009011284846220228C041241C0148132442C3110011422501242C44222204144211340024428012227F
+:802100001281024002002026120221F0BBA81021045811231181112111410200901100402132418002211419240228220018222A0114230400101221220422304200422004DFFE040048800122001082218222011002482004272400801142114341034810018044029041002413848214021022261202281E1AA024802202000021000039
+:802180002012221401108102421480042002602238291242112102424240018880022C0C00130882006F7A0D1081022AC121212412801261111552211222001412A0212828A014284A01429012801482812202289041212A042130412511022200001425F2C9632021820400221B522CA261183880061120322220921123041931421C280A
+:802200000152304214521462241E42460242242813020011280048002582A64248481EABB011012E21F01132121B2312198452231A91421904422D2362F01112111F157221E1249222423CE41343F223124225A2242F23A5462A022F23D1212292422F14024AE42AB48266222B48248223042992622E81214A44E124C49CA02266011E1109
+:80228000481722291522A143F062233651221813A3122819044A91422CA4421914B24191411D114A143141184651121F21D511D311021D616E21242924E214021B841716CE416A8416220428242B8226015FFF0B4A9421A026222B34B021F722122D133A1781C1112D43281954222D212F14E21122A2341866D131351227242B651E212F0D
+:802300003287F71242281F217242F13242F022412304221F16D21312613214241135A382CAA44AA66224EA86A26C23B2A6060000200442200442200442200420010000800280010018000000480088800888800888C0818008A84FB943F1414111D011F651E33D2337141F31F463613F14F321333F27B642F4511229F262532B552A72211B
+:80238000F373633F17E714A1112AD2315231112E322AE4266715522AC2322D234E52111B322A562135F323213B224E423F1E9681113B881398A36E22CE8227282B8226B2C2ACCC486E426F6341A1641B6680E125F6537327243F31B572B742E326B731E327F753122B552F32F172522F26F663433F32F263712F16A3571AD131F481C31F8F
+:8024000031F531F33F13F571732F15F472632F23F312723D231F24F673713E123F121251313F16F663232F32F2A3611BE61BEE3BAC1398C32F2EBAC2682A2BC6EEC32BCE6AE42CEC26F626BC141F11B321D611F211211F3DF673731F11F141233F12F623711F327323D233F6135325F122333F15F563613F12F261416E512F16A7731F369B
+:80248000D733D22138432F26563125F211135E536E624AE415E537C64227223F32522235B223B623F441423F34FE63431F2EFC82A22D8123E42EEA2EDA22BA62B4E2BE829A424AE42EDC8A4F81B22156111F11F111233F31F212223F35B332F723633F32F373723F31F713532F11F162733F13F321233F367633F373516E711F13F76173B1
+:802500003D231DC31F35E13FF712517E521F33E127B772E725F533733F35F733711F33F321234AF221223B663F26F243623F34FE63631F367642F343813B442F26B262E622BE62B4623422AAA846EEE2DFBE060022E022012A010026022400C022C022112021044A122114A32431422142217022012712702281440126816412481448141F
+:802580004880848284024A025F190680021100141190212200800120822223A44200000028228001224200002410824202420000001002422044B2CA02481B21141B21421B612394612B1419B64299612F1499412F14A9422F14A9422F14A9432D912AC4912E421CE82264112E429E212E4296C1529AC2421B292CB49142B29122B4917266
+:8026000042B28132421B282F24B881F2428213F84282A22B84A22F24289A82AA84E82AE44401141AC6411B21141B6125B31156321B611CA8612DA1682D931B4329B821D412A9432D913B4229B921C5812F22CD812CE518E22265192E438E212CB591C2521B682CB19166241B2925B28162241B2827241B284E2213E82422EA24227A42224E
+:802680000A2B4A218E42A7D200824800000000000000000010020088000040010080050000000080020000005012F0121B001214120025611224482224182D4214328290613B2142686A011421801201146A01108224822162241C2213C142C886922124824828882A88A6484AA84842282FBD0C2282001622239442160130C11112241DFD
+:802700004212A221C0118220A242421148237142A24188221AA84282200AA84242282B282880180182884200282681C221488EC400821148242417241C02212846323112111C3182266236182CA4426A21D121A448206411241AB41104182B42C26220A22427146215A268298A88322188428AA2482228421F2228E41284F24118202201DC
+:8027800012181A02481C810413488254222A84210813C211822082021426022944A182288800A0928088828102482413480288008242A242A280F4D58A0040012460121226A2483C88048220018A442109800300009043800198131802186036E012018024A248000020420288008AF4852FB0210118E01231112999421C3411228E121CA5
+:8028000021611133042D222C3641C041142A982126916117211922631646828522242651129012138814C262822904886024C62172C2A2C28A24024A82F2E4EF8001117021522192423C348122501282B042012BA41C3443304118902128221811111146822511110233014A226812809282800460241CC822288A24240A42A2AF5E08261F
+:80288000011280813121238182C5812B4912181C110124281A08C021A21061141582B252228601A88A248601D02341A11421482C8426880820044E822223082082F4AAD3142212422042820423A461111CA62180841A82860223C842004819A2294820C2112601C0122E914838298232814A42018084BC82928240A284808604212242B728
+:802900004820015200280000388032C11414C83100128E2213210188001082C2416821002C0400480086314200284280840200482180F23FC100001A220430221C0224101282012001280080240214222A0800128A012C04008001258204100100A240022221428A0457F28082012A01304229A224581D322E43181388C581241A042682AB
+:80298000A98218806612384A622A2211422AB11228E11E51222C03E011AC42341314824423880CCE22E824222C8624A4682CE21E0118800162280025810240824421B24238212800481448001400A0212242002100282240028848A04824000020040080744108C03122134182A1420046C121288A810138D02228110248112113046022B1
+:802A0000521119828284C842120060142418248223222242E21418428288040000CAF27BD490410000280080D2221121122201198283C82110118204422221242824182824106124202C011421191401001031826240022CA224006F7B0700001110C22180A4428821F02281422C0911E01518A181002C420100860221CA921142A2153257
+:802A800021821A0246216824502348488828007022020024EF1F0F0048221081024218112304284224222032812302236212008014714231124800282C12210840818642010000002682328242C83042F087D1108112013890414200183C41611182B01318011824C0C240812122122161182A3422112B24002180020000116024A042A265
+:802B00008800400280F8B1E41468A061006021200220829882422A08002382A8A13142188028A8434230918601E024E1188682D43204182388022800282503C042208A0829024F360E00A012240017221121008002230132000018E02681C4411460221A024821191102E01228A16148264142022400002088022848004BC280228C91417C
+:802B8000C0221C01482312A258182416015021A8245A2284042800422218008004003C04230222242A94411CA44222148830422A880420428372440B109141C0311301403111421081221201C01112111229E21192128AA284112120041423022280244102210028400128800421A21C0C10025FE103428E211F1342C1231E231327F4437B
+:802C0000222363122B3523B113B182A214273812AEA32F22A93AE02AB151E232A2224AB4A3C41117112F1B28F362228EA230221C3A838633832F13E2177562B3834A8162222B44141B842AE22832622572C1A2E229641225F261C3141F12A41A30311229C1612D211C943119C5431F384A22632319E22891111CF251431E111D8126334113
+:802C80001AB421C2215AE22293214E6230622F122634622CB242EA13A21490212CF4616237121D41B0824443A24486A288C8A0261C84FAEC9380324118781B1213921213024E432F25B2A18881F841D139AA933F1232121391821BC65A964248C22561243F22B442E424B183A14819F451121E731F2844B131E42445D22222681621422997
+:802D00006222172423BA82BC2288AE262B22860220EE5C0300008280042002200848002008800200000000000000A09200482200000082280048200800DF2B027AB731A311171215F1113116F242422F24F443432B661F262652213BA94E418A38A23A68221BDE2AE41CE82652332F2A732183B222C2421F1CC8422F283A8237111F24F4F6
+:802D8000C38225F221628AF811313F14F48181171A1F36D213F661432326B841BA42A48C4E822B8C312100AABA26037AA7731F1131111D212F21B3537521F343433F27B752F773732B311F38F8D2C22F1AAA9A2F18F21391AE933F1EBFF3F9B1917E7237146EA217321D232F2763263F1DF982C32F2EFEC2E21F33F251723F2AFE82831F07
+:802E000039E925F6416135F1A181AEE11F36F223633F36B64266181B842F2EB6E2BCC2FCC2822726214AE424A4EE4FE9096AB6312471317121F333315E5237222F24F443412B773B762D313B981BDCBEB33F1B7933B2B1F893821B9D2F1EEE1DEF36D722F463E117122AF212313E722F19FC92E32F2CBE82F633311F34F2A3E32B883BBA0A
+:802E80004E513B333B441F1AE81EF261211F32F663433F1432411B8CEEE22B8E8AE82CD822B442B462A644EAFEC968A0261F13F331311B2319FA13333B5517222B623B763F12F763612F11F993932F2DFDB2B33F1BF932333F1BF9A3933F1EEF1EED1AE934D713F4414115F121632F37F471632F19BDA2FEE2E22F28FE33733F14F6A3A31B
+:802F00002F38F8B3B37E633B233B451F1EFCE2E13F16F222633F36F643411F14B4C3E82EFEE2C22F2AF8C2823F26B422A8666AE62EBE89012A0126012E13602220A24126A3413400122413C1221381321142114A122214A22419A1242B124220F4221150124083E4120126816432004834482CA2482C02282024F8F6E8C01128180012148E
+:802F80004824008200182A048008800400800200005022280026224882021002424800290829280880888402FF5A03481B21B01122B411324219B66291212B941B282B94112F14A9422F1429FA4291222D912AC4912E421CE82264112E4296F1224296C1429AC2421B292CB49162221B294AB89132621B682394212B8419B24238812B8476
+:80300000222BA4222B84A229A842882E424D8A80B41186B41122B4111292612F1691212B941B282B34822DB31B4A4A29FA4211A22D912B482D912E521CF821D21E813B42922F2264193CEC19C2C21B292CB4D1E2221CA1841B2923B681F2428219B24298212F14BA813242222BA42229A84A29B82294822E429F3607200800000000000055
+:8030800000000010021800000040010080040000100200000000005012F016A440118191111A062114428603230860188AA5242E4282A0822228C8E024A22111421E425220187222210422222C48C1128A84E21214E2248AA8482908A02823C6A28084C622FF4804389A2202141601322D1121981CA1941AC8421182E033C4B21CE1188406
+:80310000013C02243831002CA461421A64221912331219A48629042D82824A084811422682088219A4846018C2BF7D031332F11A82A141112128211129082AA1811B84568166221B942C681B4E21222B4913A24A32256114245215E22884E4118636633C8217D1322AA4842B821DA2482E42AA84AC4810228AAE242DC2482E412E8237D90C
+:8031800080011061121230114E13822C31914A08248288482C220382180025022E128005481A42020021A084482C012448888210112282082186018088645BA0422800241A468284210112002062241228130912282A0420011002211288282C081041019041230410018242E0242208202488029F8C07183031281B12E014215222824A10
+:8032000092A28E1286029642C18286D12264171C220529C2411C3611141BC32E413228384239874282A2691B21E8C083C82CE6220C11A0A4882A34228E42288084F4E2CB80071C21621329C451422C21A82482C082C03213A4818A7242B211220280C241121641A1A5482B122228F0428222241322488142718223A42482211C088AA6846B
+:803280004A3A22480042C01300282200382426021230321E8200822410C391421CA1432A14024E214012312180A1812A641300B021A512C8484282241306200422216028628828427FCC0E18484001221140F1411211421AC2434813C6821CC211206A2C13311126E2142299729022142D415222F08122182C88280400142B241480924224
+:8033000030220048250223A84A283BFA601448121240A2422828A04114822001004A481241028252200C80B4224801F042318084C1112830A2304220088A022100488A22042904F07DAB204201284218182C81048825C24282200100281228420040010018A08221800428001B4220228208824001244A6822A0824A0820FC9C82E015423A
+:80338000012E1148221CE12221228428F44292C6B11234312419A21C222F13A8824621A8242D6115A21290421729429A247252E11C9212123B816814232222A6481460284601102272C2A2A423AC848A066E55008001203162601413F142131128004888400180841101208504268202282128002A0880860825838228085022224A888458
+:803400000200A04ACF98072222224081810448601268160222A0181211126012144280C24286021114822342A18230121041116114201822260280082022040028F0AC188004106124111814311B8182209681398144010018125890420042100213042813240829240222200490824611611800421082084882246F810F18200220921177
+:8034800042800242230848268202210020024042011126820910429241422C212C028082842402820000008824282821FF250F30112003108212012304002A2804002C19C1518A2482E818242222880440A1682130A1212064281114822601420014002182208808B0FD0C8004480000212123028001292121423221488011232C48C28220
+:803500004219244A22061908601220842602281442882988246228800842214240F1A12BE012044880044E22122AA1941298622908190A19210139881E82882161141813B18223242D89216428A04886D1212828681800802244012024220A422180F22521140040A1122305001100184248100139040011501268181C040028400228121E
+:803580001002242014211202118200824821000088DFD403122220220221126622048681A82425822848018246028812221423222188D121242394922411481122880028214288002C84020022008088FC554100802481C1612400284226021983D12121022024012382840100223032402124A22413AA61602214683041001480228808EF
+:80360000484242C8A8001F8E0E1A25A6222095221AB422B141C1121CA1946ADA21A124D82B81181F14612327341B541AA96142CAA2241A7293E111A5138A3A725ACAA1CE82283D228A682626621611132486B2412E581128A084C8232CE82428E2384AF241D9306128A0312AE2279132522813BDC2A6282B5923E93BA4231C6112211C9832
+:80368000512A722162148AE613B412B482C4823F2632812F12C542AE42483D412F2EA91117148E411F1898632AF682A31D41CA64121988B822889842238208212324021FBD4B81C2117061C1531D411724342F32F422E1221F2244E2149C12373C1B2A1721B082A5811E81CE612CD812D8217821E3348926F842E156A2282D11372E2AF203
+:803700001141A6B12292A12B2482C681C4222B827042A14C1328084E222AA6C48AA4E8A0CA6FBC0B000000004800221280040000000000000000000000000000000000000000002867C1144A24041D414E423F34A4226AB752F7E3712B791F33FB62C23F24B843EB16FF22912E322F15A1A21F1DADEE2E513E223F3AFAC2622B112EF21F74
+:803780001FEF37F6B2931AE429A94D3F18F281411B89243B4A1B44CA1CE1387EC3F181832BAAEEE22B461F34F483A186B282EC22B462E22838822A8AE82EBC6741A1442A86F211214E423F35B762B633B373F771735A7721F3D2F23F2DB8D3E836F6A2B13E323F35F1B3B11F19F973612E711F3EFFE3E32F34E611F5B1731F1BFBF2F32F6D
+:803800003AE639E62FAFFD3BE83D631F1FEB283AE31BA81F1CBE81FCA1E33F1CF8C1C32BA84E232F14C6423F18E228B8C2EC2CBCC2E82CBC82A8A22CE82EEE4B015AD711561113F241422B551E121CF132313BF63F21FD63A32F25FFC3832F28B922FF22B23F22F352111F32FA93D12B721F1AEF2AF9A3811DC23F11F161531F3FED2FFE10
+:80388000A2A32F17F6B2B29E423F3AF2E1411F2BFC82932F3AB242F4E1E1CAEA2C7EC3F1A3A13F14F461622BEC1F34541386B2C22CA2AE8E822B882BA88AA8CE5FED4EF141611D211D211B231F21F653633F37F673713F17F3F3F23F2D7D63F3D2D21F39B9D2E927F6B3B33F23F353133F3AFB8391FAFFA1F11F3EFCA3C11F22F671733F63
+:8039000037F5F1D33F2FFFE3632F2FF6B2F2BEF23F3EFE43631F3BFF82B33F3AB2C3FEC1E12BEE1F3EFEE3A13F1EFE43411F3EFAC2C11D43371A8E822F2C7C22B2E2EA2CBC82AC66AAE82EF6439D0000C012482C81642248002412241A84120113011100102314231483B22201232274220126012601260114822282804421088228822065
+:8039800088021FED0522002880026820282621842404210020248308282A24014A024220040012002448420082A048428A0482800482A0488886B1BF051CB41182B11162141B21271419F2421119F662911B292B94112F14A94A2F1429F24291222D912AE414E922C4812E4216E12264192E4296C1C29AC2421B292CBC9142B291A2841BC8
+:803A00002923B481724292612B8419B24218B14228F24282222B842A94822A84E822F4D548C04119C6411A62141A7242A1212F14A1612F3639912F16A8282F14B1A1F44292122DB3AAC4112B422F14F9A1121CE122EC11E82264112ED296C1C31E212CBD9182BC11D622BC91B242B811F2428219D22298414E83282F341AF142A2222F2490
+:803A800028C2822A94822B4229A8428FD50A000000000000000000000021140088000040010080840100000000000000008221F01BDDC0511828200123A22426611829480221142248B23022211A82A64A192AB21184C61120C482C0A28098212810422182884891422886212C2432224224306222C8686EA300190213314113C441214ECA
+:803B000012124AA121C8308210034A01E2C63111D0223441221829881C83041216C2421A08166128A84E92111B242B288028442228082262882044817856011965152814134121A2420042282B862419083924A114212CC4511CA4871B68482E115A68194223F48142E028038AB4A281D22124B8230888823908881BC2422B848A322240DF
+:803B8000C2822682A2484A6A5A00282021847442036E1313999212240022200A22292A8A430233226422804801001221112001E026196116282384028200A0424A024248005FAE0A20010048216800981A4402888001A04242480042221420844D312242481B24221301E01401241129280882308146012400822880A242CFE50F421CA2E9
+:803C000012221F2631216602344A088A226128160329C4A24E218813B821A821200223B4123223212322A8212F2201232482228B3851AA21A224482D624042024E226024C842428248F0E56E80C4313228181B42484A4291C2181A86419211002C82A224A04A0028281C343213A65834A025304323422182E21C611482112B2842468208C2
+:803C80008246C1420082C86882A042AFDD0C00003C062912028028482288189252821984681C112A01482400212522A282B0522222A4218009182E1228428223021013824262244200A024F0E55520222243214101341001281A0A339411008A02112426A1A42C88A21C5288481114828280C6421222681C2458211C283821801212828841
+:803D0000085022902280FE77ED808404181410210152A280860C2008122460242001880011122CC8215828004880480268222442821128C20023822208422148F0EE991001202222911280061012022022621111228888409122002400800480612110012009202422C44282002322840C42828800BF19042E4120621126119112344848FA
+:803D80008A82A24842211128122E81308242F02182A229822435821A4423A458A2181A121222A8241C8846C2412B242A4431822C08A8292606214A88024AF86ADB00281828181214122213410229216814328811182214821C82042001142028020048C01128241A84982188821C884482440288828848218242221FC90F20288201A041A8
+:803E00002081288808404101D022018829281241011411004022843281989021A024822813820448904119282C042002884082FCD76D0042482232282410120180088820921242820000223C8804602422118820C4214022081480882294221022042888002200001F520320080080022820149212302286621229023012603A88860262A7
+:803E80001218E012082C220D40011022810490412012010022008225828288F2563E802402429280110124200825011921082E834041012420042AC4C10048202214212212210282002819028828400280028014027FA70B2819220122008214E0160840010022C8800B2094A2421502B28034932916212212022A888498228A440200247A
+:803F000020288608250262298864127F5A458104281B2190112334622422A02482A8800200628082288281022480022200822084C441001C04280022C0A2142C080080088882A72F200100800211401142021200128A018220013041901282002084098061122C018A810413828C82344148482C040000214820F468CC0092000022480013
+:803F80002227142880280850122C4123011800222A84A4490030C214481200800248310042288082880220282202F09371A038800400002C021840A2A1292181081A2224021A044E1280888102232D01181800584AA1811C6418400200241C4202200228428848B064041A328112381A91212E42272432E022088E8229B82269181B8898F0
+:80400000130419521286E221845421252394A1482B281D2229AC4C682ED116417242031DC1A2A0682E4319024850222CA62A00D022A2881CA4A8BF1F09188228132422A1312819D23192232C38321921A8122AE123F222F1482B9B3AA1A6E01EA8C2323E623AE126B831282CAF22141721423AB281A2EF282B841B2A27322B242248823BD6
+:804080004C19228E082AB2822A9262822CB463086AA4632232282223D411443282CAB5C3069643F111822C1262292F2F482398111B823D2223B441B681A14C184E421E512CB213B9D188B221C2111A8CA11C1D614EC142A0441F267261C381CA9C8221222126A2CC624A38622F790F0000822A0122200222822081220180228822810228D4
+:8041000018428082012A012A2184012A012A0822000000008002004280D2DE45215811F01141D03118F24321211F18A2153F1CAA8A1F28A8A8AA8851133F1EF9F1833F1878A17141E12EDC13E42AF1134117323F1BE92BBCD2EC24B492A8CC17182C7C4241D213541117383F1C58312BCC35D113E418AC8A3D81290A8A4812E2221A028847
+:804180002CBC7749A1641F16A6311F1322F911332B452B2621AAA2551F32BA82F283922B911BAA1B111F18F8F3F13F137A83A13A5E127E721F18EC22FA535117323F1DED2BBA92A9CCFEF21BECBAF711C22F11E521F233311F15F621A33F1CDC31B242A6224AF6E1E11BAC17342BCC4A88E82232222AA8888ACCC22EC25FEC4C81F2216161
+:80420000281F13031F31BB12F24121281DA1DAFBC3A32BA83B983F39F9A2932F12B1A2F9E391EAF8B1813F12F9F1916E5327126EC13E413E632F13FBB1D11F1BEC39BC92A8ED1F1FEB21F413711B211F13AB251F36FEC3811F2CBA43F623213F34F622232B6429B8422CA48A2E2223E222BA2292422AEA24FC1F7214DAF621611AF3313144
+:804280001AF111332F27F663233F12F221A13F1FFFA1A3213B983F39F933B33F33E32BFBF3F32F2AF2B3211F12FBF1B1EEF3EEE32F36F672732F37F752D11F3FFFB3B32F2FFF32F2DAFFF1F11F21F433311F21F233332B256EE33F1CFCC1E23F2CFA63233F34F623233B4415F3C3C16AB822E8227222F222822B8A8AACE66EC25F7206220B
+:8043000000A01200008220088220480228122008824221004A82212422948280080088488024822402800448280080024A026F720120012800002058224002208818C113C081E014088800192408000082142830811411888A0211144800002100002A0426D1EC05581B21B09122B6117242B211F6421119F242911B692B94112F143921C1
+:804380002F1429F24291AAD412A9421CF921421CF8214256F1224296E12264192F22A4292CB491C2421B29341B2923B491B262B981724293212B8419F2428313F84281A22B84222F2428BA42A84A88AE426FD4031CB111C6411B216693212F32A1416621F122811B492F14A2212F3438112BA413DA12B981D412B313D412DA21859BC14A9E
+:80440000FA23129691438E212F32ED18E22235812CA5682F12B181F46213112F26A928273419E234A8282F34A22846217A42022F242A2AB4A214E22AF47DCD00824800000000000000000010024400004002140000000011000000000000800421427F660D20032691656E132CB1186244148A92221280AC2812912D8311490442D0A18228
+:80448000148A012D41234BA2A448238212C6221125E1124892212126039A820C2324362498A1882D2C904868DEBD242088A2182C014302272889299418C2A314052504436228862826B221848C323124A6E14A81A4488C4184B192B4811282E9441BE24488D82402A22410813888422282A048222E81F09265242088B2217445E231C6161E
+:804500008B1241AD91A229A216278417442A185629176211E7282A2424D7382A381B2CC1212F48823DC1A14634322AED4C82721212F48221472C1425C22129A829230A8A648AE021988888EC0A898CE67D04A02120A9122002230C42168808888001888242801221A4422820D8218502DA025022112113E81609A02843022220141182E492
+:8045800044220230422228F0582BA0122841842F32010020E12239111890121012D1488284228102838424312114232201D0228892C41B288840A3418828410080082422248AA42480088BA448FF66421123B1134231448371247121F8124366C1412C1AF112484DC11F88A1182FA8C6921EA353AC2448E23938223D642D524B6986E2127A
+:80460000F8C2248A2392C12B122127422DA34B34223363251CF8C2221D6226C1411E434AA8484B8622A05225A43C2038C41423622219012F4492182813C21211981B122187211E848521F1CA21282D421C0E2AA4421C2CF412221D626A210263846122158256214D82267113C432826A11A14A37222213F81142484AD22484024E12418041
+:8046800082E4AF0619216142943C0154A419A4431336821331421CE4288108EB181B1A447280582A225C84718431822F12A9822C8AA84A6C292A22C8624236419284214211426028888AA2844A2282A8A58B48884FB80E1149952887432A94294412163C1448599262990C274A1E881028C42449A382874990883E4C1E4414282887118299
+:804700008C1691392684A321472426829A14644CD182224846FDC21288844C813814C16922D228F178EFC0441984216811208492216662884784122D14141890152A29324B86624112482EC50023410A144D18188C3144502284815284224E811041C97488C4484C8C048A129282424AF159BA20031182442185512210623318826081870A
+:80478000142E4210C5188A21649442002426C888000025440221881988D21C08508248D602000025C2288311A88160C1F0A7ECB04543E58132284F1413C2492812389F2AC42AD2C3052DB15E2879D118E382D487B7E4F141BC4A084D684E26C3E418C1222021C94814134594B21CC2625CDF82227242D426E4A807522D8D8D562CFC448A0B
+:804800005E288836FC18842AC838B0440520416141D081522412E7324C94121B412C32818D114D4888C08412880045281431182E128184288485B42621712682426289C1848816D418284171810890820041892118126444ACF4BCB9140070214828140A421048428434A8602888414A022800244E2224432C01823C012D2190522A0188E9
+:804880002984413234414C08211E845290444849083A384400488F7609181B2485A1148082D42656481C81014810436212282844818C9118E4220080E44124644428488200C0284124E084B8822122469A48866C18881810146C81289084DF9607264242119244C4221141449013A8C0122681128444C1C3908422884001462452121812C7
+:80490000001D1444D014014912256124249AB2A284123248281032823082656841701D07848044241151412118106446899181288998489092D082C1442688844184382221D08401864D92355022261228188154824C0A8111503812872881280020A4822E888F21052F48C1211004489068206411818142C012C121288C06844284414DD6
+:804980004200124129C3C2444E24CE122200243200C681A11C8130884AD184012A2118A41863014885F1B2B1400845CA2A3444006041292288089C44A4812E4A1430822AA481868415A282160283C14426C161822D244840742264640024424064C312882C4422A841322A8424748832449F5D4A1141048004181681040048B18842428248
+:804A00004924280200209254442042110E2311018112001C860200920034141E44CC5484824183C88400974BA02440C41155186146CD121082D4288FC32220084210029061825413C844849C02868A021E8C80521243A38138439448490263136224244441218026220489724408DF5C033558822944C2121A7213081848AC42058D2444C3
+:804A80002B5211818886944110A6522B1C89B121A861411C84226815807484F814224800302220222454414228882A11442214088229A2127BE2241D268A52C51E239D127B4115FB214A4354143E1C2E7887CD8B843D262D515B928F267214E1127448F94264878996D436F425221B222BA529F6442617131F7BC486237256B511DE48727F
+:804B0000243422EAC51417242B5AEE928E7246D8A2F4C248DD5E2F38F4F2342E144388E28AD5827428FC8C2D3E24CF450B2F12F1234D149F42C44D87742F44F114142F418151224E82785D41B24E828C54822BE24F24B83238285C85E44CF882544F74C45645A1134DE44AA1738E161F2ACC1243F312128F29B11492414CF254A42D444CC9
+:804B8000B8A4F228B1882B854B148DC2EBC56E96E6F458A4D6B482A8444DC8DFE344A14124A5D28631562AB23CF64A21ACE445B449729BB12258A28F94B8BCF2CA238EC4C6E6C8B28164814BA6CFA68A6284237124F858141D48AFACD1867A46F854E93867463D12284DAD25F46623AB4295BA143276AF213D418F6163189FC11844986AA3
+:804C0000695924C9B944E62378C8F2D9E720040000001280041608008200280000100881100881188188A012842A4928420812411222001220090012004AF22C8B242B5D5F66F2222EEFE1B532EB2AD6EFD67F7342F213139F15F5898BAB1A1F4CF84C6CCFE6F351536F2CFC8781CFC8D8DDFC2C28DF92F3A8CC1F1AFC686C9D2BAFA1D281
+:804C8000BFB11A51998B99CD888FA1FC97576F41F92527E7E1CFE3F2AEACDFD242F8AFAD2F4BFE2224AD1ABFB1F31B19AD8A6DA4F04858AEA2AF89F9C88E2F4AFE28E88F86F2EC6C2FAC44F317345F62F22726EFE1F47E7C5F67FA5F7EBFD6E324F116468FC1F19B89ABB897646F74F47E7E6F6391867F1AFAACACCF6AFE6A289F12F3A8DA
+:804D0000DC1F5AF868EC9FF1F75E6EBFB1F54A54BF3DB5DAFFCC581F2DF4925A4F43FF776F6FE3F2B6EEEFE6F76E2C4F44F4EFAD2F4BFFA274EFE6FD3B7BBF96F6D4C84F69F99CCA8FA2F32AAAAF8CFCD84E2FC3F3A6E82E28CFEEF7B189141B577F72F62E25CFE3B392F12C2FFD6EBFF27757F757179FF5F5EB9BBF3C5FD34F4CFC6C3C8C
+:804D80001F35F36A623736CFEAFACBC9EF82F2FDD9CFE8FB2FCB6F54FE4E6B6F63F23F718F94D718F8A8FBCF83E621F6975F6F4DD231751EFEBF8F3F13F26163EF44F4CD9FBEE44F45F27A5E3FB3F54A28AFA4F5CE1CAFACF9CE9EEFEEF2B616AFEEFBA2F42BE2CFCED8A8FB639B347F6FF52726FFC2F27F3EAFC5F5796DFFE1F72B7D3FD6
+:804E000075F143579F95F77BB9BF3CFDCBCFEFDCFC7D7D5F71FB2E2E7F72F4ADAFBF9CFC6E2CDFDFFFCCEEDFDAFC6467EFF1F77666BF13F7687FAFFFFDFAFAEFCFFFF8EA3F79F5D777BF71753EF6FFA37F77F56327FFD4F64FBF2F6BEF6EF7EADEBFB3F5D8FABFA5F4DE1CEFAFF7EE3EEFA6FA42C2EFEFF6FA3CCF8EFEACACCFA6BECA0876
+:804E80002B125016844542C8118C5424483484A048348042C822484624A924824614C22429E14412A6242929B426289416200249885424482CA8482292248224842886D848227848048304971D2002C5B211322848244CD222012A210945D848A8488B34822324822A82218802421812222062412C082E92D0242191822822B0242161244A
+:804F0000114A3115A0418724A0143200A826F3BC37C0521F4152281F4132481F41324A1F41B24AD1C1B24AB911B24A7915B84A39A5AF1439342F147935D812FB24481CF9244A1CF8254A16F1244A96F1214A96C54A9E24ACF591242EC31F49F228121F49B268F99124AF14F19124EB141F41B26A9921AB9453B14A39B4AB9443B24279341E
+:804F800098924F83A4944FA2F4273BD0A4F511648D421FC132481F49324A1F41724AF1112CAF44F91164AF36F815284A78A5F84A9413F34A95539B9A3B42AD955F22D518F925C28B815FA27498F1215A8749BCF49825ACE5C1E2B2FC81448F3255C16E9396FC48111FC9724AF111242F467911F842B55F81B24A287B4A34342F2479349822
+:80500000822F83F442844FA8E1E9072088042008000044008001000010020000000014185082C0440000000000000082200210026F2741012E158F12511220420125B483B18341A1485C31482AA4816B1221A2821504004249322823A1248C848802AA210428772290344938B41A24842C3151C4C028431428D84288E28C02C84E4A305659
+:80508000231824E188D4345424930143022722188088180241A041488248436242A9C544411C61421863494484E14108888644326824441F82C8181BA48814484C2891644266C248441C86F212B8344E146B1E543981C426542519F22411671919A2C21D1446A8C292694384C88245011243624A5634286361146698812BA144874148D654
+:8051000084622A44442F84A881462416CC91A64104A664444B24C6C2628D228B24621AEA230210B12801839841205124822490128008211022A214488848C042899244A012441844A02818405241881A32244C921217884A89A6141528448841084328348480F4E5A790121100301124192202211188401481088D1192460480F44824154D
+:8051800008181479092E4242C88088522240012415842881895428822CC848448489282A048182AF110859021123F1826326784629D143E412E81EB13218B148F98241A81761134A8422B82184C321A0244F347125B23CCC424B1661A2A5F211841D5423C8112AD1227494FB8144667251C628488280818461A21B214D4248C388AF8622B8
+:805200003F12015C0211702231222D4923A3421413E81802837C44918114821220A842281144424D1245A1144A61244D428E224E8296B441B182C21340311949E44462682A8184488AA9845843921A8142818AA16888BD2F90121424188A7418414413E522A83423C1812C818892943952858A33441412688B422699411E22DB2873B82689
+:8052800021224448318424C0322CD424C883143B14811A280400A1841C72C4A2284E844A1228F22D9F14143504712129832271119424982210038542223484481412288354828816881201378854421E24C04390881E21488C01AD2129342C1078129C129048A28594440021C0B44DBB80A452832263144904250316588249818B34182202
+:8053000043481111F482542642A9812CB4244814C2182A41E41194848444C1185C52281658249614C42C241C38814C4208214384210856949AC382E1520700190112100C42902111144454130941188922124844A428C02143810418602182133412221200C2281819B842382880684481404282612189384400AF630D46D114321863B104
+:805380004381342C341D14452A8321D15234191B834958424339682E158CC3294E848A32262E1243A114387B8146C454235824562142F828128147842721D3C3A72A1C69B886D8C205484BC225B24428D14AE18114C882BE55602812269121241E242412421AD21898211C88424418924114412B844044BA480185255218108821F82418E8
+:805400001354A4124F1219A114924B82304AC42B828001854208478118A08443C82443F2FB8C00262892211490664B2480468194411482492C0122492412282441C24840810418463184140030192188742054414502308282418642028E4620088281AF79024944C24AC04C464412C8114318024022416218B041082501601221282248EF
+:8054800086241809C04A4C02165142241888004008230C4120028E482508214412882F9C07134881C24415C42189921127121486583214444442002230A40014181031245CC1424098481048544812140042155428806414C1114144818D44814002A061EE3214844411005041484220944884689F2224C84827426921C2484D411449C422
+:80550000154484861962CA44122501403822F0A41212218189B24421A418A0412CE82881B184111244888108F0DF65208244048003450122002A611942144CC882304210325144143522342290381608200850141189C888001384140480420920B4240860414400AF9C0500480024C028C16F24C88164420010210619021016084CC58511
+:8055800030814221482118AD1200008068444111E048554280921124002142105822843F3A0541105A4A83748A0420150814844C2201894439410000A0168062848F2144914127423821448C22C2242313843288104208928C2104000093BA8882C19CF0DE23002748113200111822604400882E82241066688535834508902213D184141A
+:8056000012121244C8C44A081042180C44273881814A02281445D2214814084042824A81F4BC31143F82342149042C1891481014434204AC435814411D88004C4111229654A88840685146E242410124CC92184814261443042C012116278C064004C28684225182449F26091744CE22C73249B288F422A667B426612565F54481243B145B
+:805680008CB8831A74837261FAD1A12E2D6F884719E444E124F614149FF6F2A924E177332F246126162849922263D112D22CB12811C14C5FD6A4142D222B9423318842242D22272122C95C2C8E3843C1914784CF5A4C513217CA4472457111F12124DFA4F621258EE22F2894418F12D474F118123F34D45CF88E242B4279645242D0A5541B
+:80570000418F1E92442FB47411F448DC1F1144E96CEA24743264224CF318148EA516A4288F1418D83C4414C4134DD147481D1443584C8F4C58626E8925B2A268982CF2B585B02456143D28A575419E4C89E441915C935681A7148413FD64488E845E481C586446D221584D1F14E5127226D12304E0BCAD28C5FC1E7469D418588C45742953
+:8057800059A537836F28D87678860237C1CF84E429B4C17E72D839FC96814C618C6D4AC628B834C81CC7218B582F6F0B42008004842021220800120020081008000081988001000018840000000000000000140000AFB60D6F65D17652A829F61454CFC2F2353E7D36AFA754664A24F439123FBCFDDE9E7774DF94F46C655F56F4ADAD9F0B
+:8058000087F54D4D1F11F51849245D47F5EB92F63A7AE7C15F43E383A3BBAEA2EF6353223F63F3332E1F1AAABA9F88F2A929BFF6F23B318AA83317153BDC5D822B99AE26EF4E5246CF46FE6C6ECFC1F11888EAFF6C647F9543F156377F7456EEFD2C9FC1F52524FF67F77F36FFE7F72F6EFD4EB5F958723FB5FDCEFE7F74F44F4DBFB6F66A
+:805880006367BFBEFA3A3AF5FD55558F9667727DD73F34F426677F73F616565FC3E7D3F6DCFEAF8FFF363E2D222F67F63E3E9F92F6A224DFC8F2E1293F76F27B77EF6CF8723417343BF7CD8B2F19F9B634EF4FB34EF866E48FBCFE34948D984FEEFF6C7CBE63147F64D672F6292AA5FF7E7F6F56F2757E5F67F37C5B7774AFD47449F95B09
+:80590000789E82AFAD59FDDFF4F46F6D5F56F62D6F3F17F74F4D5F51D5B8F743265F7458774B66DF35F52634DFE3F37E7BEF8BFBCCCE6FE1F126225F33F7223E7F5AFAA5A1DF98728DF95F5BFF97F7DE982F6BFBC3C1BFBD5FEB27481AF95C9CE5FEECECEFEBFB9E9CED1C8BBACF64FD8FC1143F64D673F62B2ABFF2F27F7F7F56F27F7EA2
+:80598000DFA6F35D6FFFF4F64ACFB794AF85F5D1D3FFFFDCFFF44FCCFFF2F267E5FF96F67F79FFD4F415548FB6F663477F7754ABEFA6F6CF536F77F73D2BAFE7F79EFEEFE9F5161665F625777F71F1EFAD3F5AF28DAD7F5CF45657BFD7F7DC9E2BFF1F3CFCDBFBFFF4F887876F61F95E9CEFECF8EEECAFADFFB694CFC8F9ACBCCFE4FCE7E2
+:805A0000A57026012641180447121E48248A448144A241641348A6486C1281126144114C12734814334829291434488810066D111004414845A3482448148A442548A2488504818281F03BA46038000084450245C12C1011A848424054814282834408004B4244843024442E1840088062221E282E82C08184810012A90810140A42414C9B
+:805A80002A01F0F868C0421F4152281F417248F11164A3F4112CAB161F48B24A9921AB9453F14A9143F34A9143FB42914782AD914F82C4914FA2D418F8244A87114FA264192EDA96C55A9E24ACF491242CF491248D121FC932481F49324A1F48B24AD141B24A9921AB9451AB9443B24A39242F24792498924F8284F9A44A4F5906ACF11151
+:805B000064CD4228AF32D141B448D1C1324A1F487242D6C1B2483B842F147A24F84A9143FA4A1122AD856B42AD814F22C5814FA2FD18812CC4251F826C482D498E256FA27581CC421FC8D628F4912446F1912CA7261749A37611F46A8415F44AB25B21AB8443B14A1AF442B24783882D482F44FB841A9FF60500480000008140040000009C
+:805B8000001002000040044001008004000000144480020000005012F037CB800160211343DA1C61141933881A42296828484342788638A12E43C143024815081140E4A5824A284184464251411EA58B419D841256A482C883968A848D111788124612C822124A42A42483E82E4881B2A1215283488641220217624622622555389439615E
+:805C0000542C3418B031E884611D26E4445824488D278B28881935428189C411192428132202841146180528484148AA14E24498C4C5C2918A64184CB63C0228134492414E218348F942213217C84B52913AD834E844D952C24967241E294A72B2C374125E248D418246D13C62888D328AD58124914899C541136423AE158B34D91818C16A
+:805C800028199C64A8624599896A692489AC2C2D1C2F3CB144E812E427E8AC0B181A22628129119116408152222846420812448688185148844E81C0844502C024C81C12121884422258140080E141A4844485421828210421414480028845F8A1670028107148231114416181A5818401545042C0111281178214220000822C04481A4258
+:805D0000A2212C41047028338121502228A1114E824348052B841022420428828F160C7B16215190268712D0A6C512281A683113D483612CC13C38518B84316B944334D85C5485A9D662D149D5425112454212184631441E224F11F2982346E481E442918359B481E1244842714182A428EC921146384226A8288988F25364704411125143
+:805D80002146991A444914D2821141715282A184251825D5288C618449728188460218486308412364A3442D11460236D1187266739158621998422D2346122158260047823410C224228C88F85A2E3032284460421C022D191321B28A214551814541D422189111112F4178488155145538682576156821172400218092141E2644988433
+:805E0000483240253988241394C14D418E224E82188CA42484822828BF460850242825027902C981C32232611286085C2918022859E46458142EC58594244F8C013624E4114805239111141E4800168425C92412601CE0C18A481C48E822711408902218F054872442181D181084911C14250D83981429521448508246C6282596282682B0
+:805E8000210130A14A0164241C52484F884212A442288D258954129019A0D222114C5252001A082229B192D2420449F3181F14369221003A44088004111410121842C431591408844200112444A1128442002982011602C024C3522245130C0042C0C248658824120466049FD24DB14253618C5222439718C951583E4C228C72126121879B
+:805F000018812C48DC147622392CA1225CC1A4441D245B2446F4241846E611D84246F4A412141860239D2446D41633842E121633E41C4801191488B49AF4122A2E142136A4421694249F3403241AC21140D241021225012D911092244632152C286164E054F284484219941830182D128011088125E88152161A029018488F2251C14116E5
+:805F800028068D9243486488103448322918A424F0483800260413521231002502004501111632144848141128E0114281321282448C840585642400161454144115846282446532880086D381481A08472820282428F46E13E042140125240427118324246C244606CA22744261248728144241104804824018531625060013414848014F
+:80600000A4245021815014D0810A42184AC882008324422271620A441004806184814012183844650321142041040000182011048448400144000081488004182A5842521C918822181810921A12449FF40F00102822664226E41231212415140822282CC22828AC8242912180C1413CC2242829CA2191288445A2849CC244B044883118F9
+:80608000803181400186242281110441C4822184CF65038241116410145142211004408201000041005814822324080041000040181811C1614084042C0270820210048308844482CFB34D820118381114160810024088448104110018602141411011C55834151412080014110012248CE12219341831504212288301250400A183E2568E
+:8061000008400240D482010040C1826241424C58812470C2442818018A4108101204302464110000704226480540411899281004A3388816840848B0EA0360812505895428644008A9514940010015C441254A5141003011400100C4104402444011082003A86288101828082189012D14214C88F848DA241E4A118C548116A4424213228A
+:80618000342114442C811284128202288014024903244E2891288119088C48548422C8439441848741259268118225042824302618200949D98211F48E543046B25524B249B42812B72966242F2A92161D432B444E411F24B1367612E43232438F22DE11912418681D251BA513F224262D4C2E2515634481843144CC8358418651469B2A55
+:8062000027811E1255B559B823D81462CC1721248B4885D4827814F84412DAC38883F458A4E0421135127D2B2D322D5E1E3C25BC1956118D41A9D814718406429F12D48664224374268C38294441242D132F9978355329A7C6C5E182D2450843681215D114D44454A92C14B928F482A2A6FF8823B78825F28248C3E9A2E228718C4264C8EA
+:8062800088CF4954866F6148E221445F188741457551F1484345128254A18487E2312F52D4214832891E41350C1D41345B11888E1948991438C649D183584487244D1723145D4C8197A45E116F85E172F3C62C421800CD918F12F922982F41B116E841E128998AE588E14AF9C4BA80028C8201004088080088C08416880888C084268868FF
+:806300008200422008822008822008822028022200480028005018004828CFAC43F252622F23F338388D18CF86B73CF339789F12A2441BA25E922F3CF87A5847484F2D65115F1FAE6E5F5EB626F2BBB84F4CFC9891CF45B6855A888F83F33C3E6F7FFFE6E4CFCEBEC8E4C2DA88F88581E0C2DAC8F888CC4AF4C9C98FC8F93D1DAF89FB3BA3
+:806380001CBF8FBF22FA22884F61F916B44FC2F83E988E148B994FC8F8C6844D4CCBCC4F44F6FD75242F21F67B7B6F42D243F56F79DFD7F71958DFD2F261611BA24F7569348FCFFF85445B7DBEE1DF1FAE4C5F5EF6E4A41BBBEFC6F63931EF44F785A49F92F25959CF8BF37D77CF56F6ECED4F4CF428ACDD8ADFB8B886F824EC4CF889CD15
+:806400001F9CFC494D85FCBDB7EF81F33F192F4FFF21A31DA84FF9F91E9D4FE19AB62F69B19659442FCCD9C4F484864F41FAD4D6F032423F21F7191BDFF3F34C58DF16F36C6C9FD6F268281B2E1F6DF5C3C3BF85F74D8D4F55F5E5B15F16E316FA6464CFBAFE3F3D7F56F6343D4F5C7D2D8DF839395F63F37E7FFFC4F4A5658F12FE2C2C8F
+:8064800087E875FDA1A52E64878895B8C5BC44F5487EDFD3F19BB926F478FCA7922F94F655DC1B916FC3F33E1AEFC1F118924D8EAF44D8C6B414D844FB7938242F23F11B76F5FF7B36FF96F76D2DEFC6F6692DBF96B2E1F2DB531F34F4DFF8DFD4FC76555F16F7EDB18F16FA6767EFF4F4B3B1CFCCFC151F4F5C7C2DED32F248495F26F65D
+:806500001D1BDFEAFAA5612AFE2C2CC7E85FF8F823259F4222F8CD8D4F845455BFFCFEBDBFFFF7F62727BF9FFFAB8B3FA8F8878F3F39F9A6BEEF88FB9E1EEF29F9858EAFCCD9C4F4C4C44F42F36E321006650145C3484D138C4482048C4482440390418100004014119813101138261004610040410884418426224801448608124492859A
+:80658000245148829F4F0C82800124282601224001A51244A2411C12F442264302401104004782F0224A44008420824201203122901A128D815018C08212409882102808D018032E421F417228F2112483F49124A3F41124AB141D2CAB941B28AF143985AB9443FB4A9143FB4291578A2D914F8AC4B55FAAE414FA244A1E214FA264192E05
+:806600004A96C55ADE24ACF4D1242CF591248D121F4932481F49726AF18124AF24D141B24A9921AF2419F54A914B42AB944B422F247924B842F924484AFB244A6FBB0A2E521FC1A4421F41F84A121F4132481D2427141D24EF24C824AF3492258F2421621443724271251832262D255F2281F224921E214FA268182F82645825EB5942FA3E
+:80668000C12C3CF49164C5F29168C19A521E1748AF32D141D248D941D22A1BD4183A24ADB443F2429243A29465B842F9241A4F330B8480042502000040042800000000250100880000C081008400000000004482000040080025015FBE071686612244222428842E12874927218E1146022B4856C5449021708A0481C23954298091112565
+:806700000812123280982260211A480164400C1D121481C02C82008482898102DBD724225728941C219145841D144618414842081608353848CB491D4414006022448B4299143A144CF24422222CF834414311012524442213116828818E488048692443A42C8C0429A4821487483F3C05237151C2282585416382D41E6A5F21C8182B1805
+:80678000660C2F84CB142D4D46F8419C4562B840A8493332812384D1839116281B242922717B6428130616244C0311A14518EC3C214258814E2C4CAC428C0425B23868121E8CCFDD064722441412224C041240081125029041002819440400426598281D4840489414122A084901249012A01244201842482108102208844A08007F7E020F
+:806800000080E2223111145012112098121120022220082024824212285218A0244140A221004084A14826728114885228C082110000818489411888F41A9890444CC2244044A242398231228C39218B84C08515D42688B82541B221614A150815C8441F4412B1C672A49884872A2C68443C8C4392A482399421612442348826036C94C899
+:80688000382D8A44282AB544A8844B68B04E0B46644228281229D1211601118222A9011D84260123AA1282292162845081424944914249A2C2A810B451120260481C6138281C480825382323984380410828008242484FA80F004130243480D22321C21886211C014592845014C0214348218252249922B22D688841C42D824682A8122472
+:80690000430A29244646944213220850248E48282D8241816E188F416C84CC0ACEA490412E428051412222AAE142C111502C13410918842142B0116824164811028AC1121181815430227018844608C0289022403281C0249C6841A1884230A6100A186F390F807411322910225812144411412821248800118122244B428341B8840284CB
+:8069800020C2C4142184D028A44138884E14148100438424C224002612FC28860044290418FD82A01220021061882C08248113434844412B34149222460840A44211144082B1120248868402002800AAD41841392A24560125820422218C04101448F4FA9EE0142362331C12112292325CD2241181331885159113251A64182892424351A9
+:806A0000C18C524116C11A1522F116288034A8E0610483024A91288E4A111426CE821B125081482692AC8F64CA42A604428144FF990882106281411912189112118115583228608842124A41F84821B048422224020026285C241086021A82A1284111221E28858264144824822D1684241008444508B0F50320441411042841212800003D
+:806A800000411002001034220040180A24001C04004038298002004044C128812002488400F02E472012092B25218D2441938112392291D0483122C30283611218728411A084808201906225081810829214800118122182C3A22120081221822120A24289082FCE0382490100812382020020110124141C02268272144164120045219288
+:806B000021408722466C4419042240041144285C120110140424418084120443F2D4EA400A32461C8204815084499158402823214364414002230170180218212110419411212485941443024C0400004C942210B224040026084042F84E6B8011440424442424241800400200182480280284108702492801128221441211800222411C60
+:806B8000123224222881004426288222522841E012E4A90D842608404402141004199224200188842248160E002A89420810884C51144826810490422884A92148040000842442400C006788126BB140081022880260422400901441C5614422C0120048168201118C188242440200001064812002C0138188C0142288B0142424314248F6
+:806C00001245F8182F24472196012A0111800213130400204201504194441427124440742144440428280070880414130200004411141420024210088100AF934841082A450482801484840125824224A12130111034181A1894118489082218215814008C0189240C14224924820400680022204264442221F037F2E022F19C4C4CA167B4
+:806C800043C88C283783281638248441CD1E1654B85B35361B847342C219987D292302F992249F28721CF286241721861451441B5113F214224187911519B3B402475A112E22444D442E286E2889F222144B24C18362444D812E441F870EF0811136C21225A4224114419D5327419F1423034B223A81C8341112CD8587435F116441CE2153
+:806D0000008C31268415D212B322A61168708288A16C2E1481895321269451E7825A886228C12423D624066AD5628442A8212FD50363912249525E704F3222CD6227426F42820125621129D1446252813E3177243E386160226C783C69D2172B442B124AB42854248D44371423544C85742184B26462434C9422284C1251181D11F0148462
+:806D8000206C828CE284F224488F2851AC6F7E062002813048B0480183048302811008420048814880942820011A02522005122001126220044A096A094A0998489848188001F0D52E149E327735B5F93E3EAFC4FC61E72FC4F6493D9D791D533D199FB7F53B1929E18151CC8B8A8F867421F16542BF1AFC6878DAFD6C4A3F1AFC884C1F7E
+:806E000092F111949F8B69834F4EF944566F4D0F5F52F744545F5959EC7F48F95D7DDFF5F45A5A7F7D9A525F71BFD2FD89998F9BFD14D49FB9FBEEF6EFEBFF36D62BB32E266F43F3B4FCF04C66CFE44BE121F317533F31F13636A5FCA92D8F46F44117BD799F93F759511732FD29AF81B1187325F185896AA64451DF58FC78785F79F93C2B
+:806E800019AEE1CDCC57935DACDF896B834F4BD844F1F4F41B114FC7F644545FD9FD1C1E7F495C5DCFE2F34A6A7F7DBA22D764BEE2FE4979CF91D744FCC9CBED36EFE1F526E62BA68FE3F35E7C6FCB4FF86C7E4FE94BE361F3376516F61232ABB39FF2F266267F53B638F2592B2D141F37B71AF31A1A2F217122F2EBC3A7A23F12F36542E5
+:806F0000BF1EF83F751F19F9ACBEBFDEFA488E27A23D259F9BFA293D1F5EE837F6D6E41E121FB6E625F497C7EFE1F1A7A49D2997B1AF85F191C32B321F3CD2CAF879698D39171C9D89CFE7F66A78AAF6A8283E366F42F2E2E8BEB84FA6F75F52349E367F53F3383EEFE1F3363A7F767666F61F4F2FA1F263272B559FB3F312186F21F132A2
+:806F800012E7E27FFEFD27277F76F42732FF5EFA3C7C5F5DFDAC9FAFFEFA6F2F7FB2F2973FDF98FB293F1F5EE827F6E6F66F64F465671F35F48F97EFE2B2E7FA3D3DDFF6774FFD95C76F42F3D537BF96FE99A98D195F5DF14DCDCFEBFA6A5A6F6FF7EE6C8FE2F23E3C4FCEFEB4BC4FA6F63149800147129014200222122001402481024C02
+:80700000022800822800800210022014024100400222000000C02280024E249028F034C34012D122010000144414121C0118410018C011841810084042012042040044227024018012028302144003441002428048F989B2D026F4112485F2112487341F41724AD241F24A121D24AB9419F24A9251AF143925AF1439252F347924D85AF971
+:8070800025485CF9254A8D857FA264514FA264594FA27498C54A8F49D2A6F491242E431F4952281F4932681F49724EF18124EB141D24AF369921AF2419F54A9443B24A3924AF447924989A4F82C4944FA2F4A825D036E48154321F416632174145D34142D341C297442F341BE5343BA52F2439252F2479A1C8953B4AAD941F82D548D823DC
+:80710000CD843F227488D5257C88D194D858D2A6E888D234F481642D831FC8F64683867C4EF38128CF3489F2421715F44A3315F842374782AD1626D8683124A9B922D442E9A2B5EF0B84824822220000004480820100000021800188144200400100800400000040040000000081007F4A0ED0128232144440C94514181611A8814460525F
+:80718000E02211D88405202412042B41A442282C321884282042B31138A42E4110311C4662192AA841A41214323034A02142498204FFB606448E122491118E14218B21223904006028501240054B4294860881792212C4126491C02421288228228412191498211450121508344227849088508444818561864FBD0524135D2217C15440CE
+:80720000715815B1411115284A84782214C12214894146C18832A4A681062721242612792882322820E612B984B2110611454912912713241211324290A860426C6442488B61EF2D0D412822001E84A1282602188001101122514849A4248442405424124528342485814104A0821121849041811A62149288165828124661833014608153
+:807280004018082F520648400242162484228482092100002281800144190422000012002008442008820081114A08888AB442888428A8844392828088F4F9E980D1420340683200181148669118139452481F41C44429CC66888316D148120193C1242B186612042328541418271188418C44014B822182212E8A58143088632414928844
+:8073000041431218FCD55FC0122200814B2121008039218424206451248998442183441144011444922C42040019081230848113082614C281201A121142384488212A1892248481DE8980C45424204421842265124684B412C2415220E4428424A2812312E49204228361228084418388446C215C240848008281244E8481D88AA4848AE1
+:807380009482424A48CC848068448D3B8022410445231234148116621A40014384248192224068426220022822250860812862400200229028411820044210848404484484460481E71A2413043303481100488120042D81402164414018C1880084230420321488C04C4348022815884824A44818C24200882D818A14826824411024420F
+:8074000044D461032400250845824401134408200124008220028414418C12B14A8104000012004441811450123098241048028C1114022008001F77053934123B2125784562524C34154817A58C021011C441293514231A588189688660822F84C2212D72661884C8184D484C2411824211342C1CB42894178AC59824B0484833841AC426
+:80748000422442C08C624445F8BDA720024100100281C0814834924200220028430211440084800180A2824002C182008800484240226824844C884414044100DF85070000800620040042100220028444002200000000100240040000008A04828880A84810844898888290441FE8480220024002290224244820041C6444448016518497
+:8075000062406882B04442342422604410140200C04442400884428014088240081004815F860A80040042802204648082044841002244258C264228022244442840144218C244001004008A44840C4289A88410840884860443F431A724A0444A26042642024052444D444B622A3222114849028C44532225220183084C042850111D41AC
+:8075800011C558888B444A240442484008455C444B8200200881842C086081FFD64502800200200200480000000000000000250400004002100241840000804828088480088004427F4A0B81252894424004800444414C82820600800225022B14124C2988080014111484818C8484140200004441CC229228000000250229F1DC3540A851
+:8076000024480000000044482A02462224840480161294144888008400144042084A04000000484480020081000021446308A044000000004504280000004224210000100400460150888004000000824D84000000820000004B6A000010020000000000000080040020040000002100000000000020088284000048004F9F08A18B4460AF
+:807680002400000045044722A04200006024216C041216242808001C04118518324820040040014D8481432822020088002424B0350F84846CA4442244000040D444828222040000212512C214181C882804001414848485984448400400004445A4A4E8820000429042211F270C1002000000800448000000000044282210040000210015
+:807700000000001480080084008881000080F413D6000000000000420000004848002004400844000000000000001001888410080000884044E4AD4502221002442002202484044A4482048002281044544446419446004824242400004044181181A84840A8888200818800004D444FCB062121229022410048004842000048A044200480
+:80778000424122100481200400000021410010010083B448A88885282808881024F499E8400264240000000010024A04A044808494444C2422440844000000212144210000208898888B88848480480880A44448F0CA7D7026D222A2122B119012C0122582F8121317118A6C9985E818E48424F44149111C5489814F847448F424444B24D1
+:807800002E24222E2480524445E242722652222AB11281B882092C5932881E1317119B8817998F8498484E48424E48805488814F84B4B90B6F22D224A21232231102182592823CF1111219E88818D818242444591148155888688F44944C4B246226644280425444286F22522418122B812328C8112592821CB11191C18E88818BC84246F4
+:80788000688480445888481FB50E0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000000000000000000000062
+:80790000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000000000000000000A9
+:807980000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000029
+:807A000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000A8
+:807A8000000000000000110000000000000000F08E23000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000000000000000000000000B3
+:807B00000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000000000000000000A7
+:807B800000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000000000000000027
+:807C0000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000000000000A6
+:807C8000000000000000000000000000000010010000000000000000EF38020000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000DE
+:807D00000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000A5
+:807D800000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE25
+:807E0000000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F0F1
+:807E80004FFE000000000000000000000000000000000000000000110000000000000000F08E23000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000000000000000000000000000000000000000000000000054
+:807F00000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000000000000000000000000000000000000000000000A3
+:807F800000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000000000000000000000000000023
+:80800000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000000000000000000000000A2
+:808080000000000000000000FFE40F000000000000000000000000000000000000000010010000000000000000EF38020000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000025
+:8081000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000A1
+:80818000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000000000000000000000000000021
+:808200000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000000000000000000000000A0
+:8082800000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000110000000000000000F08E23000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000060
+:8083000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000000000009F
+:80838000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000001F
+:808400000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000009E
+:8084800000000000000000000000000000000000000000000000000000FFE40F000000000000000000000000000000000000000010010000000000000000EF38020000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000021
+:80850000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F9D
+:808580000000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FF10
+:80860000E40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000000000000000000000000000000000000009B
+:8086800000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000110000000000000000F08E23000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000A7
+:80870000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000009B
+:808780000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000000000000000000000000000000000000000010010000000000000000EF38020000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000000000000000000000000D3
+:808800000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000000000000000000009A
+:8088800000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000110000000000000000F08E23000010840422224312062244244082C2261D4246030044481042140E10784812480140D914C44880840441004446840444443D
+:80890000480082F0B3F3206226005042436244418082420443D24132264354822822101852221042420889D448841475419442465983482548D448144CC4C40041811044244408008442EC032002404284024100200210C624482694412E42000021005048004224151241412814880460440000414C04414881480020741E01282400442F
+:80898000004A022449224204104192248428114018122444024508400C43644440185228508400C0840010084200410040082F8F0C800400404424020000442400100200240040022189044011282404604430484508000000440000008870D80F0000800400490200412222002124000000210000488481001011410144488044044400B8
+:808A000000440000008FCE0B0000000000000000000000140080020000002008800100000022000000004400B0360F4002430244000060820010028100A0424C54A48C72284418382494608141A48042A22154422011681452462828442114C828508484A24180587B8012420436C222446A813252E028014461491284038E2CE3129428CB
+:808A80002004624D722440420248422C181148084D48504186280824A08184498844044908C280B4BE082642024C428212868222042E1821414429128403C9C2244A6242E48C628283F2344A434201AD12418D420011895341484410788821152888141118EC84028504824280F8DFCF0010042A41041A44220182002141400882A1418305
+:808B0000044241420025080020E422082184C0481815242428042192428210044788284308482FE60618C0120040110140A148218608827081881821041422502400141048028002829811228E4410118242211108002C1814688130248145E8C70646D21402C062E0228491492382041446C1D317459C6C472E428F4224B8C1316885E44D
+:808B8000A4427948D281D482C85243A18183A492CE111728122C522898807548A448A31CF2824882C8C67388C224888A426288488684F8B79C8064421221660262218324324182D018E41468111784892A044216B148129848456824488158811A48888A088A612230224C8411018125219888484E81278841828B821288284C08EF860EFB
+:808C00002C11010040911134004831882CB144283855A86F9482A8841443C22234849592817012448224B121D521088A5181988248C3F48242AA44E284018200291A06A4844314D884F8FDD9408454227041021185A11246C488246C2288856141148A4468492C98414551484A3814A4224064511004A994228F54B3A2A142188143820CAF
+:808C8000108412E181B448284A82821BB882048972EF0E1311324414418C2206421609124C22444981084144D02424C122C08111494448CE211449438212084214001018A2848849942286022024A2814482214A82F199EB00A01218280042A140018211209842420026410842822100510062828B8280010020A843149110588248890490
+:808D00001A522610084820088F9C074731241A92114E21A9A24217845A52141588718232419CA4816B94B08454485B218B841C6156A958121694447D28C179A2219AB28852222C8432292D8148981A549437844A88C8482924D482C1B82E4226B238C8B48E48203C28DF2307004502414001A11E4888008218119041008841424084444140
+:808D8000080049441484820149A1212230282888502800178842482D8400008A8402DFF50B00904120344A00A08400290800862421084A18714214021816212481052B1260812218249088123025122418884E1880418A01CA0118442C014F2B022608819212160111811841980012002484482F2801881114008800213F84821401200226
+:808E00008200481284A0841A82881222012022240400FFA503421304C048000000908218C2448A04C882140084104121C443208822881401190449811881028062821002A2448388028188238208BB1800904184201C011355A18D11424AC128002C8208850111291301424A4A2A810440C112825244222800122014023144893848230292
+:808E800024200882214B825F38010000241812001A2C681164428015019CC116421848100240981218849908A9C8442511082911624160264290C8800881004C8866441008189FDC4C41480C2041010028004288220084106828820020B81828110123246115002412111128C04120B24808874448146028008840821242F8C94D801101F1
+:808F000000001B41008008284881402214028111502100420082212B2824114A1201A0141400801144025848842412211222A041287F4D4A220480A2422823A1414A219C41A081132121290C001248C800810020041800384C01818041C2184088044881008008E022A8828888F03E9CC018808401844884212412C4C0222A082D12582802
+:808F8000906111184238241DC80084168944A1434068421A86022228008D22288742C0682A28488202001092847BF500954588A54519A5551CB512C5422F855C815E8289A1A887418E51166498F051C123BC51C5441D23C6F8214819FC1312A04427A229041D892CD7541691A48816A1521AA2416EA2BA24B41C5C8156C82496D2222333A9
+:80900000C82B258A2251C6AF6B042A0420A1121E22211548B8486B188A01884A85E12488A455CDDB8A82ED12581921241E118B144AE485F582938F18A498AE4A4C2495198D22C0284C335342A992182F84E82322CC82288F888838248A9E54AA68828AEC23F2DEFFB0528114D1184278425981521364191D145E824B58333D32C223F28AAA
+:8090800082A932822D121529784202148364A1142487811B357E225E112F213325322AF13312DA119128471246D882942CAF9854828B548BCA2721258838422A48D24288A188EF870528008110088110088110088122A0422002A2200220040042002242008800481880218801184818802188838481048F324EB342F6452D85A8338B64F2
+:809100007E7AAF857549B322F388888F8CFD49511A7189FB8A883E223F17FBF8F89F1EF884E41F1DFF78781A858652A83F16B748F541518F84F551197E2A2BEE8FACF81F354F24F4572D8F83F211816AFE2537AF81E125B422E32AFA52787EE22F88FDC1C19AFB988229F9A4A45AF5B4B62BEA8F86A677CFACFCDC54342B654D6485F8381B
+:80918000288B651F92F758588F24F12A381F18F849DD9F1CF5D8783F1CF59AB88FA4F44B997AFF6983EDE41F1DFF28E8EEE25AC722AFA2FB53118FA5F553118F85F55111FE88FA7C19F8153D47237F57F6382A3F1BA24D5F72F34A585E422F82E387F3D8FC5ABEA8FF99D18F89AB898AF93434FAFFE4E62BFB8F86E623F3BCBA5F814DB3E3
+:8092000032F4254585F839391F11F339333F957141BB32F381823FECFD435B2B751F38F19A188FADFCD3D18F8EFDC9F94F69B9F2FDCA48BAC35223D2A8F862688F11E534F45A581F99E9B7B262F7C8AA6FC1F354566D748FA1F213132B664F62F25A481F34F56B698F21F1D2FC9F3EFF8BABBF39B9D2FDA8B22BAA4F43A1DF4F66B2E2FA1E
+:809280003A788AF8ACBEBBFB342B47575215F131311F31F32B332F84F5515B3F13F399CA3FAD7D13BBD2F58B992B9BCEC2BF9EAFDEBFBCFF8F8F3F1EFC68E8DED14E522732BFB3F243498FB4F44243AFA47459F1F8BA2F29F91A2A7F75F767577F52F7192B3F1BABDD5F72F34B591F34F76B6BAF26F2EAEABF3EFB8BA3B5F3EACAAFAABB27
+:80930000A2FA24242BEE4F67B7C2F23878CAF4ACBEE7B590120080810440A24820088A04922412002001001088011881002014042A0122004822842284A04800002800822882CFE7020000004A210148181A842821044280C8489882460114200440022A2D85085800821812222024082064888324880829888408A814EF73022CF41124FD
+:8093800085F3112C87241FC1724AD1C1F24A111D2CAF14D981F24A9255B84A7924F84A9547822F74F925482D914F8AD418F9244A4E857FA264155FA264192FA2645DACE449D2A2F4D1242F32FC9124C5F39124AB841FC9724EF19164AF24F19124AF24B911B24A3915AF24B934F44A94478BAB94478329F934484CF9244AD7F3D0B4E44157
+:80940000E63274116C36166C34CCF26211C42F74D9C1F242B355E8347B21F84295578A2D975F8AF448146B4AAD912E588F54F9278A5A782738D83FA2645D948F59D286E48DF2228B9E44ED411F81D23EE8C9563E1F89764AF3912487641F49F648A353D13ABA34F448A4B6784A7634D84AB836D44AF82452DFCE03840000400100008082E5
+:809480000100000021800100008044012004800200000014C0280000000021F0D8A5002062814088458872148824A141809488132418C48284814283561822C18734148984B2C8014A7982A4826089124A2189648C8CE542248C3188824844A0812948021248F0772E2004001A9613211921E418A418002531814125041681848DE4C821DE
+:80950000686C4842E084088C08C2814A324100290848A30186810823021C348820B428342C2242411621F249CC00468892184E3285217518A124D14B18A0522531C1811D4488144A78823A4849AD615528189448871883A4829B18E08431282E4142A48A2165218C95C8844B824B482B1281800E422E82862CD22264411A24F36EE4800451
+:8095800000201102A049421200308421C014A0141068884AB82234481522048148C22C684C888009A048004E914800881B488141E081840200001F780F0018112A01002541180229084284002D81824A4A480400282240420444A024452208174160419021A1922120C4480021121880480822FFBE0A90148E2161482182621AF434819258
+:809600004883D4183484863241C1833442815493F86488172A491262441306A8C2628B216331414119CA82248C3421290145A1484E111D1A4143FC481489E148A2288F2814A8524644F4832F001898800380044B3882C08881448142C12D882B48C21188818A2222E24244012248422443C441106149A0413438844B1829883148B044E85A
+:8096800044711288A9218286B84802B0B5044064321584142228925391232134421CA4848231C041902885541C4B4A142506A042248624684236A812456248A81125422C5221108134411371460884902488461822614443F25ED960412AE1450220024E2128248A32242C1268412712256614260A26A186501212A8224C24229286142837
+:80970000241191224240042328315826A81841485B1289F942244D82642280B842084CF1B5F7002084C241293128001415724C8182548143881408008410A2214A080060241421288094124611A114461148026C084D482002888041382190222E1418EF610C221041810200484220011B81008082880212488B8450480013012005C608F1
+:80978000290A8A0128A0422D280042888282004220414104004BE6A0122AB11492211CB62261822A0446B1839213F08A4147212825D481328823428187948828498292441128293812232214E238843291114365348C86A24186A81C8C045C99986382D824C1186048684C11F4F4753084400100102106C068205118536824482880628853
+:809800009041C048001A024684042E88153822120022C0821618CA2421824A08A04846062822208802DF8B061028211108128002218440210221008288000000C2001041180240088A9242008220C41880A1818242882A01202102F08889001441842841814B21481489E24902204808213200522258810000884C04C088800828812688AA
+:80988000A183202201224240880A45BA288881022A042F450482008130480000417044084200B0428802A094888014088002222800801C280400800122488001460883A12422A88124A85F1F0646A816844258384B521038642844884361414B42284BE1904C4C928C2845C844C1484D1883C84160248681A42848C012001B28423283165D
+:80990000B28424C884822A852805184548025283F47E6D008942084518042044080024848648021C081812812002261168145012D0280648702844D821B28814880417811289618118C0122283A12820222182F12441EF650900800200302422C185242804A0491120C84881291182918110C18480088890A4002840013084904800212892
+:80998000A18082049881C88302FF6B06C4A041A084608484814C21840C814A29410183142828148141881284088B4800A02C14864881882881618910028082CA2888000024901888846D16008210011128280020821408428C2214021508B02828321142240000C0128002001410420181C0110000A8425A08478800884F6D03841848103B
+:809A0000A11841450984824654869A068A42641187416242295242481B94AC041C94482A012AC5451322C4588004882B8420A4841CBA42524246B8420245384200430C88A1F0F1BE008E498D188B346641B448711488746C34648A061E14CA51C8222D2427858D4487BA2E143E14C44F84F8211C419F484888280429849E212A8962812F6A
+:809A800086F2B88A126A9D913AB1CB768A2AE52208AB918D28AB318CB288B918B332A2228D4385F854B220A42A50818FC8B464F834689189C2184C723878CAEC84B418A6168D835E818D45CE884BC4894C98C82E21CE4366E1B4F448C18C24E816F748A42D134C8CD4413C281B8835A1D283C14483C4185AB129B91EB588ED82B484A886A9
+:809B00008F22A4238EC44CD888A4214BE6AF7E0D448B114301129B11442E2466CC238D884A98C4871869E828EE44D321A5B82A8261858E63FA9148818C243184EE334501A63AE8E2C285A828244A74883182A23DE8122E6428C212822B468AE445A94443F288182B986E9882EFC20F00441480081848188A84015084B08404513014284150
+:809B8000424388122511311819385820011220418144C2481460224826E28844022484C0480020085EDEF094543E38CB11DB33CFC1FB51718F81F37961CF47B6E8FE3C588FAFFEDAC84FEDB552E34EF6B9FF6F7BFAB6F8CFCEFEA5AD4FC8F89581CFC8F8A5454F72B632D774F48E94EEF2AF8BFF998AEFE8FB4AFBFF59AF495FD9FBB8B2E4
+:809C00002F22FA3B788F8BBB92F48C8EAF8BDB11DB88FA89A92BD88F89F9DAD84F47A7118BB98B51CF7BF9B6B67AF73898EFC7FE9D4CA0514FC7B71CB125D6CCF2D9798F83F379697AA6BB8FC3F3B82A2BEF4F6DF156648F46F289CF6F6BFBFEF88F8AFEA1A16F4BF8D5C19A7881F95C4E6F41F158DA2B98EE72BF9BFF98ABEFE8FBEAFAF2
+:809C8000FFDBAFC95D6D8D222F23B322A6BB2BD9DFF9B9FAFD41D3AD9C1F1EBF22A7992BD5CF67B552B558B598FD9C966F49F972788F87F32CF4CFEC044F46A66387419F53F37C7DDFD3F278689F96B768F658788FCEFEA8BAAF8CEFA5F55E148BE4DFBDFFF6D3BFDBFDE8681F13F39E881F59F8C8D89F9AEC32FE2F6D4F71F587CD9FBB43
+:809D0000BE92EC34F586EE2FA9FC97ADCAFD85E58BAABF92FA5BFADEB2AF8DFFD5B7BFB7FFC3A1CEE61F38FBCAFADE92AFADFD66647AB758E18DFD759E2F4BBBE2B6F8FFECF46F5902AAF63C7487419F53F3FC7D9F97F778689FD6A7668F86E68FFFE8FAAF8CFF5C5EAB578BECDFBCF877139FDFFDE868DFD9F13C489FD7F4C8D85FDCF4BF
+:809D80006D6FBF95F5C94BBF9CFCF9EB3F19EC24F5CCEE8FAFFEF7EDCAFD8DA58F2BFB3B3B3F34EE2DFBDAF85F7DFB7AF2BFBCFBEAFA1F3EFFCAFA8FACF99ADAEF62F47AD88F85E18DFCF49E2F4BAAFF8BFBCF42DE6D0F000018302484C048400884A04120018A0492830428100842A024201402002A4818022AA141888E486081A0416018
+:809E0000892081A2414C028922F8382F80810211418C04484148202824A8944032A181008E48881088641411421B82008388242C0288826643A892114E9260248A02822F24014222888281228B14F0D718C0421F4152381F4132481F41324A1F41F24A121F49F64A911B21AB9451AF743924AF5439242F547924D852F924484E954FA2C401
+:809E8000854FA264514FA265594FA2655DACE549C25A1F49C2521F49D228F191248B141F49764AF18164AB141D24AB961B68AB9459B44A3924AF243924AF44F9244829F92448984FA2F47CFFD026D4C156341E2487144C724AD141724AF38124EF34D841F24AA2112F743BA18F447B21F84A9517822D943D482F44F9211A46D4816C543F89
+:809F000082645C7B42C6D536E81CD2A4648C6F32E488D638F4812485E34956341F48F64A138E6487724CC6B359F4489243F248962E48AD964B422B946F8A94924FA2F549D94028080000280040042814000011410080018800201102008400388008000000008008000014F0A6422480422121413828C04980443288418C7481784C32186A
+:809F800025428442A4248246044632198833098883EC82A8242C0132122DA129C182488B611A4C22528110881188B6448A2826314CF0692F008283210218821F4402458188813441211812448B2819B1856185204621762164242618882421227582A4242A082889A4244818882219A5181A9418482838888381A281821E2141FF5246020D
+:80A00000E2858103182266314851481662C27C0489C85C6351A2F021828B14225A18253C2116B388D2928134918E6846F8A8444A3142182E121FA2048A8434A86AD914B412E2133418482884424D688AC2421AF8144916F419A300800118848348440188A0843048130184A853C114414222422246D482048800E02209228A2202881A46A6
+:80A0800022A11480211808811238A298800B28F0CF6C002008880080080000000000000000000000000000000000000000110010011400775E9042281145A4128942251464812981E41A4812421894422E9260581A88738148C1444552884AA241843318886144C82D221145A41289C2814250C42382D638012D881249A1482A0864807264
+:80A1000094F8275B00239211452431281C22C424756A12488B18AC18A2414B142B221D81248604285F894885C4228782B011E4183846C48D12B0422E12F184141A38283C228452C7221C94188C38C22CB414012A0886C6888B314B48FF5609008280080088000000000000000000000000000000000000000010010011400170E705005055
+:80A1800041348422840046118141C8848454414410E288041B428170488104432208008A02130880492404252201160882209188828880A2412848EF3A0B3722508124442E414C2435614F12252149511256A181121E61428931151422D0410241A18F226189428A628869239181228E11144F8234482C810C8E418CEC269881244D882224
+:80A20000415642682B8A44B8883424DF584D8202911032684112B0243441205118599488412843C41847111D88284641082C94488C232328127822A4821CB88182014D2846044A084A81A821149084124788588C08CA22E48822F48C6540110215441781C6484E211981B11148118289C1115C05248004225C024509D0C288848888210154
+:80A28000C081111A1CA8142121396884C638828825880282219A126281424CF26F6320D484D41A22A12128264424063018B6341246144818323224814C8211028B844184220045516200584091824420024014840154284C2482A51841A024322D443BDB20C1482002141A44024604422752888028028280A84841A9188488C12230288A0E
+:80A30000C221224212888C042A01181283842282018288A82200220081442D28EB6F200216144184042181188A0110419844306830261C01004241409441000010040011288B8221419A8431818490428C011004188444008F2A0E28D08312E14142A1434129664182842F189183C18DC483B242B282D162B289E14C22818884941426B4DD
+:80A380002334282A88722224C41400153281F0289228411A92148A2181C88489B8242482A42940E8C4C234C9F61AC4804594141A026845028148181A0412420084280040C4184445088400100421C0D8001A322480C1484A88424548924118004301430100B09F0A00161214029044188C02125485020018A021002800122022828408236C
+:80A40000282101A0214410A4248628A8188828008001121224002C2CE4EE0FCC11082668412C01004122852202002110082811C11084781824042443814124184811482202121449C169C018CC484C8844084688021028015F550410148C1412548450821489214102453828226041142943210C00142001800D27444217841A482431182A
+:80A48000820018004004C502420088840070D60480850212828084064024014A118248A24A21882143914219344490842A184842281148C4182F1284422826D282312219921440241184419C282634821282482186E45F0BC24502C1898402453254104408A042A8188829A48512A0812602141841818AE4440170A10286021844006049D8
+:80A500004120810110088921841218044246D17A0F1018084008390240480400108521C82282821322818101806C1114C08160181008001C9881141AC888221CC8884111224881182A048129016FB409281412203211A92601898402218C42088226C811402C07422E182166915215D482224A110441250800A024818C1208428992428930
+:80A58000211204430820292918F4C69620820228140081A04260120025E28408824C024488428092442828568888D2220490182042148145240800292801142A412282324880B2C21218F8D866408AA1421921021812C4444094182841100EC0C114182180C121298C1142024476316C28921248231322250121C7128C4234111E220088FC
+:80A6000030844909100247AAF024329F48C61419D21691184C93618C722894281B311E2521837328FA8294B048B361B2A4D1124124E122E271E416C6762668B22F4A12C1229FC6F4981A1A0822514668491BC385A4D25F81A1192AD856111168822F82F71428814F2948F8C88814F0D16F001E1A2668463AB21152822D1ECB114D2843134E
+:80A6800018528845A4A8F0B8826B892F28CD8D1B82CF1D4C1231651222CBA8DAEC119418984F2899411734AF82FA14322A83B5217D88F9A198AF98028F8498118F85E841F13748439188446E146A91242AB5C814F44FEB8014B418721E3A4845324843F542444E4184A48941F2424A29742C81E15264112B219AE422A346CC84D96931D4DA
+:80A700005E53814D926F2D74D684D244A2181E5144A7412B214F2482B1167211F488A42B228F8902C588534A428F26ACA9848E92A0912FC4FC44BE2024024D1148C048472200601284244130842845487284887285A824844E2484448012016B8242262114040014C08320220840052C22018420810228DF870D4F417115E122F233326DD0
+:80A7800032FF9597181D118FC1F11C1C8F817111084F81F15454EF635F57CFAAF84F95DF42F1A5958FC4F64C54C3F44446EFB4F51F13AB511F1DFDC4CE2F2DFD73748FC7F6C84BAB294F4AFA343E6F41F11F1D6F44A4543AF31C344F41F33133AF857D81FBC3C48F21B11A3118CF49FAB4B4CFCFFF4C74CFE6F658581E18AF83F27227F0E5
+:80A8000014367F92F62C2EFF63D3AEF27F79CD567F72F35E5CCFC7F7183C1F83E2A3F3161EEF65F51A56FFD8F8BCAEFF7CFD2B47FFD1F9FFECCF45FD7C72EFE6F46FEBFF13F11C36FFDDFDE46E3F37F57277AFEFFE4A4A6F69F9B6B5CFE7D6CE7117F576745AE513F39C36EFD9F935272F4CFD81833F4CFE1D17ED3416F29EA44FCBFBBC14
+:80A88000BCCF45A7EEAF84EC8DF9F8B8BF46074D341F53A6225F53C337BFF1F31A585FF2F666644FC2D2C8F2393A3F1153A86D462F63FF8787AFAAF8F79D1F67F1BF9D2F15F7D5FD4B76CFE6F467E737B36D2C1F1CFEEDEFEFEFFC4A4B6F4F7EDCFEB73D1F28F932726F41D1BFF26E6CDFD6F2BD2E7F59F91D349FBBFB42D417393BECDD67
+:80A9000017BF31F13E24CFCBAB99CBCF4F4CFF6CFCAF8AEA85F18CBCCFE6084D36BF53F23828FFD3F11A3FBFF3F31A185FF3F77E3CCFC692289FA3F31B39C5DA66F43272FFFAFABEAA7FDFFBF1937F53F9F9ED5FD3FE64726F66F42F2F37934FE1F2D3F1DFFFFBFFCF87A16F4F7E58FEF3F73F3DFD3A72EFC1F31727EFC7F7FD7DDFFBF308
+:80A980009F1FFF5AFB393BAF8DFD99B37BDDDD1FAFA27116FEDEBCFED8C3F3D4F48F87FF28A8DE98CFC4F333471002690143024120C248608100248C049230912001003142218B246929140218B0220949012B12488884496881404861814048E481D448A2484C0283041FA202430826C22825411C221166410025012116D82808805412C2
+:80AA000013280442605449A12411C092469484421C08213042442E131644012A388118454803004CA942818A0414BF4C052CF41124C5F2112483F41124E7241D2CAB141D24AF149921AF2419B54A39A4AF143924AF3479A4D81AF9A4488F14F9254A8F14F8244A87514FA264592E4A96D5A4E44DD2A2FCD1242CF491248D831FC97248F257
+:80AA80009124A3F48164AB941F48B64A9921AB9451AF44B924F44A9243F24292478229F92448984FA2F4CAA740F2116CCD432885D141563E1D64AF14D141F24A854CF242B351AB8453B84A32252F2439A44E9173FA42915F22A1842E921E855F2264491FA264594D495E252D8217CD45E381C6C3967448F3912485F381648D938E44AD9750
+:80AB00001F48D62A9B45AD974B488F2438242F24792498926D4829F9A45A3F8D098400000000001280020010010000180028100800414008000000000024280000840000D0450780628225E4923122C3D2C1823188281815182C484848F158812A44982942A024482D22384E92584189841334940044442361882C2A61D258148619C11171
+:80AB800084411E4841C844A2428A35243D96D014718242818104182B1415CA268E1A2CC242B0116441442A011D148E14583668C884211245110827A543D242A41224488829F321881B242531416025A0182AB198242435122C883134292125D814C2C8BFC707156284A9021F812432281E4419318A478A28A71625B481048136D181B15427
+:80AC0000D2A469958CA3812028E311E22884911E9D2438128381A4841AE238C211114A9A124F81A21443F921888F12A8144E1A184816245C429E62884C34942F7B02498142634126024D121D28814CD22221018418478144A08411202254848B242D4210361848422D4246342486140261C46662881460344021A1141110D428094C230174
+:80AC800048B82E483F4404244418282A810484B0114402803442842089A1424E211A1428C82440816411002B1200824342041124442230449AA4849A0413481204502A48881200CF7303422822414283C2C14A5121815287264E1BC41D881B481E8243E426284864925349FA814213D642921AAC3A1481891478468274C382C222824714E4
+:80AD000046C852D886020029384A29D828E98B7413A848C41AB4280422FFD5046042124982A242B04801A0146850284E81871C2CA98596A2C21B2490888151194436488C13025E28504282A22684126144A0245A881882AC14908123C88429588186D24884A81200EF6703422122204598C110F143185082B7254C1408108406412E595C78
+:80AD800021B8C232222D21121C3814812184482D427C04308234C9642160448A058622984A2483F16812182D48A0148C04227F570D181E48122842458142426311890CC634CA28884418D341361544812D7181C860A4406269A018424124848824122C052A91414372843822214112822602222B920022A3B24246C1248C56122941285215
+:80AE00004851208422441C941461882830488220921AC0A4622251284885C5428604154498212B418C142C1931128449420814A881823088A0248014F2BCA7241C440480220489218182C11A1114848D122220921222A8490482844311323887418032248C022B142C022689028443849282E011C88A8241231162424244841212E0E902B5
+:80AE8000284B211123C1484E25C1C531112F11A2344E182D482D4589E18198A41A72157248F6249149E24244C88846B42435425B124D328634284F22B12844F211442C32A12568848F613498472252C382F22291A486654124A82932482D942628A11285F2C9FCF0865190122822202211829488C0A1864816140289220182811B426082E2
+:80AF000060A281845261C249484402B011B22201B01164328289489882C082960841A822422024721602001602168225041641921112001B18401821581425681188850119011441148E1400B018840128E93C1818128384D42804428464B084426441844A28088286741A034814118712131414441802894818D892A84256026781452813
+:80AF80001444C81242818C98184412009018E24414695148286718C12AA4188B21408281394884B068C88228255A284948C82847E320880110042141114111903244814A286981490544182A04211240694200118E48800428001012784284E24C91A8886084002961849242104888F1EB39401416381430218470480440052C09124002BB
+:80B000001528121542414252188840014428846084422216220812840044284C042A010048301480014F270111108153812184682026C11854448311348280043048808482140116B248110228EA11A414008C81074C14445424402814324840142213024400BF760340881524734102141825011122201608C082428210020024000020DF
+:80B0800008002AA8411044528124100222141825D28418A8188604908824883B5F004602A9844848C118401448241108400800A34154488410890100432191148428105292410028181428901218281418284312F2A1142A81A12183F2A3E40082004126044846821402411C225818188041C84160D4415C042916C241121C4428242101D6
+:80B1000012182B28222B242428848A7158810829212195124242A0821A621224DF93028C7412A54214628A61141244184016810321006041103212C01280D8481402811A4401D084724884042001A0142128E4824C127122E824084002482948F484D10057181C51112E114E16841542394129111134918B74241A48B4147452726AD5C443
+:80B18000F41845C9643629F449388664757058C1482AA4645E4441843E28AFC8E5839A6429F24428AB14437DC8B2B8B186E44411DBC8DF227756F292128F2EB182B234EC98DB48F84FD65061272932614F28F22C8173F458285E462B4192872113023E8387852F88A1118E1455C48A1711304385F41882245D482AD1B1951416F1D8948B73
+:80B2000013413E114F2B137934B28281E16591884CD482E18293621D9A272136612343D748B42CDE14BC285142871226EA890F4AF4481415FA783C9F45B413D618945459D16452999CF1123FCD9F8698D58552A98B848D494991184F8E4119D2917112513A41124CC8148CE288C8384E422F44D424817A447712F829482F41F5312A6C5E84
+:80B28000528C28D58CE4A431868FC8A89A42214B818F8861214B38DF2C0110042008400114400280442141A1432413021313382381229011100110281201151814612211472211472215081100004C2288228822085F6F095F75F5121A2FB2F2122BAFE7F57F3F8FD1F1292D1F64F56777FF81F1181AAF61F19D961F88FE868F3F19F98548
+:80B30000885F89F93435CE9A8F97F73838CFF5F4682E9FB4F743236FB5F57222AFB5745AB878F69888CFDDDC18F364477FFB5BEAAF79FDCEDDFFF1B74AD43BF14B5B3F39F3EB3ABF36F6434B5FF1F15F5C4F49FDDCDE23F2CA1AFFE7F916167E58F0BEAC9FF24CF155576D562F22D322F2EA6A3F37F71B1D8FC3F651526F66F71B1C8FA16B
+:80B38000F11A3FDFE9B9D1FD969FBF99F99D9C5FEDFD3777BF8EFB4B599F81F52D7F97E48FB4FF4B2B5FF7F757149FB5755BF87961CFC9FD9CCC2E794F72F4F7B7BFF1F2D8BFAFDDFF1B7DDF54F27E34C7E47F7FFBFBBEAFAFF7782AFFE5F15E7DCDD4CFECF866B4CFE4FD2E2F2B882F8FA7994FEAFBC4D7247F75F51654AC7216FC584EEA
+:80B40000FFF6F41E14DFD2F341127F77F71B1EAD12AFA1F38F1FFFE9FDCF8EAF99F92E2DEFDFFB5C17EF1EFB4A498F91F14C5D87D49F34FC7313EFB5F57633AFB5F44E1D8F16F6B8B8CFCDFE142C1F27B6B67F19FB969E7FC5FD366E3F94F73636AB75FF69FBEA97AFA6F6426275F75B586F69FDD6D26F63F1FA12CF67F93614EFC7AD828B
+:80B480004D9C3DFC347F55F514148FA153CE8FE4F46767FFD1F12D3D1F24F577779FA1F11A1AEFA1F18F9FFFEDFDCF9EAF91F12E39EF9FFF3D77BF1CF94D599F93D77DF46B2FBF35F47313FFF7F757159FB5F45F1D8F17F63CFCCF4BFE34741B735F1BFF182AEFEBFBF3F83FB3F75A38EF67F37B33FF6FFBFABBAFA7F74923F765AFB7F535
+:80B500008ECEEFEEF8FEBC8F2FFFAEA62BBBCFCEA7BACFE8F889395012D01241F82612001245A2412041234941484258681AA42480024A12119812426911981410042E11302690948C444108960848241648A4496416584840244924F8DC294073112402467311088C44114112016044122D811388332181D018632285118182C421501815
+:80B580002A341888406241851301161C161142D412E8885212D01A0129032928180220E29E0B4D421F4152281F4132481F41724AD241B24AF1812CAF249921AB9451AB944B43AF1439342F34F924482D914F8BF448914FA2D418F8264A16F1244A96E1A26559ACFCD824ACF4D1242CF49124C5F2912C83F49124E3F48164EF24D941B64AD4
+:80B60000D981B24A9945AB9443B24AB9A4F442944F8A94924F8A84F9244A5F1305ACB411D628B41132481F41724A82F242118E2CAF74D181F26A945D28AB944F82F44A8543F242831F8A84F9B348AB941B1289F826D21E811FA234981FA265412DCB8F5D4272D14CFA11644DC21F8972487291542C1F49D42CB981F442141FC192BA59B4DF
+:80B680004A3924A9B984D442F194482B146398924F22F5491400820000A04100008002000000000000000040010080040000008400280000000014F07DD53054002D182598242F96511248B01264944810A21418111A9C29848B214E81482654411C22A44819F44A14488AC2D8488223F22881871229C151265A5825682683689880149C18
+:80B70000824A8238444AD286238283F2EC2210612A70A104A581C81425E89412011528744802439418C424121F488411811428412451842CE281C218E048A2254C213112E048228101C9981118194C224582881148098245097FBA021B41CE22D0A1427824B828991321159A151D482E412C344821188D114B1828259AB51B941611648837
+:80B780003681846D544E2893A4298B1889EE219E248D918D72184B4A8CD1184168CE4D8989691E484D42882B4218C11D286D1AA8CD311AF2AC6C1004241E8424112714448384260481001A644430481588C14880A424511004A416B4221188440412261201136122442190121100A901888242482800F0EC1D00190212100110081820047B
+:80B80000108401188400548082044100000080041001120000810000002200008848CF6304200141421A12C822134421840230422044242C1251841A4808008031488820120818409834421018B4487124224C01204502418082384C1245F88CB7001B1240041903501A111820440241001A1C4851841C010010246184828042081A048139
+:80B880001524840144124392C2110058004100D0480483B466050080810484284220240280041A440428008614882204000000000080034008460884000024800228882019D47A0200101288010028830A004904440000809224002261008880210414800112A0840028000046244404004A0142F0E579002200102804304890421289018F
+:80B90000C0128D42A21846842214080084003018100488008822A15012841811001488C028480044008CF22D5700400450324C42110800008001128448811008243400800230228221002611042420210848002400008E24208202F08B6D0040068487314C1601682821128446044D121222484684B248820225235248802258281AA24869
+:80B98000006013822A5122C8132188120140E14488544848A60466842224E2AA05800240020081848988041220018C948A1281004508002100800145021C08400484241028210400218002001800845F3F030000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000D4
+:80BA0000000000000000000000000000FFE40F8004000000400428000000002180018800004001400848000000004480020000001002183F5F0B0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000000000000000021
+:80BA80000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000000000000E8
+:80BB000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0084000012D1
+:80BB800000000000008002000000004008000000004001000000000000824400CF690E00001088120818281001412394244245022814008C0248422813280400241280081283240220040010040010220284F01D7B60410026880212403248E088011E8800108282011018111448489148418052282094A43014902121A01486D582088819
+:80BC0000800D842C884C8C11840188BBCD301400280028818001102111149224484522814201C02884484828532884020036044C092E13832422D125A884800888100842450A22188188B7A400008422841840C2482296088608482480020081114410183148001018229482000000484008001A44042C2808124400B0C3032601004260B3
+:80BC8000222800140000001281221400000022832422D1244164222829011840624100248200881244482082010028F09B1C106223AC414821C251856224D6B8923252937112D18155814827122C442B2491684521042C64459015278442818965444D212C52142961121124268891412A2414081C7118E44172CC22924283224224F8D8AF
+:80BD00009530222A8101130419942850223C021668111C410814812608E082142504424C276443844184186C5641285911124104842446A1424888184444228E4830428982C224883F4F01112484A180A2122129C4D8981A4403461861241AC24211271418000024405821521E42444E28212A01211826621124221282008490118B414995
+:80BD800091242B120000F06C1BA012356A522D428180428152264782C01246840120E581280400A9542220E821C442C094144334882C22D8C247262112B8886221004124A016122304214044182452225FD70A428C1288042800292402244480025041143082481C911281002A4814144101001C444AC96148130828413014806842D02401
+:80BE0000A2242212004054422FE30C009011428442100112140089741283040017854D888008400381000000180088B01204111118C021908881004728228004004F954B219522268E116282681113068C032522C4481C01163111241B41478813B148582810C1526C044B1820042217242E1695B423C9229B4922365152121224F0441879
+:80BE800080A2426C0841484144415FE6072211251131480050224C12128111C4123042499488488988042400302281411440C4889092002004890800902188828D124954222238100828F0F2CD10214422011224C01220410340230140183848460884818411812361141826148296121902222042E118032304C21C4281A428442A686834
+:80BF000012822126246444DD85A04343011CB42141C35145028A11024182502420983200121E4A4001E800212818100320012089084ACA8413621220188181C8142306200828D01D4641020000001001283224404101841223444169242034426014202434642248626022438164224846D42402844848822924C242802822010036041457
+:80BF80008148A40010018C9185488815C8912B611AA8241B82C099908211CC088025D82C681822864134A188271260162A48D841424158245028158202210000224A88087FD20B23483411122412604425024D2211180020415121002004148B81308200D0268401181815C2111491422721818489629CA8414822C8218A64A8002B52A4ED
+:80C000004712A60684800411400142003821380025412881D412311225113A422D429840C94280C121800238484423810254424110022460412241494108704284F813FA148C9142285112A043102106881C02218928026088209822A038114D8154221800418502248400808828681882284486883285408412A221002393482F24054289
+:80C08000180040040048201101800200123048184846420187245220046044468485049042CCC442260A14C048230448A085406221121AC884827B942484112C4502150A1E48181139518290731814C0211002542180012C0841CC711492898D411A0884882F21A4211112C4C022246048C0A564780041201E1422F1AF117011B2C8652160
+:80C100002F6151112B112D6147211B112F18B19153B28A92588AF15932271817249F9A9282C25F81E4984178EC331955F214485E81AD443F2548A2834F24E4178BE43A72317271F792118F8334C4CCF424A885314AAB62631835516A7822B4225446842B174B2A746AF4E6D660125741D0110411C04C46B21912A487371113691126A1132C
+:80C180002E211816521B1C68232D43483C2471C893114F258176259C222F925942B2338591349B824E274CBB6EB88AB42268988633482CF824866B514F2D3B848CB92202D84F84F184888F5241B342159231812B13F41F256114214E422597312E163435D24218318816F248181E5A8B149B4483D48378C2F84261212FC27481C8142BF54F
+:80C20000CF44C424484E33899122214AA688BF33F4812317645D261BE24E881DC12F1CB482E64882E4646A299E128EA256A4EA16F63A53140028C128812881288D82128F34088B84B048084A082C288238248853022A412422182608820020088414200200144005244002000044BF7A48E132F117259FB3F22B2B9D28CF62F2236B7FD230
+:80C28000539B3BF33F88E888F89ADE3DD2BF8CFCABAA3F1CFC79D91F3BFBC3CBBFBCFC246C9ED8EFEEFE66261F36F14F6F2F22FAF5B3BF8EF883E2AFEBF6389A6FA19E2A4F6EDAF7F187A77759FFFBFFBAF89E1ADFB8F8CB4D1F52F28D898D888FC6B444A8882F47E367E567BBA2DA88D822F8C494DED4AF83D27443E337F116341F31715B
+:80C3000043D3AAF22F2725DBD751BBBF93FBF7FA3F96F6395BAFA1FDF3D23F36F62B291BB31F3F5FBB3F14F4A6A49F8BFF99DBBFB4F4EEDD8FB4F612524F25F17F4E3BFDAFFFF73CBE6FE7FE82C84F64F6147C5F78FA36B77F77F7E3D1DFDDFEADAFAFAEFEA1A19FFC589B9FF4F2C7873F1CFE74344F67E16FFBAAAE8FA2D822F9C6848F77
+:80C38000C9FD2C3E7F3D064F62F1177737317F71713BF2162E6F61D16EB132F38B581F56BE48E421F3CA183F21F94747757589F939B33FB6F668682F88FD7C7C8FA4F5C38B3FB4FC6E4ECFA4F456523F37F49337AFB3FC7E5E6FABD6A3F4C7E67F78DF77F1B323FFFEFEBBFA7FEFFB8D8F1F5CFEE1E59FFAFE2B689FA4F6C7C14F2CFC560C
+:80C40000166F25F5F4F44F49F98A882B846F4EFFF4F48F86E7FA4AF134166F61F33B3BFFF1F13B127FF1F33636FD17BF93F383113F73FBABB3AFB1B3D2F153D2FFFADADFF1E1419F37FFABABAF86F77878CFCDFD485A7F7EFA5FCFAFA7F51E5AEFA7F3FBCB7F5DF37AFAEFE7F7F66E3F29FC4766DF79FB17173F33FB7F5F3FAAFDDFACCF8C
+:80C48000CAFACCE8DFCEFEC1EBBF82F64D4A7F7CFCE6C64F65F1F6624F6FFF9E9EAFAABA72BBE2FCF8788FA2F68537C011C011503240A14114601212244021811201138112810289022831281128691118022E1130227022024F32014732821440234821C826826C2228246944F0E1362008214002002503181125220150122214842117A4
+:80C5000081141502118124120022812722004447321214822921C8818A444198820080214904200845F1E41DF022431F41722CF2112483F61124A3D641F26A121F49F24A921B68AF14B985B44AB9A4F44A934B4A2F34F9A4482D914F8AC4915FAAC4814FA264114FA264192ECA96D5A2EC49C2CA1F49C2C21F4952281F4932481F49726A12
+:80C58000F18124AB141D24AB9419F24A9153F14A9143F24A9243B242792498924F8284F9244AA792F024421F81F4244215B46451416B16112B161F48C4848A86BB8596924B4A2D974B4A2D814F8AE41479A6F848917F2AE114F8249A46F1248A875D4F8278D8C5838F5CC2821F8DC28A1D648D421F41021F8956121FC8B64AD1C1F62A945B
+:80C60000482DB51E48ADB34B42A9B924B448391429DB8694B82B5A1F550900480000000044804208000000000088282100000026084800000000000000000000F0961160115012704268814062148412184218D08228C41250818A7168249141429C94144221238A22342C6A1802265648141E451364112B426906221598114638421210BF
+:80C6800044C2D28001CD427F1349A2243B283684921431472383A512131111417381F882444216648416211141414838289028601243556A8D242D1289312449021B1216026982028263F881422038161566288934228243F284288AF22841F0D2C1145661342E142CC24A8981D1A245113114132116B88214AA418F241191111721468C69
+:80C700007118B12874C8C114C825F1A2562277A645BA485A4826746432312CF114425992212B246F2894844F38521832E3954423512226C4824B82672812B018F48D71702282420149113124A016164801341349A4484480418838218148008902285048A0212C8102101C418184012220041C0825213848001A9428A28B24413F810D2464
+:80C780009012441468102132112081081880A2482D2148A04A00A0420089C2924200222022511212891131220000921C08001004124C0A4624F2C952A0244C42B42131322C21736882E486A8612641B848394AD856C8189E4887418A8421CB482F2804A9B218C2414826E84AD124314C21494871A442D14168454C6181CB281E49B90EB00F
+:80C80000480886528483E48234848921823284F7B1400249C1221848224E29F041A81813C188C818C82098D218C83898488842818CD21884441834148D44C02413D1213A114798197532048C3A1113264131882008842A148429A2244CFA1159A0244D2230151C829312242A84A1422860A14628C1788B148712C304C822A4466222221290
+:80C88000228E122A840B27228048120412446081448C348A82824840123C4484988D2440044FEA07C9135248684648012511048A3128442A1C88211811C828268E48949800824644A86150183822412116182258241908200123880C83180A1E24F0124222924628095DD490492E16B016C41425022850221528E441782282149254589003
+:80C90000421D8244121800821AA218248C885243841342648217291CA424181214881E8412419A1214942C8A04868448024C06278F00800128841648E88402281C1141012422E0120448402104141200202204001B3C008110082A14210400488041288802C3048462BE3D30451684311416588381A58104A216B811D8320490641B4126AD
+:80C9800019EAC84294148C0C14307489A1432B82842B128426E311C6121D9289E8448221E112C4914B84230912C165084B8388AE5423224DE8C821F699AFE02281522E2843062981722C02AD111906828724122909422A641482140020018210A842442244498802112417880020018A84A8487034384810225848484A025FD30E10668209
+:80CA000084808112085A82A21281800222802A081A0288828220024D18C02143541452488942B4144444444424222C08824149480441491214D4480426F49E71301281402294422C014E1220012C08009041484B128283A44300108508223123781201A14118002412004E8226042014812104882C4482044C04CF19012228006042400425
+:80CA8000440062800152901970480210440110A883114CC184220011424002848400114192120020A81692808802F0ED2CC049812523824223814228A8484661411C0822848904898421388142484984881481848864181944C5A85440F14488141A0481200480314380440262582082F89F5F200881C10040484808985844102442A4426A
+:80CB00001444414A2208264874248801118924084200434144087041046200501410044422848008149FF20423818624140883A221002AC5248001A0181301C921B2229412128A118481094B4826840218002A110818502490841008202401458858241228C04484FF360D8480C4212562241421421A9484213041245AC843A28286028CF4
+:80CB800081481201B95821602386020040041414102118084482241002001042A2818088F43115A0422120812403110080880814220010F1C41100830611A0412200B0241188218704122714C0114848001B81D84E1281704482248104004B288D994048C243804289047088014C041AA6941A44C898192106861103188048918113284203
+:80CC000044014058142C09604146084114424480328124922AA1842A8132C421F06ABAF03262AB28F0492C8B22F04822118B4443BA84EB14EC883354A86BD46E598B867AD55164441B1AAAE34EF4814124C41F9882D244D144D144A4A1411819F4342819D85474C216B488914C4F84E8560419A14C25A798B0CAB824C6244E6A4CE148C805
+:80CC80008147C82F9443A214263A292542F2522A3A913A241B94628AB254D411AC1532127F88853A649ED1CBA11D41168A7844641143F4B18113FC83236A78A634514571E4D4517518A6118D48125E4413E42234814E44B01238514841188E124F2A05230743027FB502114354B2322B445F1215732468818F81A4412B132C88418192A8F8
+:80CD0000167181F998B867A22F84A48588F02188518F238DF138E32AF882294A41F95248384249512147119D154559428694248B889A889154B7514CD464E445B852F832148ABE4CE644A4E25FAD0E112200008C2402213022102218E281140221112800001100000000822048215812822110022140024400000000AEB6341F35F4212B80
+:80CD80009D22DF52F21812B7B43F16F63B3B1E121F38B8B4EF22D762F8C5874E114F6AFA73337F7ABAC2FE6CAF6F2AFBED8D1BD99FBAFAC3C1CFE6B747F575F73B661F67F7F776BFCFF76464CF84F41D4115F5148CDD8F6F78AC446F7DFD96D667683F16FA2787BFBCFCC341247F7DF95E5C4F64F49ADA47686F64F2AAAE2F4EFDE4646E57
+:80CE000024CFA7FC624D245E421FA4D6B8F22D2D8F21711BFB61431FB3F31A1A9FB9E16FF5A2F22F23FB85974E536F6BFFFBB9DFC6A2AE5F7EFAA7E65F5DBD91FDF9FB3F1CFC6C6EFFC5F5FDFE3F1FF775767F6FFFFC7D4F46F64C494F89FCC4C45F55D8D9E85CF8C8C86F75F55E5CCFCCF8E1253F76FCCFCF3F1CEC2EF6D797EFC5F744A1
+:80CE800042AFAD7D54F6D256AFEBFEE2D66BEE6AFEEEF8BFC64CA2771F32F62928FF52F25A12AFA1F223213F33F35818BF18E96FBFB2AFB97F5CED24F1A6B41F93F3A5A5CEE2EFD65654FFCEF9B1D18FAAFB8381CFF2DA57F17D7E3B235F65F7A7A7EFFEF6A6E6ED4E7FF9FD97955F51768DFF17179FACFC1D19FD5C47481F36FAA1A1AF40
+:80CF0000CC7C81F382223F5DF9DC9C4764AF81D564F94616CFEAFA56546B6E6AF2ECF8AF13071F35D729F6282BFF52F21A12BFB3F223231F32F24A48BF9CA177BEF22BB97F5CA9DC4F6AFFDBBBFFD2FA68FAFFD6F62D6DFFC4FD91D18FAEFFC341CFF6F61715DFFFF713215F67F7A7A6EFEEF6B6D6FD4E7F71F557555F51749DF985859FD0
+:80CF8000A4F41515BFEDFDC6845F7EF2E5E5AFCCFC81832BFC1F7DF9FF8C4724EFC57554F656D6EFEBFE76346BCC4EC2CF8EFE4EBC1002234258224814008A049A041A04822892289A4434813081424014A1245909630249092E1150149012484D120082348A04408104926C2248044482EFB906AA05002212271212408889024820215403
+:80D000008128590432888008800500492C050044004004204284284122411404002298482814AF330A4F22F4112485F21124C3F41124E7261D24EF26D141F26A9219F24A9355F84A9243F34A934F82F4429347822F14F924484EB14FA2C4855FA264114FA27498E1A26459ACE449C24A1F4DC2C21F49D228F891248F14F89124AF14F881CD
+:80D0800064AB941D6CAB9419F24A9259B44A3924AF44B924B442F92448A9F92448984FA2F46D56D034E4C1543C68CF14F1112C6502CF34018F7449E4345B848D3753E36468828F7439248F141BF24A954D1A8D956DCA87116F227C98F5224A8F59D2A1F598252D4A1FCDD2A2F891648DD21FC9E224F8912C888E6CAD931D6C8F44C92CAD29
+:80D10000B359F6481236D868F1244889B924949A6B42AB144B523D38000000000040010000001800100200880000400100800400000000482800000000004F1E074512C424288321D2249128482E14A642715102142D48D014F4281116C9299449022614C444C48E181817614AC1326041A0812902180025081961A18219311114284460DE
+:80D18000224462488A12F814E130618E1217A12459961219B444B1195282897548C288188AC4114B1E284994824862871142848B248B12282566422E48A24D488948E24482D24161E819941815C4344965C4C213244C28A114422145081845781881F6F378E05462644321F2421823A2418D2499923C4DF8B9B42B85B1417842384445712A
+:80D2000054C38817A49C122411688A1A64E21E8A285B611963A687188536442A7912818C05D04282E444718438C11B4B1CC111224904C542E422914CA283D16B0A2412873270242151341AE42401002C083011B82A9428138182D41883C42449D4480244491198C2160412223024C42561814561814951814E120084A0412480024290181B
+:80D280002AF4A78840524161133122808134482818121400208484018304A042420018428442244220012002181281284A012280081024048304889088845FA3041A24A212B044911C918B121A828104818C65448443911817848B241181680044C44822324CAA1280832287016082282AA51422784A48024B842094244A8ACA5828E82881
+:80D3000022FB91E024611222808111B14822840212C048482024C541421C046822008084C228430242001A24810220218422A1342A0C828810342442830AA82284226FE30440C61417214B42C48381B118228105911844814911981883124808484844C1184218C838211A222302008B21228CA3142A044002490442422A28E484014A880F
+:80D380004AD8154D2151141742CB42418B12C43021C01C2942312441A2821889024332824C4108409A1883A22580042E141819CC488B21438804444004C42C024400C041824642AA141818AFC649820218482280951270188406284A1108100884112C024A2164181226044112230282C014844148208342A1421A0640E412044CB4122666
+:80D400000240428882F17D570000002584D23C040016A818001841441A440449019028100263044004302228102122123288382088C4482041A42182148C248202304827231429531438C126343C89B34F2192142CB328611144819A22381848C445B194C21446384814A3E1C2914E1A642126042229F164813035492A9212A82E11487A8A
+:80D48000C8482C041F41041E642AAD42C826025830485E5B00501428243044501284874480A8414440149438800200280021284302489094281810084228C13024008C02400421108894288438B0610A400242198261214211006215249418431424A1120042203444C2424684618552424242624200800C4848488A944848484A29A442D3
+:80D500006820820100F01EB2200153022C0143022C328440412208004141988A34288A0382008012840221220023024908809AA28829012A0850220010E884322889227822F82AFE24C032841901215083122D2884401116044100184220440400004400481800002218122252002848441004413044100441E01B0D464181850228814C7B
+:80D58000134C018698184220A4148A3284412C6148210025842482A4832021810288813012E0244212D42208250200812424382100982301CFD509A2004628028444840020210100121014840243048302442084050081802222A54200800280032721A014484800002284CFDE0718001429E11124C1412228811004420000202881038A67
+:80D60000040043014088012A6482C0488881804802DE2220088A04A222A222AA248202F0F3534094112E4110117424011144142B14484082E1A821642A881800884410429822242888002100822058628CA18281004008241002250A250889C1229F224A02228428A024118C0384443741301185D1828194221221A014464208422036448F
+:80D6800022A0142242A024000078581868E04284C142808419A8C1004180029F3C0546091A642100004331411C4104284901200884414121821841880000281489194438442A246221880012412410821204446044218A815442F0A32EF053419A021AD1236147A04411CB4AC9A19417D415147412EC448921A89849F12C24EA9182424DB9
+:80D70000C642484A112C85A4442E488B4648662498248728DE6627262B498F26B882FD64222BC8C5928246A2F6812BCB818B842A89E3C381F22E63242826F221282AE21392525B23AB221E332D2594911823FD581542482F4AEA417114A4441A8144D44424022AB224E642A2723E18281E82288A92222A22212192382C8A434688029E12AB
+:80D78000652831244E324F42B622D284A2824318F253B5C0141D11EF11F1494390218D1F5FD1712C5C8115F23241472158A458C721524F225A829E842BC41AF2C4488E82468874446E41DE5220BC12A134446281812B9E4A9F129ABC64B182A42529A4172B444AC44427282F440627A41A544A89847228BAB74E0324442444271430429063
+:80D8000082482988D412984429588421902200000000604820088220080080080088C092801984198459842C59845084B0D24CF167673F32D2BD721FF962624F667241F55736AFA3F5C94A9E112F21E169ED78F49C5CAF61F5C4C6CFE8F8A6A4EFE3BB64FFA4D4BADF8CD824F86A2A21C7E66F4BFD24126B8A8F8CA8B98FADF18EA4CAD8C0
+:80D88000C4F28888828F8CF4E4E6AD6A2F2AFACAD84F6DF592422B918F89F994144B592F41F9DADC4F4D75DC7A49FC988CCFCFBD94E969FA8616341F35F4346CFD2ADFB1A6276F73F643675F41B73AF7C2422F69F588DA2F4A7F86F78E6ECF61F1D6D4EF8AF1A6B6CFEBFB66F44F48EC2CFCDEDA6F44FCE8FA2B44CFE4F4A6C4AE862F41D1
+:80D900007149A9ED8FBDF6466C4AF4A4E485A8398F8FFFF4E6AFA4B6F2FFCAD84F45FF92D22F29F16CFC4B91CEF46F6FF54EDA6BD58FEDF9C68EE7816F87F5381C6F6BFBECD7244F63F331613F71F211334F46F233611FF1D2CDF63A58AF86EC65F1D8985AF743D1CFE5F5D8D8CD1C6F48FAA6A6CFC1F944C42B9AFAFF4CD84F24FC6EEEBF
+:80D980002B44CFE6F43654AE96274387B42F2DF74ACA6FC6E624D666F68E8E6F69F1BA284F4EFA4EEE6F6CFE8AD84F61F912449E32AF84BB14E944B5F2F52E984B978FC6F4B38AEF83F1E6E88FC9A9BABFDC062F13F33C268FC1E215F336167E235F55F246348FA2F769EE5E51BFA4F4D4F21F74F86C4CAFEDF94C5E4BFE4F4BFB1E9E4F06
+:80DA000045AD567E72CFE4FD46C4CFE7BE42F46C4A6F4FFD74526B578FBCFCD262BFA7FE6664EEE26F6AFA2E2E6F6BF3FA684F6FFF7C7E6F6FFF48D84F6DA77D2F25FF4E289AB1E6F472D4AFC6E42FF7FE4A2F67F6BA9CFAFFBCBA8FEAFB1872A012002002418443424801141200A0480020810244000018A09200200288A012A012E022A6
+:80DA8000082240224822C8220082289028F0FBFDA04A1028011A364C442E1110081C080088221840348400004441000000280000002412008880080020A284120000CFAF012D421F41522A1F41724AF21124A7241D24AF24D141F26A9219F24A9255F84A9643F24A9743F242974782AD914F82C4914FA2C4816FA264114FA27498F1244A10
+:80DB000096C54A9E24ACF491242CF4912485F2912483F49124A3F48124AB141D24AB941D28AB9451AF447924F84A9443F24A944782AD944F82D448F9244ACDF9D0B684F62E131B61E7341A726AD341F24A131F49722AF211242DA24F88D2327134F84A834782AF347994F84A2163F24A914FAAF148116F82F858A163F258216F82F8D8253A
+:80DB800025F9482569F951286D881B696B4217816D821F8196841F8896161D68AD961D6CB85D68AD944F82D44AF924482F64F924484E946F83D442F82458872E00800448001200000000000000218041840842004001008004000000400428001004007022015FC609431196241643882191231422A6018CC51456C8194844222D48008023
+:80DC00004218618144484232242821383AD4228112584210C2324344E88488084A71144824A134624186E4489114221F9E45028E218911BC11420489012511B81912120830249334181AC85C267C1198412AC468481341C62A84434308241422121846A2141606284A88B12A411118612250828E188D12104849F8471F5042671644164781
+:80DC8000381412AD311426D1849A282B12C418158836488CE18459284D2816A9612A34E958186C442812110A8921A225D02831442985D1221284D484BD3A28921843211262858CC21A641A689183E3E80A18B02841E812010024403111832431481244512C024E140011811018052E4283B124811282D232052B120010262166880014482A
+:80DD00008511C412224A1984588444F047CE0012418C0260264822004001250142008A0482811308410089C2884A028088224244819212842C89440226011810188411840888488D24227734B0228132122137832B12182681A5C12E13B2124CC852174A43B2552845E2847224282282B441B248C11C4823D12228A7244A022718299314C2
+:80DD8000E0DCE224E25224AA61A2C2C2462244273828421E448CC43C8C288CF8756A24181A921220B2222196432AA4941CB2321891846048433491522C0C2A886212304542CCC1429698C200822413AA121228178A288695822A35A213240C50148281803448818888F0C9B12002442D28A71180212201128041D2213521284304B048425E
+:80DE00001C882824C2186082C0223A24862642425441241E4487244A2306A028A014295428412A314449091EA48CE4C4227AF642A214465C6880438A042F84012BA12416A428424088C481278222241184256814A1280011261418D81421742228034A82096C0212636128261851848362C8204466221E2820F26A5AC026A4424D220010D7
+:80DE80008202897448C1444A42A2144331186044848D4643C1118886084284A04346014C1122484A820484206488484183240E20081341A8144D4200811F67048081D1811124034342A112113288844901AA041880040043024501238211146842238812019035441504141C16842202838481115214100A008AF4DD57C03429D148F122B2
+:80DF00001B4963A34692248B612AE18BF468131AB488941423B52831488A91228C42D81441D9821A581C622782122631484489E111621C21326D316257893065AD614F2184F36882898C14AC21258C61842D16488C02E2EFB40A29441442040050125012800842E0442841D18424944400441D42000056342489D2264804282110040088A8
+:80DF80000000158861888841C0484C2201843F584301001A0441836284380012122042A814922A6449948A048221281E219280140168880047A280242421B822183241108262A4301210060000C9B88C07244641434282028044D181C188800210041D180050129081004001232224E824019282D0434102002C44982611860249312843B5
+:80E0000064844AB222280A80E4290C2A01C06140932132222082818421021C228812830220080046AA21A021901681196322140050412341010030120024001AC888E08204226756C0412485414808481008107122889A1241804148C2182258628434481C41084C4489842848A8144481808224A5188324E14298414E24102C396823A237
+:80E0800014211A280C8FC64222180624100183048848B014422465280048401261221A0400424001C8181C2122842128D118011115840222100842A048804424840282FE8420A421001902290429E424024C8A840447121143022A18A1143948E82C031D224342A286152241024626C8821B4154296418488246912489A442C281118A24AA
+:80E100000241602AF0822248AF5D0A10110883018128818711161918086081121114002810010080812101148081110100238118223112142110622138160218212004282F4F0E1A8234222D3118281180614D22004A11A88122004210243224144B425211288849B413282844C22110241202812882908188148068482844202494142EC9
+:80E180004125F455FD24948140AC42830416048444460488601442112C41AB1216B91214D128438918521825090021194828B61944981190315299C281121D141694A1890281983021203812703244A135CA742AF171258724689B424CB22236498F14F31849CB134AA8111B411F46157438FA818826F815781A72E1F121C85F8214938C97
+:80E200002F83D28164469E913AB842B4939CC21D81C9D198F44143297119C1448F18F28A1481CA82F2824C9BA1AF44B328B888A436B9028368368B6EAFA70E2F32D4D1421AB83251214628F74818783783A86847288B244F4A2131211B5426D32B631E484880A2551F17D419B1B288364BCAB5986152B22B2F1127411247234AFCC3323EE9
+:80E28000924E2A1F155A111F1D3849424F22A8686F6422B164E522AEA21C0B1FEE4B12711212D1A2D5817224D912D28825E1D918E42861841A25D298D812E219C9212F416411F061934F81FA8A2325E13292122446F11713486592812CC3314D5A27595D32A97181E12AE113B841D411E462F132828D56246C61895E1616F884428E82C259
+:80E300004B558AD446F86F68002200822100A082A082128816880AA890A890880024812428248B2824400224404248022908218421104218628121842902211220012F1B092F31F1163EA5DA6CB442D7337449792CF61A184F6CBACEF581E19FDCFD8484DAF5A4C66F48F1E5C51F9DA98ACEC84F488AF9CDCF1F9EFC66462F21F165471F03
+:80E380009DF5B2926F69EC28AC412F32FEFFE7CEC31F985877EF6257882F25FC6AEA5F43B152F1CE26EFAFFF61E13FD5F1D7137F3CFC4C446F4DF8FE366F6EF725242BA24F47AB334F62FED77D343F25F5363E857A4EBEC2F623639F94F25C7EAF85F5F4B62F4CFCB1F19F94FC84948BCE4F7AFE97955F5EFF59991BAA8FA4FCA6B51F1260
+:80E40000FDBD7FB7BA5F4EBC32F737E7BFBDED1AFA17853F2DFD12826AFFB7BD2F36FE632B15F56F3DB5FA51C39F86FB67172F26F7AC2F8F8CDC33FAD3F75F39B1C4FC1E9E6F64FDB83A4F4EF3E6A62BE26F44AEAE4F677FCF42D232F31676AFA2D26EF24A6A9D41BF94F22C3EAB314F6DFB4A762F28FE4ABAEFECB852F5B5D66B565F5E57
+:80E48000FC71D9AED91F96FC57EC18DFDCF5E1CB4FD6FC13117F56F5715B5FCFFDB6D46F58FC14C6BAFE57CD6F45FF84C6DF58F83E24EFF5F454D68F96FE37358734DF6DF3F9FC3F16FE493BDF7DF1DDD5EB55CF6CF9FCB64F4FFF37343AFF36F43AF324F6CF9D41F37372FF63F32A2AFD27AFA4F62861BF94F24C7EAF87F7F5B6AF2EF644
+:80E50000B2F2AFA5F5CEDEAB5DDF7AFEF7715F5EFE79789F9AFF6B69FFD7FF2151DFFA77A9F86FCD1F33F7B4779F9EF6EFED5F73FBC4C74F49B8F2FF15974F64F6BDF4F7D1DFF3F35D5D7F55FDE9BB5F5FF36A68FFDBF3F9FA19FACFD9FFD9F1DCDECF81FB4EDCEFCBF9F4964F4CBA22FE24F4FAFB64F6DF360A29010080048420011A0492
+:80E5800012A0414412A04142008242001921840118A01280091C08802422212249A141148214484C2208800200AFD20E10011200148011010084004212141022880114004001008222112A0418122001820090213014141220020022001F440C2D431F4152281F41726CF21124A3D441B64AD141B64AB911B24A3915AB9453F24A9143F2A4
+:80E60000429157822D955F82E414FB244A1CFA274A8F15F2264A96F1274A875D2FA2F4D8242D4A1F49D222F49124A5F29124A7361F49F24A831F48F64A131D64AF24B981F24A925B41AF2439A4AF24B924F44AB64F8A949A4F8AB448F9A44A7F140C67121D686B521371663311C7221D446F2291612F66F91124AF34BA15F64A8643B24A5C
+:80E680003B24AF543B24ADB429F44AB44D188DB569FC58A427828F59B226B4D87226F9D82465F9912C6D481F49B6266489E72616DC2CE8C8D624D1C1F648961FC8C2325D684E82A6C8162E488DA64F8A744834A6AF44A11ACF170B2088040000000080020000001002008800008214800180040000004084040000000025019FBD488111E5
+:80E7000041382942141C94214443215882124863C4284A5182478A21A6D814B1158C1212381484218D8212C24312941144311AF2811443621451A5814806001242188364832C1214F4182444889F4848226429129216A2521614A8142835A812463819207121A41213819711480099B6447249B2245141681382E1A48184228C512980D443
+:80E780004AA11242281D182CAA38908999582216058741188924E41408CF5542A3148662818B782CA4211384B21434144D892D382E589C95248CB31514D8C1BA22342116D114B9129243A6F81548C918A5823932D1CB4369B419A2842711814B414C669119314A284D1247283822188F3824B113B418F218224442CB414531925F750E3019
+:80E8000011108191414951818012020023042C2283219198492404899244F02212C04812000041E0323181244C3424118815282208178800850444128524A284F09CAD001222108834241129A1411400821C012C0387441008A0424A38211006192424228101001812AD812002002028848429480689A24AC0488B24F09288706154322C33
+:80E8800081F11264181B41582C06AC214618F384481451142A6114684714421028F44821224A932484CE144C7244A286AA21C224C062C315198227DD28D6A124C8194D488F4483C64C244122281A3884DF26061D62143825B238046614B142019D122285228841C134306C14501420266812896242C025462861424C8186822222B129DC20
+:80E90000823421208485A6484A9819D88DD44A12C8286B6840A885F0E57240241122418435111AC4221A044840B14D0815428121B42824240483846434A01642E0442A8194821A084C41024C5128A021888552182148C428644C048082668286F4FF711419E186118153621342021166E22822C5842D21302200C26416848494CB28188803
+:80E98000402884BE2844B288032B2C65E844918A814C012847282263A824702214A8872B248C348246228206A3F4B63100465848850120F2142242124041B48C06922C95146082148218291286A1828D2424260421218001A4C2281644021213A441454828A1428820082A84C248444C7422F4797F4004002885C244C022C01880413244DD
+:80EA00002489082608481841200421120000C2432402221004002C84021420240810184408411088F8478B70142111791992249D224934261B24728E1A1964294DCA49A4218E5843A148858681C9448F242804212E18A44AA22C2C26EC44290343B214C8A884161482E544622313E88264254C44A8A1AB2484AA44024C52488B86DF9E0263
+:80EA8000801284420222122502232201112482250289226254481813C2248012044150827022082F220C2542941400282D83488100828848884914AA428F4482245424FF2B0D12147018011C84810414200C00860244602C200C1D62421924A5A12024C492644A3844222386881201ABC2482298800CD8A04868C848884141484D82CF249B
+:80EB0000050000282A01118C9482008018018CE2A6080022248828400220280100B0841404308844604182001A42142424012224832191822223D2290410082880046880021C1201428A8202A0842008002A28C4181008182800008440242268224A2212818404A02800104424AA41422F5808A02160840000C0848C42724498812221B060
+:80EB800042A8244541548221888C0788422018840482288224402408246088414244212012144246682328846184DFB6058A042A2102A0122213229644232E024024041280B2210448000000A02812484C1441288804225142344A2826F24282C88525A42488624C88088A034FAE021E28169141806591118400400C4E2481342012481413
+:80EC00000222281843A2214C326248151408A4C028212228228062414244A49614912424128142200228A0811B334028021228215012C481408144892414183882280081A48821000048904A200841C0844800860289010018004429321481A9018448DFB60D0012450128480014000028288211264808412E4812C018841162802164867B
+:80EC8000C0228032218120848412886248D0810282800888001024F25D5714278246840618E428E45936482788E48CE88422280480042A0829088961242A98482C088243621810688482CC042674840200D022420428296442502422302841A1B04805389B1E112E282A1113F32224B5A42A29B8A2A284539C282B2C21CE6E83E4288C3A67
+:80ED0000A28D88BA7228FA41CA8B53A024C88A843A9888C9D4256828A886A8A24F48A68696D489BE18D22D6422B3321400897424C612126FC22AFA482448EF8E044814381B115AF278755AF249484D635914AC842E488D486E81488F8618B3226CD42392AC221784212A83F27E52484254E6FA4668866A4821288509452532816937222E2B
+:80ED8000942AA2914CEC44B861FCA6B249B2425A864D881A91AE4B8387439F1C4D31321E2432875440A8121466F848894E289D4BF11C88F42483288B828C3324414E414AD222ACE441421DA8A2A3B854B11425B242A426EAF62E4443FA6424C648D2C26626C263BC42B8C266142B58E15E446AA8486AFEA83681448CF5C2A27FCA05422678
+:80EE000001898154184800A04814822048A3481482148214821C328214181C826814889082A082112B821149188118F124921118138831814C21C8148238822008824AE2F40329D455F238285F5371115BD78B225FC2F221622B22EFA2FA2A222F447845D5997C2575685A3A3F1559F52B824F46D411D881C4894F727431711D7682B142C7
+:80EE8000F491118FA1E12B53E4FF7AD244F48128D41F58F241422F6A56131F1BF254462722BF91E513F21AC924BF9125F3384A6F42F23416CFE47426EC81F114183E2C2FCF082B675F51F63828DFD3F359537FF5F172685FE6F266266F46FA6AEC97941F1CFA45859DCB6F62FAEBEBAFB2FA7B91CFE6F4A3817F56F489819FA2FD22ABEF89
+:80EF0000F4FC5111D76527182B481F19FD597B8F2DFF4C4F7FFAF2E5673F28DCD2F281251F2CF4A7E76F64F6D7477F58F339BBAFCDFF1321BFACFF1797EFCDFD7484CFEEFD26866F6BF964E66FC8F836B84F8BE9C1F184CE342B624F42B738F23D3D5E52EF45B178F5652C1F627623F5EAEEBFB69AE245F4C9884F66FACA889F84F2D1F2C2
+:80EF80002D8A2BC67F54FE41E12E7B2F8CF825E61F81F55C5F2BCE3F14F4D4148FFFF3B274EE6A7FFEDA75B48676A9F88CA54F14E468B6C2F4A5B7FFF6F43696AFE8ADB6BDE84F65F9CBD94F44FB88CA6F47EB2EFC4CCE4F4AF822A44BBB4F62FBB5FD342B675F53F331295F53E325F77F373F97F6652F2FF6F6E3E5AFAEFEEBA9CEC84F6B
+:80F000004CF8C9C85F74FCCACABF8EFEF9D2FFFAF8E6C44F4EBEE8FEA8CB2F8EFA6D6E1F83F77C4F2BCA3F18FC84D48FFFFFBAF49FAEFEE6A64F6EBEA6FAA9A8CF58FAE4E14F68FEC3A14F6EFBEECCCFE6FCFBEB2F1EFBCACB7F74F8DACA6F66FBEACA2BB78FAEFE68EECFCAFB2CACCF8BF9ECBECFD50F2712800126033440416832408165
+:80F08000440324842800A0240021282128411004430261100424502448458204482448244082442681024604DFDF0182408182012240823228101A01C021501222259141001C02142C4181641124280026436412601644142814281450124114412843220425240126F11EBFE022F5112485F311248B141F41724AD141B24AD141B24A99B8
+:80F1000021AF1419F54A9243F24A9143F242954782AD914F82C4914FA2C4A16FA264114FA2F5D8212E4A96C54A9E242FA2F491242E421F49522E1F4932481FC9726EF2812CAB141D24AB9419B24A19F54A9443F24A9443B2427B2498924F82A4944FA2D477014D521E4C4D431D244B141F41F646111D64E9B181F64A148E64AF143B85AD32
+:80F18000364B4A8F54B9B4545AAAD45AF9A648AD954B5A8F14F326C28F55D8247558E5A278D8C5CB8F5CF222D217C52ECA1F49D426FC112C8B841FC9F26E8215B842F8812CAF46F8812CABA45F88F24A84AE48AF447884B84A3AA4A9B9A694BA4F28F16C3C40084C4401000000000000000000008008000014000000000000000000000011
+:80F200000000BF8D012222811428D024C112432682862A84C1821022618114284E2148808882B22281820226D428A2122AA84800A0414F84028C98191A8208426088A1C820228182524846F87AA8C04292228CB315941822481C918218160821185A42B82894A1281588216246CC02196184198834852B4100252601911810A2A52E5121D9
+:80F2800054222CC3888D91C0644D1244C22634444214226DCC80A23484833151122C81B144312243222A86612148214AF1912822ACE212253614862C18F11228132AD62578515428128F48A2844281121AA424985EA91568134328B12AEC1881584A56448412442256488B25CF7C0E2C0422193224844382742221A81416480288328126D1
+:80F30000081114002A8422A2214800208262229012400124C46290124422284018A8422C084A28E3440200AF6E09417022C12822A0121B410000C048448428C0251120C221512826C2248012220880E94102121C4864128A042024081AC413162824084301104808226F840219D24282014B4149C249818B248B121C83928140614D1F48C1
+:80F38000819B4849C6288C819448C4143071CC841321A12183022AB18482212B911C196882185E281332A289E848941123316A7028C21918984D28CCF84EFF40041C012A058024220328888111CCC1849AC26445C1281826114C642226B411942421822013082A8131114398318E481183228155215A52818E1813042844261888C188837E
+:80F400001278660126C326288C4234241F8275113848841C031442448AB4110285A124302842136482142032482A4121011ABA14028E24881A0216840842A62882A81863642198A984012D1184184449FA1D2D1489270429C2124982144268642860C82D244598984224AA914441CE2419A24A43C8142C4894284CC29490228D2258882627
+:80F480007852844894223E484304AA04E28B821D884288123084488429A3148CDA9303E084019220082219528240614519262102495285228220911268909232192811C1211810816281881C842608221B82308485222204E08802264886280C215F170D9024121CC824981880A41240088602210000260181400811007068420882472281
+:80F500001200281289240880A121002001218848201108F04CC1A0144C8271122191144A31228D433E4228E08168584D18A84249F285184394A5C88C21BE681884A1128B2849B16D18AA122853842121898A61887E882A84A2492A6988A398C842888BA182478C46B41A8883C4A87FE7062212807224820220420C156824482562810029F2
+:80F58000220243C221404442114621226122C08A1AB22288121671648206441C880268108101218002E0888441F23D3310240110A4142014814408004681160420241814018002204121011222122283021418000039A868800828888058821212C05284BFE804221184429722444074284281A4242C7449041988836C121008001141443B
+:80F6000012B0A40187181034812071140815021122188091A1008D820020022092224AF8FF2D146042100926888407260413311C901188853114524C21810473024011880414200228008006225200001244345286222102008C04F04B2B5082004B240010A12400004014048F12448498491400D012194441E11C012302002548812421D9
+:80F6800072128332412222B5022301174252818238D04A0800AF880B494404100843150481288344A11490642288141024C88180021412144814208819210120988118811B18199831805881112400008880218CF2CE630011843016100848B0410146C8216811C90C6AC86418104258184180280822860191888446A141901A000000461D
+:80F700008401188011022323012582F48E2B80622115342514581042814418034082C112401201100600222001504814282226C4221CA6124111550224C1284C428201308228842004842CF8FD5420E8882282A181141212400183C1246082401188416844F904302811401114989800181888008C0430522A5412844412881213A44100B6
+:80F78000402A041C41F8FD4E400859044845486412848D3419C22414492321015C0319118118922118898258424229028031828184128C44212A6222188E282C31514655122823284254228634832C68872504ADD6344147E817928B425E12D7828744462182A4268D4817854D495B462D3159E284AD2413F4181C495C25142A2211A411C3
+:80F80000B084235911B0B2711983E2A5122877A945E3258262188732457181111772427122C2826081949ED84AC22D27841F2C08289E21815F5532A14E444B512F4356391F96924913964C1F45F11811626E85EB232AB9349D44113021114C0A43B8917542F821128E241855A89832141F818385B121525852BF223292EE186EA28A89A12C
+:80F880003A4A91128ADA42B832784622E215A482FA0B2E441B12454452DC1A0159E184761CC4192F11637280F295C48F817181F51541257DC163DC1CC82C857B257921551B46F531C185D188288BAA224CB82111F4812B1EA22B113B523F1AA5811D3C3B612B51871117315FA1ACC9167C22F228228E12F018582CF988429F7D4E22642284
+:80F90000842E124823022B12482B123022504210A24829A248210082282440022C48C482442E824426426422442A4824428448048A24220141308428431818A42443016F7545D175F416162F61D156F238A43F72F66666FFF6F75B59FFE5F647123F36B44BF45A13AFA5F536566F51F95C166F71FD3E3E6FC5A54C14FFF2F22726655E364F
+:80F9800047112748AFE6F6B6354FC2F2A624AFF1F39FB54F68F8273F3FD1D17558EF75F54B497F61F7BE363B2A8A92B19FD9F984945F49FD66766B1986F48886EFF2F34A488FC6F6B8ACEFEA7E694353574FD3F714167D67BF52F263676F46F27D6D9F94F57E66AF44B161F34934A724AF85F574F4CFE1D876D812FDBCED4FEDFC4A4914C2
+:80FA0000DFD2F32D24CD9F6D1749F18244AFFAF2B6373F8AB232F31A3E7FF9BB92A9731FF1F11715955B13DFF4F41756FFF373A3F8D5663F15FB19BB2B999AFF76746B916485F62E36EFE5F56A7C8FCAFF2C7E5F7B45D346D445F41D1DCFE3F2F2469F93F46664DFD5F44D7FDFC4F773441B569F24A754ED1C4F43F1FCDFBF15E11DFDFCD6
+:80FA8000AC4FCDFDC3C14F58F829391B225D8F457516F19197DF97F7B8B7AF93E32AFA9CA81FF9FB93111F13F71D199F78F88B8B3711FD4D3F29FFBBB27F6AFAC1E51F3DFB9BB91F31B193BDF6FF9296272AEF28F83A3A6F4DB542F3BCB8EEF2DF8A41F14464DF32F21F1F7F56F2694B9FD7F56666EF94F52D6FDFC6F77A2A3B36DF2471C1
+:80FB000044D4EEF1B3B5DFDEFEE4C72F3DFDFAEC4FCDFC4A898E819D299F32F23E2F4D157D111F78FDDCDBAF5BFB9C9D1E82CFA9FAB3B55F59F31133FFB1F1BB25DFF8F81231BFB4F487F6BFA2FBA7AE3F6CFE73B3BFB1F913137F5FBDF6FF12942F2AFA8E8AFFE3A3DDAF84F7ECF8CFEEFE3CB15014901440413824482601148C44A14146
+:80FB800044194464814411440011004400188001001C081C012E11E0320124822008822400C022920042F08C3C2002C02822162414118414881218410428E0443281144B480028800242802222280280028A420125A24822202641014A01184002818C84038EC4E022F4112487221FC132681F41326A1D24AB161D64AB9619B24A19F54ADB
+:80FC00009443F24A9153F242B14F82D412F925481CF9244A1CFA254A87115FA264191FA264592E4A9E242E4A1F49E222F4912487221F4932681F49324A1F48F24A111F48F26A931F81F64A9251AF147924B84A7934B8427B24B842F93448B84FA2F4461C40E84144D1C114F811444217C16AF1112C8F4439118BA4114EB4478B8D814B4892
+:80FC80008B9447818F14B8A694188CD558B924BC18F8245883E9823C981C9C289CFD81288CB591041F81B6487891384A1E682B841E28AD861F81F248A2848BB48E48AF246189830429793298982F28F5FADC20280800000000000000000010021880080000140000000000004004000000005012F07F4824581C42B1142284914841139607
+:80FD0000282200141A24521843E2581286A11249C82828248C448424842621091200A21115262341612219E1220121002224842B1858818B2100FF6A05A01863518183524341934332151D182B219821C44E19248C31188CC24143382810712264422843B1267118024849011AF211242741AC02146B248CC744428C7C318838898644AE57
+:80FD800052702924328450588CF448F880B1C132118F12E184C21446D81C12C1154B212132148B414A13E8C1F22411E362354BA143286312438A3624123AA41619212D911830658A2352431F2221B741E344A2414B28352272888128A22485A21262848C43B112F4DB3B90421261442411411266C22885A1212C084415480389080089424F
+:80FE000008255248604461812110042A211156812410444812B148E18182084445D822018D85124C0885447896011828244C12084004284A0183042003A01400800120022E4800802401120088001311840290120000430290181200006F5208604100B02841245248502822181CE484084B85401414210400848911123848002302268465
+:80FE800094212138432482048B41A0482242200488B08434281268884E28FF970B18283022C0384426042842232235418822443044400118002608834668842084022242138288021142228341A2842248002200C4002A0483F413D500CC014181005084D0480181304812D880410429041800831102002412D08401242031443241800440
+:80FF00004C0100424488A01C3628018228B7860024431108288121260216081841121851120012221844846081478142001889C42A188821810049914200482100842018889138888C0120F868EAC02200508480744412C842284800E1A11228124129A484288124142A04848983481422480222504A448008842E144800008384024004A9
+:80FF80002822B0E40A21404802A10000003018204828242861822004440080411402220080A1211230221240048C81041489041008480041F076118002278185420C8C944681422842701452848958844A2348E681A28422502C118362C1484C9282122E482A4882A81281AD144443A18540DC24B41804404168848C9218324B48838192DE
+:020000040001F9
+:8000000024888FDD0B25024140C228002722901A8041C812121C01181242224A5184005230188C014502A41224A01240821202A021800484428200810000F03BA5104204840081000000504200841841000000005084008041040000901C44000000001800122001414F78050040040089812101182112208121410281000050828424103D
+:800080000284202121012418000020018C2101120084400881F066D70084100400004024011200000010021800100885040012478120013012404404C01410880180018011284118F4FE122485384C100810981818184554644342128481C1181642445A2225A2111A215982002502118450888D18830400901800504445B4240180011085
+:800100000824001AE1F308000040041280011218000000000000000084004002004002008001120089110800120000F09A3C40D88224840400006041414C22830221000025026981812988080014111484818C24840400004014C4242228000000250229F16A595088800421009018004480028001120010024C0188000040012484214809
+:8001800000410000C01416880220410C001002FF5502000000000045040000000024218001004400000085080000000050440000000000004CF15A692400000000000000122C01200100000000440000240000000000001008208101000000BF760C2512684442002001504430142222000040124226011624280800502111852811282407
+:80020000040000504484413222008001404222F15483404888C44240040000CC51441A8202120000502221181889881804001414405888482904001880414454442828008100002514B29802001002002001180000000000004400001088010024004400002001004038180000000044AF9D0600000000800140020000000000410044009E
+:8002800000004002002100002001000081000000F0F3412425022424400412009018200120011A010000005044402801005022212424214100001812E081810112841A010040749D0610020000181AA11100001812290100001044140410140800001200000018182001831108128941040000F07AA100400421410084A011121A911240E2
+:8003000002000010441404844004002424250240040000121810480885081008001014B4830F672225A2122B119012C0122582F8121397118A699987818F18F44848D09114815489814F84744854444B242E24C02480524445E242723652222AB112A1812B99C0922582E8317111B188699987818B484E48C048805488814F84D4B80D6F30
+:80038000225224181223110218259282BCF1111219E98918D818344842941581445888488F44149C242226440428444584F32622458221B112389282182592821CB11191919E8881892464848480445888489FC50D0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000B4
+:80040000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000001E
+:800480000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000009E
+:8005000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000000000001D
+:80058000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000009D
+:800600000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000001C
+:8006800000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000009C
+:80070000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE001B
+:800780000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04F99
+:80080000FE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000000000000000000000000000000000000000000000000000000000059
+:80088000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000009A
+:800900000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000019
+:8009800000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000000000000000000000000000000000000000000000099
+:800A0000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000000000000000000000000000000000000000018
+:800A80000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000098
+:800B000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000000000000000000000000000000000017
+:800B8000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000000000000000000000000000097
+:800C00000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000016
+:800C800000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000000000000000000000096
+:800D0000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000000000000000015
+:800D80000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000095
+:800E000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000000000014
+:800E8000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000094
+:800F00000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0013
+:800F800000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE4A2
+:801000000F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000F5
+:80108000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000000000000000000000000000000000000000000000000092
+:801100000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000011
+:8011800000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000000000000000000000000000091
+:80120000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000000000000000000000000000000000000010
+:801280000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000090
+:8013000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000000000000000000000000000000F
+:80138000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000008F
+:801400000000000000000000000000000000FFE40F21005086411014221102184440466281441622018321010029110881008110420810026081414301C0140040240100301843F1A355008484841058688C512444445048846440143412218429414258422D124C016371122C618184418180D18211C81C45781418041004844144C110EC
+:80148000CC1C18168801F0BE3810028440481814021200160844410080110283014062410000004400100249014D1889110400001004844100104874620A00002141C01224412100811042441804842160814400301C250489018410823118508200001241901800811044088C0120F1FE840084000081814440044441400218001218249E
+:80150000002341420200004008814008004400001044044400120012E0DE0700404804100400000000252611020024008001896181400800000045080044004400001218001200BF680600000000000000000000000082000000000022000040080000000000000000CFA203242412442800441281A90381C4C4422508188421844082042D
+:80158000C01880A14380110244241800854448C43184842781181E4C104408100C6041D0F30C22602284124213012004831822218131244938220060814578285629226C6462448132841800C02816282184014C38940080181482882882A434160841BBC7404282514A1A0211411846C218812187414C612484493822842184406822B4FA
+:80160000B0487122321442121638124044A2211218463818F014A18C413812124D5844418888C044182001AEB320022200481800842282811028C1248001008951248744801244048B21220000104808444004860484204802818042A82416481474F9082A219112501800282344A8821A04821880229822222008A2408222028820A2281F
+:8016800000880000448140028084112124D1222109801804824E77304429028C216115261288326452A216781881D441D428D1482409321C8422B482128464454E13182A084AD1C283A525384382B89E84012B418628E681264A6221A4284F820863BC480BA24AC828BFF30662182901845621322222482AA592819C818164A100008228B6
+:801700002810344226842481025A888225A821221024011888802386311124124F828121A481B0842268886F740B168602839111008129742884888481281485D2A48C2B82C341C0C2A820826531828222286781A016402498DA44852214986283240821A32492822338868B24882084F2B642704AB1425248242082411624328285512284
+:801780002A08188E488D218AE44112018B12222A84014344240448182581222A029A46C434681E42142B8328418E122280A18244D024044810FE6BBE302446081E2D40322CC028402862414A124808484C024B212210128A81082B283227221144284250822724418088011880193462880080C1142820889142DF290112A0122004E012DC
+:801800002184E412A14140A84146848101005848C3084A022200008A464211020089048228431204288094582842282800C048F0B466C03620D3181122F21228146684B4A1D1A14192488C34144A91714B4A44322A855148A3A2244024225722424B3828172624002DB4469C34782C22B124A128A0142B481E48328A86B314C2648018C8A8
+:80188000447C012D4128C14C2204411E24A128A1681882188C9488842043058B24A242002E42860428205422A08228210082881A742423888192820000410021484A41F869ED2418181140081180140842808408202223288802A8864282842206100480F1826212802218A41424260262800100431402280018F0F73E00105418F0482281
+:80190000404A8338228442A01290484881420085522111100800290260221C48A1241A02200228002001230C2C0282CB24902442A3E422FCCD992470485181682414110080291602000082241C01268514046028808248028A0222002120A91820A321822800122051221820812184B8DE0E1384021811848314115812894401212D4448F9
+:8019800010D22382420448C03222224282484311B68482C42211C502478844245016418C88438244184214C424404462482948F476D3002902812301848902134218F2821418810000114219040028406229414216626C00881241009064481841C842C0144A018084A218AE112841146F7B0F8C91412A048C12113241918622624880229F
+:801A000004002014231202188004462404004221C4C092228622080029222102282502409812100424F0F7DFC0245022131284141412449881C4002328FA42816E88804888081AD882045908871282C581821208846718224D8210044502001E814602D04829845124442548046CF6DDAA8002004AA12148484890442228008184800C1044
+:801A80000222C842284800C24A22811918044022C41280314418802482414482210298004728182FAF0984F02248122502002044514214382C214864A864800C271AA0121888294202121234204A2882641445420926088601EC888162221210042220991270724B93138F34A6228CF15B362E41211C54318FA858828C98841E1246A28239
+:801B000025618A918AB4428492E423B6C2084322C2A868583E141EE4CA958A24BB428E322225B2A6A81927244B243BA92A6A8348A542941A41472481828840D122F446D4E0218251BB7603AFA1D2D1B449324839F2D981AB462A9142A965888BC4A9EA66C8A25F99881C19F125222AF7424129F65442C6F4D22928242AE83232E18E3236CF
+:801B80009422C217214E2416A91387424AE12C3F524B59238162652B32682B936FC1E24CD168A9264F370166342141994238418354A2CCC4414F22C6232D41B0942A44EC24B492724241621226E129CA482189622C271A214D864D4263DAA2A2186DA54741F08DC64D84CC91424F425262189A14E122014E324F61985287486F43D144A269
+:801C0000126B834B4D4F49E84F044422442AC144224440048628220841708488D28404458852844A72858852844A4288420826082A0822908890881008C72210A8418D84908890A8842886088442BF4848F124245F72F2292FFFD252445F41F141437F66564E5F76F22B238F36F2D2954F65F19E96CFEAFA4749CE862FC8F88C8C9D89CF93
+:801C8000C8FCC5CDFFF6F669EBCFC6F2676DAFA4F49F9FEFEEFEB7B7AFEBFFAAAE2F2BEA3A62387FD9F9181AD5FF4848BF79F8C6CC4FE4F44A4815417A83FB4ACC6B5D8F8CD4A8F1889A67682FA951AEA5FA28B84F84FD4E6E8FBB0D6E623F32F2292E4F6262241F15754DF56D6495F169237FF6F662232F17A3158F28F92C2EFF1CFCC877
+:801D0000C4CE8EEFE4D466B482EC84F4EDFF5F7EAEEE3F96F64ECE3F31F56262FFFBFAFBFBEFCAFAB2A39FBAFA81815F5DFDB4965F78F8C8CCBF58F8D6DC45FC4848BD9D6FE1F9538BAFCFFFDE4A2B4C4F49F9D8DAE7886F89F13C3A2BB32B334F8DFDCCDC6D55142AF62163DD23BF5242F23333FF74F46262AF84F46321BF7AFA6B433F62
+:801D80001DEF2DFDDAD2CFAEFECBCD8F2C5C2E8E885D852BC89F1CECB6F7E6E56EA2BF36F6424A7F71F1C6E6FFF1F3B2F32F2AF8FAEA3F9A7281F393F54F61F18587EB4C37D16F4CFC6C762F6474196F439F3891F2AF84FC46426F28F85656AD8AAD822D8A6F42F926A48BD54FA4F94AF2347F767623F32D2B1F73F25D573F35553BFF760D
+:801E0000F64F4D8FB6FAABAFBF36F6D3F32F2DFDDED6CFA2FACBC7AF2EFC4EC27FFCFC8BC93F187C2DF584AF8FBEEE24FE6F6767ECBF91F346645F51F3FCFF6F6EF6FBEA17BA5F78F8A3F76F69F98D8FCF4CFC939D6F6DFD4A52AFE4D433FBD2949F35F89EF82BC46F24F41E1AEFEDFD3696EF41F934BEEFC3FBA4A4CF4CFCC4CA5E8110A0
+:801E8000021440424843088C64228C44A1412484002482000028201402212849012B82100400650222122622410200241264126C22410444824FA60D8A81021E28220000C081288084483848800A206A5451882A044302888E242B8212A0282280E1480292604100421A021A0400102202A014147FB5062E431F41F228121F41F268111FCE
+:801F000041324A1D24AB141F49B26AD981F24A9251AB9443F24A9357832F147B34D812FB24484EB15FAAC4A14FA2E415F2244A9E212E4A9E252E4A9E242E4A1F4DE222FD9124A5F291248B861F49F24A821F48F26A111D24AB941B29AB945B48AB9443BA4A3BA42BB44F82B442FB24484AF9244A8D12C0491B41A905A5B111B42A81F66ABC
+:801F8000131B214E141781AF2412B148BB21F44A3317811CB931B4429A472D915981D1236C115D82D6D121655D3C645D4846DC12F5114425F3116466F1116427341F48F644131F48F442151F49D23233854E344B4A2B344B482B144B482B146B4A29BB24F1C74D008004400800004400000080041002000000000040080000000040040077
+:8020000000000010029F270544409438581311088302481116D82814C8368CC1B84B284B1262437B88819822834288C2245249A5121EA4E82A881E026412198A2BC9341200928181A0142828228082014FB8084AE21932182124F0122136244492382C022301A02480850800284B84424830124428428C04002812981014A4248241235258
+:80208000282098411602898805C8481CE842FC27AC406416C532281A341323E2418242F224481426C25284228B418B9249A183224B811538B22B828B2C8384B21292141819E783243488CA3242181684C1A54C81BD14121416B832688884244A918832808486B132FC1481A042121812008D1130488081921A84301429024A1A24248208F4
+:8021000046040044484E2460482A8802282018022A888228210200462101224222888018F4B6224011D114A1212603241301112190888210714852842324430100422A04228514A4242018042112212800248241922021840441818688034C0228F08E139042201A2CD118F12241C11F24A1381F21A212142F84A194233222228322BC4866
+:802180003158CB693081244E3823A45A23D128219178122B871982A21886E2E1C6582E184CA1434782A6C2888E182D884289F324826248830FAA8578C8F449BC9042802212311A271416C8112B121D1228D082CC9214A31262841281C0C82088E28491224FA8921483024EA84D1228222C822818324A831262448388329283142A3414281E
+:8022000025A8258B584420C8CC1FC106111196D5482113C1221584C4812322C189124228424D2A22CAE214E1846143C041468282A41460251818E02845218181F2285412188E14384C234888290C83328CE88022A22D28F0FB6C901C4299628210084B2140B822716429B81252481082F41248AC048C01192CBA424398288430289391142B
+:80228000282924C8184E28402223185881841A744418382280294C0C22480084AFDA0995A2161211468C82043921E2881426B44802905421806282C604292144A88648824E322419244A58412A44A814981A8464C212484302412249E1810421C28018064424CF790A2A044418381C9128002100818812A28189810842B0280541D022C186
+:80230000162280890218181002260284702204001E224282880028E6088CAAA432415EFD3075212E1899E184D21883342460828E384648AA484588BA187412A2818334484E848B4114A6B248B262716874A2C83288423664827B418A14A21218481E4881E36384CC82C41827244961881E82A042E668288E2C684341FABAFB001A5214281E
+:8023800049018322D13201272419A28416880125C448832492221688A2484604812901488B212F822188012212818AD22281B224081480811628A814A08447882022248812F4438E80121882849422624244F012481D38139182001A2494A8308481004948084502C221811628280C438911221434846D8842A0482B12123088168821C820
+:80240000144462C024D027081CC43141800281802204244880352140021280C1C8128CD443CA1428818440022C61814828210028200229024821121448502489A881181A18C882CF180928240089124141D294E258C322001002252224F14C224C01D0241284342283B42481020025012821306800E4242688442808803124278212442292
+:80248000258401126FA505B44210030019C21280084061482122224840021281241001994C7111A841288C049460824018D812A41444D01292128B2C861102884248004B4218688FAD04C22240018D2240088922581821290D460288294188D18108931282411808EA01238201488A2412582281490410480826A381293128829082001213
+:802500009024145F270C2004423420D21202C04110C422192A8124A224182244C90846588124118A11984220944840562818C0422442A24A110248C048122242004A21A4424888DBE6504240111226849454841184981C08208AC81189181229B141011C9A64174418112122AC34881A28588282204A04A8308220048414112D58418C82C5
+:802580002448086042AF660700190415081538184034222842142C218402108408102602217692641881282824324992184002200220962840420221A4249843120260248F2A012D1A16810442140013D18258218624A324428A6161924462848611228401894B4112B11136121421C088442E41425C98829054264138824C8884827484B4
+:8026000032B4C901428614B48205CE3D8036E160241D6D89324297A2ACF12D97AF8384CA51341B183BB34AAA211E88CF46D19C2121D54CD438FC5A82FF81C34A7F64DE22F21A1A2F25E4A871C1284972B8E882E2284218624A4FE7FB285383F483E22B8689DC29F8E211814F6F23B8582833144E142621F8254824111E722591422233A68C
+:80268000622745548CD42172B37B55B2C2C842C22F23F582C38F4E073AF888984D512CA32E1568621B3436F8A18113A2221289F942E84BAA492A21F24283825D8248C674222AE221F6421A2B1197812787AD88A57282F484D44EEC9AF25CB42E625F2145F162172559251571484251991CB73DB282E21C98182B8219B576C842446A11F2E2
+:80270000126A8654178F88782259C64F52C64187538F18F158584E618D18AB622F21C4121F44D462D13AB14AD44C746CF6426823D882827648B881A1294641F284F6F0749C49E52492124B42484B948F6301442A41044422448004202201411C328414400144200442200480012A09304122112211881122191484240280041A041608867F
+:80278000886288281E43341F1153645F1151159F945E55DF64F44353FFB4F44242EB6C3F2DFFC38655F71191E6F581177F18FA5387AF2AFA9395D055F8A3C98FC4F44D4F6F17F44443FFB1F97A6B37B6A7A7EEDA4EC89F1BFBB1911F18F8818286E33858332F84FAE2AFAD1B2F28F8E3C39F9464683F28F8C3818F2AFAE8F8AF46961ACF30
+:802800002A9AF28FCEBE78FB28239F3E48F315157F72F6151155F34F4DDFD2724FF74343FF77F7DFD62FEDFDC3EA3F7CD764F4D5D5EE851F79FBA6B22F4EFFA4F4DFFA5B928E894FCCFD6D6DCFFEFE5E4DDF76F69FFFBF93F6693987B59EAA9E89BEBA2B9B5F78FE8B888F98F4C8CFFFF8F8A7893E2D4FF1F187876F4EDC99EA6CFE8183CB
+:802880003F3DFDBC8ECF8AFB3A2CEB94CF62FB4AFEAFCCBF4CF82E367FFE4BF315763E72155613DD2D9F92F24143FFE6F543232B3F8F6DF792B22F2C5A337F71B1F3DA34F986822FEDF8BBBBAF8353C61D411F3AFDCACAEFD6FE64455F57F5674D9FB6F67B2BAFB7E227E7A5F4B2384F4AFA81D4856B28DFA8F88682BF3EF2CEE6BFA2B305
+:8029000022F2E9EF1F14E428F21B1BBF34F1EAA2EFCFFF6E7C2FA4F126A2EF8BFF26E4FEB82CF3B6C5341F31F13737155732BF9CF46D6DBF94F45D5D5F75F3F7B4BFAFFDBABA6F2CF515573F3DBDF3FAD6B37F3BFBFAFEFFFBFF3E3C6D1D4F5CFCE4E6DFFAFE6EE7EFD5F5353FFFD9FF396B9FB3735AEA89FAD1CA2F2BFFA7A71F68DBBA0E
+:8029800021FE898C5F78B8ACFAFCC49F21F72321AFEEDE11FFC4C23F3DFDCBDBEFEFFE7EF8EFE3F3461A6F2BBBF6FF6EFC4FABD974E2490A2A0121603248141E48262369329E4834123412002C32912011088B24218314F24824318B2418422190149012908648452241E288442241E28944016C6281644844124604E75D0013410150818C
+:802A00008056228421102281082C220980221928A8844312C85A83F1228228228021A9528222820023A248818C026840482293820012284828241F220A2E521F41D228F1112483F61124A3D441B24AD141B26AB911B24A9945AB944B42AF143B242F14F924482D914F82C4914FA2E414F8244A56F1244A96E1A264592E5A9E24ACF5D12439
+:802A80002F22F4912487221F4932681F49326A1F48B24AD141B66AB981B64A19B54A3934AB9443B342792498924F8284FB244ABFC1066FA2B541925C1B21E3B611324E19921E1D64AF467911B44A9A21AF443981AF543321AF543924AD953B422F44F9251A4CF925CA1E815FA224E9A264582E5B8F51A2D217C92F32F4916426F3914C660A
+:802B0000F1112CAF167881F44E111D24AF56C924AF149B2529F93448A93814ABB4439A1A6B4AA9C3525EAC2028880400002008440000004001100200A8000040014008000000004004000088000025015F310F330424192141B8180229258121824182C82256C81240A2218B2442260268812220224828012800848CA8245280042812269A
+:802B8000880C45382480A4494B1A18224B814714EF1C0D2813CB2150287682D41812C8412518814494484460424E1826A948804108642285D48291480021322D44D012012B218648C26A225250824818428296A21C4140A28240A1289F9347924113CF2348705AE283C4214A41119E216A41E688C424A3C116121D282916A8142F81126221
+:802C00006C70287412C868821100A9042F1441D882AB4856E284228485921C282A2144C822D84624C8329E22284D915AF259E92002301189810284A11A8401000042228304982A040022890200402AA1124C0200302840820210C2484A084C3894004A3184003084FB7800C01144001811A04842118D114810842888288B212204B022048E
+:802C800026082B528902125812A0214981C21228411A0282A9B81122048F2408A04228824AA84288F07E84808182023B2499D423E681944867A184B22483F988419A024E2822B0242461881163088C216143207482346C20A41425312224438284BF48B81464814A02188465C1284B4800A3664189A142814FC20612281343344187142BE2
+:802D0000242D1870423442C01184301488898422B124A1124E883084488CC1282E122042B4288481A5412B122981C2346843C1984684091858002D28468402ABC249648348F01CFD0000302290111964848B81811B3885A2588F14280A2A28A82848001125220212442A3548299814420011494242024A2A8641BA283C2140BA4D08884294
+:802D8000228089844AF8724B102807348C31584840818192318426814402218C11A8C22212808A237414C843A0411140CC218A41BC682821C5141A58225E28224358288302848A0144430241C860645F24038D124200802232238C428C51841AC8328188C238009088422148184D88A018A0821D281AA4A14A2144288402830800414F84DC
+:802E000023A243152484628D5A22682482A01229E8450C4870188403001812420010083018830476648142E0220485244102120044001902140021C44E248604202488881102828C01221280F2CAE1C01222841661818B34281641C8141A6282841C9148248B858987C13483298684A248901416DC210D3A9C281883C871194434A8384E6B
+:802E800012608849F256A8229A146881148331B2D2A67484082118E042D84F0E4812498112024682E212C1483011988421822410C8484A6288182C847224384824800160444B12A092400160C94D1248403428682B84432804811A8483C4A48A84C3425B2F1412001881001D12853428883022118420A882122400422441104202108468AA
+:802F000024524628A1142C011148608190442F88C2E2882412006C0441408481B27807285024621C3219001CA2842285811818949185321830392810D28104844400251412D4828A082441100416458102281C410C00442D82901CAA8181318CF063CB00002014280146518183241488A1818A211458428088A1810040284214283288D07C
+:802F800068220200888924E482018021040080011880016A01412ED960A41912831482120C40442282012180010016241898248C4804C460428A24410480448144110225B2443112144015982480E224215224822B821004FF54098002188B423820021C98C8301830C800C8004862242094184220241428C42888800900004820A3420001
+:803000004848208281022200007FD60384002812215012414A02852518880100301226189812184C33422C8894288C72820490414414141182821850181518983425441442042241282035242342F49E58241F42112112110425012618C421182058218C12D21291A8811214888614124514094051842C4848024931121185455983400406
+:803080009184948C888828888808860C4846B2E6041368881440426122800441186031008F48246223288429018B828B8228303227C21226080021482190428284400285222442842802238218022C84A4212B21FF7B41420AAF220412424250222434E654228A2212886124002B4882258CC4528692C8444880444285225A81D014644167
+:8031000044444321744142052514F2462825E441280410043042F0C41A244E1386B32822D3A8D59B614734224F48F28DA8AF84D3A8F219183B3C99F8C2D2AF822141AA598C49F428AC8AE8D3147A2CC2484D148D4147412E242C7D826C2C4542B38344781182A213A982F1525114E149D842B284A19CB8E7418A29A8554F4C3414EF4A04E5
+:8031800039B28152324AC5213A54832135C98123E22AA4818A18A81A449E432999236FA2084E184B49A78224245C63422F82D2842868243FC8A2241A1192114D849F48F44454EF11512C17219D27DD28AE6AC64422A1A33AF22244226B214FA24CB43863421E2F1436742218D523624728241B21CF64F669484E4317112B18341E8C27813F
+:8032000087814AFA242A8B138B24BE418F297841F24466E3F8444C2D48EB248D422F4ED2A8FC8E888366221D411F51351416D314589817843F84E454F16448A6125AA1AFCC9484642D4247288826A6154B22D022F6E4C740244204C4244418842A0122123014144781144341116414124E216014F058216015200552492884018084814446
+:80328000810448A0481482A04960881496A8241688F276D3A0235F52F22D295B221F3CF454566F677737F77F635F7FFBF3F11F3EF6899DED8CCFACFDA3B6BF6DFDEEF63F3BFBA7967F41B1A4FFC19D7FCEFEA1A62E6E7F71F1376DDFF2D3ECF7B7B72BC82F8CA95C9B144F55F4151517411B999FB8DC7BF57F28CF82E2145113DFA4D433CC
+:80330000FC438735F381232F2AF2C6D44D44CF62FA8A922BEECFC6F56C54AB44BF4B41F125277F72F62F295F23F657C76F65F573733733BF37F6F5FFFF7BFBE3633F9BFB8E8CDF1DFDB1B63FECFDF767FFFBFB93923F21F5A7E91F5CF9E5F63F28FEA7E75FF1F5366CCD72CFE2F7BBFFEFD9FDCC9CCED1DFFDF947545F71F413151F39F984
+:80338000C7C7BF75F57F3B6B274F44F53B311F77D73BFE4BA3F7F47D272F29F9C6C66F62F62E26BF2AFAFEBEEFC7F44C448F66F3FE6D246F53F22161BFF2323357741F35E527F72313BFB6F6E5E6BFDEFE796989FB1F1BAFECFDB2A3EF2DFDFBF3EFE8FB9A9B2B997F16EF48F9ACFD8F8AFA6DEFE7616FE6F72E2EDFD7F6A4A66FBFFF8225
+:803400008AEFE9DC83E131F417551D177F59F9898BBF51F15D55D5B773F36727BFF5F1A2A28F2CDE2AF882866F4AF8E4964F49E1EBFBA6B6AF8FF762544FC6B544F5A4CC343F337326F72B2F3F27725BF357777F76F626179FB6F6C5EFBFFEF25B6B2F81FB8F8BBF5DFDB8BBEFADF4FE369FBBFA9A996F4DFDF6E89FD9F9ACEFAFAEF66EBD
+:80348000EEFFF5F4677FEFE6F67D6D4F67FFE6EEEFE8F89FEE7FF9F983D27D173F71F11797FFFCF84B15DFF7F677677F57F77F77BFB7F38BA3BF3CFCCECE6F6AF8B6B44F6FFB86866FC8F8A4A44F4FFF7E7C4FC4F764262FCF0E2601250147127024022486488244012492E0894402818281828121812185141598848169084180011C48AF
+:80350000D8140140683286480264826412448228124C02DF530480222231488011A1121311889298431118044312228122212402411241282CA121A024184A8211010048A190181B214200001229A24320923248A042B733E022F5112485F21124A3F4112CA7141D2CAB161D2CAB961B21AF243915AF143934AF147934F8429147822D91D7
+:803580004F83E414F9244A1CFA244A87114FA2E419F2224A96C54ADE24ACF4D1242D421F49D22EF19124E3F49164AF24F18124EF24F18124AB941B68AB9453B14A39B4AB944B422B94478B2F44F9B448B84FAAF4D5D9D0A6B51114F4116827241E2C87141D6CE95181AF447991F44A3243F948315B432F147B35F84A9113FA42153F83F476
+:8036000042A51D1A4E955FA2FC58A15D48D6F1224AD6C54BDE2545F8512C2D899E64ED511B28E9B191F66A128E44CF34B181D648F981642F14FB9568AF1431B4A9B8A4B44A21DB4A39B6A9EA2AF5749F00820000000040040022480000100200880000400100000000000044000000000025015FCE04A0120080125281621830214218211C
+:80368000102222011820A9240020020084224818800392801788026084189A048150822A24042002F0C73914200812B01108801131888008860881202C2728022018244188C8128C081A18A882482C0821C286028C882182210218004216219124884214F0243D00CA0312A021218190114119A24A18A34812882228232882B15222388449
+:80370000128C82889188911A48B82889A4B4252228A48425B82888214228E24E0100211B14184188281427215F7C0E0000908110A1169088000000A0144818800800004002808204002081A82100004A2101128130482242228004F04CD780218181028C02280060890088008021A814208414088180024248422C04002C2131281AA41424
+:80378000000000844212209288800240F84E72000084838301815A6A828B18228678182284628183121448048B28282A2494141A42C8228C2242981822121C8182288198283AA4214B148B412A8488018B24188321A241828394C4A0D800129028899218302880A2182A482811028C8102881A0448428C824484618222250848180019415E
+:80380000826182181A8407C0180018423A048CA182422AC8484314F813C2200118808102A0698184898118A884281038148141E082882204892102A0422A44C8482982012A2128216C82A0124B41424A8248088112288112008250591008261408838382A181C02120811288323420E242410100418C3164CB6160814309B01882140822DB
+:803880001E48200140386800200228201401124210F8E6869028188112C4111244840040C43210012A01005820041888002022A4148081442A15041028C284A0282003802904282820AA124AF854EB2418221200608420A816A02460484112001800812E18800410226322009044A02100222842288901181048280C8180B1830184800871
+:803900006FE50B2923922883413C211E4810A81628006C5984132103184C428105008449F418642A712822026046482A052849031AC42828CC38281048880C20E424A12822122292884F180320911400162862411840818601204224832201848983644480120218968424C5181200294128026081A0412A081800B6088001818A84C24838
+:803980006F72030010281208808282021818000080011880C448003068186081812800100820240446080000408804002A04002FCC0D2830240000008200208801188308008400100800228022A4144848002842100800800100108882020081F02F620012000044280080020000842001426A01A082488C241108002E1842000080041216
+:803A00002082240210088064842A848102F0B1B100002890282021218101221A42048120010020E848A441184C128888218602128828008928024200812024240200000080F2F1F10080312828002002800100F0182400808105002001448B4220210438222002228180026800002002124280024822D7D7404828022022018082220200B8
+:803A800012002220048800890400802444080080244228220482182812818011288402180000EF8A034C0180318420021800880080081812828481848181C028838121C118813842005A62818100A618880484830228008C1288030080E1BF08828A0100002230141800A0210000844A024248806244000000812004288004000022004020
+:803B000008A0418035182214F0D38E4008480018380000448002120044100CA74182AA21B128C844419048881488C028A0C1842284C0188005C48003008460120021F07B34203188281AC2241A02A0219A032A83828122F12818208388C5484C491864841AF148682818703888C2685A0122898822F82868838862841A342822481028F2F9
+:803B80006848A0123A912840011F9509A018128482E0418223023A83282189812151884C61814A02424AF488C82AE9421484C1485A8133388B9628CA063A23B268028C2204288C841328C51884A043281C24048521F363D16042124332282287822A218261420000438118A4188051C88B158F83A4884AB218F6482816745CBCB8D288A449
+:803C0000C44E481248225A4258888C24A4448F81A1486A817218082012088F84E384A4243AA1224828CFC6094C02448B12442A41044488A082807814883824884382383488431318040020088218822A218821088220A81280012A011880026081148C048C04AFAF0E284D24C5782488D8C4F224344F42A2334F42AAA88AA8884D948F8824
+:803C8000F98C8CCFCAFB2CAC4B998FCBF888A44F42B28CF8E4C4CFC8BA6CF278744F46F4FCDC8F8EBAB8AB1F8BC48F86BFB8AB112A8AEA88F828288F88A8884E58FA2F21C1188F85A5458D18814AE4817128F818181E788F86B66816F8DAA5D044F24464CB31C9F6242CC5A4223AA3334F43F984843AE341D344F89C9C8F825288CFC3BB5E
+:803D0000B47B28EC64F666644BEA2BDA8F8CFEECF87E744F47F56C4C8F86A2BB1F1BF168C88F94FCB8F8DAEF84ADA28AE88C7E48A866DAAC764AF514341AF2687C5AD48853886AA2154A24E5A1F56A688B22AB544F970447423AF518348B3345C4382AA3134F43A32A4CAB111AA3194F410985F8BC383EB48D18CF83F5EEE82E3C8F8EFD8E
+:803D800088E8CF86FC787CCF87F37C6C46F8F8388F97FB58188F8FE686A6DD3AF698288F82F2E8E88F86F648488F85A4BE2A53C887818D381887818F82F248488F82A2571B558B152F864288F16937A0134F42E441E385E382FA2C244F42A2334F43A33B2EB4BABB14F194141AA9884FC2F29C181E948F89F93C58EF8CFC585E8F8EFCCC49
+:803E00006CCF87FE783CCFC7F36C6C8F8CF8B8288F93FB78389F8DE38AAE758B738F8BF388888F84F668288F8EFEE8F86AA2278FC1F22838CF84A65487838F82F268688F84F558585AB158F162284E4AF0E7378001182002002212200100000000120083044A02830442000022200222840000008004008022810228F055E6A0122002008F
+:803E8000412849818288822809439298B2308428800AA8221634249222821882488218822008822008200200810000844A430848BF1E0D2CF4112487221F4132681F41324A1D24AB141D24AB9619B24A3915AB9443F24A9143F2429147822D914F83C4914FA2C4814FA264114FA264192E4A96C54A9E24ACF491242CF5912485F2912483A0
+:803F0000F49124A3F48124AB141D2CAB9619B64A19B54A3924AB9443B242792498924F8284F9244A6FB4074D4A1B61CF225481C3D681324A1D24AB141F48F26A141748AB341B282F4471A4F84A11A2AF5431B4A71423F24A952E125CF824DA8F11F8244216E1A27C18E532DC58C2DA17C5ACD841C6D21FC192881F41B642F8914C2B141F25
+:803F8000C1F442941FC1B4427B15B84A1B94924F8394824F8294926F82949A4F22D5210884824800000000440000000000210080080000140000000000004004000000005012F07C9E001008801208000000840044184D288004004200C068001E22810022004200002024020040081A84022A042AF43F95009200002002281800002001A4
+:804000000018848004002008184200282001000022830418100848202102400114F019FB00CA410800842800412002001844182816022001C20082841219C4128189025200480030481084220242C0182081428246A1212FD60600008002002818001008005084C048800400002A048002002800008002A014100800202204110048EF9FE3
+:804080000620012800000081004800890900180000000022001200000020010000841800004782420000F02E75802102008001008220088228422021220810080028120020020012828880083242800400008100202884082F590A121A0228001800C088800888288B9480218209400800808102A02100208128089280038044880100815A
+:804100002624048200F0F3710000000000000048000000000000800200000000000000480000000084008024089FA1070021204128040000400412200200002004002110080000002002000098002004212008B0180282EF8C0900004420121402001200A0142008E04401280022818118000080081240288884012A0100004008008C0403
+:8041800080F2EBB4200244004118001100001240484228012800004004000000000000282028040000180018422220021E2500240018411A12041400108481C148708208E044030000448400000000008C8288862128860100000088A042838282BA2D012210044184421002001800802102120020220428A48011080080081800000012FA
+:8042000088002024110A1848811200DD2B000000144008000000000000000000000000802802000000842002000000000018F069C8000000000000000000000000000000000000000000000000000000000000FFE40F000040028001000000000000000000000000000000000000000000000000F05A240000000000000000000000000054
+:804280000000000000000000000000000000000000FFE40F000000218001000000000000000000000000000000000000000000000000F0C2850040010000000000004400000000000012004002000000000000000000180000F047A10000810000100400800400400200410010020088000012000000000000000000000037B800000000F3
+:804300000000000000000000000000000000000000000000000000000000FFE40F0000008100000000000000000000000000000000000000000000000000003F5A07000000000000000000000000000000000000000081000000000000220000F04FCD000000000000000000000000000000000000000000000000000000000000FFE40F89
+:804380000000000000000000000000000000000000000000000000000000000000F04FFE0040010000400400800444000000004002200188400220010084000000000000380000F0148100008400840000000000001002400400000000000000000000000000000000003DB200000000000000000000000000000000000000000000000057
+:80440000000000000000FFE40F0014000048400500800444001002400400218001882810021880088400008042080000280000F0291D004001008004548588022148400428100240042810828401882810828441848842188204441828842148E041012810A21140C435000000000000400100000000000000000000800200008800000054
+:80448000804208000000B021070014000048400500800444001002400400218001882810021880088400008042080000280000F0291D000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00100200000000002810020080B0
+:8045000002000080028004000080044480022148400400214840040021EFA20A0000000000000000000000000000000000000000000000000000000000F04FFE000000000000400100000000000000000028000000008800000080420800000070820E0000000000000000000000000000000000000000000000000000000000F04FFE009E
+:734580000000000000000000000000000000008002000000000000000000000000F07F4D00000000000040010000000000000000000000000080080000002884000000002FDBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FFFFFFFFFF4C
+:00000001FF
diff --git a/xpp/firmwares/FPGA_1151.hex b/xpp/firmwares/FPGA_1151.hex
index 6e733bc..2f7e7c9 100644
--- a/xpp/firmwares/FPGA_1151.hex
+++ b/xpp/firmwares/FPGA_1151.hex
@@ -1,589 +1,655 @@
#
-# $Id: FPGA_1151.hex 2876 2006-12-06 15:51:49Z dima $
+# $Id: FPGA_1151.hex 3297 2007-02-05 16:03:36Z dima $
#
:020000040000FA
-:80000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6AD6FF4000581B09006AD6FF4000581B09006AD6FF4000581B090000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4455544455557475577775577675577775577765566665563625523235D2E37C2B51111551111551111551115A
-:800080001551111551111551111551111551111551111551111551111551111551111551111551111551111551111551111551110000000000000000000000000000000000000025522225522225522200255222255222000000000000000025522200001AA1111AA111001AA1110000000000000000000000002552222552222F21F11211
-:80010000122F21F112122552222552222552222552221AA1111AA111001AA1112552222552222F21F112122F21F112122F21F112122552222F21F112122F21F112122F21F11212255222000000002F21F112122F21F1121200002552222552221AA1111AA1112552222F21F1121200001AA1112F21F112121AA111002F21F112122F21F149
-:8001800012121AA11100255222255222000000000025522200001AA1111AA111255222002552220000255222000000005F59F9959500000000000000000000000000001AA1111AA1110000000000000000000000000000255222000000002552222552220000255222255222255222255222255222255222255222255222255222002552CB
-:800200002200000000004AA4444AA444000000004F44F444444F45F554541AA1114F44F4444400004AA4444AA4440000004AA4442F24F442422F24F44242000000004554446F61F116162F21F11212000000CAACCC2F2DFDD2D22F21F112124F48F884846F61F116164554444AA4446F65F556566F61F116164F41F114144554446F65F59A
-:8002800056566F65F556566F65F5565600000000002F21F112122F21F112120000004F4CFCC4C46F6DFDD6D62F21F112128AA8882F21F11212004F44F444446F65F556562F21F112122F21F11212006F65F55656FFFAFAAFAF2F28F88282006F65F556566F65F55656000000008F8CFCC8C8AFACFCCACA255222000000CFCCFCCCCCCFCC30
-:80030000FCCCCC008F8CFCC8C825522200CFCCFCCCCCCFCCFCCCCC000000CFCCFCCCCCCFCCFCCCCCCFCCFCCCCC00000000CFCCFCCCCCCFCCFCCCCC000000008F8CFCC8C8AFACFCCACA255222CFCCFCCCCCC55CCCC55CCCCAACCCEFECFCCECEE55EEEC55CCCC55CCCEFECFCCECEEFECFCCECEEFECFCCECE00000000CFC8F88C8CCFC8F88C51
-:800380008C000000008F8CFCC8C8AFACFCCACA255222CFC8F88C8CC55CCCC55CCCCAACCCEFECFCCECEE55EEEC55CCCC55CCCEFECFCCECEEFECFCCECEEFECFCCECE00000000C55CCCC55CCC000000008F8CFCC8C8AFACFCCACA255222CFC8F88C8CC55CCCC55CCC4AA444EFE4F44E4EE55EEEC55CCCC55CCCEFE4F44E4EEFE4F44E4EEFE4ED
-:80040000F44E4E00000000CFC8F88C8CCFCBFBBCBC3AA3330000008F8CFCC8C8AFAFFFFAFA2F23F33232CFC8F88C8CCFC3F33C3CC55CCCCAACCCEFEFFFFEFEEFE3F33E3ECFC3F33C3CC55CCCCFCCFCCCCCCFCDFDDCDC00EFEFFFFEFEEFEFFFFEFEEFEFFFFEFE000000008AA888BAABBB3AA333000000CFCCFCCCCCEFEEFEEEEE2F22F22270
-:80048000228AA8883AA33300CFCCFCCCCCEFEEFEEEEE2F22F222220000EFEEFEEEEEEFEEFEEEEEEFEEFEEEEE000000004AA4441F14F44141155111000000CFCCFCCCCCFFFFFFFFFF3F33F333334AA44415511100CFCCFCCCCCFFFFFFFFFF3F33F3333315511100FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000008F84F448489F95F55959BF
-:800500001F11F11111000000CFCCFCCCCCFFFEFEEFEF3F32F223238F84F448489F91F119198558884F4CFCC4C4FFFEFEEFEFBFB2F22B2B955999855888FFFEFEEFEFFFFEFEEFEFFFFEFEEFEF00000000CFC4F44C4CFFF4F44F4F3553330000008F8CFCC8C8BFBFFFFBFB3F33F33333CFC4F44C4CF55FFFC55CCCCAACCCFFFFFFFFFFFFF33E
-:80058000F33F3FD55DDDC55CCCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000004554444F42F224242AA2220000008F8CFCC8C8BFBFFFFBFB3F33F333334554444F42F224244554448F8CFCC8C8FFFFFFFFFF7F73F337374F42F224248F85F558588F87F7787800455444FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000004AA4446AA6662A87
-:80060000A222000000CFCCFCCCCCFFFFFFFFFF3F33F333334AA4442AA22200CFCCFCCCCCFFFFFFFFFF3F33F333332AA22200FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000CFC4F44C4CCFC6F66C6C2AA2220000008F8CFCC8C8BFBFFFFBFB3F33F33333CFC4F44C4CCFC2F22C2CC55CCCCAACCCFFFFFFFFFFFFF3F33F3FCFC2F22C2CC551
-:800680005CCCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000004554446556662552220000008F8CFCC8C8BFBFFFFBFB3F33F333334F48F88484255222008F84F44848BFB7F77B7B3F33F333330000BFB7F77B7BBFB7F77B7BBFB7F77B7B0000000000255222255222000000CFCCFCCCCCFFFFFFFFFF3F33F333334F48F88484255222008F61
-:8007000084F44848BFB7F77B7B3F33F3333325522200BFB7F77B7BBFB7F77B7BBFB7F77B7B00000000455444655666255222000000CFCCFCCCCCFFFFFFFFFF3F33F333334F48F884846556664554448F84F44848FFF7F77F7F7F73F337372F2EFEE2E2DFD6F66D6D00655666455444FFF7F77F7FFFF7F77F7FFFF7F77F7F000000004F4495
-:80078000F444447F74F44747355333000000CFCCFCCCCCDFDFFFFDFD1F13F331314F44F444443F35F553534AA444CFC8F88C8CDFDEFEEDED1F16F661614AA4444AA444DFDEFEEDEDDFDEFEEDEDDFDEFEEDED000000004F44F444445F55F555551F11F111110000008F8CFCC8C88F8FFFF8F83AA3334AA4441F11F11111008F8CFCC8C88F30
-:800800008FFFF8F83AA33300008F8FFFF8F88F8FFFF8F88F8FFFF8F8000000004F44F444444F47F774743AA333000000CFCCFCCCCCDFDEFEEDED1F12F221214F44F444441F17F771714AA444CFC8F88C8CCFCEFEECEC6AA6664AA4444AA444CFCEFEECECCFCEFEECECCFCEFEECEC000000004AA4441F15F551511F11F11111000000CFCC8E
-:80088000FCCCCCDFDFFFFDFD1F13F331314F44F444441F17F771714AA4448F88F888889F9DFDD9D91F15F551514AA4444AA4449F9DFDD9D99F9DFDD9D99F9DFDD9D9000000000000000000000000000000000000DFDAFAADAD7F71F11717000000000000000000000000000000000000000000000000000000000000FFE40F48180000006E
-:8009000000000000000000000000001400000000000000000000000000005F22020000000000000000000000000000000000000000000000000000000000F04FFE80840100000000000000000000000000400100000000000000000000000000F02522000000000000000000000000000000000000000000000000000000000000FFE40F34
-:8009800028000014000048400128004840012800000028004800001082041400004800001082040000216FEA0C0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F4818002800000000210000002100140014210014000085
-:800A0000000028000014882814000088280000F072F300004818000000120000000000000020010000140000001400000000000000000047FD8084410128004840818102214860118002211A01148002211A041400B01281041480028004148828108204808802214800CF550648180028000000002100000021001400100240010000006E
-:800A800080020040818802000088280000F08EFF000000000000000000000000000000000000000000000000000000000000FFE40F000028000000000000000000000021000000000000000000000000000000F0524900000000000040020000002100000018001800000000220000808802000082220000F09777000000000000000000D5
-:800B0000000000000000000000000000000000000020080000F0CEBE000000000000000000000000000000200100000000000000000000000000F07CBE00002002000000000000000000008001000000000022000000000000000000F0C94600000000000000210000400200000021000000000000000000000000000000F0AE7D00000023
-:800B8000000000000000000000000000000000000000000088000000000000F0B381000000000000000000000000000000000000000000000000000000000000FFE40F000000000000000000000000000000000000000000000028000000220000F0652B00000000000000000000000000000000002400200200000000000000000000DF68
-:800C0000DC050000180000800400000000000000002002201242020000000000000000000000D0E20C000000000000000000000000000000001002218002000000000000000000003FFD0A0000120000800400000000000000002002800221000000000000000000000000FF4D0400000000200100008A410100000000800100000000008D
-:800C800000000000000000008008F0DE8D000000000000000000000000000000000000000000000000000000000000FFE40F0000180000000000000000000000000000000000000000000000000000001DF50000008004000012000000A0410000200442200400000000000000000000000000F0F5540000008004000012000000A0410044
-:800D0000000000000000000000000000000000000000910000800100000000000000000000422004420000000000000000000000000000DF1F0A0000000000000000000000000000000000000000000000480000000000009FB102000080010000000000000000000000000012000000000000000000000000F085FD0000001800000000FA
-:800D80000000000000000000000000000000000042000000000000DD9B000000000000000000000000000000000012000000000000000000000000F092A600000000000000000000000000800100000000002004000000800400000000D02E0D80040000000000000000000048A012000000000000000000000000000000880047930000EB
-:800E000000000000000000000000000000800100000000000000000020040000001FD8070000000000000000000000002082010000000000200400000000004800008200DF1908000000000000000000000080040000200100000000000000004800000000006FB204000000000000000000000000000042002004000000000000000000C6
-:800E8000004200005F310C0000000000000000000000000000000000000000000000000000000000F04FFE0000000000000000000000000000001200004200001200200400480000420000008E1C000000000000000000121200008004420000128004480012000020240420840442004200002FD70E0000000000000000000000000000B7
-:800F0000000000200400000042800448000000000014BF9702000000000000000000000042000000002004000000000000000000000000F07C43000000001200001800000000000000000000001800188004420000004842000000001F940F0000000000200100000000000000000048800100000000000020048004420000F0FF8400808B
-:800F8000040000120000280020210142100218A0810000402104004820010000200428800400001042F1BDBA000000001818008001000000000048000000482004480000004200004248A0442004480014F0947B000000000000120000A011004200008004000080852405200100A044424A0448424A044A04424200002F6C02000000001D
-:8010000000000000001A010048002001421220A144000080A11142000080040000000000F0B6620000008004120020010000001A044880044812481248122001000020040000000000000000F06E82000000A0444AA41100120000A0111AA1115A81044AA444A0114AA4151AA5114AA4544A055A05A0115A04A044004242484AA4444AA4E9
-:801080004420240400F0F1C5004A0448004AA4440020A1228002A011121AE12591424AB45205CAAD554A2C84A4111F15A5544E511AA1444A041AA5554AA444A0442024A4664AA4644AA444A04440120221AFBD0E800400001A0100181A0300A0111A0148214AA45480A8445A85044AE411A1445A041A81041AA1554A044AA4444AA4448026
-:80110000A6444AA4440042421002F0CACC00482004001AA11100181A0322001AA11180144282A1441A089A81A4115A45A14413A5554A84045AA111A044A044A0448086A446424AA4444A041042024F870B000000000000000020010000000018800118421842180080010080044880040048800400F0632B200800000000000000000042A0
-:801180002004420048800448000000004880040000004800000040E1980F481B21B01122B411324219B24291212B9419B24219B14229F24291222F1429D212A9421CE922C4812E4216E12264192E4296C1429AC2421B292CB49142B29122B49132421B282394212B8419B24218B14228B24228B2422892822A84E822B42C01481B61481BD3
-:8012000021421B21211B612394212B941B212BA419B24229F24291222F1429D312B822D412E922C5912EC21CE82265182E5286C1538E212CB591C2421B692CB49122B49132421B282394212B8419B2429A212B84222B84222B842229B82294822E42F60F0048000000001280020000001003188008000014000048000000000028000000B9
-:801280000021E06D038200000000000000000012000000000018004800000000000000004842000000144F9E012008221A020020040000000020240400420080010000420080040000420080040048800214D042062004A02100004200220000001824482001C2000010010042420048000000200248424880042C02008FAA0700800200F1
-:8013000000000000000020040000008021018004000000000042000000000000D0210F000000000080041A0400000020040000004200000000800448000000002088020000EECC00000000000000004800002004800400480000184822000000004820088242420080280220F872BC00000000000000004200000048800400000000200259
-:801380000080044200800888424220088002008F8B0B0000000000800452000000200400008004420012420000000080040000002022080082FFFC0942200400482004000048000020024200004848202404004848200200008004288800422088220800CFCE0322202403280000002800208401802408180000000000004800200428486E
-:8014000000A0244800000000002FA60B00000000000000800120080020040022000000000000004200008200828820028008F0FF5C8002A0122082044200008084810488808408420080820400008004800242004880044200A048200A00004F930548000000000000000012002820040080042084040000000080060080A84820080022EC
-:801480008882007FB8080000000000000048420000200400120042420000000000008004420048E20020088002F0A4760012004220240400208402000062200222004800000000482820040000000088200822800400F09BA1808424010000000000004800000048800400006822284A8202004A820422208222820C00A20022828822F094
-:80150000243C00802401000000002002800248002800004800000000424800280000008002220042008088F8ED98000082485200001800800400000000000000008004008002000042884800202C28088A042008BFE30A48180000000000000000420000800148800100000000002004008088A82400000000007F2A0D000000480000005D
-:8015800000420000000048000000200200008084028004422200880020088822006F4605200842820020040000000000420018800400420000000000000000A042002024088800141CF229FE00A041004800000080020028282880140278808804002814282AA4242248802204004228428082A424222004203822F0C4E820A4181848C29B
-:801600004A0448000000620080820668A024284A210420042228222A24820420860200226A24A28AC2C2EAAA2888A0E488281C8AE85B0B48821280044200800148004A84A42220024222124A04484852002822284AA224228082A2442022A444284A0E4868486AA828CA2428A88826011F410CA04180011248200400004800202424040033
-:801680008004428004428004482880842422044880084A0488008008202228F217D8001800480000000080040000222002200442000022202224028024028004482200482882A04820882208DFBF05CA242101A01148A044A01100200480A2262A82A4662A22828204481AA5448082A264284A82022A8286A24480048A8EA2CC428AA48237
-:801700006A048842882A28A2228FA90C4A8405A0445A81044A041A012A024A2204286AA6622CB442042B1328CA8C84AC514A041521E214A442482A042A2224A6442024A48CEAA8EC4A24AC24CA8CA8C4882C98228AB8A2FA59BAA0441A2401A0554A24A444A01180024248A0226A026AB642042AA124C842485AA544C021284A86A22468EC
-:80178000A02268284A0448A0E88AAAAC4AA8C82AA8CE828A28AC882B8222AAFAF9C5A04C1A21014AA4154A24A444A0118002624A042AA266486AB642E422A2124AA2C44AA4485AA544C0212AB241A6664AA622A0224AA6664A044AA444CAAEEECAA8C4CAAC66EA8CA8C44A8CB8A2EA2AA8AA6FAA060000800400000000000000000000003C
-:80180000000000000000000000002008000082006FA20F0018002004000000420022422084040048802404200222A042002006004220268888A48480024A0888802278760E481B21181B214AB111364219B24291212B9419B24299412B942AF442912AF44291222DB12AE414EB22E414EA2264152E4296E122641D2E429AE222B4D1E222EF
-:80188000B49142B29122B69136621B282396612B8619B64218B142A84A2BA4A22BA4AA94A2AA84EA22F4B9C280B1118695214A91612B1419B24291612B841992B219B642A9422D912AF44291F042B129F442B12CE114EA22ED15E822641C26621D2E43DE212E421B2D26B291E6223491221B6923B68134221B482B821B682B24199682AAC7
-:80190000B442A24829AA4829BAA294228E42B74F00820000000000800200000010021880080000140000000000000000000000002541F1AAFB2008111242182001001858420048004828420028004820812402002200208802224200820042228A8282040082F03FFF2026080020041A084800800488A024800428422004004220044A0125
-:801980004228288004484001008A04000088202842014D6920240C8004420080043A0468200C20E422840452200842A01442190652A0246228A048224828130480A84A2024220A8260286018B02404224021011220A1180012800400A02400800228480000000000000000000000000022420022006FE20100002A010000240000000000B7
-:801A00002200422084240420022602002B120000006012822482208822082004884887CF2002120028800400002088044282484A020020020020460200484041828206422A2402420000002248228222708D0E2220012222000010022028044280842602002800004800282148903190222220A4422219820800882888222024A882F03904
-:801A800041000020012004000000002008000048808424042222210040020048000020042908000048220048DF2506004228183820021819822221021800282012C21182001902228064141880228105000028000028210000003042C0428FD1062A0442000080085021200224800400212A0480022248001400808404280000230450211F
-:801B0000E84200002820988280F812D28001002220021308000000800128000028004218000000008001001411200800808202002002B0240B78002021818212012824000021422222228005001C228201484818004A81013200C02133048224C8218002800220044E821F3B0E008022820200121419820120011200001C22882202484A31
-:801B800002000028000000000010014800280080280AE0B107421820240421182082812182011C011C61168041816132C02312E02104122432481211123011602111001001C83042242082028242009F830B280000002800424842A012482002002004244860251448468104902180022012210400420000800842A2420024CF7F09100199
-:801C000012100214481120220142111111121230211411241114C04280C21100401101488042014042612410010024002C260222FF41050048001902808121028002221800228014824401208222022246012004122842001912120111000000000080F4B455802202112842800142124A21C411A014800120A1126820023848181258006C
-:801C80001A8405582418184A01420022A0824200480088008829F8A7151411808422512142001001000000000021003041108204000000480021482302214A388290228A02008A020022B0A50E0000482814200400200400800200200228000000001400004083022912012442008002200200F0238B0042002A01000022190200808402C6
-:801D000040021821288022820228223211A025000028322082820200200228002922C421142F6C0A1904481824521100463141004A22041410010031483901C8002880C4418004224880344230424225022B82F0422200220080281222F8751A142A26041AA1413C041621A5525232A041421F11621417113A02167221215533141F149229
-:801D800012283B1180A1251A25E412D11181011832183581B26252313D8186A144800C2A82028AB28218C28328DE6810018022942123240290714810013011281D4128184A024A362323B27124022A3271482B241413A54672127621F43261482F32042922D62232822D4323220224E82242222601BBB160141C0319E422337215818174FC
-:801E00004161121B345AA6141AA654A0128001181F1225C222C0214E526E622B45682621A24148C02124C04217246E324224C0624AE822280424C22222882AA66428CE824E1C144200188A643200481448224880041128110010A1243128114A12820242224214420080448364224003248A440200288022A824001FE102682A021F12225D
-:801E8000F432114A0442115AD11182541142A0443216011AA1221E116825011E1176A2114AA6111AA531421B111AA431242B11421B312385B24216B1C28C32C2B082086A24A2882C9282288A48F2CD2F142E212A061F13A3611E733B44121AE411E511F171611A765121B151F4514113B311A2111AB133B371F7311217221BBA1B137EE2CC
-:801F00001E523AA557143AA7155E1156A1711E122B111E521E731E432E624E622E23EEC36EE28E622CA4882AA246228AEA2AB822B462A48A8AF8318480A662F021314AF133132B44125211621F11A26517115216E115246212002B222E212C5732A81C66262B642B64E01284A244112AA46224216A92212386B24216B1C2AC642BACB08228
-:801F8000086A24A28A2CB2429C228A4872F548F161612A021F13A36F1F37B74324A1451F14F461411F17A64517155AB451F4514117131F1302F021211F16F661731F32F231A11F12E42EE624A6666AA6462AA6441F14F461412A4212E226F643633F36F462622F24F623233F3EFC62E22F2CFC42422B882AA24622AAEA2ABAA2AE66AAEAF9
-:8020000028F85F8C000080010000000000000000000000420022000000002002008004000080022800F09265E01284026022481412B01124A42118484A118131211812303128198432238085B22225051248E0122501A016F0421360226012482F240800280080888442F11CD2C0511B211CB111E226B111766291212F1691612F16996123
-:802080002B9419B442B921F442B113F242B12AF442B11B424E911F22E414FA23425E213F22E419F22342DE212E42DAF222421B2D3CB49162321B2946B3917662B381764293212F34B881F2428319F44283AAF44282222BA4AAB442AA424AEA2AB46B052E51482E511AE236B111E41281F6621119F46291682F148BF642911994B219D41201
-:80210000AB422F141BF342B119E514FB23825EA13722DAD223A42D2E43DE212F22B4D1C2439AE612247942B3917662A36825B38156328AF642A38A5632AA44A2482CA2484ABA82B442E228F44F2200820000000000000000000000188008000000000000000000000000000000F0A18B20020040022212000014001308008006220014802F
-:80218000010028400134400119120100820000002129082022C443FF790311B60111208342210460126028C0225222802261181200282014A2840000181724001219040042130880C8825022200826222844013FE14781621F0060222826210560122224C02213890228242E41121A028A4241220110016011462314C211480080142108DB
-:80220000222C08400223C8222442005F660814001120010000001308200400188200008004C8002800100140912114008200884002218200882242485F2B060014603211A021200800000011208802200211000028180080080024C0122002001400001022228404222FF30419220200281B21258142424141612513E1184482081C641145
-:802280009E212E4114006846812284240C00281A2242A2784611014E8129D421840825C242284AA8C2882D42288220B44708222814C022221F220128881100481C61184001C212263121144021048004480080AA122290221411211B28211334821421008228828004004F8F0814004041011B210021111418214224881091211A28240272
-:8023000080C241222086090000008E5248182084040070422282A448212B4229820C2AF4A44C0014421C0220021121002126028048013082211C04C09122624800144821281148888086884201240028240022002D42902200DF4B0512200448268284011880022A2404206212181A1222613482B800181240A11824118005140012008086
-:80238000C421A84820220800102242B27309281021410180A241460100808101214222000028421450227021022008122081220100210088008242212180220882421D1480410138482682A6121A641420022CA4411280A2242AA121C0111724A246611242292541018682183111A0181C22812801004828C0428222272200290228822443
-:802400003FFA0A2240114101003412002100C0821114908220042002221082122245820212006220121102211388088084088094828082F4B8AD802404809122290123820222402124220180810448800C807621A2418248A0218E43220046220425220814428004420046220800C862E7390028200142100288824225820146E31428863F
-:802480006112A084881E8160152420286811829200138C0419A8284882111384180121881148258208208204887F580D200190411413014230410082181220184182A4211C01112114000000001400002901101212024082180200200A004F4F0511A041808101003C082042B2210800291842830888200280240A000082122A04828282FA
-:802500002100882188112222302280022221249D1200402102182C444151234041512218250212421C01802114012008484229818401601880080020044828602400884824420080F476E38003208192412001808A2428011C2482B412082712A0422302E81B824A0200221C4181088001C04242800282C8A88A120120388288C8212186F4
-:80258000F28379200440412212022100284021248204200228400114008218A08424000021008200144A5812100248802202002022E28506221348213421002A611122222114202881331210828A8102004A024200168104114818120012400148244002C02242C0226242281414DFB30F16A1124880040000483042281502110020012345
-:80260000088A01880020081448008004002824100120C461828002421022D42202CFAE0E16318180A4154A642416A2522E22241B4424129E526E5346A244372D2839A4129E121819A838B022828236811B384A39111D8123B2918483041846C281488E428890828E82822829A2288848A8684E212F2EBE3144A164B21113D121A6233391DF
-:8026800032111398A12819082A081F13C432F012126E81821B868E41460217124A84A4912CACC40042882C21C18129BC8288188192823F24C482E2B0621C026E422129FA22426018A0E5B0218167113826D133811151122D812B4E26F242213D9337143B212B381A88792181B3528AB62168181F16A424821B8C238C21E121A452821F1CB3
-:80270000042028EA2534A2257243714161182B242CF4414115E122E4269882CE2262C26222F0647714422200482A0100A04822408184924100281381220817282815022C092C0824283C88428282888288428346A12824481482002482282004F0EA8DA0511D21111F13E3257153F342423F3292332E22237441B3C1CC132B9D27272B15E6
-:802780004AF1D2D22F23F192913A81A9261C68261CF46262272E4AC4822F26B652E525A62A27263F19EB21A12223E62DB342F621226AD221B842E422A2882F34B8426C262BC82ABA62F442622B8868486EE2AF254CA1161F13F511111B331F23F532222F25F433233F31F3A3232BCA1F32F2C1E13F29F993D22F31F313719AF8D2D22F21E1
-:80280000F3D3B12B3DDAE32F7383F342A21D612F26F672C25EC22BC5DE432F27F342721F12FA63823F39FF3232AABA62ACF54AFE232123F461A14ABCE2BEC25E233B4C62AAEE22FEA2422F2EBCE2B842A2626E622F46081F11F51171111F13E325F351332F24F523233F22F323A33F14FA43233F2CFE93933B9C37263F25E12DF9D2D23F15
-:8028800023E11DB96281F961322F34B863E834A4662B2A2B448AE932F352522B57E6E334F283D32F23A32A2B289E122B57372227141DC22F1AF282822F2CFE428329E822F2A2E22BA22BE62F2EBEA2B822A6666EE21FF24BA1771F1353111B321F27F573233F35F433231F33F3A3232BCE3F36F2C3C13F29B9D3ED37F37373DE922BDD3BBD
-:80290000331F1EABBFFABBE1FBC1811B261F36A6662BFF2BDD9E922B197AA3571F3EB8C1FA818116A2882DA22F29B9F27D23F162233F34FCA2A12B882F2CDC33F883832F22B2A2EE22FEA2E22F2EBCE2AC666AE626FED627C01180012C01240040022048012482242004001002200400422302212002002C0100220000C022004828800233
-:802980003F8A0D8A91211411241A4611E112A1282591612019A2422D119A0422462182A948141B42F02242CA02422B924258112A0C2D12A084282B921124681C8894828A744223222482A84829A842A048BBCFE012B411021B21621B612B1419B242B181B66299612B94112F14B9A1F442B11B422F143B212DB11B4A1CFBA1421CF821422C
-:802A00001E211F2264191F22EC19C2C29AC2C21B293CBC9142B291E214B891F242821B282F14B881F6428319B242B881F44281222F2428BA4228B242AA4A88AE42EF4C082E411B612E41132196412B12482F32B181A6161B482D338AE634B9A1F442311B4829BBB1D412B2A394B21F28C5A11F22ED155A219AD221AC293CEC11C2C21B29A7
-:802A80003CBC11C6C31AE214B891F2428219E614B8817642B381C2A28AE61428FA4222822F242ABA42B282B442E22AB4460700000000000000000000002180010000000000000000000000000000004041F18ED42018011400A012003011122C042028A1411622080000001152004218121003829021880000110000202888024A2288F295
-:802B00006D210082004214211148521A0888190124428088A8124681811403802401208502304200182001009082288A0400424229C44282821C82F484ED001304000014208448A11218213082181A84F1128246011E4214828034114890414812202404124001000011E20080044AA8242CA884A68174AD0D0010211411A221421218128E
-:802B8000881904200488822880010000800118282051221120081A82080029880200008A1402212220F2FD6B000020021828000000420048001C0142000000002928012800000088008AA28482000020080000F0ACBC00000000128008221288200C881B48C84242800800281A044200C2488200804801422004004A88840268A0480028C5
-:802C0000887FFE0C00002880810288008028240C4A9841C219840400002248202428014882002048212804200480042220024A0800889B16000000001200208201000082200142820000184002802C0200000000AA8428088242004A08008002CFA20700420020010022000020820280084818A08420840400824220840488A048004200D8
-:802C80002002008200200800C7F880842104422D3240816612131882A88248884820082400488898386028408202A81880A48100181002B081242442010048002400F027E8001001004002800440220100220000001400002A04180000212428800420048882201882842894822288005F2907481001422303244A82326180C882588022D7
-:802D0000220A82004888141A0288808482292C21049288A01848800419240414822148484682282808D0340F20010090121110C18200008242000020048004484221282120020021302248240048888288008028088002003B26004200000000002A040000002004218200C800008220088880080082488004C820024888008200827F8A01
-:802D8000092002000000001214460100802808008024810428C880040000004602824002002480080000428800DFBF0A00000000422084210800420000000000000000004800008842000088004A02004282108208AB5DC0410020041422001C681212A08400200488802804428820084800484821004800200442884200200442884220F5
-:802E000008F0E3F900222248224820023220220114202888880C20020000208802A01420088220088A04C2A084800A004200000046F1EE3B000000200420042004000000884829848486880C2248828004800448004200800820842A04882004889082F037AB000000280042001114420028A04280020000288004200400A0842008829085
-:802E800082001002422C082420480200F077E500180020018001180000000000298808000088002001C8008800004880088820084A02002A4402002D6520041C24C2410060124A01001C42012008200421800188002848501212800848A0480020080080020000820021F0E1FBA044220048284222460119A111190200004A240C82A22029
-:802F00008821028A242264241AA8442C8C8408C082800420088882C2822B4400824A240814F0E58E001A8222E414221181A212288A94211E111B4411800882602E48A044200C2082288A0420A88400884282B082E824044A0C62A042224A3C82C822469282828AF4A91A10814481024200485A0526A14C148E41A0428AA882888842C821D1
-:802F80006A044AA484A8CA8404481A212428AC88C28AA484CAA8448AA8848223CCC2884A0A2024A48829288808EFB90E111001111001190412A041002002A2200A22200222800820C412800888800829889482102218022182211002218A048A042F3E42F1616115B131E312E216F631316AE611E11286F221211D111F155111142AA28842
-:803000002AAA662AA2846AAEAA2B66482AA6622AA4282AA2AA48242B54CE422B448880082F2C54222F2418F242422F24FC42C22BC425F242C22F26B2C2EC24F4C2C22BA64242884E42AFAC046AD611B411E112E214F431311F16E611E116F251212A7211F171311D4115A122AA0ACAAC22EEA22BC48AA8332A82092AA2CE2AA2C81D414ED6
-:80308000422F34B482AC448A2428287882B2C2242858222B88CAACEC2F24BC42AC22CEC22F24F4C2C22B66CE824AC8824AF41F1EA0621B623E312AB221A2331F16A6331B665AF331311F13F3413117141501AA8A088AA8A22B88CAAC546AA6C44AA446CAA6AAEAEA34B452A5548E422BCC8A2CA888CE42CABC42AC8C86A2882BC4CACC22B4
-:80310000822BCC6AE22C9C824AEC269E4223A8C488BF660F1F12B621E211A1221B441F17A7663AB361F251213AE313F351214E4115A1228AA888EAAE668AB882A8AA2A03122AA222EAAC228ACC432B551F25B582AC448282828622F8C242236828F0C2C22BCC8E82882F24BC62A6CC4EC22BC4EEA22BC82B884A8C9848000000000048007E
-:80318000800480022880020028A0248002000000000048008004480000800482428200A777000000480000204101140082A048A0484A02800448802C048004C880280848888A24240848888A0448A04880042064186771C0411B21141B2146B111724291212F14B181F642911B692B941B482B942AF44291AAF44291A22D912AC491AE42E2
-:803200001CE82264112E4296E1226C1D2CA4292CBC91C2C21B292CB891E224B891F242821B682F24B881F2428219F2428213F84282222F2428F24282A229A84A882E427B2EE012A4412E4112660127164827128AF422111B4829B2819612AAF44291AAF44211A22D912B4A1CF9A2521CE822ED11E82264192CEC1DC2C15E21881B292CBCEE
-:8032800011C6C21B214E821B292C98614E821B284E821B284EA213E824AA484622E224280A2B4A29A8427F9E0A0000000000008002002001002100000000400100000000000000280000002018028FE60148180000180012820018004800200800824800200188904200122021210800A04820040042A0420080082F354A2101000030124E
-:80330000461281342248420000C2001212000021100200002182008001000022008228008224C2421448FF154321250400201102162134222AA41400482004242021212808001810418204A08480018A0100002262808882048A44C2C2428842DF31052001000012460288000000800888120080042110028800102201800100004A080012
-:803380000000280000F0A3BE00800100221200184021010048428002000000800100000020010000000000400200882004BF1A0F008002421305A014111800110000420082200400004200281228000021008008214888C80088A0482084025F8804001800421B14004811181110010042420088800400800100000080012100800821422E
-:80340000884A08908220840848F0C28F00002200221220810180010042002200000000800480822102000000000000000080084222F08FF300000080042822202221820400000080010020040080040000001280020022000020082C0422F0555D800400520010034001422888000024A8280018220000000082488008004200484220020B
-:80348000220048502200D0EC01008021220146010000000020084800000000A041000000000082000000000042220000F0B5EC80048021260114280022124848002008800A008002001A04800400000082000000002220240A2100F0B45A2008001820845412281001008200004280020000420000008800820018482220840400002004CA
-:803500004280022F98090000002004181200000000002100000000000000480000002800222120880A2842288002288F2506000000000000144200008004228001000000000000000000201202000088200800005FF5048200000090120014000000000000002124800200000000A012000000880000000080083F9B060000000080010012
-:803580002812000020010018001800008001001828000021210080220200008800F0B36D00000020180221120000800112000040022440C22226020025020000008042028200000000008214DFB60316012002000020A224260100000080820118180000000000000040022082020080280262200621885F77010014800410410140010078
-:80360000588004180022181800000000000020220100210025228802218682C88240220424A7F5601482000000212121002082010000002424160224002C020024000000242800242A088880022880AA48A880FA5EF42048C14100120014420018200100202101218001880018804101800148000040020080C2A224242C08240021F0E7D2
-:803680001DF01141131801004012212181820120040080011824801102E022020024808124A122121824258202282302208AB222982223922223824281F2AA44008214000011273180314115011AA31118428004001270120224002229011210020000800221248A2228C8822B82242A28286A2CA282A2C72100002842129042905229429C
-:803700002182040080A111122B2222182440225122182C020024000020027022E22212C2822908288282824A0CC848882C783204004021A884601420046220044220040000000012200112200112200100002002000024000000006718141F11551115F121211F14045E122D423F24F442122B337AB741A4151AA1454A045AA141A0223A8E
-:8037800053222552222552222D122F22F3321223A1111E122F2131121AA1112AA21140F222222D222AE222F2A2A22B8880B8A2FA82822F2AFAE2E22F26B622AE62AA42F247D5141B55CE4115F121611F148CA8152CB442F452122B551AA1445AA175A0444AA4151A6421213A4352229E822B111E9229E122F33232171140F31212124A0412
-:803800003A03002F22B22282A2222F2A8A0AA8AAEA2ABAA2FAC2C22B666EE22B62AAE22AF2F6E5141F11D51154112A024AE421F153132F31F512522B113A83A65120A1444AA41548B022A2332C51222D822F21F1121225F232222F23D212012427212981A4222AA2111AE121F1222223A2222E222F2ABA8222E828E82AFAA2A22F2AF2E2A7
-:80388000E22F2AB2829CC2AAEA22F2CA16141B558E4115A126A0441E123F35F113512F21B512B17187A451224A04A01548B022A2332425C28225728252222F23F232221C011F2171128281A4333A031AE121F122222B222225F2A2A22182AE822F2AFAA2222BAA2F2EBEA2A2EE29ACAAAE22472300000082002001402101120020010000DD
-:80390000000000000000000024400224822008820028822008824F24021800200480240480A414200480041A040000000080020000000000002880020022008880A24240F398ED80B411021B21421B212394212B1419B24299212B94112B94222F1429F24291222D912AC4912E421CE82264112E5296E122E519C2529AC2521B292CB5913A
-:80398000C2121B296AB19132421B282396212B8419B24218B14228B24228B2422892822A84E822745B0E481AE612A421469121272419623419A29619B2429B212B94222F1429F24281222D9129D412AA521CB822CD812B4286B122E418D232E41882B481D222B481E6223481421B2823B4813242112B8419B2421AF142A2222F2428C282F9
-:803A00002A84B82294822E42CB590082480000200200800200000010021880080000140000480000000000000000001002BFFA02000000140090410000002002410000810000204108214022020000800124000000810000B054415214AA01824542284872142242021642622412242602424270180420121232122181233212212890126B
-:803A80009012009048158204C880449442508244820014F0B6865041C2200800241624C2412043220440822244061212608A21100290212508002B1429321200400812C08222000021814002004FAE0A211A025024841C0824400224402241220220048504001022111298121225820200000048344880044864484048240800F0E7350063
-:803B000000001126A22100000000444021810220220400440000203124800841001162820021200421002004008F1B09004001128A010034181429542580048F628C021828D028024E26400856021818140021850212188486424822064022143442008100F06FCD00001420A18321009012150245112204E68C0112008C044E2440082CE4
-:803B80000418C0110021842100912A184A22022014022304608400E07C09000010011A021001800410041522820228222821104204180018302420084412122024084221002C14040000004F980BA01620222412312219038302814F820126012531817034022A412188212482014081040012812061148200521141278261400420C1423F
-:803C0000102224F18D62602142001608844618024C04212210040024242840868201882120C811814048820400221811001241A01A0020020021C018BFF40F28410022110042208121011840D42401404168940046431408100864108401118008400A24008004C04224000026082F8A0E268201223A641281421B419048901A8D141828BB
-:803C8000646C3181B021C1281341A72846C2442682018C284106442C8141081A6814121062210025385200482D2218002044F8669580C124008140C32823022A2101005110015042B04802100184000083040040018082588180C41100430841008014028902CFC70B4400001C01210060211840088351220080B41804418A01800489443A
-:803D0000018004205184408A04401802428423528218840000005F4E0A21000024118025682100822124B08822028011840210142211120250231842100229948282482C880400C04458484004420048FDCF0040040062240020840200008400004200142445A82484468224240400114008004200304C0010040021247025051008280029
-:803D800024224C02462203004002122241000024422B429082184011022C28C51290825880880CC2480022100248488004411F4C4362480015040049240400281044541481414148403928209814482100A4830100401A1818030093E84448180A499418304841400840F16A8200800464504210420426022800321012481898464A911C00
-:803E000042891804812A2404814140020000848542424804002192418400828468AF6C0F2822223028281984238182860820918200628A84A31A28A0282228222840022004421800428288820000002018024220044A08FF6509100800C531241044024200442480024041044422100844800200401201180040384200202444088448810E
-:803E800089041008CF390C844CC544282604208502224412490222414145A842452AB412028C51A4A884266822806894884008C800248100825048902420880400848C944245F8B74A24E04992242A52481D1465F552164B678694222924512410C41C6962816ACA54437414F414284952241D464D222E26400AACC44118242B41883482C7
-:803F00008582042B84212094421084A8414C548C0084857B647442014C628450412A42E82604298162279829211814721651A869D28444C3886E284826C8184F82B262744258824AC34A122F8468448A941121A3914A1B8423F888C8D028B4CE0C818F6434688F2931428148488784424884AFE90561814410D43292212A4604487E222AE1
-:803F800002CCE1226822A28746702CA8538D51628D84AA3C1A84C9E12EB22AE414384A904242248F21518446F2821889088F28F4C18850884245C8662D488979446844468894C24A88F4C86D00411024D8140845229184C082124C084C086C88D448088F4428D1480885145248218308831832882098128618C248248C048C4442088444E5
-:804000008C44628844488182815048DF230263A811411F12F22C288F22F262626B346F25B722EA2EEE2CFB92922D822F49E96BFB8B83A9F88A84AAFAD9D76AF7F9E5CA5C486E62AF44F612122F4CFAE2A2ABECCE42ABD56F64F8C2C22F24F411916F61F8161C2BCC1F9CACCCCECA2BCC1F94BCC44C1A42E444E485A45546FC4844CABC88E5
-:80408000A8888B8C2E24FDA124E087A7221F12F228288DA22B667E722F24B522FAE4E42B572F62D122B892E923F32B298DAA2BEA2AF671732BFF1F1FADFDE02EE626E62D7548E226B2E2EE3CE425DD64F8CACA2F2CFC51DB6D964F69A9441F1CACCCCEC22BCC1F1CFCC4C44E422956C44B64CAA4554F44B444A4CC8AB88288F464749F750B
-:804100004252461E544155F52C2EAF42F244466B676F25F7E6646EE65E622B3143F814962F43F31D1FEF88F26EE4CFC4F45955EF8FFF7D3DCF84F78C84CFA6DECEF2161EAFC6F64A488FACF4428BAB55EFCCC448CEC23F11F49A1AAF81B1CAFCC9C98BC88FA8FCCAC89F98FCC8CC4E4AAD68C5FC4C4C8F88FCD8D8CFC4F44C448F8454880D
-:804180002F8CBC88F82C3C8DA6244748CF43F724245F52F22CACDD266F62F676766F65F4E6642EE62F2DBF167284F414944F6BFB3F3FEFE8F26EECCFCEFA7D7DEFC2F3F5CDCFC4F78C8CCFE6FE6E6EEFE5F54E46AFAC7CCAF8488AAFA5F5CE4C8E884E42BD53AFA9F19A92A5F849C9AF88DCA8FCCAC89F1CFCCACC8FA4944AC5FC6C4889E7
-:80420000FCDAD8CF44D48CF448488D488F8CFC4848CFC6F6373D2002220082244822488004008002004A0200000028A02420040010022100008A0400000000000070BC0921002824282503298102901200901290222220820128242824408242022044225122704202888A44828408424146029044800400144D13D022F4112485F21124F9
-:8042800083F41124AF34F11124AB141F49F24A921B29AB9453B84A79A4F84A9343FB4291478A2F14F9B4481CF9A44A1CF8254A16F1264A96F122DA96C5DA9E242DCA1F49C2D21F49D22AF99124AF34F89164AB141F48F64A121D64AB9419F24A9251AF64B924B44A39242F44F9244829F924484AF9244AFE7FD026D481D62CB4117244E1EC
-:8043000081726E9321EF24B1817268F68124AF24B381724834A12F74618AA7541B4AA75433FA4A14AE1287541F22F95884272287542F2258583CFC582569D881D2A2EC41D636FC11282D838E6C341FC8D622D1C1C6971D6C2F245B852DB64F8BA4844782AD944B4AAB1463BA4AF124528F3C0620880400000040042800000000000088004B
-:8043800000200440080000000000000000000000FFFF0D002502614001122448105892250123440430450089148C242412221432444144101206844800844820048285A349128110C844008C48F838DB008280082860414200941200424092880048483041241062640026080048240081001E421658142180A51410924218420040013F7F
-:804400005507200C24204231144A411254188F2241581246824424084D4242481211C68284522210D28102502830462181420024425441A0878B14468211088C6444241028F17B72005022884100002004100100100A14008C744804106244489044444180040081001E488901230410919230421200008884DF1F05004100400218C013F8
-:8044800000008C048421111025443848000018905200200229081C012148421A041100240010280280026F81451121220849427221CC1811212116012111184412CC22B412041250242E416490443042A02446840440C4125082244032882412208D0520C5629A04C048F0876E0060484004112118C01112104281042C91281984448104D8
-:80450000459A41241084314248624C24844242C41218A13042B0120C1200100242833442006608FFAF474181028002A74289414302310030184481442412441284422241800424120000800814100248812411A0491A042021A2A100002F670385024AA2824A0268001011D482F8281540031425113221282A7428218342A8848301411430
-:80458000214664828004201424411181311143942280011A280224100A70D20B95842214040024400445082281444C0443B2284102160C2301222928B2448241C54C82A418584C91944001211008D18C020048440048212848DF1A0500C08818850450242611C81100C02812418A016100421011141814084230122058421100818C5828B4
-:80460000C22304A0144220143248410000F0EA9840858232242841685022260581841611C82C164426FA2812222843912829922184A18C71483414405842264242843114422058182D414A2171488321240123E54442044881002D3A602800844A41081004853111295884103142117C0154B0489241004C82C42422D0246444D880295116
-:80468000148250C18D12C082841430480048888400218082F4162900002440D4825184214221C8A718441548120140314210D12182480280D124041250240046D624022504C042411844C0A243041084C41488414002BFEC0F49138194434110140311008041040011290241C48081052D8680012100462427020041100880918810582229
-:8047000044C6188C44440848F018CC2018041218184C011A02481100141008C0811248484021420884400428804A12084221282688C2181180024810880181842C0120B2E206288006858602004B218082912129C124446C8301860118CCA412412A88828222012721933118200116A541198805404C088C048824200442833C482924F1E4
-:80478000589B00002B4181002148225123381100250440220144A028481820C454214400808418D4820210249842215C1201104802608A200A20E81AB44F0300601211810027212481445082294108C3A21444298431129344914288001624136211441225024412008C8461C4C04860248082F1428890844C01484078FC06460400824478
-:804800008CD448168484A44183381149888111C2248386AA82C12443284AC21400A018230229A8128A82214228048422008B282398848286048042A82800F053C1008200141EA82800274119823222A5243218260A218814214064222422AC41E8A204112440260C1844202438121A021400888483014148521A02008F1E0484442A440488
-:8048800025025822141235048284235242202284A148230A188189096C082AE8844821245284182C04422A0800844044C8221E4482123038200421146907262468224E14AFA1F888368D1447515E241771222D421D8175538CCB1155B62AC1225DB21B95B015A844392833181E148B5849B186C2482372143222A2C534266F3432562E45A5
-:804900001E822AF1463815751128AA4C8D448AD124F942444D846E3C182E14214E81C89FB60C58860112142332722D6227226B724AF1A19187238B192F21DAC2C228459416237222A21E89E4D2E82AF2C2762E222DE265E264E462B111E92152434FACFF16822D228D2416944849F88828AD4A87438C02842D882FA4F848848674986886D0
-:80498000CB4126B898160829F3D71890244584D21356454781457A488821D43FA4242F8841DC516122A9C12213E79CE418D444CC3CDD224D418425588436FC3228122728188964414AA75B1E1218A02C4A2405C3714895A88D22437822721A88994888CF4DEC84A8444826E8630A424302221044188444210184548420094810C1241008E8
-:804A000042188130484180084180084382048C0484436281C048248440C8241A84022028F4D7B4B04414F424262B136F82E2E2F256626E665044EFA4F4A1232F28E849E1E9F9A6A4EFCAF81C1C1E12AFA9F916948EA49E14EF78EA1CFC6C4E4FE2F26C6E4FE6F69EAA6F49F3D8D82BBB4F2DFD34344F61F91614EF88F93436EF85F5646455
-:804A80002AB238B35EF51515DB552E222F44F444445E584445F814148FC9F9181C4F81E18858885AF4D9AA40D444F424262B536F23F3262C69F66466214F44F24E1E1F2AFA83824768CBA88BAACFEAF93E1C5AF5FAF86F6BFBC6E44F89F98D971F1CFC6CFE4FC3F266624FC6E66DFC22248F9CBCB2EB6DEDC252644F41F5889E2F63F35EB4
-:804B0000584F47E7A1B11AF17A749F53F35D5CAEA2AF84FE4CC4DED84CD984B13CF33C388FCBFB34382F8858885AF5189F7024F424444F627222F22E2C85FC54662F66D666F14262AFC5F7B1B11F387A96F48E8EEF42F23636AFA2D246F4B8BA67486F4AFAD4548FA4F7C7C7AFA6ECA3F36C6E4FE7F7FEEA6F6AF2E8FB2E226F27F7262E2A
-:804B80002D566F48FC8EAA4F63F36C6C4F46F628A2AF23B25EF7352D8F47E6A2F2C2E84F8CECC57584F418184F43F3A88CCFC3BBB8197A48A8DEA746E042F224244F62F263226F6252E6EF41F764662D125D66AFE5F3E3E3BF387887F6AE82AF62F23E38EFE3B342F4F8FA6F5BFBB6F44F89F9CDEF3F1C7C3AEAA3F34E4E4FE4F4FEEE4FF1
-:804C000062F2E8EA2F22F266666F4AF242466F49FBAEBE4F62F26C6C4F4BF7783AAF23F37E74DFD3F2796DAEAAADC8CBC4AFCDFD8C84AF85F13C34CFC6F22CB4BEB88CF448486AF56F2810040041844D1212450226A3492492744024412689224114C12421004A921228290149012B9290169012E022480812148648220882608985243868
-:804C80004800F04876B08401004F1281326C28410011814044088444400185A448542A04414441440041001004802404E11100428464C014408454480014BF7F0C4F22F4112485F31124C3F41124E3D4C1F24A111D24AF149921AB9455F84A955782AF1439252F14FB25482D915F82D458FB244A4E814FA264114FA2641D4FA26459ACF4E2
-:804D000098244D4A1F49C2421F49522C1F497248F19164AF14F1816CEB141FC1B24AD981F24A925D48AB9443B24A7934F842944F8294924F8284F9244AEF5D054FA2F41144CF123411E7241F4132441D2CAF16E141F642951D2C2F14DB84F242955789AF341BD518BB21F442947788AD345F22B548A9C28F55F8265A87154FA27C58E51260
-:804D80007C58F526C217CD45BA91F624C29E2C47161F88F442131FC936641FC1F662871D4C2F24FB15688B844F8294924F83F442A44F8394B26F8AB44AF9A412BF3C0A004800820000008002000000100218800800000000000000000000280000000000CBABD0244144066111514048089903142C1158428400448342054468E3C42411A2
-:804E00002A044249528444122410410841CD1340230C90812D488084E242048748308454AFD908229229614212AC41525821451248C24820484441741C012B2D4282688E624428485E82472141100A293446A8838238442E88848820311820043028258A240160431462DFB50F16B6447114C24644834114155A24C12A61861492E41185AA
-:804E80007415088E566253A8254B488AC14CC0812D6650214D28C4A924E424188868448918D8841912314EA042D082648248A0524002A041FFDF03221082821151328440081518022440040029420880F22642284B425218444800446981221211881214011298001308502A2A44048D8443C38443F25D1E20224121512820C22800254123
-:804F000008400128844422280040044C1202002180010040C812482448611A04488800842C210190A800F068B45052D042829225701814C211323012504888002823321643842244824424044464814906414821240025149814C012841A12C248291118129448C14A914420067F6C0D1382D141A221491202811681126181101C0122265A
-:804F80000A231104402204431442445482290418002440D2249148430116848101469812409814890552CB848002E7911006215018303C2902164202008200C024262426820444442800004C02414821008100244602278426222408812110524880024270F4038D12000012C0112381015922A112A18116C8124044B248524820012001A1
-:80500000100230168411490420316800214416B14481A24883B582022C810740628328DF130B8144433114404404410041004A1212E214028C72340260441A0CA0C24B1841830144404886042242444826815422108E712C11042F814214048C4402F081EA400111111A42C1288302441112609840018149211102408142088120818404F9
-:80508000821002100425032301002821211088240489210300DE35801146442171141118684118C011128E1946582A89E12413E48182A124411CA48484B038B484D1240142244308250380226576481AD22204182722124143918A2F845224491728018381F23CDE40011C61412230241B2121441428002111508118412D24848141280078
-:8051000000305840840141444044424812014425E18144F28148832482A14120B1480228F095D440420440F62114214098282428290100203222124302008148632204408401180000124A421408C01616842442824114420449C5480044CF940222260264814044019641689181678881238361C8002981846129A2924224C04C4602456E
-:8051800082042582410244482444580010A221108204432202A012421FE801281481A3420400000045424202210044480000264C48441842C84240120410C4244128182C02284883220400433138489032A302225F5C0500202102848586911C21181001404888A212283821622C011A04422C2801481088182C012F81288484488401161A
-:805200003418282A24042C8401411E4440F29FB3248222244110184A518211A1141881504810941210B442228484642841901242431464414480140236A442004C2402122418484118814982850128004F920F94402512184105282041085C521C0022000021200288C10000103214C42448290422005022240040422405A4412D48818070
-:80528000F1CE27002512085042241214211C9282802183481C42624A0082880026821124410280442201284038188221824220044400109222009024F09DAE14414441111008C33214250428A34242041684410648122C054270188201403848404248B444814282411424C44428C0184189C4244A416481818149024460864019C1411608
-:805300002822430322204244A1211484004002302226A2184C868844C41280681488C01890C40084AB148AE222C84487244C228402242442242031442166F4BBC650211F5A5287ED18CD24261451418187293D181E2218BCD1C331128CA123222B812766124AD62222EC2452C48C25715852A4186B444A711CE841D428A1A247238F88A153
-:80538000438A0436F42216AB54A386E48144D2467444D62AA6122FA17618C83C20F5A64AC021254295212722ED11855F24697123FC2822BB824722F74945D32C7214548E6CA2221AA2441AA9D627224B1A8F2322D1869454237442682129086F287156443642237244BC5AD124F844824345C24A1E18412A8611EAC4D1EAC4142F46014FED
-:8054000041D244D2CB43332441856243841FA112D69AF3312A4D11C019A79130288C18686829D16491442A038289DE48BC4275464626D848C5C4446C54620043C1344F45962845FAE2648A8666411AF3422446721464251A35345A129464EB46222E42AF384501148449012E1110042C688188845C288148880AA8A0A48002281088210C2A
-:80548000838821981282200882182002248C6422122041C2482041024212282749141E134F52F2242345F63B31AF72F21617BF72F2282CDFBAF29C221F12F3888647588E1D2D146B99AE166F29F126222F2AA89B182F28BEC2FC44623E12EFE1B4D2FC44466D8E2D8A4F6869286F48E82DBC86E82AF2B6B22F2BFA36244F4EFE82842F22E5
-:80550000EA43F33E3A2416F616562F2193128FA4F52632EFE2D2A8E1A4F4747C4F43F35444FF3442F333125F74F623266CF4333B7F72F2131AFF72F23A36DFBAF2B8261F9AEB68FB8D1BFB18CF48E929F982166F2BF1B6A22BAB2B9B1AE12CBEC2FCE472AF23F79E526BCD4F6DDCCCD813A8984F787412F252426BC8AE264F63E323F3B629
-:80558000A44F47E248E82EEA63F3727C2FA4F112226F21F112546D426FA4F5262AEF43732EFA765A6FC7F334345E527F9744F131173D655F32F23636FF33F33B17FF71F12A26BF92F22EAEBF73F2ABB2AD337D859FF1F198964F21D166F912122F6BFB32342B339AA9FC8ECA2FC6EE42F248485E522F6CFC164E6FD9B48291D245EC45E580
-:8056000068F412B627411E262B35CFEEFEE4E64F28B836F32A3E2F22B21AF31C4416D266F14E5E6D56EFE7F16E7E2F47F7565C4F47F564761F8F4AF111163F52F62D266F67F33F3BFF73F31F1EFF73F33A1AFFF2B93AF3293AEFB8F91F9FFF61F11E16AF29F926962F23F136364F49AF779AE92CFEE2684FC7FE7C7CCFE5F5DEDC8FC1719A
-:805680001CFEDE4F6F6891D36F61F1D6D66F49E161EB63F3D8966F4FFB7C3E6F66FAC6A66F65F37A78AFA6B71AB11CE445F45646AFA5F56E6ECF47F16E4EAF47F16A6C4F46F46476EEF71002471220628845425814400314400644126412422004426044002190161002211002490124480024001A44A24144482450481242B0E906671814
-:8057000028C7124002451351224C722251818D1240578481439212C0248002A8232211022904006502006901A90120582640A241006400D02A2182814444E111053CF51124C5F3112C8B161F41F24E111F41F24A121F48B24AF98128AB945789AF5439A4AF147BA4F842B1478A2F14FBA4481CFB244A8DA14FA2E411F2244A871D2EDA9615
-:80578000C5CA9E24ACFD91242DD21F49D228F891248B841F49B26AF9912CAF24D141F26A921B61AB945781AF243924AB944B432F247924B842F93448984FA2E4E306BCF511646D411E28EF167111F46E111B2127241FC9F242141FC8B242F39128A75443FB422347884E3147882F1473B6D812D2A4D518DB24FC18A14FA27448F524928732
-:8058000015BCEC54C2DA1FC4D2A6F911648F227C11F468821D444B961F89726AF21144AF62F9116C2F24FA15288F243824A9E981F442A64F82B442791698A24FA2F54758008004008004200100000000000018800800001400840000000000448002000000007085030085D4427214321800212228009400A41016A4211044024502495611
-:805880004A484002488056224110024608482331184829441818344A8034284C2104147F664B01860518235224222222453318C012D012081A120124A04228CC84A2241800435286002C0141121463C141C430388961282E4182188E1442E2282692182C88E2C241D148F2D2BE142054842F42C1148C01004932262012398340184244E654
-:80590000228106161CA248124A5242448415021E4281262255426C81444428823512C944A2144B184E28628B4226C218246CE144011E24EFAE09504100272244238232221189012C010038112100C024482847221014E82244040090444003148442161828F822118A048430842120648A28260884DD1F800125818241140621178100008E
-:8059800020414258181008142214101814981400441810040000423044001218602448181A04200420F2C2BA50415444814427121D822A81512681260825195182844C118421E444210161D02421D12404484B122446044054282E124961144C23B418B262813462508249812102A74E7024A81480F4798790141115C42890211D842A0181
-:805A0000B9118202A51191128481440042205242D0282121840138F012440050281612041E44E0C11222B42201252834521842678660861A04223F9C0D1145023014255422241241818400104892148581914843C11140014141C461424144004441808231412242485A0248189014208281084100483FA3450244290240814102441845DF
-:805A800002204102424052218150241A9448841038488C219444381810443888812118A0414B14124112181044044014440444AF16081D1622416944783288842161828C921416782401448400F0241268281944885324812722184C2801C1228582252101222225042428430363420840426882236224478187242B5800000044008044E5
-:805B000001104218080000400400000021C0184001002100482800102188082522354C001200821FAA021351426902842753121823F1244819233112418C51688448001289C624150683548484A1465886301C169C312420319A00584922818121A281494158264B4187648485341242122CFC22CF308628244440280400815028110000AF
-:805B8000002D25004883240221282921892524026041815028282602424C3422134122080000224C12544845F8EB6730124C145382164842584B2444AC81C123182441AC114C024A915410042141638501200120D122012554A2123014224224008C41044818004508169814844FCC09000040040022004001100625C8182180028445086F
-:805C00008C4282C22440420880C2484014141AD848718478481408831918183C8A842AC4184200ABD1148A611184182001001062112D14901A1C4142118161148501B48074127112426164124724C04226A4411411361729313116224211D1218204182442245224100422FFBB0F30222012A24244100220420210480181408852121AC639
-:805C800011004002103224441044140452114244442860C12220440444004240043F1501400221122622382220030018842952141AC2112D211440C128141C424143818114582281427041061B42811B41608270310819548100CC24C448839478841840B1CC4B11431401150614813141244413011100C1000025480225020020A1438466
-:805D000022302280761A440284211821302221A34414125C42491106412911F84F2C0022221430888400218742850211180080021682260200894288022302412441008100100481902A8818169412888001004842F0D635402489A1146561414C014480010060418C611141004147214841410041704402108425149221904141281810DE
-:805D80009451484848C94402480012848449B2FC0FA4B0282472884261121C042C2462C2C022118591221052182894214581C1518B815CA6216890248D2168284D2828484062241344B442820116544129028001411827241022742C0E1823A83237236B1885D232512A216447A327222D1318251AD873321E8427819C31541D118B343504
-:805E0000B34264326D482F53924265A2236742AF62742252424E2425526A4D4A55B15484B164748432421B2716144844044744814B44AD5849C441411C4F33114F5853AB8C57395969C241114994381C311115B319D192518C157721D138D121C44526480785F11B148597114E261A51C2AC52844F4536343732D7925F1253115E523D285B
-:805E80006F21D288F21B399D7DAD8399F7C6586F81714AD282D12A4574126E244E1C4CD1A8F6F4C650263E421460C12F4712DD9156242B32218F81922423417135A6112E18AD1613A2259F82C2247F8254485F6241B8714322E346F64452814A82E12417C42456B85A51428F527128FC121426048C75426B418B444DC8CF6564884F85B54A
-:805F000028233118C321F23FEF000020A8842004000000000000000042200442002004000000488084088880088880080000F075C9345F52F237351F33F321314B442F13F317777F727646F424666F83F33B293751173117B15FF3F33D1FDFF2F21517AFB1F17B5BCFD7F67D7DFFE6F64D45DF62F34355FF52F363616F62F21E3C2CF34E5B
-:805F800048EFE2E263A1513752B5D8DDF3491FBD1BDD37EF24D44EF2DD577F3FF32323BFDC7884768E5A2A2FADFDC24AAFACF47E6EEFC5F45C5CCFC5F56E4EADDA144F63F2F77E1F23F33132CFF5FC7173FF51F72C6457746F42F62A243B133F23F31311BF91F1343FDFD3F12D3FDF72F31B1BBF97F57F6DDFD7F76577DF54F4ADA71FD725
-:80600000F71DBF3F37F72626CFE3F323176FC6F62E2FCFE3E345F5434D9FB2F21F3BBFE5F51B1BEF51F36C66ED2AFFDFF7F9659F3AFAFBEBC748EFCCF5CC8EEFCDFDCE4CEFCCF47C3EEFE5F15A4CCFC5F43C1ECFA645F321375F71F4393BBF13F336246E719FF1F363276E244F42E6C37333F3133116F2111BFFB2F23B1BEFF2F21F113D5A
-:8060800019BF96F57F6DDF95F72D3FFFB6F66FEF7FD5F5477A3F57A777CFC2C3558FC4F4686A2FA1F724627D67F5FF3D3FDFB4F15717FFF4F76666EFC4F675F7BFF7F3D38BBF84F2549EEFE4F4DE9E2FA1F556D26F24FC7A626F47F74E444FC5F46C7EED73141F73F39D479FB3F33912CFF7F6AB3BFFD1F365256E266F63B73AF1192B3F72
-:80610000317312F31B18FFF2F32B15FFF2F32F33B5FB7311DFD7F67D79DFF2F26F69FFF6FE777D7FBEF553754F67F73E3E2F77F76A6EBFA6F672687E66BF72F6252FDFF3F34F5B7F75F54F7FEF66F64A7C9FB7FF5B4ABFB7F6DBEBCFC5FD4E5EEFA5F1DEDAEFE5FD52DAAFA7F6767CEFC4F4544CCFE2F359E73022A012844541C8124001E9
-:80618000264208404348020083048304100221282901103826100221104618445824160884608144164844482401124604FF6409008042110184250100000085011484142AC4114041581851004A220260449021C11538481121C012132184C213484C810448184B4242415014CFB2092CF4112485F2112483F41124A3D441B24AD141B22B
-:806200004A9921AB9451AB9443F24A9143F2429147822D914F82C4914FA2E414F8244A56F1244AD6E1A26459ACE44DC24A1F49C2421F4952281F4932481F49324A1F48B64AD141B64A9921AB9451AB9443B24A39242B94478229F92448984FA2F43437D0B6A561A5D341F62A121741E312F12E1213F14A941E24AF34BA15B24A3814AF54BD
-:806280002AF142B747811CFA22482D95ACE554CB8A4EA54FA2611D47A287186D53DE25A41FC8D2A4F591648F227481B448F18124AF22F181448B121D44AF64D141B2489325AF2431248F2431248F24712498986F82949A49F55476402888040000004004280000000021800188000040014008480000000044800200000010022F8802253A
-:8063000082118A12C252C0482D224C14028941082181812681881284C244502C12818922C1324331322D22C06418400CDC21A1414C09200BC054002840048160221F480241824908C3119C84901C2041026044D042A1412504544244504240846164464628423448168101160248282880645581806548803238200483267A1C41F83CBFFD
-:8063800034602C842416E84411423838251604AB1284101288018234460447257084226181304436D84132222F84921A1A04169248484D191A82B484E54451841AA243414904282248442C16183418DDAA50241243881244988448614818006044D042C1482D25C024C024404448048F44D222012961411031241240042820011120088246
-:80640000182289010081A28921B268018002001014110283040000000000E022040000004014020000800200000082200820240200485F8D0200410024840000420000441004414200000011812004202104002021448201981448421A04482284100810F8D22C000000101811028100004004414024042602004001804414228104002012
-:80648000220400881142A0142004842800C0488BBC00224148002504004249040000000000480000100800000042001840220118008A04888022048400F04E8900224141408444088002244248200221103824284848250400428880260100000048001282182088048430888C0500416E3320420280240225210100811901A04122901462
-:80650000008441008C048C018110021225C41224440012210000822304201808008384023FAB04414100284601002120040000441018040000100A282091182420020012002024060000424842000046081F26014982124424D614022509212250281C05A0254480514841894244128454828921648812122C212142424224011280A421E8
-:80658000821888C880B48804824A0183C428445FDA0B401402802404180048004200222145082280240481002240B24802102601006024004800242004C04881840042F0E8DF0000200400000000904410040000480042004800000000000000820020088008888400002F9D06410040444404414280240400413044444149241414644466
-:8066000041424100480000000000484220288488044820188864888110F8E8B81004803444440020044148001004444140044904414C044448000000200400002008488800802818C848848400AD5C004AA44442004440044574443424004C0444485024424212448A04420030410081A0444A2404004848308420A2482004800886026059
-:80668000817F870E410041000000000000000090444400432404484200000000000000202808888800000000F0BCAD10C848484800000010C424222800440044250229218129881804C041111484818C84840400800444414C22828208820086582A90122F730684C044000000004480020000001062444905880000400140084A040000B9
-:80670000202844042800008800508281DF1C098004000000504400000000000000004100000000480000000000880000008100007F2A074004000000000000000000440000200442000000000000000000000080088200F0B5341038482004000050441024220200004146C2422021212C4804001111103848200400008018142422028206
-:806780000040484212F8F16D50848448481004004044544468280000001092424C818198840000141440C8484848000080084444688A020040081012F2C946000000008004000000000042004100000000000000000000008882000000008100FFBF070040040000000000000044000000000000000000000000000088200810080084F0DF
-:8068000086D94004000000000020040000414144444324044A841404000000000000008A082088088200508882851818F8953210040040042004000000400400414044440444424A044200000000008004A088208C888828E888088D884008EFCA034014544400000000000000004CA4444848414210440400000000000000A0C880088263
-:8068800000000000849FE4062722212AB1120129012C5122881E1317118A689D85E818E48424F441491148951CA84487444D444B244F46024C02284514A4226722212AB11281B882092C5922881E1317118A689D8D888AE48C24E48404488518E884D4450E6F62428221211102182592821CB11191C18E88818D4142424659114884858818
-:80690000E44494444B2422224480425444282F22428221A181232888512229C8111B1119EC8898888B484242460848848588F43111000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000042
-:8069800000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000039
-:806A0000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000B8
-:806A80000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000038
-:806B000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000B7
-:806B8000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000037
-:806C00000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000B6
-:806C800000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE36
-:806D0000000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F002
-:806D80004FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000025
-:806E000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000B4
-:806E8000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000000000000000000000000000000000000000000000034
-:806F00000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000000000000000000000000000000000000000000B3
-:806F800000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000000000000000000000000000000000000000033
-:80700000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000000000000000000000000000000000000B2
-:807080000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000032
-:8071000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000B1
-:80718000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000000000000000000000031
-:807200000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000000000000000000B0
-:8072800000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000000000000000030
-:80730000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000000000000AF
-:807380000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000000002F
-:8074000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000AE
-:80748000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F2E
-:807500000000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFA0
-:80758000E40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000000000000000000000000000000000000002C
-:8076000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000AC
-:80768000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000002C
-:807700000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000000000000000000000000000000000000000AB
-:8077800000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000000000000000000000000000000000002B
-:80780000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000000000000000000AA
-:807880000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000000000000002A
-:8079000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0042800400414848410040040000008D
-:8079800000000044200400000048480048002008200400800400824F890F420020842484040000004004004800000000004242484848420020840448C80088828242200488888882F09BDD0000004200000000000000420000000000800448000042808404002008C8480080048880F853A6808404000048004100100400000000000044EE
-:807A00000000004842000000200882200800488028080057C9000048001004000000100400000000000000800400200448004248000000000000007F1A090000482004484200000000000000000000424200000000000000000000000080085F490600000000000024000000120000000000000000000000008200002001000000F0469DAA
-:807A800030444421904410044141428C0480014440044440044440040084000000004200202408162804881044B88804815048F079F9000044108204420012800400B100461801800424401844A242A0420040542800469418004220080048214116A84820029FAD0443141442C4442146044C4484648480044002419044100441100440C3
-:807B00000448A0420000814830441200608142800846148A0C4A0826042FF506000000000020018001441508101801200410120881230200004110024028242804880000504816180881F0CA3F20021840420C1048880142844400411C331510A42484144081345821834408181002001021D481342228204181049608222081C2488884BC
-:807B80003A0E0028812644C164AB4178486E8200290147815582518420344184484726C0668391A4444922638422408152A4146921F424111849349882C23012432CC4648368888B849280027F1D03280030243044A381028A04428144160C49116411488084D441042C848412B224140828002241259114E01265154CC48882428031441F
-:807C00004A18E4880248880081FF750900388124958482345889E4220130120055022E1941704491288428215C62814F854844286384182414104802131414982232A01811238498182A048CB888A11289A482F0F28E904814A06100001445229814809518291818245828504211C611C21423814242E282E811123818239148418741434F
-:807C80002314C824811849E24128022684419CA44614444658C260282732004180848422C4222248904C408864124862450114259824008921288401111410028901100220014C0844422006C800182242290849F1422920114208A444100A0022824C082048010000444E2840022140042100001021120422484A08C048880023048E28B9
-:807D0000002021F4ABBB141A44458861A44448302320B82884C81C4E18A84E884C22582811841D241C9462C11800244450A21280417418B6242146883228491C04C0484C2491C8231EF48438430284124AF89B674002800228248C024C1422018A4412011944051004431848022F222411F288212A01A41248001140941480A1689868201B
-:807D80000841444800A3348410F4F2E14004168C421428028422A0124400848421140043840422428C849843842004E081041121144C12C1488084812424648418624400620058625F9A032419020024842C62238348088572910210241824C3211220D2123492472218C42A119432268C8142848281437148849144412490B8230144818C
-:807E000080224164424084F89C6A4014644243413814241241414C6181122D1416D8429212341893819118169548702894528B61ACA1412D1283911216C8421AC4141658248D11381238844332184284566284C01830488944DA489284A19F340F1A041033121342442C4438426400411826922C433444412210D424234112044908C0424E
-:807E80001D42441002214A02003280C8148844884444168408430128F06B6220A221122E481014018002288110C12C4818844098448C4241B828C42826E145028C814408122001A5016014704252484E848410088924912840A842418C041F180F704884144424A242226216C43821100430142818281092432904100480260614242846B8
-:807F0000140A40E4820448201142048062412A882401E0818481F45CFF401812092800442C01A08418118188814468822E4181824C824502400144224922049024C4430241221004802208008008442002441FEC03181113628183213115108A21122244128521825112142964124313411484512424A46885C1128424124044122811A816
-:807F80002184299218009042E08402268822284148F8AAF6C028C0422042410A4490428514828201109828A5941C101A981880D818244214486214008480448814611281328440F444182F48C2883260814A0816082922F2149EF06426C11E122F6362824F8112BC24B342B7A6F128422CA11144122E3C85F824272D422EBD13B661F63411
-:80800000561F4632422FE4EF42A1449B52A7A44CF1624A8F84E1A48496421E15C111FB23CD194E48122B474F4132985E189AE92CB1B2D444031AFA88C84D24CD548B128B4A8B28FB59A0113F13A222450917121FA6522AC7412CA211ABA2A5FA9312C165A2378D189FD53258AFA1B71CD1989848853A3C1E48DFD37114E143F34C689B11F0
-:808080002AB612C1181614E2C1D1CE2134319B314A52C8AD1829C82287C4CD4487C483E2C4F848181287823AD244E6E5F324482761004654DD8B14CF41C3165C4164A287C12FC462854654143D1D8B814536924B12514545BC4152945F4206EF24D222FA422E4B4827232867619167274F24B12C52222E23DCE44466124F82D52463224F43
-:8081000084B5A8C44284885E48CB3326A4344AC488278141424F2C0E501210021400C0828028C183C082800888118800210010036110042100501650140012450200440000400400B0A20B4F43B6517318DAAA54CECFC1F35C5CC7C2AFA5F782162B7F2CE36DFD8613EF495144CFCC7CADFD861CCFC3F1979C9FCBF91119D7F2755FEE6F13
-:80818000E3727AFA31384F6FFA363C8FA1F3322A27213A62246FE3721EFE3C341B158B1597818FA1711EFC1C169AB928F3E89AEF65F19EBCCB138F8DBD38A1BF8F43F3FCDC5E584B54CFC4FC924AF014545FD1F5181AAFA1F13A18DFD1F35556CFC2F25A7AAF68F3FA7C8FA8EB2FFF9512FF49B39CF8DCC877DA7FDCF7FCDD6FD9FD8FDC7F
-:808200005FD5F16D5F7D4FEFA8FD361AAF95F49A99EFC5F7343E8FB3F2383AA7812F877252F67276E7C1FF53F75A7CDFD5F558188FA5F31E1CAF41F3DADC8F82F7C8FAEF65F5DEFCCB538FCFBD78F5F8F8CFC7F5FCDC6FC1B148F47CFCFBBEF074663F41673127A1ED2C4D3D8F95F52E2CAFA4E6247E1ABC8AF94A7A2D81EFC1F1848CCFBB
-:80828000E6F52D8D3F16F48C9D3F13F33F1D5F5DF94C5F2F32F22EAE6FE67262FA7938CFECFA36348FB7F72E2CAFA2E683A3762F22F62E2E1F52724DF85C5897841E1AEF85F594868FCFFF28F88BB5AF61F95ED4CB53CF8FAD338F87F32C2CCFCFFD5654CF84F5ECDC6F7A064F67F71B358F93F3183EAFC3D3D1F3595EAFC2F25A7AEFE46A
-:80830000FF7A7AAFA4F7DAFA7F71F93F1FE7E3AFAFFD2F91FF96F72C29EF9BFF6D4DDFDDF96D49FF92F67ECEAFA7F56D4BBFBFFF7A5EEFE1F3286AEFE3F72A6A2F27F776746F63F72E2EFFF7F35A5CDFD5F559395E3AEFE5F79EBEAF8FFF38F88F85DDEAF86ECCCF82F5FCDC8F8FFEF8B8CFC2F2FCD8C7C28F84F4ECBC7FE4012A016B1260
-:80838000842A41A8120084228400248428840028A02480024A024A1222140400211002006081221A0412241A0412288082840200CFE20C10011052812C012602002D12110024111C02271411141722422400542246542242201404255241498166128C344412214824432114044800441AC4241CF48BC6C0421F41523A1F41724AF311240E
-:80840000A7141D24AF24D141B24AB911F24A9251AF343924AF1439242F147925D812F924481CF9244A1CF8264A16F1254A96F1264A96D5A6E449D2A4F491242D421F49523C1F49724EF19124E7141F49F24E121D24AF249921AB9451AF443924AB9443F2429447822D944F8A84F9244A7F3801611FC1D61AE441724EF311244734195626A1
-:808480001F41D668D141F64A224F81F6481743F348171B43AD151B43AD147B43AD151B528D856F227D18B5253D186F827598F1265387194F82F591286FA2F591644F12E588724EE189F24E131B296F24F181288F66F1812C4E321F88F24214478A2F44698AA744A6D84AF8A648AD94AE5AAF1205000000000040042800000000000088000A
-:8085000000000084800400000000800200000000B0E10F422313222101181170240880012443811124015081226C446262142412486143854182022221140089024A218404A41442001210082210F8D561144111811481102882621489133148250428142848841141902811004C12811241CA244C3514245341081100142134408141C685
-:8085800088432244B418642220C421622F944ED124F44112C01118301822F028454312E18215044B211991245284155248B01846632A14493213421157856B124721C3427271144A110126481162244111365863833824901452872224622283F59FFF00288110081021028901244002000010815224100400264204802401000000A01413
-:8086000011420020044210080020F2812A10022110421828218414C848290114160855084014842202004044384863A2244004191202002682142881082C081841189028A24A080067E930251222A1441931358145C8221A044216844462817013046887115648C54C85364447834A42D44221911649011D24181289B341D3180416887225
-:8086800082A8212F146184188A84012E1492421A328889B22474250D260126424814D91843784884B2420123941440D882513C190148D44A51144C54244244495424CB414CE143644140641118166817992422149898601589848104182883210A848342F44112244412211022112401428183840146810110044C22C128228484418B1283
-:808700002884702202406412222122002483C122E02209860298430143A182427A280868FFC50E83E122C1281A2475A8041280818222A11242811A942411200216A128128B848015442445014088954630241608484860464C68211289A44138004002238441F4DC8C2481003C84081EA8854211082925A882001071325828468288022840
-:80878000984014C8484562144C044D2844488420048741221C011694222824841044888813D4428302ED7E800212C0881A8838224A23821108A1841C018C2108C1810050244C012602604188408242624120A21228450883010088C044401424A48440046F290312182815C2483283D1228125829258929880A1418D25230AA7468C488127
-:808800008AD268C4141614944A43344241803222451298247688B318364418362C2922612C89E1411454484988A3484E3449016FF10C238A921A1218C4228C621216C81228248483548120D1184108800300809428411249210C444D5290140010C4281448241221844222008054428012F4F97780518444004508845085008111494204AA
-:808880001608811742814421498444D4484C4168824C02222014440441890142814100502881103848847034881238242F7F0228422800801221A118128420880583227824084860824682426882183248004C0132458203C888288352412AA824A382021820B21224211494428112F05413A0186082414922814104288002855481181069
-:80890000280324481244200A18842811187011180400448181483220110487428112818004814400708449126181901111131A110881910000424024C4A1C31A04164832141A4221D41468C2842844D0C24882A421C84444881B5229048019A28400E392922B1242805822EFE708A021126820C1282884000080123824328901182A2584BC
-:808980003228228D1420021009688002181E2400288400428C21042002204484AA428942F1B217004501004110142401284211830140140120D848024446C44144412A015014202481C6481100400440283812A014428A210228901C2321F2E6D4200241448C010000B018084084280120120182468485084220A4144C0400424024B8248E
-:808A0000810419A848811A820490824C81A41826480A2142449FD60725219818115C38811C24914443420181008D148400160C81002948088444812021128CA2216D112912C81841C981C21A188883410AC0488722F0228212006A68A44FA60E45084818323014204131184412CC128106008631881229458801481C9241453145882F14E2
-:808A800081B9444118880D683200118722C064824C1A08001880A11821B0F90C6B319E14C4A01A4FC921414434A481181884684FC54598141E188789C7544A71185488ACD2846AD1C7C217444417C4AC2114E522A4146469E8C1BC64F22824CB12CF58C948CB12AD848F833796C532D8244AD988E8886722214578A889F41E3614145B48F8
-:808B000049F31115CD2515C121C3A1148D351D118C18388D17D18141167428D515E28AC24843F224424CB8F8B468F751519CF41D618B22196443892EE5292611B885E3C17C54C8681B4297352F84E48622E4A459828CB428F6184A5E66AF2498322CB928E32161E21FE64932218D2883B344321122DB169C321C178116B828628454CB1284
-:808B80002AB82873A888A68219F93A844EF82F44B166441484B824638E4F11F43C8449E3C3D1447324F467383E14228B18184428AAEB21828198289229F94418282B1232C7C1CF47A6494A9E247F5E08A0122062880022C08180288128812A810A108102288200281182192148221C2418044180014501241A044824000040024260446FF1
-:808C0000624B7391F45131125D711F52F2B9319FD5B518B358F5BD2C928B22CEC887C8878C87868E9843FA9919CF8BEA1AAE47702254A8EF86F639398F87F59C998FC1F5188D8FC4F894C627499E962BD95FD8F118941F19FBC8F88F84F758589FCC2CBC18F38A988D1A2F88F85C5CAF89792CFCC8C28D522B54C5B486F934DC1AF9244A8F
-:808C80004F9C49D151D291C6245F51F23125DF53F3597D8F81F3585C8FDA728CFDA8A8DEFCC7C8DF88F2AC8C4F4BB9A4F1B911DFCBFAA1EEAFCFFD785CCFC3D38CF4A464DF93F2F55CDF8EFC89885FC1EDD4FC94C627296F81E561F493798F41F981A58FCCF64C7C4B55CF9CEEBAF878628FC8E8A6F2AAAACFE5F5D898CFC3F19892AF2B14
-:808D0000FBF2FACFE1B194FD16DC8B918FE6F5F6B73415F53575CFC1F125359F82FAAD358FD5F53C348F47F639AC8F42B2A8AA755D85CFC5F1ECBC8CF12CA8DD8DCF8BFAA8E96B6249F4645CCFEAF82EA89FD3F73C3C85A9EA879187BF23FC18AC5E3E2F21F4A5678F43FBB5B1CFCDED85F718789FC8BEC8BA18F3AABC8FA4D68AD2CCF941
-:808D80005A98CFC2F2F8F2AD42AF8CFD5858AF89F9666CBADFA4F532D1341F5AF22D25CFC2F23535DFD3F13D159FD7F73C3CCFC7F62DAD9FD2F228284BDDDD8DDFC7F5747C8F8BFB2CA8DFD2FA9D2D1FDAFEAEECCFC2F6647CCFEEFE4EECDFD3F77D7D5F5EFE6D6D5F53F5F85E6F4DF118AE6F47E769FCBD378F43FBB5B58FCBF97C7CCFDD
-:808E0000C1F785E59FBDFF5A72AF8AFB88EAAFA8DAEEF95A98CF43F3F8F22F27F7FADAEFE5F5DEF84FC4B5D8FD4C4E57AE90160084415014100422000040244124694492460442604460441842222022A41220022A084302888C24628120018CC42284281A94281289028FC60300493111A02181B02831110081D058014088018D21824031
-:808E8000485482281885214245584818444190161618A441421781882821800121002044D8420240F2ADE8D022F411248D121F4132481F41324A1D24AF14F18124AF14B981B24A3995AB9443FA4A9143FA42915F82D412F924481CF9244A1CF8244A16F1254A96F121CA96C5CA9E244DCA1F49D224FC9124CD821F4932481F49B24EF181F4
-:808F000024EF34D141B24A9921AF2419F54A9243B24A39242F64792498924F8284F9244ACF640C2D42CCD438F51184421FC1324A4CF44A111D64AF56D141B24A9345A99244AF1411B54AF125482D916D481CD9A6C5815FA23D185DC216F1254A16C5495E254D481F81D2A4A461CD439A7244F1812CE3B481F24E131B28AF64F881648F2429
-:808F8000F38168AF6421DA48A94A2F6471A49892278A2D142E1AFFB30A8482000000004004280000000021280088000000008480040000000000000000001414CF3109401428114811C824840026C2484054821C04104401000044901A89122404800210E281C8444B122018081830181018548200220042F0ABA300A2502290340010318F
-:80900000184810668419220190281A82024484481800204148048032210000002002244081282288221424041489F2869400434C8A014943C82484114781622F8214944C2D295200CC721182024311A84818301A89427441083028221724C0184C04002092143022308843928A2848400246E181F21B6E002800A1110000002400400100BD
-:80908000280000400400124004002820081E24201808008911010000432204009D94002008880080080000000000000000000000000000000000000000110010011400775EA0442831C014CB2274426184A0621C014AD8A2B4140122888687A83186082E411D264038188C34C38984E1468228911340B48CC825624D2225A81348148A08AE
-:8091000027A14991422E826048A031843F8A0C292295114410CC21624457812F1282154898822449A1483AD8224125D1881245A54A8D2218568844B8833118244C92826215C8148311C4A1624445B8228364118429F8184243A4182A088586E18132447F950400828008008800000000000000000000000000000000000000001001001137
-:80918000400170E705211222400221120040C81212188242000000228084028381844208414421901400108402124280082001A2200800F0D5212062228C81922220322287268446184248249442448B41106812100484C0181648C22281608283B1123824209224444921122811248881E181A4848684311889826186B0A87424F8AF7169
-:8092000030222829C22240420284200418184A21440400000000811216825282812285C6164C0226C4246041006041001A88243C84122828928C02836882BE4300128C012C02281AE22442484A484A042928E48104811C02412284481A12488884028412820018400443C22818202C018C011290988180042A44D43F078044081A04002054
-:80928000026021188C021249018C0281424611C898121221816041262448042D44282783283018804204224818898102160C28802202BFB20D622D4C200138848C8242048CD142022121218123080040029830482A410600CC8101488141C0144818821220840288002001704814042F8D0C80010044181880110200200240482202410054
-:8093000000288480010010020044004008008628080000422A0818F0CB4980D4420118524028821214120818812522512850282284467441421888B158D2824184311443E2C841420289322A4C42C44818861804B08884999800441228A2894204EF7A01221008E041826181A02120D122012122301489280200000080420A006041400486
-:809380001604121820220168002002160848904438F0D8464002008181C31108002C0C80024004810022842012284C14082304A128822800844D288091580020814884D184011222801284F4224D24226E1210AA1224222644021618180821E301812821224120824214C22228384C322849C1264C48240485029014002E88204298188163
-:809400008128431244088148F02AB220010048204118429244A018A058241648428832828482102A01204102212100244C81128202841800A60842208A02848241824116042F780200CC4124912C00121200F0821483120223223112448212008488CC410A1898A0121828248C44041812C9028001508418200200490310F41E4320080048
-:809480002544021612440420588482002852648260485062102804282694444014C61461440044414C48142401104414A448122041189888145FEE0B242082042200460230820025C43A565828288422842881228121240083141802001812C144264828C2184098182041884368488C01424C2713F4E6251036142552848B4225441C2668
-:809500000316E88491182061444496C48428E04231184418446C454464812981321423C82200813A3882182880982888288C8122480800260820C428AF230B1884C012002003222033428901C0828800128880022841288901822048C812002722428B3800208421028220018021C4142800F0F3B340084F83840229652440440244412886
-:8095800048824C02811280514A8011C28289014038142621018C0248002002800444800280018A024E141082645330322F49712A5862853C2C278341654404A7248FC9F11E98CE2A47818D84ED24853A2423BA2CA818C16932148CB41CC924E0C8F212248E1627E12E262EA64D428D24869C8847424CF2281416E4C386031A7814BC14184E
-:80960000AC274B315E3CCF43E3C2C4349C65443FCC03C04841C7852B262B616C31184A51222D189AB84248B4127848D682E328B9627818884BE841C82826427A1AC4482B118132AE1A49026B812136445A222D381A92184338C88183B328D288A1188D1818890840B884722C285584DEC8246C61221E36281E52E4C3F4223E1E22388F41BE
-:80968000C47840B224B5A2715462824B312D32419E14CF82622284AF4252242F6652AC3E3AED52CB4423B1AC833114293132CB61A6D4887134A8218C25E888888114684A3E28CCD148A888A015484F42A842EF9C0A00A0129014001024210244802208822812280000180080082A088800A0920000000000000000304880F2EA39F0241409
-:809700007E1885E641F44848CF41F17A588F43F364742E2446B252F9D8DEAB888F8CFC2C188F8DFD9C9EEFCDFDA8BA6F4ABA149884CFE2F224242AF2282AAD3AAF63F31A1845FE18184F684AF49436476847448F21B3A227FA28183E34AEB4CFC7F36434AA099AA911CF89993C4F4FFF34344F4FEF42A113CF83F3FCF8CF82F62E282426AF
-:80978000F2264ECD2E2FE3F25A4A29F2785E6F43F344522B224F65B1D2F8C8E88B884FCDFE241AEBDD87A22F84F4A4BE6F6ABA36FB2C8CEFE2F32A288F82AB768FA4BF3AF3381A6F65F5F1F32B3116F79A18A6F224481E1A4FE25388CFC3F13C3C8AFAF8B8CFC6F3AC9C1AF1B8BCC741CFC9BB2CF2FCFCCFC3F3FCFC4F42F374726B334B9F
-:80980000EEEF87F7BCE4F024362F23D668F236348784CF45F17E7CAF62F372766F63F31A1C8BAA8FACFE8686AFA9F92E98EF8FFD8A88CFCDAD336F49FB3EAC4F83F8243E6D26ED8EEB33EF47B63CF31C1E6FC1F1584DBEB68FC1F294BE4F4BFB2466EF41F3B4B447483E188FC3F3A8BCCF47D74CF8389C8F81E189FB149C4B9149F1FCFCA4
-:809880004D344B64C7824B37EF87F3E8E8CFC2D3F947F23232EF62D2ECF2363EEFE5F16E3EAFC7F73E3E2F65F534368FE5F5EAE88F8C5CCCCF6FBD6EFDEED8EFE3FBD2DA6FC2F2B6B4EFC3F3349E4FE2F22222E7E16F43F3FE6C4F42F3343EEFC9F9FCFF6F6BFB9B8E6FA9F9A2A6EF63F33A3AEFEB5BCE4FC3F13C3C4F4BBBF8DF4CF8383B
-:80990000BC3AF39CB8CF41F93C9CCF83F3FCFC4F48FBDCF8CF83F37C78EFC7E36DFD6C7C3F790B4302490100262261224062892484248424128D26828D241285048D241018D248129628188143024B129016844342088441162862810040C824168822C1241285048F830D230A25022484418C021200006081850400000010C22400498186
-:80998000120621822140022031249241280040C81412205248002242146F570E2CF4112485F2112CCB841F41324A1D24AB141F41B24A9921AB9451AF443924AF1439242F147924D812FB24481CF9244A1CF8244A16F1244A96E1A26459ACE449C24A1F49C2C21F4952281F4932481F49324A1F48B24AD141B24A9921AB9459B44A3924AB98
-:809A00009443B24279A4989A4F8284F9244A9F590AACF411642C54C1C119344A1D64EB1419D64AD841B44A9B41AD2449744AB124F442114F82D412FA86482D914FA2C5814FA26D144FA268192E4A56454BC54A1FC1C24A1F49D6287411B448F19124A3F48124A9F18164AF44F18124ABB45B48AB3443BA4AB9A4B442F1A448A939A629D95C
-:809A8000A4F5DA8D40080000000040040000100100210000000040014008000000004004280000000021B0C6020084008410048C388281004410141608001014022124444841841800800818A018902443140200901C00402822240241ED4860148A5224C041120041610010628410082184820020080084808862424C148214042C381181
-:809B00009024121886042004C8904822828898835418289F4E0D424648188204404494866918684221C9044508A1818602203182860250849084114CD22414886444C0821260424116644841A0423094304828868868288906414F4805142841406181004008000040120400004100400248608212002008121492A02146020000830400F8
-:809B800020A2141028F29AA200284110046502432401008200302144E044A24A801448120844618014081004008002841884004A080000008100486FAA0743022124482782424110C6C2222C0515182291842E486110283828444C46068CA324850244412C0800126D31844440222D08848C6448824318F894489243B52884045E4A108471
-:809C000012042744256A4441444442C012888511828188149424A810082E444518E241322224006028440024542800122B1C8880688488908484CC8CC84C4E2842426FFD0A222400804202422381982242000053C22E20C448886885042110984484484518040020A1218141811008304810240880812101008FD34211E1C2040044293143
-:809C8000222100422180062141114490A8914286884802218100440080C4142501214001418250424B828081410416222484044F3A05288C14180A2288400828409444282888100400442522D184280422161644410230284C14084400490120044C924840120400104854422F8C0740932140088E4C1280011400004100814800003024DC
-:809D0000481200440030822111001008141240094008502244260400E01A49912145134848382469840118281012840421441144488942692486084722421816484404400221160400814901448A4411524884104242E46221C44840F4478D00282603008D1228A10019044820C284404408824400452844825224004421A0824485135185
-:809D8000240011141240088A04126C1104006044F02B37008230212410041014860821642C08430221200446142244C28244C24079428204101251618400C14092C4804814018184100C8141ACF478FF00110044D425585214820021865182008284812480A8824002810010B22448686886B84188082C98848812244008241042425224EF
-:809E00004022012542D43304200800235214245012601240042824101404104808278281402842040010022100001100000081006024004224F03912000047240000000000404401254812040010449384D0A40800100A41112F24081722812C09440023123121410000454804B04E0B9042212004230420028002260400460224008400D8
-:809E8000410010181C5EC2411008400848444822000088008484004440F49A9F60C485D4244424420425D5424404108222548400502820C2824388290484405224A081A02888400210450110441848440416081288120081F0FD8E24840000840011821D222A18318211882634842120881402442400612784800888102438844441A6685D
-:809F000088256848A0142180124802231232244A014112AF460D200810220800604420440260140049421444C812504245996484102804445024151812018444110000441410E844181444C888849C48F943EC241588D214048D81229028242400902185C128442100101824C41884884002C084944A0884414CA4820014882200C484285E
-:809F80004480018301444A12023FB64D42748853442249F8822746C62425A42821242724254352486656224622C2822A2428195484A12D8684CC5422457E98788C948423C841342758AD8259784C6831822C4248524C4415D5A88191184449E18104C535583F8F022D4282603425312C516563244D8159E21A0A8A7821A42855D1445A88C3
-:80A00000C42125D888D84C9282AD2645338825D62858488245B642A42841A12F48B84142E8B2A288B7C86445E4481128581484442F8458242934228D144E44BC18F2E45914144E243445F44822842558811551624614322115744EF9248A2018562E453444644ECA85A24415FC2448C12B2C45D81ABC62C88825CE865FE818D5244874888B
-:80A0800054114929068B4425C82215B228086427C28D98859E84C78250C45FD20F1110018400008880088880088880080020080020180400001400100221B022012110022001008002F06E8F347F44E49642D543E474F42321BF94F428286F44F421A11F3CFCA3A11F5E84F8CAE2DF3AFAC4426D866F6CEC2A1AF2E8EC45FC424AA5F84DB2
-:80A100004725EAA6D6A2F8C2CAA7886EE22F23334A4BA2821FBC7885E44A7E83F321234A7414F247574F63B1444452EA45F3888BEF21F1DEDAAFE2F292922FA2F29E9C8F84F4848C27A14F8944F341426F52465547AF54B422F24A4CCFA2B242F425A57F3CFC23233F34CE86AFECFC2D2F4BC44D842BCC4F4A5A228FCE5E444F65D5EEF812
-:80A180004DC765FA68EA27A8AFA4D4CCF861E3AFE3734AF82E2C2B884BC84F68E86A7A8BF32D2F9F34741EF257474F63F1484625722A5A359FB85A2E6FACFC323E2F89F9242CCFE8F84248CF88F8121ADD97246F54A4625554438F545457FF34B428B242E42AF242C6214A3684CF245CB77F747486F646C42E282BCCAFCEFEC4C4CFE4F551
-:80A200004ACADFD45CB1EFA6F6464CCFE4748AFA46CDEFC1F54E4C4F8A22F885C11B883F5AFA838175E5647417F541516F42E265B542D4885216EF58F81C16EFEDFD2E2EEFA9F92A2AEF88F82E2C4FC8D8ECF158F5244E436F42524575F46A657F52F24F47DF22F246445F7AF2E3673F1AFA41415758DFECF4A7A77F567684F6CE4CCFC26C
-:80A28000B2C6FCEAEC4F4CFC4C5EAFA4FC4F4D75FFEE6E6FE4F4CCCECD8ECFF4FC1A5CEFC4FCA4AC8AF885815F78F8A3A7BF98788FFD494CDF79F853412B228B558F24D48A5217EFDA586CEFEDFD3E3ECFA9F92E2EEF8CFC6E6CCFA8D8ECF169D81006211006450300344002748464502800828504851412088161814181690829086D81CD
-:80A30000204298848449084008404548464824514840043F670782004400A140410411002440011004824C085083446100100200003081214011010000005022841884218440B8460F3CF4112487321F417248F11124A3D441F24A121D24AB9419B24A19B54A3924AF1439242F547B24D81AF924481CF9244A1CFA244A1E214FA264194FB1
-:80A38000A2E459C24A9E24ACF491242CF4912485F3912487241F49724AF28124AF24F18124AF24B981F24A9255B84A3924AB9443B242F9244829F924484AFB244A1F3B052E421E6C8F22E44132681F41346A1D64AB121D648F42D941B44A9B65A99944ADB12AD452FB24482F143B264EB16FA2E114F3248A5E214FA2EC1D7224EA1DC24B68
-:80A40000C6C51A17C92CE4C9D63874913448174983F4816483F6816485B481E6443B858B3443BA4AB1A4B442FB84482B94678A4AFBA658CFF80484000000200240040000000010021880080000004008000000000080020000005012142F694921382214441410424801004224801203402208002144104A14485428444A030000405424D7
-:80A48000446013480014844002000022447FB6016048004005A2258402002054424841216302430245082440020058841004401802001481434408C608485082C48884884814811E2E403244114140042C120541A04220342611445022244170181432842552284181411781815A524860848502401414031F46110C62304800E1826028A3
-:80A50000C02127E11FC80280024011116288800200100223042143822802000000002C44040000000044812004891801100A400848009B42000000100200000000000000000000000000000000000000000000000000F0B4DC000000000090482242484A080088004141000000002002212001000040118408828008202208822008EF4802
-:80A5800001000040020010282204480080081044040000000028100200000010118408888008202208888008AEB9000000000080042024080000000000000000000018000000000000000000000076010000000010020000001860C144400800000081000000000040040000000080180840081F57050021001410010000000000000044F2
-:80A600002C0400C02400214200002141140010020088422904000048006F6F012100000012000010022301004200400100214904801108006041000010080000002008004440F4AEC410022100001C410200100229011220014048642400214844811880040012214414008421000042488008004C44087F8C090000100100000000000025
-:80A680004D484400110000442240120800100400400400008224008048080041AF39040000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F8004000000400428000000002180018800004001400848000000004480020000D5
-:80A70000001002183F5F0B0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000000000000000000000000000000000000000009A
-:80A78000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000000000000000000000000FB
-:80A800000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000000000040088008000000000000000000008004000000000000000000DF36030011400400000000000000000000240044008E
-:80A88000100240420400201404000000000000003E2600440000004100420000001002140000008041480440020000200260840014120088210000C4F0C23D0044004100000000000000214001000021201108104202100600284841420080018018020040081FF30C001400001004800400000000000000004110040000000000400840B8
-:80A90000010000000044F01CF400100400464154282024210400420000228004118140058100224400006542440100260281008488431828180800EFDE0246051B122144433214008414230423141402814811811048542C401615724421F25824D048011440418141D8248154244288121448D42B48C4814358482B8410048FDB03116057
-:80A980001321005C11444A4822410200408804804208811110165614284430381001143445426841214148881284482482C4888286120800DF470A46044440C42442003041484248442142001181004914145284111148841E684044040020411481440228211450498384185C48C1C840041FA304D021048100415082191489014100C092
-:80AA0000210083C214144132100118901400169C14224881322504F0423400A0124614D648E2449282124948048504215F56082AD1820400280028A0125052C0210084000022203128400200140028E0410414481140089012244442288054848002424123F4546C004C21611100001004140084121245121108844D181441441222001119
-:80AA800040140200001004004440A181000020010084649F7C052A8181D118012241608259E482C1131441841260321160824371314481722844410250144056482092148419225414D0C20320C1134A9144459824235C84496142904845C8448F2F0C2415140200002140010014805184400884814144202122011200181E240020110647
-:80AB000080044421282C0880041288004140F22B76003784441C42CC261241448124241810121554144190111C2241125882A01270225882185022100218254218082605261401C414A20000442100E03E07842400182142316011001044041221101C428C02404248C821400112108102260100100830241912421808812604000043F104
-:80AB800014DF4084024141400100122140011244400144481044428461644448164C3A24896141244911C86824112518081914022221100810C4280089E284F2BF8B80114C8201334104214421284180013122210040410880044001004410952121160430447041081342042C02100200302C0017563082165618422281182816C12420BF
-:80AC00000200401115012180322861564662412C424452411800223021302400201388180200800A8C02608440F1E523601240C41200212141601210C226484110D2481238188441C01881448C029024841C022400C425439828812400818486011143120821B022082F2428F22ED2002210E2148102001223458435125512110210011C24
-:80AC8000420840311840280212451802100249024140441406148181100228822614982230446FC90346541240136891400400112225210152A041224141441A4411114532184508004428112C4314482401D02186828412112444220222848100247F41098C01484113425414113D421113C2148003290128A14C418171120918C0C248CC
-:80AD0000441562112D449489514345488504502210413C49212514922261214141418012742218D84B0741CF59544D47144E1E121D4344140035921469F11116D024E11242485686D5F8112D87E385D2A2D4DAF11448E5D848D26FD1C1F41A28C450547912722158882D228954D42A41DD68F229221554148C7224D2883224A885B82A82DC
-:80AD800046BB64B46442D241D621021F423119FD2C25D433D242D171A12322272411D0477152516667164792164105484559411E4225C226172426197224B61C5155A013173289028791253C21AD42DD222511D21A4A5A2221214C42DC644248A4C2ECF171A3E0217122582227216F12E232B114117445F214283F34A1213216374616539E
-:80AE000041119D1483D141A127CB1210721C31448F463331679212CB111825D222F3232274CD3C6F64D1664204815FD4B262B46148411A7AC114E842086322C282C7828992284F150970220114C011400141202241210180023011281200800180921180011430242002415014603260220040022840064C024E249B26343F74E4C753A8A7
-:80AE80002CF44F4EEF43F313122F32B25AF52A262F35D433F252466D144A56544F75F526267FE5F5222AA781C78243F1746E75F54D5FBD4A2F26F61A1ABFB2D2FDF16A72AFA1F11A1A2F6252651F37D3DDD1D9F62C2E8F6151CCC5BE5325F6CBE88D2BAE8755F5496DEFC2F2A8AC87A2AF88F82C2E6F4AAA664F4AFA4446AFB743F2535726
-:80AF00004F6155D945F44F6FFD2F37217F72B258F52A336F7757332F67F616147F1454776F5554666F65F52727E7A1EFC23214AFA657B9DFFCFC595B6FC6FD3E1AA5DFEEF17B7BA7A1A5FA2B2F7D263F91D58CD391F62A288FA3534CD5FF737A4FE6F6E3E58D2BAF385A759FD4F42E2E8FC87A28FEAA8C4F62F286842B464FC8F83C1CA7F0
-:80AF8000AF343F75F53375857E15F77B6EFFF3F313122F32F25F57FF62F343573D332B755D155A54767F35F527223FA5F5263CDF91F12E18CF93F36C7CD5F54DCFFFA5F566764F23F3272FFD1FEFF6F7343ECFE1F1232B75F63372FFE3F12B2FEFE2F21A1EE554FDBB753F16F6CBEEAFB2E2385A573F74F426248FCAFA2426EFA87A2AFA6D
-:80B00000A6846FC6F6A4ACCFE6F5EBB2247F77F73737B5FF1517BFB7F63F3F37617F72F25F57FF72F363753F32B356F715157F55F417173F35F423223F27F7273D5F11F12E3CDFF1F16C6ED5FF4DCFFFF5F5EE7EEFA3F32A2FFFF3F37E7BEFE3721EFE272F7D26BF73F31E3E3F74F22E2C8FE353CE95FB7B7A6FA6F6E3E3BFB2F28A83E5B1
-:80B08000F64A4EEFE2F288AC4762EFAA782AFAA684CFC6F6C4CC8F86F5E875B024010014D03401141226220112541264116C32118113110885141318524831282A0141702401234238228440782403264208008428848D2200B048021F850B8603452111C22C21502411002400501200844426481404611280024465B818120221D01401D9
-:80B10000221006814051815081A57724D8480264848D2440541497AFF022521F41722AF3112C87141F41F24A111D64EF14D1C1B26AB911B24A3915AF143924AF1439242F147B35F842914F83C4B14FA2C4814FA264115FA2651D1FA2E459C25A9E24ACF591244F32F5912487221F49B248F19124E7161F49F66A131D24AF369921AB945370
-:80B18000F84A9243B24A39242F247B24D842F924484EB44FA2F4D6BAB022C14C2F32654185C164AF16E14174229141AF42A941ADB54B61AD814B42AF14B914F442A15F81B442FA16482F14DAA5A5B44FA2EC14F8251AC21D5ADE24BCE558E2A265C84FB2B591F4284286F44C118E24EF36A16887328E448F76F181648BB45B28AF24B9A403
-:80B20000F4489243E824638A2F447982F842B48E1A6FB60B8400000000000000000000100200880000000026080000000000000000000000A7C70031601190211164502100811584140424114184418422802214140110883444224D1250492551425D124528440820884828C4242544024112224426D49E03B0A4C111254432142002837C
-:80B28000827141022110321149227121C8112011084113012C41B82D014342321422188001001361241534DA19B411545281189084888122C3449148AF710DF042181216042D25602270211A442152434225941128199128344183210343B81144D421011B1291669444AB21382B14456B116115429C418C44959E13B86151854243134674
-:80B300002648EC216286414783BF840BD041421301121444001848A100004121518901400822004058480040140400604120410242482C0881008200100448CFB80320412111024682622240024A2101844614D118311114108844542140084850240044221002004501006081A041208162888182881289A2422F7C4432451016548160DE
-:80B3800041501416180814463A4571404C7448046044842444CC016D224141233224164642941422813D248501E021E219E48824240C47284C78C8048821624441445FF144C2451221165418C01422641018028427146509819045111044084410D862420426022C01230240C2251518012C9381890888801876288428084A024CA224AEE0
-:80B400001800100521602490218C01E014A14141604451974189013048486414A741004845426442444444499122840041004A21C4584252418A814C58288888494118F496FBC0248C146D1111262511D41894411C12614181A98211129C118126384822211249F24314212C0414B02441A4414A1252824022220116115A42190180071AA6
-:80B48000C828D042211222052BEF24C04F000081238242341242444C9124000028404451321A1208001052182184248148137214A141418002221F21C4284414C9E24A4458629810A6845022BFAE0811002125084124800112210084122244241280048100893226104414185212100428804158A43054281052229018484245280260824F
-:80B5000081DF1442124155483D1284471243D12462826C8463152361A18410C22419C1282363C42A449228891266826F22046511B82641C8435042114712484342D8A432115E2C2E51873240915E874152E443783234228A4448FA1228302450124001850246311114004144168841480481401101415611020041816522A142302A122C9B
-:80B58000218101245022122400AAD428A842890144A034F05D8C001002250845489414B041B149011814406811448C512848815022411812A9642100100420124431484C224544C3888824E021A881101448241112544847217F270B2140C14830141C02A49028004002412225082521022240BA24649490412240041A0211214022011179
-:80B600008CC144E119441893282A840100AC0848F07A3F00214163011004006184411422641951414C419418448D1100400541811416A84181E112219321210151422116084211414410423C1A40A4121289F2283B004591428511621228812111282F24120189410130211C02846342E892012E4A50812232802234410024445021814000
-:80B6800091824A118891A2904A8C8401438341880477FA1413881548211404118081048C821151824222250929040070280489944111502222001502001420844204C6181242648800004018486411DF3F05108A14420112324B1441298121C12A58122911A2146118538141824122C12260E112536211493411441646242142248101224B
-:80B7000000C0221074A20444410081F0989930465411C014165121409221115421108842080045010010020021814008458202503448B5522824830118E08401A0124824001A22840BFFC30645010047813052812110081009810010014A02234321016118424421842848C0411991221189544149051C41C231191A682130183888302499
-:80B780001880D48B0C20C244361401846184185042198402004124814415784261848C21C4884014724168C44D418721267224891248C2282810835424504880924489210212261862422942D4B4076D472B2955D29A452D9227ACC316182F44B12211CE181F13D1B2D14851222F4251422D1497C25B12A78126D22CA4439724257D12F7EC
-:80B80000721C15E883F448441E252C626345A121817147412F715311AFA1C2CE1A443B16CC8AF2141487A165C812B6E481D558CC247F264711514D85149118513E1C701ED83232391A9411971123147841F8212546FA1D2B1E494B74842A4691121D24181F25D488D729D264564426E2A2511525D12AD143A14658BF948564C11F48154277
-:80B88000B36A68981AE122E182021A48D88252447E288F21F1B55324603425F1142673E5517148534F421741BC76496B1650A826341243711D01D125715841528B26FC4E1A6F82143C4114A3B148D384B1477432B44172115C343FB1F2282F2453F44A1249B8D8F14B281B116C78CEF25E48ABC42E144CF13424C9B12A921449A429004001
-:80B900008801180050240000400200240011100221442110024120223422008422408104004084840200890228009F6B41F343433FA7533BBF32F65A49DD1B7F447425B542F42F3CCF84F449519FC75539BF94F62D29FF94F42C3B2F14D41BF1414B6E688F94F4396995FB4C78ED488F17F6585ADFD57447F56C666744CFC57466F44424C2
-:80B98000457F11F1296DDF76F65E442761CFC6D7EDF4AFF7AF8DFD6939FED76FE9F9D6BEEFE7B192F96C6EEFE9D8EEF1261A8F86B598795CE23141F342433F335733AFA2F35A48DFF1F157515F51F14242BFB2736AFA694BBFD4D6B9F14B4BFF93F34D498D184E417D1575FD12198F94D4B9559BCFACFC4A487EEBE5DABB7447F565676F26
-:80BA000042F61C4EC7E646F6642755F76E6E4F46F646652F34F47C7D9D4ADFF2FEDEDC8F96E73DFF961EEF69796EBEB6F96C6E6F68F81636EFE2F16E5CCFCB59EC5B4C341F34F4337695F23923BF95F415177FF5F43D1FCFC4F42F2BAFC4F44B59BF957719F34B499F12F24B49342F14F41A116F94F4474C8F94D49955A8CBE4EF24F47A39
-:80BA80007BAFB5F55D6D7F74F27E7B6F46F24C6C6FC2F215374D47D7D1FFD2F27F77AFA1F55A1CDFC7F74D4EFFFBFFDADC1F97E73DFF8E9EEFACF8763EAFADFD6E6EEFE9F93E1CCFC3F16A588F89FB4C1E2F2147F341437F6353AFAFA3F35A485F71F15757FFF1F14E4EFFB3F34A4A9FB4F44F498FB1F14B4BAFA2F24A4A65F34A49EFC1E1
-:80BB000051D6DFD4F44C4D1D4BA5FA4ECAEFA4F4FE7FEF74F44A4A77646F76F66664CF24F6676E3F76F62567D5FF6F2FCF76F62B6BAFF4F47D7DDFE4F4BFEFAFCDFD79792F1DFD8E9EAFACF8662ECF2EFF6A6E2F68F93E3CCFC3F16E4CCF8B5BECEF8B041400D01441E822012460324041480364118D2270480489129128214C1211189669
-:80BB8000282242224001250145415834165814864842482341464826410689223148D0850682114100114004844200004011044091414008A48148812485D58494284014C224418425C2240018304284608844228B1400431132245014A7DFC0521F4152281F41B268F11124AB141D24EF24D141B24AD981B24A19F54A9243F24A9143F251
-:80BC0000429347822DB15F82C4914FA2C4817FA264116FA2641D2FA264596D4A9E242E4A1F49E222F49124A5F2912483F6916CA3F48164AF14D141B24A9921AB9451AF543924ABB443B24279A498B24F8284FB244A3EC3F0241A1D64AF22F5112CAF26F111642F16E1C1766EB311F46A841781ADA65B614E824F83E414FB14482F34FB1443
-:80BC8000482DA13F83B442DB84E114DB8788FA265ACE252D18DE256D1B9E212FA2F5D12C2E1A1F49F42A5217492AF1814CAB128E44AF12E141F46A851749A99264AD954B48AB3443B8423BA42BB467882B344FA8F53BF4400800000000400400000000008001880000000000480000000000000000001002EB9E0050838312B118020019E1
-:80BD00008102408414140281B400302820024480721204004002151841421F08401108189400F044281A6C220088289F314E012B3820415221414C1102290183D4181498428185A421401104704368249110618442C85216E2540218C03815082611354AAC02139848168218140280E8412C611181BF980C245E22943214A3031821133163
-:80BD8000363028548CD4624458488B1285522100361A295A83108162411B48809129B04251181C5118E5D28142031512143128244004C9A448A86DD218981AF29E91000084101146040020C44800001001410042481004AC240452244604008C02114034488C1228A814178188102282010040FAF29C0000112444211301684602241281F1
-:80BE00000000002242418141444782898201248120410200494108484732304A117011582200822122838404F04BEB24468642042230212F2264426D192218394831849445185A848D412213140C406186D0213429261428B244011B1240115481711D3844608880F18112B081F48816161228388241124C6684DF28042D444014814202E1
-:80BE800042C04442213414861451848481890413664440088441A42E18445082002E114041941CE561114445612881C083198148048C8808446044487F8D08242200244413F2132243B21B226221881881841042142102844150144B4283E21214214228E2412401210011C028482C1228941118842D438CD9224142223A481A241278D104
-:80BF0000064028912411224CA4122982912419124182028494B04821022A541212428C44042784121263F21824255448004B1220C22485C4242120D44268248C9228224A0212820064FB2B40C448444048014110D8818181014E2820A121542211301421431301622150A1856124E0241288153A82104208102814E9C411BA1402430512AC
-:80BF8000240010FAFCCA7021425381142344046014410040088502250400407848141248042E4412224604004A424441311244001661420000C01288A5B48414084444F0CFD61413521284D083645249B4148214C4181218A4428181CC12B428240226183C2284CC64264446C81A85E62234182D664604A57116235142106C518382243426
-:80C000005AA5C21438A2258C69211004F076C710046D111D240000271216685219420181D0223111141214E0449141441904414A92121C82453424206241A02880322C6022445081884881842F44A142464488084445F84335C02216082121840012248D41165848184280428841023111002001261111618122261804844D18181C0158A1
-:80C08000602281203244902129021A8822022248223FF808141C12A42448122C818202C027401AA112312602004A9142844C061141852222844681242241048525922443822144628410E124A28189B582712882D4E28494842424AF580C464412010010210212008112441E480028002A81D41482244282314800181420040015082121D8
-:80C10000101414514240280861200100127F5C0D1144381D12141C924325021C9121211CC7111121D0487464114171249942414826092E48481226444234143341CC112624C244167128F44814A125014624D81622140660484849098E2443F82283A04A1124800448241400C01248C0115A7222011008200112C0521302802401281311AE
-:80C180004441186821502420041282104288480A10822404CF4507248386C4218082022C8112B261410C2006408214E281123426848D644D18288122242A8122420C13C54812608452604285611284802204284998682388141428D43309000043B14181314410018148244210041884190400004814164279440849D482C4422A24024971
-:80C200002226022213646283E44862915299FA14420040488808248F74040039021902338201218B24002581714204562592723830312511118172180424161218D824C1121140110185414A3114121082C2110012224C28084084E853078C014800000080C144144A021552B4D01604463844214884D0854C01129C021C041149022A0430
-:80C280002004891428B42161D146C2241288842116A82183181842FC3F8FC0118E3A121D2216A4312661241815F178311C7351D19B85C4449FA1711A4C6193426F12F2251249041B2287444F36A2324E1285B22836481F21B21743F454282E241E3D812A7714F4185A784F148612E14CE111B18222A1122AB22AE8217358A828416DE88FD5
-:80C300002A0D6A125B132A1452911F217512D521125283B7A68D1452271546F222654E615F62B142D2827141E41434211F44F644484F9155C99D412155ED8191164F4455381B6544C5392D1FD276597A68FA4324757213F66A478F24B121F447441F25DCE23D182FA168E42EC441C826CC142F6D44D1617464F124222D111F1664262B24F2
-:80C380002223C332481AD4A446D221F13731437425B252C6429D618F81A521A745C79287111B221A7512FA39297A36423E6687822E446F12D1119111A0144591724187C685D881E193DA3C48F22819CB2C2F28788CB48477CAB8825CC4CA64282FD10C12211221CC044C04000000000010080042200442209412420041424302410030240F
-:80C400003024009A0400402401224422425EDAF034265FF1B134E152F43E3CDFE3B313D375F313133F21714BFA5A5AAF43F119113F15F71474EF91F32D255F36F563733F13F314141F15F175255F56F44C5C1E184FC1F1555C4E5BCFE4F55A526FE5F37A7CBF57F771651F937119F815511F33F673733F53F671399FD7F75A5D2F27F6524D
-:80C4800062AFC2F4C5D7BF8DFF6664AF82B296D18EF5B8788F89FDACE8CF8AFA3C2CEF8D054F67F6464F4F12F231759F82F2797B2F21F345771F33F33313EFE5F15B3BAF67F311133F35F51527EFD5F76D6D7F76F76173BF93F31E1C4F51F537255F56F6D8DC944D855FD5E597F56D5D9FB5F5567EAFF7F577771B571F977719E881F175C4
-:80C50000667F77F33B7B2F87F23B7DDFF5F77B66BF2DFF5B786F49FDDBD84F66FF2A22EF41F14458EFCAF7C6DEEFCCB884F8EEBC3FBB4AF226165D476F22E272F27A72BF21F347641F31F313133F21F1531E3F24B15AF311113F15F41434EFD1F37D3F7F77F74B7B3F93D757F17D5DDFD6F7654CCFC4AC17ACF175564FF5F54C5EEFF1F585
-:80C580005E2EEFC5F5131D1F57F534758FC1F1151DDFF7F57E541F77F77F7FFFD5F57E752F67D629F3D8F85F7DF91F5CEFCEFEAEAC6BBAEFC9FD9C5CCFCBF78EC8CFCCFC6CDE172E343F36D733F637333F71F36F66BF35F646462F25F532323F33F1783C9F95F35C321E133F35F53537EFD5F77D3E7F73F74B7BAF87F33D3DCFF7F56D6DF2
-:80C600005B628FC77E31E13AF2371F4FF1F17F5FEFD5F55C5CDFE1F557775F57F73D75DFC1F1351C5F67F57E74DFF5F17E4CBFD5F77D7FBF25F4D9D29F8DFD97D5FFC5F554DEEF68F88EB6EFCDFDDE5E6FCF7FCEFCA466CFE6BC7203471240010024402341C248141280C42619C42210184114514850481842210081214214601260328CE0
-:80C68000C4121E481412268244814421C82286482209102878560682442722001A02120040A81413011270144882C4214F81044B42148C448104200412484E244112811644021C412444048C04824A218211244438488285047ECCC0521F41D22AF11124AF14F11164A7141D64AB141D24AF149921AF2419F54A9253F24A9143F2429147E3
-:80C70000832D914F82E414F9244A4E814FA264155FA2641D1FA275D8C54A9E244D4A1F4DD226F59124C5F2912483F49124E3F48124EF24D1C1F24A911B28AF249945AF243924AB9443F24294478229FB24484CFB244ADF1C05581D6CA985D232E181762A9141AB1644AF5619B14A9B258B9453B24839242F1439342D834D482F14FB241210
-:80C780004E914D8A5EA155EA4C92118F4DF2221B9E2549F4C1284F22F19148CD421B2983F49124E33681EF2641F848951B29AD265D684E9243B24829F342A44598B22D482F44DBA4F5B75B4008480000000044800200000010021880080000140084000000000000280000000025413185902410041B414A12114108902100812E148C51DC
-:80C80000481008812006100129041D164622123812241485C1243942844482544123A41480184204868C8864464822F0785520244A827128420968311C04481B418004423012221B250040011838124A42880849C8224983318419211C0114008221150864B0220869616884121CA148EEDE2086021A643448111312491124A252C04838A2
-:80C88000816460821B4281301220882192522AC41DC6827288311825B443619816220C40914264498C44298812328286941446C24C403112BF3407415024B028D1810248214890411400414A41880118002A440114180010024582A21210D4416212152404104122015042412884293884281A84A348DF6706204183522828624890418077
-:80C90000048480041189024241463124004219440160220080081412260114121C2118220819048C4462884614840100FF9706350222811419C4111CA261863238A18C4111B821E181C45C90688B211122111014189228AB842A348232490811240042612336492CF4481168480082888848A018869498488A76D34C02C0218C021426A134
-:80C9800024284822481214A016841684824618849224008044D9828C542200C0810000212964151C548242000084888688A418418C082AF457874031122440AB424A112195812D182518181818A114991418A81611464101418C5412222022AA1286040031181B244126118871D122220C1384A84890424144921848828E6524C048E011CB
-:80CA00000800259841808124418282818221081D882848A322011812880010688118824D1881142534844001884A2242048A6248304280A82898122B849FB34D41C44844232214D284851102503888CAA1218184002861181129A441880025022114494414149C42214189D432E1C4025C142C1848044A02402C88D28204D042F2F671006F
-:80CA80002C119884181800814281290100B0122466411A2422240200350411424818308219040018282048080018800C2456289854108402F0BBB114404238264A91121E4429C148002C81C8D212A4168822897783AC14198486042961211D8242290445426C14412D12701443D836C1CC841D444468002044D4A2948C182AA84838A08446
-:80CB0000BFE503611241130110485812488D121D481800124AA24144802282420840050080314898168448140843262812018688E881028A84288881E44408AD24821843F21FC38013C12224282021C24866E124223228A1008C912288002280222202C02823A248188244200144C19082802446A22440840424490828242A2404F044F946
-:80CB8000502222C03158C04212602110B11274114211328189012A18817982011190832420341940B148C184284B818AC5131A44A248134301502819553481840088442011022F830A488002A98202182182280018C8224818118818C8622002202209425260114810A928881211824112200810A2844150244848C840022F430280010046
-:80CC00008714841324217491384286213418464272C8D18224652A10A241211C4432C11D4210C488188821485024100322881CD2128AF1288489888C9182422908294982989243F2D1B22482A4004002222522824831C21C0821822812A0841218888A1428C1128248248D6248806921400882194485883141421149025D2848A23086804D
-:80CC800008A024B78F208184A4248022032A01008480332122241B68281422204118A2842213C1888D81A081848004484200811F828184026C4448824808890400A086F0416F4028013018508125581840280A2119389812001481460839042800221E21321044042548D221318810C2424482183C624390181A84C1444400184981014F3D
-:80CD00003B05190431211033214213022D51800121341CC28189121A0213FA228324882334115061288684E428521460451004461406648A54C18A04654146448844064170447182F523C4409822899411A01410499281404481123858830410210423041413E4129842428200142964249C388148137144213821101294122584C11814C5
-:80CD80005829118A2111221442F2BB775022EAA2223B328F82B611B22193388B228E211BA2A8872898481F23961332AE231CBA91E483AA461F2AE98236414E232B6A1B5C4F84FE6C8143817839F8428229CD848E22F1271964826D116F18F5A2133CF6223265D1D2919127A4CF2E48145222CE6443E15C85F644CDA0522711815691128712
-:80CE00001687815E411D581F243C8827263F147452D189B148F8D86B2B8C3F84658E46A9181F3839421CC82139E425F13223321AA5E856B4C6B91144B184F115848E911D12484A7E1134211F44BE5FA1883AB11D6819C82D14AF24AC385A99124A693123FA76782456D1285132241682D43274237A1233322FB555111EB815FAB2832D19A8
-:80CE80002AD8B9938819B122B84284E21156232FAA245111897883F3812A8FA4A1586C7484642797358961E54B443F1C782FB5A8EE2502A29F84F4884E4E42EFE6F41C144845D8644C8498422A58643F5F041002218C84810448C048E0880448A048A0418902811200811800818002284989028C1284024849086088A048448244B6482435
-:80CF00000BB22048F4D3F3141F25F7713A9FA1F113511F1159322B238F33F33A389F9BF33323AFA1F13818AF89A9B9265223AF2AFAA2B13573437121F14151DAB4C3FC68791F17E426FE787A2DE48F47E74FFE9E9EAF89FB64671F3EF4172F35F1B5E51F5BFBA7A56CF623263F74F546472F85F7626B3752CD19ED3A6FE2568263F24462C7
-:80CF80006F24B656D644B164F7F4E6AF7D41F351723FA3F7191A3F31F1511137343B271F17F37B3ABF97F37747AFA9F95A7CAD1AAFADF9E8839F14F5A8B26E79BFB3F3D351BF96F5811127313F38F8F1E31F17E124F8BAFB2F69FFF2F51F5DFDBEBEAFFDFB7E3F1F1FF455EF3FF3F2BDFF1F53F7A7272F62762FFCC1C77F57FF73FC6EEBB4
-:80D000001DC3CD47FFBBFB2E3E6BFE6F42F4C6E26F24B6D6FA26344BDC6F6EFBBDD7343F27F32363BFB1B132F3DB592F37F772522F37B552F5D9D93F6FFF43422F8DFF5B589F8DFD68423BCC8F8EEC8FFDFBFB2F1FFFEBC9DAAD7E3B889FB6FE73615E62BFB1F7367C5F57E75DFDD6D6EF8BFCF4DF5F7DF696D67F3BFBB5B51F55F1C6C417
-:80D080004F66F6E6A63F74F5D6D7AFCFFBF2FB3F1DFBC585EFE8F8AEBEAFEBFB9E964F6EFCC6C66F4FFC86844BEE4F6CFF241A341F27F32B239FB1F12212BF95F17B1B37253F14F35312BF9DFBF3F73F38FAD7D9BFB1F1DB9AAF3CF8CBC98F8BE995FD3BBB2BDD9F95ED29C9733F38F869EB3F17E725F39BFB6FE9FFD775FEB56F65FDFFB1
-:80D10000DE6FFFFDD565DF79FD9F1FDFE9F951557F6CFC62E6FFCEFAC1D77F77F93BB8AFB7FF43C35F74F4BF9BED1CEFE9F91E1E6B8A6F61F1F6D44F42F6C4D24F6EFA27D8800118C0116022842296682212148234122411281329348100422014A32439B84832224223226412F02281F02281482E83123448241A44214143C8228082A434
-:80D1800024A024F063CEB0220421304A001A041D484A412844A814C012484A18E11483242408C02124822A01292809460412410000154483843881814328044C9844889082824222BFE8082D421F41522A1F41324A1FC1764AD141F64A131D64AB941F88F64A925D48AB945B4AAF14B924F442914F82D412FB24481CF9254A1CF8264A16A1
-:80D20000F1244A96E1A26459ACE549D2A4F491242DC21F49522C1F49F248121F49324E1F48B64AF98124AF16B981F24A925B48AF4439A4AF4439A42F4479A498924F8A84F9244AFDEBD012F4116CAF12F4112C27264CB64AC164A9D141D648F9816C2B3459A6945B4A29B334F4428349D432BB34D412FA2558B84F22CC814FA265192E4282
-:80D2800096C55B9E2549D481C2D21FC9D624B491B248F19124C11D68AB968E2427561788ADB41B688F44217A42648A2744478A25F2A44829E8A2F531AA0082000000004004000000001002188008000014008480040000000080020000005012145FD60210022044A334008A0733214811022901904211800240180880422412A414142CF4
-:80D3000002100141E0310419216C1820C1C24C8108448284004124144321482691168C1194211A042B4880014240088F1904842A24213E814870229288428B12242A38241A021D32908458982E48882A1C822192410024402C0882482E85F0B9A214204C542242872112281228433C113A084810085623142124B112348140E22288A842FA
-:80D380002A21C2844E2585012D1121492CC4944A32D16839B144893A21E0286421824149088388641223F1BFA9D0240120911411431621A449250210110229018908812228A2C04881100885448282A1212228108101819082001142121004842008C084414F9E01250225810220922180441141010024365812821482460114004001A066
-:80D40000824460454064120020D2C12484948A70422118388488482B24224220043F144141312118548CC5614E13F0124445E229944884D085B4888423044D114B4228282227221C426222243022440023821AD142C13213C2131C41E212298A6211602442202229286C49882A28D61D0F111C12D114B2189441662142344423CC498501DA
-:80D48000874442322F26015C8122AA422C8232224002808208248048511210425112C71413EC241A6811424827844CA8825682AC484C292884F465C71421212901208211335260310040318810488198454001141124221425024342044E3428442E14321C8221032B21A082501288002028222204A8282FCA07D0A401A025258102D01209
-:80D50000410400A0122308400488844A0800502484510010A22184288C88A2142C868274320440C6482820120220082223B4A80D648C043342018C44C84941C4424082860834114A220918211A88381210027048911286C428480045415824445419192888DA4288A8244423D8480144004C58228F7C04180016064141000000841068844C
-:80D580004A61410020048054418112628800184220210112821881290212400820047084283128898884F84CE9901445025C9221318D44608445410810082C698C4E1260461A0889818C287412447812B628348589044423822481D21C68814F246941E7122BC1CC216922899842C04423123C8820088286F2B3A540224122B142412442C3
-:80D60000482301480023648210C1150082420040010040228129A412800122200626830282608842C082124443912886E84482F4B3971041280210118122121281080045C8848384821934452A142102904182482C22280A4CA421228200272A30A2482B82801814221A022B281A08830280F1F3164004456834460C2608942CA148232248
-:80D68000C822828822193218481B181269011989C481008E341C444261488224174825D248984430842018884421120881233848C9642220124CF2784680218161211880210114C04258A042A82B414446110450414C0428482411860122604A60466042192202E213240A238A227CC10280026902284C8482F47958704428522426182442
-:80D700008544826482004414160428252288022621382844008E2142812D84890411294208C018200110420824C02842224241813088888F28A1829F6D0AC6810412003400401182288418E448044AF84488414CA42480C24100884242822A28244C02822824894A9288402238288602248824004200C2F05BE180A21248804281822404F9
-:80D7800028828012782282C14200A212108281A182702242242801800210010000200A8654142028C6848400889016421F810700140090441094E310219482428C44D8810B1C214428412124021280522400124129082190C34240D1238484240460148190844282184100AF7B074011420110C4234124A8681C4183814402141C32612205
-:80D800001CA8431B848811E0120431498404251A74880492301442434201646014204104288824308242A2AF95068421482322E6834462840049442292A21002490880211862484911893A2824110045110A48111E4100AC04460848D0C104CE22801842024842222542F294D7B04536812137222A2671411253122D2119CC4245B181E819
-:80D880002CF86E6C4F2862288F18DC94E354FC211C5D8243CBC11AE21236811F247C2341914E4C68C12F48F8264617224486A248ADE461ADE4216A56229D4A4594CACAF94EA22165329CB082A184882AFA66F2146432158457441C7524E4A4B244F44882472E19F8E212142A6128AF46DC54345122595214DE7146D54462881146F382215E
-:80D90000CDB46F642834E229FC6442C22555122F9133449A816CB84A7C88BAC4EC1AE2184E19638A8AE482E6846824AC3AA4CFC814F2A79260114E3847A3871127851F84E291A652263E312D212B2E1A7C42B21E84A811BF869B221F4DAC1BDA66429936E11F16043E2822CE421B689A8AF285228982F384881BB8CB821D2266EA2C3261DC
-:80D980001F389282284A7841622C2C064F22F888842F42843E684CE227E12CF58C2614441844AB12448D114489C1442E118220011608842884002008820012A02141122212432221028B92F02812702802872230285028D028028D26842886C82484286F244EE162F62727C5F82F498FC6F46C654D2855FD1114E7935AF4137115F4D351EA
-:80DA00004D262FA2BCBEFFD878DF51F1745D4F41FD79E91F16E616AE268F82E315F779DB3F3DFDD2A4DE575E566F6DFDCA884D124F2C7996D4E4517F3FD5F1C48E8FCDFDCDC69F8CEC8CF848C8AB8CAFCEFC414B1F99FBDCD68F85E5E4B44858282F85F55C58CBD5AB44CF9B0345F2737F15F53555CF84F47874CCF2113DFF81F1F6C62B56
-:80DA8000453F11F967647F75F54262EF6EFCF6D45AF75F554FD57515F77BF91F17F772F15F12F2A9A94E419FB4FCD3D33F7DFE46471F74F4F6F6AFBDF9A2B24F6CFB5F6C8D1A3FB2F6DB9DCF4EFAD8545FCEF6C9C28BEE8F4CFCE3E8ABEC9F14F499994FCFFFDC548B664E888FAAB87AF5767C4F85F56878FF9C4CF115523F73E761F33352
-:80DB000033DF13F1717D1F41F339355B64BF92F3E1D63F3BB391FB93915FD9F9B29AABDFDFDFFFB59DCF1FA7FDFF96FEC9E9CF96BFE4FE28A84E419FB6F6DAEBEFCEF7ECCF8FD6FEE6E4AFCFFB242E4F67F2B6E62F22FBB3BB3F57F3FEF6AF4BFBE7EFBF1EFEEAE2AF6EFEE3EABB6CBF34F413916FEBBB3AF73E766FA7FB2222ABBF6FCE03
-:80DB8000FA74FCEEF21F6E43F14147BF33D7BDF23F3BB7541F97F74563BD63BFC5F7E7F33F3EFFB3B37BFD7F7DFDDBD3EF6FFDFED6EFFEFEE68DCF1FFFB5B1FFD7FFF8FBCF96FB85A19F924AF1393BBFBFFEE9FFEFFEFCD89D6F4F7FCFFEA6A64F6DFE9DE71F98B9F8EBEDF9F6BE2F6DF9EFE72F2CFCE2EA2F2CFCEBE23F28FC424A2FA900
-:80DC0000F9FEF66F69FD367EEF6DF9EA822F8FF9E4A4CBDD8F2EFA83F7200200224826820460228A0482249AC4221B48A0494E24114E24E044024A92114A12228428941280082D815012808844210882148A44A149A048002008829FF5048A012C2101C0118021410180048088C41449440418400400824921018A226245221624426424FA
-:80DC80008A662282428A12828608252203F042244828484CC2433F3B014D531F41F22C121FC1B24EF1112CEF14D1C1F26E121FC8F64A911B21AF243915AF443924AF143924AF147B25D812F9A4481CF9A54A1CF8254A16F1244A96F1254A9E252FA2E449F2244A1F49F222421F497228F2912C8F26F9912CAF26F1812CAF26D1C1B26AD9C6
-:80DD000081F24A9255F84A924782AF247B24F84AB4478AA9FB24488DB44FA2F47B63D0B4F511644B5215B446E141F246111D246F22E148F448151F41F24AA25B214E84222F545984AF147B25989A6B4AAD115F2A95185F22BC18F82442871959B498F222438F59B2247491F8224A1F49F4284215FC68921FC8F2681217C88F26D1C1F2685E
-:80DD8000941D28AF64DB85F2489245F848B2848F447A84983A2F82D448FB3648FF470F84800400000040042800000000218001880000400140084800000000000000000000F08CEA8054413012188443141403822150182B418144899282288D248C1308812C14281254244C8132882880C21100228758902188118A34118883C1421002D4
-:80DE0000A12289283288816FF2420282002C44832102612022684141444084044200221C8802428047282402284682AA2112498502304410982A4211821842201C08811444AB1A205485245846022995241512143422881D124C420C4429048C244198228C8841880E6C46AC248C42112866148021561480220C455818AA041002F0824855
-:80DE800089C28A894238143F99092100805181411002880045A81440648288224C628200142E420044181220288242A2292A0149E188021141114E821A0217814A28314200008048F8EB64001118121884810010022C08004410088100844008400446648280044502000060818002000010088800A024486F8F0E246022001C21220432AB
-:80DF00008B21002481408184243424A024504824C922F14228897228624442001280912810415821262488064038828AA421E23048238808F0CDE400112218D0811108C0328C038602215014488924840242504824CC02AB248932246982040021200214C01121000081828AA4128A024221884A82F449F240022C01128082040000100816
-:80DF800000004508228440081841C0488C044830142041081018C8242AA824002400814288818800F0F796604490248012880220C224228441520042C1848C912241C6024422302242A608400848001800100418508422008948A84882898281311816F82FBE10C84216622880410118480011568202448100222D44424412844004100467
-:80E0000026B84402A04240344823122CA421E12863844D922480A8212A048604284CF23D3E002280082021024410088948A48240024E12000044006041C902280000100821800200422840081004498101284242CF890A4126124482820120314428848486822148744842C81A838182C444440010D68494882062840040C816422392285C
-:80E080008073128C16A88181448882CAB3A4146848385A42F8CF6B80042E1200842E112880428442F114484624024084849244448682518428411A22C224228143024828008110C444002468421042584880218301814B427FA80A440022A042A014302848200248000080240600508422002021420800000000484A088024240842806406
-:80E100004400005F2D03282420840483044D4860828C1208C148C024444568826084169828289048214D2820441844029048C18141811A0290C81200481282891408414488F043CC102402184400290240040080324680A2211245084B2418CC54484418182100000000422004004008008C120800000027BF2004418400418118008449EA
-:80E180000410482884044C024D286044122724801202004220040000800440048608850420820882834C6444AF250628420000848084040048848024022618080022001008000000102802000000828908008400002882F04683808492428022828624020000482002830448892294288489048B244C14280100240048466884818C140885
-:80E20000C28608414E28844288488842884881288F460C10622228800432812618885482842002840018008001001242484C410848400460414C04001841460418C8001E884443092081A8D520A818418004610042482220840320C4281844004844284840A22130422242202404209128200480C488100820040048881446F1615A400805
-:80E280004890848424812841C0444384421248480C48807422044A01290A47862428601484218480241184044528140420A6286088446044008574420CCFA30824824584B244064A62824331484628F44C4442C0688346C46C8D488341B828C41C4D241E6829D6C8F46258CD482381942889044A04D08C724C9848462801F04C888B844162
-:80E300008598484648F84898C141424E448E81227FD60D2E44964282242852A48B1548C483E282922281AC31288C3444421244508483B2487428160C85A212482F416182412420142885F1442C8914084CC944122A08B088B2888CE448C8948A886854C89E64B044A22629B22841E484D64A94628F86A2624C944884488F444612F42868CE
-:80E3800083E242F364788F46E644A264262864E46AF214242F2182222464A448214484E04104E0C6A444CA2468888F8CA45C4F8C286144284AA44444C78ACD184694BB604421448144404442042002301400904410044110841206C0241846044614624400000018808184011841184388618818821820F44888D044F21436E5DECEF42CF7
-:80E40000A44FE2F666644B778FC313D8A8924A441E148FE4F62A6AEFC25248F044144F45F56C644FC2F632444746CC7124C4266F66F24E5A67222AF224644552245044818B63CD1C4F4246D844A1554F4DAD99188FC5F5D4548BFD4ED45E1C4F45F154584E484B15CFC3D3C8F428283FB80A4D245E7C65D642F44C446E6EEFE4F46C7E8F14
-:80E48000C257888FE4F64A482E641E148FE4F62E6EA7848FC424F27C384F67F36E684FC2F23E54CF46F4C4DEEFE6D466FE3636EFA5F466525F52F3246CC5F94C48F0444C813AF74C4C4F467648F84C545AF5C484CF88A854FAF7C444CF4CCC9C8F45B18C68C4DED84F25F1BEBCCDCC2F8BEBBE44F246443E74455642C7482E2E6FE4F46A1D
-:80E500006AEFC6F6684C8D2EAF82A2644AB45CF52A28ED4CCFC2F2686CCF85F1745CEB664FC2E68257C42EA847C28FE4F264266E6E2F23F1666589F4484625F8444448C5F43C24CD144F429248C7414AF5C4C48F4CFC98888BFC8B44CF4CBC18F8C4984744CBCC8B55CFCCFC6E6CCFC9F56C7CFFCD49F246648B7145F62A28CF44E4A6D6AC
-:80E58000CEF46E68EFC6F6682C8FA4F66A68CF8426F45C58EFC2F24A48CFC6E6C6E487F3745CAF84F6646E8FC2F56C4C7EEE6FC6F4EC6EEFE3F3727E2F27F562714D4C9FE4F442484F449448C5FC343CCF44F4686C8B44CF45A4544F4DF5C8C48F85FCC8F8CFC1B5C8FC1888CF8CF9DCD88F4CBCC8FCDCDCEFCEFE9CDE4FCEFF4B47200223
-:80E6000000224880048C048C04488084829428B0480283044A0242218B24000000004018C44880048A0486088A0448800460448244F0B2FB000028008082C12C248481100821450812A04200400884120080420800200144810048008110088100484008F042CFC0421F4152281F41B248F11124A3D441B24AD141B26A9921AB9451AB94BC
-:80E6800043F24A9143F242954F82D452F924485CF9244A5CF8244A1E256FA264594FA2E45DD2A4E44DD2A4F4D1244D421F4952281F4932481F49326A1F48B24AD141B24A9961AB9451AF4439A4AF443BA42F447BA498924F82A4944FAAF4B131D0A2D141C6521D2C2F24F1112CA7241D2C8B141D24AB9615B44A9B21AF4429F24A9543D2E0
-:80E7000012F934482D816F82D412F9245A1CD8A4ED11FA264A96D1A6E41CD2B6E11D52841F8D52A61B69CF22749134681749E37691344E1F41D24AB811F64AA41B21AF4428F94A2492AF4432B4216F81B442FAA41A5F1D09862888040000000080020000000080018800004001400848000000004400000000002541F1E441103214218143
-:80E78000302880021846428894144461402411420800002141256483200200C014414008412180820410228802848741180041F048928021484442028A311234001602001824223018C018100821B028211112B848115282A012701208182116088F22C41884C048C048D028028280028601FFDA46024728442C048982012011148244D421
-:80E80000249214002481241830182008C3921438849B4240180849418C441872181422B418D284046602C62802818440024D81124F470A18124048022CA82134206481211200244382211148080025022C0125082C0121A01290128001008722001008008D22C09412280070530F00242842000000004830144400410081844008000020A4
-:80E88000010044882002220090180048884100284100004FAB0D420000000000004410480800000040040000004241008902008400008C0240048890C81004004F43054800224800000000490481C1000010180881000000124800902800800200812800820030E8400400BF4E0100240000004004003014001004218001410000000044C3
-:80E90000402C0822100800164428821414240810042120B1A307112844400460210090418400808184014004400828814004200218200120025086290880011218200100844410F8624760414110220100404218021044141418440400000000800541004C128402812008001A041810044128841823322822F0889C0018114008161442C3
-:80E9800008118180018100004140040044400440040000001222440042502800400800004088F2538610850121841054228440984A004144492124014400000010044064422011941400182243181622841588014184438142C8128483423828DFAF0E184C521490148021015012118112400884444110440481C02484102405002002228D
-:80EA000030280084880012211218000080128402EFA20C1444000040044002141012041002000040020000604100240010080000850200100400222800F0E4F3002051611641420120110830185181C41216180845184848488841161862212C014311160421124C022400000030182C3228490110142412F85E79002051142301314420F2
-:80EA800041068051144004290150C28118812001212140024D12002508182800210064200200221280C224212212B7325098C30440010000C5544453420AC184188181242552221E181A31982144842031134C01C5588C831402C10000504C45B424A2228B124352824100246552228B11ABB31012020044000000001400000000000010AD
-:80EB000012080024100212008001000000002548080000F0E68E10C8584A91420000404114C424228C424208180025022D1412988249080014111484812F812484040028004441CC228202001200250229D1D30B8480C411000000111504280010080010021841880000400140084812000000400428001004001012F42AE900000000004C
-:80EB80005044000000004012021A0100000000508800004004005044A022100800002421A0118F120800241042240100004009000000001004004400001002404202000000008100000000006FFB0721A14624040000144514182C22020018401242A21160418328088100111185088146A4140000004504CB2230280000401242A2111FCA
-:80EC00005103848D18481A0480010014155464281C2201000021651282A111888800001425414258881A849422180000444445942A2A02000010526261AF7B060000000011000084000000000000104404000040820100202102008100008184180000F07649200118102201000000000000000044410000000000120000000000000012A3
-:80EC8000000000009D5550221212250116040040010015C9120012000045044184008100005022124012021A2102008184818400440000008FAE48229112602121A0110010511181350840488801004100445044448400400212C0140012000000810024850818001044F4582B00C016181004105111100881000000000045040061004012
-:80ED00000225022961211A811204280000508281185088120000417F790F672227212AB112219112C0122592812F317111B189699985F888414E48D09114815489814F84744854444B242E24C02480524445E2427226F212222AB112A1812B98C0922582F8121317118B989659888B484E48C048805488814F84F4DC74F026224582213106
-:80ED8000122118182592823CF1111219E8897818D118246484941581445888488F44149C242226440428444584F2262245A212322B8123A818182592823CF1111219E889381889246484848044588848AF17070000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000098
-:80EE000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000000000034
-:80EE8000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000000B4
-:80EF00000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000033
-:80EF800000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000B3
-:80F00000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000000032
-:80F080000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000B2
-:80F1000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000031
-:80F18000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00B1
-:80F200000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04F2E
-:80F28000FE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000EF
-:80F30000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000002F
-:80F380000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000000000000000000000000000000000000000000000000AF
-:80F4000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000000000000000000000000000000000000000000002E
-:80F48000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000000000000000000000000000000000000000000AE
-:80F500000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000000000000000000000000000000000000002D
-:80F5800000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000AD
-:80F60000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000002C
-:80F680000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000000000000000000000000AC
-:80F7000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000000000000000000002B
-:80F78000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000000000000000000AB
-:80F800000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000000000000002A
-:80F8800000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000AA
-:80F90000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000029
-:80F980000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00A9
-:80FA000000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE437
-:80FA80000F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000000000000000000000000000000000000000000000000000008B
-:80FB0000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000000000000000000000000000000000000000000000000027
-:80FB80000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000000000000000000000000000000000000000000000A7
-:80FC000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000000000000000000000000000026
-:80FC8000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000000000000000000000000A6
-:80FD00000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000025
-:80FD800000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000A5
-:80FE0000000000000000000000000000FFE40F218484844551844110321400188414444444122481008400182118E901188181302200502470244A18243224901844242CC2228464282C0200ADA410311131142781D028911C6414432141154454A224165AA412182361A12C41C6124416420816D848121414088B218184835184B014320A
-:80FE800022253412224C42C8248514D424C3381622C118872116F2DFEA14211240C2186061C110860143411801C01881211870181208C01410022042140823220284004141242420721408C028303A001048085E160011A5014110682141160118141054A40000841840121402211241400444001284D02C5148242A1102380084222428D8
-:80FF0000418121001870C205400800810000001044024502442410021200002001840000810000261808280040046141302430121880B1FC021400941441000044000000412921010000122118A481838141088100000000431244042810040029A112282124F05BCD00002800000000000000000000000000000000000000000000000099
-:80FF8000000000B0A7030024130110024100800100844502104204A4000081A440224168410044004C0124400428181048981820110C8418846F380B45022843628112801142011008002901100484001014422401442822242880826121201202000000211002001822003F860C4121244C2201801116012001002951240021441018423A
+:80000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6AD6FF400030230A006AD6FF400030230A006AD6FF400030230A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4455544455557475577775577675577775577765566665563625523235D2E37C2B5111155111155111155111B7
+:80008000155111155111155111155111155111155111155111155111155111155111155111155111155111155111155111155111000000000000000000000000000000000000002552222552222552220025522225522200000000001AA1111AA1110025522200001AA1111AA111001AA11100001AA1111AA11100001AA1111AA1111AA113
+:80010000110000002552222552222F21F112122F21F112122552222552222552222552220000001AA111255222255222255222255222255222255222255222255222255222255222000000002F21F112122F21F1121200002552222552221AA1111AA1112552222F21F1121200001AA1112F21F112121AA111002F21F112122F21F11212EF
+:800180001AA11100255222255222000000000025522200000000255222002552220000255222000000001F1FFFF1F1EFEBFBBEBE000000000000000000000000001AA1111AA11100000000000000000000000000002552220000000025522225522200002552222552222552222552222552222552222552222552222552220025522200D0
+:80020000000000004F44F444444F44F44444000000004F44F444444F45F554541AA1114F44F4444400004F44F444444F44F444440000004F44F444446F64F446466F64F44646000000004554446F61F116162F21F11212000000CAACCC2F2DFDD2D22F21F112124F48F884846F61F116164554444AA4446F65F556566F61F116164F41F129
+:8002800014144554446F65F556566F65F556566F65F5565600000000002F21F112122F21F112120000004F4CFCC4C46F6DFDD6D62F21F112128AA8882F21F11212004F44F444446F65F556562F21F112122F21F11212006F65F55656AFA6F66A6AFFFDFDDFDF006F65F556566F65F5565600000000CAACCC2F2CFCC2C2255222000000CFA0
+:80030000CCFCCCCCCFCCFCCCCC008F8CFCC8C8255222004F4CFCC4C44F4CFCC4C40000004F4CFCC4C44F4CFCC4C44F4CFCC4C400000000CFC4F44C4CCFC4F44C4C000000008F8CFCC8C8AFACFCCACA255222CFCCFCCCCCC55CCCC55CCC4AA444EFE4F44E4EE55EEEC55CCCC55CCCEFE4F44E4EEFE4F44E4EEFE4F44E4E00000000CFC8F849
+:800380008C8CCFC8F88C8C000000008F8CFCC8C8AFACFCCACA255222CFC8F88C8CC55CCCC55CCCCAACCCEFECFCCECEE55EEEC55CCCC55CCCEFECFCCECEEFECFCCECEEFECFCCECE00000000CFC8F88C8CCFC8F88C8C000000008F8CFCC8C8AFACFCCACA255222CFC8F88C8CC55CCCC55CCCCAACCCEFECFCCECEE55EEEC55CCCC55CCCEFECE4
+:80040000FCCECEEFECFCCECEEFECFCCECE00000000CFC8F88C8CCFCBFBBCBC3AA3330000008F8CFCC8C8AFADFDDADA2F21F11212CFC8F88C8CCFC3F33C3CC55CCCCAACCCEFEDFDDEDEEFE1F11E1ECFC1F11C1CC55CCC455444BFB7F77B7B00EFEDFDDEDEEFEDFDDEDEEFEDFDDEDE000000008AA8889AA9991AA111000000CFCCFCCCCCEF97
+:80048000EEFEEEEE2F22F222228AA8883AA33300CFCCFCCCCCEFECFCCECE2552220000EFECFCCECEEFECFCCECEEFECFCCECE000000004AA4441F14F44141155111000000CFCCFCCCCCFFFFFFFFFF3F33F333334AA44415511100CFCCFCCCCCFFFFFFFFFF3F33F3333315511100FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000008F84F448B3
+:80050000489F95F559591F11F11111000000CFCCFCCCCCFFFEFEEFEF3F32F223238F84F448489F91F119198558884F4CFCC4C4FFFEFEEFEFBFB2F22B2B955999855888FFFEFEEFEFFFFEFEEFEFFFFEFEEFEF00000000CFC4F44C4CFFF4F44F4F3553330000008F8CFCC8C8BFBFFFFBFB3F33F33333CFC4F44C4CF55FFFC55CCCCAACCCFF09
+:80058000FFFFFFFFFFF3F33F3FD55DDDC55CCCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000004554444F42F224242AA2220000008F8CFCC8C8BFBFFFFBFB3F33F333334554444F42F224244554448F8CFCC8C8FFFFFFFFFF7F73F337374F42F22424AFAEFEEAEA9F96F6696900455444FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000004AAB
+:80060000A4446AA6662AA222000000CFCCFCCCCCFFFFFFFFFF3F33F333334AA4442AA22200CFCCFCCCCCFFFFFFFFFF3F33F333332AA22200FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000CFC4F44C4CCFC6F66C6C2AA2220000008F8CFCC8C8BFBFFFFBFB3F33F33333CFC4F44C4CCFC2F22C2CC55CCCCAACCCFFFFFFFFFFFFF3F33F3F69
+:80068000CFC2F22C2CC55CCCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000004F48F884846F68F886862552220000008F8CFCC8C8BFBFFFFBFB3F33F333334F48F88484255222008F8CFCC8C8BFBFFFFBFB3F33F333330000BFBFFFFBFBBFBFFFFBFBBFBFFFFBFB000000004F48F884846F68F88686255222000000CFCCFCCCCCFFFFFFFFAD
+:80070000FF3F33F333334F48F8848425522200CFCCFCCCCCFFFFFFFFFF3F33F333330000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000004F48F884846F68F88686255222000000CFCCFCCCCCFFFFFFFFFF3F33F333334F48F884846556664554448F8CFCC8C8FFFFFFFFFF7F73F337378F8FFFF8F87F7BFBB7B700655666455444FFFFFFA4
+:80078000FFFFFFFFFFFFFFFFFFFFFFFF000000004F44F444447F75F557573F31F11313000000CFC8F88C8CDFDBFBBDBD1F13F331314F44F444443F31F1131300CFC8F88C8CDFDBFBBDBD1F13F331310000DFDBFBBDBDDFDBFBBDBDDFDBFBBDBD000000004F44F444445F54F445451551110000008F8CFCC8C88F8FFFF8F83AA3334AA4444E
+:800800001F15F551514AA4448F88F888888F8EFEE8E86AA6664AA4444AA4448F8EFEE8E88F8EFEE8E88F8EFEE8E8000000004F44F444444F47F774743AA333000000CFCCFCCCCCDFDEFEEDED1F12F221214F44F444441F17F771714AA444CFC8F88C8CCFCEFEECEC6AA6664AA4444AA444CFCEFEECECCFCEFEECECCFCEFEECEC000000007C
+:800880004F44F444444F46F664642AA222000000CFCCFCCCCCDFDFFFFDFD1F13F331314F44F444441F17F771714AA444CFC8F88C8CCFCEFEECEC6AA6664AA4444AA444CFCEFEECECCFCEFEECECCFCEFEECEC0000000000000000000000000000000000002F2AFAA2A2DFD8F88D8D000000000000000000000000000000000000000000003E
+:800900000000000000000000FFE40F481800000000000000000000000000001400000000000000000000000000005F22020000000000000000000000000000000000000000000000000000000000F04FFE80840100000000000000000000000000400100000000000000000000000000F025220000000000000000000000000000000000D4
+:8009800000000000000000000000000000FFE40F2800001400004840012800484001280000002800480000108204140000484001002148000010F26B52000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE808401800200E6
+:800A000000001002000010024001002100140000000028000080880200008828002800FF9C030080840100002001000000000000001200004001000040010000400100000000009F31094818148002800414182810820416012810A21140012810A2414001002B11484001280048408188022148008828108204F05C6580840180020000F6
+:800A80000010020000100240010021001400000000280000808802000088280000F04EFE000000000000000000000000000000000000000000000000000000000000FFE40F000028000000000000000000140000000000000000000000000000880000008F5E010000000000001002000024000000241800120000000028000080880200E4
+:800B000000200200009F3805000000000000000000000000000000120000000000000000000000000000CFE70B000000000000100200000000000000000000000000000000000000000000EFDC0D00002800000000000000000011002001000000000000000000000000000000AF7E07000000000000000000000000002400000000000008
+:800B800000000000000000000000EFE20900000000000000000000210000000000000000000000008200000082220000F033E1000000000000000000000000000000000000000022000000000000000000F0CEEB000000000000000000000000000000000000000000000080020000000000F0E4940000000000000000000000000000001B
+:800C0000000000002200800100000000000000007F4A0C00000042480000000000000000000021400200000000280020020011000000000057190000000042000000000000000000400240020000000020010000000000000000AFFD0400000042000000000000000000000000000000220028008002001100000000007E2E0000000000E2
+:800C80001200000011000000800880210100000000120000000000000000A08200DF530E000000000000000000000000000000000000000000200200000000000000CFE5030018000000002200200400000010020000000000000000000000880000000000BDF9000000C0210012000000000000000000180040A22100002001000000215C
+:800D00000020020000008FD40B00120000000028002004000000240000180040220100000000000021820022000000F0A3AF0000006012001200000000000000000000002002000018000000000000000000F0BAEB00004001240000000000000000000000002A01002100000000004820080000200400FFF50511A01280123221001A8408
+:800D8000020000000000628004004840028008002200221400400200304200220000F0E46100200334C021004800000000000000000000100288002002201201002442000000220000D03E0A14008002240012220000000000A024200400480032002400000000000020482204002004003BB12001581001008001243200180000222304B3
+:800E0000A0212008240011120020248102000046022002008082021022028F5C4E1101480000002018210A00001200212001202802001304234201620000200240012A0888000022822304F031830000180000190200004082022002000000308200208208008811428800000000800200800220F482E940011212110010018890120010BE
+:800E80000218004800000029088084B122480122928024082800250100822280222282880446F2A3CC800100000022121081082081022082020028002210028002000019020000480088000000800228F08322001222123041221022020010220242800428C822200100686024822400130880880242428882190200002248422002F04837
+:800F0000FB0000001002001012020042180000208402244800002C02000000208402000020020000202414F2B8A200221880A512800200280080010080021C04143211214A022022A484282A88A2822002008024020048800228428A022842FFFD0B0048190280022800212800400180820810A2128821A8400240038280048A0282211057
+:800F80000240021129220200220021F09B7A2081018A011A22840428C0121012428182228606000000002282002424001100228848002082080088280090226014BF2E028084040000800100001001000021480028404222021400000024000021244082220400802284344228A76E000022800428001200202202420080021418280080DE
+:8010000004342A080019022A0488230442880022000080040000BF680B001220151181041200800114428002182042110127122424C0222830C12C88229821882C020040C2A2400280240222A04220029721200148482220012200002800000028212180418188820400140000C8002008902200212C022800000021148D78208181E112F9
+:80108000A1127E61144A02382400242128A042226AA432A0442828123932A226622282138656322938A21F182C8228220A48A0282226A182246A228282A2646828281C02DFAC0A202281A245244A42A22222182F228122012AA144124A028622F281224815C1B22621042B64282D222F2AA8CC8082B281A2242CD222B88264264A84C8A279
+:8011000025522221298426022242AE42486AB462F4E483802125A24190112AA142200110122252111712428002287041213221242CA244302200602A20C281A288284A0824233482284001802802224262003F320D00008A04000040021880914118800100421128218001002B8200E0120822C08248002048022480028084024220F42EC6
+:80118000ACA0111AA1333AA3751F17B271A7262880B11251222D122B113A13A1347AA737A022622226C1211F32E222F232723E522F2AC8228E22CEC28E82281CE218A2A88AB2229A42002F22BA22B222B28218B24224A68A2A822222A2622AA6229FCD09121AA5333AA33D1F17B251A7662AA222002F21D322B112E112E215A1167AA757D8
+:801200002AB222A2466A7521E132792143F232722F27F7A2A234CE622F2CF482822B881BCA15A18AAAA22A232CE424F422A229AA222F285A224A24A6882AA2664A82B42286A266EFDF031AA1511AA3333AB571F371716AA2222A82B112D12232121290415AA2676AA2112B226A9211141D8137322E222F26E626F682822D234E624EC28EA0
+:80128000822BA88AAE288AAAAA2BA229044AF462E22B2A2B222BA8212B446AA48A2AA2622A24B662A6626AB66C0A121A81A333321B371F17A766282A4242F21212272123F131311F1626A7674AA4332AA2621B621F1272317323E322F222622F26F6A2A223A26E2F2CF482828ABAA1DA11A2AAAEA2AEA22BCC4AE424F422A22F2AEA22B219
+:801300008218A2446AA6A82AA2666AA2422AA6226AE66404002A012A011448220000008002A04128A024801201A02421102204908200800800240000004800004220046F51091800209241182822C012C012121081A343280000112824282024822202290823022E816022A084008A642240020028224280220226E19F0C2AB411021B21C8
+:8013800046B311764292212B1419F2629219B24219B14239212F14A9422F1429DA12B9A1E414F921421CE822E415F2224296E122641D2E429AF222C21B292E421B292E831B2946B291F262821B6823B481F2428219F24283112F1428B2422AB242A84A2BA42AA4842E42DF48042AB41186B411623619744293214A91212F2619A1B419B25C
+:8014000042392129A9422F1429DA12B9A3B442F921121CA8C25EA12F22641C2E52D6C18316D1223C912D421B613CBC9162241B212CB8813642137842A2284EA3114E81822B84222B84AA34422B422B8426D2750420080000000000000000140000180000000000000000002008000000000000F0D1F300003840021022021188400110022C
+:80148000382004008004C2800822C0222880222294131A1401000020280242200200145F570E2008822C0424161111222862211A34422D2211221260182A012813382280038062261825024692118298C082008214C811824021A882A0482C8884641842471700C2A08348001C012902262182314329122282012C88051A22280A28C88027
+:801500009A61290130623B14822A89D421891421088A14210A88A888488A44C2422088F474C4000040022502250188C092480034003214220014214218000028258202200224800110010040012800A28004F0C7BD000000403111221200144001183A044001424800001002000000002B12800180140221008002002800F0A2A2000000ED
+:801580004E1112481860142E11901288182602381A2404004880A2428812A0212002290228284A38222088880821822348210C2182202428088F160A000030111213A42118422290121C08B0420158110048002842200138800229022822293A22188282881002230888100220860870D3020000204421014031111100182A21A212800490
+:8016000042200420C28200000000005200004602908210212402880080083F1B4C018004114601142118802402002212121001422812202881081211882280238441811402400182242229840422008810220A4E1E208181044A021C8241812411A29248122200802218021432B0A22402421111304221E024922188200280420220062008
+:80168000820400304220E4F103480019018084824411411102004A08112001200400482100290482001880032008200C888280488288028008004E5914006011466114192492411C0527241A288421222E91112219094228402262272014216428A280A121133131202208144A98828094424222822880288824084B2F802501200222134C
+:8017000011021C110100000000001984024220081221C04220022322682400200220988280082B2400008082F42124100120123142108201682304214825C1111611010018142602C0212210022C088A1521080029092810A2482984181201008880A282004F5404480012008011C11112181B21004A812822018001228840012501821266
+:8017800080042D4228308200120000A0248008822004242028F83359000014100111C012B02104001C0214001400864121011410422104141001502188282918821401212125110260222082820422BFB204904180242485246424200221C02220024011A24214A0128829091812121641011182A0481A1201420028310028803842008871
+:8018000088002D823B65000014244012011424121D121840020000A0210021240020240421C223B6810114802201488E41484840410200482C248408224FBE0216010040830118481810028034110020810348180000000018210048800200002100200200002004F095A50000408101904210024842000010220400194922C1121B1224A1
+:801880001821250111244E22368201004810828828882A080082210028F02AD32024080000400211148001008041621448008001213012108221010023013301502280188102880021002180C281F043CB141280048A045621040028C06212222250210010A2A12901882A0900404101288086AE2898230C002008282888428A041C260811
+:8019000023027E98E011A44880C141190119F4124133E512B471F751211A8154119217112C011D513A011F11A42A12181F13C82118241E11124E127041B1628251121CA32358422427383C94222C58138A9A822B48C082482B2A4A64322A929190118220348125E1117152012418251192422B122B472B12281234A04418281582088021BE
+:80198000B111884452114E42237281A2231F2239218662212123342139682C4824266128A0484A4401218E21881FC843214401171246A2452F24044E121CF11222242C214482D21102151132422813E32AC8812D1237212D32372325925227248823F181918E621A7882A2692F2888B9C22882A484C2C88AA28800422C22B8628AACAA8895
+:801A000086727543210440012C8144022021224102241110010012283308801201181002252124022A08980040A2480000008084022800AFEF099A0510A1441F2491411F35A45515D331F4234329E52424A5253A011835F113512A82A1462110A22223022B544A3412F08182F09381F083311F1AE22AB24214F242421F3454332E2286D208
+:801A800021788141B242A484CA7422B282A8468AA8222F5E4BB151840415A14413B5517411A1551D133F35F563633F15A7545E521B471F1311D11111F213132B232AB3C3F781A18890211712242B455E411A81E11CEC38FEB3F18AF921B11F1AEA23BB52EC24F442421F14FCC2832F2E9EA2197881D322B842AC84CE422F22B4E2BCE28C0E
+:801B0000EA22F2F215141E51481061141F3491421F21B1137111B151F6734339E724B452E437F732311E111C51111F11B522A6336ED32D812C18E232D212014AE5343412241F28A8CE1F1BEC2AF813311F13B2A2B342B542B442F4C1433F3CF4A2A22BA81D811F38F882822BCCCAACCC2F22B242B6E2A688AAFAE48E141B5D0015E134F44D
+:801B800053532F25F513123F25F543533F25F773633F25F542522F25F573723F13B311D13151133F15B572E623F3E1623F3A5A2227213D223F317112F252522F21F112122D123F3CFC83E33F3BFBA2923F33FB92A12BBB2BCD4E422B441D813F3CF8E2E22B881D8117382D822BC4CAEC28F8A2C22BCEEAAEA82E222FF10D18004081041A9A
+:801C000044A241341A0412A0412041022081020010022921941280018890927022011848A04834402208828004824200828BE3000020341110E1140124192204181383128111611400138208121302200412001CA421229220582240826424908211250121A08422212288344FA6031CB41162121B214E111B212B1419B642B111B262B9D8
+:801C800011B24219B14239A12F1439212F142BD212B931C4911F2AC4A11F2264111F22E419F2214296C1D2DAC2C21B2D2E531B2926B291A2841B292B961B2827261B282B8419B64298412B84222F2428B242AA4229AA42A8AE426FFA0B1CA4612E41194293614692614219B262092F349B214E92A24A0A2BB4222D912B422B84AA85F22250
+:801D0000C21E812CA4292E4286C1C15A92C21B2C25B291C6421B214AB891B242B8817242328129B881962219B44228F2428282422A9482299482AE423FF40F2008000000210020082800000021000000000000000000200200000000000000F0E61A2008200123810440010035D22108131481888401400200005012230430210023888122
+:801D800088012400242410810410222A022042F1E4388022A8218812141601188011210500121A022413021200400115228A0124001344010014312111C8881424881400222188138244011F870828C232881830112011811161260021522A01464202121220084081D212114302131261142081C8111121802C5823228813042082A882F7
+:801E0000260200EE8F00001224132104000018112D81401181081C0340024001908280040048908200100225010024110024902240818402FFB60900000042000012002048322100000010011502215022C01210120180081001828044010000004200F022360013830200102231829083250225C311230826028892118601400200002C78
+:801E80000228A021111423C111118008100182114810010000F03196003601006024802108334942021C9982262102200914104142032100221210E212110182002008204421188104140000001FBA0C0028000040024002101102212480081482000000241052222200103112194111018210010000002004003A0D80C41100140021188E
+:801F00001A042A0420044001982100928814E0280424114002004001000088112C28044842288890820082F07B7B00480080021400003A08C0120024281002241288201202281142108122049012828A04400211000000004002F0D62C40010000208401142C02208102002400001400004248002004218081420224114248420040020059
+:801F8000004880F25A7500400130214081011E41222B818081120220B2820100314061228E424268804412410280B1226128C210014824420000882488800428EF950F14800100801422012004A0410034000080080000100220240210010010A24825B181042084942200008008D7BA0048000000215021822021211132220012121A185F
+:80200000422102B08204C0118008200819018001001043120100000000F0A86D0000000025411201200821200A00A21411400222141303002121888024882838110020081062284002820000001FE90200200440022400820088138201422448C2A043204102B082945242421924C14200800400420000200442200400004FC20F0000C01A
+:8020800042001410C26129C12114290400220021241814312A284441011C0840010020488108004002240024242400004F5C098004400200009012A8292188011100800111000082001288480000002001881003210000000000F0CD6E400100000021000028002880810220181241C2A18002400200108248012018010011000000000015
+:80210000008FD80942400111400140318100202148022182289052422C018002C01240918248428821828623082988641490821142484A88248434C12008F0BA360000001002000012240021602400881114C011001129841402110042319041144200400113040000000014F0322500000021C0611448401192622228920024C6012304B9
+:802180008A818A28143281250114A08400008081088004002C0648C04280041002FF640E8004421140C22321141134272929B4916816181082F23241824E1231B01101241B9817345A052C384342192428B8814891928A8828B481541215511221212D42C04242290C4001FFD50C0011002100142944B141812191121632221C8225021B18
+:80220000811F1888052F1872233381271682242C11A2C88224254241B1C1581118230810D12208862204420034804801FFE70B1924044062243139542115C2822B8A2AC8132829EB291A62242CA8AC4AA1414E213D832682A2622C96C2357152A14814D8424A9C821848921315A14842247041E21484A48448C229240400F074C7100111C8
+:8022800010210442200446024622C1211A4423C8210012308128114A0290910000110014901248219082C0814888800888C081800888FF45445111150115F1C1414AF441411F2692421BC81F14F481813F11DD31F481811F1CACCCCEC21F3DFDC3E32BCCCAAC9CCEC22426F242411732CEC3CEC2CEC3CAAC4CCAFCC181CA1CC38113A8881D
+:802300004E423F3CF4C3C32BCC1F24FC82823F28F8C2C22DC22F2CFCC2C22F2CFC42C22F2CFCC2C22B88A0888E82EF840F501115212458114E423F16D231F483C33F34F4D1D13F19BF12B4D2ED23F253711F1CFCD1D33F3CBEE2B8D2A8CD2F3C5D311DA22F34D633F2C2E1CEC21F39FD82D1CAACCC1F1CFCC1C33344B181E838F853533F01
+:8023800014F5C1C14AD431FC8283312F1686A8EC424E422DC22BCC4641B282A8882B881F24024A845411007043F1216335F1C38135F1D3D12BB91F3CF981932F2EBDA259313F31A1EE3F1CBCC2BCC1BDC1BD81E82258333F36F4C3833F3CFC52412F15A488CAFCC1C11F149441141D818E8237111F15F48181CEC23B4C2C58332F2476C20A
+:80240000F242C22F24B442E42CF442C22F2414B28208F0E51EF04141150150311F347442F2236315F1C3813F34F493912F29F1D3833F1DFDB1A32F2153222F21A1663F1EACDD1F2DE53CFC83833F22F223233F36F623A32F28F853532F24A5CCCAACCC4E423F2854121F18E818F891133F34F58381CEC23F1CC4833F38F84261CAF462C2DC
+:802480002F2CBC42E42CF442C22F2C1C12E22808AEAC400114400334400334822440120140120182001003200442214229081C0829082C88C481400214000000000000F0539A0000000040020018822C013811002B24114E111110821283D22328410220041110011301822314015012200480240400006FAC07481B21B01122B411364236
+:8025000019B64291612F2699612F24B911B442A9432F142BF242B1322DB13AC4911F22C4A11F22E415E222E419F2215296C1529AC2421B292CB59142B291E214B191B242B18132421B282B841B282F1438812F1428BA4228BA42289A82AA84E82AF499C780B41186B41122B411366219B442B181B66281F442B1682F14A8482D238AC431B0
+:80258000AAD412B322C491AE521CEA22ACA526E219E22264183CAC292CB491C2421B692CA428421B2825A26846B281A2848AD222AA684E82A24E82A24E82A2882B4A29E82AF4232400824800008004000000000000000088000000000048000000000028000000002501DFDD0700110024222400428024041081A4C22410214402111332DD
+:80260000418A118221110200008002D0218404001324042C848424840800F02CBB2021A8281001183A440282A0182450223E828820328180180148004092414A88819882111480028A611288402192C1308100220090214001AF790518C28E21003022222121C2200E0033AB8468242C48812C11220C142C083991412301294861142022E3
+:8026800002B04108143041260100424220582140014FBE0D00001480A14100001848250224802842011001111C8224014298800800002069123042202228B48104482902428002007F2F021001004002140010022C01301120E21402280000112811821800200200000014008008000046820480023F930B1302142820A1122012426311D1
+:80270000148A81C8222CC2422AD432286112881C4842312242312100422A44810124806114221120582142148280B2420200422842F023D7000028200100212440218818824223826A121C021C08342214265112004222142A012400110014881421800880022448482848F0BC496012111400602330214031112112182821236524112B67
+:8027800014A02840028014028218200400001848221100203481002829044800800297B81413048A040000A034114222004A492204221221142001221A848412314112211220040000002140012100460340022128F0554400C0412212428001A0413021883022008A04482304241A84880482484211428829044221180080442104302222
+:8028000000C282248028120270440A1820C811408222121202001002424001008004501222250200001002141120012382C48200881C8C9422148842488800F094639011106112124221005A222114C182A09624A048221A8444410290624AE328243641482C84B81214021416011280C44125021123581280420248242A0822F0EB29807A
+:8028800004200120A22125024601002420844401008024041424000012000021004082028A04008A64248AA48482218A040024EFAF04000048282A04A061C04180044820828404803443488890424890111800281422290200801801828601202802C2200820085EDD808404280000421338116014824A224261282001111400001082046C
+:802900004800201202282210410122002C1841010088800800EB6814C011004001140000001280020040010052001180440315020020045012100140121112430224482400009F2B080010018081032004212C020040018001C051400180080010C181134402881C081002000000C84228002A1422D2CE0F11121120A1411148114815C2A4
+:80298000411148904242002C04402104304120018002D0224102211228801202824A92438213181202A220280624F07F7D20011220022821602100222C02181224181211212502144A08131402008002288042019210818212010000224002002302AFDE0E0022480000181442888081841A026882128248A0182501200480210222104103
+:802A000002408188224801A800400200140021B023061C21482182A6241CA4141C0412222D4200122412280018006011400125810540110110010018218288172842802818A2422008A24001EFE10410812781112311014002A0211221222220023012800100114811A814A8108282CC2280826A282890225012282002202292422B242340
+:802A80007222F2576F60119A61116AA23660162A6114B21E5121621A112212C22239A482181D1124113C2491413F248414E1112514C22327222D2117221C3A11821CB88188F8812113D23298C11728141908A28048C3A2603A284D97901113B82101121B231113915118241DA13D41821692221922220625A3811D1121111F14480123A13B
+:802B00004413C421281B8216318168222B262B22158212B222081B242B242541523227222B6426A24A21A2681C6222DBF914421C8462112CE414A4712F14041F1434434E42244E424AA7D56E1292385A05A0444AA4848A0514171423083A0990212652122502A0292E131F38028A2A6A38883B888228A0CC28AAB8422406212F6F0300A032
+:802B80001282290121122D81483C08881A842A818A84288138114A48221401200C82228221822182002A012603002621480324482880024200FF6A4E5111171111287E621F16F663411F36F452432B94CAB8E2FAC1C229BCC2A88D2F2CBC22B9D2E92FFA8381E019F881C33541E214B442A4998ABCC1AC4C2A88F8919119C2A32CF811117A
+:802C00008AAA888AB1A138823CF8C2823F261CB283A88890428AE828F882832B8A4240F2B716141D111F11F43111286E621F16F663733F36F243433F14BCC1F821232F24B642FC82C22E222F26B422B9F2E92252132B881F1CF881D33D432F2CF541412B4C1B15481BCDDE41882E823F3BFB81A22DE12E821F19098AA8983B883B8A1F3890
+:802C8000F8C3C23F34BCA2F281832BA8212B244AA8A886B282BC228642F23C7C1417111F1154113AA36F3F15F671633F36F65351CE532F14F963233F24F6C2422B844AF352722F2AB152EB26F313113F18E811E134F5C3833F2448B142F412114E411F18C4F12A22F831332F28D833F481223F11B382AABB9EA21F3AFA8281AEA32BAC3F93
+:802D000026DE139A831F3868222B42AAE82AF8A2A32BCA2B6660226DBB141B11171117133AA3673F17E317F771711F15F5D1533BD51F3AFE42422F2CF442D2FEB22F27F5A2122BF7BEF23F11A1111F1DE914F481C11F25FC41412B443F15E11CFCD1515AAF2286F2B3B31F32D213F2A1223F1B9B221BB39ABAA3BAA3FAA1A33F2CFE63E362
+:802D80002F28FA83832B8A2B222B66EAEE2AFAA2A22BCA2A062E228F7906184001260200341224400224001200001001311001001820022270220121C081E0120814481440012882200880027BE700A0120048668112924146126124A0149022B042020046112104D02224146214002440110100112018328180D422081C08214824304292
+:802E000000244F1302481B21221B2146B111324219B262B181F242931B682F1439912B941B4A2F143BA12F14AB4A2D911B4A4E91AE424E811F2264112E42D6E1226C192CAC292DC21B292DC21B292D821B294E821B2927241B28271419B242B881F24283112F3428FA42822AB442A8422B84AA84E82AF444F2001B612A044A91212B16134B
+:802E8000316213B822A1682B341B284AA14A29A24A38AA84B2B26414AE12422EC25E812A64152E8256E1322C81BC11C2C21B612CAC216A38812336812394212B861B482BA419A284A22988848AA4A4238AE82AF43764008200000000000000000000000088000000008800200200000080020000420014F0EF8E8012011818250148000003
+:802F00002182240086020082100122622012022222208214018A02182814A81022140142292CA486284800001FCC0EA018601211001E23E018B41282A4414E12184813A21411241962141A0413C24118228091211A68246AF9421188381825A2411C84C122F08241681150211001204C028A6412245FE20730D1C0111721003C06141A4232
+:802F800022C6D22C01111E821124244E811A641111C218282C0211198332522D31881B2424222B141C2143612815829241264162244842C82A6824244226015F260B220028100112A04821481800482848001C02002813A22400182888422A288424812108488032228A2404100113082242008240F273FB002814110000273412008004C8
+:80300000A014400188824A020090129042420000240000004824008242400180044800009F910A140010C122226818001081016022422A04C031C0411D42402124C411301240C241141A824291131827222820A8C200482028048082022A045F550E20021114262202180000120028A04220888144410134182C84052901904315A21222C9
+:80308000241212238204884A28084811004280048004E7F240011100004A92432301102104E024214401B08122826424004810210400000011144082022122200480280420820222F034FE200120018081021118242E811124100240022126011A642811122238281124809622622002220024222126212E248C220880841802F08C72003D
+:803100002A8104111448002012A2128622248212722102122B84A0281282424A02250213042211800400002082044822250100244A022123068672AA0600000029021400420000422001220048288001004880040000A02400C0410000004800800200225B6414121880114183061414282113C98270228212A212241A0214E228B011A4E8
+:8031800016C0322A8444021304282082220240E1220462C246A1846840822294822A04828D54002800001828001848211142200434008A84024224002821004222282302004200602600112400800842220020E2A805400140314210521227241400212014C14230412001004622C492426016480024144200460114002C4881488388825B
+:8032000002882400A800BF9B0D4800120023A414004218230421184218142218402244018004522021040022322001121129A442008810228428028A820830821DAA0000110090116011881820011C011C012341E11126621180029860112001309338A021132411218182324110010000002400001FD10600110023012110020029060086
+:80328000001422501280013422422200C0414632418024322128192604211904118848480000223022F027340012008004808104420012480080840100202822046242002001000018004282A06828200C2008802808145F6A08480080010000008002800420029042298401C830319091C081001001222002002004802202820000502248
+:80330000F017FE000018112C21846414244601421002203441001083010000201201422180820400008022084821A082008229081082E8C20B10414101001440018021845621121112212213221201322122100180020000422800482410428258210000C022802282B216020048A0410024001813248202100180511221290419012E82B8
+:8033800020022044113121621248130111422012213241800282211002282123082F66074A4441311146818514C1111D521D511F2484C5124AC141583446A25233E214F341431415011B265AA4411CA66A1924D821D412A263A02226A14226A1441CC422C683641C86B281384220A8282CD8223282823482AE7E00111114242361242B45D9
+:8034000035521223246126212812115215C1211A2122B21204CE3225B2A243A116124AA12414163243138181B211A321192124B62212031B8221A0EE290880A882282AB222F8468F001280B1116124213C21242488014A14B241714291511833C5231381B241012248882B26137141210142194DA162121B4514111E21268294C16E81195E
+:803480007E4241A2E2008821A22CA28288F0ABA7000014482440A34134122041A2413011B011040013011180218421941142201422A412A012A0120048228A0440A2480020C8228022081F8207481F11511114488044A151144815A15180C4132F1541E131753153131CE214E41444612225B262F431316E213E318AA8EE4E421F16F6519B
+:80350000511F11031F1246F111111B444AC4423F3476C3F181A33F1C5C314AE42494822423E822082A22A822EF430B481F1555111C5421242F246435372115B3427451E125662421242F1584542137333F1132221B465A44E1237822B222F421316AE716E31CADEE4AF473713B551F1287D111F211311F12F341514AE424F6436335F1C144
+:80358000E33F1C7E8323E42C9C8224212CB8A23A22A0AA8F250D481F111551114AB4521152132B5527143B1115A131212B554E132F1541E135F571323D112D311CE11441E122B812B252F431716E213E518EC1EA6E241F17F771711F11071F13F221211F117141016E421F36FEC3811DA33BEC1D832BC42E6229C8822B882F22082BA28A31
+:80360000A8221FB701481F11551117151F24E425F142421F35F153521F35B153F551115E525E122B551F24F153511CF141533F37F313313E311F13B741541126F272722B731F13B771F77131DAADEE46F273733F11F131313AF311211F11F331311F17A3664E623F34BAC3FCC1E33F1CFC83832BCC6EE229C8822B882F22BA22AA82AAAAE4
+:80368000A2BFBF0400140000480000800400482001000000212800000000220000400214821400820020880228828FB10F001081012111211123040021400134D0122262144021024842221448C0421305281001190248802624081082040010024071BE02481B21B01162341B21272419F242131B292F3499212F2439112B9413F242934F
+:8037000013F24291222F14B931C4911F22E414F8214256E122651D3F22641D2CA42D2CB4D1F222C21B2926B29122B6917642B281726291612B8419F64282112B842AB44228F242A22229AA42A82E42AF420E581B61581B219061421B2118684AB811B2429B21883AA494322D912AF442B12B421CEA22A5842EC2282E82D22CA52D2E535A3D
+:80378000E222B451E222B491E622B191A6161B692B141328B681364219A4A41B482384B44228AA2422A82B4A282E42EF810300480000000000280010020000800100000000000000000000000000000000F03C3A8002A01212121A12028021C141424216118242024A8182022C822402202124858581C422248824180080820C3C26280C9B
+:803800000021000040F25F5190112E112811134211012246012728182338816822822248225A28B1410A2C0216A28520A18288E8802181A21219888609422008131481080042E8204C81FC3931001B16C011193111131102192491126681B881A41229226222422C23246117248E2260214A888191314A882484B24291221812689280A440
+:8038800084203623880000486824C860242FD40E2E112082220222200220D82281041904820042B22882284828200142C8122A09188088D2120800228018A1841984082400820020D8C8012A010022108202603212141200002120040080840200800529A4242001282C018064162842601400480000428200DDCE001140C1513136226130
+:803900003620018848172120E1116226241CA2148AA442230C8014C25162A021188012114102A01828002622048A0421C829223A62284242247FDD042211001F24421182631221112301483400302280220422428002214E11280029A44220110121004246012448800848882382AA422A240824BF480718001118A0122148A01290811820
+:80398000188031314825C24112C2482388044200425838128042012816021A888282A22430414224200410024248F0DCE580A1121C848102221C022B42103121250188400246022B2440B11224A8422248209221188096626228181AA4121A0448221420621848240000231882A2822F140500480080011140022290422290220010A221F7
+:803A000080210C30214A1211232488812104222410B221840210210A200880061082044F3B0B4021621212008002921848805122A014368122010028280018A0414200000014230210C2822008002428C828004200483F360C12141C82230128141429C48214190423840A2A941168124AA2218082822482A12413258621E823848482C23C
+:803A80003127222E12481168218214821CC8422682888202290C624AF2DC9820A82110210218282228181224112C012522912210025021424828E01402282142002A01004A012C81868842010020280442000082460318682002282C2402C09240022C4891A12818212238424A01002D328682022B121818422521981286820323840228C0
+:803B0000482581024022482202212800BFB60B480042222301202282220212221818000040814222A1A4881C0200100280012A0180024A222482120223040024428800F091662008280010021490221081012822902290B2A092242C4842214102402202281D424002242840020020840422004848228084F241CF00114840220811220095
+:803B8000119021166211002002140018323A8804422AC111200230211842208102280000111180820222100223F44E460000001212001800211114001288005224001328A128282001001C942280026820012100001124002123020040F1521490110026C121280000190480020010622120021400004200228001002C0423210200400294
+:803C0000C2002004240000F09A4B0000007022921130832728822C282869288631222088211841E218C1422480A887239882241421128829888AC882880048284602212944020022208242F26BBA1021082004181218281631812E1160140023A112384081110180081218E024880B32184A22028041024220040024282428002800223FC4
+:803C8000A30A822AA14240012226022120022C022818000090228081C281424220021462A042298184010028800262804601220024209462423F1F051AE11A828256112992521B2218F062A18A9882142968111C39122F21A3A1321C23764103367311B142E82D22A419AEB28E12111B251182182308222B22B0620224684A2C14018A1202
+:803D0000C222259222484E63F0495220242912A1261A61221C2182622919C212F0C12213B291822282B18293818E23388632826E229AA2822F23062B41322A0427253ABB12E223AA268A018024A4462716282D42C022234232222A2608A0648D43501148204262221A32123D223F229911271217123B911E11297B22E222816822A0431B5A
+:803D800011D0128897122A95438AE1224291222F21E322E4127742632A4AB192F112229E422E22A06228242115F142432362242A822424B2222262226FE605200222A08240022061328234122C32110000A813A18480822104909280012322A412200218004800224081C422C02248288002426FD546B191A111281D211BE42460231AF20F
+:803E000091931BCC341AE128E81CACB99E912AF192922F2BAB131F1EBCA149F283811F36A6666E422F2FBD22B512E127AF23FAFE21311F217122F282A28EA2CAAE88BEB22F22B262A646422F24B4A2DC211482B24224A2444A046AA6226E62AF6D4FF111111A051D21CE412F2BB212F31131123F3AFAE3E11B281B311F18F8C1D31E31BE54
+:803E8000932B132F2BFB3232BAFB62411E112D138E831F36FC73712BE72BDC2BDE3AE337E723B2E2FE61713D732F29FE82822F21B3D2EC22F2A2A22D222B266AA6442B442F2EDE335422282F2644F262622F2414B242A6222E626F264691113A87D211B241A6337031F313211F11B1D1ED3ABA92EB28F842411F2BFB93813AF39292BEB231
+:803F00002B332F17A4528ED215F161E11F14E724F1D2D22F2EBF92E937AF23FEE23F12F151722F2AEE28AAB82F2CFFB2B22BBB2F22B262A6624E424E422F2CFE43423F14E422B24234222F24F46242212B662AE22636C4141F19A133221F12E214F432222F23F333332B233F3BFBF3F33F38F293933F28F8C3C22F3BFBB2912B332F29E99C
+:803F800022B2A2EB1FEE31E7384CF361633F17F7F2222F2EFFE2F22F29F9C2F23E32EEF23F36D733F782A22F2AF8B2B22BCD3E322BBB2F22B262A6664E422F26F4C2E23D432F24E422F262422E222B622C046AA6662E629EE8400122008001148226011400C0224002281142003110022100100214100224C09200400280448244022C82A5
+:804000000420042F86098002112210A22134281800111C091C298123932211384001282A2588A52120A81212481A92829A12A221213042602248241100280048288042F17862A0421B2126B11122B611324219B642B111B26299212F1439112F1439312F142BF24291A22D911B4B4EB1AE421CEA22E415F2215296E12264192CA5292E5277
+:804080001B2D2E421B292E131B29421B292B141B682394612B8619F24281112F34A84A2F242AB242AA4A29AA424AEA2A74630D2A95412E511361121B41272619A61619F222829AE434A3214E931B414EB1A22F142BF2421133F142312CE114E228E115FA2112DAA2425E212F32ED1DA292137D22A2492E531339421B6823B281362219B49A
+:8041000062A8482F149A212D838AC4224829AA482B24212BA486F223E7008218820000000000000000002100800844000000880000000000000000000000701545820144002CE152E1214604230111109122188B29C3B1A2218C088A829228421D328926E681C4142981A8186CA821240052232406884289242418B248B2840422282082D5
+:804180002468E460424B1860923E82201821D31824C2B8B088847CC15224A082E0C2014D215014115121548821228CA212481B162032184C28B284311A23784A03003384842882D1844422865418229FBA0225241CC4211A886111260181A081134268142F12544289F23882124FA62118A48315E41812B521992A2E4242198283887814F4
+:80420000A314241844422B41A925D8380483242624C4A88E441266444282068AE2A8062A614140682230A61AB42691412B128C028A8428C8129244A288C0218042281462548883D12411A812522A8C224288A8214988522282424032812148281028A2243048F06BA12002144083828104823400842911018A8418E1142992888A0400809E
+:80428000222205422005201221021C01888A02004840084820182801F09F3A1024226A1149036C58814E1289A224120045638E2B812659242C92241458308829E6C21572986444282C0CAA84A2141A42B482622418A884424222234583A885982A04898E96244A9A88F096AA9024221B28141D16402424648A481840C812C6A881899284D1
+:80430000141B182691C8002A2411B21C9224682C28A42828581824132824211A888826B2425121808C2802A6A886A04A8908FFDE0800802122C29285C1126032002454172230C12426E2440212C28918E2C2048248124820A414806242282C021C01488200A04818898124240447821200AF374902C0482A9111008428C501C128490946F8
+:8043800008288678420A18C42E812B81AD228880014A3849122371558828478812462108401228C4A89848826240982823B22601F0B75C8014885681428480126826114D421A160292A6484981A2826908B03864448B1822200513914A40122824812994282C65841B28214C8681572200211A8204D0828824F4D141A0212A512400224CF7
+:80440000D42601129A922284818C0412252411D4852124020026022F8A5428831224420848801887728692284D11218B25922A0840A81483812899448904A2F08E8B8025522416213428486D22263838A84642D84A81C4188B835C22D8E2F281144B844122AB28C3C41A22384AF1428843E52211D83401E0817822F144229CE888B71594D5
+:80448000214E282F8DA2838A4182A458A981EA88D42C26B228A184F0492F30221283C2281C014116081D442D138CA21482818A4442D818819428128932814227222824834C88423A481842C81A029614C2242542D82228014887249281A0241218304843888224024912011648424402403218248C4E458A644643C19228C02800201403CB
+:804500004C3122801822014800902214400816220423048830A80084292241085F6F0D40C42244000011A8104302610062008800908289016301102A046522011008004648048744101A1888840422412218604149F2511C00120014828C4264548882280043C44C0028800434400624282024092800000000004200228045080024180098
+:80458000C048AF5C0A3022841312280213A2214428814C110229528400004210981896050000860891001992443820028183611417818418604122442001C04C00C7CF2048045C048C0234D04201241084018A042C01921904004B241143349412002424402225C1820042824181481014083018104812088361925FB146420858182011FE
+:804600000260222C6852112C0441214B242D4428890228410040C26246822C4401834288F2214200149110084022820280428812A824182384F4AF736021182D28812C4354281218818301163818008B212781801104E341A814244189094112358482C1124303A12A8181C2144AA116381E284C060028808281622143C226F078AA0042DB
+:8046800021D0180100454808409448C01800114C01281328164D61412800428008A0211122830430114A820211400848008180018C2422E1370E2528A241212184221628226142852484B24808004912B84A321C29022B142588084A12082722160124848682044D184911341441516044804208403428257448042344F4BBA83026B64428
+:80470000E842F1122287822423F2286423B1B4712862254D46AC94644D881AF2E42249B38252983C732CD28AA4C124A24F647642B24A8934A250222E22CA7223ECA1134E11C5484F8277483818262201122A064F82E221A2124656446E2912FFF74962214AF322322354886D248C024D118A8918D387B3429114C458181C6182CF84B544B0
+:8047800014845434AF3651421E58821A66292F6AC8224B111A63453611A848221F41F218114F4131584D651D688127824AE18804CD18818544E881B278D144F12464FF4B01503683711DD91121312A5F913113CFE2D2AAC2298F485498AF44385AAF46F26E44274123A1823AF2218884C654C557116D263A418C344912B512981215E22115
+:8048000022A211224E4C8B2C441F21E134E184964C85384CA02AE082F11E22AB528CF4184287848F8404800114C08240032284228C048C44A2416C22C1221289028110981128214488874418444024423C2290148C048C44C1484008478128C024D028024212424F56076F28D266F21A329F31B312F92424AB111AB13A91B8CFAAF91B39EC
+:80488000AFE351EE6F487824F4AE8C8F82F15571CFC1A3B94D349F99FB4C4CDFD27288E813F25C6E4BEC8FA6F6363665F6A6862F42D3447124F4B5B51F33A388CD2817135B228AF82C388F82931125722AFC1C1C4F41014F43A3114F43731CFE6A2CCFC5E147A326DF3F42F216326F61F71A228F21F31B18CF62B23AF33132FFD3F1A4B479
+:804900008FCAF93B39BFB353EEEFC9792CF6AE8CCFE2F34361EFE3F3A6867F52F3BD9DAFC4F52D2D9D9C3F43F27C6E6BCECFE6F6363625E32AF92234CFC1E121F391F15D276F4AFA1C3813F225248E84CFC2D2D9F3253525F22A2C8F81A1114F42A2133AF3341E4F62F22A4CEFC7F71C7CCF85B51B0963F21276AF23713FF73E3CE5B43A13
+:80498000F13B11EF23F38EA2AFEAFB1B3BBD2BE5FA8A8CEB316F48FB38185F17F7BEBE2BBB7F52F3B9B9CFC4F52D2DCD8E4F73F37E7E4F2BFF4C4E25FA22298EB26B321E1C3AA1FB5FF3F3A4A68D2C5F51B335B384F82C38CF82F321362F22D282F218188F85A1224FC3F334342E24CFE2F2626CEFC5F5747C8FC6F7243324672A2F61F3B3
+:804A00001A22FFF1738FFEAE26AF21F31B32BFB3F2A6B4AE3ABFB3F34B2BE5F2DC9EEF63F1EE9EEFE3F36765EFEBFBA6947FD2F7B5978FC4F42D2FDF71F43333EFE7F6F2D6AF857586FE266C8EB26B321E1E4F63F3B1B11D2B2F2BFA1A3C5D25DF56F294944FC7D3DCF248172F22F24E688F84744CFC24243E184FC363E2CFC2F2284CCF35
+:804A8000C7F7146CCFC6F776E11004210084400884266281344044480428828F441241048304004A02421800B024012B1280011448A04124488004C024009028124604FF890C1828CB1211184C22321145A228E081028CA41480E282C414224422404A444235248054486B820044212814CC220214163C241538280016684484289038127B
+:804B0000AD242A044D49FFD80F2CF411248D131F417248F11124E3D441F26A111D64AB961F88B24AD985F44A914F82F44A914B4B2F547B24D81AFB24488DB14FAAD418F8254A16F1244A9E212E4A875DACFC9824ACF4D1242E421F497228F2912C83F49124A3F4816CAF24D1C1F64A911F81B64A7995B84A79A4B84A3B24AF247B24B84229
+:804B8000FB34484AF9244A5F9303ACE441D618F5112487141D248B14288F12D141F662841F88F242B44F88F642114F8AF448811B4B8D314B428DA16B4A8F14FA855289DA25BC48BA24F4C8212CFC58251CF888212EC2178D2E4A1F49A6C21FC9A2841F887222D181D422C9682D951F81F642A41F893242478BAB2426F842B226B842FB368B
+:804C0000482B842E5ACFB10620080082000000000000000021000000000000000000000040040000000000F01C2C241644B4211188022E162845385882AA41482E081E2887411E8827884548648A8D614C2884D294A442428C248282AC182312D4815818484227468715149C8436D23048849024284C8481239648F0B25C20A6288449D385
+:804C8000243114604539522483528213813448C0824A82E66224629243054A02468452149722A8294C0842CA81137222D4268361318A8288084021E1241128042848893C181621F28C29244936C48F1162C230124B212D564C62454D823A38284508608A4B145E8A45D22CD28422F91168492C28726C91242827AA112628B818A84A4A33A9
+:804D00008865EA4592521F44E31803144F22A448228C6181A143821224E12AA4248321F3E92A808102124B124480521884A342C81148AB84C0122688E28A04118F44022848460446D18124A4C280249412442591210025C2481CE888041214484220044A8294181628045F120C0041842A0126121114312810280822293211299145893250
+:804D8000B48115A22400114C921270222201124110042592212260248400148400200110088B24F0EC27244302391212D44235188383D64824480A83E1C431C25C81942C27284C55816A214848D1A455848F147128B4583294468886B423297111081F42D92858348992848A819283A01869B58894A889A48320322800BF6C0669021D2472
+:804E0000807112E481B2238192452A181812684123E65182E5A2D12594341992282440D128147419B21462A62A99524890915041008CC22410B41A682288C09A16042884A20000C029001052824C82048146141808811A9848822115122498484F88A1141CB84802165418434628411488229526188C41F2A11686532183820C40410148B8
+:804E8000C638884A81012698288B24F0685F1414843048150C804228D55229662848120046D142013012C43094E71A1C841481938416D14292282618B11424024A018CC8121244741384C212802C81255848210085E4CA4AC222C126B45522D222A32112160290158CA28189A41A86381C608165A2281CE1983418A08181894162244F1427
+:804F0000C2528A61A118488561128CE29201444E8426D8848CC1328C9844B04498282588A1822D7C1E44684F440958C018205181C425211445482A54840016021127441B84C30480042646E428544811200847144C12328224442C98142D411922058CC2884C84B118121A1284C2188820E8220C2F2211E4C2B129F11124A7124D2213E342
+:804F8000A17441F681181D1825E2C831182296921D1721813B484F86C814937848922D3E4546C413A415B454B2220815761411B22B58218CB588D1427144F37184478713FC22188E1AEC25F548B28B85837486D848F182184AB944B18CF2ACC7E01804401428911A001280B648882424198854424B4144128581C484002538C84B12C2212E
+:8050000056F422985A22624180322419D2282801109841204804643220827224082CD4F8051A12021220120224C0146223038021286242CC14944110C428C018C228E018014DA22210C411881A82021C0228841CA24241C01B26E8C8462662428820027F560942228012123841C068824800D0828DE81451484602001D242C0865296411EF
+:8050800000303C2325A18558895A81444F81F41441484C92481C0130421CB482840458828CC44400F0465B20080083921226C2623028292221044114A41692282219C228128322084444411C0200425C068984011098148288128420480480014A0190448246F4517B341141C18051588454008C481898442008482448885C01C031241C4E
+:80510000CC2A1C480A44100884201801241538111245321114A02415C284216A012C21A18230B81F580C468424C22C201144F842242B8100884C01CD228A52182544C249104126281461580000418128412200812601846016212D114051848902244C2A6284584992222DB720912419D42211C921844180921148E90131128141A08282C0
+:80518000812219145441E021C4292D188129C2434714B0112441E4C18843A2242F24C229A0287041120470482282A5842A312442488B73C0220011001B141190443022428021344422421444424AA8281092982688486412160820E88258128D2140944620185482482C0498482CB1244818189284D08208DFAB08204808CA014D222890C9
+:8052000018A821A041460E285896488122214109124502459817283C942811418611C416104148041398448100B0146A41405C844C8112581CF0B6C214251DD141041D228602464854219444C02111114901148D8446283242D014018880814E0C14411941C8826899029216D84B5424C0124C7211C23280C81282C08B84882B4147887F3A
+:805280009F4DB342B2A552458D263F2CD3869124A5F1244CAFC7F821488B622982D543F57C81CFC15D4A47525F18F42C498D6D1F46E528748E52514F9154C4EF8BD244DA8B1A98986E445DA51C5AD167AA8F88911C4E1199B1A60A4FF4744112D221C511974C6D128C7494B28CD82478182CE4DCE144FB59FCC045828D2A1B12E0237A69CE
+:80530000FF214427248AF218A5214B44457414A8181B262AB1429E223B886AC1814F42DA5108AD14CE511C782AC8141FE3F324441D19224A24D8497A21A141F147811F1455CCB129B84173C27413B612EC8AFA74A246F84248279CE88E784DC18CF441D5F0351227441412879395B112F4442A281D122F28E124F118981725873C1123F85A
+:80538000546B8D1A8FC6E84432111A52992A925E13F43BA215F611512693442F2412AE5D5F69B138EF11F114242E2D9E6E2F7656C83F3BAE318F93E33244B144DCB4F31844AF48F12A743E348F43B7E6F124848F2272ACF2C1160014501600484058148608481484448A0448648200448244114211814100422094840000E022280120820F
+:805400000484A048805418828182706E4CF175772346F23432A5FA787AA784FD4BBFB4D4EC7ACAF848288FA8F84A4AAFA4F72BAF1F39F96755DF98F94CCCEF98F8BDD9DF81F169C95F9C5C92E784AFA3F772733F33F8CECABFA8FA52248FD5B6E8BA84A4A7A7899E97BF37F67E5B3F1FFDF1F5FE3D1F8EF821438F8FFBF1927D412F1CEE64
+:8054800049F55A926F63F5D2D26F6BB7767FECA891CEE29FBF4CF331373F16F62524573137A1AFB5F76A2A3FB6F64F41DF18FBDD9C8F87F3FAFAB7B4BFE475ABFFC5F55F56F3C4C4D7CEDF7EFCAEF9CF85F3BFD85F96CE99AF95F43BFA5FA7F72B898BEF8F59E843F6186C1FDEBE81FCD1D9BF8BFBB4B7BF37B75AE75DFBD337BFDFFBE576
+:80550000A95F44F2C8A81F6DFB4754AF8DFFB8E6EF27FB56566F6CF9D7BEEF65BBDEBF34FBF6F2C8145F77F72767B5FA2D2FB5F868688FA5F5266ABFB2F2CDDFBFCBDF88F6D8FA3F14D4A9F1EEEF5ED95F56F5EDFFDFFEFE67E57FDBFD25159F9EF7CFCDED8BF7A4AFA7F77A7B3F33F24646A5EFE5E1C7F7F5A91F4EFE94C5AFD9F8B9BFAF
+:80558000BFB7F67F5B3F5BF9F2F7AFD3FBB88C9FF2F472323F25F786D36F11F1BA1C2F6FFDB2526F25FD86566F4EFFEE2CBAEFAAFB572C141F77F32367F5FE35373F23F35A7AAFA4F6466AFFF6F62FBFBF8DB172F3DAFA37541F65F5AF8F5FDDF7653DCF6CFCEFAF7F5CF4A7DD5F76F1ADECDFCC7418FB4B43BFBDF7737BAFB2F24746AF4C
+:80560000C2E2E7E7C7F7F5F55F4EFE3DE57FC9F395BFFFB7F24F3BAF8FFB6BA7BFDEFEE4ECBFF6F263237F25F54655EFFBF9BAB6EF6DFDF2724FA7FFD6DCCFCCFDFEBC4FEBFF64F8EF34081430222042F8241248262109408244B69184A241818A94281144820081318D24188121833426E012084D818418842A8114C44822841448148679
+:80568000C826402628044604CB22F0A41100401241C34846C2488364812304830480744295414604181D48443568412C654840812125022CA42122E032E1416412122E83126613018A94128AD422A94A4E82AE4818822886F83494C0421F4152281F41324C1F41324A1D64AB141FC8B24AD981B24AB985B44A79A4F84A914B422F14F9A44E
+:80570000482D954F82C4914FAAC4855FA264555FA27498E1A26459ACE44DC2CA1F4DC2421F49D228F8912483F49124A3F69124AB941D24AB9619B24A9945AB94478AAB944B42AB944F8A94924F8A84F9244A6FC80B2D4A1E6449E4C1921C1B6123D4C1B646C12C2F4651C12BB44D68237424F84A154D482F34EB82D452D186D412C35A4E68
+:80578000252E8A56F524CAD2A45E2147B25E242E4B1FCDC2521F8196481F41324A1F41326617C183F48124AF463191AB2459F64A9443BA42F93448AB84AA949A6F8B84F8245ADFE901000000000000800200000010828401000000008008000000004004000000005012F0E79980612210425A84C51258844B42D60188818B814C8834217A
+:80580000CCDA480483EA84B2848618A51685A424E084E2840145C814C0212863E141A8488F14F811848394842F2562195844C014A4830448237164A8244F82F4CEF9E034228852285324C2E149D3226B2889E288C242124904A758C011246619644890212C02272214CBA11CE822C848222D2126328482A61162424C2212126198221318BB
+:805880003188868832258C0317C6828501BF6E0B4E32422C427A41D4C27264D882F31A244694EF282E4280C58619083887443CB62C688A7AC8814B28128CD21262C2AE481D728994248F41022BA4F0138612421D244C3A485D82DB682F13B8E15114818339283D442E18D0A3E684681247879F880E14282110081C4864288A82618888168D
+:80590000D84808874413D25808A16044412815A224614298148C08A4112215A4822849E848B2483811218001008841608280C414433248F0C1C61012712201260290610000408801904444178A282084A4248440280900C082C0428A021668141283122124412241230812242220A814828902CD7E80034991326D414B34DC12E823E48414
+:80598000189918211AC8495B84AD2212AB2849744864849D2494874842174316336C2AE432E441C848284E214C7111F224812445F2288415B44269218B862A2CE4880419898AB248886826261888045F1E0818111B212C324149312966A143AB849184218B81999181B046D142928540E844C2498D24481C02D628E414E24881E428C241C3
+:805A00001E421992A5167A41343A24D2181AAC681A8408988822288288A3843828F09A6F902250621247222A44140800180048466682C0888C366C4215084A4868418D13492202218180122419023084CD2114482D2810924923488143E288044A821388047F610439E482116A16833126AC8391141127A147B41E28C15925A21C44A14C8A
+:805A80006382A96B44C928A1428860152125448603231432242684021601348C68253424824400898C781264C14122324CF25FB2C024841321354134482C423868901428860141248116413815218922A24185B1176842604683621449B48843CC81481651427026924823B1117622B8C462141A82889488305884A2800C8D824F1E091868
+:805B00001004418440888211210216028D128442472A001504D0840246A2414120B4180280E2222411084B21844C32280018260889D4A4412203824223464C28D45845F211243261384A712AA5618B1225E8B14271217812E85138538721D8A744CB81899331DB218394A4CB421D683B41721127462B2487414CE62892642F1822A1122D40
+:805B80002443712ED1483218CA7272B88333688AA1848516B84A3A882F88E1A2C1444F84C8188DC6DF8B0F48D01811511C502AB02481D428A1414048342481D032125448824C42084014664550482E42128C012CC424C5012212272419D21A0146121152844A2188A141444B4828222822CFF10758C02444C04D15C6258345E443C4225665
+:805C0000C2411745493414304A453124497214220641657144C21147248D118081F24134211124198192814233029488839C828AC48183B81438A8888028688886F8E45D401A08138324334818A01C9012418A0118136212286084182880E4820482A0214532144C22011A22F114282041048290222822424180A14269B422218A11A44278
+:805C8000413F780C1E242604212281301220452841684120C324519048200124450181409C122C9218C018800544281200301218150A18851101848A0184C1848C82F2EAF90011447018010021284004302200C0212816884458848C046082688C0848C04284190810B441983899223449882B141C14082314082004284A2221B4E80886CA
+:805D0000118102104124521241302284901381172850819100108132A2118A12217411488241429122660194C02112471A2481828D12450380B228342A2CA224821A0AF0F86540C2222C2411061246C12420031582924C8081222493C41B42638D84611449CC4170248184B2288422944490611048744442983446312A208436C2424C289B
+:805D800014482204D024F42DDF00C11185C148904984248582C4881008148181648003195242110000244441418304008C1184864428210442541811181800301418844A01EFA94BC22424144342C12450846C24021148001506451264211115247421B28452412B2415744412A12442104254141214278154424F11A241C52102C0816378
+:805E00000125044125381866180489F2ECCBC048488C44D842222122D48111084666124D2900008849042518628118848884294208888D4188328441C80089018121437511624189821288341218C84841482908BFD5096D462748B9D231F15A242E3987E29F22F21121CE642FE3F223627653321219B21882D2C11CF31C52845A043D241C
+:805E8000ACC4294FACCA1B2F82F4123947448B17683B526B221F45F2249853B1BCD185588419BA14F121CB273297B68BC24764AD9243F62222CF4ABE68B224B11E7124AC1846F661E1A0254786477284841257142F85D5EAA513188B911D441F89F14E418B1135545FEF1692382FD4B251D1F47961F2444AAE2146F428412B468F3533445F
+:805F0000AF21D184F2729A56F8D114189552C819B668F529142FCAD569F41814CE681A64B89F11B48114F8841C2588F41868CE488994482AF6E9ABB021D13902EF43F22541DD441A545443548E4A04A5D84CF421144D454F126922F0744D2AF824652AF21E6D2E81D7447954415D2457489F6284CE44814D271C44E151F2221146E151E232
+:805F8000357658F342292B249B912B187B152368149E588BC55E122F8938C22EA4CAEB877A8CD8AA0B20020000002C088880484802002480020000008241822008824182000041100400004400824400003B37347F74F5672EBD2EAFA3F73C7D1F17F3313EBF93F35B598FC3AFFFBAEB6FDD13FC53F2BF92F4A583F7F26FCE58C4DF98FA9D
+:806000001858CF9FFD3D2CDFCEDEA8726EFB4E6FAFEFFDFAF9EFBDFBFA3A4F43EBA1E92FBB33F311A81F23F83746EFCDDC8DB121B219F5B9B81F8AFA5962AF39F38A89DFC9F5CCFEAFA9B3F8BBF8F33CFCCF9DF95CDCCFCEEC8DF5E4667F624EF267655FE6F6272FEFE3F33E7CDF55F3797FBFB3F353518F65FCF8FC8FB3E225F613D33F06
+:8060800035DDDFF49D9FEFF2F2E6866D451F98FA1F4C5F5FFF797C1F18DEB87E2E7B2EFF2A4F8FD2F696B73F3EF774FC4EDBBFAFFBC3D45F45FD31B6BFEBFB7F3CDB569FC6F635749FCFFFEDFD4F6DF9D353AFDEFF9D5CDFFCFDAE368FCCFAF828CFCDFEF8BAAFE7FEEECC8F8EFEFE7C37B6343F34D437F42F2EEFE3F36E6C9FC3F3696F85
+:80610000AF95F73B3B8FA9F178BEAFA1F752723F1CF5D351CFD4F784B4D7B22F2EF87E3CDFDFFF7E7CCFDBFD2D3FFFFEFE6AE94734AFF6F62217AFD4F5DE5CAFF5FD3834DE5A5FE7F7B3B45F41F7A82AFF43F38D8CDD2C3E34EF4EFDD1D47F5AFABB8F3F3BF99BA97F5DFDCADAEFEDFBF8FC4F4BFE74A44F9FFBF4C4EF4EFEFCFCCFACFDFB
+:806180001476243F76F62D477FF2F23E3EEFC7F73934DFF7F34F3DBFF3F3B8348FA7FBBAFBAF25B5D7F4DB58CFD6F6BDBDCFD2F2C98DCFD6F7D5DDDFC2F7BDFDDFE4F5AFC9CFD2F64C4FEFF6F43E5FAFDBFFBC35CF77FE7C2C1FADF4D5FE3F45F51554DFEBF3BFB4DFC7F77D749FC7F7FDFC1F4FFFA7F7AFEFFFFBF9EF9DFFDFDFAFACF9E8
+:80620000EEB6DEB64F4FFBFCB4CFAFFBF6ECEFCEFAFCFECF8CF95FA6F0221110427822410848268124021400C0221189122134114A024A024A122284B14802422B1242001890144082048C4441084834482896C82412428244F019B2601A2826432892612228221668261289015C21814228343120021302272240022444491118028002D0
+:80628000C46302188CC28240A2213440244122C8222220A21447228FD4092E421F4152281F4132481F41324A1D24AB141D24AB9419B24A19B54A3924AF1439242F147924D812F924481CFB244A1CF8244A16F1244A96F1244A96C54A9E24ACF491242CF4912485F2912483F49124AB841F48B24AF11124AB9419B24A19B54A3924AB944322
+:80630000BA42792498924F8284F9244A5F920147221F81D62CD441BA4CD141B24EF11124C7241D24AF44D94192BA59C6925B42AF4421F242174782AD156B428D352E528D155F227C18D425FC98245F2224E9B264594D489E28BCA5698F326449141E6CA7148AF26A1113594A1B682B345F88B242618AA9B1A4949AAA941A6B42A9F9A45A2B
+:80638000DF1109840000000000440000000000218001000000148041084800000000002800000000250117473024294145216284239614002A31912C182428A21C5146024C658244CE2828C72212A42826880222254CE24128C1882D259CC8268881841A32419812704102184788212A34848024DC964F62118E222821814447A126133860
+:80640000F3252202834932813D268B83C3D2A469824B811004004712456924914A022C64121C12228111321199912228C68618489881211C728A044C09628F425414285F9D043B2166D82342912843B42A3521244673346213A28504A6F1548181CCD622D124318844438DF288242971217C223D281598412C92488591262B148378222331
+:80648000C8251F81C8282688F9864183B1280119641225988898C0C24D484D41E26F7103452211044058241614AA29204822C982D02232B57084B848323460820000C04228225024281C0918165418122502C0642008135822C0944125A4424C2202708E032051141224444018024228AB848218C0A12688487842944180C4246041004DCD
+:8065000048D0228802102248012342080000005018160841890A4A1A94A84392B61479626222285982D143732184062302142459D8811A42321C13E28A21A248548C881462148C2472C418381C839A425605B02858412B826F2892882E428CD412F2824994253C1422248911161AA84A42425FC70D49020014414D311D286880062798D0F1
+:8065800014788138218CC28C812D7C284031844212144648DC688CC8188A82941782407221263822842C02223948115E18122443D1860282904849F267EA1425D12493253826C6121014420222428229C122883012198298414A984426481284046850284C5228800411890A8962482988D42844C1488430148302848642E884B224AC28C2
+:8066000048FF6A4B122524514812258811C213462658248C03469822226E11A4302A47211334454A53842B84811146D4222232287044E811A44226086323A4186508104461AA862114082E12C086E0248122B43D068465F144292C51842C81F6882430281459879216C089122113C828412D48412449011C982223014548210417A224486B
+:80668000008480C41137422D444F18F22218224C911C244301882392282902815FB90200241322624245E828410850824012444658282244000030214C82041860C541430A224119918DD01442282211880400242022C4188C6141841E44829FE6037125E571D2187226F82A14CC5428163824111D7A1658244CD41468828D2289782A14CE
+:80670000EC845141469624D9F222468F24822155421E4C49B424D821A6344CA221C5C33826E5889415112364122D1186D814D1A40463430227888B2116C8744AF8F8182008811684012F22E14142C3482D824022512826D822B111C421902241421142400114418932228902443450188241482CC1286B12C44AC82824821884A0438939D7
+:806780003425A44240D8320D21282832114142496412144392225114142211444004441518682289C821E6C122224E212C241238420040120484008392291810C1488C220210081088E44D08244181242041240323081229728258241281A338288392482A849444482A04408114488484C424804442A8241322C4154A21C41622428304D5
+:8068000042236486232414C4184921F285EB3084400281003411442411100425052224800445825212130144214122844400467422011012442208416011110081844200804418F8632F2061115041601A8100288144918189924821501810113822004185C2182288831122C11487118883C11828442444107A111801A9D12281911218A8
+:806880008C815324184302249F89032342126152A544125DC3403428281056419025271243224288443825414D48421318D428324441402814D2244254841415189B4843022E18901444A544444484146241214114FE75400149031826A5524247228D214008110000D018041524484808410000228122C06140218292262A44642400144F
+:806900008022042222441E2E80B32204BF8609001092212D880084181188A118812C085214125C022301150219024602105824422150128D228084041210446222488400891112088C8404F084A17014B19452D24AE161321836114844029400604245184104860474524D18324165181541B1428282C22113C2822813481A98253D28274A
+:8069800021142150812711C0228890281283122CC342BFC408264A810482408212021144C0225081286410058D2123128119918A4068441888944C48D4C2011D4400007021A81250482228472112450241214210D284F2CAA2E051F3932517134D5313F938A85F3574786162136A522E29951151521716221F445397C453F2492595AA226B
+:806A00008CCA881D228E21959161844C82C26C49D222F5A8438F83922885E486D23F82FA282285845221237219981EA1A88324723EE8A5E183D41426F4ADCC1411A24CE242F22216158441DC18D24491231AD8E272865C894D24653A22D01D619426E8145A52D7245F62669279F82422441F13B16EF4681A3AC81DE691121537826E22356B
+:806A8000674227A427456D4833E11253143CA4411E4847212CF454226C94644D142668228FC8437226D22451AE33D19CD216F12A2C7D6271AD21855A2BD0187124F21A8A9D2547988F42B262D2489C444F42F15D4825F55A11CD4487C52D4467AE8F64C68865744CF263425D241D246117E27914EC84F41D159CF531318FF27112F8595A5C
+:806B00006961E44F22F32A5C6F82D3C884514A8B248F41D18CF65E1E000020480218C092482C092C094E92E024092C0118000021008261D22009524100000000004004444004000044AF9A4AF2A5325F13E333F13B1FEF81D1CDF93B3CD77767134B82AFAFFDF3C3AFEBD84CB894FBB1A59F9DFC6EEC8F43F958548F4D794CFCD8DD8FF49E
+:806B8000F4E2C26F2624F21C1C2FC8F8EBEF9F1EFAFC7E6FE7FD62EA3F46F3C2D43F8EF81C1E7FF8FC4F6765B66AD669F2465C5FD5B51891238F27F54B4377146E72EF8FEF84F66C62AF27B57AB77CA5134F66F61C83345F23F3755E6F21F12F6EDF82F93719AF87F37D276F53F23DBABFEFFF7B6AAF21F21E9FAF9DFD5D6DF7B1EFE3FB56
+:806C00007AF5C5FDECA5EFC6F2F9DDEFF4F5EECBEFF6EF73E162F2222EFFF4F4ADE3DF7BF756FE6F97FF85FC5F42B7F5DFB8F283AFEFE45666AF26D46FF24E54DF77F71D153F23F37B72BF75F55F1DAFC5F7C4FE2FE6F66E6EEFE7F57E7AEF47A7227E723F5447F235367F12F6383FAFE2F32E38DFE3F33F7C5F6613F6B614AD8E9F32D163
+:806C8000AAF29417EFC4FC6474CF92F2B23EBFDAF26C6C8F4AFA5A15AEE5CFD6F787E8EFA47C26F8143E2FF4F62B2FBF4FF36CE94F42F4F87E3FC6F2D3E41F4AFE151E7FDA782FF564452F42F2496C7F56F66D3D9F43D339B3523746DF15F54442EF8FFB6628EB66CFE7B17EF75E684B464F62F335A1245F6BF33F77EFF1F16F2FFD3FFF65
+:806D0000F3FB7F7DDFD6D376F2AF2FBFA1FBABB2B57B86F71E97FF7AFB2E2B6FEEF6FF77EFF3F3EBADDFD7F3A5CF4FF6F687EBEFF7F677577F767427FFCFEFFFEFF56EEFEFE3F7EF6E7F4EFE77645F4BDFB9F2ABAFEFE6B626F26E4CFFC1F35B795F75B319F12933BF95F74616FF55F56666EFCFFF7E7CEF47F77E1CEF87F67E2C4F42F23F
+:806D8000647E9FAB042E11A012841C416812842601348414404388528128A0240011282189129128314A220221422250145016843470246181341648618134001228124A222104271F20A22185020062280024288184208222022200148002C048284814484424112C0421190268E0410630221018011228801184038D243CF44C8FC042AB
+:806E00001F4152281F4132481F41324A1D24AB141D24AF249921AB9451AF243924AF1439242F147924D812F924481CF9244A1CF8244A16F1244A96E1A2645DACE549C25A1F4DC2521F49D228F1912483F49124A3F48124AB941D24AB9419B24A19B54A3924AB9443B242792498924F8284F9244AAF25066D481B61E5F31124C3D641B24C39
+:806E8000F111244B141FC1D268F91164ABB45B218F643935AF4429F3489513D148B312F4483547A38F54F1258816F424DA96F52448875C3CF4C82547A21F8CD2A4D441C6421FC17248F29124A3D4C1921A1D64AF44D941D22A9B65AD944F8AD462F924488D964B42A9B92694924FA2F52D28402888240200000044800200100141008001BE
+:806F000000000014204208000000004004280000000021F0B9781032318126642181221311F191221122C0152572847841C424648B8228458862A23028549125824C92488D222E821CA124801285C4212311A424328B820018252C34144D3A10886281D028E4D2054486A2811641C1248B182C028160118639888C2101A94141D4182C1290
+:806F8000485418290438D1897218F184224412468441012DA85082283789A54407991859C140D828084F820456844419F4AFD52444172F844F118291268B9238112C52141C322845D228C18414A74115D486EA327C24282251328B1A54155A41A6089D646562228D5468134472A1246422284729C3F4112649C2811312152654488B122F5C
+:8070000044024E2616088F21F4557600A0184041081121178920C1811789608146240210088147828148A012812974189182898219810122842415C812152802894818688181842C19144888811418F454960011000040040012A148002122818481800840182812881408838108180084144480225481002D1200A084000000845F780705
+:8070800060421004248113128123014055128218241C211A038147822100240000447014011DA4848830112324484A44C121403848812351840010881874AB02C024100410CA218003104A51122C0822A561A284C08881218184220084604182498131813088144D1123A48248A50420112A14B8C21108000081CF640F10010000411420A5
+:8071000021014C04200118881400268401882481424041081508494208000081111119120281004400502888412F6C033112002C0222141818824012098484200816948840096081B0218892818162AC62141B188012088642781308248890182181002100806584881F39042280124144024128401882084121442200884422102424161A
+:807180004208604192000020913414584624210824009082A02C103818A60489F2272E400451E1182241400122124042118108114400460850181504202502200840F21184418162823022A3144101882124204108282002377190251841A143722242442482218A2158922515C98460184443018C1608469111211D282A4421812992416A
+:807200001349C284C48372419248522B2127AC40232158822918A2290089E1419648F0F3DC1002265141182012C1115028004002812200884788104144F848242088A12845A824AC08002E111249A1282C59C1001C0885020024488184288228A6F89CDC00000000000011000000400811004008840040080020011224114008101201842A
+:807280000000240000F0E1A7000000100110210112121C18410184100986191801141230111608840082002001258148011181311512181818080000F09D2F000000000000001286011140084011081880688100400140282801C01210210810424A4118480881240024003F1D022004004001403114113200110040582990811E181B11A8
+:807300009E881B8882C0118C51919511518885384820011502841450141122340084004052222522F129DF000000000000200100140011110014814001001800000000000000212140120881000000F08C1410C84842480000001614C42422280010015032812981818988080014164101818C24C441000000C4414C22820200001012924F
+:8073800012FFC3048480040000008844821A2298810081840021811A01880000400181848004002508100844902A0021000010026FE4050000000018000000001118608881801181088400400150880000000025024018080000001002F098D500000000000080080000118400001110081008800800000000000000002484000000F0B69D
+:80740000DE1018282404000000431824220214101801A42412200982001001118588112824040000401854862622120800400224F06CAA404888C4410000168101444428281860180000212981911888880040414101848588C4410000210044448982020000002121DFF1060000002001821800001100008649110100400800000080810B
+:807480002848022502110000000081000000EF6A0E0000000000880000000000008184000000000000000000848110020000000000F01AD90000000020019888881282114051181569188414104118490880010020018200212124212400855888254802000000F029C2000011000000822001C01190811781818908104901004008A0185C
+:8075000000200113082400918184250800101208000070FD03000000809111981220082058110050819511485888008100000000001400842124848502254202818508000000BF51016722212AB1120129012C5123881E1317111B9817998D888E414E48D09114C1419518E984644445A4242E24C024805244412A722632122AB192A181B9
+:807580002B99828E923582F8121B17311B88179985B888F44848C048805488814AF4EC68F022222418121221C0112592821CB11191911F89B818F88841C2429415C141155888488FC414942422224480425444382F22C28218121A3892828E112592822D131B1119F8818881892424440848848588F469FB0000000000000000000000007F
+:80760000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000AC
+:807680000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000002C
+:8077000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000AB
+:80778000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000002B
+:807800000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000AA
+:8078800000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE2A
+:80790000000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F0F6
+:807980004FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000019
+:807A000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000A8
+:807A8000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000000000000000000000000000000000000000000000028
+:807B00000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000000000000000000000000000000000000000000A7
+:807B800000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000000000000000000000000000000000000000027
+:807C0000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000000000000000000000000000000000000A6
+:807C80000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000026
+:807D000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000A5
+:807D8000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000000000000000000000025
+:807E00000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000000000000000000A4
+:807E800000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000000000000000024
+:807F0000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000000000000A3
+:807F80000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000023
+:8080000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000A2
+:80808000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F22
+:808100000000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FF94
+:80818000E40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000020
+:8082000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000A0
+:80828000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000000000000000000000000000000000000000000020
+:808300000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000000000000000000000000009F
+:8083800000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000000000000000000000000000000000001F
+:80840000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000009E
+:808480000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000000000000001E
+:8085000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000000000000000000000009D
+:80858000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000001D
+:808600000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE400140410100204121892188080020292128290111009811800110484101848800000000004002002400219F1E0C1041010080011388011110018091119081128088A81819E1184181B91178AB
+:80868000818868181100118611414802242400002484218502250200245F1806000000009081141212828200100111180000001200008811141114190800001002001008000000219F3B09141011010012202121480111000000829888828E1114160120991840010000820021100200000081000040F2332B0000000000000000000012B7
+:808700000000001800111182884008008414810000000024002110522200F0F2EE001400110000000000001812888A01200100821CA88140010000000000000000002124000000DF3901000000000020010000000000000000000000000000200100000000000000F08A58200100124648144234488820290420011288874DB038082210A5
+:8087800008891891482341A228800228820040088C1142028421008C01122100F06367242820412802281812001100492804814C081312085021F065124219021B12284A414823412161324C4383611428142894140030222C5884200283065BC5241A0212811A6284282941648482A01842492884018A016E94848B293021215FA1041B62
+:8088000082111334321E428A42814281424144814121D21811421902212422984116820284D0DE040000004180011001000084448285010000284881B0180240082901188AB22201218C04200214840040180A004A02CBEB004400180000004800002141184885011C0144224C528281259A284904203126006022105881871284201108D8
+:8088800021800200400848B79E7022466342612D26452302290220426A3134C44581732198122284E82642481C0B413215A6126485D442026D13ECB11412469132124324049C12521841813028417068240643F2F77F702452214312F22212158202230200601114A125E141420B848446018426681221C4A35318320044281532142D22FA
+:80890000221127819117440026111859428190280043140849F24869104204444444000020460A214141A0125226011A8A5242644518087022964464C5E2215224434168414502281226688460A1000022400426A82480E4480F66144A324481A126743262817082382628216022A024A21011B218C413284423011148218585061E2219BE
+:808980009144242A01145094846E141564861210A41840026081A902288D25301880A1240011410018411AC21520110800100218000010044641A41200688100128082014423014501308212A820324228F0F9BE000000444009811140189814145094442622024400854102214004400888211100002321022800828428604410088885F7
+:808A000034481F620547254092248441441341488811C218E3416423814F82A482241902448012981210C14421484382A2211B814481001490161688231222C184C18A13C2468884328B68C483F45C6320021840426832CC9212D01A880211181110412402B048512110052502405484428C01258242A32120011D28224C44E181061100F6
+:808A8000881228100828226F37010041D0220128238212024004842822000000408A84019024361802842449120628222844002244100400804804288C48069EAB00282842A02144142581218122611110110244190112811D424C24022A94120084E0210200184A4102A0252C22089A724802200B81904486128428F6FF4B105426442214
+:808B00002141224604430440624440144842424462822410048184424D482332114422444982E38142C848188144494444089084104444141458486244A9F17EEF6094C022164C82541240C42B1C8204A41681840118365882002648182812220244242609281480444614C4411008144482308830882200484028F8E12980220228280059
+:808B800040C2121880024127820010280228203228188100188012014002282822818184441008002A28C2A28A82888A04B0FE061004184443019022418012C424384463018066410026C812002A41084844488D164800440085C4344128848C0282814541446244814902818289F5E3F180110248182424133311281022C11100284E1924
+:808C000084001E612588011904111862112AD4129142442100188004218001291A810185C24883011221292A27F299FB1044181212A42400410042404224544846024724CC020028408A954A844147818415043026818483041A3228430428818904844004832458484489047FEB064A011C444441081E48C04126434E8246814132148D8A
+:808C8000120030324118248880D22221845214216084182F5214C415890140418844048E244348A828204288042282AF59054B454D2826E26694164552224F1551446F2421423814BF447421FD51243E34472485781AEC42B112C132478122A7941290524D564F42E42194421E584865E66111D2A8E1A22734283AD2DC34A4178488131846
+:808D0000846848E5E4845948CB82E57C44544C8B361F71037022C6242941E74337253D2A1CD249B411B24216F21412214B4225F81841125B72452862828B24EF84820666A126225AD254F2142E6F4232262A1234342A744431241F4191466E22188B22BAC2448748C788C5E882B28CE286AA182C742268A48EC8DDDFD0610365B11CA2210B
+:808D80002784282AF423123E212D13222E16144B11A5522C182D1646922A8D6181134266228FA2F11A7A8781AF84D21AF12A188352396419B422D2D8F3142485F4183C4D68850C854C548A8FA48859413AAA8C274261CCA4AE8BE8AA3F12AFC10D1110111C31483048128724704803422004460114121412146014211421142142184218F5
+:808E0000130411211121199412112919911211290129818421C8128001B04142F121237F32F22F28EF92F32A69CB667FF4F4471D9D795F33F455591F91F331519FF1F5537235F63A7BDFF5F5531F4F76F63B219F16F451416E6BBFB252931F92F26A481FB1F1191D2FC1F136344556E67F51F151531D211B11CF51E115F74F63EFE4F14E6B
+:808E8000176F57F57FD72FA7FF23B33F5DFD1696FF79D946B118A1117E52EFC4A87D8F45E542F228229F7D094741FF5256456F73775EFD2D276FE4F6672FFFF4F21C7F1FF7F773799FD5F31757FFF5F56F6EEFF7F314162FC1F5262D35FF62486E486FD757518F8AFA2228BF96FF313BDFD3F3725C6F51F14456CF62F13E1E6F41F1117994
+:808F0000DF83F13C5D8FD5F56F67FFD6F26C35CF55F54FC7BFD4BCA8ABFFFFF8F88EA6ED348FE5B766F668C2EFC5E3C9FB587CCFE4F66848DD51E062F227666D236D32BF42F3363C7F34F23F613F61F37D3F1F75F1587229F24D1DD7B5FFE6F52E19ED1CAFE5F17F5EEF92F17A78189FA2716AFB62EA2F26F669432FA4F576747FF3F53AF4
+:808F80005BEF63F35A786D2C6E461F62F5283DCF43F25D5ECFC4F443494F47F6697ACFCAF2EB4D8F8BF8C8FA4F4CFC8B894F63F26EF4816E68CFEDF18E6CED4C4FC5D588F17DB2F035777F625234EFE7F33F367FF7D726F63F73FFF1F355371F33F61832E5F85515DFF1F52F1CCFD2F15F5DAFE1F53F1EEFD3F17B798F83F32D1E87F69F8F
+:80900000B6FE726A8FAEF4637BEFC3F7675FAFE3E567F778663FF2F267679F63F33C3FE7E5FFE7F73D2DAFE4F65A64DFA4F59D1DAFACF4BAA89FBCFFDDD9EF8A781CFE6E7EEFC7F7E8ECCFECFA9EBCCFC6FE3C7C8F86F6C82200200218E0220114122601204123416281249028008012128811089012302210022200842A41288224420838
+:80908000860886C8228428824A02004F420F481004004140020020511A80028506008902814820022189B2220184202201842220048100820000002304200A26F1DDD6C0431F41523C1FC17248F1112CA7141D2CAF24D1C1B24AD981B24A5985AB9443F24A9143F2429147822D914F82C4914FA2E414F8244A16F1244A96F1224A96D5A223
+:80910000E449C24A1F49C2421F4952281F497248F29124A7241F49F64A121F41F24A921B21AF243915AF243934AB9443B342793498924F8384F9244A6FA60A4F82F4114425F211E86376113C421FC1F266121D2C4E941E282BA45D28AF447924F84A95222F147934F842956F83E414E9A2E114D9A4E8157A246A1C4FA2655945AB294D1B04
+:809180008E284D1A9E64C5A268C9A129E19A324E1E24AF44E84196AA1AF64A8443D34A3834A74447838D846F83F448844FA2F5E927400848000000000028000000000018800800001400840080040000400428000000002122DDAD002E12248514D828A221285C9428001012528638268814341C845A121441024304A382162821222221D5
+:809200002101841F840280261418084448CB28A05880212806F01A5814560180034054228490192A04B01404502220228444082002844A01E02209208182022516341447851302002AA1486041121024684281601249D4A703524A5122C30284233222450145082642C2568422A582C4241612E88261412008C420A2421F88222192181292
+:809280004200C41F42E444912120548483234EA4142890D49024A462281E4297514081021281284901A3C4281C810600411822008744484240612280245582C0120028221AC2124421161808620000407494088028810810F4695FD0220100244889514125012B9280010085041400501848004C1222411828020045224842041281280099
+:80930000208901210010024480E182F46DDD204441DA243134261224A4294124260239F414412E4A184421641243E4414478428882042515E46A642489D226A241803222842B42246880B168983A26184A614830364A684289088006DFBC05212541584249F242224391451A4A840890411881184125111462441514282462222441C14F30
+:80938000242A322243325244A22D22858482618600C8AB122E88811100498238228618041846F836768005C01218400831B02291222D12704184564A0080014E182C1408430416018448A400240030422480226182C01212244C08292144040062228DFE8082812266854593841681151C0A2A1104422128C0242A41E642042E12288822F8
+:80940000008832244A02422C81118482014118472184812694168022C7428118244242125B2C4016044785100A24108252824CCA1149018444002123048582014A48D48104004C026A119244158882242204008064434609180012281E8A221684F15534800115140220184228112112028364814181414004208A14C81258402C120812E9
+:809480000023120410041CC1440018828885148288210A40048CD485091829C1242923542545C2121E48A721812392921CB11C84114414C42612424C847822C228584A1109228422421E422422F1202482141154248484128D518420C3528B81221668464344F86B4730A44414C48D128410014426410841C048A12608C024412826280458
+:809500003026424528A812442B1228481684C12422160416A41412A0412C388464324A082812888081F46C6E2412E0418281011082862224C4221005000042C022430941502810084200C082888A1244048AC4244C028002484CA24142000020022F330F44A124002144122018624120283218818A141402004841361A0448808A88C884C6
+:809580000000882442284A3848A0849088181602450888184321092E94BF79078200001224008800804804801804608440088082040000212A3444008C0244204404004120080042400210F21D3F40414264846028142E4421841422412840280210AE4220028280C81484C8281082118208CC11828408008304602660846A01621200825D
+:8096000018F056EB800280512418418066222420041424414200104802411269241C043028A1202202A2412608C66882C084228C4488048C12849248D08402C414CF680F448001200684202402000000284024849448702A04400281008100004841411880224288028848001200482823A282DFB308004824C82442412418A0861189D18E
+:80968000A2A48484836184D240644986328890882528142438848843388221459248232AA18444982118C8881218368428348A4C89A18100F035D1008A01212008401604880024880084C94804480042261812E44804000025622A4481428110048180040040185884400A8BC1F0727D6084241C0414C400144248251C8206105482212C6F
+:80970000041026111882D824C81A81844CC12348C0188004882800AC286822444994A8894828A841200A10024E3F9014960227212C28594427232E218E8437242F82169188F514382E897D2E887C440445C25C4D882E72F04484F04E4422EC2258C2AE222B3844278949FA186243A44A8BC68C524883324885AC584F23A543883EE84D4876
+:80978000AAE12201CF11E148FA32BF904282168461544217244124AF2687A489204872C2484C48F4C21C224784A8882485CC6AAD4845CE8886B84449AA8120D422F22CA4838EE848D248D844526E4A2328B28467858D2889D94C3442832DE1C124E222088FF90C1D2425F826138384D1E2137248B4440428426F2482E514A28124C2461245
+:809800009C4289E44675DA72883416E74296B25A2498A88229FA844229C4868A4852C247448C2CA5182AEC88E8248E2E9482CE844E284698184C09C9B892E884A2128F4E071F4482D14112E84812984189119198118919C19245C8924B4298222C29E24409100200E04102160416846841200112219012B0240129012149143214214558CB
+:80988000124F8884E28804F74814674C4F12722CFF3F58CFF5F5EA62EFC5F55C4DCFF774E5E3ABF3332B1F1DFC8F4C4F79B176F6FCA6EF6EF2941C4FE3F3FCFE4F4EFC1C7C4F2414F464646F46F4181E6F69F5AEE84B322E3EEFEBFBE6626F24BD62FF36B4EFAAF2B6F6EFEFF7ACA68F8DF74C4EEFA1F134B42F23FB282A5E12EF4CF8C414
+:80990000C24F65F43864CF69F9FEF8CBE6CF82F2ECF4CFC579F8BE9A4BF167256F57F736177F63F5DE5FFF72F217156751EFD7F6DD5B5FF3FBB2AAAFCFFC9751DFC5FFDCCCCF69F8BA3E4FC7FB848EEFCCBCE2FE38586F64748CFE7CEC6F87F748CA2FE1DDCAD4CCD1B5F1BABCAFFFFF4EDE6F64FDF27AAFABF1A6CAEFECF4BCB68F8CFA3E
+:809980005416AFA5E58EFE8AAE8FACEA4DFBDC822F6CFC5442CF2FFADE92AFCFFF7CED8FC4F46878CFE5E1EFF1AA2C247F57B712F41734118F37F6D35B7F37F764725F46F67CFA1F72F28A924EE2FFA15D762F8CFD4E86EF65F92C2E8E8ECFC4F87E5CCFC8DEA815B264BE6EF65E5CEFE8F4FADC224FB3F2AAAE2F6FFFE2EA6F47BE22F699
+:809A00009C98CF6AFAEAE8EBEA8FADFFBA38CFA6F66C642F46FEDAD88F8CBE9CFDD8DCEF83F67C62EF8FFAB8BE2F27FF7AFC6F4AFB2CFC4FCAF17625346F6DF536727F61734FF87C672FA1E127F72E3AFFC6F665E37E36AF22F3CF4B3DC3FFE7F54E58EF6EF26AA6CFE5F11E1EEFCEF6787C8FAAFC4C4A65FA6E68AF87F7C84A6DCEEF835B
+:809A800075AC68F1AFABFBEFEA4FAAFA9282EF6BFF8C88CFEEFADED8EF4FFFCCEE6F4EF65C7ECFC7F7CAE8AF8DFFCCCAAB9DCF8DB57AF7F8BC8FA7F3BEBAEF27FF1E988BFECFC2FDA4968BD7800121B0260145421884440240084002008100828504831452484181490888420069489884842AE881048420018C048C041A044800008D9274
+:809B0000002880021002223042502220240222A1414A22128804404402484012582410042602434414044A8854228C064129082544586248441A240459073CF4112485F3112487141F41724AD141F24A111D24AF149921AF1419F54A9143F24A9143F2429147822F14F924485CF9244A1CF8244A1E214FA264192E5AD6C55A9E24ACF5913D
+:809B8000242CF591248D121F49F248121F49F24A121F48B24AD141B24A9921AB9451AB944B42AB9443B242792498924F8284F9244A6F170F3CC46C341E6C141FC1F26A111D242F14D1C1F2629515DC3A9B252F147924C89147822D9147821C7922C8954F82C5814FA2E911F224CA86E1A2E45862B28E2526DAC1E2A2F4816485F28164874C
+:809C0000261F487248F281248B1413714A9421AF443315A93824AB3443B242733498226D4829F92458DE3740288804000010084480028014020010021880090000450140081400000000448002000024485012B0E80A1042030020723245042880818438A2708A222102C0866024411844400863A2522CD424C48222894804448880021ADB
+:809C800006808104A200A847832846F85B46142088D2140843C214443082281C8408301C182508A08449282202282241811A048305851404105824484944982C4246C888808419084C6C258B842E4C4621CC4D44C74B1430C2112D85C02420B21222982414A684018D922E82842D8823E1223484281A1AE22894244C418C44984929327CF7
+:809D000083D442344289928C499444844D889068C15A22A61884424CC8C28C6C444EA34BA18F1422F518AC00200200494154344480062014840100880041200200188041044420180221108422048800800142326082C0484445F8818B002008880080080000000000000000000000000000000000000000110010011400775E20522215D5
+:809D800058484B124A46453A4C2924817128E1885822901429E4331861481A81F281C847144C51281E884AA2481053C84981A2824271442A91281C2804251A846513882728844391522E82604812B88E483F3601D0A2B211514C222854425084211E5113022D8A89941423EC23088D15128C32855C88E422528846B111443882814D148077
+:809E0000F8522259412492283C2814628141582641D822B848941421BA48C2141E882883F8A7CE002008880080080000000000000000000000000000000000000000110010011400775E302400C0124C8201405428481440410810220A8002425100448420524888A01200124D8284458112C22824132104884341044C01202104EF784197
+:809E80009211123029338251A1C12C42B811028825C11219A28339791492491B821364C45081222611C8324E11808992385614011C938A1A624116A8414D28002485718118048CE224A242293424444B28F07DB3242A018042E34231118128A1190113480111AA31122D14198488440C48498212E8423113803328284B411C032227814C89
+:809F00008851411A72222402122188881847822C3614214100F0919640850115AA2110584210D4288204211663829081F0228826112106941114008C0482449608001C816823C183811448481271484119140480268492144EA4E0C10D4421842662C1818422A128A226F81824588189988821A21682A4259416948488328CC1298304872A
+:809F8000544303438184046046628841224848C044484141448044280110F22E192041281602181059418111C024251102253438118001104288090020621289448832884C04441221802148A61889E248021AA841821E42A24602884A31429F8D4C0220911140844124041A1401810000202642C844204444C822498461481288483022D6
+:80A00000108202C12E18214200422081449842221218224244448FFA0A18E0813231C9D14861817C92482813CB288C7118012C988483E1182223B318548444C94414C812628B142E84844E248CE42102418042346A1261CAC2449A2402584BC14FA194845E222A5D28184AC85443F4A45450264002210084454128144182144A5828228067
+:80A08000344222460188A021265858004B528309442A0C21446A41B428280110C2484A080042001A8402002EE80022121F424418220442C048000040D8A6128422021014223248411086E11184228442012180048422F0122124282588042A044302B042420442576B141C42C42281620000868802002008104842A24A22800827128602F9
+:80A100002E8210062688849822008824A82141822011348860212018181224A21216B48C0C4118228001844018015084000020081400838184410800902420022200220022258234448220220400249024438204E0230D19048116028F1324912200514C24842AA842860230888A44280C18008314F4448840480480082290884322849855
+:80A1800014248B14C084248D84B04818A28448882129084FDC0DAA615140D18102002480628214218484100800102105C022000012002840021100003012282400902444281092421A8264155F3C0780C241002012289288240085810200A129048889C28429222244822203824213088C8422288292441419240216024005000049020098
+:80A20000F06F3B304230128312445181412002548828B081822A04902A8382C8291C9148214E888552284D6842304C481512445884EC44B182B484C198C4944E8842AD12A48C58821E4C41821247884902CF810F442D429144C0281481105181845400110016D38132480011838801901890218436085422114582C424848501804261824A
+:80A2800024008445421A0420315423F239251412802481218181C418484014A868A290298028388148A384088098221442122A7844C18481C4812A4C48A242E081B2226C842AD441448842024880042014026F6C0B4CE36A42F118181E6616E18142D888E798D289962115A848221F16E2182A847823A2248A14F8915A22481FA6B26838AD
+:80A30000342F22E4426482CF44F2416C9996651D262B824CA6482AF688298E96EAE838E21714D148522C80662438C7442D864A064F5203CF18417254B144F11A181F3262822A11514890C85427844918A9288B8887228548E488F28A492B224E8843D21AE48213DAA25498441CF28C61224B8A462458824F287229F86C24250A286F21774E
+:80A3800068F881228F833AC43F8C3484A7A243782A788282F282142FC52CE924F4D7F9141F2234111B226D4499F149288D512B42102312D85894828908842D26AFB8B148B821F84888AE618D858A682148865422CF8DFA12182F45A94181222E832281C08A57443F267C7358486F41D588F14242258A51AA4B81AD4C476C484336244B32B6
+:80A400004AF43214650C2002004A413442B042082B8430423042202409200442200480211834883088200C8220088441800888484C898409988049C88480F84C2A343F77E722D27CF21F676F65F63939F7E52D42AFA5F5E321DFBAF26B6ABFCE7C499B228F86F66843EF6858F52F86FE88C98B421F96F464E4CF74D482E2A4F424E4DF58D9
+:80A48000F8464E1F73B953AD99CF5CB461FC84C61FF87882D217ACECCE2B8E82FF78F8DA58A78CAB9197918F88F99D171EB86B32BEB22F2DF53AB265FADAD84BDF3AF16466EF1A48F37367AF47F71C26FF71F25B5BDFD7F77F352AB678F7E123BFD43E299FBC7E43F34A681B229F36F6CEC67F74F4AAAAAFBADE8A7621F9AD24DF7EFE3215
+:80A50000986E484F46FEB5B78FAEFEB91B2F15EF4BFBC8649FC852751F7EFE8A227F1AB644F641E91722FF7EFEDAFA2FBED752FBB9ABEEB617388D884BBACF2FBFC6F468E22FA8F8DAD86F46A7994F63F25B8B246F63E3237718FB3717FFF5F77179BF93F36C2C8F81F529E99FD2F2A9A89D6ABD4924AFA2F2626B6F2CFC9F99BF8EFCA994
+:80A58000C92B429F96FEE476AF3CFC22A8628F82F2C341CFCEFE51578F9DE78BD3CCFE61684F42F6A1672CFA2721CF84F2E8218FA8FA8BB3AFACFF7BEABFC1F3B9A98FA8DB7D98484BEBCED22F26FE28226FEBF98684AF81A5554F6AFFF337F035276F43F51828DFD3F3393B5FD3F33B3BEFC6F2387AAF92DEB9F2EBC89D499D4BAFA2F8CA
+:80A6000063E2BFB2F28E827F3DFDABA8BF9E9E629F92F6ED66BF3EFE724887A6CFEEF275F5CFC7D7FDF1D87C4FC3FB48EC1FC4F685E71DE7ADA27F16F2ECEC9F16FE694ABF3FFFD8FA3FF6FF4B391F17F64472DFF1D94CB434F64452ABF78F26F6767E45F4FCF87AE72ADFAD082A01185032843C0124603284248240088648229828822890
+:80A68000828121830481214A12042220022184418426A24145A24140484248424842C8224024E14402AF2A0B6B18502C19E212018901812012110825022C08AD8410881418042210428424312200002042084C12028B82200200004C42D84232244200344FCF032E421F4152281F4132481F41B64AD141B64AD141B64A9961AB9459B44AAB
+:80A70000B924F44A914B4B2F14FB24482F14F924481CF9244A1CF8254A16F1244A96E1A27498C54A8F49C24A1F49C2421F4952281F4932481F49324A1FC8B24AF18124AB941B29AB9453B94A39B4AB9443BB4279B498924F8AC4944FAAF473DA40EA41D438F411248119B62A9161AB121D64AD9419D64A9B45ADB15994BA5954125F829402
+:80A78000927F82D412F9254AA85FA26D115FA2EC18F2215A87193CF49825249E2CBCF4916485F19164A5E1497242F1812CAF14E148D27AB191F248251B29A531B4A1431B72B418F2A24829F1A45A5F6F08848005100240024004000041400110021800000080084008000000000000004800001002FF9E0132250221488B4223821602180C
+:80A800001C130821892421392C41136412268468A4800400281088814204A226258501A3260248461128482822C11480058041F47B78407494C1241C113814701821E2980281407111481614084240044C028124184149C8428082B64221612240226822701102642A888261245028C127A2812C12E4C156182AD4D3071E2427552D261E77
+:80A8800041423E4423E2B681D21812E4813228142991486981D98462443C44C1243AD828240812C0846211842C936843E1A4A228282B49160227332844499A218B122C04264A5828602724481843F75FCF0000104808008218110085110484003024100484422144002128481200504180028C043042482018086C3134814074341808BFC5
+:80A900003F03210000844028A2482213010010A2418521992816880200816044848D2420140421004400181308001308178120011022081242F0BBF4209632360449129482441283028602374916E184982181413784191CD181845481282F34624115F882311E421E8818325C84C31318842F91D88131211A649A1DD82D111A34422CA892
+:80A9800041839432891C88A5429014841FBC074E2228416042308220220C118081618C1962844539418C284189049068257448923849E28128B124012A41014118841E218AC1A11E892119081D9A9048804CA8852840041F82062118380045084588C12828960227581124804192984E21912A0485C12214124591818C158204174421180F
+:80AA00002941788AC11130418442196125428085913285028024A141818DB7C02112282D488481221018044200460482321361418244682F4882B228B8288114858149C948924B428A840C8998228A62885018441880179844188264401448A412F0695B24CC044628E2244A0420241208296225801206822283120224C6CCD44682323AB8
+:80AA80008514E214A3180089C26491121004149A24C4242AB188821108522818A01200A9B2F70F00441D141E8414812800136882828628D1823148824190148C280100901488004054821601B022094C84C54443C1268440012081122CCD281A144408424F42063986912867934725852582C248228718262AB888C15425F248843A3891DD
+:80AB0000182E9884584CB22EF82448ACB24473AAD148B11298588728821327BE84B218E2A188E642AC4849E16C324C28268119984C32812C2BC1544008283F2B0B4308413028100840044880146283004443423484288242200516042062458C4104D012084112C1118D11802131481218E044994489028D3441388CF4D2DCC024114C9281
+:80AB80001D50816813E34132A12392815817A419088442199922E9014D88842A58248420084414811441800812A084219042308290122046A41C124221828428247B1A60218504001018944212D860A8002232A8414941D28442A242818948E48432124B422A01124934822064816028A04141472148124C9984405228244184848490127C
+:80AC0000F05F97A04810084373880484249604280030849044461208004180054110021AC4248B18803C19C0C88A4409480000465CC1862804382A1104422CD848F17D465052221042284201844021011008428100A2901410091218406A28866818200141102531444788888638458140C2C24400104262414988A442EF860810048902F8
+:80AC80002014241238288168212820A281223084181F84120C40B82404C0D124830480250128202984011A081800841288409888128C4468829A0700850420628120012048B848024781001888842081A412B0444138287828008418B400004078880180C488892881024200608418A2F0687E20C3222CC24429486242128904424E2213C3
+:80AD000081CA8814A1222114A0828819882954221C28688881C412211C5484444941144C24119214441810021825781262A48229850818F0894400820012924961842562A2181200F018811984A1242E891B124828140010D2120123242C8401130830884A11281828989884152891188298C04842C8A08214423FCB0384C041122D290064
+:80AD8000221480C844E02802A0818188008B1829248911C8C119712882488A611842814781D0840441144531548C048244242C0A5048224CD32121247142049FD64BF3142486D3A85292A1CF111AE8B1D1B6513413C441BD422F14342215BD42C1341B831D2AAA01C7451F5194218FC4F44248B7413E1BC9F26458A18B8385988C45D1444E
+:80AE00001D7444FC4C82CF69688847A8C668B48361284D4416F8A87A42182781282731218BDA7E2D389F3F0160CA47428F45E258437843B42CA4218F82B388A78F16F8888285B898AAC10083CB812B882E292F8C7A288858684F9A9322FEC2ABA11ECF4F283414485E1283A1118D318A91418B813F44D964FC84C44215E8A15812F09A1A8C
+:80AE8000884487478E984325C1438D4CEF7A011B166942D1246183224F83C7248B462B892B8389A31E848E8149F128298F8FFCC2762D85CFC1F2387C8A1DAC8816F214114E428B88256838CAE184E11CB513F181C41485AC881E4446F944558B418B111AE188B918B98AF1C8966948F4DA468F26D7A2FD48448F886DC48A29F6994324110D
+:80AF0000102112C11211904110011100000020080000004084684421440000C048290929082110023014100441108412049F9E45731755B1B55AFAE758DF51E125F54667EFD6F6A7A5AF8C7CC9FBC3511F2CCCA14F62F876454F64F59694EFC7F586154FCFF795954F487884F444547D4567524F4DFDF4527FB9D1A3F456144FB5F19693FD
+:80AF80006F68F8121C85A8BB8B9D37287F6C74C777C6F486D62F2CFD83918FC9F98E8EABB8AD86AFC8FC2E66EF88DCFE5C464FC5F51C98CFE4F4C31AD064F223619D2AAFB3D75EF81515DF35F546676FD6F59735FFD5ED2EFEE2F41BCC8F18D86DF8DFCD4F64F48684FFC7DF77F9C4FC5F58F9B79C5F4AF844CE7F51F45645DFDEFEFCFA1C
+:80B000007F39D5DEFCD49C4FA5F55FDB7D866F41C518BAFBD8D83F297117F4C5454F44F48686EF6DFC8B898F6EFECECEEF6DFF4AC6AFECFD2E6EEF2EFE8BDAAFA1F5EEDCCF88F97A78850547431F62F422232FA1F119188FA1F3735367469FE6F4E2E49FDDFFD8EAABED1BCC8F98F824BEAF16F7CCF2EF8DFF7C5CCF5BF1EAEC1F59F92448
+:80B08000156E414F24FC1719E7F22F8CECEBF9F3936F74B45AE5CDEDD9F9C4C66F4155882E348F64F98959EFCCF58515CFECF58498AFC4FD899BAF2CFFDACA6FECFDD2D2EFADFD2E42AFECFD9ADA2F84F466488FC1A154EF354CF217373B228D2BAFA7F21F2C5F71F27A72EF46F2797EBF76FF4ADCFEF2FF19BFC9FC88895FE3FBBBF94F2C
+:80B1000026FF5ED8FF8FFFB7B16FCEFEB597DFDAFDE1C1CFE4F417156F76F6F3F38FCBFBBBFBAFA1FCDE9CCEDC1FDDF4D5466F41F118188BBB8FADF591D1EFE1F8C7C9CFE4FD849CAFCDFD898BEF2CF4DECEAFAFF5DAD2EFADFD2E4AAFEFFD8ADAEFC5F5EEC88FE9FD68785F1E0A2A0140A812842662812416286289248E486089289E4832
+:80B180008D22128922B9480289028384B14882B14882118828840918808914A4414116089648628824160816482231488281F0D19E1004C5024150241084A684842008401404844C388444430845421404292818228104884441868841948486384400001002230429E2881402188C743D032D431F41523A1F417248F31124A7141D24AF17
+:80B2000014D141F64A9119F24A9151AF143924AF1439252F1479A4D812F924481CF9244A1CF8244A16F1244A96F1244AD6F524CA9E244D4A1F49C2421F49D238F8912487341F49F64A821F48F24A921D24AF349921AB9451AF543924AF4439242F447924D842F924484CF9A44A6E53C0411E6C8D43167448E341D21AC164AD118E64AF54D4
+:80B28000C1248F141BF448B153F2489253F242915F8AB442F927481CF9275A4AF8259A1E815FA224F9214AD6C1CB96D182E481C2C11FC1D6387C11E434E848F648831F48F248931F48F2481719D6589B41ADA1AAB44A21BA42618229D9829492AE584F6D0F8482120000000044800A00810000218001000000004008000000004004400174
+:80B300000012200825011F3C01613827811265C817460827C5C3981A2E4886684881D0840B8A028AE18AC4548924CC22121244C04189A42184806842841C2164229846D8840C88841A54488B85A04892424E2C4548D848018D6D004328123421A21289024A02804528B44822142891584110287224014342E422784864422028A11C46A2EE
+:80B3800081828692881321041214839481B04201492111C41180A643148CF4367F24602F8C23D181A2212F81847242F44488E391282AD984C84883A46184A8528E1689724428B721EC28A22112A2256C44132493188BC18E42436F881399CA2E1342E04814B184C4892E544B148AC514184361112247A24A731C31522F4D0241444014D690
+:80B4000041088489810248830420D248081884A04818844440144484C421848200000000988C94181008248481A08482424D48428440F82CA8000010080000001880010046010000280020410A840000001008008082111188240400200200F0DF891418004C031E21C0220040110830248082013024100C004100122081140240388100E3
+:80B4800084901824001820211208000088681FCC0F180041841902100210210112002846016042108C02108451280060240040088140088C01290183014A01840028008824FE8D00002A01188002001008902400180000000000801128010000130800002240014880020000004AF213D10000400800002812002121321A9222430142285A
+:80B500004902200284582022040000840000200100E04804182800128022F27C1E240040488422014481000000403884484100002244800129488402208842244834481249210100580000A0424624142414F8FBD6002210062400000084001004005812420020440444220020352200A021200A84000000184412000000BF7444022850B5
+:80B5800086C1221240442882110825024C628321584AA141284902226644142895A2226820858202842A914892418C210100E04428C114226242584120F298D600000010020000000018C0A44144200400001241100400290841824120220100A0140000121004A024845F460F000000000000000000000000000000000000000000000033
+:80B60000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F8004000000400428000000002180018800004001400848000000004480020000001002183F5F0B0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000DA
+:80B68000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000000EC
+:80B700000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000006B
+:80B7800000000000000000000000000000000000000000FFE40F00000000000000000081200800100800000000000000000000000000008280025F444B020028000041008318018001004004441004220012200144C0244130289A22842241140A001812814100001800FFF5071200844C5182104812081800118144124C921148400848BC
+:80B800008110C242418C44C44212482124860141814309002884001458822348084A0248F0A4CD2001104814028441008B1814001608302412444004440000124668412418484C4224486841421212002881808121C48400208621042FAA0F21002818840024840000144024011142100842842821426100424110022581A282844B825014
+:80B88000248400001416482218080000B607211141100285012420445822821C418808001094281142C0241844109814400225022011420812818285A241508118008281120090449FA60D2849C2282D182614D22463A58514E83882081648247111648497628B4A1E25985B5848150485514B1336441642A24AD25EA44424548B284CEAE4
+:80B9000016F1A412684E2317816286A281988CB4A881618418C88C869948F07894302228901A6C02166484008221101884210184625B218287131C3445008D1459440421C282291702E02892842093121CD218C14880184908128B4884C228184668444FB70550414D2810029D222C51A4811B248618B2129811845998487CC288301449C6
+:80B980000C004D2931284889911423A21486441452168981B239C4844A92482368229A9412924AC1B8001818462808F0528800184E218531189C0213311A21A025CCA24848284D4862288322B2428101C229394446442893422D4924481883A44120984498890623911227448C82088A8131944A096028209264EFED048470420410222342
+:80BA00000249B228094C422421A11216083012231A2854824CC9180020438108301800000060148594948063410000894844429C48F0937D70210283C11242418445482104842305848502418418144084188404181008360416E822045048381281448426088418848884244884164422810124A731C0212371314CD82251588C135D2832
+:80BA80004934A82C2185C4181823E581922826288259482C38482D44569C44842E182B2529C68289A5141818C4984196C8682047EA8815189814890852D810B412981C8B4246F4EAA8001032118384021AD2128182C16881432864828D244904122D112A8481C484001800D084018092424880A2141044583A16041A82298821D14248D867
+:80BB00004809006022DFED0F1216648216E48284B1134428324A22001A084084020084C0442621411D821222D128430421422A288861A380A2424800182A01886602229082888C08284FCD0D28001B2412CC02001212894118421D0223C114C06C9A820140229464186044822C023828002880648500892291C220048081B4182602482B3F
+:80BB8000218AB4960D1B4128248412148301482D12841D228224114D624002224200282392281654221122190260844210412A0821282181B14421C8A0148448218821004A08EF930B004840062822A1C084CC21014A29112C480180240818008848818A0484204824012082213181124210081022912888004A21532284178E200C494231
+:80BC00008276180414234522022A74114E18140189032782368801400C22302421C012400884C413941C1421282110821812018242100623882862329BF62484111A6442E01244C21881C04842818AF2442222221004414427224844239A9849143242A43C4171410423622A8888800249A14138122843A4488866044B428C983883818209
+:80BC800068488FD50349820140086180328C88221228403A1880A8288288428612084A42E88892188AA1822A0823C98A181A6482C08881C28880624100420020A248304820E481064144894142845448008A4204008818A2863C222001542D2443082818181A088C44C88811212428488884C812A82184802848A8818C81384400305221A0
+:80BD00003BD95092624C1448022682020010E48482410822708448032324C81280088C4454842114182248A041890112241028215E49122810C8A220A1144E22122118AFFE43B25434A18C82F416364E42AF131489B382E84A0A89B1858C64252E11221AD384F242218F84E147912611A117C6678A4A84F298829F286283AD48AA6A489E2B
+:80BD8000B28FC8F828C88C7289B81AA2CD2B896229781198A2CAA84146EA2138442BA8EE282BE1AAEA1CD124F86DD9B023B214135CA28784FD1C45DC22F14A483887848FA443B818F1658AAF4252444D2851AAF82C48C042CAFC222A411A82D7A97138F6411C2538821F24F112422724222B121384B11264242F12638229F35822AB584B66
+:80BE0000451D42839C248B722BA81E48292D98583AB2B2F687E1C01546E443F12C352AE413C2322E2826F2184E636113F646FA9A154D18ADAA9E822FC2086CB9B46A1826D644E88AD32E65642B2B6DD84B423ADD2CC28499A1628521B192F33886382ED8448F247518E94281AA1880B8B86D842AF46C16124E1A56C8C283F41691140084D6
+:80BE800040480124C4221200548224964824482401002368441098824220840821448844C0442E82442440C2482622018420410285220140F47A37141F45D1D5524445F4682CDFC7F31C1C95FD4E4CAF88F8CEC88B448F63D5FFF84BE8CBDEFFFAFABEAE2B1BCD8EBF98F82CAC5F12FEA484AF8CF4485A2D12EF41D3C6F8E8EAFE321B1988
+:80BF00008F82FBECEF9F16E621F1D61CCFC9F139718AF417DFEFCDFF1A3AAF81F17A7A6F89FB1B7B2B551F148CFAACB48F88F81E1E6B55AFA7F392128F83022F26F69EC4244F43F715758FA2C222C7C6DFC3F21818D5F35E7EAFABFB9AB88F87F73872A5FACE5CEFCDFD8F8FAFABF2BE1C8FAAFAAFEDEFCAFF95D14F6AFD64468FA6FF248B
+:80BF800016CF65F72C8E8FAABABA7388F128BA8FAEFE25274F61F154FE8B11DF53F68C4C5FD2FEDC9C8F86F358588F87F794949F11A7771F14A4C4CF4FF35898CFC7F35C5C7AAFD12B4AAAB872FF5E68345F45F535754FE153FFFFD6F2652DCFF1D1DBF26A48EFEEF84AE49F96F7117B5D8D7FA4FCE4DE7FD273AEBEB6F93CBEFF9CFCEE28
+:80C00000EC5F1AFEA4F2AD8ECFA2FA7A7AEFE3F79ACA8FA5FC386ADEC18F8EFD4CCE3F9FFF36366F4BF788189F99FBE4A4FFFDB912FB3E9EAF81F11A3AAF4FFF5B332F24F743C3AF24FCCEC6AF8FFD76566F86F67A5A2B192BF68DB8CFA6FD84C5345F41F535254FA1F2192BDFD7F63D7DAF91D3BDF25278EFE6FB8AB89F97F7197BDD8916
+:80C08000FFC8F8FEDC7FD3F3AEAAEFCBF9BC9AFFDAFCBCF45F1BFFA4E2CFAAFA3C2EAFA7F736768FAAFC38EAAFC7F66842AFAEFF48C25F7FEF2FFDB8F2CFC9F1D9B98F8CFAFBAB2BF5EFE5FF1298AFA1F2FAFCBFB5F352F2373CAFACFCEE6EAF87FD3616EFC6FEF2CA2B99EAF4A8CACFA2FF91A3A01290148423022E1284402822011E485B
+:80C1000000288428828B248242C0248082912829912823324823222402230288A012A0828400A0480080C424124A22A82470AD0A82442212228C14024622B84A014282A7244042180820C2941058224200260288424F22A1284D1290948422C483644898482A2181084212A880A9488112601ABF3B0C2CF4112485F2112CC3F4112CA734B7
+:80C180001D64AB141FC1F24A921B28AB9453F84A9243F24A9557822F147924D812F924481CF9254A1CF8274A87115FA264593FA264594D4A9E24ACF491242D421F49D238F89124A3F49124A3F48124AF14D141F24A911B21AB9453B14A3934AB9443B242793498924F8284F9244AFF5A09ACF411642CF4112C43E4C1521A1936421789AFE2
+:80C2000044B181F24A344B48AF4433A52F5478A5E8547825C8847F82C4915F8AC5815F82F918845B42D6F421CA8645EB19C2CA9E2C3CE4C1D638F88164871296F448818E248F14F181248F527111F848A54B21AF14688B2B8443B248F934482CF82448A9F924582F650700000000004004280041001002200400000080084008480000226F
+:80C2800000008002008281001002BF2F074210528143D48532441A628296848328041421872228481902281243028766B02851414832842E164004001C91492221839892888A021A048004122B414368C89088709A46C2128A63824415C21224552284928240682883D428924180714EC219C94918181202904A282448211AD81291112C64
+:80C300004272A408F014281342184C0883088C08C4908C4210E41134487F21062934722885D425F41922447C83729432B488834662142578289122489726B4CB2918874325F2842AA0122D482250232C23311B162116F288358324721288FA821849F824883038C0884884E0C1C884861EE484F912482F110A18101A014446028384020031
+:80C3800082812223042C118401810048404885A4218C448448044002143024150884004A0800441223840400B0B10F00212002220082188260812921C98413883124107448A1484A9242508144481A0216B42431811C2C01282213B16401248A82A841421142494444084144124604FFBA0D26C424261C5AC34144242032881632818E419F
+:80C40000433C299572684697592A41A12126788144F841364CE3221D948987228394881AE2427121D28443C2CD4724881F2398D91E41848F18F2128852F092221AC4668B428D923A9428124D485F1F0820922C2127120024A0288B81828885B116BC11C88F282D144F8122521483638C4D81487C422518E29842A2414B2813B885353100EA
+:80C480002D21193152AA71C211817841883111B042C114306286B862C1281849F4B65E60424421818514C42400001225A1583028F04588113924011C24E22412A8418CE341C644188C42CC183222248D3428874C46E44248C1182B5A84AE128B8448428E2429D48416C81444124914D8584761C41524846281178116C8244211842AC124DC
+:80C50000678100C0181601822784A0488AC21822328CC918403186624282485928126E242A91448829E64C119812801552244B2443AA4143FB221484B08E0E8428CB2483213424904822E30481ADA42C84247284088C02182D84228502D884460446B224C82D30182C7318C64489928C488110A84245488CA6288C2128A2488112C302A1B2
+:80C580009A049F8C012829011400442721802101480025612541B0281122038044F44214816141208511024A02601112A2602244602220944280C118188048280483F45F1920D243C32C8D1142871244CB162AD48331188993C24F8401318C584A842E12888E6C602442C9F44A341E648E18439182874129B922A4342F445942C15F827188
+:80C6000052946823F224424D224CF688128D222C64851A3432CC942E4B1A4DF82AC8748B4983F45919904400288961418D1210C2440085022324E24421C1318418122886880A404AC4484CA242448C0122E0122818288841A884846248988008981A04D0484108247F280225414524444171282101821427A8904845C9229425828208C6F5
+:80C6800028124831C8B0286119C12AB81C028110914432141E22114C04C11126C8112488854204402408868412F8364FC0448011C144E04104282223282443048C18048B814628123288418E6490481304268241229824885EA8108801490188604488284100C8A90198838188012CD43905805228418141211D44215CC1488B92848A8168
+:80C700004834441830561C0280048001002200C8150440048544420C4624641180951421128AC412006842C8304640084883028110C248001D444B84914242922A282432422A8171222244465424A04149840425820188E0CCA22488D041048C82048368841A0C004480018127414F8B0E82228C02478221480025C8882014A64880C844CF
+:80C78000424420A48298001138884012841C4102882200A021001200288844A02160821A080086F1199B241962844C841201518F21B2440213018C88B411328868108138146014D04281050021128AC11100848C018A8399A28601C0246280D812022564448C042008695148CFE60E8C04004A41C22840E81688762224912185C4211582D2
+:80C80000B21402848840E1820842501C8A16083018E04C011A4824440388A220A9581200890400301C8E14004F950A1E22442181902800508223825142881004582998228238B046421122418461212C4843244402448800A081444800224084891124445824818098823F9402848168715014D08464411E4440042F2102421A2218642174
+:80C88000461494528011948448458248014623D91E49084904888C81C268A81814C4E02142048243A1188142A3144AF23D61141C241ED41462112542FD42282F82D4E6F22AC98F88177C83F4C6818F1252416BFCCF1CC2841394581CF84282339284124B3535FAE2622722E23011111C9CC84BBB47492CFE1123A68824E61274A168966493
+:80C90000C3FC86828F6CF1C4C843B4989884424E989CF54288EF84096A51C82912B844564C29D468D42473B1E12432122F84BA1C7928F4448A4F846C232DC64B296FC234A28F25651347148B416D5493E24131184F91562ACEC4AB422B882F4A4144882896141AE98CE888DC48E3142A6188132121A1122CF1241885F8B4821A348C45741B
+:80C98000FB4ED227D214F2281E3FC254C91D29DB364F117148B448BD81E136E869E594D481E548E43B033AF16A52B84BA5AAD24CE6C87E427448C1444F1898948AF9151427214FACF91C17524349F468319E1C2F88D847D654D24432541A85ABD32D96CC954616B41844A419AD5847482CFA8812EF9F0212200112142022412141021412E1
+:80CA00000064842416088442844008844088D2868112828201817028028302C110088502812A442402222003BFED4C7111F11622AD1ABF91F34D49DF87B649F54C444F21F183B2FF86AEA72F48B983B9C7BAB4F9D595DAF9CBD14D9AAAFEEC4C9F11F1B48A46D2CAF149112E3A3F31F17E7AFFB97927F694A48F99EF5EFFB41457D39F999C
+:80CA8000E14AB8D8FF8389AFC8FCA8E4CE249F84F2CDD88981F18F8DAFA1FF22E62B8C85E88BEBA2F2161447C24F4CE6E7EED14CF353416F23F62A32BF91F17D75CFF7B642B364F64C1A6F58FBCADEFAFBDAFC8FBCF9CE984BBF5F5DFBB694FF1FF9A6BCAF8EFF6E4C9F13F4655BD7B2AFC8F84D414FA2F3991BCFA7F6C7D38FBEACACAF7D
+:80CB0000ACFEFAFF4F43F12545DFD872BCFCDCF45D2DAFC4F8C8A48F88BE11F2FDDC8BCC8FC7F7C5D5EFE8F82EAEAF8EBA64A299CF6AF2B6B4EFC2FD54F46E7E8E86145F56F72666A721BFF1F35B537FE3F26B784F65F51E16BF25FF1BAC2BB9ABF97F49FDDB888F8BED2EE84FFBD3FD4F21F9FCC8EFC6F651594F6ADBFFF44ECC1F95E196
+:80CB800077F33A3FEFEBFBD7D76F7CFE9CCEBED43FDBF9D7E45F51F6991D8FCAF2F4F4EF4FFFF29C4FCEFAC4844F4EE8CCEF84A6EC7F1CFCDA9ACFAEAAAE8F89EC89E9A2FA36B46FC125DAE4DBEE49F366756F62F23A2AFFF2F26B685FF3F24B3C4F47F36C1E7F7FFFDBDAABFFEF8DFDDD9FFF4DF1FDD15F7EF4B6F47FBDF3F6D66F4FFDF6
+:80CC000064641F92F6E4E67F76F646C45F95F574772F7BF3B696FFFEFCC6E2CFE1FDB2D63FFBB8D1FF95B55F59F3B4344F6DFFDDF73FDEE9CEFAC4E4DFDEFAE1FDFEF84F2DFFCDDB6F2DFDC6C6AF8CB9D4FDB4B8CFE8F18694CFC8FDFCDC4FE4F6BA89702401630245C148C04847228628E289048E48449E486CA248288AE4442228044C11
+:80CC80000244400428292994828001002A092A09881A24A241200992801428088287448287423082128112811265211122410321122D81122001B042012886221422C41210422422C8124AA2821118284014A2482A482404002744902222184381A242422671920A2CF4112485F3112483F41124A7141D24AF14D141F24A9319F24A9151A7
+:80CD0000AF343924AF347924F84A935782AD914F82F448914FA2D418F8244A87116FA27498E1A27498C54A8F49D2A2F491242D421F4952281FC97248F3912CA3F4812CEF14D1C1B24AD981F24A9355B84A7924F84A924F82B442792498924F8284F9244A3F91042CE4C1D628F4112483F61124A37411941A1F41F64A94288F443B15ABB4FD
+:80CD800053A2945782AF1439358D913B438F14F8255289B925DC18F825528B241F2279D855148F59C2529E2C4D4B1F41C6D21FC962129E4C667181FC42118E2C2F54F981282D355D684E9147822B94AE484A7924D842B92684F9245A4F4F06004800000000448002000000008001880000000084000000000000280000800200F0A8F84044
+:80CE000021029342942C8D41872452E08894288091822A782AF12441228B838830A4438A384A2E1820488831121220741442859881822846F828841614212C0214822322088B818141A048ECF86EA52430931E2824A480C13491C18038D8C30844422598194449318412806442431454262C2222C8A84DC2128053241A92288AA112584A62
+:80CE8000282A82A8849200418524A4145843E4D102C7841414130785516A229CF5482214F044888B2883C218212CB241D2588683728482B894A281244F88347C414C3822381391982C2464614F8441B2111AA8928CB54C398419BA848622AE81882922183CC8122C014F8D7294B8C60E25028B1228400C16B448410CA09443883884850255
+:80CF000085719488110443A284224002A4908228492801199284A0822082A214008210014004188C64444904B06601210044A3028052282086020082291301928901C04887142E48890283140200881125022099984821150884A113C882121841218220014181D0910F1A225332227038417C4A92449E6A188A81F1825F1AF8244855B80F
+:80CF800084B718B22824E61298382E8561E044013B2149182B89951C4991443261453145267981A441448E313E831A32128B4846E4817A2488B714C8864B148B811A24E42B49022A419224B028416882A48AA716004E89884B822D3C4BA48C93487828226CCE442E488B61C053880018491841A221218615954982124197219438B082A5EC
+:80D00000414372228C2BB814084D181A84F46C67A0215012902A11412374424418A2832C61412961841119011A1AC8818C1159181044C2284542A9814816C814630441128B4928657141082AE8287381A21881418909481644B214841808AFCB07C41C7148A4128F41345822148C541418814C823144C3A28220419484215018880021C05E
+:80D080001E48858168249028488481566E62B04412711A24951118293182A0848B248A4246122823E8B60F460A6221281485C2342A71489281E0C1C24124862251411D28228B1227C4834782C41C2B212C24A824124E212E1422588F489164136949801888B12829440C2B2410144168418C24440249A4245B8914220010210284142B1204
+:80D100004822828908160184301800A0242810982800804112480212254481828104488821892A0889B141111422A181A24A09F08C92F0442218CC22F2344876C9281D1446EAC691D12638888E5146B2A1215BC11C1334A84784844E222A4474326A8623386821893434A38614624316E451C84C47228CB434D41804A9C58B981827C11237
+:80D180008928A43C4C24AA944B4226F286D8001124121440C2282E1111218041485484211068834C014A53818884009014522A214822B12409AD81842E1292002E929E4CA021460288484676341828194288A1481FF2066241400C106885608410B1425224284021088822004784C661C446C142811400448D11A08441002E881148301C26
+:80D2000043311120211864482021142825A141F0F76C40A2212522011A044483140444838848188C088A021A8C280228260241608111224E2842402468828120111808402804122B922270A884A84224223022FD3924008148AC0424890156421C48021284428A24D12812B12CC4582200CC34221032228048B48284084C810122C014006F
+:80D28000442A2504228089014241448384F4A4CA40041887229024232412820228A024001844A9040047182908001286684F8624480187432007A6CC44443021E01221142142840489268891142118291AF475F1201C11022624C6684024A882284C811808005332886A9184002814224230484240A8484002804118588481C44C6484816D
+:80D300009098B014648481808884883818EFF90F8C724288048904181B42902EA19282004248002B142908232394D84440184142628114872224228534881B4800114502881486A284B014048241008004F021F1144014342112A441248C024200161162581E2116844444B422011941240426E644081444460428802202CA239322424089
+:80D38000A82828124A0288414004884024FC25A8244128842128350821422301844129844122A8248911024282278A9028AC22412258244F180144572860114C1884118424240112848491298841042B944C31144368C186F455D4C01880440241108402284C8CA421C6840B20284624D18614C118112D84C0444CA24A464221A2418C24BF
+:80D40000A84122448145A112488392228E14B04202462281C424800221F019C1244B345F4C22B12772123264852ED4AA92DA222E314DA21E46A558141B5F8286D286A5824B71CF63DA4B744D58AC1F449226CA9843C6F2A25449EC4AE1AA33428BF22E848147844F12F241682E244E1C856814FE492CC28EAAF114C48E448AC88448414B01
+:80D48000C8C345F813BD7022D2285188ACE1C6D628956297426E447AF24AA88EC2C41B18168448F14412CF932EF85234A24A41A1421F42D28EA4172D4D4F2EB8259C848356A4C84F285C41CF89F251188F4384019C15EE47E24281B342385163A124CB918CA3451EA21EF41AE24AA1A58FB50C4C3422253648813D2C526FA107454E5488E7
+:80D50000CAB542A8B487CF29E842AC148F26FA85428F44F88148FEA88AEA146422EC542C8FC1D35272114AFC48617745284389F1A4A48A7B185C5EC325D114F91BE889B818B588E544AE182786CF41B486F34C14422D148CFC86462D2A20112211225124C01290148001240040048100000021831122011A02000000100400000020012268
+:80D58000204221023281CF3648F116645FD1F33C36DF7383F41515EF45F13D35AB516F6DBDC6AD515E145D956F45FDB4A66F47F634349D4BCFA9F9B6543E648F81F9ECCDCFD8F8287F3E214F63F35DDDCFE7F99653BFAFB5B2FCB4BFFF7BFBB2B63F99F998B45F5AFAD8D41F65F573386E26AF84F4283EABFF7EF2AFE555F12D442E222F97
+:80D6000088E92492F2AEB44F6FAD76BEB86F637EAF4AF352467F72F62C2EFFF3F35A129F36D2E4F415578FA5F6F2F2EF47B738E724FA45574F45FDDDCF7F57A61B9FB2F4AECE6F4BF52244CF83F1BCDDCFDEF8ACED6F95F37EFCFFD4FD7ADA2F3DF6FA5BABCBCFEBFBF3DF2F6DFD93D1CF4BFBA5A5CF4DFD5D563F87F7343EAFC5F5F9FEEF
+:80D68000FF4FFF78F2AFAFFB45976F41ED23FF22B84FA5BA52FAF4B44F43B556AD114F66F711AD346F62F3276785F2292BAF87F77535EF45F13931AF25F6F6FEAFCCAE714AF61591EF85FDB8A27F57FBA4241FBCF4DEBA6F4BF176343EB88F8EEF88FA6CEA4F82F6387A9FD6FB79BA7F31F4587BABE9CFEBF9A7CD6F69FD13D1CFC2F3B50F
+:80D700003DCFCFED61F12A2C8F62B27AF73C3FAFDDEF27FF1A3A3FB8B9D26D24AF877748F2EAD8CFCFF9D4F42B558F8DF92C56BFB543F346567F72F21C1EFFF3F34E2E7F74F26A6AFF77F74E6E6FEFFF4A5C2AE62CDC37F14ED88F2DFC77354F4FF5FD5FEFEFFFB6D44F47F57CD8DFDA7DEDFD6DEB7FB7F2FE7EFFBEFE7BF23F3CF65A7A52
+:80D78000AF41F67C5E7F72F8D6D63F19F93C345F53F2FCCCDFF3F16F6DCFE4F56E7CDFFFFFDBFD8FA5FBCAFA7F74F5D6D44F6EFEDED8CFADF9FE98CFDFF914744BD5CF8FFBECCEEF63052302612002418C048A24A24180442448A449249AA424928F440246044E24704884A82449082A2894163024901448221A342484A041248E488044EB
+:80D8000024011A04824624F8D628308244812827248400A32618628800A9288202814301802188428852224042048226488489B2286848811A82C12C81122A4188618125249188414A18A48480016BFEC0521F41D22AF11124EF24F11124AF24D141B24ED141F24A9219F24A9355B84A3924AF343924AF547925D81AF925481CF9244A1C2D
+:80D88000F8244A16F1264A96F1224A96E5A2E449C24A1F49C2421F4952281F49324C1F49324A1F48F24A111D24AB9419F24A9153B14A3924ABB443F242B2478229FB3448B84FA2F4ADD4C0491D64AD414C724E81726A5141EF149121AF4499218F54FB1428AF14B835B44818F148B553D21AF927481CF9255A985FA2BC18F825429E211F90
+:80D90000A27498C449D645FA912C9CF481648D531F49724CA32987341F48F248138E64AF74F98124AF143315AF341AD42899442F24598429F91648A9D884F5AC1100A041000000004480420800000000188008000080010048000000000028001004004001AF4641121142024818104464384AE282084448241149284E08184931448032E1
+:80D9800018604944494918E48284ED2204988820688C3446988242D0818881045048441688668490445FA90F284B2885C128242883C33915484829C4D889919818521C11A416A82288281342048C26A216158204124480110280113248121E458329C1128748CB818991142A210812181C14F87A55902127468522223412289741D495323E
+:80DA00002CA6E8C6C11C8B852C61144C6146222E821AA2811E4413A22889E182E441E841B48131494189365C462285012039C81CB442E1143854E088C1948B3C83018D1444842E52164861C56F61082140410828898102824681840800181388E88104402402410028224421802128022928081042582816948812348444C01422881280B4
+:80DA80002404BFB503221024C112000015C4110000160840144424828804432204008B2141890242481086128A041283240112988A84112424C22680028F4422F27474244136D41291286782AC6283857452C488A6885A818243C8E2537198F289128F28B418328183C2A84C9642A59146C3B4C462442249A482184B8326C1A1A5A18226AA
+:80DB0000F184121D884B382B488F21A84842A544E88261C15349E884A1418A038D42BF6C4683624327511692282823125C425C988810813884269815884486E882E11882EA82082616884434441684828622814F51422322024129B8182E0112C2821845088E11904880110815074400836261818301528413A3828100D22189F1821B4D10
+:80DB800042441088E44432421914C648A28B2441C4824844281C5A81A9B84182D91851244AC898232CD14A1488F3481443D2843212788AB244E282F488D3C0182662158D248992268186C318C59182281D241028024210328200449014123A94C228215C86A428418F4124021908628E6425447818C654222823951E29929421288B824588
+:80DC0000021A14E88148423814424004809121C029141E244092112243038416D82812C442888C21021B12811114B60813B18A9242922480698112A8D04812C83841428B1848812918746AF2411426B844926200208201814A73A8C4442A011883C84440884471A42802440000482180A184502446080080C2146440A2418800820024E03B
+:80DC8000410212401184A8C224121226D184C324221A62C27F81267228912187184C445281685B342E8426D882411CC4442918248733328B122D81484F22A52C4D11CE1422121302F25E28648B8580962882416F84D12222C536A2CB92B04461C4C3FECA89004C92125028C483341170119C821218102803502880280200849042C6014240
+:80DD00004332888470220288826941D426282162C9A9018D121A0496C8868400AF440238F0E6D980712851414A8221C3214884002288448E244146885A2844248A62441210324828888244004A2204840000448A2491442E48C8826C24948C8A15044624B28484C2844F2F0C211212805412872480824E01407141024140044344286882A3
+:80DD80004A28722491444518428AE444180244248100882444008E14848125D84851222054821E88E18049F2AAAF20051086512641815C022D82112508214011042088084824122A0491E41C48A241808CD4624884121434421883C42A2822428400814A03388668824992229B8D404CC449129400174242318180B482C21A2829189AC284
+:80DE000022432484C2842784430484418A044422902884224034422280462201AC684111A23A082085081281487FAD46226844CC41440883058420A184AA2464885082288B9421114005A6141402241018C18821644004410048C44444008391848E14800322B08432C2184CF8997D4028813411698401284008408872441184282402A274
+:80DE8000938428812154848082A4812A54528A822882A8429462ADC286868821A494C04270420A8556482F6448288192421AF4BED490412824280014290482211114E4802E841885180A101401248722428382260811200882288844282289AC2824488001874480883141428421F07DB350418002D014421418C53C200884A08418838439
+:80DF0000D284922814A024253828102408508484872C24484224888481893818884008881820C7A42849322280C181F0337B1484804412042951412502C826543219064012142208269422884923C182A04224422AC82144282E8A1992CCA4222D612210D681012D26A02800218E18408604233428BF674CD24261CC183E225B543F21F3DF
+:80DF8000244E3F14D442528A8E182F28F24148B5E44CAC2A8E564F44FAA845702C38484CF24C22A37254A24227241121E151269CA4CC026766D0887282B26438E48E9C67C53D228FA2B48AA2C8ACF11E844F8E538EFAB824B4843B2C8D449E61F2DFDA4FF115413A42DB47412C724BF1242C47929EA325B121F822833C7411E9441C12C2F0
+:80E000009247485CF281A14F1C68481422CB24CB22CE448FACBC71E4423C8C2B446AF42282D0EC6A2262A7C82D262B43984FC3E54CCA82A7256F41E4A4F51AC62ADE26F7529287922D623AE234D124D8C908424D11D74348A72145A511819D422E444A681483F84488ED2265F249888FAAF446282F82BAC2FC2648223AFDC4EE2D7C154E6C
+:80E08000FC2CAA26E488F8C22A2F247FA1EA28B8C4F681A8237885D448D62196C8CB248B488B841AE186D484F18881A2E04951C88D242F65E4CCE98CF92488CCF6319E000021004042581400844400005028504800101802218011088121001042184408406281002440244104140010F8C7AF244D445FD2D2DDF21535DFF9F16A6AAB44FD
+:80E1000017126E614F17FE56511F12F2C98915F143458F8AFAFC3447427F15F5A4AC7F5CBCC1FC21C56B461F14F4242C4CC6624D444FCAF2B4B45F8AFAE4E44FBCFCCCC44F4EF6A5AD8B881F18F8888235F38AC66F6EFEEA667F7616A633AF65F54486ED162F25F15A9223D488594E4FADF66C6C4D146F42F6FE67246D441F52D6DDF216BB
+:80E1800034DFD1F16E6AA3746BF36B692F17FE56551F16F6C9ADDFF47442F4E8A8EF4FF34E647F55F7A88E7F7CF4E3E95F12B4E4F56543CFEEFF666ECFE6FE264C4FCAF29494CFF8FC6444CFAEF6E6AC4F4EFEC5C5AFEAFAA7A785FA47C7EFCCFEC6E6EFCEFEA5E58F45B1B2F3DAFA6F6CD96EF3DE12AF2DF5DED2AF84F91C14CFEDF9EE2F
+:80E20000FCCFC8FDA474DFAA4FF267645F5256D9FFD3F37577BFB6D68AF22B2BB756DFF7FA73751B221F8CFAD2D1FF91F1ACAAEF4DF5A48E7FD5F5E6EC7F5CFCC3C41F56BEE4F5456B4FE2FA666E8FA4C666CFCAF2F4FE4FDBFBF4FC4FA9FDE4AEEEE45F5AFE8886FF78B8C8587FEF68FC8E56EF6CF43F772F49E926FE5AF2EF65FD9E9A88
+:80E280006F25F158CA6F24F41A9AEFF47CDEFC7A78DAF964744F4F48F266645F4352CDEFC3F2F577BFB7F64B68BFF6F66F27FFF7FA73F73F16F64D8A7FFDFDDFD9CFAEFEDED6EFEAFA7FFFEFEEFCE7E5FF9EFA65E14B4EDFB6F62CEA6FE6F6E86EAFEAF6EA688FADF59CDECFEBF7BC5A6F6EFAE2E45F787E88FEAFAF87A4FFFCFEEEECEFF3
+:80E30000EFF7DE5EFFFAFFCAB2AF2EF6DAD8CFEDFDFEDEEFAFF9DADAEFAEFC5A9AEFE5FDDE9CEFC7FD1CDCCFCAF4FE17D0140118843C81C4114826A2482482248E48548E484CE2888422D84832814A228812F24824902849881226B4262804100241C08248881A2462882486482649E281D448228822684482EFD80714135128844D13161F
+:80E38000181E4151812C011400861802218242004180840244244429E848826848248E24EB82822228272216B42C0821122B14431138241812255284383A4414F432E9C0421F4152281F41324A1F41324A1D24AB141D2CAF14D981B24A5985AF443925AF1439242F147924D81AF924488D914FA2C4815FA264115FA264191FA26459ACE547
+:80E4000049C24A1F49C2421F4952281F49324C1F49324A1F48F24A121F41B24AD981F24A9251AF143934AF4439242F44792498924F8284F9244ADF3C022E4A1D64CF327511346A1D24AF2651414B14CCF26A941D6C2BB41D28AF443925AF143925AF64B925D418F92248AD955F2394985BC21E817F82641D37A2875C2E138F5982F4912C8C
+:80E480002FA2F491648D419E2465E1897642F1812CAB141F4952581D6CABB459D218B914F44AA443DA42D18494BA6F8294986F22F52AA600824800000000002800000000218001880000000000480000000000290200000040014F454C1122321416682245480911708289115184488E1CC9B44C2132881B4281897828A4C2644834A02811
+:80E500002D1188252424A88114F08132324EA4247887252A810858818B484D424648A44A88A13E88C8815FD703F08114241D248301450285C4254098581A9883210065A1141A180410C428604610B4442284C2224332246C6121002D11124C8878C46984228938448082A14244430449C42142BFDF4D01174F4C713528134A041554215989
+:80E58000187868616814A96984581D24CE181D12848CC824428E12D014062684B3810462A5B414324521B622A34B124C2ED94B998C222E88848B842E464A11A4288A542A8F44E112BC18D4310721400281448503814C12288161814A1844548421A0A44140C8A447824224C0824645C224A02888122C114152412412838426044A914400DD
+:80E60000812A644441200AF0DF73200280028424444034224880D4284808411C03A94808488314012242D04842228124092821112144221508122028048822188048882102F0F886804116D427911C274289E182D481E28822B823486848422A1821B448A8241332C41B428722112AB442D214D425B22C5821222668424674A294145338AE
+:80E68000BCC9A4A14D416F266888832ECC518C8174526C4C4B84484B418E524E8CC9E441BE28F8B2FF800144275145D84A82414CC12690228449B448988820E48882F48A21868442C8484223D4146642AD8464282F81229484286CD241D841D884C4142E424A2A8826848505C6A442492164448B48ABC12E48228B822E15804214C22218E5
+:80E7000040B842322883A882C60182242211441C85028CC44168253121286014229C029024582D8412E08112225A41551AB8882138818146628143880C92184441D6045FAD074420741659224C914136C414851228A4288301B1453848241A024E32431668214B8447868302482572280128418B244974983584128282144944C6942A8812
+:80E78000229814430441504A708482E141D6F2011B422893041A44612185112194C1841A02800940148866A8A01C43821882A481386015472280139862108182121836988A4104DE280024D2282928442204245F3E4902E041024C124804211820032F1804A0822A71810884100123880200814110624914230824284265924440A124007F
+:80E8000020A148184484C48008468CF87CAA70418432396147264961151E21444A91C98C43E2150829C82C8B14D728A042E84F14C2C2A6A24246C468608125E222552486C423242664394C0849CA4441C71D4DA218888C2499D416F412C4AC62E88744824C28D4247C190523024117812951814542DC1241188284490817818822608381A9
+:80E880001608844445922820A9424484282A61412A0CC119E22601AD8211A0418828980048100400488D142AF17C288001400828182846848A22A82420280200222481244249829844620010A248C06C2028018032C88094328014645100000028862428F4FAAF40C21B8962228504811200A0215021871412832C280488200888400182E9
+:80E900004410942844824044E488818418046044AA0122B08CA1844EB84AA81C47242440046F170F582444214068240080082482400800424C8404281902201884C221278470C2440184C044814100100180682100400480096AC184CF370C60820040010084108248082082C2812112222301A042468221028210941980844308982490A5
+:80E980008444216362421088C422008418A09484705D0C82208244A214202404202C04412C4A24348C82A0284784482508C4282002288848468428C424008601AA04803881408482088842490800D04C0F444248240044107282224282082A1C82080000824042028125121C92C1CD4100252CC84210240414481062418B122800A0420043
+:80EA00008C228408A7C3C06800118C84126812281B1400E024418814882803A880120820028200444028C242128AB12888024948866889C04248821A24E642112828044441245B7480220218502240084A820824C824C0212628F42242144848002B2422211B24422886226222902413628AA084268424140C4F81048848A116143414A07E
+:80EA8000219812384B687F6D0B25888124028142421082D4D2022890C8482484818C14D89222E28811C8884824184C884121D82848084819911448008881E04208A90281C824162418843242F0F7FBB012E11D5242233142879125BC1324A444622D28C88B482F22B828F844888AB8A6A1449E41289E4123E228FA62CA1FC2E482C4824DF6
+:80EB000064118AF24842C2CEE54332F44FA1911C4F84F221444F887841C442C3B142AB988B3A1E548684B49413E4456C4444486E484DC24B83E042D4A221A22245A2222086B229BB82B81138C23C784CA14C8B2A2AF248422B22E18C746848782904CF247242F2642126EA68E824A5A817A347A26C94B983AA214CF8C422B0842ADC9244AD
+:80EB8000B4413642ACD88AF5A4A84E4C4E4486B834A9186B914F48634EAF62084A32288C72415A8823B448C5286D4223C822E22CB242E188F412282D4146D881C8886AB86A98A44E628428A0298229A122FD8447C2CDC481230C4CFAC1889A85E84484D44EE82239BC226C581C7256A2828B8B29E128E4836A4E1A089F110C444004442452
+:80EC0000442C41D428018D128011C4124118412441100461102611221122110221000000004800000044484008844008FF5642A12347C24D241F11E3C4F4342C6F45F529311E141F5BF3D2D81D992B11DFC1F153586EF87F57F7BCB62B6E8B227F78F88CC41F18FC3E428E84CF64E647F778725F59FF584A4CF1C554CD4CCF51F5A4C46461
+:80EC80003F51F3981ABF9B215511474C5F72F2CA422F25F54E481F35F15A562F6DF892C8188F88F82C7EEFCCF424145AFDDCFCCF89F94282FFFF4CF174664FE246F215174E4C4FE7B652F12D37AFC7F3A9AF6FCCFE61FBAFC57F47F4C7CC6FC6FF7371CF6DFDA6ACCFEEFAA3E1EF4AFC858DCFA7E1E8F84CFA4FA4F66C6E3F1BFF7C6A6FDD
+:80ED00004AFB4457EFCBDBECF8A686CEC6BF59FF183EBFDBFB74745575C4F46527EFECF4D6DEAF84F4D1D3AFAC7C52FE324849D188FCAC7E6F4CF47C9C8FA7FFFCFC4F4BFD3A7A1F934BF174447F53D51BF21B316B667F13F27B7BBFB3F22E38FF9EFEE2E4BF11B882F3CDCF7F54F8786ABF9EFFECEE6F47B7AAFAE3A9EFC8FCA5E58F2863
+:80ED8000BDE6FE6CE26B268F22F2B5E78FAEFDE8CECFFF768EFEDE7E6FEAEE2EFE1371C7A9FF9BF1D81AFFB6F2CE4CDFF2F6EA642F67F2DACC1F35F1DAF24F6CF88ECAAF21F1DA98CFE7FBD6D26F2BF19E98EFCCFF94D44ED61F5643E127F63B33F5F73B336F26F67F6BFFD7F3796B6F26F3F7F32F6CFE7BE3EFACFDD3933F34F8D2A2FFBC
+:80EE0000DEFFE8EA2FAFFFEAAA7FDEFE28481F9AFEE8FA6FAEFE7A6A2FE6F67E7E3F3BFEEEFAEFECFC7E6EEF8FFF4CEE6F2AFAE4E67F59FB94BEFFDBFBFCFEFFFE7ECEFCEDABAFEEF6E2AEAF8CFC51F3AFA4FCD49EEFACFCFE926B954F6FFBDEDA6F27BD36FBF6F4CFE3ED62F7AFCB2002188440084822822282A0486088288A84228822C1
+:80EE8000280428200428809284424928840888844901414022018A04922088E2880492206944822F1206234804446041C90121440010514248850446044448444024420444002C0484000082498104484200280020213414C04842848544F1BEB5C0521F41522A1F41324A1F41324A1D24AB141D24AB9419B24A19B54A3924AF143925AF8C
+:80EF0000147934D81AF934488D915FA2D418F8254A87114FA264195FA264592E4A9E242E4A1F49F224431F49722CF2912483F69124A3F48124EF24D1C1F64A9119F24A9255F84A954782AB944B422B9447822DB44F8284FB244ADF3A051CF511648F127411F468131F41F668131F4142F311644E871F41E614BA15F24A8253F3488253F33E
+:80EF80004A8253D318B817D41ABBA5F548917B8289B82775C8F1239887182F9265582F827591FC224B8AF42A5192A73617C1AF36C82C2F32E988F648171F81D272CB684E934F82D46AB924F442B28429DB8694B24D5A7F710584414800000000448002000000100200880000000084000000000044800200000010021FFC05242460838CF5
+:80F0000062258D2428C0A81002128E432848B22210811454284124282282428064682C12011469014AD158F88844E24991212098881CA5414A51845287444400A61874284C41A12826125421C11612642545A12CB04868484001818344BC84160848882902E13410B81488A2414B82128884CF2288D2228211A984188B82178242C482C136
+:80F080002A9426A28321B44C4815F8EF38107162825286344974129C2412F9B82414A2C24C38811C82E488A342444F220CB018D42428CA22260C42B0C1712482F58A2412463218A6AE52737AC2B868989413D38432A18B42CD5188837468A2148D64182CD448887218F2448800001A32281668222084820881124602008184148C4444026E
+:80F10000240086111218242812011318044098141142804888084A3114444382588480D44818F46A5B001902004082447211085018400644124400228902282444D018528480042282472200116B1290181E482C88B44221114218126444102AC1142283A4429F4A094C41722411D282D1817224782992388A4491BB23E488E58CA1381925
+:80F180006E888BB4AF21344496389184499444282D244B844AB222F412A47A385C2F53841DC1842E8C19BC98A4482E844D51C71288C84A2999D489688B2AE94A348E8966582A18F44FFF90141C524125426882448CA4211D18C03A8714184F2C81312418478E4A118621121824144694654D284AB252A83487451D244C01D02DE215BA187B
+:80F20000E888C4DC1728B4421242989886EC84AA288E48492841E184C224AE4F0024282041D128922125AA48143308C618889AC186885182482E88990962442829C2882C044322C8229AA4A425318488414812284B144386A9842B18842744C0142C6142A3F14824432A88E4B64A3248B048110858254E4246349A1E21860489742A02269E
+:80F280001211D816612860244B414C180433849141323D38322528062088440210A19280A33861C0C44922912612ACB211044AE2C8052659244334162352843A048C0115C242CC9212004A31148C223228369234874828C82442818140788184C428005951228762AA9518633442481749214A62B1841820C848812C6C887644749B0D64A4
+:80F3000022004C04604114804408CC847114C1A494124C0120440128C01412446328040024491188224181081005842004C0D8430242121942089F33042591264361A14386F112484C51E3B082E5B442C25C486B126B14CD332E192233A292384F8894222A44A241B944F4438462A624932250421D14244722AE438E186724485E251B8192
+:80F380001216E2311498C44F84EA63D84826A44B5EA84981F4B829B02404A54204CC742402184485239188901815880A7014D848014694114614441424C118C01A8381042A2451288AB2482101402148C2284A5884208101608181B0483224FE328001006014411C221181A42C601882244148B014C24222882F4208904C40081188412381
+:80F40000A81888180012860289044328419264448009804492184924C8127D3E4012042A21042118004C22410841132124210118511A14618296C212384E11184B4180870100A02100200220081286011084218808C028F0BFCB80041220313483470800A084243022842A01004088A4284018E2888492A2280080888A0810142C58840032
+:80F48000288C084243826D426042800863B2FE04B011024604230444800244904410841804818688140315D81414A1489044242C84985843C241441014886114462404258101B08401418C0160288C8241D8850D21460228840000004A988288814B2884444C14268A021242430424882A04902829044C14044141008212160800841A8474
+:80F5000008B08481A421411604FFA50224A042A0421082B124A18472604228214249B42888A2941B41184936814092442850224C848C4CE842248128011818C2128840684889842102B24A088D144A88A18486F42599801604001880042488442418002AC841838102471813884421011214826021418E2580024189280838008A041091D3
+:80F5800045E0448114041C1A2404425FDD0E82A2641D124CC224836482444B214114504288242800302C5283011820110170A11808A04841A08181222AB888C122438416A4838842A12800C420348854A29F2E43C2288D1248448220626468002962444AC242008427CA8E4821D04222A21C11198884918490129426028C81D294048555E4
+:80F6000048224486190C442A3118414221C223A44141122184DF2248A1162FD8932452C12E712B624F43B45441C51613F626822D4427285722CF8AE244744884E44ED214F8D91113E58898C4C53A224AE82A823882E7428F425A444CA528988D1443A8219E886AF142818636152AF95148C24B124A9C82442F44F881CACF4199288D518BA7
+:80F68000C2CF3E41C262C22149B2C26424814AF322246A9AA41ACE4447244C28D442E811BA24B36AF818185247828ADA1874117151E42451284F44BC46A3542CB352A198434C34988678387584F2216445F884544D68E021E242D898B4189414FA95F48B5847424A34461C52C41FD10421472316F221143A72167454589820B16224688C36
+:80F700008E9183F412A44AF42C182F81F8943C2DC13F42C7E42F52B461E264D112B591F69159189F7AE4A1EA8CFC814A6AB611BA24595443C218CCB948E1485E888B948328B888F31514274CBE244534D8415A23EAC9FD94868AE3F30300000000000080011C011440034008844008252851811241123011301110011141111001400440CD
+:80F780000812144004F0DB34D044F4163425F227238F84FC747225E462B152E761F2D6923F13D2CAFD1C18CFADF52716FFC8F9381A3F1FFD418587A2CF52F19DDDB5D199D8FC55FFBF92F289999FD8FC911F2F21F136BEAF21F117954B114FD8F118199F99B9B1F9BDA1DFDCF89D17B3F47D351F137318F899854FE9F99BDD4F635ACACF3B
+:80F80000E459C6CFCBFB945A4F81F1149C2F8676B8056F44D666F622227F33F348EA6F24F642645E366B554F6DFED2923F11F2EAB8EF84F8CC4A7F6EFFCF9C5FF8FAC3C99FFEFE6A58FFD7F5BD9D8F96F5E9A95FF4DDDFF4236BBF9CF1E1EF3FFFEE35F51686AFB5F5DFCD5F17F7F47DCFD1F199C11B138BABCFCDF89D17FFCDF5B4344F30
+:80F880004BF319998F85F4D48ABF9FFD34A66F45EC287842F8FCE84F89F9564C4FC5ED87B7434FF214442B732F62F237378FE5F5165629F634762B751E262F69F9F361295F64AFACFCB487AFCBFC3D5BEF2FFD7EB6FF99F97B71DFD1F7E5F5DDCD5DCFBFF5F462699FBBF7A2FEBFF9F416DF6FE7FE5C5E6FC1F8D5512AFE39B89FCBFBBC51
+:80F900009DCF43FA8C8CDFEDDD9EF83CB83EB48F83F399B1DFF5FD1FDD4DC66F4CF464B66FCFFBDC5D9AF5FEDC4F43F1E8D83EB6244F67F632322F63F337378FC6F67476AB754F65B376F5F4E62F2FFFD3612BFC6F65FDCACA4F7FFEF8E8CFEAFFF3D9CFEFFF9FD9DF9BFDBD9DDF56F4ADED5F71F41F1F2F36F6BB7B2F6AFDAF8F4FE7FFBD
+:80F98000A6EEBFA9F587ED4B59CF4AFFBDBC9F4FFA3C19CF4BFAC9C9DFEDF7DE5D4F4EFEA1A59F93FBD8D8DFF5F95FDD4F66FEEEECCFABFBF6BC8F8FAFBBCFCFFDF4D48F86F5ECD9100221208224A241221226A2488044224824C1241B4942114413881261441890814A823848632214048890848449A84149688120088E484412448A54A7
+:80FA00004882448244829B421084220221108A82010020180228C0122608A03400484421D0224554A400800841202201284230282818200498008C044828F03693C0531F41D23CF11124CB141F41F24E111D24EF14D141F24A9119B24A19F54A9543F24A9143F2429147822D954F82C4914FA2C4814FA264114FA264191FA265594FA2E544
+:80FA800049C25A1F49E222F591248D121F49F248121F49324E1F48F24A121D24AF249921AB9451AF443924ABB443F342924782A9FB24488D944FA2F43175C05B1D648D534CF248111D2CAF34C124AF34E148F64A951B212F54FA15282F14F83548AD835F8AF4429347821CF9A6482D112E4A5CF924CA1E815D489AF2234A96E4B264118C3B
+:80FB0000FC912C2FB2F491448F32F4912C87361F49724AF381288F36F181248F7691218F74BB11F24A9345F842B247834EA24781B82F83B442D9A4F1C5EC6088824800000000448002000000100200880000000084800400000000800A00000040012799004312412491188119628426022334C8814A211124C2C222252803242642148249
+:80FB8000220858214100F02282822AB9247488941A442624C8E82CB8183444444008684492281ACC24FFCF07176292418C992844411E88214CA81C1608C0849400C19849984485B42444244644126485A86664888D444443351440941800828C4504128884C2444B41A514A8212AD484541C489EA4D041F2E618141A3838434178216284F6
+:80FC00002694D629346884D2184428C22968681A043E446572E402222368858AB225149444C14CE54522E84AA124822D184CB81424382C822F8718B844186424844A22E2247824E8514CF42D140010440C84411E882008168808441508504832A143524880024440045221834808248221901CC4008342A484129044008D14418143818389
+:80FC800014A842BBDD0019022800801208420080012122002184004A02C0482002480082000022201401104288080088222180312480D44B0D1624012921220320C62481004D128428C885249428A0241862412C8404814218814CD128644110035301430A4B241C452434811A44A41C444846948882824048F85A3D001C4202282220826B
+:80FD000062424200C018308222002183062A24C4423048A024001694482D84501270112482021744402674812819240C40222828110484DF270D8D1458A0218001C0485048004D12282242858464824082014B2180048120C1480016080048908442281B4100200438444A68468420284288F496FBC011001084811208100810C1446082F0
+:80FD80001312C21C18430228240026A8342A0128002B342022018418282216240240882804281A04844800221ED400148124130511275183A1121158128C114804188A22122908840018122440044238004032281E442608293148566288208905274216682283324412418C023F9B0B000050181A04428004116180019048420000004F6F
+:80FE0000825442006041120000418012028100488014088B81490400814242816FBE06181440028581C4198C041110511AC14C9128388E6883D61861480000478427C2422A116441128004221612A8428382A22156289788A08589856441CCE62413384883812464821EB9400181F04411122E1344181A32481A84311442001121430122BE
+:80FE8000608210A221181A120222422E121A021084D22C21414218042304818224A688012841424189029F280D00000000180000000000002044880280040084200224000000901800202488088110880400F09F4200604128105884584304182C31481818008187421283B21C22028002228922021822202161223022001008128452407C
+:80FF000018A852802101848428228F3B0C814841008480A414604118A984810210880289022820012004000040080048004088018085042812811218008122288FD60485B848A4544A0250481844504445B424A2222A0100458841D26AD322B418A131B280922822301922288D188D1A8F26A4442B2400008412C1A0228BA2838A06408835
+:80FF80005428001AF1258600001800000000841008001200001004004400000000181800120000008400000000006FA408818C2584048081024014C424838202420068502290121298824C18022214111484818C2584041088024014C42C228C02488004502290127F870284800420110842004480020080040021808182280289024814EF
:020000040001F9
-:800000000241818444A02181388032140041400200220040381A204188212211F8ACFE0020321181122100001008008100414008004100122460224042040012211A120240048001A10000414008F0346E000040022051288001000000210000002508000040040000000044008901000000000081F0BEDC00000041008041420800492187
-:800080003112D04801844342480890124522D124228131144084210121400884008001602116480485041810FC735E000040022001294102004044622120018042080029011224001604808141020010080000C012400441801118F4B4C200000044008180410800181800C1404804A4840045024382614100440000101804901880010035
-:80010000890110080084CF334612082082C1129022C01214412121183012100440024441000081008902C122218001C0228181004181008C410400C02830486F5A0C890245321441141800004120120800124048460429018971244A0400008902302410040022004120420281106A414C0143026F14090012000000402801810024000049
-:8001800060810081000012400480210141100200000000002012084008F75B2002412D1416C4112C2102188110528289412211220181301C644460814C524280014480828191241244211012080000301A8124844116C428C1421F8305218081021002002521010000400410048041088440089028406422004400228422001008004480FF
-:800200006281002884AF1B0D9014442E1425981400002140820125140818411034244400A0211212430122200222124302000080010012288002288042C4287F2C0D220000242828282822C024808101240000183828400280022200204202100822228322120881280000004200F0BDDA00400200000000002081010000001818000000CD
-:800280000000120000000000000000001004F0CE660026880180020010C8242418212428414002122880223212412118282444005082200100000044002280030000284B144F830D004D2200800289020081200129012400604128002901328081010090141880010000811008000040044140F1269A000000800118814004890200200106
-:80030000000000301821000021418400120084004044040044000000003F2B0F28002083120221212238121012022D126021000018282602242424248022012480028082828202000000000000F0D2C30020820250282890284002810000004008844008222800298101002100200100008118810081000000F0EB1CC018224840020050A4
-:800380002216C414282800808192121A8211021880082428284011424808488001000040448402008002281022F49818A012B01412F212224322827228C2224D382AF1281212211E1416081A01211A414428E222A212182A818221522210088741292101200222701808850C2230180041424454185F2A0A2881260484102882312A22129A
-:8004000010AA1125824146626128844B12222884272125DE22C212281E124129624126D2222181E181219128228C22028001124100002820F248442F7501B02443B224032CF3122290228421282D24AC410223B2129122298141A4214C0312A023122373341222032220024B2200800228418440082822282828902480F2DEEC200112204A
-:8004800001400200240000222002220000000010820228800228000000000000200222A04220027F94092AE383D164F236362B112B228F81A322AF83F33A3849E222721A5C8A123AA3332AA312282F21F22C1C4D2487832AF22828188F82A2332AA2222CA2332AF23C34284FC3A22318A0118F82A222282A528485F8181C85084F42F228CD
-:80050000282A22D24482F624644B445AE63B0D2AA3773E362F62B622B232F328282AF23A388F23F322242E32AB1385FA32122D122B112E222F2391322F21F32E2C4F43F13A182AF2A8BA2B328FA3BA32E223A2231F31A23325F1141C2CF276662B221A24A1118F82A2222AA222C485F838388588524485A822224D242CF626644B662B748C
-:80058000CF5E0B3AA2624F63F326262AF22222AF83B322F23838AFA3F322242AF21828AD1A23E121F11212272229423232EFC2D144D288A1228FA2FA3232AFA2F222222D223E323E131E32F0141C26F21664123A23A1118F82A2222AA222855C888F814308455488222845247646F424244AF5F736A0233AF724266F66A2332F23F32A2861
-:800600002B228F83F338122B222AB318D3A8B112B112B132E323B112C3122B13AFC3E363F128382AF238AA3E328FA9E223A3111E1226E321B323F2141426F21476187A22A1118F8222A2222A528885F81838842245F4282822284524F6662445A6447E12200243022302224062810024164802204102204104288092122829011810020054
-:800680002901180000008440080000006044F04EAB2008002200200222000000000041000028802282020000000020028002000000000000143FFD046D521F41D228F11124CB141FC1B24AD141B24AD141B24AD981B24A19B54A3924AF547B24F842B547822DB54F82C4B14FA2C4854FA264114FA264594FA264594FA2E449E2A2F49124A0
-:800700002E421F49722CF2912483F4912CA3F48124AB141FC1B24A9921AB9453B14A3934ABB443B2427B24B842FB244889FB244AFF9C016D5A1D648D521D24CF24D181F248121FC1324A1D242F64F9112CABA459B24A3914AF744AE8547B14D85ADA86D41AEB22D558F824D28F11F8244296F5244A96F5264B96F5244A17894FA2B491F493
-:800780002C421329F4912CA3F4812CAB141FC1F24A841F41B24ABA15B24A3814AF445B842BB445F842B46598BA2CF5AC9800800400000000800200000010021880080000140000480000000000280000000021F042FD004002244C02204114081800400221128480018400220000180000284480014180012100000040480880F424F20091
-:80080000820040020000228124001220011884800240081800000020210110088001160881100800000014D04B082004002902801154842232100218211818AC41282143280820011081018120844204841024819114212280020010480A20E196090024004421000010080000210000001028020000002081012001001008811008000010
-:800880000080B45107000000002200008410C42441100400000045880200200200000000000018000010084200D0E20F0041C0342081011284000060814014080000200281302412410012201214880100480020014400403C284400EF5D0800004C0218800281000044CC1104C10000002241260826044400182042442801000080810160
-:8009000041008445982800F0B583004004120018200100810022100400000010080012200200000000200400000000201404F0A6FD802101002280028100200200000020020040048001000020220141000081000000228144004112DF1C0F00280018108802412820020000004008841200002110022881002A0400004410040020021014
-:800980000128A021FF9A0D28000021008001000000008301008004002001000020018002122001180000000011400841BFAE0E18180020022810082800000010084008840000100200002022024118201144080000224048048190246F6C0822200224124028220100000000120028200410041812240028200112220000800100002002FC
-:800A0000002244F0AC22000000008002008400000000000020020000800200000000002002000000008302223F9A0A2A0124200260810022280084842083922862282200000000800100000080210380220100120028004128F015D8008400000020020000000000000028000080020020810200120000000000000000F0A99E0000A40027
-:800A8000840040088002128400008022010018000000180000A0410020020000002822001200DE692008400400200200000000004004180028000000000000000000000000200220840485F18BCD0000180000406C8284260810048042080084001004002081010000000000444C020000000028004FBB05128002124068828480010081C0
-:800B000081100838008004000000000018181800122228281822001800200112002A043F5D0D00242400008002220000800200004420020000008021028004008002000000288014044120F22F3D4048840418840000604120810284840000210080088001181400848005000020024480020000800421D0250E6048002901B01802E08217
-:800B8000820200450883A32228424922020000000012222001180018121A02A022280000281828004814B0520C3A01242761008508282889213328C028818128B0280100482022120400180018A01128008003282A0112000000224921B4248106BBBA00812881328440382887421048281188414808842880F21418808222011880822154
-:800C0000212102124820052222284122800112A0224280D44822E282F2382880022881288082011800841880011890184818480000122001288002288002280018800118800118800118A01400CF250D2A712454A8CFE2B2A8618285F838288781C7C28F817138D8887118F81828CF4151888B233285A817474622CFC404A011458481213D
-:800C8000A1323A23A231223AA1112A024A8481A1111AA1112AA3111AA1112AA1313AA37545A5554F45F554748D284FDF03224FC6E422F224768B932658888F8372185844CFC37138D8C87118F83828C5FC18188F83A2238F81E127714604EFC5049AA8314F41898121D111A1113E118D28226E483AA2624A84A111181A0145A4323A032839
-:800D00002AA1312AA2644F41E121F1466445F44A781FB6041AD344E42252648943F82828895188CFC171282CD388835188C55C888F82F328288F83A3626F43A377CD1C80084F410112121C01281E181AA3513A032AA2661AA1232A014CA22338003238284AF415148F84F44E4C6AF428381E9A80D34C44F26C3EAB31848F82D28851884F05
-:800D80004171287C38D88C817128F81C1C85F828388F82F228283AF736347E72CD1C80A81147482021E112A31119E28181B218A4116AA2663AA3333A82A311443A82A3112232383AA36445F41858EFC7E521F16868DFFE07180090120084220012200116081608122812000028000022A012A012200222A01220020000002880022081023C
-:800E0000130C0000000000801208000028842002000000000000001800000020020000000000008F2B032E421F417228F2112483F61124A3F61124AB141F41B24A9921AB9455B84A3924AF143924AF147924D812F924481CF9244A1CF8244A16F1245A96E1A26559ACE549C24A1F49C2421F4952281F4932481F49324A1F48B24AD141B2CE
-:800E80004A9921AB9451AB9443B24A39242B94478229F924484AF9244ACFC2084FA2B411F62C421F8132681FC1326A1F41324E1F81F242841D2C2BB45D28AB9422AF543924AF1439242D912782AD952E125CF924CA1CE8A265582E5A86C55B9E25ACF4912CACF4916485F29124811F49324A1F49B24AF11124AF44F91124ABB45B21AB94C5
-:800F000043B34A393429E983F44A9423F24A944F22F5571B202888040000004004280000000021800188000040010080040000004004280000000025019F4409101204000000800200400400840000280084002001000020210120020000000044228110D884F41C49802108841883084400000000008400400810480444002002000000F6
-:800F800028800100000018000020C22128CF260B204C042008440041222200100400A44028018608508400112810084200121A020010042200004004A440B138F4ABDCC012008418840000000000008100000022440000200100000000122200000012002002228912F4C55100000080014100000000000000000040040028000000000047
-:801000000000000000008100F0F34A0000800200121002000041400881100841400C008042A81200000080410880029014004008802444085FCA0D00000000441002000041100800841004440000228C8202000000100800004100100880844408DF2C0200002820011800000000001008000081100400200100000018002002200100007F
-:801080001008004F5B071004400810044141200200901410080000160400400800840020820120020081200200100100001FBD0912800200000041200200000022C141001608001200184008208101001200800222000000304880D13D060000604200000020080000200500000040080084001100104208000000000014280000DFB80407
-:8011000012412800430200410000008001811A440400C400100800004021A112122184120080020000000000F061BD0000100840040000820010048042480400008011081284000000002800400800000022C048008FF60B10044004440041001004001008000000001608800222000084008100840084848484228400842012B84E0A1682
-:8011800024322422002260422222228002444444418100000000000000400881100822B018021A020022400883024A423818F0BA2300801104180000000000188011044100000000000000002200000084000000000000F0DB45006082186042400420020044400400004400122800818481000081400828004008008C220212008400003A
-:801200007FB20E00800118180010044480028001810040084100002800000022002228220020020000000000E0DB061200008002008444000012200141008001008100288012C82800008110280210080020422803222002360A26044422C38242847228840222840041834244040028000080C228000000220000000028208102810084ED
-:8012800060814028F4192B202808000000004004000000008001008100220000000020010000000000000000B034052628820422400800400428C412208142C424412180038800101848014008482240088400400C28120000001002FFAD024741A2C41A62422A614149D24802805244444440941485044141002812222052882828801218
-:801300008882826282A02184288484848C028588518822848F82026A013E28818F5C09388A220381414B222092248B22001058440043514C281064811004002226782808220040081028528810A821818C0122200100848181486F9401224149B22491241A12084122412281302412CB13168443484424020040D888018100001008894249
-:80138000688228A0232002008C028C128811982800D0A20116044440044422440000002002260822200222200280022880022800811008830283028302811028126882142E48E082047DC5B034E243E3417124F43CB82E2485FC2424C5E842528822851854C83A5288288CB32822A2222AF22828222AF2242485A8222AA222282A222202BE
-:801400002AB228E282F228288B118B228C5288818342F81818818B118CD288B228E283D188B258E38662828F86F4ED2DE042F3646C4B334B628FC3FB3434C5B8247228FC24248FC2A2228D2845D48CA2238F8282C2288B22261202AF8223A28845F428A800702181C2218F82A2224A54888B622E281E188518688226782C3C281E3C848FA2
-:8014800081B328628226B818B328E2A7716A9828AB77AF34022E343AB514B114F1381C3AF33C184B2285AC22850C8D2841850C8F82028362822821F0281828884554882AA2222A62122828842A8204812E283E382A92288CC2282E2489E28143A811812668828B31913E5823B24896183F22024B238F42E643A337CF83E34353C82A528CB4
-:801500002E248F82A222855844C7824B228518342847822865E42272288882F824248F8A0284229C02136282A062816E282AB238B328E282A2228B228F42E282B21411B838C12828813E18288B7125E8A6A4126F7101220020021800000000C02440044480020000280000222002000000000000002880020042704D0900008002000000C5
-:801580000000004004000000810084280000000000000000000020022220F21B21D024F41124C5F2112CC3F41124E3D441B24ED141B24A9921AB9451AF443924AF143924AF147924D812F924481CF9244A1CF8244A16F1244A96E1A2E559C24A9E24ACF491242CF4912485F2912C83F4912CA3F4912CAB141FC1B24AD981B24A5985AB94E9
-:801600004783AB944782AB944782A9F9344889F9244ACF590D4D4A1B614F22F4112843F4112863D681B266D181F262941D2C2BB41D282F447934F842814783AF143A242DB16F82D45AF9245A1CFB24CA8F51FA244A96C15A9E25BCE459C24A1FC9C24A1F49C6421FC922F4912C2B1417C9237411FC428417C12BA457812BA447832B8447FD
-:8016800083AB8443B34AB836948A4F22F5F2F7008248000000004480020000001002008800004001400848000000004480020000005012F03FE60000411004440000000050844008008100000012000000221A120820220222000000008400002FA60D20080000882880210284000084410000220028002820030000002800200200002830
-:801700008002004041E8830F200C410000288021624280025048848124008321220828002A112102004688224288028022922420028002281048021416F8C59700000044C084000040080000410000000000001200002001002800000000000000007F560800000022200222000000842880020000000000000000002002220000000000A2
-:801780000000F0D4D80080430800000000008100001008002002222002008002288002180022200218400100801401F0E8EB0080020028800228000081002220120800200228800200008002288002280028000000004814002F4202001884000000000000100800000000000000002200002001800200184001000000F0AE450000282203
-:8018000000000040080010080000008001000000804202002212280000A01218000020028091E500000000220000000000400400122200000000008400C0288100800128200200200100801107180000008002000000002400000000810000000028200280020000000000220000F0AE5180018002002002008400000025040000801108F3
-:8018800000000080120284222800188002181800A0212002009F9E0E00002200280000000040080000800200000000200280224288810200000000000000F08DA52002000000000000000000000000800200001200000000182200200200A01200488004FF3D044008008428122800848181000000000000000000002880828201002820CE
-:8019000002001200002838182828F0773200120000000000100800800100180000000020020000000000000012120000184200F038244008124008000000004048080000000000000080010080023800322021220100121200001A04D75E8002228002002200000000000000000080020000000000000000000000000000F04B1600180096
-:8019800000220040280200202201001200008002000022002822222002000000000020020000BFF80C0081818184400820010081101808008001008001002200000018382021232121A11218003818281214282A8103BFED0982822281008400200200002200000028000000000000000000000000200200000014F0BDA5400858800A4037
-:801A00000800448428100884180010022A018880820118262122420848A0121800200316042820010028121002BDC9008281848BA28181162802228C12588810C82885280100128002208102000022002238122812182A82011AA2111A21011A818292313A81E211014FB7012296A82181002A02008140088184810000800100A0220080D6
-:801A8000033A02002822283A012A023218182880A21200221242181C069F770D28182A0184841088021800002082810180012200002218002A8281022A02122A0120A1112812220020013A8121822422068FC10428C028A028C0281828188C0200840000810000002001122001000000000000000012288022014880048FB90B2AA2228FBA
-:801B0000827228B828B228E282E282A3333AA122890250882E282E288F81F1181885081AA111282A021AA1333A238181A1323AA2222AA222A0113AA3311AA13328122AA232181AA1112A8321A1111B225A85A4444AF4CC8AA0225E688F82F228688F829A282E288D383AA3334F4292288FC2028CC2288F8252888F81518824211AB112A354
-:801B8000228A09883A2381D111A1112E3185A8226E68A0513AA3311AA1333A82F324242AE242A3111AA122182AA2132AE227B752A54429F5F299A022682A028B2289F228288F81A232F01834812810B828F2282885A81100211A81A32288A0223A820116A1323AC2282A82041A81031AA111003E24183812121818181A015A15A244582F5F
-:801C00009A062AB218B53862868B22812E2887812A23F21834814D28702898282E2885A81100211E12382AA281A0193218E013A2331943A82289045AA3331AA3111A01E042839124181818A0131AB121A24529E62505FF9A09001800840020010000000000008002000000200222200218800122122212000000002812009F5304000000BC
-:801C800000008012080081000000002021020000008002001A0200280000180080022002F0792FC0421F4152281F4132481F41324A1D24AB141D24AB9419B24A19B54A3924AF1439242F147924D812F924481CF9244A1CF8244A16F1244A96E1A26459ACE449C24A1F49C2421F4952281F4932481F49324A1F48B24AD141B24A9921AB94CE
-:801D000053B14A3924AB9443B2427B2498924F8284F9244A8F890FACF411642CF4112C83F4112423F4112CA3D441F242941D2CABB45D282B944782AF143934AF1438242D916F83D412F8245A1CF924CA1E814FA264182E5A86C55B86C55A1FC9C24A1F49D628F4912483F49124A37491344A1D24AF44D941B24A3B15ABA443B14A38342B9F
-:801D800084478329F9264829F9245AFF5508208804000000400428000000002180018800004001400848000000004400000000002501AF4E01000080022800200240088484000000000000000000000000220000000000800200F0EF8900920081802808000000000000000000220000280000002001000000000000004081F4318C00C204
-:801E0000008128A02800412222400881810024001220080000112810084200002002100422000000400214125FBB07200100800800000000000000000020020000000000200100000000000022008074BF040000000000000000000000000000001002000000000000000000000000008F1B0C00840000000000000000000000000000003F
-:801E80000000000020020000001800000000CFE70200810000000000000000000000000040020000000000280000008001000000F08865000000000000000000000000000000000000000000000000000000000000FFE40F000000000000008480010000000081008001002200000000000024001200000080F23C720000004008210000CD
-:801F00000000000000008C04200200800200000080010010020022000000D0540C0000220000002400000000000000000000000000412800000020018400000000F0F9710000800200000021100818000000004800228001802202000000180000231112282102000020F2B4A4000000100821000000000000000084810000000000402483
-:801F800002000000000000000000C60A00002001840000000000000000000000002200000000880000000000000000F0151F000000000000120000000000000000000000000000000000000000000000F08DC8000000000000000000000000000000000000000000000000000000000000FFE40F0000000000200100000000000000000032
-:802000000000000000000000000000000000DF880C0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000200100000000000000000000F04737000084000010010000000024000000240018000000000084000000810000A0120000F0C47B000000400800000000FE
-:80208000000000000000000000000000000000000000000000F0AAD30000000000000000000000000000000000100200000000000000000000007094050000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000000000029
-:802100000000000000000000000000000000000000000000000000F04FFE00008400001001000000002400000000200100100218004008000010080000120000F0637C00000040080000000000000000001002000000000000000000000000280000E0280B0000000000000000000000000000000000000000000000000000000000F04F09
-:80218000FE00400100800414000000000021004400100218808802218001884008000028840000800200001F35020014000048405588281082044480022100448002214818808802214818448828842148408481421882041E148002211A01445C030000000000004400004840040000000000000028000080080000002800000000F0193F
-:802200002C00400140014840810414000000100240044014021880880229081880088400008042084008800200009B4B000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00100200000000448002214840042800000028EE
-:802280000048000000484004281082044400108204440010F2E1A4000000000000000000000000000000000000000000000000000000000000FFE40F000000000000000000000000000000002800000000880000008002000000005FC7050000000000000000000000000000000000000000000000000000000000F04FFE0000000000001B
-:6D230000000000000000000000008002000000000000000000000000F07F4D000000000000000000000000000000000000000000880000008002000000005FF4FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FFFFFFFFFF13
+:8000000000848004000000400428480020210410023F4808A044004004005044A0220000840010021E14000000000085084A0400000000A0220042000088001AF147E7008001400400001008800420010000002800000000000000000000000010080000D0140D128B444921048001004544B82492482A244108001042A21120233884009B
+:800080000011155288B04804522001000045B82442A8424281000024241AE11F04848D48484A2402000040D44482A22242400800216121181A81884884822244414168818588A44400182200404484B22882018400002129F1A1B400001880010000004008000000402402842200404202001800220000001008004882800400F01ED60048
+:800100001200000000000000000000004141222004000000200100000000200400800400001FF6088021013014840000004200001A810410044504284742412A0246020012181212001A2102001038488D484850885A0400003F2C07208101284C812102001058888784588904000050442228260844004824002081012800280000848481
+:8001800000898408428200F026692001441A0120014800818400425088482800003024809242812A024002008001128400008100424A2104800400F048627026B212A2122B111229012C5122882F317111B188699987848F18E48424D49114815489814F847448F424444B242E24224C02284514A62267222F21E222B112A1812B98C09295
+:800200002582E8317111B18869998F84B888E48424C448805488814E48FF61036F2252242A2123118281512229C8131B1119E88938188D41424648D91184445888488F4414BC44226642442828255444282F2242A212321A38828A81512229C8111B1119E88938188B48C24648888444588848BB81000000000000000000000000000000EE
+:80028000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000000A0
+:800300000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000001F
+:8003800000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000000000009F
+:80040000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000002400000000000000000000000000001F83070000000000008E
+:800480000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000000009E
+:8005000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00001D
+:80058000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F9D
+:800600000000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000400200000000000000000000000000F0DC
+:800680003178000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000030
+:8007000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000000000000000000000000000000000000000000000000001B
+:80078000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000009B
+:800800000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000000000000000000000000000024000000000000F6
+:8008800000000000000000001F83070000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000000000000000000000000000000000E3
+:8009000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000000000000000019
+:80098000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000000000000000000000000099
+:800A00000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000018
+:800A800000400200000000000000000000000000F03178000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000FA
+:800B0000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000000000000000017
+:800B80000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000097
+:800C000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000000000016
+:800C8000000000000000000000002400000000000000000000000000001F83070000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000BB
+:800D0000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0015
+:800D80000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04F93
+:800E0000FE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000000000000000000000000000000000000000000000000000000000053
+:800E8000F04FFE000000000000000000000000000000400200000000000000000000000000F03178000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000AB
+:800F0000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000000000000000000000000000000000000000000013
+:800F80000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000093
+:8010000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000000000000000000000012
+:80108000000000000000000000FFE40F0000000000000000000000000000002400000000000000000000000000001F83070000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000000000000000000000000000000000002
+:801100000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000011
+:8011800000000000000000000000000000F04FFE000000000000000000000000000000400200000000000000000000000000F03178000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000000000000000000000A8
+:8012000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000010
+:80128000000000000000000000000000000000000000FFE40F0000000000000000000000000000002400000000000000000000000000001F83070080D48441782408413A14048D14842884A0210028004341042D34295148A0342004284246088C04484820220A228B128400288420A9218260887FC805628B41894188344456E2C2A442F7
+:8013000041221A224214C4644392441E24388B41121AD4823442230324363218814E388466D88204182D18C0588489B2288524240282826283021A8683A684181A28D58C0E42008001188C42242122410C4444A04143210118E0844124821292246082C0482006422D18000028A08222C028844800890458821880D1550428832521840405
+:801380006658420044A0128490480020924880149442901410180238602284200183A4410018220080890826081200488260844FD6010081508487444448284A022240042092240012000025020083214508480081008120C44800800220022820020092F019130000840000424100002222418002282011021820311200424008480000F5
+:801400008C64822084040000002218A81A0220F81634000000000000000000000000400400000000000000000000000000002200003B17002891248001442751418032411800834884040080220200802401800442800889044068842189180810142A041888189018F082818002224CF31964259418218140811102421B1249423228AD1A
+:801480004447811C521445024132CC446A8BC028784410921228181818A0241C01B02261282085110C8222A2686A08AFA3052880226175D02841C21544112692411820D24848169842C1261184221224314C814260824AC144904229818AC14818C02815088988820841A14D48008AA2829038F01BF9002885C124A3624140140820012068
+:80150000341128A0244588011445028002F022981280020000800180E42401241648024A21018009182AA484F0B8B430221160410026810200200425012C038912018062824644080084001024051122004C428166244C02400200A841890998A281F034BAD01421713144D294B22AC114417063A88410E381449421848084D285E214B2ED
+:8015800044C84139829224282B824B42906232624D2153A2822588F33641944C04C9B818F48862A0944994D4182C24C16649C76CA0A48CF4283D3027145901248B12512890494860148C51141184904819722418219A286312082821622448124C82511422213843528451A04889316820118228211892442745478BE08248F83BEE80817D
+:8016000021D22471210C1A4204298248024821222C0328402136441364142826042A5884208282F421442219C828241C9521422A5484636628A084499454A04249B1A82122A42842425FBC444174241281042A010018C728428B212921C4918CA2343348A4C2423218284C222881668243621529A12844114F824522E24102D22AC175C3AA
+:8016800063C818A901414C3944188C94244381948489F1BCD240022E1859064189622119312841268102812011142883C122814A01200812241126112421B344C8481214481826082048052844422481100666A228488AF59B47A02118404A024C21424281240185044C5222201208884488002622068008488160234008404C0423085066
+:8017000081904881008504844024C2242FBC0318672183424F92244783C01129426212166A4183F424928F2241368126AC692816A44880021AA412814D811E424881121F4441C418114887418F4482F2A1548B8285D12841187444C89689941C6D488443E248B6C4F22884AFDB064382C2112820011A127211B848A841400811A0438922D0
+:80178000018A942880128432224226822262412AC9242E821A4282B2240198122116841881C14800440043A214002CF4485E0034222D112118195312109621881188241124114002008C845282002455182436842464481934861B282512042422218902894445048742442D1443820A2A01BFB209100410840284441C028058412A0811FA
+:80180000434104484C442843240226944128004E231100862802444249054430448141830400202404835228222BA1200122000081004091281001C41828200200841041011091222481280028448424004992213813820129684221800A0080F1B13F14648414453215148B214113011B2110912283410410559212844441481E448848FF
+:801880002004C414195581844382054222E04224043110028B1420322881B02A0410F89CE720220400100110011918883844B088028228006082404C3628818C348400284302708641521450428294121828890342C08424908260842214CDBC002848003284459144A041008902172212240030142342110488494404001441902421108E
+:8019000002281C11C4120089012824108202C014803424CF54061141212D441012842192142480410421505A00C04113C114188211001742220050220010A441412AD41202401A612424414181304422008544E29D09412154128D2144001400001114006025412D8123830814282290280080B2440230611411141100421601422C4804AF
+:8019800080018C3284A1430242AFB1031F814281C4211214A0213232C024222841442283220222302640089819C81480921114004D1844A0240026C24230243CC414211C022322140C21490429046F23061E14EF44621252F5711215581943F415357A7282F128187758AC1255AA5F91F122146127374741497154487D2438111F423C44DC
+:801A00007F96022AE222D26842CA161CF432A63CF4164C1D422C9142381CB31935288B112D441662624951E883A5428B38C9F418292AB285487124532129D244E24181F331224D381E1422902182601D44195A4A1DA222288F12F5282587524887492445D948D248F485221B144233952249F24488B024428232475F6E722932316E2D1D65
+:801A800032255E8567C469F2228C43D2C6962663E682A244A5F2322490211455D233213221DC61411F32021D11881D2189584527124B122243543888428838C9B242D214A224178160428594844F12742435421F627285D14178417124E443066F445462242F91A4C6348A048B2428A6E268C84C302449F55B730000006110022110022184
+:801B0000400224124411005021400224122412200112211221121400100400004400100800F06F1E142437C6215D6585FB322327917F71F353521E175F147781F39B1BFFE8F8C3C16D249AF91A24DEC26D262B885F14F38D89A7622F26F4ED7F3F35F56EEB2F31D1ECF4829239F1125245D76E91161FBBBB81F811375F51F5263667415F80
+:801B800078F85B5D6F54B64E5411BFF95DEE7F34F462426BDDC5D622F426866FC179445CCCE7C59F2E0E1F21F223672B227F517218F931248B22FF71F353571F61F155763F3AFA9B9DDFD8F8E1C37F62F2B99A3F63F2E5C26F62F2A3837F57F3A88887637F36F46DED1F15F56C6E2F61D1CDB481D974F316746F61D1E6B126F3B7B33F19EA
+:801C0000FB42237D457F73D346F18587AFC5B562F65E5495F9BBF9C5FE47472F26F4FAD8C5D686F4A6AA6F69FD4E4C8D48EFE6756846F114163F1244F413359F91F3152587A19F11F357413F51F151773F18F891B1DF99F9D1D12D212F19D95EF2C2C33F31B392FD43719F9CFC6D7F842B821F13F16C4B47966F55E51CFC74656F62F654B5
+:801C8000567FF4F473631F3AF6B5175F72F265656B3677511F58F8797D5F51F3491F3F14F1C8E8F7747F74F42222AFAD5F662FA4F4E68E6BBB6744C5FC6C3CEF4145D175F227272F42F211358D2A7F11F32C36DF51F357553F51E355F7A1A3EFB9F91F9B7F75FD2727FFFBF92F2F7F1EFC33333F1BFD7775CFCEFC6D7F5F94F46E4C5F7379
+:801D0000F16F4B5796FFD7F5C5C36F65F436746F44F443677F37F6B3B37F78DA77F277757F57F347155F58FA5A5E7F73F34B1F3F14F3DAF8D7747F547422F2FADA67622F24F4E6A6AFC9FD6E4C8D42CF66F6A731C01100C01140235114123482148454004014015048118514015048004302430200884003450314122622414148032C021D
+:801D80006C2258588002DFE10886424402201142C8122800248200218425021081014221422502224461104254262845811206424C42C264850124412148850420024140F96869E022F4112487221F4132681F41326A1D24AB141D24AB9619B24A19B54A7925F84AB153F24AB14782AF14FB24481CFB244A1CFA244A1E215FA2E41DF22195
+:801E00005A8759ACF5D824ACFD91242CF591248D121F49B248F9916CAB141F48B24AD141B24A9961AB945B49AB944782AF4439B42B944F82B442F934484AF9244A1FCD0E2E4A1E44CF22B411326C1FC1326E19B24AD141F62A941F41B64ABB15D22AF9B1488F743BA58F14F3B548AF447BA6F842315FA2A5A4ACFD58A55FA2E51CF2211A0A
+:801E800087543CFDC8252CE9CCC2591F48965A1D24AB928E4CAF14F191246B841D68AD941B68AD345B6923F4B448AB844B4BA9F934482B946F83A4846FA2F12D6F000000001100400428000012001002180000004001008004000000120028001004001002FF620B269221415301006411828814426088851298311001414228281B424726
+:801F0000841100800283011082585212241DA4743842260210A1814D4281188841004241AFD101A0180091839112284AF2224320424211854311684A18224608908A6120146482112524263221282E832224833835302260219226B141084229889222222C8381C6214E28FF3D06284A4354416021C024241F2A3484222A14419128911CE7
+:801F8000034042081A92A24B4AC984440415C2242285312828271E295842921763493A23124AB12629E2120CD82B84A1288AC2262CA124225E24BF3A09241120511884187062011041028D841221844C3A112849240481311001260820A41211002211A1404134224012011110C4221220012044D8960A22008021211421A4294601293858
+:8020000084C04824842180822484040023428448A4C260228A42624914288908C0244E12128B12C0814041C88643823224302444F0443990112E1411857449342125498201F0A8119B412301119A2488A81C44892898242964844883848252224C41989824132332226D912E4119E99CC1188E2889E22864124823ED28644D688CE5490431
+:8020800018883828DF4A04284C124148ED1112034AA1A160188225049418842388088628148464842484222864494C68892E821963431D22541344E18964428B2432D6420129CC824B14224B14B8280038F0F8EEC01112102405831411021364832D591A08484E8282A014438284C86200482A44642820032602248602B82E888A41311869
+:802100008E12818C8292C1181994886C9C2843442431A441228FE6038C4221C4116042212982012D4490282C4498324228122192204248826B24422A042C6A44805284F01244846041800282984C018A622184412232004FA188A418F023B650A4E0841902188112178290284138290800835184AC22C4A2144682843921108112C2111E7B
+:8021800082588180041C016064401D429423294301288048082400426F7C448161228684C22825489448247240294C88018C1822022608002248E301924E1442284820A15228268422621812450262C60100F0124281B01484028004AF364D614129628140383E45B868E13122F72248814E1A8DC216088D42890383924A881485C222484D
+:80220000ED12901146A28236A48190142A514284144C33815A12C4864AEB1825B282C112A42E14A3A2281688B21C081A041FF50D221165B2112202250281001188402283088D36802B82822424E21482A42C4B12422924B42205481A32241A025024501A401201118004124604808488F4DE2F00001411002184211C849824118200A0490F
+:802280001888824041021A02402104244022443881A20011804482082280028881200200121FF1094C621441C0241244D041018112201858218CC8A88144141921084280488204211142488814D2205112298A1102201441210100A28308450A81F0AF630016022400001C0419C9428A84A414484248002242A09482421100460123A42440
+:80230000284200130124D0212408820048308468004002002B28DF5605482881328D422C021180028DB4166A28262452212C58A12E83242811934231382978421521421188083C42982321B121D911123D129150285998291A5422308821800180F48277206884111400002024084001360800128812001100881122150480014001CE21F4
+:802380001AC8816018504122222038411890241006A01A143A0A46094C8444018D431941220800C0811100009081004A118208298188215822822348810200222B24F0821518244C21B412024C02508410844288F1DC534024018447844841224B148044915A0027482D118514011044110454424286420A00102584814844818121024068
+:80240000010088811200248400F08B7800250140C21121001C4224C2823042122C082728883180A5282988180300004962198C012B4810220800A2844D8124388114A44062418008A042EF550616088F2104904811812188A140815238888C0410211138825218A084930A218829E218118882128492182884A88C51412CA3211D1CD014D8
+:802480003612182602A6A212224B142722245F6B031332D815127148B611744393121692222398395EB31718273849D9B33C88AFB1AC9833BA825B118A7841522233E4943881378E92A7241AF812A39D812D422BB716F3AA9588814E518F18F824458D22C88D394B3CDD884B15A322B8889A1C50466944A3221FA3044B142C857148F2254D
+:80250000492145D491F2455113BC4528143A421F877C4122F842281131981381F14C531C7454C15360152435641A8E4246E82B6612D4221972A2F312932F22DAA7B212D181F8213115A242E018A6342C028ABA12D2882293B82BC1ED22C0461712C5EC12016E1A8150C22AF81849BE828E4C2C18FCBA218B144D82821E27144794CAB8318E
+:80258000A2888B28281F6A54221C6234E046A2184413F481421B88563A115F8A3211121B881E1563381235F112513978149A1247A2257E24A28160824E12DF154C41144214624814442444340000000084000010020000002110020081100881100C8150681008854448440884F085CFE046B6241354151FC6B664F65C587FF2F273757F36
+:8026000032FA63E33F12E23CCC814F6CFC27272F27D777D819B828F231B1D5FD91116F76F623E34F62F62222AF82F2D3D2BFAEFEF7F72B444F63DD98F495971F34F43717B5FB3D17157A23FBCB4BAF3EF4A21E3FB2721E782961C546E888D84C62812F88FA9C92AF21F2968ACF45B6D8FD4A613F5942F12422EF425371F7C45F86F6646456
+:802680008FD5F5212F5F17F725271F2AFA2BA94D254D848FA8F827B72F2A5B7735E992E332DBDFF981914F5EFE22615F73FE2222AFA2F2D2D2BFB6F677773F14F43686AF83F2979735F3BF9FB7285FEF71897A2BF3CA633FBEF6AB1BBF32F39AB63F82F35918D774BFBEDCC6F31818ABA89E9AAFA1B29AF87E6CFED88FA4F633BEF05563D3
+:802700003F31771AFE1312FFADF759719FC5F5232EF5F93B3BBFF5F52323AF9CFE11115F55F5AFAF3F25F516163F9DFDC44E5F5DF54F4D8F89F52C7FAD8BCFE2F83311DFD3F395D59F9AFE9FDFAD6B4F6BF7884A5FFBFBC1E37F72F68BA35FEADA21FAABA39F3C74B2FA7254DF6EFEDAC41FBEFCD2E2E5F544444FEEBEB2F8AEA66FABF921
+:802780003636EB9B6F45E689A9764FF54CF151677F11731DFB1F189FC1F75D71DF95F5333BBFD5F5FFFBAFADFD6BEBEF9CFDD5D59FBDFD6FFFBF3CFDD6D6BF1DFDECF45F5EFF4FDD8F98FDACEFAFBCFC6D4F3F33F13F7D5F59FD296BFFF1D5BAF6F6E6AFAFFEF6F73F1CFEBDB73F39F3BFB61FA1FBB3AB3F3CF6BBA35FD7FD657F2F3DFFB3
+:80280000EBF32FADFD878F3FACFDAEB62F8BF9A6AEEF6BF13E364FCBF97C648B9B8F3EFE7C1460120040011460128224008648012817882008001388022811908190828008002D81D0120814C0810040020000000000DF4A0F24280027241AD228012602221198502211A85022221001803222D02224C4424E212C04244011014022014861
+:8028800067220000124400412C1894121242703C014D521F41F22C131FC1324C1FC1324E1F41B24ED141B64AD981B64A9945AF44F93448AF14B924F44AB147832D914F8BE414FB244A4E815FA264114FA264192E4A96E5A2E44DE2A2F5D1242E421F49F228121FC9B26CF1912CE3F6912CAB141FC9F26A921F81B24AF98548AF24F9344807
+:80290000AF247B24B84A7B2498BA4F8294B84FAAF48B8CF024194CF6265117C16B161FC1F26E131FC1742CE2C1E652D9C196BA5B612D943E48ADA51AF44AB51F83F44AA42B49AF54A2128F54FB23828F41CA528F5DF224528F5DF224D1875C6B1217CD6FA2F98144CF227581BC6C7111BC6EF8914CE3E689766AE7C9D438EA88D67AF1947B
+:80298000488F646A818F446B89AF447B92F84AB44FA8F59C1B608A824800000000440000000000218001882200814001400848000000000028800200005012F0B6E92044018341C1222800800488F08851705106429018C044E028C2281250484A2211441824012D91281449A418428E22208292285860A824222952224B42184142141FDD
+:802A00003F48F112218225022F2431191812288008488240012001111280C4410022281021A32121448002C4702802100427188018082E1800808822C2812AF4197D141B41C290184229A212182230842026588114590118400B20E1221C8881282294111E2481148D14B0420B54428922244264224922A2878184222228F0628422436287
+:802A8000142B219F170923125122D01271111802004280084A094602428021614448142220524822001A12061021421824192218021C4808C0821658221002188088F4FCAB40024543342A002866810410821412015114139218844CA2425021420020C14281411226810228241E6442924220243142D0220142822082094C021F870F4D9F
+:802B000011382860113F22A112464A62A2112A018117A126BA34A841CCA4412E4446C14885D1268646B411B674985B112AE12281B6222484F11421741D64B414857421328822232831C11CB898E2813A6A2F83CC44424E288CAC246F2206114052248391322962862110C3220085111A46C448424E24918C744912E41244C4414D125609B5
+:802B80006081252694611213D214426141214C898288B612B8428184991AB8A9B68A24860D28F0DFE4901429D34102264121011F229468200189341213A21A1945E5123118424C22E2244282A4216A081CE12126A2241A02284C41F224421F843241813C140800172811A28384A812416086C3AC428E67E08162115223836141503240820D
+:802C0000324428A041411841851108248092224C331246D461240326456242C1281AD4C152812130441A6214224CD521224189C1821100008444905F14A4226648924CA5C2282A5118228311849741A1B04882A34210E128541442E0849141800131142842811B4148B0122274640A4244424421A82424462428D4844464834220B28B0C8D
+:802C80002100940000421240098854230142182CA2123840110428242246E88204588400260441181816181428891208400847922138822B4800F0127E1424182E182D11AB41A721A41993432682128935C1BCC4148C81C2198D22384A4B2182E2C4B21242D4243148484C828206132562829D32D02C8434641D4C3AA84325284131182DE7
+:802D0000C42E8242160C1A184884F2E8D9B0229121C0284144221028911848002D14A0244B414A021440D421440446C1424E212E128D212055864422165434444AA121C9210148902129481802A5044A3284AB244800BF230F14241200244E181D488C14014618142506812440581613440125410436280100901429414281028901258915
+:802D80006284C042B0440229040088000089F87C7E34101854411119148102001D2242420014D028446421802101004C5441A01417442311028C22144815218202449028248341410125CA141004288A02AF890A1E411141C058120012411609120024104101002442602218118004002A018023812204103112112C8802200100166282A8
+:802E00008881A018DD1340C834110085447148040048C0224448420000004038181424442C0180C24411105C321200114424104604100822822188214838F06FD80015021C022F1152828044924484424248002D283126882411C421005180042487444824260228108831481058418131830681828B242344B2A8042901007F5401244077
+:802E800002002822141C8441E44182025012180012134241AA1424400213022444114484112004602424282E84106112B825012484004850842CF2269A402481015D484845024181814001241901C01254418001244641125421F044112A21820414290119E114922210012024C112412C11840812402808F0F7C920294821012162118457
+:802F00002A141101111064812544440218441100410000209121850248232102001AC231278814009140286282222AA88449064B14FF5F07490448301410C4124711250864112CC2142B12C019901114435422129D52858518216194212B121440C14900A12352862542081498161CB2828214025028302882A3085FF14C61119618C221FA
+:802F8000C4349B36CF879411411215EA5745D242721442781D5A39738191145F216192248418175413E184E42191241AD145136212CB2536B811F1511925764131141E588EA22DC28C217387FA1183222A5882163222CAA682AAB288D8EC092971A4536153F111529B4525D4127218F1412857142E41611B444E42265138142D1487121E46
+:80300000451F17042B1519741F516349C354112D4127552B622692282D4211186B242B426A52822E287F52528317DE423982C91867242D2216A4BC8E842D18484D882AD138075F6494114F1101C71469D39414F1464E8D41AD1883144195142B1439B52281441E17425521A7946C56148552363663442E5A442F15D47111F1225335722812
+:80308000C922856822B543525818BF23C25E85B142548846F82882A7828D2289B8CC32184F21F47985401442044440244244820400000084000000000000100441001008850181100C8110088110480884464448F4C268145F14F451171E166F53F24DCB3F77F342677F74F657491F57F752122F25F552527F34F453556AD6E4F127233F94
+:8031000095F468611D131F16D611F12B29157145A4111A11F1686B75F72B2C3E224E4337322B442A92288CF2686AEF42B248D491F21B1CBF1AF8DFF23FB1F31B1DDF78F8D9D36D2EAF8CDC28F2D2DAAF9ABA98E982EE8AF8ECCA2F5D41E154F55D554F21F136619FF5FD7777EF94F46D4ABFD5F47D75AFE1F152522F25F747477F15F57366
+:8031800061CFE1F12F333FB5F56B633D117F12F211119F92D231F4D5C54F61B11249F23B3B75F72A293E324D22BFB2F242432F23F31B398B253E2B7FC2F249489D233F91F3A2A8AFC9BB1AF331195FF8F8389BEF62F2E2C82E2AAF27B5AAEAADF9EEAC8BAAEF2EFE4CC4343F74F413534F21F136211F54F47263EFB5F64773BF75B56AF690
+:803200005A1C8FA4B453F744423F71E126D67FF12D23B7311F93F211113F17F741519FB657136F24F85E489FB5F413118FB65677AFF2F236265E567FF3B152F7116127218F23F3727B7FD2F263619D311FD4F5E5CD1F7DFD3B333F95F7C5CF1F1CDC4EE28CCC3AAF24B5AAE88BB9B2FFBCB4CF2EFD622E346F34D173F513163F17F25D5B8E
+:80328000BFF7F61A658F26F71F53BF46B65AF549423B514F64F457533F37F61F17FF32F31B127FB3F253515F16B651F5696B3D426FA4FC5E4AFFBDF45353BF977717F72E6E6F67F544667FF3E325F71333B5E3A3F36263FF46B469D6B1F34775DF5EFEDB512F87F75361DF7DFD5BD16FC6B6E2BC28F3625A2F1AB8FAF5F6FC4FEBBBE4FEF3
+:80330000541700C011408344C348344834843448144012410610011110011110012200501210022E13400234820034823440224822088220F8475D40030000220016081210010084005480018141901440429154124014022C01001411411124801101008200A0424445F2D961F024521F41522C1F41B24CF1112CEB161F41B24ED141B2E6
+:803380006A9921AB9451AF443935AF14B934F44A9147832F14F924481CF9244A4E814FA2E411F2264ADE212FA26559ACE44DF2224A1F49F224421F49722CF3912C83F4916CE3F6912CAB161D2CAB961D68AB945781AB944F82B44A7B34F84AB44782AF44FB244889F9244A7F9D0D6F82B511F42E42116B1615B86EB111726E3211AF42F957
+:803400001144ABB41B21AD965B418F44BA14D41ABA14F442A165F84AB54D584EB16D888F15DA86F5C8216D1A8F59D294E41D72267AD1F8245A9E444F3274911CF4916C67161FC934661F81F422941D4C2BB45F81D642F884482F44FB1448AF44AA41AF44BB32F44A942CF1859F40280800000000440000000000218001882200001400844E
+:803480008004000000008002000018445012F03A6B001C025932484942922121201481041618344141134108581004292601128B410000514280B22121A4211021412214011484002220024604B0F542A1248A41C818D08381C4C848271221004522040048321C010050241481511006222422E012012192242012322282328B182C248843
+:8035000012024285824968188B24FF474221241DD8148194322CE412D422641248E042042B144114411B4183C1114A016341728482414841420422345382E484C1222E11582420123222636C13834A6288288082D42842426C188B256FF90F2219028C1258C1C0880021111014084200220000A0421460418C050000902100881A02111817
+:8035800000809141002100808904F0A59D4081A2121A02006024123400001200280048000020A2212A010000290180021008242821100240D8228894288001A042CFCE064A02403439297118F128148C42018B12121941C2248438AC8C31141091282D2842804102842092282828312824221C53222E125A22847822C1428905218C92B835
+:80360000C81A222C221478820B228092242C2181C124838601290111303681C0682981810483428804808342081088821103106212252A83C32288251112088125BA28A92832802264827FAC0C138482217121081568811013C128181800202308411001290220032901202202230228282818002D42422082B41244022A283448800D80D2
+:80368000F482B500124412001C23F24228612094320011816E1812281448C021903CA1601240022628941A142220084242100848809212B01A028015022810F81F36608111972420B228014180C182412840225224008118860E00181216024911080089022C54481244406412C0222082028381142664582644924140F683A3C024804180
+:8037000001208411013811402224010000A043822840244212984480110816840187221824824A111282420200410014001148C83F6507434161812D11288B121C74241211642A10428294124598388082C1881219285248874116421214048C11982249A11285D428094229881328A242502218506220B49434222006872CB7F3202251D4
+:803780001400A01212872612181984013021244818841449A42422602220C2218C3148212848121410829214304419542210820290183E484400410042416FD30B221800004002242601140000002011228201240000004002008440C222850224000000280026020042245F970F0060511004491201108111092051281022C4282508A3D1
+:8038000014421868442824F012288100A400400881309884102A480816E828022200A1817FB708000030111114800240080000602200000060220021000010020000A4200280022800003022002AF4DDA20015246184A04200100568227022C842000085042240244108001048081284280080040016188206848014020000005C0D000016
+:803880004302412400261801800100182190282400208201400200002400001230120040081800222818008502EF660A2213C46141200231122118601219122201002C0400182824405248812100002229A241841240220200100224122118122A64212221B018051384C2442224112150144508A9424A1841C81287448C4208D048048155
+:803900002249154A026648682481560212804192180000248C082121882483042788608800EFFC038282002240014100004001241022028041284208000024100280048B42284008008120028001129011224041F2CEA750811819071C5884D084043C066C21814668A120322840082128002A282181B218021C2191222F81021E48608141
+:80398000281248842C444204890425C81884000021701B4A213284268423DA51021115552529311A26D8993421521883D42A528252903C161864826D2A1884222C5422A41818182429A16189C1228B112D2281872A8126322248214A33182724A08122228714811F88021D21CE211B3114201262C249E1420466911A218D1124124528A2AC
+:803A00002261A9E28224F26A2812835188C0221285B82A5588242F22A221818528518200C05825B84848388226781242082A63B22C8348A124BE2880B41141714CC4256F8451516D4321AD218F1292211F114252828D18257222C2184652882648820125A2421E22676584AF82021225B2120627861608263278A48D482D12122421895280
+:803A8000882CC18829F1B838242B3440484AD2A50C001008830483044284422004428442418394449044814914984480148804488004004028044A41A884124A084A084A084A081C08881289F8395A1415F12121D5FD2C4DCFF4F46F676FC47444FE3774CFF2F65252A5BA1A94488FA5552A2F84E4A6F45456EF62B222F66444CF45F56EE8
+:803B000066AD4AEFC4F6445C4E444B518FA4F45A522B44AD188F24F462722F24C432212AF748484E784AA4268F81C5CACAAC888EC22F21FDC2C22F29F9D8D2AFA4BC82F9C8C88AF938388F8DFDCACACE23141D211F94D655E2125298C5F6424847C4CFC3F724654F45E734F61A46BD419FB7F54A4A212AF254766F66F626662B448F8373F2
+:803B80002CF62E4EAF8FEEA3F1168C1E562F24F41212B5F148588FB4F4223A25F2527A23A13387A11E325AE426E281E5A1FCD4C6AFA4D462B412ED2EFC525223F11898CED28FA1C112AF8BFBD8D88FADFD3728B051E51256555F53F119337FF1B372F32D677F11F16D2FBFE3F363723F916324AF91F1484AA5722EF61A12AB77EFC5F12A43
+:803C0000481E182E3867442DE22D182E2E6B378D482FA1F12223AFA7771AFA323A27232F2215A2328782AB3227242B73AF82F2FA3A2F63AB668D2A2F2DD12AF87A722F23738A9A92AF949412AF8A9A488F22B789085AF719615D25DFD3F339315FE7F77232FF72F61F1F7F76F25B5C9FB2F31F1BB734BF9555A8AD1AEFE6F65A72EF63F3A7
+:803C80005A18AB624FC7772C3C6A2FA2FE765E6F6BF27236AFA2F452522FB2F23A3ABB452F27F73222AF23371A3A7338FA7A7AA7252F23F72228AFAEF36AFE2F2A5AA62B1D8F24FCBAB22F23F3FA5A2F24FDBA9A29F12A288EC82E7A3FCA0F004501140040414802003484244006004C02008100101802210010420800160840420884246B
+:803D000016482281228102005F5B09821281448302A501C024800284001800800240020000260200A40028400800000010082100000000ACD4E4024F22F4112487221F4132481F41724AD241F24A121D24AF14B911F24A9251AB9443F24A9143F242B147822D914F82C4914FA2C4A14FA2E411F2265A96F1224A96C54A9E24ACF591242C80
+:803D8000F591248D121F49F268121F49B24AF18124AF24D141B24A9921AB9451AB9443B24A39242F24792498924F8294984FA2F4C7FDF0241A1B412672119C141F81F226121F81F228121E245CE9C1D23ABA15929843D2127914D81A2BD35A7B36D81AC9128DB5885CFA22188F59F2221296E5B2E158E2A2F1812CACF181648F22F18124EB
+:803E00002E1217C88F22F1912426F2112C87421D24A9F31528A14392324782AD124392186B43AB244F22F5C3A9400848000000000028000000002180018800004001400848000000004480020000005012F03CE5201801402812425142180083410200840000008002100200000000124002000022002528022820024820F27A7D0092309C
+:803E80001130910000180014842001200228000000000000400200200222000084002001008042015BA9004200801A02441841201211081008222002230182002100110081244220012480021024322840888201800262142B215FEB033011301181130111218001890121800100000020020000000000008002000000100220020000F013
+:803F0000DE448001100100400100000000008822008004400440080080020000000080010088004100004F674A01118480240300240084424A01844100004180020014210018421400004290420024830184800829040000007FFA4D8141411821A421001424008148521018042028020048005100811248142002003042009012901880BE
+:803F8000082B84004400005EC80000000000000000000000100428004002000000002004000084000000000000F0E91720042342048420010000402801410000002002240000282100004410014444000011301420040000E08107000000400400A100002C0118008004002412481880018001004088210800000020040020042A01DF33A5
+:8040000004221200502400000000110000422A010000002C02000000000080810600000000000000F05E9A80C21222445024C01400000081004412A01200002824122D22001210020040441821290400001460458004200418B0E90A48000084000024840014122C01800420040000421800282001000012C0244100000000000080026F5D
+:80408000E40B000010018481000000000000000000000000000000008800200200C02800180000F0A44A000000008001000000000000000000000000000000000000000000000000F039A7000000000000000000008400000000000000000000000000000000000000F0CBF900000000200100000000000000000000000000000000000089
+:80410000000000000000F09718000000000000000000008400000000000000000000000000000000000000F0CBF9000000400840040080040000000000008001000020010081000000000000280000F0A49F0000840000000000004400000000002100000021000000000000000000180000F0AFB500000000000000000000000000000064
+:80418000000000000000000000000000000000FFE40F000000000000000000002100000000000000000000000000000000000000CFF405000000000000000000000010040000000000000000000000000000000000DF2B030000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000086
+:80420000000000000000000000000000000000000000FFE40F000000004004000010040000400400001800400220010081000000000000380000F05D4E0000840084000000800400002100000021000000000000000000000000000000F0928B000000000000000000000000000000000000000000000000000000000000FFE40F00000014
+:80428000004005008004440010024004002180018002218001884008000028840000800200006F54040014000048405588281082044480022100448002214818808802214818448828842148408481421882041E148002211A01445C03000040010080041400000000000000000000808802000088000000804208000000F0FC81000000A5
+:8043000000005400004840040021004400100218002810021880088400008042080000280000F04645000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00100240010080040028100200800200008002800480080048402B
+:8043800004281082044400108204440010F2F35B000000000000000000000000000000000000000000000000000000000000FFE40F00000000000014000000000000000000800200000080080080020084000000002F3A0A0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000C7
+:68440000000000008002000000000000280000000000004F7D02000000000000140000000000000000000000000000880000000084000000009FA3F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FFFFFFFFFFBF
:00000001FF
diff --git a/xpp/firmwares/FPGA_FXS.hex b/xpp/firmwares/FPGA_FXS.hex
index 88052aa..7560fd8 100644
--- a/xpp/firmwares/FPGA_FXS.hex
+++ b/xpp/firmwares/FPGA_FXS.hex
@@ -1,589 +1,643 @@
#
-# $Id: FPGA_1131.hex 2876 2006-12-06 15:51:49Z dima $
+# $Id: FPGA_1131.hex 3297 2007-02-05 16:03:36Z dima $
#
:020000040000FA
-:80000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6AD6FF4000881B09006AD6FF4000881B09006AD6FF4000881B090000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4455544455557475577775577675577775577765566665563625523235D2E37C2B5111155111155111155111CA
+:80000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6AD6FF400010F209006AD6FF400010F209006AD6FF400010F2090000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4455544455557475577775577675577775577765566665563625523235D2E37C2B5111155111155111155111AD
:80008000155111155111155111155111155111155111155111155111155111155111155111155111155111155111155111155111000000000000000000000000000000000000002552222552222552220025522225522200000000001AA1111AA1110025522200000000001AA1110000000000000000000000002552222552222F21F11211
-:80010000122F21F112122552222552222552222552221AA1111AA111001AA1112552222552222F21F112122F21F112122F21F112122552222F21F112122F21F112122F21F11212255222000000002F21F112122F21F1121200002552222552221AA1111AA1112552222F21F1121200001AA1112F21F112121AA111002F21F112122F21F149
-:8001800012121AA11100255222255222000000000025522200001AA1111AA11125522200255222000025522200000000FFF9F99F9FCFCFFFFCFC000000000000000000000000001AA1111AA111000000000000000000000000000025522200000000255222255222000025522225522225522225522225522225522225522225522225527B
-:80020000220025522200000000004AA4444AA444000000004F44F444445F55F555551F11F111114F44F4444400004AA4444AA4440000004AA4442F24F442422F24F44242000000004554446F61F116162F21F11212000000CAACCC2F2DFDD2D22F21F112124F48F884846F61F116164554444AA4446F65F556566F61F116166F61F11616CA
-:800280004554446F65F556566F65F556566F65F5565600000000002F21F112122F21F112120000004F4CFCC4C46F6DFDD6D62F21F112128AA8882F21F11212004F44F444446F65F556562F21F112122F21F11212006F65F556563553336F6DFDD6D6006F65F556566F65F55656000000008F8CFCC8C8AFACFCCACA255222000000CFCCFC21
-:80030000CCCCCFCCFCCCCC008F8CFCC8C825522200CFCCFCCCCCCFCCFCCCCC000000CFCCFCCCCCCFCCFCCCCCCFCCFCCCCC00000000CFC4F44C4CCFC4F44C4C000000008F8CFCC8C8AFACFCCACA255222CFCCFCCCCCC55CCCC55CCC4AA444EFE4F44E4EE55EEEC55CCCC55CCCEFE4F44E4EEFE4F44E4EEFE4F44E4E00000000CFC8F88C8CA9
-:80038000CFC8F88C8C000000008F8CFCC8C8AFACFCCACA255222CFC8F88C8CC55CCCC55CCCCAACCCEFECFCCECEE55EEEC55CCCC55CCCEFECFCCECEEFECFCCECEEFECFCCECE00000000CFC8F88C8CCFC8F88C8C000000008F8CFCC8C8AFACFCCACA255222CFC8F88C8CC55CCCC55CCCCAACCCEFECFCCECEE55EEEC55CCCC55CCCEFECFCCE32
-:80040000CEEFECFCCECEEFECFCCECE00000000CFC8F88C8CCFCBFBBCBC3AA3330000008F8CFCC8C8AFAFFFFAFA2F23F33232CFC8F88C8CCFC3F33C3CC55CCCCAACCCEFEFFFFEFEEFE3F33E3ECFC3F33C3CC55CCCDFD1F11D1D5F5DFDD5D500EFEFFFFEFEEFEFFFFEFEEFEFFFFEFE000000008AA8889AA9991AA111000000CFCCFCCCCCEF43
-:80048000EEFEEEEE2F22F222228AA8883AA33300CFCCFCCCCCEFECFCCECE2552220000EFECFCCECEEFECFCCECEEFECFCCECE000000004AA4441F14F44141155111000000CFCCFCCCCCFFFFFFFFFF3F33F333334AA44415511100CFCCFCCCCCFFFFFFFFFF3F33F3333315511100FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000008F84F448B3
-:80050000489F95F559591F11F11111000000CFCCFCCCCCFFFEFEEFEF3F32F223238F84F448489F91F119198558884F4CFCC4C4FFFEFEEFEFBFB2F22B2B955999855888FFFEFEEFEFFFFEFEEFEFFFFEFEEFEF00000000CFC4F44C4CFFF4F44F4F3553330000008F8CFCC8C8BFBFFFFBFB3F33F33333CFC4F44C4CF55FFFC55CCCCAACCCFF09
-:80058000FFFFFFFFFFF3F33F3FF55FFFC55CCCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000004554444F42F224242AA2220000008F8CFCC8C8BFBFFFFBFB3F33F333334554444F42F224244554448F8CFCC8C8FFFFFFFFFF7F73F337374554446F66F666669F9FFFF9F900455444FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000004AA444D3
-:800600006AA6662AA222000000CFCCFCCCCCFFFFFFFFFF3F33F333334AA4442AA22200CFCCFCCCCCFFFFFFFFFF3F33F333332AA22200FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000CFC4F44C4CCFC6F66C6C2AA2220000008F8CFCC8C8BFBFFFFBFB3F33F33333CFC4F44C4CCFC2F22C2CC55CCCCAACCCFFFFFFFFFFFFF3F33F3FCFC2C0
-:80068000F22C2CC55CCCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000004F48F884846F68F886862552220000008F8CFCC8C8BFBFFFFBFB3F33F333334F48F88484255222008F8CFCC8C8BFBFFFFBFB3F33F333330000BFBFFFFBFBBFBFFFFBFBBFBFFFFBFB000000008AA8882F28F88282255222000000CFCCFCCCCCDFDFFFFDFD1F13F3C3
-:8007000031314F48F88484255222008F8CFCC8C89F9FFFF9F91F13F3313100009F9FFFF9F99F9FFFF9F99F9FFFF9F9000000004F48F884846F68F88686255222000000CFCCFCCCCCFFFFFFFFFF3F33F333334F48F884846556664554448F8CFCC8C8FFFFFFFFFF7F73F337374F4FFFF4F4BFB2F22B2B00455444455444FFFFFFFFFFFFFF82
-:80078000FFFFFFFFFFFFFFFF000000004F44F444447F74F44747355333000000CFCCFCCCCCDFDFFFFDFD1F13F331314F44F444447F75F557574F44F444448F88F88888DFDEFEEDED5F56F665654F44F444444F44F44444DFDEFEEDEDDFDEFEEDEDDFDEFEEDED000000004F44F444445F54F44545155111000000CFCCFCCCCCEFEFFFFEFEDB
-:800800002F23F332324F44F444441F11F1111100CFCCFCCCCCCFCEFEECEC2AA2220000CFCEFEECECCFCEFEECECCFCEFEECEC000000004F44F444445F57F775751F13F33131000000CFCCFCCCCCFFFCFCCFCF3553334F44F444441F17F771714AA444CFC8F88C8CDFDCFCCDCD1F14F441414AA4444AA444DFDCFCCDCDDFDCFCCDCDDFDCFC3A
-:80088000CDCD000000004F44F444444F47F774743AA333000000CFCCFCCCCCDFDDFDDDDD1F11F111114F44F444441F17F771714AA444CFC8F88C8CCFCDFDDCDC5AA5555AA5554AA444CFCDFDDCDCCFCDFDDCDCCFCDFDDCDC0000000000000000000000000000000000009F9FFFF9F9AFA7F77A7A0000000000000000000000000000000060
-:800900000000000000000000002800000000F0C43980840100000000000000000000000000400100000000000000000000000000F02522000000000000000000000000000000000000000000000000000000000000FFE40F48180000000000000000000000000000140000000000000000002800000000F0AEE500000000000000000000D4
-:800980000000000000000000000000000000000000000000FFE40F28000014000048400128004840012800000028004800001082040000800414001082040000217F270C0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE440
-:800A00000F48180028000000002100000021001400142100140000001480420100808802000088280000F0A1BF000048180000001200000000000000200100001400000000000040012800000000F08EC48084410128004840818102214860118002211A01148002211A041400B01281041480028004148828108204808802214800CF5540
-:800A800006481800280000000021000000210014001002400100004001280000808802000088280000F08CBF000000000000000000000000000000000000000000000000000000000000FFE40F000000000000100200000000000000000000000000000088000000800200009F2906000022000000000000002400000030120018000000E5
-:800B00000022000000000000820000002FDC01000000000000000000000000000000000000008002000000000020080000F0FD7F000000000000000000000000000000200100000000000000000000000000F07CBE000000000000000000000000000018000000000000000000000000000000F05E3A0000000000000021000000000000A3
-:800B800000000000000000000020080000000000001FCB09000022000000000000002400000024000000000000000000000000000000009F6D0F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000220000F0CE41000000000028000000CF
-:800C000000210000000000000022000000000000000000000000B0C805000000000000480000000000000021000000100200000000000000000000006F96010000000080028004000021000000002100008002000000000000000000000000EF73020000000000000000000000000000000000240000000000000000000000004F4106004B
-:800C8000180020010000002018010000000000000000000000000020080000000000002FC4020000000000000000000000000000000000000000000000000000000000F04FFE001800000000000000000000000000000000000000000000000000000000F0E5D10000008004000012000000000000000000002001000000000000000000B3
-:800D00000000F0B18600180000480000200100000000000000000000000000000000000000000000F0C9F7000000000000000000000000000000000020010000000000000000000000B09D0A0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000000000000000000000000000066
-:800D8000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000180000000000000000000000008FC906800400000000000000000000180000000000000000C0
-:800E0000000000000000000000F0A24C000000000000000012000000000000000000000000000000000000000000F0687E00000000000000001200000000000000000018000000000000000000000000FFCB0E0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000000000000006D
-:800E800000000000000000000000000000FFE40F000000001200200100000000000000000000000000000000000000000000E019010000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000A4
-:800F000000000000000000000000000000000014EFE8030000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00800400000000800200000011
-:800F800010021880080000140000480000000000280000000021143FD803000000000000120000000000000000000000000000000000000000000014F01937000000002001000000000000000000000000000000000000000000000000F09718000000000000000000000000000000000000000000000000000000000000FFE40F000082D2
-:80100000800400000000000000000000000000000000000000000000000000F03F35000000A0445AA511000000000000000000000000000000000000000000000000009F1602A0448084084AA4551A01002A022800004012022B11A098800800150114004A0448000000002A0228000040120221FFDD098004000000008002000000100265
-:80108000188008000014000048000000000028000000002100BD6F00482004000000800222000000212418A081200800141001800442000000002820020000104202EDA2000000001200000000000000000000000000000000000000000000000000F09474000000000000000000000000000000000000000000000000000000000040F176
-:801100008E3E80B411021B21421B212394212B1419B242B911B24219B14229F24291222F1429D212A9421CE922C4812E4216E12264192E4296C1429AC2421B292CB49142B29122B49132421B282394212B8419B24218B14228B24228B2422892822A84E822F4EE2680B41186B41122B4111292612B1419B242B911B2429A212B94222F14C0
-:8011800029F24291222D912B422D912E521CE922EC11E82264192E4296C1439E212CB491C2421B692CB49122B49132421B282394212B8419B2429A212B84222B84222B842229B82294822E42EF740420880400000000800200000010020088000040010080040000000080020000001002DB5C000000004220010000880000000000000085
-:801200000000000000000000000000000000145F4C012008008008200400480020080000000000000000000000000000000000000014F01F8600C2000080044200220000004002200182000010010020040000000020020000002400B04A0800000082001200800482200800000000000000000000000000000000000000003F720B000037
-:8012800000800400480000000020080000000088008008000000200840220800000000B064010082000000480012000000000020040000000000000000000000000000C80080F8D3E700000000000080010000000000000000000000000000008200200800008A0400D0AC0700880000428004480000000080082004000020080082000021
-:8013000000000000210000000020F82A85000000000000A08400200482002004820048800280080000002008002008002004000000DFE60A00420000000000008200000000200880080000004800200880080000008800201802B02C070000000000008004800848000000000000480000000012000000820000000000F076970000000042
-:8013800000002004008A04820020040000882280040000000000002088080048008008008F5B030000000000008848200820040000880048000082000000208908880000008008000000578D00008004004848000000000000008008008004000000000048200400202828080000007FC80C00000000208804000082488288882088880850
-:8014000088800488000000002400C042200486020048482424828880F8391B0000000000200800C200008800800880048800008008420000000000000000001002B0B4031C0400001C04204481A8481480280400800800008280088008008882882004000000828008488008828882EFDF0B8004002004004A0842400182008008004A0852
-:801480000000000082000000000000880000000000F05F330080040000000000002004002008000000000000000000000048000000002410022F580C000082428004822014B18104008200000000008800822008880000002180243482002480C4824A384200007D632024084248000000828880248804004882480000000000000088005C
-:8015000000000000200820088882601814BD5100C041408104601400008A42810480080021800188002008860180288824880800480048A028008800240021F09E5F2024084888484A0446813CC142130482800C8288C2A08888820082CA2828040088A048002C280448482084880830824A08C082206818889F5E0C2008E01404110042A4
-:80158000C88282467141A14882C8002028044800008008888282888008001042228484048AA8888848822B8421242114829F25091924440120044248828088BC81888428248428888808828888480020282808208828A888000042483042860200824A4C22BC828888084F1C09111001119041100119044800002008488004488004488049
-:801600000CC80000800823042110022182211002210000002F574E0114141D411B841F14541115B141F4C1C11D8150111F18E8188824240488CA8884A44CCA0CA0C4428A8CA4444AA444828A0880E42CE42424C4422F2464244A6424256228E028F8C2C22B4CCEC22F24140240F2E56E141F14E41444D11134C142F0414119A4C4881F14B5
-:80168000A42A1F14DC118A24AC8CA088CE8229A4482BDD8AA8DC4AA4C4CAA8C8481F1CAC44CEC182824A084A64282446D222F442424E424E422F2CFC22228E828EA22F28F8C2C22B448E822F245C228AE828E828F8CA6450114811114621A444114E414AACC48AF8C1E11D811F14ACCCCA088AA8888ABC82A88CCAA988884AA44448A08C03
-:8017000046A1882028A8C88AA8888221469242482B444E422B448A1A42B282A8CCCE422F2CFCC2C22B88290888BFDC48A1444811114621F441411B444E414AFC41C11F14ACEC4EC11F16ACC4CAA8CC8AA8888A9C82CE82CAA9CC1A08A0C88AA88CCE818AB8812828A8C882CA28B84224C4422B442B444AE42CBC82BA82A88A8E822B484ED6
-:80178000422F28F842C28A98828AC882FF570B00008004008A048220088A044820282428242804422084280442008880088004488004008220088A048A048220D83802000000000000001400000000000000000000000000000000000000240000149F72081CB41142B11162141B21271419F6421119F2429119F6429119B44229F2429181
-:80180000A22F1429D212A9421CE922C4812E4216E12264192E4296C1C29AC2C21B292CB49142B291E224B8917242B281724292212F24B881F64282112F2428F24282222B842229A842882E42EF83071CA4611CA42146A1212581F64211282D91682DB119B64229F24291A22F1421D212B922D412E922C5912EC21E812E4296E12264113C23
-:80188000EC11C2C21B292CB491C6421B214E821B2946B281622419C2821B684E2219E22428E22428A2842229B82294822AD4E80C20880400000000800200000010021880080000140000480000000000280000000021B03F0C0000000048C800424882008008008200000000880080088200008800A04800420080040040F177DF14200812
-:8019000080082004000000824A0224004242000000A084000042880000004800800880880440220414F0AEA31420084800200400200288800488400282120080082038810020240C00008848004A280A42884880444202006FF1080000820020A448004248208802240048420000002004008008880000000000000000200400A71F40013E
-:801980000000000080C4810000482008800200000000008008000000A0480000244002000000FF5B0700000000484211824210018200200400000000288002820000000010020088801802008008F0BB651001000000481021B4410811000082420000000000200282880000000023080000211002008800AFF90900000000200482000026
-:801A000088420000220000002002000000000000420020088821000000F058850000000000200428C80082001042022002200400000000000080042008280000000021007F590A0042280020140100A8000080084002008200008800202288040000200C0028000000908221A042E60500000000000000004800000000000000202808009C
-:801A8000000020020020088004200400006EEA00002200200400008800C220082100000042000088822882000000424280088800480042100280B49C0C00000000142004884800000000002800002008000000000028880000000000800820F25EF200002002904162282A04000042004002008008000000000000006024800821A8000043
-:801B000020080088822F480400481824005021001426820420A8842C8404400200000020021032628800220020040000602A4824A028428A02245F2A09004021010000000020080088004800000000882008008200008008000022200200228800AF3C014800422022048004284800C0222C844822082800212800801882088220048280FA
-:801B800004880020180248200800828022F4C59A004800000000000022000000000000200460248200C8000000200400004220040000008F9E0E4081440100190400000000880000000000002800002008880000200800400224828002106228EF8F071112001CA6419022130222290628602400242CC44200200400228008422C42022102
-:801C0000280060222002260221282082880288002428CE2C20040012624820A44242002004428028880800002008000088008088240824008028880800008820022E8114FFDA0F00482A11010000C0414828A04824242880020038A084211002402184089042000024880000284082622840022912029FA3090030511F250180A22448482F
-:801C80001D4128482038428A082D422C0C002820022A048222881002100220C4222C8C8488888808602AAA4422A8A86E22E0322AF42CFBA0440040A1234A7442C1424A82A2224A048088944221C22B28212200208408212C6828822C0E2B4E80080010B2C22A0824230862284A0800A0A286A1828648113151C0312AA244904117122262B6
-:801D0000234402624A642A46E2288E088014C24288100220828424E82848A2C88AA2C82A0800002C328228801492222B8A29283282826028BF9C0C4001183022100223022382541210220A2A042A042A042E42E022042E42A0C21082024A022880622428886880020048288A0480A2482800AF2C0B1F14A41115A1635EE12F21F542423F9A
-:801D800026764371227242F243433D413553332BE26EA22F2ABA22D82292226AA6444E622D222F267642A2A62B222B66CEC223A2646E622F2EBE82BA22A222AAEE24FE62622B26AE62826AEE22BA22928240F24242272A2B6E242382A4C2A0AA7F4B47F141415A55112AA76C2F2331421F16F641212F26B442F261211F1256333F34B44227
-:801E000064242F26EE22DC22F6C2626AE622A2314AE62EFF62224AB842F462622B6617124A4EF3C2C229B2620E8AC8A22F223242482AA2EE86F282822BA240F2626227282BEE8E822B288AB622ACA8AE22EFA647F141411F1155113AE225A6712B441F1656312A326217164E6242212CDC22F822822F24FAC2822BCE212A82A1462CA8623C
-:801E8000214E42E02AFA62432BECCEC22F2CAC462BE88AA8882228428AA46E4ACC82259222E024B462EE2EFC626225B222A8842BA688AEA26DA4141F14F4115115B131E325A6332F24F463611F34A6662F24F263214E62422B44CEC22F2EFE62C22F24FE42C22B8A2B664A8461222F278E14E222E226B682E83EBCC2FEA1222F2CBC62B487
-:801F000082AE2A8A28A2646AA2C82BCCEAEE2AB282B8820A4E422F26FEC2C22BEE8E822BAAEAAAA6A8AEA2EF4A0200001C81044826810448140048248A442228040042000000008890829082808844022048220800008200288220F82DD400002002000022000000001002800400484200484200002100004820080000800200002824EF71
-:801F80002905481B21B011E226B111724292212F2691212F2699212F2499412F2429FA4291222F14A9422D912AC4912E421CF8224216F1224296F1224296D122AC292CB4D1C2421B29241B29421B2923B481B24298612B8419B24218B142A84A2BA42AB442289AA22AA4A42E421F260E5819E61215A116116A11A116116A19819B414E91D3
-:80200000A24E11222D912AD412B922C4912B521CA9C21E812A64192A64113CEC19C2421B2D241B692CB49162241B294219928219B64298212BA4112D828AC422484EA2822829B4424AF28C3D00824800000000000000000010021880080000140000480000000000000000005012149F520700000000000000800400000088200448820068
-:802080002008000088238808800800200848A04880842802F0F443202148817181A2128004C223044622844822068024242404820000210020240488002400C042822008001002000014F0C5EC00828025A812004082042A2424082100422442202908A08488001182420088C0422008A04888002200460242002C0814F0328E800114407E
-:802100000380048A04400280A42400200442004800100200200400822C080024008220080082800422008F380E0000000080046824824282000028008228000020B422240C80080024004888200400200848008822002FB80313022E11183880820480240948000048422004004242800AB8860221008008008282802C08808424440200FF
-:802180008008F0DBF6002002282002800468308242880048482242000000002E8224C82180080000824A084A88082024240442008888003FBE0A2601162181018004802409420000000080288284042A0852AA04000088400200822004008048020020027017070080022A0500141190220000000086820423082160220000424002808807
-:80220000022800009022000000000023F4362F0020040000250180A22448004800002480212208000000820048004800008800280080042211800221FF7E0900121400800200000080080000808404002100000048804802002420022008008880140100F0BE27000014A052804211012C2284040000008848422B280000210000002182B1
-:8022800082420024800A240000C880048002426F770B001828000021400100004A08000000422440820200800C4800302220020000880000800200004F850620062242229022308100304210220488000082A0A12810022C8188018A01188840020080040060220020080088425B37008004C0420048281C08219022828044228202822217
-:80230000C8C08200206C2288006A2808822A8404C800008A0400290880820A00FF1309C01100901100800880040088420088208408002028028220082024088044022100248004001002200428DFF10B62A012133421805422D022048A228826542210028221102244022182800842C01200258241022C0842002100282D828012028024E9
-:802380009822F0415F200410011468A04214A81002000021212A08002A682200822048022440220800002440226422860280082480080048DF7C030000482C844102264231224882218682840800002221C042420048234402428200820000000080020000004823089F3E0520022812102102004824808404002084042084840227242810
-:802400000042683042C0222018A2C2208E04888008008820220242821F990F20081001190222A024202808428022080082212200400200428288212400C8888008008012820882800882821414EF8605181148002180042180042882802808A84882238484118208602C18603820840148100221210000A02821882502288842212724F047
-:80248000C71EA034AAA621625E212222482AD232388146E22C5C2220A4848820AAE48088AA482A8B5222A0AA98AAB4828588A59898928223E428E428B2C21422042CB82204288E822348028AA828881C88F4B9470017188012B141C442284813CA212B2220DC22A48882422B8829282A08232C0225A2488A9C42122948E229622C2F26141C
-:80250000D222088A9C82218828200424822318C28200282AAC44669182DB8280840115C1423CF15321272227244AB262881C82ACA42D4229B4A244C22280A44C2E424EA22D422A042542E22C64244A984229088E42282C6822424224C22C1482A2882F24C8822092822BA8224622A8484AF2988320051220418204481400820000240020D1
-:80258000242814A2240000A021A025A0218012828288828806282008002200004222421F220F3AF221211AE113A7261F16F213332F26E222F283A33F2EFA62622186F24242293C42EE2221A082C848EEC2AE822E622F24F442C2824AE42EFA92B22F2BB322B622D322BBA2FAB2B22AA6E42B666E622F267642F222222F26562225F2828291
-:802600002D822F2AEA2ABAA29822AEA1AAA8622AA2663F5C07121F17A7221F13B751F151113F32F262222F22F2E2E22BAEEAEA24F682C22F2CDE22B8C2A826A02A8AB842AC442BDF8AE82CAD442CE82CEC24FCE2E21F1DBF32F35251182D322BFF23A8888AAE66CE822F24F4E2E22F22F262622F28F842622F24DC22F882822B882229A299
-:80268000AA2ABAC2ACCCAAFEF895A0761F1256111B331F27F322233F37F762222F26F6A1233F3EFA62622BA8C6A2442CB842E82ABA82A8222A94C2CAACD6AEC22F22FC42422F2414A266BEB22F3AF882622BD98AB8B2ACE89E92216E422F2CEE24F4C2C22F2632424E422B22CEE22F24DC22B882E828B8A2B882BAA1AAEE29AC444AF66A8D
-:80270000DBA0761F12F611111B221F26F273733F36F662222F26F6E2E22BAEEE822F2CFCC2C22F2EDC22B842E82EBE82B8A2BAC2ACC4CEC2EEF22F2CFE52C22F2454222F2CFCE2E22F2FEF36BCD2BFE3AE882F2BB892FFA2A22B88EEC22F2CFEE2A22F2CEC2CBC62E624B4A2AACC2F24DC22F882822F22BAA2B882AAAAAAAAE6EAAEE87FB9
-:802780003C010014601248260322822682048A44A248A04820880200282014228428948290824229080088482448244002200882200882428242F086CC201801602200401281082400004002004280282204000000802418020021480027224082440200200200F0952F80B51182B111E224B111B24291612B1419F642911B282B94112B17
-:8028000094222F1429F24291222D91AAE414E922C4812E421E212E4296E12264192CA5292CB591C2521B292CB19122B491B242B881B24298212B841B282B84112B84222B84222B84222B842AA4A4AE42BFC2082A91412A15A116111819961219F642911B282B3419A294222F3429F242B1222F1439A24E112B124E912CE811AA4296E12291
-:80288000E418E232E51CE222B181E222B581A6521B29621B212B8619B222986129B881B64292212B84222F242AA2A4222B8429B442EA28F4781E00800400002008000000000000800188000040010000000040020080020000004001AFF60AA200002842481E222A844461142490220088200C4200420000000021000000802C0486028627
-:802900008254220000202228041FD34911E118821201249011404341622811822488488008002200422302A820818221988280028018022C28488114010040022C084081B44D051114281C0420A44170630211AA04272828230880C84280A421A01480082210210288208402C082A08488881318928123840240022CC8224041B21A06227B
-:802980002800801212A112601450321100808408880000203422800818C0129082000000602400480025020000202884F4772600000000302248B0818428C881112088880482004221009012100200881002148088842808004001000000009E4D10410110B12244314242822470424241A2482819041100CA02820031808828840B420076
-:802A00001124184081081011020000822A24840A003F1D0814004091223042228280A88414B0820448100188002C0424149082002800401241621130814A88081421001400882A848402006FB50A1001004211304242241724248819188132818842006A08880000128622A4188084080000002008000000008008005F6B0D001180048097
-:802A80003242211124400228008200001823EC180200214890818211422482003482401182042082080000004824FF8D0E48A02100182100A014250100000048212C084A01C20000181001004800200800A2821182224820220428824A022B242F7A0E000000000082A04800244A881201132804820012100220040000002800200800908F
-:802B000042102204808402001F414A810400002100A04924C224008A84328130834A0880C421182424A0414882821400820014214021AA84148024082A24042A044800A7C100E012014212807242023411002012028004008E42884800000000800421202288082C08002C0846020000A822422AB43D0C68802292212382022880222218B6
-:802B800002198404A048004280A81800622A0421008260241100001123944140210220924280280400F094E9000020044820040042400288282092A200E0220400000000502222242C28080000822CC8821C0400420000003F2D01282200203C212822680018005012A0823021198421262202221A1A0180082601002814822100400200F9
-:802C00002100220029880448CFA942010000144011422244113241884002290418B0810429C141D012C4427082E1280421202418110114002004882420AA842004008008FFFC439141001100201401203481200C822008822028213842188088E81408A8828814008824113B8480F48221820010022008008840F1215800000010420100E1
-:802C800000290825014A024A1202809C512880080040012121242400C8000080041C280400002004428FAA0640912130212381044825332100406124135121113142001121800211002994124621011601304232904114C041D012244401502220062248821F9E0200A01242221440831431A114008880A4410088100200001912020080F2
-:802D000008601110422238828224118282340000800800CF2F011490410014C06218284A2114C2212D1120948110430121138241A2842306482A4141014022880400142811241422142888C8C823284802882D8282CB8E0013A222A02227111B241CE4245321171282212F14C8111718422B424E1186B28204F0416129E4222435422E4191
-:802D800068398CE4210A3A081722242311E11812F1C12227141C948119E82432812B8C46A2444A3282248044E128E4BE4DF1216100197241B241E21234613712224A922119043552228E11C681F442211922A8442B838A6214E018863BA130C140021D822B8915F12181469283250219B8C2183282312F145C2168888A044AB4822882984B
-:802E000082AFC605425011321C2412C222482B6429E536E43918A18C4A94C31D222F2AB821E41368141B89246E83296B2222C662349E232532821B48863342482186928256621C144819623C4E238E812426A1882429882802CAA848422F720C4001144002001400822008822008822008821003390888800829081480088848000080042F
-:802E8000480024480000E0AD022AA2221B223E116AF671511F36F663211F17D711F233733F32FC43422F24E421F142823F35F563E33F11E512EA16A4C44AE413E216F4E1711F15A5C41F16F641632F35F742422F23B342B41261281B998AF81151CAF4F2F3212F26FEC3C22F26F682821F2E3E611B8C3F286228CE424A84EC2ABEC2ACAAE0
-:802F00008AA84C7E6E142E211F1656111F11B541F453533F367643F13131283F35F543C23F26F6C3C22F25F342823F15F561E33B732AFA62633F14FC41412F2AFF21612EE22F27A7446AF6C1E32F35F7C2C32F23B3C2FC131117382F2DF982821F15A54C2F3313F263E32F2CFC6361CEC3EEE329A28C8E428E42CEC22F28B882EC2AFEC256
-:802F8000C22BAACAFC42429E2CA0221F12B621F231311B663F27F763633F36F6737137143F33F723E11F3CFE43421F29F942822F3DFD63E33F1BEF12EA1ADA13F8C1C16E71EEE16EE22F23F74161EAEA36F6D2F12F34F4B2B22F24F4D2D22B4C1E511F38F891911F1CB4F11FF121A33F2CFC63623B881BEE1B2C3F1C78C2F2C242272CCEBD
-:80300000822F28FCA2E2212BAACAAC4C6DD220F2214115F15131113F25F763623F34B233C3213F35D513FE81A33F28F8F3923F34E839FD63E33BFF1F22FAE3E13F14FCC1C3EEE21F3AEE26F632726E622F2EFEE3E32F39FBC2C22BBBCABCD2AD4C1AE528F8D191CAF4B3B33F1CFC61E32F2CF863E1CEC11F3EBEC3F8C1811F3CFCC2422F64
-:803080002CFCC2C22F2CFCE2E2212BAACE42CAD44406260122200226836412482682448304480010010000210028112800210010022503244081440334823482A04820088200DF310880020048000010D12218D122082F34081CAA424A0888C0A12322842498418A12220880082928081308822490828A040010020023A4484286F1535283
-:8031000080B411021B21421B212394212B1419B242B991B24239812B94A22F1429FA4291B22D91BAE414E92AE414E82264112E4296E1226D1D2CAC292EC21B292EC21B2926B291A2841B292B841B282394212B8419B24218B14228B2422AB2422A92822A84E822F4D14980A461481AA21419A2141B2123A4214AB991B242B391B24221FBE2
-:803180004281B22F1429CB113B4B4E812F2AE114B121A8811B52122ED2C6E132E914A2921B242E938AE432B591A29219B422B981366219B2229841299A6129A8422BA422A848299A42A82F22F4844A0080040000000080020000001002000000001400004800000000000000000010026F7F0D0000160338482C42011B182321AC1400AA08
-:803200002132811B248A028211111304C0B2884AA9963A9C8126012D81802B8AE82482240800400220228204824A8AF88FA3146200148041210352AE412110012724190213A8428A0128602C002088B4412102800211381B81002904406238190C20880C24822422681470A80C424240911123A11278282961243C2862141A542226A18179
-:80328000A82ACC42A8A0811368184800CA33931B29AA2549312146B2113A81A2A04800002002A08460228846C22288E886F21E1720020000140019E4122881210848204211C1B1800242211420084248A0428A02112081A12821682324D832B88104C082008002A042004FE104220000000060141301004002002088880421100280020089
-:80330000A082282908000022820020088A0410024A2208B0BC0211C0A1902114144AE12224EC22885C21482502226A01428A442122280C0012294282A88112290820028820098602824234800C888222230420069FAB0B1302144001802522C4238815424202222B2520A484860148C60200122342028A0182A226A282800812C0A22008F8
-:80338000142004882082A42420027FFA0F002A082211116024884AB811044200000000A8880024008022082C0100000082008220042928A884801812028248E0A30D2811200134800220180242808214220430424218290820342300008A34628024080040024215024823228424A88440020029440248002004008001002A081002100250
-:803400002CA8124A81A4281200C0A1101112A1412C848208802404004A022230220080822404213FED0C00800200C04123020024000082281100000040022C2104008200342002200A002100102202200240F22C3BA042002044032219840221C0C24002209822114278484220C14210E21209249063422488002064242800282304E02282
-:8034800084280A242A240448EF54068211A0210000241288000022460242008240822802C021002904C88009221318820280884483440246028004220040F268B180242202426A712241222446A18282000028C82818282228A0341C82222804422044223441208804110040220290222800C8000023F4AAD70011E018220142281002400A
-:8035000011018E121908908219248808A2800842904111882088084021E23804884842422024080025024A388200F02F6920082001103141002014024601704202A08440020080282108004041820229042880062902212C28082100000088F06948141400002001160218141C06A082424031820021A0140042212288002C281182084025
-:80358000022A0822148A02222888A08200C8804402AF63090000203442213842582A29095880632848B0220100800800242C22012021080080C44200008200803482282002C2C0216FD50D282A9121C0228062218088022142828024A21211308122A012E02288220200231202241400140040412148C2810000200800C8F035C4000026F2
-:8036000001001419840114C082B042021182521110224832413944012280280425B1410313082B283411A0484A1801804401D02228140200825E5A1448134801421CC2120024884842194C4302888004482C81B1811402308190818008001A088A8284082EC12120661860148A042800002220FCC9D2B0810248182C22016219E218820234
-:80368000902220D42118312113A282222D81172218138258222682C81240038A42219241298428612840225A12284828242A048800C29042F06E9C1428BAA2221382F231622B2717222B45199822173240B14224A686A82F1EB441B18288AA9219E212983113D212E2123842A621EC28682417181B848A788192C22A083B88339822282DB4
-:8037000023190239A8A8222AA888218A8488C441626FBA061B4482111CE324245411297221A34E1621F4C3C34A88B182186322242986C241241E822CD612046218862244823682242F38F2232120247CE2C2232A2EF422C14A18B2C1C842131452222722F0628282228E822CBCE20826511114122A91122CE5148593326AA9F8381B481D88
-:80378000831E628E53371C19EB1AF87151A28E2123226C2E3C66282B2C2AFA11822711002BB11AA441148E2319F611C142421F2834C11B4AAA9862C2244AA628A0CC20A4844223F835160000001C08244003000000002420043082008004C890C28004880000482C0824400280440200000070EA447181E111E312F211111F14BC51E62727
-:8038000057333F16B6E1FE42C23F1CFE919127382F1DAFF61F15F5C1619EB115F161611F16FC51517E4315F121131F14E42278C1E32EFA13514E426AA6441F12F2C1433F1753111F1AF681833F39D113F44141212EA13F1EFEE1C12B8A1F14A464EAFEA2A22E2286F2222229A4EEE022F6A4871415E11527F211511F14B4D1F7731235B381
-:8038800033F311922F24FC93F11F1B5B322BDD6AFFF1F11F14F691B13F39B923FA23C1DAFDE2D33D411F3A5C233F367CC1E32EF233731F3DED22A2883F1AFAD1533F13F781833F1AF2E1632F3BFB63E11F12F681813F12F263611F3EFEC3E33F3CFCC3C12BCE2BAA2AA28C6A82B4E20E2F227645417141E111A722121F15F451717AF7118D
-:80390000133B663F1CBC52FD41E11F197F82F3D2923F36FF73F11F14F6D1B135B3B3F323C11F15ED36F581831F32B84164223F38F4A1233F1FCB432BAAF0F17117383F395D333F3AF2C3232F31F343431F3A1EF281833F1AFAE3E12F28FA83C329E82EFE22222AA2882AA2442BEEE022B6B147E11CE411A5225AF291413F15F573731F3104
-:80398000F373723F31BF52ED19FDD1F125B3D2FD63F33F13FB61613F1DF9F3922F1FFF41C15ED2CEC33F38F843C225F343433F38F4A1233F3FEB39FDE2E22B881F1FF7B1322F3BFB83832F2AF2C2223BB9CEC33F3EFEA3E33F3AFAA3A33F3EFE83433F38FC83C32F2EBE22A222CAAC224AACEE8E822E22CFDE0500260114482248262108A6
-:803A00008A44A2481482288A84B2818432810010012190821002008840012D81C0810048A048A048002008822008F04F54C0410011809412304200501200190450120020040000002800244001211124000013A886820021800A2110820414AFC407481B21B01122B411724292212B1419B24299212B94112B94222F1429F24291222D912D
-:803A80002AC491AE421CE82264152E42D6E122651D2CAC2D2CBCD1C2421B292CB89122B49132421B282B8419B24298212B84112B84222B84222B842229A842882E42CF43072AB5118495216A217942B21132421AA28613B142BA11B24229E31428F34291324E8123C1B13B584AC3C25EA115A22D1F2221E412E915E222B8C1E222B111E474
-:803B000022BD9122B691F42212486E81114A88E2348AD212A8424A28B242AA4229BA22A4A42722DF720B20880400000000800200000000008008000014000048000024000080020040080021F09D4A00409521182C06242416883411004631118223850800002B2810952228188088A1125288112B1828800488265228004602438408002D
-:803B800082802206CF690C3B128E1118242614A14A16A1426229082C41824892112C9868424902CBA41008278450264532484722844488622A8892122F6A0440C884A2882382A88482248A12982630C8881C88FA6B76001B1C4711262381248421D4A283CC11322127183C61182C0C4864206821A240A88223C21421199A1244D81091225A
-:803C00002B434C2404888E222E88822322BE4288082918584282AC0CC8881FB6072F120100439221231A312248000042C012128BA480028F4402812446154214324841812A012AAC2898F02282008441100200462488022800A22822CF3C041400408204122A21B142B811440124304240012100001110410400200200880000C082008247
-:803C800014110000008100F03D98209435190223081912C2476022885022209585482E8AC2841481C661684024C1284489B8820441431845428172235422828C082470424262A819888832424C18024284F0FE3200191101868244023E412582285C212424522110881C0A841C4C1401144441842304448800113024218068281092C211D5
-:803D000015180122D024080000FFE6061CC4242224001C221124A12439010070C124C4A300110088214112830288882042144522C8221424888100400223388288244800844281F068F60026225412004125430130263022A0840021105424484A11021224C8502A1028588180041941164418141216B284944253121C984622484484120C
-:803D80008382F4AED91018244432415420211302418822290110220125411288018E4421428065113084282518814481C8480014C08888490222242240140442C90225F23C2F24000012243044402214011C48C22241204428289411B0889228100280082480A22C444022210AA02400802804008400214044F4A5230064106214151234A5
-:803E0000153351224225612886D122810A3052A48664444608AB284B242931422924D1B2098694221CB2411204F0481422814511928C82E8214954842221454844442813C846AF1A092128109112442448220028008054620040011C81048400824800812C088840319125624800660221A084112484462422042354844C02BD1C0043068C
-:803E800043826412003121860200172268D02414982890288718848A246824830889B242012A149882C022150C60824128844486D42184984424AC0484304C4200421F86031942922121A82428158482817281041148182F1394113223A89288224A38241E48222092812A381249A8411E4423598200421091862024040022441002108472
-:803F000084045ED90040042849040028218841611448802412644214004501D0210421904840140111504150234270161151824246064608422C88280400F01FBD20140311115021281C968116C624298892822182A299C882111022C352434201E6094501168289548444488612A884812324840481813C0200462844820450246FF6095E
-:803F800023181402214C0115240100108401502410441858482904418921028B4A85048150242051942608153884C058412450184548447C44082184100486F1CD29803412400500108282219283288219522111249188A8181C4A4811412A584124000013480814148211818012291882521200222422258404F0BE550011140025026002
-:804000002413748221048280880142301110021420040046C18441601184412088081064288800881C04290400880010E4ED0B204242220442220020C414344211C20046120811C552281786A11C542890888CD42878440843744201566E844889E484584113A848896A3440A982416024432828022AF49F51508280A42111111121A048BA
-:804080001C544126830224001B1811424714291C830988E0115424182414248A420810124124184102255143228C420423E84488080021883F2D01489A52524D255051421D2446B2215822486D86611F3882F892915193FC8C4C2F82782C91189B425FD4F42DD4F04B492788E9A498CAF4C4148B411C8474685DB2CBC142CECB1C7CA4727D
-:8041000011FF8341874C9B2C9F245C894C64AA2B44456A282FCE044081F4183424E072447211E21432363443D21166311D94AE231D111536422B23422F11EAB3C92113996157284F2422C8231E4126E222E43AD2828401ECD143CA122351451C32813146A484CAE144DA32C88A6127643167444183A6C48D826DC422E046E8F64B716213FE
-:80418000372123B22364243352322B122B6CF6B14328CA81D81F3494614E4629D223F84C318E884EA92F98D9287A42F84928889F15DAC1F85D27A5FE288A63FCD4127F4818157881DE9A7428748DDACB944C45D281D412649A4D41CD2B89D468A8C82141424B444243F83D290000211084140480044004204804810000214400004908695C
-:80420000084142411006008810040044402408100800D02D024F44F4711A15E2217584F451D15F54E426B452B5C3A8941F16EC33F982836F69DB2396138EC36F4CFD48885ED99F9CEA19FDD4E69F9CE824F3545C9FB4FA935ACFECF64C5E4F64F4444C8FA4F4E5F75F7CF8551495FBB9F48F98F845441F64F45B1A3F55F16BE83BCC2BEEB5
-:80428000EEC25F54D4ECF6A2E26BC44F66FECACA4B6A8AFC2464B0649A62244F64F4F318116F45F564441F3FF547456E422F25F563C14E956AE8215B326F69F983A23D132D22FFDCFF4C2CDFD5FFCAA8CF49FDCE72DFBCE8ACFA5D5D9FB4FEDB7BCFFCF64C5FDF7CFC4C5E8FFCFDE1FB5F7CF8551CD5FFF9FB85F8454C1FACF45F5F3F7DB2
-:80430000FDEFEA3F4CEC16E62CF644468FC4F4E2ECEBC4CFEEFECACA4F2EEE68F86664B0767BD70B7F64F4175647624F6151647F71F1674547623B573BC71F477D61E1315B764F6DFD53433F39F916266F5DFF5D9D5ED93F9CE81DF5CCFEBF8CFA4DE74FD5F749681F99F5414BBFFD7D54FFD68C8FA5F4F6FE7F55F8145485F2BBB595F912
-:80438000CCCC9F44FCCDCC9FF5F5EAEC2F58BCE2BEC2FA4541CFE4F46EEA6BCC6F6EFACAC8CF8EB684F82624F024B67F5E41F24546FF5965327F61F144C66F75F5674747622B553BC71F27FDE1C33F3159766F7DBDD3FC93936F61F2D7FFCFCDF95DDD9F9CF8DCD7CFACFECEEBFFF4FE547D9FB4F6DB7BCFECFCDFDFEFFDFCD29ABFEDFDBA
-:80440000F7F74F4DBC1D51FDFFFF7B4AFACFCEAF8CFCCFCDBFFDFDEFEFBBCC1F1EBEC8FC4545CFD4F46EECCBCCEFEEFECAC8CF8EFE84846F4242F2A4B2FD740040012581440314822048230811A048852248348130814211100319082004C0815012C081C083501440E3884401344026480200008DAFD032440400003042110021114210B7
-:8044800012512A40814484A484002C24142484440486140440248404444098828A34484121004820480440F1C7F9C0421F4152281F41324E1F41324E1D24AB141D24AB9419B24A19F54A9443FA4A9143F24A954F82D412F924481CF9244A1CF8244A16F5244A96F1244A96F524CA9E244DCA1F49F224421F49522C1F4932681F49326A1F00
-:8045000048B64ED941B64A9921AB9451AF44B924F44A9443B24AF9244829F92448984FA2F4F537F0225A1F41B62EB511B26ED141B22EF11144AB1617418F42F81144ABB45B21AF4439B4AF1432142F54BA34D41AFA36488DB12D588DB54DCA8F51DAA4F598214FA2D518F224D98D214FA27DC1F824521F89B42CF59128CF267191382C1F7E
-:80458000C1B6269861AF46D941B24A9B21AD948E482F4403ADB44D482F447B22F842B44D5A5EBD4028880400200800448002000000100218800800001400004800000000000000000010023FA401F0112425012548C2244001001021241101C1442184904410C22C684624024123722882140420013014401648F88128195141424821CA43
-:80460000C1444828465484F0F97C14428222B361129C08C0444188832C5162860152488A96CA99A4241E242C68843041418541342783B248181664241C01A54444072430C414528CA484635148C284409488894141F4492420F4C512701342187822045C0490482654218240018E48237C41324843F194422410B164D88444342719D2226F
-:80468000CA288924F4421110465414230145C2C4416E912E51442364E44A385843344426FA14488416F463DB0028264168121308004488822C116414124A81C42445182A820283048F440214225084835424444100160810042184854118B881C414008200884044F29D671002000045010026014282881142909AD0182208481042141499
-:804700001804209484442A0122442CC848811140582200008C24A4484441008744F02DB970240154D02441A2422941C218E018311142242A788422B82534CB259444220085628627244098C222A03488250249D818C8142449944841808408272815622845181588140C8A024F2646922110014911F22144002981C2810082884522F82AB7
-:80478000413F88D48522840224844782494458842904604864288048D524394845C84910088824882487284453141C440C89066F8705411004002129018114124E11C82413A2849094243084800490422502202882842788113224860824481044221402501248838408480049085F66082814288742441C11026C44614810631AB0828494
-:80480000044420744218B48801C72814464C0A2541014415A884480081A94416143124884941322C41844604620064A0148FCF411204422581044C081044053024203212002F8261482584840182004400148F426481A48035281825240230528490648C242208218160442124412E129FC505200100432408230190118848001046010045
-:804880008148290A2422484420213882412C438408201808000021188122884400C43018449F634882025081424D514120511682123159042B8256425414A9634C8554488F248852A4148744C4501212CB82278845A2A525B48822118A4A1A64154782401228918CD042180846140489C146F210341126C2244110026304141188828014D1
-:80490000020080240488002322140620941411200150248C14042180A861465284608242414A02A1414422F71E008A04221111502244432208A260414115662486420248101112818404152201502141210000002D4C241C48242422840A49880800468408EBFB5061C124158CC4121119048C88F44284488C4888082E844249C841C021E9
-:8049800043C4492121208434C447284622287C84021120881425011001890812C830247092281408C47F34096089002100421344032441F042842488008450814048224443088C124188C8C800129081891406106848A3C4827088425422A048482400C042CFC24A2204C0184CE244622441282518C4C450875081478400114A38246332DA
-:804A00001146588549482614433241464724B48454148D42874140914A812904882684C424837418F41844812B81881A888884F87F5E00006014853441830240142841012414251189D229088531221018088901834214088121A18422114D488438401951828C485482888C0480C4480021FFA20F4111271100224155C244422D428034BE
-:804A8000442263088E424614029042102289382844A4820010420868E048036D22488D2448A100214828235A22260222833186242F9F0F1C148442042502002214000000C982420442218C14211443042A944120820440011C01140048614A011A240542C01442990122124CD29C0224822F124131228601203344881006C228008B21905B
-:804B00001889F21C4200701824584890288914180480241228E28221562426C428F012885082448128181A02384A6154E0DD012588C2422286548241845012148C0228255892841064842145114284118418420224245481264428C24242D90500208448148622614112A16042AD824918B248F8925760144F2865312F42F38421E71845A2
-:804B8000514C6D3655D222D888E648542A16DE12D848F42C212F2C35262B1445AD267F32D1B874550763F6424417921F3881E4645822AD4447283F14C12833912C1D25ACB61483F6C4C41D44218E22886F8CE7E874A4E8282823E1A331148E5126F43F5C506483983315394117244E463D2942AFDC744124B84472C538CEA666882F2C78DB
-:804C00002C7888F3894889D2A811088A745BD84858ACA1AF84F44E83ED68CD884B244C186C221CED86F85C4823664467868D28AFA8F19848A9DCC845B424F852F41E1829F3C2912B248F84D854C8C27F244B93433D2C22C5F222462E3C314E421B422AF284412F249812542A5C8D75C3445CC24C3CB861D455E4C43443A5587484124E626B
-:804C80004BA2C4E05CC48223845218CD281F595522C5D5AA546835E314E822E8C471463218AB1585F24E24CE42C7A28BC8AE544672CC98130000A30283028130288281823482A048288230814A020042114280928380289484424180094180014D114800804404444001462461448F934B12F2272555FE2F4CCFC4F46D644E4C6E6CCFC591
-:804D0000F54464C6F8222AAF67F54A4EBFDCF6686485DD44F25951DFD6F69F15C7C2CF53F53C6F75FF8C1DDF55F56CEEAF25D1BAD63B588A8F46F6484C6AF644467FD652B92F33F55A185FD351998B12AFC5E58FF9C8C85E588F86F5C6C8AF88FEC4E4CFC8B88AF9D8D8CFC8EA88EC4BFA9888CFC2F62F9650631FF6D65DD26552D9DF443F
-:804D8000F64B437FD6F67C5CCFC6B4C8E48AF2943A6F44F4CD4DDFCEF6894DDFBAF4FD59FFD6F69F1DE7D2CF95F16D3F75DFF5F85D59CFA6F65E1ABF92F22AA9E5FB68EC8DCE4F82DE64FC276595FB1B93BF85F9191FB7F4ED1CAF85F5DE5CAFCCF45A5AAB746BCCAFC8FCCC86EFC8F89A98AF8DFD8E9F2F8CFCFAECCF8DF86CBEAD5124C9
-:804E0000217F52D7217127F54C445FD6E644F46965BF55F548E8CE84AF26FA5AF2FFF4FC8A8CEFF6FE4E8DCFC4FA13D1EFC6FE9391F7C25F57F56D7D97B4DD8F5F55F16C2C2B55BFB6F6A3C3A7DCEE648FCCF4E26C4F6CF4266735F1B113BFADF13716FD458723AFC4F5E5C49FC9FD5252AFA4F7CECC2F2CFC86E6EF6CFCDEF62BFDEFE8AD
-:804E8000FA82C86F4FAE99CF82F7CDD53435F62B673F32F22F2F1F94F4656F3734FF56F6337F5F66BEC2FCEAE22FADFD47C7AFE8F8EFEFBFDCFCEDEB7F9BFF6FED3F9D792DF97559DFF256BBD5FB5419CFA6F2565ABFB6F6A3A9E7E82FCEFEC8CE6F4EFEC4C26F32521B9F38F99F9EBF61F14B4FE7E1AF85F4CF46AF99FD5A52AFA4DDEEF4
-:804F0000F45A56EF6CFC8E1AEFEDB592D1EEF8C2C8CFCFBFD4F56C6E7FB107004D111082046032000040C24840480244200444002004282014260430223026601220A24824122008922C22D96822A1243048F024C9F082420028246880243481462228042F1408881B424A081CA84210012C44C14240621C604820181441228811114254AE
-:804F80002440A1494AB11454228A440420084188241FE90D6D421F417228F21124AB161F41B24ED141B26AF18124AB941B28AF243995AF1439A4AF14B9A4F442B5578A2F14F924481CFB244A4E815FA264154FA264595FA2E459D2A2ED4DD2A4FCD1244DC21F49D22CF19124CB941F49324A1F48B24ED141F26A9119B64A19B54AB924F441
-:805000004A9443F242944782AB944F82E444F9244ACFC2086F22F51148AB5215F46E1115F46E1313B16EF18124AF467991B44ABB94F2481553D87AAB49AF543295ABB473D158DB26F548B17FA2F858842CF1882559B598F224D3875D4F22F851286FA2B891F62C5217884F16F98168EF26F1816C6B168CF222951D6C2BB45D28AD948CF489
-:805080004AB48CF442B48CF44AB423F242A4ACF5A2CC40088001000000440000000000000000000000C08800200400000000000000424001DF9C0730112135041868A0141C0182A1814282292814E748048C6494841354214110048B284A384284824E8244882B922282884400122190548B84582A1468448B81104804CF4C081C62488CDA
-:8051000008453324218306A825D11802412508C08886C8228145012464444062881014C222804235111845427414914242278C4E18899818602812C124182270428141C1466FA40AB041C188714427632268B08113D228722814C44888828E482D8C4E84A44211872145738401308E702438812D22818938457344D224C2241D1242488365
-:80518000C41849D8822112B48244AC421868882D431658141E46CDD660124421400142844A011413088421100214222155384820444204008229240428881298926048884429889418009A94181A44424864810000DB291012012002205122840000801402008B84800200426044588120915400448844212082048008008847884088083B
-:80520000812014B4E80E13123234C04425C844A04152AA8425582A1D84E048247529C44100830815944228D0283221353214C128B042024C02161825D1488854242C0686811982646888842F240A2022F8FB2380022E14201622042CC158884888A13988B44228712C41810C8C0245010046E8325438181248804484420244224B844844F4
-:8052800027248088918289088388A8420062F015372434110041814116220462120044102404488120082442683024290141C42E1424226048441648814108A08210210843C48421A42C480890849F790639942414400420E412019012601580A8412042C2124A081C810230448006C0248B4122481E422200C092400282D1882A014412C8
-:8053000045024C082C044E148D7E002085010028482144004362412752C0411E881041024A0160212844701201118A42CA844885243244284460815081491272231424C24489486422228118A9F326C6200140A341290141400414200800416044405C48C15048C42450488428482120021120511A28C0412E9A008004250210280420024F
-:805380006FCD0F1B144413015818302456114402F0449144471A4A31443E884684C184857448851224C124A0422D192092882CE24482312C30541CE2481262942F215A811C32826F14117422B4148448EC2228228493649F260E212830116502806422001301C01200110025C148004058482D424445082246B42205885012282484188036
-:805400004188480800105284214904844078B641C2142200260426A4414D41F041222200442400C5022782414B126082001004872240846482802441010014A45042E04408100281824A82262444F234E710111451583084902D1880418411441894140041404811243414004022B4242401508212A021A44123140A808824028450482426
-:805480006081840084CF6C0D2810081D288004A4116100114008400A8422442284604200288419022C022889121404811008800400288121A9082140084CF4ED24405112214004250410043B14650100C0243028002880E3A244420448108802400200422184250211C026108148A481444944024121222F790182C410012002602149020C
-:80550000211001004464001528042C4208C4006084488CC242008D21841048018521926A818501202124C444222144F0CA68106414484470120484442E4C00221C42088002008410880120028416044028052420048024022C022C08400889041048181412B4BD41C3182312110800221001141240024028022800208404002046943450B7
-:8055800022A0212818422C044314128204524911121402122C820480F2BF34000022C0228C044880840230112C02441222302480018190484822C0484001281002C028200460882182C282832AA82443088004F0EB4A6082C048129400441618220180424238188428841848214382012A1824612400460100B028048004208428C214805A
-:8056000022019014249014842546782D4E7131F68425118D25144C8262110026B24132251140D2489128AC21D2827224C8298CC2286E788C42741428E286426582BC741AA84280721921944E8C54E9239429AD248391329D11A1C7C844C785C6D4A4F648124F8404246FA744921693569811D74225322ECF427418F342264F5115B212011C
-:80568000608212448F42823228284412228512A242442C447428D844054825F228322B124A81447248D212425212424AB44834848E1A225E182F42C8122396227044D4C6F24C83C021250247818C32144E448CF2445CDD112B242E1340D5F9514A21478241E58ED14834354F42B4484474245284424E28AB416B645AA2242E22282B418567
-:80570000B42452A84E28214A446828AEC22F22EA4888A48224AB882C94C483E1C254483068CF4C4A01214001C04822488064120000840028801281024A02004A12221404222002471248244814402128A2491482204922C9231242C0244F6D41F222222F6252D7CF4357A8EFA31332459FC1F1292C3F11D111F2111555F515354F42F21C9E
-:805780001C411E12C7E26F43F14D6985F85C4C45F42C7EEFE2F26A6C8F81F148286FE1F7262CCFC7F7282A5A25F2723885F818789734AF2252AA6F66F64B498F82FA496BAFA4F52A48CD8EBF91F326A6AFE1F56672EFA4F16E5E2FC2D4847448F84C2C9FD7427216F2666E75FD343C8D2CCFE1732AF465249F81F16D6C7F11F161615F1362
-:8058000053555F61F126266F4151441E1C47E26FE3F3476D26F46E7C47C24FEE5C66EFC6BE14F168286F65F74F4D4F47F7484A8F27E724F61A52AD281AF3494B2F22924ACF46F641412F22FA4B4F2F2EDF8AF61496BF11F12EA6AF65F5EAF6AD1AFD3E2F44D4CE7448FC4C3AEFC5022D222D66B5F9353485FA3632AB465F16F3495D9FC2E1
-:80588000F263441D211D2155F11D19EF83F31C18C3E221F12E2E2B13FF965699CFC487F628EAAFA2F26A6C8F81F5486A6FE3F7466D8FC5F7387A7E7826F2326287839F91F359138F26724AFA6767BF94F42BABBFFCFE2A3A8F8DFF4D8FBFB9F936B6EFE9FD66726F2DF96E5E2FC2F546484B44CFE6D78C4F3216DF62569BDFC3D3E9F21664
-:8059000036AF46F465359F94F575763F47A5773F115315DF31F13E3AEB11CF42E2E3F3262E2F83F3676D1772CFC6E686F464CC4762EFCEB614F5686A6F67F74E6D4F45F7585A7E784E622723EFC3F215359FB5F56262AB44DF56F64B49BFB2FACB8B2F2AFBDAD85F75F99B93EF63FBDED4CF4EFFD4D2EFE6E746F54C484B44CFE6F6D6EBEA
-:805980001002610084224003260200640040024C0289024E249028214280024222422230248480448204842602C04800805468C0243048F0557CE01A018501342842200442111001400428000000410040086B42400A00214002002502898884288821C186488848214904705E046D531F41522A1F41724CF11124E3D641B64ED141B66A6C
-:805A00009961AF1419B54A3924AF143924AF547924D81AFB35485CFB244A8F14FA244A1E214FA2645D2E4A8F5DD2A6E449E2A2F491242E421F49722CF29124C7341FC9364A1FC8F64A111F48F26A911B28AB945B48AF1479B4F84A92478A2F247924B84AFB2448984FA2F4BC14D016F51168AF22E441F84C1119B226B11134261AF42A87FC
-:805A80001E44AF14BA15B24A7914F842A132AF543914AF143B132F44DBA4F148B14D825EA1A4DE254D588F1DD236E518E2A2F5912C2E5A1F48F62C528AF224131F8934248E68AF12E148F66A151F48F24A228AE6747184E86472A4E8247224B8483A2629E9A2F51A8F00000000000044000000004200008008000014008400000000002059
-:805B0000080000000014F026DE50211228121301411A041E68244810081A18448E92A80042460250246012458212080000101253842148C1A602304817244218248E482428202204BF2904204854184147121451A49042854282082304204105891618584841203248A6084B6810044210022A2182112498142009441D182C5848154288DF
-:805B800061CC46681183F2D59650214249C211167424014E15814A3142A3742204B0524814B822F1218C248442561A24082382022285041400460825821218924445F814A241188356411A8418F243828429D324BC284421619F00124048014501248C02406288001004002A14088141447048F1248AA0C210044810021CC1241880082001
-:805C00000848A5215148840081A01426F8654B40011444471200101801111400130200101204488100002128240000702A01241002000088008002000000DF940E29022D2228217111411902212110161422122262444608424002484B214C4632C42608444004247022D4144252242829048C449142860241A1222C188888A2829EFB40D9
-:805C8000011342922125411194281400002002212248844142482420B414B244022B82220010448202C0212125243242002C08882141252802258808F02633242210D24242440410012125411116142302502442004008001092448121410050A1244722414002008C1421048002200880A2286EF7244611724866685022150411003724B7
-:805D000030250028261446022454508210022302A4441D4284150829441445542C2C54843CA8584841A1433214904443041200412B14CFF8080080042004212400201221288104814012B84D1304424C440821621544442894442860843024141284153441E012042F826881833264108204AD324FDB0D184411B6411401008420022D42B9
-:805D80000000242604200400100800000000001A0220944241822008400240280440083FC70C191154781450321944125128B022042D4120A8212A14440C5018534608C04E0021C044411148254414A143644B2445D9123C4E1B48148C4845E482781218A424122140E424B257092F2804E041120641000011214125011054222221604459
-:805E0000A4442442902810B826042508002244C18424481892801482C41260442E48858404488184AD5A40C2441100212187245021000048002261614800168284022440821484044824000081482448002445020080084244424470C3021100281495141911081502131205415016811006814110924C4AC24200210041418514420442CE
-:805E8000704204880042415042284604180081B0DD0C82178128142001004100210000102102256444280044606243224244144218845248A18002004221001131260228304C4487424846E2640851284044081110012414401A441204441441488054244D42108484C4444829C64348481502608464111112411021030020E48508005022
-:805F0000844F6F07002115420447248C4492241110410284400800444004000040060000441044420A44448880424192440092902C0040F19D5E400A141031238444C4001902E024924410024180042180840480044642242402813C044548842112024821002280142214220121705348C2284112260416080000241044193141140084C2
-:805F800000222F821481221408A100C54224E2140216022A04336411001C2CD112044344144424012B2485542A6D4A008663221002241134110010091006280000482228172211630200404102001C624414004C54242C283442444148884008278441484AF25FF3D086229344128C7884C2142C42444248042815124188124311012304F3
-:80600000493115884912410440034008190421214440A124C01486814281420423014098224CF1EF3224218E2577231712A5DAA45AF328254E512B2414C5157142552215952D5D214665444A54446E4223565419D284D426E44444F46242144AA224E504F74146724712611453F14424246856164464224C92628B516B5146B44854542C21
-:80608000F4D919144B228F2841F114261718A981714858114D24C02121F02A42914575285252508461C582D744D251A1644F44D452624447822F24041F64C44C441F2652A22C52488B222419E644C1822354111C7343742591244B844B946358C8E5C22842C7873EA750717B4328407411354C3D47C13542119321157A445124839422241A
-:8061000064800466528249362A2722668252224145548261619415056D48CCB41654662D418A84F85282394C7342E24404866484621847428D6A44EF250120022240030000814002C048280015088450822815081508844008000014120000200882800400001242009D3FF086264FC543F61737BD8BAF23FB464EFF665222BFC2028FA265
-:80618000322A85DA8A5255D57D28582AA49F94F448488CF46C6EEFE6F62A5E46FE4C2EDFC4F4686C2F46F6484EAFE4F446466F46F642462FE652EECFE2F65555CF46F214545F53F754166F2636C62F37B6F24CD445F226246F6CFC46C44FC5F9646AE5B86CF244484FC7F632AE246D266F57D362F21775B5FBBF3F7F34F46B6E55F62F2DA3
-:8062000065F428282D2C55F64A48D55D454732F543FA41416F44F4444CCFE7F766666F7E7E44FE6C8A7F42F46466EFC2F6484FAD4E2F34F4662C67647FF656EFAFA2F25F5DCF47F745457F67F757566F66F646442F37F653644F54D447B426F2C6C62F2CF8C6CEEFE6D6CEF16E244F84F4743EAEFB242D222E6747627F73738BFB3F2FEF86
-:8062800075F46F25C5FA2F2EB5FC2123BD22E5FE4A487F14F44F49BF92D22A52A237146F4414F8645A67245F76FC4A267FE4F644464E46EFC464344F64744EFE666C4E446D4475A7334B22CF42B256F564644F65F566E4CE843F17B7D2FE45445F64F466466F6EFCC6C4CFCCFC6C6EED586F86B464F4647CFF3D48F382262F33F716367F21
-:806300004553BBDFF3F25F4BBFD656FDFFF252DB1F3252B775F64B48DFD4F44B4A6F72D27F52A7B7944F44B448F4447EAFA6F667E6AF64F6E76EEFE6F662666F42F64C4E4D46DFE4F466646E66FF7256EFEFC3F32C2CEF43F347436F66F656566F4EEE4CFC73737BCD7F54F4474667266F2EFCC2822FACFC6E6EED584FC6F4644C4FE6F7C0
-:806380005BFC00302650248445435824400114400664116C020046044E24604421282142414220140245411804450334400214483440A2416430486044F0E76F30244424112444404442084002D0810400418024043022100441282400422444410048A0414244428001002450228C44441848F18D97E022F4112487221F417248F21124D1
-:80640000A7141D24AB141D24AB9419F24A9251AB9443F24A914B422F147B25D812FB24481CF9244A1CF8264A1E214FA264192E4A96E5A2E449C24A1F49C2421F4952281F4932481FC9324A1F48B24AD141B24A9921AB9451AB9443B24A39242BB447822B944F8284F9244A5F2F0F2E531D6C8F32F511248F2641F468111D64AF36D141E27B
-:806480006659412F249B258F143924AD914B42AF147B2598BA6F82D41AF924588D817FA2FD18A15FA274D861A287592F92F498252FA2B499E2A2F491448B421F4872627381346A1B28AB161F48F26A941B28AF649325AF44A948AB3443BA427B24B8425B8629EBA2F5D9BC4028880400000040040000000000800188000040012284800458
-:806500000000004004000000001028F4318260461284154C447522420551848448C414272200F021428142C1860661615042104804838142426188155441241A04ADC4410000490467844F2822018400F03ABB00374A10028688C818C01800D0123846C324088D1488200A00220060424426120444120021100141145A0889081694822BB4
-:806580008120618C43054B2116019F6F0568CA13581444342A8801591104667289D64174421402C48E21258A5C844359228612046143021D26449C9124166284864A45045270816C4441892852244374827248C4842F84C844A4268421F1FBC1502415444208864C52C14018480800268808184820020043020050480000100140111142D3
-:8066000034429200208128013218122001F0F499804404001508110021200400001004414002A410048400C04800908820042001001008000081004508F0AE510050A4C90110121401008410568461450883420C418100100840040021000020210413C418481223444858488410C21A0040FAA94E0044418901A40000004224401C1404DA
-:8066800083421404240021410041008C14020020044212421688842144084048423818214140F2295A2004A4444001541124441008412440084184404408841008840000840083082001100100A110480C00008490185B63100184810000100200104884810412124008504261008421440044000084818B1400811220140200801108C07F
-:8067000018419F3105605200535134160818800810020085C14481280040080084428908004828C024246014244A012008400221812849E84461842012F8BA880000000000001810084008860842844C4404002100000000000000810084848418124800001200281F5D0F144712104854251608160282120084C018428C98184A014C44E8
-:806780000425461442C8428618046044280024304946A8141038888146622120448832148F4481048C61822F17020081C01100000040420841508146042884811008004008000000430281C01284001810082C01008890188012F4B9250000440000000040080000104818080000441048080000008100122001000000901816884108F0B5
-:80680000F45A0010441808101C14080000818140180800100800000084000000000012810020C11889819118002001844D720000810000448144000081814008818100810000008400840000000020010018892101840012830189F1383A5088831414440850480045544443120800008424402801820044401841088558888304400820B7
-:8068800081411804220084121889C11824001AF13F92000044100400848181000081101818080000840000000000000020010000000000004018F8CB8810C84842480084004044C42422280000002502A921812988080014111484848C24840400004014C4242228120000502210F2878C40084C040000005044800200004440180218800E
-:8069000048080040014008480000200118441228001800008421121F330B000000000044100881810000008400000081000084000000002001000000008400A0113E2940040040040000100800000040084018080000000000000000008001121800000000F0F55E10142824040010084110242202810000242430181282821008101111A3
-:806980000881424200811800124141222200000024241AF11699405888484800000040448482021018080021211818888800001414404888840400001250484C8182020012400821215BD700411004000010080010080084001008008100000000000000000000120012000000F07B8A0000000000840010080000100885040000000000A8
-:806A00000000000020010000000084814008F09F3E5044004504000084841008840010480C8141100881840000000000001088A11118108881010000401808F0DB280010044004100881400800848184818410088484001008000000000000001220218121810118844008816FD40C400400418400814008815088810010484858880010E2
-:806A80000884000000000000122081210100200184810081F0CB4F702612A6122B119012C0122582E8B17111A1889659888F18F44848D09114815489C14E488744C5B444F22424C024805244412A722612A2122B11882B98C0922582E8317119A1988659888B488F84048C04488518E884F4F776F02622241812122180512229C8111B116F
-:806B000019E88818D818242444591148C485C8488F441494244322420428444584F222222418121A388282182592829CB11191819E98818934484284804458888CF4D71C000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04F09
-:806B8000FE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000000000000000000000000000000000000000000000000000000000076
-:806C0000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000000000000000000000000000000000000000000000000000000B6
-:806C80000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000036
-:806D000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000B5
-:806D8000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000000000000000000000000000000000000000035
-:806E00000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000000000000000000000000000000000000B4
-:806E800000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000000000000000000000000000000000034
-:806F0000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000000000000000000000000000000B3
-:806F80000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000033
-:8070000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000B2
-:80708000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000000000000000032
-:807100000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000000000000B1
-:8071800000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000000000031
-:80720000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000000B0
-:807280000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0030
-:8073000000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE4BE
-:807380000F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000000000000000000000000000000000000000012
-:80740000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000000000000000000000000000000000000AE
-:807480000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000000000000000000000000000000002E
-:8075000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000AD
-:80758000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000002D
-:807600000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000000000000000000000000000000000AC
-:8076800000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000000000000000000000000000002C
-:80770000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000000000000AB
-:807780000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000000002B
-:8078000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000AA
-:80788000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000002A
-:807900000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000000000A9
-:8079800000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000029
-:807A0000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000A8
-:807A80000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000028
-:807B000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFEA7
-:807B80000000844100001004404404445048100881000010080081000040484808001200400800100800008FF608000050484144414100440044100400000010041048480881841048080084810000890100000018848189D1CB0800104844041004411004000000008100004048480800810000000080011008000084801108848DE70079
-:807C0000000010040000000000850481000040040000818100000000000080410800000010087FA20F000000100400001044040000000000000081000081008440080000000000000000DFB30800004008004400100440140400000000000000000084814008840000000000000080F1B6620000000000000040080012000000000000000F
-:807C800000000000000000000000000000BF1A0C28000000004200001288102192144841202802C044000090880020010000000080140400C088008C04EF84064C014012091D28C19082204491861024B28401830482430240244481048481408424186482264A081E2EC028428440A88100284280344418004F9F051200100926114822AB
-:807D00000C422482908428512289014141822241100100849088488844842484D0840226284408841A1C042242806C44128C048F320F43020021104804004011840120094924248802004249240481004100A0128C02C0120000000000008400009F810A000025421854810000241142842C1204C08400008C04840042260A200882002494
-:807D800044214400000000A0418334142001841F1E04143426042E4C6416A1214C1268241270180240B48811C4442883044C120242122F449244690242184441154212E48209268475248854A2D88418844C61C28800874448006F22071110022782A44591182881460230181048329C414994244608412184488C11421442180244418607
-:807E000001100890148742488429118801188982618418441810B82701109124D02444849121410012241123044C020088002280046046424926222421082450423A584263820410220C104844A4841034484200F7FA002415341813C414004220A12425428284A8410087248C421284181A0420248508895522282C810528688AA15883B6
-:807E8000028722001002A9214438820018E084F816DA8001834411048C04840041302880228813840324C0112282C0188200165442400848280000801C4424928288400200A01840D822F25E73000041100800448412008001800182848484880022008C84048644064400848092120000844812804804890280019FCB4F810185541C42F8
-:807F00004C618400411238002984A98512E0814208C19C98284480A384488156C61E4024212122C248989028C8876260228C2828D12281482A98281A08B028F8FD9500501212454108304810885422842002224C8194A284408208400818C220D424885222440022E0262901004082048442410020911848BF83052004237318848102805C
-:807F800042944200508230420022484190440080810448414884284C822202CA11229224440030842188662408281A18042CF8685F40024018011210711481C5821A78446886A04110182228218184110264248A8199322A01284C81498401442CC81480822104C04280382467824126048504FC0B101458142391288145018284282200A5
-:8080000022702804414227422021A8428024A282444908E044088008206628E0242B3442122180E1441102184A410240B4770B6822448064484D4127829301308B42909423382A303622252408430841482282A04280080042D0848C0E2818218C2128A4188482221848888C1864829A92687FF1091C4105221145820216484661223442D7
-:808080006224242C082C01484800322142100410821194248220880400C02640420224885A02840026088C78ED0E48D01202C42712124122212A2124541C20268402422210221414C22282482810C222282829016902433124414241A06180812821820826041A0820747A03252602812A84848416344140013812604148482058424B83D8
-:808100003082808821218189A1182C8C0821800198E022088282828212888144924A092628FC844826F23BC14004A1412011082C028D21848301814481449024128006C044182504484148301252B04C014C923420944418188082E424816424E064018741C0143A048F150E3D38C06111288954143D5A4394284844822D2286A51482185C
-:80818000B29846841AC2A418A086A0863062821CA428F0824828214240983284888224860C2902413022242C46281842F4F982144F447424521ACD1A1D414E28B9F64A2CC7311425F281824A1CE4287442C8424C5C282A92644D244F4148C2822C042B411A9912982763422B541632228ED643A24C4D148E228E949E44224F4228CCA8822A
-:8082000085E624F14C244B884F4132441EC48F82DA482E58648FFD0E2A11F121241D252A92474B135F13F4223429E253324229F3495C6F4169232B8567274BB44F25F1E2142BC46AF564C4474467473E4286A46C6EC64F6526E42BAA224D441E223AC22447414AA6C72225781634CA388A248499C28AF922626E822BB2C7842749478A4F40
-:80828000C1B3E8BEF148F213232D648423F25C1C8F4361F47041F8758C9F84F528699729218F9692E4CF8291282363482C288BA21882284AB24432229A22AAD849E129E88EDA447D4438828BB2B24D1C2F24F264328AEF21F312C24E122F21B99224F922425E148A7598AE324931128BC6844F450A4001001440220182003400926089201B
-:8083000009821002000021001002219088100889088110088100008A44028100FEEA146E642E2195FB3352AF87F77476AF85E414F43B279F36F429322F23A3C4CB88AF2CFA66263E22EFEABA7A7618A6414F45A4544B664AE826D146F436F4FAFE64664F42F644746F64FC56644F4DBEE4B6C4F81838BAFEC4CC4FC4FC7C6CCF4EF6687A1A
-:80838000EFAEFECAD88F2EFE9898C7E465F62C2A6B756F44F96EBC8FA6A399CBCE4F4AD9A4F863F61467636FD65499DFC3F3783EBF73774FDDE8F47B66FF76F62C3C9F13F328E88F69F9CA866F4EFA34268F8EBE78F65C524F24F4F4E46AF57472CAA88E6F43F136F4BAF764762B775F55FE56D46F77F6BCFC4F6EB584F818188FCBFAF4C0
-:80840000F84FC4727CFCEE746F23B3A6F39CDC8F2CEC63FBC696EFE17B46B256B776F77E3CCFEAFAB49ECFCEFEAC3C6FE3F9ABFFF066664F7256FDFF73F35B599FB1F55E59FF12F73B3F5F7FFEF9D7BF97A775FF14F49A91CFC6A337CFCAEB87E7C2A9DC6BD449E922DF46F864A66F42F216764F6DFFF4F64F6AEA16F612D22F26F4F6EC4F
-:808480004F2CBE92FD3434CF8AFAD4C6EF45F57C644FCFFF66766F6FF6DAD62FAEFE82A2465222E7E82F46F6E6F6EFE7FFE8FABEB8EFCFFCB4D48FEEFD43C3346F67F42F6595FB3E26EFE5F67F77FFF5F36B77BFF7F777678FC3F779718FA5FF5F57EF59F9ACBCCFCDF9E4D44FCFFF74FC4F4FFFE6F44F42FFA4F66F48F864A46F43F3B62F
-:80850000764F6FF7F4766F6BF976F56F49FD73726FCBFFC4D62B11CFC3F324244F6FFE7E748B276FCEFFF6D6EFEEFFDAD62FADFD96B2AFADF13A1A6F2DB5F2FFE6F66FE5FFBCBA4FCBFBFECCCFEFFFECDE8FE30B0043026D13484382742463812663896081648424846C024C22C1246044C02429811202490963024B1280094D1280A841F5
-:80858000419A64229A4482049AC4268A8422D14822F94824F0659DE01241542A206281A10020044200C024484A028820040044411A3224A04216840400E04822A421C0248016220882298104431108005014DF67042CF4112485F2112483F41124A7241F41B24AD141B24A9921AF3419F54A9143F34A9143F34291478A2F14F924481CF91F
-:80860000244A1CFA244A16F1244AD6E1A264592D4A9E24ACF4D1242CF4912485F291248B841F49724AF28124AB141D24AB9419B24A19B54A3924AB9443FA42924782AB944F8284F9244AAFF20FA41E648D431F4132481E24A7341F4112DA41F64A144CF24AB341AD314B43A7144373423134271467822D114D581CF126CA16F124CA5661D9
-:80868000A296D5B2E451C2481FC512F2916C25F21164421F497242D241A2141D242F44D941B2429B212F6439248B9443DA22F1A44889312629F9A45ADF38048400820000000080020082000021800100000014008480040000004004280000004210027BBB003032C1122E4289018D2100C818446041301423C2A2CA0260620010021249FA
-:8087000023060048200828262201901481AA012084048A4408184A01224F164811A421B021014190622018A812888AD1281141948200A0341A04F04428004CE444022126C44410812222A148422AD422AA844A880C4280F888248A84A184CD228A0285D184E41545016E1212998181741282322850842A28428443052428A8272452124F0E
-:808780002102AA01604476C4141B249044811442828084A46124C243318CA82A04C2CB24481882ACC29252E083F4868B1004224C024C12884421081A8429592812644309802A2204D08404210028214C0280842222A1822825A228A0484212002088A8488314840281418F5E0140742212018C82C144224420010011298304128B141289C7
-:808800002802002481108815A8820010424882028C146288202824080084004400200F2601184D122622C4A31903810011960C4B49C1238992444480460849F24226002127424B829044C8E24942266213836411228B2846848214314812D028A685C03DCAA2941644F477A3902140128492429818224400A08160542D2CD2C054C120C6AF
-:808880002800235422242449A21C812624AC4A2250821E22890490A88C2482088418F028424A089D1443880CF061F300641A7211028C621279068480115148A01812212820253188004362424008844902C200644428142816B148126248206414C800301820A224124311F48D4C20442494254400490381A2C36684008A11A41440185B20
-:80890000A499D128286818400885042211C9E282E12483F4812C008A012711336843D084018521A8A48C08488880239132FD8F4002521210C882812791901243416212812218109C24D224284A83229C524C32821014388121248148108114B28414880489B1250843420A60E41287241084D422E58904121800182188004A0120381840E9
-:80898000A32821138801C04400C441200200008018042A4141046281838404A048400818A2380080F8B53CC01218C02116144862C2A37148223858A41C11E812A98118882E148B18C19B436E882285941441234A1824424268222A41E4486211484C097048E1C2915822D01454288C98886CA1498316A221E028F41819A0484418164402A2
-:808A0000204121A112284A4808D062825458842714404482D821246482100484824322C1C250182834F044821F819682487091088688A842C048289210A414229B3400441623040000A0821842821219312218304489220C218044A84980212184876141A021003A54486082400C2011486884AE44418002122282C546C225182061111415
-:808A80001904628883342882008988082A84282102284042028444264C483488282902141544224134149280A414888220012A01004110F45175200844261C018001A40049628120220132008113A2189C4E8144681212232421A442211024A112448B48460C1D48003041125374384408584335C42A8421F1A4D7C0162299149158388176
-:808B00009018230288A119141862122AD912688A2A0C29480886681122182E48828220088413944881812C22B28B11B218B288D12142384518C014426328D822018E46ACF4DF4200148120822401288A9124400814172B002B410094124A22485881118002302818660AC021B02881011488484344814285048D222008828282149F734D71
-:808B8000220212224001802124E1C4016082A041002A442A194A08802801C41225C815C4C028128C2408416044E02228F218C4899928814904838102A025224AF239B1002B21211183E488518146088008488A820588234218082288002810424862821902146044908444198882A12828002100128084482232120088AD13146048502445
-:808C00000000C012848621311828441502001321448108191C92411B1410B492066821128D4122141744821E48244E234481A64A01142210E8248188468444F41B2AE08144C246A082284AA143259822424C968168880082860888902AE082011A0C80A44870880116548449EA4164878242284881D2A22504284C8888A86863324420982B
-:808C800016F0B8C524474327284391692D41760189964A89B142BA68F24C388A9818611D81929B48CE888FA88343C818821B442CA1148D1926FC22561F88EC4DD4C1DD28E5427545A4289D494F54F844881E24CE644E434F4D388A8B1A8F1A9C14CDC18E548E248BB85AA5B849E14AEF1E71C4F2A369141C35848D1C26F5E138A88F84A1AB
-:808D0000111E286E82CD181F294DE184E184E228A9112E321EB88F4264139C7CA1B1889A818F821893E8118F25142CD788B328B22292222816FD84348FAB248BF41C9BAB2A8D187EC82FB458824669454783CB8326582225B21234162CD248E53C092D221F43533369311899F11141422E122B29AA44A8C88F11B431F831292F2E928223F7
-:808D800086823CE889BB22F4286886F3584937117249E38D9A3A43622D474141BE59DB123219D368F76C1833F211882AD624B211B6117189D481B148E284F452464F4AFA6444CA2AF414C42AF8373D205414901480880440420812A04810410200000010021110028810021C082E812002224002200186880220810220015F8544F3D342C9
-:808E00003FA6F2292ECFD3F758D93AF359186E22AF84F558C8AF8C6C941F11D911D131F226ACEEE12AB242F4B8B81F1BFB595995A14C4AF4E1731B455AFC58594F42761CE485A5E48BC48F2587F171348F42F22C6457646F61B1CEFA4DE3BB268F28F28CA81F99E89DBDDDFD557D4B57CF812DA3114F73A3FF4F47BD84FD3486CFA64EF31B
-:808E800033122F22F6383E8F93F759791F13F359196E32AF84F5FAE8AF4DFE68619F96F281891F39F127AF2F25AD3B2BEE8F83FFB9B9BF96FE39197AF468489FBA7349F96B696E68CFE2F6262E4E496AFE48EA6FC5B744F784A49751CF59F99D1AEFA3F3EEEABFB7F63B298FA9FBDC949D111F9AFB9D915FD5F57C38CF81F98C184B9C4F44
-:808F00006BBBB2FF64C44BBB6F67FD2EEA343F15B6317719FE37353F11FB38385AF1683AAF84B5D2FCEAEC7EF91F15DA99F15153EFE3F972D12E12AF87A7DF1F18F87AF81F92FAC8D88F84F461EB9F35B478E717F67C48E7432F95FFDCFC4FC9FC646E26F431748B221F8BFBA922CFE8FBDCF6FF7DFDDBD1CF69F8D2A41F15FA59F1DF1C67
-:808F8000FC5DDD2E948FA27D16F414144DA44F4FBF72AFD84F62D93648F3F1733F73731AFE6F3DBF94F7F1719F94E126D78AF3BAA8AF8FFE78F99F95E288E82DFD2F9F3F36CD122F87F7D8D81F98F821A91F93FB68788F86F471EB1FB4F463691F17F75C7EED6E7E78CFCFEFA7FF66662F46F691B5DFD9F895AD9F2FF29CBECFEEFEC3F70B
-:80900000BF9AFBA4B6AFCCF95B9BBF95FFDDD19F95FD3CBCCF27FFDED26BDD1BB9FAFF74744F6DFD64D6EF580722B022012382C411482248C0481440218822892298288289028B24110089024A92943024420018F02412844B828C146488608914484484641648A44846246144F0AA55100441C0118440C81290182889088D13112D1220B1
-:80908000240119C411A084109852142C5548A0241812211D2422444621213491421AA282A01419242422044A032B243220924CD024F41124C5F211248B141F41326A1D64AF24F18124AF24F91128AB9451AB9453F24A9353F2429147822D954F82C4915FA2C4814FA2E411F2274A96E1A264592D4A9E24ACF491242D421F497228F391247F
-:8091000087161F49326A1F48F24A121D24AB941B61AB9451AB944782ABB443B342792498B24F8394984FA2F4F633D0B6B41156341D6C8B141F41522A15F442121FC8F248161FC1B2489A45ADB213D2783925A97925D842F927482B945FA285D9A46C117FA26C194F8264192D4B8F59C2CA1FC9D2A2F4916487321FC974687191746A7281BE
-:80918000F448121D248D961F41B24AFB1528237414B84A32342B14478129FA3648A9F1A4581F5708200800000000002800000000001880080000000080040000004004000000005012F0BA3180424442D218111148420A188C122814EA12394A2260414A684214812A281432248D92C1003848122A01224C0388E638244582324882846085
-:80920000844C2624A124782A0141481FBB4A42A21A2A01303488A021E8602430121068484183C328132224219242C014814418418688C418192244041988932111C2C6C881881332118844004400826018842FB34B82B2E4211332191C03248C922243618227824289F228824D8830382E148E232A34113638A2C26941DC2848041528C295
-:80928000489921664428130BA88B284B824D8813D28424722801814C823414484AE228018621F1437840020021448908188A0448241221132134244028140420042062418C4184288581820140A412114681642482881388216844480028122840C448BFF9060082800800880000000000000000000000000000000000000000100100112E
-:80930000400170E7058012478491282661446D228417128AC49210E2819414422722C08580721148A1488546E814B211042788811844884A12478491282E81469424842382C4118078129A1429E42228C8141A8862884FDE0B29628111895144428D65224D2830221D511A483A8A484B169A828841071E2883C44447181D22369818C0487A
-:80938000339C48184E242A28911348474289E2144816C64815A1158B8A40D8223444296123888E148D885A32846F1E0F008280080088000000000000000000000000000000000000000010010011400170E7052B122841282144228440A814480000462202128F1413044885044420110420A4526022004002221214A08648888400440022
-:80940000802203F076B54004228153426AC1224C0628181622119D162742124982C6841481C48A44D18222C224AC213222818044042AD161B821218244A4428B8721822412418B25701A86F2244881418D242E447EEA504220125812901483220280859112450162292282C36145419848490425084902291282240326021217482981A212
-:809480004243C1618E488848701218E48245D4820183262242CC241F8B0F3222412849426E826044815A020085C214611844424D9800418648312422124D188012888444042870210200C032628882000045224244381422427F244362842212C04418484421260241482A012100112812218B418501386F11A42489218401441609812104
-:80950000D14120840484C96289450161004B4281E021721802B048F2FECD400A830410188A221114CC28E01228412112414804238402901CA4001290481814288B4318301A1A6242C01814489024284243814308A24092188A013FA60B504145C13181450121CC240400248C04414724404A6841002800000018A028004120425418844189
-:809580002118400800A188182321248808F0FEF2602454C116914C8D176062C443423828C0938C4481523494EC02418C561822C12C25648148188B144188284E321841C921E15264848D1415A816928C022144893168242AA94181892119F8A7FA1082C21128008724A014482120042C0144480089A141180026525822800120E18201404C
-:8096000054382843420810421C180149C412224C688120929282A0422FEB04008441222C2242314226922415524124121642440224831114B518C242001008A181A1442126D4424294228084828182042D4881A0812602442881288B4228F0EEE900444493849414108201006220028CA4412A0541421042145438122448125848188112A8
-:80968000E08102281614628442A08518308C20A4241024618880012DB8008311241108467822140858004110014922220213828114322963012100114A92414418121C6241418C2284042890224624C44C200856843228A04223E21B09806222811A120A00460C2D44184281611C1112588200A1414842106881408AD2A441E821021110A7
-:80970000E1840260823810082B188C0145B828E1810212182088B4BA09A200254208414400281982052881608160822031144008186E18008001424315848191144228A302A018414221E081241212046848216018DF5708162411280544282443D242218141D1420228430200423022414CC212112428A012003820D2A502872285021854
-:80978000128448285C012890128002002225082E850028480020A12100100812415242621812C582621481008C02424A018042040000A0140048008C080080082888884A014AF223D66046004145321818184723400224148F21446D21C16C44245594482CC4286691442064833042102296421003212004183812226AC11141C058848BC4
-:80980000484688018C11F8EBDB60814448106226C18C14E82112781826E2244344722148022C014229228241881A240121222711104218C2482548462C810280440449429218A0811800922348F44B64604282412F24C42821C449D242B424C274271180F1381477138D746F82E14393124F81D591E111F42824457843F12234CF81B53256
-:8098800061861E1283C172124D5E45C4111F13D144B348D482A5255E286AA511521AA41A437448F238142AE18262418D288B312AF12891228F14061AF63C34281A712CB214B21837228D322F4171227241F83257612FA472487863EB41E4A4B42432484B224FC4F1461829B438725D2892482C3128253248BB74F0226236D62A721853E297
-:809900004F46B222B42835182AD684F621982B4583F9141829B69A82B14C8DA18A5AE229D684F69FD1901450E8C5BD12F4285E67221E5F4783872483D128B341F25146416C31148F241272185A624E441B222CF46824EC44512246B81254826E71678345B672A211F9528427824B2287218901284AE828F14A2245D8C1E14844EA847C9C26
-:80998000A4227ACC4A8B48844AF8968A0041842184422004421214004034110000441100100100000000140040020088C0828028C182000000004775001E384FC1F1145C1E568FA3F652486AF26E7E4F66F5361ABF27F772523F34F512326E622FB6F66656EFE1F17A7E2F87A3261E51CFA7F426646FE2F76E6DEFE3F63A228FA2F65A42D6
-:809A00008F21F16A62AF26F37A764F65F31636EFE1F21E3E8FC2F26C3C8B548B464AF748288BAB9F1ABE82F91595CBACCADA88F1BC98CBD58F8EFCA8988F867528F8F4ECEF79025AE585F73C3CCF43F7185EAF23F6526A2F26F326326F62F37A7E3F23D332F74353AFA5F563623FA4F776566F61F17E7AEF47F77B789F87F764726F42F610
-:809A8000E7EAFF87F73EFEAFA5F4786AAFA7D6BAF14A6AAFA7F7727E2F65F75377EF71F33E7E2F82F2667EAB546E484AF5C8C89E8C3F92F662785D9D8B9D2F2EFA2218CFCBB968FDF8E88F8AF96A488F87F5ECFCEF3806121A57CCC5FC1C3AEFE7F35A228FA3F63636AFE2F3221E9F27F753721F34F51A12AFA7F77A61EF67F55E5A8FE5E9
-:809B0000F572382B577E51CFA6F72E6E6F64FC4E4FEFE2F63A32AFA6F75A4AAFB7F66A6A8FA7F7727A6F65F13352DFA3F33E3EAFE5F1463C8B648B754AF4E8F82E361F13F74A68DFDDF5549A2F83A1CE4F4BFB5C9C8F8EFFE8F8AF8AF148484FCEFD49ADA0558F43F72C2ECB37CFA3F37E36AF25F32A7EEFE2F36E7EAFA6F633323F35F509
-:809B80004753AF24F57F7BBFB1F77E5EEFA7F55E5AEF46F77D591F17F56C6EEFE2F66FEFFFF7F5BE76AFA5F47A6AAFA7F66A6AAFA6F65E5E6F66F752723F33F71E3BEFE7F3565CEFE6B76AE787A3778F87F7F8FABF9BBF5AF78D15CFC5F93A1A2BDF4F4AFA7CEC8F8FBF28B1F8F75878CFCEFE9EC2100449418841284268228424160848D0
-:809C0000E081442481028922F14824800281214A12A224184222424B128041A81284E08104206281E08144A44160884C8204A024F09C2AA0481A4242D824E181024465A221407842034C21F14221F04212124CE2814471243A481128290500211A12869242112722161C84941A2084128816B2148441188AC414B0482A8868129FBA0D4D9E
-:809C8000421F417228F2112CA7141FC1364A1D64AF14F11164AB9419F64A9151AB9453F34A9543F2429147822D915F82C4954FA2C4815FA264114FA264192E4A96D5A4E449C24A1F49C2421F4952381F497248F39124A3F48124AB141F48F24A921B28AB9453F94A9243FA4A9443B242792498924F8284F9244AFFA5046D4A1B61221FC1FF
-:809D000054121FC1522A1F4152181F41D24AD941F26A9149F24A9113F34A954782AF547924D812F933482D852E5A5CF927CA5CE8A27588E5A27598D5B4F49825ACF4912CACE449D638E449724CB391326817482B141FC1F24A164CF248311A724A17F4483422AF44793498926F83949A4FA2F566E200800400000000A02800000000210049
-:809D8000800800000040084800000000002800000000003F31478102459218258107721132208801008452124C618100C64244469628A014251414024C216412441524611432481224488C28C5144250422842206242328CF4E998008A03459148612D4841818998483281A11698329244442062C21244C0286844412238839224C8288289
-:809E00001283210223314226042283B911044008C28C084E2844881482471580A224F01F421CE46295484B42A01A49A41A872290282B218B814614C4141E2A80A1492183A842C120341295128434184A280714162234226840B29CE414A8124C0180C4284222244B82325E823F2507201104850220511884818041880120810170240841D7
-:809E8000444722442342A4124C322428884C0211C9C12430114A4184810216280483042D8482C0484C0240F8C4CA10820220022A81040084000081902890182281104832482004200218120022842248C111221221120080044844304880024FE109221635244C11C6128112124981E22508C0113843329818208AC544C14C86A2214128ED
-:809F000016326816889688262402478121004AC3582C64142004848F24C1A4166281E084028014B8644D0222284361421820044901CA0190112A018C810289A14242C1CC2442488442821288044400412122A0411C042D412152402895A2244A11342848800497232062514410022F82212101228502007028849818A02812450828B03281
-:809F800004421246288392982A81028B128480D448628162120000814684110842812042F867BF4014420485121162481410142129384582D01461A170914848042849092004250148824193048394281214A85CC148C088C129728881852104C022504212F03E1DD08201100A60424038424D9842F02216124C7214D82802490244188376
-:80A00000049829A1218D128C8471221102248122C2214A921C200289024B21325241008D14004CB24208813FAF061004324844B08A2201004001800822420081141048081128848F4124020024174118008C01211800000045084885440848286E4F002544943A89546370223411211E880045C354A654842C233162887018240450821248
-:80A0800099E5A214794A84240811248CB928A1255C9118442D4838E0821142915418461824D44822E24408229FF3086B180000302484814890412C29490198559828418D1145081588528412221022E1228102442984523400842AB81102848908189E4800441608504AA014843F3A0B001018088112818C11382987121C911890181A0214
-:80A1000030588C44C84800200280A861360880040012838187C24880014A81A11258200449011800AF4502281428401128011110A4180090298008110012110022C21A3A28148180A281122021018068812301008414873481C01242F0244800625F41098210084A62824284608252841644080084000000000020A41411E0840212128C6D
-:80A180000181A01200488840840100121230324212701709224C024400D04122012001004110A48128A0124800223A48280200002814004A02404108284D4900280083250223924484006F8E0600840040248221011008181289981480880100200212828C0481128CB1B804008001208422010080810148002120018F9B078C0110082AEA
-:80A2000014889121222826C1110088288841890381184588638152813091128200608856C4481A420882224226081880C4480022424CC218904245F85D6300404511812852410082828813110118142A096668148400118450813081148E48000028811048C212890116CA48134118314A240042240018FF4C0C20082604124C0480040030
-:80A28000002220022008484A0300380028824CA448424288400C801422120830484800484418422044E112F46E4EC0181CC244200A222006224604289420022624892213022A018C2CA4413A98480012C088E012244481188844A18448460E1C0224404202403842F0A2ABA021867125584117121A382843E11743A8811BCA40E11191814C
-:80A30000A0182A29B8483318426E482816A1327AE281B2E8C6518F1A68438CAE11DA04C05481A06D8CE41423D2C1344A9F84A415BCB242A4452F2526D126F6482A83641412BF9D0E221B28008AB648F244748752B038C7648D188B1199014CA3918DA54B281F82AB41221A351822848B41888E111E88824AA15872AA8469452AA2219C815F
-:80A380001191323258834898124819C518258811227432041E114B423F3C0118435248CD288426489831150826E811D2952A518926F82828436341122E884E798518052A62848D586AC8119BA515784898188BA4118AF1181987861287888F227978D28AF4C8285A813514953158830143E224654349E58184E484F297CC00004501004191
-:80A400000000820014400514828714501840018D21000022811001150815C882112215081100C048240040048304F0A745A022157921B921F249488F86F558589F94F418498F87F4D8C89F9DD69951899F91B1A1F899988F82D299B8B1D289A8229F17F67D4497821897911D11BAFCF9E99AFD88F8CF41B718FAD9F19AF8D4851CF11D5D69
-:80A4800017A13FB1F173F99F37B759F5E9E99FB959AABF91D111D111D18AD1A8F15E5E2F23F734244F817118A811C5FC3B17A0221F167629A9628F84F468788F85F769699F91F578788FCFFFE9F99F92F3191995B921F299989F93D399B921F3113ABF92F67179FFC657891F12FA71799F96AADB9F97FF91919F88F3547C9F85FED9F91FA4
-:80A5000015FC94D585F91D3597A1AF21F1FAF81F17F77978AAFE98DEBF94F458781F15F55939818D4AEFC4A4667E647E32AB455AF15C1CEF23041AD3117421F929298D218B128F87F531119D718B578F4DFBD9219F8853119D11BE998F8AF831318F81EB1BF36888BF95F12878CFD67528D8117818F8383897931F13F2D9F1FEF9CFC2F657
-:80A5800058E86E681F11F494C49D18DFC27218F918881EA89B378F15F778F88D8EAFA1F143219F94D4B9F5184A27256F66B752F574344F87F55A581AF56C7CEFA80D1A827629F9692D9F94F668788F85F7383D9D798F87F7F8B89F9FFB89B99F81F119112E298F8BFB2C289F93E31AE387FB5A581FB6F36C6D85A8221F95F7E8681F1BF9F7
-:80A6000029A99F19EB9BFB747C8F87FEF1F91AFC94949D18DF437318B998F9D9F91B35AF95F668E81FB5FD4B498F85E115F4795BAF21F552526F66B642F474746F87F15A581AF56C7C5D96200222202288012601204101148420882221044A02288082912819B1488238482A29840118841884248C041220018C44E181041AC422484A025C
-:80A6800000EF6D0E8A01402C2421460448422810112882110422810084008120E4820826B888028288302810482842B8488192989018111884180041400848EF9E054D421F41522C1F4132481F41324E1D24AB141D24AB9419B24A19B54A3925AF5439252F547925F84A915F82D418F9254A1CF8254A87115FA2E419E2A264592E4A8F4935
-:80A70000C24A1F49C2431F4952381FC97248F1912CA7161F48F24A111D2CAF149921AF1419B54AF92448AB9443B2427924F84A944F8284F9244ADF580D6D4A1E64CD431B2146F1112C63F411282B141FC9F242841D2C2B345F81B24A39A52F447931F84A9453BA4A7137989A1FA2D548F925C283D1A5AC292E4A86F5245B8F19C24A9E2C54
-:80A780004D4B1AD63CE8C97648E3C8F2689186F44A11CCF24A974CF248B159D22AF924482F2469824E9436F84A846783A9F8245A978A4008480000120000000000000021800188000040018008000000000000000000002541F1679A30814100A0414081014628081420020088A01212C902281284A08128209242288800A043184A284147
-:80A8000008848440110812222011A88681D01F0224928443492802008988012021186888221884428C14840443047014384883A1410000411820388283011A022148582081240C1800601181AF6F021562450080071120985C882212888382880288468293141A028A068145A8492E1819249242832268441220A5184A289118102C24020F
-:80A880008C2124240212A4428D1116F891240010E841180800188400100110081884C048D08404411220410818000000E022088901221042A8141100988001200AB0A3040000A021000000000000980000002E48004008200800001008000018001002000000003F2904100414844110844404004800810000834244044140084241810092
-:80A90000000012804118040000C0184008C024102401BFC80140044028014442000000008009404814044F8204008C0481880000008410080012002489018100490220017D1C000014302400400400420084000028000010084004000000182001410000000000001004F01C282428004082010000802101922002002004001004008004A2
-:80A980004C0100000044000000200100800100DFD5020044E1410000810084001004002014084548410812413018200820428408800484904900000000000028DF180B00001088022024880182008118404428010000000044002002000000100200140084008002006FDD4D22021048148802202428818101108C014484528304450800B3
-:80AA0000180087414882430100820042411092490014804108001200285FC40E0045424422010084008182200922000000101118044100002082120400008100000000008002008FB40D0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000000000000000000000000000000002A
-:80AA800000000000FFE40F8004000000400428000000002180018800004001400848000000004480020000001002183F5F0B0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000B1
-:80AB0000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000000000000000000000000000077
-:80AB80000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F21000000000000000000000000D6
-:80AC0000000000200800210000000012000000000000F08A97800200001A2204421002420000228800808804000048003800002200880000000018200140885884F097B5100100800410010000128A04484021064240048004008E2448881004822088044882820020088A0482800520067D1D800200003248114210028001002888008079
-:80AC80000800420030A480034420280280080000000020014028986CF0EFB3400100800400000048A0488004114A0242604400002004428800008088044888820020089A0482A04100006B79001614022302000000420080021810082800B048021224302400440018A08244220000C0128200850418481880C2486F1F4412142283921472
-:80AD000089833343814381A24816426444844548441838848183496182901481499228301884814A1A022626024E12828144400884008C846288848826041286F42B7C1036121830248B122229440828200541848C021008C028100849074C820238002C04008018240200001602C04826348881C2288052482DBA0064282682011814C045
-:80AD800014804C12240441418C01C94888198102848412A4401C1898A4006C8382E2212448180481108808100818901420813CC7004142002220C1421024A41880011E480083528421199148908884228C028AC444100281208429A48296280243E481444888948481464428068CC82244F039ED400A56A8121044128401492802260421E3
-:80AE0000274818144130460080090000805818288304422200000050248A0280220880022412F0DF591001140000008C01008880020048251158842042044522081008410041880080040088008183014054840081009FCB0D1125C41822200227415883012200182D22C38101CB428054414222409824228034482485248204823A888419
-:80AE80009AC82230444A49C888424F88818244B8280488224C01CF4705001412400440028848984308A0844001A5558489410845082483088241820040040080010081104208844C184424124808D0820712484448204204842024080086C4880082200A484880240848488541B4181CA4416800A8904884814400200422C200282002F0B5
-:80AF0000F496804402122130494C6224489012422945024532284E2241414381411228341C304444C14F2432A890181444182C028400428440C881449184004E88C08881888674A501242A012242180016923812301224122381051224821288004125C4181838188031828011022B945838A0211480284208480022444002242AF49A4482
-:80AF80002438401422024381040025E41208428810122181811C3224596288E064424414410444408411141408400C28832688044908100487484100F064C96048801154424A11014480A11480112456141845C1A92414204441011412818D111221160800008280012A8148082288818880382800C02814FFC10584182C220428C01828C1
-:80B00000222117480000216229015624724364A2188100422280020042412C02801488248814C444801281240880C42800486F9A0280020051001244480020045841624021840281301A7022022881811084B222611124264178416448482648410844C2CC2202481240B452C824DDE320020022480022818036844480948800204898A442
-:80B080001828008D2400002E82202102A082460880312882220082208862484C02284880F12659401CAC43284C048341544810440428414120143414484129148231241908139242260414422884A0424A014B16414A2228A4484E24800242482282660C8C722218D8480E26E448072B124411C5FD24148D14CCA1442CC2A41E42499486B6
-:80B100008F498494344FA3E151D8C40E25742418D4C2714C443244156C848EAA81C0222B221F63A1A887888534488564888B224BEC894858449C342C4074A8441858882EC9123F7646B24422E16241B226E4429451B03496282F2191511B414961452AF542914B143F71C48549E415E14AE6A4D418E2B218EC13FA7655CCF21C118F63922F
-:80B18000182F4155443E14004B463B257E385B41EAB361668C26E886E21A2418ED8CA22A4B2A8CB868B98492448B28CAF285AEA01127826B214E644AA235128344BA2214B4D2682840624C45FA22286282CE12A24F15A8233374486415A4282B436A521463E28CE881E314F41454282F21A1C248C44F819498491C8904C8CA88ACC4884BED
-:80B20000644D6426B822C2124FC2F427350069016382F42411007024824421488444A7486C0244824A22E84402850485044A12148818181431241149D881041D4849D88124F281482211448E482882A0488D2490187048F45CC5E061F4162E23E142E64472457511058F45F356342B15FAE325F154164B156B263F19F51F15EF87F5373121
-:80B28000BF91F12151DF98D175F42E44DF32F71B519DC19F91F31551CB531E7A8F21B358F53C355E533F13F314165F51F741295FD1F368281D191F94F921A94E889C7248F94D8C4E894FC2AAC44F42FA64AC4FC3014FC5E788F82C8C6FD5051E526F239622444A7675F15145CFC4F45818EB352F65F571337E325E165AB5765357BF53F3E2
-:80B300005A586B3BFFD5F57644DF97F655576FC2F6ACEA7D4D8F81F759791F15B53CF7197D1E3C8F85FD38397E537F53F715374D26AF87FF7D759F16B658FC68D89F16FEEDCD8F1EFEE8A99F94F8C9C8CF46AEEC4F42FAECECEEE88FA9FB767CCABC38FBF4BFE045F616746F41F124246E645F54F5595D4F45F568646FE6F652542BFE2F33
-:80B380002CFF46566B547F76FEDAD8F774FFB7F577F7BF9CF967F5DF9CF94577FFF6F46FEFBFB5F56B499F97F72561DF97F5446FEFCFFED8484FC6F655766F63F737376F4BFBC868CD6C9F97E78AF7C8F88F8AFEC9ED8F88BEC1FEC5C48F9CFCACECEAFCC4C4EECCCFCBAD8AEFCEEE8BFBECDC1F374EF272646F43D322E342E246F67514AA
-:80B400009FD5F54C4C8FE7F57E7E2F25F573B33F3DFF56566F25F5E7A7EFEDFD7F77FFB7F7F6F6FFDDFDE4F4DF9EFF41733FB6F66EEE7FF5F56E6A9F97F77571DF97F7787DFEFCCFCDFD647C1F27F627372F23F3B2B2BF9CFE7D758F86F6F8EC9F9EFF69E18FCEBEE8BEC1FE45C5DFCCFC6CE4EAFE64C4CFCEFCECECCFCBFBEEECFEF8CFC5
-:80B48000CEDF9C0318B0220100492121022440022041440800124C0200441828000021C011C011E012012E112002260114400128800289024270150B238802304228408841084888201481898432844A014A3924508212A446044C5284898248342440E24882E1813464166814848B84004318A84820088C440428142F46042D421F41F2FE
-:80B500002A121F41B26AF11164AB161D24AB161D24AB941B68AB9451AB944B4AAF54B924F442B1478A2F54F9A4484EB14FA2D458FA244A87514FA2645D4FA2F49825ACF498244DCA1F49F224421F49522C1F49B248F8916CE3F4816CEB161FC8B66AD981B64A3985AF44F9A448ABB443BA4AF92448ADB44F82A4944FA2F464DB90461D6CAF
-:80B58000EB121D44EB124CF46A1115F46E121741AF42F89144AB245B21AD868AD47AB315F44AA613F8483473B84AD321D148DB81FC18243FA27CC8D425B188C25B8D254FA27D91F824481B49E5B211968C1F8916FE8168EB121F88F42A141D4C2BB41F88D24AE188F44A34A2AD1448AF443A228F44F8221ACF7B028400000000000000000E
-:80B600000000100218001002001481000000000000000000000010027F9F09008126012004284318081241812A041E642AE4282294A858002004008280428881080045280148882C06001081048E24888122C8009F7E09A028400400528428C84288868208208891481C28044548942429E182014908CC26C8821C2AA482248220A44122A3
-:80B6800090848C2C028889A4218301A084428C42093F6C06A02484260500488126948C423244A328047268A82DC3AE481A3414444B2812260844881FC4A282A4871A42CA028281584A81225824C32422021D486218A880EC22648484126F550D0000004212228242802808223084188C0400844022840188008028810824100480048A86B9
-:80B700000820081281418884200AF091CE5024004418842200001A14220813810218114284424860228021440820140420080040028800828100C092004110048CF4FB850028299228414D419443A5424222222021447881C43489E44384222361C22C448C1408123058188309222841292281E181A685124988A14280091246A841809C0A
-:80B7800028898226F8E9DD00282244411185A11468001A048004882A3118198144A84162422242008C014260480010140290484AA11882A042811A0818A458808822A2248CF43EED4054229028128D442244202422128209178153128434642838100CE502168804C018528301228A022212122C830844188200004A099044814508826B25
-:80B8000096004197441A420C1821E014214802841230441002604418882C884948E4820C1812200881324220A1841042440241C088820000402A88E181F293EF248C0162252224012200478122482A081C0880B21C06290846A22498A041002281E011121408C6844114280811881EC8413848428840244184484E049FB2014812180000B3
-:80B88000424601808488042182200100810026A2218902440042001820818882C14822484A81028200200C82620080B461448281C11C272287441812298224A41820C848181C884482B124014AC81846E22CC222B028C548A0128321042021E24881299158AC844224ADE120882C8C884C84E94482483C1483F44167804464121200804460
-:80B9000031118168232448024C08288C04412008B01812A4284100A092442001302482886014100A1884000000818220E2C4084211281004412A148401621A88C19480882324C1C4C084800C804424840238B028C84182A0284A0218C820044225045288284222828B8482C8F058D26042284C2434282612482A42A2122480022C342C9050
-:80B9800014C602422228614632249022B08224041A321210820C8882000000180022C860881818C028224F380C208161214C0442812082280118484249422808282880041280028120228804800600280044001200802822921488A082004F380C12D021A4240080048248200411A242002818A04212902830828228408814180180440818
-:80BA000012782842CC846C448884003084302490444582FC283F30848384124458424C14429412881092864956429082442B21414A12C444244450484522682286E122A848A4C2008002822048048A22220100412618C88890C885F1E69480464104621A021524223438428608002021041084014428490A288021440118800142A0414804
-:80BA800022280024808E0C20858885140CE0DF0380010046188212231202489934822229241222944280C82242002C0226A2848116C81282328C1202D02208C20082200C902829084800622822FFBD0118C0412302480020081A028A24018971840841188004208C21A41888808884082A19084820A282B04488021818000028444C821130
-:80BB00004224F46C82407828840525125828E0244184442491223400E028012602008A512A882308230423521A814042822461248C04840048CC081A8281A1411A88010020F8993550449F4C7134E646942228A9D44134424CB8228AA419882F123C64274A8D886F49092B4A4AA2C847248E444B692F62F28242128F2CA28482C8C6BA28FB
-:80BB8000E818B2120C2AE8268CB38201438C82C8882D84892894886AAFC68D244D2880F64825E6F8F979A014165111242AF44A4C44A7844CB232B188A413A12B155B1429B848333630A64D222249825124878490244F2A88E423A464AE323AC11B3A6122215A049AA447E6481488E42CA11652182A2288B144A185CE9A4F86F8A48AA81F6E
-:80BC0000B7063AE682829332C7E4367244EA22F22512CE225AE124E224BC8D64692CD684A4384E425E725E1449E446A1622B84272243E186D842B222B882F22B8A8785893C924EC28D288881282F86888A8EFE4444C21A2689A1C192214F49E28BE84AB118644848487E2B0041100441501410240840264904448244124440044440840876
-:80BC8000888009882002819098B028088110088100001008819028BFA30B485F117135A122C5E887F3242A3F32F273736F23F24A1A2B268FACF952132F69F12222AFE7F762722F6AF342922D946AE24FAF638FCAFA681AAFE3F162E22F67FF4242AFA3FD4242AF27BE62E613EB34E52B31829AE1AEF232BAAF85B448FA2C6CCFCAFAC88A74
-:80BD0000AF22F25A5C8F84A5CC8FA2B332F324A4CF46A7FF8BAA8E848F4AAC64CF9305581E583E322E628FA4F658388FA6F26A222F27E72FF74E7E29F2F8BE9F95F111332F2AFAF8F86E622F26F752922F21AD66FAFF6272AFAAFE6AEAAFA1F162622F27F742628FA37723B37AB768E633F35273AF297788F89858EE2A2F83733A38684BE2
-:80BD8000664F4CF8C8CEAF2AFEB2B4DAFDC8C82E322B374F43FBB4B4FAA7BB4F48F8C4C42BFCEFBC084F41F615715F23F3262445F87C3CCF26527F6F67F736A2AFEDF9F2B2AFADFF56D72F6CF9E6A62F6BFB4ED62F6AFBE6862F4BF9E6A4FEF44F4CFDA8AC4F66F8785E4F64F4DADEA7AAAFABFDEA4B2F2FBFE2F4E1D91F3DE52BFD8A8885
-:80BE00008F89E92EFABAA2AB4DCEA84F4AF6A4A48744AEAA2BF44AA5DD8FA6BF12FB24B4CF46F7CCDC8BFBAF8AFEE8E48F86F755A5F01474CF43F334364F66F24C6CCFC5F36C24F7746F67F7F6D6AFEDFF92B2EF8DFF9F9F7F7FFDE686EFC9F9DCC66F6FFFE4866F49FDC6E44F6FFFC4C4EFEAFE6666CFC5F56646CFEFFFAAAAAFABFFEA04
-:80BE8000CB2BFFAAFCF1D11F3FFFB2B22B88DAE92CBC9ABBFAEE8EFAE4E4CFCCB848E4AB9FB68F8DFDD8D86EF22BFF4F45FFBCB8CFCCFDB8F88F86FEE8EE8F8EFE3DD8200222404228C2482001001A04482C828422012004810080024A2232482B1290120000482248220092A041200848289A24246844E07C0C821118502250226022C099
-:80BF00008280718148022562892480022824282100C221812D8883180288280022128880088810020028801384024A6212FD8DC0521F4152281F41B268F11164A3D441B24AF18124AB9619F64A9253B94A3924AF1439A42F14F934482F14F924481CF9244A4E814FA2E411F2244A96E1A26C59ACEC49C2DA1F49E222FC912487221FC932A3
-:80BF8000481FC9B26AF9812CAB941D6CAF24D981B64A5985AB944782AB9443BA42792498924F8284F9A44A6F270E4D121F85D22C9421CB1211EB141B21EF14B181F62A1415F44AB21B29874432AF5429DA5261832D8527832D952E5A5CC9888F55F222D216E5A26D51BCCD25ACEDC5E2127CD1FC2A5217498F24D141B2685941E9D941F27A
-:80C000002A9615B44ABB85F24A924B43AB8422AF443124A9B926949A4D529F9B0784800400000040042800000000210000000040014008480000000044000000000021F04B3F00224054423887244428284E82288929052288281E4212004822000090D883886923881821009012AA812D042008820030422840240400FFD10613642884AE
-:80C080001887348002812D468521010082100400421441828003472200C1604282A0124149D88102448A422298182242824C888282A824238228D61468884FA9074226021E424598224E28253428461497221A2884A2288200212442481A22288801229288932921B8880128C0C426A91AC6240C88C928A28288C0222A044823C28242413A
-:80C100008B81CF67011410486414120024288B841281120030244A21014011048002442D4881412863022112419012808142021820044C08208A12242482081F83022412701124824201A02100003C81044820810220028C048C9428212022948410041810821248542800008424482422284388028870DB0813542412282D5816084228DC
-:80C180004384B48214C8148062822826182C112802002A4404834A5248248913868282022858164428A22422428888826082812C3448C2498882F862AF90412522D1252196182084E241022190141C1192282883C2142A012002832412446A8A244528348E2144009022321608306222008286022CC2282E42482AC48488F068350016041D
-:80C2000028162842012084A48484004A0242400884220020C448220022A0214422223800484485342800428284804408D084880822825F9D031E28242001850140044C2202202182280426A2422112A041814964466041820000854402604744100241860422102438444A22694684648C045FB107844C22942160224823E2145222861440
-:80C2800002881008258208304226C41224A810282884217442C42830884442A2008222420043366200220042002890822FAD0E2011011002000011102204120048908880044002002180024200502220C8244120068484448410C21250288AC1883048CF9C0AC0163021603248281D6425A2282501881A0492250268228241242481497479
-:80C300004A24289512424664824054241022133484412026D828124814240A2C22CD2612898294882F260A2A8142214142480200804202608280840823C44838484222200241822428208408A02863246822284244802404817042A441C0488938848148BFE70A10044114188014A24200001800220020044618480200004321041222003C
-:80C38000422015A42443622C2282A1009064210010129428A90211244914210140B4141284C12142442554484C44DC420432C4260420048E444456048100816C01A42842B042024618A24929868414648880B2849442290881483F8F062A9522B062619422181826381840C21246813438258A0466022280326226A8143622042313140250
-:80C400002143942821412142200442001644C48868882083026A285822AFBB04111608E04211212422040044002002403824302821C18200122608284248800200200200282844884229440824844008005F1341222822821222210423042821004002224A12024800248C02004464106442641004418914D642644248440088212143D8CF
-:80C48000A492244502431494444372A50380C11200402224A186121022E121240212A341081082088002184A9112122088A1149024208801244192822908000020684A808202EE8B400400814428004440111105480010440290240018430422848400488400200232801222614452848C1C82C8824028628421F07BAB2428211818802281
-:80C5000022021249C824471418802401224200002B2C430483026082004129022302210081002823041006282182002E44822848BF280756082A04490616221108284480562A8002812225241222C414808C21043022A631484284A0428A829222180012C02465C828244248301882A9082B4824AFAF44D1213282272323F539391A02495A
-:80C580005688E84B122F22624127118B144098324AD622269268248825FA2888325A29B52867C3A74168478C27616E1424D024246A44814614F662268A2FB85CC1448D4469A82269A2814F2AFA28844B4C66B664F494EC242B168B21C0134E442E112A311229B31C8112C1411F446521AFC69132C41883D44462428CB2287664A424604299
-:80C600007014961A2827486C86F3144226E442E242E22424F35264226E4E8223E3261652842F2CA8626B88A24D48216F8CB4229A6C2CF28299E051B42491344B2241445E626E124B4766A481147354242D442CE6426426A7C2478227214226744492E849B442D584D64225C4224F8221044E4828A9423A8289D222B7248186A2D146928278
-:80C680008ECEA72484878C8F64C482AF6AC14828848A18F8851A400444004140020000404822015048005048100800100622100400000041100440088444C0245048504840F41992F076764FE2F222363F41F17D781F17F555554F44F44E1CCFC5A4AA1F32F2434155B7167144F45E548F67F7622C8F67B372F76464CFC6F6686AAFC8F8D0
-:80C70000647C3AD68C54444B478562414F4AFE282E215E266F4242F286848F84F47464EF87E226F626622BF62B37AAFAB89AEF68F8CC88A724AFE4F442C22F45B548B4CCACC48F44EE8FFED2CC147E726E7A2F62F33377BF97F771715F55F15446EFC4F5D4D4AEA63F32F222655D554B74C7E4EF44F478748FE3F37A7A2B776F46F664641D
-:80C78000FED2AFA8FCAEFC3AF24C584D443E42297111A1C88FBAFE3A2A2B676A56444F48FCC8CA4F67F67A686E622B662BF72F4FEB2AFAF836EFE8F8CCEA2F88F8CACA2F26FEF2F22BC62D822B8881EEF88FE24CF223313AB734D315F12D3DCFC6E725B742F746545E64BEB41F12F241637F71F11F17AF47F36A6EEFE7F76E2CC7C44F449E
-:80C80000B426B264F62434CFC8F86CE43AF63C6C47414F477414E651F2C4E4CFC6F2545C7E266F6256222F28F86A484F47F76C4C4F66F466426F67FF72362BBBAFA9FB828AA3F4EEAEEDAE6F65FD1E5CCFE2F6ECECEFC6FE6CE44FEEFF5BAC345F53B338B534F345319FD3F37C7C5AE727F74674DEF4BA7B21F145615F54F56D558FE7F1C8
-:80C880001A1CCFC1F3747CCB664F449624CF86F6ACBCCF88FC1CCC3AF27C7C4D443E666F61F11221CAFEEDE84FC7A6672A06CAFAC88A6F67F77A5C4F66F666666F67FFF2F22F2BF9D6FA8FACECA6F48E8CED8A6F67FF9CDA6FE2FE62ACEFCEBEACFAA4EE5FFC0F14A012C01120A241221E4824408144044C225148484A024604890228805C
-:80C9000082011842209412200200802482642282248C04864882C422802288022E8DE0188452221122483C0140448242032C0124482C2221A4428100232211042250824480322244254264221A248202704282024308222160242084042AF4E2C2D024F41124C5F2112483F41124A7241D24AB141D24AB941B21AB9451AF24B924F44A913B
-:80C9800043F24A914782AD914F82D418F9244A8F14F8244A56F1264A871D2FA264592D4A9E242D4A1F49C2421F4952281FC932481F49324A1F48B24AF1812CAB9419B24A5985AB944F82B44A39A42BB4478A29F9244889F9244ACF63032D5A1B618D421B21C3E481724ED241B24AD141B24EF11124ABB459D232F93448AF147824F84291AD
-:80CA000026D852B926D412E9A2E554F1248856F52688D6312696F1224B1E256D421F89C2421FC9C6421F4132481F4932461B284B141B29A7441B21AF449B25A9A9422F4429F94A34A2AD142B424CF922521F62018480040000004004280000000000008800004001008004000000400400000000501214DFE703301100808242028F1842B8
-:80CA800012081210082848221088E42224422441088C925440843824488829A82130188428100488C850822221288AE42204628441DF490A30A438188421181641C8424822421542842204322460461061442823642284004412000022502160444C012821834248084181240089044D8122BFE20F1021A241812922C31125F881224334EE
-:80CB000022264412C42842A0422C4222041E2149A4285822818416142581182C8488A8428071449834502441A6E882144888124282E82462A442D432EF1D0AE04182010000C0484028341100208201702428C442284502A4202204448002302212348400800280082141812242002288413FFF042210028002280000140040022400002AAD
-:80CB80008408280000A0214904800250140000002004000044000022BF5D0425011C33248430212324028AA24200158884A142485C84A4242210084848003024888130255092801412044538441B4129182158144842C22C822C0440F4EE84241942024484004A0280081150184212282C044828284A3288A02448006042A2450845211214
-:80CC00000A4914021018C4112142882004884C1282049024EFC20C003681022213122202282A04000023041744200400000000802104224001111004414242881110054248800C00F0964C4042012200404201A872128004481482421082440128482724480022401191880082404102008A32444002828A842448C18200426F4503842039
-:80CC8000044E8C2A114281210125022E11009012142E142B42231471441284810112842810C621100842144A4204281800C1224C0841000025024944F26E22B021044C511282002F81324842000010024200800880521240042144000040020022CC82813444482288004002304100004FD6041121302283A41221AB212984A12826021416
-:80CD00004821422384C83429249C41472441284E12644A11C8242844228048021C287424C12E2210A4288C22C88680682442824221C04424EF3E032A149114114100118D1148241A8421010013418184021081120348100224001100002200124A8124840400418800800880F42E7C2006240020461152181021042246014813041480043A
-:80CD800000402214140200650100005114460400004044044D22462258424604F01C8700281A84222232120020A2240048A024200248400322420000444140140880820480840217488248508682008882414A08430ADF380D20014820014289841202C042D02142218212014230612D2111111111411444444840414582027024C14100AD
-:80CE0000141110010021A042200261AFD60200281128118022026800110020142214022180942822004280C4410041811041020042424846140841000088004182CC05A68321012118131141E882C441221180010048C0218004002501460180220200212822108404202804000000E622428222061F9E0900003022005022400121004253
-:80CE800028100210A2242C014240124822541243440200444414004140420488000000C88821F0525A800414221180021100484224142211008522840440810224C042004052418400004042841401C08885240886240810C44488F0D29D008052213400482411003592411400400200003042280021104244013544041444400480948187
-:80CF000082448601865424221005821482FFC10B842248214033412213861441042800009061241062112B14118819041014C14100848004112022421412C42480124102902210022142E7612026082E2226D32252114AF46162BF24344114172427243D11248072417242F84141421B441D221D43AD62105121254272420240534241D0F5
-:80CF80004304615054444E81824E218D841D888A0829B882A2C645014358148E44CB21C042183E3225912119A1131D238549E91286D612C441281922248212118204622922F62161242146188616F44444154C42A5222214442E442142824F143C82844758456148242E862D222F469282682E27882B6490213A1231412136B14226022AE3
-:80D000001232611081E412D411E624A4422E432602F012416215011CE414D444544155E4444613561581C0214554115F14A2664D4259148144124814544420E828F8C4466E848A0C3FD50711002140030024400124001100241100100311100321100425014100501610062501218421504200000000EFFC48C1222F81F211211C22B83312
-:80D08000B31241F14848A712211F261232432B556AB661A6666AF22A292B664A24E426F621226E422F16E4244453A8642E262B224652212425A4225F52522125054D22276417442BCCAEA227A8DD81314F2838822AB842E448A82A2AA2664E424FE94BF121233F95E521F122631D211F21B251511197849FB6F245641F24F2632417241F93
-:80D1000015E716E616A2666AF2484A1F1216027E712F12E62AFE43418835D18C5446346F42F24444F55C216F44A4225F5216516537642F62F246465D843F64F8E2A2AFAAF28D8D3F48F28486272829BAC2FEC4C64BAA6F42F264C41E12AFBB4ED131B612F611213D213D813F13F312111D218F86762B59421F36D212F643413F11C5611F22
-:80D1800016A6666AF22A293F1212024E731F32F261C32F16F441433CD4A844E276B6626624555B342D442AF2252555515117266F2472467447E57CFCA2A2AF88D29BD831B88668482AE824F4E6E42BEA2F42A6664E522FAF016E62BF13E621F163231D213F21B373F761618F86F26B2B2F44F641227B643F34F433511CE616A6646AF24A50
-:80D200004A3F1202E036F722632EE23F1464283D43CD4E65F644466F46E66454E755D24684F2652555534757464F46F244447D841B84EAEA88F28F855F7AF8868486F622A22F2EFEE6E62BEA4F4EBEE4AE981F91012200002082641240011448008084024A020028200442201424041004004150244800200882248264C022824A2228244B
-:80D28000B8E90A20411151321110018425010027142214007042810440114211016142230241501200281411230245023410185152005022C024C024248EAFD022F4112487221F41726AF21124A7341D24AF24D141B66A9961AF3419F54A9253F24A9353F242935F82D412F925481CF9254A8F14F8274A1E215FA264193FA264596D4A9EFF
-:80D3000024ACF491246D431F4952381F49324E1F49724EF18124AF14F18164AF149961AF145985AB9443F24A9443FA4294478229F92448984FA2F45FE8D0A2F41164AF226441A73615F44A131D242CD1C1F62A961D448F34BB14F24A8353F2489253C2925B4229F927482B945FA2A19479E811FA274A96F1234A96D596E419D2A2F4912C9D
-:80D380006D419E6CED411F49724EE149724EA128ED111B68AF52D141F44AB159F24A9143F24A94A22D144F8294926F8294922E5A2F49068482480000000016042800000000001880080000000080040000000080020000004041F1DBFF80110221146044100120020024000061C04800240080AA2400100111112250211C04418180080069
-:80D40000000040048A04BFC24541248912480228935384942A911110611429428194434A12214424142316850114411A02226922216221111914044D112358142304D0E141110A641A4226C9341645B4E44D41A218222D4811214CD218431899241A0290212722114231624522146425118E421524011CA84219022C322C121962111B42BD
-:80D48000484583D41411541441822285165182402643F614824B129661414B1E901400002004450118111021040042501230480022002042840110014002144001294838420013010000006044F0531F004001000065830220044280012501004008004011064100001341421482024400140010021014084008417F780A4140024578222F
-:80D5000042114248812182110210084722814200115022004114242042D424140144502424444014022542185221000024850400975200502150842912018133022846020084244184005081101202641424800224141C414212C42241441042110250210040082100415FAD084100001052225120011880041260322004000000114140AE
-:80D580000441460440144402004400101A12021004508484004F89095430220014211642C41243082116044C0845228811160200180041308280C2118120C14200804401801804142011024904243014E0250410020043014041144421021124180000234461214814004004446018811100140000444C111105502C0000C0224480F19CE0
-:80D6000078001440110900000000000011421008004212000021902200200250145024104202102404000012288460C650613428107915025052490111211211822941C4814A116284408224840144442180B2A20111201201145014444C318125014449440210042AC12443015DFC4008100100120029081004410021400414001100004D
-:80D68000826100001A4402402404250200105128120042001008BFCC43024044046400005021000000001440040065024046031612044011944441404441464158220041100421854404008E941024024002103912220041400121006024001014012400005021004448000044100400445084214008100881FF5602400C31240000000061
-:80D7000010030094250A4001110000404443040010043017212110022110111A02211042440424EF3D0500001508844100414410410214118002408201400181008414441100100148401802210020014004100210F6B25B148241004004451204001041084420410A000000501424848001000041D0240100000024450821304C2C0400E9
-:80D7800081CFD302004425122412120200215042002140411144114101142400400224185081004800405241104144140200008416121406AF3B4452840043420884262801C02212248042080011002A4441020044002100000084508414008110222141180429011018A8417F9F03341100004440042502002400144001144001400100C6
-:80D80000C40010010000004411150400411004614144008141DF1B088480144104244018044490220080120E002180018822818902811412C4948004248440084055418042020024004223012FCD4A5244C34816034161E1492102298251123022210025324221001411252452982244A50254850140545481455248854C42542C00495126
-:80D88000A445481214421456CC84C3F1BC125032004D24950E854A210124345024B541126C123D19944041E6124544430250C4C542F1141241211541118414F412196155524734113121448F41512A25546287A4E1648041E475450117424134412D26C02EA54454425062112410115148995215111511110115111246528384212B111575
-:80D900000441204462445012147194244125134214044D14468A81542CACB4E905001004244022014002344124411005590459045110051018040014000040425814501440424804644006240040E43C4551343541F2232545F42E2C85F4242CAFC15164212AB2125145A5A82265F42C2F6F8151B86754475445F16461544556172A525508
-:80D980002E226558A8236141550540D44444FC5E5C1A51253175518A1553888FE1518AA50445F45A588FC4B412F14C4C1E188FE5F4C81134343F9444F6236775F52C2EA5F42C26EFC1516425B422B2325357AD2A4F4212F22C2FFFA151EE33744614B57457414F7818F424A495F12826C55AB8124741C51CA14445D444E4C4F41C1E2F619B
-:80DA000051B6255626B55C13AFA252EEAF8153E86121EF81F14C4E6F41F14E4CCFC1E1E575B20545D65714F42525D5FD2624C5F63E34AFC1516425E622F212321552DF2B22218FF2F21A1FA5DB1254524E452E3145C18635A522D5FD282AE55CB8236141550D481054C4EFE555AAF55E237557CAB59B2244C558EE255264AFA5F54E4CEFFC
-:80DA800081F14A488F81F1445C4FF64D5264FD45441F5652FD6F22524ECF63F31E1C4516B222B2125313E7E22B2265F4282FBFF1513A7D45541F54E41253157C58536F4A52918FE252CE8532126F4151D51148457444F4444CCFE151EAF5576375578BB599224F41F13C18C51E5646EF81F14C46EFC1F148488F81F1445CFF690E1400103D
-:80DB0000464842080000400244848100004004000081004901004100000000842001840081400444F07B7F204814145122100418440025124401007441250154400154614042041042440141004425524125524100214121451812141214528450B44F310E2F22F41124C5F2112487241F41724AF21124AF16D141F24A9219F24A9351AF3B
-:80DB8000343925AF1439252F147925D812FB25481CF9254A1CF8254A16F1244A96F1274A96D5A4E449C24A1F49D236F4912485F3912487341F49724EF18124EF14D141F24A9319B24A19F54A9743F24A9643F24296478229F92448984FA2F4213EB022F4114CEF322471687311746C7211F46E1311AF666941AF349B252F3459858F243B48
-:80DC0000154EA355C8B177822D915D1A1CFB25CA1E815D488B297D4A9E244D4B9E214D4A1FC9D2B6A469C5A32945E388F24C131FC8F24E131D248F74C9244EB18CF24A9743F2489643F242962E482F447926B842F9241AFF27068480040000000000000000000000880000000084800400000000800200000000B0510E2420411458342CD6
-:80DC800082010000112184001C01422004282C140400004100490121444144400500000044004004444A42F4BD4724200811512110092741400112000021180012814444D068012C012C83D1481201C022150285638140C88A00841E826424864C02A4858468117082460242105158257122420125144421522110089011C042A0411249E8
-:80DD000072C40285020013921281911842231214566984548487284160822441248C480224A4821A22F188F9400218444004160812002001001022010084004449012C011844430241401201800100002049124404508444414241EF440A414002810020041811001811002D114100000000100441100210010050240080080025444802DD
-:80DD8000000000EF8A0B2942C2213440C1212220824248C14311306480D82823021A020022E04112082447823200401444021E494410021002A4410000214242E0954B02702142032002428011489141250144901249810200002890248100612800114444001E4825042188002410480200214200EF4D09430221401811810228281100C5
-:80DE0000181168308187220032000080110444262A0100002450140000240085460400008004CFF501400A0024100210840A0080110828001212001200000000882422232221C444242241100441280018414002006F7606440041508220D8410110410400400200C26041000000211042114904140064504200103422111004480024005F
-:80DE80004AF131B2241100228100A22200000040080000002224458212240422004211000021806241000000241002481288008FAE01312480125882242854001B2800008C41022220240122246C210248201202141C08238282C144424332240024400500188024810848BFDE0F4100440021A01200000000840020084100004424000011
-:80DF000042414003245026901244000010542248440000F03BF80080020040011120120400002002180000000000844008002001210000104402241002004220F4672D002260211280A22100841341082001228100102801100818800118811818004084011604102201004341180443210100CD2100400211110000000014280000220048
-:80DF8000280020022200000000124144002140040000000000009ECA00008C022820018C02C40000840000000000000000000040080000844004840040582210022341F2C2A10028C0110000800228404108000000000080020014280000001004002100000080020000F0BC66200222201221020013120100008002200144380080022850
-:80E000004001004400100244002110120224100244291432622AF43F3B00003082100128180085C118002668818062810012842001812210C8188921212101180021001800800181001218183212F07934A028860122222814200226011400222880022820818202002880020084008042020024140024004450242400424641210284C07E
-:80E080004210410826081484C480120114260800100218128841000014180080044048440800C4C02210528484413044122912F2C3470013081E221F1A81021621621226A822118185018B228C9328282A820112280043C22800001E188118000018604140028421855222C1A5488211A4443AE41623F22DEE142AA2282E2229912226D175
-:80E1000011E2828192181C629114108142382822C01890184322020022282A41F81828811E1860418052244502A424B94124410200302425E22101181E4123E47E0E200293021528820219121959C8190132140022200138841883818221821281012001B018C114251C16041002442901164656CA4425F412164280E4C40A00100A8501AF
-:80E1800081C011C0118001188041884108160884400884400800000081502C9018D0280189018D1280012C01240000DE18001F125288AF93F318A88D21848CA3119F83F118188D111AE111F11818189F91B138B13831281AF1181881C5048D188B11C74270285888F038388F81A111184F4151882A6281C4A5981C8F81F1191B8F81D12847
-:80E20000F11A188F81B112D1AAF11A1C8FC313C2161AA1731AA3225F9E03F041492CE231F518898D2115E883D288C32187D29F92E34343D198A2329F93712818B828F2181AA78181EF43D288F288888B11CDA48D288F82528815F138388F81B118A111CF4555888F8276145AA485981C1A513385DC28F13232248D282D12AFE1F13A3CF0C7
-:80E2800012165AB132A7377AD7DF0B281D61F032318B311D292A92381A7129D8C8F21829194351881AD299732868823AD1881242F824148782881E1847428F81A1133AF318198F83F318181E181AF11454F028281AF11814EB1147811815534A169A325022A7E1AD1C8FC2F212141E162F41B522A7712AE7B4042AF229612CF27A3BAF13DA
-:80E30000F12129118B238F82F3313197929F93D28DE3117128A9239F92F138388CA23328A548FA2434288D881E184F4AA2338F83A3118F91F138288B111E181AF1145485A8264F61F11E16EB11478118BFB1116AA12D32AFA1712A7A12D6E2F12A2E2F41F112162F45A5737AA3763F620300226012000020420840010028000080020028AF
-:80E380000000188001004901000000000000200120042F4D062240021001289021100115089028002200000000200220410800000021440021001012140A2514148284039F35043CF4112485F21124A3F41124A7141F41F24A111F41F24A911B21AF143915AB9443F34A9143F34A914783AD914F82D418F9244A8D814FA27418F1244A87E1
-:80E40000192E4A8759ACE449C24A1F49C2421F4952281FC9724CF2912CA7241FC8F24A121D2CAB941D28AF245985AB944782AF2439242F24792498924F8284F9244A6F930ABCE541C6411D2C2B141FC17242E1C17242F1112CAF54E841F24AA15B21AB845783AB8443F34A8143D31AB826D41AE922D558F824D28F11F8245287592E5287AD
-:80E48000592E539E25ACF4912C4D4A1B692E5217C947241FC9F242121FC962241E2C2F74F8112C4EA25F81F242824783AF2438342F247A2498926F8294924D58CF3C0A862888040000004004280000000021800188000040014008480000000000280000000014146F4A4301120030211823011200008005180000002682022810082200BB
-:80E5000040448202000080128202460442004C42840230442F9803448A028400E082082302A410098C02D048A22120524822004684518436941818421644828142448A418221210228160881400A89182881215418E0764301CA03002621B18203224130228501688021824202206122A24200001902101864260000128022322428228766
-:80E58000442014123824442C2244B114F4E6A8100440080084241240080016085048122052482200442A51484F823118184249012901434298121022011062810040088281121810084F3809200128200100848004842001220000004284000000002822448002000084221A04862804008304008074450D41001880021281000018440099
-:80E60000002242222624322442800228008100002280042084020000800684008002F07F1E1004002001104808000012200222004C82324400002800810022440000002884220082800440082002F0188C0016081A06222001004244169824000020840218288C04220000008C022082260480040052228442224028040080F4819C0000EA
-:80E68000280090141818A01400414100002004000018200400001820A212008C0248400880080020088100F0936D8012041842100200001889012004100480240400288081014008282001480040081100000088000012F04BFE8001810030182820C428008004000040480400120000000000002232480020C428000088200200002F8AFF
-:80E700000E2800384022912412128322241198444442004130484C8404001A024A01008120011220A2214810089964820000828882400800DF930C18448120048112800412200100000000002001001200002220A22142302820040020080080020018F026380000000000120000200212004604004420010000000000002004000000008E
-:80E7800000420000F05E366041004014C81800800342890581004122C06820028C0246142802322200000028001880018183048200986088624242F0DDF70084800484180020014C24813228002032440038001249040000400800480020011240E8820488001242842800F0B893D0C8B148A4444241100820712454444B222E6822001813
-:80E800004140C268A0114B11830B4088021B1222508885B848A444422820040041A0222A2202200888462224A411CF9C0200000018280000000000000040440428000042000018180040080000000000000000DFBC04818C24840440080044414C22820210880550229012129882A844222214111484818C24840400004014C424222800ED
-:80E88000A04100250229F1E783402881840144000040048902000062002180818208400840014008481200182200400428420000228210026F1C09A044002001005044B028028420440400001A01410000000085084A0400000000E0820220C4480000001AF1BD650020810118000000004248000000000000000000000000000000008485
-:80E90000842044084800007F1A0AB0484424240200004504CB2242224008120024241A01128628080010115188128B44200400000041CB2220020020244842A2118F17098485A8414A0400004044D44492282A22010000105242181E142A88082228404141485888484A2402000040C4248CA222180042001092125F48021200008001005F
-:80E9800010080000840000412082024442000000800118000000400820043088000000EF7C0B2001000000000040880400000010048012048004000012001212000000488044080000008FFD0EA0111218A01120020040088085041A04005044A02222284128000000181280021800000010A854004A048A08001F1902004C01100400006D
-:80EA0000102874482804850C680041201204224C04000020218101204128020010688442D0888428810600F086E420012081021E1800008150880081800100004544C4284130282AA2440000001A0120010010481888044285084200002B197026B212A2122B111229012C5122881E1317118B98967948F888414E48421D4911489518F8A6
-:80EA8000444887444F42B444E24222C224805244412A7226B212A2122B111AB882092C5922881E1317118B9896F948888B484E48428C04488518E884F479B1F0262245A21232122118182592821CB11191819E8883D118246484941D4148848588F44844C14B246226448482425444282F2242A212321A38828A81512229C8111B1119E856
-:80EB00008938188B48C2464888844458884877F6000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000000000000000000000000000093
-:80EB8000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000000000000000000000000B7
-:80EC00000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000036
-:80EC800000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000B6
-:80ED0000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000000000035
-:80ED80000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000000B5
-:80EE000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000034
-:80EE8000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40FB4
-:80EF00000000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FF26
-:80EF8000E40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000000000000000000000000000000000000000000000000000B2
-:80F0000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000000000000000000000000000000000032
-:80F08000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000000000000000000000000000000B2
-:80F100000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000031
-:80F1800000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000B1
-:80F20000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000000000000000000000000000000030
-:80F280000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000000000000000000000000000B0
-:80F3000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000000000000000000000002F
-:80F38000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000000AF
-:80F400000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000002E
-:80F4800000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000AE
-:80F50000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000002D
-:80F580000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000AD
-:80F6000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000002C
-:80F68000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00AC
-:80F700000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04F29
-:80F78000FE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000EA
-:80F80000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000002A
-:80F880000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000000000000000000000000000000000000000000000000AA
-:80F9000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000000000000000000000000000000000000000000000029
-:80F98000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000000000000000000000000000000000000000000A9
-:80FA00000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000028
-:80FA800000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000A8
-:80FB0000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE20A424004508843E4820B12421018002E0418402120060441828400418628304832484420840082E4848122200800260CE
-:80FB800081122828962804AF1C0990188483A441C9B41446C4644C06288F4251844694644C22C2142A2562818B1416046218181698182E4889018C2402898461848C84E482848182062A6882862898282862224AB918081E8889F9DD6400328100418C810148222283110400482004814841442A240180A121421088022284000081A0435C
-:80FC000000408808901820420860882FF80600407814084849041212184312282604281E242083412881042240048C2402208404128400481800A082848810082A84222492188C84F1B6D620C44880044828224210040010342400280000000016480818421008848084344884200428008022820212181280084F2408000048844484430F
-:80FC8000C2240000442830148001200120011200104828048004100828622800200200002088882801EF2E010000000000000000000000000000000000000000000000000000000000F04FFE8004002012880260812A0841814902008081142102221822608412818024E244018480048180219298224800800158008498849F1A4902166A
-:80FD000004800441C0184180915120144202460200000060444004299418840044002023820200102848282204C028124820F41DE28014042084428492184416A8824E1144814302002021140100124B429048128964818C24C244448180840328182886883248828120051222188C84C9486F340F211200008100001200460224602400BB
-:80FD8000002220020041100200180000302800800100200220440800F0FE7310220110480400800142000022812280042A044820022200000000001A022004421288000000A01484003F39051828202284A11283243148400842248180044088722804898212082371544818A2162820840280410222302800215281810088005800775A1E
-:80FE000030121A0200180090481008000028814028D2840283820220614285020020840200000081800112000082208105F0CACC00002883148433481280014248508220042280042A04488126028B41003A84020000121E228022842244828814480800201408F09182208104220048221800A021401842440249810120214488C21400B5
-:80FE800012901280118414010028A0252A81822202189800804104C018FB14004884009018204248012812001800105242481A0420440281008094282158C42820010080140400202424010080F39262000000181002808101000018000000410000100800000000112002008C018281A082800280684470FF0D008100C05A20011C210158
-:80FF000012101244022C210148484481484301818C01001A12245149283011004812688C03C0181AA8A4422218443044819F370618002820012822840018100818121004410042804202002412481002000022282A8102802208008001200822DE662001808101000000005280014200004002206421A041002824008001008086018400DB
-:80FF800020A42100620012229F2407A021168842280100000000000000228001400884108202000040028428000018182800208208882280F4A41A00000000502800210080040048848400848484250884800424101202100881003018814034680020040000FF6E0A12481800100800000000002901210048184800214022321228004820
+:80010000122F21F112122552222552222552222552220000001AA111255222255222255222255222255222255222255222255222255222255222000000002F21F112122F21F1121200002552222552221AA1111AA1112552222F21F1121200001AA1112F21F112121AA111002F21F112122F21F112121AA111002552222552220000000087
+:800180000025522200001AA1111AA111255222002552220000255222000000005F55F555558F81F11818000000000000000000000000001AA1111AA11100000000000000000000000000002552220000000025522225522200002552222552222552222552222552222552222552222552222552220025522200000000004F44F444444FC4
+:8002000044F44444000000004F44F444445F55F555551F11F111114F44F4444400004F44F444444F44F444440000004F44F444446F64F446466F64F44646000000004554446F61F116162F21F11212000000CAACCC2F2DFDD2D22F21F112124F48F884846F61F116164554444AA4446F65F556566F61F116166F61F116164554446F65F5DC
+:8002800056566F65F556566F65F5565600000000002F21F112122F21F112120000004F4CFCC4C46F6DFDD6D62F21F112128AA8882F21F11212004F44F444446F65F556562F21F112122F21F11212006F65F556566F6CFCC6C6BFB8F88B8B006F65F556566F65F5565600000000CAACCC2F2CFCC2C2255222000000CFCCFCCCCCCFCCFCCC99
+:80030000CC008F8CFCC8C8255222004F4CFCC4C44F4CFCC4C40000004F4CFCC4C44F4CFCC4C44F4CFCC4C400000000CFC4F44C4CCFC4F44C4C000000008F8CFCC8C8AFACFCCACA255222CFCCFCCCCCC55CCCC55CCC4AA444EFE4F44E4EE55EEEC55CCCC55CCCEFE4F44E4EEFE4F44E4EEFE4F44E4E00000000CFC8F88C8CCFC8F88C8C004D
+:800380000000008F8CFCC8C8AFACFCCACA255222CFC8F88C8CC55CCCC55CCCCAACCCEFECFCCECEE55EEEC55CCCC55CCCEFECFCCECEEFECFCCECEEFECFCCECE00000000CFC8F88C8CCFC8F88C8C000000008F8CFCC8C8AFACFCCACA255222CFC8F88C8CC55CCCC55CCCCAACCCEFECFCCECEE55EEEC55CCCC55CCCEFECFCCECEEFECFCCECE98
+:80040000EFECFCCECE00000000CFC8F88C8CCFCBFBBCBC3AA3330000008F8CFCC8C8AFADFDDADA2F21F11212CFC8F88C8CCFC3F33C3CC55CCCCAACCCEFEDFDDEDEEFE1F11E1ECFC1F11C1CC55CCC455444BFB7F77B7B00EFEDFDDEDEEFEDFDDEDEEFEDFDDEDE000000008AA888BAABBB3AA333000000CFCCFCCCCCEFEEFEEEEE2F22F222ED
+:80048000228AA8883AA33300CFCCFCCCCCEFEEFEEEEE2F22F222220000EFEEFEEEEEEFEEFEEEEEEFEEFEEEEE000000004AA4441F14F44141155111000000CFCCFCCCCCFFFFFFFFFF3F33F333334AA44415511100CFCCFCCCCCFFFFFFFFFF3F33F3333315511100FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000008F84F448489F95F55959BF
+:800500001F11F11111000000CFCCFCCCCCFFFEFEEFEF3F32F223238F84F448489F91F119198558884F4CFCC4C4FFFEFEEFEFBFB2F22B2B955999855888FFFEFEEFEFFFFEFEEFEFFFFEFEEFEF00000000CFC4F44C4CFFF4F44F4F3553330000008F8CFCC8C8BFBFFFFBFB3F33F33333CFC4F44C4CF55FFFC55CCCCAACCCFFFFFFFFFFFFF33E
+:80058000F33F3FF55FFFC55CCCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000004554444F42F224242AA2220000008F8CFCC8C8BFBFFFFBFB3F33F333334554444F42F224244554448F8CFCC8C8FFFFFFFFFF7F73F337374554444F4DFDD4D48F8EFEE8E800455444FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000004AA4446AA6662AA222F7
+:80060000000000CFCCFCCCCCFFFFFFFFFF3F33F333334AA4442AA22200CFCCFCCCCCFFFFFFFFFF3F33F333332AA22200FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000CFC4F44C4CCFC6F66C6C2AA2220000008F8CFCC8C8BFBFFFFBFB3F33F33333CFC4F44C4CCFC2F22C2CC55CCCCAACCCFFFFFFFFFFFFF3F33F3FCFC2F22C2CC55CCCED
+:80068000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000004F48F884846F68F886862552220000008F8CFCC8C8BFBFFFFBFB3F33F333334F48F88484255222008F8CFCC8C8BFBFFFFBFB3F33F333330000BFBFFFFBFBBFBFFFFBFBBFBFFFFBFB000000008AA8882F28F88282255222000000CFCCFCCCCCDFDFFFFDFD1F13F331314F48F88485
+:8007000084255222008F8CFCC8C89F9FFFF9F91F13F3313100009F9FFFF9F99F9FFFF9F99F9FFFF9F9000000004F48F884846F68F88686255222000000CFCCFCCCCCFFFFFFFFFF3F33F333334F48F884846556664554448F8CFCC8C8FFFFFFFFFF7F73F337374F4FFFF4F4BFB2F22B2B00455444455444FFFFFFFFFFFFFFFFFFFFFFFFFFFD
+:80078000FFFF000000004F44F444447F74F44747355333000000CFC8F88C8CDFDBFBBDBD1F13F331314F44F444447F71F117174554448F88F88888DFDAFAADAD5F52F22525455444455444DFDAFAADADDFDAFAADADDFDAFAADAD000000004F44F444445F54F44545155111000000CFCCFCCCCCEFEFFFFEFE2F23F332324F44F444441F11C3
+:80080000F1111100CFCCFCCCCCCFCEFEECEC2AA2220000CFCEFEECECCFCEFEECECCFCEFEECEC000000004F44F444444F47F774743AA333000000CFCCFCCCCCFFFCFCCFCF3553334F44F444441F17F771714AA444CFC8F88C8CCFCCFCCCCC4AA4444AA4444AA444CFCCFCCCCCCFCCFCCCCCCFCCFCCCCC000000004F44F444444F47F774749C
+:800880003AA333000000CFCCFCCCCCDFDDFDDDDD1F11F111114F44F444441F17F771714AA444CFC8F88C8CCFCDFDDCDC5AA5555AA5554AA444CFCDFDDCDCCFCDFDDCDCCFCDFDDCDC000000000000000000000000000000000000BFB7F77B7BCFC1F11C1C000080010000000000000000000000000000000000000000000000000000D05130
+:800900000F480000000000000000000000000000400100000000000000280000000000004F72060000000000000000000000000000000000000000000000000000000000F04FFE8004001800000000000000000000000040010000000000000028000000000000AFC606000000000000000000000000000000000000000000000000000033
+:80098000000000F04FFE800200400100800414800280041480020000800280040000214840010080041400108204000021BF26050000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F481800280000000021000000210014CD
+:800A0000001002400100000080020000882800008088020000EFE40F008084010000200100000000000000120000400100004001000040012800000000F092548084410128004840818102214860118002211A01148002211A041400B01281041480028004148828108204808802214800CF5506481800280000000021000000210014005B
+:800A80001002400100000080020000882800008088020000EFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000000000080010000000000000000000088000000FFC40400002200000000210000400200110030120000000000200200008200000020020000EB6F00000080
+:800B0000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000020080000F0CEBE000000000000000000001002000000000000000000000000000000800200007FFE91
+:800B80000900000000000000000000001001001200120000000000000088000000000000F0B95E000020020000000000000000000024000000000000000000000000000000008F730F000000000000100200000000000000000000000028000000000000000000F0FD1C00002800000000000000000000000014000024000000000000002E
+:800C00000000000000F0E1AB00180000004240020021002004120000008001000020020000000000000000000000DFAF0800200200800400000000000000000014000024000000000000000000000000701C0E8001000000400200210020041200000020010000800200000000000000000000009FE4020000000000000080180100000079
+:800C8000000000000000000000200282000000000080026FD20E000000000000000000800200000000000000000000000000000000000000FBE5000000000000000000000000000000000000000000000000000000000000FFE40F0000000000800800000000000000000012420000000088004A0800002008200800F04CC4000000000025
+:800D0000008800000000000000000020010000000082008800000000000000BF3A0100000000000000000000000000000000420000000000800400008008200800F0AE2F000000000012000000000042200400004200000000000000A04800002008000000E0460A00820000422004008280055820240228002004006812420000180000DC
+:800D800080082008820080084A088880E8A90800820000428004008820040048282002004200208421040000000020080080080000480000AF8605000000002001000018A041004220040000482002000020010000200C820080088220088220F899DC0048002800000000221842220000A88001880080024800208B0400280000000080A9
+:800E000004000000F067920048000000488008882A04001A042008521828880080040088128004184800800400000000200800F022A60000800180020000002004A222002002004842800100800400000020048008488200000082F0EC5D0000200100420080081220228108882812000042424A82810400EA010042002084042008A048E0
+:800E800000000082F0EFD7000020028002800880044842482822202824820200000080280100128002000000200400200800F0F1FA20042024044820040000A042008820080020080022000080840842200488000000008800820082F06ED40080020000380000000000A04200800848C822802101A048000042002004420000C2004200A2
+:800F000080041ED700228002002280222102008028022A0422881800A0820082004200000082484200880020040000824280F4A68A8002288082028002422004006A81240422482280818408220012120080040000000020088200008848800477E4202404000000200100424A012A8802488088040000224A028220082008008282002086
+:800F800024088024280842008214CF1709004848800400180080828182044800420000480020010080048084240400008820880800008882009F5709200200000000200222800100800800800800800480840800000088888200000080082004825BAB200220A2420000320000228082888802882828200128004280840482820000C220E5
+:8010000088088A0488008008484200429F35060048002A0400000028002004488012021880280400400100800C80080020048082040042008221147F6D09A022A044422848221218180020A214808EA8444A24880880A8440080280142C2888A28882484A8C8828A08480082824800C888886018F0E314A064A02222684A04A0622220820D
+:801080000442A01F626A84A22248A22A218801CAA6222A220342802C84840820242484842828848888288CA8882084A4844AA484CFE908224280222202001AA2412002382A8626282822A8A6284820042A08A054588A81048A042084A4488008824AA8C882A0442008428A24AC488848EFAB0520028024020000000028488004A024820007
+:80110000004200180080288408808408880000008A0400002024089FC90E002AA2224A8802A0221AA31100A0551AA5158AA8AA2A22A2C2A06600A0262A023A82A48C4A048AA4880042828220084AA444008A8408A0CC4888A0C44AF456B820A2622AA2226A2402A0223AA21180025AA5775AA3EA6AAE262E222BE4A82B768088A4622AA2DC
+:80118000226AF34151CAE81484A84C48822024AC448882A044482A8AA8A44A08884AACCCCE822B448ABCC2BC1F0C4A86A62228424A06A0223A830128A0552AA417EAAAAA6AA6262BC2826A0788A0262AA2223AC241CAAC44C28AA4C8004AA448828282A0444A8482A8C8888A08CAAC4C8ABC82ACC44AF41259A0462AA2222AA26E2A02A018
+:80120000223AA31100A0557AA735EAAEEE6AA2262BE6AEA26A06A0446AA4222AA2375E51CABC41A48CCAA4888220A48C888A28084AACCCA8886AACC48A88A8C4CAAC8C2B44CEC2CADC52070022004800200100001A048A040000002004280000000000000000A0482008000048200882571A200200800620020000A043004A22022A8408B2
+:8012800000002022842104428882008084A848200800008A04820088484286F15E12A0421B21B01122B61136621B612B1419B66299612B9419B44229FA42B12AF44291AAF44291AAC4B1AE424E812E4256E12264192E4296C1D29AC2521B2D2CBC91C2821B29421B692B841B282B8419B64298212B8413B842A8422B84222B84222B84AA80
+:8013000084E822349480B411041B21421B21211B212119B2429921293B112B84122D91F04291222D112B422D112CC1112E8216612296E12264183CC5212CB191C2421B69241B29421B2123B481324219B24298212BA4191222B24228B2422892822392822E42DF880520080000000000000000001002000000001418000000000000002818
+:801380000000000021F0F15B800412000000A02C800800428088822106420022A048220042004288002008800C00000088000000147BC9008A020020840618121A8204429A022A018004802282840180044280212881212202202408A084888A048A040082200814F097D720A42C00004228002A0C222084882482082C84061222C218801A
+:80140000AC42108104821AA494000020280882A086200C8200400200FF610400180000482081A1214A08200312208201A0420028000048800100222820280442202408000080088800F0EE8A000000000000004820031220A28400480000800418000000000000000080088004800800FF1D044A01000080210420888181A4481AA8422068
+:801480000100A024208404208124288504000000A08482C28800800888888002003FFC02180000001800001218422A8D210228820080020000181A041A0400000000828888820088888028088800F03FA6200400000042008220042088051242004242802404420088200400000020044200000042002800F07AC4002A05008004001800AB
+:801500002A2C81A1282400008003882222008A012400A042000000008200228008202828388280F4CD57808404824280020000882200002A042428800188008828004842A0184800800142208404202224240C0010A24882AFDC050020080012000000004200200118000000800488282002828880280820082088080020044800F0BCE979
+:8015800080A421004200120000888081A168302220018002200288228A044823043220082029088028088280A4848A048A2488880882BDE100000020060018008A0400200420820100200220018222808802820080044842008200000042A08448BFA1074812002002008A82A118005800802102421800008001182008800800120000006D
+:801600008004008004224200F06C8F0000602442002442002C03288041024682010000200800008008000000000000008800000000BFF70B00808202001A04808408884880220480020000480080048081080042820042200428002004002C0480F4F5AA00482848000000880028002C080026022222B0A2A181002210220110A241202152
+:80168000210100004A08280000002004884E240000000042808104A058C8001824124818000012002024210182200180642500004800000000800800EDDB0000004242181242128812202189011242122081810180818181210498800118100218008800200800000000F0C4DD000028480021488230128800240029C422100200000000A1
+:801700000000400248000000000000200400003057202488020020041888004A09128001182AA8142222222222122023022812321820A12100120000002002420000281C88F85D9B008004A2001200C0414228002C0800422800188018022180611821008004800400000028000082140021F094AEA0448AA12242AE424242125AA1869ACA
+:8017800091811AAB881A891142A2114AA277483AA322A023A081122AA2410023C112122412425842128004424200280048881C0223C481881FFA0AA048A022424890422C8424A411824842888E1228482B4229B84202008021042341A2413882888A81051A03D821008880888608800400884021F4BCA800008022024A019A81B8C26424CF
+:801800005AA168521AB81231421E12243A01122C82A82129818181A3149A88A129881218245212180080040020282404A0442220F83B99000022482150121A1422581292211022014828124A02400224C012C01240022C09240048000000888008884888000000BF7F034A0428A0A42D222F24F443433D112F24F152D22F2CD113F4129269
+:801880002F2DBC82E829F812122D122D122BC8121AE122F222222D222F23A311212F23B252062BBB27212B3B242F21B112E123B312E1259112008AA844A0888A0888CAACC8008AAC628A089F250148482AA2222AF622622B4417151F14F5D2522BD5CAFCD1F12F2DF952D22BDC8E922F21F152522F22F782B27AE721A3322AC2A22F23830B
+:8019000031122F23F252623F14B5B2FB92932F2B1AA25116B232A3551E122B1100A0CCCAACA8A08888CAAC8800CEC22B668A28F8C4B8A0444828E02EA2222B444AC5125AB1D2FDC1111D631AB952ED24F592922F21B152E126B1B2BC72A513382AE222AA332B112CA1237E622F15E42BAB99BE3229A8511AE123B352E525B11201A0884ADF
+:80198000A4CC8A0A20288CA488A0CC2B668AA888A60E4A0422226E626AF642422B152CA5592F2DFD53D11F35AD9D2BDDCED22F28F912125E522F22B792BB72A731282E222F22A2332B111E123E222B675E51BEB21F29B9B2AA911E122F21B122A3551E122B1100A0CC4A048A0882C2A088A0CC2B668AA888BFD30F00002200480080048AFA
+:801A00000448244022010080022800184200001880010018000048000000004200F0FE89002002422024019A0482188218C092A014A024122880021A020028189200881200184800008880088880888408006018EFF60C481B212AB11162241B6127241B212F26B181F642921B292F2419F14292322F1429F242B13AF442B12AC4B12E42ED
+:801A80001CF8224256F1224296F1225296D122A5292D421B292DD21B2925B29132421B692B841B282394612B8419B24298412B84222B842AB4422892A22AA4842E42EFA3044819A6521B2146B21166241A62361B684E129AE234B281E22421E31428D212AB492F141BD212AB521CB922EC15B82264192B5286F1225196B122349129BD91D0
+:801B0000B622B49152221B692B841B282394612B8419B2429A612B842229A8422B84A229B2A2B442622ADFEE0F20080000000000000000001002000000001400000000000000000000000021D048064212202104285224200448860100A082222002420028A0688002A014181298008E120042004220042006800C210014AF2E0C288282B4
+:801B8000000080A114008A212484A21420612848A0282800484A82818124A28680080088208808C84288004288A08280024A92414621E8380768D2888004224A012148A04BC848221A04A82CC24228827220280498A042112A8C84094A098892292888848484042200280082400280F834A80000120000181A0400110000188200280080C1
+:801C0000A2424A82012280011800000080088820848488840A4A022B241C24042F650C002220022C01001C28086024408204220000424828210012180080012180880400004001144880040000F0D799A02400008008281A18A261182908118081A4811A448124020020022480042C242C88C182001C0888602420A484888002A8822220A9
+:801C8000049D8C80042880021821282C888828918242313012489248208402400222408281042482860224008220082C040086012024280800E0240B22000020082041A125000020042212140048422800200100421A041882824811000030418A04482820022280046FE60B80041200114A029041289222100221405221008A41C281188B
+:801D000000A08126014219248CA421A88024480148C022486220022082220800BD5A002A2421428282026011182082880120212162214081078822002840412208282A04244A82081022081120822844018880948280FE1D3EA01410014800182442201401E0248108220068188002110080040000000080240422420000100100802208DC
+:801D80001FE10A4220A1214822222224484890918816220118402281168124123231002880024A8824868222AA248A840421CA82C422008868008828882888C8CFF8031828144002141A0413C111680080D4220838221480210A110000D2002111888001218098410010218404008002428220E2F5042002000000211A8421882121A184B0
+:801E0000800488228E41200C484220048008880024904188A048808404001148204402260242F04DFB800200002004822C2824042100422C28280200800188001224121222A04190412522810424001426122102422148208404F0AB7100522800800410022100802101C022802404C0C11120098848224811008A02200411424800422023
+:801E8000046022002100421FF708148004502214004001182002204802008084014A08008048012088888442010000008012810400222280042F870A80020010120200004A08211800A8000082400324828262A800004001006018001001008004228004429F820428002800200488485288211E8110210424A8902212180048C2100127FA
+:801F00003118820018240000004001800424002400007F860700000042009082241118C0812100800482884002344083044860141304008280B48304002160144082042D4248482100DFFA0200002400800400482C0811308221008E2122880000121B18A028244200862108820040010019040000280040016F2F0C001C84440124241456
+:801F80000082122942028A040090422142181384181231421043C181481C288197A22004800C00A024008822400128005F4A0828228004C042214611B281B492D121A88829B113C152828E42822413A222C88A0815B242C4C21B884886A233481B4A1B8811121F22C2824A8964148A0448144A42D1110425A2242934413042144AF4991F39
+:8020000000288042532211402248022B445E12221CF8C2810023A2228A3241C2424EC24A44C3114E438681CA421C611448C82EB286218824B482C883420015A144800448422D2223244201FF98041382C5210030424A1482B852A8449A11F2118220A1C4212CBA82AC448A2C011D111488922981B963B482B8528848A1198229D413049021
+:8020800041138404312C14A124424A7C22C222222E62484A04AFB7091110011308194412419241241301128084128102282034811022048008180080090021100221100221108284020000429F4C4DF121211511414153312364144E411F18A88C17141F3CAD881F38F993923B9D3F36FA23A32918F241C11F1458111DC11F1454111D411B
+:802100003F39F9435137382F26F6B2A22B441F18FC4141121F12FAA1A21F1CF442422D423F3CB8437442522225B3427442F242432B448ADC22B262F462632B662A0624CF63052AF22161112E213435D33344E334D411F8C18329A1FC1F1DC4B23F39B851F1E3E33F3ADA22D822F843C11F14FCC1511DC11F147C41D122F4D3533BDC373819
+:802180002F34FEB2B24AF4C1C11BC89AFDA1A11F1AF2C1C12F24B44274C1F1C181272421A06427242F24B442E42CF8422227222F26F662626A46023FC70C2A92611450212572437342F243422F28F8C3832F25B852AFDC1F38F993923B9D2F2CF88282251212B3C188A1CC4EC335F343413F3DFD53D13F38F822232F2BB282F181411F1CAE
+:80220000A4411F13FBA1A11F388494421F1CF841434821E02422B44264242F28FC22222F24F462622B462B6600DFFD081F129221142AD22158334A7442B243F483832BCC2DD23F14FDD1512F22F993931B992F28FC82822B8A2BCC3B461BC88AA4CC1F347443E224F4D3D33BDD3F3CFC62E22F2FB7C2F5C1C18EC19AF1A123171A1F3C2874
+:80228000D4227442F1C1C34A5422314E421B442B444E422F2CFC62624E422F36B662B6620648AF2309222002240000822048A2482049220820044282421142208428A4824229081C088850124880044800144001244824482800D0660D000000420082421288920046022190A28A840A0000968108488A9252C21C24018A82880413280476
+:8023000000420048002C024A0242F02F1CC0411B211CB11162141B21271419F642111B212F14B911F6429113F14291222F14A9422F14A9422DB12AE414EB2AC4812E4256E12264192E4296C1D29AE222B591C2421B292CB99162241B292F24B981724292212F2498612F2418F14282222B842AB4422A92822AA4842E428FBA041CA4611C8B
+:80238000A52146A1212734682D131AD632A9612F14AB212F3438214E9119F442B12AD412BB23B442FBA112182EC25E812362183B52142F32ED19E22235D12CBC11C6D31B294E821B284E921B284692214E8219E6249A614E82A2A0422BA4B042BA22B442AA42AF380582820000000000000000000021000000004001000000800100000075
+:802400000000000025018F760E002800224880A42820024A011502A0822282408128020000A028121A049082908200808C0488190A2088084822284A828204BF590C1A224A8142621132222321A412488824821A18218A813421A048304110A142198881249582281AA682144021E43A81084021043041002A888A3481001C22D26C0C1AB6
+:80248000A22C8002204182A52C20A2823082821128122AC42230C192192408481908F08142881A82446214C081E01228282844012822428820828A82E2220466015FC90A002601241B216228002A81041A04131122880A1C08002840210218422A2181A4212A28480242122148004A388110018288484286012220F2BB4720020042480036
+:80250000800200304282000046214221080048800800008002122001000082002008000022004FBE0100188092221A222481094A8188011818C818C88084042024044A2AA6429842124852182E12A018489813988100008220026882A8488280F4AAB280021260242AA41242800858C01242122008881984344100202424882A8401128001
+:802580000426222108881928080000002022880222009FA4020000220020A1120082008818481842200288800420862482880448181A8201121A240114008220082A084220282408481F5C041800904128681602184880242281012048220122182188800200602182A084481A9881482228480020062A2408C800422602828A74E50F130E
+:80260000A24218002D13242240211882820800008042021C0788222028021C122234118004002328081002203422004002404102283F580E008021020020061492214800382248800A8800200480048002120018214221212004200810220222C041A842F0E2BA301128206112222C821222A24825E1258828810128822C2481028A1402F0
+:80268000282A2488022823A1241192209891B0221C92421002424242108246828204A84A28F4DBEF200218602413314212B0110400200420810228822813020000200490821248800123042A088004282C08888008004A0220FAC77900000048204282A1180000802124A8822A0828004200001A28A12C00001280210880020020240400BF
+:80270000820000F03AE7001800004A010000421602110012130422100100800D4800A082705282220218000000001C88048800200882DE6C0000008001A012008212821220818481014A288104004880840100208801482200000062000028000000CB6E0000000000241420012A41022502240020042301004890414242181422A01800E9
+:8027800025210828460182142200000000F0759A008001400200000088180088008A820A4800182001200282200122808204200400882004000000007E998004004242802424AC844A02684621AC844212C8002288808488282804C2904282881022A4492001828820482108888282288888888888BF9C02800100A042211221231112519E
+:80280000228890121442104221019081241124121911230A9022290124800200004621C4411388042882280000AF270E308112001A0268000022C8A0182081880288428200800412808221880128800118180080A88480088800400140031F760A004800002480044682942220444202003082A094800820280800A012C041236A1848421C
+:80288000A2142A280411280000200810027F4208481B190042124AB522064A34412119F412926AF191522B141A28A44A21884AAC5C481E411220054A3111A2822416A2131662295AE1228181480119240811AA2484282AC881804811E23D0220A81100282842B022A89830424AB41288C88225A3511F242282A212884242241CA4584A84C2
+:80290000AC7EE820A83A2982A3941CACA1130582AA021928A4CC1F1408802A22028214F0398E0000004A3412F042121E1223A164B622388142124AB58288A9A9A6A128112C2808822CA891964361254AAC93112C7C22A1228AA244A02862884AA8441F184E018A0C80288808888A38FB2084018014022248B0110411A049144814121412F9
+:80298000148214244641424162142C21E422081081118191412A110111228A0400008228008220084FE301701101007E322F21F522222F23F372322F29F96323373425D233F942811F19F8D3933F3DF962211F18FA21211F13CB833F3858333F11E124F483C337392BC92CF2123223F881933573117313F212B32F33F333332B55AEA16EF4
+:802A0000612A5A1111171815D11108822AAAA21BA28008885FEF03F041511848E022B33247F232323F3BFA93912E222B241F1961282F18F981912F29F9D2922F12FA21A32B2ABAF382911F18C8822F21F143411F1D7DC1F3C2D23B9CBAF981822B89BEA23D533D222F11E333F333333F15E51AEA1EFE212150111F1452111D81002AA2A26E
+:802A80002A421202215DEEA0441F1104E024B472E325F562222F25F1D1933F3CFD62222F24D622F443D33F24F9D2D12F2CF8D2C23F22F222A12B223A9B918E81881E123F14A4C89AFC91C32F18AE31829E922F29FA336227332F2ABA33A2321F14A4AA1BEE2AF8818119F8C1E11F1CF48181888AA822AAEA128A98828888CD46A0441F11EC
+:802B0000A511424E422B365AE522F252522F2DBDD2ED26F243411F19F9D2D23F2CF9C2D33F34F1D2D23F23FB32B13F18EA2BBB81EC38D833B412A1441F3DFDD2D23F1DED1DEF23DB22BC92F891A33F23F312232BB91BAF1F11A145AABAE1FE2181CAD811F8C1C14E411F1C88A888A0AAAAAA882B888E82884F3A020018400280440200A0DF
+:802B8000410024820000428200100221901242211002210048008800481482144820080000F0ADAB200800202102200900802888014A29832882482204009248C22622089280A212928082012228004A081400220000003F9D03481B21181B21421B212396212B141B212B941B292B9413B94239212F1439312F1439312D911B4A1CF921F2
+:802C0000424E811F2264111F22641D1F22641D2E529AE222BC91C2431B293CB991E216B191F642911B28271619F2428119B64218B14228B24228B2422A92822A84E822F4743D0019C6511B2126B21166261B21221B412F22B891E624B291C2821B43981B432F243831A83B4B29B821A5943F22AC841F2221FD2112C22E5386E1222DE93219
+:802C800085E612AD282F3681E412A94827128A744291612BA419B242283A42B0422A98222B4AE02AE4350600480000000000000000001002000000001400000000000000000000000025019BFB2008802102003282342004188242002028014220220472184A02208201A012182B14384A08C80048004888202422028280F8AEC580A118AE
+:802D00002A011A04A021A0141AEA1288886114722028A1842A9141282A2896422822802481A78618A08282001C080022C22AE4222884084E218829820C286014F05B2920A1148021012081831881AA4218126A8804184286A24120C122822A24A261123AB4410200208CC21212A084202C84242E82084A0229A68440021482DF5B0A002A68
+:802D800001620028A0412E921188601412200882381128AA24A44200800418CAA212122A0818E014A821002282223042203481888022822228042F150522000000A0121A2224090013480218111C020000001480021200221A020020046A0821008200428022820200FF8701808201181880064880048AA441483220A82880812488042810
+:802E00002A21A881202326283641C0822A8188440100280014422880242C240422F0BBD400220018004A022A812408C880880220220242000012141280A34300141290120048A0C2242800114820048A84840200AF430D282001800180230452004A914118219813188101884280828288880280A8246228882882481100000082200248B2
+:802E80002822422002EF13022842203111902100142084024888220000A81CC431828800888082043021684A820848E82842006036200628C80088A220A428FE6800488022021A8402228822280042D022112102211812802C016820094AA9481288422214808104284200200A8800822224A820F45DA6002E112800000042000080218423
+:802F000002420000284001000080120210810200288200800C002100004800FFBC06E012012222B04183022681A82400484AE8228412220228181C222A24012A08B8424A21CE1182223021A0942A04A800348A24042C0A80282AA28642E22F6F0C222022C111000048000020011214482068140040014200204882A242E01208422880069D
+:802F800048800682004A08008800F0FA350042002800802424820600100100120018801401192208802804488260128820044800800420888408288002487FE103102192214211621B244061141C384114118238C02180268826A2240068001C8684046810014023141251229082D022681425012928F222824E82006226F269FE001280FF
+:8030000001122800828A01208801008840A14214820000A082280088008008000020081902800200000042E0AA0414800480420100140042882200222242144248881242188A242404622A2104221B5282A0488014A142002248422A24824482044828F0DC8C808123010020242484028800118814118008A82200801201820080080082ED
+:8030800046012008800288000000882004142FFB0300004002002280082880090088800800008008200A0020840482829822A2800400008002800200DC090022208201221021681214141C0828286012282800E81C14218C821201A88082220222122248212002211061342248242830422820F49525800118228024040048A04280042088
+:8031000088484141418108180000000020021448000014A028130A002008822282402272480F001C8465140040818901800A221911018200218041811881B441012A49A1288091818A46010011AA04008002808224042810026FF40F8005184212214AC441282E212A7C212154111C895111112E81E01C088A8304111B481CA42415A1A80F
+:80318000A22AA2282AA1261A82FC11828A02A04C2074218104142B222260228086E61284F217B11418142A62112E412E111B662E21421F18ACD11982B481282CAA22222AAA281F1326D211A6862A0A1CA426221B4A684A81AC8D2AA4241D818E818246E124A848373426632682248217341B4446A26CC632C2CEA221424A82F4B8E5301190
+:803200001AE211A1622848002035C186A184141A88F21181828611A18419A28620FC515120B1C18A292EA22420048213F221218248528A92A1A82ABA82C2A2482282882A86BA22A482223062CF7E0F1110A112111811220020220880220800822882280020011A82280112221220A182122190821002211002290229022880024AF2BA6721
+:80328000142AE215E113F121211B641D633F16B441E6127211B171F341C113F241411F1CACB31F11C3811F18DA11F841411F16FC41616AA6E44E411AE117F7F1717E414AA77C5AA564CAAF541F1713F131311F25E52EAEDD1F32F2C3438E822AF2E1633F3CEC24F44141AEA22F22BEC2EE26FEE2C229A844422E42BDA4141F13E311E511E2
+:80330000D311B241C6622B621B642E2117191F1DFB61611F16F641411F1CFC31111F13D111F8A1A117121F32F423411F12B6A2A5CE4AAC441CFAD1F17EC12AD711A7FB1ED1AA8DF791F11F11FB81811F3CE42FEB28F863633F32E22CEC2AFAE3633F3C7A4152312F2EFE42E22BEA6EE22F2EF882A22B466AD622D4D40D1F12A2511B131B98
+:80338000336E417E5223B221E212F211111F1FFF61E11F1CFE41411F14F421A11F19AB88A81F12EA1CBC63BEC1AE764A8E0C1F14F4F1611F16F7C1E1DE41EAAE75CAAE451F18FC11111F12FA41C12BEE5E523F1AFAC1612BAAAEA23F1EAEEC2F14F441432B8AAAEE2EFEE2E22F2EBC62BC2222A446FF9744A1331AB131B231E314E625F71B
+:8034000023211B226E211F11F1D1F11F16FEC1E1CE411F1CFC31B11F1BAB882AFA21A11F1CBC63EE2EAE66EAAE441AF1D1511F1DFC61311F1EEE1DA4FF1B64EAAE671F1BDB11F2A1A11F1DB5F2ABCCAEA33F1CB6A2AAA81F3EBEC2FC43411F14E42ABAA2EE2EFEE2C22F2EA8AA2B466E626E625FFE0C1880010022482028022008111001C1
+:80348000111001001142114A0200A08200E0120814808844812402140048800400800217B200121828181A2202421321021411302118802A022214808A241421188102280080021308200414688002408184022C024A82041CF41FF4C0511B2126B111E214B111F2621119F2421119B26299212B9413B14229F242B1222F1429D312A94207
+:803500001CEB22C4A12E4216E12264192E429E212CA4292E421B292CB49162221B294E821B2927241B28272419F2428219F24282112F2428F242A2222BA42229AA424AEA22F47D72E012A5412E41284E13686E11282F1631112B961B682B341B6129A94B2F1423FA4291B22F14B1A2F442312E521CEA22CD812E4286E122E414E232EC1CCD
+:80358000E22234C12EC21B682E4213E826B8816426116E821B282CB881E6249A614E82824EA2824AAA48299A422BA4483F480A004800000000000000000010020000000014000048000000000000000000100273053228002C2124222182021820048282294221830222808204408103221822008001A0A41848221021082008868204C8C9
+:803600008848286AF89CAA0080018003260148242811A0841880212824AC38821110213221C8112A2184084840028828142A58127042814A21681400222A280C622214F0D4BD8022040023021C024A02381322A448182CA82113A8252C282228812208284E81322819860948200488288E41C041282D411CC281A246210882228A24EC2262
+:80368000880423FA2C4E80818201181A242221022400008200004A22891201198412011112002200901200282E9200800800002CA24800422228482B1520020000002250220000824212200800220000008A921200800800800413888824041001200420082240B2940912282818223042242025238421081C2481A621584248122024A297
+:803700001412E22CA91424C28A242404212582AC38884848004A28241881082A8C28A48480A4683F920618282001244880021842188860144A812681248404284220258184A81224C2480000001288118A044280041188808C88880C482E82FF710A228002280010A24129120200888081A21800120028008A2231C229018848C250222425
+:80378000C82A0C8A0448200C1308208402422002425FEC04484A010000184280A2422821202A8604001002168268244219E8218411810A00232408008248008880240480028A0424A042F04B1C0048005A8296418022220128424214000020344218424E81222880621619243482A014482820840514C228002A2808209C22A0842A6828E0
+:8038000080F26B6A00221218002800200800190180A13822820068A800000000008800188008220000000000008002F01A5D002A81014A82840628228AA3428024641A68488A2382282484E22204482AC4811AE213046E820058218818422048A1482882A084C8006A88A248C2882A2884E2D10C8A04208181422121040024C01100120081
+:8038800000808498412821C042800488800822009A0468000000002400800228E09D01420022801282820513140280082120012C88282224A425008028048213044A0820882404824882200430410088200400F08787800122183A2424C242221488804101122880C22262388231288092222B2828233A218088A412C011212E82800220C6
+:80390000048200002C0842008842284D12200811002110120100002921022C220418C22C61284288224224882C6124008A01484082088084088248480082218A84080082424FE705181248002004800A148800A01C12882002212288408228812482410120E121084280681C00C0412008004A424282822802F015D1002A0400004A01001C
+:80398000520000008A030048200880A442204181A484480088004848004248004200008004C824145F7F06002A040028004220082CA38124222C0420840190120080A141424821000012000040020000142C84080000238CF88337100118122A6124142223121143C18127181419A2181902482968162118283D22421D2282241100281EC0
+:803A000082141AC822108108212200233AC12410C24224C082002922F6398A2024084A4202421381A5824288138218014820A44818202C0221000000122D121002002304808408820000004842218200F0E556208881051C8442020082681828200898240030128A8481A4840029012381048004C800802868140000684602002888902209
+:803A80002902EF560F11DAA3222226B262E4228634212E214219E21959211E11A0A824E88AA4488AE821B4E294A24E112A061AB742A81423B242AC84581BC48EC2928886A2CC42484E41CA34C18A18011C9482488E8225A26425A22246A3A4EFFD0E4A2108685E111052211A81581198C08123E819B232A43D212CA2947AA2A81EA24A9491
+:803B00006246F2C22129A878215E12122B28B022818139422B84B02138428A0288424A24542242CAA844CA1402484822E7ABA041B011A111682C32412B372B6413FC82C2CE4113B282918126A21426E12F21B432D212A51411A6E222082E42A662213EE31D41C053DE8212123C42B221048AA48888214829A68848134472221282A2888AED
+:803B8000A888AA8AF495E810011110210226012622482208821C021C021400C021C02121144001288002191292218012922121191292212111210022A048240020F492A9141F1FF65111381E11FE432F2EF463432F21F3635337121F32F612122F23F192122F29F9B3933F3DBFA2F891732AAAE21F12A48A1DA23F2CBA62D411F223233F10
+:803C00003BFBF2F23F37F242222F23F23232BAFB81216E212E232F22F241212F2E7A22F262C325F121232F2AFAC3C3371C17242F34F422222BAE2B862BA4CAE82CACA2622E62DFE7063AF311511F11E313E33DF761E1622F23D333F363E11F3EFA52922F3AFA12122F39F9B2B22F29FBF3F11F3DA7A22AAE5A1F1EFDF3F23F22F823A33F1A
+:803C800034F662622F2EFEA2323F33F752722F2FFED3D23F3DBDD2E71AEE38F883832BA83F3EFEE3C126E136F663633F1EAE88EA7A41F343622F287842B2A2F482222F2CF442C22B22EAAAEE9F6E073AA3511F13A3111F27F762623F36F612323F12F3A1233F1EF6D3113F39F393133D832B1BBAFAA1812AFF41211F1DFB23C1DAEF32F7D3
+:803D0000A2E23F32FC62226E422F2AFAD1F32F21F722432F2DE22DA5CDBAACE81F28788272E3F3C1213F14AE8C1F2EB2C2F441C1EAEA2C9A43344E422B8C2B862F24AA8CCABC22AAEE2AF675B1F0F1711F11A1331AF111723F16E626F273733F15F761E23F1EFA53913F19FB11133F31F9B331FAAEFF1F177F61F1F191EAFCD1F3AEF32F15
+:803D80002EEC26F623633F32F6A2A23F3EFF32723E522F2DE22FF7D2D23F3BFD12223F2A7283F3E242CAFEC2E22B8813FCE1632F24BCA2FAC1E33D411F2654222BEE2BC22F24FEC2422B4C2B22EAAEEEAFEB0E1C010024481448A04814922009822448249A04202428040080210442292984088880880448248A044002248220088A042070
+:803E000024F8EABC002022210222302248140050221381B281C4A2138122896A28288002CA1282122208D012011482252188280820248808428220080022C041BF6507481B21B01122B691326219F262121B282B941B282B9413B84229F242B1222F142BD212B921C4911F22C4A11F22E411F2214296F1214296C1C29AC2421B292CB49108
+:803E800042B29122B4917242B181724291212F1498212F1418F14281222B84A22B842A94A22AA4842E421FAE082A84C4511A62161B2123962127261B282F26A9482F14AB282F1421F242B1222F142AF242913B4A981F2285FA21C25AFA2342921F22042EC396E12234912AB491E42235916632116E83136816112F3618E1149A612F1408A4
+:803F00002F24AA482C82A4A423AA842F22F46C7100822008002200000081000042002180010000001400000022000000000000000010025FFC0322204229A2424304361641C1411150248713162381213984A88A24CE2848282229A1433A44063248230160822991184229B42208008064458602188C8224A41C4A086F1209E04822098228
+:803F80008428328082DE8281C4111C044A28624621C0518C018E422602218648C48828C22D44402109212E4248868411018A22018901898532888218224001BFBD0828CAA22184A8684B24282E14214A68142E411911B51AA2582200241CE188A4E1E6A228222284223EC8132268424622214D628248A1C694521C02A818224AE144311884
+:80400000C0888A022E429888F0C72800448211400812902126638100421134124E36924CA84A1810C8425022924905452294524001002B121A049082000084A048292211A841802404FFDD0B4140013C81260623828408342024011984035C21C1810000902820812484044521E1120827128245420848A0490034842C0820282489A24845
+:80408000178600805128A8241684C31426A21452128398919CC414988E44346268224E8283046A0146E444314241884C014A082018148AAE844D2282C2238228384488448378A488E3420881B011070013419821C0341229A224292D311129B881C1411664154B83143F4224E21208A9046A01415258424242402111811837822A34422826
+:8041000021422B82888846C2884421838A1224192874440F440030922D6242284C01200484428901824220A114800C00E082441442246841B04408A88012C8848C18842CA841001504888918A4814A0A28825F2F0C20C72C6044B018021AF4241288CD21284846D82225D11862814C648456142249C8888426148842824264848E582924D7
+:804180007428521849148D41C5C8187041C8441E84842289018428128AB22491382761802404189024C0211185C12480921A20624220088828211AA282882E42B012046213148A5185A01400008C022840048200424624E442899882462284F51246201106A02100248C12120820882138481614C11243023048442304482281218014028B
+:804200002C0241122288482A441134981A024844002004488184884FDD044A312228184AC12489C22148ED128B28147042E8847162F228541962184CF5A2444A018CC28427842E4A2E462E188332222A944C23D461841282129B2417482E584CA448448369958A144488142CE4C4AB282B84884D486AF8B3C50016140C430218F02A111970
+:80428000028C02922009478189018143028A94280020044225028C218924112C214408197228210128A04944224A0100182E4838844EC1904428338322C1488024912890218140641944178144278A8A619C205A246A8174220480B81428C8C4284A42524150294398888A91848883E428C141418331228A54222E48A2225848F0BC240054
+:8043000085044441444AC22600194408236111688384A4C2498114949484D84C58812C219142128448244C1486044B292062458012282A240840424804428281A328F81FA7602210941843A1181504C4A0828123548422824C498401804114058160844D41C044411212182126048022912136048228B23041214190286084A081B048B240
+:804380006E03202121048722004A422611827112C2444120021A58621968242C04C01888244091424C6288C0221008131422088B484C021100881818A08244224342023F230F43698114804402103148552802001C24918812462201821082819418336111443842110021705264484902891288024821612514348240928844C044943F1C
+:80440000810A11412D6812110046C858430146054E21C01C244C05402804A0824C06130200C022416084002A2811480670540A91411A08296A812BA58112231408829F4D060010D4282247021032122414441D122228142D8E1400A1A285032514020088148031158159433842424A81D414011D82400146818402414183082E98D0B4023B
+:80448000114200265142D0C242313280E41211885682832812C844499A18814881141C8284E241B441E822242131241880424A2C45180333518121480030444C18821298E441F0BB7360A42849140830192480C44244814A1248C2628074214818B412448841C894204489014521548215C83489041A128862444242588524B981C3941828
+:8045000028424C0949012982F6386C9041FA524A221E1567E11551C883F1286623BD2A6411378455F498A84BAC1EA52F84F8D3B989F1C6D14F64E5CE42F961288B158A921153C1129EE64D845F29F918123397249351441F2EF122B88F88ED45FC81CE4F49D5127813DA16FCC4122328F412342ED24B68CA93467AEE54F548889F780B4F7C
+:8045800015D288D1147148E82682F428446D621D362781C11724AD4A4CF1781129B138F168184B31C53492449E888DC3AE8689D1A17468F814422D518E848B122E324E44283C7718C4253E3249F644445B21798331696E721CB9417112C48E4B118F2C7844D482D18CEC42F384144DAAF06F664056661B234F4111BD68D32221F642494BB2
+:80460000141D739CB221F11C422CF665452D4E79F488462E424FC47A191808A3F416C64D252F71F5422146F8554143A44581674645B4227426FAC888A7D183616683326C8C7A89B8E824D811B855F122A62E48AB288F427822F488888538A8AAF6483710011161150811472211418400344021C827501882148287148281214400290800CD
+:8046800010011508191402252151120012000000008112F0183E14173C1735FF71F31F7F3F33FB788BDFF2F4175CD7D4DF52F243432FB3F37B1B27B42FB4F13E3DDFEBF71D1E7F69FB3AB3BF97B649F411D1CB225F1CF46C747FC6F664644F47F659485AE525FD72E26F46FE54557E733F3753A37F4AFC496A3FFDF8E7E36F2EFBC8D22BE0
+:8047000027AF35F8481B2F1CFDD4D66F2CFCB6B64F4BBB74E727F762E2AF82F268784AFD48488F9F49F165675FE3F71D3FFFE1F3F3791FB3F6654D7FF5754FFD3E7D7F75F53B3B9F95F75E492F95F137EEFFDFF79C9D5FFDFEBBB6AFBFFFDE59DE51FFB3FB46C2EFC6FF676C5F56F634649F85B4D1FDC1D14F65F766755FF5F571723F23FE
+:80478000F71A1F7F5BFBDAFBEFCDF1FF7B6F24FF4BD3EF4FFF5BEFAFB4F7E3F76F65F547734F4FFFBCBCCF8AEAAFFF6EC8CFABFBEEDC4B96AFA6F743EFF061233F21F43F15DFC2F12123AFA7F36F6F6FE7F77F7DD5FF632F25FA5B7BAFB4F4425BFFC3F3BCFCAFDFFBF6B49F87FF2A59AF94E591FD4D556FEAF66EE77FF6F467654F43F143
+:8048000019191F45E535FD72762F27F7347E1F25F415744D2FEF4BF9D8CFBFDBFBEBFBFF9FFFE8D83F15F6D8AD8FB5FB41714F41F9D1D36F21F1DCDCBAE5A5F16A2AAF8EFE1E1C4BDC8BF6EF954FF1C547AF63F21F3D8FC1F379698FFBF7676F3FA7F75F5FAFB2F75B1FAFA6F65B5BEFF5F453592FF1FFFFFE7FEFFAF7AEAFFFF7BA5CFF28
+:804880008CFDD4D8CFEEFF87CFEFB7F675471F36F2311195FBD3572F1FF254763F63E773E777F534349FE1F3BFB4FFEBFEBEBCDFBFFFFFFB9FDFFD5F7D9F9DFA59FB7F1DFF55577F77F5C6E2CFCEBDA4FED2FAEFC6F6BCB8EF47F7B4F28F82FAA129800123022C81D424412822212241814446C8249A44B691143891004C12334811425914
+:8049000021B424016B122002630269094989D424A8412286482341A741448AC426B048024624F8D457208282C12C43A4212A01434268242842842113181881420841D081844A784884614421C22C21881C01501870488192848E286A4848924114A08422241688688142228114EF7D092CF41124C5F2112483F41124E7261D24EB141F48BB
+:80498000B24A9921AF243915AF1439A4AF143924AF547BA4D812F9A4488F14F9A44A8D814FA264114FA264592E4A8759ACFC9824ACF491242CF4912485F2912C83F49164A3F48124AB141D24AB9419B24A19B54A7924B84A39242B944782A9F92448984FA2F41889D024F41164CD421B2123F41124E119B44EB181F642141D24ABB44B410B
+:804A0000AF14BAA4F44A91F04A95478A2F547BA6F848914B5A87146F22E911EAA2F498252E4A8751BCFC9824BCF4D12C45BA91C6421FC932481F49364A8E24AB148E24AF44D94192BA59B64279A4B84A31A429E98AD44AB9A694924FA2F5FE8640288804200800000000000000008001000000140000000000004004280000000021E0E767
+:804A800048821116043A941424148448A89042148582C6423868874819B215220240DC8492242AB14261821838322534148AB289712902432211D84241899F12402225483288C2448168B048F24EDCB04422481932824218834154411E4219E188816C54494808471124492164412813786112915810D842BC4452C2815E2119D2420149A5
+:804B0000D141C411814DA12E48412185B1C1C15949C84C2914B42881E44418F8142144FFAF042D54434C08484812B14538414B2416E2868838454B82422B124F127188D2246145432332818B1EB9F258241E228CD4C2FC2116C12E18CF127531E444F388111E224C64127084B91C568547229CA142185614C842448E38E024A8244B122FFF
+:804B8000C1725406260245032B9216041240C492111819542848812014C4211302005144001828481A4202248250C1141694182821B042091CD98194824B482186289444854408484F79092722800141108494148400C048A0414C188109422280D4480844484241001A029084C011442D11441CE148661410126114436814842480014288
+:804C0000842860A39044201234B14AA124611C12E12CC1421F81542315545A1D12121D6849C8241CC1640027428CC211A67422C11228E043884C91152D2286C182DA5248C0248D8119DC828548299844328C18B42881028908AF850F2D222013C484424C54422E1114C830482559164E151A48B118064324C2241014342419054D21182133
+:804C800012B848861411419113561484CA2586B8413813137484282804A1181222848B28F0985A304400C031122248418416C242192104255825181C68482213218464882942084B2C218082122418C1142D324968282A68914C241411924888141354482A811894284200F08BE160421605167521182A0118812256AA28848914B812449C
+:804D00000226E2888125D21445E842E8C2944812435282114443619A1536548C0218660346816624154401274248848C22048978280252F0B5FC50224883014C044C92242117248451A01614422628B488022A9428618D322C8C28410452181142211688A124122100282D14131928384429691281282F155884824C41A28484183F520CFA
+:804D800012008C02220084412042182401001C011140012214242221811C44146284200A203264C3E88904250880C1488B8120458121011008483F14054CC11483E1116284224143821184F22843818D549C85B452022E9830C16052CF24E228362456D26882F1443829455224C3C4911D2427421A8232346E8F9A9416F628242891DA27C7
+:804E0000418C64228C911C88CC39288B8483059B1770A21201C44732842A01A11D48A11288008481482521923A3E48101118D148820450184142182898128502423028195412842591417081081E484A8A84010080F47582201204112240840448A42250411148448F426411400124448009821217C468A412344141151804004230248215
+:804E8000200813189C8821822C0484468824F9A46F40824268828354221828813042848314181804214A0845C8184A01608266041902102444241C01005502844885028814421A04128810924829C814982AF4D58DA01A0041A012260822412818001584522182288E2C104428044463A124902114402C84814CA8218712288743444922D4
+:804F0000820280410427C28C614A184922846286E0A606140016D84152414094122800902821C01848258EC4A41B2413342844426A484A04436A444A12A424841044944200198404464838214852800480CC18290886F89CA5002200A3C434652132186025200412223644A885118918041110188811088511880B8A024E2421904440481F
+:804F800018C48C88802459818088D224041A18C284447F120E00C011104212040084285E21D062043603810080C4884118209236602360121816019C24822122254281041244002062212884A02480E28306002821601C8CD12844A242258884414208008001124C4262363C414211026904441652254D28125014811D44100311C08581EE
+:80500000C4411A48221498242200218F19466221866282D041012CC21800286284808291284C6822AAA42189F214284C026884594202302220024A08252201164814280414324081014F24331481244A52841685F44E85C048445C84222824046686011614B2446244844601C14331434821914D38141998589D1483311840B11844E2A1F3
+:80508000022A4518021844942228441CC92819C82284E0426918201818F8BE31B0223486E3B23DF225C44A786674443E4463F222482B224845B3497122EC24D2D6C2E2521BAE144F83772564321F13D2BCB42CD8FC7128D1889A2A4B684E661B684D216415361425F615184A754839449F48AA481CF144E193D4457982AA3B29C1846E86DD
+:805100002B3F45748881F6B4E1C0128A8282F148235F41B51131328F2321B548C148A376494818F42C1487284B1DEFDAD49AF1745C118C54848FC4B122F35111326D1E4376546A834F117124E22585922A8D218B648B24446B229D62C0881B21138151183E942BC45E26CB63A5D188F8B2887E998F86F9D29EB0116242B4B48CF122238D40
+:805180002A89D682C2622CB258C1184CD556A26537916A7D2B8C5B44897248F44A238DE44DC256C46A39B251F2114526F4421417822F45F9A38487954B1317E2471126741CD84164D26226B18898184FD9EC81942885BEA4F8421A4F88C6428B644D4643F8EEAA304140084082044800241280048C04822492004280028304100230481CEA
+:80520000289416842184258154121006E088048200A048002001CB25141F31F127244D236F21F31212AFA151222D12ED2849F3181887828F82518CC5DEDFD1FDF23F3D7FD9D98CF28EA89F16F46D199FE4F28286AFA476437B46B854F751435D452E622F2EBA62F2F1B217151F555399447E79BFB2F2266A7D462B442D25AFA6F47A7B2B5F
+:805280005319F4494AEFC6F74C5C8FA3F234646DE76F45AB333E384F22F239E6E023F1674445F115722F27F37D3D1F73F1267EE78249F7541C2F26F25A3CC7C4CFC1D1DDD7F5F29BFFBFDDF36E3CEFE3F97F5D9D59FFC6F5A5A7EFF4FF3E7B6F44E517F774765F52E673F7A2F62F76F7B47E7E727FF556996F43E3D7F73B2FEF867645F47E
+:8053000049686DA5EFE6FCFB7B2FD7B6D1F15958CFC5FF5CDCCFC9F254766F66F236747EF87EFACF8BB5AA0D4F65F527664772EF63F12E1EAFE3F773676F62F35A7C8D3CAFC3F32A5AAD38CD4AEF64F42F3DCFC7F52A286F48F82C5A7F5FD91BF65D79DFE6F7CECEAFA2FA5B5BEFA7B734E133F343256E23AFCEEE66F4F7FE1F75F4127680
+:805380008FE1D3F2F2333B8FC5F47E684B6687E2EE6787E2AFA3F2D2E81F94F48998CF8A92148F85F5F4F22FA5FF56946F8FFA7CF8CF86F7A99CF075777F62F624254F67F36E5EBFF7F76B5FEFE6F7785CAFC6F77A7CAFA7F75E584FA4F45E55DFD6F7785EFFF6F6FF7FFFFEFD7F9DEFC3F73C7E9B46DF7AFA7E6D8FF3F776751F13F138DB
+:80540000362D658F61F7BAFC9FE6F7B5775F7FFE1F67DFF1F21E3F9FF5F5382CEFE7F66724CFE4F684A7AE862F2BFAD6E81FCDB999B9A4BAF4FD9C9C4FADFDF2BB6F43FD74ECCF85FDACF86FB202290161F024114826034120C248608164116C62814C82D4481261445048214A129128798182211426A412100414200222001648A1411408
+:805480008224122CA2494E24928744F09D6630A44485022522114448020083042484148250818819A41484904283941600428C6545201C02A021438422446414801831425181F048248442412003415FBC063CF4112485F3112C87241F41324A1D24AB141D24AB9419B24A19B54A3924AF1479A4F84291478A2D914F82E414F9244A1CF81A
+:80550000244A8F15F2244A96E1A26459ACEC4DC24A1F4DC2C21F4952281F497248F29124A7241F48F64A131D24AB9419B24A9945AB9443B24A39242B944F8294924F8384F9244AFFC105B41E642E431FC162241FC112F811642B121D6C2F44D8C1F248A259D218B934D412F9A4482F1479A4C8816F82E414FBA45A1CC2CA8F55FA244AD6E2
+:80558000618216E5B26C452EC3DE2CC81B68481F497242F2812446E248E62491218F42B981B642B385D62AB134B44A38B4A7444B42A9B93694824F8AF55DF60080440200000044801801000000001800000000000000000000400428800400005012F0CE93001222214441100A8C2102890813048C02552802444909265148C4490748CB7A
+:80560000618C92188E42482D2218001283D122048C41C8C8388A018988174808C3C244121846FC66A18071A20483222B321126C61854882810658141112582321C32485024C984120244161461454183D314236412321E892A1404C42200814845A84184684838423D382E442601DFA801B05482322A4B212813D1A69218184B8220429160
+:805680005990292485144C62441216F42448A26152444C34391FC4437888727C23F64231F01881428D14504A161898C41E282A15CC488B168B42830443F62A524B161C321C9FAC0C2C010088440050C1809288411044021C2283034C4842518481430218460416A45200A012A0123042200281800898008043480518486F420F40140481FA
+:8057000000120022118054384002109182304822812A04290420C1884241200210B122080043842202421142204408004828F047B53021404842042E1883921C298A342A818741181E848478AE4C2E8822B8108142954289F184685688229494422936461E213C2168411374283142198288B44251128418D64C849544124D888C38C84CB0
+:80578000F4BD41804214485284301812C42362222608CC813182A44A91E48C982282482822468544F888445812484B4849A42449943119512188148D21D01484622442102975C4684489C44412448886086F220714400400288382218844112854814C0128842681884318116822B0128412289288122490220023B824810423242288622D
+:80580000211304800118008998484A3244AF3605484B422841108424422902221223B31C84499441452801264C6881888B82000010684281472881439422252881024CC12841004AE241548480481838888A046C91185FF20621234438128421002843841815322C244018084411302216468288952244465C1A26222462814842D111D0AE
+:8058800068E1810446028628942800222D482A41C414284A4822F18D94E0420140018118122741851268840030285812128324A11413218212C4242C24024B160012112232A012440022208421022460881664444828848024F29374B012225228434158C258325F81622282873224CC9148A9E8C4D118111424A1251661622C22E2429408
+:80590000624183B46181022218681A129F1B448D348391344E2800224256122CFA825CCC4738982E88484C018F43044D42442211000021CC148884014C21034889E1814451848942885884122428455248A44E248C71811442248282012304244C949848814140086044432224286482BF1901104482210112442128214018120129224123
+:8059800002104D84429812009022902425542410544810041044084CA4212200001004A0524100FFB10A2852228042044A9328150434467144011840024088A21210843214822F826421141228838422810622248D244828ACC4284815682600222002843048478443D6DE0B28A9021032328480012A8122012C11A412188C011860A6C1E7
+:805A0000836824488C244428011608121818201138184120011008418100002280426281FF4D456211004C8242C2218002002661248001496222493228481100C422492A8344644100411D2424810010480418001490146532682100212100BF8B02821012820149C14C4002182480414234220042180049A6848CA1412C014A2202422707
+:805A80002482701488614241288110240280A442008C04443840089F71034024C154C014240044150248C14800412143024529C848E0829184E9021A14682422A584282481225882108821028413021284460424C02A8420065F77084410044128A021613609116011158404604181160461002100C4D434A018380040021880314260843C
+:805B0000482100104844942820D4425442429B5C50241825C42244801478181438112183211114341430449044428385825224801194244E3220046A012254224CA1125621C214221848802591684189460C418428283FDD042781221E414003E9023418286C018D22242A4402842C0438316418B0480A21112514583C28442FA81294722A
+:805B8000441902284E141F84820144144942466282212260882210DCA80D288F2851246B2147213223D7A2F11E11181B1136B148B751E141A1544F43C11416E442F4181499F42C172CF2286EAF4496144E144E1C5CF233328CB2189328BAE128AE4216FF24161E128F43E1C1F12C448D198F42A1312E28A01126A62449D4CA1238242E880D
+:805C000021C5E244F2D33C2416361627426E162F52D246D141F22C242E24C5DD321243D14E142491226F23B264D186B226E415F241884C044F21E122B284F42E221F81F44448697564F4144A4F2496144D246982922C284E412B244F25B444364848A044C3F5244A85B26454C285EA41D488E642B228F5F41AB027E142E61101182CD28CE7
+:805C8000A145A41F2322C21237A1B4373467622450AA60844FC2A161C78243688AAFC5F438AA1AF46E12543676827A62544237431E1A8B1292265D84CB221E182A62812A541B1D6345C418A5F4222CA02228AF247364E48454841F2D051122111021924100222002001482281A5428800210022100420088001121111011121102218421B7
+:805D00001002002440014220F4F921342B332E211E115F5333115F33F11363BD3E2F31712294131F11F171515F54B151F5C4D44F6BB936F212584F63A7441F11E51DFD24284F4656E62FA3F1725E2F24D464F27626EFA5F6642CCFCEFED3914F6F7644F5282B7F69FD3627C771CF52F645462F32F64856681FA6D232D464F44C662D422F52
+:805D800042D644F424248FE2F2B694CD284E68CFE4F496E5341F13E317E131F1357119F23636ED62BFC5F7183BEFC3F337151F12F16166BF55F553516F4BBFB47916B412F5145225F223111F98FC26384F84F666FC4FE3F4664EAF82F46D6EEFE7F75F4FEFC6F2FEFDDFDFFFF5F74FF6D6D8F295B6EFF3F33C33CF73F36F66AFB2F72876F5
+:805E00004D562F26F242664E42CF25F46A6E2F46F664646F42F2212EEFE9F92C6C8FA4F4687A1FA144F233234F63B611F215341E314F63F3525AFFE2F31A3BEF42D251F31133BF35F747573F15F545457F53F134245E4A4FE3A3556F45A5DDCFA2F32222EFE2FA36126FC7E784E6A6F66224EFF6F6ECEC8FE4F6D2B85F7CD646F6292AAFDD
+:805E8000ABFB1724EFC1D2EDF657244F51F656348FE7B62AA2646F44F44646AFA2F4664C4F4664428FC3F3B4BCEFC2E286F664544F2449E363F336361F21F357362F11F33436FFB7F76F7EAFB1F32E241F52F32333FF35F74F553F15F537757F53F134247E7A6FE3F33238FD1DCFB9FD2C28CF82F23E2EEF23F16E7C3AF66C6FAFE7F76EB2
+:805F00006DCFCFFF797E5FDFEF6FFF3E66BF82F2B8BA7F43F23E2CDFC2F27D2A6F53F736348FC7F7292A6F14F446546F25F56C6EEFC6F666642F42F2383C4FCBFB2C2C6AF62466DFE6080023020041400226012440034C02004A12210446048504839412812110021C081484654158148C54140040012484444006850485047F8402822892
+:805F80000027222002230224110014402113021848288440A224228044150424150417414512110200830442004100002041840449F44EBEE032F4112485F3112487161F41724AD141F26A111D24AB9619B24A9945AB9443F24A9143F342B147822D914F82C4B14FAAC4814FA264116FA2641D2E4A96C54A9E24ACF491242CF4912485F276
+:80600000912487241F49724AF28124AF24D141F24A9219F24A9251AB9443B24A39242B9447822B944F82A4944FA2F42C93F0245A48CD521ABA6C21B142E1C1B6667111F86A9417412BB41F81D64AB934F44A11F042A52AD458F892485CFBA4588DA14F826C112E5AD6C54ADE252E1B4E252672D1AC121F49F4284217498B9617498B161739
+:8060800049837611E446D84192B85B61899844ADB24D48ABB443BB425B864ADB84F1519840084800814002004410042800000020042001000014008400000000004480020000005012F01EBC200149118802100489A22184841C01221815082890188004433444220041814824282A0129021638148336148002228183944826A421440066
+:8061000060434E28E01305A028944342512C1E252D48814551125888488B415884431354A442441074284208A4209B2212B024044860211E2428832241B8C84208204494111068118C252E021651843FEA0F124A32184D28407822568450844B218CB12898114E181A12F8211C412CC242C90143C1282F48C444AC02AA31269301688178E3
+:806180004229732264818D348C361CE6982841282E484644C8248B124C3148622CA2216E1147812F720C0045012641C41148811952124880044818004508004840080000205424280020210218000000844E11001118821014082F1C074004002042A8121200002D14504210028141288481241002002642144414024034284410011280AC
+:806200000241200100430200416BF410611143524A2F495223804144189212301846E141082F81484822B288232472C2D48224261236982D884E84848A812452224425981260478D14188382A214800550248985A14149E4852204DF550C60112825A628258212C8342C012901811E4410329281302A3624024DC22C642650428391886CB5
+:806280000844412D2240124808528D1512182200490140140238418C2214F4AF6E40411414381411800184008051128E1441812100862864A28481200286022A54481A2804244144234394240026086A014820011E48124324A41400CF270D68472449029022812112241A02101A0426942484182224C0242449427268628110428C430884
+:8063000083A24388C048281084324488422823C444898884014C044296025FFD0B252204A14180D268816AC25084844712482400100CD0426121428212502446844202A0128381440C214028020041381018223144848441442744125F7C01008081420420180200809111122CB114284218086042848100814D18128182432404248CC199
+:80638000144CC144B048212161838488181A1254281228688100CBBF24242449321228499228898172228E434858944951211E244D32418C231298146CE2425448166AA649C148653818A323B8242585D22848CA184CC34843C2381260871618E2C1A4A148876490244842430DFFDC05AA4404844502244429010024202401909841810001
+:806400000023021018A6214140082212411243044120C44498008A4442C8141289C1484C5284007F9E0460440040C41284168801812941143812401404101868C48001214184A442812608185281A40012004889429844E04402001883D184022489F261194008E02441381200008301801114C81410C81884800484614242848004414C7C
+:806480008401106441CD424004208A8422A328004182408401C4F02DF5602900460480024024026021400400004002814828412240C822801248020010080000218011140210A821224528011FAE0E14814880A2489444214081046021480081458211B428250184248081C44425284284028504A2214C914822680081814922010042902C
+:80650000441024F16E54240026C412406821C485440884008216182481022684881108001018381200814004228180016081412812322001004180018C5414FF57018C0224818D1243110826C212821098288C018C134C8685C114004352422B84414B1412228143094C220100842A64C1898D840168422092144941A4142604C429B12ABB
+:80658000F17BA230442991426048244410022450214004252204408814440288C184904610C4280023046502412002008C8448784804890800C608A2002FE90D32CA3222282A912822282AC1288723282C0320E22822826322288B12A82A84228222833222283A04238101122216841428826242203112218C0410028064244842489F8DB8
+:806600004852844487514085984440870444214C164204D02258484450221240B814C84248124348424102AC32248C2482324448C30422400418842D28221008002302DFC84FF216266F4856642889D18852C4CD286F51922A1DA28952211AC594EF8651246AE122782A3232222AB1784428066614786A68618FA63412AFC4E24381D146B6
+:80668000E2824252284961428B22228AE2A2921A52484D3461182094C4228D44341A74980318C2A183E47892963B21442C81F5121846BA285144C72116F43A14C5C4184911C45CC5DAC271247288FA444C4D181A644143C8144F8AA212841AA45145F614AC6FC464848F85A11CCB442E5483E487D8CA246D222E1861B018F55824382E883D
+:806700008D54381FEB081B4287212E314F21753668458F2651228782478183123212A55282801AD24E62C58D3CCB815A4E92286D143E222D424FE6C3528F8696228554242C62628512B82821F2186449C64C388085A232CD1C8B4189C8244358842E18CF6514F45428E7824F56031122112312E122182116612611626024E024024A0289DD
+:80678000028902282128214A024A121208100400218C148214848488C4824888C086808884084A084AF8864F342B7D1E19ED3FD7D197881F55F5597B3F31914B9F12F5CBD3AF23D133D4AEF4DECE4D22AFACFD5E7C2F88F84A786D14CF44F6D4D44FC456448D324B11CDFC27216FE5F6D6DE2F24B5B2E98263612F27B462E2A17122F234ED
+:8068000056CF63A2419AFB1C1C4B1FFE782B228F8DFDC8588F48B23EB392AB198318A8BAFEB44F487A64FEA983141F57F73C158FB2F373119B76EF61F97A74DF73F12F6C4F62F4FEFE3F37F52A6EED5AEF4DFF5C72EFAAFB1636AF8FDF8EF234346F4CBFE8FF5E6E6F62E229FA7E7CCFE4F73A3A6D6C4F6FFF4373AF8BEBB2F3361E2B46DD
+:806880006AF6183AAB224F67F574368FC6F4E4A4CFC1B3E4F2BC3CABBA8FC8AD5C8F2BF1A6A49AFB9414878C8F89EA2FFF7634CFC4F6742AAFEC41F217314B71DD3ADFA152DC2F64F61E2A7F25F71A15AF46F38A96AB773F31734AF89E8E4F26F68A9EEF83F38E88EFC6D746F16E644FCDFD647E65F624A64F25F52C7C6721EFE7F6D69E8E
+:80690000AFB4A59B8FC2E3E3F272422F23F71A1AAF23F17C5CEF47F252444F4DFB5C5C4B978FC5B78AB858B7481DB8BEBB16A3918B118F8AFA24386F47F71434CFCEFD331714BE344F43F32D3E7F63F36AF1EF61F33B25DF47F73A3B2F26F2FBFF3F33F31E3AEFE4F1DED6EF23F3AEBE6F67F7FEFCEF82F236348BFE8FAAFF687A2F22E2E4
+:8069800022FA7E7EEFE6F73A3AAF86F6FEFEAFB4F7BCBCDFE2F336366F66F43272AFA1F33A36EFC7F57E38AF46F4E4A4CFC5B764FA587CAF26B7CEADD48F21F126266F49FB14948B118F83E28FFFF4F44F45F7ECDABF3D064180411804452201402201840064400420480481704884411402002901230229014302608141480000208102DB
+:806A00000081D048021FB802211042040000440024001008890181004140082004874141440041102401CC0448004A018149140810848144448841F129B1C0421F4152281F41B248F1112CA3D4C1B64AF1116CAB941D68AF24B915B44AF93448AF14B924F44A914F83D41AF934481CF9244A4E814FA264154FA2641D2E5A87592E4ADE2420
+:806A8000ACF491242CF5912487221F49B248F8916CAB161F48B66AD141B64AB911B64AB915B44AB924B44A39242B944F8394924F8284F9244A9F6B092E5A1E4483C2446A61C12A41BC2261C92644DC2ABB91524247898D2143D81A23F148A563F148A14D184EB14D885EA145FAC8218CF158252EC387552E8A1F8CC21A1F49B62874118C4D
+:806B0000F8816C8B1219B422D9C1F42A961F8196AA5B61AD822AB44A3924A9B934B4427A26A8946F82F1594C402888042800004041042800001800008001004400400100000000000044C0280000008810023F5A46220121A504448C1201C9161801304C8098748B832D1812222210044821411062881088029228C48F2142542840180478
+:806B800018188A34148322848861824400481B52004B2912B2221844207282A134001D1420942223482482226848C022C024C3C3388826E24364422A880122882D2280E24288219222A2888412A0148A0368424A43D814D648F816513012C6CA128F410243C12814244F84D2841421D2412144024B414919E22122928410A4184F22D48482
+:806C000052843022F3C924848902CA83C22C8CD142422E4118148481A1944982828C2835284D128144C9F494D1001E24202802412032812A01008584C4A2A2896283208802282180A12188A042A08212002C0823022A082682A282828180E181840328484A024A22F8EE9100400218000028000018008002001441000080248108880016AD
+:806C800004008A32441008180080112404008841007F760A21290343120229312481A014848908431454488818C1200684282E4E44442810942449922C416228493A82002841282883044A31444828864804009084C4DF4C4A0222C0221220814228A21484001E444481884004681184288314420410A42844A60C68C0A28220280484288C
+:806D000056084A8124054E880080188418F4C9E940824142042440040041890A00418043080041B0844204284218412240042E144100224942240244804204490241000044818F490528444112874120014022028018040000406482400600C024400C00281A885282604290242200288100212001400822222F4E091502282130282C24AF
+:806D8000028117842112C1E01281913184466491008122130281132214024901410016850289891148A834860112818002414F888482815848F0F8A2901218120054204188011250124054842032182A0400000084202212022854448220028800800200411084084170440842BF24427211921416048485858443C818298601251144C418
+:806E0000181942D8483431902881282302402804282504222849B9816282282E148A312484601840082422A0818E484C024668822AB44905226022124981C21200503880718408134324812231484100441140C8214722284528014445014D1200860884221A26828241480444414490184348046F990624800141004400220000000000BD
+:806E8000414400000000228A322400A0820028000000000028001008002FAF0F321A4202802181028800800888001004220041412220024044042604490AA28A0228A02800000040042608444D4840F87617808183110212008028128482088800009024414024080000414422008002A22828A028400428008002814078480484E73BC003
+:806F000022420044203124004554444B222A22020010440220018E848A2A880290212A18342CB0448AA8820000004554444B222A2202418002450220F1E19C00800200000000002008002800000000004100222800002200000000000000288014087FAA0D812E484248604120024044C424288A0200008225022921818988084140154129
+:806F80004118C84842480000004444442228000081502A2829551E408881240100008048042800000000218001880000E0120840082A44044902000045248202004410041062822C0212004400000044A0280000000000008800000041106442284400000040042A0200000000009F230A44100410840100000000000000000000002082BF
+:807000001804000000000000000000002004225D8610381C4243041812003084302420020000404202129A02821014041534219028C1424200000041B0240222000084422424E0930384844848000000C0844C82820220080010128281898808002814144184848A8604220000444444282A020000401812F2C6CC100418200100000000CC
+:807080000010042800448002000040042042049084002002000000000000224604EBA20000122200008800820000000000000000000044002820020000000000001008810042EFE80149C1144301281218002088A88800821004200841202202004504A088004D2428280022000000000040048942688441F05C7D40242382014C0100882F
+:807100008800200800000000000000414F420245544460424302224180020000000000C4488B428936289F210700701424112421020000000088A0220000000000447024A4222A2202824F4802280000000000008400004AE6610667226D222E122B11122B11C0122582E8317111A18896D988E818E484041D4911489518AC448744474295
+:807180004B244F4222E24202284514E44272269226182B19882B98828E922582E8317111A1889659888AE484048C04488518EC84F63512F026222CE22221231102182592821CB11191818E8889F88841C242941581445C88684E4441493224222604284445C4246F22C2822A23A1812328A8182592821CB11191818E888189242444084824
+:80720000C485C848DF71060000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000F3
+:80728000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000000000000000000000000000000000000030
+:807300000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000000000000000000000000000000000AF
+:8073800000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000000000000000000000000000002F
+:80740000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000000000000AE
+:807480000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000000002E
+:8075000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000AD
+:80758000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000002D
+:807600000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000000000AC
+:8076800000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000002C
+:80770000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000AB
+:807780000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00002B
+:8078000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFEAA
+:80788000000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F077
+:807900004FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000099
+:8079800000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000000000000000000000000000000000000000000000000000029
+:807A0000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000000000000000000000000000000000000000000000000A8
+:807A80000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000028
+:807B000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000A7
+:807B8000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000000000000000000000000000000000027
+:807C00000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000000000000000000000000000000A6
+:807C800000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000000000000000000000000000026
+:807D0000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000000000000000000000000A5
+:807D80000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000025
+:807E000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000A4
+:807E8000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000000000024
+:807F00000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000000A3
+:807F800000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000023
+:80800000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40FA2
+:808080000000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FF15
+:80810000E40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000000000000000000000000000000000000000000000000000A0
+:8081800000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000000000000000000000000000000000021
+:80820000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F002100004100412222808242040000822028088828802202490800001014041004204204004004000017E48002401214C43428433224228849C2
+:808280009884861484C22443A2282A28088844C024C08482828843084C022200410044442844400441444C4284021008429F950E000021443024200210048E2400224488008800004024288242140400000040040000004441100400005FC30E221002418001220082824308100400A80040044922280A808888684220020044004100405D
+:80830000040000001008487FA708000000490210C4242822004128412800000082000000000000001004004100410022410000008DA90000000040040000200200228008828800002008000000400400C0240022100400220000F045BD00002042080000000000000000000020080000008001000000000000000000003F6848624100E41E
+:80838000704844040020024430242840180422008C58482240C821604220820841228C3222201208432882084C1131181006498812C42848AF520D0036020018418022C81282308182881882184A981443B684428222B4148248A486124C88213434244024011624841208819048908430C881402408F03EC620012825186244124420221C
+:808400002833824490A48A02861824C834A082848460418C08884C02128AC424458262C2210089048684C288604111CB814014881844342842CF5A07618041048441000000C08100122021044E24418863A2242230254A826148228001002A014B12204208008C0440E2880441288200CFE70526024160220011238404153848484212206F
+:808480001108104121A2844842844418812260222062484004804104001E2814194401884508C014414484CD261044C21125C61549B21482042824587011444214754164424CE1C422124894248D24222092222D24E04428D1140A10523888C14088E48409008E184A71126C412B4189022283C42844CF6A0A50225121184449810400394B
+:8085000044C8113014510049C144141024248404412844288031226048504823084084240C221411184144A961822042185484FF730226041845627222281423A442608142466424005B1487423028289422A6C42C28842827218902438C728184420211402C1108160883018B1C46C3189849043014439428F0A193144661261322012659
+:8085800041C811140041A193238191484480424942084532C84628021858104108684C042921268218CC8485525860813E81842F2118C8821220411822D9C80D324A411872120C481048185284A04248830228148C84424264813084412745441023110D10889418844482302214E041480822004684028D2281869412122FDD0521411047
+:8086000004252481222496210021840046880118814041880210424C0821C0432081220260810025048068C41228804108A220021F5544B2616122842512D44392181993482688028427851AC4181024C1289B12814111244A32446A5142859218164208192424C13883B14482628969625865F288118112CD5181291ACE22848C72329867
+:8086800088222CF8343A001664121694182004144825411812112832482E4814480081848554848161901446014484302244242820088440089088821812429218801884012FE1022844444034188484000044000049524A90528004608C4D488A0180041001009028002648011120E448241424941482008C0800FF340B1289044100215E
+:8087000080B481628583048228102C0884846800614412848448181140041290284422C01481109848001458002021420260881F74084C0420B1284104004422282844204214C81100450848000000401A48284194816430482225148841A81800188110688241008C04486B1640088002825018002514E9418482118405814100101C01FC
+:80878000144B48C0882158160128A848904830180084824088012002888882488028B2920200281C54688410341241C0420028241822241213941843244414B248021A8224140A460248102A110822410048114A82E48225B128018044482804EF6C0C902641440083A12128208103281810080012501A21302444C5420841284130448CD7
+:8088000011068053141280022848124C022E4C0040A612488502EF9802581429040049044427218028C2248119C821124352682004848100184245628141284782261101221C128502C01C28813880D242088694248922C2840088EB4F40040048A012400442804102D9024112121006115028001048393483A4128154222044C518481808
+:8088800062243881001424004B4A83440483084D5E4048A2422323F22412002232811604284212288C81220238AB2126D4830398625C44044AC8118858849042800181282143284814E211028381121822884494428CF2D18AE04151452D221B2332642B17DC81A52816289142A02415D18CF214241F41C2142F346187461151914A28F6A7
+:8089000098988484A7144A82D324064D15C0244E289F115228660C288F589A281B642B4F5887528F878642F824846AF26284207848E8CA0A8062424744C9D28802897226F4221529E592BB34213828842752878218160AC5D42CE284C42447E2DD1846F43844811E18CB52D088A9728AC241A332232E481F811268414A01AAC91818141E7A
+:8089800088181688A229B088F14C4889AC8A2F5D024F26C44A411846BC1651C8807214F248248B444C52442B114F43AA518E12C782E3B21884C758C762E512E841F4244246F1C4466CE4D1785A6C5297451F21C4A684CB414D142E144B318D29A7C3842F85144834556B5441EF42B9AC7842F884C84D4821468AF276FA203426008422207D
+:808A00000288800888844C084C082820044E24800242308841C241824110040041302400828044044400402408005F6E025E5275DB645257CFC4F41C2E2B4445D646D244F9A4A88FAAFE82944D862BCC8F68FA92914B918F81F81C1EBF33F62C6CDFD2D7AE74225164EFC1F53C6A7F5AEA6DF987C59FC8F414FC8FF6FE77344F6DBC82F8DF
+:808A8000A4A44FD3D3C8F215358B5785F24E4C8FA2F8CE889FB7B552F14417EF89FD74766F89F9A4A66F46FE2CEEEFADF9CC8CCAFC62E83F19094E541FD4D424D213F25858CF81F14C5445F616366DB6AFCBFB383A214D862BCED7623F13F134B43A58C49F12F23E6CDFD3F35C1C26D964F9161CCFA3F647458B559F98F9E8193EF88FA6C0
+:808B0000FCFBD94F75E42AAE8A17139F83F231298B6785F64E6CCFEAF2CEE49F37F732743CF1DAD87E5A2F8BD924F24E6C8FAEFE5AD8EFCCFC88C88AF7DB35C0627F32D664F23715CFC6F6341E2B744F62D242F2B4162D8C8F2292324768EF45DD68D316B184F2882CCFE1F11F4DED645F52D7A5D553F224A6ED4CCFE2F627655E567FD924
+:808B8000E5D1DC44F7C85E7FC6F2C4C66D444D244F5353C85F52B2785728EF44E52AF85ADC9FB7B5427245B7D7FD6C7E6BBB4F62F24644CFE8F49E986FCCF84848EEF85F98014F64F22F674D267F53F3585AAFA1F146744F62F216344F6BF33AB88F2BBB127184F65ED4DF6AFB2F314F4BE36BF11E1EFFD5B158F6357D5FE4D573F232226B
+:808C0000AFC7F37C7E7F54F4D8DEFFF9F57ACCCFC2F7C85E7FDFFF54572E264D24DFD37219FC35258F4756E8EFC4F7A4A6AFCDF771736B755F74B1D7FD7C5EEF8BF92C2AEFC4F4ECEEEF8BF7CCCC85A8AAEF9B031820024008163824126081004412441244128524410400807148048130482A012A01400880413824208204008C0486889F
+:808C8000028B243048F08FB69044100441901480016200800189129428002A044D488184442E484A0280858224042843223128001048948820240180038B84800888148FA60A4F22F4112485F2112483F4112CA3D641F24A111D64AF149921AF149945AB9443F24A975B422F547924F842914F82E414F9244A4E855FA2E415F2244A871903
+:808D00002E4AD6C54A9E242D4A1F49C2421F4952381F49724AF29164A3F48124AF14F18124AF14B981B24A9945AB9443B24A39342B94478A29F92448984FAA6469C0421E68A5D341F66213174185C224AD131D248F749921ADB7512F243921AD9253F2429355C8B177822D915D58B87FA268117FA27888B12765596D4B9E256D4A9E2C6D8D
+:808D8000491F41D63AE849523E1F49724AB381523E1D248F749821AF741AF4481743F24A1643E3647924D842F826482D944FA2F59965000000000000108202000000008001880000000000004800000044A0280000000000375C20A42110021008281A82386248141849021024823128D018044146184898C84618A81487244812412281AE
+:808E000084D08402844C11998100149024668801488024E42C035042302C2C14446241A724C5029018830427218D911646418F925460480030542D41326100122248160224C0318868A02448428B14118B14804102838AE841721411F8DAF3C04243076902618469B148F216284998622E4883046B12B94846752166225E28F0518460481E
+:808E8000904835E88679421C098489263144218542A82186880243551C466183C059604383361283E2283424433158FFFD0C00402804002110021811188021018418414008304849210400522C0548122200114382148822242814010000822021048F4D0600001416440200A04800211100218002142440080010C818824D42282A010065
+:808F000020884124042C318118121441A8128D8412424840F8195C2054127024C812832223012028623C48241051C2A67B6438481E248CBE2454284C522836B4681835442AD88482611821889C1AFC214483048B1430C4222E42852128345824C412139414A24841DFC5082414C0241C7112A812180082105122001185742AD248248422E6
+:808F80005C24D086424AC448414684D8488A948221804864148984418CA448207A128108C9845248874148128A2244F8295B200410084C420200A0864A8804312430812226C81487124A1208A021A2148436084331211A22782811382482A0141084334384184621C18218881361444240F4BFAF3419C3418912088211E160248092232D51
+:8090000048D082028041024EB216A12448830842C90441583D42814889C24424288186811188626426384218745881182B1E86086688B11A22F126ED00481115C284260840285281C38422981824438402812224221024489422D0A4028415280C8D42C84CC291C024C12E1181C0848490188128422418005042521FBF024232451224C830
+:809080008181122818800100118424430212608441002285042136081822288830188110024242290140280800414149018820D843025661134D2BC5022611981460238166483288895183412C121498121A223244414032285084C44289B14288E42A24A8213F810245311C8985D22495A8256881EC41288264689634148384F118242414
+:80910000AFC60A230A1011444843382848141225810422A3043880A2488F14212244C8244974487422A221AC2164822840142C58288A0219724802800413A814842CA143818022088AF43AAE8021011881489011001001004001428012880414426248004061648C57434A014518081902B0289421B028CC58C0481068824822200270A64F
+:809180000A4302C9E1282412341440223812202758621830C816015818448904848C58421608C02826480441182C414408810082420089212183018009812881FFBB0D8214501210012001840018002901C018111848210012840033213412121A42120593222484614412B01808881880011002240028FE5A10148E14240421100200107E
+:809200009118908880088D86482E9840042908148C0844854114E8C1280248A818438402000000108288A181449012122F46090000128395481A04001668642082214502A4304819418804208102A02132282E424018048B4144808225322838881160821008800818144D1A1400200420110816010010480884220000150286427882020B
+:809280000040140A224448002002818118A442A0149018124A41022088F4BE7FD08211F412464D228D4441604264C425C884001819584218A04818200811404454844C4108005341082A0144841484B08191818218810000A618184868C281CFCC0620098021084818802101122800A014420081488C42C89112388384110814806281D060
+:809300002423D128E44451B440020024002800200220F213AD4018924A124308008112407C12C2221038291244188410021880688880418458122C089468AC2E84C21183220483257211149824848444AAC124905822A542F47137C0148A311C4AA4144BC449810227498B1150228051A84B18843B5B8F84E88C518AE2AC944C83D89AE26C
+:80938000C8993844118145521247E112278149DB8EF4CA1497829B4120A2F2BD889B81278818A3A52189E288A8A11A7A42088DA1C1CFE34972247286C11E27518F485468124E478F41512925C8994AA119A41227958146A411F381C1C4C0218071441294582D1826D18AF3249E3B324F48B14C63A126C1285E142AF268448B15123AE582A7
+:809400002154888484302826CC18C9392216C82ACF2A0F128761214D3267831631488B11241830184B6125F33A241C99299A0548285AF4181B871411467A54321A17839668415EAE76B458C2416E21267528E445A2431CF4461C5D282D4897988AA2688BD15381F528121E1C1E324A2588D288B224B122F5DF470080028A042841842C085A
+:8094800088C08241244B42884B428843928843223424200220182418328820088200414840180460881004413084814B498044F48E1214476A6D264F235346C7C3CFC5BA64F6585845D677F98A888E822F4E9D966FA1FBAEAE6F43F1A466EF8AF26C3E6F6FFDECF45F12F32E667FD6E484F64F2547E66FC9FAC4C48AF89D3E6AFA4C85DFBF
+:809500004FBF61E481FA1C84CF61F1D4F45E62EF44D2F5F25E74DF78FE9A781DE32B55DF75B54AE545E5C27184F44C58CFFFF77E368F85F1BC9CEFE4F45389144F63F1167E2F23C3428FC6E441F27C785A51A87D97EFC8C9122F6497866FA1F92B2BBF9BF99456EF8CF5A8AA2F8FFDDED4D5E9A7F763494FE4FF4B21CFE67A36FC58489A4E
+:80958000F99C1F4FC7EBE5FBF3FC5F4FFD34E4CF43FB94A65AF7596BFFD7D6FDF2567C5F78FEBEFC9D6BAF4EFF5D57AF85E745F5381CCF43B164E727F77A38EFC7E18BE9A7F5B3C73467626F613616CFC3F33888CFCDE244F47C7C4D167F79F11A9485B252E76CF59A1EAFABF95971CFA5F95A5CEE922B71EF84F5C1D58FA295228D88FF87
+:80960000F6F4644EAF81A344CFC9D174FA7666AB7F5FF3F3B6A41E64C7E9EFE1F1D8D8DF75F14E2C5FB7B71AF5A8F2AFCCFF79F32F8DFF1913EFC5F53838CF83B13CFAE8FC3E92AF8BFD3A384F4EDEA8714548F3B6162F617216F66E2EAFC7F5586C8FC5F5743485FA9F1F8FC1F9989A6B55DE56AFE9F12212DF5CFF5C9AAFC7E723F1961D
+:80968000FCCF85F5B9BD9FB6F54765CFE5F46B5BCFEFF63E1CCFCDFD9C1CCFC3FB7C6EEFEDF7F7F72F47F63434CFEBF3BEAACFC7F77D77EFC7F73D3FAF81F5B9F3BFDFFF7973EF8DFF1913EFC7F53838CF83B1BCFBE8FC9FABF8BEDCCFC3E38EFE243EDFA40549012180011816080016081A44648144842001128504815048218118814BFA
+:8097000012B026016B1220022B128CB4246181E089244208124480220190284004DF670300894114CA448084419412400200291294384F8224648242430280A2120000400800C90100421222008289018112442648044448388CE429012CF4112485F3112487341F41764AD341F24A131D24AB9419F24A9351AF3439A4AF1439A52F14F942
+:80978000A548AD914F8AE414F9244A1CF8244A16F1254A96F1214AD6D5A2F498242D4A1F49C2421F49523A1F497248F19124A3F48164AB141D2CAB941B28AB9455F84A9243F24A9243B242792498924F8284F9244ABFA2032D431F4154381287341B21A73419F248138AF248978AF24AB753F848B353D22831212F347121D812B127D412E3
+:80980000F1215A4A79A7EA1578216A197FA26C192DC9DE252D8ADE2C3CF8916CAD831F49F24C839A724AF381244F3481D27AD941D63A9B618D972AF44896226CA143446F8294922E527FF40A84820000000040042800000000001880080000000000000000884004280000000014F0AF958005CC03122880148204004800818C15868491C4
+:809880001856C8421028210182488418291C31421981381A40112812A4284811008381B24AC8540060426028BFB30541829081281542182804004280041220562842421048012830148B414321E482942C49C4A210322120023041818628A21C1E84828081388880244481F239593044C247811328C12121304210042A84840489B1481184
+:8099000062842C95581A6485118388A18143C1C816944126BA64585846A214903920026054D0846812AAE548C1882227898A6488408246A129479E8001222002818C0448000000004E24100281240028001842845284422B82112D8200118128E0882204001820341400424140F227EB0020088800800800000000000000000000000000DB
+:8099800000000000000000110010011400775ED021324250441F129128444245F212282AA1483C0850824B1129E43A0815045AC348257281415498281B458423188841A4A24271442A91281C6844611E2A2AA1481C082425B81481B4A24842042827857EC8409222514C219328144224650C1F12C61288234C98448AA1831874128CBA8930
+:809A0000447164448262141F89C8482189A41246845A225186A41289EA140450C42581F4211290824E48418AA1832C514212A886F8F387002008880080080000000000000000000000000000000000000000110010011400775E00005014441812200100001130210000004200230280420818008221400149211108004A085400009200B2
+:809A800081B0760341105D1A2354A349140848210016622881488C019B411162C822282372487411344647114968431AAE24430828166121124A0220B144410213A1185042412D84C181442830486F4F0400154229146F448420040090829142001344A1428A044E22904C1743604182362C8F2308A6420129014118184C04211C8C08255D
+:809B000044948644884128006F190C44100C6541222101182100121002930383010022204242C244144302804404208141218601841800181215040084890110C8488FFC48B2582221352811228400C4441091C8490124C092121002224245820826080023823124816190484222904413414244024C5884880000103234F072BA148114DC
+:809B800042415084125024504181892201A08300809422404284A4C348828D4413410140534840843414250200400428180088240022290C41BF9C0C00402141012229041812404141886485203422404901119481428024419482808101130150848006221C012C0442897622A418420080F4C59134221C01260545110829140A1618D9D1
+:809C0000185414842A314A925848508126634455B23924648444194562621A58142410D4816144235242441E4124281C116264C188835A2682422288361474DD04588041C8118C82811244C411009218A0841224902222008004848AC24880018092161604800181482200009280242482018004486D3E00183614043048830283028110F7
+:809C80002405899428460230210022211160113E45602120544110121182024280819114001188001858402404F037C70022248C951218002810A438432888A8241A38C12DA18AA22818128A3288808A8688988888A0122312B21424B22488082638246222908139814A841B8848848242044E243FED010081400810088001181127821228
+:809D000000184112405124800441215C8101001211994221844214040000003981212A1144389422128CF184A200801421210AB048811148040041002041824182440888C0488144844B124180041A1431411428938442881888184448044C8248240288E08E0E2318447444022130128420381800004E118426082214002A6418352828DA
+:809D800001A41A24226128124311C41220020016021414801288A4240010041C72E10984A04100431248246414221092148C641400120080050000004901432404840040840440E1448888081A0A88D0480800A125027F640A808104260823C222228C128802288008194111CC148822624968845085828425C12C1A28588184828A24A895
+:809E000014418298CA0120811941048604830B4A8104F0D4A4248002800228004D4200120040B8240100411400518882224222004418182444111180444221082082214194180080044C04FD62C01819C44218241818238101400438181B21210038218A92C244582888119D442810C64182266482118A954412C22D84174782622A61C342
+:809E80009024860844429028002B2156F492FA00136BC169C41A188921B12A52C9A38101748F88D151F6C849111F88C13C6B114B113CC1248D481F8854814F5C78186814853C188E544A713434212A511747221F4796242E48D3B92164452B1217A8AA7994322D8B38EE8443A84185A879CC62114E14B50729210446B41A7222449A22A001
+:809F0000348CE883E2483194484A217134A94341A23D211B464336E200F042A1DD361E83584325F189132335941AE15448A1444D24481A93D8121C19D15149AC81C5B818FBA4947024924486B41CF2BC8524C0344F22E1B121A2212B628FC2E185A5424C3288238121A78329F188723C228BA28A1AA848497A66C3211D281F48E5839C342F
+:809F80006DAC2B224F4A9C2218BD45AE843B499886B5C2E856F3C281AAE248B8186211A0994584E14644E8426244424E322AE4AA05002002000000008084088810082028048B24000051A0824241800880B424088848810082448220892208008072A54522F1253D8558AA855846A5D86CF122685F77B796E92AFA929447488F85FAA1A34F
+:80A00000BF9EFE2CE59FB3F9888A2F2978957511B182B882D8775213CD295F9DF7BDEE5DBE8BD447414F63F81C264F6AFA273F3F73F9B7973F1BF42123FFD6766DFF2F3D8FAABBAAF921391F5159555F51A222CF86D2CCD14451CC4F61F76C6C3A7316E44B4332125F52D7A851EEAF817124F62A28EF43B34AF47D77AFC9F998922BBB47C7
+:80A08000498F81FE2163AF96F62DFD1F32F994966F49F927251F13F7D4D46F48FC47FFB5D99DFADD79DFFFDF4FFA79F14F41F46445CFC1F2B4B67F73F737177F7BF9F3111734FFD4FC797F7F56EF2CF9A61C1F9BF3B13157585F59F99414CF88F88C1C4F4AFB2C284B57EFC6A6334741DFD446B232F22575367C225E8AE7C1A1CD162F87C1
+:80A10000F565472FCAEAA29AB24F48F15C8C95FB6B695FDC74897B8CBE92F197951F15F9C4962F24F867A735F12D2D9F9FFFFDFE5F7AFAC8CD4F4FFB54964FE3F381A35F78FE15B55F59FB95E54F6AFAE6E45F7FFDB7E5BEE2AF4AF831391F11FB15951F51F838B8CFC7FB24A44F41F814144F41F57E584B534F46F76EF1A0235F52E3E312
+:80A18000F1321EA781CFE3D28AF23E3CAF87F57D5FAF8BFB38B22BB14F49F17CCC9FBCFC6A79DFDFF7B113CFEBB192F1A5A51BD94F6EDDA2FC776FB5F8AD2D9F9FFFFDFBFFDAFAECED4F4BFFC1C66FE3F382A24F79FB91B36F79FBD3F14F6EF6EECCCFFFFF5FED8FADF9A29CBEB91F19FB95154F49F9B424CFCBFAAC3C8FCBFB3C3C4F437C
+:80A20000F77C584B534F46D75B0D0000002021A241229608123011301120081128001110314818819820024F12012E11C0113024481492002001844C2241044C024C02FF4B0F232A5124160812400884001024243248482432202124A824214008881614044905341004698814C8282A81041982084C088B844888000014EB79C0521F4162
+:80A2800052281F417248F11124A3D441B64AD141B24A9921AF243985AF14B9A4F44A9743FA42914F82D412F924484E914FA2E414F8244A56F1244A96F1264A96E5A2E44DD2A6F4D1242CF4912485F29124C3F49164A3F48124AB141D64AF24B981F24A9253F84A9443BB4A39A42BB44F8A94924F8A94984FA2F49CC6D0A4F5116485731186
+:80A30000744473117C4C5241CF24F18124AF74D941F24AB2512F347324D87A11D45261822D956F8AD452E1A2C5954FA8E45158A296D5872479226B516DC81F89D222F8116C8D821F49722C6241AF34D841F246921D242F64F91124AF248BF2481543B34A11943A43938A6783A9D8A4F1A64E4008000020020000282004001400001880083A
+:80A3800080014001C088000000000000281800002800002FF70C6422E9821129A1240047A4001846B11888688B211CE14158C11AA4428E624332441C5142441004224C1A3424128244285C09203128421800820088188C8448B8149484FFC90E218216021A02848D22283018298C8808121504411B2418CC084113281204871143343B4353
+:80A4000032182B1400251554124358828C4181F482512225C98845012B841A38182D2843C81C4494D01F0D64626C0218A024AC02461624A8824212981B9230112E946C91142AE46B34A18A32144978148194371962A24EA485247252612814221E8981144AF1689149961B8342E12822A818AC1868842C11CC5843F9FBA91002A92171282B
+:80A4800021110822848D124818139888506840944185E18804409444142181418141121810441444D424488401240080180448208133848D8440046F5C01415024288012182184048200811200000042484C5284204204800100611018814104208614088111200112812228228148FFFB0F422222818749244E14A4641E29A112884E18E4
+:80A500004935884F12B41854611E2445A12114CC8224142834288AD24251244F8281918422132968A87081A81284301882838161C5C845B81A8CE24A9118B0442102AFC70680C22683321C221E48304258210016C8188AE11462814449128192414984548484404CC2144C61C110C4241C91881D82501C2A01200590184C813C1C8B1422A8
+:80A58000874184283884484E599044002008619445722148A88188484614488444834184018C624248A04228A20023228118220884128840A84284863818904900238821AA21604422F0E577A014484441490495322168142D3CA0216538452143C1124981034CE18261144311A481852405120012232148E484814108422924C1428B287B
+:80A6000081212C48881898122338228C882813E8650A89B214146812904E440081174880820C24106488412B12A948041E8828998831816441944343D421322823562522463624811448C014236288255124289605002A1402448FEE0D250411189112403C12008411200148422004420042840026088C280123081A24215284228522089C
+:80A680008484A0180012400148201108888B27902644C43695496341DC41922224178A811845C84425A24156F68418442393D81219E484181819BCE141E6410843F382143722124B212E1469F3442845E28814C2188D421ADA82194253A4888B81122B4823A2498928D184F89359A058121410C44834844A51811840A3481C0144003A0409
+:80A70000418D2440342412188110C81800122EC2501884248C0219240481288D828218226400902880026FAE044C4412084A01105482164684440812182416082004164414020012002602382828128022820400C0288144828014488802C0188C039F2602B042022744241E222240120884584850218426041502841021E4280284F014F6
+:80A780002844604155C2446042414424261438142422C0242C150441908488C948C24440F8C119A01800188444160800A04110480810A812402804424004648470129818228C1228041092481848811608901883088C242A840220810270710214002821481400C01B6441182A24814102458811441208212A0800106284002D23428142B3
+:80A8000000142810C421008CCC14202101A8002CE841F2CE7C0000801104414189010000444110843144181A041004414481302812810028812880A121129028828884101808814A028C128803FF12070010480CC3122842241128018511C8124418008042882101822818001C88810880012110280410446441121681830181184C018417
+:80A8800022BC0D435222C4001608222588424814D1220621211C117A2A14C221A14410E14418811401440040C4122881265884D042A8240021190C24428F28027024A3844C318684EFC40E3243088961428410084024418C01818122478212454848A214C40022CC018B21188302800432008922044008AA01848288A0211218668446054E
+:80A900004FC30D2518C8452D241C8CCC14C045404262248C22014440021218A18049C884278810221441118242081C14681420034792418444802734182604C481841042F47D97E02322584C214F2BF4581C10583C2895B448D125D48A35129D1245D8E4723E7E1CF2444C8B148FA171483442160583DA82F11C284F81E2819316AF8252A3
+:80A98000244AF434328B13C5E822761CEC8134684631285968819F89E4C4C9C8AF4289CE1483F2A4118B64AF41742411F8A4ACA014AE4C21CD34544F22DC41D284D282B21CB11461212524855184AD163E1150412961822A14C284491254148B4329415248A65814238A1282322285A9329B246F417118C22C839238490118CE288783AFC8
+:80AA00008942E441AA824A7218D184F1187D50472542EBA3F44818F03C186446444EDA82F45818F029482321118AF32218836151445F8154288CF822442D8C4544B14A31218B611AE18472218454944E2242482A21F82428418CB2A2E864B898345D1AC41422CE3885F8161C4F82E1E8EB42F2E83810111401191412312211221904190418
+:80AA80001154400114C0214041C2212CC4212C44C55285C442442415445241504129111112111211121132842143182211220882F0EC5D143F32F2272B15FA3633AF1BF67323A55ADECF74547FED523D433F74F45353AFA1711E5B9B571255F322373FD1D5D5F51515EFFD7C4FDBB755BB6AF65B49B7F27FD3F46C4C6FCFFE4A6F7F58DE55
+:80AB0000757617DF43D27CF246453F33711AFA8E8FEF54D437F28A823D83BF99F88E1E7F715166EB11AE262F6EF69611CF89F1ECCC4FC3732AFA6D21F022227F3656A36F73F37A713F77F63B23E5FD686F7F73F21B43AD42AF84F65313BFB1731E7B1FE942E321F1262F3D4B6FC1F53434EFDC7D4DF924EAAFA6F64541BF91F16A4EEFE35F
+:80AB8000F47B69AF8BDAEAF28EEE29F4114197E16F52F24C453F33F15B79CFDCFF4C5D7F32F28FADBAFAB8A8BFB8F1DA784F42F224922F6AF3FA76EB3B8FAAF1EAEC8FC3F33818EB2AE023F327662FF2F236327F25B754D7DBD2ECF247446F42D2FBD5A2F44A72AFA5F51B1B7FC1D1D8313447237F62F3141DEF83B314F18D9CC7D44FA250
+:80AC0000FE6868FFD6761CFE3C288FE7F36A298FAB5A8C8EAE2B661B7345516837244F47F15F7D4F48FB497289F28BA58BAA8FA9BB88F91B19CF82E263F3B2B4CEEC8FABB2BAF96E6C8FCBFB28186F480F5D277D66AFD2F23C36FFA1FF5D3DEFC3D3ECF26F6C7F53F35A52AF24F45951BFB1753AFA1F12EF91F12D374F23F33F3EAF95F5D9
+:80AC80007F794FA7F7CDCCC7F47FB2F62C2CEF82F2555FDFB3F37A3CCFD7F3F8EACFA7F5A2AC5F54F41112EFB3F32A2C9FA4F27535EFE5F78EBC9FA6F72929AFE8FABAB89FBDFB8989EF6FB97EE34AEB6AFBF2FC8FBAFBBA98AFC2F7B8BC8F82D1E1010061846B12844150241648420884240084443048202408400485048122812242224F
+:80AD0000A0128480A4121E48430260896081E08184028902818228F0DE49800121B0420118840020011A54228418D02252848901184598882A048C24E482315822124800003028104C088480228404002688381428224C11E4E2072CF4112485F2112487241F41764AD241B24AD141B24A9921AB9459B44AB924F44A9143F2429147822DED
+:80AD8000914F82C4954FA2C4816FA2E411F2264A96F1264A87596D5A9E246D4A1F49D226F49124E5F29124E3F49124AB141F48B24AD141B24A9921AB9451AF443924AF44B924F44294478229F9A44889F9A44A8F140645E2817428E24134481E248344941844AF4489D24A1B94BA43B24A39342B94478229DB82C4946F8285D9842CD1842B
+:80AE00002CE98234881CA5298CE481C2489A96489A32488AB248C12489C1648F4489F248B4288B94228B942A84F824484AF9264889B924F59DB540280800000000440000000000210080080000140000000000004004280000000025016F5C092544426821181884402801188502107418144252488301848C123461242845A2141A32286C
+:80AE80002249AC424128812B21A1C9038CD248210220212894284C313243A2428290C8F073A9009230842443384216A4124116183212D0818401902440440810128441C818264822082400181240068D54238422E48238288140088344884D18B428781441F8DC7F10A41C25C8141227618C84A12144C121AB12209414C490242554A44057
+:80AF000078324834E5122D2845783268231B82284C986A445A0212C42781CC914A478242A88C72280481228991288E34422488CD5183F13F381002201882084481121812245018C01200841884400200208104848004008D1228214C2284828112081882428446262164824C688288F091FB400200401408810000480018901200404102A8
+:80AF800000008400822001001181440000002110120400004508E0640A3011000042C05111218014911241814114004144481128311023044014424142012840411841012180048424000000005F6F0924000041460887141400421421418301210041142C14612214409148004C18120100111005002400230425480400004508F06F792D
+:80B00000001C0100008001210042120041130100440000100200001850122042088411110000002400000000DF350100418001000000004344C4180084004800220028000020011244824100000000824240048410384400BF6B011118112180024301428004180040022187424948082440120848C028232201232288120218121004843C
+:80B08000002100004A0848824074BF0D004002181048080000100283024180020000009042120000002481240000214200000041002012F8C359100115028003894128044880411416C82250C2859424420021008094421A32221818292219948285642100411002100210044F8408814840F843480012419012004400000042804108805C
+:80B1000022180820022588024008000022100218001088048242000020348428411F1C0C0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F8004000000400428000000002180018800004001400848000000004480020060
+:80B1800000001002183F5F0B0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000010
+:80B2000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000000000000000000000070
+:80B28000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000001001000000002001100800000000000000008008220000002004000000F07945004100009042248985021118100881005E
+:80B3000080014008412002008002000028812880628428100190880084008004CE4680021200252801005022244002443B18441B84103121111001188001004082023605148011020000881504800C001244D05902402401001829449258245032184058248301C82041018400000000282428604100800160842810014188204C08809155
+:80B3800044F0462A20020024840000220040023081441110811201114418281800000060126012842602220000821484000000003F430E000023020022001185010010013281122800000021818012042290164062411800004001608100004C4A08F0CD1E1062725942C4128C92286081234D220523C18416B85402451A4415416488656D
+:80B400004A324C1B21804162C184381654628889B21892B2481CE2818458489D2220D128148118B448F82854208101243F440740544124122342082608241194184308720021854421124814021A02105882281A121402188D222A614419315882843C021246021820A8610084001F8D4A11C221231224428802122BC1204502C0184111A5
+:80B4800085644311184482A1D0C24401290143414884D1246228C982C18212280044841011483188418C5448B0148A01F07AF910C84410A4212C028115182634422841182D11E0410220B212782821E821C8842534442C41088445381641813048271A1822865A1418121142882130128400687024A882F0C3C55028482001602100266862
+:80B500004384890281100212002508111289085084D02863112088921E25344240222104144100286081806C220021292181F4417BA0439024288485440C401102001088582214AC01008180120100004088240412188140841202818C0100103212188C812448085B68801342B42461826CC2188115C821235682844418251862231C415F
+:80B580002A8241C1888243126544C484AC22419C824E26465442212B1A87212A2194262321018424D0288191C8289028428624013FEB074844228041582440428C81041038112C1804126088891201250A20112241084D188001891101908C11144485A141882800252291121A146283898AF486771002212428181C1182011A24881248FB
+:80B60000614824C0168124C01210140882804848120812441812186081001301104101184088410287222840F85CA68004852414415484288CB48216018C24A9412B52C182481442839288414200124648812102A48250482226B41884A8C24B942BC282122D281A34C248482622688142004122BFA30F00181001242411114588612124B2
+:80B68000220012402245041361441440F1421812211008281188A4002841A10081818012021002004844189FD403503440159441904441160414904181A12D5445120460112181604143C1889088148001400816810844981061284824263281832282B1A82404218440F2BCDF2048042881141685022814003416856182C1C01284200A3B
+:80B700000081831102241901908200A1104214011608221001A110048552284008148F2F0E4A1108000000804411044042A242800281899128A4220010410825E18102C4490148980000111426021C04C48032244843021A82F8DBFA1465018044626140714862AC16C2848CB19822A4A420F8124A8924C82449241802482110A2142A28FB
+:80B7800086084A182262836283984ABE412B481E42A084482819A486C01252A20086088F620C14121C4104292452284B12161448421304158872510848181249028844C4002114A1122283318240420E324161248955811B18001D12822905448A818107A87FD10BCCC12148144440C8441414244448688514840584188490424189512A20
+:80B800001A1C82119842981C8428420869A4842E89290484001A442481028480041004A342F845C324671417681651544506C1338271B59418E011147218F4286A1E169D484117844ED8288E186B124D4CF0141485885532488CA13126B8181294141D282E461E1B49B24DE881C5C31B4858978258F05312A034682B441E884742AB234D59
+:80B880002D8F82F148DD141E548D218062122F51353146FC764BAD1146FE839145EA98F4475833D98A7224F252122F23311AA7134AD6A8682427A146F2821227A11F817842BA32B248E421A81A376816FC2A128B318BC48FC87922E2643AB85E9AAF24E22DDA21B2C1D888748C58823A383C272C288CA4822CFA8C151031146D181B44B1B3
+:80B9000053D4F2D12456494AFE1341B04AF35D9226F344944B462F4DD9C89448D0C4F13C845489782CD588E411384883F819111F2858828B282988CC8243F1C6882B2A3AE449348F3B147011497152D13264126A7E14B2CAC11E2A941A428921A8C3244002006E1240012CA8412C084C48C881841C081C2841814491421429448124882457
+:80B98000A8428014B12211811141426812E012088880088849C48241A841A841F0A7383427242F72F312161F62D6ABF457519F34F3226A2F67F7CA298F89F14241AFEEFCDE13B719D3E19BF9A4255F78F1292ADE93CF82F7F1F17F1EDA24E466F7495B1FB5F981C38FA4F443D9AFA67982F24ACB3F14AE3B2E3A5D273F5BFBD5542B26DFBA
+:80BA000076F4C697AF8BF138828F88E818B9F2B543F892B24F6AF8B6346BC54FCAFFECBC6F49B164F7B4B467626F424AF317523E772F61E172764AFC12159D731FE2F67B7C7F5DF71C9DDED1AFAEFCDF5BEF12BA95F8B8B1CF5BD3F1F9212A2F1DF97F191F1BEBAAFF8DCB9FB6DE11A1D18EC2DED237B81DCBAFA4FC4ACA3F9EFE31331FD2
+:80BA800033F73C263F7BFFD7D43F16F27C54DF7CFDBAD89F22F99D9D1F12F372F43BC4AFA96B22EFC3FB6EEC6F4FFB4A1C4F61F966744F4BFB889E7F954BD322F425772F21F12126FD2A7F31F26F2D7F73F77A7B3F36FE5A4FBFBDFD5AFAEFB47C1BF598833EAA7F62FA1716AEB342BFDBFFB1B54F8A7B46F22FEFFD1B2FA1E12DF198DB17
+:80BB00002D1AAFB8B3E2F638DA3F91FB53D12D526F42F3B6B52F3DFF5656FF94F6E3E9BF98FA8823AF72EA21B152E73DF518938F21F15E1EAFACF4169EAFE6F774542F8EFF3C3CAE9C3F714EB316F535372F21F16127FD2C7F75F72B7B3F43F77B787F77FE5A5F9FB5F5DA7ADFB47C6F7C14FDBC3EDFA6FA1F5AAFBAFB5218CFCFFBF4F403
+:80BB80005FFAFAC68A6FA6F25E583F99F159918F35F1434B2FBBF33AB87E9A2BBB2F2DDD62F12F3F6F7FFBCAFB7FFFF75E74DF7EFF9AB89F39F3FB779FBBFB57713F3DF5FB138F29F95A58EF8EF6D654AFAEFD76546F8CFF3C3CAEAA7F98024D11400114503412411A448104121412641658281A1428514882850485841118139812B0224B
+:80BC00000198901484418C4482C481482663813448348C4464818D2248810082AFBF0B8212400416541A128501233411218C54121E482D2149C4114001148642416211111200205182D0161111B69152244CC291164422A1140000D02262811800261848F1EF48C0421F4152281FC132681F41B24AD141B24AF11124AB9419B64A19B54A53
+:80BC80007924F84A9147822F147934D812F924481CF9244A1CF8244A16F1244A96E1A26459ACE449C24A1F49C2421F49D228F991248B141F49324A1F48B24AD141B24A9921AB9451AB9443B24A39242B94478229F92448B84FA2F49CD8C04A1D648D121FC1764852C1A346F46A1317412D861D28AF441BB14A7B34F84A9147822F14793412
+:80BD0000D812D886D412F3245A1CF926CA16F126DA96E1A26459BCE459C24A1FC9C2421D6CAB121F48F44A121F4922E448F24A11CCF24A951D24ABB453B14A3A34AD8243A29447812BA4678129F8245AAFF60C00000000004004280000000021000000004001400848302200000044000000000021A0110080410311B0144294121088847E
+:80BD8000843114AE4127211B211E24004C117884382480B1642101388341C8444999265C91311819F1482126524830182E818100418024215184838322F2F48A2032A226D84842C82A20044D838C129218828125828104244792C9C128100323552240414418928229018882448CC8424C91411AC218602420146C8483A992C12E4A0016FA
+:80BE000041F882DF40A2241668323021A01270863224302860816D121EE352316C53244C711824D14AB884321216326418441D1A834172586441E624881118311F13321489911CCE2183225448C3A48162842A51A432321AF2952C200222C48184214C1434118542A8148A040080038D2184288414201422110122D082082C084D111D2406
+:80BE8000981A2486342A0010020081924CC148218440B83203002981322C4C02486112A11648221178110880111558848D84604445028440880228181002182062414D121048081008188220012004F084485F8F036160422D1211466A52A7418711621B61F0124186582442CD52524AE281C6144A81C2A2A692284D221A72259885872166
+:80BF000096586A4982B4248912D22A419288839288472143613A2424E4D08234442187424332A88281F026194004222826195C418944A9434E191252008361C429A4161747850488D0423A22268242551C26C88828250449837212622110A421888991122C02218480644421C1224A880886F4D39824002D16182564262632142D149022A3
+:80BF80008542B18A113C4312181028715864C28A22444E34188C22C8122C5148382C840810C8228B81451A18146C184018D622C18820214264821098487F3F0985A24312260100894201A6754288062414814E2511800A365C1C8C6C8227292644024183111882D228021912011621553650A2151448DA18881982424458284269C44441F9
+:80C00000EFA505999444C91222C1111825044D19441128EF1411B62818C6184C811134521420A3484528010014E0884172180452290B2420220487411112188001290220198282F435310040014C441C68142B41200125081220098688120800401101814081E4480423012642446841C93284811699142822210030524E124C223228844A
+:80C080001608FF9F044651428D1720D558C118A5A14144135312244D41F0228289F12448DB18384CA214C541B488364837C11E240060854374186221322CA2212B2943C12F9E4489E291941483722843581A1224522F644238288B8389E482015FA90BA02122191204C06425711188C848A364812D1415C8841301908880538130211012B0
+:80C10000184205839882284502455181204152412542D8120118922C288122C1243042414694444FA20614182A11A621008C0288128908209884558283921259B1C4012822244CC1120022104408301144421E446024444150225084144C480427E8008D22842C08BFE741811402525041441984129488A0811EC149D18181884451254EF8
+:80C1800088E0911861144011681C265A182416C182111844182C0283C1B890221242004100122218128061C2F0CEB800451808A024430281A821142518141282014306848C7228440847818058842149434818024448211556488594328C321847128126830400008221844C0489F867488082028581044844A04141812C041302290429B7
+:80C200001808004821484C8824C1448148D04164419C042C0990C1543921044718CC24088014C8888092C2221848FFC205860383014111C0449B41E10044C014410023440832882800850282181214442481101874248898842002442C020000602200800C149F2B08842821430122111B214322321200890110140A1844451812A81200F6
+:80C280004381411AC41A1410741218020000412C8211022C8171822358827038C4428A2121083EA300114912F12811818181004A822191A4848F290486318829042581041811C81100134C248521E1841824028120084400241D888118C09642888A8102260833412104108804132611D18201182D829421803824874100301412824592D0
+:80C300001824442F48424244624100812582012C5148122D1890288C028C088E1444C0228148AD8480A4D5C0281869C4224561C400444881663448283C2CC41800492401219012842C388881182041012445088F1244480390481468824480060012800A22528B186ED24072818281F2326599B44134488D154C15E8A8F412424D846D12A9
+:80C380003F2DC44489C8446564ADA67C186C81211425FC1C982FC1E1A282741C26F1118227316F41C145CD142E414F8824D828E8A3E211F424331F484AF88B181C8571D4542823F4328A259A923A6C56D6F8A69920B424F1242C9FD181F1442C2E214F5122B68CAA351C41F881138F5DD88819F636233F8672411A31582A14A8A4161874C0
+:80C400008231846B91AF4A91126915DE4421981429D2CAD212711CB227D75211BC12D48AA42444A31892826F81F9A888419AD32874CA4C98CA2FA948F12161AB21A39146D36412C5F421585D2A27A727C88B21CB9CAF81342145F4999248CF28B918D54CD114B385F9612213724CF6195246F2498287445F91724148EE4411F84142856A5F
+:80C480003B472185E6D469C9C9F4223C4426722A834CFC818440E461A2386AE88E92348BB9248FC30A204228024018E48104482284804441C8218254481C824481448144814481248824984413187481081142114B8413213411421321242124280420410481FFE44311F111118F23F11363BF87F649251F94D4D9F221612DE2EF81F86844
+:80C50000622F4D5831AFA8197948FB4A2C1D33F57242F12C681F1AFA434A2F3CD8AAF51113FF14F4D4844FE27413F5D2CA2F6D7C92771BF7D2D23F28581A1F11F5C3D8857843FF83E7BFAEFD52167F19F9D3F3AF6DFDDA163F79B9D2F558426F62F2AE2E2F25F552424B555A56226F394FF121211F17F7181A3F31F56B6D9FD4F6414D1FDF
+:80C58000D6F7397FEDE6AFC1F9485AAF8CDB7DF8CFBBB5FAC293BFF6D273711BFA5213FF52F6E1F91FA5F5C283FDCB3F35B44EFCD7836FE3F467553FDCFC988ECFEDF4978D3F34F4D1D48F59F99D951FC4F5555D67E4FF78FFEBDE37578FEDFE9BBBBF1FFFD9172F6CFE9292AF25F46E66EFE6FC1A1A2D4ACF81A8FFACF14CEA1415F331CA
+:80C60000518F23D1B9F24949DF54F649295FD1F2514F6D7EA7E5BFB6FE53EB57F8EFBC583AAFA4F46B4D1FB2711CB314F53FB9DF95FC48598EC23D833FB5F556584FC9F4A53F6F6DFC5243EFE1D8EEF8534D1F31F192C6BF69F8141FAFDCFD5E4CEFE37172F73A7BEFE9FD9A963F33F38BE36F61F5979723F9D8582F26F7BABA2F25F54263
+:80C6800058EF85B754C7525F5745F161231F33F7281A1F75F37D7DCFD4F66D2DCFD6F3797FEF6CFFDA9ABFB7FF5BDBFF78F8EF9BED9FEF84FD62642FEC791ABB12F53EBCCFC3FB28198EC265721EFA9F196B497FFBF3BEBEE7D1CFC5DDECF956449E921E449F61F2BEBFAD1DE7C9FFF3F36E37CFF2F7AEFEBFBAFB727AAF88DEF5F4B69650
+:80C700006F6DFC9E9AEFE2F3FEFEAFA3EB83F1BEB84BFF8D4A6F380E0021C0118C742481442109960840628964128D241285245948801252481885949489820121100449016941F82492842602228424400244C0228281828F4422F8BCB3601AD028417428410430284400A532914C481822091022022400100424444D829265029880A83D
+:80C780002940880818442908A14121901216C834844A220114FF5C0F4F22F4112485F2112C83F41124E3D441B24AD1C1B24A9921AB9455B84A3925AF1439A52F147BA5F842955F82E414FB254A4E815FA264155FA2641D1FA2645DACE44DD2A4F4D1244D431F4952381F497248F19164E7141F49F64A111D64AF149961AF149945AF14B92B
+:80C8000024F44A924B422B944F8294924F82D448F9244A3F370E4D4A1B4126F2114C83F41124E3D4C17242D2C1F268941594B255B84A3B25A95985297B25F8429477822BB45FA2B148B825297527287D236A4DB48F5D12E4CD52169E6CAD439E2485E149561E1E642D811E6CAD951E64AD314B61AD114B43AD824B42184F8394922F83D475
+:80C8800048F8265A5F6F050048000000000000000000100218001004001C084008480000000000280000000021F0225920331244A1164444473112809181818521843B51844A081AE8422481024C0284864828354412168211F2278286028128008110982240112A014B2C298264842A348442EFA1458134848441A4161378386482112790
+:80C900008C125042AD8481C0148D1426043088C34818921844218632248F214234282A1804C09C9265D882362C274147821881967888A4814C341A21818D8422C04126FC3B88A06146445A48E4534167911658214D18988722416D482A681143F144884186E24284F9148830A412442D8880E324311485F11A82411B8429E841AC18288920
+:80C98000D68412922443116283412D1812122F446A824E84AC8432C4C7254BD6402211041810CA2423024A180115886881428418221810281218124808AC68444782A01228244C42425828C421901C84818C827881889844A1104288820422FF47082400200283721118A8213490185048846412462749044AA242004210182244082044B7
+:80CA0000026971119492442A4184A1410014C08284819A142A01902870410D2983D1848111D21832146041254AE81184D48109241588A2214489F4542160488F685424A44C91624C13B84221A4212D125B181E248C0A411D88C4871489322C884E12189816AC9443024381962846A841485FC1052923810128221099148C1281E4849181CE
+:80CA800041854228E2242388148186C2441052224849C1488C8144E22164182AB118981529718429934CE086014A1182C188CE1845A814812A81024A0367D840028584115281C323512818253A11901884502518156441C42E54C0C4861A9448439128290229041A0249119626C0845084118C13840813217814022886C21448848C44883F
+:80CB0000F4E9BCF028142054828146081052281B52804208262261A21880C214902192A0482E148C290414004511584242185028126022C23514B918D268318444A02C188814A122243DB42491211B2420213214321E614084819A12188820842831812538314628D1142248922112184E111676844892492483864838823028C34544844D
+:80CB8000A2244280886861816042298331485F76074241815042748146084C02C0414C4C48D98444C52521460843044260A24800257228848881840112E722524711844140288409271812A443111A7414D8180184D0990D76038C52A2457868951836B25182A261124AF8184418262265E22E9121E249E14174612884B228644393A314E4
+:80CC000023F11A64414113B441119228A9C34827F984496282C334428B122C7194BB84D16888B88C5186C988018961248F4C066144148001618C04C42501348281178885944144128541C8218018052D42820020D98249144294128694128041F84412821413384848006CA14218128D24368842F8178580322420142444264208C0128FA0
+:80CC800021028130228A31822628218461288A440280F81886C20025264C84CA81809124218414D012A48400144848B088044220088FD70D212381E1218211244286241282A88412421845028B1241481004284D88424A41246481119A22090028D0480612384C83818311A414801122832196828093441F320E0028102EE2A442298128B1
+:80CD000087081CF182123898264104824578842A84149224215042490448C4180081821212169818482A012E126E888921841164212881C06424F0A4C880C24A4024050022D0248801230441D0424889518280E482880112A863210844844A614642184820020020044418881A081200E02204411AF2D58730842824443041A0124218486A
+:80CD800000842246180228402484682160214244003018103118488901881004402422242804224118424188004824734D0211188440981840B849024248A01444204142A4431220A212430422818484224184214789703411C84CD0840226011C421448E54804284CA81443C48C8180F4EE86001244486212251484011800820026240245
+:80CE000022801A02182880912258169442124002A820216884804408124812004848288688024922029D3F2041146A8189722408008B8526125184888C9862004D8212C1C9A82523C482181E228496082C22828A048260818482814CE21492521744412240088088883288284004AFF607450A4C9621240016224262882E46128C124228C0
+:80CE80001184512822508280014C2888821232149C24D2244A18C544530658424100402488D24281024004CC81944241750A4B228B5987424FC5D4CEB5147224DA42F248288F888691B32D2C2B892F8225E242F114821B9AC9A27583DEA8B152AA883E54497434B89468CA1EC62D6D128FA1F52E844A2862828CB4287C18A22419B656C284
+:80CF000022412CF8488885984441602192228E584C229C147FC80F2552444F21B328E123B269E44162215856B2726A2C8375483858AFC1B696F282148D2E2FC251C64D884F48EA2AC42245E226A214AD385E9269A313AE7C3F42C83265A4281DB49B88284AF52C1C8B1197421F473541FAE548B115AD845E127AB864AAD4C7A84BA261E0B7
+:80CF800024E63E48C2143F2212D22122449C4ACF1231321B928F68A4418E523CE128F84412242E2143612183CA545A14B862948A2F41F182A226964C8784418B8443A44D9AF41994C7111E244FCD71242C61C61C053E71281A062F5BA14249A518CFC2A2E487446E484F6346F417DE000021480080048A040082000000200820044614023C
+:80D000004183140649084501494908501412452101925412204124490400F0889A141AF11115ACF21D2D2E6A9FB313B222E18452B9AF88F2F1219E148F84F448CAEFA6B622B2A2F88292C7222F85E587F77CD8AFAF7C82F262362722E5F8F8C88FA3EA8381E44CDCB8BE1AA177AE2D99F2B1658F86F6783C8B558FF4F44B584E5159A116CF
+:80D080008F44F1451239F16464CA1DA4C7DBC69E9A4F82026F22F63BCC144F21F313778F21F31F3D8F26F3793B2B318F82F258381FB4F87EFC3F1AFACAE88F8CF458DAEFA6E722F2A3173F787B24F24272EF8FF774D82F8EFFC2A26F46FA7662EFA4F4FED8AEAA2F43E152E2CBEAA1FED29EFAF7B4759F83F3B5F58FC6F6787C8F87F77C72
+:80D100002FBFC7F464651F45A2A48BBCD72473A127FABE64BF64FDECC84BBF6F8616F424768E82342E363F7366E19FB1F238429FF1D1AAD222F35A7A3FB1F5DA7C1F1FAAFD5E588F8D7D5AD662F2A6A66F29F92A26AFC5F56A6C4F8FEDAEFDA2826F263E26C5FEEACEAFAEFE22188F94F6DEFCAFA8FE22AA2F41E95BFF19A49F5BF278D89E
+:80D18000CF47F5585C8FF6F64B7C4F54F74114EAF1C8785F74B1C3FD6464CAFDE4748BDDCF5EEE89DDC624F44432FF4144D366F133278763FFF3F27A669FF7F71A3EED2EAFA5F3E3BBAFCEFFB3A18F8DFDC85A8FACFD7E7E6F63F3B6B6EF89FB3C3E6F44F7FE3C4FAFEDAEF8E2C26F26F63662EFA3F6FED88FAFFF3E1CCFC5F4F6FC2FA842
+:80D20000FEF6B66F4DF1B5B5DFD3FBFDBDCFC6FE7C7CCFC5F65D3FBFD3F565751F17A3A78F8DFD4D1F7F45A137FAFF64F4CDDCCFCEFED4944FC6F464444F64F6467D3024B02641B82441782462812416282241628124484C22C922124E2482874480024C92128198B022211424B422012A0122482A6181224822008200444889A2488B248A
+:80D2800060445041A018100883048542784822384282888A140818412541088418860A0048C0488504928C28880189281868414A01004A0189A94188411848980000417F6D062CF4112485F2112483F41164A3D441F64A111F48B64A9961AB9453F84A9143FA4A9143F24291478A2D914F8AC4914FA2D418F8244A56F1244A96F1264A96A7
+:80D30000C5CA9E244D4A1F49C2C21F4952281F49F248821FC9324A1F49F24A121F41F24A921B29AB9453F14A9243F34A9243FB4292478229F9B448984FA2F4A145C04B1E64141E2CA5F1112C8F14C1242F1651C12D151D288DB559F24A1143F24A1153F2429147822D916F83C4216FA2D518F8249A87158CE419F2244A8F5152149E214FDB
+:80D38000A27491DCA4A469C5B39166341FC9724EA229CF34E181F248971F41F24AA21AD27A3134AF242BE36468834CF9164829F224586EA3000000000000448042080000002128180048000014002800000000400890240000000014F041986011441414255928C0241CB484C2C8990142848744678161508211224042888211242821C3D2
+:80D40000424923818828419C2224260260A585818831880043E2A1342CAC426C8881184CB4680646369144A91124E2111292182D121829B81154421B48298214C83C4B822884444624984425D42AC128C250C288493414282D8411174181874843C4884422278481304C8E488844B0842402528689F28A697055A21451B41544381323B2DE
+:80D4800019D426D384B412E81215B2883426E954C24721282410B416348A8E62184489082457244C49D44889B24658814C01266C4482C39123434C6882463848A883D44AE2C452C28692488F1821F335F8001544221188224204829815084944C14818902847881C6282001044D4A28182AD21842858802851241952288221844284A1120A
+:80D50000884188414C018822811290444F7B074111604142111001481001921005410000462418880400004342A41200440018841884210080011C01219246628144124C12F44283901150C3A95284284489436A298F28E188C41846A148819C08A481C438843082443440A44361608144182D141AB81452185F243A142E886022838901FC
+:80D58000701218B418B82414A82180420826F85D22C014103916898442145128582D928928C1C18881941008413048108204218002288122122321A81214137812A8826022868801128419C1186344A84316C824C024C44F9F03141425C4284114903820489841811842452148441248A8214188834814014456121494144301444C4144B8
+:80D6000068474483111882010023412428A21824001608223F7E441149B1625194818382012125C2963229212374420E23028D42C161111308266488442C18C8440025018D1247214841C48C82818248C2A42C820242219D948282814379126483F094B83028389324824841482102C4814883CC3840840120132A12B81208821281C01840
+:80D68000169229C14881485582024C09A1A18B8444217814A0216041284612D88204F09849241244412C210941A3B118248102811141162141B8444284280100461A042242002018062031185032C480268114C888A5644124112283810200D0A406324962C2C9D282912885541A78128B2926985A1F88D1488411B61822D628F41824C118
+:80D70000222488C3141A2482E481242172823E441250612E1CC41C418832A88C34A2A5E28855164CB12231184CEB82D82832884E1C38F062C4501213D1123111108121512A50221280C4125D482C0144418812141788204284318825484412084062412901248E2C6D128423242984028442D0420818484C0181248FE14C02804244012D6E
+:80D780002280522124E0146111008944748C23A118002482C124008901408842082424004E2884102464214602002B841846C88252822248844E7E302425418834241C311491128419023042260112460A4123841204448A029A4244823121281586021840B4181242923800811A8218928A44282301263848A01244AF77052001144180F3
+:80D80000012141503220F8821910224802818482234804123012002412B81880882901002C88C128248100E022018001124042F23332800448128121460987348483018128002819214108301242502124524142C0284308506222281C22A14900224E121448188081648883124622028822DDC1A028001C84130800A0211C3114421642CD
+:80D880001821240112120010581600210084411880048012383C8B9449280290845288211A08248004CC88F8FCE8C04C89C15112004578110200443014F0144240480800490118421888230186941A2301444048B444012821444084C1A490A42A8118180468C14938121A72B5042117442906406222A012123548420A8908582235A412DD
+:80D90000101492248200419028A301A210A352880030112424002800008443B2520218C0382946F24241000041848504448011042A3481424284130984814860294004004008800824C42E9210482483821962C28628A2188118004084014511F8527F400A2D5920311314129125018D1440028188448200835123901880088502244A418E
+:80D9800061842CC21C188002408424821142148206C1254492141425221932847FF30E2C7281A51347111E2825AF23277122159A231E114837183F8993488784C7199649A6144F81C316672A29584845B356311681821CB1B2F814CDC42C66C52D822B261E124CCC14A7654D942A54862B6186A25596B24CF68A242B442399685E584F8131
+:80DA0000F3642DC3D1594EB3223458A5C1444524D1FE11B112F7141187112183C342837442B812C15869E182718818788401C3D824B2128158286E1AAB118F2212E422322241AB881E144F51E1827229783AC838AAE221A321EE8AA08883F2929A1E1A2844471126A28A9E518CF254537044D422D181B241F128139991418C51B9A14FA2E0
+:80DA800051A16FB4B154C9814D122EC11F66D869381A1248125A48C4C9E028C21421E42F81D48823F811322F41A112AA02815AD324A2CA272187449F2211B83658248C49B424F83C1A4D122F26318EC082AE86EF154EA124412880128412844282024814828004822448444024081144000088814190840020044344784401460246024255
+:80DB0000824604468454488A043F984AA14236D488722978A17323D713F239151713BF12D38FF22933B5FD1595BF15FC45472BBB2AFA11822F237352E281F511116BA2ACF846467F51F11612AF21F1382A6FE9F9585A2FABF3C2623D276E622FAAF384366F41F2185AF754AFA2F6AAFE2F28EC66F246682F28FFC2D64F6CF8C8CA6FA1B5C4
+:80DB800092FD7A322F25F4226327244F86F2A8E82F26F249F7346CF2337687829F83F31937BF72F32316BF63F31B2BBD33B7D29D33BF94F41755BFAFF76727AF8DFD2C6447892B332B15EFC1D515B136D3A4F846C667616F21F11E12AFA3F2969EBFA7F7B2322F35F71F2F2F64F4861E4F61F156548FA5D7DFF76A5AEF6EFBCACE8FE3F623
+:80DC0000521C8F26FBC2B24F68FD4898EFA7FA76726F63F756126F66F3327A6FC7AF244F6EFFF273341F31F71646C7C31F11D1B9FA171FB793DF71F111219D3BB7F29D3BAFB4F25F8EBF35FC474D8F8EFA6CA66FA1F83222AB416FC7F365714F66DFAAF86EEE3F37F77676AFA7F77A7A6F69F95A719E3AAFEDD5F3F272766F6AF786167FD7
+:80DC800073F33B1BFFD3F62A2CAFEEFA9A9AED5EAFC4E12DF9D2B26F69FCDA9AEFE7F1B29AEFE3B766F272326F42F62E284BBC4F62F3B75B345F77F53717DFD17331713DFD371FFFF1F23F17BF93D1B9F11B399D1BAFB5F51FDEBFBFFD672FAF8DFD2CE66FA9F93232AB51CFC7F365734F6EF78E8EEFE6F677776F67F77E7EAFA7F7869EA2
+:80DD0000AF95F798BAFFE7FD37272F67F7BEB62F23FB7737BFB3F57F3DEFE2F7BEFEEFE1FF5F2FBF93B3B8FF92926F6DF89A9AEFE3FDB6DE6FE7F336326F72F77E3CEFC7FB8CFC4F6EFA775E00104448011C01148440482141E38104001220010021441881188122B0220122B0260127222022812861228648224922018424122890287009
+:80DD800032012D42C011160484252141020023044A088334941484A1009088652201812502188224402218624185022400100200851294828011048048BAFB042E431F417228F2112483F61124A3D641F66E121D64AB9619B24AB985F44A9143F24AB14B4A2F3479A4F842954F8AC4914FAAC4814FA264114FA264192E4A96D5A4E449C2CB
+:80DE0000CA1F49C2421F49D228F8912483F49164AB841F48B64AD1C1F64A9319F64A9259B44AB9A4B44AB9A4B44AF9A4482B944F8AA4944FAAF49CD6F0245A1B6187221F41326C1B2163D281B22CB111F26A851F4192AA8CD2483924AD34414A5B844EB52D484EB42D1A4E355D8A5E21A4DE2545EA1552B45E2445B3C9D2B4B111D628E4F4
+:80DE800049324C8AB646B181B66ED181F44A951F41B6489B658F449944AF24AB42AF44AB42AF44B932E444F826588F760784820000000000800220480800008001000000140084444880020010080028000000001430E200196141141059A214848C6421118181812024218374181408006D22841224B082054842426C022C6241234122E9
+:80DF00001344CCA2828487211816042B81809828C0282A05AF8146D162622850488932120010228281B1162494188421C5C31290443AE488C4882057281A2881E241A22122129034454808C911688718C02822480080226281E018A184142AF4A29600372C406982944001484943B12891148483C148297138E1247114DA84A4611AD828DE
+:80DF800068681A642192B042931538807424E28542741A021644B85C32142CBA8422E286311241B0A20196081F21A8C24E2112878F30261249414422512A5028842412248C2404006400008C042289420829212822A442124034284418842B12100881840018002260824088E122F44B216022114004409221218001896881440032850453
+:80E000004E1490A85048403422896222804584014502290124CC2222816181100110C84800852402304822BF3601791144382A3D54854435184E1C2F143122322C11F113429A04A3B4A2D1844588911485C6628984042526D124B22868828149048828278129612416C22826889828296788238911528216082528B288235248DF81053C73
+:80E08000514150C22D558514B41262C4480083D1B271412401278629BA4C118801458232424223C22429634289454848444222412AC1442227812A21982831822918884408812322E2880143F2A6DE244C028428001115D822D121A1213288C0128A0412C9014305CB9284464C48444248022B82438221142488321224AC22814238182012
+:80E100001728C112850283414408288946E8CC02521614C24440E48104008E246218802462844182AC21D282311470328C42880880C34424A02583E521C424226822888C018A0218A68404A018A084C42988A41281F7487021041592412343414421A11210E148D2328521082D2881264498228C9428124F8468224AA1818982342A00B0A7
+:80E180002888048184848C0240424868418246382A21A9528460462301241C0F002002250890428384410AC100230316048A61482848001A042D4B102221C238104244D826012901428C0448A210822139444622A121128484223D8D70118411932329521842241222B84E282B188F31A4412AD8A2732864888C71B2E848D348A1242D24DF
+:80E20000CC22A24117892827228B252481185A7214C22C2D3C688484188428481AAA81C883F5221AC22D624F847128B4B224E582612229052A4404442C41941C11421E481041120420044C312440A8248481488355224225281584A2124A928200502A1AA2828C2424184AC82200824C41882841440884AF1709114024A241D02114885289
+:80E28000259200128F4441CC18222481A1004A628242248482182142404208C28812007042888241024901301A1812890246688490688FE442810290483048E014A2148B854C2204530442B048014242493514200421244B2448C440084C210285421A08898601888A0230188902884682C548806121F0B87A0046011885110542008C94D4
+:80E30000112188292822169426286082008112282F426421822C61A18446082C01C0488012129812224C0121A01448230400278180044B8C004126584112488502E14A0229A4142311841442E88401AA0543428264828381814488081002481240622458808A02214C82848132182003488001F03D58601800165C48C941C82481AC8208A7
+:80E380002144812331142418002A01222A38840000002100404208002C828184226824124042044C0480041242CF510A101141014041B811224801802648062321A8421648140229410224260421901400108A283118841608D02221321248A5022CC2527028420400842FCD45A14241444022226211212381521813184811C888434482FC
+:80E4000001805448208204202305C238272400A0288098424218109828A024840089228C31823088F06B5600282621C221A0211240818122D11258232280126421008981018183C23416022283012112308424421832204202522018228984522210088C1448F4658240088C04413502405542154A3C298C82816142212618C822812F2C3D
+:80E480002288014E1484828328146214814A78128881042483041002D04815882604846021121290422267BBB021B28474212C51418D28AD42907225B2224341B244F19C1847862DA4522D7A26FA523A87421AE12F5288A43266A4A38F87B91C84512287214528A1418412AD42BE2A2B241E822AE123A3268B652C65848C68248124182CBA
+:80E5000044F848488F8518F88283144854411F42E3B141F121289D2CD713BA1B714BD81A7C9ADC3198328F81F42E1C322933884F84F14CC46123B674E264F21E284D142142A7A14E442852628E828632CA1A314885E882F6522221A7282F8231182B112B44CB43272C4B138BE5EB112B44002F24F4AFBC4091218D21CD49CB427F45C41189
+:80E580002F3745FE4D4D8FF9CC721B131DC32D448F61F424122CD64CB858A4421AA22284E883D88AC5122F2C64282DB242878927842F28D522D14A9188AC4798523E42AB1420E84149F2428489F438322D181AB74A76226A848B911A81F52428AF550510040046024220044220044220044682044880044890428004488084022829010052
+:80E60000008800000000000000BFB84CA1755F52D281B211F148299FB2F75979DFD57158DB7FFCCBE91FA6B2D9D99FFCC2D187C6AF8EF81C54CFEFFD78181E426E584F8CD8EEFC8ACAEFC4F4621C29FE8AC8AFAE6E878D4A6F49FD7278CAA9424F6BF98A88AF8BBB6AB3A85E221E122F21F172F26FA9F11232AF4858A8AFA87A26F4181876
+:80E68000CFC2E129791CFC88888D188AF92E6CFF6F44A1775FD656513E21DFD4F6683D9F91F53D7C8FE7F7CBAFFFFAFF3B7A3BFF5F3CF893D1CFC2F5CCD8EFE5F3BEDEAF83E525F36A3C4F88FE6CFEAFAEFAEE2C2FE1F576C48FCFF9F8AA2F83F55B5B6F4D794AF9A2F86E426F6BFD8A888FAAFA6A62ABAEAF21B13AF212222F25FDFA3C14
+:80E70000AF21F3AAAA85FA8AAAC7C38F81F126162FA85BE48FACFC4A48CAF87E3C3FC44DF154745F42D6C5F2151CCD2FBFF6F31B79FFC17418F8FBB9BFD8EE33F798B2AFECF98AD7CF83F4BE98EFE6F1BEDC8F8BBCF8F866184F8AFC2CBC8FACF86EAE2FC2F52632EF8FE92FF3B8DAAFB8F8DE942F87E389EC21F296D6AF2BF38A8A2F868E
+:80E78000E229FD2A2A2FABEB29F9F2721E9E2F23B38A5AA8AF29F9BE86AF89F93C3C9A59448EC8AF81A598CD5C3FD247F17474DF42F625245F53F2553FBFD2F73339DFD7F37C3CFFF9FFAABD9FB7A3BD5F79FD9795CF87F2DCB8EFE3F7BA9C8B9F8BFBEFC2F1F498CFC2FCA8C2EFE2FA521EEFEBF5BADE2F2BFBFA9AAFB9FD9ED6B5FAF23C
+:80E80000B22F21F79696ABBB8F29F97A788F2DF95A3A2FA9FB92A22F2FF75A8AAF23F3CABA85FAEA92CF6BF8D89A6F63F3DABAC5FC8888AF84E4ACFC4C5E8F4D0B145014844D11842216681284241648434867816C22C1241281400489120229C124210081290129012948C81284241E482622412241A241C0482848A041830442F03AC651
+:80E88000204A04283011241034812128009810086C418822022488278200811881290100002190120028008012880412A1122C43081260928F3C024D421F4152281F4132481F41364A1D64AB141D64AB9419B64A9945AB944B42AF14B924F442934F82F442914F82E414F9244A4E814FA264154FA2641D6FA26C5DACE44DD2A4F4D1242C53
+:80E90000F491248D821F49B24AF19164A3F48124AB141F48B24A9921AB9451AB9443B24A39242B94478229F92448984FA2F44252D0A6F411648D421F417228F21144E119961A1F41D64AF88164A99B65A9B9A4D41AB9A4D412F9A4482F1479B6F848816FA2E154E9A2F858854362154D8ADE254D8BDE214D8A178D4D8A1F4194D817498BE3
+:80E98000921F48B64AF98124AB941F48F642141FC8B64A3B85AB94A2AF4439A44E94478A2D946F8A84F9A25A3FFE048480040000000042280000000000008800004001400848000000000028800200001002CF460C181382014C421112A4418129958213C111450290348A342426C824898102C942084C142AB152B882222222011A028392
+:80EA00004128842841A441241881A0416628D2C2518238890146F271550082141742214CB118628291311CE81201004C1242C2188427484222422508702422C114001224E0443212A483A9482189816384C8242084012218202424049426F82B93802182916150142885C4182531C43929824132249034892D7224BA4412A86181C30A4995
+:80EA80009214250433214B32284B24181AD282ACC12568812AA914439454B0229418A012890627818964248C41E8A1F4BC2B001114446322911A284641D81281C2111144100221459882804302104822C418122C0C22C012102811084210284802180048182246063800229F460B10011222001D28400800C01184854298224188458802D8
+:80EB000044244400109814208282012A412402002400288800009A0482181260A2EF6E0D384C82312819B148333112163814A22E11893114B02424035826C8484A02482800218D248984226282896141662241B8A2810118499118DA82E88439481E884289B124483B2C224489CA68427F860B1854121A62118946E181024488168101108E
+:80EB8000B41842984260884180444402D08422140884811A8222C13A8AA3120041816880A28412481843C2112D2400982887221F770E2822408822811331188921224268411CB14802212A712488648622200244211088923422384152211004208121919282834D68881028688C81A24961828984F4C152705112445494C029188110CC48
+:80EC0000824382028400106883852248883254824123A41221444042182C84D41882524223624843824802411A2228F12642C24C94584901183638825D6B108494229200481120243248281359261A0212384022230112A22301823218808882128A0410080060818618E42862444298602882228828499442DF7C0B285081881861C428C3
+:80EC80004B2518190183083084124614048A422822044484100484668407422642028122200142A02184840010A81200164408B0DF041B4210DE84011C8275282135142AC1288118846B29184E14C361828CA21A812242222931428AB112D284C1243825B844A2242428842D26224449A28485E28A11C8924CAC142E428CCCF69698249231
+:80ED00002E181684F43D3BD024416412112C411C0C43C2487C88843881250400281288843848444185044C0280242C02250285811208980012008140329400421244B04822F89BB830144925420812182281C3210243021C030000280082288092144698184222408821410812E082844208292818C81881128463618281A0128C01F06443
+:80ED80007B0028495442461C0812A0489048488A2404E0421104890182228A94286088180020820200838224810818808184A884C08AB82E888A210410F21882F09D2D000089022648188843228122010000126C44883218848100002883C11410240220011843212212C828001008008088024280F6B83614008142C0441C1184049C042A
+:80EE000081281508892401282CA848460244122A29024A08830442482A6C424984C24840C88452233418003024124130184538A8386648F8D76A20034B21200100209124282184830120021812328022020083420400260200004C22018082A8280080018004812008F0BE52001820011242484018186842187028220242008412800184DD
+:80EE800000301242281048081088A882899118181818AC081A1218A882184B12001002BF890444004004498221148485984100881881490A4902A0844A8836548C259478422848422258C0282A28C448484AA884004A63844821226088421F4418148288ECAC0CA2A2830182C024841A820244810012834228014304800100442800160477
+:80EF0000184200181289028024C24284121840443218224C880289621422AFA40546488184C211228428C501402491184881484C84E24285684D230C8941AA84260244818CC81188164488810C824412288822484C248A27084824228A34984A981282FF774921A3482845C8844D184F87B144D214F684581B3548B3C2581C1258824FC2D8
+:80EF800094A4414D1C4D489622F32C882C94144F2181F324528781432361224AA254322AAA1A83159428A0E68A14F818189A04A98831CCA26F823AA42CC1186E81AAD4EB0878BA921883F114518B271524B1684142B828CA48828B44324A26216622812B2D5889A2488B221AE6426C824E24188F4481E644099A52848D141AE2C2846383E5
+:80F000004F8C6F812AE18186A6844AE1A9E183F2223C985E44548F8AB8EAF8181123F446AF5044597134BC62420889F2281816F81824CB42844F4533181F81C1888B1289E341E145A7AF2AE984A8C84A628166D888B2487498A8448C2E92688F4305608189A4B88FCFAC1483E328B15ABAC2A98CAF82F11848474287281AF858288B188F4A
+:80F0800084BE14A2618E48897A190944504170810415041D4488198498418880088848203848414241422004860486048604820041004800240000419044000000E0860B4F45F615154D166F71F556455F16F75C5CCF92F21859DF9AF188489FB1F19BDD97989F8DE4A4B7D2E94F6D418AE82CFD64E48F8CF9EE8CCFC6FC282A6F4471242D
+:80F10000F68E8CCFE6F61E8CCFC7FEB4949E226F48A8AABAF314844F4BF3E8E8CFC6B7C8AEFD8FADF78A9A8F85F9A8EAAFC4F4C8CEEF48F8A4B6CFCEF59C9E6F49F9B5B44F48A8F78D18AF8AFC9111F014641FD7F5341E2FF3F3D65D5FD6F615354F51F31879DF9AF3B95D8FABFB92DC13E89FE4AEBFF2F9F4D45E34BABAF8FCF6E48F8DD7
+:80F18000FDC8B8CAFC4C86AF84F56CCEEFC8F9ECFEAD945F56EE4BEB39F23A387AA67B8F81F9B8E8CFCEFE645C8F8DFED8F8CAAFBBCFCBFBA8AAADACCFE8F88E9CCFA8F98C1C4FA3FB9EFCDFCB6122DA7D48E88BF5D8C4145F54E641F715351E345F43A233DFD5D588B145F56C8C9FD5F7C8AAAF85F749999F84E5A8FB5258CFC7E54A987A
+:80F2000024CEB8AF8AFFACFC8F8AADCE6EC2EFC2F54466AF81F2B4EE2F43F2B4658FCDF51C8E6FC2A2119AA5818F89F1ECACCFCFBF88B8D8FBD8D88F8BFB181C8F2BBB4AF6484AEF68F9ACA2CFCEFC3C9E6F4EFDD4DC4FCDFD7A788D188FAEFD3589145D758B73DFD3E183F37D7CDF97F73C3C4F82B34DF76DAD8B578FA6F2DFD91B958FEF
+:80F2800095E5A2F3FAD8CFC7E54FFF34348F8FF9A8F84F4AAFEE4F4EFC6C26AF87F7FC6EAF8BFB7C3EAB334F5FF2B8389FA5FC363CFAAA3BCFC1FBDCACCFCBFFFCFC8F8FF8B8B88F89FDB8B88FC7F3B8FAED188D4EEFE8F9A8AACFCEFF3CBAEFCDFF7CFC4F4FFFFAF88F86E3AEF7B2DB20022A4188C148221A04162862816081C048E08964
+:80F30000C424124C221928982800E04402812A2124022A0118A01220022A6888E089049224922890288A84220882BF810C00240012812881C4400800004128808A048420120800000044480084421A0216081242000084208801389688A142AF11044D421F41523C1F41724CF11124E7141D24EF36D141F64A9119F64A9159F44A9143F249
+:80F380004AB143F24293478AAF14F924481CF9244A1CF8244A16F1244A96E1A26459ACE449C24A1F49D224F4912485F2912483F49124E3F48124AB141D24AB9419B24A19B54A3924AB9443B242792498924F8294984FA2F4BA8EC04B1E648D431E2487161E24A7144CF22A138E448D938E64ADB14B68AF3439948F143B242D934F8AF44A9D
+:80F400001123F242B52E1A4E952E884E856FA27188F122DADE252D8B8F59C2D81FCDD2A6FC9164CF223C11CB841FC9928E1B68AB141D64AF66D941D22ADB85B64A3924AD924F82B4427924F842946D48B86FA2F586736088824800000000002800000000001800000040014008000000000080020000005012F0892E242C342415C81480F6
+:80F4800092298187418185C1A8804181010021814044722864C24429220124C0388992242003106186812781800125284104002922280128001E4C501492637188D22C4114042D43A8104259828C81622548B0188221CA2822422184006322A12170120412100285123414221618280824818169D1182811384648825448DF3302412B2D67
+:80F5000016E8817C1A0415582855982845882A921A8921822144E28251288847821A92428E24412112222C913189911820618400814C6481A9130845422812542840822308242A48A14187B5D01244541644244C3224E02421484358184021612400802102D0485282812210068032264C021A1202348C1204181688082C410843918950C5
+:80F58000284B414240047A02008110480400002881800181800140088002850412840080A5212A2901288112181008811008000018800181E086085C855221321883022661411A8208184C0163828192824412434208884410088001180090A184008352482212411223225524840024800262448CF228EC802412992212280012228022F5
+:80F6000001102421928244120000444100002001181816014008182011C4122842240000001268C4F07FE5D04101801158843021411282418149819122818001C02C8429A128888184128412005289A228A281286083852412088441894194280090122240022E183F440F0095424124C11800422CA4148243911812844884814142844047
+:80F68000180818800480624100808302444829842A110A18418116242101848444004E964004508412222861C42486085018418425442202408C124824D224118401284C11026400001281188502840010028F24489428824C24012281DBD910012816420940014041020021161214341426084004008141301600002844410000C01800B1
+:80F700001022180484108C012800EF4D06150413721A7117A8211814C4481FA488147214C914A9115E62C4C147828D44895248412224C3812174323414221245220243812241A414C0981225081243584812163C3881162491242281BD16001048047028420410228108818081842201001048684140044002410044220084248C34228433
+:80F78000002502F0844821C0848C1408008E6B400214400200248200241002000000001004000022001A0210040000800280110400000000F05881001012418111C8121414A30140C414844110424808004190181008A418C1400421214420018E282418830180011890141830281018F4939A0021400123011033832D18411004810040D0
+:80F80000080029110400000000834202002001282011180480022001C0282490149F420F853848250114108801504445342425C21440042150282552221AA1119E849E888284103833C470185C88835442440090883022474145B434E243222201411840522225AA119F710610022480210100004008401828010000004002000000100285
+:80F880000000000000001048080000F0159710C8484248104408104114C424228C420200002502692181299884004011414118E8812484044C41080044414C228202400400250229F122862484808401000000448128110000001002490188002001145022848004001200004481288410021222002144BF990B00000000004504100100EE
+:80F90000004012021A01880041840000850820810100280045042A020000002421A0112FC20724200110040040014001100800820000000000000000242400000000400810080000001F5E0E102834420000145044102C6282184008401242A611E0411828080010115188218142422100005044B02C02830200002421241AF17DC4508220
+:80F980008D18484800000050484586C22100000021259216181A8188080040414148FA88184CA4412800004044D44492222A42028400002592129F8D0B1200100200004001000000000000004441004002211200820018000000001200000041448F5B040041008001401101400800000000100400000000008009200100008140080000BB
+:80FA00000000D0E60A20C112180000105111111058884008000000410044451408404202249A011692224B118422000010588850828112001014F438DB7012120224901418104101105883141048280188105444001004800100242311E22921082001001058888480110880020044F949024004214416080010484811C112100800004017
+:80FA8000144408210000100240840180010000100224400C0000F02FF970267212A2122B111229012C512219F8121317119B9896D988F888414E48D09114815489814F84744854444B242E24C02480524445E2427226F212222AB912A1812B98828E922582F8121317118B989659888B484E48C048805488814F84F48363F0262245822155
+:80FB000031122118182592823CF1111219E8897818F18841424648591148848588F44844C1492262424480425444286F22D224A812322B8123A818182592823CF1111219E889381889246484848044588848DF8A070000000000000000000000000000000000000000000000000000000000F04FFE0000000000000000000000000000003C
+:80FB8000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000000A7
+:80FC00000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000026
+:80FC800000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000A6
+:80FD0000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000000000000000000000000000008200000000000000000000007078080000000000000000000000000000000000000000000000000000000000F04FFE00000000000000A5
+:80FD80000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000A5
+:80FE000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000024
+:80FE8000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00A4
+:80FF00000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000000000000000000000000000008200000000000000000000007078080000000000000000000000000000000000000000000000000000000000F04FA1
+:80FF8000FE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000E2
:020000040001F9
-:80000000100220140812412084821108000000F0D5C40000008400000022214A821102420000008400208134184002400240080000000020444804420040F195B30000480000000080020010022181210022502860260000004002100800904820020000002001F0812E00401868811884848484000000001002000000400A842400200225
-:80008000222C2402808101122A2121311812328C230138A021F0B7B3000000A14825284188041A0481901828801218024008001284124004C022240000840000002822128218800120028B1240084800002004184480024002000021808181080081400140082A04200316080044808318088428802211029F8205A0521A113818856884A6
-:80010000814A1188014A01800100008400814224502A2B4125E8A712022428487042028311D88801125216A84218C81A312889A148A018E01321D4870A124028021A51288485180221008924341A224862858A0200A185488841A81440C4222121212B22006082A012188D14811A018F8293481A6181181AA6221A03F05EB48001814AC1B3
-:800180001A00008442201222072C413252251212084A41E882018724167828F2184280210226424282D18AC22848124840880316246184A84B2228420028285F860A122001100221100221104218020000004002000080022880022880020028800200000032200322F0D9FBA0115AA111581E128B11AF845422AF2515A255242F2715F294
-:8002000048685E52AF81F122222B446E6221001652222A4352221E12AFA6F652187E3267422E222F22F222222F26F222222F2214A8118382A213224AA42200CABE68B6B85B446AA4662A83A2321AF257C8A0111E488F81A1111E128B112B44A5B25255A86F6555222F4547528A4E42AF81F122222F24F46262255A82C01225F2A8AAA5D8D2
-:80028000A8E8A1E1A7F7525ABFB7F726242E23AD2A2F22D2A2F622222E22AF82E2817128C8382AA112CF45B528A3311AF1C8F88B468BBAC5AC566AE422B322A3322B33DFBC0B1AA1418F81D188F118182B118FA545B258055E5625B252074E422B558FA1F122222F24F42222A5588A80518AAF824A5AA21E127E722FA5F5727365F62222EB
-:800300002D2A2F22D222F6222224AB228B118392281AA3118FC6F6181828F0D8D86AB6B8FB24142AA7522A32122A83F11994A011818F81A1118F81F11A188FA555288FA5558A5E54F05452214E422B558FA1F122222F24F4626221A50850822FA21A7288FA181A8FA7F7424AAFB77726B62352A22B22A5F2222226B22AB2383328898383D9
-:80038000F1787C181AA1118F8EA9178BBACFC2A1664AA5222B312E32388FFE06000024844008842400001A04004881001008812181184200002110024008842001160812E08104000012006F5502820000122C01240000502200502200000021400224C0120000400222000000000000A0240000146E3DE022F511248F22F111248B141F77
-:8004000041324A1D24AB141D24AB9419B24A3915AB9443F24A9143F3429147822D914F82E414FB244A4E814FA264154FA264192E4A96C54A9E24ACF591242CF4912485F291248B141F49324A1F48B64AD141B64A9921AB9459F44A9443B24A39A42BB4478A29FB24484AFB244ADF9E082E4A1F41E62274113C481F41324A1F41B64AF11113
-:8004800064AF44F91164A9BA15B64A7924F8429347814EA347821CFB26482F14FB245A4E914FA2E8157A246A1D848F59D236E419C25A1FC9C24A1F49D628F481248B141F48B22AF19144A3D641F46A941D44AB941B68AF4431A42B14B6F84214478B29F926482B944FA2E1970E8400000000004400000000002100800800001400840000FD
-:8005000000000000000000001002CFCF040000812200848001002508240000000010420810280400000000813281000010080082000028EF6C0EA018228054220040028281830824008911220400290200244221842188290120024121008A0100840000304882D82854448B3E004A01304821008424412012180221401862240012218291
-:800580004048022578410A30182004002180210141200200008C084E122820D1E10A00220028210080211828180824800100002824008004002C08002210048128890800811008004282884034243DEC40010024004042280434840024844200000021400884100400004140024111260222004002004C22420400BF2E0F23221243120160
-:8006000016831428140100248184489022000000244062412C81221424120228284C021042248AA48280088A422228080080F8C9912428281150123011488064140000A181212002004002100A16682126844404211004490224144D22A84AA228002008214B82224400B03F0A112400244002A481001512080089642400000000002504D4
-:8006800000800220224202410000008224282008000082BBCE0025422403142200241181822CC8642C08223012100200820012400441CA01442305412142004002412A1408440000450226C82E6F9D0B844200220025820410210281002410141202241282404242020000200428901141000049221204408101182400F023D9000011105C
-:8007000002182440622190420084A1821400008400220000984490824100E0420880020000A01433094B4228204404277A14101224814201244221100246924C2C48C8228865110200A1002642421204184B1C40140243024B1E440000285084001A08800142C1811F5C030021194202262201501217812D828200248420010000002001DE
-:80078000008604908216041012012002212004B0141422E1442242042843F2F8F20011114200601400481100288502002410020000824004442D820041410000001824200800004C4284624220024F7B0B00200211002501000014200A21822028028642220222E026086024424280042A48048008241044048084241224248208EF3807A9
-:8008000010021440020011400284214A082008000021820040420444824424004904240082204102004421882140128412F2796B2024130111002211422918B82198211B848012088288E0288248022842604446020000008228290443082D94C0442229121292242120210120F6461360291224004250210082828008C012A0124822003D
-:8008800020020000412E8200805224008800002420080086040088824840E1CC094042081043914230231421004800304200002008250200284424002410441444044044444214821802208292444C12C484F012EB00114008000000288A0482A048200842804402484246A2422C0448C84A826C4480020022A012482200002C84243444BA
-:80090000800140F4FB9600004062241092182304190814204402008800880010022028182408000041242041846141008280186428200422009F3F038C4182141121420140424114830282002880022180034A084200224621022668212E4288242082249282224490622821504220031082F29A41003F1841B2210429541127122434334A
-:80098000D8318AD211886A248A13BAC2A8880028242CD222EC26022A56446D622348924243E8242641064748800260682C7182C2242C9C224F4438448AB864A2174F4401471A49F256F7A015321481141425B2414411821C78424182848C08602428A04A82230829A484C042882E8263ACAA2147422524624C2C5844233214AE324B9443C2
-:800A0000A284240086D262E42242D4442A33242C08CF7D0C2424B11415F2412240921B1B641423B8811878C161886642A232A0CA234882A882002D424242E6D444C6C4424A0445922249A822272480FC148423B112022127482421226F44148284DA428622F6B28A002541480146024603815018501810284222022A042A042A0423022263
-:800A800030244A928628882821288062242842284F2488A284E024086C082C88848804003F310CF011128FA111B3C1B46126F441428F85F5E1E2AF88F8A92AB7881BCC4E484E687AD5A8A2FD6A26AAEECAAEEE2B8A6AA6644E622B466AD64222F2A4624AA68A624F63C32267426E444F46B44226AF5E6BFE2B7DAAB882BC82BC82B2C4BCB3
-:800B0000A2F686842B489ED14B374D648A58442F9207243F95E521D112642C6E622B443B44BF81B5E2FE86862F32728AFCC9C81F8AEE82F658F82E222B9BEAA46C2BCEAAE82BB182EA2EBD62F462622B646E462F46F441672F48E61AF4A8A82CF2167C47626F4AD644F226242B467AC2349EB6FED4EA8EEC28ACEE4F2ABA86F884868AFCAA
-:800B800094D44F4FFA26644F4AFA1414DF930B3E223F23F72123BF8232413B663F12F263632F15F5E9EA35F7A3A23BA89F94E414B448A475A5AA576AA464232AEA2AF1C2E22E8266E224B44276647266C6276D662AE484A4641E76476265C4262423A6D88EB46F49FB32162BCC29BAC258226F4CFC62646BCE29F434544B7367444F44F41D
-:800C0000445457E2E023F33B718FA2F26B2915F261633F16B263B613F5E9EB35F7AB2BFF88B841B4A19C288F87D522B212A344A2CAA46C2CB162E421B842F642622B464E462F4CE676F4824419E686F46442EF61D166F2E684474A6F46B442A25AAE142F6DFDD2722F2A18F2C2822B4E4F2ABAC6F4E6E62F48F4F4F54F43F764244F46F6A4
-:800C80006474878A80012501144002148648424841088440088A242408824220044200490829080061D02408002CA84100240048648022C1248200A503200100112100135822800846012C0820080024001002450200004014044100124100100224004120C2A44120F225AFC0421F41523A1F417248F31124A7241D24AF14D141B24A99D6
-:800D000061AF3419F54A9343F24AB343F242B347822DB14F82C4B14FA2C4A14FA2E411F2264A9E214FA2E459F2244A9E246FA2FC91242F22F49124A7221F497268F29124E3F68124EF26D141B26A9921AF2419F54A9643F24AB643B242F924482B944F8284F9A44AEF860627821F417422E3C1746A731174687211746251C12F6249DC3289
-:800D8000DB85E2347134D8383A344E2347821CFB26482F14FB245A1CFB24C81E216F82EC19F2264ADE254FB2E41DF2264A1F85F2224A1F48B62EF59124E7261F49366E1F48F66E1219F268941D64AF249B618F643924AF64BB2484E982F442942D482F44E3A2F197726088820000000040042800000000004C0100000014008480040000F9
-:800E00000000800200000040015D7B144218C02810A11240226881111001A084212008002400000041400232C024883024004321028200008062422008A084F06FAC8033818612012D22410024008A442204123042800882200821002488400429082948C284482412881014024880189482803844C24414417F5F4781A61C82934282F218
-:800E80001224002C381414E21522048E521082C88220283182820000881124B01A48B264084CCC6410B2848112140462800829C22488422C1CC44143F13737801141021001400281000000200400004002002444400428002C0800180090820000418800430880088FC90200000022E02201210000000082A800002400004224200222203A
-:800F0000420420048002000000000000F0DCE79062805928282041022052124840022481002048048200401284220282604824000080382412002008A20022484880042F1A4E82061281212042821142422104002484802822180400005042222C020041004400002228000020022022240448F01CB2002008222001222428000021000041
-:800F80008800800821002004200A8A022902004288441800200882000000005FE50F10C82818000000002200002840022100A6220800000000231C026A3848C248202802411A0438448001202804281FFC0E1088D44802C022002290222214909229084100210020082008612062442828843046804134C244801404802208280041004C81
-:80100000F4DE4B800100812180922200240000C012008A0410040000E028044400100400442002001800904A8800288002B0A20212C0288D34850270220228902221144082C8124100006028008008490C436244284A021064844A48B4424804480020F1428C823880024A02482FBE0F000000222002000024922002B042081084020040F3
-:80108000022100D0224844A22860414228882820A114000000C0840043F2BE9700004042C2224002488124884622C2220000282C4282D62282228802282002222100002800204424042042140420240400B7A940024008408804108228C4686084212A8884822424A868004222830420022420028028024828820012418C2681C5589A821E
-:801100002201492602EF890D00211008008100001002400200008004008422000000229022800830442E4442488004484481424800002FC208E08104840020D22222024008848086048100298228228422088100008800820000206881C0241AE481C2482228481AA2210000CB1700421002000082200C8248824282201802000000C08243
-:80118000800800000080040000800468000020220422FEC600002824836222008502702282460224242A04A2908280984200218022028830A20082228260881004808202C400200200F0964F200484002C448802428420443822842140282424242404800422200442282024C8284200E2122A21A812920016882825A31482A01A28F0BD62
-:80120000F720682A000000800800000000002100000080082C08001002004200440000002002000018F04F464098121240180824836282484C448802820028812830429012800800001422234888240242842218221222C4121A0284844800381221F0D46840B288848112F84A22842F221272889A4AC28121212B6850228C7448488206F7
-:80128000C82D4230628A382880A422206A22288283BA4288A2842A22B2A4012A6181448F8514A8651E3812382A28A21500DFD7033092818508848190282BA280EC84F488CA4E488D8A424A2A86BA2206AA1422820224848A0A8682C42220220400228081BA7C0C626A84E18555448B448B76425A074CA822D03703484E322502A4F02222AB
-:8013000048262A24447822226422F022628229024A28A4A4CE224ABA428486A22485A2228822B082F882422228A2628E48CA34984CC4144C86AD11A0228D884742823A044AA36218223F740E10420860246024C0828488C082C082222C288228022230A220022A24A8428A828492422888288168812889A821C9A8218908884024810888AD
-:801380001A842881F88D75A0552B2285FA2A288D886A96424821CE4286C8C22F88AC48AB4C8B822BECAAF2EA4887A22BECEAAE46EEC2E86A26E622B4CAFAE82223EA2CB6E2EE2EACA84E622BAA228D688F8CBE687628F8D8688F8DEB4EEB8EE885E288B818F118588FCBF958788F8DA55C5E118AAD8D9A085FAD095E526E2A85FA6A288F79
-:80140000A4E422C2422CB448D42AF8848CCE42AFE2EE24EC2CEC2AE226EC24FEC8E88FAE3E622BAC4AA6772B462BF4686EE223EE24BAC2FE61C323E218FA2A282F26742288F268688F8EBCA888A2668FC7F5684C4E6CEEF88F88EA81F51818CF83F3FCD8DAA54C1BDD8EC22B151229F1D9D5E021F1326224AB2285A822A52814E224DCCA25
-:80148000E42CD48AAEC42B448AB42288DA8AE228B862B4C2AAEC8ED22A88AA242CF4AA488DAA2B642E832B8A8EA2CEC826B2A2DC88A2888BCE6E48CAAE5C4BDFCFC7E544B6C8EC81B298F898984FCBD88CA7914AA4CC5AB112A5118AF9C651E021F1386285B22262A82F2656AA2F24B242F48A22AFCCE424FC466A2F2CF4CA42AF22FC426B
-:80150000622728AF8E7428BAC2AA8CEAEC2EFD82A223A142EE42AD6887A823EA3CB642F4A1822FACFE82A2AB888F8AA8AC8BECCE88EAFCD8F88FCDEF4DAD468B648F88E989F99888CF83F2ECD87AA9446AA59D2BDB16A2888D8300000048C048A048800486088E48A048814842200442000088000000008400888C048A049A0482400848B0
-:8015800028800228F03399001002002582224218028848215022008488002400000082002400000000004C04200418498401808402007FE5092CF41124A5F2112487241F41724AD241F24A121D24AB9419F24A9251AF243924AF343B242F147B24D812FB24481CFB244A1CFA264A5E216FA2E41DE2A2E45DE2A2E44DE2A2F4D1242F22F4B2
-:80160000912487221F49326A1F49326A1F48B26ED141B26A9921AB9451AB9443FB4AB443BA4279A4B842F9A4484CF9A44A3F390E2E181F41B622F5112CA7261FC1724AD241F24A121D2C2F64D9C1F248B259F24A9241AF341BF442B345C8B16D482DB14D5A1CD386EC15D286FCD82129E45DF22249D6F5224A17CD2F82F41144AB42174987
-:8016800023F2914CA37611346617C12F4658C12BB45D28AB94922F4472B43842478B2374B658424FAAF51C41008248000000004480020000000080018800004001400848000000000028000000002501BF930E46028001100240C288000010020082280082240000824C0448000020840A1200004800008008C04400FF8C0E20080010081C
-:8017000080042400210000000000001044020090224200008024B28804008220880288199424884001EF1B0948C2800124810024490821902210020024001288822100207841042C9428424200488848228A0441200C282800C8282446442171820224000000004881000000008028020000404402000000008002128100008008201811A3
-:801780008408005FD60F0000001001000000000000000020040000000000208204000000004800000000FB92001002004200008308000000004100000000004228000000200282CA01000088A08482488008D02604002100804401000000000000440000480000808402000022420088880000800888200488006F180D0000000000C088F4
-:8018000000000000000000000000000000008002800500004880840800005F2E03832402800228008008000000008800428200001004001800202404000000000000008800E0C10E8480440400C02800808C0221008002008001200200000000304420A84842000044442842008A84880182F088F8002400810021208204000082002001D3
-:80188000000022000000000000001004800400001288000022F0999B0024008100218C22220CC800800820220900000000000000004420881404800410044212800C822008FF83044828402402220000004002000000808408282200440020010020048848000000002008821880022F2607000000000000000000008200800880040082CC
-:80190000008288000080042004000000004200009DCB20220420028004228004288028048008000000002800000000000082820000820020082004003F2D09000000000000000000000000000000820000C2000000800400000000480000F0A8770028800228802202222200222AA82822A08220822202222828288002000080050000000E
-:801980000000000000802488F465B7000000000000000080888401880000120000000082000000008004000000004800004FAF020048000000100800004800000000200400000000800400A028480044002082044822208808DF8B03208402800422A024002004000000008818000022880080242404200148428800880080080020084868
-:801A0000E09D0B8282008200000000000000000000004200200400000010040000000000000040013FE60C84800400002220624280020080022810028A03C82828800214804508484200000041448002000011201802FFE502200E228262A02220B228020080AA8428800A288082822282A422288A08001AA4482001124442C2880000004B
-:801A8000200430214A284C21F4B29E20A24800000080022A0642202808208802220020A4262002880088420048008022240488200800202404888EC1A0140080022200482A22040020022A2484038A0880A888124800A0224800C28842000048888A84140400A0822088840400F084648002288022842204422004002002222002222002B6
-:801B000000000000200112000000880080088880081C88041A041F7404282AA2222AA2642AA26248286AF628682A064A042AA2662AA2138A82A2228082022AA666222AA22ACA0CA019881AA111A0114504EAAE4442A0882028A822CA2CA84C6AA6C8DAA5DD4AF4C98980E28602424AA6662A86A4662AF22C6C2AE6460628002AA2138ACAA6
-:801B8000222B222AB21283A2BA4AA4E62AA222AAF2C1C140F11818428C041A014504AAAA444A5444A0AA828AA2AACA2CA84C1B668EC22BDD9AB912F1B3F220820620A264A0262AA2228FC2A226284A04824AA4461AA388A2212A82A18A886AA6662AA2222AE21C0440A81148001A5144A0AACAA4CC8E848A888208AAAA44884AA4EE422911
-:801C00002488E16B0E2289A622A04628A0262AA2668FC222B6440622886AA6461AA388AAB82242A298AAA8A34AA46E2A82A222CE411061881A19A8111A014504AAAA44CAEC48088A8A28A222CA8C88A4EE4229E42C8CF17C630000000000004880048280048200200820040080080088000000000000000000480000B7FE00000048802496
-:801C800084220200000000000000200280020000000000A0848008000000420082001EC1E022F4112487221F4132681F41326A1D24AB141D24AB9419B24A19B54A3924AF143B242F147B24D812FB24481CFB244A1CFA244A1E214FA264192E4A96C54A9E24ACF491242CF4912485F2912483F49124A3F48124AB141D24AB941B28AB9453B9
-:801D0000B84A39A4AB9443BA4279A4B842F924484AF9244A3FC30D2E4A1F41F428421741837611346A15B44AD141F242941D2CABB459B24A19F44AB143F142A145D812DB86D412DBA4C5A14DCA1EA14FA264192E4AD6C54B9E25ACF4C12CA41F48D628F48124C3B491322A1F48B44AD141F24A941F48B24AB385B24A3184AB344B4A2B14F2
-:801D800047882B3467832B944FA2F196D660888248000000004480020000001002188008000014008480040000004004280000000025013F930600000000000000000088000000000000480020040048008800000000000000009F9A0D200800008008008800800100820000000000000000000000000000001411000014C07800C2000096
-:801E0000008810042280021800C0820012200800001904102824048004200810042200401101400214125F7905000000000000880000800800000000000000000000000000000000000000F09FE40000000000280000000000000020020000480000000000000000000000000050A80000800100000000004004440000004004000000003E
-:801E800000001888000000820000200800C75C000020010080020000000000000022000080040000000020080000800800008800F01CE800000000000000000041100400000044000000000000800100000000000000006EF92002401108000088000000000000000084000000000000000020010000000000005FD90100002004008014E6
-:801F0000082400000000000010042800004002000000000000000082880058F0584200000000100200004002000084880024000000400480020000000012000000000081F0CE6A0000004200210000104202000084004002C480020041400200000000800100008008008C019FC70F220011810000A0848400000000008800000000000091
-:801F80008002000000800100000020082004BF990C00008001810000000000000000000000002280080000000000000000000000E02308000000000000000000008112000000000000000000000000000000000000F08B65000000000000000000000000000000000000000000000000000000000000FFE40F000000000000000000000012
-:80200000000000000000000000000000000000000000F04FFE00000000000000000000102801000000000000000000000000000000000000BF580600000084000000000000100200000000000000000000000010080000000000EF84090010080000140000000000000000100200002400000081000000000000180000F0D9D60000000009
-:802080000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000000000012000000000000000000000020020000BF1D040000000000000000000000000000000000001200000000000000000000007F740395
-:802100000000000000000000000000000000000000000000000000000000000000F04FFE00000000001100000000002100000021800100000000000000000000000000001FCA07004008400800000000000000000000000000218001008400000084000080030000AE7400000000000000000000000000000000000000000000000000007F
-:8021800000000000FFE40F000000004005000040040021004400100218808802218001884008000028840000800200004FB1070014000048405588281082044480022100448002214818808802214818448828842148408481421882041E148002211A01445C03000040010080044400004840040000400400000080020000880000008038
-:8022000002000000001FBB0C000000004005000040040021004400100218808802218001884008000028840000800200004FB1070000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00210014000048008002214800800294
-:80228000000080028004000080044480022148400400214840040021FF18040000000000000000000000000000000000000000000000000000000000F04FFE0000000000004004004400000000400400002800000000880000008002000000005FF20B0000000000000000000000000000000000000000000000000000000000F04FFE0024
-:73230000000000000000004004000000000000002800000000000000000000000000BFF20A00000000000044000000000000400400000000000080080000002800000000F041EEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FFFFFFFFFFFDC
+:80000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000000000000000000000000000000000000000000000000000022
+:800080000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000000000000000000000000000000000000000000000000A2
+:8001000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000000000000000000000000000008200000000000000000000007078080000000000000000000000000000000000000000000000A1
+:80018000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000000000000000000000000000000000000000000A1
+:800200000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000020
+:8002800000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000A0
+:80030000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000000000000000000000000000008200000000000000000000007078080000000000000000000000000000009F
+:800380000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F000000000000000000000000009F
+:8004000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000000000000000000001E
+:80048000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000009E
+:800500000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000820000000000000000000000707808000000000000009D
+:8005800000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F00000000009D
+:80060000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000001C
+:800680000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F009C
+:8007000000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000000000000000000000000000008200000000000000000000007078A3
+:80078000080000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000000000000000000000000000000000000000085
+:80080000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000001A
+:800880000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000000000000000000000000000000009A
+:8009000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE00000000000000000000000000000000000082000000000097
+:800980000000000000007078080000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000009B
+:800A00000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000820096
+:800A8000000000000000000000007078080000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000000000000000000000000000009A
+:800B0000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0000000000000000000000000000000000000000000000000000000000F04FFE0000000000000000000000000000000017
+:800B800000008200000000000000000000007078081400D09401844508112140042424444062212400434104809188A98901C0821042884108004528222222C21440042C42922810085084B77A009341598121253C141841415C21B18961C845410C6D12C301128981518225C21216229812C088CC9B88C4C922A2212508C351C21E2C22F0
+:800C000044274127413028C426D22C4294346CC1321A321A122D129F6406400890161004407114817188211811140400236181248400800183282842187422142201400418403214250412404288028422121824815FD70C200191812112124110024941088502272145180200414100821820410C88812889321280118612042832902CF7
+:800C8000811014C2224110180844FFC906404101008184000000240041180021181825022140088180080000100845C828008002001094122011122201EFDB0511400814C11004440040140400800100001816022398122009840040480881004902004034242810E4210222002C71970E0000000000008008000000000000000000000018
+:800D00000000000000000000000000EB6C00001251111C9241003608504190422528342641250C414502C01244400884218144804248044180121818081883140423010018411244EFFE060049420485062181204818483813822AD14201188818860884C422AC01163224E0624C642812124C6221228313321844100200814B820023925D
+:800D80001420228278270B00411005312D4100AE188181558A91422CB144312418860C43485482842A3118218C01D0425A864C2821922C9022CC028B2141812508405884268201234204268463489F670D00221604152C028100004021982A10121422110810046140C224844200211260412011028100808104430800121800F043AA1002
+:800E00000420818134221185829418196414822112004A0244828180722492282044AA2818444084012A414422214208001A84410880618830A4281228A6F825ABC02119A221C4B18B12993138381E2C348A11C218822D628427C7128C3448C982962C8608D0489328381E4A812C81014014843A18814CB162B922A986C6B22848082C31CB
+:800E80004C2A987224836185432215F4BB2770218482512815B82891122AC1382D6815621421850216423A7812484C84C22844282614CA248984C24281000080312481814429082224AA4508D04A6421F824381A24A22449F285540014284C21816492850116C4189213A4812C2806416281848D844283C288803218228D12AE18124C9166
+:800F0000124418414C22682112388F22A583C28A14884128018A1208C938281684C1882ED614898254281423268234122648521866D14232934423B1849128A26022874562481280B12884488C28A44841288338126A318228602820220583C4A4888112430383C82C00128CB61C0CC9819414360400225281A2218D2420147842081812C8
+:800F8000450244222B612C3844250200842023F12814304880058490188184E044230124420030948C0C213E9220140400814D18111400181281839124008410081884418C22220112204148081122B014028B1249240240211102A028A016C01281302843F855B2144C46941C290126D848A5218F12052CAA142D189698144D2A8B1C8371
+:8010000032B800424654286614D826A1612968C190488318A8124D212A618323AA52E0C83422128414AC258801B6822523D86831888E481E2843F8CDC48001D041326240120184A5912124118724124400128D244781382A04224A4208208821B424012C096041E0810230281A14084A2118084C821428C214002E48AF4B06285220120163
+:801080001061861B822288158C48512818488840886C824A08C80018608860818A2408442230C8822394184E2470525882801182318290126198426022FF7E0F1122508184298442028D12430122242CA42486682290182082C1282116180227881A48C2182100482B81A02490281E88A2880030120084800C24008A84F476CD001100A0B1
+:80110000218483021A082EC1111483012200222041282802004AA2218150488908124890182001122285046222884200698124022084F178CC608440084880020081440020044908248A51840024002281463812A04280032489040000A9810B00211618C25822000012826D2340418161941528011C042628742881C2418313082A24888B
+:801180008481040018800488202841282118088A018C8448A284684968228224820082212120012E416FE70428282A04602440C22134830A23C992826C2144028C028290242B181002298134122129088342381284241A2E22314A8441122D844A02304484204182348850846F440442102122942242211221149048211123A88129612219
+:8012000012A30A288442602116C88228222A41A24100E02902A4822386C812401848248124016822180088F0721714124598110020A161940012A01400004E284C048488188148812842402484A22144184821200184220000248608A0148022A2124880F8DA7D40A81489061048180800874400488A11282801482A9112C01281880081DC
+:8012800022A64801608880312828182C02D02889C4848C0130422582218881243912701B014A23D29121422895182CC22936E3C4086EA81EC38F27DC22286828282B429AE18488313CA9BC4819AA21A9ED87E462FA12282B4AE6F828B47042C218AAA758A5E281D482E885F544868B54AC227112084E588D1A2B11182B232B5C4AC5818C4A
+:80130000F3BD1B141CE4C1B418A2244E432E182A6211198189B21856111814CB68AB974CA69ECD2A818F41C6288C2AA2411226688B8A98188A952C8B5112C2499D2A7038E882F982828AB2A83AA21622E826E928E9845426216E462D824C216181D24B42DFBF0313F2413122951999622784BF86B42AF48B28B3F3E189AD1433DC83E185A3
+:8013800041B86219AA152F86A81A8B83C64252A2242C64248D3227818F22E8A181081E9283612B87A14AAA2D8B368F2711F618386D88AB86E9022F2128A14D8AAA6324288A88E52CF85B7300000024000082248220080000008220080000008800009082000000000000000000002F1401284D248D288195B828F348623D33AFA151BB6F06
+:801400008844F2DB4EAF81E189F184848FADFD32322F8DF5A4A49E828B768AF92C2C8658A82FA1F15ADAAFA1FCAA884D845ECA2F21B952752464212B998F89E989B958E529F8CAC88F88F8CADCC5BEC614F2D85C85F24A88C7E48781B08228A2118D1818CD6C1FE64F51115595211B2695B828F34A2A3F34F33A32BFBBFADA4CEEA3B7AD88
+:80148000BFBDF9BB186F6AFBEABA27262F87F1E4B62FAAFBE2588F8AF1AEBE2F8EF6C8CA2F81F1484AAF2AFFAA98CF63F35B418F21F9DAD947C216B292F8989AAF85B958FD989AAFA4FC1888AFCCDDECF9CAD429F8FAD88F29F87A88ED1EAD1A1E922F21E922C152AD4842EFE4F3E7D214124F4256998F12F22928AF83F35A422D389FA561
+:80150000F56A7A2FCA9F299FADFE12123FB9F9BCB68FAFF71A1A2FA5F5AEAC3A964ACED84FE6F7A8AAAFA4FC121AAFA7B79AF8E8EA65E6B5F4929A2F81F3646C5AE421F418188F89D988A1898F88F98A886FC9791CECC9F1323A8F8D971A8B94EF4CF89A88AD182BDC2F2EBCE2FE4A5818CFE2F7BE69B031F6352595F829299F86F23A3868
+:8015800087A73FB6F35B72BF1DFFF9F99F1CFAD98A3F3DF9DB88EF6AFBEAB88FA6F2723AEFEFFB3A78AF8BEEAFFFE4EE8FAAFA4ACA2FA1F16A6AAF2FFFFAFAEFE1F1584BAF2CFFDBF84F47EF25FC92828F89F998BAAFADFDD2F22FACFDDAE8EFEDFD5EEEAF8DFD72FAAF8DFF9A92ABD5EF49FDDA98AF82B852FDF2D22BBBAF84E425FD6CDE
+:801600006EDF5D0922E0124148C14822842641286281141648E38904122019281108812100811881218100002B92A012842E121243628126022440A24124122C2221242804FFFC04820000400200290888908282882229082822882288205122C280E222288821088068890089688800000081304800000086F32F4BC0521F4152281F4123
+:8016800032481F41B24AD141B64AD141B24A9961AB9459B44A3924AF14B924F442954F82F442914F82C4954FA2E414F8244A16F1244A9E212E4A96D5A4E54DE2A2F491244D421F4952281F4932481F49364A1F48B64AF18164AB941B68AB9453B84A3924AB9443FA429447822DB54F8284F9244A2E17D0A6F511648D421F417268D24192BA
+:801700001A1F41B64AE149567A1F49963A5B68AB1443D25AEB82D47AA9424E95678A2F54F1A45A4E154FA2F858814D4A9E214FA2641C4FB2E515F2248A17CC4D5A1B698D421F41D22AF89164811F48D62AF181644CF1916CAB345F89364A43FA4A9443FA42144F88D44ABB36948A2CD5210284C048000000880080020000001002188008D6
+:80178000000014008480040000000090240000000021F0F8E300294292111132812120012B1218118C849418E02261188246282104009C4242088428800426024C9142124842A526B28884A141181A3C18410069820180FE19B4A0348E1128101881810329A249118A2424382A48428183158422863884482C011EC8481A28889946A829FA
+:80180000A2818D2480B224542A22528129A1C2134812CC222481B218C82885015FB60C721B1428111413618121A0214B4123A242136424898421C428A344C268328A3484CA81018B8446A88115C8B2B06818A2A44C62614AE26231482B42AD442992542AE91A21B146E1815242818A31242422819AF6C57C408242221188021A420288130D
+:801880008109892832488031914C0842000037821221800849042212A10048001884A9882404890824C022124A09003F28091800F022111262001A9218922C2881994125342142844C2108828111508400812312C882282200442E1328008B1419125881185028009688A84318224A08BDC93025182D242181A430261CD712E8280283C1D1
+:801900008C95323486F81248C3C25583A42126649423482EB4137268D47212348C2AA5213014122F8211B886A48154838298982C82681825A8814B248C4994248CE84836C826B44CF25C1B9034182190288100199581B6A281248948311425BA48823644121A98248C788208255248C95414A0828B438A233224901881CA221925823121A6
+:8019800028211E82C0884416C884444E28608E4141CFD9071430242127111223D64222B212120889694189B923C48413117C11984C229041501C4219833222E1E1002118162252241D162810B848389881178814841823266881A28AB1140ECA9268CF360D838454484D188100244548448482125581184142444CE24254C218E02924C48E
+:801A0000484C8101444E2C4A2114D368064664A2124314648280C1248043081A388830448C86189848C1AFBC44921C480044256281431121614923C5214280DA82E882511846981223047034B82408482A8471226221A2838814C81483CD8422384096154816EC24C128884280212241421802E8CF2606221A02905118482922C148813497
+:801A800012A3880418411218841883120484798142C22414000000301140E88825648400814221848448690112681800CFB34C0212C443314425E2815442163D48837142D112D1128C84989ACC931C4614846181414F28B244D21A65422A217121B218B22261842D4146544289C1142247879A14D48781E481C21A83348289C4988CAD21F9
+:801B00004984A2848C018BC28F610F4B522840D81821011A126241881A024558183244481436B84AD384840283444884257426429444C288202291841F88921210CC68421280844108401284E181942A304841AA09280060218D144C0244494132888C810888168121C9112819C31288100819058F4188C16816024416B1420321281089E6
+:801B8000124218828202462192822C0120860124BF3308144A8121944114834445382249012A44781822012C18218898883141602285833242508290242C248144141821888218DB282871440344142D1218504A814400850247D94011082880022848828429021125621226C82860132B214220110118D4162844012518480900834408CA
+:801C000011211602830110542844C110048849A441F0D8F6001C92483781850144241211284441C8442C0820041504296828450884D01402C41200404801444145131424140144230122815280818281012AF43758E028641480021D48221C128804168102211800228121814225011FA812840142112012F842281D84484301213042893C
+:801C80001162598951182A01824C0429028E1418415014EFC70725082916022114811072414C5C28808432888216022C843292421D5243E4224C6811C5E14114883494801294CB41244220344584262594C44E24858401CCA1812C6228222584F492931428263414472144406A41174328408484E191081C4161888815988119420A2021D2
+:801D00000221240021442D42190100156C8245214822D8420125E11144220310420812F0C2A51002311489C424001034112CD261410110824203002041184101678214212C08411C1146423523461808284D182A08104342C4288544420420C484F021FE408881042D245012122E41942144A0411061449552480070624C8119821A04004A
+:801D800043711401008382056122411814001A022902000012441022F14CFA342A66281E395C75638411D2585149169832AF88F17843122B842F3312F3B989BE8A1711272313E156D932DD9258111469B244C21427C156DA8231848D2F787F657298DC493246C74257F423514316C24889A21515E454C41248C5949C2024F11411E099063B
+:801E000035F2787125F238225887529F9242E233515145B12112D2B275180832282D542F28936426612916D829F4846A9F237471F51A1B9D882C24E24354E87B1157442698124663423394A8D37644D1D3D356F972122DA7425B81EFC152862342B422C23A4B468DC44D229E8F4051414431C5FB47284D447B234F84B6667A590E4D3C1B5B
+:801E80008C5D121B988FD44952198C7881F9C8A899768114342A6D388D1A17424F34D41D919C4D2223857482C3515513D688C82B21FCF398DA8B889F2112312465F32A1A628F6BE1A131124F41F992844C012B45AFE1084400204802002C082C0830843084100441002008002008822008822008822008000000000084400884F0768A142B
+:801F00003F145466F5FC2C3C85F42B24955E763F14545BDA7C88F19B1FE5FECAC8649F6CFC8E876FA9F886877F7CBCC5FC89D5BD491F1CF44D457F54F545CD1F11DC59F8D1C5CF6DF4F6D68F8CFCA1B15F74F4A5B59FD8F8A1A1DFDCF465C1DF44FC46D3EFB8F16767FF8DFC42413F5CFC47453F2DDD6EB11EA132CF28792AB292F86C78D8
+:801F8000CF48F84A432F3448F243436556CF8F86B349FC2C24C55CCCF08D858F8FFEA823BFBB718EFEEF4D1F5AF2C947EF62FA968ABFBAFBABB96B889D95DFFD7C85F7D9C1D7D157D11F31DC9BF8958FF7794F6341F5A3B55F78F83D3716F5E5A7DF5CB42DF86DE66FBADB4EF96DF7BF93FB32313F1C5C57BFBBF92E266FC2F2263CCF48ED
+:80200000F92812AFA1F16E6CCF49D94CF1845D147F55D52354475F51F158617F65F75F5EFFF4F44F49FF78F95A5D2F12DA3B5AB9EFECFC2B2BFF1EFE85932FEFFFF3C33F1FFCDFC99F59DDFDF5C5CD5FF4FC4F5F7FF4F413599F3CF5D7458FF4FE64668FA4F4353F3F5DFC114197B12F2AF247E55F16F6CD4F6F26FEC6527F66F7C3D62FD8
+:8020800016F6C3F15F55F5D3D3EFEAFBDED64F66F6968E2F62F38AF86F42F7949C6E727F3146F257573F21F22F2EBFB3F3596B7FE1F35E5EEFE4F64A5AFF74F7DADA2F33FB5BB3FFF8F8CBDBBFBAFACFD94FAAFBF2FE9FBFF5FF5DDF9FFC9995DFFCFD8D8E9FB6FC5F5E7FF7F5135EBFBCF5D75EAFF4FF7C7E9FEDFDF2F77F57F63121DFD1
+:80210000F9F8AE2EDFD4FE2D2EFFECF4B6AEEFC5FD6DFDBF94FD7A793F3CFD1715BFFDFDFEFECFEDFD6E7E6FC9E96ABB82FF2E6C4FCDFD64679FD70225012184248426638126021484341648022417882413081181118111851493281181490161400125013C48C882124D831224400154164864816412441244F0AC3C001A424104204281
+:802180004401888246018813C811823081A04A60284449A4254182200C8248860496043044704C01C31421041448145042004100005F53052CF4112487221F41B26CF11164A3D441B24EF11164AB961B21AB9451AF143924AF143B342F147B34D812FB34484E914FA2C4814FA264114FA2641D6FA265592FA2F49824ACF5D1242E521F4969
+:80220000522C1FC932681F49326A1F48B24AF18124AB961D28AB9451AB944B42ABB443B24279A4B842FB24484AF9244A2D64C05A1F41B62844F42A131B41AB161D642D121F81F66A861B41AF44BA84F24A114F89F44A314B41AF14FA1448AF14FA36482F14F8A41A4E114FA2EC15F82448C6F12218D6F5224B875C2AF5C12C2FA2F191449B
+:802280002AF4912CA3F69144A3F68144AB161F48F662141F89F44AA65B6989B984F44AB24B4A4A7B84B84273A6B842FBA41A7B43608882480000000044800200800282812180018800004001400848000000004480021800000025014FBF064C04112093287902181C1222024188112611118122110884462C3212281D142646C8481224E7
+:802300004C021240119C24E55141250989C12A8308884883CC448001001CB4A24A81A22824418111882C628481831121B4412884222182417862C165326604608484001304304813C112118D12001301892211954213845172142001606490C45621F2E42F1468C214B028819225305215D886C1212A644CC226B121011CC1283B1245296E
+:8023800071321CA428A92492152225394110781844A2148114C42E1211118C513445D81872A2586113088B18006C044CCC112B213F730E4128244450812988128802001100302100422A84823448204108414284122C942118112C015041C1CC5212A014482C018024944420012084F4C12580110110140112002011A8411C9141882220F9
+:80240000013AA48422421508418501E02221040060129A02124D12682C81142851182004428242202408489F5A02112E12C490522F8241382A122F8122162849E828E4813A11993192952241816114868642E211D42626317C23A4212E1423768164614951185924120143D2842338482CA9484B814314641545A2A58F4182C22422CF478E
+:80248000031800409422D08223518248188881881688A912218721303112424B84287042F52846188C94122B241800008611811225C4224E1C8C688419A9844B8410B4814494528C0441F0A25940E111124E826591810032288189A1411CB583165181981118484A38215083602111B024A142184722621748472159B318C244122C81C27D
+:802500001422201118226144421242A249232AA2245F6248924C49C528614A029B42804282B24882C21360411242814245588213028F21441D0824811962412A01118924E1448241A4120048466448A021241888008A713A0240A4825F3407812A041A72191204163814548A91111A6288C08169E21251148C012B84803416C0514A382452
+:80258000442C9168496484688303830442C1621C5242E0C27528A2684711C210CC244820D4828405FF470424141001224422114200001F8114124828482402C084801424C248428210221202449894830181842602008014084212844212882608FFE5054225016D212C811288C311442812128E12894497388361484C048C38218E44E56E
+:80260000C244CCA1248146948187242AE5829443284189CB1183C414688CD242324683CD229AC4578688384CA018A7265246C844A8BFF40F611E24832271684174644138241994921D6850813C2149B421541816D848820420548146014E2425A8216B1244808225114498148C121821042284004A013034832401828903EF1D4E211402D4
+:80268000009014604429C241C0211448304500278212121412808481810400230452541180045082004063114522014281180061224427411FE943021612512820012810011D22848100001460184A72848812631341248044342860A40026041992284CC114442CF8442141B022486654124341022A01412628F2E4DA002C440200108860
+:8027000001118111800118800144844001114581C4124302901444550252114114198204481291214212108428020000D0724C121111181109401109208101150881200842185889844D8804590885A1422212818C0C8904C821444E21704202441C1123E2242234544351421800486F730A002428282C42011890180084491201190200A7
+:8027800000211400190518000019220412441814100185A11C1400210000288C8EA141227F7B0584211242230400843110012100190143388211133812124901B4858244311449045084445D42499411410049A192004469A22413C822444484400227484CB11E058011110100150281008114842608881081211408100880C88200D80026
+:8028000011228881421E629319521449124824044120128211148402F0B2E660481B28C4184489416881110084800119113A1112164102144284428440D1843D4141444421294198232818413018148311322819611412008008125604F08A96141D1880048114004018C214122992128450284601234C31829418241E821424110026A11C
+:8028800014182412CC44488534412445084444C02481414A0241240021F0D88360242F1872146AA1812810F1114215117339911117112110A982501927241E312C0D19D4B9F514411D135F2C79526A5146B4C67614566C4E434E4416D485F2814C1F3271917563C4546F24F24D142721274242884F6532C44F64C198444B124F429498474E
+:80290000256F594951148A11F84321F0111891834168828941B81812381C222F412551241AF81191195C9142238852412395425F486B84432233482B155F48F11139F79A36B16481167A14D113F239148C1841D264D41E85E4812231141AC2821AD244B222F23CBD2439F1114235017F8402696192ED11A11CC412B425F8215897919415C2
+:80298000F9D39129B284344887499F91571C428D1A8C44C1415189C614581D29214722D048641167454F84C518CF28C84925C3295F1DF713111742222F4294224467222FC18481C4143FFB07444004444004442400401204411044120441100461000000822018220882200800000000008414844008DF720817415F53532D1F53F3E86CC2
+:802A00005F73531F64BD1CB5ED91511115D9DFD188F12C3AAD1C5F7ABAD2BC83F895C75F5CFC85813F145455C544F659427F6CFCC9CF3F11C5444E44CEC22F6AAB448E868E841F5AFB4145EEC73FBCDC327897FD26266FADFC22232F55F54557DFFCF856122F257512F28A884F62F3C6D48F84B6D8FC624A560D3741DF43572F2F43F348B4
+:802A80004C4F63531F85DECA51D9DFD1D119F1193DCD1CCD1CCFA2D3CAF1A5A76F4554451F1DFC47555F18594411DF1DDC84F11D8F3BCD9FFDFC17551D414F44F4C4C72F6AFBC6C49F51F111115F5FFBD1C14F5654951F38F95F9DEF46F3D3DB2F12F252515F74F5BF9F6F61B11251444B88CFC2F38C9EEF84B79C69A3DB513445F22762A3
+:802B000095F63B39EB6EDF33721B7511F31F19F5FB131D17119F9152FFEFC1F1282AFB11DF7AFBDEDCBD1ABF8DFD5A4C1F59F941511F94F44CCA67219F25F4C7D6BFB4FD13114E41CFCCFC484E2FF3F792C62F6387D255F3C9E9DFF6F66B6FFF72FAD74D6F44F4DACEBF32F342716F64F5CF8D4765AFE5F42A2A2F4A5A64EFCDFD6E6CFE40
+:802B8000C84F66F7496D2475F23732BF61F13B39DF14F43C22B75197B17FB151BFBFD1D119F11D1AB5FB13198FA2F21F119F3AFBDADBBD1AFFDDFD584CDED54E4855FD49CB2FF5F5DF4F3F1DFDDC9FEFC1F14849CFCD7E49FEB3F72F61F43337AF18FA95B48FA1F67E6FFFDEFEEDF7FFD7BB6FF3DBDBAF32D312F54156FFDDFD7446AFA5FC
+:802C0000F46E6EEFEAFA23266F4BFB6674FED84F66E7E3030014200200148414404108150813081100100111901142888120840826011C4848814403244003144834122C0200426044F0FAD9100440041D24415024008001251404C0864180C4154508450255420114A02124400200204101144400100400125084428483042FAB042D52E7
+:802C80001F41D22AF1112CA7141FC1B26AF1112CAB161D64AF26D981B64A3915AF14B934F44A914F83F4429147832DB14F82E414FBA44A8F14FA264A8F15F2244A96F1245ADE254D4A9E246D4A1F4DD224F59124CF22F19124CF26F19124E3F4916CAB161FC1B64AF99128AB9453B14AB9A4F44A944B422F64793498B24F8384FBA44AFF95
+:802D0000D5062E591D642AE5C1E236D1C1E426F1112C87261F41F622961D6C8F24BB14F24A834B434EA34F83F448A34F8BD41AF2A6482F14F3A4188F14F326828F157A267288E182E51DD292F198252FA2F4412CACB981F62A5215F4689217812AF811682B821FC9F462841F89F64AA65B2989E88A949A4F8BF442B247894A7A96B842E24A
+:802D800088F19C4A40284804000000400420010000001280010000001400848004000000400428000000002501BFBB0228402A1171240214008C01501200A385711302126624914810044041381440084082021742606384118126A214115845211C0480B124044181F0152E60248A0341208181B288820A901912838101204438480041E7
+:802E00001191178243A214421924C41442290114241814144822481C348800103882124448249860118CF43E5440A22C811644C134121482508430211889418281B141518216CA44184315618811438235481D4413741824941A2442241B1290348C848264364944A1524483DC42881104660670183112AFB3052A24410200212883A2284D
+:802E800018D0281101128304212024028410952840011200009021404411111211088909100100A0148019048CD41F05001800282260241146020081150822460140186882140019040084A04228181B2100242002202104248001188210848804848F5B0B5A8241C424269C1817A14786B243321812819CC41129D2A1C653269618268836
+:802F0000B414C2412CA44224282D6440822406180015C81A17862AD181C1D61A66D4341493885422482BC26AB13824A542A0814C7AE702800149C2241648C164288094128114132142A8342B4230288944C42846A242D01226048084242603361181A1243019884A8104142C4802218AA7288C048A8284C184FF49077290141088B2181280
+:802F8000EA29C4258C01C048854279614241951A0036C8411400242604248128001840582895A221224725281D1C4611521848182C041A8463454820C8288F1841119844444301129D54D0821248E62481823144202504C42352422658481A8452128D22204122E68401108821444238280088188084028412150810084290688FD8018503
+:80300000E42284528148A503C0442CE24118812208274110282204294601872114002605254101D0259448204421440366110284182F28D3212861284B28421682A4282948083F1E0210012902006180412922314883014100100C42008314082C017018248204282244A2222038188391228885018904402181C4248CE58102E0174E41B0
+:803080005441255416301B84612D6C22862A92128915CC141A142872443828628144A44E28A511D8418111F3483484421CA4243810216232886E11A38882D881C4121F8418A2816D88424AD14836984E988483F4BD9A0028221E2842F046110016D812B11104824E124084045042414E218442116022282110A225401402418A324A8440C5
+:80310000C81212811229088901281224A0242220F2735700420000230130116301321682014B4100814281100228C04241281890281058224A012180120220A4682C020022211008302824127FB60B48142061143902248163042841004E222846024091418CA241250100404288440118482410080091428818148C611188E08128A2186A
+:8031800090122011F8E4DC000010911219840221107143081140011100000040010080011114400348005022000000220000210000CB4B14841001008491428902445041424008422004178411188121808144512200008140011400241121204282016028002001225FA907202422048421100225012941220220024044014002100540F9
+:803200000800682C240284150240110112C082400200001200F0E43A20228204100414400121004845D284114911042123128214C448904480041C0415429111148052214883041022849131E0240300222C84B42208ED351450410089EC1102211C24024018021C22025012000000105221110028210000102A027042088C0821708201AE
+:803280002480C8118002F0923A203A882655412281835242260113148242084011012845912411412527D114120840C129304840815418401112083419028002842388812841880814185F870C0048222004220040441142014885062400296482181D6288245028404241028440C23100800210615224A81B14818A028011223112489FCF
+:803300006D4DA1241758111D141C6813F02A253784C32211F21A44121C048785265B12A7124614FD48632A51211952828001BD181058211D68119B3511A5DB188222D4A842D122A241A091824E11AA01232869111818142B21272800CE484581924919D2A1051419744143F221222514F324421D64198414D421444158B629D422C144A4F4
+:803380006D44468B64272E4284408144A32115322321235421828B824E21255231AF2AF8422827892C0227A21E422AC291589F940322282A226426AD5EA352212E422F31524226C119B4721CF22611C111501662132244B52CD431724441834253812982C4132F245432A11304348115B14AD411F4821117222E282B111341828B9898189C
+:8034000029B8182453283FBF0300501400000000004004004400504840048504008110180240080084000000400800501800004FA44D511157521117521FB4F427172157729D4ABFA3F157511F21F1191C13F111422F21F112527F7252332F225226457521F12E222B444F14A6441F54F441418F84A4555AA5664E499F2252312F93F3132F
+:80348000113A53A93F32F243416E62BF84F43232BFADF572523F395933BF3CFD62422F2AF812122B112E2A2BCD7AA7992F24745D4BD111F22D25281F56F2494AEF62518A57528D4ABFB3F153551AF1181816E223F41313AFE1F5272F311F32B242F466656E415F3617F2C6E124AD8815539B8F21F113112E222F84F461691F34F433333F03
+:8035000011E1A753AA3F32F243412E288F84E423F39F1E2F23F193973F31F1EBC327222B9B1AA1112E398E922B779AE924F4661C145AF52545415F53F1513B7F57F35262FFF6F642623F36F363773F22F25B72BB553B554764FF15F56D273F34F466667D416D452E49CFA2F747454F76FE6B4D5F74F447418FA6F663698FB4F64A684E4A2C
+:803580003FB2F241433F3357BBBF1353B935F34A489F36764BF961A3BFCDFF61633F39DB33F84BD3AFA7DF22F82222AF83E3A2B2D2BC52A599EEF2EF1942A1755F5292245F53F3583AFF77F35B6BFFF6F64A6ABF96F363733F32F25B53BF35F553515776FFD5F5652F3F14F465677D454F52F62849DFB256574F76FE6B4FEFECF44747BF6A
+:80360000B6F67B7BAFB5D7AAF2424A3F32F243433F3353BBBFB3F32B2B3F32F2484ABFB2724BF961A3BFCDFF61637F39F912939F35FD38BA2F21F92222AFA3FB323A2B992B77BAEA2EEE650700144002244003340040224102240011001002110080010025012D114002144001244021410224000000F0F27920084044020081802101122D
+:8036800020D1480214400481414260448446048384214408008911011088442201482C01148C0492181608481824BF7D0A2E421F417228F2112483F6116CAF16D1C1B26ED141B64A9921AF145985AF54B925F44A914B42AF147925F84A914F82E414FB254A8D815FA2E411F2264A96F1235A96F5224A9E242D4A1F4DC2521F4952281F4995
+:80370000326A1F49724AF28124AB141F48F66A9119B24A7985B84A39B4ABB447822F247924989A4F8294B84FA294C8F0245A1F41F42C42124F12C14C6F16D181B42EF1114CAF46E941F642B34F81D658B931D44AB924F44AB51F82F44AB461AF54FB21128F44DB81FC58A42B42875C3F82F5D8242F1275D8F522421FCCF2221A1F49A652E0
+:803780001FC8B26A71917C62F2816C8B129E6CAF56F1914CABB45F88B242F19448AB244783AF243BA48BB46F88B44AFBA45A6FCB0A848004000000008002000000100200880000400100800482000000448002001008002501FFF4098213011242490222211120210421A0418044184108414084410268218C04902200000021118042085B
+:80380000408108009224982280F44578008250144001001048410819440200100280040000000000202118011480020080080000001440016FB80AA01450414859022200C119A14230422004488431002741208841022A14220414812005000000284508220000204982091423F5D5690011200100101201100814901200008480044100F7
+:8038800000400824280088111011922100008811880000102102F0E7C280C124000000141140084800200241144100804401C04240080000000010218412084280088822200200F0FE5680840180840328188001122028F21241200410286144298282C16C148400224222302188282128A10024C89982C1414226981280081228A0423B86
+:80390000FA808403802401C011114088812428E214212204402831442382C4114916C14A10888284021C021022121A8184B24258814A314188833292228228182280E6930718440020022200180000240010141104002810080000000088220000008428004200000000F08C9B0020010000001200840010410814802208002400000000B7
+:8039800010040012000000192144022004420088BF3C08002820C2221C0100901218122001101418240400428180244408201402208102004284C04821488988A1848001290442001FA80200009180820111204441110120022190840048100400482218222002005022001218000090180084848400F036EA0080011D28243800200130BC
+:803A00001120011C1218126148282004C124008C848221040012281022214488810490885887248001A94408008E370020028042210111241AC411841400404448840482800420840400260222100400218001850242130192008304424820E8A708000010018100000000000000000000000022000000808208000000100880010000E7BE
+:803A8000C9000000004002000000000000000000000000000000002001000000000000009F5606004008000018000000000000000000000000000000000000000000000000F04391000081000024000000000000000000000000000000000000000000000000003F6D010000000020010000000000000000000000000000000018000000F0
+:803B000000000000F093810040010000000000000000000000240012000000000000000000000020010000CF750400000081000000000000100200000000000000120000000000000000220000F029A2000000000000000000000000000000000000000000000000000000000000FFE40F00000000000000000000000000000000000000ED
+:803B800000000000000000000000F04FFE000000000000000000000000000000000024000000810000000000000000005F9702001008000000000000000000000000000000000000000000000000000000DFDF040000000000000000000000000000000000000000000000000000000000F04FFE00404108100800000000004002000000F1
+:803C00002100000021000000000000000000320000F0447B00000000000000000000000000000018000000180040080000000000000000F0BC22000000000000000000000000000000000000000000000000000000000000FFE40F00140000005400000044001002400400218001882810021880088400008042080000280000F0B25D006E
+:803C80004001008004548588022148400428100240042810828401882810828441848842188204441828842148E041012810A21140C43500000000008004540000484004000040040000008002000088000000804208000000F0F67800400100004005000040040021004400100218808802218001884008000028840000800200002FDBA1
+:803D0000050000000000000000000000000000000000000000000000000000000000F04FFE000000000000000000000000000000000000000000000000000000000000FFE40F0021000000800400281082040028000000280048000000484004281082044400108204440010B23F0A000000000000000000000000000000000000000000A1
+:803D80000000000000000000F04FFE000000000000400500440000000040040000280000000088000000804208000000F0D2ED000000000000000000000000000000000000000000000000000000000000FFE40F000000000000000044000000000000008002000000000000000000000000F02BAF00000000000040050000000000004485
+:443E00000000000000000088000000804208000000F0B6BCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FFFFFFFFFFFBA
:00000001FF
diff --git a/xpp/firmwares/USB_1140.hex b/xpp/firmwares/USB_1140.hex
new file mode 100644
index 0000000..797c86b
--- /dev/null
+++ b/xpp/firmwares/USB_1140.hex
@@ -0,0 +1,308 @@
+#
+# $Id: USB_1140.hex 2135 2006-09-05 09:16:11Z oron $
+#
+:100E2800000102030405060708090A0B0C0D0E0F42
+:080E380041001000410011000F
+:1009B80090E600E054E74410F000000090E604746C
+:1009C80080F00000007406F0000000E4F000000071
+:1009D80090E6107420F000000090E611F00000008E
+:1009E80090E61274A2F000000090E61374A0F000E4
+:1009F800000090E61474E2F000000090E61574E040
+:100A0800F000000090E6047480F00000007404F028
+:100A1800000000E4F000000090E6497482F0000055
+:100A280000F000000090E6187410F000000090E656
+:100A38001A740CF000000090E619E054FEF0000073
+:100A48000090E61BE054FEF000000090E6917480F0
+:100A5800F0000000F000000090E695F0000000F0C3
+:070A680000000043AF012272
+:1005A10078007C007D017BFF7A0E79287E007F1028
+:1005B1001204FBC205E5AA30E2030206E2E5AA3015
+:1005C100E7030206E275310075320490F400E0247D
+:1005D100FE700302067524FA700302069124F87076
+:1005E100030206BA240F60030206BE90FC007401E8
+:1005F100F090F401E090FC01F090F402E090FC0234
+:10060100F0D2B690F401E0701AA3E0701630B01386
+:1006110074C0120D44C2B67F08120D4AD2B67F08CB
+:10062100120D4A30B04690E694E0FE90E695E07CEB
+:10063100002400FFEC3ECF24FCCF34FFFE7B017A87
+:10064100F47904120AFB501C90FC0330B4117408B5
+:10065100F07FE87E03120D4C7403120D44806A741E
+:1006610004F0806590FC037402F0805D90FC0374DB
+:1006710001F0805590FC007402F0E4A3F0A3F03087
+:10068100B406A37410F0804190FC037420F080390B
+:1006910075310075321190FC007408F07A007B000E
+:1006A1007D017F50120D9E7F50120BCC7AFC7B0195
+:1006B1007D107F50120D828010D202800C753100A6
+:1006C10075320190FC0074AAF0E53190E69CF000CF
+:1006D1000000E53290E69DF000000090E695748000
+:0106E100F028
+:0106E20022F5
+:0C0D440090E601F07F147E007D007C0032
+:100D50008F368E358D348C33783374FF120583ECE7
+:060D60004D4E4F70F3221E
+:0A0AFB008E338F348B358A3689372D
+:100B0500E4F538F539C3E5399534E538953350338F
+:100B1500AB35AA36A937853982853883120521FF79
+:100B2500E4FEC2B2EF1392B7EFC313FFD2B20EBE0B
+:100B350008F0C2B220B002C3220539E53970C605F6
+:040B45003880C2D35F
+:010B49002289
+:02004100D322C8
+:02004E00D322BB
+:02005000D322B9
+:080E460090E6BAE0F53BD3226F
+:1007EB0090E740E53BF0E490E68AF090E68B04F06E
+:0207FB00D32207
+:080E4E0090E6BAE0F53AD32268
+:100E160090E740E53AF0E490E68AF090E68B04F03D
+:020E2600D322D5
+:0207FD00D32205
+:0208FB00D32206
+:0208FD00D32204
+:100CF70090E6B9E0242F600D04701990E604E0FF38
+:100D0700430780800890E604E0FF53077F00000058
+:070D1700EFF08002D322C3BC
+:010D1E0022B2
+:100DBA00C0E0C083C082D2015391EF90E65D740116
+:080DCA00F0D082D083D0E032AA
+:100DEA00C0E0C083C0825391EF90E65D7404F0D0F6
+:060DFA0082D083D0E0323C
+:100E0000C0E0C083C0825391EF90E65D7402F0D0E1
+:060E100082D083D0E03225
+:100C0400C0E0C083C08285130F85141085108285CF
+:100C14000F83A37402F0850B11850C128512828553
+:100C24001183A37407F05391EF90E65D7410F0D034
+:060C340082D083D0E03203
+:100DD200C0E0C083C082D2045391EF90E65D7408F4
+:080DE200F0D082D083D0E03292
+:1008BE00C0E0C083C08290E680E030E720850B0F59
+:1008CE00850C10851082850F83A37402F085131199
+:1008DE00851412851282851183A37407F05391EF4C
+:0D08EE0090E65D7420F0D082D083D0E0321F
+:01003200329B
+:01004A003283
+:01005200327B
+:0107FF0032C7
+:0108FF0032C6
+:010E5E003261
+:010E5F003260
+:010E6000325F
+:010E6100325E
+:010E6200325D
+:010E6300325C
+:010E6400325B
+:010E6500325A
+:010E66003259
+:010E67003258
+:010E68003257
+:010E69003256
+:010E6A003255
+:010E6B003254
+:010E6C003253
+:010E6D003252
+:010E6E003251
+:010E6F003250
+:010E7000324F
+:010E7100324E
+:010E7200324D
+:010E7300324C
+:010E7400324B
+:010E7500324A
+:010E76003249
+:010E77003248
+:010E78003247
+:010E79003246
+:010E7A003245
+:100B9000C0E0C083C08290E6D1E0900010F090E603
+:100BA000D0E4F000000090E6D17402F000000053A1
+:100BB00091BF00000090E66104F000000090E6990B
+:0C0BC00004F075BB06D082D083D0E03278
+:010E7B003244
+:100D66001201000200000040E4E44211000001021A
+:0C0D760000010001020203030404050553
+:050E40000308FF0D6630
+:10028D00E4F52CF52BF52AF529C204C200C203C2F0
+:10029D0001C202D2B675B5C4D2B61209B8120E5645
+:1002AD007E087F008E0D8F0E751508751612750B55
+:1002BD0008750C1C75130875144A75170875187890
+:1002CD00EE54C07003020398752D00752E808E2F8D
+:1002DD008F30C374BC9FFF74089ECF2402CF3400AF
+:1002ED00FEE48F288E27F526F525F524F523F52236
+:1002FD00F521AF28AE27AD26AC25AB24AA23A92224
+:10030D00A821C31205705031AE23AF24E5302FF56F
+:10031D0082E52F3EF583E0FDE52E2FF582E52D3E9E
+:10032D00F583EDF0EF2401F524E43EF523E43522C9
+:10033D00F522E43521F52180B9852D0D852E0E741C
+:10034D00002480FF740834FFFEC3E5169FF516E503
+:10035D00159EF515C3E5109FF510E50F9EF50FC31E
+:10036D00E5129FF512E5119EF511C3E50C9FF50CF5
+:10037D00E50B9EF50BC3E5149FF514E5139EF513E0
+:10038D00C3E5189FF518E5179EF517D2E843D82059
+:10039D0090E668E0440BF090E65CE0443DF0000030
+:1003AD0000E4F5A2000000D2AF90E680E020E10568
+:1003BD00D20512000390E680E054F7F0538EF8C298
+:1003CD00041205A130022190E680E054FDF0E054C6
+:1003DD00F7F0750D0D750E66D20512000390E680CF
+:1003ED00E04402F0C204C202300105120056C201FF
+:1003FD003004CE12004150C9C204120D1F20001648
+:10040D0090E682E030E704E020E1EF90E682E03014
+:0E041D00E604E020E0E4120CA012004E80A3E2
+:0B00360090E50DE030E402C322D3226D
+:1000560090E6B9E0700302011514700302019224C0
+:10006600FE700302021524FB700302010F147003D5
+:100076000201091470030200FD1470030201032437
+:10008600056003020279120050400302028590E6E1
+:10009600BBE024FE602A14603B24FD601114602A34
+:1000A60024067050E50D90E6B3F0E50E803C120094
+:1000B60036503EE51590E6B3F0E516802D02027443
+:1000C600E50F90E6B3F0E5108020E51190E6B3F079
+:1000D600E512801690E6BAE0FF120CCCAA06A90734
+:1000E600EA49600DEE90E6B3F0EF90E6B4F0020256
+:1000F60085020274020274120E16020285120E4E58
+:10010600020285120E460202851207EB02028512D2
+:1001160007FD400302028590E6B8E0247F601514CF
+:10012600601924027063A200E43325E0FFA203E411
+:10013600334F8041E490E740F0803F90E6BCE054C6
+:100146007EFF7E00E0D394807C0040047D01800227
+:100156007D00EC4EFEED4F2478F582740D3EF5835E
+:10016600E493FF3395E0FEEF24A1FFEE34E68F82A1
+:10017600F583E0540190E740F0E4A3F090E68AF0BE
+:1001860090E68B7402F00202850202741208FB40AC
+:100196000302028590E6B8E024FE6016240260039E
+:1001A60002028590E6BAE0B40105C20002028502A9
+:1001B600027490E6BAE0705590E6BCE0547EFF7E8D
+:1001C60000E0D394807C0040047D0180027D00EC39
+:1001D6004EFEED4F2478F582740D3EF583E493FFD1
+:1001E6003395E0FEEF24A1FFEE34E68F82F583E03F
+:1001F60054FEF090E6BCE05480131313541FFFE046
+:10020600540F2F90E683F0E04420F08072805F1256
+:1002160008FD506B90E6B8E024FE60192402704E8B
+:1002260090E6BAE0B40104D200805490E6BAE064E5
+:1002360002604C803990E6BCE0547EFF7E00E0D33D
+:1002460094807C0040047D0180027D00EC4EFEED32
+:100256004F2478F582740D3EF583E493FF3395E0E1
+:10026600FEEF24A1FFEE34E68F82F583800D90E643
+:10027600A08008120CF7500790E6A0E04401F09029
+:06028600E6A0E04480F058
+:01028C00224F
+:0300330002004682
+:0400460053D8EF326A
+:100CA00090E682E030E004E020E60B90E682E0305F
+:100CB000E119E030E71590E680E04401F07F147E12
+:0C0CC00000120B4A90E680E054FEF02287
+:1000030030050990E680E0440AF0800790E680E03E
+:100013004408F07FDC7E05120B4A90E65D74FFF026
+:0F00230090E65FF05391EF90E680E054F7F02203
+:080E5600E4F51ED2E9D2AF223F
+:100BCC00AD0790E678E020E6F9C2E990E678E044DB
+:100BDC0080F0ED25E090E679F090E678E030E0F9F1
+:100BEC0090E678E04440F090E678E020E6F990E674
+:080BFC0078E030E1D6D2E922D5
+:100C6E00AC0790E678E020E6F9E51E702390E67872
+:100C7E00E04480F0EC25E090E679F08D19AF03A901
+:100C8E0007751A018A1B891CE4F51D751E01D322F6
+:020C9E00C3226F
+:100C3A00AC0790E678E020E6F9E51E702590E678A4
+:100C4A00E04480F0EC25E0440190E679F08D19AF9C
+:100C5A0003A907751A018A1B891CE4F51D751E0371
+:040C6A00D322C322AC
+:03004B000206E3C7
+:1006E300C0E0C083C082C085C084C086758600C058
+:1006F300D075D000C000C001C002C003C006C0074F
+:1007030090E678E030E206751E060207CD90E678A3
+:10071300E020E10CE51E64026006751E070207CDAA
+:10072300E51E24FE605F14603624FE70030207BEDC
+:1007330024FC70030207CA240860030207CDAB1A26
+:10074300AA1BA91CAF1D051D8F82758300120521ED
+:1007530090E679F0E51D65197070751E05806B9044
+:10076300E679E0AB1AAA1BA91CAE1D8E8275830025
+:1007730012054E751E02E5196401704E90E678E08D
+:100783004420F08045E51924FEB51D0790E678E086
+:100793004420F0E51914B51D0A90E678E04440F0D2
+:1007A300751E0090E679E0AB1AAA1BA91CAE1D8E3C
+:1007B3008275830012054E051D800F90E678E04494
+:1007C30040F0751E008003751E005391DFD007D0E3
+:1007D30006D003D002D001D000D0D0D086D084D0B0
+:0807E30085D082D083D0E03202
+:020CCC00A90776
+:100CCE00AE17AF188F828E83A3E064037017AD0149
+:100CDE0019ED7001228F828E83E07C002FFDEC3E99
+:080CEE00FEAF0580DFE4FEFF0C
+:010CF60022DB
+:100D8200120C3AE51E24FA600E146006240770F372
+:0C0D9200D322E4F51ED322E4F51ED32288
+:100D9E00120C6EE51E24FA600E146006240770F322
+:0C0DAE00D322E4F51ED322E4F51ED3226C
+:100D1F0090E682E044C0F090E681F0438701000046
+:040D2F00000000229E
+:100B4A008E318F3290E600E054187012E53224019B
+:100B5A00FFE43531C313F531EF13F532801590E612
+:100B6A0000E05418FFBF100BE53225E0F532E531FD
+:100B7A0033F531E5321532AE31700215314E60056A
+:060B8A00120D3380EE2283
+:100D33007400F58690FDA57C05A3E582458370F9D3
+:010D4300228D
+:100800001201000200000040E4E441110000010286
+:1008100000010A06000200000040010009022E004B
+:1008200001010080320904000004FF0000000705F8
+:10083000020200020007050402000200070586020A
+:100840000002000705880200020009022E000101D3
+:100850000080320904000004FF00000007050202C6
+:100860004000000705040240000007058602400022
+:10087000000705880240000004030904180358001B
+:100880006F00720063006F006D0020004C00740068
+:1008900064002E0028035800500044002800420045
+:1008A000610073006500640020006F006E0020008E
+:0E08B000410058005500500050002900000083
+:03004300020900AF
+:030053000209009F
+:10090000020DBA00020E0000020DEA00020DD20034
+:10091000020C04000208BE000200320002004A007D
+:10092000020052000207FF000208FF00020E5E00F4
+:10093000020E5F00020E6000020E6100020E6200F5
+:10094000020E630002004A00020E6400020E6500FF
+:10095000020E6600020E6700020E6800020E6900B9
+:10096000020E6A0002004A0002004A0002004A0029
+:10097000020E6B00020E6C00020E6D00020E6E0085
+:10098000020E6F00020E7000020E7100020E720065
+:10099000020E7300020E7400020E7500020E760045
+:1009A000020E7700020E7800020E7900020E7A0025
+:0809B000020B9000020E7B0017
+:03000000020A6F82
+:0C0A6F00787FE4F6D8FD75813B020AB6E2
+:10042B00E709F608DFFA8046E709F208DFFA803EB3
+:10043B0088828C83E709F0A3DFFA8032E309F608A0
+:10044B00DFFA8078E309F208DFFA807088828C8308
+:10045B00E309F0A3DFFA806489828A83E0A3F608BC
+:10046B00DFFA805889828A83E0A3F208DFFA804C96
+:10047B0080D280FA80C680D4806980F2803380106D
+:10048B0080A680EA809A80A880DA80E280CA8033D6
+:10049B0089828A83ECFAE493A3C8C582C8CCC5834E
+:1004AB00CCF0A3C8C582C8CCC583CCDFE9DEE7801E
+:1004BB000D89828A83E493A3F608DFF9ECFAA9F09D
+:1004CB00EDFB2289828A83ECFAE0A3C8C582C8CCF3
+:1004DB00C583CCF0A3C8C582C8CCC583CCDFEADE0C
+:1004EB00E880DB89828A83E493A3F208DFF980CC6E
+:1004FB0088F0EF60010E4E60C388F0ED2402B40467
+:10050B000050B9F582EB2402B4040050AF2323450D
+:06051B00822390047B73B3
+:10052100BB010CE58229F582E5833AF583E022508F
+:1005310006E92582F8E622BBFE06E92582F8E222D9
+:0D054100E58229F582E5833AF583E49322F3
+:10054E00F8BB010DE58229F582E5833AF583E8F0E3
+:10055E00225006E92582C8F622BBFE05E92582C88F
+:02056E00F22277
+:10057000EB9FF5F0EA9E42F0E99D42F0E89C45F0E1
+:010580002258
+:100581007401FF3395E0FEFDFC080808E6CF2FF665
+:1005910018E6CE3EF618E6CD3DF618E6CC3CF6223E
+:100A7B0002028DE493A3F8E493A34003F68001F202
+:100A8B0008DFF48029E493A3F85407240CC8C3337C
+:100A9B00C4540F4420C8834004F456800146F6DF4B
+:100AAB00E4800B0102040810204080900E38E47E95
+:100ABB00019360BCA3FF543F30E509541FFEE49340
+:100ACB00A360010ECF54C025E060A840B8E493A307
+:100ADB00FAE493A3F8E493A3C8C582C8CAC583CA32
+:100AEB00F0A3C8C582C8CAC583CADFE9DEE780BEEA
+:010E450000AC
+:00000001FF
diff --git a/xpp/init_card_3_23 b/xpp/init_card_3_24
index 3f07578..3f07578 100755
--- a/xpp/init_card_3_23
+++ b/xpp/init_card_3_24
diff --git a/xpp/init_card_4_23 b/xpp/init_card_4_24
index 7a2e275..884923e 100755
--- a/xpp/init_card_4_23
+++ b/xpp/init_card_4_24
@@ -95,6 +95,12 @@ set_daa_country_params() {
#fi
}
+# Several countries (South Africa, UAE, anybody else)
+# require a shorter delay:
+case "$opermode" in
+SOUTHAFRICA|UAE) echo 31 WD 17 2B;;
+esac
+
# Remove empty lines and commets. Not strictly necessary
# but works around some limitations of the proc interface:
echo "
@@ -154,6 +160,12 @@ echo "
31 WD 1A C0
" | sed -e 's/[;#].*$//' -e '/^[ ]*$/d'
+# Turning off red LEDs
+# Warning: do not send WD 31 20 A0 !
+for i in `seq 0 7`; do
+ echo "$i WD 20 A0";
+done;
+
set_daa_country_params "$opermode"
$LOGGER -p kern.info "$XPD_BUS/$XPD_NAME: Ending '$0'"
diff --git a/xpp/init_card_6_24 b/xpp/init_card_6_24
new file mode 100755
index 0000000..7219707
--- /dev/null
+++ b/xpp/init_card_6_24
@@ -0,0 +1,415 @@
+#! /usr/bin/perl -w
+use strict;
+
+#
+# $Id$
+#
+
+#
+# Written by Oron Peled <oron@actcom.co.il>
+# Copyright (C) 2006, Xorcom
+#
+# All rights reserved.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# See the file LICENSE in the top level of this tarball.
+#
+
+# This script is run from the xpp kernel module upon detection
+# of a new XPD.
+#
+# Expects the following environment variables to be set:
+# XPD_BUS - bus name
+# XPD_NAME - xpd name
+# XPD_UNIT - xpd unit number
+# XPD_SUBUNIT - xpd subunit number
+# XPD_TYPE - xpd type number (from protocol reply):
+# 3 - FXS
+# 4 - FXO
+# 6 - BRI_TE
+# 7 - BRI_NT
+# XPD_REVISION - xpd revision number
+#
+# Output data format:
+# - An optional comment start with ';' or '#' until the end of line
+# - Optional Blank lines are ignored
+# - Fields are whitespace separated (spaces or tabs)
+#
+# The fields are (in command line order):
+# 1. CHIP select in decimal (ignored, taken from 3 LSB's of subunit number)
+# 2. Command word:
+# - RD Read Direct register.
+# - RS Read Sub-register.
+# - WD Write Direct register.
+# - WS Write Sub-register.
+# 3. Register number in hexadecimal.
+# 4. Subregister number in hexadecimal. (for RS and WS commands).
+# 5. Data byte in hexadecimal. (for WD and WS commands only).
+#
+
+package main;
+use File::Basename;
+
+my $program = basename("$0");
+my $init_dir = dirname("$0");
+my $unit_id;
+
+sub logit {
+ print STDERR "$unit_id: @_\n";
+}
+
+# Arrange for error logging
+if (-t STDERR) {
+ $unit_id = 'Interactive';
+ logit "Interactive startup\n";
+} else {
+ $unit_id = "$ENV{XPD_BUS}/$ENV{XPD_NAME}";
+ open (STDERR, "| /usr/bin/logger -t $program -p kern.info") || die;
+ logit "Non Interactive startup\n";
+}
+
+package BRI;
+
+sub gen {
+ my $fmt = shift;
+ $| = 1;
+ printf "$fmt\n", @_;
+}
+
+package BRI::Port;
+
+sub new {
+ my $pack = shift;
+ my $port = { @_ };
+ bless $port, $pack;
+}
+
+# zap_xhfc_su.c:995
+sub init_su {
+ my $port = shift;
+ my $portnum = $port->{PORT_NUM};
+ my $port_mode_up = $port->{PORT_MODE_UP};
+ my $port_mode_exch = $port->{PORT_MODE_EXCH};
+ my $bri_nt = $port->{BRI_NT};
+ #logit "init_su(portnum=$portnum, port_mode_up=$port_mode_up, bri_nt=$bri_nt)";
+
+ # Setting PLL
+ # R_PLL_CTRL = 0 (V_PLL_M = 0, Reset PLL, Disable PLL_
+ # R_CLK_CFG = 05 (PLL clock as system clock, output it to CLK_OUT pin)
+ # R_PLL_P = 1
+ # R_PLL_N = 6
+ # R_PLL_S = 1
+ # R_PLL_CTRL = 1 (V_PLL_M)
+
+ BRI::gen "#--------------------------- init_su($portnum, $bri_nt, $port_mode_up, $port_mode_exch)";
+ BRI::gen "0 WD 02 04";
+ BRI::gen "0 WD 50 00"; # disable PLL
+ BRI::gen "0 WD 51 02";
+ BRI::gen "0 WD 52 06";
+ BRI::gen "0 WD 53 04";
+ BRI::gen "0 WD 50 01"; # Enable PLL
+ BRI::gen "0 WD 02 05"; # Enable PLL
+
+ su_sel($portnum); # select port
+ if ("$port_mode_up" == 1) {
+ $port->{CTRL3} = 0x01; # A_ST_CTRL3: V_ST_SEL = 1
+ $port->{CTRL0} = 0x10; # A_SU_CTRL0: V_ST_SQ_EN = 1
+ BRI::gen "0 WD 34 0F"; # A_MS_TX:
+ # (multiframe/superframe transmit register)
+ } else {
+ $port->{CTRL3} = 0x00; # A_ST_CTRL3: V_ST_SEL = 0
+ $port->{CTRL0} = 0x00; # A_SU_CTRL0: V_ST_SQ_EN = 0
+ }
+ if ("$bri_nt" == 1) {
+ $port->{CTRL0} |= 0x04; # V_SU_MD
+ }
+ # ((V_SU_EXCH)?0x80:00) (change polarity)
+ if($port_mode_exch) {
+ $port->{CTRL2} = 0x80;
+ } else {
+ $port->{CTRL2} = 0x00;
+ }
+ BRI::gen "0 WD 35 %02X", $port->{CTRL3}; # A_ST_CTRL3
+ BRI::gen "0 WD 31 %02X", $port->{CTRL0}; # A_SU_CTRL0
+ BRI::gen "0 WD 35 F8"; # A_ST_CTRL3 = set end of pulse control to 0xF8
+ BRI::gen "0 WD 32 08"; # A_SU_CTRL1 = Ignore E-channel data
+ BRI::gen "0 WD 33 %02X", $port->{CTRL2}; # A_SU_CTRL2
+
+ # zap_xhfc_su.c:1030 in init_su()
+ # A_SU_CLK_DLY
+ my $clk_dly;
+ if ("$bri_nt" == 1) {
+ $clk_dly = 0x6C;
+ } else {
+ $clk_dly = 0x0E;
+ }
+ #logit "clk_dly=$clk_dly";
+ BRI::gen "0 WD 37 %02X", "$clk_dly";
+}
+
+sub su_sel {
+ if (@_ != 1 ) {
+ main::logit "ERROR: su_sel() called with " . scalar(@_) . " parameters";
+ exit 1;
+ }
+ my $portnum = shift;
+ BRI::gen "0 WD 16 %02X", $portnum; # R_SU_SEL
+}
+
+# zap_xhfc_su.c:281
+sub xhfc_selfifo {
+ if (@_ != 1 ) {
+ main::logit "ERROR: xhfc_selfifo() called with " . scalar(@_) . " parameters";
+ exit 1;
+ }
+ my $fifonum = shift;
+ #logit "xhfc_selfifo($fifonum)";
+ BRI::gen "0 WD 0F %02X", $fifonum;
+ # --> WAIT UNTIL (R_STATUS & M_BUSY) == 0
+}
+
+# zap_xhfc_su.c:295
+sub xhfc_resetfifo() {
+ #logit "xhfc_resetfifo()";
+ # A_INC_RES_FIFO = M_RES_FIFO | M_RES_FIFO_ERR
+ BRI::gen "0 WD 0E 0A";
+ # --> WAIT UNTIL (R_STATUS & M_BUSY) == 0
+}
+
+# zap_xhfc_su.c:1040
+# Initialize fifo (called for each portnum, channel, direction)
+sub setup_fifo {
+ my $port = shift;
+ my $chan = shift;
+ my $direction = shift;
+ my $conhdlc = shift;
+ my $subcfg = shift;
+ my $fifoctrl = shift;
+
+ my $portnum = $port->{PORT_NUM};
+ my $port_mode_up = $port->{PORT_MODE_UP};
+ my $port_mode_exch = $port->{PORT_MODE_EXCH};
+ my $bri_nt = $port->{BRI_NT};
+
+ BRI::gen "#--------------------------- setup_fifo($portnum, $chan, $direction)";
+ # my $fifonum = 0x80 | ($portnum << 3) | ($chan << 1) | ($direction); # # MSB first
+ my $fifonum = ($portnum << 3) | ($chan << 1) | ($direction); # # MSB first
+ my $r_slot = ($portnum << 3) | ($chan << 1) | ($direction);
+ # receive data from STIO2, transmit to STIO1
+ my $a_sl_cfg = (0x80 | ($portnum << 3) | ($chan << 1) | ($direction));
+
+ #logit "setup_fifo($fifonum)";
+ xhfc_selfifo $fifonum;
+ # A_CON_HDLC: transparent mode selection
+ BRI::gen "0 WD FA %02X", $conhdlc;
+ # A_SUBCH_CFG: subchnl params
+ BRI::gen "0 WD FB %02X", $subcfg;
+ # A_FIFO_CTRL: FIFO Control Register
+ BRI::gen "0 WD FF %02X", $fifoctrl;
+ xhfc_resetfifo;
+ xhfc_selfifo $fifonum; # wait for busy is builtin in this command
+ BRI::gen "0 WD 10 %02X", $r_slot; # R_SLOT
+ BRI::gen "0 WD D0 %02X", $a_sl_cfg; # A_SL_CFG
+}
+
+# zap_xhfc_su.c:1071
+sub setup_su {
+ my $port = shift;
+ my $bchan = shift;
+ my $portnum = $port->{PORT_NUM};
+ my $port_mode_exch = $port->{PORT_MODE_EXCH};
+ my $bri_nt = $port->{BRI_NT};
+
+ BRI::gen "#--------------------------- setup_su($portnum, $bchan)";
+ #logit "setup_su(portnum=$portnum, bchan=$bchan, port_mode_exch=$port_mode_exch, bri_nt=$bri_nt)";
+ $port->{CTRL0} |= (1 << $bchan) | $bri_nt;
+ $port->{CTRL2} |= ($port_mode_exch << 7) | (1 << $bchan);
+ su_sel($portnum); # Select port
+ BRI::gen "0 WD 31 %02X", $port->{CTRL0}; # A_SU_CTRL0: V_B1_TX_EN | V_SU_MD | (NT/TE)
+ BRI::gen "0 WD 33 %02X", $port->{CTRL2}; # A_SU_CTRL2: V_B1_RX_EN
+}
+
+sub xhfc_ph_command {
+ my $port = shift;
+ my $cmd = shift;
+ my $portnum = $port->{PORT_NUM};
+ #logit "xhfc_ph_command(portnum=$portnum)";
+ if ("$cmd" eq "HFC_L1_ACTIVATE_TE") {
+ su_sel($portnum); # Select port
+ BRI::gen "0 WD 30 60"; # A_SU_WR_STA = (M_SU_ACT & 0x03)
+ # (set activation)
+ } elsif ("$cmd" eq "HFC_L1_FORCE_DEACTIVATE_TE") {
+ su_sel($portnum); # Select port
+ BRI::gen "0 WD 30 40"; # A_SU_WR_STA = (M_SU_ACT & 0x02)
+ # (set deactivation)
+ } elsif ("$cmd" eq "HFC_L1_ACTIVATE_NT") {
+ su_sel($portnum); # Select port
+ BRI::gen "0 WD 30 E0"; # A_SU_WR_STA = (M_SU_ACT & 0x03) | 0x80
+ # (set activation + NT)
+ } elsif ("$cmd" eq "HFC_L1_DEACTIVATE_NT") {
+ su_sel($portnum); # Select port
+ BRI::gen "0 WD 30 40"; # A_SU_WR_STA = (M_SU_ACT & 0x02)
+ # (set deactivation)
+ }
+}
+
+
+sub zthfc_startup {
+ my $port = shift;
+ my $portnum = $port->{PORT_NUM};
+ my $port_mode_exch = $port->{PORT_MODE_EXCH};
+ my $bri_nt = $port->{BRI_NT};
+ #logit "zthfc_startup(portnum=$portnum, port_mode_exch=$port_mode_exch, bri_nt=$bri_nt)";
+
+ # PCM <-> ST/Up Configuration
+ foreach my $chan ( 0, 1 ) {
+ $port->setup_fifo($chan, 0, 0xFE, 0, 0);# Transparent mode, FIFO EN, ST->PCM
+ $port->setup_fifo($chan, 1, 0xFE, 0, 0);# Transparent mode, FIFO EN, ST->PCM
+ $port->setup_su($chan); # zap_xhfc_su.c:194
+ }
+
+ # Zaptel chan 2 used as HDLC D-Channel
+ $port->setup_fifo(2, 0, 0x05, 2, 0); # D-TX: zap_xhfc_su.c:205
+ $port->setup_fifo(2, 1, 0x05, 2, 0); # D-RX: zap_xhfc_su.c:206
+ # E-chan, Echo channel is ignored
+
+
+ # enable this port's state machine
+ su_sel($portnum); # Select port
+ # A_SU_WR_STA: reset port state machine
+ BRI::gen "0 WD 30 00";
+ if ("$bri_nt" == 0) {
+ $port->xhfc_ph_command("HFC_L1_ACTIVATE_TE");
+ } else {
+ $port->xhfc_ph_command("HFC_L1_ACTIVATE_NT");
+ }
+}
+
+
+package main;
+use Getopt::Std;
+
+my %opts;
+getopts('o:', \%opts);
+
+$ENV{XPP_BASE} = '/proc/xpp';
+my $output;
+if ($opts{o}) {
+ $output = $opts{o};
+} else {
+ $ENV{XPD_BUS} || die "Missing XPD_BUS environment variable\n";
+ $ENV{XPD_NAME} || die "Missing XPD_NAME environment variable\n";
+ $ENV{XPD_TYPE} || die "Missing XPD_TYPE environment variable\n";
+ $ENV{XPD_REVISION} || die "Missing XPD_REVISION environment variable\n";
+ $output = "$ENV{XPP_BASE}/$ENV{XPD_BUS}/$ENV{XPD_NAME}/slics";
+}
+
+open(REG, ">$output") || die "Failed to open '$output': $!\n";
+select REG;
+
+logit "Starting '$0'";
+
+#------------------------------------------- Instance detection
+
+# zap_xhfc_su.c:895
+sub init_xhfc() {
+ #logit "init_xhfc()";
+ BRI::gen "#--------------------------- init_xhfc";
+ BRI::gen "0 WD 0D 00"; # r_FIFO_MD: 16 fifos,
+ # 64 bytes for TX and RX each (FIFO mode config)
+
+ # software reset to enable R_FIFO_MD setting
+ BRI::gen "0 WD 00 08"; # R_CIRM = M_SRES (soft reset)
+ # --> WAIT 5u
+ BRI::gen "0 WD 00 00"; # R_CIRM = 0 (zero it to deactivate reset)
+
+ # amplitude
+ BRI::gen "0 WD 46 80"; # R_PWM_MD: (PWM output mode register)
+ # PWM push to zero only
+ BRI::gen "0 WD 39 18"; # R_PWM1: (modulator register for PWM1)
+ # set duty cycle
+
+ BRI::gen "0 WD 0C 11"; # R_FIFO_THRES: (FIFO fill lvl control register)
+ # RX/TX threshold = 16 bytes
+
+ # --> Wait until (R_STATUS & (M_BUSY | M_PCM_INIT))
+ # M_BUSY status will be checked after fifo selection
+ BRI::gen "0 WD 0F 80";
+ # set PCM !master mode
+ BRI::gen "0 WD 14 08"; # R_PCM_MD0 = PCM slave mode, F0IO duration is 2 HFC_PCLK's
+
+ # (C4IO, F0IO are inputs)
+
+ # set pll adjust
+ # WD 14 90 # R_PCM_MD0: Index value to select
+ # the register at address 15
+ # WD 15 2C # R_PCM_MD1: V_PLL_ADJ (DPLL adjust speed), C4IO is 16.384MHz(128 time slots)
+ # in the last slot of PCM frame
+ BRI::gen "0 WS 14 98 20"; # R_PCM_MD1: V_PLL_ADJ
+ # (DPLL adjust speed) in the
+ # last slot of PCM frame
+}
+
+my %port_type = (
+ 6 => { 'BRI_NT' => 0 },
+ 7 => { 'BRI_NT' => 1 }
+ );
+
+# zap_xhfc_su.c:175
+sub main() {
+ #logit "main(): XPD_TYPE=$ENV{XPD_TYPE}";
+
+ $ENV{XPD_TYPE} || die "Missing XPD_TYPE environment variable\n";
+ my $type = $port_type{$ENV{XPD_TYPE}};
+ die "Bad XPD_TYPE=$ENV{XPD_TYPE}\n" unless $type;
+ die "Missing XPD_SUBUNIT information\n" unless defined($ENV{XPD_SUBUNIT});
+
+ # We must first turn off packet reception.
+ #
+ # Otherwise we mess with registers while the FPGA firmware tries to
+ # send us packets.
+ BRI::gen "0 Wm";
+
+ # Common initialization
+ if($ENV{XPD_SUBUNIT} eq '0') {
+ # Turn off multi-byte packet reception before initialization started
+ system("/bin/echo \"0A 00 0F 00 C0 00 00 00 00 00\" >/proc/xpp/$ENV{XPD_BUS}/command");
+ system("/bin/echo \"0A 00 0F 08 C0 00 00 00 00 00\" >/proc/xpp/$ENV{XPD_BUS}/command");
+ system("/bin/echo \"0A 00 0F 10 C0 00 00 00 00 00\" >/proc/xpp/$ENV{XPD_BUS}/command");
+ system("/bin/echo \"0A 00 0F 18 C0 00 00 00 00 00\" >/proc/xpp/$ENV{XPD_BUS}/command");
+
+ init_xhfc; # zap_xhfc_su.c:1173 in setup_instance()
+ }
+
+ # Port initialization
+ my $p = BRI::Port->new(
+ 'PORT_NUM' => $ENV{XPD_SUBUNIT},
+ 'BRI_NT' => $type->{BRI_NT},
+ 'PORT_MODE_UP' => 0,
+ 'PORT_MODE_EXCH' => 0
+ );
+ # zap_XHfc_su.c:1186 in setup_instance()
+ $p->init_su;
+
+ $p->zthfc_startup;
+
+ if($ENV{XPD_SUBUNIT} eq 3) {
+ # Turn on multi-byte packet reception when ports initialization finished
+ system("/bin/echo \"0A 00 0F 00 80 00 00 00 00 00\" >/proc/xpp/$ENV{XPD_BUS}/command");
+ system("/bin/echo \"0A 00 0F 08 80 00 00 00 00 00\" >/proc/xpp/$ENV{XPD_BUS}/command");
+ system("/bin/echo \"0A 00 0F 10 80 00 00 00 00 00\" >/proc/xpp/$ENV{XPD_BUS}/command");
+ system("/bin/echo \"0A 00 0F 18 80 00 00 00 00 00\" >/proc/xpp/$ENV{XPD_BUS}/command");
+ }
+}
+
+main;
+
+logit "Ending '$0'";
+
+close REG;
+close STDERR;
+exit 0;
diff --git a/xpp/init_card_7_24 b/xpp/init_card_7_24
new file mode 100755
index 0000000..7219707
--- /dev/null
+++ b/xpp/init_card_7_24
@@ -0,0 +1,415 @@
+#! /usr/bin/perl -w
+use strict;
+
+#
+# $Id$
+#
+
+#
+# Written by Oron Peled <oron@actcom.co.il>
+# Copyright (C) 2006, Xorcom
+#
+# All rights reserved.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# See the file LICENSE in the top level of this tarball.
+#
+
+# This script is run from the xpp kernel module upon detection
+# of a new XPD.
+#
+# Expects the following environment variables to be set:
+# XPD_BUS - bus name
+# XPD_NAME - xpd name
+# XPD_UNIT - xpd unit number
+# XPD_SUBUNIT - xpd subunit number
+# XPD_TYPE - xpd type number (from protocol reply):
+# 3 - FXS
+# 4 - FXO
+# 6 - BRI_TE
+# 7 - BRI_NT
+# XPD_REVISION - xpd revision number
+#
+# Output data format:
+# - An optional comment start with ';' or '#' until the end of line
+# - Optional Blank lines are ignored
+# - Fields are whitespace separated (spaces or tabs)
+#
+# The fields are (in command line order):
+# 1. CHIP select in decimal (ignored, taken from 3 LSB's of subunit number)
+# 2. Command word:
+# - RD Read Direct register.
+# - RS Read Sub-register.
+# - WD Write Direct register.
+# - WS Write Sub-register.
+# 3. Register number in hexadecimal.
+# 4. Subregister number in hexadecimal. (for RS and WS commands).
+# 5. Data byte in hexadecimal. (for WD and WS commands only).
+#
+
+package main;
+use File::Basename;
+
+my $program = basename("$0");
+my $init_dir = dirname("$0");
+my $unit_id;
+
+sub logit {
+ print STDERR "$unit_id: @_\n";
+}
+
+# Arrange for error logging
+if (-t STDERR) {
+ $unit_id = 'Interactive';
+ logit "Interactive startup\n";
+} else {
+ $unit_id = "$ENV{XPD_BUS}/$ENV{XPD_NAME}";
+ open (STDERR, "| /usr/bin/logger -t $program -p kern.info") || die;
+ logit "Non Interactive startup\n";
+}
+
+package BRI;
+
+sub gen {
+ my $fmt = shift;
+ $| = 1;
+ printf "$fmt\n", @_;
+}
+
+package BRI::Port;
+
+sub new {
+ my $pack = shift;
+ my $port = { @_ };
+ bless $port, $pack;
+}
+
+# zap_xhfc_su.c:995
+sub init_su {
+ my $port = shift;
+ my $portnum = $port->{PORT_NUM};
+ my $port_mode_up = $port->{PORT_MODE_UP};
+ my $port_mode_exch = $port->{PORT_MODE_EXCH};
+ my $bri_nt = $port->{BRI_NT};
+ #logit "init_su(portnum=$portnum, port_mode_up=$port_mode_up, bri_nt=$bri_nt)";
+
+ # Setting PLL
+ # R_PLL_CTRL = 0 (V_PLL_M = 0, Reset PLL, Disable PLL_
+ # R_CLK_CFG = 05 (PLL clock as system clock, output it to CLK_OUT pin)
+ # R_PLL_P = 1
+ # R_PLL_N = 6
+ # R_PLL_S = 1
+ # R_PLL_CTRL = 1 (V_PLL_M)
+
+ BRI::gen "#--------------------------- init_su($portnum, $bri_nt, $port_mode_up, $port_mode_exch)";
+ BRI::gen "0 WD 02 04";
+ BRI::gen "0 WD 50 00"; # disable PLL
+ BRI::gen "0 WD 51 02";
+ BRI::gen "0 WD 52 06";
+ BRI::gen "0 WD 53 04";
+ BRI::gen "0 WD 50 01"; # Enable PLL
+ BRI::gen "0 WD 02 05"; # Enable PLL
+
+ su_sel($portnum); # select port
+ if ("$port_mode_up" == 1) {
+ $port->{CTRL3} = 0x01; # A_ST_CTRL3: V_ST_SEL = 1
+ $port->{CTRL0} = 0x10; # A_SU_CTRL0: V_ST_SQ_EN = 1
+ BRI::gen "0 WD 34 0F"; # A_MS_TX:
+ # (multiframe/superframe transmit register)
+ } else {
+ $port->{CTRL3} = 0x00; # A_ST_CTRL3: V_ST_SEL = 0
+ $port->{CTRL0} = 0x00; # A_SU_CTRL0: V_ST_SQ_EN = 0
+ }
+ if ("$bri_nt" == 1) {
+ $port->{CTRL0} |= 0x04; # V_SU_MD
+ }
+ # ((V_SU_EXCH)?0x80:00) (change polarity)
+ if($port_mode_exch) {
+ $port->{CTRL2} = 0x80;
+ } else {
+ $port->{CTRL2} = 0x00;
+ }
+ BRI::gen "0 WD 35 %02X", $port->{CTRL3}; # A_ST_CTRL3
+ BRI::gen "0 WD 31 %02X", $port->{CTRL0}; # A_SU_CTRL0
+ BRI::gen "0 WD 35 F8"; # A_ST_CTRL3 = set end of pulse control to 0xF8
+ BRI::gen "0 WD 32 08"; # A_SU_CTRL1 = Ignore E-channel data
+ BRI::gen "0 WD 33 %02X", $port->{CTRL2}; # A_SU_CTRL2
+
+ # zap_xhfc_su.c:1030 in init_su()
+ # A_SU_CLK_DLY
+ my $clk_dly;
+ if ("$bri_nt" == 1) {
+ $clk_dly = 0x6C;
+ } else {
+ $clk_dly = 0x0E;
+ }
+ #logit "clk_dly=$clk_dly";
+ BRI::gen "0 WD 37 %02X", "$clk_dly";
+}
+
+sub su_sel {
+ if (@_ != 1 ) {
+ main::logit "ERROR: su_sel() called with " . scalar(@_) . " parameters";
+ exit 1;
+ }
+ my $portnum = shift;
+ BRI::gen "0 WD 16 %02X", $portnum; # R_SU_SEL
+}
+
+# zap_xhfc_su.c:281
+sub xhfc_selfifo {
+ if (@_ != 1 ) {
+ main::logit "ERROR: xhfc_selfifo() called with " . scalar(@_) . " parameters";
+ exit 1;
+ }
+ my $fifonum = shift;
+ #logit "xhfc_selfifo($fifonum)";
+ BRI::gen "0 WD 0F %02X", $fifonum;
+ # --> WAIT UNTIL (R_STATUS & M_BUSY) == 0
+}
+
+# zap_xhfc_su.c:295
+sub xhfc_resetfifo() {
+ #logit "xhfc_resetfifo()";
+ # A_INC_RES_FIFO = M_RES_FIFO | M_RES_FIFO_ERR
+ BRI::gen "0 WD 0E 0A";
+ # --> WAIT UNTIL (R_STATUS & M_BUSY) == 0
+}
+
+# zap_xhfc_su.c:1040
+# Initialize fifo (called for each portnum, channel, direction)
+sub setup_fifo {
+ my $port = shift;
+ my $chan = shift;
+ my $direction = shift;
+ my $conhdlc = shift;
+ my $subcfg = shift;
+ my $fifoctrl = shift;
+
+ my $portnum = $port->{PORT_NUM};
+ my $port_mode_up = $port->{PORT_MODE_UP};
+ my $port_mode_exch = $port->{PORT_MODE_EXCH};
+ my $bri_nt = $port->{BRI_NT};
+
+ BRI::gen "#--------------------------- setup_fifo($portnum, $chan, $direction)";
+ # my $fifonum = 0x80 | ($portnum << 3) | ($chan << 1) | ($direction); # # MSB first
+ my $fifonum = ($portnum << 3) | ($chan << 1) | ($direction); # # MSB first
+ my $r_slot = ($portnum << 3) | ($chan << 1) | ($direction);
+ # receive data from STIO2, transmit to STIO1
+ my $a_sl_cfg = (0x80 | ($portnum << 3) | ($chan << 1) | ($direction));
+
+ #logit "setup_fifo($fifonum)";
+ xhfc_selfifo $fifonum;
+ # A_CON_HDLC: transparent mode selection
+ BRI::gen "0 WD FA %02X", $conhdlc;
+ # A_SUBCH_CFG: subchnl params
+ BRI::gen "0 WD FB %02X", $subcfg;
+ # A_FIFO_CTRL: FIFO Control Register
+ BRI::gen "0 WD FF %02X", $fifoctrl;
+ xhfc_resetfifo;
+ xhfc_selfifo $fifonum; # wait for busy is builtin in this command
+ BRI::gen "0 WD 10 %02X", $r_slot; # R_SLOT
+ BRI::gen "0 WD D0 %02X", $a_sl_cfg; # A_SL_CFG
+}
+
+# zap_xhfc_su.c:1071
+sub setup_su {
+ my $port = shift;
+ my $bchan = shift;
+ my $portnum = $port->{PORT_NUM};
+ my $port_mode_exch = $port->{PORT_MODE_EXCH};
+ my $bri_nt = $port->{BRI_NT};
+
+ BRI::gen "#--------------------------- setup_su($portnum, $bchan)";
+ #logit "setup_su(portnum=$portnum, bchan=$bchan, port_mode_exch=$port_mode_exch, bri_nt=$bri_nt)";
+ $port->{CTRL0} |= (1 << $bchan) | $bri_nt;
+ $port->{CTRL2} |= ($port_mode_exch << 7) | (1 << $bchan);
+ su_sel($portnum); # Select port
+ BRI::gen "0 WD 31 %02X", $port->{CTRL0}; # A_SU_CTRL0: V_B1_TX_EN | V_SU_MD | (NT/TE)
+ BRI::gen "0 WD 33 %02X", $port->{CTRL2}; # A_SU_CTRL2: V_B1_RX_EN
+}
+
+sub xhfc_ph_command {
+ my $port = shift;
+ my $cmd = shift;
+ my $portnum = $port->{PORT_NUM};
+ #logit "xhfc_ph_command(portnum=$portnum)";
+ if ("$cmd" eq "HFC_L1_ACTIVATE_TE") {
+ su_sel($portnum); # Select port
+ BRI::gen "0 WD 30 60"; # A_SU_WR_STA = (M_SU_ACT & 0x03)
+ # (set activation)
+ } elsif ("$cmd" eq "HFC_L1_FORCE_DEACTIVATE_TE") {
+ su_sel($portnum); # Select port
+ BRI::gen "0 WD 30 40"; # A_SU_WR_STA = (M_SU_ACT & 0x02)
+ # (set deactivation)
+ } elsif ("$cmd" eq "HFC_L1_ACTIVATE_NT") {
+ su_sel($portnum); # Select port
+ BRI::gen "0 WD 30 E0"; # A_SU_WR_STA = (M_SU_ACT & 0x03) | 0x80
+ # (set activation + NT)
+ } elsif ("$cmd" eq "HFC_L1_DEACTIVATE_NT") {
+ su_sel($portnum); # Select port
+ BRI::gen "0 WD 30 40"; # A_SU_WR_STA = (M_SU_ACT & 0x02)
+ # (set deactivation)
+ }
+}
+
+
+sub zthfc_startup {
+ my $port = shift;
+ my $portnum = $port->{PORT_NUM};
+ my $port_mode_exch = $port->{PORT_MODE_EXCH};
+ my $bri_nt = $port->{BRI_NT};
+ #logit "zthfc_startup(portnum=$portnum, port_mode_exch=$port_mode_exch, bri_nt=$bri_nt)";
+
+ # PCM <-> ST/Up Configuration
+ foreach my $chan ( 0, 1 ) {
+ $port->setup_fifo($chan, 0, 0xFE, 0, 0);# Transparent mode, FIFO EN, ST->PCM
+ $port->setup_fifo($chan, 1, 0xFE, 0, 0);# Transparent mode, FIFO EN, ST->PCM
+ $port->setup_su($chan); # zap_xhfc_su.c:194
+ }
+
+ # Zaptel chan 2 used as HDLC D-Channel
+ $port->setup_fifo(2, 0, 0x05, 2, 0); # D-TX: zap_xhfc_su.c:205
+ $port->setup_fifo(2, 1, 0x05, 2, 0); # D-RX: zap_xhfc_su.c:206
+ # E-chan, Echo channel is ignored
+
+
+ # enable this port's state machine
+ su_sel($portnum); # Select port
+ # A_SU_WR_STA: reset port state machine
+ BRI::gen "0 WD 30 00";
+ if ("$bri_nt" == 0) {
+ $port->xhfc_ph_command("HFC_L1_ACTIVATE_TE");
+ } else {
+ $port->xhfc_ph_command("HFC_L1_ACTIVATE_NT");
+ }
+}
+
+
+package main;
+use Getopt::Std;
+
+my %opts;
+getopts('o:', \%opts);
+
+$ENV{XPP_BASE} = '/proc/xpp';
+my $output;
+if ($opts{o}) {
+ $output = $opts{o};
+} else {
+ $ENV{XPD_BUS} || die "Missing XPD_BUS environment variable\n";
+ $ENV{XPD_NAME} || die "Missing XPD_NAME environment variable\n";
+ $ENV{XPD_TYPE} || die "Missing XPD_TYPE environment variable\n";
+ $ENV{XPD_REVISION} || die "Missing XPD_REVISION environment variable\n";
+ $output = "$ENV{XPP_BASE}/$ENV{XPD_BUS}/$ENV{XPD_NAME}/slics";
+}
+
+open(REG, ">$output") || die "Failed to open '$output': $!\n";
+select REG;
+
+logit "Starting '$0'";
+
+#------------------------------------------- Instance detection
+
+# zap_xhfc_su.c:895
+sub init_xhfc() {
+ #logit "init_xhfc()";
+ BRI::gen "#--------------------------- init_xhfc";
+ BRI::gen "0 WD 0D 00"; # r_FIFO_MD: 16 fifos,
+ # 64 bytes for TX and RX each (FIFO mode config)
+
+ # software reset to enable R_FIFO_MD setting
+ BRI::gen "0 WD 00 08"; # R_CIRM = M_SRES (soft reset)
+ # --> WAIT 5u
+ BRI::gen "0 WD 00 00"; # R_CIRM = 0 (zero it to deactivate reset)
+
+ # amplitude
+ BRI::gen "0 WD 46 80"; # R_PWM_MD: (PWM output mode register)
+ # PWM push to zero only
+ BRI::gen "0 WD 39 18"; # R_PWM1: (modulator register for PWM1)
+ # set duty cycle
+
+ BRI::gen "0 WD 0C 11"; # R_FIFO_THRES: (FIFO fill lvl control register)
+ # RX/TX threshold = 16 bytes
+
+ # --> Wait until (R_STATUS & (M_BUSY | M_PCM_INIT))
+ # M_BUSY status will be checked after fifo selection
+ BRI::gen "0 WD 0F 80";
+ # set PCM !master mode
+ BRI::gen "0 WD 14 08"; # R_PCM_MD0 = PCM slave mode, F0IO duration is 2 HFC_PCLK's
+
+ # (C4IO, F0IO are inputs)
+
+ # set pll adjust
+ # WD 14 90 # R_PCM_MD0: Index value to select
+ # the register at address 15
+ # WD 15 2C # R_PCM_MD1: V_PLL_ADJ (DPLL adjust speed), C4IO is 16.384MHz(128 time slots)
+ # in the last slot of PCM frame
+ BRI::gen "0 WS 14 98 20"; # R_PCM_MD1: V_PLL_ADJ
+ # (DPLL adjust speed) in the
+ # last slot of PCM frame
+}
+
+my %port_type = (
+ 6 => { 'BRI_NT' => 0 },
+ 7 => { 'BRI_NT' => 1 }
+ );
+
+# zap_xhfc_su.c:175
+sub main() {
+ #logit "main(): XPD_TYPE=$ENV{XPD_TYPE}";
+
+ $ENV{XPD_TYPE} || die "Missing XPD_TYPE environment variable\n";
+ my $type = $port_type{$ENV{XPD_TYPE}};
+ die "Bad XPD_TYPE=$ENV{XPD_TYPE}\n" unless $type;
+ die "Missing XPD_SUBUNIT information\n" unless defined($ENV{XPD_SUBUNIT});
+
+ # We must first turn off packet reception.
+ #
+ # Otherwise we mess with registers while the FPGA firmware tries to
+ # send us packets.
+ BRI::gen "0 Wm";
+
+ # Common initialization
+ if($ENV{XPD_SUBUNIT} eq '0') {
+ # Turn off multi-byte packet reception before initialization started
+ system("/bin/echo \"0A 00 0F 00 C0 00 00 00 00 00\" >/proc/xpp/$ENV{XPD_BUS}/command");
+ system("/bin/echo \"0A 00 0F 08 C0 00 00 00 00 00\" >/proc/xpp/$ENV{XPD_BUS}/command");
+ system("/bin/echo \"0A 00 0F 10 C0 00 00 00 00 00\" >/proc/xpp/$ENV{XPD_BUS}/command");
+ system("/bin/echo \"0A 00 0F 18 C0 00 00 00 00 00\" >/proc/xpp/$ENV{XPD_BUS}/command");
+
+ init_xhfc; # zap_xhfc_su.c:1173 in setup_instance()
+ }
+
+ # Port initialization
+ my $p = BRI::Port->new(
+ 'PORT_NUM' => $ENV{XPD_SUBUNIT},
+ 'BRI_NT' => $type->{BRI_NT},
+ 'PORT_MODE_UP' => 0,
+ 'PORT_MODE_EXCH' => 0
+ );
+ # zap_XHfc_su.c:1186 in setup_instance()
+ $p->init_su;
+
+ $p->zthfc_startup;
+
+ if($ENV{XPD_SUBUNIT} eq 3) {
+ # Turn on multi-byte packet reception when ports initialization finished
+ system("/bin/echo \"0A 00 0F 00 80 00 00 00 00 00\" >/proc/xpp/$ENV{XPD_BUS}/command");
+ system("/bin/echo \"0A 00 0F 08 80 00 00 00 00 00\" >/proc/xpp/$ENV{XPD_BUS}/command");
+ system("/bin/echo \"0A 00 0F 10 80 00 00 00 00 00\" >/proc/xpp/$ENV{XPD_BUS}/command");
+ system("/bin/echo \"0A 00 0F 18 80 00 00 00 00 00\" >/proc/xpp/$ENV{XPD_BUS}/command");
+ }
+}
+
+main;
+
+logit "Ending '$0'";
+
+close REG;
+close STDERR;
+exit 0;
diff --git a/xpp/utils/Makefile b/xpp/utils/Makefile
index c565093..d23b50d 100644
--- a/xpp/utils/Makefile
+++ b/xpp/utils/Makefile
@@ -1,6 +1,8 @@
PEDANTIC = -ansi -pedantic -std=c99
RANLIB = ranlib
+INSTALL = install
+INSTALL_DATA = install -m 644
TOPDIR ?= ../..
@@ -11,7 +13,20 @@ INSTALL_DATA = $(INSTALL) -m 644
BINDIR = $(prefix)/sbin
DATADIR = $(datadir)/zaptel
MANDIR = $(mandir)/man8
+
+# In 1.4 those are provided by autoconf through makeopts
+prefix ?= /usr
+datadir ?= $(prefix)/share
+mandir ?= $(datadir)/man
+INSTALL ?= install
+
+INSTALL_DATA = $(INSTALL) -m 644
+
+BINDIR = $(prefix)/sbin
+DATADIR = $(datadir)/zaptel
+MANDIR = $(mandir)/man8
HOTPLUG_USB_DIR = /etc/hotplug/usb
+UDEV_RULES_DIR = /etc/udev/rules.d
XPD_FIRMWARE = $(wildcard ../firmwares/*.hex)
XPD_INIT_DATA = $(XPD_FIRMWARE) init_fxo_modes
@@ -20,17 +35,17 @@ XPD_INIT = $(wildcard ../init_card_?_*) ../calibrate_slics
# Variables that should be defined above, but need sane defaults:
# FIXME: Are those values really sane?
HOSTCC ?= $(CC)
-PBX_LIBUSB ?= 1
-DRIVER_DIR ?= $(TOPDIR)
+CONFIG_USB ?= y
+ZAPTEL_DIR ?= ../..
-WCTDM=$(DRIVER_DIR)/wctdm.c
+WCTDM=$(ZAPTEL_DIR)/wctdm.c
CFLAGS = -g -Wall $(EXTRA_CFLAGS)
TARGETS = init_fxo_modes print_modes adj_clock
PROG_INSTALL = genzaptelconf adj_clock
MAN_INSTALL = genzaptelconf.8 adj_clock.8
-ifeq ($(PBX_LIBUSB),1)
+ifneq (,$(filter y m,$(CONFIG_USB)))
TARGETS += libhexfile.a fpga_load test_parse
PROG_INSTALL += fpga_load
MAN_INSTALL += fpga_load.8
@@ -49,6 +64,8 @@ install: all
$(INSTALL) -d $(DESTDIR)$(HOTPLUG_USB_DIR)
$(INSTALL_DATA) xpp_fxloader.usermap $(DESTDIR)$(HOTPLUG_USB_DIR)/
$(INSTALL) xpp_fxloader $(DESTDIR)$(HOTPLUG_USB_DIR)/
+ $(INSTALL) -d $(DESTDIR)$(UDEV_RULES_DIR)
+ $(INSTALL_DATA) xpp.rules $(DESTDIR)$(UDEV_RULES_DIR)/
libhexfile.a: hexfile.o
$(AR) cru $@ $^
@@ -57,6 +74,8 @@ libhexfile.a: hexfile.o
fpga_load: fpga_load.o libhexfile.a
$(CC) -L. -o $@ $@.o $(EXTRA_LIBS) -lhexfile -lusb
+fpga_load.o: CFLAGS+=-D_GNU_SOURCE # We use memrchr()
+
hexfile.o: hexfile.c hexfile.h
$(CC) $(CFLAGS) $(PEDANTIC) -c $<
diff --git a/xpp/utils/fpga_load.8 b/xpp/utils/fpga_load.8
index 09dd5aa..640bbfd 100644
--- a/xpp/utils/fpga_load.8
+++ b/xpp/utils/fpga_load.8
@@ -5,10 +5,10 @@ ztcfg \- reads and loads zaptel.conf
.SH SYNOPSIS
.B fpga_load
-[\fB-g\fR|\fB-d\fR] [\fB-v\fR] \fB-D\fR/proc/bus/usb/\fIBUS/DEV\fR
+[\fB-g\fR] [\fB-v\fR] \fB-D \fR{/proc/bus/usb|/dev/bus/usb}/\fIBUS/DEV\fR
.B fpga_load
-[\fB-g\fR] [\fB-v\fR] \fB-D\fR/proc/bus/usb/\fIBUS/DEV\fR \fB-I \fIfirmware.hex\fR [\fB-b \fIdump.bin\fR]
+[\fB-g\fR] [\fB-v\fR] \fB-D \fR{/proc/bus/usb|/dev/bus/usb}/\fIBUS/DEV\fR \fB-I \fIfirmware.hex\fR [\fB-b \fIdump.bin\fR]
.B fpga_load -h
@@ -18,29 +18,27 @@ loads the FPGA firmware to the Xorcom Astribank device.
The syntax resembles that of fxload(8).
.SH OPTIONS
-.B -d
+.B -b
.I dump.bin
.RS
Before writing firmware, bump the processed binary file to
.I dump.bin\fR.
.RE
-.B -d
-.RS
-Print Version number bytes from eeprom (to standard output). Implies -g.
-.RE
-
.B -D
.I DEVICE
.RS
-Required. The device to read from/write to. This is normally
-/proc/bus/usb/\fIbus_num\fR/\fIdevice_num\fR , where \fIbus_num\fR and
-\fIdevice_num\fR are the first two numbers in the output of lsusb(8).
+Required. The device to read from/write to. On modern UDEV-based system
+this is usually /dev/bus/usb/\fIbus_num\fR/\fIdevice_num\fR,
+where \fIbus_num\fR and \fIdevice_num\fR are the first two numbers in the
+output of lsusb(8).
+On older systems that use usbfs, it is usually
+/proc/bus/usb/\fIbus_num\fR/\fIdevice_num\fR.
.RE
.B -g
.RS
-Dump all eeprom data to standard error.
+Dump all eeprom data to standard output.
.RE
.B -I
diff --git a/xpp/utils/fpga_load.c b/xpp/utils/fpga_load.c
index e4d4e91..426e6a6 100644
--- a/xpp/utils/fpga_load.c
+++ b/xpp/utils/fpga_load.c
@@ -72,7 +72,15 @@ enum fpga_load_status {
FW_CONFIG_DONE = 8
};
-int my_usb_device(struct usb_device *dev, usb_dev_handle *handle);
+struct my_usb_device {
+ struct usb_device *dev;
+ usb_dev_handle *handle;
+ char iManufacturer[BUFSIZ];
+ char iProduct[BUFSIZ];
+ char iSerialNumber[BUFSIZ];
+ int is_usb2;
+ struct myeeprom eeprom;
+};
const char *load_status2str(enum fpga_load_status s)
{
@@ -85,33 +93,43 @@ const char *load_status2str(enum fpga_load_status s)
}
}
-int path_of_dev(char buf[], unsigned int buflen, struct usb_device *dev)
-{
- return snprintf(buf, buflen, "/proc/bus/usb/%s/%s", dev->bus->dirname, dev->filename);
-}
-
struct usb_device *dev_of_path(const char *path)
{
struct usb_bus *bus;
struct usb_device *dev;
char dirname[PATH_MAX];
char filename[PATH_MAX];
- const char prefix[] = "/proc/bus/usb/";
- const int prefix_len = strlen(prefix);
const char *p;
int bnum;
int dnum;
int ret;
assert(path != NULL);
- if(strncmp(prefix, path, prefix_len) != 0) {
- ERR("wrong path: '%s'\n", path);
+ if(access(path, F_OK) < 0) {
+ perror(path);
+ return NULL;
+ }
+ /* Find last '/' */
+ if((p = memrchr(path, '/', strlen(path))) == NULL) {
+ ERR("Missing a '/' in %s\n", path);
+ return NULL;
+ }
+ /* Get the device number */
+ ret = sscanf(p + 1, "%d", &dnum);
+ if(ret != 1) {
+ ERR("Path tail is not a device number: '%s'\n", p);
return NULL;
}
- p = path + prefix_len;
- ret = sscanf(p, "%d/%d", &bnum, &dnum);
- if(ret != 2) {
- ERR("wrong path tail: '%s'\n", p);
+ /* Search for a '/' before that */
+ p = memrchr(path, '/', p - path);
+ if(p == NULL)
+ p = path; /* Relative path */
+ else
+ p++; /* skip '/' */
+ /* Get the bus number */
+ ret = sscanf(p, "%d", &bnum);
+ if(ret != 1) {
+ ERR("Path tail is not a bus number: '%s'\n", p);
return NULL;
}
sprintf(dirname, "%03d", bnum);
@@ -149,6 +167,9 @@ int get_usb_string(char *buf, unsigned int len, uint16_t item, usb_dev_handle *h
#define MY_EP_OUT 0x04
#define MY_EP_IN 0x88
+#define FPGA_EP_OUT 0x02
+#define FPGA_EP_IN 0x86
+
#define TIMEOUT 5000
static const int my_endpoints[MY_ENDPOINTS] = {
@@ -158,34 +179,36 @@ static const int my_endpoints[MY_ENDPOINTS] = {
0x88
};
-void usb_cleanup(usb_dev_handle *handle)
+void my_usb_device_cleanup(struct my_usb_device *mydev)
{
- if(usb_release_interface(handle, MY_INTERFACE) != 0) {
+ assert(mydev != NULL);
+ if(!mydev->handle) {
+ return; /* Nothing to do */
+ }
+ if(usb_release_interface(mydev->handle, MY_INTERFACE) != 0) {
ERR("Releasing interface: usb: %s\n", usb_strerror());
}
- if(usb_close(handle) != 0) {
+ if(usb_close(mydev->handle) != 0) {
ERR("Closing device: usb: %s\n", usb_strerror());
}
}
-void print_bcd_ver(const struct myeeprom *eeprom)
+static void show_device_info(const struct my_usb_device *mydev)
{
- /* In this case, print only the version. Also note that this
- * is an output, and sent to stdout
- */
- printf("%d.%03d\n", eeprom->release_major, eeprom->release_minor);
- return;
-}
-
-void dump_eeprom(const struct myeeprom *eeprom)
-{
- const uint8_t *data = eeprom->serial;
-
- INFO("Source: 0x%02X\n", eeprom->source);
- INFO("Vendor: 0x%04X\n", eeprom->vendor);
- INFO("Product: 0x%04X\n", eeprom->product);
- INFO("Release: %d.%03d\n", eeprom->release_major, eeprom->release_minor);
- INFO("Data: 0x[%02X,%02X,%02X,%02X,%02X,%02X,%02X,%02X]\n",
+ const struct myeeprom *eeprom;
+ const uint8_t *data = eeprom->serial;
+
+ assert(mydev != NULL);
+ eeprom = &mydev->eeprom;
+ data = eeprom->serial;
+ printf("USB iManufacturer: [%s]\n", mydev->iManufacturer);
+ printf("USB iProduct: [%s]\n", mydev->iProduct);
+ printf("USB iSerialNumber: [%s]\n", mydev->iSerialNumber);
+ printf("EEPROM Source: 0x%02X\n", eeprom->source);
+ printf("EEPROM Vendor: 0x%04X\n", eeprom->vendor);
+ printf("EEPROM Product: 0x%04X\n", eeprom->product);
+ printf("EEPROM Release: %d.%03d\n", eeprom->release_major, eeprom->release_minor);
+ printf("EEPROM Serial: 0x[%02X,%02X,%02X,%02X,%02X,%02X,%02X,%02X]\n",
data[0], data[1], data[2], data[3],
data[4], data[5], data[6], data[7]);
}
@@ -199,46 +222,46 @@ void dump_packet(const char *buf, int len)
}
#ifdef XORCOM_INTERNAL
-int eeprom_set(struct usb_dev_handle *handle, const struct myeeprom *eeprom)
+int eeprom_set(struct my_usb_device *mydev, const struct myeeprom *eeprom)
{
int ret;
int len;
char buf[PACKET_SIZE];
struct fpga_packet_header *phead = (struct fpga_packet_header *)buf;
- if(verbose >= LOG_INFO)
+ if(verbose >= LOG_DEBUG)
INFO("%s Start...\n", __FUNCTION__);
- assert(handle != NULL);
+ assert(mydev != NULL);
phead->header.op = EEPROM_SET;
memcpy(&phead->d.eeprom_set.data, eeprom, EEPROM_SIZE);
len = sizeof(phead->d.eeprom_set) + sizeof(phead->header.op);
- if(verbose >= LOG_INFO) {
+ if(verbose >= LOG_DEBUG) {
INFO("%s write %d bytes\n", __FUNCTION__, len);
dump_packet((char *)phead, len);
}
- ret = usb_bulk_write(handle, MY_EP_OUT, (char *)phead, len, TIMEOUT);
+ ret = usb_bulk_write(mydev->handle, MY_EP_OUT, (char *)phead, len, TIMEOUT);
if(ret < 0) {
- ERR("usb: bulk_write failed (%d)\n", ret);
+ ERR("bulk_write failed: %s\n", usb_strerror());
return ret;
} else if(ret != len) {
- ERR("usb: bulk_write short write (%d)\n", ret);
+ ERR("bulk_write short write: %s\n", usb_strerror());
return -EFAULT;
}
- ret = usb_bulk_read(handle, MY_EP_IN, buf, sizeof(buf), TIMEOUT);
+ ret = usb_bulk_read(mydev->handle, MY_EP_IN, buf, sizeof(buf), TIMEOUT);
if(ret < 0) {
- ERR("usb: bulk_read failed (%d)\n", ret);
+ ERR("bulk_read failed: %s\n", usb_strerror());
return ret;
} else if(ret == 0)
return 0;
phead = (struct fpga_packet_header *)buf;
if(phead->header.op == BAD_COMMAND) {
- ERR("BAD_COMMAND\n");
+ ERR("Firmware rejected EEPROM_SET command\n");
return -EINVAL;
} else if(phead->header.op != EEPROM_SET) {
ERR("Got unexpected reply op=%d\n", phead->header.op);
return -EINVAL;
}
- if(verbose >= LOG_INFO) {
+ if(verbose >= LOG_DEBUG) {
INFO("%s read %d bytes\n", __FUNCTION__, ret);
dump_packet(buf, ret);
}
@@ -246,33 +269,35 @@ int eeprom_set(struct usb_dev_handle *handle, const struct myeeprom *eeprom)
}
#endif
-int eeprom_get(struct usb_dev_handle *handle, struct myeeprom *eeprom)
+int eeprom_get(struct my_usb_device *mydev)
{
int ret;
int len;
char buf[PACKET_SIZE];
struct fpga_packet_header *phead = (struct fpga_packet_header *)buf;
+ struct myeeprom *eeprom;
- assert(handle != NULL);
- if(verbose >= LOG_INFO)
+ assert(mydev != NULL);
+ eeprom = &mydev->eeprom;
+ if(verbose >= LOG_DEBUG)
INFO("%s Start...\n", __FUNCTION__);
phead->header.op = EEPROM_GET;
len = sizeof(phead->header.op); /* warning: sending small packet */
- if(verbose >= LOG_INFO) {
+ if(verbose >= LOG_DEBUG) {
INFO("%s write %d bytes\n", __FUNCTION__, len);
dump_packet(buf, len);
}
- ret = usb_bulk_write(handle, MY_EP_OUT, (char *)phead, len, TIMEOUT);
+ ret = usb_bulk_write(mydev->handle, MY_EP_OUT, (char *)phead, len, TIMEOUT);
if(ret < 0) {
- ERR("usb: bulk_write failed (%d)\n", ret);
+ ERR("bulk_write failed: %s\n", usb_strerror());
return ret;
} else if(ret != len) {
- ERR("usb: bulk_write short write (%d)\n", ret);
+ ERR("bulk_write short write: %s\n", usb_strerror());
return -EFAULT;
}
- ret = usb_bulk_read(handle, MY_EP_IN, buf, sizeof(buf), TIMEOUT);
+ ret = usb_bulk_read(mydev->handle, MY_EP_IN, buf, sizeof(buf), TIMEOUT);
if(ret < 0) {
- ERR("usb: bulk_read failed (%d)\n", ret);
+ ERR("bulk_read failed: %s\n", usb_strerror());
return ret;
} else if(ret == 0)
return 0;
@@ -284,7 +309,7 @@ int eeprom_get(struct usb_dev_handle *handle, struct myeeprom *eeprom)
ERR("Got unexpected reply op=%d\n", phead->header.op);
return -EINVAL;
}
- if(verbose >= LOG_INFO) {
+ if(verbose >= LOG_DEBUG) {
INFO("%s read %d bytes\n", __FUNCTION__, ret);
dump_packet(buf, ret);
}
@@ -292,7 +317,7 @@ int eeprom_get(struct usb_dev_handle *handle, struct myeeprom *eeprom)
return 0;
}
-int send_hexline(struct usb_dev_handle *handle, struct hexline *hexline, int seq)
+int send_hexline(struct my_usb_device *mydev, struct hexline *hexline, int seq)
{
int ret;
int len;
@@ -301,7 +326,7 @@ int send_hexline(struct usb_dev_handle *handle, struct hexline *hexline, int seq
struct fpga_packet_header *phead = (struct fpga_packet_header *)buf;
enum fpga_load_status status;
- assert(handle != NULL);
+ assert(mydev != NULL);
assert(hexline != NULL);
len = hexline->d.content.header.ll; /* don't send checksum */
data = hexline->d.content.tt_data.data;
@@ -314,21 +339,21 @@ int send_hexline(struct usb_dev_handle *handle, struct hexline *hexline, int seq
phead->d.data_packet.reserved = 0x00;
memcpy(phead->d.data_packet.data, data, len);
len += sizeof(hexline->d.content.header);
- if(verbose >= LOG_INFO)
+ if(verbose >= LOG_DEBUG)
INFO("%04d+\r", seq);
- ret = usb_bulk_write(handle, MY_EP_OUT, (char *)phead, len, TIMEOUT);
+ ret = usb_bulk_write(mydev->handle, MY_EP_OUT, (char *)phead, len, TIMEOUT);
if(ret < 0) {
- ERR("usb: bulk_write failed (%d)\n", ret);
+ ERR("bulk_write failed: %s\n", usb_strerror());
return ret;
} else if(ret != len) {
- ERR("usb: bulk_write short write (%d)\n", ret);
+ ERR("bulk_write short write: %s\n", usb_strerror());
return -EFAULT;
}
if (verbose >= LOG_DEBUG)
dump_packet((char*)phead, len);
- ret = usb_bulk_read(handle, MY_EP_IN, buf, sizeof(buf), TIMEOUT);
+ ret = usb_bulk_read(mydev->handle, MY_EP_IN, buf, sizeof(buf), TIMEOUT);
if(ret < 0) {
- ERR("usb: bulk_read failed (%d)\n", ret);
+ ERR("bulk_read failed: %s\n", usb_strerror());
return ret;
} else if(ret == 0)
return 0;
@@ -361,7 +386,7 @@ int send_hexline(struct usb_dev_handle *handle, struct hexline *hexline, int seq
//. returns > 0 - ok, the number of lines sent
//. returns < 0 - error number
-int send_splited_hexline(struct usb_dev_handle *handle, struct hexline *hexline, int seq, uint8_t maxwidth)
+int send_splited_hexline(struct my_usb_device *mydev, struct hexline *hexline, int seq, uint8_t maxwidth)
{
struct hexline *extraline;
int linessent = 0;
@@ -370,6 +395,7 @@ int send_splited_hexline(struct usb_dev_handle *handle, struct hexline *hexline,
unsigned int this_line = 0;
uint8_t bytesleft = 0;
+ assert(mydev != NULL);
if(!hexline) {
ERR("Bad record %d type = %d\n", seq, hexline->d.content.header.tt);
return -EINVAL;
@@ -390,7 +416,7 @@ int send_splited_hexline(struct usb_dev_handle *handle, struct hexline *hexline,
extraline->d.content.header.offset = hexline->d.content.header.offset + extra_offset;
extraline->d.content.header.tt = hexline->d.content.header.tt;
memcpy( extraline->d.content.tt_data.data, hexline->d.content.tt_data.data+extra_offset, this_line);
- status = send_hexline( handle, extraline, seq+linessent );
+ status = send_hexline(mydev, extraline, seq+linessent );
// cleanups
free(extraline);
extra_offset += this_line;
@@ -402,21 +428,44 @@ int send_splited_hexline(struct usb_dev_handle *handle, struct hexline *hexline,
return linessent;
}
-int my_usb_device(struct usb_device *dev, usb_dev_handle *handle)
+int my_usb_device_init(const char devpath[], struct my_usb_device *mydev)
{
struct usb_device_descriptor *dev_desc;
struct usb_config_descriptor *config_desc;
struct usb_interface *interface;
struct usb_interface_descriptor *iface_desc;
struct usb_endpoint_descriptor *endpoint;
- char iManufacturer[BUFSIZ];
- char iProduct[BUFSIZ];
int ret;
int i;
- assert(dev != NULL);
- dev_desc = &dev->descriptor;
- config_desc = dev->config;
+ assert(mydev != NULL);
+ usb_init();
+ usb_find_busses();
+ usb_find_devices();
+ mydev->dev = dev_of_path(devpath);
+ if(!mydev->dev) {
+ ERR("Bailing out\n");
+ return 0;
+ }
+ mydev->handle = usb_open(mydev->dev);
+ if(!mydev->handle) {
+ ERR("Failed to open usb device '%s/%s': %s\n", mydev->dev->bus->dirname, mydev->dev->filename, usb_strerror());
+ return 0;
+ }
+ if(usb_reset(mydev->handle) != 0) {
+ ERR("Reseting device: usb: %s\n", usb_strerror());
+ return 0;
+ }
+ if(usb_set_configuration(mydev->handle, MY_CONFIG) != 0) {
+ ERR("usb: %s\n", usb_strerror());
+ return 0;
+ }
+ if(usb_claim_interface(mydev->handle, MY_INTERFACE) != 0) {
+ ERR("usb: %s\n", usb_strerror());
+ return 0;
+ }
+ dev_desc = &mydev->dev->descriptor;
+ config_desc = mydev->dev->config;
interface = config_desc->interface;
iface_desc = interface->altsetting;
if(verbose >= LOG_INFO)
@@ -424,127 +473,86 @@ int my_usb_device(struct usb_device *dev, usb_dev_handle *handle)
dev_desc->idVendor, dev_desc->idProduct, dev_desc->bDeviceClass, iface_desc->bNumEndpoints);
if(iface_desc->bInterfaceClass != 0xFF) {
ERR("Wrong Interface class %d\n", iface_desc->bInterfaceClass);
- return -EINVAL;
+ return 0;
}
if(iface_desc->bInterfaceNumber != MY_INTERFACE) {
ERR("Wrong Interface number %d\n", iface_desc->bInterfaceNumber);
- return -EINVAL;
+ return 0;
}
if(iface_desc->bNumEndpoints != MY_ENDPOINTS) {
ERR("Wrong number of endpoints: %d\n", iface_desc->bNumEndpoints);
- return -EINVAL;
+ return 0;
}
endpoint = iface_desc->endpoint;
+ mydev->is_usb2 = (endpoint->wMaxPacketSize == 512);
for(i = 0; i < iface_desc->bNumEndpoints; i++, endpoint++) {
if(endpoint->bEndpointAddress != my_endpoints[i]) {
ERR("Wrong endpoint %d: address = 0x%X\n", i, endpoint->bEndpointAddress);
- return -EINVAL;
+ return 0;
}
if(endpoint->bEndpointAddress == MY_EP_OUT || endpoint->bEndpointAddress == MY_EP_IN) {
if(endpoint->wMaxPacketSize > PACKET_SIZE) {
ERR("Endpoint #%d wMaxPacketSize too large (%d)\n", i, endpoint->wMaxPacketSize);
- return -EINVAL;
+ return 0;
}
}
}
- if(usb_reset(handle) != 0) {
- ERR("Reseting device: usb: %s\n", usb_strerror());
- }
- if(usb_set_configuration(handle, MY_CONFIG) != 0) {
- ERR("usb: %s\n", usb_strerror());
- return -EINVAL;
- }
- if(usb_claim_interface(handle, MY_INTERFACE) != 0) {
- ERR("usb: %s\n", usb_strerror());
- return -EINVAL;
- }
- if(usb_resetep(handle, MY_EP_OUT) != 0) {
- ERR("usb: %s\n", usb_strerror());
- return -EINVAL;
+ if(usb_resetep(mydev->handle, MY_EP_OUT) != 0) {
+ ERR("Failed to reset usb output endpoint: %s\n", usb_strerror());
+ return 0;
}
- if(usb_resetep(handle, MY_EP_IN) != 0) {
- ERR("usb: %s\n", usb_strerror());
- return -EINVAL;
+ if(usb_resetep(mydev->handle, MY_EP_IN) != 0) {
+ ERR("Failed to reset usb input endpoint: %s\n", usb_strerror());
+ return 0;
}
- ret = get_usb_string(iManufacturer, BUFSIZ, dev_desc->iManufacturer, handle);
- ret = get_usb_string(iProduct, BUFSIZ, dev_desc->iProduct, handle);
- if(verbose >= LOG_INFO)
- INFO("iManufacturer=%s iProduct=%s\n", iManufacturer, iProduct);
- return 0;
+ ret = get_usb_string(mydev->iManufacturer, BUFSIZ, dev_desc->iManufacturer, mydev->handle);
+ ret = get_usb_string(mydev->iProduct, BUFSIZ, dev_desc->iProduct, mydev->handle);
+ ret = get_usb_string(mydev->iSerialNumber, BUFSIZ, dev_desc->iSerialNumber, mydev->handle);
+ return 1;
}
-int renumerate_device(struct usb_dev_handle *handle)
+int renumerate_device(struct my_usb_device *mydev)
{
char buf[PACKET_SIZE];
struct fpga_packet_header *phead = (struct fpga_packet_header *)buf;
int ret;
- assert(handle != NULL);
+ assert(mydev != NULL);
if(verbose >= LOG_INFO)
INFO("Renumerating\n");
phead->header.op = RENUMERATE;
- ret = usb_bulk_write(handle, MY_EP_OUT, (char *)phead, 1, TIMEOUT);
+ ret = usb_bulk_write(mydev->handle, MY_EP_OUT, (char *)phead, 1, TIMEOUT);
if(ret < 0) {
- ERR("usb: bulk_write failed (%d)\n", ret);
+ ERR("bulk_write failed: %s\n", usb_strerror());
return ret;
} else if(ret != 1) {
- ERR("usb: bulk_write short write (%d)\n", ret);
+ ERR("bulk_write short write: %s\n", usb_strerror());
return -EFAULT;
}
return 0;
}
-int fpga_load(struct usb_dev_handle *handle, const struct hexdata *hexdata)
+/*
+ * Returns: true on success, false on failure
+ */
+int fpga_load(struct my_usb_device *mydev, const struct hexdata *hexdata)
{
unsigned int i;
+ unsigned int j = 0;
int ret;
int finished = 0;
- assert(handle != NULL);
+ assert(mydev != NULL);
if(verbose >= LOG_INFO)
INFO("Start...\n");
-
- for(i = 0; i < hexdata->maxlines; i++) {
- struct hexline *hexline = hexdata->lines[i];
-
- if(!hexline)
- break;
- if(finished) {
- ERR("Extra data after End Of Data Record (line %d)\n", i);
- return 0;
- }
- if(hexline->d.content.header.tt == TT_EOF) {
- INFO("End of data\n");
- finished = 1;
- continue;
- }
- if((ret = send_hexline(handle, hexline, i)) != 0) {
- perror("Failed sending hexline");
- return 0;
- }
- }
- if(verbose >= LOG_INFO)
- INFO("Finished...\n");
- return 1;
-}
-
-int fpga_load_usb1(struct usb_dev_handle *handle, const struct hexdata *hexdata)
-{
- unsigned int i,j=0;
- int ret;
- int finished = 0;
-
- assert(handle != NULL);
- if(verbose >= LOG_INFO)
- INFO("Start...\n");
-
- // i - is the line number
- // j - is the sequence number, on USB 2, i=j, but on
- // USB 1 send_splited_hexline may increase the sequence
- // number, as it needs
+ /*
+ * i - is the line number
+ * j - is the sequence number, on USB 2, i=j, but on
+ * USB 1 send_splited_hexline may increase the sequence
+ * number, as it needs
+ */
for(i = 0; i < hexdata->maxlines; i++) {
struct hexline *hexline = hexdata->lines[i];
-
if(!hexline)
break;
@@ -553,16 +561,23 @@ int fpga_load_usb1(struct usb_dev_handle *handle, const struct hexdata *hexdata)
return 0;
}
if(hexline->d.content.header.tt == TT_EOF) {
- INFO("End of data\n");
+ if(verbose >= LOG_INFO)
+ INFO("End of data\n");
finished = 1;
continue;
}
-
- if((ret = send_splited_hexline(handle, hexline, j, 60)) < 0) {
- perror("Failed sending hexline (splitting did not help)");
- return 0;
+ if(mydev->is_usb2) {
+ if((ret = send_hexline(mydev, hexline, i)) != 0) {
+ perror("Failed sending hexline");
+ return 0;
+ }
+ } else {
+ if((ret = send_splited_hexline(mydev, hexline, j, 60)) < 0) {
+ perror("Failed sending hexline (splitting did not help)");
+ return 0;
+ }
+ j += ret;
}
- j += ret;
}
if(verbose >= LOG_INFO)
INFO("Finished...\n");
@@ -573,10 +588,9 @@ int fpga_load_usb1(struct usb_dev_handle *handle, const struct hexdata *hexdata)
void usage()
{
- fprintf(stderr, "Usage: %s -D /proc/bus/usb/<bus>/<dev> [options...]\n", progname);
+ fprintf(stderr, "Usage: %s -D {/proc/bus/usb|/dev/bus/usb}/<bus>/<dev> [options...]\n", progname);
fprintf(stderr, "\tOptions:\n");
fprintf(stderr, "\t\t[-b <binfile>] # output to <binfile>\n");
- fprintf(stderr, "\t\t[-d] # Get device version from eeprom\n");
fprintf(stderr, "\t\t[-I <hexfile>] # Input from <hexfile>\n");
fprintf(stderr, "\t\t[-g] # Get eeprom from device\n");
#ifdef XORCOM_INTERNAL
@@ -599,27 +613,14 @@ static void parse_report_func(int level, const char *msg, ...)
va_end(ap);
}
-int hasUSB2( struct usb_device *dev )
-{
- if (dev->config->interface->altsetting->endpoint->wMaxPacketSize != 512)
- return 0;
- else
- return 1;
-}
-
-// usb_interface_descriptor->usb_endpoint_descriptor.wMaxPacketSize
-
int main(int argc, char *argv[])
{
- struct usb_device *dev;
- usb_dev_handle *handle;
+ struct my_usb_device mydev;
const char *devpath = NULL;
const char *binfile = NULL;
const char *hexfile = NULL;
struct hexdata *hexdata = NULL;
- struct myeeprom eeprom_buf;
int opt_read_eeprom = 0;
- int opt_print_bcdver_only = 0;
#ifdef XORCOM_INTERNAL
int opt_write_eeprom = 0;
char *vendor = NULL;
@@ -629,9 +630,9 @@ int main(int argc, char *argv[])
char *release = NULL;
char *serial = NULL;
uint8_t serial_buf[SERIAL_SIZE];
- const char options[] = "b:C:dD:ghI:vV:P:R:S:";
+ const char options[] = "b:C:D:ghI:vV:P:R:S:";
#else
- const char options[] = "b:dD:ghI:v";
+ const char options[] = "b:D:ghI:v";
#endif
int ret = 0;
@@ -652,10 +653,6 @@ int main(int argc, char *argv[])
case 'b':
binfile = optarg;
break;
- case 'd':
- opt_print_bcdver_only = 1;
- opt_read_eeprom = 1;
- break;
case 'g':
opt_read_eeprom = 1;
break;
@@ -730,97 +727,74 @@ int main(int argc, char *argv[])
ERR("Missing device path\n");
usage();
}
- if(verbose)
+#ifdef XORCOM_INTERNAL
+ if(vendor || product || release || serial || source )
+ opt_read_eeprom = opt_write_eeprom = 1;
+#endif
+ if(verbose >= LOG_INFO)
INFO("Startup %s\n", devpath);
- usb_init();
- usb_find_busses();
- usb_find_devices();
- dev = dev_of_path(devpath);
- if(!dev) {
- ERR("Bailing out\n");
- exit(1);
- }
- handle = usb_open(dev);
- if(!handle) {
- ERR("Failed to open usb device '%s/%s': %s\n", dev->bus->dirname, dev->filename, usb_strerror());
- return -ENODEV;
- }
- if(my_usb_device(dev, handle)) {
- ERR("Foreign usb device '%s/%s'\n", dev->bus->dirname, dev->filename);
+ if(!my_usb_device_init(devpath, &mydev)) {
+ ERR("Failed to initialize USB device '%s'\n", devpath);
ret = -ENODEV;
goto dev_err;
}
-
+ ret = eeprom_get(&mydev);
+ if(ret < 0) {
+ ERR("Failed reading eeprom\n");
+ goto dev_err;
+ }
+ if(opt_read_eeprom) {
+ show_device_info(&mydev);
+ }
if(hexdata) {
- int status;
-
- if (hasUSB2(dev))
- status = fpga_load(handle, hexdata);
- else {
+ if (!mydev.is_usb2)
INFO("Warning: working on a low end USB1 backend\n");
- status = fpga_load_usb1(handle, hexdata);
- }
-
- if(!status) {
+ if(!fpga_load(&mydev, hexdata)) {
ERR("FPGA loading failed\n");
ret = -ENODEV;
goto dev_err;
}
- ret = renumerate_device(handle);
+ ret = renumerate_device(&mydev);
if(ret < 0) {
ERR("Renumeration failed: errno=%d\n", ret);
goto dev_err;
}
}
-#ifdef XORCOM_INTERNAL
- if(vendor || product || release || serial || source )
- opt_read_eeprom = opt_write_eeprom = 1;
-#endif
- if(opt_read_eeprom) {
- ret = eeprom_get(handle, &eeprom_buf);
- if(ret < 0) {
- ERR("Failed reading eeprom: %d\n", ret);
- goto dev_err;
- }
- if (opt_print_bcdver_only)
- print_bcd_ver(&eeprom_buf);
- else
- dump_eeprom(&eeprom_buf);
- }
#ifdef XORCOM_INTERNAL
if(opt_write_eeprom) {
// FF: address source is from device. C0: from eeprom
if (is_source_given)
- eeprom_buf.source = strtoul(source, NULL, 0);
+ mydev.eeprom.source = strtoul(source, NULL, 0);
else
- eeprom_buf.source = 0xC0;
+ mydev.eeprom.source = 0xC0;
if(vendor)
- eeprom_buf.vendor = strtoul(vendor, NULL, 0);
+ mydev.eeprom.vendor = strtoul(vendor, NULL, 0);
if(product)
- eeprom_buf.product = strtoul(product, NULL, 0);
+ mydev.eeprom.product = strtoul(product, NULL, 0);
if(release) {
int release_major = 0;
int release_minor = 0;
sscanf(release, "%d.%d", &release_major, &release_minor);
- eeprom_buf.release_major = release_major;
- eeprom_buf.release_minor = release_minor;
+ mydev.eeprom.release_major = release_major;
+ mydev.eeprom.release_minor = release_minor;
}
if(serial) {
- memcpy(eeprom_buf.serial, serial_buf, SERIAL_SIZE);
+ memcpy(&mydev.eeprom.serial, serial_buf, SERIAL_SIZE);
}
- dump_eeprom(&eeprom_buf);
- ret = eeprom_set(handle, &eeprom_buf);
+ ret = eeprom_set(&mydev, &mydev.eeprom);
if(ret < 0) {
- ERR("Failed writing eeprom: %d\n", ret);
+ ERR("Failed writing eeprom: %s\n", strerror(-ret));
goto dev_err;
}
+ printf("------- RESULTS -------\n");
+ show_device_info(&mydev);
}
#endif
- if(verbose)
+ if(verbose >= LOG_INFO)
INFO("Exiting\n");
dev_err:
- usb_cleanup(handle);
+ my_usb_device_cleanup(&mydev);
return ret;
}
diff --git a/xpp/utils/genzaptelconf b/xpp/utils/genzaptelconf
index 03c28be..a5fb0b0 100755
--- a/xpp/utils/genzaptelconf
+++ b/xpp/utils/genzaptelconf
@@ -50,10 +50,6 @@ context_output=astbank-output # useless, but helps marking the channels :-)
#group_manual=yes
group_phones=5 # group for phones
group_lines=0 # group for lines
-# set 'immediate=yes' for Asteribank input channels and 'immediate=no'
-# for others. Note that if an Astribank is not detected, the script
-# will set this to "no", so you can safely leave it as "yes".
-set_immediate=yes
# Set fxs_immediate to 'yes' to make all FXS lines answer immediately.
fxs_immediate=no
@@ -231,15 +227,6 @@ zap_reg_xpp() {
}
-check_for_astribank(){
- if ! grep -q XPP_IN/ /proc/zaptel/* 2>/dev/null
- then
- # we only get here is if we find no Astribank input channels
- # in /proc/zaptel . Hence we can safely disable their special settings:
- set_immediate=no
- fi
-}
-
usage() {
program=`basename $0`
@@ -395,14 +382,11 @@ print_pattern() {
fi
fi
- if [ "$set_immediate" = 'yes' ]
- then
- if [ "$astbank_type" = 'input' ] || \
- ( [ "$fxs_immediate" = 'yes' ] && [ "$sig" = "fxo" ] )
- then
- echo 'immediate=yes' >> $zapata_file
- reset_values="$reset_values immediate"
- fi
+ if [ "$astbank_type" = 'input' ] || \
+ ( [ "$fxs_immediate" = 'yes' ] && [ "$sig" = "fxo" ] )
+ then
+ echo 'immediate=yes' >> $zapata_file
+ reset_values="$reset_values immediate"
fi
echo "channel => $chan" >> $zapata_file
reset_zapata_entry $zapata_file $reset_values
@@ -1028,14 +1012,10 @@ if [ "$mode" = list ]; then
genconf list
else
zap_reg_xpp
- check_for_astribank
wait_for_zapctl
say "Generating '${ZAPCONF_FILE} and ${ZAPATA_FILE}'"
genconf files
- if [ "$set_immediate" = 'yes' ] && [ -x /etc/init.d/zaptel ]
- then /etc/init.d/zaptel start
- else run_ztcfg
- fi
+ run_ztcfg
fi
if [ "$tmp_dir" != '' ]
diff --git a/xpp/utils/xpp.rules b/xpp/utils/xpp.rules
new file mode 100644
index 0000000..8a669b1
--- /dev/null
+++ b/xpp/utils/xpp.rules
@@ -0,0 +1,8 @@
+BUS!="usb", ACTION!="add", GOTO="xpp_usb_add_end"
+
+# Load firmware into the Xorcom Astribank device:
+SYSFS{idVendor}=="e4e4", SYSFS{idProduct}=="11[345][01]", \
+ RUN+="/etc/hotplug/usb/xpp_fxloader udev $sysfs{idVendor}/$sysfs{idProduct}/$sysfs{bcdDevice}"
+
+LABEL="xpp_usb_add_end"
+
diff --git a/xpp/utils/xpp_fxloader b/xpp/utils/xpp_fxloader
index b14f746..918a712 100644
--- a/xpp/utils/xpp_fxloader
+++ b/xpp/utils/xpp_fxloader
@@ -1,8 +1,8 @@
#!/bin/sh
-# xpp_fxload: load XPP firmware
+# xpp_fxloader: load Xorcom Astribank (XPP) firmware
#
-# This script can be run manually or from hotplug.
+# This script can be run manually or from hotplug/udev.
#
# Firmware files should be located in $FIRMWARE_DIR which defaults:
# 1. /usr/share/zaptel
@@ -12,28 +12,21 @@
# Manual Run
# ##########
#
-# path/to/xpp_fxloader xppdetect
+# path/to/xpp_fxloader load
#
# Make sure the firmware files are in $FIRMWARE_DIR
#
+# UDEV Installation
+# #################
#
-# Hotplg Run
-# ##########
+# Copy xpp.rules to /etc/udev/udev.d and xpp_fxloader to /etc/hotplug/usb/ .
#
-# 1. Copy this file and the file xpp_fxloader.usermap to /etc/hotplug/usb/
-# 2. tail -f /var/log/messages...
+# Hotplug Installation
+# ####################
#
-#
-# Suggested udev configuration: I used the following file as
-# /etc/udev/rules.d/z60_zaptel.rules :
+# Copy this file and the file xpp_fxloader.usermap to /etc/hotplug/usb/ .
#
-# BUS!="usb", ACTION!="add", GOTO="zaptel_usb_add_end"
#
-# SYSFS{idVendor}=="e4e4", SYSFS{idProduct}=="11[345][01]", \
-# RUN+="/etc/hotplug/usb/xpp_fxloader udev $sysfs{idVendor}/$sysfs{idProduct}/$sysfs{bcdDevice}"
-#
-# LABEL="zaptel_usb_add_end"
-#
# Written by Tzafrir Cohen <tzafrir.cohen@xorcom.com>
# Copyright (C) 2006, Xorcom
#
@@ -64,16 +57,28 @@ else
LOGGER="logger -i -t '$me'"
fi
-if [ -r "$DEFAULTS" ]; then
- . "$DEFAULTS"
-fi
+USBFS_PREFIX=/proc/bus/usb
+DEVUSB_PREFIX=/dev/bus/usb
+USB_PREFIX=
FIRMWARE_DIR="${FIRMWARE_DIR:-/usr/share/zaptel}"
FIRM_FXS=$FIRMWARE_DIR/FPGA_FXS.hex
REENUM_SLEEP_TIME=3 # only used on manual runs
-FPGA_LOAD="/usr/sbin/fpga_load"
+FPGA_LOAD=${FPGA_LOAD:-/usr/sbin/fpga_load}
+
+if [ -r "$DEFAULTS" ]; then
+ . "$DEFAULTS"
+fi
+
+if [ "$USB_PREFIX" = '' ]; then
+ if [ -d "$DEVUSB_PREFIX" ]; then
+ USB_PREFIX=$DEVUSB_PREFIX
+ elif [ -r "$USBFS_PREFIX/devices" ]; then
+ USB_PREFIX=$USBFS_PREFIX
+ fi
+fi
# With Kernels older that 2.6.10 it seems to be possible
# to trigger a race condition by running fxload or fpga_load
@@ -90,7 +95,7 @@ find_dev() {
v_id=$1
p_id=$2
- lsusb | tr -d : | awk "/ ID $v_id$p_id/{printf \"/proc/bus/usb/%s/%s \",\$2,\$4}"
+ lsusb | tr -d : | awk "/ ID $v_id$p_id/{printf \"$USB_PREFIX/%s/%s \",\$2,\$4}"
}
do_fxload() {
@@ -128,7 +133,7 @@ load_fpga() {
devices=`find_dev $v_id $p_id`
for dev in $devices
do
- card_ver=`$FPGA_LOAD -d -D $dev`
+ card_ver=`$FPGA_LOAD -g -D $dev | sed -n 's/^.*Release: *//'`
firm_ver=`hexfile_version $FIRMWARE_DIR/$fw`
$LOGGER "FPGA Firmware $FIRMWARE_DIR/$fw into $dev"
@@ -151,7 +156,7 @@ load_fpga() {
case "$1" in
udev)
# the following emulate hotplug's environment from udev's environment:
- DEVICE=`echo $DEVNAME | sed -e 's|^/dev/|/proc/|'`
+ DEVICE="$DEVNAME"
PRODUCT="$2"
# skip on to the rest of the script. Don't exit.
;;
@@ -190,7 +195,7 @@ esac
## Hotplug run
##
-if [ "$ACTION" = "add" ] && [ -f "$DEVICE" ]
+if [ "$ACTION" = "add" ] && [ -w "$DEVICE" ]
then
$LOGGER "Trying to find what to do for product $PRODUCT, device $DEVICE"
prod_id=`echo "$PRODUCT" | cut -d/ -f2`
diff --git a/xpp/zaptel-helper b/xpp/utils/zaptel-helper
index 5b17d22..1b2ca45 100755..100644
--- a/xpp/zaptel-helper
+++ b/xpp/utils/zaptel-helper
@@ -1,6 +1,25 @@
#!/bin/sh
-# zaptel-helper: helper script/functions for Zaptel .
+# zaptel-helper: helper script/functions for Zaptel
+
+# Wrriten by Tzafrir Cohen <tzafrir.cohen@xorcom.com>
+# Copyright (C) 2006-2007, Xorcom
+#
+# All rights reserved.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
# Should be possible to run with -e set. This is also recommended.
@@ -20,6 +39,10 @@ MODLIST_FILE_REDHAT=${MODLIST_FILE_REDHAT:-/etc/sysconfig/zaptel}
FXOTUNE="${FXOTUNE:-/usr/sbin/fxotune}"
FXOTUNE_CONF="${FXOTUNE_CONF:-/etc/fxotune.conf}"
+# this is the context FXO zaptel channels are in.
+# See run_fxotune.
+FXO_CONTEXT=${FXO_CONTEXT:-from-pstn}
+
ZTCFG="${ZTCFG:-/sbin/ztcfg}"
# TODO: this may not be appropriate for a general-purpose script.
@@ -246,11 +269,12 @@ debian_start() {
# or rather: all tunable FXO channels are in the context from-pstn are
# not defined by zaptel.
run_fxotune() {
+ zap_fxo_chans=`asterisk -rx "zap show channels" | awk "/$FXO_CONTEXT/{print \$1}"`
xpp_fxo_chans=`cat /proc/zaptel/* | awk '/XPP_FXO/{print $1}'`
- for chan in $xpp_fxo_chans; do
+ for chan in $xpp_fxo_chans $zap_fxo_chans; do
asterisk -rx "zap destroy channel $chan"
done
- $FXOTUNE
+ $FXOTUNE -i
asterisk -rx "zap restart"
}
diff --git a/xpp/xbus-core.c b/xpp/xbus-core.c
index 9f3b24b..2391d44 100644
--- a/xpp/xbus-core.c
+++ b/xpp/xbus-core.c
@@ -37,6 +37,9 @@
#include "xpd.h"
#include "xpp_zap.h"
#include "xbus-core.h"
+#ifdef XPP_DEBUGFS
+#include "xpp_log.h"
+#endif
#include "zap_debug.h"
static const char rcsid[] = "$Id$";
@@ -55,7 +58,7 @@ static int proc_xbus_command_write(struct file *file, const char __user *buffer,
/* Command line parameters */
extern int print_dbg;
-DEF_PARM(uint, poll_timeout, POLL_TIMEOUT,"Timeout (in jiffies) waiting for units to reply (default " __stringify(POLL_TIMEOUT) ")");
+DEF_PARM(uint, poll_timeout, POLL_TIMEOUT, 0600, "Timeout (in jiffies) waiting for units to reply (default " __stringify(POLL_TIMEOUT) ")");
/* Forward declarations */
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,14)
@@ -83,53 +86,274 @@ static struct proc_dir_entry *proc_xbuses = NULL;
static DEVICE_ATTR(connector, S_IRUGO, connector_show, NULL);
static DEVICE_ATTR(status, S_IRUGO, status_show, NULL);
-/*------------------------- Packet Handling ------------------------*/
-static kmem_cache_t *packet_cache = NULL;
-static atomic_t xpacket_count = ATOMIC_INIT(0);
-
-/**
- * Allocates a new XPP packet.
- * @xbus The XPP bus in which the packet will flow (for counters
- * maintenance)
- * @flags Flags for kernel memory allocation.
- * @returns A pointer to the new packet, or NULL in case of failure.
- *
- *
- * Packet allocation/deallocation:
- * Sent packets:
- * - Allocated by protocol commands
- * - Deallocated by xmus_xmitter
- * Receive packets:
- * - Allocated/deallocated by xbus_xmiter
+/*------------------------- Debugfs Handling -----------------------*/
+#ifdef XPP_DEBUGFS
+
+#define DEBUGFS_BUFSIZ 4096 /* must be power of two, otherwise POS_IN_BUF will have to use '%' instead of '&' */
+#define POS_IN_BUF(x) ((x) & (DEBUGFS_BUFSIZ-1))
+
+struct debugfs_data {
+ spinlock_t lock;
+ xbus_t *xbus;
+ char buffer[DEBUGFS_BUFSIZ];
+ unsigned long head, tail; /* reading and writing are performed at position (head % BUF_SIZ) and (tail % BUF_SIZ) */
+ wait_queue_head_t queue;
+};
+
+static unsigned long add_to_buf(struct debugfs_data *d, unsigned long tail, const void *buf, unsigned long len)
+{
+ unsigned long count = min(len, (unsigned long)(DEBUGFS_BUFSIZ - POS_IN_BUF(tail)));
+ memcpy(d->buffer + POS_IN_BUF(tail), buf, count); /* fill starting at position tail */
+ memcpy(d->buffer, (u_char *)buf + count, len - count); /* fill leftover */
+ return len;
+}
+
+int xbus_log(xbus_t *xbus, xpd_t *xpd, int direction, const void *buf, unsigned long len)
+{
+ unsigned long tail;
+ unsigned long flags;
+ struct debugfs_data *d;
+ struct log_header header;
+ int ret = 0;
+
+ BUG_ON(!xbus);
+ BUG_ON(!xpd);
+ BUG_ON(sizeof(struct log_header) + len > DEBUGFS_BUFSIZ);
+ d = xbus->debugfs_data;
+ if (!d) /* no consumer process */
+ return ret;
+ spin_lock_irqsave(&d->lock, flags);
+ if (sizeof(struct log_header) + len > DEBUGFS_BUFSIZ - (d->tail - d->head)) {
+ ret = -ENOSPC;
+ DBG("Dropping debugfs data of len %lu, free space is %lu\n", sizeof(struct log_header) + len,
+ DEBUGFS_BUFSIZ - (d->tail - d->head));
+ goto out;
+ }
+ header.len = sizeof(struct log_header) + len;
+ header.time = jiffies_to_msecs(jiffies);
+ header.xpd_num = xpd->id;
+ header.direction = (char)direction;
+ tail = d->tail;
+ tail += add_to_buf(d, tail, &header, sizeof(header));
+ tail += add_to_buf(d, tail, buf, len);
+ d->tail = tail;
+ wake_up_interruptible(&d->queue);
+out:
+ spin_unlock_irqrestore(&d->lock, flags);
+ return ret;
+}
+
+static struct dentry *debugfs_root = NULL;
+static int debugfs_open(struct inode *inode, struct file *file);
+static ssize_t debugfs_read(struct file *file, char __user *buf, size_t nbytes, loff_t *ppos);
+static int debugfs_release(struct inode *inode, struct file *file);
+
+struct file_operations debugfs_operations = {
+ .open = debugfs_open,
+ .read = debugfs_read,
+ .release = debugfs_release,
+};
+
+/*
+ * As part of the "inode diet" the private data member of struct inode
+ * has changed in 2.6.19. However, Fedore Core 6 adopted this change
+ * a bit earlier (2.6.18). If you use vanila kernel (or Debian Etch)
+ * Change the following test from 2,6,18 to 2,6,19.
*/
-xpacket_t *xbus_packet_new(xbus_t *xbus, gfp_t flags)
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18)
+#define I_PRIVATE(inode) ((inode)->u.generic_ip)
+#else
+#define I_PRIVATE(inode) ((inode)->i_private)
+#endif
+
+static int debugfs_open(struct inode *inode, struct file *file)
{
- xpacket_t *pack;
+ xbus_t *xbus = I_PRIVATE(inode);
+ struct debugfs_data *d;
+ struct log_global_header gheader;
+
+ BUG_ON(!xbus);
+ DBG("%s\n", xbus->busname);
+ if (xbus->debugfs_data)
+ return -EBUSY;
+ d = kmalloc(sizeof(struct debugfs_data), GFP_KERNEL);
+ if (!d)
+ return -ENOMEM;
+ try_module_get(THIS_MODULE);
+ memset(d, 0, sizeof(struct debugfs_data));
+ spin_lock_init(&d->lock);
+ d->xbus = xbus;
+ d->head = d->tail = 0;
+ init_waitqueue_head(&d->queue);
+ file->private_data = d;
+
+ gheader.magic = XPP_LOG_MAGIC;
+ gheader.version = 1;
+ d->tail += add_to_buf(d, d->tail, &gheader, sizeof(gheader));
+
+ xbus->debugfs_data = d;
+ return 0;
+}
- /* To avoid races we increament counter in advance and decrement it later
- * in case of failure */
- atomic_inc(&xbus->packet_counter);
- //DBG("Incremented packet_counter of bus %s (new packet) to %d\n",
- // xbus->busname, atomic_read(&xbus->packet_counter));
- pack = kmem_cache_alloc(packet_cache, flags);
- if (pack) {
- memset(pack, 0, sizeof(xpacket_t));
- atomic_inc(&xpacket_count);
- } else {
- atomic_dec(&xbus->packet_counter);
- //DBG("Decremented packet_counter of bus %s (failed new packet) to %d\n",
- // xbus->busname, atomic_read(&xbus->packet_counter));
+static ssize_t debugfs_read(struct file *file, char __user *buf, size_t nbytes, loff_t *ppos)
+{
+ struct debugfs_data *d = file->private_data;
+ size_t len;
+
+ BUG_ON(!d);
+ BUG_ON(!d->xbus);
+ DBG("%s\n", d->xbus->busname);
+ while (d->head == d->tail) {
+ if (wait_event_interruptible(d->queue, d->head != d->tail))
+ return -EAGAIN;
+ }
+ len = min(nbytes, (size_t)(d->tail - d->head));
+ if (copy_to_user(buf, d->buffer + POS_IN_BUF(d->head), len))
+ return -EFAULT;
+ d->head += len;
+ /* optimization to avoid future buffer wraparound */
+ if (d->head == d->tail) {
+ unsigned long flags;
+ spin_lock_irqsave(&d->lock, flags);
+ if (d->head == d->tail)
+ d->head = d->tail = 0;
+ spin_unlock_irqrestore(&d->lock, flags);
}
- return pack;
+ return len;
+}
+
+static int debugfs_release(struct inode *inode, struct file *file)
+{
+ struct debugfs_data *d = file->private_data;
+
+ BUG_ON(!d);
+ BUG_ON(!d->xbus);
+ DBG("%s\n", d->xbus->busname);
+ d->xbus->debugfs_data = NULL;
+ kfree(d);
+ module_put(THIS_MODULE);
+ return 0;
+}
+#endif
+
+/*------------------------- Frame Handling ------------------------*/
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)
+static kmem_cache_t *xframes_cache = NULL;
+#else
+static struct kmem_cache *xframes_cache = NULL;
+#endif
+
+xframe_t *xbus_xframe_new(xbus_t *xbus, gfp_t flags)
+{
+ xframe_t *frm;
+
+ frm = kmem_cache_alloc(xframes_cache, flags);
+ if(!frm)
+ return NULL;
+ memset(frm, 0, sizeof(xframe_t) + XFRAME_DATASIZE);
+ atomic_set(&frm->frame_len, 0);
+ frm->packets = (byte *)frm + sizeof(xframe_t);
+ return frm;
}
-void xbus_packet_free(xbus_t *xbus, xpacket_t *p)
+void xbus_xframe_free(xbus_t *xbus, xframe_t *p)
{
- kmem_cache_free(packet_cache, p);
- atomic_dec(&xpacket_count);
- atomic_dec(&xbus->packet_counter);
- //DBG("Decremented packet_counter of bus %s (freed packet) to %d\n",
- // xbus->busname, atomic_read(&xbus->packet_counter));
+ kmem_cache_free(xframes_cache, p);
+}
+
+/*
+ * Return pointer to next packet slot in the frame
+ * or NULL if the frame is full.
+ */
+xpacket_t *xframe_next_packet(xframe_t *frm, int len)
+{
+ int newlen = atomic_add_return(len, &frm->frame_len);
+// DBG("len=%d, newlen=%d, frm->frame_len=%d\n", len, newlen, XFRAME_LEN(frm));
+ if (newlen > XFRAME_DATASIZE) {
+ atomic_sub(len, &frm->frame_len);
+ return NULL;
+ }
+ return (xpacket_t *)(frm->packets + newlen - len);
+}
+
+static spinlock_t serialize_dump_xframe = SPIN_LOCK_UNLOCKED;
+
+static void do_hexdump(const char msg[], byte *data, uint16_t len)
+{
+ int i;
+
+ for(i = 0; i < len; i++)
+ DBG("%s: %3d> %02X\n", msg, i, data[i]);
+}
+
+void dump_xframe(const char msg[], const xbus_t *xbus, const xframe_t *xframe)
+{
+ const uint16_t frame_len = XFRAME_LEN(xframe);
+ xpacket_t *pack;
+ uint16_t pos = 0;
+ uint16_t nextpos;
+ int num = 1;
+ bool do_print;
+ static int rate_limit;
+ unsigned long flags;
+
+ spin_lock_irqsave(&serialize_dump_xframe, flags);
+ do {
+ if(pos >= XFRAME_DATASIZE) {
+ if(printk_ratelimit()) {
+ ERR("%s: xframe overflow (%d bytes)\n",
+ msg, frame_len);
+ do_hexdump(msg, xframe->packets, frame_len);
+ }
+ break;
+ }
+ if(pos > frame_len) {
+ if(printk_ratelimit()) {
+ ERR("%s: packet overflow pos=%d frame_len=%d\n",
+ msg, pos, frame_len);
+ do_hexdump(msg, xframe->packets, frame_len);
+ }
+ break;
+ }
+ pack = (xpacket_t *)&xframe->packets[pos];
+ if(pack->datalen <= 0) {
+ if(printk_ratelimit()) {
+ ERR("%s: xframe -- bad datalen=%d pos=%d frame_len=%d\n",
+ msg, pack->datalen, pos, frame_len);
+ do_hexdump(msg, xframe->packets, frame_len);
+ }
+ break;
+ }
+ nextpos = pos + pack->datalen;
+ if(nextpos > frame_len) {
+ if(printk_ratelimit()) {
+ ERR("%s: packet overflow nextpos=%d frame_len=%d\n",
+ msg, nextpos, frame_len);
+ do_hexdump(msg, xframe->packets, frame_len);
+ }
+ break;
+ }
+ do_print = 0;
+ if(pack->opcode != XPROTO_NAME(GLOBAL,PCM_READ) &&
+ pack->opcode != XPROTO_NAME(GLOBAL,PCM_WRITE))
+ do_print = 1;
+ if((print_dbg & DBG_PCM) && ((rate_limit % 1003) == 0))
+ do_print = 1;
+ if(do_print) {
+ if(num == 1)
+ DBG("%s: %s: frame_len=%d.\n",
+ msg, xbus->busname, frame_len);
+ DBG(" %3d. DATALEN=%d OP=0x%02X XPD-%d-%d (pos=%d)\n",
+ num, pack->datalen, pack->opcode,
+ pack->addr.unit, pack->addr.subunit, pos);
+ dump_packet(" ", pack, print_dbg);
+ }
+ num++;
+ pos = nextpos;
+ if(pos >= frame_len)
+ break;
+ } while(1);
+ spin_unlock_irqrestore(&serialize_dump_xframe, flags);
}
@@ -141,7 +365,7 @@ xbus_t *xbus_of(int xbus_num)
return xbuses_array[xbus_num];
}
-xpd_t *xpd_of(xbus_t *xbus, int xpd_num)
+xpd_t *xpd_of(const xbus_t *xbus, int xpd_num)
{
if(!VALID_XPD_NUM(xpd_num))
return NULL;
@@ -227,7 +451,6 @@ static void xbus_poll(void *data)
struct list_head additions_list;
int count_removed;
int count_added;
- int xpd_num;
if(!down_read_trylock(&xbus->in_use)) {
ERR("%s is being removed...\n", xbus->busname);
@@ -283,8 +506,7 @@ static void xbus_poll(void *data)
xpd_t *xpd;
BUG_ON(card_desc->magic != CARD_DESC_MAGIC);
- xpd_num = xpd_addr2num(&card_desc->xpd_addr);
- xpd = xpd_of(xbus, xpd_num);
+ xpd = xpd_by_addr(xbus, card_desc->xpd_addr.unit, card_desc->xpd_addr.subunit);
if(xpd && type == XPD_TYPE_NOMODULE) { /* card removal */
list_move_tail(card, &removal_list);
@@ -312,8 +534,7 @@ static void xbus_poll(void *data)
xpd_t *xpd;
list_del(card);
- xpd_num = xpd_addr2num(&card_desc->xpd_addr);
- xpd = xpd_of(xbus, xpd_num);
+ xpd = xpd_by_addr(xbus, card_desc->xpd_addr.unit, card_desc->xpd_addr.subunit);
if(xpd)
xpd_disconnect(xpd);
kfree(card);
@@ -332,6 +553,7 @@ static void xbus_poll(void *data)
wake_up(&xbus->wait_for_xpd_initialization);
out:
up_read(&xbus->in_use);
+ return;
}
@@ -343,16 +565,18 @@ void xbus_activate(xbus_t *xbus)
ops = xbus->ops;
BUG_ON(!ops);
/* Sanity checks */
- BUG_ON(!ops->packet_send);
- BUG_ON(!ops->packet_new || !ops->packet_free);
+ BUG_ON(!ops->xframe_send);
+ BUG_ON(!ops->xframe_new || !ops->xframe_free);
xbus->hardware_exists = 1;
DBG("Activating: %s\n", xbus->busname);
+
/* Poll it */
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20)
INIT_WORK(&xbus->xpds_init_work, xbus_poll);
#else
INIT_WORK(&xbus->xpds_init_work, xbus_poll, xbus);
#endif
+
if(!queue_work(xpp_worker, &xbus->xpds_init_work)) {
ERR("Failed to queue xpd initialization work\n");
/* FIXME: need to return error */
@@ -424,6 +648,16 @@ static void xbus_free(xbus_t *xbus)
xbuses_array[xbus->num] = NULL;
bus_count--;
spin_unlock_irqrestore(&xbuses_lock, flags);
+#ifdef XPP_DEBUGFS
+ if(xbus->debugfs_dir) {
+ if(xbus->debugfs_file) {
+ DBG("Removing debugfs file for %s\n", xbus->busname);
+ debugfs_remove(xbus->debugfs_file);
+ }
+ DBG("Removing debugfs directory for %s\n", xbus->busname);
+ debugfs_remove(xbus->debugfs_dir);
+ }
+#endif
#ifdef CONFIG_PROC_FS
if(xbus->proc_xbus_dir) {
if(xbus->proc_xbus_summary) {
@@ -476,7 +710,7 @@ xbus_t *xbus_new(xbus_ops_t *ops)
/* Init data structures */
spin_lock_init(&xbus->lock);
- snprintf(xbus->busname, XBUS_NAMELEN, "XBUS-%d", xbus->num);
+ snprintf(xbus->busname, XBUS_NAMELEN, "XBUS-%02d", xbus->num);
INFO("New xbus: %s\n", xbus->busname);
init_waitqueue_head(&xbus->packet_cache_empty);
atomic_set(&xbus->packet_counter, 0);
@@ -550,15 +784,27 @@ xbus_t *xbus_new(xbus_ops_t *ops)
xbus->proc_xbus_command->owner = THIS_MODULE;
#endif
#endif
+#ifdef XPP_DEBUGFS
+ xbus->debugfs_dir = debugfs_create_dir(xbus->busname, debugfs_root);
+ if(!xbus->debugfs_dir) {
+ ERR("Failed to create debugfs directory for %s\n", xbus->busname);
+ goto nobus;
+ }
+ xbus->debugfs_file = debugfs_create_file("dchannel", S_IFREG|S_IRUGO|S_IWUSR, xbus->debugfs_dir, xbus, &debugfs_operations);
+ if(!xbus->debugfs_file) {
+ ERR("Failed to create dchannel file for %s\n", xbus->busname);
+ goto nobus;
+ }
+#endif
/* Sanity checks */
- if(!ops->packet_send) {
- ERR("%s: missing mandatory handler: packet_send\n", __FUNCTION__);
+ if(!ops->xframe_send) {
+ ERR("%s: missing mandatory handler: xframe_send\n", __FUNCTION__);
goto nobus;
}
- if(!ops->packet_new || !ops->packet_free) {
+ if(!ops->xframe_new || !ops->xframe_free) {
NOTICE("%s: Using default packet allocators\n", __FUNCTION__);
- ops->packet_new = xbus_packet_new;
- ops->packet_free = xbus_packet_free;
+ ops->xframe_new = xbus_xframe_new;
+ ops->xframe_free = xbus_xframe_free;
}
xbus->ops = ops;
@@ -694,7 +940,8 @@ static int xbus_read_waitfor_xpds(char *page, char **start, off_t off, int count
}
DBG("%s: Finished initialization of %d XPD's in %d seconds.\n", xbus->busname, MAX_XPDS, (INITIALIZATION_TIMEOUT - ret)/HZ);
spin_lock_irqsave(&xbus->lock, flags);
- len += sprintf(page + len, "XPDS_READY: %d/%d\n",
+ len += sprintf(page + len, "XPDS_READY: %s: %d/%d\n",
+ xbus->busname,
atomic_read(&xbus->count_xpds_initialized),
atomic_read(&xbus->count_xpds_to_initialize));
spin_unlock_irqrestore(&xbus->lock, flags);
@@ -718,8 +965,9 @@ static int proc_xbus_command_write(struct file *file, const char __user *buffer,
xbus_t *xbus = data;
xpacket_t *pack;
char *p;
- byte *pack_contents;
+ byte *pack_start;
byte *q;
+ xframe_t *xframe;
if(count >= MAX_PROC_WRITE) {
ERR("%s: line too long\n", __FUNCTION__);
@@ -728,10 +976,7 @@ static int proc_xbus_command_write(struct file *file, const char __user *buffer,
if(copy_from_user(buf, buffer, count))
return -EINVAL;
buf[count] = '\0';
- pack = xbus->ops->packet_new(xbus, GFP_KERNEL);
- if(!pack)
- return -ENOMEM;
- q = pack_contents = (byte *)&pack->content;
+ q = pack_start = buf;
for(p = buf; *p;) {
int val;
char hexdigit[3];
@@ -743,7 +988,7 @@ static int proc_xbus_command_write(struct file *file, const char __user *buffer,
if(!isxdigit(*p)) {
ERR("%s: %s: bad hex value ASCII='0x%X' at position %d\n",
__FUNCTION__, xbus->busname, *p, p - buf);
- goto err;
+ return -EINVAL;
}
hexdigit[0] = *p++;
hexdigit[1] = '\0';
@@ -753,18 +998,22 @@ static int proc_xbus_command_write(struct file *file, const char __user *buffer,
if(sscanf(hexdigit, "%2X", &val) != 1) {
ERR("%s: %s: bad hex value '%s' at position %d\n",
__FUNCTION__, xbus->busname, hexdigit, p - buf);
- goto err;
+ return -EINVAL;
}
*q++ = val;
// DBG("%s: %s: '%s' val=%d\n", __FUNCTION__, xbus->busname, hexdigit, val);
}
- pack->datalen = q - pack_contents -
- sizeof(pack->content.opcode) - sizeof(pack->content.addr);
- packet_send(xbus, pack);
+ xframe = xbus->ops->xframe_new(xbus, GFP_KERNEL);
+ if(!xframe)
+ return -ENOMEM;
+ pack = xframe_next_packet(xframe, q - pack_start);
+ if(!pack) {
+ xbus->ops->xframe_free(xbus, xframe);
+ return -ENOMEM;
+ }
+ memcpy(pack, pack_start, q - pack_start); /* FRAMES: checksum? */
+ xframe_send(xbus, xframe);
return count;
-err:
- xbus->ops->packet_free(xbus, pack);
- return -EINVAL;
}
#endif
@@ -861,6 +1110,12 @@ static void xbus_core_cleanup(void)
destroy_workqueue(xpp_worker);
xpp_worker = NULL;
}
+#ifdef XPP_DEBUGFS
+ if(debugfs_root) {
+ DBG("Removing xpp from debugfs\n");
+ debugfs_remove(debugfs_root);
+ }
+#endif
#ifdef CONFIG_PROC_FS
if(proc_xbuses) {
DBG("Removing " PROC_XBUSES " from proc\n");
@@ -868,8 +1123,8 @@ static void xbus_core_cleanup(void)
proc_xbuses = NULL;
}
#endif
- if(packet_cache)
- kmem_cache_destroy(packet_cache);
+ if(xframes_cache)
+ kmem_cache_destroy(xframes_cache);
}
int __init xbus_core_init(void)
@@ -879,35 +1134,48 @@ int __init xbus_core_init(void)
#ifdef PROTOCOL_DEBUG
INFO("FEATURE: %s with PROTOCOL_DEBUG\n", THIS_MODULE->name);
#endif
- packet_cache = kmem_cache_create("xpp_packets",
- sizeof(xpacket_t),
+#ifdef XPP_DEBUGFS
+ INFO("FEATURE: %s with XPP_DEBUGFS support\n", THIS_MODULE->name);
+#endif
+ xframes_cache = kmem_cache_create("xpp_frames",
+ sizeof(xframe_t) + XFRAME_DATASIZE,
0, 0,
NULL, NULL);
- if(!packet_cache) {
+ if(!xframes_cache) {
return -ENOMEM;
}
xpp_worker = create_singlethread_workqueue("xppworker");
if(!xpp_worker) {
ERR("Failed to create card detector workqueue.\n");
- xbus_core_cleanup();
- return -ENOMEM;
+ ret = -ENOMEM;
+ goto err;
}
#ifdef CONFIG_PROC_FS
proc_xbuses = create_proc_read_entry(PROC_XBUSES, 0444, xpp_proc_toplevel, read_proc_xbuses, NULL);
if (!proc_xbuses) {
ERR("Failed to create proc file %s\n", PROC_XBUSES);
- xbus_core_cleanup();
- return -EFAULT;
+ ret = -EFAULT;
+ goto err;
}
proc_xbuses->owner = THIS_MODULE;
#endif
+#ifdef XPP_DEBUGFS
+ DBG("Creating debugfs xpp root\n");
+ debugfs_root = debugfs_create_dir("xpp", NULL);
+ if(!debugfs_root) {
+ ret = -EFAULT;
+ goto err;
+ }
+#endif
ret = bus_register(&xbus_bus_type);
if(ret) {
ERR("%s: bus_register failed. Error number %d", __FUNCTION__, ret);
- xbus_core_cleanup();
- return ret;
+ goto err;
}
return 0;
+err:
+ xbus_core_cleanup();
+ return ret;
}
@@ -931,3 +1199,8 @@ EXPORT_SYMBOL(xbus_remove);
EXPORT_SYMBOL(xbus_activate);
EXPORT_SYMBOL(xbus_disconnect);
EXPORT_SYMBOL(xbus_reset_counters);
+EXPORT_SYMBOL(xframe_next_packet);
+EXPORT_SYMBOL(dump_xframe);
+#ifdef XPP_DEBUGFS
+EXPORT_SYMBOL(xbus_log);
+#endif
diff --git a/xpp/xbus-core.h b/xpp/xbus-core.h
index f2bac8c..1c1e98e 100644
--- a/xpp/xbus-core.h
+++ b/xpp/xbus-core.h
@@ -24,18 +24,38 @@
#include "xpd.h"
-#define MAX_BUSES 16
+#define MAX_BUSES 32
+#define XFRAME_DATASIZE 512
+
+struct xframe {
+ atomic_t frame_len;
+ byte *packets; /* max XFRAME_DATASIZE */
+};
+
+#define XFRAME_LEN(frame) atomic_read(&(frame)->frame_len)
int xbus_core_init(void); /* Initializer */
void xbus_core_shutdown(void); /* Terminator */
-/* Packet handling */
-xpacket_t *xbus_packet_new(xbus_t *xbus, gfp_t flags);
-void xbus_packet_free(xbus_t *xbus, xpacket_t *p);
+#ifdef XPP_DEBUGFS
+/* Debugfs handling */
+int xbus_log(xbus_t *xbus, xpd_t *xpd, int direction, const void *buf, unsigned long len);
+#endif
+
+/* Frame handling */
+xframe_t *xbus_frame_new(xbus_t *xbus, gfp_t flags);
+void xbus_frame_free(xbus_t *xbus, xframe_t *p);
+void dump_xframe(const char msg[], const xbus_t *xbus, const xframe_t *xframe);
+
+/*
+ * Return pointer to next packet slot in the frame
+ * or NULL if the frame is full.
+ */
+xpacket_t *xframe_next_packet(xframe_t *xframe, int len);
/* XBUS handling */
xbus_t *xbus_of(int xbus_num);
-xpd_t *xpd_of(xbus_t *xbus, int xpd_num);
+xpd_t *xpd_of(const xbus_t *xbus, int xpd_num);
xbus_t *xbus_new(xbus_ops_t *ops);
void xbus_remove(xbus_t *xbus);
void xbus_activate(xbus_t *xbus);
diff --git a/xpp/xdefs.h b/xpp/xdefs.h
index d4d0573..e6e48f6 100644
--- a/xpp/xdefs.h
+++ b/xpp/xdefs.h
@@ -22,20 +22,19 @@
*
*/
+#include "xpp_version.h"
+
#ifdef __KERNEL__
#include <linux/kernel.h>
#include <linux/version.h>
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
-#define LINUX26
-#endif
-
#else
/* This is to enable user-space programs to include this. */
#include <stdint.h>
+typedef uint8_t __u8;
typedef uint32_t __u32;
#include <stdio.h>
@@ -77,6 +76,7 @@ struct list_head { struct list_head *next; struct list_head *prev; };
#define MAX_UNIT BIT(UNIT_BITS) /* 1 FXS + 3 FXS/FXO | 1 BRI + 3 FXS/FXO */
#define MAX_SUBUNIT BIT(SUBUNIT_BITS) /* 8 port BRI */
+#define SUBUNIT_PCM_SHIFT 4 /* shift in PCM highway */
/*
* Compile time sanity checks
@@ -100,12 +100,16 @@ struct list_head { struct list_head *next; struct list_head *prev; };
typedef char *charp;
typedef unsigned char byte;
+#ifdef __KERNEL__
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
typedef int bool;
#endif
+#else
+typedef int bool;
+#endif
typedef struct xbus xbus_t;
typedef struct xpd xpd_t;
-typedef struct xpacket_raw xpacket_raw_t;
+typedef struct xframe xframe_t;
typedef struct xpacket xpacket_t;
typedef struct xops xops_t;
typedef __u32 xpp_line_t; /* at most 31 lines for E1 */
diff --git a/xpp/xpd.h b/xpp/xpd.h
index 6debd03..40a6a20 100644
--- a/xpp/xpd.h
+++ b/xpp/xpd.h
@@ -32,7 +32,15 @@
#include <asm/atomic.h>
#include <asm/semaphore.h>
#include <linux/moduleparam.h>
+#ifdef XPP_DEBUGFS
+#ifndef CONFIG_DEBUG_FS
+#warning kernel does not include CONFIG_DEBUG_FS, canceling XPP_DEBUGFS support
+#undef XPP_DEBUGFS
+#else
+#include <linux/debugfs.h>
+#endif
#endif
+#endif /* __KERNEL__ */
#include <zaptel.h>
@@ -43,13 +51,20 @@
typedef unsigned gfp_t; /* Added in 2.6.14 */
#endif
#endif
-#define DEF_PARM(type,name,init,desc) \
- type name = init; \
- module_param(name, type, 0600); \
+
+/*
+ * FIXME: Kludge for 2.6.19
+ * bool is now defined as a proper boolean type (gcc _Bool)
+ * but the command line parsing framework handles it as int.
+ */
+#define DEF_PARM_BOOL(name,init,perm,desc) \
+ int name = init; \
+ module_param(name, bool, perm); \
MODULE_PARM_DESC(name, desc)
-#define DEF_PARM_RO(type,name,init,desc) \
+
+#define DEF_PARM(type,name,init,perm,desc) \
type name = init; \
- module_param(name, type, 0400); \
+ module_param(name, type, perm); \
MODULE_PARM_DESC(name, desc)
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,10)
@@ -92,9 +107,9 @@ typedef struct packet_queue {
} packet_queue_t;
struct xbus_ops {
- int (*packet_send)(xbus_t *xbus, xpacket_t *packet);
- xpacket_t *(*packet_new)(xbus_t *xbus, gfp_t flags);
- void (*packet_free)(xbus_t *xbus, xpacket_t *p);
+ int (*xframe_send)(xbus_t *xbus, xframe_t *xframe);
+ xframe_t *(*xframe_new)(xbus_t *xbus, gfp_t flags);
+ void (*xframe_free)(xbus_t *xbus, xframe_t *p);
};
/*
@@ -104,7 +119,7 @@ enum {
XBUS_N_DESC_REQ,
XBUS_N_DEV_DESC_FULL,
XBUS_N_DEV_DESC_EMPTY,
- XBUS_N_PCM_WRITE,
+ XBUS_N_SEND_PCM,
XBUS_N_PCM_READ,
XBUS_N_TX_BYTES,
XBUS_N_RX_BYTES,
@@ -121,7 +136,7 @@ static struct xbus_counters {
C_(DESC_REQ),
C_(DEV_DESC_FULL),
C_(DEV_DESC_EMPTY),
- C_(PCM_WRITE),
+ C_(SEND_PCM),
C_(PCM_READ),
C_(TX_BYTES),
C_(RX_BYTES),
@@ -142,6 +157,11 @@ struct card_desc_struct {
xpd_addr_t xpd_addr;
};
+#ifdef XPP_DEBUGFS
+/* definition in xbus-core.c */
+struct debugfs_data;
+#endif
+
/*
* An xbus is a transport layer for Xorcom Protocol commands
*/
@@ -183,6 +203,11 @@ struct xbus {
int num_xpds;
void *priv; /* Pointer to transport level data structures */
+#ifdef XPP_DEBUGFS
+ struct dentry *debugfs_dir;
+ struct dentry *debugfs_file;
+ struct debugfs_data *debugfs_data;
+#endif
#ifdef CONFIG_PROC_FS
struct proc_dir_entry *proc_xbus_dir;
struct proc_dir_entry *proc_xbus_summary;
@@ -230,12 +255,6 @@ static struct xpd_counters {
#define XPD_COUNTER_MAX (sizeof(xpd_counters)/sizeof(xpd_counters[0]))
-#define LED_BLINK_PERIOD (HZ/8)
-
-#define LED_ON 1
-#define LED_OFF 0
-#define LED_BLINK (-LED_BLINK_PERIOD)
-
/* Values of SLIC register 0x40 */
enum fxs_state {
FXS_LINE_DISABLED = 0x00,
@@ -264,11 +283,7 @@ struct xpd {
xpp_line_t digital_inputs; /* 0 - no, 1 - yes */
xpp_line_t digital_signalling; /* PRI/BRI signalling channels */
- int ringing[CHANNELS_PERXPD];
- bool ringer_on[CHANNELS_PERXPD]; /* For ring toggling */
-
- wait_queue_head_t txstateq[CHANNELS_PERXPD]; /* waiting on the tx state to change */
- int delay_until_dialtone[CHANNELS_PERXPD];
+ bool ringing[CHANNELS_PERXPD];
enum fxs_state lasttxhook[CHANNELS_PERXPD];
int idletxhookstate[CHANNELS_PERXPD]; /* IDLE changing hook state */
@@ -281,11 +296,14 @@ struct xpd {
atomic_t open_counter; /* Number of open channels */
int flags;
+ bool blink_mode; /* for visual identification */
+#define DEFAULT_LED_PERIOD (1000/8) /* in tick */
#ifdef CONFIG_PROC_FS
struct proc_dir_entry *proc_xpd_dir;
struct proc_dir_entry *proc_xpd_summary;
struct proc_dir_entry *proc_xpd_ztregister;
+ struct proc_dir_entry *proc_xpd_blink;
#endif
int counters[XPD_COUNTER_MAX];
@@ -302,7 +320,6 @@ struct xpd {
xpd_addr_t addr;
struct list_head xpd_list;
unsigned int timer_count;
- volatile u_char *writechunk; /* Double-word aligned write memory */
volatile u_char *readchunk; /* Double-word aligned read memory */
/* Echo cancelation */
u_char ec_chunk1[CHANNELS_PERXPD][ZT_CHUNKSIZE];
diff --git a/xpp/xpp_log.h b/xpp/xpp_log.h
new file mode 100644
index 0000000..322b7f0
--- /dev/null
+++ b/xpp/xpp_log.h
@@ -0,0 +1,52 @@
+#ifndef XPP_LOG_H
+#define XPP_LOG_H
+/*
+ * Written by Alexander Landau <landau.alex@gmail.com>
+ * Copyright (C) 2004-2007, Xorcom
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ */
+
+#ifdef __KERNEL__
+
+#include <linux/kernel.h>
+#include <linux/version.h>
+
+#else
+
+/* This is to enable user-space programs to include this. */
+
+#include "xdefs.h"
+
+#endif
+
+#define XPP_LOG_MAGIC 0x10583ADE
+
+struct log_global_header {
+ __u32 magic;
+ __u32 version;
+} __attribute__((packed));
+
+struct log_header {
+ __u32 len;
+ __u32 time;
+ __u8 xpd_num;
+ __u8 direction;
+} __attribute__((packed));
+
+#endif
diff --git a/xpp/xpp_usb.c b/xpp/xpp_usb.c
index c9e83a6..3325f59 100644
--- a/xpp/xpp_usb.c
+++ b/xpp/xpp_usb.c
@@ -48,7 +48,7 @@
static const char rcsid[] = "$Id$";
-DEF_PARM(int, print_dbg, 0, "Print DBG statements"); /* must be before zap_debug.h */
+DEF_PARM(int, print_dbg, 0, 0600, "Print DBG statements"); /* must be before zap_debug.h */
#include "zap_debug.h"
@@ -57,7 +57,6 @@ DEF_PARM(int, print_dbg, 0, "Print DBG statements"); /* must be before zap_debug
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,14)
# define URB_ASYNC_UNLINK 0
#endif
-#define USBDEV_MAX 10
/* Get a minor range for your devices from the usb maintainer */
#define USB_SKEL_MINOR_BASE 192
@@ -78,21 +77,19 @@ struct xusb_endpoint {
usb_complete_t callback;
};
-static int xusb_packet_send(xbus_t *xbus, xpacket_t *pack);
+static int xusb_xframe_send(xbus_t *xbus, xframe_t *xframe);
xbus_ops_t xusb_ops = {
- .packet_send = xusb_packet_send,
- .packet_new = NULL, // Default allocator
- .packet_free = NULL, // Default deallocator
+ .xframe_send = xusb_xframe_send,
+ .xframe_new = NULL, // Default allocator
+ .xframe_free = NULL, // Default deallocator
};
enum {
- XUSB_N_RX_PACKETS,
- XUSB_N_TX_PACKETS,
+ XUSB_N_RX_FRAMES,
+ XUSB_N_TX_FRAMES,
XUSB_N_RX_ERRORS,
XUSB_N_TX_ERRORS,
- XUSB_N_PCM_READS,
- XUSB_N_PCM_WRITES,
};
#define XUSB_COUNTER(xusb, counter) ((xusb)->counters[XUSB_N_ ## counter])
@@ -102,12 +99,10 @@ enum {
static struct xusb_counters {
char *name;
} xusb_counters[] = {
- C_(RX_PACKETS),
- C_(TX_PACKETS),
+ C_(RX_FRAMES),
+ C_(TX_FRAMES),
C_(RX_ERRORS),
C_(TX_ERRORS),
- C_(PCM_READS),
- C_(PCM_WRITES),
};
#undef C_
@@ -145,7 +140,7 @@ typedef struct xpp_usb_bus {
} xusb_t;
static spinlock_t xusb_lock = SPIN_LOCK_UNLOCKED;
-static xusb_t *xusb_array[USBDEV_MAX] = {};
+static xusb_t *xusb_array[MAX_BUSES] = {};
static unsigned bus_count = 0;
@@ -163,65 +158,24 @@ static int xusb_open (struct inode *inode, struct file *file);
static int xusb_release (struct inode *inode, struct file *file);
static void xusb_write_bulk_callback (struct urb *urb, struct pt_regs *regs);
#endif
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)
+#define USB_PASS_CB(u) struct urb *u, struct pt_regs *regs
+#else
+#define USB_PASS_CB(u) struct urb *u
+#endif
+
static void xpp_urb_delete(struct urb *urb);
static struct urb *xpp_urb_new(xusb_t *dev, enum xusb_dir dir, size_t size);
-static void xpp_send_callback(struct urb *urb, struct pt_regs *regs);
-static void xpp_receive_callback(struct urb *urb, struct pt_regs *regs);
+static void xpp_send_callback(USB_PASS_CB(urb));
+static void xpp_receive_callback(USB_PASS_CB(urb));
static int xusb_probe (struct usb_interface *interface, const struct usb_device_id *id);
static void xusb_disconnect (struct usb_interface *interface);
static int xusb_read_proc(char *page, char **start, off_t off, int count, int *eof, void *data);
/*------------------------------------------------------------------*/
-
#if 0
-/**
- * Allocates a new XPP packet.
- * @xbus The XPP bus in which the packet will flow (for counters
- * maintenance)
- * @flags Flags for kernel memory allocation.
- * @returns A pointer to the new packet, or NULL in case of failure.
- *
- *
- * Packet allocation/deallocation:
- * Sent packets:
- * - Allocated by protocol commands
- * - Deallocated by xmus_xmitter
- * Receive packets:
- * - Allocated/deallocated by xbus_xmiter
- */
-xpacket_t *xusb_packet_new(xbus_t *xbus, int flags)
-{
- xpacket_t *pack;
-
- /* To avoid races we increament counter in advance and decrement it later
- * in case of failure */
- atomic_inc(&xbus->packet_counter);
- //DBG("Incremented packet_counter of bus %s (new packet) to %d\n",
- // xbus->busname, atomic_read(&xbus->packet_counter));
- pack = kmem_cache_alloc(packet_cache, flags);
- if (pack) {
- memset(pack, 0, sizeof(xpacket_t));
- atomic_inc(&xpacket_count);
- } else {
- atomic_dec(&xbus->packet_counter);
- //DBG("Decremented packet_counter of bus %s (failed new packet) to %d\n",
- // xbus->busname, atomic_read(&xbus->packet_counter));
- }
- return pack;
-}
-
-void xusb_packet_free(xbus_t *xbus, xpacket_t *p)
-{
- kmem_cache_free(packet_cache, p);
- atomic_dec(&xpacket_count);
- atomic_dec(&xbus->packet_counter);
- //DBG("Decremented packet_counter of bus %s (freed packet) to %d\n",
- // xbus->busname, atomic_read(&xbus->packet_counter));
-}
-
-#endif
-
#ifndef DEBUG
#define packet_debug(m, x, p)
@@ -233,7 +187,7 @@ static void packet_debug(const char msg[], xusb_t *xusb, xpacket_t *pack)
{
char title[XBUS_DESCLEN];
- if(pack->content.opcode == XPROTO_NAME(GLOBAL,PCM_READ)) {
+ if(pack->opcode == XPROTO_NAME(GLOBAL,PCM_READ)) {
#ifdef DEBUG_PCM_TIMING
/*
* DEBUG: high-res timing of PCM_READ to PCM_WRITE
@@ -247,7 +201,7 @@ static void packet_debug(const char msg[], xusb_t *xusb, xpacket_t *pack)
dump_packet("USB RECEIVE PCM", pack, print_dbg);
#endif
return;
- } else if(pack->content.opcode == XPROTO_NAME(GLOBAL,PCM_WRITE)) {
+ } else if(pack->opcode == XPROTO_NAME(GLOBAL,PCM_WRITE)) {
#ifdef DEBUG_PCM_TIMING
/*
* DEBUG: high-res timing of PCM_READ to PCM_WRITE
@@ -261,7 +215,7 @@ static void packet_debug(const char msg[], xusb_t *xusb, xpacket_t *pack)
dump_packet("USB SEND PCM", pack, print_dbg);
#endif
return;
- } else if(pack->content.opcode == XPROTO_NAME(GLOBAL, REGISTER_REQUEST)) {
+ } else if(pack->opcode == XPROTO_NAME(GLOBAL, REGISTER_REQUEST)) {
reg_cmd_t *regcmd;
regcmd = &RPACKET_FIELD(pack, GLOBAL, REGISTER_REQUEST, reg_cmd);
@@ -278,16 +232,18 @@ static void packet_debug(const char msg[], xusb_t *xusb, xpacket_t *pack)
return;
}
#if 0
- } else if(pack->content.opcode == XPROTO_NAME(FXS, REGISTER_REPLY)) {
+ } else if(pack->opcode == XPROTO_NAME(FXS, REGISTER_REPLY)) {
return;
#endif
}
snprintf(title, XBUS_DESCLEN, "%s: %s", msg, xusb->xbus->busname);
dump_packet(title, pack, print_dbg);
}
+
+#endif
#endif
-static int xusb_packet_send(xbus_t *xbus, xpacket_t *pack)
+static int xusb_xframe_send(xbus_t *xbus, xframe_t *xframe)
{
xusb_t *xusb;
struct urb *urb;
@@ -295,7 +251,7 @@ static int xusb_packet_send(xbus_t *xbus, xpacket_t *pack)
size_t size;
struct xusb_endpoint *xusb_ep;
- BUG_ON(!pack);
+ BUG_ON(!xframe);
BUG_ON(!xbus);
xusb = xbus->priv;
BUG_ON(!xusb);
@@ -315,7 +271,9 @@ static int xusb_packet_send(xbus_t *xbus, xpacket_t *pack)
ret = -ENODEV;
goto freepack;
}
- size = PACKET_LEN(pack);
+ if (print_dbg)
+ dump_xframe("USB_FRAME_SEND", xbus, xframe);
+ size = XFRAME_LEN(xframe);
xusb_ep = &xusb->endpoints[XUSB_SEND];
urb = xpp_urb_new(xusb, XUSB_SEND, size);
if (!urb) {
@@ -323,10 +281,10 @@ static int xusb_packet_send(xbus_t *xbus, xpacket_t *pack)
ret = -ENOMEM;
goto freepack;
}
- packet_debug("USB_PACKET_SEND", xusb, pack);
/* FIXME: FIXME: FIXME: we use copy+free until low-level drivers allocate memory themselves */
- memcpy(urb->transfer_buffer, &pack->content, size);
+
+ memcpy(urb->transfer_buffer, xframe->packets, size);
ret = usb_submit_urb(urb, GFP_ATOMIC);
if(ret < 0) {
@@ -339,10 +297,8 @@ static int xusb_packet_send(xbus_t *xbus, xpacket_t *pack)
goto freepack;
}
atomic_inc(&xusb->pending_writes);
- if(pack->content.opcode == XPROTO_NAME(GLOBAL,PCM_WRITE))
- XUSB_COUNTER(xusb, PCM_WRITES)++;
freepack:
- xbus->ops->packet_free(xbus, pack); // FIXME: eventually will be done in the urb callback
+ xbus->ops->xframe_free(xbus, xframe); // FIXME: eventually will be done in the urb callback
if(ret < 0)
XUSB_COUNTER(xusb, TX_ERRORS)++;
return ret;
@@ -509,7 +465,7 @@ static int set_endpoints(xusb_t *xusb, struct usb_interface *interface, struct x
}
if(usb_pipein(ep_addr)) { // Input
if(ep_addr == model_info->in.ep_addr) {
- if(endpoint->wMaxPacketSize < sizeof(xpacket_raw_t)) {
+ if(endpoint->wMaxPacketSize < sizeof(xframe_t)) {
NOTICE("USB input endpoint 0x%X support only wMaxPacketSize=%d (need USB-2)\n", ep_addr, endpoint->wMaxPacketSize);
}
xusb_ep = &xusb->endpoints[XUSB_RECV];
@@ -519,7 +475,7 @@ static int set_endpoints(xusb_t *xusb, struct usb_interface *interface, struct x
}
} else { // Output
if(ep_addr == model_info->out.ep_addr) {
- if(endpoint->wMaxPacketSize < sizeof(xpacket_raw_t)) {
+ if(endpoint->wMaxPacketSize < sizeof(xframe_t)) {
NOTICE("USB output endpoint 0x%X support only wMaxPacketSize=%d (need USB-2)\n", ep_addr, endpoint->wMaxPacketSize);
}
xusb_ep = &xusb->endpoints[XUSB_SEND];
@@ -629,12 +585,12 @@ static int xusb_probe(struct usb_interface *interface, const struct usb_device_i
xbus->max_packet_size = min(xusb->endpoints[XUSB_SEND].max_size , xusb->endpoints[XUSB_RECV].max_size);
spin_lock_irqsave(&xusb_lock, flags);
- for(i = 0; i < USBDEV_MAX; i++) {
+ for(i = 0; i < MAX_BUSES; i++) {
if(xusb_array[i] == NULL)
break;
}
spin_unlock_irqrestore(&xusb_lock, flags);
- if(i >= USBDEV_MAX) {
+ if(i >= MAX_BUSES) {
ERR("xpp_usb: Too many XPP USB buses\n");
retval = -ENOMEM;
goto probe_failed;
@@ -720,11 +676,11 @@ static void xusb_disconnect(struct usb_interface *interface)
xbus = xusb->xbus;
/* find our xusb */
- for(i = 0; i < USBDEV_MAX; i++) {
+ for(i = 0; i < MAX_BUSES; i++) {
if(xusb_array[i] == xusb)
break;
}
- BUG_ON(i >= USBDEV_MAX);
+ BUG_ON(i >= MAX_BUSES);
xusb_array[i] = NULL;
#ifdef CONFIG_PROC_FS
@@ -759,7 +715,7 @@ static void xusb_disconnect(struct usb_interface *interface)
INFO("XUSB #%d now disconnected\n", minor);
}
-static void xpp_send_callback(struct urb *urb, struct pt_regs *regs)
+static void xpp_send_callback(USB_PASS_CB(urb))
{
xusb_t *xusb = (xusb_t *)urb->context;
xbus_t *xbus = xusb->xbus;
@@ -779,14 +735,15 @@ static void xpp_send_callback(struct urb *urb, struct pt_regs *regs)
return;
}
/* allow device read, write and ioctl */
- XUSB_COUNTER(xusb, TX_PACKETS)++;
+ XUSB_COUNTER(xusb, TX_FRAMES)++;
}
-static void xpp_receive_callback(struct urb *urb, struct pt_regs *regs)
+static void xpp_receive_callback(USB_PASS_CB(urb))
{
xusb_t *xusb = (xusb_t *)urb->context;
xbus_t *xbus;
xpacket_t *pack;
+ xframe_t *xframe;
size_t size;
int retval;
bool do_resubmit = 1;
@@ -822,25 +779,22 @@ static void xpp_receive_callback(struct urb *urb, struct pt_regs *regs)
do_resubmit = 0;
goto end;
}
- pack = xbus->ops->packet_new(xbus, GFP_ATOMIC);
- if(!pack) {
+ xframe = xbus->ops->xframe_new(xbus, GFP_ATOMIC);
+ if(!xframe) {
ERR("%s: Not enough memory for packets. Dropping\n", __FUNCTION__);
goto end;
}
-
size = urb->actual_length;
- memcpy(&pack->content, urb->transfer_buffer, size);
-
- pack->datalen = size - sizeof(xpd_addr_t) - 1; // opcode size
- // DBG("datalen of new packet: %d\n", pack->datalen);
+ atomic_set(&xframe->frame_len, size);
+ pack = (xpacket_t *)xframe->packets;
+ memcpy(xframe->packets, urb->transfer_buffer, size);
- packet_debug("USB_PACKET_RECEIVE", xusb, pack);
- XUSB_COUNTER(xusb, RX_PACKETS)++;
- if(pack->content.opcode == XPROTO_NAME(GLOBAL,PCM_READ))
- XUSB_COUNTER(xusb, PCM_READS)++;
+ if (print_dbg)
+ dump_xframe("USB_FRAME_RECEIVE", xbus, xframe);
+ XUSB_COUNTER(xusb, RX_FRAMES)++;
// Send UP
- packet_receive(xbus, pack);
-end:
+ xframe_receive(xbus, xframe);
+end:
if(is_inuse)
up_read(&xbus->in_use);
if(do_resubmit) {
@@ -860,7 +814,7 @@ int __init xpp_usb_init(void)
int result;
//xusb_t *xusb;
- INFO("%s\n", THIS_MODULE->name);
+ INFO("%s revision %s\n", THIS_MODULE->name, XPP_VERSION);
/* register this driver with the USB subsystem */
result = usb_register(&xusb_driver);
@@ -941,6 +895,7 @@ out:
MODULE_DESCRIPTION("XPP USB Driver");
MODULE_AUTHOR("Oron Peled <oron@actcom.co.il>");
MODULE_LICENSE("GPL");
+MODULE_VERSION(XPP_VERSION);
module_init(xpp_usb_init);
module_exit(xpp_usb_cleanup);
diff --git a/xpp/xpp_zap.c b/xpp/xpp_zap.c
index f7ce8d1..b3e7017 100644
--- a/xpp/xpp_zap.c
+++ b/xpp/xpp_zap.c
@@ -36,7 +36,7 @@
#include <linux/device.h>
#include <linux/init.h>
#include <linux/delay.h> /* for udelay */
-#include <linux/workqueue.h>
+#include <linux/interrupt.h>
#include <linux/proc_fs.h>
#include <zaptel.h>
#include "xbus-core.h"
@@ -50,6 +50,7 @@ struct proc_dir_entry *xpp_proc_toplevel = NULL;
#define PROC_DIR "xpp"
#define PROC_SYNC "sync"
#define PROC_XPD_ZTREGISTER "zt_registration"
+#define PROC_XPD_BLINK "blink"
#define PROC_XPD_SUMMARY "summary"
#endif
@@ -62,11 +63,14 @@ static xpd_t *sync_master = NULL; // Start with host based sync
static unsigned int xpp_timer_count = 0;
static unsigned int xpp_last_jiffies = 0;
-DEF_PARM(int, print_dbg, 0, "Print DBG statements");
-DEF_PARM(bool, zap_autoreg, 1, "Register spans automatically (1) or not (0)");
-DEF_PARM(bool, prefmaster, 1, "Do we want to be zaptel preferred sync master");
+
+DEF_PARM_BOOL(pcm_tasklet, 0, 0600, "Handle PCM in a tasklet (lower interrupt load)");
+DEF_PARM(int, disable_pcm, 0, 0600, "Disable all PCM transmissions");
+DEF_PARM(int, print_dbg, 0, 0600, "Print DBG statements");
+DEF_PARM_BOOL(zap_autoreg, 1, 0600, "Register spans automatically (1) or not (0)");
+DEF_PARM_BOOL(prefmaster, 1, 0600, "Do we want to be zaptel preferred sync master");
#ifdef XPP_EC_CHUNK
-DEF_PARM_RO(bool, xpp_ec, 0, "Do we use our own (1) or Zaptel's (0) echo canceller");
+DEF_PARM_BOOL(xpp_ec, 1, 0400, "Do we use our own (1) or Zaptel's (0) echo canceller");
#else
static int xpp_ec = 0;
#endif
@@ -78,14 +82,19 @@ static int xpp_ec = 0;
#endif
+static void xpp_tick(unsigned long param);
static int zaptel_register_xpd(xpd_t *xpd);
static int zaptel_unregister_xpd(xpd_t *xpd);
-static void xpp_transmitprep(xpd_t *xpd);
+static void xpp_transmitprep(xpd_t *xpd, xpp_line_t lines, xpacket_t *pack);
static void xpp_receiveprep(xpd_t *xpd);
static int xpd_read_proc(char *page, char **start, off_t off, int count, int *eof, void *data);
static int proc_xpd_ztregister_read(char *page, char **start, off_t off, int count, int *eof, void *data);
static int proc_xpd_ztregister_write(struct file *file, const char __user *buffer, unsigned long count, void *data);
+static int proc_xpd_blink_read(char *page, char **start, off_t off, int count, int *eof, void *data);
+static int proc_xpd_blink_write(struct file *file, const char __user *buffer, unsigned long count, void *data);
static void xpd_free(xpd_t *xpd);
+static DECLARE_TASKLET(tasklet_tick, xpp_tick, 0L);
+static atomic_t missed_ticks = ATOMIC_INIT(0); /* In pcm_tasklet mode */
static void external_sync(xpd_t *the_xpd)
{
@@ -110,15 +119,23 @@ static void external_sync(xpd_t *the_xpd)
CALL_XMETHOD(SYNC_SOURCE, the_xpd->xbus, the_xpd, 1, 1);
}
+/*
+ * Change sync_master. May block. Cannot be called from atomic context
+ */
void sync_master_is(xpd_t *xpd)
{
DBG("SYNC MASTER CHANGED: %s => %s\n",
(sync_master) ? sync_master->xpdname : "HOST",
(xpd) ? xpd->xpdname : "HOST");
- sync_master = xpd;
- if(xpd) { // XPD
+ /* First stop all generators */
+ if(sync_master) {
+ tasklet_kill(&tasklet_tick);
+ } else
del_timer_sync(&xpp_timer);
- xpp_tick((unsigned long)xpd);
+ /* Now set a new master */
+ sync_master = xpd;
+ if(sync_master) { // XPD
+ external_sync(xpd);
} else { // HOST
external_sync(NULL);
if(!timer_pending(&xpp_timer)) {
@@ -130,23 +147,158 @@ void sync_master_is(xpd_t *xpd)
}
}
+static inline void send_pcm_frame(xbus_t *xbus, xframe_t *xframe)
+{
+ static int rate_limit;
+
+ if(disable_pcm)
+ xbus->ops->xframe_free(xbus, xframe);
+ else {
+ if(print_dbg && ((rate_limit++ % 1003) == 0))
+ dump_xframe("SEND_PCM", xbus, xframe);
+ xframe_send(xbus, xframe);
+ XBUS_COUNTER(xbus, SEND_PCM)++;
+ }
+}
+
+/*
+ * Calculate PCM line_count and lines from a xbus+unit number:
+ * - Takes into account BRI subunits
+ * - Returns an XPD pointer if we should transmit, NULL otherwise
+ */
+static xpd_t *unit_pcm_calc(const xbus_t *xbus, int unit, size_t *pcm_len, xpp_line_t *plines)
+{
+ bool is_bri;
+ bool digital_telephony;
+ int line_count = 0;
+ xpp_line_t lines;
+ xpd_t *xpd;
+ unsigned long flags;
+ int i;
+
+ xpd = xpd_by_addr(xbus, unit, 0);
+ if(!xpd || !xpd->card_present)
+ return NULL;
+ spin_lock_irqsave(&xpd->lock, flags);
+ is_bri = (xpd->type == XPD_TYPE_BRI_NT) || (xpd->type == XPD_TYPE_BRI_TE);
+ digital_telephony = is_bri; /* or PRI */
+ if(digital_telephony) {
+ int subunit;
+
+ /* without D-Channel */
+ lines = xpd->offhook & ~xpd->digital_signalling;
+ for_each_line(xpd, i)
+ if(IS_SET(lines, i))
+ line_count++;
+ if(is_bri) {
+ /*
+ * BRI has a single PCM highway for all subunits, so
+ * we agregate the next subunits into the same
+ * transmition.
+ */
+ for(subunit = 1; subunit < MAX_SUBUNIT; subunit++) {
+ xpd_t *tmp_xpd = xpd_by_addr(xbus, unit, subunit);
+ xpp_line_t tmp_lines;
+
+ if(!tmp_xpd || !tmp_xpd->card_present)
+ continue;
+ tmp_lines = xpd->offhook & ~xpd->digital_signalling; /* Without D-channel */
+ for_each_line(tmp_xpd, i)
+ if(IS_SET(tmp_lines, i))
+ line_count++;
+ lines = (lines << SUBUNIT_PCM_SHIFT) | tmp_lines; /* B1, B2, D, E */
+ }
+ }
+ } else {
+ lines = (xpd->offhook | xpd->cid_on);
+ for_each_line(xpd, i)
+ if(IS_SET(lines, i))
+ line_count++;
+ }
+ /*
+ * FIXME: Workaround a bug in sync code of the Astribank.
+ * Send dummy PCM for sync.
+ */
+ if(unit == 0 && lines == 0) {
+ lines = BIT(0);
+ line_count = 1;
+ }
+ *pcm_len = RPACKET_HEADERSIZE + sizeof(xpp_line_t) + line_count * ZT_CHUNKSIZE;
+ *plines = lines;
+ spin_unlock_irqrestore(&xpd->lock, flags);
+ return xpd;
+}
+
+static void xbus_tick(xbus_t *xbus)
+{
+ int unit;
+ int i;
+ xpp_line_t lines;
+ xpd_t *xpd;
+ xframe_t *xframe = NULL;
+ xpacket_t *pack = NULL;
+ size_t pcm_len;
+
+ for(unit = 0; unit < MAX_UNIT; unit++) {
+ if((xpd = unit_pcm_calc(xbus, unit, &pcm_len, &lines)) == NULL)
+ continue;
+ if(lines && SPAN_REGISTERED(xpd)) {
+ do {
+ // pack = NULL; /* FORCE single packet frames */
+ if(xframe && !pack) { /* FULL frame */
+ send_pcm_frame(xbus, xframe);
+ xframe = NULL;
+ }
+ if(!xframe) { /* Alloc frame */
+ xframe = xbus->ops->xframe_new(xbus, GFP_ATOMIC);
+ if (!xframe) {
+ ERR("%s: failed to allocate new xframe\n", __FUNCTION__);
+ return;
+ }
+ }
+ pack = xframe_next_packet(xframe, pcm_len);
+ } while(!pack);
+ XPACKET_INIT(pack, GLOBAL, PCM_WRITE);
+ xpd_set_addr(&pack->addr, xpd->id);
+ pack->datalen = pcm_len;
+ RPACKET_FIELD(pack, GLOBAL, PCM_WRITE, lines) = lines;
+ xpp_transmitprep(xpd, lines, pack);
+ }
+
+ }
+ if(xframe) /* clean any leftovers */
+ send_pcm_frame(xbus, xframe);
+
+ for(i = 0; i < MAX_XPDS; i++) {
+ xpd = xpd_of(xbus, i);
+ if(!xpd || !xpd->card_present)
+ continue;
+
+ if(SPAN_REGISTERED(xpd))
+ xpp_receiveprep(xpd);
+ xpd->timer_count++;
+ /*
+ * Must be called *after* tx/rx so
+ * D-Chan counters may be cleared
+ */
+ CALL_XMETHOD(card_tick, xbus, xpd);
+ }
+}
+
void xpp_tick(unsigned long param)
{
- xbus_t *xbus;
- xpd_t *the_xpd = (xpd_t *)param;
- int i;
- int j;
+ xbus_t *xbus;
+ int i, j;
- if(!the_xpd) { /* Called from timer */
+ if(!sync_master) { /* Called from timer */
#if 0
static int rate_limit = 0;
if(rate_limit++ % 1000 == 0)
DBG("FROM_TIMER\n");
#endif
mod_timer(&xpp_timer, jiffies + 1); /* Must be 1KHz rate */
- }
- else if(the_xpd != sync_master)
- return;
+ } else
+ atomic_dec(&missed_ticks);
/* Statistics */
if((xpp_timer_count % SAMPLE_TICKS) == 0) {
xpp_last_jiffies = jiffies;
@@ -163,32 +315,34 @@ void xpp_tick(unsigned long param)
DBG("Dropped packet. %s is in_use\n", xbus->busname);
continue;
}
-#if 0
- if(xbus->open_counter == 0)
- continue; // optimize, but zttool loopback won't function
-#endif
+ /*
+ * calls to zt_transmit should be out of spinlocks, as it may call back
+ * our hook setting methods.
+ */
for(j = 0; j < MAX_XPDS; j++) {
xpd_t *xpd = xpd_of(xbus, j);
- if(!xpd)
- continue;
- if(!xpd->card_present)
- continue;
- xpd->timer_count++;
- if(SPAN_REGISTERED(xpd))
- xpp_transmitprep(xpd);
- if(SPAN_REGISTERED(xpd))
- xpp_receiveprep(xpd);
- /*
- * Must be called *after* tx/rx so
- * D-Chan counters may be cleared
- */
- CALL_XMETHOD(card_tick, xbus, xpd);
+ if(xpd && SPAN_REGISTERED(xpd)) {
+ zt_transmit(&xpd->span);
+ }
}
+ xbus_tick(xbus);
up_read(&xbus->in_use);
}
}
+void got_pcm_from(xpd_t *xpd)
+{
+ if(xpd != sync_master)
+ return;
+ atomic_inc(&missed_ticks);
+ if(!pcm_tasklet) {
+ xpp_tick(0L);
+ return;
+ }
+ tasklet_schedule(&tasklet_tick);
+}
+
#if HZ != 1000
#warning "xpp_timer must be sampled EXACTLY 1000/per second"
#endif
@@ -216,14 +370,19 @@ static void xpd_free(xpd_t *xpd)
remove_proc_entry(PROC_XPD_ZTREGISTER, xpd->proc_xpd_dir);
xpd->proc_xpd_ztregister = NULL;
}
+ if(xpd->proc_xpd_blink) {
+ DBG("Removing proc '%s' for %s/%s\n", PROC_XPD_BLINK, xbus->busname, xpd->xpdname);
+ remove_proc_entry(PROC_XPD_BLINK, xpd->proc_xpd_dir);
+ xpd->proc_xpd_blink = NULL;
+ }
DBG("Removing proc directory for %s/%s\n", xbus->busname, xpd->xpdname);
remove_proc_entry(xpd->xpdname, xbus->proc_xbus_dir);
xpd->proc_xpd_dir = NULL;
}
#endif
- if(xpd->writechunk)
- kfree((void *)xpd->writechunk);
- xpd->writechunk = NULL;
+ if(xpd->readchunk)
+ kfree((void *)xpd->readchunk);
+ xpd->readchunk = NULL;
if(xpd->xproto)
xproto_put(xpd->xproto);
xpd->xproto = NULL;
@@ -235,7 +394,7 @@ static void xpd_free(xpd_t *xpd)
#define REV(x,y) (10 * (x) + (y))
static byte good_revs[] = {
- REV(2,3),
+ REV(2,4),
};
#undef REV
@@ -268,7 +427,7 @@ void card_detected(struct card_desc_struct *card_desc)
BUG_ON(!card_desc);
BUG_ON(card_desc->magic != CARD_DESC_MAGIC);
xbus = card_desc->xbus;
- xpd_num = xpd_addr2num(&card_desc->xpd_addr);
+ xpd_num = XPD_NUM(card_desc->xpd_addr);
type = card_desc->type;
rev = card_desc->rev;
BUG_ON(!xbus);
@@ -341,6 +500,15 @@ void card_detected(struct card_desc_struct *card_desc)
xpd->proc_xpd_ztregister->data = xpd;
xpd->proc_xpd_ztregister->read_proc = proc_xpd_ztregister_read;
xpd->proc_xpd_ztregister->write_proc = proc_xpd_ztregister_write;
+ xpd->proc_xpd_blink = create_proc_entry(PROC_XPD_BLINK, 0644, xpd->proc_xpd_dir);
+ if (!xpd->proc_xpd_blink) {
+ ERR("Failed to create proc '%s' for %s/%s\n", PROC_XPD_BLINK, xbus->busname, xpd->xpdname);
+ goto err;
+ }
+ xpd->proc_xpd_blink->owner = THIS_MODULE;
+ xpd->proc_xpd_blink->data = xpd;
+ xpd->proc_xpd_blink->read_proc = proc_xpd_blink_read;
+ xpd->proc_xpd_blink->write_proc = proc_xpd_blink_write;
#endif
xbus_register_xpd(xbus, xpd);
if(CALL_XMETHOD(card_init, xbus, xpd) < 0)
@@ -430,12 +598,9 @@ static int xpd_read_proc(char *page, char **start, off_t off, int count, int *eo
}
#if 1
if(SPAN_REGISTERED(xpd)) {
- len += sprintf(page + len, "\nzaptel state: %s RUNNING\n", (xpd->span.flags & ZT_FLAG_RUNNING)?"IS":"IS NOT");
len += sprintf(page + len, "\nPCM:\n | [readchunk] | [writechunk] | delay");
for_each_line(xpd, i) {
-#if 0
struct zt_chan *chans = xpd->span.chans;
-#endif
byte rchunk[ZT_CHUNKSIZE];
byte wchunk[ZT_CHUNKSIZE];
byte *rp;
@@ -450,11 +615,10 @@ static int xpd_read_proc(char *page, char **start, off_t off, int count, int *eo
continue;
#if 0
rp = chans[i].readchunk;
- wp = chans[i].writechunk;
#else
rp = (byte *)xpd->readchunk + (ZT_CHUNKSIZE * i);
- wp = (byte *)xpd->writechunk + (ZT_CHUNKSIZE * i);
#endif
+ wp = chans[i].writechunk;
memcpy(rchunk, rp, ZT_CHUNKSIZE);
memcpy(wchunk, wp, ZT_CHUNKSIZE);
len += sprintf(page + len, "\n port %2d> | ", i);
@@ -465,7 +629,7 @@ static int xpd_read_proc(char *page, char **start, off_t off, int count, int *eo
for(j = 0; j < ZT_CHUNKSIZE; j++) {
len += sprintf(page + len, "%02X ", wchunk[j]);
}
- len += sprintf(page + len, " | %d ", xpd->delay_until_dialtone[i]);
+ len += sprintf(page + len, " | ");
}
}
#endif
@@ -506,7 +670,6 @@ out:
xpd_t *xpd_alloc(size_t privsize, xbus_t *xbus, int xpd_num, const xproto_table_t *proto_table, int channels, byte revision)
{
xpd_t *xpd = NULL;
- size_t pcm_size;
size_t alloc_size = sizeof(xpd_t) + privsize;
int i;
@@ -533,7 +696,7 @@ xpd_t *xpd_alloc(size_t privsize, xbus_t *xbus, int xpd_num, const xproto_table_
xpd->channels = channels;
xpd->chans = NULL;
xpd->card_present = 0;
- snprintf(xpd->xpdname, XPD_NAMELEN, "XPD-%d", xpd_num);
+ snprintf(xpd->xpdname, XPD_NAMELEN, "XPD-%02x", xpd_num);
xpd->offhook = 0x0; /* ONHOOK */
xpd->type = proto_table->type;
xpd->xproto = proto_table;
@@ -553,23 +716,20 @@ xpd_t *xpd_alloc(size_t privsize, xbus_t *xbus, int xpd_num, const xproto_table_
ERR("%s: Unable to allocate channels\n", __FUNCTION__);
goto err;
}
- pcm_size = ZT_MAX_CHUNKSIZE * CHANNELS_PERXPD * 2; /* Double Buffer */
- alloc_size = pcm_size * 2; /* Read/Write */
- if((xpd->writechunk = kmalloc(alloc_size, GFP_KERNEL)) == NULL) {
- ERR("%s: Unable to allocate memory for writechunks\n", __FUNCTION__);
+ alloc_size = ZT_MAX_CHUNKSIZE * CHANNELS_PERXPD * 2; /* Double Buffer */
+ if((xpd->readchunk = kmalloc(alloc_size, GFP_KERNEL)) == NULL) {
+ ERR("%s: Unable to allocate memory for readchunk\n", __FUNCTION__);
goto err;
}
- /* Initialize Write/Buffers to all blank data */
- memset((void *)xpd->writechunk, 0x00, alloc_size);
- xpd->readchunk = xpd->writechunk + pcm_size;
-
+ /* Initialize read buffers to all blank data */
+ memset((void *)xpd->readchunk, 0, alloc_size);
return xpd;
err:
if(xpd) {
if(xpd->chans)
kfree((void *)xpd->chans);
- if(xpd->writechunk)
- kfree((void *)xpd->writechunk);
+ if(xpd->readchunk)
+ kfree((void *)xpd->readchunk);
kfree(xpd);
}
return NULL;
@@ -628,7 +788,7 @@ void update_xpd_status(xpd_t *xpd, int alarm_flag)
struct zt_span *span = &xpd->span;
if(!SPAN_REGISTERED(xpd)) {
- NOTICE("%s: %s is not registered. Skipping.\n", __FUNCTION__, xpd->xpdname);
+ // NOTICE("%s: %s is not registered. Skipping.\n", __FUNCTION__, xpd->xpdname);
return;
}
switch (alarm_flag) {
@@ -648,47 +808,45 @@ void update_xpd_status(xpd_t *xpd, int alarm_flag)
void update_line_status(xpd_t *xpd, int pos, bool to_offhook)
{
- struct zt_chan *chan;
+ zt_rxsig_t rxsig;
BUG_ON(!xpd);
- if(!SPAN_REGISTERED(xpd))
- return;
- chan = &xpd->chans[pos];
- /*
- * We should not spinlock before calling zt_hooksig() as
- * it may call back into our xpp_hooksig() and cause
- * a nested spinlock scenario
- */
if(to_offhook) {
BIT_SET(xpd->offhook, pos);
- zt_hooksig(chan, ZT_RXSIG_OFFHOOK);
+ rxsig = ZT_RXSIG_OFFHOOK;
} else {
BIT_CLR(xpd->offhook, pos);
BIT_CLR(xpd->cid_on, pos);
- zt_hooksig(chan, ZT_RXSIG_ONHOOK);
+ rxsig = ZT_RXSIG_ONHOOK;
}
+ /*
+ * We should not spinlock before calling zt_hooksig() as
+ * it may call back into our xpp_hooksig() and cause
+ * a nested spinlock scenario
+ */
+ if(SPAN_REGISTERED(xpd))
+ zt_hooksig(&xpd->chans[pos], rxsig);
}
void update_zap_ring(xpd_t *xpd, int pos, bool on)
{
- struct zt_chan *chan;
+ zt_rxsig_t rxsig;
BUG_ON(!xpd);
- if(!SPAN_REGISTERED(xpd))
- return;
- chan = &xpd->chans[pos];
- /*
- * We should not spinlock before calling zt_hooksig() as
- * it may call back into our xpp_hooksig() and cause
- * a nested spinlock scenario
- */
if(on) {
BIT_CLR(xpd->cid_on, pos);
- zt_hooksig(chan, ZT_RXSIG_RING);
+ rxsig = ZT_RXSIG_RING;
} else {
BIT_SET(xpd->cid_on, pos);
- zt_hooksig(chan, ZT_RXSIG_OFFHOOK);
+ rxsig = ZT_RXSIG_OFFHOOK;
}
+ /*
+ * We should not spinlock before calling zt_hooksig() as
+ * it may call back into our xpp_hooksig() and cause
+ * a nested spinlock scenario
+ */
+ if(SPAN_REGISTERED(xpd))
+ zt_hooksig(&xpd->chans[pos], rxsig);
}
#ifdef CONFIG_PROC_FS
@@ -715,6 +873,8 @@ int proc_sync_read(char *page, char **start, off_t off, int count, int *eof, voi
xpp_timer_rate = (xpp_timer_count % SAMPLE_TICKS) * HZ / delta;
len += sprintf(page + len, "tick rate: %4d/second (SAMPLE_TICKS=%d)\n", xpp_timer_rate, SAMPLE_TICKS);
}
+ if(pcm_tasklet)
+ len += sprintf(page + len, "TASKLETS: missed_ticks: %d\n", atomic_read(&missed_ticks));
if (len <= off+count)
*eof = 1;
*start = page + off;
@@ -734,7 +894,7 @@ static int proc_sync_write(struct file *file, const char __user *buffer, unsigne
xbus_t *xbus;
xpd_t *xpd;
int ret;
- bool setit;
+ int setit;
// DBG("%s: count=%ld\n", __FUNCTION__, count);
if(count >= MAX_PROC_WRITE)
@@ -773,8 +933,9 @@ static int proc_sync_write(struct file *file, const char __user *buffer, unsigne
return -ENXIO;
}
DBG("%s: %d/%d %s\n", __FUNCTION__, xbus_num, xpd_num, (setit)?"SET":"QUERY");
- if(setit)
- external_sync(xpd);
+ if(setit) {
+ sync_master_is(xpd);
+ }
out:
return count;
}
@@ -805,7 +966,7 @@ static int proc_xpd_ztregister_write(struct file *file, const char __user *buffe
{
xpd_t *xpd = data;
char buf[MAX_PROC_WRITE];
- bool zt_reg;
+ int zt_reg;
int ret;
BUG_ON(!xpd);
@@ -826,66 +987,87 @@ static int proc_xpd_ztregister_write(struct file *file, const char __user *buffe
return (ret < 0) ? ret : count;
}
+int proc_xpd_blink_read(char *page, char **start, off_t off, int count, int *eof, void *data)
+{
+ int len = 0;
+ unsigned long flags;
+ xpd_t *xpd = data;
+
+ BUG_ON(!xpd);
+ spin_lock_irqsave(&xpd->lock, flags);
+
+ len += sprintf(page + len, "%d\n", xpd->blink_mode);
+ spin_unlock_irqrestore(&xpd->lock, flags);
+ if (len <= off+count)
+ *eof = 1;
+ *start = page + off;
+ len -= off;
+ if (len > count)
+ len = count;
+ if (len < 0)
+ len = 0;
+ return len;
+}
+
+static int proc_xpd_blink_write(struct file *file, const char __user *buffer, unsigned long count, void *data)
+{
+ xpd_t *xpd = data;
+ char buf[MAX_PROC_WRITE];
+ int blink;
+ int ret;
+
+ BUG_ON(!xpd);
+ if(count >= MAX_PROC_WRITE)
+ return -EINVAL;
+ if(copy_from_user(buf, buffer, count))
+ return -EFAULT;
+ buf[count] = '\0';
+ ret = sscanf(buf, "%d", &blink);
+ if(ret != 1)
+ return -EINVAL;
+ DBG("%s: %s/%s %s\n", __FUNCTION__,
+ xpd->xbus->busname, xpd->xpdname, (blink) ? "blink" : "unblink");
+ xpd->blink_mode = blink;
+ return count;
+}
+
#endif
/**
*
- * Packet is freed:
+ * Frame is freed:
* - In case of error, by this function.
* - Otherwise, by the underlying sending mechanism
*/
-int packet_send(xbus_t *xbus, xpacket_t *pack_tx)
+int xframe_send(xbus_t *xbus, xframe_t *xframe)
{
int ret = -ENODEV;
- int toxpd;
- if(!pack_tx) {
- DBG("null pack\n");
+ if(!xframe) {
+ DBG("null xframe\n");
return -EINVAL;
}
- toxpd = XPD_NUM(pack_tx->content.addr);
if(!xbus) {
DBG("null xbus\n");
ret = -EINVAL;
goto error;
}
if (!xbus->hardware_exists) {
- DBG("xbus %s Dropped a packet -- NO HARDWARE.", xbus->busname);
+ DBG("xbus %s Dropped a xframe -- NO HARDWARE.", xbus->busname);
ret = -ENODEV;
goto error;
}
- if(!VALID_XPD_NUM(toxpd)) {
- ERR("%s: toxpd=%d > MAX_XPDS\n", __FUNCTION__, toxpd);
- ret = -EINVAL;
- goto error;
- }
-#if 0
- // DEBUG: For Dima
- if(pack_tx->content.opcode == XPP_PCM_WRITE) {
- static int rate_limit;
- static int count;
-
- if(sync_master == NULL)
- count = 0;
- if(count++ > 5) {
- ret = 0;
- goto error;
- }
- if(rate_limit++ % 1000 == 0)
- INFO("DEBUG: TRANSMIT (PCM_WRITE)\n");
- }
-#endif
if(down_read_trylock(&xbus->in_use)) {
- ret = xbus->ops->packet_send(xbus, pack_tx);
- XBUS_COUNTER(xbus, TX_BYTES) += pack_tx->datalen;
+ ret = xbus->ops->xframe_send(xbus, xframe);
+ XBUS_COUNTER(xbus, TX_BYTES) += XFRAME_LEN(xframe);
up_read(&xbus->in_use);
} else {
- DBG("Dropped packet. %s is in_use\n", xbus->busname);
+ DBG("Dropped xframe. %s is in_use\n", xbus->busname);
}
return ret;
error:
- xbus->ops->packet_free(xbus, pack_tx);
+ xbus->ops->xframe_free(xbus, xframe);
return ret;
}
@@ -896,69 +1078,48 @@ error:
#define PREP_REPORT_RATE 1000
-static void xpp_transmitprep(xpd_t *xpd)
+static void xpp_transmitprep(xpd_t *xpd, xpp_line_t lines, xpacket_t *pack)
{
- volatile u_char *writechunk;
- volatile u_char *w;
- int ret;
- int i;
- int channels = xpd->channels;
- struct zt_chan *chans = xpd->span.chans;
+ byte *pcm;
+ int channels;
+ struct zt_chan *chans;
unsigned long flags;
- bool digital_telephony;
-
- spin_lock_irqsave(&xpd->lock, flags);
- digital_telephony = (xpd->type == XPD_TYPE_BRI_NT) || (xpd->type == XPD_TYPE_BRI_TE);
-// if((xpd->timer_count % PREP_REPORT_RATE) < 10)
-// DBG("%d\n", xpd->timer_count);
+ int i;
+ int subunit;
+ xpd_t *tmp_xpd;
- if (xpd->timer_count & 1) {
- /* First part */
- w = writechunk = xpd->writechunk /* + 1 */;
- } else {
- w = writechunk = xpd->writechunk + ZT_CHUNKSIZE * CHANNELS_PERXPD /* + 1 */;
- }
- spin_unlock_irqrestore(&xpd->lock, flags);
- /*
- * This should be out of spinlocks, as it may call back our hook setting
- * methods
- */
- zt_transmit(&xpd->span);
- spin_lock_irqsave(&xpd->lock, flags);
- for (i = 0; i < channels; i++, w += ZT_CHUNKSIZE) {
- /*
- * We don't copy signalling buffers (they may be
- * longer than ZT_CHUNKSIZE).
- */
- if(IS_SET(xpd->digital_signalling, i))
+ BUG_ON(!xpd);
+ BUG_ON(!pack);
+ pcm = RPACKET_FIELD(pack, GLOBAL, PCM_WRITE, pcm);
+ for(subunit = 0; subunit < MAX_SUBUNIT; subunit++) {
+ tmp_xpd = xpd_by_addr(xpd->xbus, xpd->addr.unit, subunit);
+ if(!tmp_xpd)
continue;
- if (xpd->delay_until_dialtone[i] > 0) {
- xpd->delay_until_dialtone[i]--;
- if (xpd->delay_until_dialtone[i] <= 0) {
- xpd->delay_until_dialtone[i] = 0;
- wake_up_interruptible(&xpd->txstateq[i]);
- }
- }
- if(IS_SET(xpd->offhook, i) || IS_SET(xpd->cid_on, i) || digital_telephony) {
+ spin_lock_irqsave(&tmp_xpd->lock, flags);
- memcpy((u_char *)w, chans[i].writechunk, ZT_CHUNKSIZE);
- // fill_beep((u_char *)w, xpd->addr.subunit, 2);
- // memset((u_char *)w, pcmtx[xpd->addr.subunit % 4], ZT_CHUNKSIZE);
+ channels = tmp_xpd->channels;
+ chans = tmp_xpd->span.chans;
+ for (i = 0; i < channels; i++) {
+ if(IS_SET(lines, i)) {
+ if(SPAN_REGISTERED(tmp_xpd)) {
+ memcpy((u_char *)pcm, chans[i].writechunk, ZT_CHUNKSIZE);
+ // fill_beep((u_char *)pcm, tmp_xpd->addr.subunit, 2);
+ // memset((u_char *)pcm, pcmtx[tmp_xpd->addr.subunit % 4], ZT_CHUNKSIZE);
+ } else
+ memset((u_char *)pcm, 0x7F, ZT_CHUNKSIZE);
+ pcm += ZT_CHUNKSIZE;
+ }
}
+ XPD_COUNTER(tmp_xpd, PCM_WRITE)++;
+ spin_unlock_irqrestore(&tmp_xpd->lock, flags);
+ lines >>= SUBUNIT_PCM_SHIFT;
}
-// if(xpd->offhook != 0 || sync_master != xpd) {
- ret = CALL_XMETHOD(PCM_WRITE, xpd->xbus, xpd, xpd->offhook | xpd->cid_on, writechunk);
- if(ret < 0) {
- DBG("failed to write PCM %d\n", ret);
- }
-// }
- spin_unlock_irqrestore(&xpd->lock, flags);
}
void fill_beep(u_char *buf, int num, int duration)
{
- bool alternate = (duration) ? (jiffies/(duration*HZ)) & 0x1 : 0;
+ bool alternate = (duration) ? (jiffies/(duration*1000)) & 0x1 : 0;
int which;
u_char *snd;
@@ -1067,10 +1228,21 @@ static void xpp_receiveprep(xpd_t *xpd)
zt_receive(&xpd->span);
}
+/*
+ * Called only for 'span' keyword in /etc/zaptel.conf
+ */
static int xpp_startup(struct zt_span *span)
{
- DBG("\n");
- return 0;
+ xpd_t *xpd = span->pvt;
+
+ BUG_ON(!xpd);
+ // Turn on all channels
+ CALL_XMETHOD(XPD_STATE, xpd->xbus, xpd, 1);
+ if(!xpd->xops->span_startup) {
+ NOTICE("%s/%s: %s called\n", xpd->xbus->busname, xpd->xpdname, __FUNCTION__);
+ return 0;
+ }
+ return xpd->xops->span_startup(xpd);
}
/*
@@ -1089,12 +1261,22 @@ static int xpp_spanconfig(struct zt_span *span, struct zt_lineconfig *lc)
*/
static int xpp_shutdown(struct zt_span *span)
{
- xpd_t *xpd = span->pvt;
+ xpd_t *xpd = span->pvt;
- DBG("%s\n", xpd->xpdname);
- return 0;
+ BUG_ON(!xpd);
+ // Turn off all channels
+ CALL_XMETHOD(XPD_STATE, xpd->xbus, xpd, 0);
+ if(!xpd->xops->span_shutdown) {
+ NOTICE("%s/%s: %s called\n", xpd->xbus->busname, xpd->xpdname, __FUNCTION__);
+ return 0;
+ }
+ return xpd->xops->span_shutdown(xpd);
}
+/*
+ * Called from zaptel with spinlock held on chan. Must not call back
+ * zaptel functions.
+ */
int xpp_open(struct zt_chan *chan)
{
xpd_t *xpd = chan->pvt;
@@ -1149,21 +1331,19 @@ int xpp_close(struct zt_chan *chan)
int xpp_ioctl(struct zt_chan *chan, unsigned int cmd, unsigned long arg)
{
xpd_t *xpd = chan->pvt;
- int pos = chan->chanpos - 1;
- int x;
+ int pos = chan->chanpos - 1;
+ int x;
+ int ret = 0;
switch (cmd) {
case ZT_ONHOOKTRANSFER:
if (get_user(x, (int __user *)arg))
return -EFAULT;
- xpd->ohttimer[pos] = x << 3;
- xpd->idletxhookstate[pos] = FXS_LINE_CID; /* OHT mode when idle */
- if (xpd->lasttxhook[pos] == FXS_LINE_ENABLED) {
- /* Apply the change if appropriate */
- CALL_XMETHOD(CHAN_CID, xpd->xbus, xpd, pos); // CALLER ID
- }
- DBG("xpd=%d: ZT_ONHOOKTRANSFER (%d millis) chan=%d\n", xpd->id, x, pos);
- return -ENOTTY;
+ DBG("%s/%s/%d: ZT_ONHOOKTRANSFER (%d millis)\n",
+ xpd->xbus->busname, xpd->xpdname, pos, x);
+ if(xpd->xops->chan_onhooktransfer)
+ ret = CALL_XMETHOD(chan_onhooktransfer, xpd->xbus, xpd, pos, x);
+ return ret;
case ZT_TONEDETECT:
if (get_user(x, (int __user *)arg))
return -EFAULT;
@@ -1173,11 +1353,10 @@ int xpp_ioctl(struct zt_chan *chan, unsigned int cmd, unsigned long arg)
default:
/* Some span-specific commands before we give up: */
if (xpd->xops->card_ioctl != NULL) {
- x = xpd->xops->card_ioctl(xpd, pos, cmd, arg);
- if (x != -ENOTTY)
- return x;
+ ret = xpd->xops->card_ioctl(xpd, pos, cmd, arg);
+ if (ret != -ENOTTY)
+ return ret;
}
-
DBG("ENOTTY: chan=%d cmd=0x%x\n", pos, cmd);
DBG(" IOC_TYPE=0x%02X\n", _IOC_TYPE(cmd));
DBG(" IOC_DIR=0x%02X\n", _IOC_DIR(cmd));
@@ -1246,7 +1425,11 @@ int xpp_maint(struct zt_span *span, int cmd)
return ret;
}
-/* Set signalling type (if appropriate) */
+/*
+ * Set signalling type (if appropriate)
+ * Called from zaptel with spinlock held on chan. Must not call back
+ * zaptel functions.
+ */
static int xpp_chanconfig(struct zt_chan *chan, int sigtype)
{
DBG("channel %d (%s) -> %s\n", chan->channo, chan->name, sig2str(sigtype));
@@ -1412,6 +1595,28 @@ static int zaptel_register_xpd(xpd_t *xpd)
}
atomic_inc(&xpd->zt_registered);
xpd->xops->card_zaptel_postregistration(xpd, 1);
+ /*
+ * Update zaptel about our state
+ */
+#if 0
+ /*
+ * FIXME: since asterisk didn't open the channel yet, the report
+ * is discarded anyway. OTOH, we cannot report in xpp_open or
+ * xpp_chanconfig since zaptel call them with a spinlock on the channel
+ * and zt_hooksig tries to acquire the same spinlock, resulting in
+ * double spinlock deadlock (we are lucky that RH/Fedora kernel are
+ * compiled with spinlock debugging).... tough.
+ */
+ for_each_line(xpd, cn) {
+ struct zt_chan *chans = xpd->span.chans;
+
+ if(IS_SET(xpd->offhook, cn)) {
+ NOTICE("%s/%s/%d: Report OFFHOOK to zaptel\n",
+ xbus->busname, xpd->xpdname, cn);
+ zt_hooksig(&chans[cn], ZT_RXSIG_OFFHOOK);
+ }
+ }
+#endif
return 0;
}
@@ -1433,6 +1638,7 @@ static void do_cleanup(void)
{
if(timer_pending(&xpp_timer))
del_timer_sync(&xpp_timer);
+ tasklet_kill(&tasklet_tick);
#ifdef CONFIG_PROC_FS
DBG("Removing '%s' from proc\n", PROC_SYNC);
remove_proc_entry(PROC_SYNC, xpp_proc_toplevel);
@@ -1449,9 +1655,9 @@ int __init xpp_zap_init(void)
int ret = 0;
struct proc_dir_entry *ent;
- INFO("%s MAX_XPDS=%d (%d*%d)\n", THIS_MODULE->name,
+ INFO("%s revision %s MAX_XPDS=%d (%d*%d)\n", THIS_MODULE->name, XPP_VERSION,
MAX_XPDS, MAX_UNIT, MAX_SUBUNIT);
-#if WITH_ECHO_SUPPRESSION
+#if WITH_ECHO_SUPPRESSION
INFO("FEATURE: %s (with ECHO_SUPPRESSION)\n", THIS_MODULE->name);
#else
INFO("FEATURE: %s (without ECHO_SUPPRESSION)\n", THIS_MODULE->name);
@@ -1507,12 +1713,11 @@ EXPORT_SYMBOL(print_dbg);
EXPORT_SYMBOL(card_detected);
EXPORT_SYMBOL(xpd_alloc);
EXPORT_SYMBOL(xpd_disconnect);
-EXPORT_SYMBOL(packet_send);
+EXPORT_SYMBOL(xframe_send);
EXPORT_SYMBOL(update_xpd_status);
EXPORT_SYMBOL(update_zap_ring);
EXPORT_SYMBOL(update_line_status);
EXPORT_SYMBOL(fill_beep);
-EXPORT_SYMBOL(xpp_tick);
EXPORT_SYMBOL(xpp_open);
EXPORT_SYMBOL(xpp_close);
EXPORT_SYMBOL(xpp_ioctl);
@@ -1521,6 +1726,7 @@ EXPORT_SYMBOL(xpp_maint);
MODULE_DESCRIPTION("XPP Zaptel Driver");
MODULE_AUTHOR("Oron Peled <oron@actcom.co.il>");
MODULE_LICENSE("GPL");
+MODULE_VERSION(XPP_VERSION);
module_init(xpp_zap_init);
module_exit(xpp_zap_cleanup);
diff --git a/xpp/xpp_zap.h b/xpp/xpp_zap.h
index 4cd3a8b..8294e36 100644
--- a/xpp/xpp_zap.h
+++ b/xpp/xpp_zap.h
@@ -27,7 +27,7 @@
#include "xproto.h"
void xpd_disconnect(xpd_t *xpd);
-int packet_send(xbus_t *xbus, xpacket_t *pack_tx);
+int xframe_send(xbus_t *xbus, xframe_t *xframe);
void card_detected(struct card_desc_struct *card_desc);
xpd_t *xpd_alloc(size_t privsize, xbus_t *xbus, int xpd_num, const xproto_table_t *proto_table, int channels, byte revision);
void xpd_remove(xpd_t *xpd);
@@ -35,7 +35,7 @@ void update_xpd_status(xpd_t *xpd, int alarm_flag);
void update_zap_ring(xpd_t *xpd, int pos, bool on);
void update_line_status(xpd_t *xpd, int pos, bool good);
void fill_beep(u_char *buf, int num, int duration);
-void xpp_tick(unsigned long param);
+void got_pcm_from(xpd_t *xpd);
int xpp_open(struct zt_chan *chan);
int xpp_close(struct zt_chan *chan);
int xpp_ioctl(struct zt_chan *chan, unsigned int cmd, unsigned long arg);
diff --git a/xpp/xproto.c b/xpp/xproto.c
index ebd9bba..5b62494 100644
--- a/xpp/xproto.c
+++ b/xpp/xproto.c
@@ -31,7 +31,6 @@
static const char rcsid[] = "$Id$";
extern int print_dbg;
-static int packet_process(xbus_t *xbus, int xpd_num, xpacket_t *pack);
static const xproto_table_t *xprotocol_tables[XPD_TYPE_NOMODULE];
@@ -56,6 +55,16 @@ void xpd_set_addr(xpd_addr_t *addr, int xpd_num)
addr->subunit = (xpd_num >> UNIT_BITS) & BITMASK(SUBUNIT_BITS);
}
+xpd_t *xpd_by_addr(const xbus_t *xbus, int unit, int subunit)
+{
+ xpd_addr_t addr;
+ int xpd_num;
+
+ addr.unit = unit;
+ addr.subunit = subunit;
+ xpd_num = xpd_addr2num(&addr);
+ return xpd_of(xbus, xpd_num);
+}
/*---------------- General Protocol Management ----------------------------*/
@@ -154,32 +163,7 @@ static const xproto_entry_t *find_xproto_entry(xpd_t *xpd, byte opcode)
return xe;
}
-int packet_receive(xbus_t *xbus, xpacket_t *pack)
-{
- int xpd_num;
-
- if(!valid_xpd_addr(&pack->content.addr)) {
- static int rate_limit = 0;
-
- if((rate_limit++ % 5003) < 3)
- dump_packet("bad address", pack, print_dbg);
- xbus->ops->packet_free(xbus, pack);
- return -EPROTO;
- }
- xpd_num = XPD_NUM(pack->content.addr);
-#ifdef SOFT_SIMULATOR
- if(xbus->sim[xpd_num].simulated) {
- //dump_packet("packet_receive -> simulate", pack, print_dbg);
- return simulate_xpd(xbus, xpd_num, pack);
- } else
-#endif
- {
- //dump_packet("packet_receive -> process", pack, print_dbg);
- return packet_process(xbus, xpd_num, pack);
- }
-}
-
-static int packet_process(xbus_t *xbus, int xpd_num, xpacket_t *pack)
+int packet_process(xbus_t *xbus, xpacket_t *pack)
{
byte op;
const xproto_entry_t *xe;
@@ -189,24 +173,35 @@ static int packet_process(xbus_t *xbus, int xpd_num, xpacket_t *pack)
int ret = 0;
BUG_ON(!pack);
- op = pack->content.opcode;
- xpd_num = XPD_NUM(pack->content.addr);
- xpd = xpd_of(xbus, xpd_num);
+ if(!valid_xpd_addr(&pack->addr)) {
+ if(printk_ratelimit())
+ dump_packet("packet_process -- bad address", pack, print_dbg);
+ ret = -EPROTO;
+ goto out;
+ }
+ op = pack->opcode;
+ xpd = xpd_by_addr(xbus, pack->addr.unit, pack->addr.subunit);
+ /* XPD may be NULL (e.g: during bus polling */
xe = find_xproto_entry(xpd, op);
/*-------- Validations -----------*/
if(!xe) {
- ERR("xpp: %s: %s unit #%d: bad command op=0x%02X\n",
- __FUNCTION__, xbus->busname, xpd_num, op);
- dump_packet("packet_process -- bad command", pack, print_dbg);
+ if(printk_ratelimit()) {
+ ERR("xpp: %s: %s/%d-%d: bad command op=0x%02X\n",
+ __FUNCTION__, xbus->busname,
+ pack->addr.unit, pack->addr.subunit, op);
+ dump_packet("packet_process -- bad command", pack, print_dbg);
+ }
ret = -EPROTO;
goto out;
}
table = xe->table;
BUG_ON(!table);
if(!table->packet_is_valid(pack)) {
- ERR("xpp: %s: wrong size %d for op=0x%02X\n",
+ if(printk_ratelimit()) {
+ ERR("xpp: %s: wrong size %d for op=0x%02X\n",
__FUNCTION__, pack->datalen, op);
- dump_packet("packet_process -- wrong size", pack, print_dbg);
+ dump_packet("packet_process -- wrong size", pack, print_dbg);
+ }
ret = -EPROTO;
goto out;
}
@@ -215,7 +210,35 @@ static int packet_process(xbus_t *xbus, int xpd_num, xpacket_t *pack)
XBUS_COUNTER(xbus, RX_BYTES) += pack->datalen;
handler(xbus, xpd, xe, pack);
out:
- xbus->ops->packet_free(xbus, pack);
+ return ret;
+}
+
+int xframe_receive(xbus_t *xbus, xframe_t *xframe)
+{
+ byte *p;
+ byte *xpacket_start;
+ byte *xframe_end;
+ int ret = 0;
+ static int rate_limit;
+
+ if(print_dbg == 2 && ((rate_limit++ % 1003) == 0))
+ dump_xframe("RCV_PCM", xbus, xframe);
+ p = xpacket_start = xframe->packets;
+ xframe_end = xpacket_start + XFRAME_LEN(xframe);
+ do {
+ xpacket_t *pack = (xpacket_t *)p;
+ int len = pack->datalen;
+
+ p += len;
+ if(p > xframe_end) {
+ ERR("%s: Invalid packet length %d\n", __FUNCTION__, len);
+ ret = -EPROTO;
+ goto out;
+ }
+ packet_process(xbus, pack);
+ } while(p < xframe_end);
+out:
+ xbus->ops->xframe_free(xbus, xframe);
return ret;
}
@@ -224,41 +247,45 @@ out:
void dump_packet(const char *msg, xpacket_t *packet, bool print_dbg)
{
- byte op = packet->content.opcode;
- byte *addr = (byte *)&packet->content.addr;
+ byte op = packet->opcode;
+ byte *addr = (byte *)&packet->addr;
if(!print_dbg)
return;
- DBG("%s: XPD=%1X-%1X (0x%X) OP=0x%02X LEN=%d\n",
+ DBG("%s: XPD=%1X-%1X (0x%X) OP=0x%02X LEN=%d",
msg,
- packet->content.addr.unit,
- packet->content.addr.subunit,
+ packet->addr.unit,
+ packet->addr.subunit,
*addr,
op,
(byte)packet->datalen);
#if VERBOSE_DEBUG
{
int i;
- byte *p = packet->content.data;
+ byte *p = (byte *)packet;
+ if (print_dbg)
+ printk(" BYTES: ");
for(i = 0; i < packet->datalen; i++) {
static int limiter = 0;
- if(i >= sizeof(xpacket_raw_t)) {
+ if(i >= sizeof(xpacket_t)) {
if(limiter < ERR_REPORT_LIMIT) {
- ERR("%s: length overflow i=%d > sizeof(xpacket_raw_t)=%d\n",
- __FUNCTION__, i+1, sizeof(xpacket_raw_t));
+ ERR("%s: length overflow i=%d > sizeof(xpacket_t)=%d\n",
+ __FUNCTION__, i+1, sizeof(xpacket_t));
} else if(limiter == ERR_REPORT_LIMIT) {
ERR("%s: error packet #%d... squelsh reports.\n",
- __FUNCTION__, limiter);
+ __FUNCTION__, limiter);
}
limiter++;
break;
}
- DBG(" %2d> %02X\n", i+1, p[i]);
+ if (print_dbg)
+ printk("%02X ", p[i]);
}
}
#endif
+ printk("\n");
}
void dump_reg_cmd(const char msg[], reg_cmd_t *regcmd)
@@ -334,9 +361,7 @@ int xproto_register(const xproto_table_t *proto_table)
CHECK_XOP(card_hooksig);
// CHECK_XOP(card_ioctl); // optional method -- call after testing
CHECK_XOP(SYNC_SOURCE);
- CHECK_XOP(PCM_WRITE);
CHECK_XOP(XPD_STATE);
- CHECK_XOP(CHAN_CID);
CHECK_XOP(RING);
CHECK_XOP(RELAY_OUT);
@@ -364,7 +389,7 @@ void xproto_unregister(const xproto_table_t *proto_table)
EXPORT_SYMBOL(dump_packet);
EXPORT_SYMBOL(dump_reg_cmd);
-EXPORT_SYMBOL(packet_receive);
+EXPORT_SYMBOL(xframe_receive);
EXPORT_SYMBOL(valid_xpd_addr);
EXPORT_SYMBOL(xpd_addr2num);
EXPORT_SYMBOL(xpd_set_addr);
diff --git a/xpp/xproto.h b/xpp/xproto.h
index 377c06e..f567119 100644
--- a/xpp/xproto.h
+++ b/xpp/xproto.h
@@ -28,7 +28,6 @@
#include <linux/list.h>
#include <linux/proc_fs.h>
#include <zaptel.h>
-#endif
#define PROTO_TABLE(n) n ## _protocol_table
@@ -61,9 +60,9 @@ typedef struct xpd_addr {
bool valid_xpd_addr(const xpd_addr_t *addr);
int xpd_addr2num(const xpd_addr_t *addr);
void xpd_set_addr(xpd_addr_t *addr, int xpd_num);
+xpd_t *xpd_by_addr(const xbus_t *xbus, int unit, int subunit);
#define XPD_NUM(x) xpd_addr2num(&x)
-#define MAX_XPACKET_DATALEN 100
#define XPROTO_NAME(card,op) card ## _ ## op
#define XPROTO_HANDLER(card,op) XPROTO_NAME(card,op ## _handler)
@@ -90,24 +89,21 @@ void xpd_set_addr(xpd_addr_t *addr, int xpd_num);
#define RPACKET_TYPE(card,op) struct RPACKET_NAME(card, op)
#define DEF_RPACKET_DATA(card,op, ...) \
- struct RPACKET_NAME(card,op) { \
+ RPACKET_TYPE(card,op) { \
+ uint16_t datalen;\
byte opcode; \
xpd_addr_t addr; \
__VA_ARGS__ \
} PACKED
-
+#define RPACKET_HEADERSIZE (sizeof(uint16_t) + sizeof(xpd_addr_t) + 1)
#define RPACKET_CAST(p,card,op) ((RPACKET_TYPE(card,op) *)p)
#define RPACKET_FIELD(p,card,op,field) (RPACKET_CAST(p,card,op)->field)
#define RPACKET_SIZE(card,op) sizeof(RPACKET_TYPE(card,op))
-#define RPACKET_DATALEN(card,op) (RPACKET_SIZE(card,op) - sizeof(xpd_addr_t) - 1)
-
-#define PACKET_LEN(p) \
- ((p)->datalen + sizeof(xpd_addr_t) + 1)
#define XENTRY(prototab,module,op) \
[ XPROTO_NAME(module,op) ] = { \
.handler = XPROTO_HANDLER(module,op), \
- .datalen = RPACKET_DATALEN(module,op), \
+ .datalen = RPACKET_SIZE(module,op), \
.name = #op, \
.table = &PROTO_TABLE(prototab) \
}
@@ -116,18 +112,25 @@ void xpd_set_addr(xpd_addr_t *addr, int xpd_num);
#define XPACKET_INIT(p, card, op) \
do { \
- p->content.opcode = XPROTO_NAME(card,op); \
- p->datalen = RPACKET_DATALEN(card,op); \
+ p->opcode = XPROTO_NAME(card,op); \
+ p->datalen = RPACKET_SIZE(card,op); \
} while(0)
-#define XPACKET_NEW(p, xbus, card, op, to) \
+#define XFRAME_NEW(frm, p, xbus, card, op, to) \
do { \
- p = xbus->ops->packet_new(xbus, GFP_ATOMIC); \
+ int len = RPACKET_SIZE(card,op); \
+ \
+ frm = xbus->ops->xframe_new(xbus, GFP_ATOMIC); \
+ if(!frm) \
+ return -ENOMEM; \
+ p = xframe_next_packet(frm, len); \
if(!p) \
return -ENOMEM; \
XPACKET_INIT(p, card, op); \
- xpd_set_addr(&p->content.addr, to); \
- } while(0);
+ xpd_set_addr(&p->addr, to); \
+ } while(0)
+
+#endif
/*--------------------------- register handling --------------------------------*/
/*
@@ -178,6 +181,7 @@ typedef struct reg_cmd {
#define REG_FIELD(regptr,member) ((regptr)->alt.r.member)
#define REG_XDATA(regptr) ((regptr)->alt.d.xdata)
+#ifdef __KERNEL__
/*--------------------------- protocol tables ----------------------------------*/
typedef struct xproto_entry xproto_entry_t;
@@ -209,12 +213,13 @@ struct xops {
int (*card_zaptel_postregistration)(xpd_t *xpd, bool on);
int (*card_hooksig)(xbus_t *xbus, xpd_t *xpd, int pos, zt_txsig_t txsig);
int (*card_ioctl)(xpd_t *xpd, int pos, unsigned int cmd, unsigned long arg);
+ int (*span_startup)(xpd_t *xpd);
+ int (*span_shutdown)(xpd_t *xpd);
+ int (*chan_onhooktransfer)(xbus_t *xbus, xpd_t *xpd, lineno_t chan, int millies);
int (*SYNC_SOURCE)(xbus_t *xbus, xpd_t *xpd, bool setit, bool is_master);
- int (*PCM_WRITE)(xbus_t *xbus, xpd_t *xpd, xpp_line_t offhook, volatile byte *buf);
int (*XPD_STATE)(xbus_t *xbus, xpd_t *xpd, bool on);
- int (*CHAN_CID)(xbus_t *xbus, xpd_t *xpd, lineno_t chan);
int (*RING)(xbus_t *xbus, xpd_t *xpd, lineno_t chan, bool on);
int (*RELAY_OUT)(xbus_t *xbus, xpd_t *xpd, byte which, bool on);
};
@@ -258,7 +263,8 @@ enum opcodes {
#define MEMBER(card,op) RPACKET_TYPE(card,op) RPACKET_NAME(card,op)
-struct xpacket_raw {
+struct xpacket {
+ uint16_t datalen;
byte opcode;
xpd_addr_t addr;
union {
@@ -278,21 +284,17 @@ struct xpacket_raw {
byte data[0];
};
+ /* Last byte is chksum */
} PACKED;
-struct xpacket {
- xpacket_raw_t content;
- int datalen;
- struct list_head list;
- void *packet_priv;
-};
-
void dump_packet(const char *msg, xpacket_t *packet, bool print_dbg);
void dump_reg_cmd(const char msg[], reg_cmd_t *regcmd);
-int packet_receive(xbus_t *xbus, xpacket_t *pack);
+int xframe_receive(xbus_t *xbus, xframe_t *xframe);
int xproto_register(const xproto_table_t *proto_table);
void xproto_unregister(const xproto_table_t *proto_table);
const xproto_entry_t *xproto_global_entry(byte opcode);
const char *xproto_name(xpd_type_t xpd_type);
+#endif /* __KERNEL__ */
+
#endif /* XPROTO_H */
diff --git a/xpp/zap_debug.c b/xpp/zap_debug.c
index f20e14d..59eb0a8 100644
--- a/xpp/zap_debug.c
+++ b/xpp/zap_debug.c
@@ -28,7 +28,7 @@
#include <linux/kernel.h>
#include <linux/errno.h>
#include <linux/module.h>
-#include "zaptel.h"
+#include <zaptel.h>
#include "zap_debug.h"
static const char rcsid[] = "$Id$";
diff --git a/xpp/zap_debug.h b/xpp/zap_debug.h
index 6d8ac36..29403a8 100644
--- a/xpp/zap_debug.h
+++ b/xpp/zap_debug.h
@@ -31,6 +31,12 @@
#define WARN(fmt, ...) printk(KERN_WARNING "WARN-%s: %s: " fmt, THIS_MODULE->name, __FUNCTION__, ## __VA_ARGS__)
#define ERR(fmt, ...) printk(KERN_ERR "ERR-%s: " fmt, THIS_MODULE->name, ## __VA_ARGS__)
+/*
+ * Bits for print_dbg
+ */
+#define DBG_DEFAULT 0x01
+#define DBG_PCM 0x02
+
void dump_poll(int print_dbg, const char *msg, int poll);
static inline char *rxsig2str(zt_rxsig_t sig)